diff --git a/build/browser.esm.js b/build/browser.esm.js index 1fe556f2..e4f05a73 100644 --- a/build/browser.esm.js +++ b/build/browser.esm.js @@ -1089,37 +1089,41 @@ const bn128r$1 = Scalar.e("21888242871839275222246405745257275088548364400416034 const bls12381q = Scalar.e("1a0111ea397fe69a4b1ba7b6434bacd764774b84f38512bf6730d2a0f6b0f6241eabfffeb153ffffb9feffffffffaaab", 16); const bn128q = Scalar.e("21888242871839275222246405745257275088696311157297823662689037894645226208583"); -async function getCurveFromR(r) { +async function getCurveFromR(r, options) { let curve; + // check that options param is defined and that options.singleThread is defined + let singleThread = options && options.singleThread; if (Scalar.eq(r, bn128r$1)) { - curve = await buildBn128(); + curve = await buildBn128(singleThread); } else if (Scalar.eq(r, bls12381r$1)) { - curve = await buildBls12381(); + curve = await buildBls12381(singleThread); } else { throw new Error(`Curve not supported: ${Scalar.toString(r)}`); } return curve; } -async function getCurveFromQ(q) { +async function getCurveFromQ(q, options) { let curve; + let singleThread = options && options.singleThread; if (Scalar.eq(q, bn128q)) { - curve = await buildBn128(); + curve = await buildBn128(singleThread); } else if (Scalar.eq(q, bls12381q)) { - curve = await buildBls12381(); + curve = await buildBls12381(singleThread); } else { throw new Error(`Curve not supported: ${Scalar.toString(q)}`); } return curve; } -async function getCurveFromName(name) { +async function getCurveFromName(name, options) { let curve; + let singleThread = options && options.singleThread; const normName = normalizeName(name); if (["BN128", "BN254", "ALTBN128"].indexOf(normName) >= 0) { - curve = await buildBn128(); + curve = await buildBn128(singleThread); } else if (["BLS12381"].indexOf(normName) >= 0) { - curve = await buildBls12381(); + curve = await buildBls12381(singleThread); } else { throw new Error(`Curve not supported: ${name}`); } @@ -2489,7 +2493,7 @@ async function readG2(fd, curve, toObject) { } -async function readHeader$1(fd, sections, toObject) { +async function readHeader$1(fd, sections, toObject, options) { // Read Header ///////////////////// await startReadUniqueSection(fd, sections, 1); @@ -2497,11 +2501,11 @@ async function readHeader$1(fd, sections, toObject) { await endReadSection(fd); if (protocolId === GROTH16_PROTOCOL_ID) { - return await readHeaderGroth16(fd, sections, toObject); + return await readHeaderGroth16(fd, sections, toObject, options); } else if (protocolId === PLONK_PROTOCOL_ID) { - return await readHeaderPlonk(fd, sections, toObject); + return await readHeaderPlonk(fd, sections, toObject, options); } else if (protocolId === FFLONK_PROTOCOL_ID) { - return await readHeaderFFlonk(fd, sections, toObject); + return await readHeaderFFlonk(fd, sections, toObject, options); } else { throw new Error("Protocol not supported: "); } @@ -2510,7 +2514,7 @@ async function readHeader$1(fd, sections, toObject) { -async function readHeaderGroth16(fd, sections, toObject) { +async function readHeaderGroth16(fd, sections, toObject, options) { const zkey = {}; zkey.protocol = "groth16"; @@ -2525,7 +2529,7 @@ async function readHeaderGroth16(fd, sections, toObject) { const n8r = await fd.readULE32(); zkey.n8r = n8r; zkey.r = await readBigInt(fd, n8r); - zkey.curve = await getCurveFromQ(zkey.q); + zkey.curve = await getCurveFromQ(zkey.q, options); zkey.nVars = await fd.readULE32(); zkey.nPublic = await fd.readULE32(); zkey.domainSize = await fd.readULE32(); @@ -2542,7 +2546,7 @@ async function readHeaderGroth16(fd, sections, toObject) { } -async function readHeaderPlonk(fd, sections, toObject) { +async function readHeaderPlonk(fd, sections, toObject, options) { const zkey = {}; zkey.protocol = "plonk"; @@ -2557,7 +2561,7 @@ async function readHeaderPlonk(fd, sections, toObject) { const n8r = await fd.readULE32(); zkey.n8r = n8r; zkey.r = await readBigInt(fd, n8r); - zkey.curve = await getCurveFromQ(zkey.q); + zkey.curve = await getCurveFromQ(zkey.q, options); zkey.nVars = await fd.readULE32(); zkey.nPublic = await fd.readULE32(); zkey.domainSize = await fd.readULE32(); @@ -2582,7 +2586,7 @@ async function readHeaderPlonk(fd, sections, toObject) { return zkey; } -async function readHeaderFFlonk(fd, sections, toObject) { +async function readHeaderFFlonk(fd, sections, toObject, options) { const zkey = {}; zkey.protocol = "fflonk"; @@ -2592,7 +2596,7 @@ async function readHeaderFFlonk(fd, sections, toObject) { const n8q = await fd.readULE32(); zkey.n8q = n8q; zkey.q = await readBigInt(fd, n8q); - zkey.curve = await getCurveFromQ(zkey.q); + zkey.curve = await getCurveFromQ(zkey.q, options); const n8r = await fd.readULE32(); zkey.n8r = n8r; @@ -2955,14 +2959,14 @@ async function read(fileName) { */ const {stringifyBigInts: stringifyBigInts$4} = utils; -async function groth16Prove(zkeyFileName, witnessFileName, logger) { +async function groth16Prove(zkeyFileName, witnessFileName, logger, options) { const {fd: fdWtns, sections: sectionsWtns} = await readBinFile(witnessFileName, "wtns", 2); const wtns = await readHeader(fdWtns, sectionsWtns); const {fd: fdZKey, sections: sectionsZKey} = await readBinFile(zkeyFileName, "zkey", 2); - const zkey = await readHeader$1(fdZKey, sectionsZKey); + const zkey = await readHeader$1(fdZKey, sectionsZKey, undefined, options); if (zkey.protocol != "groth16") { throw new Error("zkey file is not groth16"); @@ -3981,14 +3985,14 @@ async function wtnsCalculate(_input, wasmFileName, wtnsFileName, options) { */ const {unstringifyBigInts: unstringifyBigInts$a} = utils; -async function groth16FullProve(_input, wasmFile, zkeyFileName, logger, wtnsCalcOptions) { +async function groth16FullProve(_input, wasmFile, zkeyFileName, logger, wtnsCalcOptions, proverOptions) { const input = unstringifyBigInts$a(_input); const wtns= { type: "mem" }; await wtnsCalculate(input, wasmFile, wtns, wtnsCalcOptions); - return await groth16Prove(zkeyFileName, wtns, logger); + return await groth16Prove(zkeyFileName, wtns, logger, proverOptions); } /* @@ -11940,7 +11944,7 @@ class Evaluations { */ const {stringifyBigInts: stringifyBigInts$1} = utils; -async function plonk16Prove(zkeyFileName, witnessFileName, logger) { +async function plonk16Prove(zkeyFileName, witnessFileName, logger, options) { const {fd: fdWtns, sections: sectionsWtns} = await readBinFile(witnessFileName, "wtns", 2); // Read witness file @@ -11951,7 +11955,7 @@ async function plonk16Prove(zkeyFileName, witnessFileName, logger) { if (logger) logger.debug("> Reading zkey file"); const {fd: fdZKey, sections: zkeySections} = await readBinFile(zkeyFileName, "zkey", 2); - const zkey = await readHeader$1(fdZKey, zkeySections); + const zkey = await readHeader$1(fdZKey, zkeySections, undefined, options); if (zkey.protocol != "plonk") { throw new Error("zkey file is not plonk"); } @@ -12804,14 +12808,14 @@ async function plonk16Prove(zkeyFileName, witnessFileName, logger) { */ const {unstringifyBigInts: unstringifyBigInts$5} = utils; -async function plonkFullProve(_input, wasmFile, zkeyFileName, logger, wtnsCalcOptions) { +async function plonkFullProve(_input, wasmFile, zkeyFileName, logger, wtnsCalcOptions, proverOptions) { const input = unstringifyBigInts$5(_input); const wtns= { type: "mem" }; await wtnsCalculate(input, wasmFile, wtns, wtnsCalcOptions); - return await plonk16Prove(zkeyFileName, wtns, logger); + return await plonk16Prove(zkeyFileName, wtns, logger, proverOptions); } /* @@ -14141,7 +14145,7 @@ async function fflonkSetup(r1csFilename, ptauFilename, zkeyFilename, logger) { const { stringifyBigInts } = utils; -async function fflonkProve(zkeyFileName, witnessFileName, logger) { +async function fflonkProve(zkeyFileName, witnessFileName, logger, options) { if (logger) logger.info("FFLONK PROVER STARTED"); // Read witness file @@ -14158,7 +14162,8 @@ async function fflonkProve(zkeyFileName, witnessFileName, logger) { fd: fdZKey, sections: zkeySections } = await readBinFile(zkeyFileName, "zkey", 2); - const zkey = await readHeader$1(fdZKey, zkeySections); + + const zkey = await readHeader$1(fdZKey, zkeySections, undefined, options); if (zkey.protocolId !== FFLONK_PROTOCOL_ID) { throw new Error("zkey file is not fflonk"); @@ -15395,7 +15400,7 @@ async function fflonkProve(zkeyFileName, witnessFileName, logger) { */ const {unstringifyBigInts: unstringifyBigInts$2} = utils; -async function fflonkFullProve(_input, wasmFilename, zkeyFilename, logger, wtnsCalcOptions) { +async function fflonkFullProve(_input, wasmFilename, zkeyFilename, logger, wtnsCalcOptions, proverOptions) { const input = unstringifyBigInts$2(_input); const wtns= {type: "mem"}; @@ -15404,7 +15409,7 @@ async function fflonkFullProve(_input, wasmFilename, zkeyFilename, logger, wtnsC await wtnsCalculate(input, wasmFilename, wtns, wtnsCalcOptions); // Compute the proof - return await fflonkProve(zkeyFilename, wtns, logger); + return await fflonkProve(zkeyFilename, wtns, logger, proverOptions); } /* diff --git a/build/cli.cjs b/build/cli.cjs index bb0e54eb..13dd140e 100755 --- a/build/cli.cjs +++ b/build/cli.cjs @@ -436,7 +436,7 @@ async function r1csExportJson(r1csFileName, logger) { along with snarkJS. If not, see . */ -const __dirname$2 = path__default["default"].dirname(url__default["default"].fileURLToPath((typeof document === 'undefined' ? new (require('u' + 'rl').URL)('file:' + __filename).href : (document.currentScript && document.currentScript.src || new URL('cli.cjs', document.baseURI).href)))); +const __dirname$2 = path__default["default"].dirname(url__default["default"].fileURLToPath((typeof document === 'undefined' ? new (require('u' + 'rl').URL)('file:' + __filename).href : (document.currentScript && document.currentScript.tagName.toUpperCase() === 'SCRIPT' && document.currentScript.src || new URL('cli.cjs', document.baseURI).href)))); let pkgS; try { @@ -769,37 +769,41 @@ const bn128r = ffjavascript.Scalar.e("218882428718392752222464057452572750885483 const bls12381q = ffjavascript.Scalar.e("1a0111ea397fe69a4b1ba7b6434bacd764774b84f38512bf6730d2a0f6b0f6241eabfffeb153ffffb9feffffffffaaab", 16); const bn128q = ffjavascript.Scalar.e("21888242871839275222246405745257275088696311157297823662689037894645226208583"); -async function getCurveFromR(r) { +async function getCurveFromR(r, options) { let curve; + // check that options param is defined and that options.singleThread is defined + let singleThread = options && options.singleThread; if (ffjavascript.Scalar.eq(r, bn128r)) { - curve = await ffjavascript.buildBn128(); + curve = await ffjavascript.buildBn128(singleThread); } else if (ffjavascript.Scalar.eq(r, bls12381r)) { - curve = await ffjavascript.buildBls12381(); + curve = await ffjavascript.buildBls12381(singleThread); } else { throw new Error(`Curve not supported: ${ffjavascript.Scalar.toString(r)}`); } return curve; } -async function getCurveFromQ(q) { +async function getCurveFromQ(q, options) { let curve; + let singleThread = options && options.singleThread; if (ffjavascript.Scalar.eq(q, bn128q)) { - curve = await ffjavascript.buildBn128(); + curve = await ffjavascript.buildBn128(singleThread); } else if (ffjavascript.Scalar.eq(q, bls12381q)) { - curve = await ffjavascript.buildBls12381(); + curve = await ffjavascript.buildBls12381(singleThread); } else { throw new Error(`Curve not supported: ${ffjavascript.Scalar.toString(q)}`); } return curve; } -async function getCurveFromName(name) { +async function getCurveFromName(name, options) { let curve; + let singleThread = options && options.singleThread; const normName = normalizeName(name); if (["BN128", "BN254", "ALTBN128"].indexOf(normName) >= 0) { - curve = await ffjavascript.buildBn128(); + curve = await ffjavascript.buildBn128(singleThread); } else if (["BLS12381"].indexOf(normName) >= 0) { - curve = await ffjavascript.buildBls12381(); + curve = await ffjavascript.buildBls12381(singleThread); } else { throw new Error(`Curve not supported: ${name}`); } @@ -3814,7 +3818,7 @@ async function readG2(fd, curve, toObject) { } -async function readHeader$1(fd, sections, toObject) { +async function readHeader$1(fd, sections, toObject, options) { // Read Header ///////////////////// await binFileUtils__namespace.startReadUniqueSection(fd, sections, 1); @@ -3822,11 +3826,11 @@ async function readHeader$1(fd, sections, toObject) { await binFileUtils__namespace.endReadSection(fd); if (protocolId === GROTH16_PROTOCOL_ID) { - return await readHeaderGroth16(fd, sections, toObject); + return await readHeaderGroth16(fd, sections, toObject, options); } else if (protocolId === PLONK_PROTOCOL_ID) { - return await readHeaderPlonk(fd, sections, toObject); + return await readHeaderPlonk(fd, sections, toObject, options); } else if (protocolId === FFLONK_PROTOCOL_ID) { - return await readHeaderFFlonk(fd, sections, toObject); + return await readHeaderFFlonk(fd, sections, toObject, options); } else { throw new Error("Protocol not supported: "); } @@ -3835,7 +3839,7 @@ async function readHeader$1(fd, sections, toObject) { -async function readHeaderGroth16(fd, sections, toObject) { +async function readHeaderGroth16(fd, sections, toObject, options) { const zkey = {}; zkey.protocol = "groth16"; @@ -3850,7 +3854,7 @@ async function readHeaderGroth16(fd, sections, toObject) { const n8r = await fd.readULE32(); zkey.n8r = n8r; zkey.r = await binFileUtils__namespace.readBigInt(fd, n8r); - zkey.curve = await getCurveFromQ(zkey.q); + zkey.curve = await getCurveFromQ(zkey.q, options); zkey.nVars = await fd.readULE32(); zkey.nPublic = await fd.readULE32(); zkey.domainSize = await fd.readULE32(); @@ -3867,7 +3871,7 @@ async function readHeaderGroth16(fd, sections, toObject) { } -async function readHeaderPlonk(fd, sections, toObject) { +async function readHeaderPlonk(fd, sections, toObject, options) { const zkey = {}; zkey.protocol = "plonk"; @@ -3882,7 +3886,7 @@ async function readHeaderPlonk(fd, sections, toObject) { const n8r = await fd.readULE32(); zkey.n8r = n8r; zkey.r = await binFileUtils__namespace.readBigInt(fd, n8r); - zkey.curve = await getCurveFromQ(zkey.q); + zkey.curve = await getCurveFromQ(zkey.q, options); zkey.nVars = await fd.readULE32(); zkey.nPublic = await fd.readULE32(); zkey.domainSize = await fd.readULE32(); @@ -3907,7 +3911,7 @@ async function readHeaderPlonk(fd, sections, toObject) { return zkey; } -async function readHeaderFFlonk(fd, sections, toObject) { +async function readHeaderFFlonk(fd, sections, toObject, options) { const zkey = {}; zkey.protocol = "fflonk"; @@ -3917,7 +3921,7 @@ async function readHeaderFFlonk(fd, sections, toObject) { const n8q = await fd.readULE32(); zkey.n8q = n8q; zkey.q = await binFileUtils__namespace.readBigInt(fd, n8q); - zkey.curve = await getCurveFromQ(zkey.q); + zkey.curve = await getCurveFromQ(zkey.q, options); const n8r = await fd.readULE32(); zkey.n8r = n8r; @@ -5696,14 +5700,14 @@ async function read(fileName) { */ const {stringifyBigInts: stringifyBigInts$3} = ffjavascript.utils; -async function groth16Prove$1(zkeyFileName, witnessFileName, logger) { +async function groth16Prove$1(zkeyFileName, witnessFileName, logger, options) { const {fd: fdWtns, sections: sectionsWtns} = await binFileUtils__namespace.readBinFile(witnessFileName, "wtns", 2, 1<<25, 1<<23); const wtns = await readHeader(fdWtns, sectionsWtns); const {fd: fdZKey, sections: sectionsZKey} = await binFileUtils__namespace.readBinFile(zkeyFileName, "zkey", 2, 1<<25, 1<<23); - const zkey = await readHeader$1(fdZKey, sectionsZKey); + const zkey = await readHeader$1(fdZKey, sectionsZKey, undefined, options); if (zkey.protocol != "groth16") { throw new Error("zkey file is not groth16"); @@ -6109,14 +6113,14 @@ async function wtnsCalculate$1(_input, wasmFileName, wtnsFileName, options) { */ const {unstringifyBigInts: unstringifyBigInts$9} = ffjavascript.utils; -async function groth16FullProve$1(_input, wasmFile, zkeyFileName, logger, wtnsCalcOptions) { +async function groth16FullProve$1(_input, wasmFile, zkeyFileName, logger, wtnsCalcOptions, proverOptions) { const input = unstringifyBigInts$9(_input); const wtns= { type: "mem" }; await wtnsCalculate$1(input, wasmFile, wtns, wtnsCalcOptions); - return await groth16Prove$1(zkeyFileName, wtns, logger); + return await groth16Prove$1(zkeyFileName, wtns, logger, proverOptions); } /* @@ -8140,7 +8144,7 @@ class Evaluations { */ const {stringifyBigInts: stringifyBigInts$2} = ffjavascript.utils; -async function plonk16Prove(zkeyFileName, witnessFileName, logger) { +async function plonk16Prove(zkeyFileName, witnessFileName, logger, options) { const {fd: fdWtns, sections: sectionsWtns} = await binFileUtils__namespace.readBinFile(witnessFileName, "wtns", 2, 1<<25, 1<<23); // Read witness file @@ -8151,7 +8155,7 @@ async function plonk16Prove(zkeyFileName, witnessFileName, logger) { if (logger) logger.debug("> Reading zkey file"); const {fd: fdZKey, sections: zkeySections} = await binFileUtils__namespace.readBinFile(zkeyFileName, "zkey", 2, 1<<25, 1<<23); - const zkey = await readHeader$1(fdZKey, zkeySections); + const zkey = await readHeader$1(fdZKey, zkeySections, undefined, options); if (zkey.protocol != "plonk") { throw new Error("zkey file is not plonk"); } @@ -9004,14 +9008,14 @@ async function plonk16Prove(zkeyFileName, witnessFileName, logger) { */ const {unstringifyBigInts: unstringifyBigInts$6} = ffjavascript.utils; -async function plonkFullProve$1(_input, wasmFile, zkeyFileName, logger, wtnsCalcOptions) { +async function plonkFullProve$1(_input, wasmFile, zkeyFileName, logger, wtnsCalcOptions, proverOptions) { const input = unstringifyBigInts$6(_input); const wtns= { type: "mem" }; await wtnsCalculate$1(input, wasmFile, wtns, wtnsCalcOptions); - return await plonk16Prove(zkeyFileName, wtns, logger); + return await plonk16Prove(zkeyFileName, wtns, logger, proverOptions); } /* @@ -10315,7 +10319,7 @@ async function fflonkSetup$1(r1csFilename, ptauFilename, zkeyFilename, logger) { const { stringifyBigInts: stringifyBigInts$1 } = ffjavascript.utils; -async function fflonkProve$1(zkeyFileName, witnessFileName, logger) { +async function fflonkProve$1(zkeyFileName, witnessFileName, logger, options) { if (logger) logger.info("FFLONK PROVER STARTED"); // Read witness file @@ -10332,7 +10336,8 @@ async function fflonkProve$1(zkeyFileName, witnessFileName, logger) { fd: fdZKey, sections: zkeySections } = await binFileUtils__namespace.readBinFile(zkeyFileName, "zkey", 2, 1 << 25, 1 << 23); - const zkey = await readHeader$1(fdZKey, zkeySections); + + const zkey = await readHeader$1(fdZKey, zkeySections, undefined, options); if (zkey.protocolId !== FFLONK_PROTOCOL_ID) { throw new Error("zkey file is not fflonk"); @@ -11569,7 +11574,7 @@ async function fflonkProve$1(zkeyFileName, witnessFileName, logger) { */ const {unstringifyBigInts: unstringifyBigInts$3} = ffjavascript.utils; -async function fflonkFullProve$1(_input, wasmFilename, zkeyFilename, logger, wtnsCalcOptions) { +async function fflonkFullProve$1(_input, wasmFilename, zkeyFilename, logger, wtnsCalcOptions, proverOptions) { const input = unstringifyBigInts$3(_input); const wtns= {type: "mem"}; @@ -11578,7 +11583,7 @@ async function fflonkFullProve$1(_input, wasmFilename, zkeyFilename, logger, wtn await wtnsCalculate$1(input, wasmFilename, wtns, wtnsCalcOptions); // Compute the proof - return await fflonkProve$1(zkeyFilename, wtns, logger); + return await fflonkProve$1(zkeyFilename, wtns, logger, proverOptions); } /* @@ -12489,7 +12494,7 @@ const {stringifyBigInts} = ffjavascript.utils; const logger = Logger__default["default"].create("snarkJS", {showTimestamp: false}); Logger__default["default"].setLogLevel("INFO"); -const __dirname$1 = path__default["default"].dirname(url__default["default"].fileURLToPath((typeof document === 'undefined' ? new (require('u' + 'rl').URL)('file:' + __filename).href : (document.currentScript && document.currentScript.src || new URL('cli.cjs', document.baseURI).href)))); +const __dirname$1 = path__default["default"].dirname(url__default["default"].fileURLToPath((typeof document === 'undefined' ? new (require('u' + 'rl').URL)('file:' + __filename).href : (document.currentScript && document.currentScript.tagName.toUpperCase() === 'SCRIPT' && document.currentScript.src || new URL('cli.cjs', document.baseURI).href)))); const commands = [ { diff --git a/build/main.cjs b/build/main.cjs index 081c14ac..5a91ec66 100644 --- a/build/main.cjs +++ b/build/main.cjs @@ -47,37 +47,41 @@ const bn128r$1 = ffjavascript.Scalar.e("2188824287183927522224640574525727508854 const bls12381q = ffjavascript.Scalar.e("1a0111ea397fe69a4b1ba7b6434bacd764774b84f38512bf6730d2a0f6b0f6241eabfffeb153ffffb9feffffffffaaab", 16); const bn128q = ffjavascript.Scalar.e("21888242871839275222246405745257275088696311157297823662689037894645226208583"); -async function getCurveFromR(r) { +async function getCurveFromR(r, options) { let curve; + // check that options param is defined and that options.singleThread is defined + let singleThread = options && options.singleThread; if (ffjavascript.Scalar.eq(r, bn128r$1)) { - curve = await ffjavascript.buildBn128(); + curve = await ffjavascript.buildBn128(singleThread); } else if (ffjavascript.Scalar.eq(r, bls12381r$1)) { - curve = await ffjavascript.buildBls12381(); + curve = await ffjavascript.buildBls12381(singleThread); } else { throw new Error(`Curve not supported: ${ffjavascript.Scalar.toString(r)}`); } return curve; } -async function getCurveFromQ(q) { +async function getCurveFromQ(q, options) { let curve; + let singleThread = options && options.singleThread; if (ffjavascript.Scalar.eq(q, bn128q)) { - curve = await ffjavascript.buildBn128(); + curve = await ffjavascript.buildBn128(singleThread); } else if (ffjavascript.Scalar.eq(q, bls12381q)) { - curve = await ffjavascript.buildBls12381(); + curve = await ffjavascript.buildBls12381(singleThread); } else { throw new Error(`Curve not supported: ${ffjavascript.Scalar.toString(q)}`); } return curve; } -async function getCurveFromName(name) { +async function getCurveFromName(name, options) { let curve; + let singleThread = options && options.singleThread; const normName = normalizeName(name); if (["BN128", "BN254", "ALTBN128"].indexOf(normName) >= 0) { - curve = await ffjavascript.buildBn128(); + curve = await ffjavascript.buildBn128(singleThread); } else if (["BLS12381"].indexOf(normName) >= 0) { - curve = await ffjavascript.buildBls12381(); + curve = await ffjavascript.buildBls12381(singleThread); } else { throw new Error(`Curve not supported: ${name}`); } @@ -420,7 +424,7 @@ async function readG2(fd, curve, toObject) { } -async function readHeader$1(fd, sections, toObject) { +async function readHeader$1(fd, sections, toObject, options) { // Read Header ///////////////////// await binFileUtils__namespace.startReadUniqueSection(fd, sections, 1); @@ -428,11 +432,11 @@ async function readHeader$1(fd, sections, toObject) { await binFileUtils__namespace.endReadSection(fd); if (protocolId === GROTH16_PROTOCOL_ID) { - return await readHeaderGroth16(fd, sections, toObject); + return await readHeaderGroth16(fd, sections, toObject, options); } else if (protocolId === PLONK_PROTOCOL_ID) { - return await readHeaderPlonk(fd, sections, toObject); + return await readHeaderPlonk(fd, sections, toObject, options); } else if (protocolId === FFLONK_PROTOCOL_ID) { - return await readHeaderFFlonk(fd, sections, toObject); + return await readHeaderFFlonk(fd, sections, toObject, options); } else { throw new Error("Protocol not supported: "); } @@ -441,7 +445,7 @@ async function readHeader$1(fd, sections, toObject) { -async function readHeaderGroth16(fd, sections, toObject) { +async function readHeaderGroth16(fd, sections, toObject, options) { const zkey = {}; zkey.protocol = "groth16"; @@ -456,7 +460,7 @@ async function readHeaderGroth16(fd, sections, toObject) { const n8r = await fd.readULE32(); zkey.n8r = n8r; zkey.r = await binFileUtils__namespace.readBigInt(fd, n8r); - zkey.curve = await getCurveFromQ(zkey.q); + zkey.curve = await getCurveFromQ(zkey.q, options); zkey.nVars = await fd.readULE32(); zkey.nPublic = await fd.readULE32(); zkey.domainSize = await fd.readULE32(); @@ -473,7 +477,7 @@ async function readHeaderGroth16(fd, sections, toObject) { } -async function readHeaderPlonk(fd, sections, toObject) { +async function readHeaderPlonk(fd, sections, toObject, options) { const zkey = {}; zkey.protocol = "plonk"; @@ -488,7 +492,7 @@ async function readHeaderPlonk(fd, sections, toObject) { const n8r = await fd.readULE32(); zkey.n8r = n8r; zkey.r = await binFileUtils__namespace.readBigInt(fd, n8r); - zkey.curve = await getCurveFromQ(zkey.q); + zkey.curve = await getCurveFromQ(zkey.q, options); zkey.nVars = await fd.readULE32(); zkey.nPublic = await fd.readULE32(); zkey.domainSize = await fd.readULE32(); @@ -513,7 +517,7 @@ async function readHeaderPlonk(fd, sections, toObject) { return zkey; } -async function readHeaderFFlonk(fd, sections, toObject) { +async function readHeaderFFlonk(fd, sections, toObject, options) { const zkey = {}; zkey.protocol = "fflonk"; @@ -523,7 +527,7 @@ async function readHeaderFFlonk(fd, sections, toObject) { const n8q = await fd.readULE32(); zkey.n8q = n8q; zkey.q = await binFileUtils__namespace.readBigInt(fd, n8q); - zkey.curve = await getCurveFromQ(zkey.q); + zkey.curve = await getCurveFromQ(zkey.q, options); const n8r = await fd.readULE32(); zkey.n8r = n8r; @@ -886,14 +890,14 @@ async function read(fileName) { */ const {stringifyBigInts: stringifyBigInts$4} = ffjavascript.utils; -async function groth16Prove(zkeyFileName, witnessFileName, logger) { +async function groth16Prove(zkeyFileName, witnessFileName, logger, options) { const {fd: fdWtns, sections: sectionsWtns} = await binFileUtils__namespace.readBinFile(witnessFileName, "wtns", 2, 1<<25, 1<<23); const wtns = await readHeader(fdWtns, sectionsWtns); const {fd: fdZKey, sections: sectionsZKey} = await binFileUtils__namespace.readBinFile(zkeyFileName, "zkey", 2, 1<<25, 1<<23); - const zkey = await readHeader$1(fdZKey, sectionsZKey); + const zkey = await readHeader$1(fdZKey, sectionsZKey, undefined, options); if (zkey.protocol != "groth16") { throw new Error("zkey file is not groth16"); @@ -1299,14 +1303,14 @@ async function wtnsCalculate(_input, wasmFileName, wtnsFileName, options) { */ const {unstringifyBigInts: unstringifyBigInts$a} = ffjavascript.utils; -async function groth16FullProve(_input, wasmFile, zkeyFileName, logger, wtnsCalcOptions) { +async function groth16FullProve(_input, wasmFile, zkeyFileName, logger, wtnsCalcOptions, proverOptions) { const input = unstringifyBigInts$a(_input); const wtns= { type: "mem" }; await wtnsCalculate(input, wasmFile, wtns, wtnsCalcOptions); - return await groth16Prove(zkeyFileName, wtns, logger); + return await groth16Prove(zkeyFileName, wtns, logger, proverOptions); } /* @@ -8247,7 +8251,7 @@ class Evaluations { */ const {stringifyBigInts: stringifyBigInts$1} = ffjavascript.utils; -async function plonk16Prove(zkeyFileName, witnessFileName, logger) { +async function plonk16Prove(zkeyFileName, witnessFileName, logger, options) { const {fd: fdWtns, sections: sectionsWtns} = await binFileUtils__namespace.readBinFile(witnessFileName, "wtns", 2, 1<<25, 1<<23); // Read witness file @@ -8258,7 +8262,7 @@ async function plonk16Prove(zkeyFileName, witnessFileName, logger) { if (logger) logger.debug("> Reading zkey file"); const {fd: fdZKey, sections: zkeySections} = await binFileUtils__namespace.readBinFile(zkeyFileName, "zkey", 2, 1<<25, 1<<23); - const zkey = await readHeader$1(fdZKey, zkeySections); + const zkey = await readHeader$1(fdZKey, zkeySections, undefined, options); if (zkey.protocol != "plonk") { throw new Error("zkey file is not plonk"); } @@ -9111,14 +9115,14 @@ async function plonk16Prove(zkeyFileName, witnessFileName, logger) { */ const {unstringifyBigInts: unstringifyBigInts$5} = ffjavascript.utils; -async function plonkFullProve(_input, wasmFile, zkeyFileName, logger, wtnsCalcOptions) { +async function plonkFullProve(_input, wasmFile, zkeyFileName, logger, wtnsCalcOptions, proverOptions) { const input = unstringifyBigInts$5(_input); const wtns= { type: "mem" }; await wtnsCalculate(input, wasmFile, wtns, wtnsCalcOptions); - return await plonk16Prove(zkeyFileName, wtns, logger); + return await plonk16Prove(zkeyFileName, wtns, logger, proverOptions); } /* @@ -10450,7 +10454,7 @@ async function fflonkSetup(r1csFilename, ptauFilename, zkeyFilename, logger) { const { stringifyBigInts } = ffjavascript.utils; -async function fflonkProve(zkeyFileName, witnessFileName, logger) { +async function fflonkProve(zkeyFileName, witnessFileName, logger, options) { if (logger) logger.info("FFLONK PROVER STARTED"); // Read witness file @@ -10467,7 +10471,8 @@ async function fflonkProve(zkeyFileName, witnessFileName, logger) { fd: fdZKey, sections: zkeySections } = await binFileUtils__namespace.readBinFile(zkeyFileName, "zkey", 2, 1 << 25, 1 << 23); - const zkey = await readHeader$1(fdZKey, zkeySections); + + const zkey = await readHeader$1(fdZKey, zkeySections, undefined, options); if (zkey.protocolId !== FFLONK_PROTOCOL_ID) { throw new Error("zkey file is not fflonk"); @@ -11704,7 +11709,7 @@ async function fflonkProve(zkeyFileName, witnessFileName, logger) { */ const {unstringifyBigInts: unstringifyBigInts$2} = ffjavascript.utils; -async function fflonkFullProve(_input, wasmFilename, zkeyFilename, logger, wtnsCalcOptions) { +async function fflonkFullProve(_input, wasmFilename, zkeyFilename, logger, wtnsCalcOptions, proverOptions) { const input = unstringifyBigInts$2(_input); const wtns= {type: "mem"}; @@ -11713,7 +11718,7 @@ async function fflonkFullProve(_input, wasmFilename, zkeyFilename, logger, wtnsC await wtnsCalculate(input, wasmFilename, wtns, wtnsCalcOptions); // Compute the proof - return await fflonkProve(zkeyFilename, wtns, logger); + return await fflonkProve(zkeyFilename, wtns, logger, proverOptions); } /* diff --git a/build/snarkjs.js b/build/snarkjs.js index e222fdfb..036686e1 100644 --- a/build/snarkjs.js +++ b/build/snarkjs.js @@ -17631,37 +17631,41 @@ var snarkjs = (function (exports) { const bls12381q = Scalar.e("1a0111ea397fe69a4b1ba7b6434bacd764774b84f38512bf6730d2a0f6b0f6241eabfffeb153ffffb9feffffffffaaab", 16); const bn128q = Scalar.e("21888242871839275222246405745257275088696311157297823662689037894645226208583"); - async function getCurveFromR(r) { + async function getCurveFromR(r, options) { let curve; + // check that options param is defined and that options.singleThread is defined + let singleThread = options && options.singleThread; if (Scalar.eq(r, bn128r$1)) { - curve = await buildBn128(); + curve = await buildBn128(singleThread); } else if (Scalar.eq(r, bls12381r$1)) { - curve = await buildBls12381(); + curve = await buildBls12381(singleThread); } else { throw new Error(`Curve not supported: ${Scalar.toString(r)}`); } return curve; } - async function getCurveFromQ(q) { + async function getCurveFromQ(q, options) { let curve; + let singleThread = options && options.singleThread; if (Scalar.eq(q, bn128q)) { - curve = await buildBn128(); + curve = await buildBn128(singleThread); } else if (Scalar.eq(q, bls12381q)) { - curve = await buildBls12381(); + curve = await buildBls12381(singleThread); } else { throw new Error(`Curve not supported: ${Scalar.toString(q)}`); } return curve; } - async function getCurveFromName(name) { + async function getCurveFromName(name, options) { let curve; + let singleThread = options && options.singleThread; const normName = normalizeName(name); if (["BN128", "BN254", "ALTBN128"].indexOf(normName) >= 0) { - curve = await buildBn128(); + curve = await buildBn128(singleThread); } else if (["BLS12381"].indexOf(normName) >= 0) { - curve = await buildBls12381(); + curve = await buildBls12381(singleThread); } else { throw new Error(`Curve not supported: ${name}`); } @@ -19031,7 +19035,7 @@ var snarkjs = (function (exports) { } - async function readHeader$1(fd, sections, toObject) { + async function readHeader$1(fd, sections, toObject, options) { // Read Header ///////////////////// await startReadUniqueSection(fd, sections, 1); @@ -19039,11 +19043,11 @@ var snarkjs = (function (exports) { await endReadSection(fd); if (protocolId === GROTH16_PROTOCOL_ID) { - return await readHeaderGroth16(fd, sections, toObject); + return await readHeaderGroth16(fd, sections, toObject, options); } else if (protocolId === PLONK_PROTOCOL_ID) { - return await readHeaderPlonk(fd, sections, toObject); + return await readHeaderPlonk(fd, sections, toObject, options); } else if (protocolId === FFLONK_PROTOCOL_ID) { - return await readHeaderFFlonk(fd, sections, toObject); + return await readHeaderFFlonk(fd, sections, toObject, options); } else { throw new Error("Protocol not supported: "); } @@ -19052,7 +19056,7 @@ var snarkjs = (function (exports) { - async function readHeaderGroth16(fd, sections, toObject) { + async function readHeaderGroth16(fd, sections, toObject, options) { const zkey = {}; zkey.protocol = "groth16"; @@ -19067,7 +19071,7 @@ var snarkjs = (function (exports) { const n8r = await fd.readULE32(); zkey.n8r = n8r; zkey.r = await readBigInt(fd, n8r); - zkey.curve = await getCurveFromQ(zkey.q); + zkey.curve = await getCurveFromQ(zkey.q, options); zkey.nVars = await fd.readULE32(); zkey.nPublic = await fd.readULE32(); zkey.domainSize = await fd.readULE32(); @@ -19084,7 +19088,7 @@ var snarkjs = (function (exports) { } - async function readHeaderPlonk(fd, sections, toObject) { + async function readHeaderPlonk(fd, sections, toObject, options) { const zkey = {}; zkey.protocol = "plonk"; @@ -19099,7 +19103,7 @@ var snarkjs = (function (exports) { const n8r = await fd.readULE32(); zkey.n8r = n8r; zkey.r = await readBigInt(fd, n8r); - zkey.curve = await getCurveFromQ(zkey.q); + zkey.curve = await getCurveFromQ(zkey.q, options); zkey.nVars = await fd.readULE32(); zkey.nPublic = await fd.readULE32(); zkey.domainSize = await fd.readULE32(); @@ -19124,7 +19128,7 @@ var snarkjs = (function (exports) { return zkey; } - async function readHeaderFFlonk(fd, sections, toObject) { + async function readHeaderFFlonk(fd, sections, toObject, options) { const zkey = {}; zkey.protocol = "fflonk"; @@ -19134,7 +19138,7 @@ var snarkjs = (function (exports) { const n8q = await fd.readULE32(); zkey.n8q = n8q; zkey.q = await readBigInt(fd, n8q); - zkey.curve = await getCurveFromQ(zkey.q); + zkey.curve = await getCurveFromQ(zkey.q, options); const n8r = await fd.readULE32(); zkey.n8r = n8r; @@ -19497,14 +19501,14 @@ var snarkjs = (function (exports) { */ const {stringifyBigInts: stringifyBigInts$4} = utils; - async function groth16Prove(zkeyFileName, witnessFileName, logger) { + async function groth16Prove(zkeyFileName, witnessFileName, logger, options) { const {fd: fdWtns, sections: sectionsWtns} = await readBinFile(witnessFileName, "wtns", 2); const wtns = await readHeader(fdWtns, sectionsWtns); const {fd: fdZKey, sections: sectionsZKey} = await readBinFile(zkeyFileName, "zkey", 2); - const zkey = await readHeader$1(fdZKey, sectionsZKey); + const zkey = await readHeader$1(fdZKey, sectionsZKey, undefined, options); if (zkey.protocol != "groth16") { throw new Error("zkey file is not groth16"); @@ -20523,14 +20527,14 @@ var snarkjs = (function (exports) { */ const {unstringifyBigInts: unstringifyBigInts$a} = utils; - async function groth16FullProve(_input, wasmFile, zkeyFileName, logger, wtnsCalcOptions) { + async function groth16FullProve(_input, wasmFile, zkeyFileName, logger, wtnsCalcOptions, proverOptions) { const input = unstringifyBigInts$a(_input); const wtns= { type: "mem" }; await wtnsCalculate(input, wasmFile, wtns, wtnsCalcOptions); - return await groth16Prove(zkeyFileName, wtns, logger); + return await groth16Prove(zkeyFileName, wtns, logger, proverOptions); } /* @@ -28480,7 +28484,7 @@ var snarkjs = (function (exports) { */ const {stringifyBigInts: stringifyBigInts$1} = utils; - async function plonk16Prove(zkeyFileName, witnessFileName, logger) { + async function plonk16Prove(zkeyFileName, witnessFileName, logger, options) { const {fd: fdWtns, sections: sectionsWtns} = await readBinFile(witnessFileName, "wtns", 2); // Read witness file @@ -28491,7 +28495,7 @@ var snarkjs = (function (exports) { if (logger) logger.debug("> Reading zkey file"); const {fd: fdZKey, sections: zkeySections} = await readBinFile(zkeyFileName, "zkey", 2); - const zkey = await readHeader$1(fdZKey, zkeySections); + const zkey = await readHeader$1(fdZKey, zkeySections, undefined, options); if (zkey.protocol != "plonk") { throw new Error("zkey file is not plonk"); } @@ -29344,14 +29348,14 @@ var snarkjs = (function (exports) { */ const {unstringifyBigInts: unstringifyBigInts$5} = utils; - async function plonkFullProve(_input, wasmFile, zkeyFileName, logger, wtnsCalcOptions) { + async function plonkFullProve(_input, wasmFile, zkeyFileName, logger, wtnsCalcOptions, proverOptions) { const input = unstringifyBigInts$5(_input); const wtns= { type: "mem" }; await wtnsCalculate(input, wasmFile, wtns, wtnsCalcOptions); - return await plonk16Prove(zkeyFileName, wtns, logger); + return await plonk16Prove(zkeyFileName, wtns, logger, proverOptions); } /* @@ -30683,7 +30687,7 @@ var snarkjs = (function (exports) { const { stringifyBigInts } = utils; - async function fflonkProve(zkeyFileName, witnessFileName, logger) { + async function fflonkProve(zkeyFileName, witnessFileName, logger, options) { if (logger) logger.info("FFLONK PROVER STARTED"); // Read witness file @@ -30700,7 +30704,8 @@ var snarkjs = (function (exports) { fd: fdZKey, sections: zkeySections } = await readBinFile(zkeyFileName, "zkey", 2); - const zkey = await readHeader$1(fdZKey, zkeySections); + + const zkey = await readHeader$1(fdZKey, zkeySections, undefined, options); if (zkey.protocolId !== FFLONK_PROTOCOL_ID) { throw new Error("zkey file is not fflonk"); @@ -31937,7 +31942,7 @@ var snarkjs = (function (exports) { */ const {unstringifyBigInts: unstringifyBigInts$2} = utils; - async function fflonkFullProve(_input, wasmFilename, zkeyFilename, logger, wtnsCalcOptions) { + async function fflonkFullProve(_input, wasmFilename, zkeyFilename, logger, wtnsCalcOptions, proverOptions) { const input = unstringifyBigInts$2(_input); const wtns= {type: "mem"}; @@ -31946,7 +31951,7 @@ var snarkjs = (function (exports) { await wtnsCalculate(input, wasmFilename, wtns, wtnsCalcOptions); // Compute the proof - return await fflonkProve(zkeyFilename, wtns, logger); + return await fflonkProve(zkeyFilename, wtns, logger, proverOptions); } /* @@ -32639,4 +32644,4 @@ var snarkjs = (function (exports) { return exports; })({}); -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic25hcmtqcy5qcyIsInNvdXJjZXMiOlsiLi4vbm9kZV9tb2R1bGVzL2ZmamF2YXNjcmlwdC9idWlsZC9icm93c2VyLmVzbS5qcyIsIi4uL25vZGVfbW9kdWxlcy9mYXN0ZmlsZS9zcmMvb3NmaWxlLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2Zhc3RmaWxlL3NyYy9tZW1maWxlLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2Zhc3RmaWxlL3NyYy9iaWdtZW1maWxlLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2Zhc3RmaWxlL3NyYy9mYXN0ZmlsZS5qcyIsIi4uL25vZGVfbW9kdWxlcy9AaWRlbjMvYmluZmlsZXV0aWxzL3NyYy9iaW5maWxldXRpbHMuanMiLCIuLi9zcmMvY3VydmVzLmpzIiwiLi4vbm9kZV9tb2R1bGVzL25hbm9hc3NlcnQvaW5kZXguanMiLCIuLi9ub2RlX21vZHVsZXMvYjRhL2xpYi9hc2NpaS5qcyIsIi4uL25vZGVfbW9kdWxlcy9iNGEvbGliL2Jhc2U2NC5qcyIsIi4uL25vZGVfbW9kdWxlcy9iNGEvbGliL2hleC5qcyIsIi4uL25vZGVfbW9kdWxlcy9iNGEvbGliL3V0ZjguanMiLCIuLi9ub2RlX21vZHVsZXMvYjRhL2xpYi91dGYxNmxlLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2I0YS9icm93c2VyLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2JsYWtlMmItd2FzbS9ibGFrZTJiLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2JsYWtlMmItd2FzbS9pbmRleC5qcyIsIi4uL3NyYy9taXNjLmpzIiwiLi4vc3JjL3prZXlfY29uc3RhbnRzLmpzIiwiLi4vc3JjL2ZmbG9ua19jb25zdGFudHMuanMiLCIuLi9zcmMvemtleV91dGlscy5qcyIsIi4uL3NyYy93dG5zX3V0aWxzLmpzIiwiLi4vc3JjL2dyb3RoMTZfcHJvdmUuanMiLCIuLi9ub2RlX21vZHVsZXMvY2lyY29tX3J1bnRpbWUvanMvdXRpbHMuanMiLCIuLi9ub2RlX21vZHVsZXMvY2lyY29tX3J1bnRpbWUvanMvd2l0bmVzc19jYWxjdWxhdG9yLmpzIiwiLi4vc3JjL3d0bnNfY2FsY3VsYXRlLmpzIiwiLi4vc3JjL2dyb3RoMTZfZnVsbHByb3ZlLmpzIiwiLi4vc3JjL2dyb3RoMTZfdmVyaWZ5LmpzIiwiLi4vc3JjL2dyb3RoMTZfZXhwb3J0c29saWRpdHljYWxsZGF0YS5qcyIsIi4uL3NyYy9ncm90aDE2LmpzIiwiLi4vc3JjL2tleXBhaXIuanMiLCIuLi9zcmMvcG93ZXJzb2Z0YXVfdXRpbHMuanMiLCIuLi9zcmMvcG93ZXJzb2Z0YXVfbmV3LmpzIiwiLi4vc3JjL3Bvd2Vyc29mdGF1X2V4cG9ydF9jaGFsbGVuZ2UuanMiLCIuLi9zcmMvcG93ZXJzb2Z0YXVfaW1wb3J0LmpzIiwiLi4vc3JjL3Bvd2Vyc29mdGF1X3ZlcmlmeS5qcyIsIi4uL3NyYy9tcGNfYXBwbHlrZXkuanMiLCIuLi9zcmMvcG93ZXJzb2Z0YXVfY2hhbGxlbmdlX2NvbnRyaWJ1dGUuanMiLCIuLi9zcmMvcG93ZXJzb2Z0YXVfYmVhY29uLmpzIiwiLi4vc3JjL3Bvd2Vyc29mdGF1X2NvbnRyaWJ1dGUuanMiLCIuLi9zcmMvcG93ZXJzb2Z0YXVfcHJlcGFyZXBoYXNlMi5qcyIsIi4uL3NyYy9wb3dlcnNvZnRhdV90cnVuY2F0ZS5qcyIsIi4uL3NyYy9wb3dlcnNvZnRhdV9jb252ZXJ0LmpzIiwiLi4vc3JjL3Bvd2Vyc29mdGF1X2V4cG9ydF9qc29uLmpzIiwiLi4vc3JjL3Bvd2Vyc29mdGF1LmpzIiwiLi4vc3JjL3IxY3NfcHJpbnQuanMiLCIuLi9ub2RlX21vZHVsZXMvQGlkZW4zL2JpZ2FycmF5L3NyYy9iaWdhcnJheS5qcyIsIi4uL25vZGVfbW9kdWxlcy9yMWNzZmlsZS9zcmMvcjFjc2ZpbGUuanMiLCIuLi9zcmMvcjFjc19pbmZvLmpzIiwiLi4vc3JjL3IxY3NfZXhwb3J0X2pzb24uanMiLCIuLi9zcmMvcjFjcy5qcyIsIi4uL3NyYy9sb2Fkc3ltcy5qcyIsIi4uL3NyYy93dG5zX2RlYnVnLmpzIiwiLi4vc3JjL3d0bnNfZXhwb3J0X2pzb24uanMiLCIuLi9zcmMvd3Ruc19jaGVjay5qcyIsIi4uL3NyYy93dG5zLmpzIiwiLi4vc3JjL2JpZ2FycmF5LmpzIiwiLi4vc3JjL3prZXlfbmV3LmpzIiwiLi4vc3JjL3prZXlfZXhwb3J0X2JlbGxtYW4uanMiLCIuLi9zcmMvemtleV9pbXBvcnRfYmVsbG1hbi5qcyIsIi4uL3NyYy96a2V5X3ZlcmlmeV9mcm9taW5pdC5qcyIsIi4uL3NyYy96a2V5X3ZlcmlmeV9mcm9tcjFjcy5qcyIsIi4uL3NyYy96a2V5X2NvbnRyaWJ1dGUuanMiLCIuLi9zcmMvemtleV9iZWFjb24uanMiLCIuLi9zcmMvemtleV9leHBvcnRfanNvbi5qcyIsIi4uL3NyYy96a2V5X2JlbGxtYW5fY29udHJpYnV0ZS5qcyIsIi4uL3NyYy96a2V5X2V4cG9ydF92ZXJpZmljYXRpb25rZXkuanMiLCIuLi9zcmMvZmZsb25rX2V4cG9ydF9zb2xpZGl0eV92ZXJpZmllci5qcyIsIi4uL3NyYy96a2V5X2V4cG9ydF9zb2xpZGl0eXZlcmlmaWVyLmpzIiwiLi4vc3JjL3prZXkuanMiLCIuLi9zcmMvcGxvbmtfc2V0dXAuanMiLCIuLi9zcmMvcHJvb2YuanMiLCIuLi9ub2RlX21vZHVsZXMvanMtc2hhMy9zcmMvc2hhMy5qcyIsIi4uL3NyYy9LZWNjYWsyNTZUcmFuc2NyaXB0LmpzIiwiLi4vc3JjL211bF96LmpzIiwiLi4vc3JjL3Bsb25rX2NvbnN0YW50cy5qcyIsIi4uL3NyYy9wb2x5bm9taWFsL3BvbHlub21pYWwuanMiLCIuLi9zcmMvcG9seW5vbWlhbC9ldmFsdWF0aW9ucy5qcyIsIi4uL3NyYy9wbG9ua19wcm92ZS5qcyIsIi4uL3NyYy9wbG9ua19mdWxscHJvdmUuanMiLCIuLi9zcmMvcGxvbmtfdmVyaWZ5LmpzIiwiLi4vc3JjL3Bsb25rX2V4cG9ydHNvbGlkaXR5Y2FsbGRhdGEuanMiLCIuLi9zcmMvcGxvbmsuanMiLCIuLi9zcmMvcGxvbmtfZXF1YXRpb24uanMiLCIuLi9zcmMvcjFjc19jb25zdHJhaW50X3Byb2Nlc3Nvci5qcyIsIi4uL3NyYy9wb2x5bm9taWFsL2Nwb2x5bm9taWFsLmpzIiwiLi4vc3JjL2ZmbG9ua19zZXR1cC5qcyIsIi4uL3NyYy9mZmxvbmtfcHJvdmUuanMiLCIuLi9zcmMvZmZsb25rX2Z1bGxfcHJvdmUuanMiLCIuLi9zcmMvZmZsb25rX3ZlcmlmeS5qcyIsIi4uL3NyYy9mZmxvbmtfZXhwb3J0X2NhbGxkYXRhLmpzIiwiLi4vc3JjL2ZmbG9uay5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiBnbG9iYWwgQmlnSW50ICovXG5jb25zdCBoZXhMZW4gPSBbIDAsIDEsIDIsIDIsIDMsIDMsIDMsIDMsIDQgLDQgLDQgLDQgLDQgLDQgLDQgLDRdO1xuXG5mdW5jdGlvbiBmcm9tU3RyaW5nKHMsIHJhZGl4KSB7XG4gICAgaWYgKCghcmFkaXgpfHwocmFkaXg9PTEwKSkge1xuICAgICAgICByZXR1cm4gQmlnSW50KHMpO1xuICAgIH0gZWxzZSBpZiAocmFkaXg9PTE2KSB7XG4gICAgICAgIGlmIChzLnNsaWNlKDAsMikgPT0gXCIweFwiKSB7XG4gICAgICAgICAgICByZXR1cm4gQmlnSW50KHMpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIEJpZ0ludChcIjB4XCIrcyk7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbmNvbnN0IGUgPSBmcm9tU3RyaW5nO1xuXG5mdW5jdGlvbiBmcm9tQXJyYXkoYSwgcmFkaXgpIHtcbiAgICBsZXQgYWNjID1CaWdJbnQoMCk7XG4gICAgcmFkaXggPSBCaWdJbnQocmFkaXgpO1xuICAgIGZvciAobGV0IGk9MDsgaTxhLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGFjYyA9IGFjYypyYWRpeCArIEJpZ0ludChhW2ldKTtcbiAgICB9XG4gICAgcmV0dXJuIGFjYztcbn1cblxuZnVuY3Rpb24gYml0TGVuZ3RoJDYoYSkge1xuICAgIGNvbnN0IGFTID1hLnRvU3RyaW5nKDE2KTtcbiAgICByZXR1cm4gKGFTLmxlbmd0aC0xKSo0ICtoZXhMZW5bcGFyc2VJbnQoYVNbMF0sIDE2KV07XG59XG5cbmZ1bmN0aW9uIGlzTmVnYXRpdmUkNChhKSB7XG4gICAgcmV0dXJuIEJpZ0ludChhKSA8IEJpZ0ludCgwKTtcbn1cblxuZnVuY3Rpb24gaXNaZXJvJDEoYSkge1xuICAgIHJldHVybiAhYTtcbn1cblxuZnVuY3Rpb24gc2hpZnRMZWZ0KGEsIG4pIHtcbiAgICByZXR1cm4gQmlnSW50KGEpIDw8IEJpZ0ludChuKTtcbn1cblxuZnVuY3Rpb24gc2hpZnRSaWdodChhLCBuKSB7XG4gICAgcmV0dXJuIEJpZ0ludChhKSA+PiBCaWdJbnQobik7XG59XG5cbmNvbnN0IHNobCA9IHNoaWZ0TGVmdDtcbmNvbnN0IHNociA9IHNoaWZ0UmlnaHQ7XG5cbmZ1bmN0aW9uIGlzT2RkJDUoYSkge1xuICAgIHJldHVybiAoQmlnSW50KGEpICYgQmlnSW50KDEpKSA9PSBCaWdJbnQoMSk7XG59XG5cblxuZnVuY3Rpb24gbmFmKG4pIHtcbiAgICBsZXQgRSA9IEJpZ0ludChuKTtcbiAgICBjb25zdCByZXMgPSBbXTtcbiAgICB3aGlsZSAoRSkge1xuICAgICAgICBpZiAoRSAmIEJpZ0ludCgxKSkge1xuICAgICAgICAgICAgY29uc3QgeiA9IDIgLSBOdW1iZXIoRSAlIEJpZ0ludCg0KSk7XG4gICAgICAgICAgICByZXMucHVzaCggeiApO1xuICAgICAgICAgICAgRSA9IEUgLSBCaWdJbnQoeik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXMucHVzaCggMCApO1xuICAgICAgICB9XG4gICAgICAgIEUgPSBFID4+IEJpZ0ludCgxKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlcztcbn1cblxuXG5mdW5jdGlvbiBiaXRzKG4pIHtcbiAgICBsZXQgRSA9IEJpZ0ludChuKTtcbiAgICBjb25zdCByZXMgPSBbXTtcbiAgICB3aGlsZSAoRSkge1xuICAgICAgICBpZiAoRSAmIEJpZ0ludCgxKSkge1xuICAgICAgICAgICAgcmVzLnB1c2goMSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXMucHVzaCggMCApO1xuICAgICAgICB9XG4gICAgICAgIEUgPSBFID4+IEJpZ0ludCgxKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlcztcbn1cblxuZnVuY3Rpb24gdG9OdW1iZXIkMShzKSB7XG4gICAgaWYgKHM+QmlnSW50KE51bWJlci5NQVhfU0FGRV9JTlRFR0VSICkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTnVtYmVyIHRvbyBiaWdcIik7XG4gICAgfVxuICAgIHJldHVybiBOdW1iZXIocyk7XG59XG5cbmZ1bmN0aW9uIHRvQXJyYXkocywgcmFkaXgpIHtcbiAgICBjb25zdCByZXMgPSBbXTtcbiAgICBsZXQgcmVtID0gQmlnSW50KHMpO1xuICAgIHJhZGl4ID0gQmlnSW50KHJhZGl4KTtcbiAgICB3aGlsZSAocmVtKSB7XG4gICAgICAgIHJlcy51bnNoaWZ0KCBOdW1iZXIocmVtICUgcmFkaXgpKTtcbiAgICAgICAgcmVtID0gcmVtIC8gcmFkaXg7XG4gICAgfVxuICAgIHJldHVybiByZXM7XG59XG5cblxuZnVuY3Rpb24gYWRkKGEsIGIpIHtcbiAgICByZXR1cm4gQmlnSW50KGEpICsgQmlnSW50KGIpO1xufVxuXG5mdW5jdGlvbiBzdWIoYSwgYikge1xuICAgIHJldHVybiBCaWdJbnQoYSkgLSBCaWdJbnQoYik7XG59XG5cbmZ1bmN0aW9uIG5lZyhhKSB7XG4gICAgcmV0dXJuIC1CaWdJbnQoYSk7XG59XG5cbmZ1bmN0aW9uIG11bChhLCBiKSB7XG4gICAgcmV0dXJuIEJpZ0ludChhKSAqIEJpZ0ludChiKTtcbn1cblxuZnVuY3Rpb24gc3F1YXJlJDIoYSkge1xuICAgIHJldHVybiBCaWdJbnQoYSkgKiBCaWdJbnQoYSk7XG59XG5cbmZ1bmN0aW9uIHBvdyhhLCBiKSB7XG4gICAgcmV0dXJuIEJpZ0ludChhKSAqKiBCaWdJbnQoYik7XG59XG5cbmZ1bmN0aW9uIGV4cCQxKGEsIGIpIHtcbiAgICByZXR1cm4gQmlnSW50KGEpICoqIEJpZ0ludChiKTtcbn1cblxuZnVuY3Rpb24gYWJzJDEoYSkge1xuICAgIHJldHVybiBCaWdJbnQoYSkgPj0gMCA/IEJpZ0ludChhKSA6IC1CaWdJbnQoYSk7XG59XG5cbmZ1bmN0aW9uIGRpdihhLCBiKSB7XG4gICAgcmV0dXJuIEJpZ0ludChhKSAvIEJpZ0ludChiKTtcbn1cblxuZnVuY3Rpb24gbW9kKGEsIGIpIHtcbiAgICByZXR1cm4gQmlnSW50KGEpICUgQmlnSW50KGIpO1xufVxuXG5mdW5jdGlvbiBlcShhLCBiKSB7XG4gICAgcmV0dXJuIEJpZ0ludChhKSA9PSBCaWdJbnQoYik7XG59XG5cbmZ1bmN0aW9uIG5lcShhLCBiKSB7XG4gICAgcmV0dXJuIEJpZ0ludChhKSAhPSBCaWdJbnQoYik7XG59XG5cbmZ1bmN0aW9uIGx0KGEsIGIpIHtcbiAgICByZXR1cm4gQmlnSW50KGEpIDwgQmlnSW50KGIpO1xufVxuXG5mdW5jdGlvbiBndChhLCBiKSB7XG4gICAgcmV0dXJuIEJpZ0ludChhKSA+IEJpZ0ludChiKTtcbn1cblxuZnVuY3Rpb24gbGVxKGEsIGIpIHtcbiAgICByZXR1cm4gQmlnSW50KGEpIDw9IEJpZ0ludChiKTtcbn1cblxuZnVuY3Rpb24gZ2VxKGEsIGIpIHtcbiAgICByZXR1cm4gQmlnSW50KGEpID49IEJpZ0ludChiKTtcbn1cblxuZnVuY3Rpb24gYmFuZChhLCBiKSB7XG4gICAgcmV0dXJuIEJpZ0ludChhKSAmIEJpZ0ludChiKTtcbn1cblxuZnVuY3Rpb24gYm9yKGEsIGIpIHtcbiAgICByZXR1cm4gQmlnSW50KGEpIHwgQmlnSW50KGIpO1xufVxuXG5mdW5jdGlvbiBieG9yKGEsIGIpIHtcbiAgICByZXR1cm4gQmlnSW50KGEpIF4gQmlnSW50KGIpO1xufVxuXG5mdW5jdGlvbiBsYW5kKGEsIGIpIHtcbiAgICByZXR1cm4gQmlnSW50KGEpICYmIEJpZ0ludChiKTtcbn1cblxuZnVuY3Rpb24gbG9yKGEsIGIpIHtcbiAgICByZXR1cm4gQmlnSW50KGEpIHx8IEJpZ0ludChiKTtcbn1cblxuZnVuY3Rpb24gbG5vdChhKSB7XG4gICAgcmV0dXJuICFCaWdJbnQoYSk7XG59XG5cbi8vIFJldHVybnMgYSBidWZmZXIgd2l0aCBMaXR0bGUgRW5kaWFuIFJlcHJlc2VudGF0aW9uXG5mdW5jdGlvbiB0b1JwckxFKGJ1ZmYsIG8sIGUsIG44KSB7XG4gICAgY29uc3QgcyA9IFwiMDAwMDAwMFwiICsgZS50b1N0cmluZygxNik7XG4gICAgY29uc3QgdiA9IG5ldyBVaW50MzJBcnJheShidWZmLmJ1ZmZlciwgYnVmZi5ieXRlT2Zmc2V0ICsgbywgbjgvNCk7XG4gICAgY29uc3QgbCA9ICgoKHMubGVuZ3RoLTcpKjQgLSAxKSA+PiA1KSsxOyAgICAvLyBOdW1iZXIgb2YgMzJiaXQgd29yZHM7XG4gICAgZm9yIChsZXQgaT0wOyBpPGw7IGkrKykgdltpXSA9IHBhcnNlSW50KHMuc3Vic3RyaW5nKHMubGVuZ3RoLTgqaS04LCBzLmxlbmd0aC04KmkpLCAxNik7XG4gICAgZm9yIChsZXQgaT1sOyBpPHYubGVuZ3RoOyBpKyspIHZbaV0gPSAwO1xuICAgIGZvciAobGV0IGk9di5sZW5ndGgqNDsgaTxuODsgaSsrKSBidWZmW2ldID0gdG9OdW1iZXIkMShiYW5kKHNoaWZ0UmlnaHQoZSwgaSo4KSwgMHhGRikpO1xufVxuXG4vLyBSZXR1cm5zIGEgYnVmZmVyIHdpdGggQmlnIEVuZGlhbiBSZXByZXNlbnRhdGlvblxuZnVuY3Rpb24gdG9ScHJCRShidWZmLCBvLCBlLCBuOCkge1xuICAgIGNvbnN0IHMgPSBcIjAwMDAwMDBcIiArIGUudG9TdHJpbmcoMTYpO1xuICAgIGNvbnN0IHYgPSBuZXcgRGF0YVZpZXcoYnVmZi5idWZmZXIsIGJ1ZmYuYnl0ZU9mZnNldCArIG8sIG44KTtcbiAgICBjb25zdCBsID0gKCgocy5sZW5ndGgtNykqNCAtIDEpID4+IDUpKzE7ICAgIC8vIE51bWJlciBvZiAzMmJpdCB3b3JkcztcbiAgICBmb3IgKGxldCBpPTA7IGk8bDsgaSsrKSB2LnNldFVpbnQzMihuOC1pKjQgLTQsIHBhcnNlSW50KHMuc3Vic3RyaW5nKHMubGVuZ3RoLTgqaS04LCBzLmxlbmd0aC04KmkpLCAxNiksIGZhbHNlKTtcbiAgICBmb3IgKGxldCBpPTA7IGk8bjgvNC1sOyBpKyspIHZbaV0gPSAwO1xufVxuXG4vLyBQYXNlcyBhIGJ1ZmZlciB3aXRoIExpdHRsZSBFbmRpYW4gUmVwcmVzZW50YXRpb25cbmZ1bmN0aW9uIGZyb21ScHJMRShidWZmLCBvLCBuOCkge1xuICAgIG44ID0gbjggfHwgYnVmZi5ieXRlTGVuZ3RoO1xuICAgIG8gPSBvIHx8IDA7XG4gICAgY29uc3QgdiA9IG5ldyBVaW50MzJBcnJheShidWZmLmJ1ZmZlciwgYnVmZi5ieXRlT2Zmc2V0ICsgbywgbjgvNCk7XG4gICAgY29uc3QgYSA9IG5ldyBBcnJheShuOC80KTtcbiAgICB2LmZvckVhY2goIChjaCxpKSA9PiBhW2EubGVuZ3RoLWktMV0gPSBjaC50b1N0cmluZygxNikucGFkU3RhcnQoOCxcIjBcIikgKTtcbiAgICByZXR1cm4gZnJvbVN0cmluZyhhLmpvaW4oXCJcIiksIDE2KTtcbn1cblxuLy8gUGFzZXMgYSBidWZmZXIgd2l0aCBCaWcgRW5kaWFuIFJlcHJlc2VudGF0aW9uXG5mdW5jdGlvbiBmcm9tUnByQkUoYnVmZiwgbywgbjgpIHtcbiAgICBuOCA9IG44IHx8IGJ1ZmYuYnl0ZUxlbmd0aDtcbiAgICBvID0gbyB8fCAwO1xuICAgIGNvbnN0IHYgPSBuZXcgRGF0YVZpZXcoYnVmZi5idWZmZXIsIGJ1ZmYuYnl0ZU9mZnNldCArIG8sIG44KTtcbiAgICBjb25zdCBhID0gbmV3IEFycmF5KG44LzQpO1xuICAgIGZvciAobGV0IGk9MDsgaTxuOC80OyBpKyspIHtcbiAgICAgICAgYVtpXSA9IHYuZ2V0VWludDMyKGkqNCwgZmFsc2UpLnRvU3RyaW5nKDE2KS5wYWRTdGFydCg4LCBcIjBcIik7XG4gICAgfVxuICAgIHJldHVybiBmcm9tU3RyaW5nKGEuam9pbihcIlwiKSwgMTYpO1xufVxuXG5mdW5jdGlvbiB0b1N0cmluZyhhLCByYWRpeCkge1xuICAgIHJldHVybiBhLnRvU3RyaW5nKHJhZGl4KTtcbn1cblxuZnVuY3Rpb24gdG9MRUJ1ZmYoYSkge1xuICAgIGNvbnN0IGJ1ZmYgPSBuZXcgVWludDhBcnJheShNYXRoLmZsb29yKChiaXRMZW5ndGgkNihhKSAtIDEpIC8gOCkgKzEpO1xuICAgIHRvUnByTEUoYnVmZiwgMCwgYSwgYnVmZi5ieXRlTGVuZ3RoKTtcbiAgICByZXR1cm4gYnVmZjtcbn1cblxuY29uc3QgemVybyA9IGUoMCk7XG5jb25zdCBvbmUgPSBlKDEpO1xuXG52YXIgX1NjYWxhciA9IC8qI19fUFVSRV9fKi9PYmplY3QuZnJlZXplKHtcbiAgICBfX3Byb3RvX186IG51bGwsXG4gICAgYWJzOiBhYnMkMSxcbiAgICBhZGQ6IGFkZCxcbiAgICBiYW5kOiBiYW5kLFxuICAgIGJpdExlbmd0aDogYml0TGVuZ3RoJDYsXG4gICAgYml0czogYml0cyxcbiAgICBib3I6IGJvcixcbiAgICBieG9yOiBieG9yLFxuICAgIGRpdjogZGl2LFxuICAgIGU6IGUsXG4gICAgZXE6IGVxLFxuICAgIGV4cDogZXhwJDEsXG4gICAgZnJvbUFycmF5OiBmcm9tQXJyYXksXG4gICAgZnJvbVJwckJFOiBmcm9tUnByQkUsXG4gICAgZnJvbVJwckxFOiBmcm9tUnByTEUsXG4gICAgZnJvbVN0cmluZzogZnJvbVN0cmluZyxcbiAgICBnZXE6IGdlcSxcbiAgICBndDogZ3QsXG4gICAgaXNOZWdhdGl2ZTogaXNOZWdhdGl2ZSQ0LFxuICAgIGlzT2RkOiBpc09kZCQ1LFxuICAgIGlzWmVybzogaXNaZXJvJDEsXG4gICAgbGFuZDogbGFuZCxcbiAgICBsZXE6IGxlcSxcbiAgICBsbm90OiBsbm90LFxuICAgIGxvcjogbG9yLFxuICAgIGx0OiBsdCxcbiAgICBtb2Q6IG1vZCxcbiAgICBtdWw6IG11bCxcbiAgICBuYWY6IG5hZixcbiAgICBuZWc6IG5lZyxcbiAgICBuZXE6IG5lcSxcbiAgICBvbmU6IG9uZSxcbiAgICBwb3c6IHBvdyxcbiAgICBzaGlmdExlZnQ6IHNoaWZ0TGVmdCxcbiAgICBzaGlmdFJpZ2h0OiBzaGlmdFJpZ2h0LFxuICAgIHNobDogc2hsLFxuICAgIHNocjogc2hyLFxuICAgIHNxdWFyZTogc3F1YXJlJDIsXG4gICAgc3ViOiBzdWIsXG4gICAgdG9BcnJheTogdG9BcnJheSxcbiAgICB0b0xFQnVmZjogdG9MRUJ1ZmYsXG4gICAgdG9OdW1iZXI6IHRvTnVtYmVyJDEsXG4gICAgdG9ScHJCRTogdG9ScHJCRSxcbiAgICB0b1JwckxFOiB0b1JwckxFLFxuICAgIHRvU3RyaW5nOiB0b1N0cmluZyxcbiAgICB6ZXJvOiB6ZXJvXG59KTtcblxuLypcbiAgICBDb3B5cmlnaHQgMjAxOCAwa2ltcyBhc3NvY2lhdGlvbi5cblxuICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHNuYXJranMuXG5cbiAgICBzbmFya2pzIGlzIGEgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yXG4gICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZVxuICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKVxuICAgIGFueSBsYXRlciB2ZXJzaW9uLlxuXG4gICAgc25hcmtqcyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWVxuICAgIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvclxuICAgIG1vcmUgZGV0YWlscy5cblxuICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nIHdpdGhcbiAgICBzbmFya2pzLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuKi9cblxuLypcbiAgICBUaGlzIGxpYnJhcnkgZG9lcyBvcGVyYXRpb25zIG9uIHBvbHlub21pYWxzIHdpdGggY29lZmZpY2llbnRzIGluIGEgZmllbGQgRi5cblxuICAgIEEgcG9seW5vbWlhbCBQKHgpID0gcDAgKyBwMSAqIHggKyBwMiAqIHheMiArIC4uLiArIHBuICogeF5uICBpcyByZXByZXNlbnRlZFxuICAgIGJ5IHRoZSBhcnJheSBbIHAwLCBwMSwgcDIsIC4uLiAsIHBuIF0uXG4gKi9cblxuY2xhc3MgUG9sRmllbGQge1xuICAgIGNvbnN0cnVjdG9yIChGKSB7XG4gICAgICAgIHRoaXMuRiA9IEY7XG5cbiAgICAgICAgbGV0IHJlbSA9IEYuc3FydF90O1xuICAgICAgICBsZXQgcyA9IEYuc3FydF9zO1xuXG4gICAgICAgIGNvbnN0IGZpdmUgPSB0aGlzLkYuYWRkKHRoaXMuRi5hZGQodGhpcy5GLnR3bywgdGhpcy5GLnR3byksIHRoaXMuRi5vbmUpO1xuXG4gICAgICAgIHRoaXMudyA9IG5ldyBBcnJheShzKzEpO1xuICAgICAgICB0aGlzLndpID0gbmV3IEFycmF5KHMrMSk7XG4gICAgICAgIHRoaXMud1tzXSA9IHRoaXMuRi5wb3coZml2ZSwgcmVtKTtcbiAgICAgICAgdGhpcy53aVtzXSA9IHRoaXMuRi5pbnYodGhpcy53W3NdKTtcblxuICAgICAgICBsZXQgbj1zLTE7XG4gICAgICAgIHdoaWxlIChuPj0wKSB7XG4gICAgICAgICAgICB0aGlzLndbbl0gPSB0aGlzLkYuc3F1YXJlKHRoaXMud1tuKzFdKTtcbiAgICAgICAgICAgIHRoaXMud2lbbl0gPSB0aGlzLkYuc3F1YXJlKHRoaXMud2lbbisxXSk7XG4gICAgICAgICAgICBuLS07XG4gICAgICAgIH1cblxuXG4gICAgICAgIHRoaXMucm9vdHMgPSBbXTtcbi8qICAgICAgICBmb3IgKGxldCBpPTA7IGk8MTY7IGkrKykge1xuICAgICAgICAgICAgbGV0IHIgPSB0aGlzLkYub25lO1xuICAgICAgICAgICAgbiA9IDEgPDwgaTtcbiAgICAgICAgICAgIGNvbnN0IHJvb3RzaSA9IG5ldyBBcnJheShuKTtcbiAgICAgICAgICAgIGZvciAobGV0IGo9MDsgajxuOyBqKyspIHtcbiAgICAgICAgICAgICAgICByb290c2lbal0gPSByO1xuICAgICAgICAgICAgICAgIHIgPSB0aGlzLkYubXVsKHIsIHRoaXMud1tpXSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMucm9vdHMucHVzaChyb290c2kpO1xuICAgICAgICB9XG4gICAgKi9cbiAgICAgICAgdGhpcy5fc2V0Um9vdHMoMTUpO1xuICAgIH1cblxuICAgIF9zZXRSb290cyhuKSB7XG4gICAgICAgIGlmIChuID4gdGhpcy5GLnNxcnRfcykgbiA9IHRoaXMucztcbiAgICAgICAgZm9yIChsZXQgaT1uOyAoaT49MCkgJiYgKCF0aGlzLnJvb3RzW2ldKTsgaS0tKSB7XG4gICAgICAgICAgICBsZXQgciA9IHRoaXMuRi5vbmU7XG4gICAgICAgICAgICBjb25zdCBucm9vdHMgPSAxIDw8IGk7XG4gICAgICAgICAgICBjb25zdCByb290c2kgPSBuZXcgQXJyYXkobnJvb3RzKTtcbiAgICAgICAgICAgIGZvciAobGV0IGo9MDsgajxucm9vdHM7IGorKykge1xuICAgICAgICAgICAgICAgIHJvb3RzaVtqXSA9IHI7XG4gICAgICAgICAgICAgICAgciA9IHRoaXMuRi5tdWwociwgdGhpcy53W2ldKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMucm9vdHNbaV0gPSByb290c2k7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBhZGQoYSwgYikge1xuICAgICAgICBjb25zdCBtID0gTWF0aC5tYXgoYS5sZW5ndGgsIGIubGVuZ3RoKTtcbiAgICAgICAgY29uc3QgcmVzID0gbmV3IEFycmF5KG0pO1xuICAgICAgICBmb3IgKGxldCBpPTA7IGk8bTsgaSsrKSB7XG4gICAgICAgICAgICByZXNbaV0gPSB0aGlzLkYuYWRkKGFbaV0gfHwgdGhpcy5GLnplcm8sIGJbaV0gfHwgdGhpcy5GLnplcm8pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLnJlZHVjZShyZXMpO1xuICAgIH1cblxuICAgIGRvdWJsZShhKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmFkZChhLGEpO1xuICAgIH1cblxuICAgIHN1YihhLCBiKSB7XG4gICAgICAgIGNvbnN0IG0gPSBNYXRoLm1heChhLmxlbmd0aCwgYi5sZW5ndGgpO1xuICAgICAgICBjb25zdCByZXMgPSBuZXcgQXJyYXkobSk7XG4gICAgICAgIGZvciAobGV0IGk9MDsgaTxtOyBpKyspIHtcbiAgICAgICAgICAgIHJlc1tpXSA9IHRoaXMuRi5zdWIoYVtpXSB8fCB0aGlzLkYuemVybywgYltpXSB8fCB0aGlzLkYuemVybyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMucmVkdWNlKHJlcyk7XG4gICAgfVxuXG4gICAgbXVsU2NhbGFyKHAsIGIpIHtcbiAgICAgICAgaWYgKHRoaXMuRi5lcShiLCB0aGlzLkYuemVybykpIHJldHVybiBbXTtcbiAgICAgICAgaWYgKHRoaXMuRi5lcShiLCB0aGlzLkYub25lKSkgcmV0dXJuIHA7XG4gICAgICAgIGNvbnN0IHJlcyA9IG5ldyBBcnJheShwLmxlbmd0aCk7XG4gICAgICAgIGZvciAobGV0IGk9MDsgaTxwLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICByZXNbaV0gPSB0aGlzLkYubXVsKHBbaV0sIGIpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXM7XG4gICAgfVxuXG5cblxuICAgIG11bChhLCBiKSB7XG4gICAgICAgIGlmIChhLmxlbmd0aCA9PSAwKSByZXR1cm4gW107XG4gICAgICAgIGlmIChiLmxlbmd0aCA9PSAwKSByZXR1cm4gW107XG4gICAgICAgIGlmIChhLmxlbmd0aCA9PSAxKSByZXR1cm4gdGhpcy5tdWxTY2FsYXIoYiwgYVswXSk7XG4gICAgICAgIGlmIChiLmxlbmd0aCA9PSAxKSByZXR1cm4gdGhpcy5tdWxTY2FsYXIoYSwgYlswXSk7XG5cbiAgICAgICAgaWYgKGIubGVuZ3RoID4gYS5sZW5ndGgpIHtcbiAgICAgICAgICAgIFtiLCBhXSA9IFthLCBiXTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICgoYi5sZW5ndGggPD0gMikgfHwgKGIubGVuZ3RoIDwgbG9nMiQyKGEubGVuZ3RoKSkpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLm11bE5vcm1hbChhLGIpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMubXVsRkZUKGEsYik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBtdWxOb3JtYWwoYSwgYikge1xuICAgICAgICBsZXQgcmVzID0gW107XG4gICAgICAgIGZvciAobGV0IGk9MDsgaTxiLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICByZXMgPSB0aGlzLmFkZChyZXMsIHRoaXMuc2NhbGVYKHRoaXMubXVsU2NhbGFyKGEsIGJbaV0pLCBpKSApO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXM7XG4gICAgfVxuXG4gICAgbXVsRkZUKGEsYikge1xuICAgICAgICBjb25zdCBsb25nZXN0TiA9IE1hdGgubWF4KGEubGVuZ3RoLCBiLmxlbmd0aCk7XG4gICAgICAgIGNvbnN0IGJpdHNSZXN1bHQgPSBsb2cyJDIobG9uZ2VzdE4tMSkrMjtcbiAgICAgICAgdGhpcy5fc2V0Um9vdHMoYml0c1Jlc3VsdCk7XG5cbiAgICAgICAgY29uc3QgbSA9IDEgPDwgYml0c1Jlc3VsdDtcbiAgICAgICAgY29uc3QgZWEgPSB0aGlzLmV4dGVuZChhLG0pO1xuICAgICAgICBjb25zdCBlYiA9IHRoaXMuZXh0ZW5kKGIsbSk7XG5cbiAgICAgICAgY29uc3QgdGEgPSBfX2ZmdCQxKHRoaXMsIGVhLCBiaXRzUmVzdWx0LCAwLCAxKTtcbiAgICAgICAgY29uc3QgdGIgPSBfX2ZmdCQxKHRoaXMsIGViLCBiaXRzUmVzdWx0LCAwLCAxKTtcblxuICAgICAgICBjb25zdCB0cmVzID0gbmV3IEFycmF5KG0pO1xuXG4gICAgICAgIGZvciAobGV0IGk9MDsgaTxtOyBpKyspIHtcbiAgICAgICAgICAgIHRyZXNbaV0gPSB0aGlzLkYubXVsKHRhW2ldLCB0YltpXSk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCByZXMgPSBfX2ZmdCQxKHRoaXMsIHRyZXMsIGJpdHNSZXN1bHQsIDAsIDEpO1xuXG4gICAgICAgIGNvbnN0IHR3b2ludm0gPSB0aGlzLkYuaW52KCB0aGlzLkYubXVsU2NhbGFyKHRoaXMuRi5vbmUsIG0pICk7XG4gICAgICAgIGNvbnN0IHJlc24gPSBuZXcgQXJyYXkobSk7XG4gICAgICAgIGZvciAobGV0IGk9MDsgaTxtOyBpKyspIHtcbiAgICAgICAgICAgIHJlc25baV0gPSB0aGlzLkYubXVsKHJlc1sobS1pKSVtXSwgdHdvaW52bSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5yZWR1Y2UocmVzbik7XG4gICAgfVxuXG5cblxuICAgIHNxdWFyZShhKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm11bChhLGEpO1xuICAgIH1cblxuICAgIHNjYWxlWChwLCBuKSB7XG4gICAgICAgIGlmIChuPT0wKSB7XG4gICAgICAgICAgICByZXR1cm4gcDtcbiAgICAgICAgfSBlbHNlIGlmIChuPjApIHtcbiAgICAgICAgICAgIGNvbnN0IHogPSBuZXcgQXJyYXkobikuZmlsbCh0aGlzLkYuemVybyk7XG4gICAgICAgICAgICByZXR1cm4gei5jb25jYXQocCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoLW4gPj0gcC5sZW5ndGgpIHJldHVybiBbXTtcbiAgICAgICAgICAgIHJldHVybiBwLnNsaWNlKC1uKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGV2YWwyKHAsIHgpIHtcbiAgICAgICAgbGV0IHYgPSB0aGlzLkYuemVybztcbiAgICAgICAgbGV0IGl4ID0gdGhpcy5GLm9uZTtcbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPHAubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIHYgPSB0aGlzLkYuYWRkKHYsIHRoaXMuRi5tdWwocFtpXSwgaXgpKTtcbiAgICAgICAgICAgIGl4ID0gdGhpcy5GLm11bChpeCwgeCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHY7XG4gICAgfVxuXG4gICAgZXZhbHVhdGUocCx4KSB7XG4gICAgICAgIGNvbnN0IEYgPSB0aGlzLkY7XG4gICAgICAgIGlmIChwLmxlbmd0aCA9PSAwKSByZXR1cm4gRi56ZXJvO1xuICAgICAgICBjb25zdCBtID0gdGhpcy5fbmV4dDJQb3dlcihwLmxlbmd0aCk7XG4gICAgICAgIGNvbnN0IGVwID0gdGhpcy5leHRlbmQocCwgbSk7XG5cbiAgICAgICAgcmV0dXJuIF9ldmFsKGVwLCB4LCAwLCAxLCBtKTtcblxuICAgICAgICBmdW5jdGlvbiBfZXZhbChwLCB4LCBvZmZzZXQsIHN0ZXAsIG4pIHtcbiAgICAgICAgICAgIGlmIChuPT0xKSByZXR1cm4gcFtvZmZzZXRdO1xuICAgICAgICAgICAgY29uc3QgbmV3WCA9IEYuc3F1YXJlKHgpO1xuICAgICAgICAgICAgY29uc3QgcmVzPSBGLmFkZChcbiAgICAgICAgICAgICAgICBfZXZhbChwLCBuZXdYLCBvZmZzZXQsIHN0ZXAgPDwgMSwgbiA+PiAxKSxcbiAgICAgICAgICAgICAgICBGLm11bChcbiAgICAgICAgICAgICAgICAgICAgeCxcbiAgICAgICAgICAgICAgICAgICAgX2V2YWwocCwgbmV3WCwgb2Zmc2V0K3N0ZXAgLCBzdGVwIDw8IDEsIG4gPj4gMSkpKTtcbiAgICAgICAgICAgIHJldHVybiByZXM7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBsYWdyYW5nZShwb2ludHMpIHtcbiAgICAgICAgbGV0IHJvb3RzID0gW3RoaXMuRi5vbmVdO1xuICAgICAgICBmb3IgKGxldCBpPTA7IGk8cG9pbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICByb290cyA9IHRoaXMubXVsKHJvb3RzLCBbdGhpcy5GLm5lZyhwb2ludHNbaV1bMF0pLCB0aGlzLkYub25lXSk7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgc3VtID0gW107XG4gICAgICAgIGZvciAobGV0IGk9MDsgaTxwb2ludHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGxldCBtcG9sID0gdGhpcy5ydWZmaW5pKHJvb3RzLCBwb2ludHNbaV1bMF0pO1xuICAgICAgICAgICAgY29uc3QgZmFjdG9yID1cbiAgICAgICAgICAgICAgICB0aGlzLkYubXVsKFxuICAgICAgICAgICAgICAgICAgICB0aGlzLkYuaW52KHRoaXMuZXZhbHVhdGUobXBvbCwgcG9pbnRzW2ldWzBdKSksXG4gICAgICAgICAgICAgICAgICAgIHBvaW50c1tpXVsxXSk7XG4gICAgICAgICAgICBtcG9sID0gdGhpcy5tdWxTY2FsYXIobXBvbCwgZmFjdG9yKTtcbiAgICAgICAgICAgIHN1bSA9IHRoaXMuYWRkKHN1bSwgbXBvbCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHN1bTtcbiAgICB9XG5cblxuICAgIGZmdChwKSB7XG4gICAgICAgIGlmIChwLmxlbmd0aCA8PSAxKSByZXR1cm4gcDtcbiAgICAgICAgY29uc3QgYml0cyA9IGxvZzIkMihwLmxlbmd0aC0xKSsxO1xuICAgICAgICB0aGlzLl9zZXRSb290cyhiaXRzKTtcblxuICAgICAgICBjb25zdCBtID0gMSA8PCBiaXRzO1xuICAgICAgICBjb25zdCBlcCA9IHRoaXMuZXh0ZW5kKHAsIG0pO1xuICAgICAgICBjb25zdCByZXMgPSBfX2ZmdCQxKHRoaXMsIGVwLCBiaXRzLCAwLCAxKTtcbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG5cbiAgICBmZnQyKHApIHtcbiAgICAgICAgaWYgKHAubGVuZ3RoIDw9IDEpIHJldHVybiBwO1xuICAgICAgICBjb25zdCBiaXRzID0gbG9nMiQyKHAubGVuZ3RoLTEpKzE7XG4gICAgICAgIHRoaXMuX3NldFJvb3RzKGJpdHMpO1xuXG4gICAgICAgIGNvbnN0IG0gPSAxIDw8IGJpdHM7XG4gICAgICAgIGNvbnN0IGVwID0gdGhpcy5leHRlbmQocCwgbSk7XG4gICAgICAgIF9fYml0UmV2ZXJzZShlcCwgYml0cyk7XG4gICAgICAgIGNvbnN0IHJlcyA9IF9fZmZ0Mih0aGlzLCBlcCwgYml0cyk7XG4gICAgICAgIHJldHVybiByZXM7XG4gICAgfVxuXG5cbiAgICBpZmZ0KHApIHtcblxuICAgICAgICBpZiAocC5sZW5ndGggPD0gMSkgcmV0dXJuIHA7XG4gICAgICAgIGNvbnN0IGJpdHMgPSBsb2cyJDIocC5sZW5ndGgtMSkrMTtcbiAgICAgICAgdGhpcy5fc2V0Um9vdHMoYml0cyk7XG4gICAgICAgIGNvbnN0IG0gPSAxIDw8IGJpdHM7XG4gICAgICAgIGNvbnN0IGVwID0gdGhpcy5leHRlbmQocCwgbSk7XG4gICAgICAgIGNvbnN0IHJlcyA9ICBfX2ZmdCQxKHRoaXMsIGVwLCBiaXRzLCAwLCAxKTtcblxuICAgICAgICBjb25zdCB0d29pbnZtID0gdGhpcy5GLmludiggdGhpcy5GLm11bFNjYWxhcih0aGlzLkYub25lLCBtKSApO1xuICAgICAgICBjb25zdCByZXNuID0gbmV3IEFycmF5KG0pO1xuICAgICAgICBmb3IgKGxldCBpPTA7IGk8bTsgaSsrKSB7XG4gICAgICAgICAgICByZXNuW2ldID0gdGhpcy5GLm11bChyZXNbKG0taSklbV0sIHR3b2ludm0pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJlc247XG5cbiAgICB9XG5cblxuICAgIGlmZnQyKHApIHtcblxuICAgICAgICBpZiAocC5sZW5ndGggPD0gMSkgcmV0dXJuIHA7XG4gICAgICAgIGNvbnN0IGJpdHMgPSBsb2cyJDIocC5sZW5ndGgtMSkrMTtcbiAgICAgICAgdGhpcy5fc2V0Um9vdHMoYml0cyk7XG4gICAgICAgIGNvbnN0IG0gPSAxIDw8IGJpdHM7XG4gICAgICAgIGNvbnN0IGVwID0gdGhpcy5leHRlbmQocCwgbSk7XG4gICAgICAgIF9fYml0UmV2ZXJzZShlcCwgYml0cyk7XG4gICAgICAgIGNvbnN0IHJlcyA9ICBfX2ZmdDIodGhpcywgZXAsIGJpdHMpO1xuXG4gICAgICAgIGNvbnN0IHR3b2ludm0gPSB0aGlzLkYuaW52KCB0aGlzLkYubXVsU2NhbGFyKHRoaXMuRi5vbmUsIG0pICk7XG4gICAgICAgIGNvbnN0IHJlc24gPSBuZXcgQXJyYXkobSk7XG4gICAgICAgIGZvciAobGV0IGk9MDsgaTxtOyBpKyspIHtcbiAgICAgICAgICAgIHJlc25baV0gPSB0aGlzLkYubXVsKHJlc1sobS1pKSVtXSwgdHdvaW52bSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcmVzbjtcblxuICAgIH1cblxuICAgIF9mZnQocGFsbCwgYml0cywgb2Zmc2V0LCBzdGVwKSB7XG5cbiAgICAgICAgY29uc3QgbiA9IDEgPDwgYml0cztcbiAgICAgICAgaWYgKG49PTEpIHtcbiAgICAgICAgICAgIHJldHVybiBbIHBhbGxbb2Zmc2V0XSBdO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgbmRpdjIgPSBuID4+IDE7XG4gICAgICAgIGNvbnN0IHAxID0gdGhpcy5fZmZ0KHBhbGwsIGJpdHMtMSwgb2Zmc2V0LCBzdGVwKjIpO1xuICAgICAgICBjb25zdCBwMiA9IHRoaXMuX2ZmdChwYWxsLCBiaXRzLTEsIG9mZnNldCtzdGVwLCBzdGVwKjIpO1xuXG4gICAgICAgIGNvbnN0IG91dCA9IG5ldyBBcnJheShuKTtcblxuICAgICAgICBsZXQgbT0gdGhpcy5GLm9uZTtcbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPG5kaXYyOyBpKyspIHtcbiAgICAgICAgICAgIG91dFtpXSA9IHRoaXMuRi5hZGQocDFbaV0sIHRoaXMuRi5tdWwobSwgcDJbaV0pKTtcbiAgICAgICAgICAgIG91dFtpK25kaXYyXSA9IHRoaXMuRi5zdWIocDFbaV0sIHRoaXMuRi5tdWwobSwgcDJbaV0pKTtcbiAgICAgICAgICAgIG0gPSB0aGlzLkYubXVsKG0sIHRoaXMud1tiaXRzXSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gb3V0O1xuICAgIH1cblxuICAgIGV4dGVuZChwLCBlKSB7XG4gICAgICAgIGlmIChlID09IHAubGVuZ3RoKSByZXR1cm4gcDtcbiAgICAgICAgY29uc3QgeiA9IG5ldyBBcnJheShlLXAubGVuZ3RoKS5maWxsKHRoaXMuRi56ZXJvKTtcblxuICAgICAgICByZXR1cm4gcC5jb25jYXQoeik7XG4gICAgfVxuXG4gICAgcmVkdWNlKHApIHtcbiAgICAgICAgaWYgKHAubGVuZ3RoID09IDApIHJldHVybiBwO1xuICAgICAgICBpZiAoISB0aGlzLkYuZXEocFtwLmxlbmd0aC0xXSwgdGhpcy5GLnplcm8pICkgcmV0dXJuIHA7XG4gICAgICAgIGxldCBpPXAubGVuZ3RoLTE7XG4gICAgICAgIHdoaWxlKCBpPjAgJiYgdGhpcy5GLmVxKHBbaV0sIHRoaXMuRi56ZXJvKSApIGktLTtcbiAgICAgICAgcmV0dXJuIHAuc2xpY2UoMCwgaSsxKTtcbiAgICB9XG5cbiAgICBlcShhLCBiKSB7XG4gICAgICAgIGNvbnN0IHBhID0gdGhpcy5yZWR1Y2UoYSk7XG4gICAgICAgIGNvbnN0IHBiID0gdGhpcy5yZWR1Y2UoYik7XG5cbiAgICAgICAgaWYgKHBhLmxlbmd0aCAhPSBwYi5sZW5ndGgpIHJldHVybiBmYWxzZTtcbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPHBiLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBpZiAoIXRoaXMuRi5lcShwYVtpXSwgcGJbaV0pKSByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBydWZmaW5pKHAsIHIpIHtcbiAgICAgICAgY29uc3QgcmVzID0gbmV3IEFycmF5KHAubGVuZ3RoLTEpO1xuICAgICAgICByZXNbcmVzLmxlbmd0aC0xXSA9IHBbcC5sZW5ndGgtMV07XG4gICAgICAgIGZvciAobGV0IGkgPSByZXMubGVuZ3RoLTI7IGk+PTA7IGktLSkge1xuICAgICAgICAgICAgcmVzW2ldID0gdGhpcy5GLmFkZCh0aGlzLkYubXVsKHJlc1tpKzFdLCByKSwgcFtpKzFdKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH1cblxuICAgIF9uZXh0MlBvd2VyKHYpIHtcbiAgICAgICAgdi0tO1xuICAgICAgICB2IHw9IHYgPj4gMTtcbiAgICAgICAgdiB8PSB2ID4+IDI7XG4gICAgICAgIHYgfD0gdiA+PiA0O1xuICAgICAgICB2IHw9IHYgPj4gODtcbiAgICAgICAgdiB8PSB2ID4+IDE2O1xuICAgICAgICB2Kys7XG4gICAgICAgIHJldHVybiB2O1xuICAgIH1cblxuICAgIHRvU3RyaW5nKHApIHtcbiAgICAgICAgY29uc3QgYXAgPSB0aGlzLm5vcm1hbGl6ZShwKTtcbiAgICAgICAgbGV0IFMgPSBcIlwiO1xuICAgICAgICBmb3IgKGxldCBpPWFwLmxlbmd0aC0xOyBpPj0wOyBpLS0pIHtcbiAgICAgICAgICAgIGlmICghdGhpcy5GLmVxKHBbaV0sIHRoaXMuRi56ZXJvKSkge1xuICAgICAgICAgICAgICAgIGlmIChTIT1cIlwiKSBTICs9IFwiICsgXCI7XG4gICAgICAgICAgICAgICAgUyA9IFMgKyBwW2ldLnRvU3RyaW5nKDEwKTtcbiAgICAgICAgICAgICAgICBpZiAoaT4wKSB7XG4gICAgICAgICAgICAgICAgICAgIFMgPSBTICsgXCJ4XCI7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpPjEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIFMgPSBTICsgXCJeXCIgK2k7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFM7XG4gICAgfVxuXG4gICAgbm9ybWFsaXplKHApIHtcbiAgICAgICAgY29uc3QgcmVzICA9IG5ldyBBcnJheShwLmxlbmd0aCk7XG4gICAgICAgIGZvciAobGV0IGk9MDsgaTxwLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICByZXNbaV0gPSB0aGlzLkYubm9ybWFsaXplKHBbaV0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXM7XG4gICAgfVxuXG5cbiAgICBfcmVjaXByb2NhbChwLCBiaXRzKSB7XG4gICAgICAgIGNvbnN0IGsgPSAxIDw8IGJpdHM7XG4gICAgICAgIGlmIChrPT0xKSB7XG4gICAgICAgICAgICByZXR1cm4gWyB0aGlzLkYuaW52KHBbMF0pIF07XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgbnAgPSB0aGlzLnNjYWxlWChwLCAtay8yKTtcbiAgICAgICAgY29uc3QgcSA9IHRoaXMuX3JlY2lwcm9jYWwobnAsIGJpdHMtMSk7XG4gICAgICAgIGNvbnN0IGEgPSB0aGlzLnNjYWxlWCh0aGlzLmRvdWJsZShxKSwgMyprLzItMik7XG4gICAgICAgIGNvbnN0IGIgPSB0aGlzLm11bCggdGhpcy5zcXVhcmUocSksIHApO1xuXG4gICAgICAgIHJldHVybiB0aGlzLnNjYWxlWCh0aGlzLnN1YihhLGIpLCAgIC0oay0yKSk7XG4gICAgfVxuXG4gICAgLy8gZGl2aWRlcyB4Xm0gLyB2XG4gICAgX2RpdjIobSwgdikge1xuICAgICAgICBjb25zdCBrYml0cyA9IGxvZzIkMih2Lmxlbmd0aC0xKSsxO1xuICAgICAgICBjb25zdCBrID0gMSA8PCBrYml0cztcblxuICAgICAgICBjb25zdCBzY2FsZVYgPSBrIC0gdi5sZW5ndGg7XG5cbiAgICAgICAgLy8gcmVjID0geF4oayAtIDIpIC8gdiogeF5zY2FsZVYgPT5cbiAgICAgICAgLy8gcmVjID0geF4oay0yLXNjYWxlVikvIHZcbiAgICAgICAgLy9cbiAgICAgICAgLy8gcmVzID0geF5tL3YgPSB4XihtICsgKDIqay0yIC0gc2NhbGVWKSAtICgyKmstMiAtIHNjYWxlVikpIC92ID0+XG4gICAgICAgIC8vIHJlcyA9IHJlYyAqIHheKG0gLSAoMiprLTIgLSBzY2FsZVYpKSA9PlxuICAgICAgICAvLyByZXMgPSByZWMgKiB4XihtIC0gMiprICsgMiArIHNjYWxlVilcblxuICAgICAgICBjb25zdCByZWMgPSB0aGlzLl9yZWNpcHJvY2FsKHRoaXMuc2NhbGVYKHYsIHNjYWxlViksIGtiaXRzKTtcbiAgICAgICAgY29uc3QgcmVzID0gdGhpcy5zY2FsZVgocmVjLCBtIC0gMiprICsgMiArIHNjYWxlVik7XG5cbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG5cbiAgICBkaXYoX3UsIF92KSB7XG4gICAgICAgIGlmIChfdS5sZW5ndGggPCBfdi5sZW5ndGgpIHJldHVybiBbXTtcbiAgICAgICAgY29uc3Qga2JpdHMgPSBsb2cyJDIoX3YubGVuZ3RoLTEpKzE7XG4gICAgICAgIGNvbnN0IGsgPSAxIDw8IGtiaXRzO1xuXG4gICAgICAgIGNvbnN0IHUgPSB0aGlzLnNjYWxlWChfdSwgay1fdi5sZW5ndGgpO1xuICAgICAgICBjb25zdCB2ID0gdGhpcy5zY2FsZVgoX3YsIGstX3YubGVuZ3RoKTtcblxuICAgICAgICBjb25zdCBuID0gdi5sZW5ndGgtMTtcbiAgICAgICAgbGV0IG0gPSB1Lmxlbmd0aC0xO1xuXG4gICAgICAgIGNvbnN0IHMgPSB0aGlzLl9yZWNpcHJvY2FsKHYsIGtiaXRzKTtcbiAgICAgICAgbGV0IHQ7XG4gICAgICAgIGlmIChtPjIqbikge1xuICAgICAgICAgICAgdCA9IHRoaXMuc3ViKHRoaXMuc2NhbGVYKFt0aGlzLkYub25lXSwgMipuKSwgdGhpcy5tdWwocywgdikpO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IHEgPSBbXTtcbiAgICAgICAgbGV0IHJlbSA9IHU7XG4gICAgICAgIGxldCB1cywgdXQ7XG4gICAgICAgIGxldCBmaW5pc2ggPSBmYWxzZTtcblxuICAgICAgICB3aGlsZSAoIWZpbmlzaCkge1xuICAgICAgICAgICAgdXMgPSB0aGlzLm11bChyZW0sIHMpO1xuICAgICAgICAgICAgcSA9IHRoaXMuYWRkKHEsIHRoaXMuc2NhbGVYKHVzLCAtMipuKSk7XG5cbiAgICAgICAgICAgIGlmICggbSA+IDIqbiApIHtcbiAgICAgICAgICAgICAgICB1dCA9IHRoaXMubXVsKHJlbSwgdCk7XG4gICAgICAgICAgICAgICAgcmVtID0gdGhpcy5zY2FsZVgodXQsIC0yKm4pO1xuICAgICAgICAgICAgICAgIG0gPSByZW0ubGVuZ3RoLTE7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGZpbmlzaCA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcTtcbiAgICB9XG5cblxuICAgIC8vIHJldHVybnMgdGhlIGl0aCBudGgtcm9vdCBvZiBvbmVcbiAgICBvbmVSb290KG4sIGkpIHtcbiAgICAgICAgbGV0IG5iaXRzID0gbG9nMiQyKG4tMSkrMTtcbiAgICAgICAgbGV0IHJlcyA9IHRoaXMuRi5vbmU7XG4gICAgICAgIGxldCByID0gaTtcblxuICAgICAgICBpZihpPj1uKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJHaXZlbiAnaScgc2hvdWxkIGJlIGxvd2VyIHRoYW4gJ24nXCIpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKDE8PG5iaXRzICE9PSBuKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEludGVybmFsIGVycmxyOiAke259IHNob3VsZCBlcXVhbCAkezE8PG5iaXRzfWApO1xuICAgICAgICB9XG5cbiAgICAgICAgd2hpbGUgKHI+MCkge1xuICAgICAgICAgICAgaWYgKHIgJiAxID09IDEpIHtcbiAgICAgICAgICAgICAgICByZXMgPSB0aGlzLkYubXVsKHJlcywgdGhpcy53W25iaXRzXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByID0gciA+PiAxO1xuICAgICAgICAgICAgbmJpdHMgLS07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG5cbiAgICBjb21wdXRlVmFuaXNoaW5nUG9saW5vbWlhbChiaXRzLCB0KSB7XG4gICAgICAgIGNvbnN0IG0gPSAxIDw8IGJpdHM7XG4gICAgICAgIHJldHVybiB0aGlzLkYuc3ViKHRoaXMuRi5wb3codCwgbSksIHRoaXMuRi5vbmUpO1xuICAgIH1cblxuICAgIGV2YWx1YXRlTGFncmFuZ2VQb2x5bm9taWFscyhiaXRzLCB0KSB7XG4gICAgICAgIGNvbnN0IG09IDEgPDwgYml0cztcbiAgICAgICAgY29uc3QgdG0gPSB0aGlzLkYucG93KHQsIG0pO1xuICAgICAgICBjb25zdCB1PSBuZXcgQXJyYXkobSkuZmlsbCh0aGlzLkYuemVybyk7XG4gICAgICAgIHRoaXMuX3NldFJvb3RzKGJpdHMpO1xuICAgICAgICBjb25zdCBvbWVnYSA9IHRoaXMud1tiaXRzXTtcblxuICAgICAgICBpZiAodGhpcy5GLmVxKHRtLCB0aGlzLkYub25lKSkge1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBtOyBpKyspIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5GLmVxKHRoaXMucm9vdHNbYml0c11bMF0sdCkpIHsgLy8gaS5lLiwgdCBlcXVhbHMgb21lZ2FeaVxuICAgICAgICAgICAgICAgICAgICB1W2ldID0gdGhpcy5GLm9uZTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgeiA9IHRoaXMuRi5zdWIodG0sIHRoaXMuRi5vbmUpO1xuICAgICAgICAvLyAgICAgICAgbGV0IGwgPSB0aGlzLkYubXVsKHosICB0aGlzLkYucG93KHRoaXMuRi50d29pbnYsIG0pKTtcbiAgICAgICAgbGV0IGwgPSB0aGlzLkYubXVsKHosICB0aGlzLkYuaW52KHRoaXMuRi5lKG0pKSk7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbTsgaSsrKSB7XG4gICAgICAgICAgICB1W2ldID0gdGhpcy5GLm11bChsLCB0aGlzLkYuaW52KHRoaXMuRi5zdWIodCx0aGlzLnJvb3RzW2JpdHNdW2ldKSkpO1xuICAgICAgICAgICAgbCA9IHRoaXMuRi5tdWwobCwgb21lZ2EpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHU7XG4gICAgfVxuXG4gICAgbG9nMihWKSB7XG4gICAgICAgIHJldHVybiBsb2cyJDIoVik7XG4gICAgfVxufVxuXG5mdW5jdGlvbiBsb2cyJDIoIFYgKVxue1xuICAgIHJldHVybiggKCAoIFYgJiAweEZGRkYwMDAwICkgIT09IDAgPyAoIFYgJj0gMHhGRkZGMDAwMCwgMTYgKSA6IDAgKSB8ICggKCBWICYgMHhGRjAwRkYwMCApICE9PSAwID8gKCBWICY9IDB4RkYwMEZGMDAsIDggKSA6IDAgKSB8ICggKCBWICYgMHhGMEYwRjBGMCApICE9PSAwID8gKCBWICY9IDB4RjBGMEYwRjAsIDQgKSA6IDAgKSB8ICggKCBWICYgMHhDQ0NDQ0NDQyApICE9PSAwID8gKCBWICY9IDB4Q0NDQ0NDQ0MsIDIgKSA6IDAgKSB8ICggKCBWICYgMHhBQUFBQUFBQSApICE9PSAwICkgKTtcbn1cblxuXG5mdW5jdGlvbiBfX2ZmdCQxKFBGLCBwYWxsLCBiaXRzLCBvZmZzZXQsIHN0ZXApIHtcblxuICAgIGNvbnN0IG4gPSAxIDw8IGJpdHM7XG4gICAgaWYgKG49PTEpIHtcbiAgICAgICAgcmV0dXJuIFsgcGFsbFtvZmZzZXRdIF07XG4gICAgfSBlbHNlIGlmIChuPT0yKSB7XG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICBQRi5GLmFkZChwYWxsW29mZnNldF0sIHBhbGxbb2Zmc2V0ICsgc3RlcF0pLFxuICAgICAgICAgICAgUEYuRi5zdWIocGFsbFtvZmZzZXRdLCBwYWxsW29mZnNldCArIHN0ZXBdKV07XG4gICAgfVxuXG4gICAgY29uc3QgbmRpdjIgPSBuID4+IDE7XG4gICAgY29uc3QgcDEgPSBfX2ZmdCQxKFBGLCBwYWxsLCBiaXRzLTEsIG9mZnNldCwgc3RlcCoyKTtcbiAgICBjb25zdCBwMiA9IF9fZmZ0JDEoUEYsIHBhbGwsIGJpdHMtMSwgb2Zmc2V0K3N0ZXAsIHN0ZXAqMik7XG5cbiAgICBjb25zdCBvdXQgPSBuZXcgQXJyYXkobik7XG5cbiAgICBmb3IgKGxldCBpPTA7IGk8bmRpdjI7IGkrKykge1xuICAgICAgICBvdXRbaV0gPSBQRi5GLmFkZChwMVtpXSwgUEYuRi5tdWwoUEYucm9vdHNbYml0c11baV0sIHAyW2ldKSk7XG4gICAgICAgIG91dFtpK25kaXYyXSA9IFBGLkYuc3ViKHAxW2ldLCBQRi5GLm11bChQRi5yb290c1tiaXRzXVtpXSwgcDJbaV0pKTtcbiAgICB9XG5cbiAgICByZXR1cm4gb3V0O1xufVxuXG5cbmZ1bmN0aW9uIF9fZmZ0MihQRiwgcGFsbCwgYml0cykge1xuXG4gICAgY29uc3QgbiA9IDEgPDwgYml0cztcbiAgICBpZiAobj09MSkge1xuICAgICAgICByZXR1cm4gWyBwYWxsWzBdIF07XG4gICAgfVxuXG4gICAgY29uc3QgbmRpdjIgPSBuID4+IDE7XG4gICAgY29uc3QgcDEgPSBfX2ZmdDIoUEYsIHBhbGwuc2xpY2UoMCwgbmRpdjIpLCBiaXRzLTEpO1xuICAgIGNvbnN0IHAyID0gX19mZnQyKFBGLCBwYWxsLnNsaWNlKG5kaXYyKSwgYml0cy0xKTtcblxuICAgIGNvbnN0IG91dCA9IG5ldyBBcnJheShuKTtcblxuICAgIGZvciAobGV0IGk9MDsgaTxuZGl2MjsgaSsrKSB7XG4gICAgICAgIG91dFtpXSA9IFBGLkYuYWRkKHAxW2ldLCBQRi5GLm11bChQRi5yb290c1tiaXRzXVtpXSwgcDJbaV0pKTtcbiAgICAgICAgb3V0W2krbmRpdjJdID0gUEYuRi5zdWIocDFbaV0sIFBGLkYubXVsKFBGLnJvb3RzW2JpdHNdW2ldLCBwMltpXSkpO1xuICAgIH1cblxuICAgIHJldHVybiBvdXQ7XG59XG5cbmNvbnN0IF9yZXZUYWJsZSQxID0gW107XG5mb3IgKGxldCBpPTA7IGk8MjU2OyBpKyspIHtcbiAgICBfcmV2VGFibGUkMVtpXSA9IF9yZXZTbG93JDEoaSwgOCk7XG59XG5cbmZ1bmN0aW9uIF9yZXZTbG93JDEoaWR4LCBiaXRzKSB7XG4gICAgbGV0IHJlcyA9MDtcbiAgICBsZXQgYSA9IGlkeDtcbiAgICBmb3IgKGxldCBpPTA7IGk8Yml0czsgaSsrKSB7XG4gICAgICAgIHJlcyA8PD0gMTtcbiAgICAgICAgcmVzID0gcmVzIHwgKGEgJjEpO1xuICAgICAgICBhID4+PTE7XG4gICAgfVxuICAgIHJldHVybiByZXM7XG59XG5cbmZ1bmN0aW9uIHJldihpZHgsIGJpdHMpIHtcbiAgICByZXR1cm4gKFxuICAgICAgICBfcmV2VGFibGUkMVtpZHggPj4+IDI0XSB8XG4gICAgICAgIChfcmV2VGFibGUkMVsoaWR4ID4+PiAxNikgJiAweEZGXSA8PCA4KSB8XG4gICAgICAgIChfcmV2VGFibGUkMVsoaWR4ID4+PiA4KSAmIDB4RkZdIDw8IDE2KSB8XG4gICAgICAgIChfcmV2VGFibGUkMVtpZHggJiAweEZGXSA8PCAyNClcbiAgICApID4+PiAoMzItYml0cyk7XG59XG5cbmZ1bmN0aW9uIF9fYml0UmV2ZXJzZShwLCBiaXRzKSB7XG4gICAgZm9yIChsZXQgaz0wOyBrPHAubGVuZ3RoOyBrKyspIHtcbiAgICAgICAgY29uc3QgciA9IHJldihrLCBiaXRzKTtcbiAgICAgICAgaWYgKHI+aykge1xuICAgICAgICAgICAgY29uc3QgdG1wPSBwW2tdO1xuICAgICAgICAgICAgcFtrXSA9IHBbcl07XG4gICAgICAgICAgICBwW3JdID0gdG1wO1xuICAgICAgICB9XG4gICAgfVxuXG59XG5cbi8qXG4gICAgQ29weXJpZ2h0IDIwMTggMGtpbXMgYXNzb2NpYXRpb24uXG5cbiAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBzbmFya2pzLlxuXG4gICAgc25hcmtqcyBpcyBhIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vclxuICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGVcbiAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbilcbiAgICBhbnkgbGF0ZXIgdmVyc2lvbi5cblxuICAgIHNuYXJranMgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFlcbiAgICBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3JcbiAgICBtb3JlIGRldGFpbHMuXG5cbiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZyB3aXRoXG4gICAgc25hcmtqcy4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cbiovXG5cblxuXG5mdW5jdGlvbiBtdWxTY2FsYXIoRiwgYmFzZSwgZSkge1xuICAgIGxldCByZXM7XG5cbiAgICBpZiAoaXNaZXJvJDEoZSkpIHJldHVybiBGLnplcm87XG5cbiAgICBjb25zdCBuID0gbmFmKGUpO1xuXG4gICAgaWYgKG5bbi5sZW5ndGgtMV0gPT0gMSkge1xuICAgICAgICByZXMgPSBiYXNlO1xuICAgIH0gZWxzZSBpZiAobltuLmxlbmd0aC0xXSA9PSAtMSkge1xuICAgICAgICByZXMgPSBGLm5lZyhiYXNlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJpbnZsYXVkIE5BRlwiKTtcbiAgICB9XG5cbiAgICBmb3IgKGxldCBpPW4ubGVuZ3RoLTI7IGk+PTA7IGktLSkge1xuXG4gICAgICAgIHJlcyA9IEYuZG91YmxlKHJlcyk7XG5cbiAgICAgICAgaWYgKG5baV0gPT0gMSkge1xuICAgICAgICAgICAgcmVzID0gRi5hZGQocmVzLCBiYXNlKTtcbiAgICAgICAgfSBlbHNlIGlmIChuW2ldID09IC0xKSB7XG4gICAgICAgICAgICByZXMgPSBGLnN1YihyZXMsIGJhc2UpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlcztcbn1cblxuXG4vKlxuZXhwb3J0cy5tdWxTY2FsYXIgPSAoRiwgYmFzZSwgZSkgPT57XG4gICAgbGV0IHJlcyA9IEYuemVybztcbiAgICBsZXQgcmVtID0gYmlnSW50KGUpO1xuICAgIGxldCBleHAgPSBiYXNlO1xuXG4gICAgd2hpbGUgKCEgcmVtLmVxKGJpZ0ludC56ZXJvKSkge1xuICAgICAgICBpZiAocmVtLmFuZChiaWdJbnQub25lKS5lcShiaWdJbnQub25lKSkge1xuICAgICAgICAgICAgcmVzID0gRi5hZGQocmVzLCBleHApO1xuICAgICAgICB9XG4gICAgICAgIGV4cCA9IEYuZG91YmxlKGV4cCk7XG4gICAgICAgIHJlbSA9IHJlbS5zaGlmdFJpZ2h0KDEpO1xuICAgIH1cblxuICAgIHJldHVybiByZXM7XG59O1xuKi9cblxuXG5mdW5jdGlvbiBleHAoRiwgYmFzZSwgZSkge1xuXG4gICAgaWYgKGlzWmVybyQxKGUpKSByZXR1cm4gRi5vbmU7XG5cbiAgICBjb25zdCBuID0gYml0cyhlKTtcblxuICAgIGlmIChuLmxlbmd0aD09MCkgcmV0dXJuIEYub25lO1xuXG4gICAgbGV0IHJlcyA9IGJhc2U7XG5cbiAgICBmb3IgKGxldCBpPW4ubGVuZ3RoLTI7IGk+PTA7IGktLSkge1xuXG4gICAgICAgIHJlcyA9IEYuc3F1YXJlKHJlcyk7XG5cbiAgICAgICAgaWYgKG5baV0pIHtcbiAgICAgICAgICAgIHJlcyA9IEYubXVsKHJlcywgYmFzZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcmVzO1xufVxuXG4vLyBDaGVjayBoZXJlOiBodHRwczovL2VwcmludC5pYWNyLm9yZy8yMDEyLzY4NS5wZGZcblxuZnVuY3Rpb24gYnVpbGRTcXJ0IChGKSB7XG4gICAgaWYgKChGLm0gJSAyKSA9PSAxKSB7XG4gICAgICAgIGlmIChlcShtb2QoRi5wLCA0KSwgMSApKSB7XG4gICAgICAgICAgICBpZiAoZXEobW9kKEYucCwgOCksIDEgKSkge1xuICAgICAgICAgICAgICAgIGlmIChlcShtb2QoRi5wLCAxNiksIDEgKSkge1xuICAgICAgICAgICAgICAgICAgICAvLyBhbGc3X211bGxlcihGKTtcbiAgICAgICAgICAgICAgICAgICAgYWxnNV90b25lbGxpU2hhbmtzKEYpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZXEobW9kKEYucCwgMTYpLCA5ICkpIHtcbiAgICAgICAgICAgICAgICAgICAgYWxnNF9rb25nKEYpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkZpZWxkIHdpdGhvdCBzcXJ0XCIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSBpZiAoZXEobW9kKEYucCwgOCksIDUgKSkge1xuICAgICAgICAgICAgICAgIGFsZzNfYXRraW4oRik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkZpZWxkIHdpdGhvdCBzcXJ0XCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKGVxKG1vZChGLnAsIDQpLCAzICkpIHtcbiAgICAgICAgICAgIGFsZzJfc2hhbmtzKEYpO1xuICAgICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgcG0ybW9kNCA9IG1vZChwb3coRi5wLCBGLm0vMiksIDQpO1xuICAgICAgICBpZiAocG0ybW9kNCA9PSAxKSB7XG4gICAgICAgICAgICBhbGcxMF9hZGooRik7XG4gICAgICAgIH0gZWxzZSBpZiAocG0ybW9kNCA9PSAzKSB7XG4gICAgICAgICAgICBhbGc5X2FkaihGKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGFsZzhfY29tcGxleChGKTtcbiAgICAgICAgfVxuXG4gICAgfVxufVxuXG5cbmZ1bmN0aW9uIGFsZzVfdG9uZWxsaVNoYW5rcyhGKSB7XG4gICAgRi5zcXJ0X3EgPSBwb3coRi5wLCBGLm0pO1xuXG4gICAgRi5zcXJ0X3MgPSAwO1xuICAgIEYuc3FydF90ID0gc3ViKEYuc3FydF9xLCAxKTtcblxuICAgIHdoaWxlICghaXNPZGQkNShGLnNxcnRfdCkpIHtcbiAgICAgICAgRi5zcXJ0X3MgPSBGLnNxcnRfcyArIDE7XG4gICAgICAgIEYuc3FydF90ID0gZGl2KEYuc3FydF90LCAyKTtcbiAgICB9XG5cbiAgICBsZXQgYzAgPSBGLm9uZTtcblxuICAgIHdoaWxlIChGLmVxKGMwLCBGLm9uZSkpIHtcbiAgICAgICAgY29uc3QgYyA9IEYucmFuZG9tKCk7XG4gICAgICAgIEYuc3FydF96ID0gRi5wb3coYywgRi5zcXJ0X3QpO1xuICAgICAgICBjMCA9IEYucG93KEYuc3FydF96LCAyICoqIChGLnNxcnRfcy0xKSApO1xuICAgIH1cblxuICAgIEYuc3FydF90bTFkMiA9IGRpdihzdWIoRi5zcXJ0X3QsIDEpLDIpO1xuXG4gICAgRi5zcXJ0ID0gZnVuY3Rpb24oYSkge1xuICAgICAgICBjb25zdCBGPXRoaXM7XG4gICAgICAgIGlmIChGLmlzWmVybyhhKSkgcmV0dXJuIEYuemVybztcbiAgICAgICAgbGV0IHcgPSBGLnBvdyhhLCBGLnNxcnRfdG0xZDIpO1xuICAgICAgICBjb25zdCBhMCA9IEYucG93KCBGLm11bChGLnNxdWFyZSh3KSwgYSksIDIgKiogKEYuc3FydF9zLTEpICk7XG4gICAgICAgIGlmIChGLmVxKGEwLCBGLm5lZ29uZSkpIHJldHVybiBudWxsO1xuXG4gICAgICAgIGxldCB2ID0gRi5zcXJ0X3M7XG4gICAgICAgIGxldCB4ID0gRi5tdWwoYSwgdyk7XG4gICAgICAgIGxldCBiID0gRi5tdWwoeCwgdyk7XG4gICAgICAgIGxldCB6ID0gRi5zcXJ0X3o7XG4gICAgICAgIHdoaWxlICghRi5lcShiLCBGLm9uZSkpIHtcbiAgICAgICAgICAgIGxldCBiMmsgPSBGLnNxdWFyZShiKTtcbiAgICAgICAgICAgIGxldCBrPTE7XG4gICAgICAgICAgICB3aGlsZSAoIUYuZXEoYjJrLCBGLm9uZSkpIHtcbiAgICAgICAgICAgICAgICBiMmsgPSBGLnNxdWFyZShiMmspO1xuICAgICAgICAgICAgICAgIGsrKztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdyA9IHo7XG4gICAgICAgICAgICBmb3IgKGxldCBpPTA7IGk8di1rLTE7IGkrKykge1xuICAgICAgICAgICAgICAgIHcgPSBGLnNxdWFyZSh3KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHogPSBGLnNxdWFyZSh3KTtcbiAgICAgICAgICAgIGIgPSBGLm11bChiLCB6KTtcbiAgICAgICAgICAgIHggPSBGLm11bCh4LCB3KTtcbiAgICAgICAgICAgIHYgPSBrO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBGLmdlcSh4LCBGLnplcm8pID8geCA6IEYubmVnKHgpO1xuICAgIH07XG59XG5cbmZ1bmN0aW9uIGFsZzRfa29uZyhGKSB7XG4gICAgRi5zcXJ0ID0gZnVuY3Rpb24oKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIlNxcnQgYWxnIDQgbm90IGltcGxlbWVudGVkXCIpO1xuICAgIH07XG59XG5cbmZ1bmN0aW9uIGFsZzNfYXRraW4oRikge1xuICAgIEYuc3FydCA9IGZ1bmN0aW9uKCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJTcXJ0IGFsZyAzIG5vdCBpbXBsZW1lbnRlZFwiKTtcbiAgICB9O1xufVxuXG5mdW5jdGlvbiBhbGcyX3NoYW5rcyhGKSB7XG5cbiAgICBGLnNxcnRfcSA9IHBvdyhGLnAsIEYubSk7XG4gICAgRi5zcXJ0X2UxID0gZGl2KCBzdWIoRi5zcXJ0X3EsIDMpICwgNCk7XG5cbiAgICBGLnNxcnQgPSBmdW5jdGlvbihhKSB7XG4gICAgICAgIGlmICh0aGlzLmlzWmVybyhhKSkgcmV0dXJuIHRoaXMuemVybztcblxuICAgICAgICAvLyBUZXN0IHRoYXQgaGF2ZSBzb2x1dGlvblxuICAgICAgICBjb25zdCBhMSA9IHRoaXMucG93KGEsIHRoaXMuc3FydF9lMSk7XG5cbiAgICAgICAgY29uc3QgYTAgPSB0aGlzLm11bCh0aGlzLnNxdWFyZShhMSksIGEpO1xuXG4gICAgICAgIGlmICggdGhpcy5lcShhMCwgdGhpcy5uZWdvbmUpICkgcmV0dXJuIG51bGw7XG5cbiAgICAgICAgY29uc3QgeCA9IHRoaXMubXVsKGExLCBhKTtcblxuICAgICAgICByZXR1cm4gRi5nZXEoeCwgRi56ZXJvKSA/IHggOiBGLm5lZyh4KTtcbiAgICB9O1xufVxuXG5mdW5jdGlvbiBhbGcxMF9hZGooRikge1xuICAgIEYuc3FydCA9IGZ1bmN0aW9uKCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJTcXJ0IGFsZyAxMCBub3QgaW1wbGVtZW50ZWRcIik7XG4gICAgfTtcbn1cblxuZnVuY3Rpb24gYWxnOV9hZGooRikge1xuICAgIEYuc3FydF9xID0gcG93KEYucCwgRi5tLzIpO1xuICAgIEYuc3FydF9lMzQgPSBkaXYoIHN1YihGLnNxcnRfcSwgMykgLCA0KTtcbiAgICBGLnNxcnRfZTEyID0gZGl2KCBzdWIoRi5zcXJ0X3EsIDEpICwgMik7XG5cbiAgICBGLmZyb2Jlbml1cyA9IGZ1bmN0aW9uKG4sIHgpIHtcbiAgICAgICAgaWYgKChuJTIpID09IDEpIHtcbiAgICAgICAgICAgIHJldHVybiBGLmNvbmp1Z2F0ZSh4KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB4O1xuICAgICAgICB9XG4gICAgfTtcblxuICAgIEYuc3FydCA9IGZ1bmN0aW9uKGEpIHtcbiAgICAgICAgY29uc3QgRiA9IHRoaXM7XG4gICAgICAgIGNvbnN0IGExID0gRi5wb3coYSwgRi5zcXJ0X2UzNCk7XG4gICAgICAgIGNvbnN0IGFsZmEgPSBGLm11bChGLnNxdWFyZShhMSksIGEpO1xuICAgICAgICBjb25zdCBhMCA9IEYubXVsKEYuZnJvYmVuaXVzKDEsIGFsZmEpLCBhbGZhKTtcbiAgICAgICAgaWYgKEYuZXEoYTAsIEYubmVnb25lKSkgcmV0dXJuIG51bGw7XG4gICAgICAgIGNvbnN0IHgwID0gRi5tdWwoYTEsIGEpO1xuICAgICAgICBsZXQgeDtcbiAgICAgICAgaWYgKEYuZXEoYWxmYSwgRi5uZWdvbmUpKSB7XG4gICAgICAgICAgICB4ID0gRi5tdWwoeDAsIFtGLkYuemVybywgRi5GLm9uZV0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgYiA9IEYucG93KEYuYWRkKEYub25lLCBhbGZhKSwgRi5zcXJ0X2UxMik7XG4gICAgICAgICAgICB4ID0gRi5tdWwoYiwgeDApO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBGLmdlcSh4LCBGLnplcm8pID8geCA6IEYubmVnKHgpO1xuICAgIH07XG59XG5cblxuZnVuY3Rpb24gYWxnOF9jb21wbGV4KEYpIHtcbiAgICBGLnNxcnQgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiU3FydCBhbGcgOCBub3QgaW1wbGVtZW50ZWRcIik7XG4gICAgfTtcbn1cblxuZnVuY3Rpb24gcXVhcnRlclJvdW5kKHN0LCBhLCBiLCBjLCBkKSB7XG5cbiAgICBzdFthXSA9IChzdFthXSArIHN0W2JdKSA+Pj4gMDtcbiAgICBzdFtkXSA9IChzdFtkXSBeIHN0W2FdKSA+Pj4gMDtcbiAgICBzdFtkXSA9ICgoc3RbZF0gPDwgMTYpIHwgKChzdFtkXT4+PjE2KSAmIDB4RkZGRikpID4+PiAwO1xuXG4gICAgc3RbY10gPSAoc3RbY10gKyBzdFtkXSkgPj4+IDA7XG4gICAgc3RbYl0gPSAoc3RbYl0gXiBzdFtjXSkgPj4+IDA7XG4gICAgc3RbYl0gPSAoKHN0W2JdIDw8IDEyKSB8ICgoc3RbYl0+Pj4yMCkgJiAweEZGRikpID4+PiAwO1xuXG4gICAgc3RbYV0gPSAoc3RbYV0gKyBzdFtiXSkgPj4+IDA7XG4gICAgc3RbZF0gPSAoc3RbZF0gXiBzdFthXSkgPj4+IDA7XG4gICAgc3RbZF0gPSAoKHN0W2RdIDw8IDgpIHwgKChzdFtkXT4+PjI0KSAmIDB4RkYpKSA+Pj4gMDtcblxuICAgIHN0W2NdID0gKHN0W2NdICsgc3RbZF0pID4+PiAwO1xuICAgIHN0W2JdID0gKHN0W2JdIF4gc3RbY10pID4+PiAwO1xuICAgIHN0W2JdID0gKChzdFtiXSA8PCA3KSB8ICgoc3RbYl0+Pj4yNSkgJiAweDdGKSkgPj4+IDA7XG59XG5cbmZ1bmN0aW9uIGRvdWJsZVJvdW5kKHN0KSB7XG4gICAgcXVhcnRlclJvdW5kKHN0LCAwLCA0LCA4LDEyKTtcbiAgICBxdWFydGVyUm91bmQoc3QsIDEsIDUsIDksMTMpO1xuICAgIHF1YXJ0ZXJSb3VuZChzdCwgMiwgNiwxMCwxNCk7XG4gICAgcXVhcnRlclJvdW5kKHN0LCAzLCA3LDExLDE1KTtcblxuICAgIHF1YXJ0ZXJSb3VuZChzdCwgMCwgNSwxMCwxNSk7XG4gICAgcXVhcnRlclJvdW5kKHN0LCAxLCA2LDExLDEyKTtcbiAgICBxdWFydGVyUm91bmQoc3QsIDIsIDcsIDgsMTMpO1xuICAgIHF1YXJ0ZXJSb3VuZChzdCwgMywgNCwgOSwxNCk7XG59XG5cbmNsYXNzIENoYUNoYSB7XG5cbiAgICBjb25zdHJ1Y3RvcihzZWVkKSB7XG4gICAgICAgIHNlZWQgPSBzZWVkIHx8IFswLDAsMCwwLDAsMCwwLDBdO1xuICAgICAgICB0aGlzLnN0YXRlID0gW1xuICAgICAgICAgICAgMHg2MTcwNzg2NSxcbiAgICAgICAgICAgIDB4MzMyMDY0NkUsXG4gICAgICAgICAgICAweDc5NjIyRDMyLFxuICAgICAgICAgICAgMHg2QjIwNjU3NCxcbiAgICAgICAgICAgIHNlZWRbMF0sXG4gICAgICAgICAgICBzZWVkWzFdLFxuICAgICAgICAgICAgc2VlZFsyXSxcbiAgICAgICAgICAgIHNlZWRbM10sXG4gICAgICAgICAgICBzZWVkWzRdLFxuICAgICAgICAgICAgc2VlZFs1XSxcbiAgICAgICAgICAgIHNlZWRbNl0sXG4gICAgICAgICAgICBzZWVkWzddLFxuICAgICAgICAgICAgMCxcbiAgICAgICAgICAgIDAsXG4gICAgICAgICAgICAwLFxuICAgICAgICAgICAgMFxuICAgICAgICBdO1xuICAgICAgICB0aGlzLmlkeCA9IDE2O1xuICAgICAgICB0aGlzLmJ1ZmYgPSBuZXcgQXJyYXkoMTYpO1xuICAgIH1cblxuICAgIG5leHRVMzIoKSB7XG4gICAgICAgIGlmICh0aGlzLmlkeCA9PSAxNikgdGhpcy51cGRhdGUoKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuYnVmZlt0aGlzLmlkeCsrXTtcbiAgICB9XG5cbiAgICBuZXh0VTY0KCkge1xuICAgICAgICByZXR1cm4gYWRkKG11bCh0aGlzLm5leHRVMzIoKSwgMHgxMDAwMDAwMDApLCB0aGlzLm5leHRVMzIoKSk7XG4gICAgfVxuXG4gICAgbmV4dEJvb2woKSB7XG4gICAgICAgIHJldHVybiAodGhpcy5uZXh0VTMyKCkgJiAxKSA9PSAxO1xuICAgIH1cblxuICAgIHVwZGF0ZSgpIHtcbiAgICAgICAgLy8gQ29weSB0aGUgc3RhdGVcbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPDE2OyBpKyspIHRoaXMuYnVmZltpXSA9IHRoaXMuc3RhdGVbaV07XG5cbiAgICAgICAgLy8gQXBwbHkgdGhlIHJvdW5kc1xuICAgICAgICBmb3IgKGxldCBpPTA7IGk8MTA7IGkrKykgZG91YmxlUm91bmQodGhpcy5idWZmKTtcblxuICAgICAgICAvLyBBZGQgdG8gdGhlIGluaXRpYWxcbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPDE2OyBpKyspIHRoaXMuYnVmZltpXSA9ICh0aGlzLmJ1ZmZbaV0gKyB0aGlzLnN0YXRlW2ldKSA+Pj4gMDtcblxuICAgICAgICB0aGlzLmlkeCA9IDA7XG5cbiAgICAgICAgdGhpcy5zdGF0ZVsxMl0gPSAodGhpcy5zdGF0ZVsxMl0gKyAxKSA+Pj4gMDtcbiAgICAgICAgaWYgKHRoaXMuc3RhdGVbMTJdICE9IDApIHJldHVybjtcbiAgICAgICAgdGhpcy5zdGF0ZVsxM10gPSAodGhpcy5zdGF0ZVsxM10gKyAxKSA+Pj4gMDtcbiAgICAgICAgaWYgKHRoaXMuc3RhdGVbMTNdICE9IDApIHJldHVybjtcbiAgICAgICAgdGhpcy5zdGF0ZVsxNF0gPSAodGhpcy5zdGF0ZVsxNF0gKyAxKSA+Pj4gMDtcbiAgICAgICAgaWYgKHRoaXMuc3RhdGVbMTRdICE9IDApIHJldHVybjtcbiAgICAgICAgdGhpcy5zdGF0ZVsxNV0gPSAodGhpcy5zdGF0ZVsxNV0gKyAxKSA+Pj4gMDtcbiAgICB9XG59XG5cbmZ1bmN0aW9uIGdldFJhbmRvbUJ5dGVzKG4pIHtcbiAgICBsZXQgYXJyYXkgPSBuZXcgVWludDhBcnJheShuKTtcbiAgICB7IC8vIEJyb3dzZXJcbiAgICAgICAgaWYgKHR5cGVvZiBnbG9iYWxUaGlzLmNyeXB0byAhPT0gXCJ1bmRlZmluZWRcIikgeyAvLyBTdXBwb3J0ZWRcbiAgICAgICAgICAgIGdsb2JhbFRoaXMuY3J5cHRvLmdldFJhbmRvbVZhbHVlcyhhcnJheSk7XG4gICAgICAgIH0gZWxzZSB7IC8vIGZhbGxiYWNrXG4gICAgICAgICAgICBmb3IgKGxldCBpPTA7IGk8bjsgaSsrKSB7XG4gICAgICAgICAgICAgICAgYXJyYXlbaV0gPSAoTWF0aC5yYW5kb20oKSo0Mjk0OTY3Mjk2KT4+PjA7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGFycmF5O1xufVxuXG5mdW5jdGlvbiBnZXRSYW5kb21TZWVkKCkge1xuICAgIGNvbnN0IGFyciA9IGdldFJhbmRvbUJ5dGVzKDMyKTtcbiAgICBjb25zdCBhcnJWID0gbmV3IFVpbnQzMkFycmF5KGFyci5idWZmZXIpO1xuICAgIGNvbnN0IHNlZWQgPSBbXTtcbiAgICBmb3IgKGxldCBpPTA7IGk8ODsgaSsrKSB7XG4gICAgICAgIHNlZWQucHVzaChhcnJWW2ldKTtcbiAgICB9XG4gICAgcmV0dXJuIHNlZWQ7XG59XG5cbmxldCB0aHJlYWRSbmcgPSBudWxsO1xuXG5mdW5jdGlvbiBnZXRUaHJlYWRSbmcoKSB7XG4gICAgaWYgKHRocmVhZFJuZykgcmV0dXJuIHRocmVhZFJuZztcbiAgICB0aHJlYWRSbmcgPSBuZXcgQ2hhQ2hhKGdldFJhbmRvbVNlZWQoKSk7XG4gICAgcmV0dXJuIHRocmVhZFJuZztcbn1cblxuLypcbiAgICBDb3B5cmlnaHQgMjAxOCAwa2ltcyBhc3NvY2lhdGlvbi5cblxuICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHNuYXJranMuXG5cbiAgICBzbmFya2pzIGlzIGEgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yXG4gICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZVxuICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKVxuICAgIGFueSBsYXRlciB2ZXJzaW9uLlxuXG4gICAgc25hcmtqcyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWVxuICAgIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvclxuICAgIG1vcmUgZGV0YWlscy5cblxuICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nIHdpdGhcbiAgICBzbmFya2pzLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuKi9cblxuLypcbiAgICBUaGlzIGxpYnJhcnkgZG9lcyBvcGVyYXRpb25zIG9uIHBvbHlub21pYWxzIHdpdGggY29lZmZpY2llbnRzIGluIGEgZmllbGQgRi5cblxuICAgIEEgcG9seW5vbWlhbCBQKHgpID0gcDAgKyBwMSAqIHggKyBwMiAqIHheMiArIC4uLiArIHBuICogeF5uICBpcyByZXByZXNlbnRlZFxuICAgIGJ5IHRoZSBhcnJheSBbIHAwLCBwMSwgcDIsIC4uLiAsIHBuIF0uXG4gKi9cblxuY2xhc3MgRkZUIHtcbiAgICBjb25zdHJ1Y3RvciAoRywgRiwgb3BNdWxHRikge1xuICAgICAgICB0aGlzLkYgPSBGO1xuICAgICAgICB0aGlzLkcgPSBHO1xuICAgICAgICB0aGlzLm9wTXVsR0YgPSBvcE11bEdGO1xuXG4gICAgICAgIGxldCByZW0gPSBGLnNxcnRfdCB8fCBGLnQ7XG4gICAgICAgIGxldCBzID0gRi5zcXJ0X3MgfHwgRi5zO1xuXG4gICAgICAgIGxldCBucXIgPSBGLm9uZTtcbiAgICAgICAgd2hpbGUgKEYuZXEoRi5wb3cobnFyLCBGLmhhbGYpLCBGLm9uZSkpIG5xciA9IEYuYWRkKG5xciwgRi5vbmUpO1xuXG4gICAgICAgIHRoaXMudyA9IG5ldyBBcnJheShzKzEpO1xuICAgICAgICB0aGlzLndpID0gbmV3IEFycmF5KHMrMSk7XG4gICAgICAgIHRoaXMud1tzXSA9IHRoaXMuRi5wb3cobnFyLCByZW0pO1xuICAgICAgICB0aGlzLndpW3NdID0gdGhpcy5GLmludih0aGlzLndbc10pO1xuXG4gICAgICAgIGxldCBuPXMtMTtcbiAgICAgICAgd2hpbGUgKG4+PTApIHtcbiAgICAgICAgICAgIHRoaXMud1tuXSA9IHRoaXMuRi5zcXVhcmUodGhpcy53W24rMV0pO1xuICAgICAgICAgICAgdGhpcy53aVtuXSA9IHRoaXMuRi5zcXVhcmUodGhpcy53aVtuKzFdKTtcbiAgICAgICAgICAgIG4tLTtcbiAgICAgICAgfVxuXG5cbiAgICAgICAgdGhpcy5yb290cyA9IFtdO1xuICAgICAgICAvKlxuICAgICAgICBmb3IgKGxldCBpPTA7IGk8MTY7IGkrKykge1xuICAgICAgICAgICAgbGV0IHIgPSB0aGlzLkYub25lO1xuICAgICAgICAgICAgbiA9IDEgPDwgaTtcbiAgICAgICAgICAgIGNvbnN0IHJvb3RzaSA9IG5ldyBBcnJheShuKTtcbiAgICAgICAgICAgIGZvciAobGV0IGo9MDsgajxuOyBqKyspIHtcbiAgICAgICAgICAgICAgICByb290c2lbal0gPSByO1xuICAgICAgICAgICAgICAgIHIgPSB0aGlzLkYubXVsKHIsIHRoaXMud1tpXSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMucm9vdHMucHVzaChyb290c2kpO1xuICAgICAgICB9XG4gICAgICAgICovXG4gICAgICAgIHRoaXMuX3NldFJvb3RzKE1hdGgubWluKHMsIDE1KSk7XG4gICAgfVxuXG4gICAgX3NldFJvb3RzKG4pIHtcbiAgICAgICAgZm9yIChsZXQgaT1uOyAoaT49MCkgJiYgKCF0aGlzLnJvb3RzW2ldKTsgaS0tKSB7XG4gICAgICAgICAgICBsZXQgciA9IHRoaXMuRi5vbmU7XG4gICAgICAgICAgICBjb25zdCBucm9vdHMgPSAxIDw8IGk7XG4gICAgICAgICAgICBjb25zdCByb290c2kgPSBuZXcgQXJyYXkobnJvb3RzKTtcbiAgICAgICAgICAgIGZvciAobGV0IGo9MDsgajxucm9vdHM7IGorKykge1xuICAgICAgICAgICAgICAgIHJvb3RzaVtqXSA9IHI7XG4gICAgICAgICAgICAgICAgciA9IHRoaXMuRi5tdWwociwgdGhpcy53W2ldKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5yb290c1tpXSA9IHJvb3RzaTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZmdChwKSB7XG4gICAgICAgIGlmIChwLmxlbmd0aCA8PSAxKSByZXR1cm4gcDtcbiAgICAgICAgY29uc3QgYml0cyA9IGxvZzIkMShwLmxlbmd0aC0xKSsxO1xuICAgICAgICB0aGlzLl9zZXRSb290cyhiaXRzKTtcblxuICAgICAgICBjb25zdCBtID0gMSA8PCBiaXRzO1xuICAgICAgICBpZiAocC5sZW5ndGggIT0gbSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiU2l6ZSBtdXN0IGJlIG11bHRpcGxlIG9mIDJcIik7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcmVzID0gX19mZnQodGhpcywgcCwgYml0cywgMCwgMSk7XG4gICAgICAgIHJldHVybiByZXM7XG4gICAgfVxuXG4gICAgaWZmdChwKSB7XG5cbiAgICAgICAgaWYgKHAubGVuZ3RoIDw9IDEpIHJldHVybiBwO1xuICAgICAgICBjb25zdCBiaXRzID0gbG9nMiQxKHAubGVuZ3RoLTEpKzE7XG4gICAgICAgIHRoaXMuX3NldFJvb3RzKGJpdHMpO1xuICAgICAgICBjb25zdCBtID0gMSA8PCBiaXRzO1xuICAgICAgICBpZiAocC5sZW5ndGggIT0gbSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiU2l6ZSBtdXN0IGJlIG11bHRpcGxlIG9mIDJcIik7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcmVzID0gIF9fZmZ0KHRoaXMsIHAsIGJpdHMsIDAsIDEpO1xuICAgICAgICBjb25zdCB0d29pbnZtID0gdGhpcy5GLmludiggdGhpcy5GLm11bFNjYWxhcih0aGlzLkYub25lLCBtKSApO1xuICAgICAgICBjb25zdCByZXNuID0gbmV3IEFycmF5KG0pO1xuICAgICAgICBmb3IgKGxldCBpPTA7IGk8bTsgaSsrKSB7XG4gICAgICAgICAgICByZXNuW2ldID0gdGhpcy5vcE11bEdGKHJlc1sobS1pKSVtXSwgdHdvaW52bSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcmVzbjtcbiAgICB9XG5cblxufVxuXG5mdW5jdGlvbiBsb2cyJDEoIFYgKVxue1xuICAgIHJldHVybiggKCAoIFYgJiAweEZGRkYwMDAwICkgIT09IDAgPyAoIFYgJj0gMHhGRkZGMDAwMCwgMTYgKSA6IDAgKSB8ICggKCBWICYgMHhGRjAwRkYwMCApICE9PSAwID8gKCBWICY9IDB4RkYwMEZGMDAsIDggKSA6IDAgKSB8ICggKCBWICYgMHhGMEYwRjBGMCApICE9PSAwID8gKCBWICY9IDB4RjBGMEYwRjAsIDQgKSA6IDAgKSB8ICggKCBWICYgMHhDQ0NDQ0NDQyApICE9PSAwID8gKCBWICY9IDB4Q0NDQ0NDQ0MsIDIgKSA6IDAgKSB8ICggKCBWICYgMHhBQUFBQUFBQSApICE9PSAwICkgKTtcbn1cblxuXG5mdW5jdGlvbiBfX2ZmdChQRiwgcGFsbCwgYml0cywgb2Zmc2V0LCBzdGVwKSB7XG5cbiAgICBjb25zdCBuID0gMSA8PCBiaXRzO1xuICAgIGlmIChuPT0xKSB7XG4gICAgICAgIHJldHVybiBbIHBhbGxbb2Zmc2V0XSBdO1xuICAgIH0gZWxzZSBpZiAobj09Mikge1xuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgUEYuRy5hZGQocGFsbFtvZmZzZXRdLCBwYWxsW29mZnNldCArIHN0ZXBdKSxcbiAgICAgICAgICAgIFBGLkcuc3ViKHBhbGxbb2Zmc2V0XSwgcGFsbFtvZmZzZXQgKyBzdGVwXSldO1xuICAgIH1cblxuICAgIGNvbnN0IG5kaXYyID0gbiA+PiAxO1xuICAgIGNvbnN0IHAxID0gX19mZnQoUEYsIHBhbGwsIGJpdHMtMSwgb2Zmc2V0LCBzdGVwKjIpO1xuICAgIGNvbnN0IHAyID0gX19mZnQoUEYsIHBhbGwsIGJpdHMtMSwgb2Zmc2V0K3N0ZXAsIHN0ZXAqMik7XG5cbiAgICBjb25zdCBvdXQgPSBuZXcgQXJyYXkobik7XG5cbiAgICBmb3IgKGxldCBpPTA7IGk8bmRpdjI7IGkrKykge1xuICAgICAgICBvdXRbaV0gPSBQRi5HLmFkZChwMVtpXSwgUEYub3BNdWxHRihwMltpXSwgUEYucm9vdHNbYml0c11baV0pKTtcbiAgICAgICAgb3V0W2krbmRpdjJdID0gUEYuRy5zdWIocDFbaV0sIFBGLm9wTXVsR0YocDJbaV0sIFBGLnJvb3RzW2JpdHNdW2ldKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG91dDtcbn1cblxuLyogZ2xvYmFsIEJpZ0ludCAqL1xuXG5jbGFzcyBacUZpZWxkIHtcbiAgICBjb25zdHJ1Y3RvcihwKSB7XG4gICAgICAgIHRoaXMudHlwZT1cIkYxXCI7XG4gICAgICAgIHRoaXMub25lID0gQmlnSW50KDEpO1xuICAgICAgICB0aGlzLnplcm8gPSBCaWdJbnQoMCk7XG4gICAgICAgIHRoaXMucCA9IEJpZ0ludChwKTtcbiAgICAgICAgdGhpcy5tID0gMTtcbiAgICAgICAgdGhpcy5uZWdvbmUgPSB0aGlzLnAtdGhpcy5vbmU7XG4gICAgICAgIHRoaXMudHdvID0gQmlnSW50KDIpO1xuICAgICAgICB0aGlzLmhhbGYgPSB0aGlzLnAgPj4gdGhpcy5vbmU7XG4gICAgICAgIHRoaXMuYml0TGVuZ3RoID0gYml0TGVuZ3RoJDYodGhpcy5wKTtcbiAgICAgICAgdGhpcy5tYXNrID0gKHRoaXMub25lIDw8IEJpZ0ludCh0aGlzLmJpdExlbmd0aCkpIC0gdGhpcy5vbmU7XG5cbiAgICAgICAgdGhpcy5uNjQgPSBNYXRoLmZsb29yKCh0aGlzLmJpdExlbmd0aCAtIDEpIC8gNjQpKzE7XG4gICAgICAgIHRoaXMubjMyID0gdGhpcy5uNjQqMjtcbiAgICAgICAgdGhpcy5uOCA9IHRoaXMubjY0Kjg7XG4gICAgICAgIHRoaXMuUiA9IHRoaXMuZSh0aGlzLm9uZSA8PCBCaWdJbnQodGhpcy5uNjQqNjQpKTtcbiAgICAgICAgdGhpcy5SaSA9IHRoaXMuaW52KHRoaXMuUik7XG5cbiAgICAgICAgY29uc3QgZSA9IHRoaXMubmVnb25lID4+IHRoaXMub25lO1xuICAgICAgICB0aGlzLm5xciA9IHRoaXMudHdvO1xuICAgICAgICBsZXQgciA9IHRoaXMucG93KHRoaXMubnFyLCBlKTtcbiAgICAgICAgd2hpbGUgKCF0aGlzLmVxKHIsIHRoaXMubmVnb25lKSkge1xuICAgICAgICAgICAgdGhpcy5ucXIgPSB0aGlzLm5xciArIHRoaXMub25lO1xuICAgICAgICAgICAgciA9IHRoaXMucG93KHRoaXMubnFyLCBlKTtcbiAgICAgICAgfVxuXG5cbiAgICAgICAgdGhpcy5zID0gMDtcbiAgICAgICAgdGhpcy50ID0gdGhpcy5uZWdvbmU7XG5cbiAgICAgICAgd2hpbGUgKCh0aGlzLnQgJiB0aGlzLm9uZSkgPT0gdGhpcy56ZXJvKSB7XG4gICAgICAgICAgICB0aGlzLnMgPSB0aGlzLnMgKyAxO1xuICAgICAgICAgICAgdGhpcy50ID0gdGhpcy50ID4+IHRoaXMub25lO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5ucXJfdG9fdCA9IHRoaXMucG93KHRoaXMubnFyLCB0aGlzLnQpO1xuXG4gICAgICAgIGJ1aWxkU3FydCh0aGlzKTtcblxuICAgICAgICB0aGlzLkZGVCA9IG5ldyBGRlQodGhpcywgdGhpcywgdGhpcy5tdWwuYmluZCh0aGlzKSk7XG5cbiAgICAgICAgdGhpcy5mZnQgPSB0aGlzLkZGVC5mZnQuYmluZCh0aGlzLkZGVCk7XG4gICAgICAgIHRoaXMuaWZmdCA9IHRoaXMuRkZULmlmZnQuYmluZCh0aGlzLkZGVCk7XG4gICAgICAgIHRoaXMudyA9IHRoaXMuRkZULnc7XG4gICAgICAgIHRoaXMud2kgPSB0aGlzLkZGVC53aTsgXG4gICAgXG4gICAgICAgIHRoaXMuc2hpZnQgPSB0aGlzLnNxdWFyZSh0aGlzLm5xcik7XG4gICAgICAgIHRoaXMuayA9IHRoaXMuZXhwKHRoaXMubnFyLCAyKip0aGlzLnMpO1xuICAgIH1cblxuICAgIGUoYSxiKSB7XG4gICAgICAgIGxldCByZXM7XG4gICAgICAgIGlmICghYikge1xuICAgICAgICAgICAgcmVzID0gQmlnSW50KGEpO1xuICAgICAgICB9IGVsc2UgaWYgKGI9PTE2KSB7XG4gICAgICAgICAgICByZXMgPSBCaWdJbnQoXCIweFwiK2EpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChyZXMgPCAwKSB7XG4gICAgICAgICAgICBsZXQgbnJlcyA9IC1yZXM7XG4gICAgICAgICAgICBpZiAobnJlcyA+PSB0aGlzLnApIG5yZXMgPSBucmVzICUgdGhpcy5wO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMucCAtIG5yZXM7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gKHJlcz49IHRoaXMucCkgPyByZXMldGhpcy5wIDogcmVzO1xuICAgICAgICB9XG5cbiAgICB9XG5cbiAgICBhZGQoYSwgYikge1xuICAgICAgICBjb25zdCByZXMgPSBhICsgYjtcbiAgICAgICAgcmV0dXJuIHJlcyA+PSB0aGlzLnAgPyByZXMtdGhpcy5wIDogcmVzO1xuICAgIH1cblxuICAgIHN1YihhLCBiKSB7XG4gICAgICAgIHJldHVybiAoYSA+PSBiKSA/IGEtYiA6IHRoaXMucC1iK2E7XG4gICAgfVxuXG4gICAgbmVnKGEpIHtcbiAgICAgICAgcmV0dXJuIGEgPyB0aGlzLnAtYSA6IGE7XG4gICAgfVxuXG4gICAgbXVsKGEsIGIpIHtcbiAgICAgICAgcmV0dXJuIChhKmIpJXRoaXMucDtcbiAgICB9XG5cbiAgICBtdWxTY2FsYXIoYmFzZSwgcykge1xuICAgICAgICByZXR1cm4gKGJhc2UgKiB0aGlzLmUocykpICUgdGhpcy5wO1xuICAgIH1cblxuICAgIHNxdWFyZShhKSB7XG4gICAgICAgIHJldHVybiAoYSphKSAlIHRoaXMucDtcbiAgICB9XG5cbiAgICBlcShhLCBiKSB7XG4gICAgICAgIHJldHVybiBhPT1iO1xuICAgIH1cblxuICAgIG5lcShhLCBiKSB7XG4gICAgICAgIHJldHVybiBhIT1iO1xuICAgIH1cblxuICAgIGx0KGEsIGIpIHtcbiAgICAgICAgY29uc3QgYWEgPSAoYSA+IHRoaXMuaGFsZikgPyBhIC0gdGhpcy5wIDogYTtcbiAgICAgICAgY29uc3QgYmIgPSAoYiA+IHRoaXMuaGFsZikgPyBiIC0gdGhpcy5wIDogYjtcbiAgICAgICAgcmV0dXJuIGFhIDwgYmI7XG4gICAgfVxuXG4gICAgZ3QoYSwgYikge1xuICAgICAgICBjb25zdCBhYSA9IChhID4gdGhpcy5oYWxmKSA/IGEgLSB0aGlzLnAgOiBhO1xuICAgICAgICBjb25zdCBiYiA9IChiID4gdGhpcy5oYWxmKSA/IGIgLSB0aGlzLnAgOiBiO1xuICAgICAgICByZXR1cm4gYWEgPiBiYjtcbiAgICB9XG5cbiAgICBsZXEoYSwgYikge1xuICAgICAgICBjb25zdCBhYSA9IChhID4gdGhpcy5oYWxmKSA/IGEgLSB0aGlzLnAgOiBhO1xuICAgICAgICBjb25zdCBiYiA9IChiID4gdGhpcy5oYWxmKSA/IGIgLSB0aGlzLnAgOiBiO1xuICAgICAgICByZXR1cm4gYWEgPD0gYmI7XG4gICAgfVxuXG4gICAgZ2VxKGEsIGIpIHtcbiAgICAgICAgY29uc3QgYWEgPSAoYSA+IHRoaXMuaGFsZikgPyBhIC0gdGhpcy5wIDogYTtcbiAgICAgICAgY29uc3QgYmIgPSAoYiA+IHRoaXMuaGFsZikgPyBiIC0gdGhpcy5wIDogYjtcbiAgICAgICAgcmV0dXJuIGFhID49IGJiO1xuICAgIH1cblxuICAgIGRpdihhLCBiKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm11bChhLCB0aGlzLmludihiKSk7XG4gICAgfVxuXG4gICAgaWRpdihhLCBiKSB7XG4gICAgICAgIGlmICghYikgdGhyb3cgbmV3IEVycm9yKFwiRGl2aXNpb24gYnkgemVyb1wiKTtcbiAgICAgICAgcmV0dXJuIGEgLyBiO1xuICAgIH1cblxuICAgIGludihhKSB7XG4gICAgICAgIGlmICghYSkgdGhyb3cgbmV3IEVycm9yKFwiRGl2aXNpb24gYnkgemVyb1wiKTtcblxuICAgICAgICBsZXQgdCA9IHRoaXMuemVybztcbiAgICAgICAgbGV0IHIgPSB0aGlzLnA7XG4gICAgICAgIGxldCBuZXd0ID0gdGhpcy5vbmU7XG4gICAgICAgIGxldCBuZXdyID0gYSAlIHRoaXMucDtcbiAgICAgICAgd2hpbGUgKG5ld3IpIHtcbiAgICAgICAgICAgIGxldCBxID0gci9uZXdyO1xuICAgICAgICAgICAgW3QsIG5ld3RdID0gW25ld3QsIHQtcSpuZXd0XTtcbiAgICAgICAgICAgIFtyLCBuZXdyXSA9IFtuZXdyLCByLXEqbmV3cl07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHQ8dGhpcy56ZXJvKSB0ICs9IHRoaXMucDtcbiAgICAgICAgcmV0dXJuIHQ7XG4gICAgfVxuXG4gICAgbW9kKGEsIGIpIHtcbiAgICAgICAgcmV0dXJuIGEgJSBiO1xuICAgIH1cblxuICAgIHBvdyhiLCBlKSB7XG4gICAgICAgIHJldHVybiBleHAodGhpcywgYiwgZSk7XG4gICAgfVxuXG4gICAgZXhwKGIsIGUpIHtcbiAgICAgICAgcmV0dXJuIGV4cCh0aGlzLCBiLCBlKTtcbiAgICB9XG5cbiAgICBiYW5kKGEsIGIpIHtcbiAgICAgICAgY29uc3QgcmVzID0gICgoYSAmIGIpICYgdGhpcy5tYXNrKTtcbiAgICAgICAgcmV0dXJuIHJlcyA+PSB0aGlzLnAgPyByZXMtdGhpcy5wIDogcmVzO1xuICAgIH1cblxuICAgIGJvcihhLCBiKSB7XG4gICAgICAgIGNvbnN0IHJlcyA9ICAoKGEgfCBiKSAmIHRoaXMubWFzayk7XG4gICAgICAgIHJldHVybiByZXMgPj0gdGhpcy5wID8gcmVzLXRoaXMucCA6IHJlcztcbiAgICB9XG5cbiAgICBieG9yKGEsIGIpIHtcbiAgICAgICAgY29uc3QgcmVzID0gICgoYSBeIGIpICYgdGhpcy5tYXNrKTtcbiAgICAgICAgcmV0dXJuIHJlcyA+PSB0aGlzLnAgPyByZXMtdGhpcy5wIDogcmVzO1xuICAgIH1cblxuICAgIGJub3QoYSkge1xuICAgICAgICBjb25zdCByZXMgPSBhIF4gdGhpcy5tYXNrO1xuICAgICAgICByZXR1cm4gcmVzID49IHRoaXMucCA/IHJlcy10aGlzLnAgOiByZXM7XG4gICAgfVxuXG4gICAgc2hsKGEsIGIpIHtcbiAgICAgICAgaWYgKE51bWJlcihiKSA8IHRoaXMuYml0TGVuZ3RoKSB7XG4gICAgICAgICAgICBjb25zdCByZXMgPSAoYSA8PCBiKSAmIHRoaXMubWFzaztcbiAgICAgICAgICAgIHJldHVybiByZXMgPj0gdGhpcy5wID8gcmVzLXRoaXMucCA6IHJlcztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IG5iID0gdGhpcy5wIC0gYjtcbiAgICAgICAgICAgIGlmIChOdW1iZXIobmIpIDwgdGhpcy5iaXRMZW5ndGgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gYSA+PiBuYjtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuemVybztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHNocihhLCBiKSB7XG4gICAgICAgIGlmIChOdW1iZXIoYikgPCB0aGlzLmJpdExlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuIGEgPj4gYjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IG5iID0gdGhpcy5wIC0gYjtcbiAgICAgICAgICAgIGlmIChOdW1iZXIobmIpIDwgdGhpcy5iaXRMZW5ndGgpIHtcbiAgICAgICAgICAgICAgICBjb25zdCByZXMgPSAoYSA8PCBuYikgJiB0aGlzLm1hc2s7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlcyA+PSB0aGlzLnAgPyByZXMtdGhpcy5wIDogcmVzO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIGxhbmQoYSwgYikge1xuICAgICAgICByZXR1cm4gKGEgJiYgYikgPyB0aGlzLm9uZSA6IHRoaXMuemVybztcbiAgICB9XG5cbiAgICBsb3IoYSwgYikge1xuICAgICAgICByZXR1cm4gKGEgfHwgYikgPyB0aGlzLm9uZSA6IHRoaXMuemVybztcbiAgICB9XG5cbiAgICBsbm90KGEpIHtcbiAgICAgICAgcmV0dXJuIChhKSA/IHRoaXMuemVybyA6IHRoaXMub25lO1xuICAgIH1cblxuICAgIHNxcnRfb2xkKG4pIHtcblxuICAgICAgICBpZiAobiA9PSB0aGlzLnplcm8pIHJldHVybiB0aGlzLnplcm87XG5cbiAgICAgICAgLy8gVGVzdCB0aGF0IGhhdmUgc29sdXRpb25cbiAgICAgICAgY29uc3QgcmVzID0gdGhpcy5wb3cobiwgdGhpcy5uZWdvbmUgPj4gdGhpcy5vbmUpO1xuICAgICAgICBpZiAoIHJlcyAhPSB0aGlzLm9uZSApIHJldHVybiBudWxsO1xuXG4gICAgICAgIGxldCBtID0gdGhpcy5zO1xuICAgICAgICBsZXQgYyA9IHRoaXMubnFyX3RvX3Q7XG4gICAgICAgIGxldCB0ID0gdGhpcy5wb3cobiwgdGhpcy50KTtcbiAgICAgICAgbGV0IHIgPSB0aGlzLnBvdyhuLCB0aGlzLmFkZCh0aGlzLnQsIHRoaXMub25lKSA+PiB0aGlzLm9uZSApO1xuXG4gICAgICAgIHdoaWxlICggdCAhPSB0aGlzLm9uZSApIHtcbiAgICAgICAgICAgIGxldCBzcSA9IHRoaXMuc3F1YXJlKHQpO1xuICAgICAgICAgICAgbGV0IGkgPSAxO1xuICAgICAgICAgICAgd2hpbGUgKHNxICE9IHRoaXMub25lICkge1xuICAgICAgICAgICAgICAgIGkrKztcbiAgICAgICAgICAgICAgICBzcSA9IHRoaXMuc3F1YXJlKHNxKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gYiA9IGMgXiBtLWktMVxuICAgICAgICAgICAgbGV0IGIgPSBjO1xuICAgICAgICAgICAgZm9yIChsZXQgaj0wOyBqPCBtLWktMTsgaiArKykgYiA9IHRoaXMuc3F1YXJlKGIpO1xuXG4gICAgICAgICAgICBtID0gaTtcbiAgICAgICAgICAgIGMgPSB0aGlzLnNxdWFyZShiKTtcbiAgICAgICAgICAgIHQgPSB0aGlzLm11bCh0LCBjKTtcbiAgICAgICAgICAgIHIgPSB0aGlzLm11bChyLCBiKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChyID4gKHRoaXMucCA+PiB0aGlzLm9uZSkpIHtcbiAgICAgICAgICAgIHIgPSB0aGlzLm5lZyhyKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiByO1xuICAgIH1cblxuICAgIG5vcm1hbGl6ZShhLCBiKSB7XG4gICAgICAgIGEgPSBCaWdJbnQoYSxiKTtcbiAgICAgICAgaWYgKGEgPCAwKSB7XG4gICAgICAgICAgICBsZXQgbmEgPSAtYTtcbiAgICAgICAgICAgIGlmIChuYSA+PSB0aGlzLnApIG5hID0gbmEgJSB0aGlzLnA7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5wIC0gbmE7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gKGE+PSB0aGlzLnApID8gYSV0aGlzLnAgOiBhO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmFuZG9tKCkge1xuICAgICAgICBjb25zdCBuQnl0ZXMgPSAodGhpcy5iaXRMZW5ndGgqMiAvIDgpO1xuICAgICAgICBsZXQgcmVzID10aGlzLnplcm87XG4gICAgICAgIGZvciAobGV0IGk9MDsgaTxuQnl0ZXM7IGkrKykge1xuICAgICAgICAgICAgcmVzID0gKHJlcyA8PCBCaWdJbnQoOCkpICsgQmlnSW50KGdldFJhbmRvbUJ5dGVzKDEpWzBdKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzICUgdGhpcy5wO1xuICAgIH1cblxuICAgIHRvU3RyaW5nKGEsIGJhc2UpIHtcbiAgICAgICAgYmFzZSA9IGJhc2UgfHwgMTA7XG4gICAgICAgIGxldCB2cztcbiAgICAgICAgaWYgKChhID4gdGhpcy5oYWxmKSYmKGJhc2UgPT0gMTApKSB7XG4gICAgICAgICAgICBjb25zdCB2ID0gdGhpcy5wLWE7XG4gICAgICAgICAgICB2cyA9IFwiLVwiK3YudG9TdHJpbmcoYmFzZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB2cyA9IGEudG9TdHJpbmcoYmFzZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHZzO1xuICAgIH1cblxuICAgIGlzWmVybyhhKSB7XG4gICAgICAgIHJldHVybiBhID09IHRoaXMuemVybztcbiAgICB9XG5cbiAgICBmcm9tUm5nKHJuZykge1xuICAgICAgICBsZXQgdjtcbiAgICAgICAgZG8ge1xuICAgICAgICAgICAgdj10aGlzLnplcm87XG4gICAgICAgICAgICBmb3IgKGxldCBpPTA7IGk8dGhpcy5uNjQ7IGkrKykge1xuICAgICAgICAgICAgICAgIHYgKz0gcm5nLm5leHRVNjQoKSA8PCBCaWdJbnQoNjQgKmkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdiAmPSB0aGlzLm1hc2s7XG4gICAgICAgIH0gd2hpbGUgKHYgPj0gdGhpcy5wKTtcbiAgICAgICAgdiA9ICh2ICogdGhpcy5SaSkgJSB0aGlzLnA7ICAgLy8gQ29udmVydCBmcm9tIG1vbnRnb21lcnlcbiAgICAgICAgcmV0dXJuIHY7XG4gICAgfVxuXG4gICAgZmZ0KGEpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuRkZULmZmdChhKTtcbiAgICB9XG5cbiAgICBpZmZ0KGEpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuRkZULmlmZnQoYSk7XG4gICAgfVxuXG4gICAgLy8gUmV0dXJucyBhIGJ1ZmZlciB3aXRoIExpdHRsZSBFbmRpYW4gUmVwcmVzZW50YXRpb25cbiAgICB0b1JwckxFKGJ1ZmYsIG8sIGUpIHtcbiAgICAgICAgdG9ScHJMRShidWZmLCBvLCBlLCB0aGlzLm42NCo4KTtcbiAgICB9XG5cbiAgICAvLyBSZXR1cm5zIGEgYnVmZmVyIHdpdGggQmlnIEVuZGlhbiBSZXByZXNlbnRhdGlvblxuICAgIHRvUnByQkUoYnVmZiwgbywgZSkge1xuICAgICAgICB0b1JwckJFKGJ1ZmYsIG8sIGUsIHRoaXMubjY0KjgpO1xuICAgIH1cblxuICAgIC8vIFJldHVybnMgYSBidWZmZXIgd2l0aCBCaWcgRW5kaWFuIE1vbnRnb21lcnkgUmVwcmVzZW50YXRpb25cbiAgICB0b1JwckJFTShidWZmLCBvLCBlKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnRvUnByQkUoYnVmZiwgbywgdGhpcy5tdWwodGhpcy5SLCBlKSk7XG4gICAgfVxuXG4gICAgdG9ScHJMRU0oYnVmZiwgbywgZSkge1xuICAgICAgICByZXR1cm4gdGhpcy50b1JwckxFKGJ1ZmYsIG8sIHRoaXMubXVsKHRoaXMuUiwgZSkpO1xuICAgIH1cblxuXG4gICAgLy8gUGFzZXMgYSBidWZmZXIgd2l0aCBMaXR0bGUgRW5kaWFuIFJlcHJlc2VudGF0aW9uXG4gICAgZnJvbVJwckxFKGJ1ZmYsIG8pIHtcbiAgICAgICAgcmV0dXJuIGZyb21ScHJMRShidWZmLCBvLCB0aGlzLm44KTtcbiAgICB9XG5cbiAgICAvLyBQYXNlcyBhIGJ1ZmZlciB3aXRoIEJpZyBFbmRpYW4gUmVwcmVzZW50YXRpb25cbiAgICBmcm9tUnByQkUoYnVmZiwgbykge1xuICAgICAgICByZXR1cm4gZnJvbVJwckJFKGJ1ZmYsIG8sIHRoaXMubjgpO1xuICAgIH1cblxuICAgIGZyb21ScHJMRU0oYnVmZiwgbykge1xuICAgICAgICByZXR1cm4gdGhpcy5tdWwodGhpcy5mcm9tUnByTEUoYnVmZiwgbyksIHRoaXMuUmkpO1xuICAgIH1cblxuICAgIGZyb21ScHJCRU0oYnVmZiwgbykge1xuICAgICAgICByZXR1cm4gdGhpcy5tdWwodGhpcy5mcm9tUnByQkUoYnVmZiwgbyksIHRoaXMuUmkpO1xuICAgIH1cblxuICAgIHRvT2JqZWN0KGEpIHtcbiAgICAgICAgcmV0dXJuIGE7XG4gICAgfVxufVxuXG4vKlxuICAgIENvcHlyaWdodCAyMDE4IDBraW1zIGFzc29jaWF0aW9uLlxuXG4gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2Ygc25hcmtqcy5cblxuICAgIHNuYXJranMgaXMgYSBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3JcbiAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlXG4gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pXG4gICAgYW55IGxhdGVyIHZlcnNpb24uXG5cbiAgICBzbmFya2pzIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZXG4gICAgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yXG4gICAgbW9yZSBkZXRhaWxzLlxuXG4gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcgd2l0aFxuICAgIHNuYXJranMuIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXG4qL1xuXG5cbmNsYXNzIEYyRmllbGQge1xuICAgIGNvbnN0cnVjdG9yKEYsIG5vblJlc2lkdWUpIHtcbiAgICAgICAgdGhpcy50eXBlPVwiRjJcIjtcbiAgICAgICAgdGhpcy5GID0gRjtcbiAgICAgICAgdGhpcy56ZXJvID0gW3RoaXMuRi56ZXJvLCB0aGlzLkYuemVyb107XG4gICAgICAgIHRoaXMub25lID0gW3RoaXMuRi5vbmUsIHRoaXMuRi56ZXJvXTtcbiAgICAgICAgdGhpcy5uZWdvbmUgPSB0aGlzLm5lZyh0aGlzLm9uZSk7XG4gICAgICAgIHRoaXMubm9uUmVzaWR1ZSA9IG5vblJlc2lkdWU7XG4gICAgICAgIHRoaXMubSA9IEYubSoyO1xuICAgICAgICB0aGlzLnAgPSBGLnA7XG4gICAgICAgIHRoaXMubjY0ID0gRi5uNjQqMjtcbiAgICAgICAgdGhpcy5uMzIgPSB0aGlzLm42NCoyO1xuICAgICAgICB0aGlzLm44ID0gdGhpcy5uNjQqODtcblxuICAgICAgICBidWlsZFNxcnQodGhpcyk7XG4gICAgfVxuXG4gICAgX211bEJ5Tm9uUmVzaWR1ZShhKSB7XG4gICAgICAgIHJldHVybiB0aGlzLkYubXVsKHRoaXMubm9uUmVzaWR1ZSwgYSk7XG4gICAgfVxuXG4gICAgY29weShhKSB7XG4gICAgICAgIHJldHVybiBbdGhpcy5GLmNvcHkoYVswXSksIHRoaXMuRi5jb3B5KGFbMV0pXTtcbiAgICB9XG5cbiAgICBhZGQoYSwgYikge1xuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgdGhpcy5GLmFkZChhWzBdLCBiWzBdKSxcbiAgICAgICAgICAgIHRoaXMuRi5hZGQoYVsxXSwgYlsxXSlcbiAgICAgICAgXTtcbiAgICB9XG5cbiAgICBkb3VibGUoYSkge1xuICAgICAgICByZXR1cm4gdGhpcy5hZGQoYSxhKTtcbiAgICB9XG5cbiAgICBzdWIoYSwgYikge1xuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgdGhpcy5GLnN1YihhWzBdLCBiWzBdKSxcbiAgICAgICAgICAgIHRoaXMuRi5zdWIoYVsxXSwgYlsxXSlcbiAgICAgICAgXTtcbiAgICB9XG5cbiAgICBuZWcoYSkge1xuICAgICAgICByZXR1cm4gdGhpcy5zdWIodGhpcy56ZXJvLCBhKTtcbiAgICB9XG5cbiAgICBjb25qdWdhdGUoYSkge1xuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgYVswXSxcbiAgICAgICAgICAgIHRoaXMuRi5uZWcoYVsxXSlcbiAgICAgICAgXTtcbiAgICB9XG5cbiAgICBtdWwoYSwgYikge1xuICAgICAgICBjb25zdCBhQSA9IHRoaXMuRi5tdWwoYVswXSAsIGJbMF0pO1xuICAgICAgICBjb25zdCBiQiA9IHRoaXMuRi5tdWwoYVsxXSAsIGJbMV0pO1xuXG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICB0aGlzLkYuYWRkKCBhQSAsIHRoaXMuX211bEJ5Tm9uUmVzaWR1ZShiQikpLFxuICAgICAgICAgICAgdGhpcy5GLnN1YihcbiAgICAgICAgICAgICAgICB0aGlzLkYubXVsKFxuICAgICAgICAgICAgICAgICAgICB0aGlzLkYuYWRkKGFbMF0sIGFbMV0pLFxuICAgICAgICAgICAgICAgICAgICB0aGlzLkYuYWRkKGJbMF0sIGJbMV0pKSxcbiAgICAgICAgICAgICAgICB0aGlzLkYuYWRkKGFBLCBiQikpXTtcbiAgICB9XG5cbiAgICBpbnYoYSkge1xuICAgICAgICBjb25zdCB0MCA9IHRoaXMuRi5zcXVhcmUoYVswXSk7XG4gICAgICAgIGNvbnN0IHQxID0gdGhpcy5GLnNxdWFyZShhWzFdKTtcbiAgICAgICAgY29uc3QgdDIgPSB0aGlzLkYuc3ViKHQwLCB0aGlzLl9tdWxCeU5vblJlc2lkdWUodDEpKTtcbiAgICAgICAgY29uc3QgdDMgPSB0aGlzLkYuaW52KHQyKTtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIHRoaXMuRi5tdWwoYVswXSwgdDMpLFxuICAgICAgICAgICAgdGhpcy5GLm5lZyh0aGlzLkYubXVsKCBhWzFdLCB0MykpIF07XG4gICAgfVxuXG4gICAgZGl2KGEsIGIpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubXVsKGEsIHRoaXMuaW52KGIpKTtcbiAgICB9XG5cbiAgICBzcXVhcmUoYSkge1xuICAgICAgICBjb25zdCBhYiA9IHRoaXMuRi5tdWwoYVswXSAsIGFbMV0pO1xuXG4gICAgICAgIC8qXG4gICAgICAgIFtcbiAgICAgICAgICAgIChhICsgYikgKiAoYSArIG5vbl9yZXNpZHVlICogYikgLSBhYiAtIG5vbl9yZXNpZHVlICogYWIsXG4gICAgICAgICAgICBhYiArIGFiXG4gICAgICAgIF07XG4gICAgICAgICovXG5cbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIHRoaXMuRi5zdWIoXG4gICAgICAgICAgICAgICAgdGhpcy5GLm11bChcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5GLmFkZChhWzBdLCBhWzFdKSAsXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuRi5hZGQoXG4gICAgICAgICAgICAgICAgICAgICAgICBhWzBdICxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX211bEJ5Tm9uUmVzaWR1ZShhWzFdKSkpLFxuICAgICAgICAgICAgICAgIHRoaXMuRi5hZGQoXG4gICAgICAgICAgICAgICAgICAgIGFiLFxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9tdWxCeU5vblJlc2lkdWUoYWIpKSksXG4gICAgICAgICAgICB0aGlzLkYuYWRkKGFiLCBhYilcbiAgICAgICAgXTtcbiAgICB9XG5cbiAgICBpc1plcm8oYSkge1xuICAgICAgICByZXR1cm4gdGhpcy5GLmlzWmVybyhhWzBdKSAmJiB0aGlzLkYuaXNaZXJvKGFbMV0pO1xuICAgIH1cblxuICAgIGVxKGEsIGIpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuRi5lcShhWzBdLCBiWzBdKSAmJiB0aGlzLkYuZXEoYVsxXSwgYlsxXSk7XG4gICAgfVxuXG4gICAgbXVsU2NhbGFyKGJhc2UsIGUpIHtcbiAgICAgICAgcmV0dXJuIG11bFNjYWxhcih0aGlzLCBiYXNlLCBlKTtcbiAgICB9XG5cbiAgICBwb3coYmFzZSwgZSkge1xuICAgICAgICByZXR1cm4gZXhwKHRoaXMsIGJhc2UsIGUpO1xuICAgIH1cblxuICAgIGV4cChiYXNlLCBlKSB7XG4gICAgICAgIHJldHVybiBleHAodGhpcywgYmFzZSwgZSk7XG4gICAgfVxuXG4gICAgdG9TdHJpbmcoYSkge1xuICAgICAgICByZXR1cm4gYFsgJHt0aGlzLkYudG9TdHJpbmcoYVswXSl9ICwgJHt0aGlzLkYudG9TdHJpbmcoYVsxXSl9IF1gO1xuICAgIH1cblxuICAgIGZyb21Sbmcocm5nKSB7XG4gICAgICAgIGNvbnN0IGMwID0gdGhpcy5GLmZyb21Sbmcocm5nKTtcbiAgICAgICAgY29uc3QgYzEgPSB0aGlzLkYuZnJvbVJuZyhybmcpO1xuICAgICAgICByZXR1cm4gW2MwLCBjMV07XG4gICAgfVxuXG4gICAgZ3QoYSwgYikge1xuICAgICAgICBpZiAodGhpcy5GLmd0KGFbMF0sIGJbMF0pKSByZXR1cm4gdHJ1ZTtcbiAgICAgICAgaWYgKHRoaXMuRi5ndChiWzBdLCBhWzBdKSkgcmV0dXJuIGZhbHNlO1xuICAgICAgICBpZiAodGhpcy5GLmd0KGFbMV0sIGJbMV0pKSByZXR1cm4gdHJ1ZTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGdlcShhLCBiKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmd0KGEsIGIpIHx8IHRoaXMuZXEoYSwgYik7XG4gICAgfVxuXG4gICAgbHQoYSwgYikge1xuICAgICAgICByZXR1cm4gIXRoaXMuZ2VxKGEsYik7XG4gICAgfVxuXG4gICAgbGVxKGEsIGIpIHtcbiAgICAgICAgcmV0dXJuICF0aGlzLmd0KGEsYik7XG4gICAgfVxuXG4gICAgbmVxKGEsIGIpIHtcbiAgICAgICAgcmV0dXJuICF0aGlzLmVxKGEsYik7XG4gICAgfVxuXG4gICAgcmFuZG9tKCkge1xuICAgICAgICByZXR1cm4gW3RoaXMuRi5yYW5kb20oKSwgdGhpcy5GLnJhbmRvbSgpXTtcbiAgICB9XG5cblxuICAgIHRvUnByTEUoYnVmZiwgbywgZSkge1xuICAgICAgICB0aGlzLkYudG9ScHJMRShidWZmLCBvLCBlWzBdKTtcbiAgICAgICAgdGhpcy5GLnRvUnByTEUoYnVmZiwgbyt0aGlzLkYubjgsIGVbMV0pO1xuICAgIH1cblxuICAgIHRvUnByQkUoYnVmZiwgbywgZSkge1xuICAgICAgICB0aGlzLkYudG9ScHJCRShidWZmLCBvLCBlWzFdKTtcbiAgICAgICAgdGhpcy5GLnRvUnByQkUoYnVmZiwgbyt0aGlzLkYubjgsIGVbMF0pO1xuICAgIH1cblxuICAgIHRvUnByTEVNKGJ1ZmYsIG8sIGUpIHtcbiAgICAgICAgdGhpcy5GLnRvUnByTEVNKGJ1ZmYsIG8sIGVbMF0pO1xuICAgICAgICB0aGlzLkYudG9ScHJMRU0oYnVmZiwgbyt0aGlzLkYubjgsIGVbMV0pO1xuICAgIH1cblxuXG4gICAgdG9ScHJCRU0oYnVmZiwgbywgZSkge1xuICAgICAgICB0aGlzLkYudG9ScHJCRU0oYnVmZiwgbywgZVsxXSk7XG4gICAgICAgIHRoaXMuRi50b1JwckJFTShidWZmLCBvK3RoaXMuRi5uOCwgZVswXSk7XG4gICAgfVxuXG4gICAgZnJvbVJwckxFKGJ1ZmYsIG8pIHtcbiAgICAgICAgbyA9IG8gfHwgMDtcbiAgICAgICAgY29uc3QgYzAgPSB0aGlzLkYuZnJvbVJwckxFKGJ1ZmYsIG8pO1xuICAgICAgICBjb25zdCBjMSA9IHRoaXMuRi5mcm9tUnByTEUoYnVmZiwgbyt0aGlzLkYubjgpO1xuICAgICAgICByZXR1cm4gW2MwLCBjMV07XG4gICAgfVxuXG4gICAgZnJvbVJwckJFKGJ1ZmYsIG8pIHtcbiAgICAgICAgbyA9IG8gfHwgMDtcbiAgICAgICAgY29uc3QgYzEgPSB0aGlzLkYuZnJvbVJwckJFKGJ1ZmYsIG8pO1xuICAgICAgICBjb25zdCBjMCA9IHRoaXMuRi5mcm9tUnByQkUoYnVmZiwgbyt0aGlzLkYubjgpO1xuICAgICAgICByZXR1cm4gW2MwLCBjMV07XG4gICAgfVxuXG4gICAgZnJvbVJwckxFTShidWZmLCBvKSB7XG4gICAgICAgIG8gPSBvIHx8IDA7XG4gICAgICAgIGNvbnN0IGMwID0gdGhpcy5GLmZyb21ScHJMRU0oYnVmZiwgbyk7XG4gICAgICAgIGNvbnN0IGMxID0gdGhpcy5GLmZyb21ScHJMRU0oYnVmZiwgbyt0aGlzLkYubjgpO1xuICAgICAgICByZXR1cm4gW2MwLCBjMV07XG4gICAgfVxuXG4gICAgZnJvbVJwckJFTShidWZmLCBvKSB7XG4gICAgICAgIG8gPSBvIHx8IDA7XG4gICAgICAgIGNvbnN0IGMxID0gdGhpcy5GLmZyb21ScHJCRU0oYnVmZiwgbyk7XG4gICAgICAgIGNvbnN0IGMwID0gdGhpcy5GLmZyb21ScHJCRU0oYnVmZiwgbyt0aGlzLkYubjgpO1xuICAgICAgICByZXR1cm4gW2MwLCBjMV07XG4gICAgfVxuXG4gICAgdG9PYmplY3QoYSkge1xuICAgICAgICByZXR1cm4gYTtcbiAgICB9XG5cbn1cblxuLypcbiAgICBDb3B5cmlnaHQgMjAxOCAwa2ltcyBhc3NvY2lhdGlvbi5cblxuICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHNuYXJranMuXG5cbiAgICBzbmFya2pzIGlzIGEgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yXG4gICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZVxuICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKVxuICAgIGFueSBsYXRlciB2ZXJzaW9uLlxuXG4gICAgc25hcmtqcyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWVxuICAgIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvclxuICAgIG1vcmUgZGV0YWlscy5cblxuICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nIHdpdGhcbiAgICBzbmFya2pzLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuKi9cblxuXG5jbGFzcyBGM0ZpZWxkIHtcbiAgICBjb25zdHJ1Y3RvcihGLCBub25SZXNpZHVlKSB7XG4gICAgICAgIHRoaXMudHlwZT1cIkYzXCI7XG4gICAgICAgIHRoaXMuRiA9IEY7XG4gICAgICAgIHRoaXMuemVybyA9IFt0aGlzLkYuemVybywgdGhpcy5GLnplcm8sIHRoaXMuRi56ZXJvXTtcbiAgICAgICAgdGhpcy5vbmUgPSBbdGhpcy5GLm9uZSwgdGhpcy5GLnplcm8sIHRoaXMuRi56ZXJvXTtcbiAgICAgICAgdGhpcy5uZWdvbmUgPSB0aGlzLm5lZyh0aGlzLm9uZSk7XG4gICAgICAgIHRoaXMubm9uUmVzaWR1ZSA9IG5vblJlc2lkdWU7XG4gICAgICAgIHRoaXMubSA9IEYubSozO1xuICAgICAgICB0aGlzLnAgPSBGLnA7XG4gICAgICAgIHRoaXMubjY0ID0gRi5uNjQqMztcbiAgICAgICAgdGhpcy5uMzIgPSB0aGlzLm42NCoyO1xuICAgICAgICB0aGlzLm44ID0gdGhpcy5uNjQqODtcbiAgICB9XG5cbiAgICBfbXVsQnlOb25SZXNpZHVlKGEpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuRi5tdWwodGhpcy5ub25SZXNpZHVlLCBhKTtcbiAgICB9XG5cbiAgICBjb3B5KGEpIHtcbiAgICAgICAgcmV0dXJuIFt0aGlzLkYuY29weShhWzBdKSwgdGhpcy5GLmNvcHkoYVsxXSksIHRoaXMuRi5jb3B5KGFbMl0pXTtcbiAgICB9XG5cbiAgICBhZGQoYSwgYikge1xuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgdGhpcy5GLmFkZChhWzBdLCBiWzBdKSxcbiAgICAgICAgICAgIHRoaXMuRi5hZGQoYVsxXSwgYlsxXSksXG4gICAgICAgICAgICB0aGlzLkYuYWRkKGFbMl0sIGJbMl0pXG4gICAgICAgIF07XG4gICAgfVxuXG4gICAgZG91YmxlKGEpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYWRkKGEsYSk7XG4gICAgfVxuXG4gICAgc3ViKGEsIGIpIHtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIHRoaXMuRi5zdWIoYVswXSwgYlswXSksXG4gICAgICAgICAgICB0aGlzLkYuc3ViKGFbMV0sIGJbMV0pLFxuICAgICAgICAgICAgdGhpcy5GLnN1YihhWzJdLCBiWzJdKVxuICAgICAgICBdO1xuICAgIH1cblxuICAgIG5lZyhhKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnN1Yih0aGlzLnplcm8sIGEpO1xuICAgIH1cblxuICAgIG11bChhLCBiKSB7XG5cbiAgICAgICAgY29uc3QgYUEgPSB0aGlzLkYubXVsKGFbMF0gLCBiWzBdKTtcbiAgICAgICAgY29uc3QgYkIgPSB0aGlzLkYubXVsKGFbMV0gLCBiWzFdKTtcbiAgICAgICAgY29uc3QgY0MgPSB0aGlzLkYubXVsKGFbMl0gLCBiWzJdKTtcblxuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgdGhpcy5GLmFkZChcbiAgICAgICAgICAgICAgICBhQSxcbiAgICAgICAgICAgICAgICB0aGlzLl9tdWxCeU5vblJlc2lkdWUoXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuRi5zdWIoXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLkYubXVsKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuRi5hZGQoYVsxXSwgYVsyXSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5GLmFkZChiWzFdLCBiWzJdKSksXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLkYuYWRkKGJCLCBjQykpKSksICAgIC8vIGFBICsgbm9uX3Jlc2lkdWUqKChiK2MpKihCK0MpLWJCLWNDKSxcblxuICAgICAgICAgICAgdGhpcy5GLmFkZChcbiAgICAgICAgICAgICAgICB0aGlzLkYuc3ViKFxuICAgICAgICAgICAgICAgICAgICB0aGlzLkYubXVsKFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5GLmFkZChhWzBdLCBhWzFdKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuRi5hZGQoYlswXSwgYlsxXSkpLFxuICAgICAgICAgICAgICAgICAgICB0aGlzLkYuYWRkKGFBLCBiQikpLFxuICAgICAgICAgICAgICAgIHRoaXMuX211bEJ5Tm9uUmVzaWR1ZSggY0MpKSwgICAvLyAoYStiKSooQStCKS1hQS1iQitub25fcmVzaWR1ZSpjQ1xuXG4gICAgICAgICAgICB0aGlzLkYuYWRkKFxuICAgICAgICAgICAgICAgIHRoaXMuRi5zdWIoXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuRi5tdWwoXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLkYuYWRkKGFbMF0sIGFbMl0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5GLmFkZChiWzBdLCBiWzJdKSksXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuRi5hZGQoYUEsIGNDKSksXG4gICAgICAgICAgICAgICAgYkIpXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAoYStjKSooQStDKS1hQStiQi1jQylcbiAgICB9XG5cbiAgICBpbnYoYSkge1xuICAgICAgICBjb25zdCB0MCA9IHRoaXMuRi5zcXVhcmUoYVswXSk7ICAgICAgICAgICAgIC8vIHQwID0gYV4yIDtcbiAgICAgICAgY29uc3QgdDEgPSB0aGlzLkYuc3F1YXJlKGFbMV0pOyAgICAgICAgICAgICAvLyB0MSA9IGJeMiA7XG4gICAgICAgIGNvbnN0IHQyID0gdGhpcy5GLnNxdWFyZShhWzJdKTsgICAgICAgICAgICAgLy8gdDIgPSBjXjI7XG4gICAgICAgIGNvbnN0IHQzID0gdGhpcy5GLm11bChhWzBdLGFbMV0pOyAgICAgICAgICAgLy8gdDMgPSBhYlxuICAgICAgICBjb25zdCB0NCA9IHRoaXMuRi5tdWwoYVswXSxhWzJdKTsgICAgICAgICAgIC8vIHQ0ID0gYWNcbiAgICAgICAgY29uc3QgdDUgPSB0aGlzLkYubXVsKGFbMV0sYVsyXSk7ICAgICAgICAgICAvLyB0NSA9IGJjO1xuICAgICAgICAvLyBjMCA9IHQwIC0gbm9uX3Jlc2lkdWUgKiB0NTtcbiAgICAgICAgY29uc3QgYzAgPSB0aGlzLkYuc3ViKHQwLCB0aGlzLl9tdWxCeU5vblJlc2lkdWUodDUpKTtcbiAgICAgICAgLy8gYzEgPSBub25fcmVzaWR1ZSAqIHQyIC0gdDM7XG4gICAgICAgIGNvbnN0IGMxID0gdGhpcy5GLnN1Yih0aGlzLl9tdWxCeU5vblJlc2lkdWUodDIpLCB0Myk7XG4gICAgICAgIGNvbnN0IGMyID0gdGhpcy5GLnN1Yih0MSwgdDQpOyAgICAgICAgICAgICAgLy8gYzIgPSB0MS10NFxuXG4gICAgICAgIC8vIHQ2ID0gKGEgKiBjMCArIG5vbl9yZXNpZHVlICogKGMgKiBjMSArIGIgKiBjMikpLmludigpO1xuICAgICAgICBjb25zdCB0NiA9XG4gICAgICAgICAgICB0aGlzLkYuaW52KFxuICAgICAgICAgICAgICAgIHRoaXMuRi5hZGQoXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuRi5tdWwoYVswXSwgYzApLFxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9tdWxCeU5vblJlc2lkdWUoXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLkYuYWRkKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuRi5tdWwoYVsyXSwgYzEpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuRi5tdWwoYVsxXSwgYzIpKSkpKTtcblxuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgdGhpcy5GLm11bCh0NiwgYzApLCAgICAgICAgIC8vIHQ2KmMwXG4gICAgICAgICAgICB0aGlzLkYubXVsKHQ2LCBjMSksICAgICAgICAgLy8gdDYqYzFcbiAgICAgICAgICAgIHRoaXMuRi5tdWwodDYsIGMyKV07ICAgICAgICAvLyB0NipjMlxuICAgIH1cblxuICAgIGRpdihhLCBiKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm11bChhLCB0aGlzLmludihiKSk7XG4gICAgfVxuXG4gICAgc3F1YXJlKGEpIHtcbiAgICAgICAgY29uc3QgczAgPSB0aGlzLkYuc3F1YXJlKGFbMF0pOyAgICAgICAgICAgICAgICAgICAvLyBzMCA9IGFeMlxuICAgICAgICBjb25zdCBhYiA9IHRoaXMuRi5tdWwoYVswXSwgYVsxXSk7ICAgICAgICAgICAgICAgIC8vIGFiID0gYSpiXG4gICAgICAgIGNvbnN0IHMxID0gdGhpcy5GLmFkZChhYiwgYWIpOyAgICAgICAgICAgICAgICAgICAgLy8gczEgPSAyYWI7XG4gICAgICAgIGNvbnN0IHMyID0gdGhpcy5GLnNxdWFyZShcbiAgICAgICAgICAgIHRoaXMuRi5hZGQodGhpcy5GLnN1YihhWzBdLGFbMV0pLCBhWzJdKSk7ICAgICAvLyBzMiA9IChhIC0gYiArIGMpXjI7XG4gICAgICAgIGNvbnN0IGJjID0gdGhpcy5GLm11bChhWzFdLGFbMl0pOyAgICAgICAgICAgICAgICAgLy8gYmMgPSBiKmNcbiAgICAgICAgY29uc3QgczMgPSB0aGlzLkYuYWRkKGJjLCBiYyk7ICAgICAgICAgICAgICAgICAgICAvLyBzMyA9IDIqYmNcbiAgICAgICAgY29uc3QgczQgPSB0aGlzLkYuc3F1YXJlKGFbMl0pOyAgICAgICAgICAgICAgICAgICAvLyBzNCA9IGNeMlxuXG5cbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIHRoaXMuRi5hZGQoXG4gICAgICAgICAgICAgICAgczAsXG4gICAgICAgICAgICAgICAgdGhpcy5fbXVsQnlOb25SZXNpZHVlKHMzKSksICAgICAgICAgICAvLyBzMCArIG5vbl9yZXNpZHVlICogczMsXG4gICAgICAgICAgICB0aGlzLkYuYWRkKFxuICAgICAgICAgICAgICAgIHMxLFxuICAgICAgICAgICAgICAgIHRoaXMuX211bEJ5Tm9uUmVzaWR1ZShzNCkpLCAgICAgICAgICAgLy8gczEgKyBub25fcmVzaWR1ZSAqIHM0LFxuICAgICAgICAgICAgdGhpcy5GLnN1YihcbiAgICAgICAgICAgICAgICB0aGlzLkYuYWRkKCB0aGlzLkYuYWRkKHMxLCBzMikgLCBzMyApLFxuICAgICAgICAgICAgICAgIHRoaXMuRi5hZGQoczAsIHM0KSldOyAgICAgICAgICAgICAgICAgICAgICAvLyBzMSArIHMyICsgczMgLSBzMCAtIHM0XG4gICAgfVxuXG4gICAgaXNaZXJvKGEpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuRi5pc1plcm8oYVswXSkgJiYgdGhpcy5GLmlzWmVybyhhWzFdKSAmJiB0aGlzLkYuaXNaZXJvKGFbMl0pO1xuICAgIH1cblxuICAgIGVxKGEsIGIpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuRi5lcShhWzBdLCBiWzBdKSAmJiB0aGlzLkYuZXEoYVsxXSwgYlsxXSkgJiYgdGhpcy5GLmVxKGFbMl0sIGJbMl0pO1xuICAgIH1cblxuICAgIGFmZmluZShhKSB7XG4gICAgICAgIHJldHVybiBbdGhpcy5GLmFmZmluZShhWzBdKSwgdGhpcy5GLmFmZmluZShhWzFdKSwgdGhpcy5GLmFmZmluZShhWzJdKV07XG4gICAgfVxuXG4gICAgbXVsU2NhbGFyKGJhc2UsIGUpIHtcbiAgICAgICAgcmV0dXJuIG11bFNjYWxhcih0aGlzLCBiYXNlLCBlKTtcbiAgICB9XG5cbiAgICBwb3coYmFzZSwgZSkge1xuICAgICAgICByZXR1cm4gZXhwKHRoaXMsIGJhc2UsIGUpO1xuICAgIH1cblxuICAgIGV4cChiYXNlLCBlKSB7XG4gICAgICAgIHJldHVybiBleHAodGhpcywgYmFzZSwgZSk7XG4gICAgfVxuXG4gICAgdG9TdHJpbmcoYSkge1xuICAgICAgICByZXR1cm4gYFsgJHt0aGlzLkYudG9TdHJpbmcoYVswXSl9ICwgJHt0aGlzLkYudG9TdHJpbmcoYVsxXSl9LCAke3RoaXMuRi50b1N0cmluZyhhWzJdKX0gXWA7XG4gICAgfVxuXG4gICAgZnJvbVJuZyhybmcpIHtcbiAgICAgICAgY29uc3QgYzAgPSB0aGlzLkYuZnJvbVJuZyhybmcpO1xuICAgICAgICBjb25zdCBjMSA9IHRoaXMuRi5mcm9tUm5nKHJuZyk7XG4gICAgICAgIGNvbnN0IGMyID0gdGhpcy5GLmZyb21Sbmcocm5nKTtcbiAgICAgICAgcmV0dXJuIFtjMCwgYzEsIGMyXTtcbiAgICB9XG5cbiAgICBndChhLCBiKSB7XG4gICAgICAgIGlmICh0aGlzLkYuZ3QoYVswXSwgYlswXSkpIHJldHVybiB0cnVlO1xuICAgICAgICBpZiAodGhpcy5GLmd0KGJbMF0sIGFbMF0pKSByZXR1cm4gZmFsc2U7XG4gICAgICAgIGlmICh0aGlzLkYuZ3QoYVsxXSwgYlsxXSkpIHJldHVybiB0cnVlO1xuICAgICAgICBpZiAodGhpcy5GLmd0KGJbMV0sIGFbMV0pKSByZXR1cm4gZmFsc2U7XG4gICAgICAgIGlmICh0aGlzLkYuZ3QoYVsyXSwgYlsyXSkpIHJldHVybiB0cnVlO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG5cbiAgICBnZXEoYSwgYikge1xuICAgICAgICByZXR1cm4gdGhpcy5ndChhLCBiKSB8fCB0aGlzLmVxKGEsIGIpO1xuICAgIH1cblxuICAgIGx0KGEsIGIpIHtcbiAgICAgICAgcmV0dXJuICF0aGlzLmdlcShhLGIpO1xuICAgIH1cblxuICAgIGxlcShhLCBiKSB7XG4gICAgICAgIHJldHVybiAhdGhpcy5ndChhLGIpO1xuICAgIH1cblxuICAgIG5lcShhLCBiKSB7XG4gICAgICAgIHJldHVybiAhdGhpcy5lcShhLGIpO1xuICAgIH1cblxuICAgIHJhbmRvbSgpIHtcbiAgICAgICAgcmV0dXJuIFt0aGlzLkYucmFuZG9tKCksIHRoaXMuRi5yYW5kb20oKSwgdGhpcy5GLnJhbmRvbSgpXTtcbiAgICB9XG5cblxuICAgIHRvUnByTEUoYnVmZiwgbywgZSkge1xuICAgICAgICB0aGlzLkYudG9ScHJMRShidWZmLCBvLCBlWzBdKTtcbiAgICAgICAgdGhpcy5GLnRvUnByTEUoYnVmZiwgbyt0aGlzLkYubjgsIGVbMV0pO1xuICAgICAgICB0aGlzLkYudG9ScHJMRShidWZmLCBvK3RoaXMuRi5uOCoyLCBlWzJdKTtcbiAgICB9XG5cbiAgICB0b1JwckJFKGJ1ZmYsIG8sIGUpIHtcbiAgICAgICAgdGhpcy5GLnRvUnByQkUoYnVmZiwgbywgZVsyXSk7XG4gICAgICAgIHRoaXMuRi50b1JwckJFKGJ1ZmYsIG8rdGhpcy5GLm44LCBlWzFdKTtcbiAgICAgICAgdGhpcy5GLnRvUnByQkUoYnVmZiwgbyt0aGlzLkYubjgqMiwgZVswXSk7XG4gICAgfVxuXG4gICAgdG9ScHJMRU0oYnVmZiwgbywgZSkge1xuICAgICAgICB0aGlzLkYudG9ScHJMRU0oYnVmZiwgbywgZVswXSk7XG4gICAgICAgIHRoaXMuRi50b1JwckxFTShidWZmLCBvK3RoaXMuRi5uOCwgZVsxXSk7XG4gICAgICAgIHRoaXMuRi50b1JwckxFTShidWZmLCBvK3RoaXMuRi5uOCoyLCBlWzJdKTtcbiAgICB9XG5cblxuICAgIHRvUnByQkVNKGJ1ZmYsIG8sIGUpIHtcbiAgICAgICAgdGhpcy5GLnRvUnByQkVNKGJ1ZmYsIG8sIGVbMl0pO1xuICAgICAgICB0aGlzLkYudG9ScHJCRU0oYnVmZiwgbyt0aGlzLkYubjgsIGVbMV0pO1xuICAgICAgICB0aGlzLkYudG9ScHJCRU0oYnVmZiwgbyt0aGlzLkYubjgqMiwgZVswXSk7XG4gICAgfVxuXG4gICAgZnJvbVJwckxFKGJ1ZmYsIG8pIHtcbiAgICAgICAgbyA9IG8gfHwgMDtcbiAgICAgICAgY29uc3QgYzAgPSB0aGlzLkYuZnJvbVJwckxFKGJ1ZmYsIG8pO1xuICAgICAgICBjb25zdCBjMSA9IHRoaXMuRi5mcm9tUnByTEUoYnVmZiwgbyt0aGlzLm44KTtcbiAgICAgICAgY29uc3QgYzIgPSB0aGlzLkYuZnJvbVJwckxFKGJ1ZmYsIG8rdGhpcy5uOCoyKTtcbiAgICAgICAgcmV0dXJuIFtjMCwgYzEsIGMyXTtcbiAgICB9XG5cbiAgICBmcm9tUnByQkUoYnVmZiwgbykge1xuICAgICAgICBvID0gbyB8fCAwO1xuICAgICAgICBjb25zdCBjMiA9IHRoaXMuRi5mcm9tUnByQkUoYnVmZiwgbyk7XG4gICAgICAgIGNvbnN0IGMxID0gdGhpcy5GLmZyb21ScHJCRShidWZmLCBvK3RoaXMubjgpO1xuICAgICAgICBjb25zdCBjMCA9IHRoaXMuRi5mcm9tUnByQkUoYnVmZiwgbyt0aGlzLm44KjIpO1xuICAgICAgICByZXR1cm4gW2MwLCBjMSwgYzJdO1xuICAgIH1cblxuICAgIGZyb21ScHJMRU0oYnVmZiwgbykge1xuICAgICAgICBvID0gbyB8fCAwO1xuICAgICAgICBjb25zdCBjMCA9IHRoaXMuRi5mcm9tUnByTEVNKGJ1ZmYsIG8pO1xuICAgICAgICBjb25zdCBjMSA9IHRoaXMuRi5mcm9tUnByTEVNKGJ1ZmYsIG8rdGhpcy5uOCk7XG4gICAgICAgIGNvbnN0IGMyID0gdGhpcy5GLmZyb21ScHJMRU0oYnVmZiwgbyt0aGlzLm44KjIpO1xuICAgICAgICByZXR1cm4gW2MwLCBjMSwgYzJdO1xuICAgIH1cblxuICAgIGZyb21ScHJCRU0oYnVmZiwgbykge1xuICAgICAgICBvID0gbyB8fCAwO1xuICAgICAgICBjb25zdCBjMiA9IHRoaXMuRi5mcm9tUnByQkVNKGJ1ZmYsIG8pO1xuICAgICAgICBjb25zdCBjMSA9IHRoaXMuRi5mcm9tUnByQkVNKGJ1ZmYsIG8rdGhpcy5uOCk7XG4gICAgICAgIGNvbnN0IGMwID0gdGhpcy5GLmZyb21ScHJCRU0oYnVmZiwgbyt0aGlzLm44KjIpO1xuICAgICAgICByZXR1cm4gW2MwLCBjMSwgYzJdO1xuICAgIH1cblxuICAgIHRvT2JqZWN0KGEpIHtcbiAgICAgICAgcmV0dXJuIGE7XG4gICAgfVxufVxuXG4vKlxuICAgIENvcHlyaWdodCAyMDE4IDBraW1zIGFzc29jaWF0aW9uLlxuXG4gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2Ygc25hcmtqcy5cblxuICAgIHNuYXJranMgaXMgYSBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3JcbiAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlXG4gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pXG4gICAgYW55IGxhdGVyIHZlcnNpb24uXG5cbiAgICBzbmFya2pzIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZXG4gICAgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yXG4gICAgbW9yZSBkZXRhaWxzLlxuXG4gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcgd2l0aFxuICAgIHNuYXJranMuIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXG4qL1xuXG5cblxuZnVuY3Rpb24gaXNHcmVhdGVzdChGLCBhKSB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoYSkpIHtcbiAgICAgICAgZm9yIChsZXQgaT1hLmxlbmd0aC0xOyBpPj0wOyBpLS0pIHtcbiAgICAgICAgICAgIGlmICghRi5GLmlzWmVybyhhW2ldKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBpc0dyZWF0ZXN0KEYuRiwgYVtpXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIDA7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgbmEgPSBGLm5lZyhhKTtcbiAgICAgICAgcmV0dXJuIGd0KGEsIG5hKTtcbiAgICB9XG59XG5cblxuY2xhc3MgRUMge1xuXG4gICAgY29uc3RydWN0b3IoRiwgZykge1xuICAgICAgICB0aGlzLkYgPSBGO1xuICAgICAgICB0aGlzLmcgPSBnO1xuICAgICAgICBpZiAodGhpcy5nLmxlbmd0aCA9PSAyKSB0aGlzLmdbMl0gPSB0aGlzLkYub25lO1xuICAgICAgICB0aGlzLnplcm8gPSBbdGhpcy5GLnplcm8sIHRoaXMuRi5vbmUsIHRoaXMuRi56ZXJvXTtcbiAgICB9XG5cbiAgICBhZGQocDEsIHAyKSB7XG5cbiAgICAgICAgY29uc3QgRiA9IHRoaXMuRjtcblxuICAgICAgICBpZiAodGhpcy5lcShwMSwgdGhpcy56ZXJvKSkgcmV0dXJuIHAyO1xuICAgICAgICBpZiAodGhpcy5lcShwMiwgdGhpcy56ZXJvKSkgcmV0dXJuIHAxO1xuXG4gICAgICAgIGNvbnN0IHJlcyA9IG5ldyBBcnJheSgzKTtcblxuICAgICAgICBjb25zdCBaMVoxID0gRi5zcXVhcmUoIHAxWzJdICk7XG4gICAgICAgIGNvbnN0IFoyWjIgPSBGLnNxdWFyZSggcDJbMl0gKTtcblxuICAgICAgICBjb25zdCBVMSA9IEYubXVsKCBwMVswXSAsIFoyWjIgKTsgICAgIC8vIFUxID0gWDEgICogWjJaMlxuICAgICAgICBjb25zdCBVMiA9IEYubXVsKCBwMlswXSAsIFoxWjEgKTsgICAgIC8vIFUyID0gWDIgICogWjFaMVxuXG4gICAgICAgIGNvbnN0IFoxX2N1YmVkID0gRi5tdWwoIHAxWzJdICwgWjFaMSk7XG4gICAgICAgIGNvbnN0IFoyX2N1YmVkID0gRi5tdWwoIHAyWzJdICwgWjJaMik7XG5cbiAgICAgICAgY29uc3QgUzEgPSBGLm11bCggcDFbMV0gLCBaMl9jdWJlZCk7ICAvLyBTMSA9IFkxICogWjIgKiBaMloyXG4gICAgICAgIGNvbnN0IFMyID0gRi5tdWwoIHAyWzFdICwgWjFfY3ViZWQpOyAgLy8gUzIgPSBZMiAqIFoxICogWjFaMVxuXG4gICAgICAgIGlmIChGLmVxKFUxLFUyKSAmJiBGLmVxKFMxLFMyKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZG91YmxlKHAxKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IEggPSBGLnN1YiggVTIgLCBVMSApOyAgICAgICAgICAgICAgICAgICAgLy8gSCA9IFUyLVUxXG5cbiAgICAgICAgY29uc3QgUzJfbWludXNfUzEgPSBGLnN1YiggUzIgLCBTMSApO1xuXG4gICAgICAgIGNvbnN0IEkgPSBGLnNxdWFyZSggRi5hZGQoSCxIKSApOyAgICAgICAgIC8vIEkgPSAoMiAqIEgpXjJcbiAgICAgICAgY29uc3QgSiA9IEYubXVsKCBIICwgSSApOyAgICAgICAgICAgICAgICAgICAgICAvLyBKID0gSCAqIElcblxuICAgICAgICBjb25zdCByID0gRi5hZGQoIFMyX21pbnVzX1MxICwgUzJfbWludXNfUzEgKTsgIC8vIHIgPSAyICogKFMyLVMxKVxuICAgICAgICBjb25zdCBWID0gRi5tdWwoIFUxICwgSSApOyAgICAgICAgICAgICAgICAgICAgIC8vIFYgPSBVMSAqIElcblxuICAgICAgICByZXNbMF0gPVxuICAgICAgICAgICAgRi5zdWIoXG4gICAgICAgICAgICAgICAgRi5zdWIoIEYuc3F1YXJlKHIpICwgSiApLFxuICAgICAgICAgICAgICAgIEYuYWRkKCBWICwgViApKTsgICAgICAgICAgICAgICAgICAgICAgIC8vIFgzID0gcl4yIC0gSiAtIDIgKiBWXG5cbiAgICAgICAgY29uc3QgUzFfSiA9IEYubXVsKCBTMSAsIEogKTtcblxuICAgICAgICByZXNbMV0gPVxuICAgICAgICAgICAgRi5zdWIoXG4gICAgICAgICAgICAgICAgRi5tdWwoIHIgLCBGLnN1YihWLHJlc1swXSkpLFxuICAgICAgICAgICAgICAgIEYuYWRkKCBTMV9KLFMxX0ogKSk7ICAgICAgICAgICAgICAgICAgIC8vIFkzID0gciAqIChWLVgzKS0yIFMxIEpcblxuICAgICAgICByZXNbMl0gPVxuICAgICAgICAgICAgRi5tdWwoXG4gICAgICAgICAgICAgICAgSCxcbiAgICAgICAgICAgICAgICBGLnN1YihcbiAgICAgICAgICAgICAgICAgICAgRi5zcXVhcmUoIEYuYWRkKHAxWzJdLHAyWzJdKSApLFxuICAgICAgICAgICAgICAgICAgICBGLmFkZCggWjFaMSAsIFoyWjIgKSkpOyAgICAgICAgICAgIC8vIFozID0gKChaMStaMileMi1aMVoxLVoyWjIpICogSFxuXG4gICAgICAgIHJldHVybiByZXM7XG4gICAgfVxuXG4gICAgbmVnKHApIHtcbiAgICAgICAgcmV0dXJuIFtwWzBdLCB0aGlzLkYubmVnKHBbMV0pLCBwWzJdXTtcbiAgICB9XG5cbiAgICBzdWIoYSwgYikge1xuICAgICAgICByZXR1cm4gdGhpcy5hZGQoYSwgdGhpcy5uZWcoYikpO1xuICAgIH1cblxuICAgIGRvdWJsZShwKSB7XG4gICAgICAgIGNvbnN0IEYgPSB0aGlzLkY7XG5cbiAgICAgICAgY29uc3QgcmVzID0gbmV3IEFycmF5KDMpO1xuXG4gICAgICAgIGlmICh0aGlzLmVxKHAsIHRoaXMuemVybykpIHJldHVybiBwO1xuXG4gICAgICAgIGNvbnN0IEEgPSBGLnNxdWFyZSggcFswXSApOyAgICAgICAgICAgICAgICAgICAgLy8gQSA9IFgxXjJcbiAgICAgICAgY29uc3QgQiA9IEYuc3F1YXJlKCBwWzFdICk7ICAgICAgICAgICAgICAgICAgICAvLyBCID0gWTFeMlxuICAgICAgICBjb25zdCBDID0gRi5zcXVhcmUoIEIgKTsgICAgICAgICAgICAgICAgICAgICAgIC8vIEMgPSBCXjJcblxuICAgICAgICBsZXQgRCA9XG4gICAgICAgICAgICBGLnN1YihcbiAgICAgICAgICAgICAgICBGLnNxdWFyZSggRi5hZGQocFswXSAsIEIgKSksXG4gICAgICAgICAgICAgICAgRi5hZGQoIEEgLCBDKSk7XG4gICAgICAgIEQgPSBGLmFkZChELEQpOyAgICAgICAgICAgICAgICAgICAgLy8gRCA9IDIgKiAoKFgxICsgQileMiAtIEEgLSBDKVxuXG4gICAgICAgIGNvbnN0IEUgPSBGLmFkZCggRi5hZGQoQSxBKSwgQSk7ICAgICAgICAgIC8vIEUgPSAzICogQVxuICAgICAgICBjb25zdCBGRiA9Ri5zcXVhcmUoIEUgKTsgICAgICAgICAgICAgICAgICAgICAgIC8vIEYgPSBFXjJcblxuICAgICAgICByZXNbMF0gPSBGLnN1YiggRkYgLCBGLmFkZChELEQpICk7ICAgICAgICAgLy8gWDMgPSBGIC0gMiBEXG5cbiAgICAgICAgbGV0IGVpZ2h0QyA9IEYuYWRkKCBDICwgQyApO1xuICAgICAgICBlaWdodEMgPSBGLmFkZCggZWlnaHRDICwgZWlnaHRDICk7XG4gICAgICAgIGVpZ2h0QyA9IEYuYWRkKCBlaWdodEMgLCBlaWdodEMgKTtcblxuICAgICAgICByZXNbMV0gPVxuICAgICAgICAgICAgRi5zdWIoXG4gICAgICAgICAgICAgICAgRi5tdWwoXG4gICAgICAgICAgICAgICAgICAgIEUsXG4gICAgICAgICAgICAgICAgICAgIEYuc3ViKCBELCByZXNbMF0gKSksXG4gICAgICAgICAgICAgICAgZWlnaHRDKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBZMyA9IEUgKiAoRCAtIFgzKSAtIDggKiBDXG5cbiAgICAgICAgY29uc3QgWTFaMSA9IEYubXVsKCBwWzFdICwgcFsyXSApO1xuICAgICAgICByZXNbMl0gPSBGLmFkZCggWTFaMSAsIFkxWjEgKTsgICAgICAgICAgICAgICAgIC8vIFozID0gMiAqIFkxICogWjFcblxuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH1cblxuICAgIHRpbWVzU2NhbGFyKGJhc2UsIGUpIHtcbiAgICAgICAgcmV0dXJuIG11bFNjYWxhcih0aGlzLCBiYXNlLCBlKTtcbiAgICB9XG5cbiAgICBtdWxTY2FsYXIoYmFzZSwgZSkge1xuICAgICAgICByZXR1cm4gbXVsU2NhbGFyKHRoaXMsIGJhc2UsIGUpO1xuICAgIH1cblxuICAgIGFmZmluZShwKSB7XG4gICAgICAgIGNvbnN0IEYgPSB0aGlzLkY7XG4gICAgICAgIGlmICh0aGlzLmlzWmVybyhwKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuemVybztcbiAgICAgICAgfSBlbHNlIGlmIChGLmVxKHBbMl0sIEYub25lKSkge1xuICAgICAgICAgICAgcmV0dXJuIHA7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBaX2ludiA9IEYuaW52KHBbMl0pO1xuICAgICAgICAgICAgY29uc3QgWjJfaW52ID0gRi5zcXVhcmUoWl9pbnYpO1xuICAgICAgICAgICAgY29uc3QgWjNfaW52ID0gRi5tdWwoWjJfaW52LCBaX2ludik7XG5cbiAgICAgICAgICAgIGNvbnN0IHJlcyA9IG5ldyBBcnJheSgzKTtcbiAgICAgICAgICAgIHJlc1swXSA9IEYubXVsKHBbMF0sWjJfaW52KTtcbiAgICAgICAgICAgIHJlc1sxXSA9IEYubXVsKHBbMV0sWjNfaW52KTtcbiAgICAgICAgICAgIHJlc1syXSA9IEYub25lO1xuXG4gICAgICAgICAgICByZXR1cm4gcmVzO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbXVsdGlBZmZpbmUoYXJyKSB7XG4gICAgICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhhcnIpO1xuICAgICAgICBjb25zdCBGID0gdGhpcy5GO1xuICAgICAgICBjb25zdCBhY2NNdWwgPSBuZXcgQXJyYXkoa2V5cy5sZW5ndGgrMSk7XG4gICAgICAgIGFjY011bFswXSA9IEYub25lO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaTwga2V5cy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgaWYgKEYuZXEoYXJyW2tleXNbaV1dWzJdLCBGLnplcm8pKSB7XG4gICAgICAgICAgICAgICAgYWNjTXVsW2krMV0gPSBhY2NNdWxbaV07XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGFjY011bFtpKzFdID0gRi5tdWwoYWNjTXVsW2ldLCBhcnJba2V5c1tpXV1bMl0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgYWNjTXVsW2tleXMubGVuZ3RoXSA9IEYuaW52KGFjY011bFtrZXlzLmxlbmd0aF0pO1xuXG4gICAgICAgIGZvciAobGV0IGkgPSBrZXlzLmxlbmd0aC0xOyBpPj0wOyBpLS0pIHtcbiAgICAgICAgICAgIGlmIChGLmVxKGFycltrZXlzW2ldXVsyXSwgRi56ZXJvKSkge1xuICAgICAgICAgICAgICAgIGFjY011bFtpXSA9IGFjY011bFtpKzFdO1xuICAgICAgICAgICAgICAgIGFycltrZXlzW2ldXSA9IHRoaXMuemVybztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgY29uc3QgWl9pbnYgPSBGLm11bChhY2NNdWxbaV0sIGFjY011bFtpKzFdKTtcbiAgICAgICAgICAgICAgICBhY2NNdWxbaV0gPSBGLm11bChhcnJba2V5c1tpXV1bMl0sIGFjY011bFtpKzFdKTtcblxuICAgICAgICAgICAgICAgIGNvbnN0IFoyX2ludiA9IEYuc3F1YXJlKFpfaW52KTtcbiAgICAgICAgICAgICAgICBjb25zdCBaM19pbnYgPSBGLm11bChaMl9pbnYsIFpfaW52KTtcblxuICAgICAgICAgICAgICAgIGFycltrZXlzW2ldXVswXSA9IEYubXVsKGFycltrZXlzW2ldXVswXSxaMl9pbnYpO1xuICAgICAgICAgICAgICAgIGFycltrZXlzW2ldXVsxXSA9IEYubXVsKGFycltrZXlzW2ldXVsxXSxaM19pbnYpO1xuICAgICAgICAgICAgICAgIGFycltrZXlzW2ldXVsyXSA9IEYub25lO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICB9XG5cbiAgICBlcShwMSwgcDIpIHtcbiAgICAgICAgY29uc3QgRiA9IHRoaXMuRjtcblxuICAgICAgICBpZiAodGhpcy5GLmVxKHAxWzJdLCB0aGlzLkYuemVybykpIHJldHVybiB0aGlzLkYuZXEocDJbMl0sIHRoaXMuRi56ZXJvKTtcbiAgICAgICAgaWYgKHRoaXMuRi5lcShwMlsyXSwgdGhpcy5GLnplcm8pKSByZXR1cm4gZmFsc2U7XG5cbiAgICAgICAgY29uc3QgWjFaMSA9IEYuc3F1YXJlKCBwMVsyXSApO1xuICAgICAgICBjb25zdCBaMloyID0gRi5zcXVhcmUoIHAyWzJdICk7XG5cbiAgICAgICAgY29uc3QgVTEgPSBGLm11bCggcDFbMF0gLCBaMloyICk7XG4gICAgICAgIGNvbnN0IFUyID0gRi5tdWwoIHAyWzBdICwgWjFaMSApO1xuXG4gICAgICAgIGNvbnN0IFoxX2N1YmVkID0gRi5tdWwoIHAxWzJdICwgWjFaMSk7XG4gICAgICAgIGNvbnN0IFoyX2N1YmVkID0gRi5tdWwoIHAyWzJdICwgWjJaMik7XG5cbiAgICAgICAgY29uc3QgUzEgPSBGLm11bCggcDFbMV0gLCBaMl9jdWJlZCk7XG4gICAgICAgIGNvbnN0IFMyID0gRi5tdWwoIHAyWzFdICwgWjFfY3ViZWQpO1xuXG4gICAgICAgIHJldHVybiAoRi5lcShVMSxVMikgJiYgRi5lcShTMSxTMikpO1xuICAgIH1cblxuICAgIGlzWmVybyhwKSB7XG4gICAgICAgIHJldHVybiB0aGlzLkYuaXNaZXJvKHBbMl0pO1xuICAgIH1cblxuICAgIHRvU3RyaW5nKHApIHtcbiAgICAgICAgY29uc3QgY3AgPSB0aGlzLmFmZmluZShwKTtcbiAgICAgICAgcmV0dXJuIGBbICR7dGhpcy5GLnRvU3RyaW5nKGNwWzBdKX0gLCAke3RoaXMuRi50b1N0cmluZyhjcFsxXSl9IF1gO1xuICAgIH1cblxuICAgIGZyb21Sbmcocm5nKSB7XG4gICAgICAgIGNvbnN0IEYgPSB0aGlzLkY7XG4gICAgICAgIGxldCBQID0gW107XG4gICAgICAgIGxldCBncmVhdGVzdDtcbiAgICAgICAgZG8ge1xuICAgICAgICAgICAgUFswXSA9IEYuZnJvbVJuZyhybmcpO1xuICAgICAgICAgICAgZ3JlYXRlc3QgPSBybmcubmV4dEJvb2woKTtcbiAgICAgICAgICAgIGNvbnN0IHgzYiA9IEYuYWRkKEYubXVsKEYuc3F1YXJlKFBbMF0pLCBQWzBdKSwgdGhpcy5iKTtcbiAgICAgICAgICAgIFBbMV0gPSBGLnNxcnQoeDNiKTtcbiAgICAgICAgfSB3aGlsZSAoKFBbMV0gPT0gbnVsbCl8fChGLmlzWmVyb1tQXSkpO1xuXG4gICAgICAgIGNvbnN0IHMgPSBpc0dyZWF0ZXN0KEYsIFBbMV0pO1xuICAgICAgICBpZiAoZ3JlYXRlc3QgXiBzKSBQWzFdID0gRi5uZWcoUFsxXSk7XG4gICAgICAgIFBbMl0gPSBGLm9uZTtcblxuICAgICAgICBpZiAodGhpcy5jb2ZhY3Rvcikge1xuICAgICAgICAgICAgUCA9IHRoaXMubXVsU2NhbGFyKFAsIHRoaXMuY29mYWN0b3IpO1xuICAgICAgICB9XG5cbiAgICAgICAgUCA9IHRoaXMuYWZmaW5lKFApO1xuXG4gICAgICAgIHJldHVybiBQO1xuXG4gICAgfVxuXG4gICAgdG9ScHJMRShidWZmLCBvLCBwKSB7XG4gICAgICAgIHAgPSB0aGlzLmFmZmluZShwKTtcbiAgICAgICAgaWYgKHRoaXMuaXNaZXJvKHApKSB7XG4gICAgICAgICAgICBjb25zdCBCdWZmViA9IG5ldyBVaW50OEFycmF5KGJ1ZmYsIG8sIHRoaXMuRi5uOCoyKTtcbiAgICAgICAgICAgIEJ1ZmZWLmZpbGwoMCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5GLnRvUnByTEUoYnVmZiwgbywgcFswXSk7XG4gICAgICAgIHRoaXMuRi50b1JwckxFKGJ1ZmYsIG8rdGhpcy5GLm44LCBwWzFdKTtcbiAgICB9XG5cbiAgICB0b1JwckJFKGJ1ZmYsIG8sIHApIHtcbiAgICAgICAgcCA9IHRoaXMuYWZmaW5lKHApO1xuICAgICAgICBpZiAodGhpcy5pc1plcm8ocCkpIHtcbiAgICAgICAgICAgIGNvbnN0IEJ1ZmZWID0gbmV3IFVpbnQ4QXJyYXkoYnVmZiwgbywgdGhpcy5GLm44KjIpO1xuICAgICAgICAgICAgQnVmZlYuZmlsbCgwKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLkYudG9ScHJCRShidWZmLCBvLCBwWzBdKTtcbiAgICAgICAgdGhpcy5GLnRvUnByQkUoYnVmZiwgbyt0aGlzLkYubjgsIHBbMV0pO1xuICAgIH1cblxuICAgIHRvUnByTEVNKGJ1ZmYsIG8sIHApIHtcbiAgICAgICAgcCA9IHRoaXMuYWZmaW5lKHApO1xuICAgICAgICBpZiAodGhpcy5pc1plcm8ocCkpIHtcbiAgICAgICAgICAgIGNvbnN0IEJ1ZmZWID0gbmV3IFVpbnQ4QXJyYXkoYnVmZiwgbywgdGhpcy5GLm44KjIpO1xuICAgICAgICAgICAgQnVmZlYuZmlsbCgwKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLkYudG9ScHJMRU0oYnVmZiwgbywgcFswXSk7XG4gICAgICAgIHRoaXMuRi50b1JwckxFTShidWZmLCBvK3RoaXMuRi5uOCwgcFsxXSk7XG4gICAgfVxuXG4gICAgdG9ScHJMRUpNKGJ1ZmYsIG8sIHApIHtcbiAgICAgICAgcCA9IHRoaXMuYWZmaW5lKHApO1xuICAgICAgICBpZiAodGhpcy5pc1plcm8ocCkpIHtcbiAgICAgICAgICAgIGNvbnN0IEJ1ZmZWID0gbmV3IFVpbnQ4QXJyYXkoYnVmZiwgbywgdGhpcy5GLm44KjIpO1xuICAgICAgICAgICAgQnVmZlYuZmlsbCgwKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLkYudG9ScHJMRU0oYnVmZiwgbywgcFswXSk7XG4gICAgICAgIHRoaXMuRi50b1JwckxFTShidWZmLCBvK3RoaXMuRi5uOCwgcFsxXSk7XG4gICAgICAgIHRoaXMuRi50b1JwckxFTShidWZmLCBvKzIqdGhpcy5GLm44LCBwWzJdKTtcbiAgICB9XG5cblxuICAgIHRvUnByQkVNKGJ1ZmYsIG8sIHApIHtcbiAgICAgICAgcCA9IHRoaXMuYWZmaW5lKHApO1xuICAgICAgICBpZiAodGhpcy5pc1plcm8ocCkpIHtcbiAgICAgICAgICAgIGNvbnN0IEJ1ZmZWID0gbmV3IFVpbnQ4QXJyYXkoYnVmZiwgbywgdGhpcy5GLm44KjIpO1xuICAgICAgICAgICAgQnVmZlYuZmlsbCgwKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLkYudG9ScHJCRU0oYnVmZiwgbywgcFswXSk7XG4gICAgICAgIHRoaXMuRi50b1JwckJFTShidWZmLCBvK3RoaXMuRi5uOCwgcFsxXSk7XG4gICAgfVxuXG4gICAgZnJvbVJwckxFKGJ1ZmYsIG8pIHtcbiAgICAgICAgbyA9IG8gfHwgMDtcbiAgICAgICAgY29uc3QgeCA9IHRoaXMuRi5mcm9tUnByTEUoYnVmZiwgbyk7XG4gICAgICAgIGNvbnN0IHkgPSB0aGlzLkYuZnJvbVJwckxFKGJ1ZmYsIG8rdGhpcy5GLm44KTtcbiAgICAgICAgaWYgKHRoaXMuRi5pc1plcm8oeCkgJiYgdGhpcy5GLmlzWmVybyh5KSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuemVybztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gW3gsIHksIHRoaXMuRi5vbmVdO1xuICAgIH1cblxuICAgIGZyb21ScHJCRShidWZmLCBvKSB7XG4gICAgICAgIG8gPSBvIHx8IDA7XG4gICAgICAgIGNvbnN0IHggPSB0aGlzLkYuZnJvbVJwckJFKGJ1ZmYsIG8pO1xuICAgICAgICBjb25zdCB5ID0gdGhpcy5GLmZyb21ScHJCRShidWZmLCBvK3RoaXMuRi5uOCk7XG4gICAgICAgIGlmICh0aGlzLkYuaXNaZXJvKHgpICYmIHRoaXMuRi5pc1plcm8oeSkpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnplcm87XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFt4LCB5LCB0aGlzLkYub25lXTtcbiAgICB9XG5cbiAgICBmcm9tUnByTEVNKGJ1ZmYsIG8pIHtcbiAgICAgICAgbyA9IG8gfHwgMDtcbiAgICAgICAgY29uc3QgeCA9IHRoaXMuRi5mcm9tUnByTEVNKGJ1ZmYsIG8pO1xuICAgICAgICBjb25zdCB5ID0gdGhpcy5GLmZyb21ScHJMRU0oYnVmZiwgbyt0aGlzLkYubjgpO1xuICAgICAgICBpZiAodGhpcy5GLmlzWmVybyh4KSAmJiB0aGlzLkYuaXNaZXJvKHkpKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy56ZXJvO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBbeCwgeSwgdGhpcy5GLm9uZV07XG4gICAgfVxuXG4gICAgZnJvbVJwckxFSk0oYnVmZiwgbykge1xuICAgICAgICBvID0gbyB8fCAwO1xuICAgICAgICBjb25zdCB4ID0gdGhpcy5GLmZyb21ScHJMRU0oYnVmZiwgbyk7XG4gICAgICAgIGNvbnN0IHkgPSB0aGlzLkYuZnJvbVJwckxFTShidWZmLCBvK3RoaXMuRi5uOCk7XG4gICAgICAgIGNvbnN0IHogPSB0aGlzLkYuZnJvbVJwckxFTShidWZmLCBvK3RoaXMuRi5uOCoyKTtcbiAgICAgICAgaWYgKHRoaXMuRi5pc1plcm8oeCkgJiYgdGhpcy5GLmlzWmVybyh5KSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuemVybztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gW3gsIHksIHpdO1xuICAgIH1cblxuICAgIGZyb21ScHJCRU0oYnVmZiwgbykge1xuICAgICAgICBvID0gbyB8fCAwO1xuICAgICAgICBjb25zdCB4ID0gdGhpcy5GLmZyb21ScHJCRU0oYnVmZiwgbyk7XG4gICAgICAgIGNvbnN0IHkgPSB0aGlzLkYuZnJvbVJwckJFTShidWZmLCBvK3RoaXMuRi5uOCk7XG4gICAgICAgIGlmICh0aGlzLkYuaXNaZXJvKHgpICYmIHRoaXMuRi5pc1plcm8oeSkpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnplcm87XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFt4LCB5LCB0aGlzLkYub25lXTtcbiAgICB9XG5cbiAgICBmcm9tUnByQ29tcHJlc3NlZChidWZmLCBvKSB7XG4gICAgICAgIGNvbnN0IEYgPSB0aGlzLkY7XG4gICAgICAgIGNvbnN0IHYgPSBuZXcgVWludDhBcnJheShidWZmLmJ1ZmZlciwgbywgRi5uOCk7XG4gICAgICAgIGlmICh2WzBdICYgMHg0MCkgcmV0dXJuIHRoaXMuemVybztcbiAgICAgICAgY29uc3QgUCA9IG5ldyBBcnJheSgzKTtcblxuICAgICAgICBjb25zdCBncmVhdGVzdCA9ICgodlswXSAmIDB4ODApICE9IDApO1xuICAgICAgICB2WzBdID0gdlswXSAmIDB4N0Y7XG4gICAgICAgIFBbMF0gPSBGLmZyb21ScHJCRShidWZmLCBvKTtcbiAgICAgICAgaWYgKGdyZWF0ZXN0KSB2WzBdID0gdlswXSB8IDB4ODA7ICAvLyBzZXQgYmFjayBhZ2FpbiB0aGUgb2xkIHZhbHVlXG5cbiAgICAgICAgY29uc3QgeDNiID0gRi5hZGQoRi5tdWwoRi5zcXVhcmUoUFswXSksIFBbMF0pLCB0aGlzLmIpO1xuICAgICAgICBQWzFdID0gRi5zcXJ0KHgzYik7XG5cbiAgICAgICAgaWYgKFBbMV0gPT09IG51bGwpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgUG9pbnQhXCIpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcyA9IGlzR3JlYXRlc3QoRiwgUFsxXSk7XG4gICAgICAgIGlmIChncmVhdGVzdCBeIHMpIFBbMV0gPSBGLm5lZyhQWzFdKTtcbiAgICAgICAgUFsyXSA9IEYub25lO1xuXG4gICAgICAgIHJldHVybiBQO1xuICAgIH1cblxuICAgIHRvUnByQ29tcHJlc3NlZChidWZmLCBvLCBwKSB7XG4gICAgICAgIHAgPSB0aGlzLmFmZmluZShwKTtcbiAgICAgICAgY29uc3QgdiA9IG5ldyBVaW50OEFycmF5KGJ1ZmYuYnVmZmVyLCBvLCB0aGlzLkYubjgpO1xuICAgICAgICBpZiAodGhpcy5pc1plcm8ocCkpIHtcbiAgICAgICAgICAgIHYuZmlsbCgwKTtcbiAgICAgICAgICAgIHZbMF0gPSAweDQwO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuRi50b1JwckJFKGJ1ZmYsIG8sIHBbMF0pO1xuXG4gICAgICAgIGlmIChpc0dyZWF0ZXN0KHRoaXMuRiwgcFsxXSkpIHtcbiAgICAgICAgICAgIHZbMF0gPSB2WzBdIHwgMHg4MDtcbiAgICAgICAgfVxuICAgIH1cblxuXG4gICAgZnJvbVJwclVuY29tcHJlc3NlZChidWZmLCBvKSB7XG4gICAgICAgIGlmIChidWZmWzBdICYgMHg0MCkgcmV0dXJuIHRoaXMuemVybztcblxuICAgICAgICByZXR1cm4gdGhpcy5mcm9tUnByQkUoYnVmZiwgbyk7XG4gICAgfVxuXG4gICAgdG9ScHJVbmNvbXByZXNzZWQoYnVmZiwgbywgcCkge1xuICAgICAgICB0aGlzLnRvUnByQkUoYnVmZiwgbywgcCk7XG5cbiAgICAgICAgaWYgKHRoaXMuaXNaZXJvKHApKSB7XG4gICAgICAgICAgICBidWZmW29dID0gYnVmZltvXSB8IDB4NDA7XG4gICAgICAgIH1cbiAgICB9XG5cblxufVxuXG52YXIgdXRpbHMkNiA9IHt9O1xuXG4vKlxuICAgIENvcHlyaWdodCAyMDE5IDBLSU1TIGFzc29jaWF0aW9uLlxuXG4gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2Ygd2FzbXNuYXJrIChXZWIgQXNzZW1ibHkgemtTbmFyayBQcm92ZXIpLlxuXG4gICAgd2FzbXNuYXJrIGlzIGEgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdFxuICAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3JcbiAgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuXG4gICAgd2FzbXNuYXJrIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUXG4gICAgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZXG4gICAgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljXG4gICAgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuXG4gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAgICBhbG9uZyB3aXRoIHdhc21zbmFyay4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cbiovXG5cbnV0aWxzJDYuYmlnSW50MkJ5dGVzTEUgPSBmdW5jdGlvbiBiaWdJbnQyQnl0ZXNMRShfYSwgbGVuKSB7XG4gICAgY29uc3QgYiA9IEFycmF5KGxlbik7XG4gICAgbGV0IHYgPSBCaWdJbnQoX2EpO1xuICAgIGZvciAobGV0IGk9MDsgaTxsZW47IGkrKykge1xuICAgICAgICBiW2ldID0gTnVtYmVyKHYgJiAweEZGbik7XG4gICAgICAgIHYgPSB2ID4+IDhuO1xuICAgIH1cbiAgICByZXR1cm4gYjtcbn07XG5cbnV0aWxzJDYuYmlnSW50MlUzMkxFID0gZnVuY3Rpb24gYmlnSW50MkJ5dGVzTEUoX2EsIGxlbikge1xuICAgIGNvbnN0IGIgPSBBcnJheShsZW4pO1xuICAgIGxldCB2ID0gQmlnSW50KF9hKTtcbiAgICBmb3IgKGxldCBpPTA7IGk8bGVuOyBpKyspIHtcbiAgICAgICAgYltpXSA9IE51bWJlcih2ICYgMHhGRkZGRkZGRm4pO1xuICAgICAgICB2ID0gdiA+PiAzMm47XG4gICAgfVxuICAgIHJldHVybiBiO1xufTtcblxudXRpbHMkNi5pc09jYW1OdW0gPSBmdW5jdGlvbihhKSB7XG4gICAgaWYgKCFBcnJheS5pc0FycmF5KGEpKSByZXR1cm4gZmFsc2U7XG4gICAgaWYgKGEubGVuZ3RoICE9IDMpIHJldHVybiBmYWxzZTtcbiAgICBpZiAodHlwZW9mIGFbMF0gIT09IFwibnVtYmVyXCIpIHJldHVybiBmYWxzZTtcbiAgICBpZiAodHlwZW9mIGFbMV0gIT09IFwibnVtYmVyXCIpIHJldHVybiBmYWxzZTtcbiAgICBpZiAoIUFycmF5LmlzQXJyYXkoYVsyXSkpIHJldHVybiBmYWxzZTtcbiAgICByZXR1cm4gdHJ1ZTtcbn07XG5cbi8qXG4gICAgQ29weXJpZ2h0IDIwMTkgMEtJTVMgYXNzb2NpYXRpb24uXG5cbiAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB3YXNtc25hcmsgKFdlYiBBc3NlbWJseSB6a1NuYXJrIFByb3ZlcikuXG5cbiAgICB3YXNtc25hcmsgaXMgYSBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0XG4gICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxuICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG5cbiAgICB3YXNtc25hcmsgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVRcbiAgICBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFlcbiAgICBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWNcbiAgICBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG5cbiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICAgIGFsb25nIHdpdGggd2FzbXNuYXJrLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuKi9cblxudmFyIGJ1aWxkX2ludCA9IGZ1bmN0aW9uIGJ1aWxkSW50KG1vZHVsZSwgbjY0LCBfcHJlZml4KSB7XG5cbiAgICBjb25zdCBwcmVmaXggPSBfcHJlZml4IHx8IFwiaW50XCI7XG4gICAgaWYgKG1vZHVsZS5tb2R1bGVzW3ByZWZpeF0pIHJldHVybiBwcmVmaXg7ICAvLyBhbHJlYWR5IGJ1aWxkZWRcbiAgICBtb2R1bGUubW9kdWxlc1twcmVmaXhdID0ge307XG5cbiAgICBjb25zdCBuMzIgPSBuNjQqMjtcbiAgICBjb25zdCBuOCA9IG42NCo4O1xuXG4gICAgZnVuY3Rpb24gYnVpbGRDb3B5KCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCtcIl9jb3B5XCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicHhcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwclwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGZvciAobGV0IGk9MDsgaTxuNjQ7IGkrKykge1xuICAgICAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgICAgIGMuaTY0X3N0b3JlKFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicHJcIiksXG4gICAgICAgICAgICAgICAgICAgIGkqOCxcbiAgICAgICAgICAgICAgICAgICAgYy5pNjRfbG9hZChcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJweFwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGkqOFxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGJ1aWxkWmVybygpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrXCJfemVyb1wiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInByXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPG42NDsgaSsrKSB7XG4gICAgICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICAgICAgYy5pNjRfc3RvcmUoXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwclwiKSxcbiAgICAgICAgICAgICAgICAgICAgaSo4LFxuICAgICAgICAgICAgICAgICAgICBjLmk2NF9jb25zdCgwKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBidWlsZE9uZSgpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrXCJfb25lXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicHJcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLmk2NF9zdG9yZShcbiAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicHJcIiksXG4gICAgICAgICAgICAgICAgMCxcbiAgICAgICAgICAgICAgICBjLmk2NF9jb25zdCgxKVxuICAgICAgICAgICAgKVxuICAgICAgICApO1xuICAgICAgICBmb3IgKGxldCBpPTE7IGk8bjY0OyBpKyspIHtcbiAgICAgICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgICAgICBjLmk2NF9zdG9yZShcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInByXCIpLFxuICAgICAgICAgICAgICAgICAgICBpKjgsXG4gICAgICAgICAgICAgICAgICAgIGMuaTY0X2NvbnN0KDApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGJ1aWxkSXNaZXJvKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCtcIl9pc1plcm9cIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJweFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5zZXRSZXR1cm5UeXBlKFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgZnVuY3Rpb24gZ2V0Q29tcENvZGUobikge1xuICAgICAgICAgICAgaWYgKG49PTApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gIGMucmV0KGMuaTY0X2VxeihcbiAgICAgICAgICAgICAgICAgICAgYy5pNjRfbG9hZChjLmdldExvY2FsKFwicHhcIikpXG4gICAgICAgICAgICAgICAgKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gYy5pZihcbiAgICAgICAgICAgICAgICBjLmk2NF9lcXooXG4gICAgICAgICAgICAgICAgICAgIGMuaTY0X2xvYWQoYy5nZXRMb2NhbChcInB4XCIpLCBuKjggKVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgZ2V0Q29tcENvZGUobi0xKSxcbiAgICAgICAgICAgICAgICBjLnJldChjLmkzMl9jb25zdCgwKSlcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICBmLmFkZENvZGUoZ2V0Q29tcENvZGUobjY0LTEpKTtcbiAgICAgICAgZi5hZGRDb2RlKGMucmV0KGMuaTMyX2NvbnN0KDApKSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYnVpbGRFcSgpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrXCJfZXFcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJweFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInB5XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLnNldFJldHVyblR5cGUoXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBmdW5jdGlvbiBnZXRDb21wQ29kZShuKSB7XG4gICAgICAgICAgICBpZiAobj09MCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAgYy5yZXQoYy5pNjRfZXEoXG4gICAgICAgICAgICAgICAgICAgIGMuaTY0X2xvYWQoYy5nZXRMb2NhbChcInB4XCIpKSxcbiAgICAgICAgICAgICAgICAgICAgYy5pNjRfbG9hZChjLmdldExvY2FsKFwicHlcIikpXG4gICAgICAgICAgICAgICAgKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gYy5pZihcbiAgICAgICAgICAgICAgICBjLmk2NF9lcShcbiAgICAgICAgICAgICAgICAgICAgYy5pNjRfbG9hZChjLmdldExvY2FsKFwicHhcIiksIG4qOCApLFxuICAgICAgICAgICAgICAgICAgICBjLmk2NF9sb2FkKGMuZ2V0TG9jYWwoXCJweVwiKSwgbio4IClcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGdldENvbXBDb2RlKG4tMSksXG4gICAgICAgICAgICAgICAgYy5yZXQoYy5pMzJfY29uc3QoMCkpXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgZi5hZGRDb2RlKGdldENvbXBDb2RlKG42NC0xKSk7XG4gICAgICAgIGYuYWRkQ29kZShjLnJldChjLmkzMl9jb25zdCgwKSkpO1xuICAgIH1cblxuXG5cbiAgICBmdW5jdGlvbiBidWlsZEd0ZSgpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrXCJfZ3RlXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicHhcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJweVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5zZXRSZXR1cm5UeXBlKFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgZnVuY3Rpb24gZ2V0Q29tcENvZGUobikge1xuICAgICAgICAgICAgaWYgKG49PTApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gIGMucmV0KGMuaTY0X2dlX3UoXG4gICAgICAgICAgICAgICAgICAgIGMuaTY0X2xvYWQoYy5nZXRMb2NhbChcInB4XCIpKSxcbiAgICAgICAgICAgICAgICAgICAgYy5pNjRfbG9hZChjLmdldExvY2FsKFwicHlcIikpXG4gICAgICAgICAgICAgICAgKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gYy5pZihcbiAgICAgICAgICAgICAgICBjLmk2NF9sdF91KFxuICAgICAgICAgICAgICAgICAgICBjLmk2NF9sb2FkKGMuZ2V0TG9jYWwoXCJweFwiKSwgbio4ICksXG4gICAgICAgICAgICAgICAgICAgIGMuaTY0X2xvYWQoYy5nZXRMb2NhbChcInB5XCIpLCBuKjggKVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgYy5yZXQoYy5pMzJfY29uc3QoMCkpLFxuICAgICAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgICAgIGMuaTY0X2d0X3UoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9sb2FkKGMuZ2V0TG9jYWwoXCJweFwiKSwgbio4ICksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9sb2FkKGMuZ2V0TG9jYWwoXCJweVwiKSwgbio4IClcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgYy5yZXQoYy5pMzJfY29uc3QoMSkpLFxuICAgICAgICAgICAgICAgICAgICBnZXRDb21wQ29kZShuLTEpXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGYuYWRkQ29kZShnZXRDb21wQ29kZShuNjQtMSkpO1xuICAgICAgICBmLmFkZENvZGUoYy5yZXQoYy5pMzJfY29uc3QoMCkpKTtcbiAgICB9XG5cblxuXG4gICAgZnVuY3Rpb24gYnVpbGRBZGQoKSB7XG5cbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrXCJfYWRkXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInlcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJyXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLnNldFJldHVyblR5cGUoXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJjXCIsIFwiaTY0XCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgZi5hZGRDb2RlKGMuc2V0TG9jYWwoXG4gICAgICAgICAgICBcImNcIixcbiAgICAgICAgICAgIGMuaTY0X2FkZChcbiAgICAgICAgICAgICAgICBjLmk2NF9sb2FkMzJfdShjLmdldExvY2FsKFwieFwiKSksXG4gICAgICAgICAgICAgICAgYy5pNjRfbG9hZDMyX3UoYy5nZXRMb2NhbChcInlcIikpXG4gICAgICAgICAgICApXG4gICAgICAgICkpO1xuXG4gICAgICAgIGYuYWRkQ29kZShjLmk2NF9zdG9yZTMyKFxuICAgICAgICAgICAgYy5nZXRMb2NhbChcInJcIiksXG4gICAgICAgICAgICBjLmdldExvY2FsKFwiY1wiKSxcbiAgICAgICAgKSk7XG5cbiAgICAgICAgZm9yIChsZXQgaT0xOyBpPG4zMjsgaSsrKSB7XG4gICAgICAgICAgICBmLmFkZENvZGUoYy5zZXRMb2NhbCggXCJjXCIsXG4gICAgICAgICAgICAgICAgYy5pNjRfYWRkKFxuICAgICAgICAgICAgICAgICAgICBjLmk2NF9hZGQoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9sb2FkMzJfdShjLmdldExvY2FsKFwieFwiKSwgNCppKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2xvYWQzMl91KGMuZ2V0TG9jYWwoXCJ5XCIpLCA0KmkpXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgIGMuaTY0X3Nocl91IChjLmdldExvY2FsKFwiY1wiKSwgYy5pNjRfY29uc3QoMzIpKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICkpO1xuXG4gICAgICAgICAgICBmLmFkZENvZGUoYy5pNjRfc3RvcmUzMihcbiAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiclwiKSxcbiAgICAgICAgICAgICAgICBpKjQsXG4gICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImNcIilcbiAgICAgICAgICAgICkpO1xuICAgICAgICB9XG5cbiAgICAgICAgZi5hZGRDb2RlKGMuaTMyX3dyYXBfaTY0KGMuaTY0X3Nocl91IChjLmdldExvY2FsKFwiY1wiKSwgYy5pNjRfY29uc3QoMzIpKSkpO1xuICAgIH1cblxuXG4gICAgZnVuY3Rpb24gYnVpbGRTdWIoKSB7XG5cbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrXCJfc3ViXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInlcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJyXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLnNldFJldHVyblR5cGUoXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJjXCIsIFwiaTY0XCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgZi5hZGRDb2RlKGMuc2V0TG9jYWwoXG4gICAgICAgICAgICBcImNcIixcbiAgICAgICAgICAgIGMuaTY0X3N1YihcbiAgICAgICAgICAgICAgICBjLmk2NF9sb2FkMzJfdShjLmdldExvY2FsKFwieFwiKSksXG4gICAgICAgICAgICAgICAgYy5pNjRfbG9hZDMyX3UoYy5nZXRMb2NhbChcInlcIikpXG4gICAgICAgICAgICApXG4gICAgICAgICkpO1xuXG4gICAgICAgIGYuYWRkQ29kZShjLmk2NF9zdG9yZTMyKFxuICAgICAgICAgICAgYy5nZXRMb2NhbChcInJcIiksXG4gICAgICAgICAgICBjLmk2NF9hbmQoXG4gICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImNcIiksXG4gICAgICAgICAgICAgICAgYy5pNjRfY29uc3QoXCIweEZGRkZGRkZGXCIpXG4gICAgICAgICAgICApXG4gICAgICAgICkpO1xuXG4gICAgICAgIGZvciAobGV0IGk9MTsgaTxuMzI7IGkrKykge1xuICAgICAgICAgICAgZi5hZGRDb2RlKGMuc2V0TG9jYWwoIFwiY1wiLFxuICAgICAgICAgICAgICAgIGMuaTY0X2FkZChcbiAgICAgICAgICAgICAgICAgICAgYy5pNjRfc3ViKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfbG9hZDMyX3UoYy5nZXRMb2NhbChcInhcIiksIDQqaSksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9sb2FkMzJfdShjLmdldExvY2FsKFwieVwiKSwgNCppKVxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICBjLmk2NF9zaHJfcyAoYy5nZXRMb2NhbChcImNcIiksIGMuaTY0X2NvbnN0KDMyKSlcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApKTtcblxuICAgICAgICAgICAgZi5hZGRDb2RlKGMuaTY0X3N0b3JlMzIoXG4gICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInJcIiksXG4gICAgICAgICAgICAgICAgaSo0LFxuICAgICAgICAgICAgICAgIGMuaTY0X2FuZCggYy5nZXRMb2NhbChcImNcIiksIGMuaTY0X2NvbnN0KFwiMHhGRkZGRkZGRlwiKSlcbiAgICAgICAgICAgICkpO1xuICAgICAgICB9XG5cbiAgICAgICAgZi5hZGRDb2RlKGMuaTMyX3dyYXBfaTY0ICggYy5pNjRfc2hyX3MgKGMuZ2V0TG9jYWwoXCJjXCIpLCBjLmk2NF9jb25zdCgzMikpKSk7XG4gICAgfVxuXG5cbiAgICBmdW5jdGlvbiBidWlsZE11bCgpIHtcblxuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCtcIl9tdWxcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInJcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJjMFwiLCBcImk2NFwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcImMxXCIsIFwiaTY0XCIpO1xuXG5cbiAgICAgICAgZm9yIChsZXQgaT0wO2k8bjMyOyBpKyspIHtcbiAgICAgICAgICAgIGYuYWRkTG9jYWwoXCJ4XCIraSwgXCJpNjRcIik7XG4gICAgICAgICAgICBmLmFkZExvY2FsKFwieVwiK2ksIFwiaTY0XCIpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCBsb2FkWCA9IFtdO1xuICAgICAgICBjb25zdCBsb2FkWSA9IFtdO1xuICAgICAgICBmdW5jdGlvbiBtdWxpaihpLCBqKSB7XG4gICAgICAgICAgICBsZXQgWCxZO1xuICAgICAgICAgICAgaWYgKCFsb2FkWFtpXSkge1xuICAgICAgICAgICAgICAgIFggPSBjLnRlZUxvY2FsKFwieFwiK2ksIGMuaTY0X2xvYWQzMl91KCBjLmdldExvY2FsKFwieFwiKSwgaSo0KSk7XG4gICAgICAgICAgICAgICAgbG9hZFhbaV0gPSB0cnVlO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBYID0gYy5nZXRMb2NhbChcInhcIitpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghbG9hZFlbal0pIHtcbiAgICAgICAgICAgICAgICBZID0gYy50ZWVMb2NhbChcInlcIitqLCBjLmk2NF9sb2FkMzJfdSggYy5nZXRMb2NhbChcInlcIiksIGoqNCkpO1xuICAgICAgICAgICAgICAgIGxvYWRZW2pdID0gdHJ1ZTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgWSA9IGMuZ2V0TG9jYWwoXCJ5XCIraik7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBjLmk2NF9tdWwoIFgsIFkgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBjMCA9IFwiYzBcIjtcbiAgICAgICAgbGV0IGMxID0gXCJjMVwiO1xuXG4gICAgICAgIGZvciAobGV0IGs9MDsgazxuMzIqMi0xOyBrKyspIHtcbiAgICAgICAgICAgIGZvciAobGV0IGk9TWF0aC5tYXgoMCwgay1uMzIrMSk7IChpPD1rKSYmKGk8bjMyKTsgaSsrKSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgaj0gay1pO1xuXG4gICAgICAgICAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgICAgICAgICBjLnNldExvY2FsKGMwLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfYWRkKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2FuZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChjMCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2NvbnN0KDB4RkZGRkZGRkYpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdWxpaihpLGopXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgICAgICAgICBjLnNldExvY2FsKGMxLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfYWRkKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoYzEpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X3Nocl91KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKGMwKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfY29uc3QoMzIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICAgICAgYy5pNjRfc3RvcmUzMihcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInJcIiksXG4gICAgICAgICAgICAgICAgICAgIGsqNCxcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChjMClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgW2MwLCBjMV0gPSBbYzEsIGMwXTtcbiAgICAgICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKGMxLFxuICAgICAgICAgICAgICAgICAgICBjLmk2NF9zaHJfdShcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoYzApLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfY29uc3QoMzIpXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuaTY0X3N0b3JlMzIoXG4gICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInJcIiksXG4gICAgICAgICAgICAgICAgbjMyKjQqMi00LFxuICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoYzApXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG5cbiAgICB9XG5cblxuXG4gICAgZnVuY3Rpb24gYnVpbGRTcXVhcmUoKSB7XG5cbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrXCJfc3F1YXJlXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInJcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJjMFwiLCBcImk2NFwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcImMxXCIsIFwiaTY0XCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiYzBfb2xkXCIsIFwiaTY0XCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiYzFfb2xkXCIsIFwiaTY0XCIpO1xuXG5cbiAgICAgICAgZm9yIChsZXQgaT0wO2k8bjMyOyBpKyspIHtcbiAgICAgICAgICAgIGYuYWRkTG9jYWwoXCJ4XCIraSwgXCJpNjRcIik7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IGxvYWRYID0gW107XG4gICAgICAgIGZ1bmN0aW9uIG11bGlqKGksIGopIHtcbiAgICAgICAgICAgIGxldCBYLFk7XG4gICAgICAgICAgICBpZiAoIWxvYWRYW2ldKSB7XG4gICAgICAgICAgICAgICAgWCA9IGMudGVlTG9jYWwoXCJ4XCIraSwgYy5pNjRfbG9hZDMyX3UoIGMuZ2V0TG9jYWwoXCJ4XCIpLCBpKjQpKTtcbiAgICAgICAgICAgICAgICBsb2FkWFtpXSA9IHRydWU7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIFggPSBjLmdldExvY2FsKFwieFwiK2kpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCFsb2FkWFtqXSkge1xuICAgICAgICAgICAgICAgIFkgPSBjLnRlZUxvY2FsKFwieFwiK2osIGMuaTY0X2xvYWQzMl91KCBjLmdldExvY2FsKFwieFwiKSwgaio0KSk7XG4gICAgICAgICAgICAgICAgbG9hZFhbal0gPSB0cnVlO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBZID0gYy5nZXRMb2NhbChcInhcIitqKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIGMuaTY0X211bCggWCwgWSApO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGMwID0gXCJjMFwiO1xuICAgICAgICBsZXQgYzEgPSBcImMxXCI7XG4gICAgICAgIGxldCBjMF9vbGQgPSBcImMwX29sZFwiO1xuICAgICAgICBsZXQgYzFfb2xkID0gXCJjMV9vbGRcIjtcblxuICAgICAgICBmb3IgKGxldCBrPTA7IGs8bjMyKjItMTsgaysrKSB7XG4gICAgICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChjMCwgYy5pNjRfY29uc3QoMCkpLFxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoYzEsIGMuaTY0X2NvbnN0KDApKSxcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIGZvciAobGV0IGk9TWF0aC5tYXgoMCwgay1uMzIrMSk7IChpPCgoaysxKT4+MSkgKSYmKGk8bjMyKTsgaSsrKSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgaj0gay1pO1xuXG4gICAgICAgICAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgICAgICAgICBjLnNldExvY2FsKGMwLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfYWRkKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2FuZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChjMCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2NvbnN0KDB4RkZGRkZGRkYpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdWxpaihpLGopXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgICAgICAgICBjLnNldExvY2FsKGMxLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfYWRkKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoYzEpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X3Nocl91KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKGMwKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfY29uc3QoMzIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gTXVsdGlwbHkgYnkgMlxuICAgICAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoYzAsXG4gICAgICAgICAgICAgICAgICAgIGMuaTY0X3NobChcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2FuZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKGMwKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9jb25zdCgweEZGRkZGRkZGKVxuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2NvbnN0KDEpXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChjMSxcbiAgICAgICAgICAgICAgICAgICAgYy5pNjRfYWRkKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfc2hsKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoYzEpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2NvbnN0KDEpXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfc2hyX3UoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChjMCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfY29uc3QoMzIpXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICBpZiAoayUyID09IDApIHtcbiAgICAgICAgICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoYzAsXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9hZGQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfYW5kKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKGMwKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfY29uc3QoMHhGRkZGRkZGRilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG11bGlqKGs+PjEsIGs+PjEpXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgICAgICAgICBjLnNldExvY2FsKGMxLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfYWRkKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoYzEpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X3Nocl91KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKGMwKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfY29uc3QoMzIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gQWRkIHRoZSBvbGQgY2FycnlcblxuICAgICAgICAgICAgaWYgKGs+MCkge1xuICAgICAgICAgICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgICAgICAgICAgYy5zZXRMb2NhbChjMCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2FkZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9hbmQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoYzApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9jb25zdCgweEZGRkZGRkZGKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfYW5kKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKGMwX29sZCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2NvbnN0KDB4RkZGRkZGRkYpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoYzEsXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9hZGQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfYWRkKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKGMxKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfc2hyX3UoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKGMwKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2NvbnN0KDMyKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKGMxX29sZClcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgICAgICBjLmk2NF9zdG9yZTMyKFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiclwiKSxcbiAgICAgICAgICAgICAgICAgICAgayo0LFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKGMwKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFxuICAgICAgICAgICAgICAgICAgICBjMF9vbGQsXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoYzEpXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFxuICAgICAgICAgICAgICAgICAgICBjMV9vbGQsXG4gICAgICAgICAgICAgICAgICAgIGMuaTY0X3Nocl91KFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChjMF9vbGQpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfY29uc3QoMzIpXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuXG4gICAgICAgIH1cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5pNjRfc3RvcmUzMihcbiAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiclwiKSxcbiAgICAgICAgICAgICAgICBuMzIqNCoyLTQsXG4gICAgICAgICAgICAgICAgYy5nZXRMb2NhbChjMF9vbGQpXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG5cbiAgICB9XG5cblxuICAgIGZ1bmN0aW9uIGJ1aWxkU3F1YXJlT2xkKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCtcIl9zcXVhcmVPbGRcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiclwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGYuYWRkQ29kZShjLmNhbGwocHJlZml4ICsgXCJfbXVsXCIsIGMuZ2V0TG9jYWwoXCJ4XCIpLCBjLmdldExvY2FsKFwieFwiKSwgYy5nZXRMb2NhbChcInJcIikpKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBfYnVpbGRNdWwxKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCtcIl9fbXVsMVwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInB4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieVwiLCBcImk2NFwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInByXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiY1wiLCBcImk2NFwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGYuYWRkQ29kZShjLnNldExvY2FsKFxuICAgICAgICAgICAgXCJjXCIsXG4gICAgICAgICAgICBjLmk2NF9tdWwoXG4gICAgICAgICAgICAgICAgYy5pNjRfbG9hZDMyX3UoYy5nZXRMb2NhbChcInB4XCIpLCAwLCAwKSxcbiAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwieVwiKVxuICAgICAgICAgICAgKVxuICAgICAgICApKTtcblxuICAgICAgICBmLmFkZENvZGUoYy5pNjRfc3RvcmUzMihcbiAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwclwiKSxcbiAgICAgICAgICAgIDAsXG4gICAgICAgICAgICAwLFxuICAgICAgICAgICAgYy5nZXRMb2NhbChcImNcIiksXG4gICAgICAgICkpO1xuXG4gICAgICAgIGZvciAobGV0IGk9MTsgaTxuMzI7IGkrKykge1xuICAgICAgICAgICAgZi5hZGRDb2RlKGMuc2V0TG9jYWwoIFwiY1wiLFxuICAgICAgICAgICAgICAgIGMuaTY0X2FkZChcbiAgICAgICAgICAgICAgICAgICAgYy5pNjRfbXVsKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfbG9hZDMyX3UoYy5nZXRMb2NhbChcInB4XCIpLCA0KmksIDApLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInlcIilcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgYy5pNjRfc2hyX3UgKGMuZ2V0TG9jYWwoXCJjXCIpLCBjLmk2NF9jb25zdCgzMikpXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSk7XG5cbiAgICAgICAgICAgIGYuYWRkQ29kZShjLmk2NF9zdG9yZTMyKFxuICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwclwiKSxcbiAgICAgICAgICAgICAgICBpKjQsXG4gICAgICAgICAgICAgICAgMCxcbiAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiY1wiKVxuICAgICAgICAgICAgKSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBfYnVpbGRBZGQxKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCtcIl9fYWRkMVwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInhcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ5XCIsIFwiaTY0XCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiY1wiLCBcImk2NFwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcInB4XCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgZi5hZGRDb2RlKGMuc2V0TG9jYWwoXCJweFwiLCBjLmdldExvY2FsKFwieFwiKSkpO1xuXG4gICAgICAgIGYuYWRkQ29kZShjLnNldExvY2FsKFxuICAgICAgICAgICAgXCJjXCIsXG4gICAgICAgICAgICBjLmk2NF9hZGQoXG4gICAgICAgICAgICAgICAgYy5pNjRfbG9hZDMyX3UoYy5nZXRMb2NhbChcInB4XCIpLCAwLCAwKSxcbiAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwieVwiKVxuICAgICAgICAgICAgKVxuICAgICAgICApKTtcblxuICAgICAgICBmLmFkZENvZGUoYy5pNjRfc3RvcmUzMihcbiAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJweFwiKSxcbiAgICAgICAgICAgIDAsXG4gICAgICAgICAgICAwLFxuICAgICAgICAgICAgYy5nZXRMb2NhbChcImNcIiksXG4gICAgICAgICkpO1xuXG4gICAgICAgIGYuYWRkQ29kZShjLnNldExvY2FsKFxuICAgICAgICAgICAgXCJjXCIsXG4gICAgICAgICAgICBjLmk2NF9zaHJfdShcbiAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiY1wiKSxcbiAgICAgICAgICAgICAgICBjLmk2NF9jb25zdCgzMilcbiAgICAgICAgICAgIClcbiAgICAgICAgKSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKGMuYmxvY2soYy5sb29wKFxuICAgICAgICAgICAgYy5icl9pZihcbiAgICAgICAgICAgICAgICAxLFxuICAgICAgICAgICAgICAgIGMuaTY0X2VxeihjLmdldExvY2FsKFwiY1wiKSlcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjLnNldExvY2FsKFxuICAgICAgICAgICAgICAgIFwicHhcIixcbiAgICAgICAgICAgICAgICBjLmkzMl9hZGQoXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJweFwiKSxcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QoNClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApLFxuXG4gICAgICAgICAgICBjLnNldExvY2FsKFxuICAgICAgICAgICAgICAgIFwiY1wiLFxuICAgICAgICAgICAgICAgIGMuaTY0X2FkZChcbiAgICAgICAgICAgICAgICAgICAgYy5pNjRfbG9hZDMyX3UoYy5nZXRMb2NhbChcInB4XCIpLCAwLCAwKSxcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImNcIilcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApLFxuXG4gICAgICAgICAgICBjLmk2NF9zdG9yZTMyKFxuICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJweFwiKSxcbiAgICAgICAgICAgICAgICAwLFxuICAgICAgICAgICAgICAgIDAsXG4gICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImNcIiksXG4gICAgICAgICAgICApLFxuXG4gICAgICAgICAgICBjLnNldExvY2FsKFxuICAgICAgICAgICAgICAgIFwiY1wiLFxuICAgICAgICAgICAgICAgIGMuaTY0X3Nocl91KFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiY1wiKSxcbiAgICAgICAgICAgICAgICAgICAgYy5pNjRfY29uc3QoMzIpXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgYy5icigwKVxuICAgICAgICApKSk7XG4gICAgfVxuXG5cbiAgICBmdW5jdGlvbiBidWlsZERpdigpIHtcbiAgICAgICAgX2J1aWxkTXVsMSgpO1xuICAgICAgICBfYnVpbGRBZGQxKCk7XG5cbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrXCJfZGl2XCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInlcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJjXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiclwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcInJyXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiY2NcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJlWFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcImVZXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwic3lcIiwgXCJpNjRcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJzeFwiLCBcImk2NFwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcImVjXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgWSA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuICAgICAgICBjb25zdCBDYXV4ID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44KSk7XG4gICAgICAgIGNvbnN0IFJhdXggPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcbiAgICAgICAgY29uc3QgQyA9IGMuZ2V0TG9jYWwoXCJjY1wiKTtcbiAgICAgICAgY29uc3QgUiA9IGMuZ2V0TG9jYWwoXCJyclwiKTtcbiAgICAgICAgY29uc3QgcHIxID0gbW9kdWxlLmFsbG9jKG44KjIpO1xuICAgICAgICBjb25zdCBSMSA9IGMuaTMyX2NvbnN0KHByMSk7XG4gICAgICAgIGNvbnN0IFIyID0gYy5pMzJfY29uc3QocHIxK244KTtcblxuICAgICAgICAvLyBJYyBjIGlzIDAgdGhlbiBzdG9yZSBpdCBpbiBhbiBhdXhpbGlhcnkgYnVmZmVyXG4gICAgICAgIGYuYWRkQ29kZShjLmlmKFxuICAgICAgICAgICAgYy5nZXRMb2NhbChcImNcIiksXG4gICAgICAgICAgICBjLnNldExvY2FsKFwiY2NcIiwgYy5nZXRMb2NhbChcImNcIikpLFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcImNjXCIsIENhdXgpXG4gICAgICAgICkpO1xuXG4gICAgICAgIC8vIEljIHIgaXMgMCB0aGVuIHN0b3JlIGl0IGluIGFuIGF1eGlsaWFyeSBidWZmZXJcbiAgICAgICAgZi5hZGRDb2RlKGMuaWYoXG4gICAgICAgICAgICBjLmdldExvY2FsKFwiclwiKSxcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJyclwiLCBjLmdldExvY2FsKFwiclwiKSksXG4gICAgICAgICAgICBjLnNldExvY2FsKFwicnJcIiwgUmF1eClcbiAgICAgICAgKSk7XG5cbiAgICAgICAgLy8gQ29weVxuICAgICAgICBmLmFkZENvZGUoYy5jYWxsKHByZWZpeCArIFwiX2NvcHlcIiwgYy5nZXRMb2NhbChcInhcIiksIFIpKTtcbiAgICAgICAgZi5hZGRDb2RlKGMuY2FsbChwcmVmaXggKyBcIl9jb3B5XCIsIGMuZ2V0TG9jYWwoXCJ5XCIpLCBZKSk7XG4gICAgICAgIGYuYWRkQ29kZShjLmNhbGwocHJlZml4ICsgXCJfemVyb1wiLCBDKSk7XG4gICAgICAgIGYuYWRkQ29kZShjLmNhbGwocHJlZml4ICsgXCJfemVyb1wiLCBSMSkpO1xuXG5cbiAgICAgICAgZi5hZGRDb2RlKGMuc2V0TG9jYWwoXCJlWFwiLCBjLmkzMl9jb25zdChuOC0xKSkpO1xuICAgICAgICBmLmFkZENvZGUoYy5zZXRMb2NhbChcImVZXCIsIGMuaTMyX2NvbnN0KG44LTEpKSk7XG5cbiAgICAgICAgLy8gd2hpbGUgKGVZPjMpJiYoWVtlWV09PTApIGV5LS07XG4gICAgICAgIGYuYWRkQ29kZShjLmJsb2NrKGMubG9vcChcbiAgICAgICAgICAgIGMuYnJfaWYoXG4gICAgICAgICAgICAgICAgMSxcbiAgICAgICAgICAgICAgICBjLmkzMl9vcihcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfbG9hZDhfdShcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2FkZChZICwgYy5nZXRMb2NhbChcImVZXCIpKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIDAsXG4gICAgICAgICAgICAgICAgICAgICAgICAwXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX2VxKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImVZXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QoMylcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjLnNldExvY2FsKFwiZVlcIiwgYy5pMzJfc3ViKGMuZ2V0TG9jYWwoXCJlWVwiKSwgYy5pMzJfY29uc3QoMSkpKSxcbiAgICAgICAgICAgIGMuYnIoMClcbiAgICAgICAgKSkpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXG4gICAgICAgICAgICAgICAgXCJzeVwiLFxuICAgICAgICAgICAgICAgIGMuaTY0X2FkZChcbiAgICAgICAgICAgICAgICAgICAgYy5pNjRfbG9hZDMyX3UoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9zdWIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfYWRkKCBZLCBjLmdldExvY2FsKFwiZVlcIikpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KDMpXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgMCxcbiAgICAgICAgICAgICAgICAgICAgICAgIDBcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgYy5pNjRfY29uc3QoMSlcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG5cbiAgICAgICAgLy8gRm9yY2UgYSBkaXZpZGUgYnkgMCBpZiBxdW90aWVuIGlzIDBcbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICBjLmk2NF9lcShcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInN5XCIpLFxuICAgICAgICAgICAgICAgICAgICBjLmk2NF9jb25zdCgxKVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgYy5kcm9wKGMuaTY0X2Rpdl91KGMuaTY0X2NvbnN0KDApLCBjLmk2NF9jb25zdCgwKSkpXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG5cbiAgICAgICAgZi5hZGRDb2RlKGMuYmxvY2soYy5sb29wKFxuXG4gICAgICAgICAgICAvLyB3aGlsZSAoZVg+NykmJihZW2VYXT09MCkgZXgtLTtcbiAgICAgICAgICAgIGMuYmxvY2soYy5sb29wKFxuICAgICAgICAgICAgICAgIGMuYnJfaWYoXG4gICAgICAgICAgICAgICAgICAgIDEsXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX29yKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfbG9hZDhfdShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9hZGQoUiAsIGMuZ2V0TG9jYWwoXCJlWFwiKSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgMCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAwXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfZXEoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImVYXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KDcpXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJlWFwiLCBjLmkzMl9zdWIoYy5nZXRMb2NhbChcImVYXCIpLCBjLmkzMl9jb25zdCgxKSkpLFxuICAgICAgICAgICAgICAgIGMuYnIoMClcbiAgICAgICAgICAgICkpLFxuXG4gICAgICAgICAgICBjLnNldExvY2FsKFxuICAgICAgICAgICAgICAgIFwic3hcIixcbiAgICAgICAgICAgICAgICBjLmk2NF9sb2FkKFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9zdWIoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9hZGQoIFIsIGMuZ2V0TG9jYWwoXCJlWFwiKSksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdCg3KVxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAwLFxuICAgICAgICAgICAgICAgICAgICAwXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgYy5zZXRMb2NhbChcbiAgICAgICAgICAgICAgICBcInN4XCIsXG4gICAgICAgICAgICAgICAgYy5pNjRfZGl2X3UoXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJzeFwiKSxcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInN5XCIpXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXG4gICAgICAgICAgICAgICAgXCJlY1wiLFxuICAgICAgICAgICAgICAgIGMuaTMyX3N1YihcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfc3ViKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImVYXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImVZXCIpXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KDQpXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgLy8gV2hpbGUgZ3JlYXRlciB0aGFuIDMyIGJpdHMgb3IgZWMgaXMgbmVnLCBzaHIgYW5kIGluYyBleHBcbiAgICAgICAgICAgIGMuYmxvY2soYy5sb29wKFxuICAgICAgICAgICAgICAgIGMuYnJfaWYoXG4gICAgICAgICAgICAgICAgICAgIDEsXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX2FuZChcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2VxeihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9hbmQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJzeFwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfY29uc3QoXCIweEZGRkZGRkZGMDAwMDAwMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfZ2VfcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiZWNcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QoMClcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFxuICAgICAgICAgICAgICAgICAgICBcInN4XCIsXG4gICAgICAgICAgICAgICAgICAgIGMuaTY0X3Nocl91KFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInN4XCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfY29uc3QoOClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFxuICAgICAgICAgICAgICAgICAgICBcImVjXCIsXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX2FkZChcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJlY1wiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KDEpXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGMuYnIoMClcbiAgICAgICAgICAgICkpLFxuXG4gICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgIGMuaTY0X2VxeihjLmdldExvY2FsKFwic3hcIikpLFxuICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgLi4uYy5icl9pZihcbiAgICAgICAgICAgICAgICAgICAgICAgIDIsXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9lcXooYy5jYWxsKHByZWZpeCArIFwiX2d0ZVwiLCBSLCBZKSlcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgLi4uYy5zZXRMb2NhbChcInN4XCIsIGMuaTY0X2NvbnN0KDEpKSxcbiAgICAgICAgICAgICAgICAgICAgLi4uYy5zZXRMb2NhbChcImVjXCIsIGMuaTMyX2NvbnN0KDApKVxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9fbXVsMVwiLCBZLCBjLmdldExvY2FsKFwic3hcIiksIFIyKSxcbiAgICAgICAgICAgIGMuZHJvcChjLmNhbGwoXG4gICAgICAgICAgICAgICAgcHJlZml4ICsgXCJfc3ViXCIsXG4gICAgICAgICAgICAgICAgUixcbiAgICAgICAgICAgICAgICBjLmkzMl9zdWIoUjIsIGMuZ2V0TG9jYWwoXCJlY1wiKSksXG4gICAgICAgICAgICAgICAgUlxuICAgICAgICAgICAgKSksXG4gICAgICAgICAgICBjLmNhbGwoXG4gICAgICAgICAgICAgICAgcHJlZml4ICsgXCJfX2FkZDFcIixcbiAgICAgICAgICAgICAgICBjLmkzMl9hZGQoQywgYy5nZXRMb2NhbChcImVjXCIpKSxcbiAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwic3hcIilcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjLmJyKDApXG4gICAgICAgICkpKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBidWlsZEludmVyc2VNb2QoKSB7XG5cbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrXCJfaW52ZXJzZU1vZFwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInB4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicG1cIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwclwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcInRcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJuZXd0XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiclwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcInFxXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwicXJcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJuZXdyXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwic3dwXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwieFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcInNpZ250XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwic2lnbm5ld3RcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJzaWdueFwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IGF1eDEgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcbiAgICAgICAgY29uc3QgYXV4MiA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuICAgICAgICBjb25zdCBhdXgzID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44KSk7XG4gICAgICAgIGNvbnN0IGF1eDQgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcbiAgICAgICAgY29uc3QgYXV4NSA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuICAgICAgICBjb25zdCBhdXg2ID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44KSk7XG4gICAgICAgIGNvbnN0IG11bEJ1ZmYgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgqMikpO1xuICAgICAgICBjb25zdCBhdXg3ID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44KSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcInRcIiwgYXV4MSksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfemVyb1wiLCBhdXgxKSxcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJzaWdudFwiLCBjLmkzMl9jb25zdCgwKSksXG4gICAgICAgICk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcInJcIiwgYXV4MiksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfY29weVwiLCBjLmdldExvY2FsKFwicG1cIiksIGF1eDIpXG4gICAgICAgICk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcIm5ld3RcIiwgYXV4MyksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfb25lXCIsIGF1eDMpLFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcInNpZ25uZXd0XCIsIGMuaTMyX2NvbnN0KDApKSxcbiAgICAgICAgKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLnNldExvY2FsKFwibmV3clwiLCBhdXg0KSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9jb3B5XCIsIGMuZ2V0TG9jYWwoXCJweFwiKSwgYXV4NClcbiAgICAgICAgKTtcblxuXG5cblxuICAgICAgICBmLmFkZENvZGUoYy5zZXRMb2NhbChcInFxXCIsIGF1eDUpKTtcbiAgICAgICAgZi5hZGRDb2RlKGMuc2V0TG9jYWwoXCJxclwiLCBhdXg2KSk7XG4gICAgICAgIGYuYWRkQ29kZShjLnNldExvY2FsKFwieFwiLCBhdXg3KSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKGMuYmxvY2soYy5sb29wKFxuICAgICAgICAgICAgYy5icl9pZihcbiAgICAgICAgICAgICAgICAxLFxuICAgICAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9pc1plcm9cIiwgYy5nZXRMb2NhbChcIm5ld3JcIikgKVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9kaXZcIiwgYy5nZXRMb2NhbChcInJcIiksIGMuZ2V0TG9jYWwoXCJuZXdyXCIpLCBjLmdldExvY2FsKFwicXFcIiksIGMuZ2V0TG9jYWwoXCJxclwiKSksXG5cbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9tdWxcIiwgYy5nZXRMb2NhbChcInFxXCIpLCBjLmdldExvY2FsKFwibmV3dFwiKSwgbXVsQnVmZiksXG5cbiAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInNpZ250XCIpLFxuICAgICAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJzaWdubmV3dFwiKSxcbiAgICAgICAgICAgICAgICAgICAgYy5pZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfZ3RlXCIsIG11bEJ1ZmYsIGMuZ2V0TG9jYWwoXCJ0XCIpKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5jLmRyb3AoYy5jYWxsKHByZWZpeCArIFwiX3N1YlwiLCBtdWxCdWZmLCBjLmdldExvY2FsKFwidFwiKSwgYy5nZXRMb2NhbChcInhcIikpKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5jLnNldExvY2FsKFwic2lnbnhcIiwgYy5pMzJfY29uc3QoMCkpXG4gICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLmMuZHJvcChjLmNhbGwocHJlZml4ICsgXCJfc3ViXCIsIGMuZ2V0TG9jYWwoXCJ0XCIpLCBtdWxCdWZmLCBjLmdldExvY2FsKFwieFwiKSkpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLmMuc2V0TG9jYWwoXCJzaWdueFwiLCBjLmkzMl9jb25zdCgxKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLmMuZHJvcChjLmNhbGwocHJlZml4ICsgXCJfYWRkXCIsIG11bEJ1ZmYsIGMuZ2V0TG9jYWwoXCJ0XCIpLCBjLmdldExvY2FsKFwieFwiKSkpLFxuICAgICAgICAgICAgICAgICAgICAgICAgLi4uYy5zZXRMb2NhbChcInNpZ254XCIsIGMuaTMyX2NvbnN0KDEpKVxuICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwic2lnbm5ld3RcIiksXG4gICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLmMuZHJvcChjLmNhbGwocHJlZml4ICsgXCJfYWRkXCIsIG11bEJ1ZmYsIGMuZ2V0TG9jYWwoXCJ0XCIpLCBjLmdldExvY2FsKFwieFwiKSkpLFxuICAgICAgICAgICAgICAgICAgICAgICAgLi4uYy5zZXRMb2NhbChcInNpZ254XCIsIGMuaTMyX2NvbnN0KDApKVxuICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICBjLmlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9ndGVcIiwgYy5nZXRMb2NhbChcInRcIiksIG11bEJ1ZmYpLFxuICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLmMuZHJvcChjLmNhbGwocHJlZml4ICsgXCJfc3ViXCIsIGMuZ2V0TG9jYWwoXCJ0XCIpLCBtdWxCdWZmLCBjLmdldExvY2FsKFwieFwiKSkpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLmMuc2V0TG9jYWwoXCJzaWdueFwiLCBjLmkzMl9jb25zdCgwKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uYy5kcm9wKGMuY2FsbChwcmVmaXggKyBcIl9zdWJcIiwgbXVsQnVmZiwgYy5nZXRMb2NhbChcInRcIiksIGMuZ2V0TG9jYWwoXCJ4XCIpKSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uYy5zZXRMb2NhbChcInNpZ254XCIsIGMuaTMyX2NvbnN0KDEpKVxuICAgICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgYy5zZXRMb2NhbChcInN3cFwiLCBjLmdldExvY2FsKFwidFwiKSksXG4gICAgICAgICAgICBjLnNldExvY2FsKFwidFwiLCBjLmdldExvY2FsKFwibmV3dFwiKSksXG4gICAgICAgICAgICBjLnNldExvY2FsKFwibmV3dFwiLCBjLmdldExvY2FsKFwieFwiKSksXG4gICAgICAgICAgICBjLnNldExvY2FsKFwieFwiLCBjLmdldExvY2FsKFwic3dwXCIpKSxcblxuICAgICAgICAgICAgYy5zZXRMb2NhbChcInNpZ250XCIsIGMuZ2V0TG9jYWwoXCJzaWdubmV3dFwiKSksXG4gICAgICAgICAgICBjLnNldExvY2FsKFwic2lnbm5ld3RcIiwgYy5nZXRMb2NhbChcInNpZ254XCIpKSxcblxuICAgICAgICAgICAgYy5zZXRMb2NhbChcInN3cFwiLCBjLmdldExvY2FsKFwiclwiKSksXG4gICAgICAgICAgICBjLnNldExvY2FsKFwiclwiLCBjLmdldExvY2FsKFwibmV3clwiKSksXG4gICAgICAgICAgICBjLnNldExvY2FsKFwibmV3clwiLCBjLmdldExvY2FsKFwicXJcIikpLFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcInFyXCIsIGMuZ2V0TG9jYWwoXCJzd3BcIikpLFxuXG4gICAgICAgICAgICBjLmJyKDApXG4gICAgICAgICkpKTtcblxuICAgICAgICBmLmFkZENvZGUoYy5pZihcbiAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJzaWdudFwiKSxcbiAgICAgICAgICAgIGMuZHJvcChjLmNhbGwocHJlZml4ICsgXCJfc3ViXCIsIGMuZ2V0TG9jYWwoXCJwbVwiKSwgYy5nZXRMb2NhbChcInRcIiksIGMuZ2V0TG9jYWwoXCJwclwiKSkpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX2NvcHlcIiwgYy5nZXRMb2NhbChcInRcIiksIGMuZ2V0TG9jYWwoXCJwclwiKSlcbiAgICAgICAgKSk7XG4gICAgfVxuXG5cbiAgICBidWlsZENvcHkoKTtcbiAgICBidWlsZFplcm8oKTtcbiAgICBidWlsZElzWmVybygpO1xuICAgIGJ1aWxkT25lKCk7XG4gICAgYnVpbGRFcSgpO1xuICAgIGJ1aWxkR3RlKCk7XG4gICAgYnVpbGRBZGQoKTtcbiAgICBidWlsZFN1YigpO1xuICAgIGJ1aWxkTXVsKCk7XG4gICAgYnVpbGRTcXVhcmUoKTtcbiAgICBidWlsZFNxdWFyZU9sZCgpO1xuICAgIGJ1aWxkRGl2KCk7XG4gICAgYnVpbGRJbnZlcnNlTW9kKCk7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCtcIl9jb3B5XCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXgrXCJfemVyb1wiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4K1wiX29uZVwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4K1wiX2lzWmVyb1wiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4K1wiX2VxXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXgrXCJfZ3RlXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXgrXCJfYWRkXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXgrXCJfc3ViXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXgrXCJfbXVsXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXgrXCJfc3F1YXJlXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXgrXCJfc3F1YXJlT2xkXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXgrXCJfZGl2XCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXgrXCJfaW52ZXJzZU1vZFwiKTtcblxuICAgIHJldHVybiBwcmVmaXg7XG59O1xuXG4vKlxuICAgIENvcHlyaWdodCAyMDE5IDBLSU1TIGFzc29jaWF0aW9uLlxuXG4gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2Ygd2FzbXNuYXJrIChXZWIgQXNzZW1ibHkgemtTbmFyayBQcm92ZXIpLlxuXG4gICAgd2FzbXNuYXJrIGlzIGEgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdFxuICAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3JcbiAgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuXG4gICAgd2FzbXNuYXJrIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUXG4gICAgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZXG4gICAgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljXG4gICAgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuXG4gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAgICBhbG9uZyB3aXRoIHdhc21zbmFyay4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cbiovXG5cbnZhciBidWlsZF90aW1lc3NjYWxhciA9IGZ1bmN0aW9uIGJ1aWxkVGltZXNTY2FsYXIobW9kdWxlLCBmbk5hbWUsIGVsZW1lbnRMZW4sIG9wQUIsIG9wQUEsIG9wQ29weSwgb3BJbml0KSB7XG5cbiAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKGZuTmFtZSk7XG4gICAgZi5hZGRQYXJhbShcImJhc2VcIiwgXCJpMzJcIik7XG4gICAgZi5hZGRQYXJhbShcInNjYWxhclwiLCBcImkzMlwiKTtcbiAgICBmLmFkZFBhcmFtKFwic2NhbGFyTGVuZ3RoXCIsIFwiaTMyXCIpO1xuICAgIGYuYWRkUGFyYW0oXCJyXCIsIFwiaTMyXCIpO1xuICAgIGYuYWRkTG9jYWwoXCJpXCIsIFwiaTMyXCIpO1xuICAgIGYuYWRkTG9jYWwoXCJiXCIsIFwiaTMyXCIpO1xuXG4gICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgIGNvbnN0IGF1eCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhlbGVtZW50TGVuKSk7XG5cbiAgICBmLmFkZENvZGUoXG4gICAgICAgIGMuaWYoXG4gICAgICAgICAgICBjLmkzMl9lcXooYy5nZXRMb2NhbChcInNjYWxhckxlbmd0aFwiKSksXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgLi4uYy5jYWxsKG9wSW5pdCwgYy5nZXRMb2NhbChcInJcIikpLFxuICAgICAgICAgICAgICAgIC4uLmMucmV0KFtdKVxuICAgICAgICAgICAgXVxuICAgICAgICApXG4gICAgKTtcbiAgICBmLmFkZENvZGUoYy5jYWxsKG9wQ29weSwgYy5nZXRMb2NhbChcImJhc2VcIiksIGF1eCkpO1xuICAgIGYuYWRkQ29kZShjLmNhbGwob3BJbml0LCBjLmdldExvY2FsKFwiclwiKSkpO1xuICAgIGYuYWRkQ29kZShjLnNldExvY2FsKFwiaVwiLCBjLmdldExvY2FsKFwic2NhbGFyTGVuZ3RoXCIpKSk7XG4gICAgZi5hZGRDb2RlKGMuYmxvY2soYy5sb29wKFxuICAgICAgICBjLnNldExvY2FsKFwiaVwiLCBjLmkzMl9zdWIoYy5nZXRMb2NhbChcImlcIiksIGMuaTMyX2NvbnN0KDEpKSksXG5cbiAgICAgICAgYy5zZXRMb2NhbChcbiAgICAgICAgICAgIFwiYlwiLFxuICAgICAgICAgICAgYy5pMzJfbG9hZDhfdShcbiAgICAgICAgICAgICAgICBjLmkzMl9hZGQoXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJzY2FsYXJcIiksXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpXCIpXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKVxuICAgICAgICApLFxuICAgICAgICAuLi5pbm5lckxvb3AoKSxcbiAgICAgICAgYy5icl9pZigxLCBjLmkzMl9lcXogKCBjLmdldExvY2FsKFwiaVwiKSApKSxcbiAgICAgICAgYy5icigwKVxuICAgICkpKTtcblxuXG4gICAgZnVuY3Rpb24gaW5uZXJMb29wKCkge1xuICAgICAgICBjb25zdCBjb2RlID0gW107XG4gICAgICAgIGZvciAobGV0IGk9MDsgaTw4OyBpKyspIHtcbiAgICAgICAgICAgIGNvZGUucHVzaChcbiAgICAgICAgICAgICAgICAuLi5jLmNhbGwob3BBQSwgYy5nZXRMb2NhbChcInJcIiksIGMuZ2V0TG9jYWwoXCJyXCIpKSxcbiAgICAgICAgICAgICAgICAuLi5jLmlmKFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9nZV91KCBjLmdldExvY2FsKFwiYlwiKSwgYy5pMzJfY29uc3QoMHg4MCA+PiBpKSksXG4gICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLmMuc2V0TG9jYWwoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJiXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfc3ViKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiYlwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QoMHg4MCA+PiBpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5jLmNhbGwob3BBQiwgYy5nZXRMb2NhbChcInJcIiksYXV4LCBjLmdldExvY2FsKFwiclwiKSlcbiAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGNvZGU7XG4gICAgfVxuXG59O1xuXG52YXIgYnVpbGRfYmF0Y2hpbnZlcnNlID0gYnVpbGRCYXRjaEludmVyc2UkMztcblxuZnVuY3Rpb24gYnVpbGRCYXRjaEludmVyc2UkMyhtb2R1bGUsIHByZWZpeCkge1xuXG5cbiAgICBjb25zdCBuOCA9IG1vZHVsZS5tb2R1bGVzW3ByZWZpeF0ubjY0Kjg7XG5cbiAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCtcIl9iYXRjaEludmVyc2VcIik7XG4gICAgZi5hZGRQYXJhbShcInBJblwiLCBcImkzMlwiKTtcbiAgICBmLmFkZFBhcmFtKFwiaW5TdGVwXCIsIFwiaTMyXCIpO1xuICAgIGYuYWRkUGFyYW0oXCJuXCIsIFwiaTMyXCIpO1xuICAgIGYuYWRkUGFyYW0oXCJwT3V0XCIsIFwiaTMyXCIpO1xuICAgIGYuYWRkUGFyYW0oXCJvdXRTdGVwXCIsIFwiaTMyXCIpO1xuICAgIGYuYWRkTG9jYWwoXCJpdEF1eFwiLCBcImkzMlwiKTtcbiAgICBmLmFkZExvY2FsKFwiaXRJblwiLCBcImkzMlwiKTtcbiAgICBmLmFkZExvY2FsKFwiaXRPdXRcIixcImkzMlwiKTtcbiAgICBmLmFkZExvY2FsKFwiaVwiLFwiaTMyXCIpO1xuXG4gICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgIGNvbnN0IEFVWCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuXG5cbiAgICAvLyBBbGxvYyBXb3JraW5nIHNwYWNlIGZvciBhY2N1bXVsYXRlZCB1bWx0aXBsaWNhdGlvbnNcbiAgICBmLmFkZENvZGUoXG4gICAgICAgIGMuc2V0TG9jYWwoXCJpdEF1eFwiLCBjLmkzMl9sb2FkKCBjLmkzMl9jb25zdCgwKSApKSxcbiAgICAgICAgYy5pMzJfc3RvcmUoXG4gICAgICAgICAgICBjLmkzMl9jb25zdCgwKSxcbiAgICAgICAgICAgIGMuaTMyX2FkZChcbiAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaXRBdXhcIiksXG4gICAgICAgICAgICAgICAgYy5pMzJfbXVsKFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9hZGQoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiblwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KDEpXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KG44KVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgIClcbiAgICAgICAgKVxuICAgICk7XG5cbiAgICBmLmFkZENvZGUoXG5cbiAgICAgICAgLy8gYXV4WzBdID0gYTtcbiAgICAgICAgYy5jYWxsKHByZWZpeCtcIl9vbmVcIiwgYy5nZXRMb2NhbChcIml0QXV4XCIpKSxcbiAgICAgICAgLy8gZm9yIChpPTA7aTxuO2krKykgYXV4W2ldID0gYXV4W2ktMV0qaW5baV1cbiAgICAgICAgYy5zZXRMb2NhbChcIml0SW5cIiwgYy5nZXRMb2NhbChcInBJblwiKSksXG4gICAgICAgIGMuc2V0TG9jYWwoXCJpdEF1eFwiLCBjLmkzMl9hZGQoYy5nZXRMb2NhbChcIml0QXV4XCIpLCBjLmkzMl9jb25zdChuOCkpKSxcbiAgICAgICAgYy5zZXRMb2NhbChcImlcIiwgYy5pMzJfY29uc3QoMCkpLFxuXG4gICAgICAgIGMuYmxvY2soYy5sb29wKFxuICAgICAgICAgICAgYy5icl9pZigxLCBjLmkzMl9lcSAoIGMuZ2V0TG9jYWwoXCJpXCIpLCBjLmdldExvY2FsKFwiblwiKSApKSxcbiAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgYy5jYWxsKHByZWZpeCtcIl9pc1plcm9cIiwgYy5nZXRMb2NhbChcIml0SW5cIikpLFxuICAgICAgICAgICAgICAgIGMuY2FsbChcbiAgICAgICAgICAgICAgICAgICAgcHJlZml4ICsgXCJfY29weVwiLFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9zdWIoYy5nZXRMb2NhbChcIml0QXV4XCIpLCBjLmkzMl9jb25zdChuOCkpLFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaXRBdXhcIilcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGMuY2FsbChcbiAgICAgICAgICAgICAgICAgICAgcHJlZml4K1wiX211bFwiLFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaXRJblwiKSxcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfc3ViKGMuZ2V0TG9jYWwoXCJpdEF1eFwiKSwgYy5pMzJfY29uc3QobjgpKSxcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcIml0QXV4XCIpXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpdEluXCIsIGMuaTMyX2FkZChjLmdldExvY2FsKFwiaXRJblwiKSwgYy5nZXRMb2NhbChcImluU3RlcFwiKSkpLFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcIml0QXV4XCIsIGMuaTMyX2FkZChjLmdldExvY2FsKFwiaXRBdXhcIiksIGMuaTMyX2NvbnN0KG44KSkpLFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcImlcIiwgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJpXCIpLCBjLmkzMl9jb25zdCgxKSkpLFxuICAgICAgICAgICAgYy5icigwKVxuICAgICAgICApKSxcblxuICAgICAgICAvLyBwb2ludCB0byB0aGUgbGFzdFxuICAgICAgICBjLnNldExvY2FsKFwiaXRJblwiLCBjLmkzMl9zdWIoYy5nZXRMb2NhbChcIml0SW5cIiksIGMuZ2V0TG9jYWwoXCJpblN0ZXBcIikpKSxcbiAgICAgICAgYy5zZXRMb2NhbChcIml0QXV4XCIsIGMuaTMyX3N1YihjLmdldExvY2FsKFwiaXRBdXhcIiksIGMuaTMyX2NvbnN0KG44KSkpLFxuICAgICAgICAvLyBpdE91dCA9IHBPdXQgKyAobi0xKSpzdGVwT3V0ICAgLy8gUG9pbnQgdG8gdGhlIGxhc3RcbiAgICAgICAgYy5zZXRMb2NhbChcbiAgICAgICAgICAgIFwiaXRPdXRcIixcbiAgICAgICAgICAgIGMuaTMyX2FkZChcbiAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicE91dFwiKSxcbiAgICAgICAgICAgICAgICBjLmkzMl9tdWwoXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX3N1YihjLmdldExvY2FsKFwiblwiKSwgYy5pMzJfY29uc3QoMSkpLFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwib3V0U3RlcFwiKSxcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApXG4gICAgICAgICksXG5cbiAgICAgICAgLy8gYXV4W24tMV0gPSAxL2F1eFtuLTFdXG4gICAgICAgIGMuY2FsbChwcmVmaXgrXCJfaW52ZXJzZVwiLCBjLmdldExvY2FsKFwiaXRBdXhcIiksIGMuZ2V0TG9jYWwoXCJpdEF1eFwiKSApLFxuXG4gICAgICAgIGMuYmxvY2soYy5sb29wKFxuICAgICAgICAgICAgYy5icl9pZigxLCBjLmkzMl9lcXooIGMuZ2V0TG9jYWwoXCJpXCIpKSksXG4gICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgIGMuY2FsbChwcmVmaXgrXCJfaXNaZXJvXCIsIGMuZ2V0TG9jYWwoXCJpdEluXCIpKSxcbiAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgIC4uLmMuY2FsbChcbiAgICAgICAgICAgICAgICAgICAgICAgIHByZWZpeCArIFwiX2NvcHlcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpdEF1eFwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX3N1YihjLmdldExvY2FsKFwiaXRBdXhcIiksIGMuaTMyX2NvbnN0KG44KSksXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgIC4uLmMuY2FsbChcbiAgICAgICAgICAgICAgICAgICAgICAgIHByZWZpeCArIFwiX3plcm9cIixcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpdE91dFwiKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgXSxbXG4gICAgICAgICAgICAgICAgICAgIC4uLmMuY2FsbChwcmVmaXggKyBcIl9jb3B5XCIsIGMuaTMyX3N1YihjLmdldExvY2FsKFwiaXRBdXhcIiksIGMuaTMyX2NvbnN0KG44KSksIEFVWCksXG4gICAgICAgICAgICAgICAgICAgIC4uLmMuY2FsbChcbiAgICAgICAgICAgICAgICAgICAgICAgIHByZWZpeCtcIl9tdWxcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpdEF1eFwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpdEluXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfc3ViKGMuZ2V0TG9jYWwoXCJpdEF1eFwiKSwgYy5pMzJfY29uc3QobjgpKSxcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgLi4uYy5jYWxsKFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJlZml4K1wiX211bFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcIml0QXV4XCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgQVVYLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcIml0T3V0XCIpXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcIml0SW5cIiwgYy5pMzJfc3ViKGMuZ2V0TG9jYWwoXCJpdEluXCIpLCBjLmdldExvY2FsKFwiaW5TdGVwXCIpKSksXG4gICAgICAgICAgICBjLnNldExvY2FsKFwiaXRPdXRcIiwgYy5pMzJfc3ViKGMuZ2V0TG9jYWwoXCJpdE91dFwiKSwgYy5nZXRMb2NhbChcIm91dFN0ZXBcIikpKSxcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpdEF1eFwiLCBjLmkzMl9zdWIoYy5nZXRMb2NhbChcIml0QXV4XCIpLCBjLmkzMl9jb25zdChuOCkpKSxcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpXCIsIGMuaTMyX3N1YihjLmdldExvY2FsKFwiaVwiKSwgYy5pMzJfY29uc3QoMSkpKSxcbiAgICAgICAgICAgIGMuYnIoMClcbiAgICAgICAgKSlcblxuICAgICk7XG5cblxuICAgIC8vIFJlY292ZXIgT2xkIG1lbW9yeVxuICAgIGYuYWRkQ29kZShcbiAgICAgICAgYy5pMzJfc3RvcmUoXG4gICAgICAgICAgICBjLmkzMl9jb25zdCgwKSxcbiAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpdEF1eFwiKVxuICAgICAgICApXG4gICAgKTtcblxufVxuXG52YXIgYnVpbGRfYmF0Y2hjb252ZXJ0aW9uID0gYnVpbGRCYXRjaENvbnZlcnRpb24kMztcblxuZnVuY3Rpb24gYnVpbGRCYXRjaENvbnZlcnRpb24kMyhtb2R1bGUsIGZuTmFtZSwgaW50ZXJuYWxGbk5hbWUsIHNpemVJbiwgc2l6ZU91dCwgcmV2ZXJzZSkge1xuICAgIGlmICh0eXBlb2YgcmV2ZXJzZSA9PT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgICAvLyBTZXQgdGhlIHJldmVyc2UgaW4gYSB3YXkgdGhhdCBhbGxvd3MgdG8gdXNlIHRoZSBzYW1lIGJ1ZmZlciBhcyBpbi9vdXQuXG4gICAgICAgIGlmIChzaXplSW4gPCBzaXplT3V0KSB7XG4gICAgICAgICAgICByZXZlcnNlID0gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldmVyc2UgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24oZm5OYW1lKTtcbiAgICBmLmFkZFBhcmFtKFwicEluXCIsIFwiaTMyXCIpO1xuICAgIGYuYWRkUGFyYW0oXCJuXCIsIFwiaTMyXCIpO1xuICAgIGYuYWRkUGFyYW0oXCJwT3V0XCIsIFwiaTMyXCIpO1xuICAgIGYuYWRkTG9jYWwoXCJpXCIsIFwiaTMyXCIpO1xuICAgIGYuYWRkTG9jYWwoXCJpdEluXCIsIFwiaTMyXCIpO1xuICAgIGYuYWRkTG9jYWwoXCJpdE91dFwiLCBcImkzMlwiKTtcblxuICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICBpZiAocmV2ZXJzZSkge1xuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLnNldExvY2FsKFwiaXRJblwiLFxuICAgICAgICAgICAgICAgIGMuaTMyX2FkZChcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInBJblwiKSxcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfbXVsKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfc3ViKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJuXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KDEpXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3Qoc2l6ZUluKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpdE91dFwiLFxuICAgICAgICAgICAgICAgIGMuaTMyX2FkZChcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInBPdXRcIiksXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX211bChcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX3N1YihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiblwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdCgxKVxuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KHNpemVPdXQpXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcImlcIiwgYy5pMzJfY29uc3QoMCkpLFxuICAgICAgICAgICAgYy5ibG9jayhjLmxvb3AoXG4gICAgICAgICAgICAgICAgYy5icl9pZigxLCBjLmkzMl9lcSAoIGMuZ2V0TG9jYWwoXCJpXCIpLCBjLmdldExvY2FsKFwiblwiKSApKSxcblxuICAgICAgICAgICAgICAgIGMuY2FsbChpbnRlcm5hbEZuTmFtZSwgYy5nZXRMb2NhbChcIml0SW5cIiksIGMuZ2V0TG9jYWwoXCJpdE91dFwiKSksXG5cbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFwiaXRJblwiLCBjLmkzMl9zdWIoYy5nZXRMb2NhbChcIml0SW5cIiksIGMuaTMyX2NvbnN0KHNpemVJbikpKSxcbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFwiaXRPdXRcIiwgYy5pMzJfc3ViKGMuZ2V0TG9jYWwoXCJpdE91dFwiKSwgYy5pMzJfY29uc3Qoc2l6ZU91dCkpKSxcbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFwiaVwiLCBjLmkzMl9hZGQoYy5nZXRMb2NhbChcImlcIiksIGMuaTMyX2NvbnN0KDEpKSksXG4gICAgICAgICAgICAgICAgYy5icigwKVxuICAgICAgICAgICAgKSksXG4gICAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcIml0SW5cIiwgYy5nZXRMb2NhbChcInBJblwiKSksXG4gICAgICAgICAgICBjLnNldExvY2FsKFwiaXRPdXRcIiwgYy5nZXRMb2NhbChcInBPdXRcIikpLFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcImlcIiwgYy5pMzJfY29uc3QoMCkpLFxuICAgICAgICAgICAgYy5ibG9jayhjLmxvb3AoXG4gICAgICAgICAgICAgICAgYy5icl9pZigxLCBjLmkzMl9lcSAoIGMuZ2V0TG9jYWwoXCJpXCIpLCBjLmdldExvY2FsKFwiblwiKSApKSxcblxuICAgICAgICAgICAgICAgIGMuY2FsbChpbnRlcm5hbEZuTmFtZSwgYy5nZXRMb2NhbChcIml0SW5cIiksIGMuZ2V0TG9jYWwoXCJpdE91dFwiKSksXG5cbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFwiaXRJblwiLCBjLmkzMl9hZGQoYy5nZXRMb2NhbChcIml0SW5cIiksIGMuaTMyX2NvbnN0KHNpemVJbikpKSxcbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFwiaXRPdXRcIiwgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJpdE91dFwiKSwgYy5pMzJfY29uc3Qoc2l6ZU91dCkpKSxcbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFwiaVwiLCBjLmkzMl9hZGQoYy5nZXRMb2NhbChcImlcIiksIGMuaTMyX2NvbnN0KDEpKSksXG4gICAgICAgICAgICAgICAgYy5icigwKVxuICAgICAgICAgICAgKSksXG4gICAgICAgICk7XG4gICAgfVxufVxuXG52YXIgYnVpbGRfYmF0Y2hvcCA9IGJ1aWxkQmF0Y2hDb252ZXJ0aW9uJDI7XG5cbmZ1bmN0aW9uIGJ1aWxkQmF0Y2hDb252ZXJ0aW9uJDIobW9kdWxlLCBmbk5hbWUsIGludGVybmFsRm5OYW1lLCBzaXplSW4sIHNpemVPdXQsIHJldmVyc2UpIHtcbiAgICBpZiAodHlwZW9mIHJldmVyc2UgPT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgICAgLy8gU2V0IHRoZSByZXZlcnNlIGluIGEgd2F5IHRoYXQgYWxsb3dzIHRvIHVzZSB0aGUgc2FtZSBidWZmZXIgYXMgaW4vb3V0LlxuICAgICAgICBpZiAoc2l6ZUluIDwgc2l6ZU91dCkge1xuICAgICAgICAgICAgcmV2ZXJzZSA9IHRydWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXZlcnNlID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKGZuTmFtZSk7XG4gICAgZi5hZGRQYXJhbShcInBJbjFcIiwgXCJpMzJcIik7XG4gICAgZi5hZGRQYXJhbShcInBJbjJcIiwgXCJpMzJcIik7XG4gICAgZi5hZGRQYXJhbShcIm5cIiwgXCJpMzJcIik7XG4gICAgZi5hZGRQYXJhbShcInBPdXRcIiwgXCJpMzJcIik7XG4gICAgZi5hZGRMb2NhbChcImlcIiwgXCJpMzJcIik7XG4gICAgZi5hZGRMb2NhbChcIml0SW4xXCIsIFwiaTMyXCIpO1xuICAgIGYuYWRkTG9jYWwoXCJpdEluMlwiLCBcImkzMlwiKTtcbiAgICBmLmFkZExvY2FsKFwiaXRPdXRcIiwgXCJpMzJcIik7XG5cbiAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgaWYgKHJldmVyc2UpIHtcbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcIml0SW4xXCIsXG4gICAgICAgICAgICAgICAgYy5pMzJfYWRkKFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicEluMVwiKSxcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfbXVsKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfc3ViKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJuXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KDEpXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3Qoc2l6ZUluKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpdEluMlwiLFxuICAgICAgICAgICAgICAgIGMuaTMyX2FkZChcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInBJbjJcIiksXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX211bChcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX3N1YihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiblwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdCgxKVxuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KHNpemVJbilcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjLnNldExvY2FsKFwiaXRPdXRcIixcbiAgICAgICAgICAgICAgICBjLmkzMl9hZGQoXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwT3V0XCIpLFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9tdWwoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9zdWIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcIm5cIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QoMSlcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdChzaXplT3V0KVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpXCIsIGMuaTMyX2NvbnN0KDApKSxcbiAgICAgICAgICAgIGMuYmxvY2soYy5sb29wKFxuICAgICAgICAgICAgICAgIGMuYnJfaWYoMSwgYy5pMzJfZXEgKCBjLmdldExvY2FsKFwiaVwiKSwgYy5nZXRMb2NhbChcIm5cIikgKSksXG5cbiAgICAgICAgICAgICAgICBjLmNhbGwoaW50ZXJuYWxGbk5hbWUsIGMuZ2V0TG9jYWwoXCJpdEluMVwiKSwgYy5nZXRMb2NhbChcIml0SW4yXCIpLCBjLmdldExvY2FsKFwiaXRPdXRcIikpLFxuXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcIml0SW4xXCIsIGMuaTMyX3N1YihjLmdldExvY2FsKFwiaXRJbjFcIiksIGMuaTMyX2NvbnN0KHNpemVJbikpKSxcbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFwiaXRJbjJcIiwgYy5pMzJfc3ViKGMuZ2V0TG9jYWwoXCJpdEluMlwiKSwgYy5pMzJfY29uc3Qoc2l6ZUluKSkpLFxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpdE91dFwiLCBjLmkzMl9zdWIoYy5nZXRMb2NhbChcIml0T3V0XCIpLCBjLmkzMl9jb25zdChzaXplT3V0KSkpLFxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpXCIsIGMuaTMyX2FkZChjLmdldExvY2FsKFwiaVwiKSwgYy5pMzJfY29uc3QoMSkpKSxcbiAgICAgICAgICAgICAgICBjLmJyKDApXG4gICAgICAgICAgICApKSxcbiAgICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLnNldExvY2FsKFwiaXRJbjFcIiwgYy5nZXRMb2NhbChcInBJbjFcIikpLFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcIml0SW4yXCIsIGMuZ2V0TG9jYWwoXCJwSW4yXCIpKSxcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpdE91dFwiLCBjLmdldExvY2FsKFwicE91dFwiKSksXG4gICAgICAgICAgICBjLnNldExvY2FsKFwiaVwiLCBjLmkzMl9jb25zdCgwKSksXG4gICAgICAgICAgICBjLmJsb2NrKGMubG9vcChcbiAgICAgICAgICAgICAgICBjLmJyX2lmKDEsIGMuaTMyX2VxICggYy5nZXRMb2NhbChcImlcIiksIGMuZ2V0TG9jYWwoXCJuXCIpICkpLFxuXG4gICAgICAgICAgICAgICAgYy5jYWxsKGludGVybmFsRm5OYW1lLCBjLmdldExvY2FsKFwiaXRJbjFcIiksIGMuZ2V0TG9jYWwoXCJpdEluMlwiKSwgYy5nZXRMb2NhbChcIml0T3V0XCIpKSxcblxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpdEluMVwiLCBjLmkzMl9hZGQoYy5nZXRMb2NhbChcIml0SW4xXCIpLCBjLmkzMl9jb25zdChzaXplSW4pKSksXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcIml0SW4yXCIsIGMuaTMyX2FkZChjLmdldExvY2FsKFwiaXRJbjJcIiksIGMuaTMyX2NvbnN0KHNpemVJbikpKSxcbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFwiaXRPdXRcIiwgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJpdE91dFwiKSwgYy5pMzJfY29uc3Qoc2l6ZU91dCkpKSxcbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFwiaVwiLCBjLmkzMl9hZGQoYy5nZXRMb2NhbChcImlcIiksIGMuaTMyX2NvbnN0KDEpKSksXG4gICAgICAgICAgICAgICAgYy5icigwKVxuICAgICAgICAgICAgKSksXG4gICAgICAgICk7XG4gICAgfVxufVxuXG52YXIgYmlnaW50ID0ge307XG5cbi8vIE1hbnkgb2YgdGhlc2UgdXRpbGl0aWVzIGFyZSBmcm9tIHRoZSBgYmlnLWludGVnZXJgIGxpYnJhcnksXG4vLyBidXQgYWRqdXN0ZWQgdG8gb25seSB3b3JrIHdpdGggbmF0aXZlIEJpZ0ludCB0eXBlXG4vLyBSZWYgaHR0cHM6Ly9naXRodWIuY29tL3BldGVyb2xzb24vQmlnSW50ZWdlci5qcy9ibG9iL2U1ZDIxNTRkM2M0MTcwNjljNTFlNzExNmJhZmMzYjkxZDBiOWZlNDEvQmlnSW50ZWdlci5qc1xuLy8gT3JpZ2luYWxseSBsaWNlbnNlZCBUaGUgVW5saWNlbnNlXG5cbmZ1bmN0aW9uIGNvbXBhcmUoYSwgYikge1xuICAgIHJldHVybiBhID09PSBiID8gMCA6IGEgPiBiID8gMSA6IC0xO1xufVxuXG5mdW5jdGlvbiBzcXVhcmUkMShuKSB7XG4gICAgcmV0dXJuIG4gKiBuO1xufVxuXG5mdW5jdGlvbiBpc09kZCQ0KG4pIHtcbiAgICByZXR1cm4gbiAlIDJuICE9PSAwbjtcbn1cblxuZnVuY3Rpb24gaXNFdmVuKG4pIHtcbiAgICByZXR1cm4gbiAlIDJuID09PSAwbjtcbn1cblxuZnVuY3Rpb24gaXNOZWdhdGl2ZSQzKG4pIHtcbiAgICByZXR1cm4gbiA8IDBuO1xufVxuXG5mdW5jdGlvbiBpc1Bvc2l0aXZlKG4pIHtcbiAgICByZXR1cm4gbiA+IDBuO1xufVxuXG5mdW5jdGlvbiBiaXRMZW5ndGgkNShuKSB7XG4gICAgaWYgKGlzTmVnYXRpdmUkMyhuKSkge1xuICAgICAgICByZXR1cm4gbi50b1N0cmluZygyKS5sZW5ndGggLSAxOyAvLyBkaXNjYXJkIHRoZSAtIHNpZ25cbiAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gbi50b1N0cmluZygyKS5sZW5ndGg7XG4gICAgfVxufVxuXG5mdW5jdGlvbiBhYnMobikge1xuICAgIHJldHVybiBuIDwgMG4gPyAtbiA6IG47XG59XG5cbmZ1bmN0aW9uIGlzVW5pdChuKSB7XG4gICAgcmV0dXJuIGFicyhuKSA9PT0gMW47XG59XG5cbmZ1bmN0aW9uIG1vZEludiQzKGEsIG4pIHtcbiAgICB2YXIgdCA9IDBuLCBuZXdUID0gMW4sIHIgPSBuLCBuZXdSID0gYWJzKGEpLCBxLCBsYXN0VCwgbGFzdFI7XG4gICAgd2hpbGUgKG5ld1IgIT09IDBuKSB7XG4gICAgICAgIHEgPSByIC8gbmV3UjtcbiAgICAgICAgbGFzdFQgPSB0O1xuICAgICAgICBsYXN0UiA9IHI7XG4gICAgICAgIHQgPSBuZXdUO1xuICAgICAgICByID0gbmV3UjtcbiAgICAgICAgbmV3VCA9IGxhc3RUIC0gKHEgKiBuZXdUKTtcbiAgICAgICAgbmV3UiA9IGxhc3RSIC0gKHEgKiBuZXdSKTtcbiAgICB9XG4gICAgaWYgKCFpc1VuaXQocikpIHRocm93IG5ldyBFcnJvcihhLnRvU3RyaW5nKCkgKyBcIiBhbmQgXCIgKyBuLnRvU3RyaW5nKCkgKyBcIiBhcmUgbm90IGNvLXByaW1lXCIpO1xuICAgIGlmIChjb21wYXJlKHQsIDBuKSA9PT0gLTEpIHtcbiAgICAgICAgdCA9IHQgKyBuO1xuICAgIH1cbiAgICBpZiAoaXNOZWdhdGl2ZSQzKGEpKSB7XG4gICAgICAgIHJldHVybiAtdDtcbiAgICB9XG4gICAgcmV0dXJuIHQ7XG59XG5cbmZ1bmN0aW9uIG1vZFBvdyQyKG4sIGV4cCwgbW9kKSB7XG4gICAgaWYgKG1vZCA9PT0gMG4pIHRocm93IG5ldyBFcnJvcihcIkNhbm5vdCB0YWtlIG1vZFBvdyB3aXRoIG1vZHVsdXMgMFwiKTtcbiAgICB2YXIgciA9IDFuLFxuICAgICAgICBiYXNlID0gbiAlIG1vZDtcbiAgICBpZiAoaXNOZWdhdGl2ZSQzKGV4cCkpIHtcbiAgICAgICAgZXhwID0gZXhwICogLTFuO1xuICAgICAgICBiYXNlID0gbW9kSW52JDMoYmFzZSwgbW9kKTtcbiAgICB9XG4gICAgd2hpbGUgKGlzUG9zaXRpdmUoZXhwKSkge1xuICAgICAgICBpZiAoYmFzZSA9PT0gMG4pIHJldHVybiAwbjtcbiAgICAgICAgaWYgKGlzT2RkJDQoZXhwKSkgciA9IHIgKiBiYXNlICUgbW9kO1xuICAgICAgICBleHAgPSBleHAgLyAybjtcbiAgICAgICAgYmFzZSA9IHNxdWFyZSQxKGJhc2UpICUgbW9kO1xuICAgIH1cbiAgICByZXR1cm4gcjtcbn1cblxuZnVuY3Rpb24gY29tcGFyZUFicyhhLCBiKSB7XG4gICAgYSA9IGEgPj0gMG4gPyBhIDogLWE7XG4gICAgYiA9IGIgPj0gMG4gPyBiIDogLWI7XG4gICAgcmV0dXJuIGEgPT09IGIgPyAwIDogYSA+IGIgPyAxIDogLTE7XG59XG5cbmZ1bmN0aW9uIGlzRGl2aXNpYmxlQnkoYSwgbikge1xuICAgIGlmIChuID09PSAwbikgcmV0dXJuIGZhbHNlO1xuICAgIGlmIChpc1VuaXQobikpIHJldHVybiB0cnVlO1xuICAgIGlmIChjb21wYXJlQWJzKG4sIDJuKSA9PT0gMCkgcmV0dXJuIGlzRXZlbihhKTtcbiAgICByZXR1cm4gYSAlIG4gPT09IDBuO1xufVxuXG5mdW5jdGlvbiBpc0Jhc2ljUHJpbWUodikge1xuICAgIHZhciBuID0gYWJzKHYpO1xuICAgIGlmIChpc1VuaXQobikpIHJldHVybiBmYWxzZTtcbiAgICBpZiAobiA9PT0gMm4gfHwgbiA9PT0gM24gfHwgbiA9PT0gNW4pIHJldHVybiB0cnVlO1xuICAgIGlmIChpc0V2ZW4obikgfHwgaXNEaXZpc2libGVCeShuLCAzbikgfHwgaXNEaXZpc2libGVCeShuLCA1bikpIHJldHVybiBmYWxzZTtcbiAgICBpZiAobiA8IDQ5bikgcmV0dXJuIHRydWU7XG4gICAgLy8gd2UgZG9uJ3Qga25vdyBpZiBpdCdzIHByaW1lOiBsZXQgdGhlIG90aGVyIGZ1bmN0aW9ucyBmaWd1cmUgaXQgb3V0XG59XG5cbmZ1bmN0aW9uIHByZXYobikge1xuICAgIHJldHVybiBuIC0gMW47XG59XG5cbmZ1bmN0aW9uIG1pbGxlclJhYmluVGVzdChuLCBhKSB7XG4gICAgdmFyIG5QcmV2ID0gcHJldihuKSxcbiAgICAgICAgYiA9IG5QcmV2LFxuICAgICAgICByID0gMCxcbiAgICAgICAgZCwgaSwgeDtcbiAgICB3aGlsZSAoaXNFdmVuKGIpKSBiID0gYiAvIDJuLCByKys7XG4gICAgbmV4dDogZm9yIChpID0gMDsgaSA8IGEubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgaWYgKG4gPCBhW2ldKSBjb250aW51ZTtcbiAgICAgICAgeCA9IG1vZFBvdyQyKEJpZ0ludChhW2ldKSwgYiwgbik7XG4gICAgICAgIGlmIChpc1VuaXQoeCkgfHwgeCA9PT0gblByZXYpIGNvbnRpbnVlO1xuICAgICAgICBmb3IgKGQgPSByIC0gMTsgZCAhPSAwOyBkLS0pIHtcbiAgICAgICAgICAgIHggPSBzcXVhcmUkMSh4KSAlIG47XG4gICAgICAgICAgICBpZiAoaXNVbml0KHgpKSByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICBpZiAoeCA9PT0gblByZXYpIGNvbnRpbnVlIG5leHQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbn1cblxuZnVuY3Rpb24gaXNQcmltZSQxKHApIHtcbiAgICB2YXIgaXNQcmltZSA9IGlzQmFzaWNQcmltZShwKTtcbiAgICBpZiAoaXNQcmltZSAhPT0gdW5kZWZpbmVkKSByZXR1cm4gaXNQcmltZTtcbiAgICB2YXIgbiA9IGFicyhwKTtcbiAgICB2YXIgYml0cyA9IGJpdExlbmd0aCQ1KG4pO1xuICAgIGlmIChiaXRzIDw9IDY0KVxuICAgICAgICByZXR1cm4gbWlsbGVyUmFiaW5UZXN0KG4sIFsyLCAzLCA1LCA3LCAxMSwgMTMsIDE3LCAxOSwgMjMsIDI5LCAzMSwgMzddKTtcbiAgICB2YXIgbG9nTiA9IE1hdGgubG9nKDIpICogTnVtYmVyKGJpdHMpO1xuICAgIHZhciB0ID0gTWF0aC5jZWlsKGxvZ04pO1xuICAgIGZvciAodmFyIGEgPSBbXSwgaSA9IDA7IGkgPCB0OyBpKyspIHtcbiAgICAgICAgYS5wdXNoKEJpZ0ludChpICsgMikpO1xuICAgIH1cbiAgICByZXR1cm4gbWlsbGVyUmFiaW5UZXN0KG4sIGEpO1xufVxuXG5iaWdpbnQuYml0TGVuZ3RoID0gYml0TGVuZ3RoJDU7XG5iaWdpbnQuaXNPZGQgPSBpc09kZCQ0O1xuYmlnaW50LmlzTmVnYXRpdmUgPSBpc05lZ2F0aXZlJDM7XG5iaWdpbnQuYWJzID0gYWJzO1xuYmlnaW50LmlzVW5pdCA9IGlzVW5pdDtcbmJpZ2ludC5jb21wYXJlID0gY29tcGFyZTtcbmJpZ2ludC5tb2RJbnYgPSBtb2RJbnYkMztcbmJpZ2ludC5tb2RQb3cgPSBtb2RQb3ckMjtcbmJpZ2ludC5pc1ByaW1lID0gaXNQcmltZSQxO1xuYmlnaW50LnNxdWFyZSA9IHNxdWFyZSQxO1xuXG4vKlxuICAgIENvcHlyaWdodCAyMDE5IDBLSU1TIGFzc29jaWF0aW9uLlxuXG4gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2Ygd2FzbXNuYXJrIChXZWIgQXNzZW1ibHkgemtTbmFyayBQcm92ZXIpLlxuXG4gICAgd2FzbXNuYXJrIGlzIGEgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdFxuICAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3JcbiAgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuXG4gICAgd2FzbXNuYXJrIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUXG4gICAgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZXG4gICAgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljXG4gICAgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuXG4gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAgICBhbG9uZyB3aXRoIHdhc21zbmFyay4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cbiovXG5cbmNvbnN0IGJ1aWxkSW50ID0gYnVpbGRfaW50O1xuY29uc3QgdXRpbHMkNSA9IHV0aWxzJDY7XG5jb25zdCBidWlsZEV4cCQyID0gYnVpbGRfdGltZXNzY2FsYXI7XG5jb25zdCBidWlsZEJhdGNoSW52ZXJzZSQyID0gYnVpbGRfYmF0Y2hpbnZlcnNlO1xuY29uc3QgYnVpbGRCYXRjaENvbnZlcnRpb24kMSA9IGJ1aWxkX2JhdGNoY29udmVydGlvbjtcbmNvbnN0IGJ1aWxkQmF0Y2hPcCA9IGJ1aWxkX2JhdGNob3A7XG5jb25zdCB7IGJpdExlbmd0aDogYml0TGVuZ3RoJDQsIG1vZEludjogbW9kSW52JDIsIG1vZFBvdzogbW9kUG93JDEsIGlzUHJpbWUsIGlzT2RkOiBpc09kZCQzLCBzcXVhcmUgfSA9IGJpZ2ludDtcblxudmFyIGJ1aWxkX2YxbSA9IGZ1bmN0aW9uIGJ1aWxkRjFtKG1vZHVsZSwgX3EsIF9wcmVmaXgsIF9pbnRQcmVmaXgpIHtcbiAgICBjb25zdCBxID0gQmlnSW50KF9xKTtcbiAgICBjb25zdCBuNjQgPSBNYXRoLmZsb29yKChiaXRMZW5ndGgkNChxIC0gMW4pIC0gMSkvNjQpICsxO1xuICAgIGNvbnN0IG4zMiA9IG42NCoyO1xuICAgIGNvbnN0IG44ID0gbjY0Kjg7XG5cbiAgICBjb25zdCBwcmVmaXggPSBfcHJlZml4IHx8IFwiZjFtXCI7XG4gICAgaWYgKG1vZHVsZS5tb2R1bGVzW3ByZWZpeF0pIHJldHVybiBwcmVmaXg7ICAvLyBhbHJlYWR5IGJ1aWxkZWRcblxuICAgIGNvbnN0IGludFByZWZpeCA9IGJ1aWxkSW50KG1vZHVsZSwgbjY0LCBfaW50UHJlZml4KTtcbiAgICBjb25zdCBwcSA9IG1vZHVsZS5hbGxvYyhuOCwgdXRpbHMkNS5iaWdJbnQyQnl0ZXNMRShxLCBuOCkpO1xuXG4gICAgY29uc3QgcFIyID0gbW9kdWxlLmFsbG9jKHV0aWxzJDUuYmlnSW50MkJ5dGVzTEUoc3F1YXJlKDFuIDw8IEJpZ0ludChuNjQqNjQpKSAlIHEsIG44KSk7XG4gICAgY29uc3QgcE9uZSA9IG1vZHVsZS5hbGxvYyh1dGlscyQ1LmJpZ0ludDJCeXRlc0xFKCgxbiA8PCBCaWdJbnQobjY0KjY0KSkgJSBxLCBuOCkpO1xuICAgIGNvbnN0IHBaZXJvID0gbW9kdWxlLmFsbG9jKHV0aWxzJDUuYmlnSW50MkJ5dGVzTEUoMG4sIG44KSk7XG4gICAgY29uc3QgX21pbnVzT25lID0gcSAtIDFuO1xuICAgIGNvbnN0IF9lID0gX21pbnVzT25lID4+IDFuOyAvLyBlID0gKHAtMSkvMlxuICAgIGNvbnN0IHBlID0gbW9kdWxlLmFsbG9jKG44LCB1dGlscyQ1LmJpZ0ludDJCeXRlc0xFKF9lLCBuOCkpO1xuXG4gICAgY29uc3QgX2VQbHVzT25lID0gX2UgKyAxbjsgLy8gZSA9IChwLTEpLzJcbiAgICBjb25zdCBwZVBsdXNPbmUgPSBtb2R1bGUuYWxsb2MobjgsIHV0aWxzJDUuYmlnSW50MkJ5dGVzTEUoX2VQbHVzT25lLCBuOCkpO1xuXG4gICAgbW9kdWxlLm1vZHVsZXNbcHJlZml4XSA9IHtcbiAgICAgICAgcHE6IHBxLFxuICAgICAgICBwUjI6IHBSMixcbiAgICAgICAgbjY0OiBuNjQsXG4gICAgICAgIHE6IHEsXG4gICAgICAgIHBPbmU6IHBPbmUsXG4gICAgICAgIHBaZXJvOiBwWmVybyxcbiAgICAgICAgcGVQbHVzT25lOiBwZVBsdXNPbmVcbiAgICB9O1xuXG4gICAgZnVuY3Rpb24gYnVpbGRPbmUoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4K1wiX29uZVwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInByXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgZi5hZGRDb2RlKGMuY2FsbChpbnRQcmVmaXggKyBcIl9jb3B5XCIsIGMuaTMyX2NvbnN0KHBPbmUpLCBjLmdldExvY2FsKFwicHJcIikpKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBidWlsZEFkZCgpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrXCJfYWRkXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInlcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJyXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICBjLmNhbGwoaW50UHJlZml4K1wiX2FkZFwiLCBjLmdldExvY2FsKFwieFwiKSwgIGMuZ2V0TG9jYWwoXCJ5XCIpLCBjLmdldExvY2FsKFwiclwiKSksXG4gICAgICAgICAgICAgICAgYy5kcm9wKGMuY2FsbChpbnRQcmVmaXgrXCJfc3ViXCIsIGMuZ2V0TG9jYWwoXCJyXCIpLCBjLmkzMl9jb25zdChwcSksIGMuZ2V0TG9jYWwoXCJyXCIpKSksXG4gICAgICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICAgICAgYy5jYWxsKGludFByZWZpeCtcIl9ndGVcIiwgYy5nZXRMb2NhbChcInJcIiksIGMuaTMyX2NvbnN0KHBxKSAgKSxcbiAgICAgICAgICAgICAgICAgICAgYy5kcm9wKGMuY2FsbChpbnRQcmVmaXgrXCJfc3ViXCIsIGMuZ2V0TG9jYWwoXCJyXCIpLCBjLmkzMl9jb25zdChwcSksIGMuZ2V0TG9jYWwoXCJyXCIpKSksXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGJ1aWxkU3ViKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCtcIl9zdWJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInJcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgIGMuY2FsbChpbnRQcmVmaXgrXCJfc3ViXCIsIGMuZ2V0TG9jYWwoXCJ4XCIpLCAgYy5nZXRMb2NhbChcInlcIiksIGMuZ2V0TG9jYWwoXCJyXCIpKSxcbiAgICAgICAgICAgICAgICBjLmRyb3AoYy5jYWxsKGludFByZWZpeCtcIl9hZGRcIiwgYy5nZXRMb2NhbChcInJcIiksICBjLmkzMl9jb25zdChwcSksIGMuZ2V0TG9jYWwoXCJyXCIpKSlcbiAgICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBidWlsZE5lZygpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrXCJfbmVnXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInJcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfc3ViXCIsIGMuaTMyX2NvbnN0KHBaZXJvKSwgYy5nZXRMb2NhbChcInhcIiksIGMuZ2V0TG9jYWwoXCJyXCIpKVxuICAgICAgICApO1xuICAgIH1cblxuXG4gICAgZnVuY3Rpb24gYnVpbGRJc05lZ2F0aXZlKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCtcIl9pc05lZ2F0aXZlXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5zZXRSZXR1cm5UeXBlKFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgQVVYID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44KSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX2Zyb21Nb250Z29tZXJ5XCIsIGMuZ2V0TG9jYWwoXCJ4XCIpLCBBVVgpLFxuICAgICAgICAgICAgYy5jYWxsKGludFByZWZpeCArIFwiX2d0ZVwiLCBBVVgsIGMuaTMyX2NvbnN0KHBlUGx1c09uZSkgKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGJ1aWxkU2lnbigpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrXCJfc2lnblwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInhcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuc2V0UmV0dXJuVHlwZShcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IEFVWCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuaWYgKFxuICAgICAgICAgICAgICAgIGMuY2FsbChpbnRQcmVmaXggKyBcIl9pc1plcm9cIiwgYy5nZXRMb2NhbChcInhcIikpLFxuICAgICAgICAgICAgICAgIGMucmV0KGMuaTMyX2NvbnN0KDApKVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9mcm9tTW9udGdvbWVyeVwiLCBjLmdldExvY2FsKFwieFwiKSwgQVVYKSxcbiAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgYy5jYWxsKGludFByZWZpeCArIFwiX2d0ZVwiLCBBVVgsIGMuaTMyX2NvbnN0KHBlUGx1c09uZSkpLFxuICAgICAgICAgICAgICAgIGMucmV0KGMuaTMyX2NvbnN0KC0xKSlcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjLnJldChjLmkzMl9jb25zdCgxKSlcbiAgICAgICAgKTtcbiAgICB9XG5cblxuICAgIGZ1bmN0aW9uIGJ1aWxkTVJlZHVjdCgpIHtcbiAgICAgICAgY29uc3QgY2FycmllcyA9IG1vZHVsZS5hbGxvYyhuMzIqbjMyKjgpO1xuXG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4K1wiX21SZWR1Y3RcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ0XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiclwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcIm5wMzJcIiwgXCJpNjRcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJjXCIsIFwiaTY0XCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwibVwiLCBcImk2NFwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IG5wMzIgPSBOdW1iZXIoMHgxMDAwMDAwMDBuIC0gbW9kSW52JDIocSwgMHgxMDAwMDAwMDBuKSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKGMuc2V0TG9jYWwoXCJucDMyXCIsIGMuaTY0X2NvbnN0KG5wMzIpKSk7XG5cbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPG4zMjsgaSsrKSB7XG4gICAgICAgICAgICBmLmFkZENvZGUoYy5zZXRMb2NhbChcImNcIiwgYy5pNjRfY29uc3QoMCkpKTtcblxuICAgICAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXG4gICAgICAgICAgICAgICAgICAgIFwibVwiLFxuICAgICAgICAgICAgICAgICAgICBjLmk2NF9hbmQoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9tdWwoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfbG9hZDMyX3UoYy5nZXRMb2NhbChcInRcIiksIGkqNCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcIm5wMzJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9jb25zdChcIjB4RkZGRkZGRkZcIilcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIGZvciAobGV0IGo9MDsgajxuMzI7IGorKykge1xuXG4gICAgICAgICAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgICAgICAgICBjLnNldExvY2FsKFwiY1wiLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfYWRkKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2FkZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfbG9hZDMyX3UoYy5nZXRMb2NhbChcInRcIiksIChpK2opKjQpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9zaHJfdShjLmdldExvY2FsKFwiY1wiKSwgYy5pNjRfY29uc3QoMzIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfbXVsKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9sb2FkMzJfdShjLmkzMl9jb25zdChwcSksIGoqNCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJtXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgICAgICAgICAgYy5pNjRfc3RvcmUzMihcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJ0XCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgKGkraikqNCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJjXCIpXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICAgICAgYy5pNjRfc3RvcmUzMihcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QoY2FycmllcyksXG4gICAgICAgICAgICAgICAgICAgIGkqNCxcbiAgICAgICAgICAgICAgICAgICAgYy5pNjRfc2hyX3UoYy5nZXRMb2NhbChcImNcIiksIGMuaTY0X2NvbnN0KDMyKSlcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5jYWxsKFxuICAgICAgICAgICAgICAgIHByZWZpeCtcIl9hZGRcIixcbiAgICAgICAgICAgICAgICBjLmkzMl9jb25zdChjYXJyaWVzKSxcbiAgICAgICAgICAgICAgICBjLmkzMl9hZGQoXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJ0XCIpLFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdChuMzIqNClcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJyXCIpXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgfVxuXG5cblxuICAgIGZ1bmN0aW9uIGJ1aWxkTXVsKCkge1xuXG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4K1wiX211bFwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInhcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ5XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiclwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcImMwXCIsIFwiaTY0XCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiYzFcIiwgXCJpNjRcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJucDMyXCIsIFwiaTY0XCIpO1xuXG5cbiAgICAgICAgZm9yIChsZXQgaT0wO2k8bjMyOyBpKyspIHtcbiAgICAgICAgICAgIGYuYWRkTG9jYWwoXCJ4XCIraSwgXCJpNjRcIik7XG4gICAgICAgICAgICBmLmFkZExvY2FsKFwieVwiK2ksIFwiaTY0XCIpO1xuICAgICAgICAgICAgZi5hZGRMb2NhbChcIm1cIitpLCBcImk2NFwiKTtcbiAgICAgICAgICAgIGYuYWRkTG9jYWwoXCJxXCIraSwgXCJpNjRcIik7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IG5wMzIgPSBOdW1iZXIoMHgxMDAwMDAwMDBuIC0gbW9kSW52JDIocSwgMHgxMDAwMDAwMDBuKSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKGMuc2V0TG9jYWwoXCJucDMyXCIsIGMuaTY0X2NvbnN0KG5wMzIpKSk7XG5cblxuICAgICAgICBjb25zdCBsb2FkWCA9IFtdO1xuICAgICAgICBjb25zdCBsb2FkWSA9IFtdO1xuICAgICAgICBjb25zdCBsb2FkUSA9IFtdO1xuICAgICAgICBmdW5jdGlvbiBtdWxpaihpLCBqKSB7XG4gICAgICAgICAgICBsZXQgWCxZO1xuICAgICAgICAgICAgaWYgKCFsb2FkWFtpXSkge1xuICAgICAgICAgICAgICAgIFggPSBjLnRlZUxvY2FsKFwieFwiK2ksIGMuaTY0X2xvYWQzMl91KCBjLmdldExvY2FsKFwieFwiKSwgaSo0KSk7XG4gICAgICAgICAgICAgICAgbG9hZFhbaV0gPSB0cnVlO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBYID0gYy5nZXRMb2NhbChcInhcIitpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghbG9hZFlbal0pIHtcbiAgICAgICAgICAgICAgICBZID0gYy50ZWVMb2NhbChcInlcIitqLCBjLmk2NF9sb2FkMzJfdSggYy5nZXRMb2NhbChcInlcIiksIGoqNCkpO1xuICAgICAgICAgICAgICAgIGxvYWRZW2pdID0gdHJ1ZTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgWSA9IGMuZ2V0TG9jYWwoXCJ5XCIraik7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBjLmk2NF9tdWwoIFgsIFkgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZ1bmN0aW9uIG11bHFtKGksIGopIHtcbiAgICAgICAgICAgIGxldCBRLE07XG4gICAgICAgICAgICBpZiAoIWxvYWRRW2ldKSB7XG4gICAgICAgICAgICAgICAgUSA9IGMudGVlTG9jYWwoXCJxXCIraSwgYy5pNjRfbG9hZDMyX3UoYy5pMzJfY29uc3QoMCksIHBxK2kqNCApKTtcbiAgICAgICAgICAgICAgICBsb2FkUVtpXSA9IHRydWU7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIFEgPSBjLmdldExvY2FsKFwicVwiK2kpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgTSA9IGMuZ2V0TG9jYWwoXCJtXCIraik7XG5cbiAgICAgICAgICAgIHJldHVybiBjLmk2NF9tdWwoIFEsIE0gKTtcbiAgICAgICAgfVxuXG5cbiAgICAgICAgbGV0IGMwID0gXCJjMFwiO1xuICAgICAgICBsZXQgYzEgPSBcImMxXCI7XG5cbiAgICAgICAgZm9yIChsZXQgaz0wOyBrPG4zMioyLTE7IGsrKykge1xuICAgICAgICAgICAgZm9yIChsZXQgaT1NYXRoLm1heCgwLCBrLW4zMisxKTsgKGk8PWspJiYoaTxuMzIpOyBpKyspIHtcbiAgICAgICAgICAgICAgICBjb25zdCBqPSBrLWk7XG5cbiAgICAgICAgICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoYzAsXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9hZGQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfYW5kKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKGMwKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfY29uc3QoMHhGRkZGRkZGRilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG11bGlqKGksailcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoYzEsXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9hZGQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChjMSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfc2hyX3UoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoYzApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9jb25zdCgzMilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuXG5cbiAgICAgICAgICAgIGZvciAobGV0IGk9TWF0aC5tYXgoMSwgay1uMzIrMSk7IChpPD1rKSYmKGk8bjMyKTsgaSsrKSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgaj0gay1pO1xuXG4gICAgICAgICAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgICAgICAgICBjLnNldExvY2FsKGMwLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfYWRkKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2FuZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChjMCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2NvbnN0KDB4RkZGRkZGRkYpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdWxxbShpLGopXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgICAgICAgICBjLnNldExvY2FsKGMxLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfYWRkKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoYzEpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X3Nocl91KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKGMwKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfY29uc3QoMzIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChrPG4zMikge1xuICAgICAgICAgICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcbiAgICAgICAgICAgICAgICAgICAgICAgIFwibVwiK2ssXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9hbmQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfbXVsKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9hbmQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKGMwKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2NvbnN0KDB4RkZGRkZGRkYpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJucDMyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9jb25zdChcIjB4RkZGRkZGRkZcIilcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICk7XG5cblxuICAgICAgICAgICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgICAgICAgICAgYy5zZXRMb2NhbChjMCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2FkZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9hbmQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoYzApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9jb25zdCgweEZGRkZGRkZGKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbXVscW0oMCxrKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgICAgICAgICAgYy5zZXRMb2NhbChjMSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2FkZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKGMxKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9zaHJfdShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChjMCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2NvbnN0KDMyKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG5cblxuICAgICAgICAgICAgaWYgKGs+PW4zMikge1xuICAgICAgICAgICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgICAgICAgICAgYy5pNjRfc3RvcmUzMihcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJyXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgKGstbjMyKSo0LFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChjMClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBbYzAsIGMxXSA9IFtjMSwgYzBdO1xuICAgICAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoYzEsXG4gICAgICAgICAgICAgICAgICAgIGMuaTY0X3Nocl91KFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChjMCksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9jb25zdCgzMilcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5pNjRfc3RvcmUzMihcbiAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiclwiKSxcbiAgICAgICAgICAgICAgICBuMzIqNC00LFxuICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoYzApXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICBjLmkzMl93cmFwX2k2NChjLmdldExvY2FsKGMxKSksXG4gICAgICAgICAgICAgICAgYy5kcm9wKGMuY2FsbChpbnRQcmVmaXgrXCJfc3ViXCIsIGMuZ2V0TG9jYWwoXCJyXCIpLCBjLmkzMl9jb25zdChwcSksIGMuZ2V0TG9jYWwoXCJyXCIpKSksXG4gICAgICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICAgICAgYy5jYWxsKGludFByZWZpeCtcIl9ndGVcIiwgYy5nZXRMb2NhbChcInJcIiksIGMuaTMyX2NvbnN0KHBxKSAgKSxcbiAgICAgICAgICAgICAgICAgICAgYy5kcm9wKGMuY2FsbChpbnRQcmVmaXgrXCJfc3ViXCIsIGMuZ2V0TG9jYWwoXCJyXCIpLCBjLmkzMl9jb25zdChwcSksIGMuZ2V0TG9jYWwoXCJyXCIpKSksXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKVxuICAgICAgICApO1xuICAgIH1cblxuXG4gICAgZnVuY3Rpb24gYnVpbGRTcXVhcmUoKSB7XG5cbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrXCJfc3F1YXJlXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInJcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJjMFwiLCBcImk2NFwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcImMxXCIsIFwiaTY0XCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiYzBfb2xkXCIsIFwiaTY0XCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiYzFfb2xkXCIsIFwiaTY0XCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwibnAzMlwiLCBcImk2NFwiKTtcblxuXG4gICAgICAgIGZvciAobGV0IGk9MDtpPG4zMjsgaSsrKSB7XG4gICAgICAgICAgICBmLmFkZExvY2FsKFwieFwiK2ksIFwiaTY0XCIpO1xuICAgICAgICAgICAgZi5hZGRMb2NhbChcIm1cIitpLCBcImk2NFwiKTtcbiAgICAgICAgICAgIGYuYWRkTG9jYWwoXCJxXCIraSwgXCJpNjRcIik7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IG5wMzIgPSBOdW1iZXIoMHgxMDAwMDAwMDBuIC0gbW9kSW52JDIocSwgMHgxMDAwMDAwMDBuKSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKGMuc2V0TG9jYWwoXCJucDMyXCIsIGMuaTY0X2NvbnN0KG5wMzIpKSk7XG5cblxuICAgICAgICBjb25zdCBsb2FkWCA9IFtdO1xuICAgICAgICBjb25zdCBsb2FkUSA9IFtdO1xuICAgICAgICBmdW5jdGlvbiBtdWxpaihpLCBqKSB7XG4gICAgICAgICAgICBsZXQgWCxZO1xuICAgICAgICAgICAgaWYgKCFsb2FkWFtpXSkge1xuICAgICAgICAgICAgICAgIFggPSBjLnRlZUxvY2FsKFwieFwiK2ksIGMuaTY0X2xvYWQzMl91KCBjLmdldExvY2FsKFwieFwiKSwgaSo0KSk7XG4gICAgICAgICAgICAgICAgbG9hZFhbaV0gPSB0cnVlO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBYID0gYy5nZXRMb2NhbChcInhcIitpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghbG9hZFhbal0pIHtcbiAgICAgICAgICAgICAgICBZID0gYy50ZWVMb2NhbChcInhcIitqLCBjLmk2NF9sb2FkMzJfdSggYy5nZXRMb2NhbChcInhcIiksIGoqNCkpO1xuICAgICAgICAgICAgICAgIGxvYWRYW2pdID0gdHJ1ZTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgWSA9IGMuZ2V0TG9jYWwoXCJ4XCIraik7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBjLmk2NF9tdWwoIFgsIFkgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZ1bmN0aW9uIG11bHFtKGksIGopIHtcbiAgICAgICAgICAgIGxldCBRLE07XG4gICAgICAgICAgICBpZiAoIWxvYWRRW2ldKSB7XG4gICAgICAgICAgICAgICAgUSA9IGMudGVlTG9jYWwoXCJxXCIraSwgYy5pNjRfbG9hZDMyX3UoYy5pMzJfY29uc3QoMCksIHBxK2kqNCApKTtcbiAgICAgICAgICAgICAgICBsb2FkUVtpXSA9IHRydWU7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIFEgPSBjLmdldExvY2FsKFwicVwiK2kpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgTSA9IGMuZ2V0TG9jYWwoXCJtXCIraik7XG5cbiAgICAgICAgICAgIHJldHVybiBjLmk2NF9tdWwoIFEsIE0gKTtcbiAgICAgICAgfVxuXG5cbiAgICAgICAgbGV0IGMwID0gXCJjMFwiO1xuICAgICAgICBsZXQgYzEgPSBcImMxXCI7XG4gICAgICAgIGxldCBjMF9vbGQgPSBcImMwX29sZFwiO1xuICAgICAgICBsZXQgYzFfb2xkID0gXCJjMV9vbGRcIjtcblxuICAgICAgICBmb3IgKGxldCBrPTA7IGs8bjMyKjItMTsgaysrKSB7XG4gICAgICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChjMCwgYy5pNjRfY29uc3QoMCkpLFxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoYzEsIGMuaTY0X2NvbnN0KDApKSxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBmb3IgKGxldCBpPU1hdGgubWF4KDAsIGstbjMyKzEpOyAoaTwoKGsrMSk+PjEpICkmJihpPG4zMik7IGkrKykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGo9IGstaTtcblxuICAgICAgICAgICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgICAgICAgICAgYy5zZXRMb2NhbChjMCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2FkZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9hbmQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoYzApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9jb25zdCgweEZGRkZGRkZGKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbXVsaWooaSxqKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgICAgICAgICAgYy5zZXRMb2NhbChjMSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2FkZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKGMxKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9zaHJfdShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChjMCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2NvbnN0KDMyKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIE11bHRpcGx5IGJ5IDJcbiAgICAgICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKGMwLFxuICAgICAgICAgICAgICAgICAgICBjLmk2NF9zaGwoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9hbmQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChjMCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfY29uc3QoMHhGRkZGRkZGRilcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9jb25zdCgxKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoYzEsXG4gICAgICAgICAgICAgICAgICAgIGMuaTY0X2FkZChcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X3NobChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKGMxKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9jb25zdCgxKVxuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X3Nocl91KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoYzApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2NvbnN0KDMyKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgaWYgKGslMiA9PSAwKSB7XG4gICAgICAgICAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgICAgICAgICBjLnNldExvY2FsKGMwLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfYWRkKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2FuZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChjMCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2NvbnN0KDB4RkZGRkZGRkYpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdWxpaihrPj4xLCBrPj4xKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgICAgICAgICAgYy5zZXRMb2NhbChjMSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2FkZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKGMxKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9zaHJfdShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChjMCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2NvbnN0KDMyKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIEFkZCB0aGUgb2xkIGNhcnJ5XG5cbiAgICAgICAgICAgIGlmIChrPjApIHtcbiAgICAgICAgICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoYzAsXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9hZGQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfYW5kKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKGMwKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfY29uc3QoMHhGRkZGRkZGRilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2FuZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChjMF9vbGQpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9jb25zdCgweEZGRkZGRkZGKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgICAgICAgICBjLnNldExvY2FsKGMxLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfYWRkKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2FkZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChjMSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X3Nocl91KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChjMCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9jb25zdCgzMilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChjMV9vbGQpXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuXG5cbiAgICAgICAgICAgIGZvciAobGV0IGk9TWF0aC5tYXgoMSwgay1uMzIrMSk7IChpPD1rKSYmKGk8bjMyKTsgaSsrKSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgaj0gay1pO1xuXG4gICAgICAgICAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgICAgICAgICBjLnNldExvY2FsKGMwLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfYWRkKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2FuZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChjMCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2NvbnN0KDB4RkZGRkZGRkYpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdWxxbShpLGopXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgICAgICAgICBjLnNldExvY2FsKGMxLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfYWRkKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoYzEpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X3Nocl91KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKGMwKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfY29uc3QoMzIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChrPG4zMikge1xuICAgICAgICAgICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcbiAgICAgICAgICAgICAgICAgICAgICAgIFwibVwiK2ssXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9hbmQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfbXVsKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9hbmQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKGMwKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2NvbnN0KDB4RkZGRkZGRkYpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJucDMyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9jb25zdChcIjB4RkZGRkZGRkZcIilcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICk7XG5cblxuICAgICAgICAgICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgICAgICAgICAgYy5zZXRMb2NhbChjMCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2FkZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9hbmQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoYzApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9jb25zdCgweEZGRkZGRkZGKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbXVscW0oMCxrKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgICAgICAgICAgYy5zZXRMb2NhbChjMSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2FkZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKGMxKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9zaHJfdShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChjMCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2NvbnN0KDMyKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChrPj1uMzIpIHtcbiAgICAgICAgICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICAgICAgICAgIGMuaTY0X3N0b3JlMzIoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiclwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIChrLW4zMikqNCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoYzApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXG4gICAgICAgICAgICAgICAgICAgIGMwX29sZCxcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChjMSlcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXG4gICAgICAgICAgICAgICAgICAgIGMxX29sZCxcbiAgICAgICAgICAgICAgICAgICAgYy5pNjRfc2hyX3UoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKGMwX29sZCksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9jb25zdCgzMilcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5pNjRfc3RvcmUzMihcbiAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiclwiKSxcbiAgICAgICAgICAgICAgICBuMzIqNC00LFxuICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoYzBfb2xkKVxuICAgICAgICAgICAgKVxuICAgICAgICApO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgYy5pMzJfd3JhcF9pNjQoYy5nZXRMb2NhbChjMV9vbGQpKSxcbiAgICAgICAgICAgICAgICBjLmRyb3AoYy5jYWxsKGludFByZWZpeCtcIl9zdWJcIiwgYy5nZXRMb2NhbChcInJcIiksIGMuaTMyX2NvbnN0KHBxKSwgYy5nZXRMb2NhbChcInJcIikpKSxcbiAgICAgICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgICAgICBjLmNhbGwoaW50UHJlZml4K1wiX2d0ZVwiLCBjLmdldExvY2FsKFwiclwiKSwgYy5pMzJfY29uc3QocHEpICApLFxuICAgICAgICAgICAgICAgICAgICBjLmRyb3AoYy5jYWxsKGludFByZWZpeCtcIl9zdWJcIiwgYy5nZXRMb2NhbChcInJcIiksIGMuaTMyX2NvbnN0KHBxKSwgYy5nZXRMb2NhbChcInJcIikpKSxcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgfVxuXG5cbiAgICBmdW5jdGlvbiBidWlsZFNxdWFyZU9sZCgpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrXCJfc3F1YXJlT2xkXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInJcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBmLmFkZENvZGUoYy5jYWxsKHByZWZpeCArIFwiX211bFwiLCBjLmdldExvY2FsKFwieFwiKSwgYy5nZXRMb2NhbChcInhcIiksIGMuZ2V0TG9jYWwoXCJyXCIpKSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYnVpbGRUb01vbnRnb21lcnkoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4K1wiX3RvTW9udGdvbWVyeVwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInhcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJyXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG4gICAgICAgIGYuYWRkQ29kZShjLmNhbGwocHJlZml4K1wiX211bFwiLCBjLmdldExvY2FsKFwieFwiKSwgYy5pMzJfY29uc3QocFIyKSwgYy5nZXRMb2NhbChcInJcIikpKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBidWlsZEZyb21Nb250Z29tZXJ5KCkge1xuXG4gICAgICAgIGNvbnN0IHBBdXgyID0gbW9kdWxlLmFsbG9jKG44KjIpO1xuXG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4K1wiX2Zyb21Nb250Z29tZXJ5XCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInJcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcbiAgICAgICAgZi5hZGRDb2RlKGMuY2FsbChpbnRQcmVmaXggKyBcIl9jb3B5XCIsIGMuZ2V0TG9jYWwoXCJ4XCIpLCBjLmkzMl9jb25zdChwQXV4MikgKSk7XG4gICAgICAgIGYuYWRkQ29kZShjLmNhbGwoaW50UHJlZml4ICsgXCJfemVyb1wiLCBjLmkzMl9jb25zdChwQXV4MiArIG44KSApKTtcbiAgICAgICAgZi5hZGRDb2RlKGMuY2FsbChwcmVmaXgrXCJfbVJlZHVjdFwiLCBjLmkzMl9jb25zdChwQXV4MiksIGMuZ2V0TG9jYWwoXCJyXCIpKSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYnVpbGRJbnZlcnNlKCkge1xuXG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4KyBcIl9pbnZlcnNlXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInJcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcbiAgICAgICAgZi5hZGRDb2RlKGMuY2FsbChwcmVmaXggKyBcIl9mcm9tTW9udGdvbWVyeVwiLCBjLmdldExvY2FsKFwieFwiKSwgYy5nZXRMb2NhbChcInJcIikpKTtcbiAgICAgICAgZi5hZGRDb2RlKGMuY2FsbChpbnRQcmVmaXggKyBcIl9pbnZlcnNlTW9kXCIsIGMuZ2V0TG9jYWwoXCJyXCIpLCBjLmkzMl9jb25zdChwcSksIGMuZ2V0TG9jYWwoXCJyXCIpKSk7XG4gICAgICAgIGYuYWRkQ29kZShjLmNhbGwocHJlZml4ICsgXCJfdG9Nb250Z29tZXJ5XCIsIGMuZ2V0TG9jYWwoXCJyXCIpLCBjLmdldExvY2FsKFwiclwiKSkpO1xuICAgIH1cblxuICAgIC8vIENhbGN1bGF0ZSB2YXJpb3VzIHZhbHVzZSBuZWVkZWQgZm9yIHNxcnRcblxuXG4gICAgbGV0IF9ucXIgPSAybjtcbiAgICBpZiAoaXNQcmltZShxKSkge1xuICAgICAgICB3aGlsZSAobW9kUG93JDEoX25xciwgX2UsIHEpICE9PSBfbWludXNPbmUpIF9ucXIgPSBfbnFyICsgMW47XG4gICAgfVxuXG4gICAgbGV0IHMyID0gMDtcbiAgICBsZXQgX3QgPSBfbWludXNPbmU7XG5cbiAgICB3aGlsZSAoKCFpc09kZCQzKF90KSkmJihfdCAhPT0gMG4pKSB7XG4gICAgICAgIHMyKys7XG4gICAgICAgIF90ID0gX3QgPj4gMW47XG4gICAgfVxuICAgIGNvbnN0IHB0ID0gbW9kdWxlLmFsbG9jKG44LCB1dGlscyQ1LmJpZ0ludDJCeXRlc0xFKF90LCBuOCkpO1xuXG4gICAgY29uc3QgX25xclRvVCA9IG1vZFBvdyQxKF9ucXIsIF90LCBxKTtcbiAgICBjb25zdCBwTnFyVG9UID0gbW9kdWxlLmFsbG9jKHV0aWxzJDUuYmlnSW50MkJ5dGVzTEUoKF9ucXJUb1QgPDwgQmlnSW50KG42NCo2NCkpICUgcSwgbjgpKTtcblxuICAgIGNvbnN0IF90UGx1c09uZU92ZXIyID0gKF90ICsgMW4pID4+IDFuO1xuICAgIGNvbnN0IHB0UGx1c09uZU92ZXIyID0gbW9kdWxlLmFsbG9jKG44LCB1dGlscyQ1LmJpZ0ludDJCeXRlc0xFKF90UGx1c09uZU92ZXIyLCBuOCkpO1xuXG4gICAgZnVuY3Rpb24gYnVpbGRTcXJ0KCkge1xuXG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4KyBcIl9zcXJ0XCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiblwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInJcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJtXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiaVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcImpcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCBPTkUgPSBjLmkzMl9jb25zdChwT25lKTtcbiAgICAgICAgY29uc3QgQyA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuICAgICAgICBjb25zdCBUID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44KSk7XG4gICAgICAgIGNvbnN0IFIgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcbiAgICAgICAgY29uc3QgU1EgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcbiAgICAgICAgY29uc3QgQiA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcblxuICAgICAgICAgICAgLy8gSWYgKG49PTApIHJldHVybiAwXG4gICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9pc1plcm9cIiwgYy5nZXRMb2NhbChcIm5cIikpLFxuICAgICAgICAgICAgICAgIGMucmV0KFxuICAgICAgICAgICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfemVyb1wiLCBjLmdldExvY2FsKFwiclwiKSlcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApLFxuXG4gICAgICAgICAgICBjLnNldExvY2FsKFwibVwiLCBjLmkzMl9jb25zdChzMikpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX2NvcHlcIiwgYy5pMzJfY29uc3QocE5xclRvVCksIEMpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX2V4cFwiLCBjLmdldExvY2FsKFwiblwiKSwgYy5pMzJfY29uc3QocHQpLCBjLmkzMl9jb25zdChuOCksIFQpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX2V4cFwiLCBjLmdldExvY2FsKFwiblwiKSwgYy5pMzJfY29uc3QocHRQbHVzT25lT3ZlcjIpLCBjLmkzMl9jb25zdChuOCksIFIpLFxuXG4gICAgICAgICAgICBjLmJsb2NrKGMubG9vcChcbiAgICAgICAgICAgICAgICBjLmJyX2lmKDEsIGMuY2FsbChwcmVmaXggKyBcIl9lcVwiLCBULCBPTkUpKSxcblxuICAgICAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9zcXVhcmVcIiwgVCwgU1EpLFxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpXCIsIGMuaTMyX2NvbnN0KDEpKSxcbiAgICAgICAgICAgICAgICBjLmJsb2NrKGMubG9vcChcbiAgICAgICAgICAgICAgICAgICAgYy5icl9pZigxLCBjLmNhbGwocHJlZml4ICsgXCJfZXFcIiwgU1EsIE9ORSkpLFxuICAgICAgICAgICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfc3F1YXJlXCIsIFNRLCBTUSksXG4gICAgICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpXCIsIGMuaTMyX2FkZChjLmdldExvY2FsKFwiaVwiKSwgYy5pMzJfY29uc3QoMSkpKSxcbiAgICAgICAgICAgICAgICAgICAgYy5icigwKVxuICAgICAgICAgICAgICAgICkpLFxuXG4gICAgICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX2NvcHlcIiwgQywgQiksXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcImpcIiwgYy5pMzJfc3ViKGMuaTMyX3N1YiggYy5nZXRMb2NhbChcIm1cIiksIGMuZ2V0TG9jYWwoXCJpXCIpKSwgYy5pMzJfY29uc3QoMSkpICksXG4gICAgICAgICAgICAgICAgYy5ibG9jayhjLmxvb3AoXG4gICAgICAgICAgICAgICAgICAgIGMuYnJfaWYoMSwgYy5pMzJfZXF6KGMuZ2V0TG9jYWwoXCJqXCIpKSksXG4gICAgICAgICAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9zcXVhcmVcIiwgQiwgQiksXG4gICAgICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJqXCIsIGMuaTMyX3N1YihjLmdldExvY2FsKFwialwiKSwgYy5pMzJfY29uc3QoMSkpKSxcbiAgICAgICAgICAgICAgICAgICAgYy5icigwKVxuICAgICAgICAgICAgICAgICkpLFxuXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcIm1cIiwgYy5nZXRMb2NhbChcImlcIikpLFxuICAgICAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9zcXVhcmVcIiwgQiwgQyksXG4gICAgICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX211bFwiLCBULCBDLCBUKSxcbiAgICAgICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfbXVsXCIsIFIsIEIsIFIpLFxuXG4gICAgICAgICAgICAgICAgYy5icigwKVxuICAgICAgICAgICAgKSksXG5cbiAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX2lzTmVnYXRpdmVcIiwgUiksXG4gICAgICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX25lZ1wiLCBSLCBjLmdldExvY2FsKFwiclwiKSksXG4gICAgICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX2NvcHlcIiwgUiwgYy5nZXRMb2NhbChcInJcIikpLFxuICAgICAgICAgICAgKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGJ1aWxkSXNTcXVhcmUoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4K1wiX2lzU3F1YXJlXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiblwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5zZXRSZXR1cm5UeXBlKFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgT05FID0gYy5pMzJfY29uc3QocE9uZSk7XG4gICAgICAgIGNvbnN0IEFVWCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX2lzWmVyb1wiLCBjLmdldExvY2FsKFwiblwiKSksXG4gICAgICAgICAgICAgICAgYy5yZXQoYy5pMzJfY29uc3QoMSkpXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX2V4cFwiLCBjLmdldExvY2FsKFwiblwiKSwgYy5pMzJfY29uc3QocGUpLCBjLmkzMl9jb25zdChuOCksIEFVWCksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfZXFcIiwgQVVYLCBPTkUpXG4gICAgICAgICk7XG4gICAgfVxuXG5cbiAgICBmdW5jdGlvbiBidWlsZExvYWQoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4K1wiX2xvYWRcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJzY2FsYXJcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJzY2FsYXJMZW5cIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJyXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwicFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcImxcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJpXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwialwiLCBcImkzMlwiKTtcbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCBSID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44KSk7XG4gICAgICAgIGNvbnN0IHBBdXggPSBtb2R1bGUuYWxsb2MobjgpO1xuICAgICAgICBjb25zdCBBVVggPSBjLmkzMl9jb25zdChwQXV4KTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLmNhbGwoaW50UHJlZml4ICsgXCJfemVyb1wiLCBjLmdldExvY2FsKFwiclwiKSksXG4gICAgICAgICAgICBjLnNldExvY2FsKFwiaVwiLCBjLmkzMl9jb25zdChuOCkpLFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcInBcIiwgYy5nZXRMb2NhbChcInNjYWxhclwiKSksXG4gICAgICAgICAgICBjLmJsb2NrKGMubG9vcChcbiAgICAgICAgICAgICAgICBjLmJyX2lmKDEsIGMuaTMyX2d0X3UoYy5nZXRMb2NhbChcImlcIiksIGMuZ2V0TG9jYWwoXCJzY2FsYXJMZW5cIikpKSxcblxuICAgICAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX2VxKGMuZ2V0TG9jYWwoXCJpXCIpLCBjLmkzMl9jb25zdChuOCkpLFxuICAgICAgICAgICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfb25lXCIsIFIpLFxuICAgICAgICAgICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfbXVsXCIsIFIsIGMuaTMyX2NvbnN0KHBSMiksIFIpXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfbXVsXCIsIGMuZ2V0TG9jYWwoXCJwXCIpLCBSLCBBVVgpLFxuICAgICAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9hZGRcIiwgYy5nZXRMb2NhbChcInJcIiksIEFVWCwgYy5nZXRMb2NhbChcInJcIikpLFxuXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcInBcIiwgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwXCIpLCBjLmkzMl9jb25zdChuOCkpKSxcbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFwiaVwiLCBjLmkzMl9hZGQoYy5nZXRMb2NhbChcImlcIiksIGMuaTMyX2NvbnN0KG44KSkpLFxuICAgICAgICAgICAgICAgIGMuYnIoMClcbiAgICAgICAgICAgICkpLFxuXG4gICAgICAgICAgICBjLnNldExvY2FsKFwibFwiLCBjLmkzMl9yZW1fdSggYy5nZXRMb2NhbChcInNjYWxhckxlblwiKSwgYy5pMzJfY29uc3QobjgpKSksXG4gICAgICAgICAgICBjLmlmKGMuaTMyX2VxeihjLmdldExvY2FsKFwibFwiKSksIGMucmV0KFtdKSksXG4gICAgICAgICAgICBjLmNhbGwoaW50UHJlZml4ICsgXCJfemVyb1wiLCBBVVgpLFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcImpcIiwgYy5pMzJfY29uc3QoMCkpLFxuICAgICAgICAgICAgYy5ibG9jayhjLmxvb3AoXG4gICAgICAgICAgICAgICAgYy5icl9pZigxLCBjLmkzMl9lcShjLmdldExvY2FsKFwialwiKSwgYy5nZXRMb2NhbChcImxcIikpKSxcblxuICAgICAgICAgICAgICAgIGMuaTMyX3N0b3JlOChcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImpcIiksXG4gICAgICAgICAgICAgICAgICAgIHBBdXgsXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX2xvYWQ4X3UoYy5nZXRMb2NhbChcInBcIikpLFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcInBcIiwgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwXCIpLCBjLmkzMl9jb25zdCgxKSkpLFxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJqXCIsIGMuaTMyX2FkZChjLmdldExvY2FsKFwialwiKSwgYy5pMzJfY29uc3QoMSkpKSxcbiAgICAgICAgICAgICAgICBjLmJyKDApXG4gICAgICAgICAgICApKSxcblxuICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICBjLmkzMl9lcShjLmdldExvY2FsKFwiaVwiKSwgYy5pMzJfY29uc3QobjgpKSxcbiAgICAgICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfb25lXCIsIFIpLFxuICAgICAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9tdWxcIiwgUiwgYy5pMzJfY29uc3QocFIyKSwgUilcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfbXVsXCIsIEFVWCwgUiwgQVVYKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9hZGRcIiwgYy5nZXRMb2NhbChcInJcIiksIEFVWCwgYy5nZXRMb2NhbChcInJcIikpLFxuICAgICAgICApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGJ1aWxkVGltZXNTY2FsYXIoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4K1wiX3RpbWVzU2NhbGFyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInNjYWxhclwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInNjYWxhckxlblwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInJcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCBBVVggPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfbG9hZFwiLCBjLmdldExvY2FsKFwic2NhbGFyXCIpLCBjLmdldExvY2FsKFwic2NhbGFyTGVuXCIpLCBBVVgpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX3RvTW9udGdvbWVyeVwiLCBBVVgsIEFVWCksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfbXVsXCIsIGMuZ2V0TG9jYWwoXCJ4XCIpLCBBVVgsIGMuZ2V0TG9jYWwoXCJyXCIpKSxcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBidWlsZElzT25lKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCtcIl9pc09uZVwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInhcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuc2V0UmV0dXJuVHlwZShcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLnJldChjLmNhbGwoaW50UHJlZml4ICsgXCJfZXFcIiwgYy5nZXRMb2NhbChcInhcIiksIGMuaTMyX2NvbnN0KHBPbmUpKSlcbiAgICAgICAgKTtcbiAgICB9XG5cblxuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihpbnRQcmVmaXggKyBcIl9jb3B5XCIsIHByZWZpeCtcIl9jb3B5XCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihpbnRQcmVmaXggKyBcIl96ZXJvXCIsIHByZWZpeCtcIl96ZXJvXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihpbnRQcmVmaXggKyBcIl9pc1plcm9cIiwgcHJlZml4K1wiX2lzWmVyb1wiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24oaW50UHJlZml4ICsgXCJfZXFcIiwgcHJlZml4K1wiX2VxXCIpO1xuXG4gICAgYnVpbGRJc09uZSgpO1xuICAgIGJ1aWxkQWRkKCk7XG4gICAgYnVpbGRTdWIoKTtcbiAgICBidWlsZE5lZygpO1xuICAgIGJ1aWxkTVJlZHVjdCgpO1xuICAgIGJ1aWxkTXVsKCk7XG4gICAgYnVpbGRTcXVhcmUoKTtcbiAgICBidWlsZFNxdWFyZU9sZCgpO1xuICAgIGJ1aWxkVG9Nb250Z29tZXJ5KCk7XG4gICAgYnVpbGRGcm9tTW9udGdvbWVyeSgpO1xuICAgIGJ1aWxkSXNOZWdhdGl2ZSgpO1xuICAgIGJ1aWxkU2lnbigpO1xuICAgIGJ1aWxkSW52ZXJzZSgpO1xuICAgIGJ1aWxkT25lKCk7XG4gICAgYnVpbGRMb2FkKCk7XG4gICAgYnVpbGRUaW1lc1NjYWxhcigpO1xuICAgIGJ1aWxkQmF0Y2hJbnZlcnNlJDIobW9kdWxlLCBwcmVmaXgpO1xuICAgIGJ1aWxkQmF0Y2hDb252ZXJ0aW9uJDEobW9kdWxlLCBwcmVmaXggKyBcIl9iYXRjaFRvTW9udGdvbWVyeVwiLCBwcmVmaXggKyBcIl90b01vbnRnb21lcnlcIiwgbjgsIG44KTtcbiAgICBidWlsZEJhdGNoQ29udmVydGlvbiQxKG1vZHVsZSwgcHJlZml4ICsgXCJfYmF0Y2hGcm9tTW9udGdvbWVyeVwiLCBwcmVmaXggKyBcIl9mcm9tTW9udGdvbWVyeVwiLCBuOCwgbjgpO1xuICAgIGJ1aWxkQmF0Y2hDb252ZXJ0aW9uJDEobW9kdWxlLCBwcmVmaXggKyBcIl9iYXRjaE5lZ1wiLCBwcmVmaXggKyBcIl9uZWdcIiwgbjgsIG44KTtcbiAgICBidWlsZEJhdGNoT3AobW9kdWxlLCBwcmVmaXggKyBcIl9iYXRjaEFkZFwiLCBwcmVmaXggKyBcIl9hZGRcIiwgbjgsIG44KTtcbiAgICBidWlsZEJhdGNoT3AobW9kdWxlLCBwcmVmaXggKyBcIl9iYXRjaFN1YlwiLCBwcmVmaXggKyBcIl9zdWJcIiwgbjgsIG44KTtcbiAgICBidWlsZEJhdGNoT3AobW9kdWxlLCBwcmVmaXggKyBcIl9iYXRjaE11bFwiLCBwcmVmaXggKyBcIl9tdWxcIiwgbjgsIG44KTtcblxuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9hZGRcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX3N1YlwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfbmVnXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9pc05lZ2F0aXZlXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9pc09uZVwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfc2lnblwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfbVJlZHVjdFwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfbXVsXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9zcXVhcmVcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX3NxdWFyZU9sZFwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfZnJvbU1vbnRnb21lcnlcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX3RvTW9udGdvbWVyeVwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfaW52ZXJzZVwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfb25lXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9sb2FkXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl90aW1lc1NjYWxhclwiKTtcbiAgICBidWlsZEV4cCQyKFxuICAgICAgICBtb2R1bGUsXG4gICAgICAgIHByZWZpeCArIFwiX2V4cFwiLFxuICAgICAgICBuOCxcbiAgICAgICAgcHJlZml4ICsgXCJfbXVsXCIsXG4gICAgICAgIHByZWZpeCArIFwiX3NxdWFyZVwiLFxuICAgICAgICBpbnRQcmVmaXggKyBcIl9jb3B5XCIsXG4gICAgICAgIHByZWZpeCArIFwiX29uZVwiLFxuICAgICk7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX2V4cFwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfYmF0Y2hJbnZlcnNlXCIpO1xuICAgIGlmIChpc1ByaW1lKHEpKSB7XG4gICAgICAgIGJ1aWxkU3FydCgpO1xuICAgICAgICBidWlsZElzU3F1YXJlKCk7XG4gICAgICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9zcXJ0XCIpO1xuICAgICAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfaXNTcXVhcmVcIik7XG4gICAgfVxuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9iYXRjaFRvTW9udGdvbWVyeVwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfYmF0Y2hGcm9tTW9udGdvbWVyeVwiKTtcbiAgICAvLyBjb25zb2xlLmxvZyhtb2R1bGUuZnVuY3Rpb25JZHhCeU5hbWUpO1xuXG4gICAgcmV0dXJuIHByZWZpeDtcbn07XG5cbi8qXG4gICAgQ29weXJpZ2h0IDIwMTkgMEtJTVMgYXNzb2NpYXRpb24uXG5cbiAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB3YXNtc25hcmsgKFdlYiBBc3NlbWJseSB6a1NuYXJrIFByb3ZlcikuXG5cbiAgICB3YXNtc25hcmsgaXMgYSBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0XG4gICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxuICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG5cbiAgICB3YXNtc25hcmsgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVRcbiAgICBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFlcbiAgICBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWNcbiAgICBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG5cbiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICAgIGFsb25nIHdpdGggd2FzbXNuYXJrLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuKi9cblxuY29uc3QgYnVpbGRGMW0kMiA9YnVpbGRfZjFtO1xuY29uc3QgeyBiaXRMZW5ndGg6IGJpdExlbmd0aCQzIH0gPSBiaWdpbnQ7XG5cbnZhciBidWlsZF9mMSA9IGZ1bmN0aW9uIGJ1aWxkRjEobW9kdWxlLCBfcSwgX3ByZWZpeCwgX2YxbVByZWZpeCwgX2ludFByZWZpeCkge1xuXG4gICAgY29uc3QgcSA9IEJpZ0ludChfcSk7XG4gICAgY29uc3QgbjY0ID0gTWF0aC5mbG9vcigoYml0TGVuZ3RoJDMocSAtIDFuKSAtIDEpLzY0KSArMTtcbiAgICBjb25zdCBuOCA9IG42NCo4O1xuXG4gICAgY29uc3QgcHJlZml4ID0gX3ByZWZpeCB8fCBcImYxXCI7XG4gICAgaWYgKG1vZHVsZS5tb2R1bGVzW3ByZWZpeF0pIHJldHVybiBwcmVmaXg7ICAvLyBhbHJlYWR5IGJ1aWxkZWRcbiAgICBtb2R1bGUubW9kdWxlc1twcmVmaXhdID0ge1xuICAgICAgICBuNjQ6IG42NFxuICAgIH07XG5cbiAgICBjb25zdCBpbnRQcmVmaXggPSBfaW50UHJlZml4IHx8IFwiaW50XCI7XG4gICAgY29uc3QgZjFtUHJlZml4ID0gYnVpbGRGMW0kMihtb2R1bGUsIHEsIF9mMW1QcmVmaXgsIGludFByZWZpeCk7XG5cblxuICAgIGNvbnN0IHBSMiA9ICAgICBtb2R1bGUubW9kdWxlc1tmMW1QcmVmaXhdLnBSMjtcbiAgICBjb25zdCBwcSA9ICAgICBtb2R1bGUubW9kdWxlc1tmMW1QcmVmaXhdLnBxO1xuICAgIGNvbnN0IHBlUGx1c09uZSA9IG1vZHVsZS5tb2R1bGVzW2YxbVByZWZpeF0ucGVQbHVzT25lO1xuXG4gICAgZnVuY3Rpb24gYnVpbGRNdWwoKSB7XG4gICAgICAgIGNvbnN0IHBBdXgxID0gbW9kdWxlLmFsbG9jKG44KTtcblxuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCsgXCJfbXVsXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInlcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJyXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG4gICAgICAgIGYuYWRkQ29kZShjLmNhbGwoZjFtUHJlZml4ICsgXCJfbXVsXCIsIGMuZ2V0TG9jYWwoXCJ4XCIpLCBjLmdldExvY2FsKFwieVwiKSwgYy5pMzJfY29uc3QocEF1eDEpKSk7XG4gICAgICAgIGYuYWRkQ29kZShjLmNhbGwoZjFtUHJlZml4ICsgXCJfbXVsXCIsIGMuaTMyX2NvbnN0KHBBdXgxKSwgYy5pMzJfY29uc3QocFIyKSwgYy5nZXRMb2NhbChcInJcIikpKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBidWlsZFNxdWFyZSgpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrXCJfc3F1YXJlXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInJcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBmLmFkZENvZGUoYy5jYWxsKHByZWZpeCArIFwiX211bFwiLCBjLmdldExvY2FsKFwieFwiKSwgYy5nZXRMb2NhbChcInhcIiksIGMuZ2V0TG9jYWwoXCJyXCIpKSk7XG4gICAgfVxuXG5cbiAgICBmdW5jdGlvbiBidWlsZEludmVyc2UoKSB7XG5cbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrIFwiX2ludmVyc2VcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiclwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuICAgICAgICBmLmFkZENvZGUoYy5jYWxsKGludFByZWZpeCArIFwiX2ludmVyc2VNb2RcIiwgYy5nZXRMb2NhbChcInhcIiksIGMuaTMyX2NvbnN0KHBxKSwgYy5nZXRMb2NhbChcInJcIikpKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBidWlsZElzTmVnYXRpdmUoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4K1wiX2lzTmVnYXRpdmVcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLnNldFJldHVyblR5cGUoXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLmNhbGwoaW50UHJlZml4ICsgXCJfZ3RlXCIsIGMuZ2V0TG9jYWwoXCJ4XCIpLCBjLmkzMl9jb25zdChwZVBsdXNPbmUpIClcbiAgICAgICAgKTtcbiAgICB9XG5cblxuICAgIGJ1aWxkTXVsKCk7XG4gICAgYnVpbGRTcXVhcmUoKTtcbiAgICBidWlsZEludmVyc2UoKTtcbiAgICBidWlsZElzTmVnYXRpdmUoKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24oZjFtUHJlZml4ICsgXCJfYWRkXCIsIHByZWZpeCArIFwiX2FkZFwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24oZjFtUHJlZml4ICsgXCJfc3ViXCIsIHByZWZpeCArIFwiX3N1YlwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24oZjFtUHJlZml4ICsgXCJfbmVnXCIsIHByZWZpeCArIFwiX25lZ1wiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfbXVsXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9zcXVhcmVcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX2ludmVyc2VcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX2lzTmVnYXRpdmVcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKGYxbVByZWZpeCArIFwiX2NvcHlcIiwgcHJlZml4K1wiX2NvcHlcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKGYxbVByZWZpeCArIFwiX3plcm9cIiwgcHJlZml4K1wiX3plcm9cIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKGYxbVByZWZpeCArIFwiX29uZVwiLCBwcmVmaXgrXCJfb25lXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihmMW1QcmVmaXggKyBcIl9pc1plcm9cIiwgcHJlZml4K1wiX2lzWmVyb1wiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24oZjFtUHJlZml4ICsgXCJfZXFcIiwgcHJlZml4K1wiX2VxXCIpO1xuXG4gICAgcmV0dXJuIHByZWZpeDtcbn07XG5cbi8qXG4gICAgQ29weXJpZ2h0IDIwMTkgMEtJTVMgYXNzb2NpYXRpb24uXG5cbiAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB3YXNtc25hcmsgKFdlYiBBc3NlbWJseSB6a1NuYXJrIFByb3ZlcikuXG5cbiAgICB3YXNtc25hcmsgaXMgYSBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0XG4gICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxuICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG5cbiAgICB3YXNtc25hcmsgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVRcbiAgICBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFlcbiAgICBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWNcbiAgICBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG5cbiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICAgIGFsb25nIHdpdGggd2FzbXNuYXJrLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuKi9cblxuY29uc3QgYnVpbGRFeHAkMSA9IGJ1aWxkX3RpbWVzc2NhbGFyO1xuY29uc3QgYnVpbGRCYXRjaEludmVyc2UkMSA9IGJ1aWxkX2JhdGNoaW52ZXJzZTtcbmNvbnN0IHV0aWxzJDQgPSB1dGlscyQ2O1xuXG52YXIgYnVpbGRfZjJtID0gZnVuY3Rpb24gYnVpbGRGMm0obW9kdWxlLCBtdWxOb25SZXNpZHVlRm4sIHByZWZpeCwgZjFtUHJlZml4KSB7XG5cbiAgICBpZiAobW9kdWxlLm1vZHVsZXNbcHJlZml4XSkgcmV0dXJuIHByZWZpeDsgIC8vIGFscmVhZHkgYnVpbGRlZFxuXG4gICAgY29uc3QgZjFuOCA9IG1vZHVsZS5tb2R1bGVzW2YxbVByZWZpeF0ubjY0Kjg7XG4gICAgY29uc3QgcSA9IG1vZHVsZS5tb2R1bGVzW2YxbVByZWZpeF0ucTtcblxuICAgIG1vZHVsZS5tb2R1bGVzW3ByZWZpeF0gPSB7XG4gICAgICAgIG42NDogbW9kdWxlLm1vZHVsZXNbZjFtUHJlZml4XS5uNjQqMlxuICAgIH07XG5cbiAgICBmdW5jdGlvbiBidWlsZEFkZCgpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrXCJfYWRkXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInlcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJyXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgeDAgPSBjLmdldExvY2FsKFwieFwiKTtcbiAgICAgICAgY29uc3QgeDEgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInhcIiksIGMuaTMyX2NvbnN0KGYxbjgpKTtcbiAgICAgICAgY29uc3QgeTAgPSBjLmdldExvY2FsKFwieVwiKTtcbiAgICAgICAgY29uc3QgeTEgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInlcIiksIGMuaTMyX2NvbnN0KGYxbjgpKTtcbiAgICAgICAgY29uc3QgcjAgPSBjLmdldExvY2FsKFwiclwiKTtcbiAgICAgICAgY29uc3QgcjEgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInJcIiksIGMuaTMyX2NvbnN0KGYxbjgpKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4K1wiX2FkZFwiLCB4MCwgeTAsIHIwKSxcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXgrXCJfYWRkXCIsIHgxLCB5MSwgcjEpLFxuICAgICAgICApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGJ1aWxkVGltZXNTY2FsYXIoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4K1wiX3RpbWVzU2NhbGFyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInNjYWxhclwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInNjYWxhckxlblwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInJcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCB4MCA9IGMuZ2V0TG9jYWwoXCJ4XCIpO1xuICAgICAgICBjb25zdCB4MSA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwieFwiKSwgYy5pMzJfY29uc3QoZjFuOCkpO1xuICAgICAgICBjb25zdCByMCA9IGMuZ2V0TG9jYWwoXCJyXCIpO1xuICAgICAgICBjb25zdCByMSA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwiclwiKSwgYy5pMzJfY29uc3QoZjFuOCkpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXgrXCJfdGltZXNTY2FsYXJcIiwgeDAsIGMuZ2V0TG9jYWwoXCJzY2FsYXJcIiksIGMuZ2V0TG9jYWwoXCJzY2FsYXJMZW5cIiksIHIwKSxcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXgrXCJfdGltZXNTY2FsYXJcIiwgeDEsIGMuZ2V0TG9jYWwoXCJzY2FsYXJcIiksIGMuZ2V0TG9jYWwoXCJzY2FsYXJMZW5cIiksIHIxKSxcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBidWlsZFN1YigpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrXCJfc3ViXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInlcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJyXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgeDAgPSBjLmdldExvY2FsKFwieFwiKTtcbiAgICAgICAgY29uc3QgeDEgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInhcIiksIGMuaTMyX2NvbnN0KGYxbjgpKTtcbiAgICAgICAgY29uc3QgeTAgPSBjLmdldExvY2FsKFwieVwiKTtcbiAgICAgICAgY29uc3QgeTEgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInlcIiksIGMuaTMyX2NvbnN0KGYxbjgpKTtcbiAgICAgICAgY29uc3QgcjAgPSBjLmdldExvY2FsKFwiclwiKTtcbiAgICAgICAgY29uc3QgcjEgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInJcIiksIGMuaTMyX2NvbnN0KGYxbjgpKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4K1wiX3N1YlwiLCB4MCwgeTAsIHIwKSxcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXgrXCJfc3ViXCIsIHgxLCB5MSwgcjEpLFxuICAgICAgICApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGJ1aWxkTmVnKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCtcIl9uZWdcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiclwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IHgwID0gYy5nZXRMb2NhbChcInhcIik7XG4gICAgICAgIGNvbnN0IHgxID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJ4XCIpLCBjLmkzMl9jb25zdChmMW44KSk7XG4gICAgICAgIGNvbnN0IHIwID0gYy5nZXRMb2NhbChcInJcIik7XG4gICAgICAgIGNvbnN0IHIxID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJyXCIpLCBjLmkzMl9jb25zdChmMW44KSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCtcIl9uZWdcIiwgeDAsIHIwKSxcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXgrXCJfbmVnXCIsIHgxLCByMSksXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYnVpbGRDb25qdWdhdGUoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4K1wiX2Nvbmp1Z2F0ZVwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInhcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJyXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgeDAgPSBjLmdldExvY2FsKFwieFwiKTtcbiAgICAgICAgY29uc3QgeDEgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInhcIiksIGMuaTMyX2NvbnN0KGYxbjgpKTtcbiAgICAgICAgY29uc3QgcjAgPSBjLmdldExvY2FsKFwiclwiKTtcbiAgICAgICAgY29uc3QgcjEgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInJcIiksIGMuaTMyX2NvbnN0KGYxbjgpKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4K1wiX2NvcHlcIiwgeDAsIHIwKSxcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXgrXCJfbmVnXCIsIHgxLCByMSksXG4gICAgICAgICk7XG4gICAgfVxuXG5cbiAgICBmdW5jdGlvbiBidWlsZElzTmVnYXRpdmUoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4K1wiX2lzTmVnYXRpdmVcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLnNldFJldHVyblR5cGUoXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCB4MCA9IGMuZ2V0TG9jYWwoXCJ4XCIpO1xuICAgICAgICBjb25zdCB4MSA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwieFwiKSwgYy5pMzJfY29uc3QoZjFuOCkpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCtcIl9pc1plcm9cIiwgeDEpLFxuICAgICAgICAgICAgICAgIGMucmV0KGMuY2FsbChmMW1QcmVmaXgrXCJfaXNOZWdhdGl2ZVwiLCB4MCkpXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYy5yZXQoYy5jYWxsKGYxbVByZWZpeCtcIl9pc05lZ2F0aXZlXCIsIHgxKSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBidWlsZE11bCgpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrXCJfbXVsXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInlcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJyXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgeDAgPSBjLmdldExvY2FsKFwieFwiKTtcbiAgICAgICAgY29uc3QgeDEgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInhcIiksIGMuaTMyX2NvbnN0KGYxbjgpKTtcbiAgICAgICAgY29uc3QgeTAgPSBjLmdldExvY2FsKFwieVwiKTtcbiAgICAgICAgY29uc3QgeTEgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInlcIiksIGMuaTMyX2NvbnN0KGYxbjgpKTtcbiAgICAgICAgY29uc3QgcjAgPSBjLmdldExvY2FsKFwiclwiKTtcbiAgICAgICAgY29uc3QgcjEgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInJcIiksIGMuaTMyX2NvbnN0KGYxbjgpKTtcblxuICAgICAgICBjb25zdCBBID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYxbjgpKTtcbiAgICAgICAgY29uc3QgQiA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMW44KSk7XG4gICAgICAgIGNvbnN0IEMgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjFuOCkpO1xuICAgICAgICBjb25zdCBEID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYxbjgpKTtcblxuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXggKyBcIl9tdWxcIiwgeDAsIHkwLCBBKSwgICAgICAgICAgICAgLy8gQSA9IHgwKnkwXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4ICsgXCJfbXVsXCIsIHgxLCB5MSwgQiksICAgICAgICAgICAgIC8vIEIgPSB4MSp5MVxuXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4ICsgXCJfYWRkXCIsIHgwLCB4MSwgQyksICAgICAgICAgICAgIC8vIEMgPSB4MCArIHgxXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4ICsgXCJfYWRkXCIsIHkwLCB5MSwgRCksICAgICAgICAgICAgIC8vIEQgPSB5MCArIHkxXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4ICsgXCJfbXVsXCIsIEMsIEQsIEMpLCAgICAgICAgICAgICAgIC8vIEMgPSAoeDAgKyB4MSkqKHkwICsgeTEpID0geDAqeTAreDAqeTEreDEqeTAreDEqeTFcblxuICAgICAgICAgICAgLy8gIGMuY2FsbChmMW1QcmVmaXggKyBcIl9tdWxcIiwgQiwgYy5pMzJfY29uc3QocE5vblJlc2lkdWUpLCByMCksICAvLyByMCA9IG5yKih4MSp5MSlcbiAgICAgICAgICAgIGMuY2FsbChtdWxOb25SZXNpZHVlRm4sIEIsIHIwKSwgIC8vIHIwID0gbnIqKHgxKnkxKVxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCArIFwiX2FkZFwiLCBBLCByMCwgcjApLCAgICAgICAgICAgICAvLyByMCA9IHgwKnkwICsgbnIqKHgxKnkxKVxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCArIFwiX2FkZFwiLCBBLCBCLCByMSksICAgICAgICAgICAgIC8vIHIxID0geDAqeTAreDEqeTFcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXggKyBcIl9zdWJcIiwgQywgcjEsIHIxKSAgICAgICAgICAgICAgLy8gcjEgPSB4MCp5MCt4MCp5MSt4MSp5MCt4MSp5MSAtIHgwKnkwK3gxKnkxID0geDAqeTEreDEqeTBcbiAgICAgICAgKTtcblxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGJ1aWxkTXVsMSgpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrXCJfbXVsMVwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInhcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ5XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiclwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IHgwID0gYy5nZXRMb2NhbChcInhcIik7XG4gICAgICAgIGNvbnN0IHgxID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJ4XCIpLCBjLmkzMl9jb25zdChmMW44KSk7XG4gICAgICAgIGNvbnN0IHkgPSBjLmdldExvY2FsKFwieVwiKTtcbiAgICAgICAgY29uc3QgcjAgPSBjLmdldExvY2FsKFwiclwiKTtcbiAgICAgICAgY29uc3QgcjEgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInJcIiksIGMuaTMyX2NvbnN0KGYxbjgpKTtcblxuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXggKyBcIl9tdWxcIiwgeDAsIHksIHIwKSwgICAgICAgICAgICAgLy8gQSA9IHgwKnlcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXggKyBcIl9tdWxcIiwgeDEsIHksIHIxKSwgICAgICAgICAgICAgLy8gQiA9IHgxKnlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBidWlsZFNxdWFyZSgpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrXCJfc3F1YXJlXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInJcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCB4MCA9IGMuZ2V0TG9jYWwoXCJ4XCIpO1xuICAgICAgICBjb25zdCB4MSA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwieFwiKSwgYy5pMzJfY29uc3QoZjFuOCkpO1xuICAgICAgICBjb25zdCByMCA9IGMuZ2V0TG9jYWwoXCJyXCIpO1xuICAgICAgICBjb25zdCByMSA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwiclwiKSwgYy5pMzJfY29uc3QoZjFuOCkpO1xuXG4gICAgICAgIGNvbnN0IEFCID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYxbjgpKTtcbiAgICAgICAgY29uc3QgQVBCID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYxbjgpKTtcbiAgICAgICAgY29uc3QgQVBOQiA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMW44KSk7XG4gICAgICAgIGNvbnN0IEFCUE5BQiA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMW44KSk7XG5cblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICAvLyBBQiA9IHgwKnkxXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4ICsgXCJfbXVsXCIsIHgwLCB4MSwgQUIpLFxuXG4gICAgICAgICAgICAvLyBBUEIgPSB4MCt5MVxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCArIFwiX2FkZFwiLCB4MCwgeDEsIEFQQiksXG5cbiAgICAgICAgICAgIC8vIEFQQk4wID0geDAgKyBucip4MVxuICAgICAgICAgICAgYy5jYWxsKG11bE5vblJlc2lkdWVGbiwgeDEsIEFQTkIpLFxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCArIFwiX2FkZFwiLCB4MCwgQVBOQiwgQVBOQiksXG5cbiAgICAgICAgICAgIC8vIEFCUE5BQiA9IGFiICsgbnIqYWJcbiAgICAgICAgICAgIGMuY2FsbChtdWxOb25SZXNpZHVlRm4sIEFCLCBBQlBOQUIpLFxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCArIFwiX2FkZFwiLCBBQlBOQUIsIEFCLCBBQlBOQUIpLFxuXG4gICAgICAgICAgICAvLyByMCA9IEFQQiAqIEFQTkIgLSBBQlBOQUJcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXggKyBcIl9tdWxcIiwgQVBCLCBBUE5CLCByMCksXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4ICsgXCJfc3ViXCIsIHIwLCBBQlBOQUIsIHIwKSxcblxuICAgICAgICAgICAgLy8gcjEgPSBBQiArIEFCXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4ICsgXCJfYWRkXCIsIEFCLCBBQiwgcjEpLFxuICAgICAgICApO1xuXG4gICAgfVxuXG5cbiAgICBmdW5jdGlvbiBidWlsZFRvTW9udGdvbWVyeSgpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrXCJfdG9Nb250Z29tZXJ5XCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInJcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCB4MCA9IGMuZ2V0TG9jYWwoXCJ4XCIpO1xuICAgICAgICBjb25zdCB4MSA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwieFwiKSwgYy5pMzJfY29uc3QoZjFuOCkpO1xuICAgICAgICBjb25zdCByMCA9IGMuZ2V0TG9jYWwoXCJyXCIpO1xuICAgICAgICBjb25zdCByMSA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwiclwiKSwgYy5pMzJfY29uc3QoZjFuOCkpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXgrXCJfdG9Nb250Z29tZXJ5XCIsIHgwLCByMCksXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4K1wiX3RvTW9udGdvbWVyeVwiLCB4MSwgcjEpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYnVpbGRGcm9tTW9udGdvbWVyeSgpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrXCJfZnJvbU1vbnRnb21lcnlcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiclwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IHgwID0gYy5nZXRMb2NhbChcInhcIik7XG4gICAgICAgIGNvbnN0IHgxID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJ4XCIpLCBjLmkzMl9jb25zdChmMW44KSk7XG4gICAgICAgIGNvbnN0IHIwID0gYy5nZXRMb2NhbChcInJcIik7XG4gICAgICAgIGNvbnN0IHIxID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJyXCIpLCBjLmkzMl9jb25zdChmMW44KSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCtcIl9mcm9tTW9udGdvbWVyeVwiLCB4MCwgcjApLFxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCtcIl9mcm9tTW9udGdvbWVyeVwiLCB4MSwgcjEpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYnVpbGRDb3B5KCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCtcIl9jb3B5XCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInJcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCB4MCA9IGMuZ2V0TG9jYWwoXCJ4XCIpO1xuICAgICAgICBjb25zdCB4MSA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwieFwiKSwgYy5pMzJfY29uc3QoZjFuOCkpO1xuICAgICAgICBjb25zdCByMCA9IGMuZ2V0TG9jYWwoXCJyXCIpO1xuICAgICAgICBjb25zdCByMSA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwiclwiKSwgYy5pMzJfY29uc3QoZjFuOCkpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXgrXCJfY29weVwiLCB4MCwgcjApLFxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCtcIl9jb3B5XCIsIHgxLCByMSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBidWlsZFplcm8oKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4K1wiX3plcm9cIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ4XCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgeDAgPSBjLmdldExvY2FsKFwieFwiKTtcbiAgICAgICAgY29uc3QgeDEgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInhcIiksIGMuaTMyX2NvbnN0KGYxbjgpKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4K1wiX3plcm9cIiwgeDApLFxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCtcIl96ZXJvXCIsIHgxKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGJ1aWxkT25lKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCtcIl9vbmVcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ4XCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgeDAgPSBjLmdldExvY2FsKFwieFwiKTtcbiAgICAgICAgY29uc3QgeDEgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInhcIiksIGMuaTMyX2NvbnN0KGYxbjgpKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4K1wiX29uZVwiLCB4MCksXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4K1wiX3plcm9cIiwgeDEpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYnVpbGRFcSgpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrXCJfZXFcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5zZXRSZXR1cm5UeXBlKFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgeDAgPSBjLmdldExvY2FsKFwieFwiKTtcbiAgICAgICAgY29uc3QgeDEgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInhcIiksIGMuaTMyX2NvbnN0KGYxbjgpKTtcbiAgICAgICAgY29uc3QgeTAgPSBjLmdldExvY2FsKFwieVwiKTtcbiAgICAgICAgY29uc3QgeTEgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInlcIiksIGMuaTMyX2NvbnN0KGYxbjgpKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLmkzMl9hbmQoXG4gICAgICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCtcIl9lcVwiLCB4MCwgeTApLFxuICAgICAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXgrXCJfZXFcIiwgeDEsIHkxKVxuICAgICAgICAgICAgKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGJ1aWxkSXNaZXJvKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCtcIl9pc1plcm9cIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLnNldFJldHVyblR5cGUoXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCB4MCA9IGMuZ2V0TG9jYWwoXCJ4XCIpO1xuICAgICAgICBjb25zdCB4MSA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwieFwiKSwgYy5pMzJfY29uc3QoZjFuOCkpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuaTMyX2FuZChcbiAgICAgICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4K1wiX2lzWmVyb1wiLCB4MCksXG4gICAgICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCtcIl9pc1plcm9cIiwgeDEpXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYnVpbGRJbnZlcnNlKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCtcIl9pbnZlcnNlXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInJcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCB4MCA9IGMuZ2V0TG9jYWwoXCJ4XCIpO1xuICAgICAgICBjb25zdCB4MSA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwieFwiKSwgYy5pMzJfY29uc3QoZjFuOCkpO1xuICAgICAgICBjb25zdCByMCA9IGMuZ2V0TG9jYWwoXCJyXCIpO1xuICAgICAgICBjb25zdCByMSA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwiclwiKSwgYy5pMzJfY29uc3QoZjFuOCkpO1xuXG4gICAgICAgIGNvbnN0IHQwID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYxbjgpKTtcbiAgICAgICAgY29uc3QgdDEgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjFuOCkpO1xuICAgICAgICBjb25zdCB0MiA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMW44KSk7XG4gICAgICAgIGNvbnN0IHQzID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYxbjgpKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4K1wiX3NxdWFyZVwiLCB4MCwgdDApLFxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCtcIl9zcXVhcmVcIiwgeDEsIHQxKSxcbiAgICAgICAgICAgIC8vIGMuY2FsbChmMW1QcmVmaXgrXCJfbXVsXCIsIHQxLCBjLmkzMl9jb25zdChwTm9uUmVzaWR1ZSksIHQyKSxcbiAgICAgICAgICAgIGMuY2FsbChtdWxOb25SZXNpZHVlRm4sIHQxLCB0MiksXG5cbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXgrXCJfc3ViXCIsIHQwLCB0MiwgdDIpLFxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCtcIl9pbnZlcnNlXCIsIHQyLCB0MyksXG5cbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXgrXCJfbXVsXCIsIHgwLCB0MywgcjApLFxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCtcIl9tdWxcIiwgeDEsIHQzLCByMSksXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4K1wiX25lZ1wiLCByMSwgcjEpLFxuICAgICAgICApO1xuICAgIH1cblxuXG4gICAgZnVuY3Rpb24gYnVpbGRTaWduKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCtcIl9zaWduXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcInNcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuc2V0UmV0dXJuVHlwZShcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IHgwID0gYy5nZXRMb2NhbChcInhcIik7XG4gICAgICAgIGNvbnN0IHgxID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJ4XCIpLCBjLmkzMl9jb25zdChmMW44KSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcInNcIiAsIGMuY2FsbCggZjFtUHJlZml4ICsgXCJfc2lnblwiLCB4MSkpLFxuICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwic1wiKSxcbiAgICAgICAgICAgICAgICBjLnJldChjLmdldExvY2FsKFwic1wiKSlcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjLnJldChjLmNhbGwoIGYxbVByZWZpeCArIFwiX3NpZ25cIiwgeDApKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGJ1aWxkSXNPbmUoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4K1wiX2lzT25lXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5zZXRSZXR1cm5UeXBlKFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgeDAgPSBjLmdldExvY2FsKFwieFwiKTtcbiAgICAgICAgY29uc3QgeDEgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInhcIiksIGMuaTMyX2NvbnN0KGYxbjgpKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLnJldChjLmkzMl9hbmQoXG4gICAgICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCArIFwiX2lzT25lXCIsIHgwKSxcbiAgICAgICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4ICsgXCJfaXNaZXJvXCIsIHgxKSxcbiAgICAgICAgICAgICkpXG4gICAgICAgICk7XG4gICAgfVxuXG5cbiAgICAvLyBDaGVjayBoZXJlOiBodHRwczovL2VwcmludC5pYWNyLm9yZy8yMDEyLzY4NS5wZGZcbiAgICAvLyBBbGcgOWFkalxuICAgIGZ1bmN0aW9uIGJ1aWxkU3FydCgpIHtcblxuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCtcIl9zcXJ0XCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiYVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInByXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgLy8gQmlnSW50IGNhbid0IHRha2UgYHVuZGVmaW5lZGAgc28gd2UgdXNlIGB8fCAwYFxuICAgICAgICBjb25zdCBlMzQgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2ModXRpbHMkNC5iaWdJbnQyQnl0ZXNMRSgoQmlnSW50KHEgfHwgMCkgLSAzbikgLyA0biwgZjFuOCApKSk7XG4gICAgICAgIC8vIEJpZ0ludCBjYW4ndCB0YWtlIGB1bmRlZmluZWRgIHNvIHdlIHVzZSBgfHwgMGBcbiAgICAgICAgY29uc3QgZTEyID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKHV0aWxzJDQuYmlnSW50MkJ5dGVzTEUoKEJpZ0ludChxIHx8IDApIC0gMW4pIC8gMm4sIGYxbjggKSkpO1xuXG4gICAgICAgIGNvbnN0IGEgPSBjLmdldExvY2FsKFwiYVwiKTtcbiAgICAgICAgY29uc3QgYTEgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjFuOCoyKSk7XG4gICAgICAgIGNvbnN0IGFscGhhID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYxbjgqMikpO1xuICAgICAgICBjb25zdCBhMCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMW44KjIpKTtcbiAgICAgICAgY29uc3QgcG4xID0gbW9kdWxlLmFsbG9jKGYxbjgqMik7XG4gICAgICAgIGNvbnN0IG4xID0gYy5pMzJfY29uc3QocG4xKTtcbiAgICAgICAgY29uc3QgbjFhID0gYy5pMzJfY29uc3QocG4xKTtcbiAgICAgICAgY29uc3QgbjFiID0gYy5pMzJfY29uc3QocG4xK2YxbjgpO1xuICAgICAgICBjb25zdCB4MCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMW44KjIpKTtcbiAgICAgICAgY29uc3QgYiA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMW44KjIpKTtcblxuICAgICAgICBmLmFkZENvZGUoXG5cbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9vbmVcIiwgbjEpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX25lZ1wiLCBuMSwgbjEpLFxuXG4gICAgICAgICAgICAvLyBjb25zdCBhMSA9IEYucG93KGEsIEYuc3FydF9lMzQpO1xuICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX2V4cFwiLCBhLCBlMzQsIGMuaTMyX2NvbnN0KGYxbjgpLCBhMSksXG5cbiAgICAgICAgICAgIC8vIGNvbnN0IGExID0gRi5wb3coYSwgRi5zcXJ0X2UzNCk7XG4gICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfc3F1YXJlXCIsIGExLCBhbHBoYSksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfbXVsXCIsIGEsIGFscGhhLCBhbHBoYSksXG5cbiAgICAgICAgICAgIC8vIGNvbnN0IGEwID0gRi5tdWwoRi5mcm9iZW5pdXMoMSwgYWxmYSksIGFsZmEpO1xuICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX2Nvbmp1Z2F0ZVwiLCBhbHBoYSwgYTApLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX211bFwiLCBhMCwgYWxwaGEsIGEwKSxcblxuICAgICAgICAgICAgLy8gaWYgKEYuZXEoYTAsIEYubmVnb25lKSkgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICBjLmlmKGMuY2FsbChwcmVmaXggKyBcIl9lcVwiLGEwLG4xKSwgYy51bnJlYWNoYWJsZSgpICksXG5cbiAgICAgICAgICAgIC8vIGNvbnN0IHgwID0gRi5tdWwoYTEsIGEpO1xuICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX211bFwiLCBhMSwgYSwgeDApLFxuXG4gICAgICAgICAgICAvLyBpZiAoRi5lcShhbGZhLCBGLm5lZ29uZSkpIHtcbiAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX2VxXCIsIGFscGhhLCBuMSksXG4gICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAvLyB4ID0gRi5tdWwoeDAsIFtGLkYuemVybywgRi5GLm9uZV0pO1xuICAgICAgICAgICAgICAgICAgICAuLi5jLmNhbGwoZjFtUHJlZml4ICsgXCJfemVyb1wiLCBuMWEpLFxuICAgICAgICAgICAgICAgICAgICAuLi5jLmNhbGwoZjFtUHJlZml4ICsgXCJfb25lXCIsIG4xYiksXG4gICAgICAgICAgICAgICAgICAgIC4uLmMuY2FsbChwcmVmaXggKyBcIl9tdWxcIiwgbjEsIHgwLCBjLmdldExvY2FsKFwicHJcIikpLFxuICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAvLyBjb25zdCBiID0gRi5wb3coRi5hZGQoRi5vbmUsIGFsZmEpLCBGLnNxcnRfZTEyKTtcbiAgICAgICAgICAgICAgICAgICAgLi4uYy5jYWxsKHByZWZpeCArIFwiX29uZVwiLCBiKSxcbiAgICAgICAgICAgICAgICAgICAgLi4uYy5jYWxsKHByZWZpeCArIFwiX2FkZFwiLCBiLCBhbHBoYSwgYiksXG4gICAgICAgICAgICAgICAgICAgIC4uLmMuY2FsbChwcmVmaXggKyBcIl9leHBcIiwgYiwgZTEyLCBjLmkzMl9jb25zdChmMW44KSwgYiksXG5cbiAgICAgICAgICAgICAgICAgICAgLy8geCA9IEYubXVsKGIsIHgwKTtcbiAgICAgICAgICAgICAgICAgICAgLi4uYy5jYWxsKHByZWZpeCArIFwiX211bFwiLCBiLCB4MCwgYy5nZXRMb2NhbChcInByXCIpKSxcbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG5cbiAgICB9XG5cblxuICAgIGZ1bmN0aW9uIGJ1aWxkSXNTcXVhcmUoKSB7XG5cbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrXCJfaXNTcXVhcmVcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJhXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLnNldFJldHVyblR5cGUoXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICAvLyBCaWdJbnQgY2FuJ3QgdGFrZSBgdW5kZWZpbmVkYCBzbyB3ZSB1c2UgYHx8IDBgXG4gICAgICAgIGNvbnN0IGUzNCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyh1dGlscyQ0LmJpZ0ludDJCeXRlc0xFKChCaWdJbnQocSB8fCAwKSAtIDNuKSAvIDRuLCBmMW44ICkpKTtcblxuICAgICAgICBjb25zdCBhID0gYy5nZXRMb2NhbChcImFcIik7XG4gICAgICAgIGNvbnN0IGExID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYxbjgqMikpO1xuICAgICAgICBjb25zdCBhbHBoYSA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMW44KjIpKTtcbiAgICAgICAgY29uc3QgYTAgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjFuOCoyKSk7XG4gICAgICAgIGNvbnN0IHBuMSA9IG1vZHVsZS5hbGxvYyhmMW44KjIpO1xuICAgICAgICBjb25zdCBuMSA9IGMuaTMyX2NvbnN0KHBuMSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfb25lXCIsIG4xKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9uZWdcIiwgbjEsIG4xKSxcblxuICAgICAgICAgICAgLy8gY29uc3QgYTEgPSBGLnBvdyhhLCBGLnNxcnRfZTM0KTtcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9leHBcIiwgYSwgZTM0LCBjLmkzMl9jb25zdChmMW44KSwgYTEpLFxuXG4gICAgICAgICAgICAvLyBjb25zdCBhMSA9IEYucG93KGEsIEYuc3FydF9lMzQpO1xuICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX3NxdWFyZVwiLCBhMSwgYWxwaGEpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX211bFwiLCBhLCBhbHBoYSwgYWxwaGEpLFxuXG4gICAgICAgICAgICAvLyBjb25zdCBhMCA9IEYubXVsKEYuZnJvYmVuaXVzKDEsIGFsZmEpLCBhbGZhKTtcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9jb25qdWdhdGVcIiwgYWxwaGEsIGEwKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9tdWxcIiwgYTAsIGFscGhhLCBhMCksXG5cbiAgICAgICAgICAgIC8vIGlmIChGLmVxKGEwLCBGLm5lZ29uZSkpIHJldHVybiBudWxsO1xuICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICBjLmNhbGwoXG4gICAgICAgICAgICAgICAgICAgIHByZWZpeCArIFwiX2VxXCIsXG4gICAgICAgICAgICAgICAgICAgIGEwLFxuICAgICAgICAgICAgICAgICAgICBuMVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgYy5yZXQoYy5pMzJfY29uc3QoMCkpXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYy5yZXQoYy5pMzJfY29uc3QoMSkpXG4gICAgICAgICk7XG5cbiAgICB9XG5cblxuICAgIGJ1aWxkSXNaZXJvKCk7XG4gICAgYnVpbGRJc09uZSgpO1xuICAgIGJ1aWxkWmVybygpO1xuICAgIGJ1aWxkT25lKCk7XG4gICAgYnVpbGRDb3B5KCk7XG4gICAgYnVpbGRNdWwoKTtcbiAgICBidWlsZE11bDEoKTtcbiAgICBidWlsZFNxdWFyZSgpO1xuICAgIGJ1aWxkQWRkKCk7XG4gICAgYnVpbGRTdWIoKTtcbiAgICBidWlsZE5lZygpO1xuICAgIGJ1aWxkQ29uanVnYXRlKCk7XG4gICAgYnVpbGRUb01vbnRnb21lcnkoKTtcbiAgICBidWlsZEZyb21Nb250Z29tZXJ5KCk7XG4gICAgYnVpbGRFcSgpO1xuICAgIGJ1aWxkSW52ZXJzZSgpO1xuICAgIGJ1aWxkVGltZXNTY2FsYXIoKTtcbiAgICBidWlsZFNpZ24oKTtcbiAgICBidWlsZElzTmVnYXRpdmUoKTtcblxuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9pc1plcm9cIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX2lzT25lXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl96ZXJvXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9vbmVcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX2NvcHlcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX211bFwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfbXVsMVwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfc3F1YXJlXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9hZGRcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX3N1YlwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfbmVnXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9zaWduXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9jb25qdWdhdGVcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX2Zyb21Nb250Z29tZXJ5XCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl90b01vbnRnb21lcnlcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX2VxXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9pbnZlcnNlXCIpO1xuICAgIGJ1aWxkQmF0Y2hJbnZlcnNlJDEobW9kdWxlLCBwcmVmaXgpO1xuICAgIGJ1aWxkRXhwJDEoXG4gICAgICAgIG1vZHVsZSxcbiAgICAgICAgcHJlZml4ICsgXCJfZXhwXCIsXG4gICAgICAgIGYxbjgqMixcbiAgICAgICAgcHJlZml4ICsgXCJfbXVsXCIsXG4gICAgICAgIHByZWZpeCArIFwiX3NxdWFyZVwiLFxuICAgICAgICBwcmVmaXggKyBcIl9jb3B5XCIsXG4gICAgICAgIHByZWZpeCArIFwiX29uZVwiLFxuICAgICk7XG4gICAgYnVpbGRTcXJ0KCk7XG4gICAgYnVpbGRJc1NxdWFyZSgpO1xuXG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX2V4cFwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfdGltZXNTY2FsYXJcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX2JhdGNoSW52ZXJzZVwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfc3FydFwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfaXNTcXVhcmVcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX2lzTmVnYXRpdmVcIik7XG5cblxuICAgIHJldHVybiBwcmVmaXg7XG59O1xuXG4vKlxuICAgIENvcHlyaWdodCAyMDE5IDBLSU1TIGFzc29jaWF0aW9uLlxuXG4gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2Ygd2FzbXNuYXJrIChXZWIgQXNzZW1ibHkgemtTbmFyayBQcm92ZXIpLlxuXG4gICAgd2FzbXNuYXJrIGlzIGEgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdFxuICAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3JcbiAgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuXG4gICAgd2FzbXNuYXJrIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUXG4gICAgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZXG4gICAgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljXG4gICAgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuXG4gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAgICBhbG9uZyB3aXRoIHdhc21zbmFyay4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cbiovXG5cbmNvbnN0IGJ1aWxkRXhwID0gYnVpbGRfdGltZXNzY2FsYXI7XG5jb25zdCBidWlsZEJhdGNoSW52ZXJzZSA9IGJ1aWxkX2JhdGNoaW52ZXJzZTtcblxudmFyIGJ1aWxkX2YzbSA9IGZ1bmN0aW9uIGJ1aWxkRjNtKG1vZHVsZSwgbXVsTm9uUmVzaWR1ZUZuLCBwcmVmaXgsIGYxbVByZWZpeCkge1xuXG4gICAgaWYgKG1vZHVsZS5tb2R1bGVzW3ByZWZpeF0pIHJldHVybiBwcmVmaXg7ICAvLyBhbHJlYWR5IGJ1aWxkZWRcblxuICAgIGNvbnN0IGYxbjggPSBtb2R1bGUubW9kdWxlc1tmMW1QcmVmaXhdLm42NCo4O1xuICAgIG1vZHVsZS5tb2R1bGVzW3ByZWZpeF0gPSB7XG4gICAgICAgIG42NDogbW9kdWxlLm1vZHVsZXNbZjFtUHJlZml4XS5uNjQqM1xuICAgIH07XG5cbiAgICBmdW5jdGlvbiBidWlsZEFkZCgpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrXCJfYWRkXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInlcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJyXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgeDAgPSBjLmdldExvY2FsKFwieFwiKTtcbiAgICAgICAgY29uc3QgeDEgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInhcIiksIGMuaTMyX2NvbnN0KGYxbjgpKTtcbiAgICAgICAgY29uc3QgeDIgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInhcIiksIGMuaTMyX2NvbnN0KDIqZjFuOCkpO1xuICAgICAgICBjb25zdCB5MCA9IGMuZ2V0TG9jYWwoXCJ5XCIpO1xuICAgICAgICBjb25zdCB5MSA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwieVwiKSwgYy5pMzJfY29uc3QoZjFuOCkpO1xuICAgICAgICBjb25zdCB5MiA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwieVwiKSwgYy5pMzJfY29uc3QoMipmMW44KSk7XG4gICAgICAgIGNvbnN0IHIwID0gYy5nZXRMb2NhbChcInJcIik7XG4gICAgICAgIGNvbnN0IHIxID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJyXCIpLCBjLmkzMl9jb25zdChmMW44KSk7XG4gICAgICAgIGNvbnN0IHIyID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJyXCIpLCBjLmkzMl9jb25zdCgyKmYxbjgpKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4K1wiX2FkZFwiLCB4MCwgeTAsIHIwKSxcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXgrXCJfYWRkXCIsIHgxLCB5MSwgcjEpLFxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCtcIl9hZGRcIiwgeDIsIHkyLCByMiksXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYnVpbGRUaW1lc1NjYWxhcigpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrXCJfdGltZXNTY2FsYXJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwic2NhbGFyXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwic2NhbGFyTGVuXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiclwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IHgwID0gYy5nZXRMb2NhbChcInhcIik7XG4gICAgICAgIGNvbnN0IHgxID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJ4XCIpLCBjLmkzMl9jb25zdChmMW44KSk7XG4gICAgICAgIGNvbnN0IHgyID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJ4XCIpLCBjLmkzMl9jb25zdCgyKmYxbjgpKTtcbiAgICAgICAgY29uc3QgcjAgPSBjLmdldExvY2FsKFwiclwiKTtcbiAgICAgICAgY29uc3QgcjEgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInJcIiksIGMuaTMyX2NvbnN0KGYxbjgpKTtcbiAgICAgICAgY29uc3QgcjIgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInJcIiksIGMuaTMyX2NvbnN0KDIqZjFuOCkpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXgrXCJfdGltZXNTY2FsYXJcIiwgeDAsIGMuZ2V0TG9jYWwoXCJzY2FsYXJcIiksIGMuZ2V0TG9jYWwoXCJzY2FsYXJMZW5cIiksIHIwKSxcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXgrXCJfdGltZXNTY2FsYXJcIiwgeDEsIGMuZ2V0TG9jYWwoXCJzY2FsYXJcIiksIGMuZ2V0TG9jYWwoXCJzY2FsYXJMZW5cIiksIHIxKSxcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXgrXCJfdGltZXNTY2FsYXJcIiwgeDIsIGMuZ2V0TG9jYWwoXCJzY2FsYXJcIiksIGMuZ2V0TG9jYWwoXCJzY2FsYXJMZW5cIiksIHIyKSxcbiAgICAgICAgKTtcbiAgICB9XG5cblxuICAgIGZ1bmN0aW9uIGJ1aWxkU3ViKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCtcIl9zdWJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInJcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCB4MCA9IGMuZ2V0TG9jYWwoXCJ4XCIpO1xuICAgICAgICBjb25zdCB4MSA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwieFwiKSwgYy5pMzJfY29uc3QoZjFuOCkpO1xuICAgICAgICBjb25zdCB4MiA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwieFwiKSwgYy5pMzJfY29uc3QoMipmMW44KSk7XG4gICAgICAgIGNvbnN0IHkwID0gYy5nZXRMb2NhbChcInlcIik7XG4gICAgICAgIGNvbnN0IHkxID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJ5XCIpLCBjLmkzMl9jb25zdChmMW44KSk7XG4gICAgICAgIGNvbnN0IHkyID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJ5XCIpLCBjLmkzMl9jb25zdCgyKmYxbjgpKTtcbiAgICAgICAgY29uc3QgcjAgPSBjLmdldExvY2FsKFwiclwiKTtcbiAgICAgICAgY29uc3QgcjEgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInJcIiksIGMuaTMyX2NvbnN0KGYxbjgpKTtcbiAgICAgICAgY29uc3QgcjIgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInJcIiksIGMuaTMyX2NvbnN0KDIqZjFuOCkpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXgrXCJfc3ViXCIsIHgwLCB5MCwgcjApLFxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCtcIl9zdWJcIiwgeDEsIHkxLCByMSksXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4K1wiX3N1YlwiLCB4MiwgeTIsIHIyKSxcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBidWlsZE5lZygpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrXCJfbmVnXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInJcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCB4MCA9IGMuZ2V0TG9jYWwoXCJ4XCIpO1xuICAgICAgICBjb25zdCB4MSA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwieFwiKSwgYy5pMzJfY29uc3QoZjFuOCkpO1xuICAgICAgICBjb25zdCB4MiA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwieFwiKSwgYy5pMzJfY29uc3QoMipmMW44KSk7XG4gICAgICAgIGNvbnN0IHIwID0gYy5nZXRMb2NhbChcInJcIik7XG4gICAgICAgIGNvbnN0IHIxID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJyXCIpLCBjLmkzMl9jb25zdChmMW44KSk7XG4gICAgICAgIGNvbnN0IHIyID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJyXCIpLCBjLmkzMl9jb25zdCgyKmYxbjgpKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4K1wiX25lZ1wiLCB4MCwgcjApLFxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCtcIl9uZWdcIiwgeDEsIHIxKSxcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXgrXCJfbmVnXCIsIHgyLCByMiksXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYnVpbGRJc05lZ2F0aXZlKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCtcIl9pc05lZ2F0aXZlXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5zZXRSZXR1cm5UeXBlKFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgeDAgPSBjLmdldExvY2FsKFwieFwiKTtcbiAgICAgICAgY29uc3QgeDEgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInhcIiksIGMuaTMyX2NvbnN0KGYxbjgpKTtcbiAgICAgICAgY29uc3QgeDIgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInhcIiksIGMuaTMyX2NvbnN0KDIqZjFuOCkpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCtcIl9pc1plcm9cIiwgeDIpLFxuICAgICAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXgrXCJfaXNaZXJvXCIsIHgxKSxcbiAgICAgICAgICAgICAgICAgICAgYy5yZXQoYy5jYWxsKGYxbVByZWZpeCtcIl9pc05lZ2F0aXZlXCIsIHgwKSksXG4gICAgICAgICAgICAgICAgICAgIGMucmV0KGMuY2FsbChmMW1QcmVmaXgrXCJfaXNOZWdhdGl2ZVwiLCB4MSkpXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGMucmV0KGMuY2FsbChmMW1QcmVmaXgrXCJfaXNOZWdhdGl2ZVwiLCB4MikpXG4gICAgICAgICk7XG4gICAgfVxuXG5cbiAgICBmdW5jdGlvbiBidWlsZE11bCgpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrXCJfbXVsXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInlcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJyXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGNkID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IGEgPSBjZC5nZXRMb2NhbChcInhcIik7XG4gICAgICAgIGNvbnN0IGIgPSBjZC5pMzJfYWRkKGNkLmdldExvY2FsKFwieFwiKSwgY2QuaTMyX2NvbnN0KGYxbjgpKTtcbiAgICAgICAgY29uc3QgYyA9IGNkLmkzMl9hZGQoY2QuZ2V0TG9jYWwoXCJ4XCIpLCBjZC5pMzJfY29uc3QoMipmMW44KSk7XG4gICAgICAgIGNvbnN0IEEgPSBjZC5nZXRMb2NhbChcInlcIik7XG4gICAgICAgIGNvbnN0IEIgPSBjZC5pMzJfYWRkKGNkLmdldExvY2FsKFwieVwiKSwgY2QuaTMyX2NvbnN0KGYxbjgpKTtcbiAgICAgICAgY29uc3QgQyA9IGNkLmkzMl9hZGQoY2QuZ2V0TG9jYWwoXCJ5XCIpLCBjZC5pMzJfY29uc3QoMipmMW44KSk7XG4gICAgICAgIGNvbnN0IHIwID0gY2QuZ2V0TG9jYWwoXCJyXCIpO1xuICAgICAgICBjb25zdCByMSA9IGNkLmkzMl9hZGQoY2QuZ2V0TG9jYWwoXCJyXCIpLCBjZC5pMzJfY29uc3QoZjFuOCkpO1xuICAgICAgICBjb25zdCByMiA9IGNkLmkzMl9hZGQoY2QuZ2V0TG9jYWwoXCJyXCIpLCBjZC5pMzJfY29uc3QoMipmMW44KSk7XG5cbiAgICAgICAgY29uc3QgYUEgPSBjZC5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYxbjgpKTtcbiAgICAgICAgY29uc3QgYkIgPSBjZC5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYxbjgpKTtcbiAgICAgICAgY29uc3QgY0MgPSBjZC5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYxbjgpKTtcbiAgICAgICAgY29uc3QgYV9iID0gY2QuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMW44KSk7XG4gICAgICAgIGNvbnN0IEFfQiA9IGNkLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjFuOCkpO1xuICAgICAgICBjb25zdCBhX2MgPSBjZC5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYxbjgpKTtcbiAgICAgICAgY29uc3QgQV9DID0gY2QuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMW44KSk7XG4gICAgICAgIGNvbnN0IGJfYyA9IGNkLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjFuOCkpO1xuICAgICAgICBjb25zdCBCX0MgPSBjZC5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYxbjgpKTtcbiAgICAgICAgY29uc3QgYUFfYkIgPSBjZC5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYxbjgpKTtcbiAgICAgICAgY29uc3QgYUFfY0MgPSBjZC5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYxbjgpKTtcbiAgICAgICAgY29uc3QgYkJfY0MgPSBjZC5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYxbjgpKTtcbiAgICAgICAgY29uc3QgQVVYID0gY2QuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMW44KSk7XG5cblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjZC5jYWxsKGYxbVByZWZpeCArIFwiX211bFwiLCBhLCBBLCBhQSksXG4gICAgICAgICAgICBjZC5jYWxsKGYxbVByZWZpeCArIFwiX211bFwiLCBiLCBCLCBiQiksXG4gICAgICAgICAgICBjZC5jYWxsKGYxbVByZWZpeCArIFwiX211bFwiLCBjLCBDLCBjQyksXG5cbiAgICAgICAgICAgIGNkLmNhbGwoZjFtUHJlZml4ICsgXCJfYWRkXCIsIGEsIGIsIGFfYiksXG4gICAgICAgICAgICBjZC5jYWxsKGYxbVByZWZpeCArIFwiX2FkZFwiLCBBLCBCLCBBX0IpLFxuICAgICAgICAgICAgY2QuY2FsbChmMW1QcmVmaXggKyBcIl9hZGRcIiwgYSwgYywgYV9jKSxcbiAgICAgICAgICAgIGNkLmNhbGwoZjFtUHJlZml4ICsgXCJfYWRkXCIsIEEsIEMsIEFfQyksXG4gICAgICAgICAgICBjZC5jYWxsKGYxbVByZWZpeCArIFwiX2FkZFwiLCBiLCBjLCBiX2MpLFxuICAgICAgICAgICAgY2QuY2FsbChmMW1QcmVmaXggKyBcIl9hZGRcIiwgQiwgQywgQl9DKSxcblxuICAgICAgICAgICAgY2QuY2FsbChmMW1QcmVmaXggKyBcIl9hZGRcIiwgYUEsIGJCLCBhQV9iQiksXG4gICAgICAgICAgICBjZC5jYWxsKGYxbVByZWZpeCArIFwiX2FkZFwiLCBhQSwgY0MsIGFBX2NDKSxcbiAgICAgICAgICAgIGNkLmNhbGwoZjFtUHJlZml4ICsgXCJfYWRkXCIsIGJCLCBjQywgYkJfY0MpLFxuXG4gICAgICAgICAgICBjZC5jYWxsKGYxbVByZWZpeCArIFwiX211bFwiLCBiX2MsIEJfQywgcjApLFxuICAgICAgICAgICAgY2QuY2FsbChmMW1QcmVmaXggKyBcIl9zdWJcIiwgcjAsIGJCX2NDLCByMCksXG4gICAgICAgICAgICBjZC5jYWxsKG11bE5vblJlc2lkdWVGbiwgcjAsIHIwKSxcbiAgICAgICAgICAgIGNkLmNhbGwoZjFtUHJlZml4ICsgXCJfYWRkXCIsIGFBLCByMCwgcjApLFxuXG4gICAgICAgICAgICBjZC5jYWxsKGYxbVByZWZpeCArIFwiX211bFwiLCBhX2IsIEFfQiwgcjEpLFxuICAgICAgICAgICAgY2QuY2FsbChmMW1QcmVmaXggKyBcIl9zdWJcIiwgcjEsIGFBX2JCLCByMSksXG4gICAgICAgICAgICBjZC5jYWxsKG11bE5vblJlc2lkdWVGbiwgY0MsIEFVWCksXG4gICAgICAgICAgICBjZC5jYWxsKGYxbVByZWZpeCArIFwiX2FkZFwiLCByMSwgQVVYLCByMSksXG5cbiAgICAgICAgICAgIGNkLmNhbGwoZjFtUHJlZml4ICsgXCJfbXVsXCIsIGFfYywgQV9DLCByMiksXG4gICAgICAgICAgICBjZC5jYWxsKGYxbVByZWZpeCArIFwiX3N1YlwiLCByMiwgYUFfY0MsIHIyKSxcbiAgICAgICAgICAgIGNkLmNhbGwoZjFtUHJlZml4ICsgXCJfYWRkXCIsIHIyLCBiQiwgcjIpLFxuICAgICAgICApO1xuXG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYnVpbGRTcXVhcmUoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4K1wiX3NxdWFyZVwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInhcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJyXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgQSA9IGMuZ2V0TG9jYWwoXCJ4XCIpO1xuICAgICAgICBjb25zdCBCID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJ4XCIpLCBjLmkzMl9jb25zdChmMW44KSk7XG4gICAgICAgIGNvbnN0IEMgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInhcIiksIGMuaTMyX2NvbnN0KDIqZjFuOCkpO1xuICAgICAgICBjb25zdCByMCA9IGMuZ2V0TG9jYWwoXCJyXCIpO1xuICAgICAgICBjb25zdCByMSA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwiclwiKSwgYy5pMzJfY29uc3QoZjFuOCkpO1xuICAgICAgICBjb25zdCByMiA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwiclwiKSwgYy5pMzJfY29uc3QoMipmMW44KSk7XG5cbiAgICAgICAgY29uc3QgczAgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjFuOCkpO1xuICAgICAgICBjb25zdCBhYiA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMW44KSk7XG4gICAgICAgIGNvbnN0IHMxID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYxbjgpKTtcbiAgICAgICAgY29uc3QgczIgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjFuOCkpO1xuICAgICAgICBjb25zdCBiYyA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMW44KSk7XG4gICAgICAgIGNvbnN0IHMzID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYxbjgpKTtcbiAgICAgICAgY29uc3QgczQgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjFuOCkpO1xuXG5cbiAgICAgICAgZi5hZGRDb2RlKFxuXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4ICsgXCJfc3F1YXJlXCIsIEEsIHMwKSxcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXggKyBcIl9tdWxcIiwgQSwgQiwgYWIpLFxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCArIFwiX2FkZFwiLCBhYiwgYWIsIHMxKSxcblxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCArIFwiX3N1YlwiLCBBLCBCLCBzMiksXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4ICsgXCJfYWRkXCIsIHMyLCBDLCBzMiksXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4ICsgXCJfc3F1YXJlXCIsIHMyLCBzMiksXG5cbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXggKyBcIl9tdWxcIiwgQiwgQywgYmMpLFxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCArIFwiX2FkZFwiLCBiYywgYmMsIHMzKSxcblxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCArIFwiX3NxdWFyZVwiLCBDLCBzNCksXG5cbiAgICAgICAgICAgIGMuY2FsbChtdWxOb25SZXNpZHVlRm4sIHMzLCByMCksXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4ICsgXCJfYWRkXCIsIHMwLCByMCwgcjApLFxuXG4gICAgICAgICAgICBjLmNhbGwobXVsTm9uUmVzaWR1ZUZuLCBzNCwgcjEpLFxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCArIFwiX2FkZFwiLCBzMSwgcjEsIHIxKSxcblxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCArIFwiX2FkZFwiLCBzMCwgczQsIHIyKSxcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXggKyBcIl9zdWJcIiwgczMsIHIyLCByMiksXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4ICsgXCJfYWRkXCIsIHMyLCByMiwgcjIpLFxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCArIFwiX2FkZFwiLCBzMSwgcjIsIHIyKSxcbiAgICAgICAgKTtcblxuICAgIH1cblxuXG4gICAgZnVuY3Rpb24gYnVpbGRUb01vbnRnb21lcnkoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4K1wiX3RvTW9udGdvbWVyeVwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInhcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJyXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgeDAgPSBjLmdldExvY2FsKFwieFwiKTtcbiAgICAgICAgY29uc3QgeDEgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInhcIiksIGMuaTMyX2NvbnN0KGYxbjgpKTtcbiAgICAgICAgY29uc3QgeDIgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInhcIiksIGMuaTMyX2NvbnN0KDIqZjFuOCkpO1xuICAgICAgICBjb25zdCByMCA9IGMuZ2V0TG9jYWwoXCJyXCIpO1xuICAgICAgICBjb25zdCByMSA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwiclwiKSwgYy5pMzJfY29uc3QoZjFuOCkpO1xuICAgICAgICBjb25zdCByMiA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwiclwiKSwgYy5pMzJfY29uc3QoMipmMW44KSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCtcIl90b01vbnRnb21lcnlcIiwgeDAsIHIwKSxcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXgrXCJfdG9Nb250Z29tZXJ5XCIsIHgxLCByMSksXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4K1wiX3RvTW9udGdvbWVyeVwiLCB4MiwgcjIpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYnVpbGRGcm9tTW9udGdvbWVyeSgpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrXCJfZnJvbU1vbnRnb21lcnlcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiclwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IHgwID0gYy5nZXRMb2NhbChcInhcIik7XG4gICAgICAgIGNvbnN0IHgxID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJ4XCIpLCBjLmkzMl9jb25zdChmMW44KSk7XG4gICAgICAgIGNvbnN0IHgyID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJ4XCIpLCBjLmkzMl9jb25zdCgyKmYxbjgpKTtcbiAgICAgICAgY29uc3QgcjAgPSBjLmdldExvY2FsKFwiclwiKTtcbiAgICAgICAgY29uc3QgcjEgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInJcIiksIGMuaTMyX2NvbnN0KGYxbjgpKTtcbiAgICAgICAgY29uc3QgcjIgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInJcIiksIGMuaTMyX2NvbnN0KDIqZjFuOCkpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXgrXCJfZnJvbU1vbnRnb21lcnlcIiwgeDAsIHIwKSxcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXgrXCJfZnJvbU1vbnRnb21lcnlcIiwgeDEsIHIxKSxcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXgrXCJfZnJvbU1vbnRnb21lcnlcIiwgeDIsIHIyKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGJ1aWxkQ29weSgpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrXCJfY29weVwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInhcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJyXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgeDAgPSBjLmdldExvY2FsKFwieFwiKTtcbiAgICAgICAgY29uc3QgeDEgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInhcIiksIGMuaTMyX2NvbnN0KGYxbjgpKTtcbiAgICAgICAgY29uc3QgeDIgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInhcIiksIGMuaTMyX2NvbnN0KDIqZjFuOCkpO1xuICAgICAgICBjb25zdCByMCA9IGMuZ2V0TG9jYWwoXCJyXCIpO1xuICAgICAgICBjb25zdCByMSA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwiclwiKSwgYy5pMzJfY29uc3QoZjFuOCkpO1xuICAgICAgICBjb25zdCByMiA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwiclwiKSwgYy5pMzJfY29uc3QoMipmMW44KSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCtcIl9jb3B5XCIsIHgwLCByMCksXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4K1wiX2NvcHlcIiwgeDEsIHIxKSxcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXgrXCJfY29weVwiLCB4MiwgcjIpLFxuICAgICAgICApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGJ1aWxkWmVybygpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrXCJfemVyb1wiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInhcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCB4MCA9IGMuZ2V0TG9jYWwoXCJ4XCIpO1xuICAgICAgICBjb25zdCB4MSA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwieFwiKSwgYy5pMzJfY29uc3QoZjFuOCkpO1xuICAgICAgICBjb25zdCB4MiA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwieFwiKSwgYy5pMzJfY29uc3QoMipmMW44KSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCtcIl96ZXJvXCIsIHgwKSxcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXgrXCJfemVyb1wiLCB4MSksXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4K1wiX3plcm9cIiwgeDIpLFxuICAgICAgICApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGJ1aWxkT25lKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCtcIl9vbmVcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ4XCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgeDAgPSBjLmdldExvY2FsKFwieFwiKTtcbiAgICAgICAgY29uc3QgeDEgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInhcIiksIGMuaTMyX2NvbnN0KGYxbjgpKTtcbiAgICAgICAgY29uc3QgeDIgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInhcIiksIGMuaTMyX2NvbnN0KDIqZjFuOCkpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXgrXCJfb25lXCIsIHgwKSxcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXgrXCJfemVyb1wiLCB4MSksXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4K1wiX3plcm9cIiwgeDIpLFxuICAgICAgICApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGJ1aWxkRXEoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4K1wiX2VxXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInlcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuc2V0UmV0dXJuVHlwZShcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IHgwID0gYy5nZXRMb2NhbChcInhcIik7XG4gICAgICAgIGNvbnN0IHgxID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJ4XCIpLCBjLmkzMl9jb25zdChmMW44KSk7XG4gICAgICAgIGNvbnN0IHgyID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJ4XCIpLCBjLmkzMl9jb25zdCgyKmYxbjgpKTtcbiAgICAgICAgY29uc3QgeTAgPSBjLmdldExvY2FsKFwieVwiKTtcbiAgICAgICAgY29uc3QgeTEgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInlcIiksIGMuaTMyX2NvbnN0KGYxbjgpKTtcbiAgICAgICAgY29uc3QgeTIgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInlcIiksIGMuaTMyX2NvbnN0KDIqZjFuOCkpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuaTMyX2FuZChcbiAgICAgICAgICAgICAgICBjLmkzMl9hbmQoXG4gICAgICAgICAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXgrXCJfZXFcIiwgeDAsIHkwKSxcbiAgICAgICAgICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCtcIl9lcVwiLCB4MSwgeTEpLFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCtcIl9lcVwiLCB4MiwgeTIpXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYnVpbGRJc1plcm8oKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4K1wiX2lzWmVyb1wiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInhcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuc2V0UmV0dXJuVHlwZShcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IHgwID0gYy5nZXRMb2NhbChcInhcIik7XG4gICAgICAgIGNvbnN0IHgxID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJ4XCIpLCBjLmkzMl9jb25zdChmMW44KSk7XG4gICAgICAgIGNvbnN0IHgyID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJ4XCIpLCBjLmkzMl9jb25zdCgyKmYxbjgpKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLmkzMl9hbmQoXG4gICAgICAgICAgICAgICAgYy5pMzJfYW5kKFxuICAgICAgICAgICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4K1wiX2lzWmVyb1wiLCB4MCksXG4gICAgICAgICAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXgrXCJfaXNaZXJvXCIsIHgxKVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCtcIl9pc1plcm9cIiwgeDIpXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYnVpbGRJbnZlcnNlKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCtcIl9pbnZlcnNlXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInJcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCB4MCA9IGMuZ2V0TG9jYWwoXCJ4XCIpO1xuICAgICAgICBjb25zdCB4MSA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwieFwiKSwgYy5pMzJfY29uc3QoZjFuOCkpO1xuICAgICAgICBjb25zdCB4MiA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwieFwiKSwgYy5pMzJfY29uc3QoMipmMW44KSk7XG4gICAgICAgIGNvbnN0IHIwID0gYy5nZXRMb2NhbChcInJcIik7XG4gICAgICAgIGNvbnN0IHIxID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJyXCIpLCBjLmkzMl9jb25zdChmMW44KSk7XG4gICAgICAgIGNvbnN0IHIyID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJyXCIpLCBjLmkzMl9jb25zdCgyKmYxbjgpKTtcblxuICAgICAgICBjb25zdCB0MCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMW44KSk7XG4gICAgICAgIGNvbnN0IHQxID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYxbjgpKTtcbiAgICAgICAgY29uc3QgdDIgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjFuOCkpO1xuICAgICAgICBjb25zdCB0MyA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMW44KSk7XG4gICAgICAgIGNvbnN0IHQ0ID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYxbjgpKTtcbiAgICAgICAgY29uc3QgdDUgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjFuOCkpO1xuICAgICAgICBjb25zdCBjMCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMW44KSk7XG4gICAgICAgIGNvbnN0IGMxID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYxbjgpKTtcbiAgICAgICAgY29uc3QgYzIgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjFuOCkpO1xuICAgICAgICBjb25zdCB0NiA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMW44KSk7XG4gICAgICAgIGNvbnN0IEFVWCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMW44KSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCtcIl9zcXVhcmVcIiwgeDAsIHQwKSxcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXgrXCJfc3F1YXJlXCIsIHgxLCB0MSksXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4K1wiX3NxdWFyZVwiLCB4MiwgdDIpLFxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCtcIl9tdWxcIiwgeDAsIHgxLCB0MyksXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4K1wiX211bFwiLCB4MCwgeDIsIHQ0KSxcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXgrXCJfbXVsXCIsIHgxLCB4MiwgdDUpLFxuXG4gICAgICAgICAgICBjLmNhbGwobXVsTm9uUmVzaWR1ZUZuLCB0NSwgYzApLFxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCtcIl9zdWJcIiwgdDAsIGMwLCBjMCksXG5cbiAgICAgICAgICAgIGMuY2FsbChtdWxOb25SZXNpZHVlRm4sIHQyLCBjMSksXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4K1wiX3N1YlwiLCBjMSwgdDMsIGMxKSxcblxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCtcIl9zdWJcIiwgdDEsIHQ0LCBjMiksXG5cbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXgrXCJfbXVsXCIsIHgyLCBjMSwgdDYpLFxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCtcIl9tdWxcIiwgeDEsIGMyLCBBVVgpLFxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCtcIl9hZGRcIiwgdDYsIEFVWCwgdDYpLFxuICAgICAgICAgICAgYy5jYWxsKG11bE5vblJlc2lkdWVGbiwgdDYsIHQ2KSxcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXgrXCJfbXVsXCIsIHgwLCBjMCwgQVVYKSxcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXgrXCJfYWRkXCIsIEFVWCwgdDYsIHQ2KSxcblxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCtcIl9pbnZlcnNlXCIsIHQ2LCB0NiksXG5cbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXgrXCJfbXVsXCIsIHQ2LCBjMCwgcjApLFxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCtcIl9tdWxcIiwgdDYsIGMxLCByMSksXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4K1wiX211bFwiLCB0NiwgYzIsIHIyKVxuICAgICAgICApO1xuICAgIH1cblxuXG4gICAgZnVuY3Rpb24gYnVpbGRTaWduKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCtcIl9zaWduXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcInNcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuc2V0UmV0dXJuVHlwZShcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IHgwID0gYy5nZXRMb2NhbChcInhcIik7XG4gICAgICAgIGNvbnN0IHgxID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJ4XCIpLCBjLmkzMl9jb25zdChmMW44KSk7XG4gICAgICAgIGNvbnN0IHgyID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJ4XCIpLCBjLmkzMl9jb25zdCgyKmYxbjgpKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLnNldExvY2FsKFwic1wiICwgYy5jYWxsKCBmMW1QcmVmaXggKyBcIl9zaWduXCIsIHgyKSksXG4gICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJzXCIpLFxuICAgICAgICAgICAgICAgIGMucmV0KGMuZ2V0TG9jYWwoXCJzXCIpKVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJzXCIgLCBjLmNhbGwoIGYxbVByZWZpeCArIFwiX3NpZ25cIiwgeDEpKSxcbiAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInNcIiksXG4gICAgICAgICAgICAgICAgYy5yZXQoYy5nZXRMb2NhbChcInNcIikpXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYy5yZXQoYy5jYWxsKCBmMW1QcmVmaXggKyBcIl9zaWduXCIsIHgwKSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBidWlsZElzT25lKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCtcIl9pc09uZVwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInhcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuc2V0UmV0dXJuVHlwZShcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IHgwID0gYy5nZXRMb2NhbChcInhcIik7XG4gICAgICAgIGNvbnN0IHgxID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJ4XCIpLCBjLmkzMl9jb25zdChmMW44KSk7XG4gICAgICAgIGNvbnN0IHgyID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJ4XCIpLCBjLmkzMl9jb25zdChmMW44KjIpKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLnJldChcbiAgICAgICAgICAgICAgICBjLmkzMl9hbmQoXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX2FuZChcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXggKyBcIl9pc09uZVwiLCB4MCksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4ICsgXCJfaXNaZXJvXCIsIHgxKVxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4ICsgXCJfaXNaZXJvXCIsIHgyKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBidWlsZElzWmVybygpO1xuICAgIGJ1aWxkSXNPbmUoKTtcbiAgICBidWlsZFplcm8oKTtcbiAgICBidWlsZE9uZSgpO1xuICAgIGJ1aWxkQ29weSgpO1xuICAgIGJ1aWxkTXVsKCk7XG4gICAgYnVpbGRTcXVhcmUoKTtcbiAgICBidWlsZEFkZCgpO1xuICAgIGJ1aWxkU3ViKCk7XG4gICAgYnVpbGROZWcoKTtcbiAgICBidWlsZFNpZ24oKTtcbiAgICBidWlsZFRvTW9udGdvbWVyeSgpO1xuICAgIGJ1aWxkRnJvbU1vbnRnb21lcnkoKTtcbiAgICBidWlsZEVxKCk7XG4gICAgYnVpbGRJbnZlcnNlKCk7XG4gICAgYnVpbGRUaW1lc1NjYWxhcigpO1xuICAgIGJ1aWxkSXNOZWdhdGl2ZSgpO1xuXG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX2lzWmVyb1wiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfaXNPbmVcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX3plcm9cIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX29uZVwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfY29weVwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfbXVsXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9zcXVhcmVcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX2FkZFwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfc3ViXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9uZWdcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX3NpZ25cIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX2Zyb21Nb250Z29tZXJ5XCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl90b01vbnRnb21lcnlcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX2VxXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9pbnZlcnNlXCIpO1xuICAgIGJ1aWxkQmF0Y2hJbnZlcnNlKG1vZHVsZSwgcHJlZml4KTtcbiAgICBidWlsZEV4cChcbiAgICAgICAgbW9kdWxlLFxuICAgICAgICBwcmVmaXggKyBcIl9leHBcIixcbiAgICAgICAgZjFuOCozLFxuICAgICAgICBwcmVmaXggKyBcIl9tdWxcIixcbiAgICAgICAgcHJlZml4ICsgXCJfc3F1YXJlXCIsXG4gICAgICAgIHByZWZpeCArIFwiX2NvcHlcIixcbiAgICAgICAgcHJlZml4ICsgXCJfb25lXCJcbiAgICApO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9leHBcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX3RpbWVzU2NhbGFyXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9iYXRjaEludmVyc2VcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX2lzTmVnYXRpdmVcIik7XG5cbiAgICByZXR1cm4gcHJlZml4O1xufTtcblxuLypcbiAgICBDb3B5cmlnaHQgMjAxOSAwS0lNUyBhc3NvY2lhdGlvbi5cblxuICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHdhc21zbmFyayAoV2ViIEFzc2VtYmx5IHprU25hcmsgUHJvdmVyKS5cblxuICAgIHdhc21zbmFyayBpcyBhIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXRcbiAgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yXG4gICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cblxuICAgIHdhc21zbmFyayBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVFxuICAgIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWVxuICAgIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpY1xuICAgIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cblxuICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gICAgYWxvbmcgd2l0aCB3YXNtc25hcmsuIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXG4qL1xuXG52YXIgYnVpbGRfdGltZXNzY2FsYXJuYWYgPSBmdW5jdGlvbiBidWlsZFRpbWVzU2NhbGFyTkFGKG1vZHVsZSwgZm5OYW1lLCBlbGVtZW50TGVuLCBvcEFCLCBvcEFBLCBvcEFtQiwgb3BDb3B5LCBvcEluaXQpIHtcblxuICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24oZm5OYW1lKTtcbiAgICBmLmFkZFBhcmFtKFwiYmFzZVwiLCBcImkzMlwiKTtcbiAgICBmLmFkZFBhcmFtKFwic2NhbGFyXCIsIFwiaTMyXCIpO1xuICAgIGYuYWRkUGFyYW0oXCJzY2FsYXJMZW5ndGhcIiwgXCJpMzJcIik7XG4gICAgZi5hZGRQYXJhbShcInJcIiwgXCJpMzJcIik7XG4gICAgZi5hZGRMb2NhbChcIm9sZDBcIiwgXCJpMzJcIik7XG4gICAgZi5hZGRMb2NhbChcIm5iaXRzXCIsIFwiaTMyXCIpO1xuICAgIGYuYWRkTG9jYWwoXCJpXCIsIFwiaTMyXCIpO1xuICAgIGYuYWRkTG9jYWwoXCJsYXN0XCIsIFwiaTMyXCIpO1xuICAgIGYuYWRkTG9jYWwoXCJjdXJcIiwgXCJpMzJcIik7XG4gICAgZi5hZGRMb2NhbChcImNhcnJ5XCIsIFwiaTMyXCIpO1xuICAgIGYuYWRkTG9jYWwoXCJwXCIsIFwiaTMyXCIpO1xuXG4gICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgIGNvbnN0IGF1eCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhlbGVtZW50TGVuKSk7XG5cbiAgICBmdW5jdGlvbiBnZXRCaXQoSURYKSB7XG4gICAgICAgIHJldHVybiBjLmkzMl9hbmQoXG4gICAgICAgICAgICBjLmkzMl9zaHJfdShcbiAgICAgICAgICAgICAgICBjLmkzMl9sb2FkKFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9hZGQoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwic2NhbGFyXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfYW5kKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX3Nocl91KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJRFgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KDMpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdCgweEZGRkZGRkZDKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBjLmkzMl9hbmQoXG4gICAgICAgICAgICAgICAgICAgIElEWCxcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QoMHgxRilcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYy5pMzJfY29uc3QoMSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBwdXNoQml0KGIpIHtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIC4uLmMuaTMyX3N0b3JlOChcbiAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicFwiKSxcbiAgICAgICAgICAgICAgICBjLmkzMl9jb25zdChiKVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIC4uLmMuc2V0TG9jYWwoXG4gICAgICAgICAgICAgICAgXCJwXCIsXG4gICAgICAgICAgICAgICAgYy5pMzJfYWRkKFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicFwiKSxcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QoMSlcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApXG4gICAgICAgIF07XG4gICAgfVxuXG4gICAgZi5hZGRDb2RlKFxuICAgICAgICBjLmlmKFxuICAgICAgICAgICAgYy5pMzJfZXF6KGMuZ2V0TG9jYWwoXCJzY2FsYXJMZW5ndGhcIikpLFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgIC4uLmMuY2FsbChvcEluaXQsIGMuZ2V0TG9jYWwoXCJyXCIpKSxcbiAgICAgICAgICAgICAgICAuLi5jLnJldChbXSlcbiAgICAgICAgICAgIF1cbiAgICAgICAgKSxcbiAgICAgICAgYy5zZXRMb2NhbChcIm5iaXRzXCIsIGMuaTMyX3NobChjLmdldExvY2FsKFwic2NhbGFyTGVuZ3RoXCIpLCBjLmkzMl9jb25zdCgzKSkpLFxuICAgICAgICBjLnNldExvY2FsKFwib2xkMFwiLCBjLmkzMl9sb2FkKGMuaTMyX2NvbnN0KDApKSksXG4gICAgICAgIGMuc2V0TG9jYWwoXCJwXCIsIGMuZ2V0TG9jYWwoXCJvbGQwXCIpKSxcbiAgICAgICAgYy5pMzJfc3RvcmUoXG4gICAgICAgICAgICBjLmkzMl9jb25zdCgwKSxcbiAgICAgICAgICAgIGMuaTMyX2FuZChcbiAgICAgICAgICAgICAgICBjLmkzMl9hZGQoXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX2FkZChcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJvbGQwXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QoMzIpXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJuYml0c1wiKVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgYy5pMzJfY29uc3QoMHhGRkZGRkZGOClcbiAgICAgICAgICAgIClcbiAgICAgICAgKSxcbiAgICAgICAgYy5zZXRMb2NhbChcImlcIiwgYy5pMzJfY29uc3QoMSkpLFxuXG4gICAgICAgIGMuc2V0TG9jYWwoXCJsYXN0XCIsZ2V0Qml0KGMuaTMyX2NvbnN0KDApKSksXG4gICAgICAgIGMuc2V0TG9jYWwoXCJjYXJyeVwiLGMuaTMyX2NvbnN0KDApKSxcblxuICAgICAgICBjLmJsb2NrKGMubG9vcChcbiAgICAgICAgICAgIGMuYnJfaWYoMSwgYy5pMzJfZXEoIGMuZ2V0TG9jYWwoXCJpXCIpLCBjLmdldExvY2FsKFwibmJpdHNcIikpKSxcblxuICAgICAgICAgICAgYy5zZXRMb2NhbChcImN1clwiLCBnZXRCaXQoYy5nZXRMb2NhbChcImlcIikpKSxcbiAgICAgICAgICAgIGMuaWYoIGMuZ2V0TG9jYWwoXCJsYXN0XCIpLFxuICAgICAgICAgICAgICAgIGMuaWYoIGMuZ2V0TG9jYWwoXCJjdXJcIiksXG4gICAgICAgICAgICAgICAgICAgIGMuaWYoYy5nZXRMb2NhbChcImNhcnJ5XCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLmMuc2V0TG9jYWwoXCJsYXN0XCIsIGMuaTMyX2NvbnN0KDApKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5jLnNldExvY2FsKFwiY2FycnlcIiwgYy5pMzJfY29uc3QoMSkpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnB1c2hCaXQoMSlcbiAgICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgICAgICxcbiAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5jLnNldExvY2FsKFwibGFzdFwiLCBjLmkzMl9jb25zdCgwKSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uYy5zZXRMb2NhbChcImNhcnJ5XCIsIGMuaTMyX2NvbnN0KDEpKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5wdXNoQml0KDI1NSlcbiAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgIGMuaWYoYy5nZXRMb2NhbChcImNhcnJ5XCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLmMuc2V0TG9jYWwoXCJsYXN0XCIsIGMuaTMyX2NvbnN0KDApKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5jLnNldExvY2FsKFwiY2FycnlcIiwgYy5pMzJfY29uc3QoMSkpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnB1c2hCaXQoMjU1KVxuICAgICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICAgICAgLFxuICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLmMuc2V0TG9jYWwoXCJsYXN0XCIsIGMuaTMyX2NvbnN0KDApKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5jLnNldExvY2FsKFwiY2FycnlcIiwgYy5pMzJfY29uc3QoMCkpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnB1c2hCaXQoMSlcbiAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBjLmlmKCBjLmdldExvY2FsKFwiY3VyXCIpLFxuICAgICAgICAgICAgICAgICAgICBjLmlmKGMuZ2V0TG9jYWwoXCJjYXJyeVwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5jLnNldExvY2FsKFwibGFzdFwiLCBjLmkzMl9jb25zdCgwKSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uYy5zZXRMb2NhbChcImNhcnJ5XCIsIGMuaTMyX2NvbnN0KDEpKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5wdXNoQml0KDApXG4gICAgICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICAgICAgICAsXG4gICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uYy5zZXRMb2NhbChcImxhc3RcIiwgYy5pMzJfY29uc3QoMSkpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLmMuc2V0TG9jYWwoXCJjYXJyeVwiLCBjLmkzMl9jb25zdCgwKSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4ucHVzaEJpdCgwKVxuICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgYy5pZihjLmdldExvY2FsKFwiY2FycnlcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uYy5zZXRMb2NhbChcImxhc3RcIiwgYy5pMzJfY29uc3QoMSkpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLmMuc2V0TG9jYWwoXCJjYXJyeVwiLCBjLmkzMl9jb25zdCgwKSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4ucHVzaEJpdCgwKVxuICAgICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICAgICAgLFxuICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLmMuc2V0TG9jYWwoXCJsYXN0XCIsIGMuaTMyX2NvbnN0KDApKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5jLnNldExvY2FsKFwiY2FycnlcIiwgYy5pMzJfY29uc3QoMCkpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnB1c2hCaXQoMClcbiAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpXCIsIGMuaTMyX2FkZChjLmdldExvY2FsKFwiaVwiKSwgYy5pMzJfY29uc3QoMSkpKSxcbiAgICAgICAgICAgIGMuYnIoMClcbiAgICAgICAgKSksXG5cbiAgICAgICAgYy5pZiggYy5nZXRMb2NhbChcImxhc3RcIiksXG4gICAgICAgICAgICBjLmlmKGMuZ2V0TG9jYWwoXCJjYXJyeVwiKSxcbiAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgIC4uLnB1c2hCaXQoMjU1KSxcbiAgICAgICAgICAgICAgICAgICAgLi4ucHVzaEJpdCgwKSxcbiAgICAgICAgICAgICAgICAgICAgLi4ucHVzaEJpdCgxKVxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAsXG4gICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAuLi5wdXNoQml0KDEpXG4gICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjLmlmKGMuZ2V0TG9jYWwoXCJjYXJyeVwiKSxcbiAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgIC4uLnB1c2hCaXQoMCksXG4gICAgICAgICAgICAgICAgICAgIC4uLnB1c2hCaXQoMSlcbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICApLFxuICAgICAgICApLFxuXG4gICAgICAgIGMuc2V0TG9jYWwoXCJwXCIsIGMuaTMyX3N1YihjLmdldExvY2FsKFwicFwiKSwgYy5pMzJfY29uc3QoMSkpKSxcblxuICAgICAgICAvLyBwIGFscmVhZHkgcG9pbnRzIHRvIHRoZSBsYXN0IGJpdFxuXG4gICAgICAgIGMuY2FsbChvcENvcHksIGMuZ2V0TG9jYWwoXCJiYXNlXCIpLCBhdXgpLFxuXG4gICAgICAgIGMuY2FsbChvcEluaXQsIGMuZ2V0TG9jYWwoXCJyXCIpKSxcblxuICAgICAgICBjLmJsb2NrKGMubG9vcChcblxuXG4gICAgICAgICAgICBjLmNhbGwob3BBQSwgYy5nZXRMb2NhbChcInJcIiksIGMuZ2V0TG9jYWwoXCJyXCIpKSxcblxuXG4gICAgICAgICAgICBjLnNldExvY2FsKFwiY3VyXCIsXG4gICAgICAgICAgICAgICAgYy5pMzJfbG9hZDhfdShcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInBcIilcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApLFxuXG4gICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJjdXJcIiksXG4gICAgICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfZXEoYy5nZXRMb2NhbChcImN1clwiKSwgYy5pMzJfY29uc3QoMSkpLFxuICAgICAgICAgICAgICAgICAgICBjLmNhbGwob3BBQiwgIGMuZ2V0TG9jYWwoXCJyXCIpLCBhdXgsIGMuZ2V0TG9jYWwoXCJyXCIpKSxcbiAgICAgICAgICAgICAgICAgICAgYy5jYWxsKG9wQW1CLCBjLmdldExvY2FsKFwiclwiKSwgYXV4LCBjLmdldExvY2FsKFwiclwiKSksXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgYy5icl9pZigxLCBjLmkzMl9lcSggYy5nZXRMb2NhbChcIm9sZDBcIiksIGMuZ2V0TG9jYWwoXCJwXCIpKSksXG4gICAgICAgICAgICBjLnNldExvY2FsKFwicFwiLCBjLmkzMl9zdWIoYy5nZXRMb2NhbChcInBcIiksIGMuaTMyX2NvbnN0KDEpKSksXG4gICAgICAgICAgICBjLmJyKDApXG5cbiAgICAgICAgKSksXG5cbiAgICAgICAgYy5pMzJfc3RvcmUoIGMuaTMyX2NvbnN0KDApLCBjLmdldExvY2FsKFwib2xkMFwiKSlcblxuICAgICk7XG5cbn07XG5cbi8qXG4gICAgQ29weXJpZ2h0IDIwMTkgMEtJTVMgYXNzb2NpYXRpb24uXG5cbiAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB3YXNtc25hcmsgKFdlYiBBc3NlbWJseSB6a1NuYXJrIFByb3ZlcikuXG5cbiAgICB3YXNtc25hcmsgaXMgYSBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0XG4gICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxuICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG5cbiAgICB3YXNtc25hcmsgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVRcbiAgICBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFlcbiAgICBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWNcbiAgICBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG5cbiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICAgIGFsb25nIHdpdGggd2FzbXNuYXJrLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuKi9cblxudmFyIGJ1aWxkX211bHRpZXhwID0gZnVuY3Rpb24gYnVpbGRNdWx0aWV4cChtb2R1bGUsIHByZWZpeCwgZm5OYW1lLCBvcEFkZCwgbjhiKSB7XG5cbiAgICBjb25zdCBuNjRnID0gbW9kdWxlLm1vZHVsZXNbcHJlZml4XS5uNjQ7XG4gICAgY29uc3QgbjhnID0gbjY0Zyo4O1xuXG4gICAgZnVuY3Rpb24gYnVpbGRHZXRDaHVuaygpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihmbk5hbWUgKyBcIl9nZXRDaHVua1wiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInBTY2FsYXJcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJzY2FsYXJTaXplXCIsIFwiaTMyXCIpOyAgLy8gTnVtYmVyIG9mIGJ5dGVzIG9mIHRoZSBzY2FsYXJcbiAgICAgICAgZi5hZGRQYXJhbShcInN0YXJ0Qml0XCIsIFwiaTMyXCIpOyAgLy8gQml0IHRvIHN0YXJ0IGV4dHJhY3RcbiAgICAgICAgZi5hZGRQYXJhbShcImNodW5rU2l6ZVwiLCBcImkzMlwiKTsgIC8vIENodW5rIHNpemUgaW4gYml0c1xuICAgICAgICBmLmFkZExvY2FsKFwiYml0c1RvRW5kXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwibWFza1wiLCBcImkzMlwiKTtcbiAgICAgICAgZi5zZXRSZXR1cm5UeXBlKFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcImJpdHNUb0VuZFwiLFxuICAgICAgICAgICAgICAgIGMuaTMyX3N1YihcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfbXVsKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInNjYWxhclNpemVcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdCg4KVxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwic3RhcnRCaXRcIilcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICBjLmkzMl9ndF9zKFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiY2h1bmtTaXplXCIpLFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiYml0c1RvRW5kXCIpXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFxuICAgICAgICAgICAgICAgICAgICBcIm1hc2tcIixcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfc3ViKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfc2hsKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KDEpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJiaXRzVG9FbmRcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdCgxKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFxuICAgICAgICAgICAgICAgICAgICBcIm1hc2tcIixcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfc3ViKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfc2hsKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KDEpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJjaHVua1NpemVcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdCgxKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGMuaTMyX2FuZChcbiAgICAgICAgICAgICAgICBjLmkzMl9zaHJfdShcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfbG9hZChcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2FkZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicFNjYWxhclwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9zaHJfdShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInN0YXJ0Qml0XCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdCgzKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAwLCAgLy8gb2Zmc2V0XG4gICAgICAgICAgICAgICAgICAgICAgICAwICAgLy8gYWxpZ24gdG8gYnl0ZS5cbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfYW5kKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInN0YXJ0Qml0XCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QoMHg3KVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwibWFza1wiKVxuICAgICAgICAgICAgKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGJ1aWxkTXV0aWV4cENodW5rKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKGZuTmFtZSArIFwiX2NodW5rXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicEJhc2VzXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicFNjYWxhcnNcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJzY2FsYXJTaXplXCIsIFwiaTMyXCIpOyAgLy8gTnVtYmVyIG9mIHBvaW50c1xuICAgICAgICBmLmFkZFBhcmFtKFwiblwiLCBcImkzMlwiKTsgIC8vIE51bWJlciBvZiBwb2ludHNcbiAgICAgICAgZi5hZGRQYXJhbShcInN0YXJ0Qml0XCIsIFwiaTMyXCIpOyAgLy8gYml0IHdoZXJlIGl0IHN0YXJ0cyB0aGUgY2h1bmtcbiAgICAgICAgZi5hZGRQYXJhbShcImNodW5rU2l6ZVwiLCBcImkzMlwiKTsgIC8vIGJpdCB3aGVyZSBpdCBzdGFydHMgdGhlIGNodW5rXG4gICAgICAgIGYuYWRkUGFyYW0oXCJwclwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcIm5DaHVua3NcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJpdFNjYWxhclwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcImVuZFNjYWxhclwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcIml0QmFzZVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcImlcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJqXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiblRhYmxlXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwicFRhYmxlXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiaWR4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwicElkeFRhYmxlXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICBjLmkzMl9lcXooYy5nZXRMb2NhbChcIm5cIikpLFxuICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgLi4uYy5jYWxsKHByZWZpeCArIFwiX3plcm9cIiwgYy5nZXRMb2NhbChcInByXCIpKSxcbiAgICAgICAgICAgICAgICAgICAgLi4uYy5yZXQoW10pXG4gICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgLy8gQWxsb2NhdGUgbWVtb3J5XG5cbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXG4gICAgICAgICAgICAgICAgXCJuVGFibGVcIixcbiAgICAgICAgICAgICAgICBjLmkzMl9zaGwoXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KDEpLFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiY2h1bmtTaXplXCIpXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJwVGFibGVcIiwgYy5pMzJfbG9hZCggYy5pMzJfY29uc3QoMCkgKSksXG4gICAgICAgICAgICBjLmkzMl9zdG9yZShcbiAgICAgICAgICAgICAgICBjLmkzMl9jb25zdCgwKSxcbiAgICAgICAgICAgICAgICBjLmkzMl9hZGQoXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwVGFibGVcIiksXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX211bChcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJuVGFibGVcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdChuOGcpXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApLFxuXG4gICAgICAgICAgICAvLyBSZXNldCBUYWJsZVxuICAgICAgICAgICAgYy5zZXRMb2NhbChcImpcIiwgYy5pMzJfY29uc3QoMCkpLFxuICAgICAgICAgICAgYy5ibG9jayhjLmxvb3AoXG4gICAgICAgICAgICAgICAgYy5icl9pZihcbiAgICAgICAgICAgICAgICAgICAgMSxcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfZXEoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwialwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJuVGFibGVcIilcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgICAgICBjLmNhbGwoXG4gICAgICAgICAgICAgICAgICAgIHByZWZpeCArIFwiX3plcm9cIixcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfYWRkKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInBUYWJsZVwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX211bChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwialwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdChuOGcpXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApLFxuXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcImpcIiwgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJqXCIpLCBjLmkzMl9jb25zdCgxKSkpLFxuICAgICAgICAgICAgICAgIGMuYnIoMClcbiAgICAgICAgICAgICkpLFxuXG4gICAgICAgICAgICAvLyBEaXN0cmlidXRlIGVsZW1lbnRzXG4gICAgICAgICAgICBjLnNldExvY2FsKFwiaXRCYXNlXCIsIGMuZ2V0TG9jYWwoXCJwQmFzZXNcIikpLFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcIml0U2NhbGFyXCIsIGMuZ2V0TG9jYWwoXCJwU2NhbGFyc1wiKSksXG4gICAgICAgICAgICBjLnNldExvY2FsKFwiZW5kU2NhbGFyXCIsXG4gICAgICAgICAgICAgICAgYy5pMzJfYWRkKFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicFNjYWxhcnNcIiksXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX211bChcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJuXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInNjYWxhclNpemVcIilcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjLmJsb2NrKGMubG9vcChcbiAgICAgICAgICAgICAgICBjLmJyX2lmKFxuICAgICAgICAgICAgICAgICAgICAxLFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9lcShcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpdFNjYWxhclwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJlbmRTY2FsYXJcIilcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFxuICAgICAgICAgICAgICAgICAgICBcImlkeFwiLFxuICAgICAgICAgICAgICAgICAgICBjLmNhbGwoZm5OYW1lICsgXCJfZ2V0Q2h1bmtcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpdFNjYWxhclwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJzY2FsYXJTaXplXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInN0YXJ0Qml0XCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImNodW5rU2l6ZVwiKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpZHhcIiksXG4gICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLmMuc2V0TG9jYWwoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJwSWR4VGFibGVcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9hZGQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwVGFibGVcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX211bChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX3N1YihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaWR4XCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KDEpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QobjhnKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLmMuY2FsbChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcEFkZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicElkeFRhYmxlXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpdEJhc2VcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInBJZHhUYWJsZVwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFwiaXRTY2FsYXJcIiwgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJpdFNjYWxhclwiKSwgYy5nZXRMb2NhbChcInNjYWxhclNpemVcIikpKSxcbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFwiaXRCYXNlXCIsIGMuaTMyX2FkZChjLmdldExvY2FsKFwiaXRCYXNlXCIpLCBjLmkzMl9jb25zdChuOGIpKSksXG4gICAgICAgICAgICAgICAgYy5icigwKVxuICAgICAgICAgICAgKSksXG5cbiAgICAgICAgICAgIGMuY2FsbChmbk5hbWUgKyBcIl9yZWR1Y2VUYWJsZVwiLCBjLmdldExvY2FsKFwicFRhYmxlXCIpLCBjLmdldExvY2FsKFwiY2h1bmtTaXplXCIpKSxcbiAgICAgICAgICAgIGMuY2FsbChcbiAgICAgICAgICAgICAgICBwcmVmaXggKyBcIl9jb3B5XCIsXG4gICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInBUYWJsZVwiKSxcbiAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicHJcIilcbiAgICAgICAgICAgICksXG5cblxuICAgICAgICAgICAgYy5pMzJfc3RvcmUoXG4gICAgICAgICAgICAgICAgYy5pMzJfY29uc3QoMCksXG4gICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInBUYWJsZVwiKVxuICAgICAgICAgICAgKVxuXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYnVpbGRNdWx0aWV4cCgpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihmbk5hbWUpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicEJhc2VzXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicFNjYWxhcnNcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJzY2FsYXJTaXplXCIsIFwiaTMyXCIpOyAgLy8gTnVtYmVyIG9mIHBvaW50c1xuICAgICAgICBmLmFkZFBhcmFtKFwiblwiLCBcImkzMlwiKTsgIC8vIE51bWJlciBvZiBwb2ludHNcbiAgICAgICAgZi5hZGRQYXJhbShcInByXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiY2h1bmtTaXplXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwibkNodW5rc1wiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcIml0U2NhbGFyXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiZW5kU2NhbGFyXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiaXRCYXNlXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiaXRCaXRcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJpXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwialwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcIm5UYWJsZVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcInBUYWJsZVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcImlkeFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcInBJZHhUYWJsZVwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IGF1eCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOGcpKTtcblxuICAgICAgICBjb25zdCBwVFNpemVzID0gbW9kdWxlLmFsbG9jKFtcbiAgICAgICAgICAgIDE3LCAxNywgMTcsIDE3LCAgIDE3LCAxNywgMTcsIDE3LFxuICAgICAgICAgICAgMTcsIDE3LCAxNiwgMTYsICAgMTUsIDE0LCAxMywgMTMsXG4gICAgICAgICAgICAxMiwgMTEsIDEwLCAgOSwgICAgOCwgIDcsICA3LCAgNixcbiAgICAgICAgICAgIDUgLCAgNCwgIDMsICAyLCAgICAxLCAgMSwgIDEsICAxXG4gICAgICAgIF0pO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl96ZXJvXCIsIGMuZ2V0TG9jYWwoXCJwclwiKSksXG4gICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgIGMuaTMyX2VxeihjLmdldExvY2FsKFwiblwiKSksXG4gICAgICAgICAgICAgICAgYy5yZXQoW10pXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcImNodW5rU2l6ZVwiLCBjLmkzMl9sb2FkOF91KCBjLmkzMl9jbHooYy5nZXRMb2NhbChcIm5cIikpLCAgcFRTaXplcyApKSxcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXG4gICAgICAgICAgICAgICAgXCJuQ2h1bmtzXCIsXG4gICAgICAgICAgICAgICAgYy5pMzJfYWRkKFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9kaXZfdShcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX3N1YihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9zaGwoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJzY2FsYXJTaXplXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdCgzKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QoMSlcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiY2h1bmtTaXplXCIpXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KDEpXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSxcblxuXG4gICAgICAgICAgICAvLyBBbGxvY2F0ZSBtZW1vcnlcblxuICAgICAgICAgICAgYy5zZXRMb2NhbChcbiAgICAgICAgICAgICAgICBcIml0Qml0XCIsXG4gICAgICAgICAgICAgICAgYy5pMzJfbXVsKFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9zdWIoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwibkNodW5rc1wiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KDEpXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJjaHVua1NpemVcIilcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYy5ibG9jayhjLmxvb3AoXG4gICAgICAgICAgICAgICAgYy5icl9pZihcbiAgICAgICAgICAgICAgICAgICAgMSxcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfbHRfcyhcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpdEJpdFwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KDApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApLFxuXG4gICAgICAgICAgICAgICAgLy8gRG91YmxlIG5DaHVuayB0aW1lc1xuICAgICAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX2VxeihjLmNhbGwocHJlZml4ICsgXCJfaXNaZXJvXCIsIGMuZ2V0TG9jYWwoXCJwclwiKSkpLFxuICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5jLnNldExvY2FsKFwialwiLCBjLmkzMl9jb25zdCgwKSksXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5jLmJsb2NrKGMubG9vcChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmJyX2lmKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9lcShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJqXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImNodW5rU2l6ZVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9kb3VibGVcIiwgYy5nZXRMb2NhbChcInByXCIpLCBjLmdldExvY2FsKFwicHJcIikpLFxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcImpcIiwgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJqXCIpLCBjLmkzMl9jb25zdCgxKSkpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuYnIoMClcbiAgICAgICAgICAgICAgICAgICAgICAgICkpXG4gICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICApLFxuXG4gICAgICAgICAgICAgICAgYy5jYWxsKFxuICAgICAgICAgICAgICAgICAgICBmbk5hbWUgKyBcIl9jaHVua1wiLFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicEJhc2VzXCIpLFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicFNjYWxhcnNcIiksXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJzY2FsYXJTaXplXCIpLFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiblwiKSxcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcIml0Qml0XCIpLFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiY2h1bmtTaXplXCIpLFxuICAgICAgICAgICAgICAgICAgICBhdXhcbiAgICAgICAgICAgICAgICApLFxuXG4gICAgICAgICAgICAgICAgYy5jYWxsKFxuICAgICAgICAgICAgICAgICAgICBwcmVmaXggKyBcIl9hZGRcIixcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInByXCIpLFxuICAgICAgICAgICAgICAgICAgICBhdXgsXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwclwiKVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcIml0Qml0XCIsIGMuaTMyX3N1YihjLmdldExvY2FsKFwiaXRCaXRcIiksIGMuZ2V0TG9jYWwoXCJjaHVua1NpemVcIikpKSxcbiAgICAgICAgICAgICAgICBjLmJyKDApXG4gICAgICAgICAgICApKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGJ1aWxkUmVkdWNlVGFibGUoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24oZm5OYW1lICsgXCJfcmVkdWNlVGFibGVcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwVGFibGVcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwXCIsIFwiaTMyXCIpOyAgLy8gTnVtYmVyIG9mIGJpdHMgb2YgdGhlIHRhYmxlXG4gICAgICAgIGYuYWRkTG9jYWwoXCJoYWxmXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiaXQxXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiaXQyXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwicEFjY1wiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgYy5pMzJfZXEoYy5nZXRMb2NhbChcInBcIiksIGMuaTMyX2NvbnN0KDEpKSxcbiAgICAgICAgICAgICAgICBjLnJldChbXSlcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjLnNldExvY2FsKFxuICAgICAgICAgICAgICAgIFwiaGFsZlwiLFxuICAgICAgICAgICAgICAgIGMuaTMyX3NobChcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QoMSksXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX3N1YihcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QoMSlcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpdDFcIiwgYy5nZXRMb2NhbChcInBUYWJsZVwiKSksXG4gICAgICAgICAgICBjLnNldExvY2FsKFxuICAgICAgICAgICAgICAgIFwiaXQyXCIsXG4gICAgICAgICAgICAgICAgYy5pMzJfYWRkKFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicFRhYmxlXCIpLFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9tdWwoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaGFsZlwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KG44ZylcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjLnNldExvY2FsKFwicEFjY1wiLFxuICAgICAgICAgICAgICAgIGMuaTMyX3N1YihcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcIml0MlwiKSxcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QobjhnKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjLmJsb2NrKGMubG9vcChcbiAgICAgICAgICAgICAgICBjLmJyX2lmKFxuICAgICAgICAgICAgICAgICAgICAxLFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9lcShcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpdDFcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicEFjY1wiKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBjLmNhbGwoXG4gICAgICAgICAgICAgICAgICAgIHByZWZpeCArIFwiX2FkZFwiLFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaXQxXCIpLFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaXQyXCIpLFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaXQxXCIpXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBjLmNhbGwoXG4gICAgICAgICAgICAgICAgICAgIHByZWZpeCArIFwiX2FkZFwiLFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicEFjY1wiKSxcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcIml0MlwiKSxcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInBBY2NcIilcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpdDFcIiwgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJpdDFcIiksIGMuaTMyX2NvbnN0KG44ZykpKSxcbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFwiaXQyXCIsIGMuaTMyX2FkZChjLmdldExvY2FsKFwiaXQyXCIpLCBjLmkzMl9jb25zdChuOGcpKSksXG4gICAgICAgICAgICAgICAgYy5icigwKVxuICAgICAgICAgICAgKSksXG5cbiAgICAgICAgICAgIGMuY2FsbChcbiAgICAgICAgICAgICAgICBmbk5hbWUgKyBcIl9yZWR1Y2VUYWJsZVwiLFxuICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwVGFibGVcIiksXG4gICAgICAgICAgICAgICAgYy5pMzJfc3ViKFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicFwiKSxcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QoMSlcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApLFxuXG4gICAgICAgICAgICBjLnNldExvY2FsKFwicFwiLCBjLmkzMl9zdWIoYy5nZXRMb2NhbChcInBcIiksIGMuaTMyX2NvbnN0KDEpKSksXG4gICAgICAgICAgICBjLmJsb2NrKGMubG9vcChcbiAgICAgICAgICAgICAgICBjLmJyX2lmKDEsIGMuaTMyX2VxeihjLmdldExvY2FsKFwicFwiKSkpLFxuICAgICAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9kb3VibGVcIiwgYy5nZXRMb2NhbChcInBBY2NcIiksIGMuZ2V0TG9jYWwoXCJwQWNjXCIpKSxcbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFwicFwiLCBjLmkzMl9zdWIoYy5nZXRMb2NhbChcInBcIiksIGMuaTMyX2NvbnN0KDEpKSksXG4gICAgICAgICAgICAgICAgYy5icigwKVxuICAgICAgICAgICAgKSksXG5cbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9hZGRcIiwgYy5nZXRMb2NhbChcInBUYWJsZVwiKSwgYy5nZXRMb2NhbChcInBBY2NcIiksIGMuZ2V0TG9jYWwoXCJwVGFibGVcIikpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgYnVpbGRHZXRDaHVuaygpO1xuICAgIGJ1aWxkUmVkdWNlVGFibGUoKTtcbiAgICBidWlsZE11dGlleHBDaHVuaygpO1xuICAgIGJ1aWxkTXVsdGlleHAoKTtcblxuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihmbk5hbWUpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihmbk5hbWUgK1wiX2NodW5rXCIpO1xuXG5cbn07XG5cbi8qXG4gICAgQ29weXJpZ2h0IDIwMTkgMEtJTVMgYXNzb2NpYXRpb24uXG5cbiAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB3YXNtc25hcmsgKFdlYiBBc3NlbWJseSB6a1NuYXJrIFByb3ZlcikuXG5cbiAgICB3YXNtc25hcmsgaXMgYSBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0XG4gICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxuICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG5cbiAgICB3YXNtc25hcmsgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVRcbiAgICBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFlcbiAgICBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWNcbiAgICBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG5cbiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICAgIGFsb25nIHdpdGggd2FzbXNuYXJrLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuKi9cblxuY29uc3QgYnVpbGRUaW1lc1NjYWxhck5BRiA9IGJ1aWxkX3RpbWVzc2NhbGFybmFmO1xuLy9jb25zdCBidWlsZFRpbWVzU2NhbGFyID0gcmVxdWlyZShcIi4vYnVpbGRfdGltZXNzY2FsYXJcIik7XG5jb25zdCBidWlsZEJhdGNoQ29udmVydGlvbiA9IGJ1aWxkX2JhdGNoY29udmVydGlvbjtcbmNvbnN0IGJ1aWxkTXVsdGlleHAkMSA9IGJ1aWxkX211bHRpZXhwO1xuXG52YXIgYnVpbGRfY3VydmVfamFjb2JpYW5fYTAgPSBmdW5jdGlvbiBidWlsZEN1cnZlKG1vZHVsZSwgcHJlZml4LCBwcmVmaXhGaWVsZCwgcEIpIHtcblxuXG4gICAgY29uc3QgbjY0ID0gbW9kdWxlLm1vZHVsZXNbcHJlZml4RmllbGRdLm42NDtcbiAgICBjb25zdCBuOCA9IG42NCo4O1xuXG4gICAgaWYgKG1vZHVsZS5tb2R1bGVzW3ByZWZpeF0pIHJldHVybiBwcmVmaXg7ICAvLyBhbHJlYWR5IGJ1aWxkZWRcbiAgICBtb2R1bGUubW9kdWxlc1twcmVmaXhdID0ge1xuICAgICAgICBuNjQ6IG42NCozXG4gICAgfTtcblxuICAgIGZ1bmN0aW9uIGJ1aWxkSXNaZXJvKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCArIFwiX2lzWmVyb1wiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInAxXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLnNldFJldHVyblR5cGUoXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBmLmFkZENvZGUoYy5jYWxsKFxuICAgICAgICAgICAgcHJlZml4RmllbGQgKyBcIl9pc1plcm9cIixcbiAgICAgICAgICAgIGMuaTMyX2FkZChcbiAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicDFcIiksXG4gICAgICAgICAgICAgICAgYy5pMzJfY29uc3QobjgqMilcbiAgICAgICAgICAgIClcbiAgICAgICAgKSk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGJ1aWxkSXNaZXJvQWZmaW5lKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCArIFwiX2lzWmVyb0FmZmluZVwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInAxXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLnNldFJldHVyblR5cGUoXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLmkzMl9hbmQoXG4gICAgICAgICAgICAgICAgYy5jYWxsKFxuICAgICAgICAgICAgICAgICAgICBwcmVmaXhGaWVsZCArIFwiX2lzWmVyb1wiLFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicDFcIilcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGMuY2FsbChcbiAgICAgICAgICAgICAgICAgICAgcHJlZml4RmllbGQgKyBcIl9pc1plcm9cIixcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfYWRkKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInAxXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QobjgpXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYnVpbGRDb3B5KCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCArIFwiX2NvcHlcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwc1wiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInBkXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPG42NCozOyBpKyspIHtcbiAgICAgICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgICAgICBjLmk2NF9zdG9yZShcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInBkXCIpLFxuICAgICAgICAgICAgICAgICAgICBpKjgsXG4gICAgICAgICAgICAgICAgICAgIGMuaTY0X2xvYWQoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicHNcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICBpKjhcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICB9XG5cblxuICAgIGZ1bmN0aW9uIGJ1aWxkQ29weUFmZmluZSgpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXggKyBcIl9jb3B5QWZmaW5lXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicHNcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwZFwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGZvciAobGV0IGk9MDsgaTxuNjQqMjsgaSsrKSB7XG4gICAgICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICAgICAgYy5pNjRfc3RvcmUoXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwZFwiKSxcbiAgICAgICAgICAgICAgICAgICAgaSo4LFxuICAgICAgICAgICAgICAgICAgICBjLmk2NF9sb2FkKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInBzXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgaSo4XG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICB9XG5cblxuICAgIGZ1bmN0aW9uIGJ1aWxkWmVybygpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXggKyBcIl96ZXJvXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicHJcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBmLmFkZENvZGUoYy5jYWxsKFxuICAgICAgICAgICAgcHJlZml4RmllbGQgKyBcIl96ZXJvXCIsXG4gICAgICAgICAgICBjLmdldExvY2FsKFwicHJcIilcbiAgICAgICAgKSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKGMuY2FsbChcbiAgICAgICAgICAgIHByZWZpeEZpZWxkICsgXCJfb25lXCIsXG4gICAgICAgICAgICBjLmkzMl9hZGQoXG4gICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInByXCIpLFxuICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KG44KVxuICAgICAgICAgICAgKVxuICAgICAgICApKTtcblxuICAgICAgICBmLmFkZENvZGUoYy5jYWxsKFxuICAgICAgICAgICAgcHJlZml4RmllbGQgKyBcIl96ZXJvXCIsXG4gICAgICAgICAgICBjLmkzMl9hZGQoXG4gICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInByXCIpLFxuICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KG44KjIpXG4gICAgICAgICAgICApXG4gICAgICAgICkpO1xuICAgIH1cblxuXG4gICAgZnVuY3Rpb24gYnVpbGRaZXJvQWZmaW5lKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCArIFwiX3plcm9BZmZpbmVcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwclwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGYuYWRkQ29kZShjLmNhbGwoXG4gICAgICAgICAgICBwcmVmaXhGaWVsZCArIFwiX3plcm9cIixcbiAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwclwiKVxuICAgICAgICApKTtcblxuICAgICAgICBmLmFkZENvZGUoYy5jYWxsKFxuICAgICAgICAgICAgcHJlZml4RmllbGQgKyBcIl96ZXJvXCIsXG4gICAgICAgICAgICBjLmkzMl9hZGQoXG4gICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInByXCIpLFxuICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KG44KVxuICAgICAgICAgICAgKVxuICAgICAgICApKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBidWlsZEVxKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCArIFwiX2VxXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicDFcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwMlwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5zZXRSZXR1cm5UeXBlKFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiejFcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJ6MlwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IHgxID0gYy5nZXRMb2NhbChcInAxXCIpO1xuICAgICAgICBjb25zdCB5MSA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwicDFcIiksIGMuaTMyX2NvbnN0KG44KSk7XG4gICAgICAgIGYuYWRkQ29kZShjLnNldExvY2FsKFwiejFcIiwgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwMVwiKSwgYy5pMzJfY29uc3QobjgqMikpKSk7XG4gICAgICAgIGNvbnN0IHoxID0gYy5nZXRMb2NhbChcInoxXCIpO1xuICAgICAgICBjb25zdCB4MiA9IGMuZ2V0TG9jYWwoXCJwMlwiKTtcbiAgICAgICAgY29uc3QgeTIgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInAyXCIpLCBjLmkzMl9jb25zdChuOCkpO1xuICAgICAgICBmLmFkZENvZGUoYy5zZXRMb2NhbChcInoyXCIsIGMuaTMyX2FkZChjLmdldExvY2FsKFwicDJcIiksIGMuaTMyX2NvbnN0KG44KjIpKSkpO1xuICAgICAgICBjb25zdCB6MiA9IGMuZ2V0TG9jYWwoXCJ6MlwiKTtcblxuICAgICAgICBjb25zdCBaMVoxID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44KSk7XG4gICAgICAgIGNvbnN0IFoyWjIgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcbiAgICAgICAgY29uc3QgVTEgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcbiAgICAgICAgY29uc3QgVTIgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcbiAgICAgICAgY29uc3QgWjFfY3ViZWQgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcbiAgICAgICAgY29uc3QgWjJfY3ViZWQgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcbiAgICAgICAgY29uc3QgUzEgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcbiAgICAgICAgY29uc3QgUzIgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcblxuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX2lzWmVyb1wiLCBjLmdldExvY2FsKFwicDFcIikpLFxuICAgICAgICAgICAgICAgIGMucmV0KCBjLmNhbGwocHJlZml4ICsgXCJfaXNaZXJvXCIsIGMuZ2V0TG9jYWwoXCJwMlwiKSkpLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX2lzWmVyb1wiLCBjLmdldExvY2FsKFwicDJcIikpLFxuICAgICAgICAgICAgICAgIGMucmV0KGMuaTMyX2NvbnN0KDApKVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfaXNPbmVcIiwgejEpLFxuICAgICAgICAgICAgICAgIGMucmV0KGMuY2FsbChwcmVmaXggKyBcIl9lcU1peGVkXCIsIGMuZ2V0TG9jYWwoXCJwMlwiKSwgYy5nZXRMb2NhbChcInAxXCIpKSlcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX2lzT25lXCIsIHoyKSxcbiAgICAgICAgICAgICAgICBjLnJldChjLmNhbGwocHJlZml4ICsgXCJfZXFNaXhlZFwiLCBjLmdldExvY2FsKFwicDFcIiksIGMuZ2V0TG9jYWwoXCJwMlwiKSkpXG4gICAgICAgICAgICApLFxuXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9zcXVhcmVcIiwgejEsIFoxWjEpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfc3F1YXJlXCIsIHoyLCBaMloyKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX211bFwiLCB4MSwgWjJaMiwgVTEpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfbXVsXCIsIHgyLCBaMVoxLCBVMiksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9tdWxcIiwgejEsIFoxWjEsIFoxX2N1YmVkKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX211bFwiLCB6MiwgWjJaMiwgWjJfY3ViZWQpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfbXVsXCIsIHkxLCBaMl9jdWJlZCwgUzEpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfbXVsXCIsIHkyLCBaMV9jdWJlZCwgUzIpLFxuXG4gICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX2VxXCIsIFUxLCBVMiksXG4gICAgICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfZXFcIiwgUzEsIFMyKSxcbiAgICAgICAgICAgICAgICAgICAgYy5yZXQoYy5pMzJfY29uc3QoMSkpXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGMucmV0KGMuaTMyX2NvbnN0KDApKVxuICAgICAgICApO1xuICAgIH1cblxuXG4gICAgZnVuY3Rpb24gYnVpbGRFcU1peGVkKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCArIFwiX2VxTWl4ZWRcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwMVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInAyXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLnNldFJldHVyblR5cGUoXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJ6MVwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IHgxID0gYy5nZXRMb2NhbChcInAxXCIpO1xuICAgICAgICBjb25zdCB5MSA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwicDFcIiksIGMuaTMyX2NvbnN0KG44KSk7XG4gICAgICAgIGYuYWRkQ29kZShjLnNldExvY2FsKFwiejFcIiwgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwMVwiKSwgYy5pMzJfY29uc3QobjgqMikpKSk7XG4gICAgICAgIGNvbnN0IHoxID0gYy5nZXRMb2NhbChcInoxXCIpO1xuICAgICAgICBjb25zdCB4MiA9IGMuZ2V0TG9jYWwoXCJwMlwiKTtcbiAgICAgICAgY29uc3QgeTIgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInAyXCIpLCBjLmkzMl9jb25zdChuOCkpO1xuXG4gICAgICAgIGNvbnN0IFoxWjEgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcbiAgICAgICAgY29uc3QgVTIgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcbiAgICAgICAgY29uc3QgWjFfY3ViZWQgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcbiAgICAgICAgY29uc3QgUzIgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9pc1plcm9cIiwgYy5nZXRMb2NhbChcInAxXCIpKSxcbiAgICAgICAgICAgICAgICBjLnJldCggYy5jYWxsKHByZWZpeCArIFwiX2lzWmVyb0FmZmluZVwiLCBjLmdldExvY2FsKFwicDJcIikpKSxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9pc1plcm9BZmZpbmVcIiwgYy5nZXRMb2NhbChcInAyXCIpKSxcbiAgICAgICAgICAgICAgICBjLnJldChjLmkzMl9jb25zdCgwKSlcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX2lzT25lXCIsIHoxKSxcbiAgICAgICAgICAgICAgICBjLnJldChjLmNhbGwocHJlZml4ICsgXCJfZXFBZmZpbmVcIiwgYy5nZXRMb2NhbChcInAxXCIpLCBjLmdldExvY2FsKFwicDJcIikpKVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX3NxdWFyZVwiLCB6MSwgWjFaMSksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9tdWxcIiwgeDIsIFoxWjEsIFUyKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX211bFwiLCB6MSwgWjFaMSwgWjFfY3ViZWQpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfbXVsXCIsIHkyLCBaMV9jdWJlZCwgUzIpLFxuXG4gICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX2VxXCIsIHgxLCBVMiksXG4gICAgICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfZXFcIiwgeTEsIFMyKSxcbiAgICAgICAgICAgICAgICAgICAgYy5yZXQoYy5pMzJfY29uc3QoMSkpXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGMucmV0KGMuaTMyX2NvbnN0KDApKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGJ1aWxkRG91YmxlKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCArIFwiX2RvdWJsZVwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInAxXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicHJcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCB4ID0gYy5nZXRMb2NhbChcInAxXCIpO1xuICAgICAgICBjb25zdCB5ID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwMVwiKSwgYy5pMzJfY29uc3QobjgpKTtcbiAgICAgICAgY29uc3QgeiA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwicDFcIiksIGMuaTMyX2NvbnN0KG44KjIpKTtcbiAgICAgICAgY29uc3QgeDMgPSBjLmdldExvY2FsKFwicHJcIik7XG4gICAgICAgIGNvbnN0IHkzID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwclwiKSwgYy5pMzJfY29uc3QobjgpKTtcbiAgICAgICAgY29uc3QgejMgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInByXCIpLCBjLmkzMl9jb25zdChuOCoyKSk7XG5cbiAgICAgICAgY29uc3QgQSA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuICAgICAgICBjb25zdCBCID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44KSk7XG4gICAgICAgIGNvbnN0IEMgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcbiAgICAgICAgY29uc3QgRCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuICAgICAgICBjb25zdCBFID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44KSk7XG4gICAgICAgIGNvbnN0IEYgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcbiAgICAgICAgY29uc3QgRyA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuICAgICAgICBjb25zdCBlaWdodEMgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9pc1plcm9cIiwgYy5nZXRMb2NhbChcInAxXCIpKSxcbiAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgIC4uLmMuY2FsbChwcmVmaXggKyBcIl9jb3B5XCIsIGMuZ2V0TG9jYWwoXCJwMVwiKSwgYy5nZXRMb2NhbChcInByXCIpKSxcbiAgICAgICAgICAgICAgICAgICAgLi4uYy5yZXQoW10pXG4gICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfaXNPbmVcIiwgeiksXG4gICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAuLi5jLnJldChjLmNhbGwocHJlZml4ICsgXCJfZG91YmxlQWZmaW5lXCIsIGMuZ2V0TG9jYWwoXCJwMVwiKSwgYy5nZXRMb2NhbChcInByXCIpKSksXG4gICAgICAgICAgICAgICAgICAgIC4uLmMucmV0KFtdKVxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX3NxdWFyZVwiLCB4LCBBKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX3NxdWFyZVwiLCB5LCBCKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX3NxdWFyZVwiLCBCLCBDKSxcblxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfYWRkXCIsIHgsIEIsIEQpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfc3F1YXJlXCIsIEQsIEQpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfc3ViXCIsIEQsIEEsIEQpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfc3ViXCIsIEQsIEMsIEQpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfYWRkXCIsIEQsIEQsIEQpLFxuXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9hZGRcIiwgQSwgQSwgRSksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9hZGRcIiwgRSwgQSwgRSksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9zcXVhcmVcIiwgRSwgRiksXG5cbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX211bFwiLCB5LCB6LCBHKSxcblxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfYWRkXCIsIEQsIEQsIHgzKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX3N1YlwiLCBGLCB4MywgeDMpLFxuXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9hZGRcIiwgQywgQywgZWlnaHRDKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX2FkZFwiLCBlaWdodEMsIGVpZ2h0QywgZWlnaHRDKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX2FkZFwiLCBlaWdodEMsIGVpZ2h0QywgZWlnaHRDKSxcblxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfc3ViXCIsIEQsIHgzLCB5MyksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9tdWxcIiwgeTMsIEUsIHkzKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX3N1YlwiLCB5MywgZWlnaHRDLCB5MyksXG5cbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX2FkZFwiLCBHLCBHLCB6MyksXG4gICAgICAgICk7XG4gICAgfVxuXG5cbiAgICBmdW5jdGlvbiBidWlsZERvdWJsZUFmZmluZSgpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXggKyBcIl9kb3VibGVBZmZpbmVcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwMVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInByXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgeCA9IGMuZ2V0TG9jYWwoXCJwMVwiKTtcbiAgICAgICAgY29uc3QgeSA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwicDFcIiksIGMuaTMyX2NvbnN0KG44KSk7XG4gICAgICAgIGNvbnN0IHgzID0gYy5nZXRMb2NhbChcInByXCIpO1xuICAgICAgICBjb25zdCB5MyA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwicHJcIiksIGMuaTMyX2NvbnN0KG44KSk7XG4gICAgICAgIGNvbnN0IHozID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwclwiKSwgYy5pMzJfY29uc3QobjgqMikpO1xuXG4gICAgICAgIGNvbnN0IFhYID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44KSk7XG4gICAgICAgIGNvbnN0IFlZID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44KSk7XG4gICAgICAgIGNvbnN0IFlZWVkgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcbiAgICAgICAgY29uc3QgUyA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuICAgICAgICBjb25zdCBNID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44KSk7XG4gICAgICAgIGNvbnN0IGVpZ2h0WVlZWSA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX2lzWmVyb0FmZmluZVwiLCBjLmdldExvY2FsKFwicDFcIikpLFxuICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgLi4uYy5jYWxsKHByZWZpeCArIFwiX3RvSmFjb2JpYW5cIiwgYy5nZXRMb2NhbChcInAxXCIpLCBjLmdldExvY2FsKFwicHJcIikpLFxuICAgICAgICAgICAgICAgICAgICAuLi5jLnJldChbXSlcbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICApLFxuXG4gICAgICAgICAgICAvLyBYWCA9IFgxXjJcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX3NxdWFyZVwiLCB4LCBYWCksXG5cbiAgICAgICAgICAgIC8vIFlZID0gWTFeMlxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfc3F1YXJlXCIsIHksIFlZKSxcblxuICAgICAgICAgICAgLy8gWVlZWSA9IFlZXjJcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX3NxdWFyZVwiLCBZWSwgWVlZWSksXG5cbiAgICAgICAgICAgIC8vIFMgPSAyKigoWDErWVkpXjItWFgtWVlZWSlcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX2FkZFwiLCB4LCBZWSwgUyksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9zcXVhcmVcIiwgUywgUyksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9zdWJcIiwgUywgWFgsIFMpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfc3ViXCIsIFMsIFlZWVksIFMpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfYWRkXCIsIFMsIFMsIFMpLFxuXG4gICAgICAgICAgICAvLyBNID0gMypYWCthICAoSGVyYSBhPTApXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9hZGRcIiwgWFgsIFhYLCBNKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX2FkZFwiLCBNLCBYWCwgTSksXG5cbiAgICAgICAgICAgIC8vIFozID0gMipZMVxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfYWRkXCIsIHksIHksIHozKSxcblxuICAgICAgICAgICAgLy8gVCA9IE1eMi0yKlNcbiAgICAgICAgICAgIC8vIFgzID0gVFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfc3F1YXJlXCIsIE0sIHgzKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX3N1YlwiLCB4MywgUywgeDMpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfc3ViXCIsIHgzLCBTLCB4MyksXG5cbiAgICAgICAgICAgIC8vIFkzID0gTSooUy1UKS04KllZWVlcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX2FkZFwiLCBZWVlZLCBZWVlZLCBlaWdodFlZWVkpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfYWRkXCIsIGVpZ2h0WVlZWSwgZWlnaHRZWVlZLCBlaWdodFlZWVkpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfYWRkXCIsIGVpZ2h0WVlZWSwgZWlnaHRZWVlZLCBlaWdodFlZWVkpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfc3ViXCIsIFMsIHgzLCB5MyksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9tdWxcIiwgeTMsIE0sIHkzKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX3N1YlwiLCB5MywgZWlnaHRZWVlZLCB5MyksXG4gICAgICAgICk7XG4gICAgfVxuXG5cbiAgICBmdW5jdGlvbiBidWlsZEVxQWZmaW5lKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCArIFwiX2VxQWZmaW5lXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicDFcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwMlwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5zZXRSZXR1cm5UeXBlKFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiejFcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLnJldChjLmkzMl9hbmQoXG4gICAgICAgICAgICAgICAgYy5jYWxsKFxuICAgICAgICAgICAgICAgICAgICBwcmVmaXhGaWVsZCArIFwiX2VxXCIsXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwMVwiKSxcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInAyXCIpXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBjLmNhbGwoXG4gICAgICAgICAgICAgICAgICAgIHByZWZpeEZpZWxkICsgXCJfZXFcIixcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwMVwiKSwgYy5pMzJfY29uc3QobjgpKSxcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwMlwiKSwgYy5pMzJfY29uc3QobjgpKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICkpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYnVpbGRUb01vbnRnb21lcnkoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4ICsgXCJfdG9Nb250Z29tZXJ5XCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicDFcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwclwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGYuYWRkQ29kZShjLmNhbGwoXG4gICAgICAgICAgICBwcmVmaXhGaWVsZCArIFwiX3RvTW9udGdvbWVyeVwiLFxuICAgICAgICAgICAgYy5nZXRMb2NhbChcInAxXCIpLFxuICAgICAgICAgICAgYy5nZXRMb2NhbChcInByXCIpXG4gICAgICAgICkpO1xuICAgICAgICBmb3IgKGxldCBpPTE7IGk8MzsgaSsrKSB7XG4gICAgICAgICAgICBmLmFkZENvZGUoYy5jYWxsKFxuICAgICAgICAgICAgICAgIHByZWZpeEZpZWxkICsgXCJfdG9Nb250Z29tZXJ5XCIsXG4gICAgICAgICAgICAgICAgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwMVwiKSwgYy5pMzJfY29uc3QoaSpuOCkpLFxuICAgICAgICAgICAgICAgIGMuaTMyX2FkZChjLmdldExvY2FsKFwicHJcIiksIGMuaTMyX2NvbnN0KGkqbjgpKVxuICAgICAgICAgICAgKSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBidWlsZFRvTW9udGdvbWVyeUFmZmluZSgpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXggKyBcIl90b01vbnRnb21lcnlBZmZpbmVcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwMVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInByXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgZi5hZGRDb2RlKGMuY2FsbChcbiAgICAgICAgICAgIHByZWZpeEZpZWxkICsgXCJfdG9Nb250Z29tZXJ5XCIsXG4gICAgICAgICAgICBjLmdldExvY2FsKFwicDFcIiksXG4gICAgICAgICAgICBjLmdldExvY2FsKFwicHJcIilcbiAgICAgICAgKSk7XG4gICAgICAgIGZvciAobGV0IGk9MTsgaTwyOyBpKyspIHtcbiAgICAgICAgICAgIGYuYWRkQ29kZShjLmNhbGwoXG4gICAgICAgICAgICAgICAgcHJlZml4RmllbGQgKyBcIl90b01vbnRnb21lcnlcIixcbiAgICAgICAgICAgICAgICBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInAxXCIpLCBjLmkzMl9jb25zdChpKm44KSksXG4gICAgICAgICAgICAgICAgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwclwiKSwgYy5pMzJfY29uc3QoaSpuOCkpXG4gICAgICAgICAgICApKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGJ1aWxkRnJvbU1vbnRnb21lcnkoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4ICsgXCJfZnJvbU1vbnRnb21lcnlcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwMVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInByXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgZi5hZGRDb2RlKGMuY2FsbChcbiAgICAgICAgICAgIHByZWZpeEZpZWxkICsgXCJfZnJvbU1vbnRnb21lcnlcIixcbiAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwMVwiKSxcbiAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwclwiKVxuICAgICAgICApKTtcbiAgICAgICAgZm9yIChsZXQgaT0xOyBpPDM7IGkrKykge1xuICAgICAgICAgICAgZi5hZGRDb2RlKGMuY2FsbChcbiAgICAgICAgICAgICAgICBwcmVmaXhGaWVsZCArIFwiX2Zyb21Nb250Z29tZXJ5XCIsXG4gICAgICAgICAgICAgICAgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwMVwiKSwgYy5pMzJfY29uc3QoaSpuOCkpLFxuICAgICAgICAgICAgICAgIGMuaTMyX2FkZChjLmdldExvY2FsKFwicHJcIiksIGMuaTMyX2NvbnN0KGkqbjgpKVxuICAgICAgICAgICAgKSk7XG4gICAgICAgIH1cbiAgICB9XG5cblxuICAgIGZ1bmN0aW9uIGJ1aWxkRnJvbU1vbnRnb21lcnlBZmZpbmUoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4ICsgXCJfZnJvbU1vbnRnb21lcnlBZmZpbmVcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwMVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInByXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgZi5hZGRDb2RlKGMuY2FsbChcbiAgICAgICAgICAgIHByZWZpeEZpZWxkICsgXCJfZnJvbU1vbnRnb21lcnlcIixcbiAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwMVwiKSxcbiAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwclwiKVxuICAgICAgICApKTtcbiAgICAgICAgZm9yIChsZXQgaT0xOyBpPDI7IGkrKykge1xuICAgICAgICAgICAgZi5hZGRDb2RlKGMuY2FsbChcbiAgICAgICAgICAgICAgICBwcmVmaXhGaWVsZCArIFwiX2Zyb21Nb250Z29tZXJ5XCIsXG4gICAgICAgICAgICAgICAgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwMVwiKSwgYy5pMzJfY29uc3QoaSpuOCkpLFxuICAgICAgICAgICAgICAgIGMuaTMyX2FkZChjLmdldExvY2FsKFwicHJcIiksIGMuaTMyX2NvbnN0KGkqbjgpKVxuICAgICAgICAgICAgKSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBidWlsZEFkZCgpIHtcblxuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCArIFwiX2FkZFwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInAxXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicDJcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwclwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcInoxXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiejJcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCB4MSA9IGMuZ2V0TG9jYWwoXCJwMVwiKTtcbiAgICAgICAgY29uc3QgeTEgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInAxXCIpLCBjLmkzMl9jb25zdChuOCkpO1xuICAgICAgICBmLmFkZENvZGUoYy5zZXRMb2NhbChcInoxXCIsIGMuaTMyX2FkZChjLmdldExvY2FsKFwicDFcIiksIGMuaTMyX2NvbnN0KG44KjIpKSkpO1xuICAgICAgICBjb25zdCB6MSA9IGMuZ2V0TG9jYWwoXCJ6MVwiKTtcbiAgICAgICAgY29uc3QgeDIgPSBjLmdldExvY2FsKFwicDJcIik7XG4gICAgICAgIGNvbnN0IHkyID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwMlwiKSwgYy5pMzJfY29uc3QobjgpKTtcbiAgICAgICAgZi5hZGRDb2RlKGMuc2V0TG9jYWwoXCJ6MlwiLCBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInAyXCIpLCBjLmkzMl9jb25zdChuOCoyKSkpKTtcbiAgICAgICAgY29uc3QgejIgPSBjLmdldExvY2FsKFwiejJcIik7XG4gICAgICAgIGNvbnN0IHgzID0gYy5nZXRMb2NhbChcInByXCIpO1xuICAgICAgICBjb25zdCB5MyA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwicHJcIiksIGMuaTMyX2NvbnN0KG44KSk7XG4gICAgICAgIGNvbnN0IHozID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwclwiKSwgYy5pMzJfY29uc3QobjgqMikpO1xuXG4gICAgICAgIGNvbnN0IFoxWjEgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcbiAgICAgICAgY29uc3QgWjJaMiA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuICAgICAgICBjb25zdCBVMSA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuICAgICAgICBjb25zdCBVMiA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuICAgICAgICBjb25zdCBaMV9jdWJlZCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuICAgICAgICBjb25zdCBaMl9jdWJlZCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuICAgICAgICBjb25zdCBTMSA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuICAgICAgICBjb25zdCBTMiA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuICAgICAgICBjb25zdCBIID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44KSk7XG4gICAgICAgIGNvbnN0IFMyX21pbnVzX1MxID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44KSk7XG4gICAgICAgIGNvbnN0IEkgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcbiAgICAgICAgY29uc3QgSiA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuICAgICAgICBjb25zdCByID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44KSk7XG4gICAgICAgIGNvbnN0IHIyID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44KSk7XG4gICAgICAgIGNvbnN0IFYgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcbiAgICAgICAgY29uc3QgVjIgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcbiAgICAgICAgY29uc3QgUzFfSjIgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9pc1plcm9cIiwgYy5nZXRMb2NhbChcInAxXCIpKSxcbiAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgIC4uLmMuY2FsbChwcmVmaXggKyBcIl9jb3B5XCIsIGMuZ2V0TG9jYWwoXCJwMlwiKSwgYy5nZXRMb2NhbChcInByXCIpKSxcbiAgICAgICAgICAgICAgICAgICAgLi4uYy5yZXQoW10pXG4gICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX2lzWmVyb1wiLCBjLmdldExvY2FsKFwicDJcIikpLFxuICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgLi4uYy5jYWxsKHByZWZpeCArIFwiX2NvcHlcIiwgYy5nZXRMb2NhbChcInAxXCIpLCBjLmdldExvY2FsKFwicHJcIikpLFxuICAgICAgICAgICAgICAgICAgICAuLi5jLnJldChbXSlcbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9pc09uZVwiLCB6MSksXG4gICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAuLi5jLmNhbGwocHJlZml4ICsgXCJfYWRkTWl4ZWRcIiwgeDIsIHgxLCB4MyksXG4gICAgICAgICAgICAgICAgICAgIC4uLmMucmV0KFtdKVxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX2lzT25lXCIsIHoyKSxcbiAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgIC4uLmMuY2FsbChwcmVmaXggKyBcIl9hZGRNaXhlZFwiLCB4MSwgeDIsIHgzKSxcbiAgICAgICAgICAgICAgICAgICAgLi4uYy5yZXQoW10pXG4gICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX3NxdWFyZVwiLCB6MSwgWjFaMSksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9zcXVhcmVcIiwgejIsIFoyWjIpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfbXVsXCIsIHgxLCBaMloyLCBVMSksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9tdWxcIiwgeDIsIFoxWjEsIFUyKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX211bFwiLCB6MSwgWjFaMSwgWjFfY3ViZWQpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfbXVsXCIsIHoyLCBaMloyLCBaMl9jdWJlZCksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9tdWxcIiwgeTEsIFoyX2N1YmVkLCBTMSksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9tdWxcIiwgeTIsIFoxX2N1YmVkLCBTMiksXG5cbiAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfZXFcIiwgVTEsIFUyKSxcbiAgICAgICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9lcVwiLCBTMSwgUzIpLFxuICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5jLmNhbGwocHJlZml4ICsgXCJfZG91YmxlXCIsIGMuZ2V0TG9jYWwoXCJwMVwiKSwgYy5nZXRMb2NhbChcInByXCIpKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLmMucmV0KFtdKVxuICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfc3ViXCIsIFUyLCBVMSwgSCksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9zdWJcIiwgUzIsIFMxLCBTMl9taW51c19TMSksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9hZGRcIiwgSCwgSCwgSSksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9zcXVhcmVcIiwgSSwgSSksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9tdWxcIiwgSCwgSSwgSiksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9hZGRcIiwgUzJfbWludXNfUzEsIFMyX21pbnVzX1MxLCByKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX211bFwiLCBVMSwgSSwgViksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9zcXVhcmVcIiwgciwgcjIpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfYWRkXCIsIFYsIFYsIFYyKSxcblxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfc3ViXCIsIHIyLCBKLCB4MyksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9zdWJcIiwgeDMsIFYyLCB4MyksXG5cbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX211bFwiLCBTMSwgSiwgUzFfSjIpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfYWRkXCIsIFMxX0oyLCBTMV9KMiwgUzFfSjIpLFxuXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9zdWJcIiwgViwgeDMsIHkzKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX211bFwiLCB5MywgciwgeTMpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfc3ViXCIsIHkzLCBTMV9KMiwgeTMpLFxuXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9hZGRcIiwgejEsIHoyLCB6MyksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9zcXVhcmVcIiwgejMsIHozKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX3N1YlwiLCB6MywgWjFaMSwgejMpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfc3ViXCIsIHozLCBaMloyLCB6MyksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9tdWxcIiwgejMsIEgsIHozKSxcbiAgICAgICAgKTtcblxuICAgIH1cblxuXG4gICAgZnVuY3Rpb24gYnVpbGRBZGRNaXhlZCgpIHtcblxuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCArIFwiX2FkZE1peGVkXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicDFcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwMlwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInByXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiejFcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCB4MSA9IGMuZ2V0TG9jYWwoXCJwMVwiKTtcbiAgICAgICAgY29uc3QgeTEgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInAxXCIpLCBjLmkzMl9jb25zdChuOCkpO1xuICAgICAgICBmLmFkZENvZGUoYy5zZXRMb2NhbChcInoxXCIsIGMuaTMyX2FkZChjLmdldExvY2FsKFwicDFcIiksIGMuaTMyX2NvbnN0KG44KjIpKSkpO1xuICAgICAgICBjb25zdCB6MSA9IGMuZ2V0TG9jYWwoXCJ6MVwiKTtcbiAgICAgICAgY29uc3QgeDIgPSBjLmdldExvY2FsKFwicDJcIik7XG4gICAgICAgIGNvbnN0IHkyID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwMlwiKSwgYy5pMzJfY29uc3QobjgpKTtcbiAgICAgICAgY29uc3QgeDMgPSBjLmdldExvY2FsKFwicHJcIik7XG4gICAgICAgIGNvbnN0IHkzID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwclwiKSwgYy5pMzJfY29uc3QobjgpKTtcbiAgICAgICAgY29uc3QgejMgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInByXCIpLCBjLmkzMl9jb25zdChuOCoyKSk7XG5cbiAgICAgICAgY29uc3QgWjFaMSA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuICAgICAgICBjb25zdCBVMiA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuICAgICAgICBjb25zdCBaMV9jdWJlZCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuICAgICAgICBjb25zdCBTMiA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuICAgICAgICBjb25zdCBIID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44KSk7XG4gICAgICAgIGNvbnN0IEhIID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44KSk7XG4gICAgICAgIGNvbnN0IFMyX21pbnVzX3kxID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44KSk7XG4gICAgICAgIGNvbnN0IEkgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcbiAgICAgICAgY29uc3QgSiA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuICAgICAgICBjb25zdCByID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44KSk7XG4gICAgICAgIGNvbnN0IHIyID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44KSk7XG4gICAgICAgIGNvbnN0IFYgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcbiAgICAgICAgY29uc3QgVjIgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcbiAgICAgICAgY29uc3QgeTFfSjIgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9pc1plcm9cIiwgYy5nZXRMb2NhbChcInAxXCIpKSxcbiAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgIC4uLmMuY2FsbChwcmVmaXggKyBcIl9jb3B5QWZmaW5lXCIsIGMuZ2V0TG9jYWwoXCJwMlwiKSwgYy5nZXRMb2NhbChcInByXCIpKSxcbiAgICAgICAgICAgICAgICAgICAgLi4uYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfb25lXCIsIGMuaTMyX2FkZChjLmdldExvY2FsKFwicHJcIikgLCBjLmkzMl9jb25zdChuOCoyKSkpLFxuICAgICAgICAgICAgICAgICAgICAuLi5jLnJldChbXSlcbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfaXNaZXJvQWZmaW5lXCIsIGMuZ2V0TG9jYWwoXCJwMlwiKSksXG4gICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAuLi5jLmNhbGwocHJlZml4ICsgXCJfY29weVwiLCBjLmdldExvY2FsKFwicDFcIiksIGMuZ2V0TG9jYWwoXCJwclwiKSksXG4gICAgICAgICAgICAgICAgICAgIC4uLmMucmV0KFtdKVxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX2lzT25lXCIsIHoxKSxcbiAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgIC4uLmMuY2FsbChwcmVmaXggKyBcIl9hZGRBZmZpbmVcIiwgeDEsIHgyLCB4MyksXG4gICAgICAgICAgICAgICAgICAgIC4uLmMucmV0KFtdKVxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9zcXVhcmVcIiwgejEsIFoxWjEpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfbXVsXCIsIHgyLCBaMVoxLCBVMiksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9tdWxcIiwgejEsIFoxWjEsIFoxX2N1YmVkKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX211bFwiLCB5MiwgWjFfY3ViZWQsIFMyKSxcblxuICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9lcVwiLCB4MSwgVTIpLFxuICAgICAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX2VxXCIsIHkxLCBTMiksXG4gICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLmMuY2FsbChwcmVmaXggKyBcIl9kb3VibGVBZmZpbmVcIiwgYy5nZXRMb2NhbChcInAyXCIpLCBjLmdldExvY2FsKFwicHJcIikpLFxuICAgICAgICAgICAgICAgICAgICAgICAgLi4uYy5yZXQoW10pXG4gICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApLFxuXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9zdWJcIiwgVTIsIHgxLCBIKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX3N1YlwiLCBTMiwgeTEsIFMyX21pbnVzX3kxKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX3NxdWFyZVwiLCBILCBISCksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9hZGRcIiwgSEggLCBISCwgSSksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9hZGRcIiwgSSAsIEksIEkpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfbXVsXCIsIEgsIEksIEopLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfYWRkXCIsIFMyX21pbnVzX3kxLCBTMl9taW51c195MSwgciksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9tdWxcIiwgeDEsIEksIFYpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfc3F1YXJlXCIsIHIsIHIyKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX2FkZFwiLCBWLCBWLCBWMiksXG5cbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX3N1YlwiLCByMiwgSiwgeDMpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfc3ViXCIsIHgzLCBWMiwgeDMpLFxuXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9tdWxcIiwgeTEsIEosIHkxX0oyKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX2FkZFwiLCB5MV9KMiwgeTFfSjIsIHkxX0oyKSxcblxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfc3ViXCIsIFYsIHgzLCB5MyksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9tdWxcIiwgeTMsIHIsIHkzKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX3N1YlwiLCB5MywgeTFfSjIsIHkzKSxcblxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfYWRkXCIsIHoxLCBILCB6MyksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9zcXVhcmVcIiwgejMsIHozKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX3N1YlwiLCB6MywgWjFaMSwgejMpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfc3ViXCIsIHozLCBISCwgejMpLFxuICAgICAgICApO1xuICAgIH1cblxuXG4gICAgZnVuY3Rpb24gYnVpbGRBZGRBZmZpbmUoKSB7XG5cbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXggKyBcIl9hZGRBZmZpbmVcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwMVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInAyXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicHJcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJ6MVwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IHgxID0gYy5nZXRMb2NhbChcInAxXCIpO1xuICAgICAgICBjb25zdCB5MSA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwicDFcIiksIGMuaTMyX2NvbnN0KG44KSk7XG4gICAgICAgIGYuYWRkQ29kZShjLnNldExvY2FsKFwiejFcIiwgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwMVwiKSwgYy5pMzJfY29uc3QobjgqMikpKSk7XG4gICAgICAgIGNvbnN0IHgyID0gYy5nZXRMb2NhbChcInAyXCIpO1xuICAgICAgICBjb25zdCB5MiA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwicDJcIiksIGMuaTMyX2NvbnN0KG44KSk7XG4gICAgICAgIGNvbnN0IHgzID0gYy5nZXRMb2NhbChcInByXCIpO1xuICAgICAgICBjb25zdCB5MyA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwicHJcIiksIGMuaTMyX2NvbnN0KG44KSk7XG4gICAgICAgIGNvbnN0IHozID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwclwiKSwgYy5pMzJfY29uc3QobjgqMikpO1xuXG4gICAgICAgIGNvbnN0IEggPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcbiAgICAgICAgY29uc3QgSEggPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcbiAgICAgICAgY29uc3QgeTJfbWludXNfeTEgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcbiAgICAgICAgY29uc3QgSSA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuICAgICAgICBjb25zdCBKID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44KSk7XG4gICAgICAgIGNvbnN0IHIgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcbiAgICAgICAgY29uc3QgcjIgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcbiAgICAgICAgY29uc3QgViA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuICAgICAgICBjb25zdCBWMiA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuICAgICAgICBjb25zdCB5MV9KMiA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX2lzWmVyb0FmZmluZVwiLCBjLmdldExvY2FsKFwicDFcIikpLFxuICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgLi4uYy5jYWxsKHByZWZpeCArIFwiX2NvcHlBZmZpbmVcIiwgYy5nZXRMb2NhbChcInAyXCIpLCBjLmdldExvY2FsKFwicHJcIikpLFxuICAgICAgICAgICAgICAgICAgICAuLi5jLmNhbGwocHJlZml4RmllbGQgKyBcIl9vbmVcIiwgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwclwiKSAsIGMuaTMyX2NvbnN0KG44KjIpKSksXG4gICAgICAgICAgICAgICAgICAgIC4uLmMucmV0KFtdKVxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9pc1plcm9BZmZpbmVcIiwgYy5nZXRMb2NhbChcInAyXCIpKSxcbiAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgIC4uLmMuY2FsbChwcmVmaXggKyBcIl9jb3B5QWZmaW5lXCIsIGMuZ2V0TG9jYWwoXCJwMVwiKSwgYy5nZXRMb2NhbChcInByXCIpKSxcbiAgICAgICAgICAgICAgICAgICAgLi4uYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfb25lXCIsIGMuaTMyX2FkZChjLmdldExvY2FsKFwicHJcIikgLCBjLmkzMl9jb25zdChuOCoyKSkpLFxuICAgICAgICAgICAgICAgICAgICAuLi5jLnJldChbXSlcbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICApLFxuXG5cbiAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfZXFcIiwgeDEsIHgyKSxcbiAgICAgICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9lcVwiLCB5MSwgeTIpLFxuICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5jLmNhbGwocHJlZml4ICsgXCJfZG91YmxlQWZmaW5lXCIsIGMuZ2V0TG9jYWwoXCJwMlwiKSwgYy5nZXRMb2NhbChcInByXCIpKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLmMucmV0KFtdKVxuICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfc3ViXCIsIHgyLCB4MSwgSCksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9zdWJcIiwgeTIsIHkxLCB5Ml9taW51c195MSksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9zcXVhcmVcIiwgSCwgSEgpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfYWRkXCIsIEhIICwgSEgsIEkpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfYWRkXCIsIEkgLCBJLCBJKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX211bFwiLCBILCBJLCBKKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX2FkZFwiLCB5Ml9taW51c195MSwgeTJfbWludXNfeTEsIHIpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfbXVsXCIsIHgxLCBJLCBWKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX3NxdWFyZVwiLCByLCByMiksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9hZGRcIiwgViwgViwgVjIpLFxuXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9zdWJcIiwgcjIsIEosIHgzKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX3N1YlwiLCB4MywgVjIsIHgzKSxcblxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfbXVsXCIsIHkxLCBKLCB5MV9KMiksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9hZGRcIiwgeTFfSjIsIHkxX0oyLCB5MV9KMiksXG5cbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX3N1YlwiLCBWLCB4MywgeTMpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfbXVsXCIsIHkzLCByLCB5MyksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9zdWJcIiwgeTMsIHkxX0oyLCB5MyksXG5cbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX2FkZFwiLCBILCBILCB6MyksXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYnVpbGROZWcoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4ICsgXCJfbmVnXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicDFcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwclwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IHggPSBjLmdldExvY2FsKFwicDFcIik7XG4gICAgICAgIGNvbnN0IHkgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInAxXCIpLCBjLmkzMl9jb25zdChuOCkpO1xuICAgICAgICBjb25zdCB6ID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwMVwiKSwgYy5pMzJfY29uc3QobjgqMikpO1xuICAgICAgICBjb25zdCB4MyA9IGMuZ2V0TG9jYWwoXCJwclwiKTtcbiAgICAgICAgY29uc3QgeTMgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInByXCIpLCBjLmkzMl9jb25zdChuOCkpO1xuICAgICAgICBjb25zdCB6MyA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwicHJcIiksIGMuaTMyX2NvbnN0KG44KjIpKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9jb3B5XCIsIHgsIHgzKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX25lZ1wiLCB5LCB5MyksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9jb3B5XCIsIHosIHozKVxuICAgICAgICApO1xuICAgIH1cblxuXG4gICAgZnVuY3Rpb24gYnVpbGROZWdBZmZpbmUoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4ICsgXCJfbmVnQWZmaW5lXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicDFcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwclwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IHggPSBjLmdldExvY2FsKFwicDFcIik7XG4gICAgICAgIGNvbnN0IHkgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInAxXCIpLCBjLmkzMl9jb25zdChuOCkpO1xuICAgICAgICBjb25zdCB4MyA9IGMuZ2V0TG9jYWwoXCJwclwiKTtcbiAgICAgICAgY29uc3QgeTMgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInByXCIpLCBjLmkzMl9jb25zdChuOCkpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX2NvcHlcIiwgeCwgeDMpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfbmVnXCIsIHksIHkzKSxcbiAgICAgICAgKTtcbiAgICB9XG5cblxuICAgIGZ1bmN0aW9uIGJ1aWxkU3ViKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCArIFwiX3N1YlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInAxXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicDJcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwclwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IEFVWCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCozKSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX25lZ1wiLCBjLmdldExvY2FsKFwicDJcIiksIEFVWCksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfYWRkXCIsIGMuZ2V0TG9jYWwoXCJwMVwiKSwgQVVYLCBjLmdldExvY2FsKFwicHJcIikpLFxuICAgICAgICApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGJ1aWxkU3ViTWl4ZWQoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4ICsgXCJfc3ViTWl4ZWRcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwMVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInAyXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicHJcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCBBVVggPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgqMykpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9uZWdBZmZpbmVcIiwgYy5nZXRMb2NhbChcInAyXCIpLCBBVVgpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX2FkZE1peGVkXCIsIGMuZ2V0TG9jYWwoXCJwMVwiKSwgQVVYLCBjLmdldExvY2FsKFwicHJcIikpLFxuICAgICAgICApO1xuICAgIH1cblxuXG4gICAgZnVuY3Rpb24gYnVpbGRTdWJBZmZpbmUoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4ICsgXCJfc3ViQWZmaW5lXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicDFcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwMlwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInByXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgQVVYID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44KjMpKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfbmVnQWZmaW5lXCIsIGMuZ2V0TG9jYWwoXCJwMlwiKSwgQVVYKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9hZGRBZmZpbmVcIiwgYy5nZXRMb2NhbChcInAxXCIpLCBBVVgsIGMuZ2V0TG9jYWwoXCJwclwiKSksXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLy8gVGhpcyBzZXRzIFogdG8gT25lXG4gICAgZnVuY3Rpb24gYnVpbGROb3JtYWxpemUoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4ICsgXCJfbm9ybWFsaXplXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicDFcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwclwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IHggPSBjLmdldExvY2FsKFwicDFcIik7XG4gICAgICAgIGNvbnN0IHkgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInAxXCIpLCBjLmkzMl9jb25zdChuOCkpO1xuICAgICAgICBjb25zdCB6ID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwMVwiKSwgYy5pMzJfY29uc3QobjgqMikpO1xuICAgICAgICBjb25zdCB4MyA9IGMuZ2V0TG9jYWwoXCJwclwiKTtcbiAgICAgICAgY29uc3QgeTMgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInByXCIpLCBjLmkzMl9jb25zdChuOCkpO1xuICAgICAgICBjb25zdCB6MyA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwicHJcIiksIGMuaTMyX2NvbnN0KG44KjIpKTtcblxuXG4gICAgICAgIGNvbnN0IFpfaW52ID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44KSk7XG4gICAgICAgIGNvbnN0IFoyX2ludiA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuICAgICAgICBjb25zdCBaM19pbnYgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9pc1plcm9cIiwgYy5nZXRMb2NhbChcInAxXCIpKSxcbiAgICAgICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfemVyb1wiLCBjLmdldExvY2FsKFwicHJcIikpLFxuICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgLi4uYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfaW52ZXJzZVwiLCB6LCBaX2ludiksXG4gICAgICAgICAgICAgICAgICAgIC4uLmMuY2FsbChwcmVmaXhGaWVsZCArIFwiX3NxdWFyZVwiLCBaX2ludiwgWjJfaW52KSxcbiAgICAgICAgICAgICAgICAgICAgLi4uYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfbXVsXCIsIFpfaW52LCBaMl9pbnYsIFozX2ludiksXG4gICAgICAgICAgICAgICAgICAgIC4uLmMuY2FsbChwcmVmaXhGaWVsZCArIFwiX211bFwiLCB4LCBaMl9pbnYsIHgzKSxcbiAgICAgICAgICAgICAgICAgICAgLi4uYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfbXVsXCIsIHksIFozX2ludiwgeTMpLFxuICAgICAgICAgICAgICAgICAgICAuLi5jLmNhbGwocHJlZml4RmllbGQgKyBcIl9vbmVcIiwgejMpLFxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICB9XG5cblxuICAgIC8vIERvZXMgbm90IHNldCBaLlxuICAgIGZ1bmN0aW9uIGJ1aWxkVG9BZmZpbmUoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4ICsgXCJfdG9BZmZpbmVcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwMVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInByXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgeCA9IGMuZ2V0TG9jYWwoXCJwMVwiKTtcbiAgICAgICAgY29uc3QgeSA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwicDFcIiksIGMuaTMyX2NvbnN0KG44KSk7XG4gICAgICAgIGNvbnN0IHogPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInAxXCIpLCBjLmkzMl9jb25zdChuOCoyKSk7XG4gICAgICAgIGNvbnN0IHgzID0gYy5nZXRMb2NhbChcInByXCIpO1xuICAgICAgICBjb25zdCB5MyA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwicHJcIiksIGMuaTMyX2NvbnN0KG44KSk7XG5cblxuICAgICAgICBjb25zdCBaX2ludiA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuICAgICAgICBjb25zdCBaMl9pbnYgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcbiAgICAgICAgY29uc3QgWjNfaW52ID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44KSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfaXNaZXJvXCIsIGMuZ2V0TG9jYWwoXCJwMVwiKSksXG4gICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAuLi5jLmNhbGwocHJlZml4RmllbGQgKyBcIl96ZXJvXCIsIHgzKSxcbiAgICAgICAgICAgICAgICAgICAgLi4uYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfemVyb1wiLCB5MyksXG4gICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgIC4uLmMuY2FsbChwcmVmaXhGaWVsZCArIFwiX2ludmVyc2VcIiwgeiwgWl9pbnYpLFxuICAgICAgICAgICAgICAgICAgICAuLi5jLmNhbGwocHJlZml4RmllbGQgKyBcIl9zcXVhcmVcIiwgWl9pbnYsIFoyX2ludiksXG4gICAgICAgICAgICAgICAgICAgIC4uLmMuY2FsbChwcmVmaXhGaWVsZCArIFwiX211bFwiLCBaX2ludiwgWjJfaW52LCBaM19pbnYpLFxuICAgICAgICAgICAgICAgICAgICAuLi5jLmNhbGwocHJlZml4RmllbGQgKyBcIl9tdWxcIiwgeCwgWjJfaW52LCB4MyksXG4gICAgICAgICAgICAgICAgICAgIC4uLmMuY2FsbChwcmVmaXhGaWVsZCArIFwiX211bFwiLCB5LCBaM19pbnYsIHkzKSxcbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgfVxuXG5cbiAgICBmdW5jdGlvbiBidWlsZFRvSmFjb2JpYW4oKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4ICsgXCJfdG9KYWNvYmlhblwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInAxXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicHJcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCB4ID0gYy5nZXRMb2NhbChcInAxXCIpO1xuICAgICAgICBjb25zdCB5ID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwMVwiKSwgYy5pMzJfY29uc3QobjgpKTtcbiAgICAgICAgY29uc3QgeDMgPSBjLmdldExvY2FsKFwicHJcIik7XG4gICAgICAgIGNvbnN0IHkzID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwclwiKSwgYy5pMzJfY29uc3QobjgpKTtcbiAgICAgICAgY29uc3QgejMgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInByXCIpLCBjLmkzMl9jb25zdChuOCoyKSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfaXNaZXJvQWZmaW5lXCIsIGMuZ2V0TG9jYWwoXCJwMVwiKSksXG4gICAgICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX3plcm9cIiwgYy5nZXRMb2NhbChcInByXCIpKSxcbiAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgIC4uLmMuY2FsbChwcmVmaXhGaWVsZCArIFwiX29uZVwiLCB6MyksXG4gICAgICAgICAgICAgICAgICAgIC4uLmMuY2FsbChwcmVmaXhGaWVsZCArIFwiX2NvcHlcIiwgeSwgeTMpLFxuICAgICAgICAgICAgICAgICAgICAuLi5jLmNhbGwocHJlZml4RmllbGQgKyBcIl9jb3B5XCIsIHgsIHgzKVxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBidWlsZEJhdGNoVG9BZmZpbmUoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4ICsgXCJfYmF0Y2hUb0FmZmluZVwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInBJblwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcIm5cIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwT3V0XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwicEF1eFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcIml0SW5cIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJpdEF1eFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcIml0T3V0XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiaVwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IHRtcCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJwQXV4XCIsIGMuaTMyX2xvYWQoIGMuaTMyX2NvbnN0KDApICkpLFxuICAgICAgICAgICAgYy5pMzJfc3RvcmUoXG4gICAgICAgICAgICAgICAgYy5pMzJfY29uc3QoMCksXG4gICAgICAgICAgICAgICAgYy5pMzJfYWRkKFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicEF1eFwiKSxcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfbXVsKGMuZ2V0TG9jYWwoXCJuXCIpLCBjLmkzMl9jb25zdChuOCkpXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgYy5jYWxsKFxuICAgICAgICAgICAgICAgIHByZWZpeEZpZWxkICsgXCJfYmF0Y2hJbnZlcnNlXCIsXG4gICAgICAgICAgICAgICAgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwSW5cIiksIGMuaTMyX2NvbnN0KG44KjIpKSxcbiAgICAgICAgICAgICAgICBjLmkzMl9jb25zdChuOCozKSxcbiAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiblwiKSxcbiAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicEF1eFwiKSxcbiAgICAgICAgICAgICAgICBjLmkzMl9jb25zdChuOClcbiAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpdEluXCIsIGMuZ2V0TG9jYWwoXCJwSW5cIikpLFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcIml0QXV4XCIsIGMuZ2V0TG9jYWwoXCJwQXV4XCIpKSxcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpdE91dFwiLCBjLmdldExvY2FsKFwicE91dFwiKSksXG4gICAgICAgICAgICBjLnNldExvY2FsKFwiaVwiLCBjLmkzMl9jb25zdCgwKSksXG4gICAgICAgICAgICBjLmJsb2NrKGMubG9vcChcbiAgICAgICAgICAgICAgICBjLmJyX2lmKDEsIGMuaTMyX2VxICggYy5nZXRMb2NhbChcImlcIiksIGMuZ2V0TG9jYWwoXCJuXCIpICkpLFxuXG4gICAgICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfaXNaZXJvXCIsIGMuZ2V0TG9jYWwoXCJpdEF1eFwiKSksXG4gICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLmMuY2FsbChwcmVmaXhGaWVsZCArIFwiX3plcm9cIiwgYy5nZXRMb2NhbChcIml0T3V0XCIpKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLmMuY2FsbChwcmVmaXhGaWVsZCArIFwiX3plcm9cIiwgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJpdE91dFwiKSwgYy5pMzJfY29uc3QobjgpKSlcbiAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgLi4uYy5jYWxsKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZWZpeEZpZWxkK1wiX211bFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpdEF1eFwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9hZGQoYy5nZXRMb2NhbChcIml0SW5cIiksIGMuaTMyX2NvbnN0KG44KSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdG1wLFxuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLmMuY2FsbChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVmaXhGaWVsZCtcIl9zcXVhcmVcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaXRBdXhcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcIml0QXV4XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgLi4uYy5jYWxsKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZWZpeEZpZWxkK1wiX211bFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpdEF1eFwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaXRJblwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaXRPdXRcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgLi4uYy5jYWxsKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZWZpeEZpZWxkK1wiX211bFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpdEF1eFwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bXAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJpdE91dFwiKSwgYy5pMzJfY29uc3QobjgpKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICApLFxuXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcIml0SW5cIiwgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJpdEluXCIpLCBjLmkzMl9jb25zdChuOCozKSkpLFxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpdE91dFwiLCBjLmkzMl9hZGQoYy5nZXRMb2NhbChcIml0T3V0XCIpLCBjLmkzMl9jb25zdChuOCoyKSkpLFxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpdEF1eFwiLCBjLmkzMl9hZGQoYy5nZXRMb2NhbChcIml0QXV4XCIpLCBjLmkzMl9jb25zdChuOCkpKSxcbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFwiaVwiLCBjLmkzMl9hZGQoYy5nZXRMb2NhbChcImlcIiksIGMuaTMyX2NvbnN0KDEpKSksXG4gICAgICAgICAgICAgICAgYy5icigwKVxuICAgICAgICAgICAgKSksXG4gICAgICAgICAgICBjLmkzMl9zdG9yZShcbiAgICAgICAgICAgICAgICBjLmkzMl9jb25zdCgwKSxcbiAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicEF1eFwiKVxuICAgICAgICAgICAgKVxuICAgICAgICApO1xuICAgIH1cblxuXG4gICAgLy8gVGhpcyBmdW5jdGlvbiBpcyBwcml2YXRlIGFuZCBkb2VzIG5vdCBhbGxvdyB0byBPVkVSTEFQIGJ1ZmZlcnMuXG4gICAgZnVuY3Rpb24gYnVpbGRSZXZlcnNlQnl0ZXMoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4ICsgXCJfX3JldmVyc2VCeXRlc1wiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInBJblwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcIm5cIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwT3V0XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiaXRPdXRcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJpdEluXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcbiAgICAgICAgICAgICAgICBcIml0T3V0XCIsXG4gICAgICAgICAgICAgICAgYy5pMzJfc3ViKFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9hZGQoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicE91dFwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJuXCIpXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KDEpXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXG4gICAgICAgICAgICAgICAgXCJpdEluXCIsXG4gICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInBJblwiKVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGMuYmxvY2soYy5sb29wKFxuICAgICAgICAgICAgICAgIGMuYnJfaWYoMSwgYy5pMzJfbHRfcyggYy5nZXRMb2NhbChcIml0T3V0XCIpLCBjLmdldExvY2FsKFwicE91dFwiKSApKSxcbiAgICAgICAgICAgICAgICBjLmkzMl9zdG9yZTgoXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpdE91dFwiKSxcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfbG9hZDhfdShjLmdldExvY2FsKFwiaXRJblwiKSksXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFwiaXRPdXRcIiwgYy5pMzJfc3ViKGMuZ2V0TG9jYWwoXCJpdE91dFwiKSwgYy5pMzJfY29uc3QoMSkpKSxcbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFwiaXRJblwiLCBjLmkzMl9hZGQoYy5nZXRMb2NhbChcIml0SW5cIiksIGMuaTMyX2NvbnN0KDEpKSksXG4gICAgICAgICAgICAgICAgYy5icigwKVxuICAgICAgICAgICAgKSksXG4gICAgICAgICk7XG5cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBidWlsZExFTXRvQygpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXggKyBcIl9MRU10b0NcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwSW5cIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwT3V0XCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgdG1wID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44KSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfaXNaZXJvQWZmaW5lXCIsIGMuZ2V0TG9jYWwoXCJwSW5cIikpLFxuICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgLi4uYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfemVyb1wiLCBjLmdldExvY2FsKFwicE91dFwiKSksXG4gICAgICAgICAgICAgICAgICAgIC4uLmMuaTMyX3N0b3JlOChcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwT3V0XCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QoMHg0MClcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgLi4uYy5yZXQoW10pXG4gICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX2Zyb21Nb250Z29tZXJ5XCIsIGMuZ2V0TG9jYWwoXCJwSW5cIiksIHRtcCksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfX3JldmVyc2VCeXRlc1wiLCB0bXAsIGMuaTMyX2NvbnN0KG44KSwgYy5nZXRMb2NhbChcInBPdXRcIikpLFxuICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICBjLmkzMl9lcShcbiAgICAgICAgICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfc2lnblwiLCBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInBJblwiKSwgYy5pMzJfY29uc3QobjgpKSksXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KC0xKVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgYy5pMzJfc3RvcmU4KFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicE91dFwiKSxcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfb3IoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9sb2FkOF91KGMuZ2V0TG9jYWwoXCJwT3V0XCIpKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KDB4ODApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApLFxuICAgICAgICApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGJ1aWxkTEVNdG9VKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCArIFwiX0xFTXRvVVwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInBJblwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInBPdXRcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCBwVG1wID0gbW9kdWxlLmFsbG9jKG44KjIpO1xuICAgICAgICBjb25zdCB0bXAgPSBjLmkzMl9jb25zdChwVG1wKTtcbiAgICAgICAgY29uc3QgdG1wWCA9IGMuaTMyX2NvbnN0KHBUbXApO1xuICAgICAgICBjb25zdCB0bXBZID0gYy5pMzJfY29uc3QocFRtcCArIG44KTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9pc1plcm9BZmZpbmVcIiwgYy5nZXRMb2NhbChcInBJblwiKSksXG4gICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAuLi5jLmNhbGwocHJlZml4ICsgXCJfemVyb0FmZmluZVwiLCBjLmdldExvY2FsKFwicE91dFwiKSksXG4gICAgICAgICAgICAgICAgICAgIC4uLmMucmV0KFtdKVxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9mcm9tTW9udGdvbWVyeUFmZmluZVwiLCBjLmdldExvY2FsKFwicEluXCIpLCB0bXApLFxuXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfX3JldmVyc2VCeXRlc1wiLCB0bXBYLCBjLmkzMl9jb25zdChuOCksIGMuZ2V0TG9jYWwoXCJwT3V0XCIpKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9fcmV2ZXJzZUJ5dGVzXCIsIHRtcFksIGMuaTMyX2NvbnN0KG44KSwgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwT3V0XCIpLCBjLmkzMl9jb25zdChuOCkpKSxcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBidWlsZFV0b0xFTSgpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXggKyBcIl9VdG9MRU1cIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwSW5cIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwT3V0XCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgcFRtcCA9IG1vZHVsZS5hbGxvYyhuOCoyKTtcbiAgICAgICAgY29uc3QgdG1wID0gYy5pMzJfY29uc3QocFRtcCk7XG4gICAgICAgIGNvbnN0IHRtcFggPSBjLmkzMl9jb25zdChwVG1wKTtcbiAgICAgICAgY29uc3QgdG1wWSA9IGMuaTMyX2NvbnN0KHBUbXAgKyBuOCk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICBjLmkzMl9hbmQoYy5pMzJfbG9hZDhfdShjLmdldExvY2FsKFwicEluXCIpKSwgYy5pMzJfY29uc3QoMHg0MCkpLFxuICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgLi4uYy5jYWxsKHByZWZpeCArIFwiX3plcm9BZmZpbmVcIiwgYy5nZXRMb2NhbChcInBPdXRcIikpLFxuICAgICAgICAgICAgICAgICAgICAuLi5jLnJldChbXSlcbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX19yZXZlcnNlQnl0ZXNcIiwgYy5nZXRMb2NhbChcInBJblwiKSwgYy5pMzJfY29uc3QobjgpLCB0bXBYKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9fcmV2ZXJzZUJ5dGVzXCIsIGMuaTMyX2FkZChjLmdldExvY2FsKFwicEluXCIpLCBjLmkzMl9jb25zdChuOCkpLCBjLmkzMl9jb25zdChuOCksIHRtcFkpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX3RvTW9udGdvbWVyeUFmZmluZVwiLCB0bXAsICBjLmdldExvY2FsKFwicE91dFwiKSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBidWlsZEN0b0xFTSgpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXggKyBcIl9DdG9MRU1cIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwSW5cIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwT3V0XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiZmlyc3RCeXRlXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiZ3JlYXRlc3RcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCBwVG1wID0gbW9kdWxlLmFsbG9jKG44KjIpO1xuICAgICAgICBjb25zdCB0bXBYID0gYy5pMzJfY29uc3QocFRtcCk7XG4gICAgICAgIGNvbnN0IHRtcFkgPSBjLmkzMl9jb25zdChwVG1wICsgbjgpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJmaXJzdEJ5dGVcIiwgYy5pMzJfbG9hZDhfdShjLmdldExvY2FsKFwicEluXCIpKSksXG4gICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgIGMuaTMyX2FuZChcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImZpcnN0Qnl0ZVwiKSxcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QoMHg0MClcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgLi4uYy5jYWxsKHByZWZpeCArIFwiX3plcm9BZmZpbmVcIiwgYy5nZXRMb2NhbChcInBPdXRcIikpLFxuICAgICAgICAgICAgICAgICAgICAuLi5jLnJldChbXSlcbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcbiAgICAgICAgICAgICAgICBcImdyZWF0ZXN0XCIsXG4gICAgICAgICAgICAgICAgYy5pMzJfYW5kKFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiZmlyc3RCeXRlXCIpLFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdCgweDgwKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX2NvcHlcIiwgYy5nZXRMb2NhbChcInBJblwiKSwgdG1wWSksXG4gICAgICAgICAgICBjLmkzMl9zdG9yZTgodG1wWSwgYy5pMzJfYW5kKGMuZ2V0TG9jYWwoXCJmaXJzdEJ5dGVcIiksIGMuaTMyX2NvbnN0KDB4M0YpKSksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfX3JldmVyc2VCeXRlc1wiLCB0bXBZLCBjLmkzMl9jb25zdChuOCksIHRtcFgpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfdG9Nb250Z29tZXJ5XCIsIHRtcFgsIGMuZ2V0TG9jYWwoXCJwT3V0XCIpKSxcblxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfc3F1YXJlXCIsIGMuZ2V0TG9jYWwoXCJwT3V0XCIpLCB0bXBZKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX211bFwiLCBjLmdldExvY2FsKFwicE91dFwiKSwgdG1wWSwgIHRtcFkpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfYWRkXCIsIHRtcFksIGMuaTMyX2NvbnN0KHBCKSwgIHRtcFkpLFxuXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9zcXJ0XCIsIHRtcFksIHRtcFkpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfbmVnXCIsIHRtcFksIHRtcFgpLFxuXG4gICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgIGMuaTMyX2VxKFxuICAgICAgICAgICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9zaWduXCIsIHRtcFkpLFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdCgtMSlcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJncmVhdGVzdFwiKSxcbiAgICAgICAgICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfY29weVwiLCB0bXBZLCBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInBPdXRcIiksIGMuaTMyX2NvbnN0KG44KSkpLFxuICAgICAgICAgICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9uZWdcIiwgdG1wWSwgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwT3V0XCIpLCBjLmkzMl9jb25zdChuOCkpKVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImdyZWF0ZXN0XCIpLFxuICAgICAgICAgICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9uZWdcIiwgdG1wWSwgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwT3V0XCIpLCBjLmkzMl9jb25zdChuOCkpKSxcbiAgICAgICAgICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfY29weVwiLCB0bXBZLCBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInBPdXRcIiksIGMuaTMyX2NvbnN0KG44KSkpXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIClcblxuICAgICAgICApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGJ1aWxkSW5DdXJ2ZUFmZmluZSgpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXggKyBcIl9pbkN1cnZlQWZmaW5lXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicEluXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLnNldFJldHVyblR5cGUoXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCB4ID0gYy5nZXRMb2NhbChcInBJblwiKTtcbiAgICAgICAgY29uc3QgeSA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwicEluXCIpLCBjLmkzMl9jb25zdChuOCkpO1xuXG4gICAgICAgIGNvbnN0IHkyID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44KSk7XG4gICAgICAgIGNvbnN0IHgzYiA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX3NxdWFyZVwiLCB5LCB5MiksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9zcXVhcmVcIiwgeCwgeDNiKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX211bFwiLCB4LCB4M2IsIHgzYiksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9hZGRcIiwgeDNiLCBjLmkzMl9jb25zdChwQiksIHgzYiksXG5cbiAgICAgICAgICAgIGMucmV0KFxuICAgICAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX2VxXCIsIHkyLCB4M2IpXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYnVpbGRJbkN1cnZlKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCArIFwiX2luQ3VydmVcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwSW5cIiwgXCJpMzJcIik7XG4gICAgICAgIGYuc2V0UmV0dXJuVHlwZShcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IGF1eCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCoyKSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX3RvQWZmaW5lXCIsIGMuZ2V0TG9jYWwoXCJwSW5cIiksIGF1eCksXG5cbiAgICAgICAgICAgIGMucmV0KFxuICAgICAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9pbkN1cnZlQWZmaW5lXCIsIGF1eCksXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgYnVpbGRJc1plcm9BZmZpbmUoKTtcbiAgICBidWlsZElzWmVybygpO1xuICAgIGJ1aWxkWmVyb0FmZmluZSgpO1xuICAgIGJ1aWxkWmVybygpO1xuICAgIGJ1aWxkQ29weUFmZmluZSgpO1xuICAgIGJ1aWxkQ29weSgpO1xuICAgIGJ1aWxkVG9KYWNvYmlhbigpO1xuICAgIGJ1aWxkRXFBZmZpbmUoKTtcbiAgICBidWlsZEVxTWl4ZWQoKTtcbiAgICBidWlsZEVxKCk7XG4gICAgYnVpbGREb3VibGVBZmZpbmUoKTtcbiAgICBidWlsZERvdWJsZSgpO1xuICAgIGJ1aWxkQWRkQWZmaW5lKCk7XG4gICAgYnVpbGRBZGRNaXhlZCgpO1xuICAgIGJ1aWxkQWRkKCk7XG4gICAgYnVpbGROZWdBZmZpbmUoKTtcbiAgICBidWlsZE5lZygpO1xuICAgIGJ1aWxkU3ViQWZmaW5lKCk7XG4gICAgYnVpbGRTdWJNaXhlZCgpO1xuICAgIGJ1aWxkU3ViKCk7XG4gICAgYnVpbGRGcm9tTW9udGdvbWVyeUFmZmluZSgpO1xuICAgIGJ1aWxkRnJvbU1vbnRnb21lcnkoKTtcbiAgICBidWlsZFRvTW9udGdvbWVyeUFmZmluZSgpO1xuICAgIGJ1aWxkVG9Nb250Z29tZXJ5KCk7XG4gICAgYnVpbGRUb0FmZmluZSgpO1xuICAgIGJ1aWxkSW5DdXJ2ZUFmZmluZSgpO1xuICAgIGJ1aWxkSW5DdXJ2ZSgpO1xuXG4gICAgYnVpbGRCYXRjaFRvQWZmaW5lKCk7XG5cbiAgICBidWlsZE5vcm1hbGl6ZSgpO1xuXG5cbiAgICBidWlsZFJldmVyc2VCeXRlcygpO1xuXG4gICAgYnVpbGRMRU10b1UoKTtcbiAgICBidWlsZExFTXRvQygpO1xuICAgIGJ1aWxkVXRvTEVNKCk7XG4gICAgYnVpbGRDdG9MRU0oKTtcblxuICAgIGJ1aWxkQmF0Y2hDb252ZXJ0aW9uKG1vZHVsZSwgcHJlZml4ICsgXCJfYmF0Y2hMRU10b1VcIiwgcHJlZml4ICsgXCJfTEVNdG9VXCIsIG44KjIsIG44KjIpO1xuICAgIGJ1aWxkQmF0Y2hDb252ZXJ0aW9uKG1vZHVsZSwgcHJlZml4ICsgXCJfYmF0Y2hMRU10b0NcIiwgcHJlZml4ICsgXCJfTEVNdG9DXCIsIG44KjIsIG44KTtcbiAgICBidWlsZEJhdGNoQ29udmVydGlvbihtb2R1bGUsIHByZWZpeCArIFwiX2JhdGNoVXRvTEVNXCIsIHByZWZpeCArIFwiX1V0b0xFTVwiLCBuOCoyLCBuOCoyKTtcbiAgICBidWlsZEJhdGNoQ29udmVydGlvbihtb2R1bGUsIHByZWZpeCArIFwiX2JhdGNoQ3RvTEVNXCIsIHByZWZpeCArIFwiX0N0b0xFTVwiLCBuOCwgbjgqMiwgdHJ1ZSk7XG5cbiAgICBidWlsZEJhdGNoQ29udmVydGlvbihtb2R1bGUsIHByZWZpeCArIFwiX2JhdGNoVG9KYWNvYmlhblwiLCBwcmVmaXggKyBcIl90b0phY29iaWFuXCIsIG44KjIsIG44KjMsIHRydWUpO1xuXG4gICAgYnVpbGRNdWx0aWV4cCQxKG1vZHVsZSwgcHJlZml4LCBwcmVmaXggKyBcIl9tdWx0aWV4cFwiLCBwcmVmaXggKyBcIl9hZGRcIiwgbjgqMyk7XG4gICAgYnVpbGRNdWx0aWV4cCQxKG1vZHVsZSwgcHJlZml4LCBwcmVmaXggKyBcIl9tdWx0aWV4cEFmZmluZVwiLCBwcmVmaXggKyBcIl9hZGRNaXhlZFwiLCBuOCoyKTtcblxuICAgIC8qXG4gICAgYnVpbGRUaW1lc1NjYWxhcihcbiAgICAgICAgbW9kdWxlLFxuICAgICAgICBwcmVmaXggKyBcIl90aW1lc1NjYWxhck9sZFwiLFxuICAgICAgICBuOCozLFxuICAgICAgICBwcmVmaXggKyBcIl9hZGRcIixcbiAgICAgICAgcHJlZml4ICsgXCJfZG91YmxlXCIsXG4gICAgICAgIHByZWZpeCArIFwiX2NvcHlcIixcbiAgICAgICAgcHJlZml4ICsgXCJfemVyb1wiLFxuICAgICk7XG4gICAgKi9cbiAgICBidWlsZFRpbWVzU2NhbGFyTkFGKFxuICAgICAgICBtb2R1bGUsXG4gICAgICAgIHByZWZpeCArIFwiX3RpbWVzU2NhbGFyXCIsXG4gICAgICAgIG44KjMsXG4gICAgICAgIHByZWZpeCArIFwiX2FkZFwiLFxuICAgICAgICBwcmVmaXggKyBcIl9kb3VibGVcIixcbiAgICAgICAgcHJlZml4ICsgXCJfc3ViXCIsXG4gICAgICAgIHByZWZpeCArIFwiX2NvcHlcIixcbiAgICAgICAgcHJlZml4ICsgXCJfemVyb1wiXG4gICAgKTtcblxuICAgIGJ1aWxkVGltZXNTY2FsYXJOQUYoXG4gICAgICAgIG1vZHVsZSxcbiAgICAgICAgcHJlZml4ICsgXCJfdGltZXNTY2FsYXJBZmZpbmVcIixcbiAgICAgICAgbjgqMixcbiAgICAgICAgcHJlZml4ICsgXCJfYWRkTWl4ZWRcIixcbiAgICAgICAgcHJlZml4ICsgXCJfZG91YmxlXCIsXG4gICAgICAgIHByZWZpeCArIFwiX3N1Yk1peGVkXCIsXG4gICAgICAgIHByZWZpeCArIFwiX2NvcHlBZmZpbmVcIixcbiAgICAgICAgcHJlZml4ICsgXCJfemVyb1wiXG4gICAgKTtcblxuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9pc1plcm9cIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX2lzWmVyb0FmZmluZVwiKTtcblxuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9lcVwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfZXFNaXhlZFwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfZXFBZmZpbmVcIik7XG5cbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfY29weVwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfY29weUFmZmluZVwiKTtcblxuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl96ZXJvXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl96ZXJvQWZmaW5lXCIpO1xuXG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX2RvdWJsZVwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfZG91YmxlQWZmaW5lXCIpO1xuXG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX2FkZFwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfYWRkTWl4ZWRcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX2FkZEFmZmluZVwiKTtcblxuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9uZWdcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX25lZ0FmZmluZVwiKTtcblxuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9zdWJcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX3N1Yk1peGVkXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9zdWJBZmZpbmVcIik7XG5cbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfZnJvbU1vbnRnb21lcnlcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX2Zyb21Nb250Z29tZXJ5QWZmaW5lXCIpO1xuXG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX3RvTW9udGdvbWVyeVwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfdG9Nb250Z29tZXJ5QWZmaW5lXCIpO1xuXG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX3RpbWVzU2NhbGFyXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl90aW1lc1NjYWxhckFmZmluZVwiKTtcblxuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9ub3JtYWxpemVcIik7XG5cbiAgICAvLyBDb252ZXJ0aW9uIGZ1bmN0aW9uc1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9MRU10b1VcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX0xFTXRvQ1wiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfVXRvTEVNXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9DdG9MRU1cIik7XG5cbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfYmF0Y2hMRU10b1VcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX2JhdGNoTEVNdG9DXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9iYXRjaFV0b0xFTVwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfYmF0Y2hDdG9MRU1cIik7XG5cbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfdG9BZmZpbmVcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX3RvSmFjb2JpYW5cIik7XG5cbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfYmF0Y2hUb0FmZmluZVwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfYmF0Y2hUb0phY29iaWFuXCIpO1xuXG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX2luQ3VydmVcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX2luQ3VydmVBZmZpbmVcIik7XG5cbiAgICAvKlxuICAgIGJ1aWxkRzFNdWxTY2FsYXIobW9kdWxlLCB6cSk7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKFwiZzFNdWxTY2FsYXJcIik7XG4gICAgKi9cblxuICAgIHJldHVybiBwcmVmaXg7XG59O1xuXG4vKlxuICAgIENvcHlyaWdodCAyMDE5IDBLSU1TIGFzc29jaWF0aW9uLlxuXG4gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2Ygd2FzbXNuYXJrIChXZWIgQXNzZW1ibHkgemtTbmFyayBQcm92ZXIpLlxuXG4gICAgd2FzbXNuYXJrIGlzIGEgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdFxuICAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3JcbiAgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuXG4gICAgd2FzbXNuYXJrIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUXG4gICAgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZXG4gICAgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljXG4gICAgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuXG4gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAgICBhbG9uZyB3aXRoIHdhc21zbmFyay4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cbiovXG5cbmNvbnN0IHsgaXNPZGQ6IGlzT2RkJDIsIG1vZEludjogbW9kSW52JDEsIG1vZFBvdyB9ID0gYmlnaW50O1xuY29uc3QgdXRpbHMkMyA9IHV0aWxzJDY7XG5cbnZhciBidWlsZF9mZnQgPSBmdW5jdGlvbiBidWlsZEZGVChtb2R1bGUsIHByZWZpeCwgZ1ByZWZpeCwgZlByZWZpeCwgb3BHdGltZXNGKSB7XG5cbiAgICBjb25zdCBuNjRmID0gbW9kdWxlLm1vZHVsZXNbZlByZWZpeF0ubjY0O1xuICAgIGNvbnN0IG44ZiA9IG42NGYqODtcblxuICAgIGNvbnN0IG42NGcgPSBtb2R1bGUubW9kdWxlc1tnUHJlZml4XS5uNjQ7XG4gICAgY29uc3QgbjhnID0gbjY0Zyo4O1xuXG4gICAgY29uc3QgcSA9IG1vZHVsZS5tb2R1bGVzW2ZQcmVmaXhdLnE7XG5cbiAgICBsZXQgcmVtID0gcSAtIDFuO1xuICAgIGxldCBtYXhCaXRzID0gMDtcbiAgICB3aGlsZSAoIWlzT2RkJDIocmVtKSkge1xuICAgICAgICBtYXhCaXRzICsrO1xuICAgICAgICByZW0gPSByZW0gPj4gMW47XG4gICAgfVxuXG4gICAgbGV0IG5yID0gMm47XG5cbiAgICB3aGlsZSAoIG1vZFBvdyhuciwgcSA+PiAxbiwgcSkgPT09IDFuICkgbnIgPSBuciArIDFuO1xuXG4gICAgLy8gY29uc29sZS5sb2cobnIpO1xuXG4gICAgY29uc3QgdyA9IG5ldyBBcnJheShtYXhCaXRzKzEpO1xuICAgIHdbbWF4Qml0c10gPSBtb2RQb3cobnIsIHJlbSwgcSk7XG5cbiAgICBsZXQgbj1tYXhCaXRzLTE7XG4gICAgd2hpbGUgKG4+PTApIHtcbiAgICAgICAgd1tuXSA9IG1vZFBvdyh3W24rMV0sIDJuLCBxKTtcbiAgICAgICAgbi0tO1xuICAgIH1cblxuICAgIGNvbnN0IGJ5dGVzID0gW107XG4gICAgY29uc3QgUiA9ICgxbiA8PCBCaWdJbnQobjhmKjgpKSAlIHE7XG5cbiAgICBmb3IgKGxldCBpPTA7IGk8dy5sZW5ndGg7IGkrKykge1xuICAgICAgICBjb25zdCBtID0gd1tpXSAqIFIgJSBxO1xuICAgICAgICBieXRlcy5wdXNoKC4uLnV0aWxzJDMuYmlnSW50MkJ5dGVzTEUobSwgbjhmKSk7XG4gICAgfVxuXG4gICAgY29uc3QgUk9PVHMgPSBtb2R1bGUuYWxsb2MoYnl0ZXMpO1xuXG4gICAgY29uc3QgaTIgPSBuZXcgQXJyYXkobWF4Qml0cysxKTtcbiAgICBpMlswXSA9IDFuO1xuXG4gICAgZm9yIChsZXQgaT0xOyBpPD1tYXhCaXRzOyBpKyspIHtcbiAgICAgICAgaTJbaV0gPSBpMltpLTFdICogMm47XG4gICAgfVxuXG4gICAgY29uc3QgYnl0ZXNpMiA9W107XG4gICAgZm9yIChsZXQgaT0wOyBpPD1tYXhCaXRzOyBpKyspIHtcbiAgICAgICAgY29uc3QgbSA9IG1vZEludiQxKGkyW2ldLCBxKSAqIFIgJSBxO1xuICAgICAgICBieXRlc2kyLnB1c2goLi4udXRpbHMkMy5iaWdJbnQyQnl0ZXNMRShtLCBuOGYpKTtcbiAgICB9XG5cbiAgICBjb25zdCBJTlYyID0gbW9kdWxlLmFsbG9jKGJ5dGVzaTIpO1xuXG4gICAgY29uc3Qgc2hpZnQgPSBtb2RQb3cobnIsIDJuLCBxKTtcbiAgICBjb25zdCBieXRlc1NoaWZ0VG9TbWFsbE0gPVtdO1xuICAgIGNvbnN0IGJ5dGVzU0NvbnN0ID1bXTtcbiAgICBmb3IgKGxldCBpPTA7IGk8PW1heEJpdHM7IGkrKykge1xuICAgICAgICBjb25zdCBzaGlmdFRvU21hbGxNID0gbW9kUG93KHNoaWZ0LCAybiAqKiBCaWdJbnQoaSksIHEpO1xuICAgICAgICBjb25zdCBzQ29uc3QgPSBtb2RJbnYkMShxICsgMW4gLSBzaGlmdFRvU21hbGxNLCBxKTtcbiAgICAgICAgYnl0ZXNTaGlmdFRvU21hbGxNLnB1c2goLi4udXRpbHMkMy5iaWdJbnQyQnl0ZXNMRShzaGlmdFRvU21hbGxNICogUiAlIHEsIG44ZikpO1xuICAgICAgICBieXRlc1NDb25zdC5wdXNoKC4uLnV0aWxzJDMuYmlnSW50MkJ5dGVzTEUoc0NvbnN0ICogUiAlIHEsIG44ZikpO1xuICAgIH1cblxuICAgIGNvbnN0IFNISUZUX1RPX00gPSBtb2R1bGUuYWxsb2MoIGJ5dGVzU2hpZnRUb1NtYWxsTSAgKTtcbiAgICBjb25zdCBTQ09OU1QgPSBtb2R1bGUuYWxsb2MoIGJ5dGVzU0NvbnN0ICApO1xuXG4gICAgZnVuY3Rpb24gcmV2KHgpIHtcbiAgICAgICAgbGV0IHI9MDtcbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPDg7IGkrKykge1xuICAgICAgICAgICAgaWYgKHggJiAoMSA8PCBpKSkge1xuICAgICAgICAgICAgICAgIHIgPSByIHwgKDB4ODAgPj4gaSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHI7XG4gICAgfVxuXG4gICAgY29uc3QgcnRhYmxlID0gQXJyYXkoMjU2KTtcbiAgICBmb3IgKGxldCBpPTA7IGk8MjU2OyBpKyspIHtcbiAgICAgICAgcnRhYmxlW2ldID0gcmV2KGkpO1xuICAgIH1cblxuICAgIGNvbnN0IFJFVlRBQkxFID0gbW9kdWxlLmFsbG9jKHJ0YWJsZSk7XG5cblxuICAgIGZ1bmN0aW9uIGJ1aWxkTG9nMigpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrXCJfX2xvZzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJuXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLnNldFJldHVyblR5cGUoXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJiaXRzXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiYXV4XCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcbiAgICAgICAgICAgICAgICBcImF1eFwiLFxuICAgICAgICAgICAgICAgIGMuaTMyX3Nocl91KFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiblwiKSxcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QoMSlcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgICAgIGYuYWRkQ29kZShjLnNldExvY2FsKFwiYml0c1wiLCBjLmkzMl9jb25zdCgwKSkpO1xuXG4gICAgICAgIGYuYWRkQ29kZShjLmJsb2NrKGMubG9vcChcbiAgICAgICAgICAgIGMuYnJfaWYoXG4gICAgICAgICAgICAgICAgMSxcbiAgICAgICAgICAgICAgICBjLmkzMl9lcXooYy5nZXRMb2NhbChcImF1eFwiKSlcbiAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXG4gICAgICAgICAgICAgICAgXCJhdXhcIixcbiAgICAgICAgICAgICAgICBjLmkzMl9zaHJfdShcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImF1eFwiKSxcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QoMSlcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApLFxuXG4gICAgICAgICAgICBjLnNldExvY2FsKFxuICAgICAgICAgICAgICAgIFwiYml0c1wiLFxuICAgICAgICAgICAgICAgIGMuaTMyX2FkZChcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImJpdHNcIiksXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KDEpXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgYy5icigwKVxuICAgICAgICApKSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKGMuaWYoXG4gICAgICAgICAgICBjLmkzMl9uZShcbiAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiblwiKSxcbiAgICAgICAgICAgICAgICBjLmkzMl9zaGwoXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KDEpLFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiYml0c1wiKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjLnVucmVhY2hhYmxlKClcbiAgICAgICAgKSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKGMuaWYoXG4gICAgICAgICAgICBjLmkzMl9ndF91KFxuICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJiaXRzXCIpLFxuICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KG1heEJpdHMpXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYy51bnJlYWNoYWJsZSgpXG4gICAgICAgICkpO1xuXG4gICAgICAgIGYuYWRkQ29kZShjLmdldExvY2FsKFwiYml0c1wiKSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYnVpbGRGRlQoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4K1wiX2ZmdFwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInB4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiblwiLCBcImkzMlwiKTtcblxuICAgICAgICBmLmFkZExvY2FsKFwiYml0c1wiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IE9uZSA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOGYpKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLnNldExvY2FsKFxuICAgICAgICAgICAgICAgIFwiYml0c1wiLFxuICAgICAgICAgICAgICAgIGMuY2FsbChcbiAgICAgICAgICAgICAgICAgICAgcHJlZml4ICsgXCJfX2xvZzJcIixcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcIm5cIilcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYy5jYWxsKGZQcmVmaXggKyBcIl9vbmVcIiwgT25lKSxcbiAgICAgICAgICAgIGMuY2FsbChcbiAgICAgICAgICAgICAgICBwcmVmaXgrXCJfcmF3ZmZ0XCIsXG4gICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInB4XCIpLFxuICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJiaXRzXCIpLFxuICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KDApLFxuICAgICAgICAgICAgICAgIE9uZVxuICAgICAgICAgICAgKVxuICAgICAgICApO1xuXG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYnVpbGRJRkZUKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCtcIl9pZmZ0XCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicHhcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJuXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiYml0c1wiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcInBJbnYyXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcbiAgICAgICAgICAgICAgICBcImJpdHNcIixcbiAgICAgICAgICAgICAgICBjLmNhbGwoXG4gICAgICAgICAgICAgICAgICAgIHByZWZpeCArIFwiX19sb2cyXCIsXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJuXCIpXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXG4gICAgICAgICAgICAgICAgXCJwSW52MlwiLFxuICAgICAgICAgICAgICAgIGMuaTMyX2FkZChcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QoSU5WMiksXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX211bChcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJiaXRzXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QobjhmKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgYy5jYWxsKFxuICAgICAgICAgICAgICAgIHByZWZpeCtcIl9yYXdmZnRcIixcbiAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicHhcIiksXG4gICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImJpdHNcIiksXG4gICAgICAgICAgICAgICAgYy5pMzJfY29uc3QoMSksXG4gICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInBJbnYyXCIpXG4gICAgICAgICAgICApLFxuICAgICAgICApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGJ1aWxkUmF3RkZUKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCtcIl9yYXdmZnRcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJweFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcImJpdHNcIiwgXCJpMzJcIik7IC8vIDIgcG93ZXJcbiAgICAgICAgZi5hZGRQYXJhbShcInJldmVyc2VcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJtdWxGYWN0b3JcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgZi5hZGRMb2NhbChcInNcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJrXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwialwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcIm1cIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJtZGl2MlwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcIm5cIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJwd21cIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJpZHgxXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiaWR4MlwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IFcgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjhmKSk7XG4gICAgICAgIGNvbnN0IFQgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjhnKSk7XG4gICAgICAgIGNvbnN0IFUgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjhnKSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX19yZXZlcnNlUGVybXV0YXRpb25cIiwgYy5nZXRMb2NhbChcInB4XCIpLCBjLmdldExvY2FsKFwiYml0c1wiKSksXG4gICAgICAgICAgICBjLnNldExvY2FsKFwiblwiLCBjLmkzMl9zaGwoYy5pMzJfY29uc3QoMSksIGMuZ2V0TG9jYWwoXCJiaXRzXCIpKSksXG4gICAgICAgICAgICBjLnNldExvY2FsKFwic1wiLCBjLmkzMl9jb25zdCgxKSksXG4gICAgICAgICAgICBjLmJsb2NrKGMubG9vcChcbiAgICAgICAgICAgICAgICBjLmJyX2lmKFxuICAgICAgICAgICAgICAgICAgICAxLFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9ndF91KFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInNcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiYml0c1wiKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFwibVwiLCBjLmkzMl9zaGwoYy5pMzJfY29uc3QoMSksIGMuZ2V0TG9jYWwoXCJzXCIpKSksXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcInB3bVwiLFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9hZGQoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdChST09UcyksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9tdWwoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInNcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QobjhmKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFwia1wiLCBjLmkzMl9jb25zdCgwKSksXG4gICAgICAgICAgICAgICAgYy5ibG9jayhjLmxvb3AoXG4gICAgICAgICAgICAgICAgICAgIGMuYnJfaWYoXG4gICAgICAgICAgICAgICAgICAgICAgICAxLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfZ2VfdShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwia1wiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiblwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApLFxuXG4gICAgICAgICAgICAgICAgICAgIGMuY2FsbChmUHJlZml4ICsgXCJfb25lXCIsIFcpLFxuXG4gICAgICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJtZGl2MlwiLCBjLmkzMl9zaHJfdShjLmdldExvY2FsKFwibVwiKSwgYy5pMzJfY29uc3QoMSkpICksXG4gICAgICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJqXCIsIGMuaTMyX2NvbnN0KDApKSxcbiAgICAgICAgICAgICAgICAgICAgYy5ibG9jayhjLmxvb3AoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmJyX2lmKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfZ2VfdShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImpcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJtZGl2MlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJpZHgxXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfYWRkKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicHhcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX211bChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2FkZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwia1wiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwialwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KG44ZylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJpZHgyXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfYWRkKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaWR4MVwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfbXVsKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcIm1kaXYyXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QobjhnKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgICAgICAgICAgICAgYy5jYWxsKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wR3RpbWVzRixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaWR4MlwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBXLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGMuY2FsbChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBnUHJlZml4ICsgXCJfY29weVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpZHgxXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGMuY2FsbChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBnUHJlZml4ICsgXCJfYWRkXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgVSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBULFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpZHgxXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgICAgICAgICAgICAgYy5jYWxsKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdQcmVmaXggKyBcIl9zdWJcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBVLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImlkeDJcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmNhbGwoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZlByZWZpeCArIFwiX211bFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInB3bVwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBXLFxuICAgICAgICAgICAgICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcImpcIiwgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJqXCIpLCBjLmkzMl9jb25zdCgxKSkpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5icigwKVxuICAgICAgICAgICAgICAgICAgICApKSxcblxuICAgICAgICAgICAgICAgICAgICBjLnNldExvY2FsKFwia1wiLCBjLmkzMl9hZGQoYy5nZXRMb2NhbChcImtcIiksIGMuZ2V0TG9jYWwoXCJtXCIpKSksXG4gICAgICAgICAgICAgICAgICAgIGMuYnIoMClcbiAgICAgICAgICAgICAgICApKSxcblxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJzXCIsIGMuaTMyX2FkZChjLmdldExvY2FsKFwic1wiKSwgYy5pMzJfY29uc3QoMSkpKSxcbiAgICAgICAgICAgICAgICBjLmJyKDApXG4gICAgICAgICAgICApKSxcbiAgICAgICAgICAgIGMuY2FsbChcbiAgICAgICAgICAgICAgICBwcmVmaXggKyBcIl9fZmZ0RmluYWxcIixcbiAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicHhcIiksXG4gICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImJpdHNcIiksXG4gICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInJldmVyc2VcIiksXG4gICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcIm11bEZhY3RvclwiKVxuICAgICAgICAgICAgKVxuICAgICAgICApO1xuICAgIH1cblxuXG4gICAgZnVuY3Rpb24gYnVpbGRGaW5hbEludmVyc2UoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4K1wiX19mZnRGaW5hbFwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInB4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiYml0c1wiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInJldmVyc2VcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJtdWxGYWN0b3JcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJuXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwibmRpdjJcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJwSW52MlwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcImlcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJtYXNrXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiaWR4MVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcImlkeDJcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCBUID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44ZykpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgYy5pMzJfYW5kKFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9lcXooYy5nZXRMb2NhbChcInJldmVyc2VcIikpLFxuICAgICAgICAgICAgICAgICAgICBjLmNhbGwoZlByZWZpeCArIFwiX2lzT25lXCIsIGMuZ2V0TG9jYWwoXCJtdWxGYWN0b3JcIikpXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBjLnJldChbXSlcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjLnNldExvY2FsKFwiblwiLCBjLmkzMl9zaGwoIGMuaTMyX2NvbnN0KDEpLCBjLmdldExvY2FsKFwiYml0c1wiKSkpLFxuXG4gICAgICAgICAgICBjLnNldExvY2FsKFwibWFza1wiLCBjLmkzMl9zdWIoIGMuZ2V0TG9jYWwoXCJuXCIpICwgYy5pMzJfY29uc3QoMSkpKSxcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpXCIsIGMuaTMyX2NvbnN0KDEpKSxcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXG4gICAgICAgICAgICAgICAgXCJuZGl2MlwiLFxuICAgICAgICAgICAgICAgIGMuaTMyX3Nocl91KFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiblwiKSxcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QoMSlcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYy5ibG9jayhjLmxvb3AoXG4gICAgICAgICAgICAgICAgYy5icl9pZihcbiAgICAgICAgICAgICAgICAgICAgMSxcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfZ2VfdShcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcIm5kaXYyXCIpXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApLFxuXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcImlkeDFcIixcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfYWRkKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInB4XCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfbXVsKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KG44ZylcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFwiaWR4MlwiLFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9hZGQoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicHhcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9tdWwoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfc3ViKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiblwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImlcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KG44ZylcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicmV2ZXJzZVwiKSxcbiAgICAgICAgICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuY2FsbChmUHJlZml4ICsgXCJfaXNPbmVcIiwgYy5nZXRMb2NhbChcIm11bEZhY3RvclwiKSksXG4gICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uYy5jYWxsKGdQcmVmaXggKyBcIl9jb3B5XCIsIGMuZ2V0TG9jYWwoXCJpZHgxXCIpLCBUKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5jLmNhbGwoZ1ByZWZpeCArIFwiX2NvcHlcIiwgYy5nZXRMb2NhbChcImlkeDJcIikgLCBjLmdldExvY2FsKFwiaWR4MVwiKSApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLmMuY2FsbChnUHJlZml4ICsgXCJfY29weVwiLCBUICwgYy5nZXRMb2NhbChcImlkeDJcIikpLFxuICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5jLmNhbGwoZ1ByZWZpeCArIFwiX2NvcHlcIiwgYy5nZXRMb2NhbChcImlkeDFcIiksIFQpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLmMuY2FsbChvcEd0aW1lc0YgLCBjLmdldExvY2FsKFwiaWR4MlwiKSAsIGMuZ2V0TG9jYWwoXCJtdWxGYWN0b3JcIiksIGMuZ2V0TG9jYWwoXCJpZHgxXCIpICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uYy5jYWxsKG9wR3RpbWVzRiAsIFQgLCBjLmdldExvY2FsKFwibXVsRmFjdG9yXCIpLCBjLmdldExvY2FsKFwiaWR4MlwiKSksXG4gICAgICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmNhbGwoZlByZWZpeCArIFwiX2lzT25lXCIsIGMuZ2V0TG9jYWwoXCJtdWxGYWN0b3JcIikpLFxuICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIERvIG5vdGhpbmcgKEl0IHNob3VsZCBub3QgYmUgaGVyZSlcbiAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uYy5jYWxsKG9wR3RpbWVzRiAsIGMuZ2V0TG9jYWwoXCJpZHgxXCIpICwgYy5nZXRMb2NhbChcIm11bEZhY3RvclwiKSwgYy5nZXRMb2NhbChcImlkeDFcIikgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5jLmNhbGwob3BHdGltZXNGICwgYy5nZXRMb2NhbChcImlkeDJcIikgLCBjLmdldExvY2FsKFwibXVsRmFjdG9yXCIpLCBjLmdldExvY2FsKFwiaWR4MlwiKSksXG4gICAgICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpXCIsIGMuaTMyX2FkZChjLmdldExvY2FsKFwiaVwiKSwgYy5pMzJfY29uc3QoMSkpKSxcblxuICAgICAgICAgICAgICAgIGMuYnIoMClcbiAgICAgICAgICAgICkpLFxuXG4gICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgIGMuY2FsbChmUHJlZml4ICsgXCJfaXNPbmVcIiwgYy5nZXRMb2NhbChcIm11bEZhY3RvclwiKSksXG4gICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAvLyBEbyBub3RoaW5nIChJdCBzaG91bGQgbm90IGJlIGhlcmUpXG4gICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgIC4uLmMuY2FsbChvcEd0aW1lc0YsIGMuZ2V0TG9jYWwoXCJweFwiKSAsIGMuZ2V0TG9jYWwoXCJtdWxGYWN0b3JcIiksIGMuZ2V0TG9jYWwoXCJweFwiKSksXG4gICAgICAgICAgICAgICAgICAgIC4uLmMuc2V0TG9jYWwoXCJpZHgyXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9hZGQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInB4XCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX211bChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcIm5kaXYyXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdChuOGcpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAuLi5jLmNhbGwob3BHdGltZXNGLCBjLmdldExvY2FsKFwiaWR4MlwiKSxjLmdldExvY2FsKFwibXVsRmFjdG9yXCIpLCBjLmdldExvY2FsKFwiaWR4MlwiKSlcbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYnVpbGRSZXZlcnNlUGVybXV0YXRpb24oKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4K1wiX19yZXZlcnNlUGVybXV0YXRpb25cIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJweFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcImJpdHNcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJuXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiaVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcInJpXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiaWR4MVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcImlkeDJcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCBUID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44ZykpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJuXCIsIGMuaTMyX3NobCggYy5pMzJfY29uc3QoMSksIGMuZ2V0TG9jYWwoXCJiaXRzXCIpKSksXG4gICAgICAgICAgICBjLnNldExvY2FsKFwiaVwiLCBjLmkzMl9jb25zdCgwKSksXG4gICAgICAgICAgICBjLmJsb2NrKGMubG9vcChcbiAgICAgICAgICAgICAgICBjLmJyX2lmKFxuICAgICAgICAgICAgICAgICAgICAxLFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9lcShcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcIm5cIilcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFwiaWR4MVwiLFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9hZGQoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicHhcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9tdWwoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImlcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QobjhnKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJyaVwiLCBjLmNhbGwocHJlZml4ICsgXCJfX3JldlwiLCBjLmdldExvY2FsKFwiaVwiKSwgYy5nZXRMb2NhbChcImJpdHNcIikpKSxcblxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpZHgyXCIsXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX2FkZChcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJweFwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX211bChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicmlcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QobjhnKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX2x0X3UoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaVwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJyaVwiKVxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5jLmNhbGwoZ1ByZWZpeCArIFwiX2NvcHlcIiwgYy5nZXRMb2NhbChcImlkeDFcIiksIFQpLFxuICAgICAgICAgICAgICAgICAgICAgICAgLi4uYy5jYWxsKGdQcmVmaXggKyBcIl9jb3B5XCIsIGMuZ2V0TG9jYWwoXCJpZHgyXCIpICwgYy5nZXRMb2NhbChcImlkeDFcIikpLFxuICAgICAgICAgICAgICAgICAgICAgICAgLi4uYy5jYWxsKGdQcmVmaXggKyBcIl9jb3B5XCIsIFQgLCBjLmdldExvY2FsKFwiaWR4MlwiKSlcbiAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFwiaVwiLCBjLmkzMl9hZGQoYy5nZXRMb2NhbChcImlcIiksIGMuaTMyX2NvbnN0KDEpKSksXG5cbiAgICAgICAgICAgICAgICBjLmJyKDApXG4gICAgICAgICAgICApKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGJ1aWxkUmV2KCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCtcIl9fcmV2XCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcImJpdHNcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuc2V0UmV0dXJuVHlwZShcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuaTMyX3JvdGwoXG4gICAgICAgICAgICAgICAgYy5pMzJfYWRkKFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9hZGQoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9zaGwoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfbG9hZDhfdShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfYW5kKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInhcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdCgweEZGKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSRVZUQUJMRSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QoMjQpXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfc2hsKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2xvYWQ4X3UoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2FuZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX3Nocl91KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJ4XCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KDgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QoMHhGRilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUkVWVEFCTEUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KDE2KVxuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfYWRkKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfc2hsKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2xvYWQ4X3UoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2FuZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX3Nocl91KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJ4XCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KDE2KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KDB4RkYpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJFVlRBQkxFLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdCg4KVxuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2xvYWQ4X3UoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfYW5kKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9zaHJfdShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJ4XCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QoMjQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KDB4RkYpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBSRVZUQUJMRSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAwXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiYml0c1wiKVxuICAgICAgICAgICAgKVxuICAgICAgICApO1xuICAgIH1cblxuXG4gICAgZnVuY3Rpb24gYnVpbGRGRlRKb2luKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCtcIl9mZnRKb2luXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicEJ1ZmYxXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicEJ1ZmYyXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiblwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcImZpcnN0XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiaW5jXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiaWR4MVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcImlkeDJcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJpXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgVyA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOGYpKTtcbiAgICAgICAgY29uc3QgVCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOGcpKTtcbiAgICAgICAgY29uc3QgVSA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOGcpKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLmNhbGwoIGZQcmVmaXggKyBcIl9jb3B5XCIsIGMuZ2V0TG9jYWwoXCJmaXJzdFwiKSwgVyksXG4gICAgICAgICAgICBjLnNldExvY2FsKFwiaVwiLCBjLmkzMl9jb25zdCgwKSksXG4gICAgICAgICAgICBjLmJsb2NrKGMubG9vcChcbiAgICAgICAgICAgICAgICBjLmJyX2lmKFxuICAgICAgICAgICAgICAgICAgICAxLFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9lcShcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcIm5cIilcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFxuICAgICAgICAgICAgICAgICAgICBcImlkeDFcIixcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfYWRkKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInBCdWZmMVwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX211bChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaVwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdChuOGcpXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApLFxuXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcbiAgICAgICAgICAgICAgICAgICAgXCJpZHgyXCIsXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX2FkZChcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwQnVmZjJcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9tdWwoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImlcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QobjhnKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgICAgIGMuY2FsbChcbiAgICAgICAgICAgICAgICAgICAgb3BHdGltZXNGLFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaWR4MlwiKSxcbiAgICAgICAgICAgICAgICAgICAgVyxcbiAgICAgICAgICAgICAgICAgICAgVFxuICAgICAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgICAgICBjLmNhbGwoXG4gICAgICAgICAgICAgICAgICAgIGdQcmVmaXggKyBcIl9jb3B5XCIsXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpZHgxXCIpLFxuICAgICAgICAgICAgICAgICAgICBVXG4gICAgICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgICAgIGMuY2FsbChcbiAgICAgICAgICAgICAgICAgICAgZ1ByZWZpeCArIFwiX2FkZFwiLFxuICAgICAgICAgICAgICAgICAgICBVLFxuICAgICAgICAgICAgICAgICAgICBULFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaWR4MVwiKSxcbiAgICAgICAgICAgICAgICApLFxuXG4gICAgICAgICAgICAgICAgYy5jYWxsKFxuICAgICAgICAgICAgICAgICAgICBnUHJlZml4ICsgXCJfc3ViXCIsXG4gICAgICAgICAgICAgICAgICAgIFUsXG4gICAgICAgICAgICAgICAgICAgIFQsXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpZHgyXCIpLFxuICAgICAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgICAgICBjLmNhbGwoXG4gICAgICAgICAgICAgICAgICAgIGZQcmVmaXggKyBcIl9tdWxcIixcbiAgICAgICAgICAgICAgICAgICAgVyxcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImluY1wiKSxcbiAgICAgICAgICAgICAgICAgICAgVyxcbiAgICAgICAgICAgICAgICApLFxuXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcImlcIiwgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJpXCIpLCBjLmkzMl9jb25zdCgxKSkpLFxuICAgICAgICAgICAgICAgIGMuYnIoMClcbiAgICAgICAgICAgICkpXG4gICAgICAgICk7XG4gICAgfVxuXG5cbiAgICBmdW5jdGlvbiBidWlsZEZGVEpvaW5FeHQoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4K1wiX2ZmdEpvaW5FeHRcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwQnVmZjFcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwQnVmZjJcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJuXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiZmlyc3RcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJpbmNcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ0b3RhbEJpdHNcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJpZHgxXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiaWR4MlwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcImlcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJwU2hpZnRUb01cIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCBXID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44ZikpO1xuICAgICAgICBjb25zdCBVID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44ZykpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcblxuICAgICAgICAgICAgYy5zZXRMb2NhbChcInBTaGlmdFRvTVwiLFxuICAgICAgICAgICAgICAgIGMuaTMyX2FkZChcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QoU0hJRlRfVE9fTSksXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX211bChcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJ0b3RhbEJpdHNcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdChuOGYpXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApLFxuXG5cbiAgICAgICAgICAgIGMuY2FsbCggZlByZWZpeCArIFwiX2NvcHlcIiwgYy5nZXRMb2NhbChcImZpcnN0XCIpLCBXKSxcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpXCIsIGMuaTMyX2NvbnN0KDApKSxcbiAgICAgICAgICAgIGMuYmxvY2soYy5sb29wKFxuICAgICAgICAgICAgICAgIGMuYnJfaWYoXG4gICAgICAgICAgICAgICAgICAgIDEsXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX2VxKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImlcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiblwiKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXG4gICAgICAgICAgICAgICAgICAgIFwiaWR4MVwiLFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9hZGQoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicEJ1ZmYxXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfbXVsKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KG44ZylcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFxuICAgICAgICAgICAgICAgICAgICBcImlkeDJcIixcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfYWRkKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInBCdWZmMlwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX211bChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaVwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdChuOGcpXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApLFxuXG4gICAgICAgICAgICAgICAgYy5jYWxsKFxuICAgICAgICAgICAgICAgICAgICBnUHJlZml4ICsgXCJfYWRkXCIsXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpZHgxXCIpLFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaWR4MlwiKSxcbiAgICAgICAgICAgICAgICAgICAgVVxuICAgICAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgICAgICBjLmNhbGwoXG4gICAgICAgICAgICAgICAgICAgIG9wR3RpbWVzRixcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImlkeDJcIiksXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwU2hpZnRUb01cIiksXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpZHgyXCIpXG4gICAgICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgICAgIGMuY2FsbChcbiAgICAgICAgICAgICAgICAgICAgZ1ByZWZpeCArIFwiX2FkZFwiLFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaWR4MVwiKSxcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImlkeDJcIiksXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpZHgyXCIpXG4gICAgICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgICAgIGMuY2FsbChcbiAgICAgICAgICAgICAgICAgICAgb3BHdGltZXNGLFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaWR4MlwiKSxcbiAgICAgICAgICAgICAgICAgICAgVyxcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImlkeDJcIiksXG4gICAgICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgICAgIGMuY2FsbChcbiAgICAgICAgICAgICAgICAgICAgZ1ByZWZpeCArIFwiX2NvcHlcIixcbiAgICAgICAgICAgICAgICAgICAgVSxcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImlkeDFcIilcbiAgICAgICAgICAgICAgICApLFxuXG4gICAgICAgICAgICAgICAgYy5jYWxsKFxuICAgICAgICAgICAgICAgICAgICBmUHJlZml4ICsgXCJfbXVsXCIsXG4gICAgICAgICAgICAgICAgICAgIFcsXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpbmNcIiksXG4gICAgICAgICAgICAgICAgICAgIFdcbiAgICAgICAgICAgICAgICApLFxuXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcImlcIiwgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJpXCIpLCBjLmkzMl9jb25zdCgxKSkpLFxuICAgICAgICAgICAgICAgIGMuYnIoMClcbiAgICAgICAgICAgICkpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYnVpbGRGRlRKb2luRXh0SW52KCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCtcIl9mZnRKb2luRXh0SW52XCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicEJ1ZmYxXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicEJ1ZmYyXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiblwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcImZpcnN0XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiaW5jXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwidG90YWxCaXRzXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiaWR4MVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcImlkeDJcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJpXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwicFNoaWZ0VG9NXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwicFNDb25zdFwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IFcgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjhmKSk7XG4gICAgICAgIGNvbnN0IFUgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjhnKSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuXG4gICAgICAgICAgICBjLnNldExvY2FsKFwicFNoaWZ0VG9NXCIsXG4gICAgICAgICAgICAgICAgYy5pMzJfYWRkKFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdChTSElGVF9UT19NKSxcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfbXVsKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInRvdGFsQml0c1wiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KG44ZilcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjLnNldExvY2FsKFwicFNDb25zdFwiLFxuICAgICAgICAgICAgICAgIGMuaTMyX2FkZChcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QoU0NPTlNUKSxcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfbXVsKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInRvdGFsQml0c1wiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KG44ZilcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICksXG5cblxuICAgICAgICAgICAgYy5jYWxsKCBmUHJlZml4ICsgXCJfY29weVwiLCBjLmdldExvY2FsKFwiZmlyc3RcIiksIFcpLFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcImlcIiwgYy5pMzJfY29uc3QoMCkpLFxuICAgICAgICAgICAgYy5ibG9jayhjLmxvb3AoXG4gICAgICAgICAgICAgICAgYy5icl9pZihcbiAgICAgICAgICAgICAgICAgICAgMSxcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfZXEoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaVwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJuXCIpXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApLFxuXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcbiAgICAgICAgICAgICAgICAgICAgXCJpZHgxXCIsXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX2FkZChcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwQnVmZjFcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9tdWwoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImlcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QobjhnKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXG4gICAgICAgICAgICAgICAgICAgIFwiaWR4MlwiLFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9hZGQoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicEJ1ZmYyXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfbXVsKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KG44ZylcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgICAgICBjLmNhbGwoXG4gICAgICAgICAgICAgICAgICAgIG9wR3RpbWVzRixcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImlkeDJcIiksXG4gICAgICAgICAgICAgICAgICAgIFcsXG4gICAgICAgICAgICAgICAgICAgIFVcbiAgICAgICAgICAgICAgICApLFxuXG4gICAgICAgICAgICAgICAgYy5jYWxsKFxuICAgICAgICAgICAgICAgICAgICBnUHJlZml4ICsgXCJfc3ViXCIsXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpZHgxXCIpLFxuICAgICAgICAgICAgICAgICAgICBVLFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaWR4MlwiKSxcbiAgICAgICAgICAgICAgICApLFxuXG4gICAgICAgICAgICAgICAgYy5jYWxsKFxuICAgICAgICAgICAgICAgICAgICBvcEd0aW1lc0YsXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpZHgyXCIpLFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicFNDb25zdFwiKSxcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImlkeDJcIilcbiAgICAgICAgICAgICAgICApLFxuXG4gICAgICAgICAgICAgICAgYy5jYWxsKFxuICAgICAgICAgICAgICAgICAgICBvcEd0aW1lc0YsXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpZHgxXCIpLFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicFNoaWZ0VG9NXCIpLFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaWR4MVwiKVxuICAgICAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgICAgICBjLmNhbGwoXG4gICAgICAgICAgICAgICAgICAgIGdQcmVmaXggKyBcIl9zdWJcIixcbiAgICAgICAgICAgICAgICAgICAgVSxcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImlkeDFcIiksXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpZHgxXCIpXG4gICAgICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgICAgIGMuY2FsbChcbiAgICAgICAgICAgICAgICAgICAgb3BHdGltZXNGLFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaWR4MVwiKSxcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInBTQ29uc3RcIiksXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpZHgxXCIpXG4gICAgICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgICAgIGMuY2FsbChcbiAgICAgICAgICAgICAgICAgICAgZlByZWZpeCArIFwiX211bFwiLFxuICAgICAgICAgICAgICAgICAgICBXLFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaW5jXCIpLFxuICAgICAgICAgICAgICAgICAgICBXXG4gICAgICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpXCIsIGMuaTMyX2FkZChjLmdldExvY2FsKFwiaVwiKSwgYy5pMzJfY29uc3QoMSkpKSxcbiAgICAgICAgICAgICAgICBjLmJyKDApXG4gICAgICAgICAgICApKVxuICAgICAgICApO1xuICAgIH1cblxuXG5cbiAgICBmdW5jdGlvbiBidWlsZFByZXBhcmVMYWdyYW5nZUV2YWx1YXRpb24oKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4K1wiX3ByZXBhcmVMYWdyYW5nZUV2YWx1YXRpb25cIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwQnVmZjFcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwQnVmZjJcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJuXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiZmlyc3RcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJpbmNcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ0b3RhbEJpdHNcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJpZHgxXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiaWR4MlwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcImlcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJwU2hpZnRUb01cIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJwU0NvbnN0XCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgVyA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOGYpKTtcbiAgICAgICAgY29uc3QgVSA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOGcpKTtcblxuICAgICAgICBmLmFkZENvZGUoXG5cbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJwU2hpZnRUb01cIixcbiAgICAgICAgICAgICAgICBjLmkzMl9hZGQoXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KFNISUZUX1RPX00pLFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9tdWwoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwidG90YWxCaXRzXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QobjhmKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJwU0NvbnN0XCIsXG4gICAgICAgICAgICAgICAgYy5pMzJfYWRkKFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdChTQ09OU1QpLFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9tdWwoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwidG90YWxCaXRzXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QobjhmKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSxcblxuXG4gICAgICAgICAgICBjLmNhbGwoIGZQcmVmaXggKyBcIl9jb3B5XCIsIGMuZ2V0TG9jYWwoXCJmaXJzdFwiKSwgVyksXG4gICAgICAgICAgICBjLnNldExvY2FsKFwiaVwiLCBjLmkzMl9jb25zdCgwKSksXG4gICAgICAgICAgICBjLmJsb2NrKGMubG9vcChcbiAgICAgICAgICAgICAgICBjLmJyX2lmKFxuICAgICAgICAgICAgICAgICAgICAxLFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9lcShcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcIm5cIilcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFxuICAgICAgICAgICAgICAgICAgICBcImlkeDFcIixcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfYWRkKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInBCdWZmMVwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX211bChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaVwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdChuOGcpXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApLFxuXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcbiAgICAgICAgICAgICAgICAgICAgXCJpZHgyXCIsXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX2FkZChcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwQnVmZjJcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9tdWwoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImlcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QobjhnKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKSxcblxuXG4gICAgICAgICAgICAgICAgYy5jYWxsKFxuICAgICAgICAgICAgICAgICAgICBvcEd0aW1lc0YsXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpZHgxXCIpLFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicFNoaWZ0VG9NXCIpLFxuICAgICAgICAgICAgICAgICAgICBVXG4gICAgICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgICAgIGMuY2FsbChcbiAgICAgICAgICAgICAgICAgICAgZ1ByZWZpeCArIFwiX3N1YlwiLFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaWR4MlwiKSxcbiAgICAgICAgICAgICAgICAgICAgVSxcbiAgICAgICAgICAgICAgICAgICAgVVxuICAgICAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgICAgICBjLmNhbGwoXG4gICAgICAgICAgICAgICAgICAgIGdQcmVmaXggKyBcIl9zdWJcIixcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImlkeDFcIiksXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpZHgyXCIpLFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaWR4MlwiKSxcbiAgICAgICAgICAgICAgICApLFxuXG4gICAgICAgICAgICAgICAgYy5jYWxsKFxuICAgICAgICAgICAgICAgICAgICBvcEd0aW1lc0YsXG4gICAgICAgICAgICAgICAgICAgIFUsXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwU0NvbnN0XCIpLFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaWR4MVwiKSxcbiAgICAgICAgICAgICAgICApLFxuXG4gICAgICAgICAgICAgICAgYy5jYWxsKFxuICAgICAgICAgICAgICAgICAgICBvcEd0aW1lc0YsXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpZHgyXCIpLFxuICAgICAgICAgICAgICAgICAgICBXLFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaWR4MlwiKSxcbiAgICAgICAgICAgICAgICApLFxuXG4gICAgICAgICAgICAgICAgYy5jYWxsKFxuICAgICAgICAgICAgICAgICAgICBmUHJlZml4ICsgXCJfbXVsXCIsXG4gICAgICAgICAgICAgICAgICAgIFcsXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpbmNcIiksXG4gICAgICAgICAgICAgICAgICAgIFdcbiAgICAgICAgICAgICAgICApLFxuXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcImlcIiwgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJpXCIpLCBjLmkzMl9jb25zdCgxKSkpLFxuICAgICAgICAgICAgICAgIGMuYnIoMClcbiAgICAgICAgICAgICkpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYnVpbGRGRlRNaXgoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4K1wiX2ZmdE1peFwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInBCdWZmXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiblwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcImV4cFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcIm5Hcm91cHNcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJuUGVyR3JvdXBcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJuUGVyR3JvdXBEaXYyXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwicGFpck9mZnNldFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcImlkeDFcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJpZHgyXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiaVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcImpcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJwd21cIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCBXID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44ZikpO1xuICAgICAgICBjb25zdCBUID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44ZykpO1xuICAgICAgICBjb25zdCBVID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44ZykpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJuUGVyR3JvdXBcIiwgYy5pMzJfc2hsKGMuaTMyX2NvbnN0KDEpLCBjLmdldExvY2FsKFwiZXhwXCIpKSksXG4gICAgICAgICAgICBjLnNldExvY2FsKFwiblBlckdyb3VwRGl2MlwiLCBjLmkzMl9zaHJfdShjLmdldExvY2FsKFwiblBlckdyb3VwXCIpLCBjLmkzMl9jb25zdCgxKSkpLFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcIm5Hcm91cHNcIiwgYy5pMzJfc2hyX3UoYy5nZXRMb2NhbChcIm5cIiksIGMuZ2V0TG9jYWwoXCJleHBcIikpKSxcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJwYWlyT2Zmc2V0XCIsIGMuaTMyX211bChjLmdldExvY2FsKFwiblBlckdyb3VwRGl2MlwiKSwgYy5pMzJfY29uc3QobjhnKSkpLFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcInB3bVwiLFxuICAgICAgICAgICAgICAgIGMuaTMyX2FkZChcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QoUk9PVHMpLFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9tdWwoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiZXhwXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QobjhmKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpXCIsIGMuaTMyX2NvbnN0KDApKSxcbiAgICAgICAgICAgIGMuYmxvY2soYy5sb29wKFxuICAgICAgICAgICAgICAgIGMuYnJfaWYoXG4gICAgICAgICAgICAgICAgICAgIDEsXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX2VxKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImlcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwibkdyb3Vwc1wiKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBjLmNhbGwoIGZQcmVmaXggKyBcIl9vbmVcIiwgVyksXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcImpcIiwgYy5pMzJfY29uc3QoMCkpLFxuICAgICAgICAgICAgICAgIGMuYmxvY2soYy5sb29wKFxuICAgICAgICAgICAgICAgICAgICBjLmJyX2lmKFxuICAgICAgICAgICAgICAgICAgICAgICAgMSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2VxKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJqXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJuUGVyR3JvdXBEaXYyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiaWR4MVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfYWRkKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwQnVmZlwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9tdWwoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2FkZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX211bChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaVwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiblBlckdyb3VwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImpcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QobjhnKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgICAgICAgICBjLnNldExvY2FsKFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJpZHgyXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9hZGQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImlkeDFcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInBhaXJPZmZzZXRcIilcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgICAgICAgICBjLmNhbGwoXG4gICAgICAgICAgICAgICAgICAgICAgICBvcEd0aW1lc0YsXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaWR4MlwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFcsXG4gICAgICAgICAgICAgICAgICAgICAgICBUXG4gICAgICAgICAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgICAgICAgICAgYy5jYWxsKFxuICAgICAgICAgICAgICAgICAgICAgICAgZ1ByZWZpeCArIFwiX2NvcHlcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpZHgxXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgVVxuICAgICAgICAgICAgICAgICAgICApLFxuXG4gICAgICAgICAgICAgICAgICAgIGMuY2FsbChcbiAgICAgICAgICAgICAgICAgICAgICAgIGdQcmVmaXggKyBcIl9hZGRcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIFUsXG4gICAgICAgICAgICAgICAgICAgICAgICBULFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImlkeDFcIiksXG4gICAgICAgICAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgICAgICAgICAgYy5jYWxsKFxuICAgICAgICAgICAgICAgICAgICAgICAgZ1ByZWZpeCArIFwiX3N1YlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgVSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFQsXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaWR4MlwiKSxcbiAgICAgICAgICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgICAgICAgICBjLmNhbGwoXG4gICAgICAgICAgICAgICAgICAgICAgICBmUHJlZml4ICsgXCJfbXVsXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBXLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInB3bVwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFcsXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJqXCIsIGMuaTMyX2FkZChjLmdldExvY2FsKFwialwiKSwgYy5pMzJfY29uc3QoMSkpKSxcbiAgICAgICAgICAgICAgICAgICAgYy5icigwKVxuICAgICAgICAgICAgICAgICkpLFxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpXCIsIGMuaTMyX2FkZChjLmdldExvY2FsKFwiaVwiKSwgYy5pMzJfY29uc3QoMSkpKSxcbiAgICAgICAgICAgICAgICBjLmJyKDApXG4gICAgICAgICAgICApKVxuICAgICAgICApO1xuICAgIH1cblxuXG4gICAgLy8gUmV2ZXJzZSBhbGwgYW5kIG11bHRpcGx5IGJ5IGZhY3RvclxuICAgIGZ1bmN0aW9uIGJ1aWxkRkZURmluYWwoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4K1wiX2ZmdEZpbmFsXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicEJ1ZmZcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJuXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiZmFjdG9yXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiaWR4MVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcImlkeDJcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJpXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwibmRpdjJcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCBUID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44ZykpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJuZGl2MlwiLCBjLmkzMl9zaHJfdShjLmdldExvY2FsKFwiblwiKSwgYy5pMzJfY29uc3QoMSkpKSxcbiAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgYy5pMzJfYW5kKFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiblwiKSxcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QoMSlcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGMuY2FsbChcbiAgICAgICAgICAgICAgICAgICAgb3BHdGltZXNGLFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9hZGQoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicEJ1ZmZcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9tdWwoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcIm5kaXYyXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KG44ZylcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImZhY3RvclwiKSxcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfYWRkKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInBCdWZmXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfbXVsKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJuZGl2MlwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdChuOGcpXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjLnNldExvY2FsKFwiaVwiLCBjLmkzMl9jb25zdCgwKSksXG4gICAgICAgICAgICBjLmJsb2NrKGMubG9vcChcbiAgICAgICAgICAgICAgICBjLmJyX2lmKFxuICAgICAgICAgICAgICAgICAgICAxLFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9nZV91KFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImlcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwibmRpdjJcIilcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFxuICAgICAgICAgICAgICAgICAgICBcImlkeDFcIixcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfYWRkKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInBCdWZmXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfbXVsKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KG44ZylcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFxuICAgICAgICAgICAgICAgICAgICBcImlkeDJcIixcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfYWRkKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInBCdWZmXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfbXVsKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX3N1YihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfc3ViKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcIm5cIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdCgxKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QobjhnKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgICAgIGMuY2FsbChcbiAgICAgICAgICAgICAgICAgICAgb3BHdGltZXNGLFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaWR4MlwiKSxcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImZhY3RvclwiKSxcbiAgICAgICAgICAgICAgICAgICAgVFxuICAgICAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgICAgICBjLmNhbGwoXG4gICAgICAgICAgICAgICAgICAgIG9wR3RpbWVzRixcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImlkeDFcIiksXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJmYWN0b3JcIiksXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpZHgyXCIpLFxuICAgICAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgICAgICBjLmNhbGwoXG4gICAgICAgICAgICAgICAgICAgIGdQcmVmaXggKyBcIl9jb3B5XCIsXG4gICAgICAgICAgICAgICAgICAgIFQsXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpZHgxXCIpLFxuICAgICAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFwiaVwiLCBjLmkzMl9hZGQoYy5nZXRMb2NhbChcImlcIiksIGMuaTMyX2NvbnN0KDEpKSksXG4gICAgICAgICAgICAgICAgYy5icigwKVxuICAgICAgICAgICAgKSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBidWlsZFJldigpO1xuICAgIGJ1aWxkUmV2ZXJzZVBlcm11dGF0aW9uKCk7XG4gICAgYnVpbGRGaW5hbEludmVyc2UoKTtcbiAgICBidWlsZFJhd0ZGVCgpO1xuICAgIGJ1aWxkTG9nMigpO1xuICAgIGJ1aWxkRkZUKCk7XG4gICAgYnVpbGRJRkZUKCk7XG4gICAgYnVpbGRGRlRKb2luKCk7XG4gICAgYnVpbGRGRlRKb2luRXh0KCk7XG4gICAgYnVpbGRGRlRKb2luRXh0SW52KCk7XG4gICAgYnVpbGRGRlRNaXgoKTtcbiAgICBidWlsZEZGVEZpbmFsKCk7XG4gICAgYnVpbGRQcmVwYXJlTGFncmFuZ2VFdmFsdWF0aW9uKCk7XG5cbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4K1wiX2ZmdFwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4K1wiX2lmZnRcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCtcIl9yYXdmZnRcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCtcIl9mZnRKb2luXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXgrXCJfZmZ0Sm9pbkV4dFwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4K1wiX2ZmdEpvaW5FeHRJbnZcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCtcIl9mZnRNaXhcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCtcIl9mZnRGaW5hbFwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4K1wiX3ByZXBhcmVMYWdyYW5nZUV2YWx1YXRpb25cIik7XG5cbn07XG5cbi8qXG4gICAgQ29weXJpZ2h0IDIwMTkgMEtJTVMgYXNzb2NpYXRpb24uXG5cbiAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB3YXNtc25hcmsgKFdlYiBBc3NlbWJseSB6a1NuYXJrIFByb3ZlcikuXG5cbiAgICB3YXNtc25hcmsgaXMgYSBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0XG4gICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxuICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG5cbiAgICB3YXNtc25hcmsgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVRcbiAgICBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFlcbiAgICBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWNcbiAgICBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG5cbiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICAgIGFsb25nIHdpdGggd2FzbXNuYXJrLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuKi9cblxudmFyIGJ1aWxkX3BvbCA9IGZ1bmN0aW9uIGJ1aWxkUG9sKG1vZHVsZSwgcHJlZml4LCBwcmVmaXhGaWVsZCkge1xuXG4gICAgY29uc3QgbjY0ID0gbW9kdWxlLm1vZHVsZXNbcHJlZml4RmllbGRdLm42NDtcbiAgICBjb25zdCBuOCA9IG42NCo4O1xuXG5cbiAgICBmdW5jdGlvbiBidWlsZFplcm8oKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4K1wiX3plcm9cIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJweFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcIm5cIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJsYXN0cFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcInBcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLnNldExvY2FsKFwicFwiLCBjLmdldExvY2FsKFwicHhcIikpLFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcbiAgICAgICAgICAgICAgICBcImxhc3RwXCIsXG4gICAgICAgICAgICAgICAgYy5pMzJfYWRkKFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicHhcIiksXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX211bChcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJuXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QobjgpXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYy5ibG9jayhjLmxvb3AoXG4gICAgICAgICAgICAgICAgYy5icl9pZihcbiAgICAgICAgICAgICAgICAgICAgMSxcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfZXEoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicFwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJsYXN0cFwiKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl96ZXJvXCIsIGMuZ2V0TG9jYWwoXCJwXCIpKSxcbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFwicFwiLCBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInBcIiksIGMuaTMyX2NvbnN0KG44KSkpLFxuICAgICAgICAgICAgICAgIGMuYnIoMClcbiAgICAgICAgICAgICkpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYnVpbGRDb25zdHJ1Y3RMQygpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrXCJfY29uc3RydWN0TENcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwcG9seW5vbWlhbHNcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwc2lnbmFsc1wiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcIm5TaWduYWxzXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicHJlc1wiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcImlcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJqXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwicHBcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJwc1wiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcInBkXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwibmNvZWZzXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgYXV4ID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44KSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcImlcIiwgYy5pMzJfY29uc3QoMCkpLFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcInBwXCIsIGMuZ2V0TG9jYWwoXCJwcG9seW5vbWlhbHNcIikpLFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcInBzXCIsIGMuZ2V0TG9jYWwoXCJwc2lnbmFsc1wiKSksXG4gICAgICAgICAgICBjLmJsb2NrKGMubG9vcChcbiAgICAgICAgICAgICAgICBjLmJyX2lmKFxuICAgICAgICAgICAgICAgICAgICAxLFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9lcShcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcIm5TaWduYWxzXCIpXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApLFxuXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcIm5jb2Vmc1wiLCBjLmkzMl9sb2FkKGMuZ2V0TG9jYWwoXCJwcFwiKSkpLFxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJwcFwiLCBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInBwXCIpLCBjLmkzMl9jb25zdCg0KSkpLFxuXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcImpcIiwgYy5pMzJfY29uc3QoMCkpLFxuICAgICAgICAgICAgICAgIGMuYmxvY2soYy5sb29wKFxuICAgICAgICAgICAgICAgICAgICBjLmJyX2lmKFxuICAgICAgICAgICAgICAgICAgICAgICAgMSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2VxKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJqXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJuY29lZnNcIilcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgICAgICAgICBjLnNldExvY2FsKFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJwZFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfYWRkKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwcmVzXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX211bChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfbG9hZChjLmdldExvY2FsKFwicHBcIikpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdChuOClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcInBwXCIsIGMuaTMyX2FkZChjLmdldExvY2FsKFwicHBcIiksIGMuaTMyX2NvbnN0KDQpKSksXG5cblxuICAgICAgICAgICAgICAgICAgICBjLmNhbGwoXG4gICAgICAgICAgICAgICAgICAgICAgICBwcmVmaXhGaWVsZCArIFwiX211bFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInBzXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInBwXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYXV4XG4gICAgICAgICAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgICAgICAgICAgYy5jYWxsKFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJlZml4RmllbGQgKyBcIl9hZGRcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIGF1eCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwZFwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwZFwiKVxuICAgICAgICAgICAgICAgICAgICApLFxuXG4gICAgICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJwcFwiLCBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInBwXCIpLCBjLmkzMl9jb25zdChuOCkpKSxcbiAgICAgICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcImpcIiwgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJqXCIpLCBjLmkzMl9jb25zdCgxKSkpLFxuICAgICAgICAgICAgICAgICAgICBjLmJyKDApXG4gICAgICAgICAgICAgICAgKSksXG5cbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFwicHNcIiwgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwc1wiKSwgYy5pMzJfY29uc3QobjgpKSksXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcImlcIiwgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJpXCIpLCBjLmkzMl9jb25zdCgxKSkpLFxuICAgICAgICAgICAgICAgIGMuYnIoMClcbiAgICAgICAgICAgICkpXG4gICAgICAgICk7XG5cbiAgICB9XG5cbiAgICBidWlsZFplcm8oKTtcbiAgICBidWlsZENvbnN0cnVjdExDKCk7XG5cblxuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl96ZXJvXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9jb25zdHJ1Y3RMQ1wiKTtcblxuICAgIHJldHVybiBwcmVmaXg7XG5cblxuXG5cbn07XG5cbnZhciBidWlsZF9xYXAgPSBmdW5jdGlvbiBidWlsZFFBUChtb2R1bGUsIHByZWZpeCwgcHJlZml4RmllbGQpIHtcblxuICAgIGNvbnN0IG42NCA9IG1vZHVsZS5tb2R1bGVzW3ByZWZpeEZpZWxkXS5uNjQ7XG4gICAgY29uc3QgbjggPSBuNjQqODtcblxuXG4gICAgZnVuY3Rpb24gYnVpbGRCdWlsZEFCQygpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrXCJfYnVpbGRBQkNcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwQ29lZnNcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJuQ29lZnNcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwV2l0bmVzc1wiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInBBXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicEJcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwQ1wiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcIm9mZnNldE91dFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcIm5PdXRcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJvZmZzZXRXaXRuZXNzXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwibldpdG5lc3NcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJpdFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcIml0YVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcIml0YlwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcImxhc3RcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJtXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiY1wiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcInNcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJwT3V0XCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgYXV4ID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44KSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuXG4gICAgICAgICAgICAvLyBTZXQgb3V0cHV0IGEgYW5kIGIgdG8gMFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcIml0YVwiLCBjLmdldExvY2FsKFwicEFcIikpLFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcIml0YlwiLCBjLmdldExvY2FsKFwicEJcIikpLFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcbiAgICAgICAgICAgICAgICBcImxhc3RcIixcbiAgICAgICAgICAgICAgICBjLmkzMl9hZGQoXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwQVwiKSxcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfbXVsKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcIm5PdXRcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdChuOClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjLmJsb2NrKGMubG9vcChcbiAgICAgICAgICAgICAgICBjLmJyX2lmKFxuICAgICAgICAgICAgICAgICAgICAxLFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9lcShcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpdGFcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwibGFzdFwiKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl96ZXJvXCIsIGMuZ2V0TG9jYWwoXCJpdGFcIikpLFxuICAgICAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX3plcm9cIiwgYy5nZXRMb2NhbChcIml0YlwiKSksXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcIml0YVwiLCBjLmkzMl9hZGQoYy5nZXRMb2NhbChcIml0YVwiKSwgYy5pMzJfY29uc3QobjgpKSksXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcIml0YlwiLCBjLmkzMl9hZGQoYy5nZXRMb2NhbChcIml0YlwiKSwgYy5pMzJfY29uc3QobjgpKSksXG4gICAgICAgICAgICAgICAgYy5icigwKVxuICAgICAgICAgICAgKSksXG5cblxuICAgICAgICAgICAgYy5zZXRMb2NhbChcIml0XCIsIGMuZ2V0TG9jYWwoXCJwQ29lZnNcIikpLFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcbiAgICAgICAgICAgICAgICBcImxhc3RcIixcbiAgICAgICAgICAgICAgICBjLmkzMl9hZGQoXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwQ29lZnNcIiksXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX211bChcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJuQ29lZnNcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdChuOCsxMilcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjLmJsb2NrKGMubG9vcChcbiAgICAgICAgICAgICAgICBjLmJyX2lmKFxuICAgICAgICAgICAgICAgICAgICAxLFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9lcShcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpdFwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJsYXN0XCIpXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXG4gICAgICAgICAgICAgICAgICAgIFwic1wiLFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9sb2FkKGMuZ2V0TG9jYWwoXCJpdFwiKSwgOClcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX29yKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfbHRfdShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwic1wiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwib2Zmc2V0V2l0bmVzc1wiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9nZV91KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJzXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2FkZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcIm9mZnNldFdpdG5lc3NcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJuV2l0bmVzc1wiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLmMuc2V0TG9jYWwoXCJpdFwiLCBjLmkzMl9hZGQoYy5nZXRMb2NhbChcIml0XCIpLCBjLmkzMl9jb25zdChuOCsxMikpKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLmMuYnIoMSlcbiAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFxuICAgICAgICAgICAgICAgICAgICBcIm1cIixcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfbG9hZChjLmdldExvY2FsKFwiaXRcIikpXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9lcShjLmdldExvY2FsKFwibVwiKSwgYy5pMzJfY29uc3QoMCkpLFxuICAgICAgICAgICAgICAgICAgICBjLnNldExvY2FsKFwicE91dFwiLCBjLmdldExvY2FsKFwicEFcIikpLFxuICAgICAgICAgICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfZXEoYy5nZXRMb2NhbChcIm1cIiksIGMuaTMyX2NvbnN0KDEpKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJwT3V0XCIsIGMuZ2V0TG9jYWwoXCJwQlwiKSksXG4gICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uYy5zZXRMb2NhbChcIml0XCIsIGMuaTMyX2FkZChjLmdldExvY2FsKFwiaXRcIiksIGMuaTMyX2NvbnN0KG44KzEyKSkpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLmMuYnIoMSlcbiAgICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcbiAgICAgICAgICAgICAgICAgICAgXCJjXCIsXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX2xvYWQoYy5nZXRMb2NhbChcIml0XCIpLCA0KVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfb3IoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9sdF91KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJjXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJvZmZzZXRPdXRcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfZ2VfdShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiY1wiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9hZGQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJvZmZzZXRPdXRcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJuT3V0XCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgLi4uYy5zZXRMb2NhbChcIml0XCIsIGMuaTMyX2FkZChjLmdldExvY2FsKFwiaXRcIiksIGMuaTMyX2NvbnN0KG44KzEyKSkpLFxuICAgICAgICAgICAgICAgICAgICAgICAgLi4uYy5icigxKVxuICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFxuICAgICAgICAgICAgICAgICAgICBcInBPdXRcIixcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfYWRkKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInBPdXRcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9tdWwoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfc3ViKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiY1wiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcIm9mZnNldE91dFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QobjgpXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGMuY2FsbChcbiAgICAgICAgICAgICAgICAgICAgcHJlZml4RmllbGQgKyBcIl9tdWxcIixcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfYWRkKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInBXaXRuZXNzXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfbXVsKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX3N1YihjLmdldExvY2FsKFwic1wiKSwgYy5nZXRMb2NhbChcIm9mZnNldFdpdG5lc3NcIikpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KG44KVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9hZGQoIGMuZ2V0TG9jYWwoXCJpdFwiKSwgYy5pMzJfY29uc3QoMTIpKSxcbiAgICAgICAgICAgICAgICAgICAgYXV4XG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBjLmNhbGwoXG4gICAgICAgICAgICAgICAgICAgIHByZWZpeEZpZWxkICsgXCJfYWRkXCIsXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwT3V0XCIpLFxuICAgICAgICAgICAgICAgICAgICBhdXgsXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwT3V0XCIpLFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcIml0XCIsIGMuaTMyX2FkZChjLmdldExvY2FsKFwiaXRcIiksIGMuaTMyX2NvbnN0KG44KzEyKSkpLFxuICAgICAgICAgICAgICAgIGMuYnIoMClcbiAgICAgICAgICAgICkpLFxuXG4gICAgICAgICAgICBjLnNldExvY2FsKFwiaXRhXCIsIGMuZ2V0TG9jYWwoXCJwQVwiKSksXG4gICAgICAgICAgICBjLnNldExvY2FsKFwiaXRiXCIsIGMuZ2V0TG9jYWwoXCJwQlwiKSksXG4gICAgICAgICAgICBjLnNldExvY2FsKFwiaXRcIiwgYy5nZXRMb2NhbChcInBDXCIpKSxcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXG4gICAgICAgICAgICAgICAgXCJsYXN0XCIsXG4gICAgICAgICAgICAgICAgYy5pMzJfYWRkKFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicEFcIiksXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX211bChcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJuT3V0XCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QobjgpXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYy5ibG9jayhjLmxvb3AoXG4gICAgICAgICAgICAgICAgYy5icl9pZihcbiAgICAgICAgICAgICAgICAgICAgMSxcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfZXEoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaXRhXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImxhc3RcIilcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgYy5jYWxsKFxuICAgICAgICAgICAgICAgICAgICBwcmVmaXhGaWVsZCArIFwiX211bFwiLFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaXRhXCIpLFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaXRiXCIpLFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaXRcIilcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpdGFcIiwgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJpdGFcIiksIGMuaTMyX2NvbnN0KG44KSkpLFxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpdGJcIiwgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJpdGJcIiksIGMuaTMyX2NvbnN0KG44KSkpLFxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpdFwiLCBjLmkzMl9hZGQoYy5nZXRMb2NhbChcIml0XCIpLCBjLmkzMl9jb25zdChuOCkpKSxcbiAgICAgICAgICAgICAgICBjLmJyKDApXG4gICAgICAgICAgICApKSxcblxuICAgICAgICApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGJ1aWxkSm9pbkFCQygpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrXCJfam9pbkFCQ1wiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInBBXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicEJcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwQ1wiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcIm5cIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwUFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcIml0YVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcIml0YlwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcIml0Y1wiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcIml0cFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcImxhc3RcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCBhdXggPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLnNldExvY2FsKFwiaXRhXCIsIGMuZ2V0TG9jYWwoXCJwQVwiKSksXG4gICAgICAgICAgICBjLnNldExvY2FsKFwiaXRiXCIsIGMuZ2V0TG9jYWwoXCJwQlwiKSksXG4gICAgICAgICAgICBjLnNldExvY2FsKFwiaXRjXCIsIGMuZ2V0TG9jYWwoXCJwQ1wiKSksXG4gICAgICAgICAgICBjLnNldExvY2FsKFwiaXRwXCIsIGMuZ2V0TG9jYWwoXCJwUFwiKSksXG4gICAgICAgICAgICBjLnNldExvY2FsKFxuICAgICAgICAgICAgICAgIFwibGFzdFwiLFxuICAgICAgICAgICAgICAgIGMuaTMyX2FkZChcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInBBXCIpLFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9tdWwoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiblwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KG44KVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGMuYmxvY2soYy5sb29wKFxuICAgICAgICAgICAgICAgIGMuYnJfaWYoXG4gICAgICAgICAgICAgICAgICAgIDEsXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX2VxKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcIml0YVwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJsYXN0XCIpXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGMuY2FsbChcbiAgICAgICAgICAgICAgICAgICAgcHJlZml4RmllbGQgKyBcIl9tdWxcIixcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcIml0YVwiKSxcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcIml0YlwiKSxcbiAgICAgICAgICAgICAgICAgICAgYXV4XG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBjLmNhbGwoXG4gICAgICAgICAgICAgICAgICAgIHByZWZpeEZpZWxkICsgXCJfc3ViXCIsXG4gICAgICAgICAgICAgICAgICAgIGF1eCxcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcIml0Y1wiKSxcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcIml0cFwiKSxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpdGFcIiwgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJpdGFcIiksIGMuaTMyX2NvbnN0KG44KSkpLFxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpdGJcIiwgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJpdGJcIiksIGMuaTMyX2NvbnN0KG44KSkpLFxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpdGNcIiwgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJpdGNcIiksIGMuaTMyX2NvbnN0KG44KSkpLFxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpdHBcIiwgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJpdHBcIiksIGMuaTMyX2NvbnN0KG44KSkpLFxuICAgICAgICAgICAgICAgIGMuYnIoMClcbiAgICAgICAgICAgICkpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYnVpbGRCYXRjaEFkZCgpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrXCJfYmF0Y2hBZGRcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwYVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInBiXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiblwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInByXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiaXRhXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiaXRiXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiaXRyXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwibGFzdFwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpdGFcIiwgYy5nZXRMb2NhbChcInBhXCIpKSxcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpdGJcIiwgYy5nZXRMb2NhbChcInBiXCIpKSxcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpdHJcIiwgYy5nZXRMb2NhbChcInByXCIpKSxcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXG4gICAgICAgICAgICAgICAgXCJsYXN0XCIsXG4gICAgICAgICAgICAgICAgYy5pMzJfYWRkKFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicGFcIiksXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX211bChcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJuXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QobjgpXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYy5ibG9jayhjLmxvb3AoXG4gICAgICAgICAgICAgICAgYy5icl9pZihcbiAgICAgICAgICAgICAgICAgICAgMSxcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfZXEoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaXRhXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImxhc3RcIilcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgYy5jYWxsKFxuICAgICAgICAgICAgICAgICAgICBwcmVmaXhGaWVsZCArIFwiX2FkZFwiLFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaXRhXCIpLFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaXRiXCIpLFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaXRyXCIpLFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcIml0YVwiLCBjLmkzMl9hZGQoYy5nZXRMb2NhbChcIml0YVwiKSwgYy5pMzJfY29uc3QobjgpKSksXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcIml0YlwiLCBjLmkzMl9hZGQoYy5nZXRMb2NhbChcIml0YlwiKSwgYy5pMzJfY29uc3QobjgpKSksXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcIml0clwiLCBjLmkzMl9hZGQoYy5nZXRMb2NhbChcIml0clwiKSwgYy5pMzJfY29uc3QobjgpKSksXG4gICAgICAgICAgICAgICAgYy5icigwKVxuICAgICAgICAgICAgKSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBidWlsZEJ1aWxkQUJDKCk7XG4gICAgYnVpbGRKb2luQUJDKCk7XG4gICAgYnVpbGRCYXRjaEFkZCgpO1xuXG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX2J1aWxkQUJDXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9qb2luQUJDXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9iYXRjaEFkZFwiKTtcblxuICAgIHJldHVybiBwcmVmaXg7XG5cbn07XG5cbi8qXG4gICAgQ29weXJpZ2h0IDIwMTkgMEtJTVMgYXNzb2NpYXRpb24uXG5cbiAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB3YXNtc25hcmsgKFdlYiBBc3NlbWJseSB6a1NuYXJrIFByb3ZlcikuXG5cbiAgICB3YXNtc25hcmsgaXMgYSBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0XG4gICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxuICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG5cbiAgICB3YXNtc25hcmsgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVRcbiAgICBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFlcbiAgICBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWNcbiAgICBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG5cbiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICAgIGFsb25nIHdpdGggd2FzbXNuYXJrLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuKi9cblxudmFyIGJ1aWxkX2FwcGx5a2V5ID0gZnVuY3Rpb24gYnVpbGRBcHBseUtleShtb2R1bGUsIGZuTmFtZSwgZ1ByZWZpeCwgZnJQcmVmaXgsIHNpemVHSW4sIHNpemVHT3V0LCBzaXplRiwgb3BHdGltZXNGKSB7XG5cbiAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKGZuTmFtZSk7XG4gICAgZi5hZGRQYXJhbShcInBJblwiLCBcImkzMlwiKTtcbiAgICBmLmFkZFBhcmFtKFwiblwiLCBcImkzMlwiKTtcbiAgICBmLmFkZFBhcmFtKFwicEZpcnN0XCIsIFwiaTMyXCIpO1xuICAgIGYuYWRkUGFyYW0oXCJwSW5jXCIsIFwiaTMyXCIpO1xuICAgIGYuYWRkUGFyYW0oXCJwT3V0XCIsIFwiaTMyXCIpO1xuICAgIGYuYWRkTG9jYWwoXCJwT2xkRnJlZVwiLCBcImkzMlwiKTtcbiAgICBmLmFkZExvY2FsKFwiaVwiLCBcImkzMlwiKTtcbiAgICBmLmFkZExvY2FsKFwicEZyb21cIiwgXCJpMzJcIik7XG4gICAgZi5hZGRMb2NhbChcInBUb1wiLCBcImkzMlwiKTtcblxuICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICBjb25zdCB0ID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKHNpemVGKSk7XG5cbiAgICBmLmFkZENvZGUoXG4gICAgICAgIGMuc2V0TG9jYWwoXCJwRnJvbVwiLCBjLmdldExvY2FsKFwicEluXCIpKSxcbiAgICAgICAgYy5zZXRMb2NhbChcInBUb1wiLCBjLmdldExvY2FsKFwicE91dFwiKSksXG4gICAgKTtcblxuICAgIC8vIHQgPSBmaXJzdFxuICAgIGYuYWRkQ29kZShcbiAgICAgICAgYy5jYWxsKFxuICAgICAgICAgICAgZnJQcmVmaXggKyBcIl9jb3B5XCIsXG4gICAgICAgICAgICBjLmdldExvY2FsKFwicEZpcnN0XCIpLFxuICAgICAgICAgICAgdFxuICAgICAgICApXG4gICAgKTtcbiAgICBmLmFkZENvZGUoXG4gICAgICAgIGMuc2V0TG9jYWwoXCJpXCIsIGMuaTMyX2NvbnN0KDApKSxcbiAgICAgICAgYy5ibG9jayhjLmxvb3AoXG4gICAgICAgICAgICBjLmJyX2lmKDEsIGMuaTMyX2VxICggYy5nZXRMb2NhbChcImlcIiksIGMuZ2V0TG9jYWwoXCJuXCIpICkpLFxuXG4gICAgICAgICAgICBjLmNhbGwoXG4gICAgICAgICAgICAgICAgb3BHdGltZXNGLFxuICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwRnJvbVwiKSxcbiAgICAgICAgICAgICAgICB0LFxuICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwVG9cIilcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjLnNldExvY2FsKFwicEZyb21cIiwgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwRnJvbVwiKSwgYy5pMzJfY29uc3Qoc2l6ZUdJbikpKSxcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJwVG9cIiwgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwVG9cIiksIGMuaTMyX2NvbnN0KHNpemVHT3V0KSkpLFxuXG4gICAgICAgICAgICAvLyB0ID0gdCogaW5jXG4gICAgICAgICAgICBjLmNhbGwoXG4gICAgICAgICAgICAgICAgZnJQcmVmaXggKyBcIl9tdWxcIixcbiAgICAgICAgICAgICAgICB0LFxuICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwSW5jXCIpLFxuICAgICAgICAgICAgICAgIHRcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjLnNldExvY2FsKFwiaVwiLCBjLmkzMl9hZGQoYy5nZXRMb2NhbChcImlcIiksIGMuaTMyX2NvbnN0KDEpKSksXG4gICAgICAgICAgICBjLmJyKDApXG4gICAgICAgICkpXG4gICAgKTtcblxuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihmbk5hbWUpO1xuXG59O1xuXG5jb25zdCB1dGlscyQyID0gdXRpbHMkNjtcblxuY29uc3QgYnVpbGRGMW0kMSA9YnVpbGRfZjFtO1xuY29uc3QgYnVpbGRGMSQxID1idWlsZF9mMTtcbmNvbnN0IGJ1aWxkRjJtJDEgPWJ1aWxkX2YybTtcbmNvbnN0IGJ1aWxkRjNtJDEgPWJ1aWxkX2YzbTtcbmNvbnN0IGJ1aWxkQ3VydmUkMSA9YnVpbGRfY3VydmVfamFjb2JpYW5fYTA7XG5jb25zdCBidWlsZEZGVCQyID0gYnVpbGRfZmZ0O1xuY29uc3QgYnVpbGRQb2wkMSA9IGJ1aWxkX3BvbDtcbmNvbnN0IGJ1aWxkUUFQJDEgPSBidWlsZF9xYXA7XG5jb25zdCBidWlsZEFwcGx5S2V5JDEgPSBidWlsZF9hcHBseWtleTtcbmNvbnN0IHsgYml0TGVuZ3RoOiBiaXRMZW5ndGgkMiwgbW9kSW52LCBpc09kZDogaXNPZGQkMSwgaXNOZWdhdGl2ZTogaXNOZWdhdGl2ZSQyIH0gPSBiaWdpbnQ7XG5cbnZhciBidWlsZF9ibjEyOCA9IGZ1bmN0aW9uIGJ1aWxkQk4xMjgobW9kdWxlLCBfcHJlZml4KSB7XG5cbiAgICBjb25zdCBwcmVmaXggPSBfcHJlZml4IHx8IFwiYm4xMjhcIjtcblxuICAgIGlmIChtb2R1bGUubW9kdWxlc1twcmVmaXhdKSByZXR1cm4gcHJlZml4OyAgLy8gYWxyZWFkeSBidWlsZGVkXG5cbiAgICBjb25zdCBxID0gMjE4ODgyNDI4NzE4MzkyNzUyMjIyNDY0MDU3NDUyNTcyNzUwODg2OTYzMTExNTcyOTc4MjM2NjI2ODkwMzc4OTQ2NDUyMjYyMDg1ODNuO1xuICAgIGNvbnN0IHIgPSAyMTg4ODI0Mjg3MTgzOTI3NTIyMjI0NjQwNTc0NTI1NzI3NTA4ODU0ODM2NDQwMDQxNjAzNDM0MzY5ODIwNDE4NjU3NTgwODQ5NTYxN247XG5cblxuICAgIGNvbnN0IG42NCA9IE1hdGguZmxvb3IoKGJpdExlbmd0aCQyKHEgLSAxbikgLSAxKS82NCkgKzE7XG4gICAgY29uc3QgbjggPSBuNjQqODtcbiAgICBjb25zdCBmcnNpemUgPSBuODtcbiAgICBjb25zdCBmMXNpemUgPSBuODtcbiAgICBjb25zdCBmMnNpemUgPSBmMXNpemUgKiAyO1xuICAgIGNvbnN0IGZ0c2l6ZSA9IGYxc2l6ZSAqIDEyO1xuXG4gICAgY29uc3QgcHIgPSBtb2R1bGUuYWxsb2ModXRpbHMkMi5iaWdJbnQyQnl0ZXNMRSggciwgZnJzaXplICkpO1xuXG4gICAgY29uc3QgZjFtUHJlZml4ID0gYnVpbGRGMW0kMShtb2R1bGUsIHEsIFwiZjFtXCIpO1xuICAgIGJ1aWxkRjEkMShtb2R1bGUsIHIsIFwiZnJcIiwgXCJmcm1cIik7XG5cbiAgICBjb25zdCBwRzFiID0gbW9kdWxlLmFsbG9jKHV0aWxzJDIuYmlnSW50MkJ5dGVzTEUoIHRvTW9udGdvbWVyeSgzbiksIGYxc2l6ZSApKTtcbiAgICBjb25zdCBnMW1QcmVmaXggPSBidWlsZEN1cnZlJDEobW9kdWxlLCBcImcxbVwiLCBcImYxbVwiLCBwRzFiKTtcblxuICAgIGJ1aWxkRkZUJDIobW9kdWxlLCBcImZybVwiLCBcImZybVwiLCBcImZybVwiLCBcImZybV9tdWxcIik7XG5cbiAgICBidWlsZFBvbCQxKG1vZHVsZSwgXCJwb2xcIiwgXCJmcm1cIik7XG4gICAgYnVpbGRRQVAkMShtb2R1bGUsIFwicWFwXCIsIFwiZnJtXCIpO1xuXG4gICAgY29uc3QgZjJtUHJlZml4ID0gYnVpbGRGMm0kMShtb2R1bGUsIFwiZjFtX25lZ1wiLCBcImYybVwiLCBcImYxbVwiKTtcbiAgICBjb25zdCBwRzJiID0gbW9kdWxlLmFsbG9jKFtcbiAgICAgICAgLi4udXRpbHMkMi5iaWdJbnQyQnl0ZXNMRSggdG9Nb250Z29tZXJ5KDE5NDg1ODc0NzUxNzU5MzU0NzcxMDI0MjM5MjYxMDIxNzIwNTA1NzkwNjE4NDY5MzAxNzIxMDY1NTY0NjMxMjk2NDUyNDU3NDc4MzczbiksIGYxc2l6ZSApLFxuICAgICAgICAuLi51dGlscyQyLmJpZ0ludDJCeXRlc0xFKCB0b01vbnRnb21lcnkoMjY2OTI5NzkxMTE5OTkxMTYxMjQ2OTA3Mzg3MTM3MjgzODQyNTQ1MDc2OTY1MzMyOTAwMjg4NTY5Mzc4NTEwOTEwMzA3NjM2NjkwbiksIGYxc2l6ZSApXG4gICAgXSk7XG4gICAgY29uc3QgZzJtUHJlZml4ID0gYnVpbGRDdXJ2ZSQxKG1vZHVsZSwgXCJnMm1cIiwgXCJmMm1cIiwgcEcyYik7XG5cblxuICAgIGZ1bmN0aW9uIGJ1aWxkR1RpbWVzRnIoZm5OYW1lLCBvcE11bCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKGZuTmFtZSk7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwR1wiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInBGclwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInByXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgQVVYID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44KSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5jYWxsKFwiZnJtX2Zyb21Nb250Z29tZXJ5XCIsIGMuZ2V0TG9jYWwoXCJwRnJcIiksIEFVWCksXG4gICAgICAgICAgICBjLmNhbGwoXG4gICAgICAgICAgICAgICAgb3BNdWwsXG4gICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInBHXCIpLFxuICAgICAgICAgICAgICAgIEFVWCxcbiAgICAgICAgICAgICAgICBjLmkzMl9jb25zdChuOCksXG4gICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInByXCIpXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG5cbiAgICAgICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKGZuTmFtZSk7XG4gICAgfVxuICAgIGJ1aWxkR1RpbWVzRnIoXCJnMW1fdGltZXNGclwiLCBcImcxbV90aW1lc1NjYWxhclwiKTtcbiAgICBidWlsZEZGVCQyKG1vZHVsZSwgXCJnMW1cIiwgXCJnMW1cIiwgXCJmcm1cIiwgXCJnMW1fdGltZXNGclwiKTtcblxuICAgIGJ1aWxkR1RpbWVzRnIoXCJnMm1fdGltZXNGclwiLCBcImcybV90aW1lc1NjYWxhclwiKTtcbiAgICBidWlsZEZGVCQyKG1vZHVsZSwgXCJnMm1cIiwgXCJnMm1cIiwgXCJmcm1cIiwgXCJnMm1fdGltZXNGclwiKTtcblxuICAgIGJ1aWxkR1RpbWVzRnIoXCJnMW1fdGltZXNGckFmZmluZVwiLCBcImcxbV90aW1lc1NjYWxhckFmZmluZVwiKTtcbiAgICBidWlsZEdUaW1lc0ZyKFwiZzJtX3RpbWVzRnJBZmZpbmVcIiwgXCJnMm1fdGltZXNTY2FsYXJBZmZpbmVcIik7XG5cbiAgICBidWlsZEFwcGx5S2V5JDEobW9kdWxlLCBcImZybV9iYXRjaEFwcGx5S2V5XCIsIFwiZm1yXCIsIFwiZnJtXCIsIG44LCBuOCwgbjgsIFwiZnJtX211bFwiKTtcbiAgICBidWlsZEFwcGx5S2V5JDEobW9kdWxlLCBcImcxbV9iYXRjaEFwcGx5S2V5XCIsIFwiZzFtXCIsIFwiZnJtXCIsIG44KjMsIG44KjMsIG44LCBcImcxbV90aW1lc0ZyXCIpO1xuICAgIGJ1aWxkQXBwbHlLZXkkMShtb2R1bGUsIFwiZzFtX2JhdGNoQXBwbHlLZXlNaXhlZFwiLCBcImcxbVwiLCBcImZybVwiLCBuOCoyLCBuOCozLCBuOCwgXCJnMW1fdGltZXNGckFmZmluZVwiKTtcbiAgICBidWlsZEFwcGx5S2V5JDEobW9kdWxlLCBcImcybV9iYXRjaEFwcGx5S2V5XCIsIFwiZzJtXCIsIFwiZnJtXCIsIG44KjIqMywgbjgqMyoyLCBuOCwgXCJnMm1fdGltZXNGclwiKTtcbiAgICBidWlsZEFwcGx5S2V5JDEobW9kdWxlLCBcImcybV9iYXRjaEFwcGx5S2V5TWl4ZWRcIiwgXCJnMm1cIiwgXCJmcm1cIiwgbjgqMioyLCBuOCozKjIsIG44LCBcImcybV90aW1lc0ZyQWZmaW5lXCIpO1xuXG4gICAgZnVuY3Rpb24gdG9Nb250Z29tZXJ5KGEpIHtcbiAgICAgICAgcmV0dXJuIEJpZ0ludChhKSAqICggMW4gPDwgQmlnSW50KGYxc2l6ZSo4KSkgJSBxO1xuICAgIH1cblxuICAgIGNvbnN0IEcxZ2VuID0gW1xuICAgICAgICAxbixcbiAgICAgICAgMm4sXG4gICAgICAgIDFuXG4gICAgXTtcblxuICAgIGNvbnN0IHBHMWdlbiA9IG1vZHVsZS5hbGxvYyhcbiAgICAgICAgW1xuICAgICAgICAgICAgLi4udXRpbHMkMi5iaWdJbnQyQnl0ZXNMRSggdG9Nb250Z29tZXJ5KEcxZ2VuWzBdKSwgZjFzaXplICksXG4gICAgICAgICAgICAuLi51dGlscyQyLmJpZ0ludDJCeXRlc0xFKCB0b01vbnRnb21lcnkoRzFnZW5bMV0pLCBmMXNpemUgKSxcbiAgICAgICAgICAgIC4uLnV0aWxzJDIuYmlnSW50MkJ5dGVzTEUoIHRvTW9udGdvbWVyeShHMWdlblsyXSksIGYxc2l6ZSApLFxuICAgICAgICBdXG4gICAgKTtcblxuICAgIGNvbnN0IEcxemVybyA9IFtcbiAgICAgICAgMG4sXG4gICAgICAgIDFuLFxuICAgICAgICAwblxuICAgIF07XG5cbiAgICBjb25zdCBwRzF6ZXJvID0gbW9kdWxlLmFsbG9jKFxuICAgICAgICBbXG4gICAgICAgICAgICAuLi51dGlscyQyLmJpZ0ludDJCeXRlc0xFKCB0b01vbnRnb21lcnkoRzF6ZXJvWzBdKSwgZjFzaXplICksXG4gICAgICAgICAgICAuLi51dGlscyQyLmJpZ0ludDJCeXRlc0xFKCB0b01vbnRnb21lcnkoRzF6ZXJvWzFdKSwgZjFzaXplICksXG4gICAgICAgICAgICAuLi51dGlscyQyLmJpZ0ludDJCeXRlc0xFKCB0b01vbnRnb21lcnkoRzF6ZXJvWzJdKSwgZjFzaXplIClcbiAgICAgICAgXVxuICAgICk7XG5cbiAgICBjb25zdCBHMmdlbiA9IFtcbiAgICAgICAgW1xuICAgICAgICAgICAgMTA4NTcwNDY5OTkwMjMwNTcxMzU5NDQ1NzA3NjIyMzI4Mjk0ODEzNzA3NTYzNTk1Nzg1MTgwODY5OTA1MTk5OTMyODU2NTU4NTI3ODFuLFxuICAgICAgICAgICAgMTE1NTk3MzIwMzI5ODYzODcxMDc5OTEwMDQwMjEzOTIyODU3ODM5MjU4MTI4NjE4MjExOTI1MzA5MTc0MDMxNTE0NTIzOTE4MDU2MzRuLFxuICAgICAgICBdLFtcbiAgICAgICAgICAgIDg0OTU2NTM5MjMxMjM0MzE0MTc2MDQ5NzMyNDc0ODkyNzI0Mzg0MTgxOTA1ODcyNjM2MDAxNDg3NzAyODA2NDkzMDY5NTgxMDE5MzBuLFxuICAgICAgICAgICAgNDA4MjM2Nzg3NTg2MzQzMzY4MTMzMjIwMzQwMzE0NTQzNTU2ODMxNjg1MTMyNzU5MzQwMTIwODEwNTc0MTA3NjIxNDEyMDA5MzUzMW4sXG4gICAgICAgIF0sW1xuICAgICAgICAgICAgMW4sXG4gICAgICAgICAgICAwbixcbiAgICAgICAgXVxuICAgIF07XG5cbiAgICBjb25zdCBwRzJnZW4gPSBtb2R1bGUuYWxsb2MoXG4gICAgICAgIFtcbiAgICAgICAgICAgIC4uLnV0aWxzJDIuYmlnSW50MkJ5dGVzTEUoIHRvTW9udGdvbWVyeShHMmdlblswXVswXSksIGYxc2l6ZSApLFxuICAgICAgICAgICAgLi4udXRpbHMkMi5iaWdJbnQyQnl0ZXNMRSggdG9Nb250Z29tZXJ5KEcyZ2VuWzBdWzFdKSwgZjFzaXplICksXG4gICAgICAgICAgICAuLi51dGlscyQyLmJpZ0ludDJCeXRlc0xFKCB0b01vbnRnb21lcnkoRzJnZW5bMV1bMF0pLCBmMXNpemUgKSxcbiAgICAgICAgICAgIC4uLnV0aWxzJDIuYmlnSW50MkJ5dGVzTEUoIHRvTW9udGdvbWVyeShHMmdlblsxXVsxXSksIGYxc2l6ZSApLFxuICAgICAgICAgICAgLi4udXRpbHMkMi5iaWdJbnQyQnl0ZXNMRSggdG9Nb250Z29tZXJ5KEcyZ2VuWzJdWzBdKSwgZjFzaXplICksXG4gICAgICAgICAgICAuLi51dGlscyQyLmJpZ0ludDJCeXRlc0xFKCB0b01vbnRnb21lcnkoRzJnZW5bMl1bMV0pLCBmMXNpemUgKSxcbiAgICAgICAgXVxuICAgICk7XG5cbiAgICBjb25zdCBHMnplcm8gPSBbXG4gICAgICAgIFtcbiAgICAgICAgICAgIDBuLFxuICAgICAgICAgICAgMG4sXG4gICAgICAgIF0sW1xuICAgICAgICAgICAgMW4sXG4gICAgICAgICAgICAwbixcbiAgICAgICAgXSxbXG4gICAgICAgICAgICAwbixcbiAgICAgICAgICAgIDBuLFxuICAgICAgICBdXG4gICAgXTtcblxuICAgIGNvbnN0IHBHMnplcm8gPSBtb2R1bGUuYWxsb2MoXG4gICAgICAgIFtcbiAgICAgICAgICAgIC4uLnV0aWxzJDIuYmlnSW50MkJ5dGVzTEUoIHRvTW9udGdvbWVyeShHMnplcm9bMF1bMF0pLCBmMXNpemUgKSxcbiAgICAgICAgICAgIC4uLnV0aWxzJDIuYmlnSW50MkJ5dGVzTEUoIHRvTW9udGdvbWVyeShHMnplcm9bMF1bMV0pLCBmMXNpemUgKSxcbiAgICAgICAgICAgIC4uLnV0aWxzJDIuYmlnSW50MkJ5dGVzTEUoIHRvTW9udGdvbWVyeShHMnplcm9bMV1bMF0pLCBmMXNpemUgKSxcbiAgICAgICAgICAgIC4uLnV0aWxzJDIuYmlnSW50MkJ5dGVzTEUoIHRvTW9udGdvbWVyeShHMnplcm9bMV1bMV0pLCBmMXNpemUgKSxcbiAgICAgICAgICAgIC4uLnV0aWxzJDIuYmlnSW50MkJ5dGVzTEUoIHRvTW9udGdvbWVyeShHMnplcm9bMl1bMF0pLCBmMXNpemUgKSxcbiAgICAgICAgICAgIC4uLnV0aWxzJDIuYmlnSW50MkJ5dGVzTEUoIHRvTW9udGdvbWVyeShHMnplcm9bMl1bMV0pLCBmMXNpemUgKSxcbiAgICAgICAgXVxuICAgICk7XG5cbiAgICBjb25zdCBwT25lVCA9IG1vZHVsZS5hbGxvYyhbXG4gICAgICAgIC4uLnV0aWxzJDIuYmlnSW50MkJ5dGVzTEUoIHRvTW9udGdvbWVyeSgxKSwgZjFzaXplICksXG4gICAgICAgIC4uLnV0aWxzJDIuYmlnSW50MkJ5dGVzTEUoIHRvTW9udGdvbWVyeSgwKSwgZjFzaXplICksXG4gICAgICAgIC4uLnV0aWxzJDIuYmlnSW50MkJ5dGVzTEUoIHRvTW9udGdvbWVyeSgwKSwgZjFzaXplICksXG4gICAgICAgIC4uLnV0aWxzJDIuYmlnSW50MkJ5dGVzTEUoIHRvTW9udGdvbWVyeSgwKSwgZjFzaXplICksXG4gICAgICAgIC4uLnV0aWxzJDIuYmlnSW50MkJ5dGVzTEUoIHRvTW9udGdvbWVyeSgwKSwgZjFzaXplICksXG4gICAgICAgIC4uLnV0aWxzJDIuYmlnSW50MkJ5dGVzTEUoIHRvTW9udGdvbWVyeSgwKSwgZjFzaXplICksXG4gICAgICAgIC4uLnV0aWxzJDIuYmlnSW50MkJ5dGVzTEUoIHRvTW9udGdvbWVyeSgwKSwgZjFzaXplICksXG4gICAgICAgIC4uLnV0aWxzJDIuYmlnSW50MkJ5dGVzTEUoIHRvTW9udGdvbWVyeSgwKSwgZjFzaXplICksXG4gICAgICAgIC4uLnV0aWxzJDIuYmlnSW50MkJ5dGVzTEUoIHRvTW9udGdvbWVyeSgwKSwgZjFzaXplICksXG4gICAgICAgIC4uLnV0aWxzJDIuYmlnSW50MkJ5dGVzTEUoIHRvTW9udGdvbWVyeSgwKSwgZjFzaXplICksXG4gICAgICAgIC4uLnV0aWxzJDIuYmlnSW50MkJ5dGVzTEUoIHRvTW9udGdvbWVyeSgwKSwgZjFzaXplICksXG4gICAgICAgIC4uLnV0aWxzJDIuYmlnSW50MkJ5dGVzTEUoIHRvTW9udGdvbWVyeSgwKSwgZjFzaXplICksXG4gICAgXSk7XG5cbiAgICBjb25zdCBwTm9uUmVzaWR1ZUY2ID0gbW9kdWxlLmFsbG9jKFtcbiAgICAgICAgLi4udXRpbHMkMi5iaWdJbnQyQnl0ZXNMRSggdG9Nb250Z29tZXJ5KDkpLCBmMXNpemUgKSxcbiAgICAgICAgLi4udXRpbHMkMi5iaWdJbnQyQnl0ZXNMRSggdG9Nb250Z29tZXJ5KDEpLCBmMXNpemUgKSxcbiAgICBdKTtcblxuICAgIGNvbnN0IHBUd29JbnYgPSBtb2R1bGUuYWxsb2MoW1xuICAgICAgICAuLi51dGlscyQyLmJpZ0ludDJCeXRlc0xFKCB0b01vbnRnb21lcnkoICBtb2RJbnYoMm4sIHEpKSwgZjFzaXplICksXG4gICAgICAgIC4uLnV0aWxzJDIuYmlnSW50MkJ5dGVzTEUoIDBuLCBmMXNpemUgKVxuICAgIF0pO1xuXG4gICAgY29uc3QgcEFsdEJuMTI4VHdpc3QgPSBwTm9uUmVzaWR1ZUY2O1xuXG4gICAgY29uc3QgcFR3aXN0Q29lZkIgPSBtb2R1bGUuYWxsb2MoW1xuICAgICAgICAuLi51dGlscyQyLmJpZ0ludDJCeXRlc0xFKCB0b01vbnRnb21lcnkoMTk0ODU4NzQ3NTE3NTkzNTQ3NzEwMjQyMzkyNjEwMjE3MjA1MDU3OTA2MTg0NjkzMDE3MjEwNjU1NjQ2MzEyOTY0NTI0NTc0NzgzNzNuKSwgZjFzaXplICksXG4gICAgICAgIC4uLnV0aWxzJDIuYmlnSW50MkJ5dGVzTEUoIHRvTW9udGdvbWVyeSgyNjY5Mjk3OTExMTk5OTExNjEyNDY5MDczODcxMzcyODM4NDI1NDUwNzY5NjUzMzI5MDAyODg1NjkzNzg1MTA5MTAzMDc2MzY2OTBuKSwgZjFzaXplICksXG4gICAgXSk7XG5cbiAgICBmdW5jdGlvbiBidWlsZF9tdWxOUjYoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4ICsgXCJfbXVsTlI2XCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInByXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5jYWxsKFxuICAgICAgICAgICAgICAgIGYybVByZWZpeCArIFwiX211bFwiLFxuICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KHBOb25SZXNpZHVlRjYpLFxuICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJ4XCIpLFxuICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwclwiKVxuICAgICAgICAgICAgKVxuICAgICAgICApO1xuICAgIH1cbiAgICBidWlsZF9tdWxOUjYoKTtcblxuICAgIGNvbnN0IGY2bVByZWZpeCA9IGJ1aWxkRjNtJDEobW9kdWxlLCBwcmVmaXgrXCJfbXVsTlI2XCIsIFwiZjZtXCIsIFwiZjJtXCIpO1xuXG4gICAgZnVuY3Rpb24gYnVpbGRfbXVsTlIxMigpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXggKyBcIl9tdWxOUjEyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInByXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5jYWxsKFxuICAgICAgICAgICAgICAgIGYybVByZWZpeCArIFwiX211bFwiLFxuICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KHBOb25SZXNpZHVlRjYpLFxuICAgICAgICAgICAgICAgIGMuaTMyX2FkZChjLmdldExvY2FsKFwieFwiKSwgYy5pMzJfY29uc3QobjgqNCkpLFxuICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwclwiKVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGMuY2FsbChcbiAgICAgICAgICAgICAgICBmMm1QcmVmaXggKyBcIl9jb3B5XCIsXG4gICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInhcIiksXG4gICAgICAgICAgICAgICAgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwclwiKSwgYy5pMzJfY29uc3QobjgqMikpLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGMuY2FsbChcbiAgICAgICAgICAgICAgICBmMm1QcmVmaXggKyBcIl9jb3B5XCIsXG4gICAgICAgICAgICAgICAgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJ4XCIpLCBjLmkzMl9jb25zdChuOCoyKSksXG4gICAgICAgICAgICAgICAgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwclwiKSwgYy5pMzJfY29uc3QobjgqNCkpLFxuICAgICAgICAgICAgKVxuICAgICAgICApO1xuICAgIH1cbiAgICBidWlsZF9tdWxOUjEyKCk7XG5cbiAgICBjb25zdCBmdG1QcmVmaXggPSBidWlsZEYybSQxKG1vZHVsZSwgcHJlZml4K1wiX211bE5SMTJcIiwgXCJmdG1cIiwgZjZtUHJlZml4KTtcblxuXG4gICAgY29uc3QgYXRlTG9vcENvdW50ID0gMjk3OTM5NjgyMDMxNTcwOTMyODhuO1xuICAgIGNvbnN0IGF0ZUxvb3BCaXRCeXRlcyA9IGJpdHMoYXRlTG9vcENvdW50KTtcbiAgICBjb25zdCBwQXRlTG9vcEJpdEJ5dGVzID0gbW9kdWxlLmFsbG9jKGF0ZUxvb3BCaXRCeXRlcyk7XG5cbiAgICBjb25zdCBhdGVDb2VmU2l6ZSA9IDMgKiBmMnNpemU7XG4gICAgY29uc3QgYXRlTkRibENvZWZzID0gYXRlTG9vcEJpdEJ5dGVzLmxlbmd0aC0xO1xuICAgIGNvbnN0IGF0ZU5BZGRDb2VmcyA9IGF0ZUxvb3BCaXRCeXRlcy5yZWR1Y2UoKGFjYywgYikgPT4gIGFjYyArICggYiE9MCA/IDEgOiAwKSAgICwwKTtcbiAgICBjb25zdCBhdGVOQ29lZnMgPSBhdGVOQWRkQ29lZnMgKyBhdGVORGJsQ29lZnMgKyAxO1xuICAgIGNvbnN0IHByZVBTaXplID0gMyoyKm44O1xuICAgIGNvbnN0IHByZVFTaXplID0gMypuOCoyICsgYXRlTkNvZWZzKmF0ZUNvZWZTaXplO1xuXG5cbiAgICBtb2R1bGUubW9kdWxlc1twcmVmaXhdID0ge1xuICAgICAgICBuNjQ6IG42NCxcbiAgICAgICAgcEcxZ2VuOiBwRzFnZW4sXG4gICAgICAgIHBHMXplcm86IHBHMXplcm8sXG4gICAgICAgIHBHMWI6IHBHMWIsXG4gICAgICAgIHBHMmdlbjogcEcyZ2VuLFxuICAgICAgICBwRzJ6ZXJvOiBwRzJ6ZXJvLFxuICAgICAgICBwRzJiOiBwRzJiLFxuICAgICAgICBwcTogbW9kdWxlLm1vZHVsZXNbXCJmMW1cIl0ucHEsXG4gICAgICAgIHByOiBwcixcbiAgICAgICAgcE9uZVQ6IHBPbmVULFxuICAgICAgICBwcmVQU2l6ZTogcHJlUFNpemUsXG4gICAgICAgIHByZVFTaXplOiBwcmVRU2l6ZSxcbiAgICAgICAgcjogci50b1N0cmluZygpLFxuICAgICAgICBxOiBxLnRvU3RyaW5nKClcbiAgICB9O1xuXG4gICAgLy8gY29uc29sZS5sb2coXCJQcmVQU2l6ZTogXCIgK3ByZVBTaXplKTtcbiAgICAvLyBjb25zb2xlLmxvZyhcIlByZVFTaXplOiBcIiArcHJlUVNpemUpO1xuXG4gICAgY29uc3QgZmluYWxFeHBaID0gNDk2NTY2MTM2NzE5Mjg0ODg4MW47XG5cbiAgICBmdW5jdGlvbiBuYWYobikge1xuICAgICAgICBsZXQgRSA9IG47XG4gICAgICAgIGNvbnN0IHJlcyA9IFtdO1xuICAgICAgICB3aGlsZSAoRSA+IDBuKSB7XG4gICAgICAgICAgICBpZiAoaXNPZGQkMShFKSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHogPSAyIC0gTnVtYmVyKEUgJSA0bik7XG4gICAgICAgICAgICAgICAgcmVzLnB1c2goIHogKTtcbiAgICAgICAgICAgICAgICBFID0gRSAtIEJpZ0ludCh6KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmVzLnB1c2goIDAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIEUgPSBFID4+IDFuO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXM7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYml0cyhuKSB7XG4gICAgICAgIGxldCBFID0gbjtcbiAgICAgICAgY29uc3QgcmVzID0gW107XG4gICAgICAgIHdoaWxlIChFID4gMG4pIHtcbiAgICAgICAgICAgIGlmIChpc09kZCQxKEUpKSB7XG4gICAgICAgICAgICAgICAgcmVzLnB1c2goIDEgKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmVzLnB1c2goIDAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIEUgPSBFID4+IDFuO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXM7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYnVpbGRQcmVwYXJlRzEoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4KyBcIl9wcmVwYXJlRzFcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwUFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInBwcmVQXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5jYWxsKGcxbVByZWZpeCArIFwiX25vcm1hbGl6ZVwiLCBjLmdldExvY2FsKFwicFBcIiksIGMuZ2V0TG9jYWwoXCJwcHJlUFwiKSksICAvLyBUT0RPIFJlbW92ZSBpZiBhbHJlYWR5IGluIGFmZmluZVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGJ1aWxkUHJlcEFkZFN0ZXAoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4KyBcIl9wcmVwQWRkU3RlcFwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInBRXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicFJcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwQ29lZlwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IFgyICA9IGMuZ2V0TG9jYWwoXCJwUVwiKTtcbiAgICAgICAgY29uc3QgWTIgID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwUVwiKSwgYy5pMzJfY29uc3QoZjJzaXplKSk7XG5cbiAgICAgICAgY29uc3QgWDEgID0gYy5nZXRMb2NhbChcInBSXCIpO1xuICAgICAgICBjb25zdCBZMSAgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInBSXCIpLCBjLmkzMl9jb25zdChmMnNpemUpKTtcbiAgICAgICAgY29uc3QgWjEgID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwUlwiKSwgYy5pMzJfY29uc3QoMipmMnNpemUpKTtcblxuICAgICAgICBjb25zdCBFTExfMCAgPSBjLmdldExvY2FsKFwicENvZWZcIik7XG4gICAgICAgIGNvbnN0IEVMTF9WVyA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwicENvZWZcIiksIGMuaTMyX2NvbnN0KGYyc2l6ZSkpO1xuICAgICAgICBjb25zdCBFTExfVlYgID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwQ29lZlwiKSwgYy5pMzJfY29uc3QoMipmMnNpemUpKTtcblxuICAgICAgICBjb25zdCBEID0gRUxMX1ZXO1xuICAgICAgICBjb25zdCBFID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYyc2l6ZSkpO1xuICAgICAgICBjb25zdCBGID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYyc2l6ZSkpO1xuICAgICAgICBjb25zdCBHID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYyc2l6ZSkpO1xuICAgICAgICBjb25zdCBIID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYyc2l6ZSkpO1xuICAgICAgICBjb25zdCBJID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYyc2l6ZSkpO1xuICAgICAgICBjb25zdCBKID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYyc2l6ZSkpO1xuICAgICAgICBjb25zdCBBVVggPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjJzaXplKSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgLy8gRCA9IFgxIC0gWDIqWjFcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9tdWxcIiwgWDIsIFoxLCBEKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9zdWJcIiwgWDEsIEQsIEQpLFxuXG4gICAgICAgICAgICAvLyBFID0gWTEgLSBZMipaMVxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX211bFwiLCBZMiwgWjEsIEUpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX3N1YlwiLCBZMSwgRSwgRSksXG5cbiAgICAgICAgICAgIC8vIEYgPSBEXjJcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9zcXVhcmVcIiwgRCwgRiksXG5cbiAgICAgICAgICAgIC8vIEcgPSBFXjJcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9zcXVhcmVcIiwgRSwgRyksXG5cbiAgICAgICAgICAgIC8vIEggPSBEKkZcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9tdWxcIiwgRCwgRiwgSCksXG5cbiAgICAgICAgICAgIC8vIEkgPSBYMSAqIEZcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9tdWxcIiwgWDEsIEYsIEkpLFxuXG4gICAgICAgICAgICAvLyBKID0gSCArIFoxKkcgLSAoSStJKVxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCBJLCBJLCBBVVgpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX211bFwiLCBaMSwgRywgSiksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIEgsIEosIEopLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX3N1YlwiLCBKLCBBVVgsIEopLFxuXG5cbiAgICAgICAgICAgIC8vIFgzIChYMSkgPSBEKkpcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9tdWxcIiwgRCwgSiwgWDEpLFxuXG4gICAgICAgICAgICAvLyBZMyAoWTEpID0gRSooSS1KKS0oSCpZMSlcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9tdWxcIiwgSCwgWTEsIFkxKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9zdWJcIiwgSSwgSiwgQVVYKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9tdWxcIiwgRSwgQVVYLCBBVVgpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX3N1YlwiLCBBVVgsIFkxLCBZMSksXG5cbiAgICAgICAgICAgIC8vIFozIChaMSkgPSBaMSpIXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbXVsXCIsIFoxLCBILCBaMSksXG5cbiAgICAgICAgICAgIC8vIGVsbF8wID0geGkgKiAoRSAqIFgyIC0gRCAqIFkyKVxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX211bFwiLCBELCBZMiwgQVVYKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9tdWxcIiwgRSwgWDIsIEVMTF8wKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9zdWJcIiwgRUxMXzAsIEFVWCwgRUxMXzApLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX211bFwiLCBFTExfMCwgYy5pMzJfY29uc3QocEFsdEJuMTI4VHdpc3QpLCBFTExfMCksXG5cblxuICAgICAgICAgICAgLy8gZWxsX1ZWID0gLSBFIChsYXRlcjogKiB4UClcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9uZWdcIiwgRSwgRUxMX1ZWKSxcblxuICAgICAgICAgICAgLy8gZWxsX1ZXID0gRCAobGF0ZXI6ICogeVAgICAgKVxuICAgICAgICAgICAgLy8gQWxyZWFkeSBhc3NpZ25lZFxuXG4gICAgICAgICk7XG4gICAgfVxuXG5cblxuICAgIGZ1bmN0aW9uIGJ1aWxkUHJlcERvdWJsZVN0ZXAoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4KyBcIl9wcmVwRGJsU3RlcFwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInBSXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicENvZWZcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCBYMSAgPSBjLmdldExvY2FsKFwicFJcIik7XG4gICAgICAgIGNvbnN0IFkxICA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwicFJcIiksIGMuaTMyX2NvbnN0KGYyc2l6ZSkpO1xuICAgICAgICBjb25zdCBaMSAgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInBSXCIpLCBjLmkzMl9jb25zdCgyKmYyc2l6ZSkpO1xuXG4gICAgICAgIGNvbnN0IEVMTF8wICA9IGMuZ2V0TG9jYWwoXCJwQ29lZlwiKTtcbiAgICAgICAgY29uc3QgRUxMX1ZXID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwQ29lZlwiKSwgYy5pMzJfY29uc3QoZjJzaXplKSk7XG4gICAgICAgIGNvbnN0IEVMTF9WViAgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInBDb2VmXCIpLCBjLmkzMl9jb25zdCgyKmYyc2l6ZSkpO1xuXG4gICAgICAgIGNvbnN0IEEgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjJzaXplKSk7XG4gICAgICAgIGNvbnN0IEIgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjJzaXplKSk7XG4gICAgICAgIGNvbnN0IEMgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjJzaXplKSk7XG4gICAgICAgIGNvbnN0IEQgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjJzaXplKSk7XG4gICAgICAgIGNvbnN0IEUgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjJzaXplKSk7XG4gICAgICAgIGNvbnN0IEYgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjJzaXplKSk7XG4gICAgICAgIGNvbnN0IEcgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjJzaXplKSk7XG4gICAgICAgIGNvbnN0IEggPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjJzaXplKSk7XG4gICAgICAgIGNvbnN0IEkgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjJzaXplKSk7XG4gICAgICAgIGNvbnN0IEogPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjJzaXplKSk7XG4gICAgICAgIGNvbnN0IEUyID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYyc2l6ZSkpO1xuICAgICAgICBjb25zdCBBVVggPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjJzaXplKSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuXG4gICAgICAgICAgICAvLyBBID0gWDEgKiBZMSAvIDJcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9tdWxcIiwgWTEsIGMuaTMyX2NvbnN0KHBUd29JbnYpLCBBKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9tdWxcIiwgWDEsIEEsIEEpLFxuXG4gICAgICAgICAgICAvLyBCID0gWTFeMlxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX3NxdWFyZVwiLCBZMSwgQiksXG5cbiAgICAgICAgICAgIC8vIEMgPSBaMV4yXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfc3F1YXJlXCIsIFoxLCBDKSxcblxuICAgICAgICAgICAgLy8gRCA9IDMgKiBDXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIEMsIEMsIEQpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCBELCBDLCBEKSxcblxuICAgICAgICAgICAgLy8gRSA9IHR3aXN0X2IgKiBEXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbXVsXCIsIGMuaTMyX2NvbnN0KHBUd2lzdENvZWZCKSwgRCwgRSksXG5cbiAgICAgICAgICAgIC8vIEYgPSAzICogRVxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCBFLCBFLCBGKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgRSwgRiwgRiksXG5cbiAgICAgICAgICAgIC8vIEcgPSAoQitGKS8yXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIEIsIEYsIEcpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX211bFwiLCBHLCBjLmkzMl9jb25zdChwVHdvSW52KSwgRyksXG5cbiAgICAgICAgICAgIC8vIEggPSAoWTErWjEpXjItKEIrQylcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgQiwgQywgQVVYKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgWTEsIFoxLCBIKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9zcXVhcmVcIiwgSCwgSCksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfc3ViXCIsIEgsIEFVWCwgSCksXG5cbiAgICAgICAgICAgIC8vIEkgPSBFLUJcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9zdWJcIiwgRSwgQiwgSSksXG5cbiAgICAgICAgICAgIC8vIEogPSBYMV4yXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfc3F1YXJlXCIsIFgxLCBKKSxcblxuICAgICAgICAgICAgLy8gRV9zcXVhcmVkID0gRV4yXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfc3F1YXJlXCIsIEUsIEUyKSxcblxuICAgICAgICAgICAgLy8gWDMgKFgxKSA9IEEgKiAoQi1GKVxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX3N1YlwiLCBCLCBGLCBBVVgpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX211bFwiLCBBLCBBVVgsIFgxKSxcblxuICAgICAgICAgICAgLy8gWTMgKFkxKSA9IEdeMiAtIDMqRV4yXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIEUyLCBFMiwgQVVYKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgRTIsIEFVWCwgQVVYKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9zcXVhcmVcIiwgRywgWTEpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX3N1YlwiLCBZMSwgQVVYLCBZMSksXG5cbiAgICAgICAgICAgIC8vIFozIChaMSkgPSBCICogSFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX211bFwiLCBCLCBILCBaMSksXG5cbiAgICAgICAgICAgIC8vIGVsbF8wID0geGkgKiBJXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbXVsXCIsIGMuaTMyX2NvbnN0KHBBbHRCbjEyOFR3aXN0KSwgSSwgRUxMXzApLFxuXG4gICAgICAgICAgICAvLyBlbGxfVlcgPSAtIEggKGxhdGVyOiAqIHlQKVxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX25lZ1wiLCBILCBFTExfVlcpLFxuXG4gICAgICAgICAgICAvLyBlbGxfVlYgPSAzKkogKGxhdGVyOiAqIHhQKVxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCBKLCBKLCBFTExfVlYpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCBKLCBFTExfVlYsIEVMTF9WViksXG5cbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBidWlsZE11bEJ5USgpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXggKyBcIl9tdWxCeVFcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwMVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInByXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgeCA9IGMuZ2V0TG9jYWwoXCJwMVwiKTtcbiAgICAgICAgY29uc3QgeSA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwicDFcIiksIGMuaTMyX2NvbnN0KGYyc2l6ZSkpO1xuICAgICAgICBjb25zdCB6ID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwMVwiKSwgYy5pMzJfY29uc3QoZjJzaXplKjIpKTtcbiAgICAgICAgY29uc3QgeDMgPSBjLmdldExvY2FsKFwicHJcIik7XG4gICAgICAgIGNvbnN0IHkzID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwclwiKSwgYy5pMzJfY29uc3QoZjJzaXplKSk7XG4gICAgICAgIGNvbnN0IHozID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwclwiKSwgYy5pMzJfY29uc3QoZjJzaXplKjIpKTtcblxuICAgICAgICBjb25zdCBNdWxCeVFYID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKFtcbiAgICAgICAgICAgIC4uLnV0aWxzJDIuYmlnSW50MkJ5dGVzTEUoIHRvTW9udGdvbWVyeShcIjIxNTc1NDYzNjM4MjgwODQzMDEwMzk4MzI0MjY5NDMwODI2MDk5MjY5MDQ0Mjc0MzQ3MjE2ODI3MjEyNjEzODY3ODM2NDM1MDI3MjYxXCIpLCBmMXNpemUgKSxcbiAgICAgICAgICAgIC4uLnV0aWxzJDIuYmlnSW50MkJ5dGVzTEUoIHRvTW9udGdvbWVyeShcIjEwMzA3NjAxNTk1ODczNzA5NzAwMTUyMjg0MjczODE2MTEyMjY0MDY5MjMwMTMwNjE2NDM2NzU1NjI1MTk0ODU0ODE1ODc1NzEzOTU0XCIpLCBmMXNpemUgKSxcbiAgICAgICAgXSkpO1xuXG4gICAgICAgIGNvbnN0IE11bEJ5UVkgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoW1xuICAgICAgICAgICAgLi4udXRpbHMkMi5iaWdJbnQyQnl0ZXNMRSggdG9Nb250Z29tZXJ5KFwiMjgyMTU2NTE4MjE5NDUzNjg0NDU0ODE1OTU2MTY5MzUwMjY1OTM1OTYxNzE4NTI0NDEyMDM2NzA3ODA3OTU1NDE4NjQ4NDEyNjU1NFwiKSwgZjFzaXplICksXG4gICAgICAgICAgICAuLi51dGlscyQyLmJpZ0ludDJCeXRlc0xFKCB0b01vbnRnb21lcnkoXCIzNTA1ODQzNzY3OTExNTU2Mzc4Njg3MDMwMzA5OTg0MjQ4ODQ1NTQwMjQzNTA5ODk5MjU5NjQxMDEzNjc4MDkzMDMzMTMwOTMwNDAzXCIpLCBmMXNpemUgKSxcbiAgICAgICAgXSkpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIC8vIFRoZSBmcm9iZW5pdXNNYXAoMSkgaW4gdGhpcyBmaWVsZCwgaXMgdGhlIGNvbmp1Z2F0ZVxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2Nvbmp1Z2F0ZVwiLCB4LCB4MyksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbXVsXCIsIE11bEJ5UVgsIHgzLCB4MyksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfY29uanVnYXRlXCIsIHksIHkzKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9tdWxcIiwgTXVsQnlRWSwgeTMsIHkzKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9jb25qdWdhdGVcIiwgeiwgejMpLFxuICAgICAgICApO1xuICAgIH1cblxuXG4gICAgZnVuY3Rpb24gYnVpbGRQcmVwYXJlRzIoKSB7XG4gICAgICAgIGJ1aWxkTXVsQnlRKCk7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4KyBcIl9wcmVwYXJlRzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwUVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInBwcmVRXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwicENvZWZcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJpXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgUVggPSBjLmdldExvY2FsKFwicFFcIik7XG5cbiAgICAgICAgY29uc3QgcFIgPSBtb2R1bGUuYWxsb2MoZjJzaXplKjMpO1xuICAgICAgICBjb25zdCBSID0gYy5pMzJfY29uc3QocFIpO1xuICAgICAgICBjb25zdCBSWCA9IGMuaTMyX2NvbnN0KHBSKTtcbiAgICAgICAgY29uc3QgUlkgPSBjLmkzMl9jb25zdChwUitmMnNpemUpO1xuICAgICAgICBjb25zdCBSWiA9IGMuaTMyX2NvbnN0KHBSKzIqZjJzaXplKTtcblxuICAgICAgICBjb25zdCBjUVggPSBjLmkzMl9hZGQoIGMuZ2V0TG9jYWwoXCJwcHJlUVwiKSwgYy5pMzJfY29uc3QoMCkpO1xuICAgICAgICBjb25zdCBjUVkgPSBjLmkzMl9hZGQoIGMuZ2V0TG9jYWwoXCJwcHJlUVwiKSwgYy5pMzJfY29uc3QoZjJzaXplKSk7XG5cbiAgICAgICAgY29uc3QgcFExID0gbW9kdWxlLmFsbG9jKGYyc2l6ZSozKTtcbiAgICAgICAgY29uc3QgUTEgPSBjLmkzMl9jb25zdChwUTEpO1xuXG4gICAgICAgIGNvbnN0IHBRMiA9IG1vZHVsZS5hbGxvYyhmMnNpemUqMyk7XG4gICAgICAgIGNvbnN0IFEyID0gYy5pMzJfY29uc3QocFEyKTtcbiAgICAgICAgY29uc3QgUTJZID0gYy5pMzJfY29uc3QocFEyICsgZjJzaXplKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLmNhbGwoZzJtUHJlZml4ICsgXCJfbm9ybWFsaXplXCIsIFFYLCBjUVgpLCAgLy8gVE9ETyBSZW1vdmUgaWYgYWxyZWFkeSBpbiBhZmZpbmVcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9jb3B5XCIsIGNRWCwgUlgpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2NvcHlcIiwgY1FZLCBSWSksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfb25lXCIsIFJaKSxcbiAgICAgICAgKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLnNldExvY2FsKFwicENvZWZcIiwgYy5pMzJfYWRkKCBjLmdldExvY2FsKFwicHByZVFcIiksIGMuaTMyX2NvbnN0KGYyc2l6ZSozKSkpLFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcImlcIiwgYy5pMzJfY29uc3QoYXRlTG9vcEJpdEJ5dGVzLmxlbmd0aC0yKSksXG4gICAgICAgICAgICBjLmJsb2NrKGMubG9vcChcblxuICAgICAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9wcmVwRGJsU3RlcFwiLCBSLCBjLmdldExvY2FsKFwicENvZWZcIikpLFxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJwQ29lZlwiLCBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInBDb2VmXCIpLCBjLmkzMl9jb25zdChhdGVDb2VmU2l6ZSkpKSxcblxuICAgICAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX2xvYWQ4X3MoYy5nZXRMb2NhbChcImlcIiksIHBBdGVMb29wQml0Qnl0ZXMpLFxuICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5jLmNhbGwocHJlZml4ICsgXCJfcHJlcEFkZFN0ZXBcIiwgY1FYLCBSLCBjLmdldExvY2FsKFwicENvZWZcIikpLFxuICAgICAgICAgICAgICAgICAgICAgICAgLi4uYy5zZXRMb2NhbChcInBDb2VmXCIsIGMuaTMyX2FkZChjLmdldExvY2FsKFwicENvZWZcIiksIGMuaTMyX2NvbnN0KGF0ZUNvZWZTaXplKSkpLFxuICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBjLmJyX2lmKDEsIGMuaTMyX2VxeiAoIGMuZ2V0TG9jYWwoXCJpXCIpICkpLFxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpXCIsIGMuaTMyX3N1YihjLmdldExvY2FsKFwiaVwiKSwgYy5pMzJfY29uc3QoMSkpKSxcbiAgICAgICAgICAgICAgICBjLmJyKDApXG4gICAgICAgICAgICApKVxuICAgICAgICApO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9tdWxCeVFcIiwgY1FYLCBRMSksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfbXVsQnlRXCIsIFExLCBRMilcbiAgICAgICAgKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbmVnXCIsIFEyWSwgUTJZKSxcblxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX3ByZXBBZGRTdGVwXCIsIFExLCBSLCBjLmdldExvY2FsKFwicENvZWZcIikpLFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcInBDb2VmXCIsIGMuaTMyX2FkZChjLmdldExvY2FsKFwicENvZWZcIiksIGMuaTMyX2NvbnN0KGF0ZUNvZWZTaXplKSkpLFxuXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfcHJlcEFkZFN0ZXBcIiwgUTIsIFIsIGMuZ2V0TG9jYWwoXCJwQ29lZlwiKSksXG4gICAgICAgICAgICBjLnNldExvY2FsKFwicENvZWZcIiwgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwQ29lZlwiKSwgYy5pMzJfY29uc3QoYXRlQ29lZlNpemUpKSksXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYnVpbGRNdWxCeTAyNE9sZCgpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrIFwiX19tdWxCeTAyNE9sZFwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInBFbGwwXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicEVsbFZXXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicEVsbFZWXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicFJcIiwgXCJpMzJcIik7ICAgICAgICAgICAgLy8gUmVzdWx0IGluIEYxMlxuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgeDAgID0gYy5nZXRMb2NhbChcInBFbGwwXCIpO1xuICAgICAgICBjb25zdCB4MiAgPSBjLmdldExvY2FsKFwicEVsbFZWXCIpO1xuICAgICAgICBjb25zdCB4NCAgPSBjLmdldExvY2FsKFwicEVsbFZXXCIpO1xuXG4gICAgICAgIGNvbnN0IHowICA9IGMuZ2V0TG9jYWwoXCJwUlwiKTtcblxuICAgICAgICBjb25zdCBwQVVYMTIgPSBtb2R1bGUuYWxsb2MoZnRzaXplKTtcbiAgICAgICAgY29uc3QgQVVYMTIgPSBjLmkzMl9jb25zdChwQVVYMTIpO1xuICAgICAgICBjb25zdCBBVVgxMl8wID0gYy5pMzJfY29uc3QocEFVWDEyKTtcbiAgICAgICAgY29uc3QgQVVYMTJfMiA9IGMuaTMyX2NvbnN0KHBBVVgxMitmMnNpemUpO1xuICAgICAgICBjb25zdCBBVVgxMl80ID0gYy5pMzJfY29uc3QocEFVWDEyK2Yyc2l6ZSoyKTtcbiAgICAgICAgY29uc3QgQVVYMTJfNiA9IGMuaTMyX2NvbnN0KHBBVVgxMitmMnNpemUqMyk7XG4gICAgICAgIGNvbnN0IEFVWDEyXzggPSBjLmkzMl9jb25zdChwQVVYMTIrZjJzaXplKjQpO1xuICAgICAgICBjb25zdCBBVVgxMl8xMCA9IGMuaTMyX2NvbnN0KHBBVVgxMitmMnNpemUqNSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfY29weVwiLCB4MCwgQVVYMTJfMCksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfemVyb1wiLCBBVVgxMl8yKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9jb3B5XCIsIHgyLCBBVVgxMl80KSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl96ZXJvXCIsIEFVWDEyXzYpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2NvcHlcIiwgeDQsIEFVWDEyXzgpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX3plcm9cIiwgQVVYMTJfMTApLFxuICAgICAgICAgICAgYy5jYWxsKGZ0bVByZWZpeCArIFwiX211bFwiLCBBVVgxMiwgejAsIHowKSxcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBidWlsZE11bEJ5MDI0KCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCsgXCJfX211bEJ5MDI0XCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicEVsbDBcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwRWxsVldcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwRWxsVlZcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwUlwiLCBcImkzMlwiKTsgICAgICAgICAgICAvLyBSZXN1bHQgaW4gRjEyXG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCB4MCAgPSBjLmdldExvY2FsKFwicEVsbDBcIik7XG4gICAgICAgIGNvbnN0IHgyICA9IGMuZ2V0TG9jYWwoXCJwRWxsVlZcIik7XG4gICAgICAgIGNvbnN0IHg0ICA9IGMuZ2V0TG9jYWwoXCJwRWxsVldcIik7XG5cbiAgICAgICAgY29uc3QgejAgID0gYy5nZXRMb2NhbChcInBSXCIpO1xuICAgICAgICBjb25zdCB6MSAgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInBSXCIpLCBjLmkzMl9jb25zdCgyKm44KSk7XG4gICAgICAgIGNvbnN0IHoyICA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwicFJcIiksIGMuaTMyX2NvbnN0KDQqbjgpKTtcbiAgICAgICAgY29uc3QgejMgID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwUlwiKSwgYy5pMzJfY29uc3QoNipuOCkpO1xuICAgICAgICBjb25zdCB6NCAgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInBSXCIpLCBjLmkzMl9jb25zdCg4Km44KSk7XG4gICAgICAgIGNvbnN0IHo1ICA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwicFJcIiksIGMuaTMyX2NvbnN0KDEwKm44KSk7XG5cbiAgICAgICAgY29uc3QgdDAgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjJzaXplKSk7XG4gICAgICAgIGNvbnN0IHQxID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYyc2l6ZSkpO1xuICAgICAgICBjb25zdCB0MiA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMnNpemUpKTtcbiAgICAgICAgY29uc3QgczAgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjJzaXplKSk7XG4gICAgICAgIGNvbnN0IFQzID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYyc2l6ZSkpO1xuICAgICAgICBjb25zdCBUNCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMnNpemUpKTtcbiAgICAgICAgY29uc3QgRDAgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjJzaXplKSk7XG4gICAgICAgIGNvbnN0IEQyID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYyc2l6ZSkpO1xuICAgICAgICBjb25zdCBENCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMnNpemUpKTtcbiAgICAgICAgY29uc3QgUzEgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjJzaXplKSk7XG4gICAgICAgIGNvbnN0IEFVWCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMnNpemUpKTtcblxuICAgICAgICBmLmFkZENvZGUoXG5cbiAgICAgICAgICAgIC8vIEQwID0gejAgKiB4MDtcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9tdWxcIiwgejAsIHgwLCBEMCksXG4gICAgICAgICAgICAvLyBEMiA9IHoyICogeDI7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbXVsXCIsIHoyLCB4MiwgRDIpLFxuICAgICAgICAgICAgLy8gRDQgPSB6NCAqIHg0O1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX211bFwiLCB6NCwgeDQsIEQ0KSxcbiAgICAgICAgICAgIC8vIHQyID0gejAgKyB6NDtcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgejAsIHo0LCB0MiksXG4gICAgICAgICAgICAvLyB0MSA9IHowICsgejI7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIHowLCB6MiwgdDEpLFxuICAgICAgICAgICAgLy8gczAgPSB6MSArIHozICsgejU7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIHoxLCB6MywgczApLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCBzMCwgejUsIHMwKSxcblxuXG4gICAgICAgICAgICAvLyBGb3Igei5hXy5hXyA9IHowLlxuICAgICAgICAgICAgLy8gUzEgPSB6MSAqIHgyO1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX211bFwiLCB6MSwgeDIsIFMxKSxcbiAgICAgICAgICAgIC8vIFQzID0gUzEgKyBENDtcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgUzEsIEQ0LCBUMyksXG4gICAgICAgICAgICAvLyBUNCA9IG15X0ZwNjo6bm9uX3Jlc2lkdWUgKiBUMyArIEQwO1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX211bFwiLCBjLmkzMl9jb25zdChwTm9uUmVzaWR1ZUY2KSwgVDMsIFQ0KSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgVDQsIEQwLCB6MCksXG4gICAgICAgICAgICAvLyB6MCA9IFQ0O1xuXG4gICAgICAgICAgICAvLyBGb3Igei5hXy5iXyA9IHoxXG4gICAgICAgICAgICAvLyBUMyA9IHo1ICogeDQ7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbXVsXCIsIHo1LCB4NCwgVDMpLFxuICAgICAgICAgICAgLy8gUzEgPSBTMSArIFQzO1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCBTMSwgVDMsIFMxKSxcbiAgICAgICAgICAgIC8vIFQzID0gVDMgKyBEMjtcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgVDMsIEQyLCBUMyksXG4gICAgICAgICAgICAvLyBUNCA9IG15X0ZwNjo6bm9uX3Jlc2lkdWUgKiBUMztcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9tdWxcIiwgYy5pMzJfY29uc3QocE5vblJlc2lkdWVGNiksIFQzLCBUNCksXG4gICAgICAgICAgICAvLyBUMyA9IHoxICogeDA7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbXVsXCIsIHoxLCB4MCwgVDMpLFxuICAgICAgICAgICAgLy8gUzEgPSBTMSArIFQzO1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCBTMSwgVDMsIFMxKSxcbiAgICAgICAgICAgIC8vIFQ0ID0gVDQgKyBUMztcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgVDQsIFQzLCB6MSksXG4gICAgICAgICAgICAvLyB6MSA9IFQ0O1xuXG5cblxuICAgICAgICAgICAgLy8gRm9yIHouYV8uY18gPSB6MlxuICAgICAgICAgICAgLy8gdDAgPSB4MCArIHgyO1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCB4MCwgeDIsIHQwKSxcbiAgICAgICAgICAgIC8vIFQzID0gdDEgKiB0MCAtIEQwIC0gRDI7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbXVsXCIsIHQxLCB0MCwgVDMpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCBEMCwgRDIsIEFVWCksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfc3ViXCIsIFQzLCBBVVgsIFQzKSxcbiAgICAgICAgICAgIC8vIFQ0ID0gejMgKiB4NDtcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9tdWxcIiwgejMsIHg0LCBUNCksXG4gICAgICAgICAgICAvLyBTMSA9IFMxICsgVDQ7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIFMxLCBUNCwgUzEpLFxuXG5cbiAgICAgICAgICAgIC8vIEZvciB6LmJfLmFfID0gejMgKHozIG5lZWRzIHoyKVxuICAgICAgICAgICAgLy8gdDAgPSB6MiArIHo0O1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCB6MiwgejQsIHQwKSxcbiAgICAgICAgICAgIC8vIFQzID0gVDMgKyBUNDtcbiAgICAgICAgICAgIC8vIHoyID0gVDM7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIFQzLCBUNCwgejIpLFxuICAgICAgICAgICAgLy8gdDEgPSB4MiArIHg0O1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCB4MiwgeDQsIHQxKSxcbiAgICAgICAgICAgIC8vIFQzID0gdDAgKiB0MSAtIEQyIC0gRDQ7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbXVsXCIsIHQxLCB0MCwgVDMpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCBEMiwgRDQsIEFVWCksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfc3ViXCIsIFQzLCBBVVgsIFQzKSxcbiAgICAgICAgICAgIC8vIFQ0ID0gbXlfRnA2Ojpub25fcmVzaWR1ZSAqIFQzO1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX211bFwiLCBjLmkzMl9jb25zdChwTm9uUmVzaWR1ZUY2KSwgVDMsIFQ0KSxcbiAgICAgICAgICAgIC8vIFQzID0gejMgKiB4MDtcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9tdWxcIiwgejMsIHgwLCBUMyksXG4gICAgICAgICAgICAvLyBTMSA9IFMxICsgVDM7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIFMxLCBUMywgUzEpLFxuICAgICAgICAgICAgLy8gVDQgPSBUNCArIFQzO1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCBUNCwgVDMsIHozKSxcbiAgICAgICAgICAgIC8vIHozID0gVDQ7XG5cbiAgICAgICAgICAgIC8vIEZvciB6LmJfLmJfID0gejRcbiAgICAgICAgICAgIC8vIFQzID0gejUgKiB4MjtcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9tdWxcIiwgejUsIHgyLCBUMyksXG4gICAgICAgICAgICAvLyBTMSA9IFMxICsgVDM7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIFMxLCBUMywgUzEpLFxuICAgICAgICAgICAgLy8gVDQgPSBteV9GcDY6Om5vbl9yZXNpZHVlICogVDM7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbXVsXCIsIGMuaTMyX2NvbnN0KHBOb25SZXNpZHVlRjYpLCBUMywgVDQpLFxuICAgICAgICAgICAgLy8gdDAgPSB4MCArIHg0O1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCB4MCwgeDQsIHQwKSxcbiAgICAgICAgICAgIC8vIFQzID0gdDIgKiB0MCAtIEQwIC0gRDQ7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbXVsXCIsIHQyLCB0MCwgVDMpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCBEMCwgRDQsIEFVWCksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfc3ViXCIsIFQzLCBBVVgsIFQzKSxcbiAgICAgICAgICAgIC8vIFQ0ID0gVDQgKyBUMztcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgVDQsIFQzLCB6NCksXG4gICAgICAgICAgICAvLyB6NCA9IFQ0O1xuXG4gICAgICAgICAgICAvLyBGb3Igei5iXy5jXyA9IHo1LlxuICAgICAgICAgICAgLy8gdDAgPSB4MCArIHgyICsgeDQ7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIHgwLCB4MiwgdDApLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCB0MCwgeDQsIHQwKSxcbiAgICAgICAgICAgIC8vIFQzID0gczAgKiB0MCAtIFMxO1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX211bFwiLCBzMCwgdDAsIFQzKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9zdWJcIiwgVDMsIFMxLCB6NSksXG4gICAgICAgICAgICAvLyB6NSA9IFQzO1xuXG4gICAgICAgICk7XG4gICAgfVxuXG5cbiAgICBmdW5jdGlvbiBidWlsZE1pbGxlckxvb3AoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4KyBcIl9taWxsZXJMb29wXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicHByZVBcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwcHJlUVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInJcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJwQ29lZlwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcImlcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCBwcmVQX1BYID0gYy5nZXRMb2NhbChcInBwcmVQXCIpO1xuICAgICAgICBjb25zdCBwcmVQX1BZID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwcHJlUFwiKSwgYy5pMzJfY29uc3QoZjFzaXplKSk7XG5cbiAgICAgICAgY29uc3QgRUxMXzAgID0gYy5nZXRMb2NhbChcInBDb2VmXCIpO1xuICAgICAgICBjb25zdCBFTExfVlcgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInBDb2VmXCIpLCBjLmkzMl9jb25zdChmMnNpemUpKTtcbiAgICAgICAgY29uc3QgRUxMX1ZWICA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwicENvZWZcIiksIGMuaTMyX2NvbnN0KDIqZjJzaXplKSk7XG5cblxuICAgICAgICBjb25zdCBwVlcgPSBtb2R1bGUuYWxsb2MoZjJzaXplKTtcbiAgICAgICAgY29uc3QgVlcgPSBjLmkzMl9jb25zdChwVlcpO1xuICAgICAgICBjb25zdCBwVlYgPSBtb2R1bGUuYWxsb2MoZjJzaXplKTtcbiAgICAgICAgY29uc3QgVlYgPSBjLmkzMl9jb25zdChwVlYpO1xuXG4gICAgICAgIGNvbnN0IEYgPSBjLmdldExvY2FsKFwiclwiKTtcblxuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuY2FsbChmdG1QcmVmaXggKyBcIl9vbmVcIiwgRiksXG5cbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJwQ29lZlwiLCBjLmkzMl9hZGQoIGMuZ2V0TG9jYWwoXCJwcHJlUVwiKSwgYy5pMzJfY29uc3QoZjJzaXplKjMpKSksXG5cbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpXCIsIGMuaTMyX2NvbnN0KGF0ZUxvb3BCaXRCeXRlcy5sZW5ndGgtMikpLFxuICAgICAgICAgICAgYy5ibG9jayhjLmxvb3AoXG5cblxuICAgICAgICAgICAgICAgIGMuY2FsbChmdG1QcmVmaXggKyBcIl9zcXVhcmVcIiwgRiwgRiksXG5cbiAgICAgICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbXVsMVwiLCBFTExfVlcscHJlUF9QWSwgVlcpLFxuICAgICAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9tdWwxXCIsIEVMTF9WViwgcHJlUF9QWCwgVlYpLFxuICAgICAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9fbXVsQnkwMjRcIiwgRUxMXzAsIFZXLCBWViwgRiksXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcInBDb2VmXCIsIGMuaTMyX2FkZChjLmdldExvY2FsKFwicENvZWZcIiksIGMuaTMyX2NvbnN0KGF0ZUNvZWZTaXplKSkpLFxuXG4gICAgICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfbG9hZDhfcyhjLmdldExvY2FsKFwiaVwiKSwgcEF0ZUxvb3BCaXRCeXRlcyksXG4gICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLmMuY2FsbChmMm1QcmVmaXggKyBcIl9tdWwxXCIsIEVMTF9WVywgcHJlUF9QWSwgVlcpLFxuICAgICAgICAgICAgICAgICAgICAgICAgLi4uYy5jYWxsKGYybVByZWZpeCArIFwiX211bDFcIiwgRUxMX1ZWLCBwcmVQX1BYLCBWViksXG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLmMuY2FsbChwcmVmaXggKyBcIl9fbXVsQnkwMjRcIiwgRUxMXzAsIFZXLCBWViwgRiksXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5jLnNldExvY2FsKFwicENvZWZcIiwgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwQ29lZlwiKSwgYy5pMzJfY29uc3QoYXRlQ29lZlNpemUpKSksXG5cbiAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgYy5icl9pZigxLCBjLmkzMl9lcXogKCBjLmdldExvY2FsKFwiaVwiKSApKSxcbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFwiaVwiLCBjLmkzMl9zdWIoYy5nZXRMb2NhbChcImlcIiksIGMuaTMyX2NvbnN0KDEpKSksXG4gICAgICAgICAgICAgICAgYy5icigwKVxuICAgICAgICAgICAgKSlcblxuICAgICAgICApO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9tdWwxXCIsIEVMTF9WVywgcHJlUF9QWSwgVlcpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX211bDFcIiwgRUxMX1ZWLCBwcmVQX1BYLCBWViksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfX211bEJ5MDI0XCIsIEVMTF8wLCBWVywgVlYsIEYpLFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcInBDb2VmXCIsIGMuaTMyX2FkZChjLmdldExvY2FsKFwicENvZWZcIiksIGMuaTMyX2NvbnN0KGF0ZUNvZWZTaXplKSkpLFxuXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbXVsMVwiLCBFTExfVlcsIHByZVBfUFksIFZXKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9tdWwxXCIsIEVMTF9WViwgcHJlUF9QWCwgVlYpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX19tdWxCeTAyNFwiLCBFTExfMCwgVlcsIFZWLCBGKSxcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJwQ29lZlwiLCBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInBDb2VmXCIpLCBjLmkzMl9jb25zdChhdGVDb2VmU2l6ZSkpKSxcblxuICAgICAgICApO1xuXG4gICAgfVxuXG5cbiAgICBmdW5jdGlvbiBidWlsZEZyb2Jlbml1c01hcChuKSB7XG4gICAgICAgIGNvbnN0IEYxMiA9IFtcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICBbMW4sIDBuXSxcbiAgICAgICAgICAgICAgICBbMW4sIDBuXSxcbiAgICAgICAgICAgICAgICBbMW4sIDBuXSxcbiAgICAgICAgICAgICAgICBbMW4sIDBuXSxcbiAgICAgICAgICAgICAgICBbMW4sIDBuXSxcbiAgICAgICAgICAgICAgICBbMW4sIDBuXSxcbiAgICAgICAgICAgICAgICBbMW4sIDBuXSxcbiAgICAgICAgICAgICAgICBbMW4sIDBuXSxcbiAgICAgICAgICAgICAgICBbMW4sIDBuXSxcbiAgICAgICAgICAgICAgICBbMW4sIDBuXSxcbiAgICAgICAgICAgICAgICBbMW4sIDBuXSxcbiAgICAgICAgICAgICAgICBbMW4sIDBuXSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgWzFuLCAwbl0sXG4gICAgICAgICAgICAgICAgWzgzNzYxMTg4NjU3NjM4MjE0OTY1ODM5NzM4Njc2MjYzNjQwOTI1ODk5MDYwNjU4NjgyOTg3NzY5MDk2MTc5MTYwMTg3NjgzNDAwODBuLCAxNjQ2OTgyMzMyMzA3NzgwODIyMzg4OTEzNzI0MTE3NjUzNjc5OTAwOTI4NjY0NjEwODE2OTkzNTY1OTMwMTYxMzk2MTcxMjE5ODMxNm5dLFxuICAgICAgICAgICAgICAgIFsyMTg4ODI0Mjg3MTgzOTI3NTIyMDA0MjQ0NTI2MDEwOTE1MzE2NzI3NzcwNzQxNDQ3MjA2MTY0MTcxNDc1ODYzNTc2NTAyMDU1NjYxN24sIDBuXSxcbiAgICAgICAgICAgICAgICBbMTE2OTc0MjM0OTYzNTgxNTQzMDQ4MjU3ODI5MjI1ODQ3MjUzMTI5MTIzODM0NDExNTk1MDUwMzg3OTQwMjcxMDU3Nzg5NTQxODQzMTluLCAzMDM4NDczODkxMzUwNjU4ODc0MjI3ODM0NTQ4Nzc2MDk5NDE0NTYzNDkxODg5MTk3MTkyNzIzNDUwODM5NTQ0Mzc4NjA0MDk2MDFuXSxcbiAgICAgICAgICAgICAgICBbMjE4ODgyNDI4NzE4MzkyNzUyMjAwNDI0NDUyNjAxMDkxNTMxNjcyNzc3MDc0MTQ0NzIwNjE2NDE3MTQ3NTg2MzU3NjUwMjA1NTY2MTZuLCAwbl0sXG4gICAgICAgICAgICAgICAgWzMzMjEzMDQ2MzA1OTQzMzI4MDgyNDE4MDkwNTQ5NTgzNjEyMjAzMjI0NzczNzUyOTEyMDYyNjE4ODQ0MDkxODk3NjAxODU4NDQyMzluLCA1NzIyMjY2OTM3ODk2NTMyODg1NzgwMDUxOTU4OTU4MzQ4MjMxMTQzMzczNzAwMTA5MzcyOTk5Mzc0ODIwMjM1MTIxMzc0NDE5ODY4bl0sXG4gICAgICAgICAgICAgICAgWzIxODg4MjQyODcxODM5Mjc1MjIyMjQ2NDA1NzQ1MjU3Mjc1MDg4Njk2MzExMTU3Mjk3ODIzNjYyNjg5MDM3ODk0NjQ1MjI2MjA4NTgybiwgMG5dLFxuICAgICAgICAgICAgICAgIFsxMzUxMjEyNDAwNjA3NTQ1MzcyNTY2MjQzMTg3NzYzMDkxMDk5NjEwNjQwNTA5MTQyOTUyNDg4NTc3OTQxOTk3ODYyNjQ1Nzg2ODUwM24sIDU0MTg0MTk1NDg3NjE0NjY5OTgzNTcyNjg1MDQwODA3MzgyODk2ODcwMjQ1MTExODk2NTM3MjcwMjk3MzYyODA2ODM1MTQwMTAyNjduXSxcbiAgICAgICAgICAgICAgICBbMjIwMzk2MDQ4NTE0ODEyMTkyMTQxODYwMzc0MjgyNTc2MjAyMDk3NDI3OTI1ODg4MDIwNTY1MTk2Nm4sIDBuXSxcbiAgICAgICAgICAgICAgICBbMTAxOTA4MTkzNzU0ODExMjA5MTc0MjA2MjI4MjI2NzI1NDk3NzU3ODM5Mjc3MTYxMzgzMTg2MjM4OTUwMTA3ODg4NjYyNzIwMjQyNjRuLCAyMTU4NDM5NTQ4MjcwNDIwOTMzNDgyMzYyMjI5MDM3OTY2NTE0NzIzOTk2MTk2ODM3ODEwNDM5MDM0Mzk1Mzk0MDIwNzM2NTc5ODk4Mm5dLFxuICAgICAgICAgICAgICAgIFsyMjAzOTYwNDg1MTQ4MTIxOTIxNDE4NjAzNzQyODI1NzYyMDIwOTc0Mjc5MjU4ODgwMjA1NjUxOTY3biwgMG5dLFxuICAgICAgICAgICAgICAgIFsxODU2NjkzODI0MTI0NDk0MjQxNDAwNDU5NjY5MDI5ODkxMzg2ODM3MzgzMzc4MjAwNjYxNzQwMDgwNDYyODcwNDg4NTA0MDM2NDM0NG4sIDE2MTY1OTc1OTMzOTQyNzQyMzM2NDY2MzUzNzg2Mjk4OTI2ODU3NTUyOTM3NDU3MTg4NDUwNjYzMzE0MjE3NjU5NTIzODUxNzg4NzE1bl0sXG4gICAgICAgICAgICBdXG4gICAgICAgIF07XG5cbiAgICAgICAgY29uc3QgRjYgPSBbXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgWzFuLCAwbl0sXG4gICAgICAgICAgICAgICAgWzFuLCAwbl0sXG4gICAgICAgICAgICAgICAgWzFuLCAwbl0sXG4gICAgICAgICAgICAgICAgWzFuLCAwbl0sXG4gICAgICAgICAgICAgICAgWzFuLCAwbl0sXG4gICAgICAgICAgICAgICAgWzFuLCAwbl0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgIFsxbiwgMG5dLFxuICAgICAgICAgICAgICAgIFsyMTU3NTQ2MzYzODI4MDg0MzAxMDM5ODMyNDI2OTQzMDgyNjA5OTI2OTA0NDI3NDM0NzIxNjgyNzIxMjYxMzg2NzgzNjQzNTAyNzI2MW4sIDEwMzA3NjAxNTk1ODczNzA5NzAwMTUyMjg0MjczODE2MTEyMjY0MDY5MjMwMTMwNjE2NDM2NzU1NjI1MTk0ODU0ODE1ODc1NzEzOTU0bl0sXG4gICAgICAgICAgICAgICAgWzIxODg4MjQyODcxODM5Mjc1MjIwMDQyNDQ1MjYwMTA5MTUzMTY3Mjc3NzA3NDE0NDcyMDYxNjQxNzE0NzU4NjM1NzY1MDIwNTU2NjE2biwgMG5dLFxuICAgICAgICAgICAgICAgIFszNzcyMDAwODgxOTE5ODUzNzc2NDMzNjk1MTg2NzEzODU4MjM5MDA5MDczNTkzODE3MTk1NzcxNzczMzgxOTE5MzE2NDE5MzQ1MjYxbiwgMjIzNjU5NTQ5NTk2NzI0NTE4ODI4MTcwMTI0ODIwMzE4MTc5NTEyMTA2ODkwMjYwNTg2MTIyNzg1NTI2MTEzNzgyMDk0NDAwODkyNm5dLFxuICAgICAgICAgICAgICAgIFsyMjAzOTYwNDg1MTQ4MTIxOTIxNDE4NjAzNzQyODI1NzYyMDIwOTc0Mjc5MjU4ODgwMjA1NjUxOTY2biwgMG5dLFxuICAgICAgICAgICAgICAgIFsxODQyOTAyMTIyMzQ3Nzg1MzY1NzY2MDc5MjAzNDM2OTg2NTgzOTExNDUwNDQ0NjQzMTIzNDcyNjM5MjA4MDAwMjEzNzU5ODA0NDY0NG4sIDkzNDQwNDU3Nzk5OTgzMjAzMzM4MTI0MjAyMjMyMzc5ODEwMjk1MDYwMTIxMjQwNzU1MjU2NzkyMDg1ODE5MDIwMDg0MDY0ODU3MDNuXSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgWzFuLCAwbl0sXG4gICAgICAgICAgICAgICAgWzI1ODE5MTEzNDQ0NjcwMDkzMzUyNjczMTExMTU0Njg4MDMwOTk1NTE2NjU2MDUwNzYxOTY3NDA4Njc4MDUyNTg1NjgyMzQzNDYzMzhuLCAxOTkzNzc1Njk3MTc3NTY0Nzk4Nzk5NTkzMjE2OTkyOTM0MTk5NDMxNDY0MDY1Mjk2NDk0OTQ0ODMxMzM3NDQ3MjQwMDcxNjY2MTAzMG5dLFxuICAgICAgICAgICAgICAgIFsyMjAzOTYwNDg1MTQ4MTIxOTIxNDE4NjAzNzQyODI1NzYyMDIwOTc0Mjc5MjU4ODgwMjA1NjUxOTY2biwgMG5dLFxuICAgICAgICAgICAgICAgIFs1MzI0NDc5MjAyNDQ5OTAzNTQyNzI2NzgzMzk1NTA2MjE0NDgxOTI4MjU3NzYyNDAwNjQzMjc5NzgwMzQzMzY4NTU3Mjk3MTM1NzE4biwgMTYyMDg5MDAzODA3Mzc2OTMwODQ5MTk0OTUxMjczMzQzODc5ODEzOTM3MjY0MTk4NTY4ODg3OTk5MTc5MTQxODA5ODg4NDQxMjMwMzluXSxcbiAgICAgICAgICAgICAgICBbMjE4ODgyNDI4NzE4MzkyNzUyMjAwNDI0NDUyNjAxMDkxNTMxNjcyNzc3MDc0MTQ0NzIwNjE2NDE3MTQ3NTg2MzU3NjUwMjA1NTY2MTZuLCAwbl0sXG4gICAgICAgICAgICAgICAgWzEzOTgxODUyMzI0OTIyMzYyMzQ0MjUyMzExMjM0MjgyMjU3NTA3MjE2Mzg3Nzg5ODIwOTgzNjQyMDQwODg5MjY3NTE5Njk0NzI2NTI3biwgNzYyOTgyODM5MTE2NTIwOTM3MTU3NzM4NDE5MzI1MDgyMDIwMTY4NDI1NTI0MTc3MzgwOTA3NzE0Njc4NzEzNTkwMDg5MTYzMzA5N25dLFxuICAgICAgICAgICAgXVxuICAgICAgICBdO1xuXG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4KyBcIl9fZnJvYmVuaXVzTWFwXCIrbik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiclwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGZvciAobGV0IGk9MDsgaTw2OyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IFggPSAoaT09MCkgPyBjLmdldExvY2FsKFwieFwiKSA6IGMuaTMyX2FkZChjLmdldExvY2FsKFwieFwiKSwgYy5pMzJfY29uc3QoaSpmMnNpemUpKTtcbiAgICAgICAgICAgIGNvbnN0IFhjMCA9IFg7XG4gICAgICAgICAgICBjb25zdCBYYzEgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInhcIiksIGMuaTMyX2NvbnN0KGkqZjJzaXplICsgZjFzaXplKSk7XG4gICAgICAgICAgICBjb25zdCBSID0gKGk9PTApID8gYy5nZXRMb2NhbChcInJcIikgOiBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInJcIiksIGMuaTMyX2NvbnN0KGkqZjJzaXplKSk7XG4gICAgICAgICAgICBjb25zdCBSYzAgPSBSO1xuICAgICAgICAgICAgY29uc3QgUmMxID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJyXCIpLCBjLmkzMl9jb25zdChpKmYyc2l6ZSArIGYxc2l6ZSkpO1xuICAgICAgICAgICAgY29uc3QgY29lZiA9IG11bDIoRjEyW01hdGguZmxvb3IoaS8zKV1bbiUxMl0gLCBGNltpJTNdW24lNl0pO1xuICAgICAgICAgICAgY29uc3QgcENvZWYgPSBtb2R1bGUuYWxsb2MoW1xuICAgICAgICAgICAgICAgIC4uLnV0aWxzJDIuYmlnSW50MkJ5dGVzTEUodG9Nb250Z29tZXJ5KGNvZWZbMF0pLCAzMiksXG4gICAgICAgICAgICAgICAgLi4udXRpbHMkMi5iaWdJbnQyQnl0ZXNMRSh0b01vbnRnb21lcnkoY29lZlsxXSksIDMyKSxcbiAgICAgICAgICAgIF0pO1xuICAgICAgICAgICAgaWYgKG4lMiA9PSAxKSB7XG4gICAgICAgICAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4ICsgXCJfY29weVwiLCBYYzAsIFJjMCksXG4gICAgICAgICAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXggKyBcIl9uZWdcIiwgWGMxLCBSYzEpLFxuICAgICAgICAgICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbXVsXCIsIFIsIGMuaTMyX2NvbnN0KHBDb2VmKSwgUiksXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgZi5hZGRDb2RlKGMuY2FsbChmMm1QcmVmaXggKyBcIl9tdWxcIiwgWCwgYy5pMzJfY29uc3QocENvZWYpLCBSKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBmdW5jdGlvbiBtdWwyKGEsIGIpIHtcbiAgICAgICAgICAgIGNvbnN0IGFjMCA9IEJpZ0ludChhWzBdKTtcbiAgICAgICAgICAgIGNvbnN0IGFjMSA9IEJpZ0ludChhWzFdKTtcbiAgICAgICAgICAgIGNvbnN0IGJjMCA9IEJpZ0ludChiWzBdKTtcbiAgICAgICAgICAgIGNvbnN0IGJjMSA9IEJpZ0ludChiWzFdKTtcbiAgICAgICAgICAgIGNvbnN0IHJlcyA9IFtcbiAgICAgICAgICAgICAgICAoYWMwICogYmMwIC0gKCAgYWMxICogYmMxKSAgKSAlIHEsXG4gICAgICAgICAgICAgICAgKGFjMCAqIGJjMSArICggIGFjMSAqIGJjMCkgICkgJSBxLFxuICAgICAgICAgICAgXTtcbiAgICAgICAgICAgIGlmIChpc05lZ2F0aXZlJDIocmVzWzBdKSkgcmVzWzBdID0gcmVzWzBdICsgcTtcbiAgICAgICAgICAgIHJldHVybiByZXM7XG4gICAgICAgIH1cblxuICAgIH1cblxuXG5cbiAgICBmdW5jdGlvbiBidWlsZEZpbmFsRXhwb25lbnRpYXRpb25GaXJzdENodW5rKCkge1xuXG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4KyBcIl9fZmluYWxFeHBvbmVudGlhdGlvbkZpcnN0Q2h1bmtcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiclwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IGVsdCA9IGMuZ2V0TG9jYWwoXCJ4XCIpO1xuICAgICAgICBjb25zdCBlbHRDMCA9IGVsdDtcbiAgICAgICAgY29uc3QgZWx0QzEgPSBjLmkzMl9hZGQoZWx0LCBjLmkzMl9jb25zdChuOCo2KSk7XG4gICAgICAgIGNvbnN0IHIgPSBjLmdldExvY2FsKFwiclwiKTtcbiAgICAgICAgY29uc3QgcEEgPSBtb2R1bGUuYWxsb2MoZnRzaXplKTtcbiAgICAgICAgY29uc3QgQSA9IGMuaTMyX2NvbnN0KHBBKTtcbiAgICAgICAgY29uc3QgQWMwID0gQTtcbiAgICAgICAgY29uc3QgQWMxID0gYy5pMzJfY29uc3QocEEgKyBuOCo2KTtcbiAgICAgICAgY29uc3QgQiA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmdHNpemUpKTtcbiAgICAgICAgY29uc3QgQyA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmdHNpemUpKTtcbiAgICAgICAgY29uc3QgRCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmdHNpemUpKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICAvLyBjb25zdCBhbHRfYm4xMjhfRnExMiBBID0gYWx0X2JuMTI4X0ZxMTIoZWx0LmMwLC1lbHQuYzEpO1xuICAgICAgICAgICAgYy5jYWxsKGY2bVByZWZpeCArIFwiX2NvcHlcIiwgZWx0QzAsIEFjMCksXG4gICAgICAgICAgICBjLmNhbGwoZjZtUHJlZml4ICsgXCJfbmVnXCIsIGVsdEMxLCBBYzEpLFxuXG4gICAgICAgICAgICAvLyBjb25zdCBhbHRfYm4xMjhfRnExMiBCID0gZWx0LmludmVyc2UoKTtcbiAgICAgICAgICAgIGMuY2FsbChmdG1QcmVmaXggKyBcIl9pbnZlcnNlXCIsIGVsdCwgQiksXG5cbiAgICAgICAgICAgIC8vIGNvbnN0IGFsdF9ibjEyOF9GcTEyIEMgPSBBICogQjtcbiAgICAgICAgICAgIGMuY2FsbChmdG1QcmVmaXggKyBcIl9tdWxcIiwgQSwgQiwgQyksXG4gICAgICAgICAgICAvLyBjb25zdCBhbHRfYm4xMjhfRnExMiBEID0gQy5Gcm9iZW5pdXNfbWFwKDIpO1xuICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX19mcm9iZW5pdXNNYXAyXCIsIEMsIEQpLFxuICAgICAgICAgICAgLy8gY29uc3QgYWx0X2JuMTI4X0ZxMTIgcmVzdWx0ID0gRCAqIEM7XG4gICAgICAgICAgICBjLmNhbGwoZnRtUHJlZml4ICsgXCJfbXVsXCIsIEMsIEQsIHIpLFxuICAgICAgICApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGJ1aWxkQ3ljbG90b21pY1NxdWFyZSgpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrIFwiX19jeWNsb3RvbWljU3F1YXJlXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInJcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCB4MCA9IGMuZ2V0TG9jYWwoXCJ4XCIpO1xuICAgICAgICBjb25zdCB4NCA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwieFwiKSwgYy5pMzJfY29uc3QoZjJzaXplKSk7XG4gICAgICAgIGNvbnN0IHgzID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJ4XCIpLCBjLmkzMl9jb25zdCgyKmYyc2l6ZSkpO1xuICAgICAgICBjb25zdCB4MiA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwieFwiKSwgYy5pMzJfY29uc3QoMypmMnNpemUpKTtcbiAgICAgICAgY29uc3QgeDEgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInhcIiksIGMuaTMyX2NvbnN0KDQqZjJzaXplKSk7XG4gICAgICAgIGNvbnN0IHg1ID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJ4XCIpLCBjLmkzMl9jb25zdCg1KmYyc2l6ZSkpO1xuXG4gICAgICAgIGNvbnN0IHIwID0gYy5nZXRMb2NhbChcInJcIik7XG4gICAgICAgIGNvbnN0IHI0ID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJyXCIpLCBjLmkzMl9jb25zdChmMnNpemUpKTtcbiAgICAgICAgY29uc3QgcjMgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInJcIiksIGMuaTMyX2NvbnN0KDIqZjJzaXplKSk7XG4gICAgICAgIGNvbnN0IHIyID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJyXCIpLCBjLmkzMl9jb25zdCgzKmYyc2l6ZSkpO1xuICAgICAgICBjb25zdCByMSA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwiclwiKSwgYy5pMzJfY29uc3QoNCpmMnNpemUpKTtcbiAgICAgICAgY29uc3QgcjUgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInJcIiksIGMuaTMyX2NvbnN0KDUqZjJzaXplKSk7XG5cbiAgICAgICAgY29uc3QgdDAgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjJzaXplKSk7XG4gICAgICAgIGNvbnN0IHQxID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYyc2l6ZSkpO1xuICAgICAgICBjb25zdCB0MiA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMnNpemUpKTtcbiAgICAgICAgY29uc3QgdDMgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjJzaXplKSk7XG4gICAgICAgIGNvbnN0IHQ0ID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYyc2l6ZSkpO1xuICAgICAgICBjb25zdCB0NSA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMnNpemUpKTtcbiAgICAgICAgY29uc3QgdG1wID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYyc2l6ZSkpO1xuICAgICAgICBjb25zdCBBVVggPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjJzaXplKSk7XG5cblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICAvLyAgICAvLyB0MCArIHQxKnkgPSAoejAgKyB6MSp5KV4yID0gYV4yXG4gICAgICAgICAgICAvLyAgICB0bXAgPSB6MCAqIHoxO1xuICAgICAgICAgICAgLy8gICAgdDAgPSAoejAgKyB6MSkgKiAoejAgKyBteV9GcDY6Om5vbl9yZXNpZHVlICogejEpIC0gdG1wIC0gbXlfRnA2Ojpub25fcmVzaWR1ZSAqIHRtcDtcbiAgICAgICAgICAgIC8vICAgIHQxID0gdG1wICsgdG1wO1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX211bFwiLCB4MCwgeDEsIHRtcCksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbXVsXCIsIHgxLCBjLmkzMl9jb25zdChwTm9uUmVzaWR1ZUY2KSwgdDApLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCB4MCwgdDAsIHQwKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgeDAsIHgxLCBBVVgpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX211bFwiLCBBVVgsIHQwLCB0MCksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbXVsXCIsIGMuaTMyX2NvbnN0KHBOb25SZXNpZHVlRjYpLCB0bXAsIEFVWCksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIHRtcCwgQVVYLCBBVVgpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX3N1YlwiLCB0MCwgQVVYLCB0MCksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIHRtcCwgdG1wLCB0MSksXG5cbiAgICAgICAgICAgIC8vICAvLyB0MiArIHQzKnkgPSAoejIgKyB6Myp5KV4yID0gYl4yXG4gICAgICAgICAgICAvLyAgdG1wID0gejIgKiB6MztcbiAgICAgICAgICAgIC8vICB0MiA9ICh6MiArIHozKSAqICh6MiArIG15X0ZwNjo6bm9uX3Jlc2lkdWUgKiB6MykgLSB0bXAgLSBteV9GcDY6Om5vbl9yZXNpZHVlICogdG1wO1xuICAgICAgICAgICAgLy8gIHQzID0gdG1wICsgdG1wO1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX211bFwiLCB4MiwgeDMsIHRtcCksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbXVsXCIsIHgzLCBjLmkzMl9jb25zdChwTm9uUmVzaWR1ZUY2KSwgdDIpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCB4MiwgdDIsIHQyKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgeDIsIHgzLCBBVVgpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX211bFwiLCBBVVgsIHQyLCB0MiksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbXVsXCIsIGMuaTMyX2NvbnN0KHBOb25SZXNpZHVlRjYpLCB0bXAsIEFVWCksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIHRtcCwgQVVYLCBBVVgpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX3N1YlwiLCB0MiwgQVVYLCB0MiksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIHRtcCwgdG1wLCB0MyksXG5cbiAgICAgICAgICAgIC8vICAvLyB0NCArIHQ1KnkgPSAoejQgKyB6NSp5KV4yID0gY14yXG4gICAgICAgICAgICAvLyAgdG1wID0gejQgKiB6NTtcbiAgICAgICAgICAgIC8vICB0NCA9ICh6NCArIHo1KSAqICh6NCArIG15X0ZwNjo6bm9uX3Jlc2lkdWUgKiB6NSkgLSB0bXAgLSBteV9GcDY6Om5vbl9yZXNpZHVlICogdG1wO1xuICAgICAgICAgICAgLy8gIHQ1ID0gdG1wICsgdG1wO1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX211bFwiLCB4NCwgeDUsIHRtcCksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbXVsXCIsIHg1LCBjLmkzMl9jb25zdChwTm9uUmVzaWR1ZUY2KSwgdDQpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCB4NCwgdDQsIHQ0KSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgeDQsIHg1LCBBVVgpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX211bFwiLCBBVVgsIHQ0LCB0NCksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbXVsXCIsIGMuaTMyX2NvbnN0KHBOb25SZXNpZHVlRjYpLCB0bXAsIEFVWCksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIHRtcCwgQVVYLCBBVVgpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX3N1YlwiLCB0NCwgQVVYLCB0NCksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIHRtcCwgdG1wLCB0NSksXG5cbiAgICAgICAgICAgIC8vIEZvciBBXG4gICAgICAgICAgICAvLyB6MCA9IDMgKiB0MCAtIDIgKiB6MFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX3N1YlwiLCB0MCwgeDAsIHIwKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgcjAsIHIwLCByMCksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIHQwLCByMCwgcjApLFxuICAgICAgICAgICAgLy8gejEgPSAzICogdDEgKyAyICogejFcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgdDEsIHgxLCByMSksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIHIxLCByMSwgcjEpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCB0MSwgcjEsIHIxKSxcblxuICAgICAgICAgICAgLy8gRm9yIEJcbiAgICAgICAgICAgIC8vIHoyID0gMyAqICh4aSAqIHQ1KSArIDIgKiB6MlxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX211bFwiLCB0NSwgYy5pMzJfY29uc3QocEFsdEJuMTI4VHdpc3QpLCBBVVgpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCBBVVgsIHgyLCByMiksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIHIyLCByMiwgcjIpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCBBVVgsIHIyLCByMiksXG4gICAgICAgICAgICAvLyB6MyA9IDMgKiB0NCAtIDIgKiB6M1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX3N1YlwiLCB0NCwgeDMsIHIzKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgcjMsIHIzLCByMyksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIHQ0LCByMywgcjMpLFxuXG4gICAgICAgICAgICAvLyBGb3IgQ1xuICAgICAgICAgICAgLy8gejQgPSAzICogdDIgLSAyICogejRcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9zdWJcIiwgdDIsIHg0LCByNCksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIHI0LCByNCwgcjQpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCB0MiwgcjQsIHI0KSxcbiAgICAgICAgICAgIC8vIHo1ID0gMyAqIHQzICsgMiAqIHo1XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIHQzLCB4NSwgcjUpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCByNSwgcjUsIHI1KSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgdDMsIHI1LCByNSksXG5cbiAgICAgICAgKTtcbiAgICB9XG5cblxuICAgIGZ1bmN0aW9uIGJ1aWxkQ3ljbG90b21pY0V4cChleHBvbmVudCwgZm5OYW1lKSB7XG4gICAgICAgIGNvbnN0IGV4cG9uZW50TmFmQnl0ZXMgPSBuYWYoZXhwb25lbnQpLm1hcCggKGIpID0+IChiPT0tMSA/IDB4RkY6IGIpICk7XG4gICAgICAgIGNvbnN0IHBFeHBvbmVudE5hZkJ5dGVzID0gbW9kdWxlLmFsbG9jKGV4cG9uZW50TmFmQnl0ZXMpO1xuXG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4KyBcIl9fY3ljbG90b21pY0V4cF9cIitmbk5hbWUpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInJcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJiaXRcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJpXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgeCA9IGMuZ2V0TG9jYWwoXCJ4XCIpO1xuXG4gICAgICAgIGNvbnN0IHJlcyA9IGMuZ2V0TG9jYWwoXCJyXCIpO1xuXG4gICAgICAgIGNvbnN0IGludmVyc2UgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZnRzaXplKSk7XG5cblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLmNhbGwoZnRtUHJlZml4ICsgXCJfY29uanVnYXRlXCIsIHgsIGludmVyc2UpLFxuICAgICAgICAgICAgYy5jYWxsKGZ0bVByZWZpeCArIFwiX29uZVwiLCByZXMpLFxuXG4gICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgIGMudGVlTG9jYWwoXCJiaXRcIiwgYy5pMzJfbG9hZDhfcyhjLmkzMl9jb25zdChleHBvbmVudE5hZkJ5dGVzLmxlbmd0aC0xKSwgcEV4cG9uZW50TmFmQnl0ZXMpKSxcbiAgICAgICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9lcShcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJiaXRcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdCgxKVxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICBjLmNhbGwoZnRtUHJlZml4ICsgXCJfbXVsXCIsIHJlcywgeCwgcmVzKSxcbiAgICAgICAgICAgICAgICAgICAgYy5jYWxsKGZ0bVByZWZpeCArIFwiX211bFwiLCByZXMsIGludmVyc2UsIHJlcyksXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgYy5zZXRMb2NhbChcImlcIiwgYy5pMzJfY29uc3QoZXhwb25lbnROYWZCeXRlcy5sZW5ndGgtMikpLFxuICAgICAgICAgICAgYy5ibG9jayhjLmxvb3AoXG4gICAgICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX19jeWNsb3RvbWljU3F1YXJlXCIsIHJlcywgcmVzKSxcbiAgICAgICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgICAgICBjLnRlZUxvY2FsKFwiYml0XCIsIGMuaTMyX2xvYWQ4X3MoYy5nZXRMb2NhbChcImlcIiksIHBFeHBvbmVudE5hZkJ5dGVzKSksXG4gICAgICAgICAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9lcShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiYml0XCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KDEpXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5jYWxsKGZ0bVByZWZpeCArIFwiX211bFwiLCByZXMsIHgsIHJlcyksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmNhbGwoZnRtUHJlZml4ICsgXCJfbXVsXCIsIHJlcywgaW52ZXJzZSwgcmVzKSxcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgYy5icl9pZigxLCBjLmkzMl9lcXogKCBjLmdldExvY2FsKFwiaVwiKSApKSxcbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFwiaVwiLCBjLmkzMl9zdWIoYy5nZXRMb2NhbChcImlcIiksIGMuaTMyX2NvbnN0KDEpKSksXG4gICAgICAgICAgICAgICAgYy5icigwKVxuICAgICAgICAgICAgKSlcbiAgICAgICAgKTtcbiAgICB9XG5cblxuXG4gICAgZnVuY3Rpb24gYnVpbGRGaW5hbEV4cG9uZW50aWF0aW9uTGFzdENodW5rKCkge1xuICAgICAgICBidWlsZEN5Y2xvdG9taWNTcXVhcmUoKTtcbiAgICAgICAgYnVpbGRDeWNsb3RvbWljRXhwKGZpbmFsRXhwWiwgXCJ3MFwiKTtcblxuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCsgXCJfX2ZpbmFsRXhwb25lbnRpYXRpb25MYXN0Q2h1bmtcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiclwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IGVsdCA9IGMuZ2V0TG9jYWwoXCJ4XCIpO1xuICAgICAgICBjb25zdCByZXN1bHQgPSBjLmdldExvY2FsKFwiclwiKTtcbiAgICAgICAgY29uc3QgQSA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmdHNpemUpKTtcbiAgICAgICAgY29uc3QgQiA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmdHNpemUpKTtcbiAgICAgICAgY29uc3QgQyA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmdHNpemUpKTtcbiAgICAgICAgY29uc3QgRCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmdHNpemUpKTtcbiAgICAgICAgY29uc3QgRSA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmdHNpemUpKTtcbiAgICAgICAgY29uc3QgRiA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmdHNpemUpKTtcbiAgICAgICAgY29uc3QgRyA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmdHNpemUpKTtcbiAgICAgICAgY29uc3QgSCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmdHNpemUpKTtcbiAgICAgICAgY29uc3QgSSA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmdHNpemUpKTtcbiAgICAgICAgY29uc3QgSiA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmdHNpemUpKTtcbiAgICAgICAgY29uc3QgSyA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmdHNpemUpKTtcbiAgICAgICAgY29uc3QgTCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmdHNpemUpKTtcbiAgICAgICAgY29uc3QgTSA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmdHNpemUpKTtcbiAgICAgICAgY29uc3QgTiA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmdHNpemUpKTtcbiAgICAgICAgY29uc3QgTyA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmdHNpemUpKTtcbiAgICAgICAgY29uc3QgUCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmdHNpemUpKTtcbiAgICAgICAgY29uc3QgUSA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmdHNpemUpKTtcbiAgICAgICAgY29uc3QgUiA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmdHNpemUpKTtcbiAgICAgICAgY29uc3QgUyA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmdHNpemUpKTtcbiAgICAgICAgY29uc3QgVCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmdHNpemUpKTtcbiAgICAgICAgY29uc3QgVSA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmdHNpemUpKTtcblxuICAgICAgICBmLmFkZENvZGUoXG5cblxuICAgICAgICAgICAgLy8gQSA9IGV4cF9ieV9uZWdfeihlbHQpICAvLyA9IGVsdF4oLXopXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfX2N5Y2xvdG9taWNFeHBfdzBcIiwgZWx0LCBBKSxcbiAgICAgICAgICAgIGMuY2FsbChmdG1QcmVmaXggKyBcIl9jb25qdWdhdGVcIiwgQSwgQSksXG4gICAgICAgICAgICAvLyBCID0gQV4yICAgICAgICAgICAgICAgIC8vID0gZWx0XigtMip6KVxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX19jeWNsb3RvbWljU3F1YXJlXCIsIEEsIEIpLFxuICAgICAgICAgICAgLy8gQyA9IEJeMiAgICAgICAgICAgICAgICAvLyA9IGVsdF4oLTQqeilcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9fY3ljbG90b21pY1NxdWFyZVwiLCBCLCBDKSxcbiAgICAgICAgICAgIC8vIEQgPSBDICogQiAgICAgICAgICAgICAgLy8gPSBlbHReKC02KnopXG4gICAgICAgICAgICBjLmNhbGwoZnRtUHJlZml4ICsgXCJfbXVsXCIsIEMsIEIsIEQpLFxuICAgICAgICAgICAgLy8gRSA9IGV4cF9ieV9uZWdfeihEKSAgICAvLyA9IGVsdF4oNip6XjIpXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfX2N5Y2xvdG9taWNFeHBfdzBcIiwgRCwgRSksXG4gICAgICAgICAgICBjLmNhbGwoZnRtUHJlZml4ICsgXCJfY29uanVnYXRlXCIsIEUsIEUpLFxuICAgICAgICAgICAgLy8gRiA9IEVeMiAgICAgICAgICAgICAgICAvLyA9IGVsdF4oMTIqel4yKVxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX19jeWNsb3RvbWljU3F1YXJlXCIsIEUsIEYpLFxuICAgICAgICAgICAgLy8gRyA9IGVweF9ieV9uZWdfeihGKSAgICAvLyA9IGVsdF4oLTEyKnpeMylcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9fY3ljbG90b21pY0V4cF93MFwiLCBGLCBHKSxcbiAgICAgICAgICAgIGMuY2FsbChmdG1QcmVmaXggKyBcIl9jb25qdWdhdGVcIiwgRywgRyksXG4gICAgICAgICAgICAvLyBIID0gY29uaihEKSAgICAgICAgICAgIC8vID0gZWx0Xig2KnopXG4gICAgICAgICAgICBjLmNhbGwoZnRtUHJlZml4ICsgXCJfY29uanVnYXRlXCIsIEQsIEgpLFxuICAgICAgICAgICAgLy8gSSA9IGNvbmooRykgICAgICAgICAgICAvLyA9IGVsdF4oMTIqel4zKVxuICAgICAgICAgICAgYy5jYWxsKGZ0bVByZWZpeCArIFwiX2Nvbmp1Z2F0ZVwiLCBHLCBJKSxcbiAgICAgICAgICAgIC8vIEogPSBJICogRSAgICAgICAgICAgICAgLy8gPSBlbHReKDEyKnpeMyArIDYqel4yKVxuICAgICAgICAgICAgYy5jYWxsKGZ0bVByZWZpeCArIFwiX211bFwiLCBJLCBFLCBKKSxcbiAgICAgICAgICAgIC8vIEsgPSBKICogSCAgICAgICAgICAgICAgLy8gPSBlbHReKDEyKnpeMyArIDYqel4yICsgNip6KVxuICAgICAgICAgICAgYy5jYWxsKGZ0bVByZWZpeCArIFwiX211bFwiLCBKLCBILCBLKSxcbiAgICAgICAgICAgIC8vIEwgPSBLICogQiAgICAgICAgICAgICAgLy8gPSBlbHReKDEyKnpeMyArIDYqel4yICsgNCp6KVxuICAgICAgICAgICAgYy5jYWxsKGZ0bVByZWZpeCArIFwiX211bFwiLCBLLCBCLCBMKSxcbiAgICAgICAgICAgIC8vIE0gPSBLICogRSAgICAgICAgICAgICAgLy8gPSBlbHReKDEyKnpeMyArIDEyKnpeMiArIDYqeilcbiAgICAgICAgICAgIGMuY2FsbChmdG1QcmVmaXggKyBcIl9tdWxcIiwgSywgRSwgTSksXG5cbiAgICAgICAgICAgIC8vIE4gPSBNICogZWx0ICAgICAgICAgICAgLy8gPSBlbHReKDEyKnpeMyArIDEyKnpeMiArIDYqeiArIDEpXG4gICAgICAgICAgICBjLmNhbGwoZnRtUHJlZml4ICsgXCJfbXVsXCIsIE0sIGVsdCwgTiksXG5cbiAgICAgICAgICAgIC8vIE8gPSBMLkZyb2Jlbml1c19tYXAoMSkgLy8gPSBlbHReKHEqKDEyKnpeMyArIDYqel4yICsgNCp6KSlcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9fZnJvYmVuaXVzTWFwMVwiLCBMLCBPKSxcbiAgICAgICAgICAgIC8vIFAgPSBPICogTiAgICAgICAgICAgICAgLy8gPSBlbHReKHEqKDEyKnpeMyArIDYqel4yICsgNCp6KSAqICgxMip6XjMgKyAxMip6XjIgKyA2KnogKyAxKSlcbiAgICAgICAgICAgIGMuY2FsbChmdG1QcmVmaXggKyBcIl9tdWxcIiwgTywgTiwgUCksXG4gICAgICAgICAgICAvLyBRID0gSy5Gcm9iZW5pdXNfbWFwKDIpIC8vID0gZWx0XihxXjIgKiAoMTIqel4zICsgNip6XjIgKyA2KnopKVxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX19mcm9iZW5pdXNNYXAyXCIsIEssIFEpLFxuICAgICAgICAgICAgLy8gUiA9IFEgKiBQICAgICAgICAgICAgICAvLyA9IGVsdF4ocV4yICogKDEyKnpeMyArIDYqel4yICsgNip6KSArIHEqKDEyKnpeMyArIDYqel4yICsgNCp6KSAqICgxMip6XjMgKyAxMip6XjIgKyA2KnogKyAxKSlcbiAgICAgICAgICAgIGMuY2FsbChmdG1QcmVmaXggKyBcIl9tdWxcIiwgUSwgUCwgUiksXG4gICAgICAgICAgICAvLyBTID0gY29uaihlbHQpICAgICAgICAgIC8vID0gZWx0XigtMSlcbiAgICAgICAgICAgIGMuY2FsbChmdG1QcmVmaXggKyBcIl9jb25qdWdhdGVcIiwgZWx0LCBTKSxcbiAgICAgICAgICAgIC8vIFQgPSBTICogTCAgICAgICAgICAgICAgLy8gPSBlbHReKDEyKnpeMyArIDYqel4yICsgNCp6IC0gMSlcbiAgICAgICAgICAgIGMuY2FsbChmdG1QcmVmaXggKyBcIl9tdWxcIiwgUywgTCwgVCksXG4gICAgICAgICAgICAvLyBVID0gVC5Gcm9iZW5pdXNfbWFwKDMpIC8vID0gZWx0XihxXjMoMTIqel4zICsgNip6XjIgKyA0KnogLSAxKSlcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9fZnJvYmVuaXVzTWFwM1wiLCBULCBVKSxcbiAgICAgICAgICAgIC8vIFYgPSBVICogUiAgICAgICAgICAgICAgLy8gPSBlbHReKHFeMygxMip6XjMgKyA2KnpeMiArIDQqeiAtIDEpICsgcV4yICogKDEyKnpeMyArIDYqel4yICsgNip6KSArIHEqKDEyKnpeMyArIDYqel4yICsgNCp6KSAqICgxMip6XjMgKyAxMip6XjIgKyA2KnogKyAxKSlcbiAgICAgICAgICAgIGMuY2FsbChmdG1QcmVmaXggKyBcIl9tdWxcIiwgVSwgUiwgcmVzdWx0KSxcbiAgICAgICAgICAgIC8vIHJlc3VsdCA9IFZcbiAgICAgICAgKTtcbiAgICB9XG5cblxuICAgIGZ1bmN0aW9uIGJ1aWxkRmluYWxFeHBvbmVudGlhdGlvbigpIHtcbiAgICAgICAgYnVpbGRGaW5hbEV4cG9uZW50aWF0aW9uRmlyc3RDaHVuaygpO1xuICAgICAgICBidWlsZEZpbmFsRXhwb25lbnRpYXRpb25MYXN0Q2h1bmsoKTtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrIFwiX2ZpbmFsRXhwb25lbnRpYXRpb25cIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiclwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IGVsdCA9IGMuZ2V0TG9jYWwoXCJ4XCIpO1xuICAgICAgICBjb25zdCByZXN1bHQgPSBjLmdldExvY2FsKFwiclwiKTtcbiAgICAgICAgY29uc3QgZWx0VG9GaXJzdENodW5rID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGZ0c2l6ZSkpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9fZmluYWxFeHBvbmVudGlhdGlvbkZpcnN0Q2h1bmtcIiwgZWx0LCBlbHRUb0ZpcnN0Q2h1bmsgKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9fZmluYWxFeHBvbmVudGlhdGlvbkxhc3RDaHVua1wiLCBlbHRUb0ZpcnN0Q2h1bmssIHJlc3VsdCApXG4gICAgICAgICk7XG4gICAgfVxuXG5cbiAgICBmdW5jdGlvbiBidWlsZEZpbmFsRXhwb25lbnRpYXRpb25PbGQoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4KyBcIl9maW5hbEV4cG9uZW50aWF0aW9uT2xkXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInJcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgZXhwb25lbnQgPSA1NTI0ODQyMzM2MTMyMjQwOTYzMTI2MTcxMjY3ODMxNzMxNDcwOTczODIxMDM3NjI5NTc2NTQxODg4ODI3MzQzMTQxOTY5MTA4Mzk5MDc1NDEyMTM5NzQ1MDI3NjE1NDA2Mjk4MTcwMDk2MDg1NDg2NTQ2ODAzNDM2Mjc3MDExNTM4Mjk0NDY3NDc4MTA5MDczNzMyNTY4NDE1NTEwMDYyMDE2Mzk2Nzc3MjYxMzk5NDYwMjkxOTk5Njg0MTI1OTg4MDQ4ODIzOTE3MDIyNzMwMTkwODM2NTMyNzIwNDc1NjYzMTY1ODQzNjU1NTk3NzY0OTMwMjc0OTU0NTgyMzgzNzM5MDI4NzU5Mzc2NTk5NDM1MDQ4NzMyMjA1NTQxNjE1NTA1MjU5MjYzMDIzMDMzMzE3NDc0NjM1MTU2NDQ3MTE4NzY2NTMxNzcxMjk1NzgzMDMxOTEwOTU5MDA5MDkxOTE2MjQ4MTc4MjY1NjY2ODgyNDE4MDQ0MDgwODE4OTI3ODU3MjU5Njc5MzE3MTQwOTc3MTY3MDk1MjYwOTIyNjEyNzgwNzE5NTI1NjAxNzExMTE0NDQwNzIwNDkyMjkxMjM1NjUwNTc0ODM3NTAxNjE0NjAwMjQzNTMzNDYyODQxNjcyODI0NTI3NTYyMTc2NjIzMzU1Mjg4MTM1MTkxMzk4MDgyOTExNzA1MzkwNzIxMjUzODEyMzA4MTU3MjkwNzE1NDQ4NjE2MDI3NTA5MzY5NjQ4MjkzMTM2MDgxMzczMjU0MjYzODM3MzUxMjIxNzUyMjk1NDExNTUzNzYzNDY0MzYwOTM5MzAyODc0MDIwODk1MTc0MjY5NzMxNzg5MTc1Njk3MTMzODQ3NDgwODE4MjcyNTU0NzI1NzY5Mzc0NzE0OTYxOTU3NTI3MjcxODgyNjE0MzU2MzMyNzEyMzg3MTAxMzE3MzYwOTYyOTk3OTgxNjg4NTI5MjU1NDA1NDkzNDIzMzA3NzUyNzk4NzcwMDY3ODQzNTQ4MDE0MjIyNDk3MjI1NzM3ODM1NjE2ODUxNzk2MTg4MTY0ODAwMzc2OTUwMDU1MTU0MjYxNjIzNjI0MzEwNzIyNDU2MzgzMjQ3NDQ0ODBuO1xuXG4gICAgICAgIGNvbnN0IHBFeHBvbmVudCA9IG1vZHVsZS5hbGxvYyh1dGlscyQyLmJpZ0ludDJCeXRlc0xFKCBleHBvbmVudCwgMzUyICkpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5jYWxsKGZ0bVByZWZpeCArIFwiX2V4cFwiLCBjLmdldExvY2FsKFwieFwiKSwgYy5pMzJfY29uc3QocEV4cG9uZW50KSwgYy5pMzJfY29uc3QoMzUyKSwgYy5nZXRMb2NhbChcInJcIikpLFxuICAgICAgICApO1xuICAgIH1cblxuXG5cblxuICAgIGNvbnN0IHBQcmVQID0gbW9kdWxlLmFsbG9jKHByZVBTaXplKTtcbiAgICBjb25zdCBwUHJlUSA9IG1vZHVsZS5hbGxvYyhwcmVRU2l6ZSk7XG5cbiAgICBmdW5jdGlvbiBidWlsZFBhaXJpbmdFcXVhdGlvbihuUGFpcmluZ3MpIHtcblxuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCsgXCJfcGFpcmluZ0VxXCIrblBhaXJpbmdzKTtcbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPG5QYWlyaW5nczsgaSsrKSB7XG4gICAgICAgICAgICBmLmFkZFBhcmFtKFwicF9cIitpLCBcImkzMlwiKTtcbiAgICAgICAgICAgIGYuYWRkUGFyYW0oXCJxX1wiK2ksIFwiaTMyXCIpO1xuICAgICAgICB9XG4gICAgICAgIGYuYWRkUGFyYW0oXCJjXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLnNldFJldHVyblR5cGUoXCJpMzJcIik7XG5cblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IHJlc1QgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZnRzaXplKSk7XG4gICAgICAgIGNvbnN0IGF1eFQgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZnRzaXplKSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKGMuY2FsbChmdG1QcmVmaXggKyBcIl9vbmVcIiwgcmVzVCApKTtcblxuICAgICAgICBmb3IgKGxldCBpPTA7IGk8blBhaXJpbmdzOyBpKyspIHtcblxuICAgICAgICAgICAgZi5hZGRDb2RlKGMuY2FsbChwcmVmaXggKyBcIl9wcmVwYXJlRzFcIiwgYy5nZXRMb2NhbChcInBfXCIraSksIGMuaTMyX2NvbnN0KHBQcmVQKSApKTtcbiAgICAgICAgICAgIGYuYWRkQ29kZShjLmNhbGwocHJlZml4ICsgXCJfcHJlcGFyZUcyXCIsIGMuZ2V0TG9jYWwoXCJxX1wiK2kpLCBjLmkzMl9jb25zdChwUHJlUSkgKSk7XG4gICAgICAgICAgICBmLmFkZENvZGUoYy5jYWxsKHByZWZpeCArIFwiX21pbGxlckxvb3BcIiwgYy5pMzJfY29uc3QocFByZVApLCBjLmkzMl9jb25zdChwUHJlUSksIGF1eFQgKSk7XG5cbiAgICAgICAgICAgIGYuYWRkQ29kZShjLmNhbGwoZnRtUHJlZml4ICsgXCJfbXVsXCIsIHJlc1QsIGF1eFQsIHJlc1QgKSk7XG4gICAgICAgIH1cblxuICAgICAgICBmLmFkZENvZGUoYy5jYWxsKHByZWZpeCArIFwiX2ZpbmFsRXhwb25lbnRpYXRpb25cIiwgcmVzVCwgcmVzVCApKTtcblxuICAgICAgICBmLmFkZENvZGUoYy5jYWxsKGZ0bVByZWZpeCArIFwiX2VxXCIsIHJlc1QsIGMuZ2V0TG9jYWwoXCJjXCIpKSk7XG4gICAgfVxuXG5cbiAgICBmdW5jdGlvbiBidWlsZFBhaXJpbmcoKSB7XG5cbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrIFwiX3BhaXJpbmdcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInJcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCByZXNUID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGZ0c2l6ZSkpO1xuXG4gICAgICAgIGYuYWRkQ29kZShjLmNhbGwocHJlZml4ICsgXCJfcHJlcGFyZUcxXCIsIGMuZ2V0TG9jYWwoXCJwXCIpLCBjLmkzMl9jb25zdChwUHJlUCkgKSk7XG4gICAgICAgIGYuYWRkQ29kZShjLmNhbGwocHJlZml4ICsgXCJfcHJlcGFyZUcyXCIsIGMuZ2V0TG9jYWwoXCJxXCIpLCBjLmkzMl9jb25zdChwUHJlUSkgKSk7XG4gICAgICAgIGYuYWRkQ29kZShjLmNhbGwocHJlZml4ICsgXCJfbWlsbGVyTG9vcFwiLCBjLmkzMl9jb25zdChwUHJlUCksIGMuaTMyX2NvbnN0KHBQcmVRKSwgcmVzVCApKTtcbiAgICAgICAgZi5hZGRDb2RlKGMuY2FsbChwcmVmaXggKyBcIl9maW5hbEV4cG9uZW50aWF0aW9uXCIsIHJlc1QsIGMuZ2V0TG9jYWwoXCJyXCIpICkpO1xuICAgIH1cblxuXG4gICAgYnVpbGRQcmVwQWRkU3RlcCgpO1xuICAgIGJ1aWxkUHJlcERvdWJsZVN0ZXAoKTtcblxuICAgIGJ1aWxkUHJlcGFyZUcxKCk7XG4gICAgYnVpbGRQcmVwYXJlRzIoKTtcblxuICAgIGJ1aWxkTXVsQnkwMjQoKTtcbiAgICBidWlsZE11bEJ5MDI0T2xkKCk7XG4gICAgYnVpbGRNaWxsZXJMb29wKCk7XG5cblxuICAgIGZvciAobGV0IGk9MDsgaTwxMDsgaSsrKSB7XG4gICAgICAgIGJ1aWxkRnJvYmVuaXVzTWFwKGkpO1xuICAgICAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfX2Zyb2Jlbml1c01hcFwiK2kpO1xuICAgIH1cblxuICAgIGJ1aWxkRmluYWxFeHBvbmVudGlhdGlvbk9sZCgpO1xuICAgIGJ1aWxkRmluYWxFeHBvbmVudGlhdGlvbigpO1xuXG4gICAgZm9yIChsZXQgaT0xOyBpPD01OyBpKyspIHtcbiAgICAgICAgYnVpbGRQYWlyaW5nRXF1YXRpb24oaSk7XG4gICAgICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9wYWlyaW5nRXFcIitpKTtcbiAgICB9XG5cbiAgICBidWlsZFBhaXJpbmcoKTtcblxuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9wYWlyaW5nXCIpO1xuXG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX3ByZXBhcmVHMVwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfcHJlcGFyZUcyXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9taWxsZXJMb29wXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9maW5hbEV4cG9uZW50aWF0aW9uXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9maW5hbEV4cG9uZW50aWF0aW9uT2xkXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9fbXVsQnkwMjRcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX19tdWxCeTAyNE9sZFwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfX2N5Y2xvdG9taWNTcXVhcmVcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX19jeWNsb3RvbWljRXhwX3cwXCIpO1xuXG4gICAgLy8gY29uc29sZS5sb2cobW9kdWxlLmZ1bmN0aW9uSWR4QnlOYW1lKTtcblxufTtcblxuY29uc3QgdXRpbHMkMSA9IHV0aWxzJDY7XG5cbmNvbnN0IGJ1aWxkRjFtID1idWlsZF9mMW07XG5jb25zdCBidWlsZEYxID1idWlsZF9mMTtcbmNvbnN0IGJ1aWxkRjJtID1idWlsZF9mMm07XG5jb25zdCBidWlsZEYzbSA9YnVpbGRfZjNtO1xuY29uc3QgYnVpbGRDdXJ2ZSA9YnVpbGRfY3VydmVfamFjb2JpYW5fYTA7XG5jb25zdCBidWlsZEZGVCQxID0gYnVpbGRfZmZ0O1xuY29uc3QgYnVpbGRQb2wgPSBidWlsZF9wb2w7XG5jb25zdCBidWlsZFFBUCA9IGJ1aWxkX3FhcDtcbmNvbnN0IGJ1aWxkQXBwbHlLZXkgPSBidWlsZF9hcHBseWtleTtcbmNvbnN0IHsgYml0TGVuZ3RoOiBiaXRMZW5ndGgkMSwgaXNPZGQsIGlzTmVnYXRpdmU6IGlzTmVnYXRpdmUkMSB9ID0gYmlnaW50O1xuXG4vLyBEZWZpbml0aW9uIGhlcmU6IGh0dHBzOi8vZWxlY3RyaWNjb2luLmNvL2Jsb2cvbmV3LXNuYXJrLWN1cnZlL1xuXG52YXIgYnVpbGRfYmxzMTIzODEgPSBmdW5jdGlvbiBidWlsZEJMUzEyMzgxKG1vZHVsZSwgX3ByZWZpeCkge1xuXG4gICAgY29uc3QgcHJlZml4ID0gX3ByZWZpeCB8fCBcImJsczEyMzgxXCI7XG5cbiAgICBpZiAobW9kdWxlLm1vZHVsZXNbcHJlZml4XSkgcmV0dXJuIHByZWZpeDsgIC8vIGFscmVhZHkgYnVpbGRlZFxuXG4gICAgY29uc3QgcSA9IDB4MWEwMTExZWEzOTdmZTY5YTRiMWJhN2I2NDM0YmFjZDc2NDc3NGI4NGYzODUxMmJmNjczMGQyYTBmNmIwZjYyNDFlYWJmZmZlYjE1M2ZmZmZiOWZlZmZmZmZmZmZhYWFibjtcbiAgICBjb25zdCByID0gMHg3M2VkYTc1MzI5OWQ3ZDQ4MzMzOWQ4MDgwOWExZDgwNTUzYmRhNDAyZmZmZTViZmVmZmZmZmZmZjAwMDAwMDAxbjtcblxuICAgIGNvbnN0IG42NHEgPSBNYXRoLmZsb29yKChiaXRMZW5ndGgkMShxIC0gMW4pIC0gMSkvNjQpICsxO1xuICAgIGNvbnN0IG44cSA9IG42NHEqODtcbiAgICBjb25zdCBmMXNpemUgPSBuOHE7XG4gICAgY29uc3QgZjJzaXplID0gZjFzaXplICogMjtcbiAgICBjb25zdCBmdHNpemUgPSBmMXNpemUgKiAxMjtcblxuICAgIGNvbnN0IG42NHIgPSBNYXRoLmZsb29yKChiaXRMZW5ndGgkMShyIC0gMW4pIC0gMSkvNjQpICsxO1xuICAgIGNvbnN0IG44ciA9IG42NHIqODtcbiAgICBjb25zdCBmcnNpemUgPSBuOHI7XG5cblxuICAgIGNvbnN0IHByID0gbW9kdWxlLmFsbG9jKHV0aWxzJDEuYmlnSW50MkJ5dGVzTEUoIHIsIGZyc2l6ZSApKTtcblxuICAgIGNvbnN0IGYxbVByZWZpeCA9IGJ1aWxkRjFtKG1vZHVsZSwgcSwgXCJmMW1cIiwgXCJpbnRxXCIpO1xuICAgIGJ1aWxkRjEobW9kdWxlLCByLCBcImZyXCIsIFwiZnJtXCIsIFwiaW50clwiKTtcbiAgICBjb25zdCBwRzFiID0gbW9kdWxlLmFsbG9jKHV0aWxzJDEuYmlnSW50MkJ5dGVzTEUoIHRvTW9udGdvbWVyeSg0biksIGYxc2l6ZSApKTtcbiAgICBjb25zdCBnMW1QcmVmaXggPSBidWlsZEN1cnZlKG1vZHVsZSwgXCJnMW1cIiwgXCJmMW1cIiwgcEcxYik7XG5cbiAgICBidWlsZEZGVCQxKG1vZHVsZSwgXCJmcm1cIiwgXCJmcm1cIiwgXCJmcm1cIiwgXCJmcm1fbXVsXCIpO1xuXG4gICAgYnVpbGRQb2wobW9kdWxlLCBcInBvbFwiLCBcImZybVwiKTtcbiAgICBidWlsZFFBUChtb2R1bGUsIFwicWFwXCIsIFwiZnJtXCIpO1xuXG4gICAgY29uc3QgZjJtUHJlZml4ID0gYnVpbGRGMm0obW9kdWxlLCBcImYxbV9uZWdcIiwgXCJmMm1cIiwgXCJmMW1cIik7XG4gICAgY29uc3QgcEcyYiA9IG1vZHVsZS5hbGxvYyhbXG4gICAgICAgIC4uLnV0aWxzJDEuYmlnSW50MkJ5dGVzTEUoIHRvTW9udGdvbWVyeSg0biksIGYxc2l6ZSApLFxuICAgICAgICAuLi51dGlscyQxLmJpZ0ludDJCeXRlc0xFKCB0b01vbnRnb21lcnkoNG4pLCBmMXNpemUgKVxuICAgIF0pO1xuICAgIGNvbnN0IGcybVByZWZpeCA9IGJ1aWxkQ3VydmUobW9kdWxlLCBcImcybVwiLCBcImYybVwiLCBwRzJiKTtcblxuXG4gICAgZnVuY3Rpb24gYnVpbGRHVGltZXNGcihmbk5hbWUsIG9wTXVsKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24oZm5OYW1lKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInBHXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicEZyXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicHJcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCBBVVggPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjhyKSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5jYWxsKFwiZnJtX2Zyb21Nb250Z29tZXJ5XCIsIGMuZ2V0TG9jYWwoXCJwRnJcIiksIEFVWCksXG4gICAgICAgICAgICBjLmNhbGwoXG4gICAgICAgICAgICAgICAgb3BNdWwsXG4gICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInBHXCIpLFxuICAgICAgICAgICAgICAgIEFVWCxcbiAgICAgICAgICAgICAgICBjLmkzMl9jb25zdChuOHIpLFxuICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwclwiKVxuICAgICAgICAgICAgKVxuICAgICAgICApO1xuXG4gICAgICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihmbk5hbWUpO1xuICAgIH1cbiAgICBidWlsZEdUaW1lc0ZyKFwiZzFtX3RpbWVzRnJcIiwgXCJnMW1fdGltZXNTY2FsYXJcIik7XG4gICAgYnVpbGRGRlQkMShtb2R1bGUsIFwiZzFtXCIsIFwiZzFtXCIsIFwiZnJtXCIsIFwiZzFtX3RpbWVzRnJcIik7XG5cbiAgICBidWlsZEdUaW1lc0ZyKFwiZzJtX3RpbWVzRnJcIiwgXCJnMm1fdGltZXNTY2FsYXJcIik7XG4gICAgYnVpbGRGRlQkMShtb2R1bGUsIFwiZzJtXCIsIFwiZzJtXCIsIFwiZnJtXCIsIFwiZzJtX3RpbWVzRnJcIik7XG5cbiAgICBidWlsZEdUaW1lc0ZyKFwiZzFtX3RpbWVzRnJBZmZpbmVcIiwgXCJnMW1fdGltZXNTY2FsYXJBZmZpbmVcIik7XG4gICAgYnVpbGRHVGltZXNGcihcImcybV90aW1lc0ZyQWZmaW5lXCIsIFwiZzJtX3RpbWVzU2NhbGFyQWZmaW5lXCIpO1xuXG4gICAgYnVpbGRBcHBseUtleShtb2R1bGUsIFwiZnJtX2JhdGNoQXBwbHlLZXlcIiwgXCJmbXJcIiwgXCJmcm1cIiwgbjhyLCBuOHIsIG44ciwgXCJmcm1fbXVsXCIpO1xuICAgIGJ1aWxkQXBwbHlLZXkobW9kdWxlLCBcImcxbV9iYXRjaEFwcGx5S2V5XCIsIFwiZzFtXCIsIFwiZnJtXCIsIG44cSozLCBuOHEqMywgbjhyLCBcImcxbV90aW1lc0ZyXCIpO1xuICAgIGJ1aWxkQXBwbHlLZXkobW9kdWxlLCBcImcxbV9iYXRjaEFwcGx5S2V5TWl4ZWRcIiwgXCJnMW1cIiwgXCJmcm1cIiwgbjhxKjIsIG44cSozLCBuOHIsIFwiZzFtX3RpbWVzRnJBZmZpbmVcIik7XG4gICAgYnVpbGRBcHBseUtleShtb2R1bGUsIFwiZzJtX2JhdGNoQXBwbHlLZXlcIiwgXCJnMm1cIiwgXCJmcm1cIiwgbjhxKjIqMywgbjhxKjMqMiwgbjhyLCBcImcybV90aW1lc0ZyXCIpO1xuICAgIGJ1aWxkQXBwbHlLZXkobW9kdWxlLCBcImcybV9iYXRjaEFwcGx5S2V5TWl4ZWRcIiwgXCJnMm1cIiwgXCJmcm1cIiwgbjhxKjIqMiwgbjhxKjMqMiwgbjhyLCBcImcybV90aW1lc0ZyQWZmaW5lXCIpO1xuXG5cbiAgICBmdW5jdGlvbiB0b01vbnRnb21lcnkoYSkge1xuICAgICAgICByZXR1cm4gQmlnSW50KGEpICogKDFuIDw8IEJpZ0ludChmMXNpemUqOCkpICUgcTtcbiAgICB9XG5cbiAgICBjb25zdCBHMWdlbiA9IFtcbiAgICAgICAgMzY4NTQxNjc1MzcxMzM4NzAxNjc4MTA4ODMxNTE4MzA3Nzc1Nzk2MTYyMDc5NTc4MjU0NjQwOTg5NDU3ODM3ODY4ODYwNzU5MjM3ODM3NjMxODgzNjA1NDk0NzY3NjM0NTgyMTU0ODEwNDE4NTQ2NDUwN24sXG4gICAgICAgIDEzMzk1MDY1NDQ5NDQ0NzY0NzMwMjA0NzEzNzk5NDE5MjEyMjE1ODQ5MzM4NzU5MzgzNDk2MjA0MjY1NDM3MzY0MTY1MTE0MjM5NTYzMzM1MDY0NzI3MjQ2NTUzNTMzNjY1MzQ5OTIzOTE3NTY0NDE1NjluLFxuICAgICAgICAxblxuICAgIF07XG5cbiAgICBjb25zdCBwRzFnZW4gPSBtb2R1bGUuYWxsb2MoXG4gICAgICAgIFtcbiAgICAgICAgICAgIC4uLnV0aWxzJDEuYmlnSW50MkJ5dGVzTEUoIHRvTW9udGdvbWVyeShHMWdlblswXSksIGYxc2l6ZSApLFxuICAgICAgICAgICAgLi4udXRpbHMkMS5iaWdJbnQyQnl0ZXNMRSggdG9Nb250Z29tZXJ5KEcxZ2VuWzFdKSwgZjFzaXplICksXG4gICAgICAgICAgICAuLi51dGlscyQxLmJpZ0ludDJCeXRlc0xFKCB0b01vbnRnb21lcnkoRzFnZW5bMl0pLCBmMXNpemUgKSxcbiAgICAgICAgXVxuICAgICk7XG5cbiAgICBjb25zdCBHMXplcm8gPSBbXG4gICAgICAgIDBuLFxuICAgICAgICAxbixcbiAgICAgICAgMG5cbiAgICBdO1xuXG4gICAgY29uc3QgcEcxemVybyA9IG1vZHVsZS5hbGxvYyhcbiAgICAgICAgW1xuICAgICAgICAgICAgLi4udXRpbHMkMS5iaWdJbnQyQnl0ZXNMRSggdG9Nb250Z29tZXJ5KEcxemVyb1swXSksIGYxc2l6ZSApLFxuICAgICAgICAgICAgLi4udXRpbHMkMS5iaWdJbnQyQnl0ZXNMRSggdG9Nb250Z29tZXJ5KEcxemVyb1sxXSksIGYxc2l6ZSApLFxuICAgICAgICAgICAgLi4udXRpbHMkMS5iaWdJbnQyQnl0ZXNMRSggdG9Nb250Z29tZXJ5KEcxemVyb1syXSksIGYxc2l6ZSApXG4gICAgICAgIF1cbiAgICApO1xuXG4gICAgY29uc3QgRzJnZW4gPSBbXG4gICAgICAgIFtcbiAgICAgICAgICAgIDM1MjcwMTA2OTU4NzQ2NjYxODE4NzEzOTExNjAxMTA2MDE0NDg5MDAyOTk1Mjc5Mjc3NTI0MDIxOTkwODY0NDIzOTc5Mzc4NTczNTcxNTAyNjg3MzM0NzYwMDM0Mzg2NTE3NTk1Mjc2MTkyNjMwMzE2MG4sXG4gICAgICAgICAgICAzMDU5MTQ0MzQ0MjQ0MjEzNzA5OTcxMjU5ODE0NzUzNzgxNjM2OTg2NDcwMzI1NDc2NjQ3NTU4NjU5MzczMjA2MjkxNjM1MzI0NzY4OTU4NDMyNDMzNTA5NTYzMTA0MzQ3MDE3ODM3ODg1NzYzMzY1NzU4bixcbiAgICAgICAgXSxbXG4gICAgICAgICAgICAxOTg1MTUwNjAyMjg3MjkxOTM1NTY4MDU0NTIxMTc3MTcxNjM4MzAwODY4OTc4MjE1NjU1NzMwODU5Mzc4NjY1MDY2MzQ0NzI2MzczODIzNzE4NDIzODY5MTA0MjYzMzMzOTg0NjQxNDk0MzQwMzQ3OTA1bixcbiAgICAgICAgICAgIDkyNzU1MzY2NTQ5MjMzMjQ1NTc0NzIwMTk2NTc3NjAzNzg4MDc1Nzc0MDE5MzQ1MzU5Mjk3MDAyNTAyNzk3ODc5Mzk3Njg3NzAwMjY3NTU2NDk4MDk0OTI4OTcyNzk1NzU2NTU3NTQzMzM0NDIxOTU4Mm4sXG4gICAgICAgIF0sW1xuICAgICAgICAgICAgMW4sXG4gICAgICAgICAgICAwbixcbiAgICAgICAgXVxuICAgIF07XG5cbiAgICBjb25zdCBwRzJnZW4gPSBtb2R1bGUuYWxsb2MoXG4gICAgICAgIFtcbiAgICAgICAgICAgIC4uLnV0aWxzJDEuYmlnSW50MkJ5dGVzTEUoIHRvTW9udGdvbWVyeShHMmdlblswXVswXSksIGYxc2l6ZSApLFxuICAgICAgICAgICAgLi4udXRpbHMkMS5iaWdJbnQyQnl0ZXNMRSggdG9Nb250Z29tZXJ5KEcyZ2VuWzBdWzFdKSwgZjFzaXplICksXG4gICAgICAgICAgICAuLi51dGlscyQxLmJpZ0ludDJCeXRlc0xFKCB0b01vbnRnb21lcnkoRzJnZW5bMV1bMF0pLCBmMXNpemUgKSxcbiAgICAgICAgICAgIC4uLnV0aWxzJDEuYmlnSW50MkJ5dGVzTEUoIHRvTW9udGdvbWVyeShHMmdlblsxXVsxXSksIGYxc2l6ZSApLFxuICAgICAgICAgICAgLi4udXRpbHMkMS5iaWdJbnQyQnl0ZXNMRSggdG9Nb250Z29tZXJ5KEcyZ2VuWzJdWzBdKSwgZjFzaXplICksXG4gICAgICAgICAgICAuLi51dGlscyQxLmJpZ0ludDJCeXRlc0xFKCB0b01vbnRnb21lcnkoRzJnZW5bMl1bMV0pLCBmMXNpemUgKSxcbiAgICAgICAgXVxuICAgICk7XG5cbiAgICBjb25zdCBHMnplcm8gPSBbXG4gICAgICAgIFtcbiAgICAgICAgICAgIDBuLFxuICAgICAgICAgICAgMG4sXG4gICAgICAgIF0sW1xuICAgICAgICAgICAgMW4sXG4gICAgICAgICAgICAwbixcbiAgICAgICAgXSxbXG4gICAgICAgICAgICAwbixcbiAgICAgICAgICAgIDBuLFxuICAgICAgICBdXG4gICAgXTtcblxuICAgIGNvbnN0IHBHMnplcm8gPSBtb2R1bGUuYWxsb2MoXG4gICAgICAgIFtcbiAgICAgICAgICAgIC4uLnV0aWxzJDEuYmlnSW50MkJ5dGVzTEUoIHRvTW9udGdvbWVyeShHMnplcm9bMF1bMF0pLCBmMXNpemUgKSxcbiAgICAgICAgICAgIC4uLnV0aWxzJDEuYmlnSW50MkJ5dGVzTEUoIHRvTW9udGdvbWVyeShHMnplcm9bMF1bMV0pLCBmMXNpemUgKSxcbiAgICAgICAgICAgIC4uLnV0aWxzJDEuYmlnSW50MkJ5dGVzTEUoIHRvTW9udGdvbWVyeShHMnplcm9bMV1bMF0pLCBmMXNpemUgKSxcbiAgICAgICAgICAgIC4uLnV0aWxzJDEuYmlnSW50MkJ5dGVzTEUoIHRvTW9udGdvbWVyeShHMnplcm9bMV1bMV0pLCBmMXNpemUgKSxcbiAgICAgICAgICAgIC4uLnV0aWxzJDEuYmlnSW50MkJ5dGVzTEUoIHRvTW9udGdvbWVyeShHMnplcm9bMl1bMF0pLCBmMXNpemUgKSxcbiAgICAgICAgICAgIC4uLnV0aWxzJDEuYmlnSW50MkJ5dGVzTEUoIHRvTW9udGdvbWVyeShHMnplcm9bMl1bMV0pLCBmMXNpemUgKSxcbiAgICAgICAgXVxuICAgICk7XG5cbiAgICBjb25zdCBwT25lVCA9IG1vZHVsZS5hbGxvYyhbXG4gICAgICAgIC4uLnV0aWxzJDEuYmlnSW50MkJ5dGVzTEUoIHRvTW9udGdvbWVyeSgxbiksIGYxc2l6ZSApLFxuICAgICAgICAuLi51dGlscyQxLmJpZ0ludDJCeXRlc0xFKCB0b01vbnRnb21lcnkoMG4pLCBmMXNpemUgKSxcbiAgICAgICAgLi4udXRpbHMkMS5iaWdJbnQyQnl0ZXNMRSggdG9Nb250Z29tZXJ5KDBuKSwgZjFzaXplICksXG4gICAgICAgIC4uLnV0aWxzJDEuYmlnSW50MkJ5dGVzTEUoIHRvTW9udGdvbWVyeSgwbiksIGYxc2l6ZSApLFxuICAgICAgICAuLi51dGlscyQxLmJpZ0ludDJCeXRlc0xFKCB0b01vbnRnb21lcnkoMG4pLCBmMXNpemUgKSxcbiAgICAgICAgLi4udXRpbHMkMS5iaWdJbnQyQnl0ZXNMRSggdG9Nb250Z29tZXJ5KDBuKSwgZjFzaXplICksXG4gICAgICAgIC4uLnV0aWxzJDEuYmlnSW50MkJ5dGVzTEUoIHRvTW9udGdvbWVyeSgwbiksIGYxc2l6ZSApLFxuICAgICAgICAuLi51dGlscyQxLmJpZ0ludDJCeXRlc0xFKCB0b01vbnRnb21lcnkoMG4pLCBmMXNpemUgKSxcbiAgICAgICAgLi4udXRpbHMkMS5iaWdJbnQyQnl0ZXNMRSggdG9Nb250Z29tZXJ5KDBuKSwgZjFzaXplICksXG4gICAgICAgIC4uLnV0aWxzJDEuYmlnSW50MkJ5dGVzTEUoIHRvTW9udGdvbWVyeSgwbiksIGYxc2l6ZSApLFxuICAgICAgICAuLi51dGlscyQxLmJpZ0ludDJCeXRlc0xFKCB0b01vbnRnb21lcnkoMG4pLCBmMXNpemUgKSxcbiAgICAgICAgLi4udXRpbHMkMS5iaWdJbnQyQnl0ZXNMRSggdG9Nb250Z29tZXJ5KDBuKSwgZjFzaXplICksXG4gICAgXSk7XG5cbiAgICBjb25zdCBwQmxzMTIzODFUd2lzdCA9ICBtb2R1bGUuYWxsb2MoW1xuICAgICAgICAuLi51dGlscyQxLmJpZ0ludDJCeXRlc0xFKCB0b01vbnRnb21lcnkoMW4pLCBmMXNpemUgKSxcbiAgICAgICAgLi4udXRpbHMkMS5iaWdJbnQyQnl0ZXNMRSggdG9Nb250Z29tZXJ5KDFuKSwgZjFzaXplICksXG4gICAgXSk7XG5cbiAgICBmdW5jdGlvbiBidWlsZF9tdWxOUjIoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24oZjJtUHJlZml4ICsgXCJfbXVsTlJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicHJcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCB4MGMgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjFzaXplKSk7XG4gICAgICAgIGNvbnN0IHgwID0gYy5nZXRMb2NhbChcInhcIik7XG4gICAgICAgIGNvbnN0IHgxID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJ4XCIpLCBjLmkzMl9jb25zdChmMXNpemUpKTtcbiAgICAgICAgY29uc3QgcjAgPSBjLmdldExvY2FsKFwicHJcIik7XG4gICAgICAgIGNvbnN0IHIxID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwclwiKSwgYy5pMzJfY29uc3QoZjFzaXplKSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCtcIl9jb3B5XCIsIHgwLCB4MGMpLFxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCtcIl9zdWJcIiwgeDAsIHgxLCByMCksXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4K1wiX2FkZFwiLCB4MGMsIHgxLCByMSksXG4gICAgICAgICk7XG4gICAgfVxuICAgIGJ1aWxkX211bE5SMigpO1xuXG4gICAgY29uc3QgZjZtUHJlZml4ID0gYnVpbGRGM20obW9kdWxlLCBmMm1QcmVmaXgrXCJfbXVsTlJcIiwgXCJmNm1cIiwgXCJmMm1cIik7XG5cbiAgICBmdW5jdGlvbiBidWlsZF9tdWxOUjYoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24oZjZtUHJlZml4ICsgXCJfbXVsTlJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicHJcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCBjMGNvcHkgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjFzaXplKjIpKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLmNhbGwoXG4gICAgICAgICAgICAgICAgZjJtUHJlZml4ICsgXCJfY29weVwiLFxuICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJ4XCIpLFxuICAgICAgICAgICAgICAgIGMwY29weVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGMuY2FsbChcbiAgICAgICAgICAgICAgICBmMm1QcmVmaXggKyBcIl9tdWxOUlwiLFxuICAgICAgICAgICAgICAgIGMuaTMyX2FkZChjLmdldExvY2FsKFwieFwiKSwgYy5pMzJfY29uc3QobjhxKjQpKSxcbiAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicHJcIilcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjLmNhbGwoXG4gICAgICAgICAgICAgICAgZjJtUHJlZml4ICsgXCJfY29weVwiLFxuICAgICAgICAgICAgICAgIGMuaTMyX2FkZChjLmdldExvY2FsKFwieFwiKSwgYy5pMzJfY29uc3QobjhxKjIpKSxcbiAgICAgICAgICAgICAgICBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInByXCIpLCBjLmkzMl9jb25zdChuOHEqNCkpLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGMuY2FsbChcbiAgICAgICAgICAgICAgICBmMm1QcmVmaXggKyBcIl9jb3B5XCIsXG4gICAgICAgICAgICAgICAgYzBjb3B5LFxuICAgICAgICAgICAgICAgIGMuaTMyX2FkZChjLmdldExvY2FsKFwicHJcIiksIGMuaTMyX2NvbnN0KG44cSoyKSksXG4gICAgICAgICAgICApLFxuICAgICAgICApO1xuICAgIH1cbiAgICBidWlsZF9tdWxOUjYoKTtcblxuICAgIGNvbnN0IGZ0bVByZWZpeCA9IGJ1aWxkRjJtKG1vZHVsZSwgZjZtUHJlZml4K1wiX211bE5SXCIsIFwiZnRtXCIsIGY2bVByZWZpeCk7XG5cbiAgICBjb25zdCBhdGVMb29wQ291bnQgPSAweGQyMDEwMDAwMDAwMTAwMDBuO1xuICAgIGNvbnN0IGF0ZUxvb3BCaXRCeXRlcyA9IGJpdHMoYXRlTG9vcENvdW50KTtcbiAgICBjb25zdCBwQXRlTG9vcEJpdEJ5dGVzID0gbW9kdWxlLmFsbG9jKGF0ZUxvb3BCaXRCeXRlcyk7XG5cbiAgICBjb25zdCBhdGVDb2VmU2l6ZSA9IDMgKiBmMnNpemU7XG4gICAgY29uc3QgYXRlTkRibENvZWZzID0gYXRlTG9vcEJpdEJ5dGVzLmxlbmd0aC0xO1xuICAgIGNvbnN0IGF0ZU5BZGRDb2VmcyA9IGF0ZUxvb3BCaXRCeXRlcy5yZWR1Y2UoKGFjYywgYikgPT4gIGFjYyArICggYiE9MCA/IDEgOiAwKSAgICwwKTtcbiAgICBjb25zdCBhdGVOQ29lZnMgPSBhdGVOQWRkQ29lZnMgKyBhdGVORGJsQ29lZnMgKyAxO1xuICAgIGNvbnN0IHByZVBTaXplID0gMyoyKm44cTtcbiAgICBjb25zdCBwcmVRU2l6ZSA9IDMqbjhxKjIgKyBhdGVOQ29lZnMqYXRlQ29lZlNpemU7XG4gICAgY29uc3QgZmluYWxFeHBJc05lZ2F0aXZlID0gdHJ1ZTtcblxuICAgIGNvbnN0IGZpbmFsRXhwWiA9IDE1MTMyMzc2MjIyOTQxNjQyNzUybjtcblxuXG4gICAgbW9kdWxlLm1vZHVsZXNbcHJlZml4XSA9IHtcbiAgICAgICAgbjY0cTogbjY0cSxcbiAgICAgICAgbjY0cjogbjY0cixcbiAgICAgICAgbjhxOiBuOHEsXG4gICAgICAgIG44cjogbjhyLFxuICAgICAgICBwRzFnZW46IHBHMWdlbixcbiAgICAgICAgcEcxemVybzogcEcxemVybyxcbiAgICAgICAgcEcxYjogcEcxYixcbiAgICAgICAgcEcyZ2VuOiBwRzJnZW4sXG4gICAgICAgIHBHMnplcm86IHBHMnplcm8sXG4gICAgICAgIHBHMmI6IHBHMmIsXG4gICAgICAgIHBxOiBtb2R1bGUubW9kdWxlc1tcImYxbVwiXS5wcSxcbiAgICAgICAgcHI6IHByLFxuICAgICAgICBwT25lVDogcE9uZVQsXG4gICAgICAgIHI6IHIsXG4gICAgICAgIHE6IHEsXG4gICAgICAgIHByZVBTaXplOiBwcmVQU2l6ZSxcbiAgICAgICAgcHJlUVNpemU6IHByZVFTaXplXG4gICAgfTtcblxuXG4gICAgZnVuY3Rpb24gbmFmKG4pIHtcbiAgICAgICAgbGV0IEUgPSBuO1xuICAgICAgICBjb25zdCByZXMgPSBbXTtcbiAgICAgICAgd2hpbGUgKEUgPiAwbikge1xuICAgICAgICAgICAgaWYgKGlzT2RkKEUpKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgeiA9IDIgLSBOdW1iZXIoRSAlIDRuKTtcbiAgICAgICAgICAgICAgICByZXMucHVzaCggeiApO1xuICAgICAgICAgICAgICAgIEUgPSBFIC0gQmlnSW50KHopO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXMucHVzaCggMCApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgRSA9IEUgPj4gMW47XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBiaXRzKG4pIHtcbiAgICAgICAgbGV0IEUgPSBuO1xuICAgICAgICBjb25zdCByZXMgPSBbXTtcbiAgICAgICAgd2hpbGUgKEUgPiAwbikge1xuICAgICAgICAgICAgaWYgKGlzT2RkKEUpKSB7XG4gICAgICAgICAgICAgICAgcmVzLnB1c2goIDEgKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmVzLnB1c2goIDAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIEUgPSBFID4+IDFuO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXM7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYnVpbGRQcmVwYXJlRzEoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4KyBcIl9wcmVwYXJlRzFcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwUFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInBwcmVQXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5jYWxsKGcxbVByZWZpeCArIFwiX25vcm1hbGl6ZVwiLCBjLmdldExvY2FsKFwicFBcIiksIGMuZ2V0TG9jYWwoXCJwcHJlUFwiKSksICAvLyBUT0RPIFJlbW92ZSBpZiBhbHJlYWR5IGluIGFmZmluZVxuICAgICAgICApO1xuICAgIH1cblxuXG5cbiAgICBmdW5jdGlvbiBidWlsZFByZXBEb3VibGVTdGVwKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCsgXCJfcHJlcERibFN0ZXBcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJSXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiclwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IFJ4ICA9IGMuZ2V0TG9jYWwoXCJSXCIpO1xuICAgICAgICBjb25zdCBSeSAgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcIlJcIiksIGMuaTMyX2NvbnN0KDIqbjhxKSk7XG4gICAgICAgIGNvbnN0IFJ6ICA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwiUlwiKSwgYy5pMzJfY29uc3QoNCpuOHEpKTtcblxuICAgICAgICBjb25zdCB0MCAgPSBjLmdldExvY2FsKFwiclwiKTtcbiAgICAgICAgY29uc3QgdDMgID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJyXCIpLCBjLmkzMl9jb25zdCgyKm44cSkpO1xuICAgICAgICBjb25zdCB0NiAgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInJcIiksIGMuaTMyX2NvbnN0KDQqbjhxKSk7XG5cblxuICAgICAgICBjb25zdCB6c3F1YXJlZCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMnNpemUpKTtcbiAgICAgICAgY29uc3QgdDEgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjJzaXplKSk7XG4gICAgICAgIGNvbnN0IHQyID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYyc2l6ZSkpO1xuICAgICAgICBjb25zdCB0NCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMnNpemUpKTtcbiAgICAgICAgY29uc3QgdDUgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjJzaXplKSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuXG4gICAgICAgICAgICAvLyB0bXAwID0gci54LnNxdWFyZSgpO1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX3NxdWFyZVwiLCBSeCwgdDApLFxuXG4gICAgICAgICAgICAvLyB0bXAxID0gci55LnNxdWFyZSgpO1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX3NxdWFyZVwiLCBSeSwgdDEpLFxuXG4gICAgICAgICAgICAvLyB0bXAyID0gdG1wMS5zcXVhcmUoKTtcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9zcXVhcmVcIiwgdDEsIHQyKSxcblxuICAgICAgICAgICAgLy8gdG1wMyA9ICh0bXAxICsgci54KS5zcXVhcmUoKSAtIHRtcDAgLSB0bXAyO1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCB0MSwgUngsIHQzKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9zcXVhcmVcIiwgdDMsIHQzKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9zdWJcIiwgdDMsIHQwLCB0MyksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfc3ViXCIsIHQzLCB0MiwgdDMpLFxuXG4gICAgICAgICAgICAvLyB0bXAzID0gdG1wMyArIHRtcDM7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIHQzLCB0MywgdDMpLFxuXG4gICAgICAgICAgICAvLyB0bXA0ID0gdG1wMCArIHRtcDAgKyB0bXAwO1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCB0MCwgdDAsIHQ0KSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgdDQsIHQwLCB0NCksXG5cbiAgICAgICAgICAgIC8vIHRtcDYgPSByLnggKyB0bXA0O1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCBSeCwgdDQsIHQ2KSxcblxuICAgICAgICAgICAgLy8gdG1wNSA9IHRtcDQuc3F1YXJlKCk7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfc3F1YXJlXCIsIHQ0LCB0NSksXG5cbiAgICAgICAgICAgIC8vIHpzcXVhcmVkID0gci56LnNxdWFyZSgpO1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX3NxdWFyZVwiLCBSeiwgenNxdWFyZWQpLFxuXG4gICAgICAgICAgICAvLyByLnggPSB0bXA1IC0gdG1wMyAtIHRtcDM7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfc3ViXCIsIHQ1LCB0MywgUngpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX3N1YlwiLCBSeCwgdDMsIFJ4KSxcblxuICAgICAgICAgICAgLy8gci56ID0gKHIueiArIHIueSkuc3F1YXJlKCkgLSB0bXAxIC0genNxdWFyZWQ7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIFJ6LCBSeSwgUnopLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX3NxdWFyZVwiLCBSeiwgUnopLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX3N1YlwiLCBSeiwgdDEsIFJ6KSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9zdWJcIiwgUnosIHpzcXVhcmVkLCBSeiksXG5cbiAgICAgICAgICAgIC8vIHIueSA9ICh0bXAzIC0gci54KSAqIHRtcDQ7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfc3ViXCIsIHQzLCBSeCwgUnkpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX211bFwiLCBSeSwgdDQsIFJ5KSxcblxuICAgICAgICAgICAgLy8gdG1wMiA9IHRtcDIgKyB0bXAyO1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCB0MiwgdDIsIHQyKSxcblxuICAgICAgICAgICAgLy8gdG1wMiA9IHRtcDIgKyB0bXAyO1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCB0MiwgdDIsIHQyKSxcblxuICAgICAgICAgICAgLy8gdG1wMiA9IHRtcDIgKyB0bXAyO1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCB0MiwgdDIsIHQyKSxcblxuICAgICAgICAgICAgLy8gci55IC09IHRtcDI7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfc3ViXCIsIFJ5LCB0MiwgUnkpLFxuXG4gICAgICAgICAgICAvLyB0bXAzID0gdG1wNCAqIHpzcXVhcmVkO1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX211bFwiLCB0NCwgenNxdWFyZWQsIHQzKSxcblxuICAgICAgICAgICAgLy8gdG1wMyA9IHRtcDMgKyB0bXAzO1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCB0MywgdDMsIHQzKSxcblxuICAgICAgICAgICAgLy8gdG1wMyA9IC10bXAzO1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX25lZ1wiLCB0MywgdDMpLFxuXG4gICAgICAgICAgICAvLyB0bXA2ID0gdG1wNi5zcXVhcmUoKSAtIHRtcDAgLSB0bXA1O1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX3NxdWFyZVwiLCB0NiwgdDYpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX3N1YlwiLCB0NiwgdDAsIHQ2KSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9zdWJcIiwgdDYsIHQ1LCB0NiksXG5cbiAgICAgICAgICAgIC8vIHRtcDEgPSB0bXAxICsgdG1wMTtcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgdDEsIHQxLCB0MSksXG5cbiAgICAgICAgICAgIC8vIHRtcDEgPSB0bXAxICsgdG1wMTtcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgdDEsIHQxLCB0MSksXG5cbiAgICAgICAgICAgIC8vIHRtcDYgPSB0bXA2IC0gdG1wMTtcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9zdWJcIiwgdDYsIHQxLCB0NiksXG5cbiAgICAgICAgICAgIC8vIHRtcDAgPSByLnogKiB6c3F1YXJlZDtcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9tdWxcIiwgUnosIHpzcXVhcmVkLCB0MCksXG5cbiAgICAgICAgICAgIC8vIHRtcDAgPSB0bXAwICsgdG1wMDtcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgdDAsIHQwLCB0MCksXG5cbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBidWlsZFByZXBBZGRTdGVwKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCsgXCJfcHJlcEFkZFN0ZXBcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJSXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiUVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInJcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCBSeCAgPSBjLmdldExvY2FsKFwiUlwiKTtcbiAgICAgICAgY29uc3QgUnkgID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJSXCIpLCBjLmkzMl9jb25zdCgyKm44cSkpO1xuICAgICAgICBjb25zdCBSeiAgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcIlJcIiksIGMuaTMyX2NvbnN0KDQqbjhxKSk7XG5cbiAgICAgICAgY29uc3QgUXggID0gYy5nZXRMb2NhbChcIlFcIik7XG4gICAgICAgIGNvbnN0IFF5ICA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwiUVwiKSwgYy5pMzJfY29uc3QoMipuOHEpKTtcblxuICAgICAgICBjb25zdCB0MTAgID0gYy5nZXRMb2NhbChcInJcIik7XG4gICAgICAgIGNvbnN0IHQxICA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwiclwiKSwgYy5pMzJfY29uc3QoMipuOHEpKTtcbiAgICAgICAgY29uc3QgdDkgID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJyXCIpLCBjLmkzMl9jb25zdCg0Km44cSkpO1xuXG4gICAgICAgIGNvbnN0IHpzcXVhcmVkID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYyc2l6ZSkpO1xuICAgICAgICBjb25zdCB5c3F1YXJlZCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMnNpemUpKTtcbiAgICAgICAgY29uc3QgenRzcXVhcmVkID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYyc2l6ZSkpO1xuICAgICAgICBjb25zdCB0MCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMnNpemUpKTtcbiAgICAgICAgY29uc3QgdDIgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjJzaXplKSk7XG4gICAgICAgIGNvbnN0IHQzID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYyc2l6ZSkpO1xuICAgICAgICBjb25zdCB0NCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMnNpemUpKTtcbiAgICAgICAgY29uc3QgdDUgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjJzaXplKSk7XG4gICAgICAgIGNvbnN0IHQ2ID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYyc2l6ZSkpO1xuICAgICAgICBjb25zdCB0NyA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMnNpemUpKTtcbiAgICAgICAgY29uc3QgdDggPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjJzaXplKSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuXG4gICAgICAgICAgICAvLyB6c3F1YXJlZCA9IHIuei5zcXVhcmUoKTtcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9zcXVhcmVcIiwgUnosIHpzcXVhcmVkKSxcblxuICAgICAgICAgICAgLy8geXNxdWFyZWQgPSBxLnkuc3F1YXJlKCk7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfc3F1YXJlXCIsIFF5LCB5c3F1YXJlZCksXG5cbiAgICAgICAgICAgIC8vIHQwID0genNxdWFyZWQgKiBxLng7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbXVsXCIsIHpzcXVhcmVkLCBReCwgdDApLFxuXG4gICAgICAgICAgICAvLyB0MSA9ICgocS55ICsgci56KS5zcXVhcmUoKSAtIHlzcXVhcmVkIC0genNxdWFyZWQpICogenNxdWFyZWQ7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIFF5LCBSeiwgdDEpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX3NxdWFyZVwiLCB0MSwgdDEpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX3N1YlwiLCB0MSwgeXNxdWFyZWQsIHQxKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9zdWJcIiwgdDEsIHpzcXVhcmVkLCB0MSksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbXVsXCIsIHQxLCB6c3F1YXJlZCwgdDEpLFxuXG4gICAgICAgICAgICAvLyB0MiA9IHQwIC0gci54O1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX3N1YlwiLCB0MCwgUngsIHQyKSxcblxuICAgICAgICAgICAgLy8gdDMgPSB0Mi5zcXVhcmUoKTtcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9zcXVhcmVcIiwgdDIsIHQzKSxcblxuICAgICAgICAgICAgLy8gdDQgPSB0MyArIHQzO1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCB0MywgdDMsIHQ0KSxcblxuICAgICAgICAgICAgLy8gdDQgPSB0NCArIHQ0O1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCB0NCwgdDQsIHQ0KSxcblxuICAgICAgICAgICAgLy8gdDUgPSB0NCAqIHQyO1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX211bFwiLCB0NCwgdDIsIHQ1KSxcblxuICAgICAgICAgICAgLy8gdDYgPSB0MSAtIHIueSAtIHIueTtcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9zdWJcIiwgdDEsIFJ5LCB0NiksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfc3ViXCIsIHQ2LCBSeSwgdDYpLFxuXG4gICAgICAgICAgICAvLyB0OSA9IHQ2ICogcS54O1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX211bFwiLCB0NiwgUXgsIHQ5KSxcblxuICAgICAgICAgICAgLy8gdDcgPSB0NCAqIHIueDtcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9tdWxcIiwgdDQsIFJ4LCB0NyksXG5cbiAgICAgICAgICAgIC8vIHIueCA9IHQ2LnNxdWFyZSgpIC0gdDUgLSB0NyAtIHQ3O1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX3NxdWFyZVwiLCB0NiwgUngpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX3N1YlwiLCBSeCwgdDUsIFJ4KSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9zdWJcIiwgUngsIHQ3LCBSeCksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfc3ViXCIsIFJ4LCB0NywgUngpLFxuXG4gICAgICAgICAgICAvLyByLnogPSAoci56ICsgdDIpLnNxdWFyZSgpIC0genNxdWFyZWQgLSB0MztcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgUnosIHQyLCBSeiksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfc3F1YXJlXCIsIFJ6LCBSeiksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfc3ViXCIsIFJ6LCB6c3F1YXJlZCwgUnopLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX3N1YlwiLCBSeiwgdDMsIFJ6KSxcblxuICAgICAgICAgICAgLy8gdDEwID0gcS55ICsgci56O1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCBReSwgUnosIHQxMCksXG5cbiAgICAgICAgICAgIC8vIHQ4ID0gKHQ3IC0gci54KSAqIHQ2O1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX3N1YlwiLCB0NywgUngsIHQ4KSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9tdWxcIiwgdDgsIHQ2LCB0OCksXG5cbiAgICAgICAgICAgIC8vIHQwID0gci55ICogdDU7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbXVsXCIsIFJ5LCB0NSwgdDApLFxuXG4gICAgICAgICAgICAvLyB0MCA9IHQwICsgdDA7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIHQwLCB0MCwgdDApLFxuXG4gICAgICAgICAgICAvLyByLnkgPSB0OCAtIHQwO1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX3N1YlwiLCB0OCwgdDAsIFJ5KSxcblxuICAgICAgICAgICAgLy8gdDEwID0gdDEwLnNxdWFyZSgpIC0geXNxdWFyZWQ7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfc3F1YXJlXCIsIHQxMCwgdDEwKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9zdWJcIiwgdDEwLCB5c3F1YXJlZCwgdDEwKSxcblxuICAgICAgICAgICAgLy8genRzcXVhcmVkID0gci56LnNxdWFyZSgpO1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX3NxdWFyZVwiLCBSeiwgenRzcXVhcmVkKSxcblxuICAgICAgICAgICAgLy8gdDEwID0gdDEwIC0genRzcXVhcmVkO1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX3N1YlwiLCB0MTAsIHp0c3F1YXJlZCwgdDEwKSxcblxuICAgICAgICAgICAgLy8gdDkgPSB0OSArIHQ5IC0gdDEwO1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCB0OSwgdDksIHQ5KSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9zdWJcIiwgdDksIHQxMCwgdDkpLFxuXG4gICAgICAgICAgICAvLyB0MTAgPSByLnogKyByLno7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIFJ6LCBSeiwgdDEwKSxcblxuICAgICAgICAgICAgLy8gdDYgPSAtdDY7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbmVnXCIsIHQ2LCB0NiksXG5cbiAgICAgICAgICAgIC8vIHQxID0gdDYgKyB0NjtcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgdDYsIHQ2LCB0MSksXG4gICAgICAgICk7XG4gICAgfVxuXG5cbiAgICBmdW5jdGlvbiBidWlsZFByZXBhcmVHMigpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrIFwiX3ByZXBhcmVHMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInBRXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicHByZVFcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJwQ29lZlwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcImlcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuXG4gICAgICAgIGNvbnN0IFEgPSBjLmdldExvY2FsKFwicFFcIik7XG5cbiAgICAgICAgY29uc3QgcFIgPSBtb2R1bGUuYWxsb2MoZjJzaXplKjMpO1xuICAgICAgICBjb25zdCBSID0gYy5pMzJfY29uc3QocFIpO1xuXG4gICAgICAgIGNvbnN0IGJhc2UgPSBjLmdldExvY2FsKFwicHByZVFcIik7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5jYWxsKGcybVByZWZpeCArIFwiX25vcm1hbGl6ZVwiLCBRLCBiYXNlKSxcbiAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgYy5jYWxsKGcybVByZWZpeCArIFwiX2lzWmVyb1wiLCBiYXNlKSxcbiAgICAgICAgICAgICAgICBjLnJldChbXSlcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjLmNhbGwoZzJtUHJlZml4ICsgXCJfY29weVwiLCBiYXNlLCBSKSxcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJwQ29lZlwiLCBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInBwcmVRXCIpLCBjLmkzMl9jb25zdChmMnNpemUqMykpKSxcbiAgICAgICAgKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLnNldExvY2FsKFwiaVwiLCBjLmkzMl9jb25zdChhdGVMb29wQml0Qnl0ZXMubGVuZ3RoLTIpKSxcbiAgICAgICAgICAgIGMuYmxvY2soYy5sb29wKFxuXG4gICAgICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX3ByZXBEYmxTdGVwXCIsIFIsIGMuZ2V0TG9jYWwoXCJwQ29lZlwiKSksXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcInBDb2VmXCIsIGMuaTMyX2FkZChjLmdldExvY2FsKFwicENvZWZcIiksIGMuaTMyX2NvbnN0KGF0ZUNvZWZTaXplKSkpLFxuXG4gICAgICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfbG9hZDhfcyhjLmdldExvY2FsKFwiaVwiKSwgcEF0ZUxvb3BCaXRCeXRlcyksXG4gICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLmMuY2FsbChwcmVmaXggKyBcIl9wcmVwQWRkU3RlcFwiLCBSLCBiYXNlLCBjLmdldExvY2FsKFwicENvZWZcIikpLFxuICAgICAgICAgICAgICAgICAgICAgICAgLi4uYy5zZXRMb2NhbChcInBDb2VmXCIsIGMuaTMyX2FkZChjLmdldExvY2FsKFwicENvZWZcIiksIGMuaTMyX2NvbnN0KGF0ZUNvZWZTaXplKSkpLFxuICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBjLmJyX2lmKDEsIGMuaTMyX2VxeiAoIGMuZ2V0TG9jYWwoXCJpXCIpICkpLFxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpXCIsIGMuaTMyX3N1YihjLmdldExvY2FsKFwiaVwiKSwgYy5pMzJfY29uc3QoMSkpKSxcbiAgICAgICAgICAgICAgICBjLmJyKDApXG4gICAgICAgICAgICApKVxuICAgICAgICApO1xuICAgIH1cblxuXG4gICAgZnVuY3Rpb24gYnVpbGRGNk11bDEoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24oZjZtUHJlZml4KyBcIl9tdWwxXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicEFcIiwgXCJpMzJcIik7ICAgIC8vIEY2XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwQzFcIiwgXCJpMzJcIik7ICAgLy8gRjJcbiAgICAgICAgZi5hZGRQYXJhbShcInBSXCIsIFwiaTMyXCIpOyAgICAvLyBGNlxuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgQV9jMCA9IGMuZ2V0TG9jYWwoXCJwQVwiKTtcbiAgICAgICAgY29uc3QgQV9jMSA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwicEFcIiksIGMuaTMyX2NvbnN0KGYxc2l6ZSoyKSk7XG4gICAgICAgIGNvbnN0IEFfYzIgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInBBXCIpLCBjLmkzMl9jb25zdChmMXNpemUqNCkpO1xuXG4gICAgICAgIGNvbnN0IGMxICA9IGMuZ2V0TG9jYWwoXCJwQzFcIik7XG5cbiAgICAgICAgY29uc3QgdDEgPSBjLmdldExvY2FsKFwicFJcIik7XG4gICAgICAgIGNvbnN0IHQyID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwUlwiKSwgYy5pMzJfY29uc3QoZjFzaXplKjIpKTtcbiAgICAgICAgY29uc3QgYl9iID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwUlwiKSwgYy5pMzJfY29uc3QoZjFzaXplKjQpKTtcblxuICAgICAgICBjb25zdCBBYzBfQWMxID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYxc2l6ZSoyKSk7XG4gICAgICAgIGNvbnN0IEFjMV9BYzIgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjFzaXplKjIpKTtcblxuICAgICAgICBmLmFkZENvZGUoXG5cbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgQV9jMCwgQV9jMSwgQWMwX0FjMSksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIEFfYzEsIEFfYzIsIEFjMV9BYzIpLFxuXG4gICAgICAgICAgICAvLyBsZXQgYl9iID0gc2VsZi5jMSAqIGMxO1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX211bFwiLCBBX2MxLCBjMSwgYl9iKSxcblxuICAgICAgICAgICAgLy8gbGV0IHQxID0gKHNlbGYuYzEgKyBzZWxmLmMyKSAqIGMxIC0gYl9iO1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX211bFwiLCBBYzFfQWMyLCBjMSwgdDEpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX3N1YlwiLCB0MSwgYl9iLCB0MSksXG5cbiAgICAgICAgICAgIC8vIGxldCB0MSA9IHQxLm11bF9ieV9ub25yZXNpZHVlKCk7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbXVsTlJcIiwgdDEsIHQxKSxcblxuICAgICAgICAgICAgLy8gbGV0IHQyID0gKHNlbGYuYzAgKyBzZWxmLmMxKSAqIGMxIC0gYl9iO1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX211bFwiLCBBYzBfQWMxLCBjMSwgdDIpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX3N1YlwiLCB0MiwgYl9iLCB0MiksXG4gICAgICAgICk7XG4gICAgfVxuICAgIGJ1aWxkRjZNdWwxKCk7XG5cbiAgICBmdW5jdGlvbiBidWlsZEY2TXVsMDEoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24oZjZtUHJlZml4KyBcIl9tdWwwMVwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInBBXCIsIFwiaTMyXCIpOyAgICAvLyBGNlxuICAgICAgICBmLmFkZFBhcmFtKFwicEMwXCIsIFwiaTMyXCIpOyAgIC8vIEYyXG4gICAgICAgIGYuYWRkUGFyYW0oXCJwQzFcIiwgXCJpMzJcIik7ICAgLy8gRjJcbiAgICAgICAgZi5hZGRQYXJhbShcInBSXCIsIFwiaTMyXCIpOyAgICAvLyBGNlxuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgQV9jMCA9IGMuZ2V0TG9jYWwoXCJwQVwiKTtcbiAgICAgICAgY29uc3QgQV9jMSA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwicEFcIiksIGMuaTMyX2NvbnN0KGYxc2l6ZSoyKSk7XG4gICAgICAgIGNvbnN0IEFfYzIgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInBBXCIpLCBjLmkzMl9jb25zdChmMXNpemUqNCkpO1xuXG4gICAgICAgIGNvbnN0IGMwICA9IGMuZ2V0TG9jYWwoXCJwQzBcIik7XG4gICAgICAgIGNvbnN0IGMxICA9IGMuZ2V0TG9jYWwoXCJwQzFcIik7XG5cbiAgICAgICAgY29uc3QgdDEgPSBjLmdldExvY2FsKFwicFJcIik7XG4gICAgICAgIGNvbnN0IHQyID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwUlwiKSwgYy5pMzJfY29uc3QoZjFzaXplKjIpKTtcbiAgICAgICAgY29uc3QgdDMgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInBSXCIpLCBjLmkzMl9jb25zdChmMXNpemUqNCkpO1xuXG4gICAgICAgIGNvbnN0IGFfYSA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMXNpemUqMikpO1xuICAgICAgICBjb25zdCBiX2IgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjFzaXplKjIpKTtcbiAgICAgICAgY29uc3QgQWMwX0FjMSA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMXNpemUqMikpO1xuICAgICAgICBjb25zdCBBYzBfQWMyID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYxc2l6ZSoyKSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgLy8gbGV0IGFfYSA9IHNlbGYuYzAgKiBjMDtcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9tdWxcIiwgQV9jMCwgYzAsIGFfYSksXG5cbiAgICAgICAgICAgIC8vIGxldCBiX2IgPSBzZWxmLmMxICogYzE7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbXVsXCIsIEFfYzEsIGMxLCBiX2IpLFxuXG5cbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgQV9jMCwgQV9jMSwgQWMwX0FjMSksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIEFfYzAsIEFfYzIsIEFjMF9BYzIpLFxuXG4gICAgICAgICAgICAvLyBsZXQgdDEgPSAoc2VsZi5jMSArIHNlbGYuYzIpICogYzEgLSBiX2I7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIEFfYzEsIEFfYzIsIHQxKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9tdWxcIiwgdDEsIGMxLCB0MSksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfc3ViXCIsIHQxLCBiX2IsIHQxKSxcblxuICAgICAgICAgICAgLy8gbGV0IHQxID0gdDEubXVsX2J5X25vbnJlc2lkdWUoKSArIGFfYTtcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9tdWxOUlwiLCB0MSwgdDEpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCB0MSwgYV9hLCB0MSksXG5cbiAgICAgICAgICAgIC8vIGxldCB0MiA9IChjMCArIGMxKSAqIChzZWxmLmMwICsgc2VsZi5jMSkgLSBhX2EgLSBiX2I7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIGMwLCBjMSwgdDIpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX211bFwiLCB0MiwgQWMwX0FjMSwgdDIpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX3N1YlwiLCB0MiwgYV9hLCB0MiksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfc3ViXCIsIHQyLCBiX2IsIHQyKSxcblxuICAgICAgICAgICAgLy8gbGV0IHQzID0gKHNlbGYuYzAgKyBzZWxmLmMyKSAqIGMwIC0gYV9hICsgYl9iO1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX211bFwiLCBBYzBfQWMyLCBjMCwgdDMpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX3N1YlwiLCB0MywgYV9hLCB0MyksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIHQzLCBiX2IsIHQzKSxcblxuXG4gICAgICAgICk7XG4gICAgfVxuICAgIGJ1aWxkRjZNdWwwMSgpO1xuXG5cbiAgICBmdW5jdGlvbiBidWlsZEYxMk11bDAxNCgpIHtcblxuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKGZ0bVByZWZpeCsgXCJfbXVsMDE0XCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicEFcIiwgXCJpMzJcIik7ICAgIC8vIEYxMlxuICAgICAgICBmLmFkZFBhcmFtKFwicEMwXCIsIFwiaTMyXCIpOyAgIC8vIEYyXG4gICAgICAgIGYuYWRkUGFyYW0oXCJwQzFcIiwgXCJpMzJcIik7ICAgLy8gRjJcbiAgICAgICAgZi5hZGRQYXJhbShcInBDNFwiLCBcImkzMlwiKTsgICAvLyBGMlxuICAgICAgICBmLmFkZFBhcmFtKFwicFJcIiwgXCJpMzJcIik7ICAgIC8vIEYxMlxuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cblxuICAgICAgICBjb25zdCBBX2MwID0gYy5nZXRMb2NhbChcInBBXCIpO1xuICAgICAgICBjb25zdCBBX2MxID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwQVwiKSwgYy5pMzJfY29uc3QoZjFzaXplKjYpKTtcblxuICAgICAgICBjb25zdCBjMCAgPSBjLmdldExvY2FsKFwicEMwXCIpO1xuICAgICAgICBjb25zdCBjMSAgPSBjLmdldExvY2FsKFwicEMxXCIpO1xuICAgICAgICBjb25zdCBjNCAgPSBjLmdldExvY2FsKFwicEM0XCIpO1xuXG4gICAgICAgIGNvbnN0IGFhID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYxc2l6ZSo2KSk7XG4gICAgICAgIGNvbnN0IGJiID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYxc2l6ZSo2KSk7XG4gICAgICAgIGNvbnN0IG8gPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjFzaXplKjIpKTtcblxuICAgICAgICBjb25zdCBSX2MwID0gYy5nZXRMb2NhbChcInBSXCIpO1xuICAgICAgICBjb25zdCBSX2MxID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwUlwiKSwgYy5pMzJfY29uc3QoZjFzaXplKjYpKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICAvLyBsZXQgYWEgPSBzZWxmLmMwLm11bF9ieV8wMShjMCwgYzEpO1xuICAgICAgICAgICAgYy5jYWxsKGY2bVByZWZpeCArIFwiX211bDAxXCIsIEFfYzAsIGMwLCBjMSwgYWEpLFxuXG4gICAgICAgICAgICAvLyBsZXQgYmIgPSBzZWxmLmMxLm11bF9ieV8xKGM0KTtcbiAgICAgICAgICAgIGMuY2FsbChmNm1QcmVmaXggKyBcIl9tdWwxXCIsIEFfYzEsIGM0LCBiYiksXG5cbiAgICAgICAgICAgIC8vIGxldCBvID0gYzEgKyBjNDtcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgYzEsIGM0LCBvKSxcblxuICAgICAgICAgICAgLy8gbGV0IGMxID0gc2VsZi5jMSArIHNlbGYuYzA7XG4gICAgICAgICAgICBjLmNhbGwoZjZtUHJlZml4ICsgXCJfYWRkXCIsIEFfYzEsIEFfYzAsIFJfYzEpLFxuXG4gICAgICAgICAgICAvLyBsZXQgYzEgPSBjMS5tdWxfYnlfMDEoYzAsICZvKTtcbiAgICAgICAgICAgIGMuY2FsbChmNm1QcmVmaXggKyBcIl9tdWwwMVwiLCBSX2MxLCBjMCwgbywgUl9jMSksXG5cbiAgICAgICAgICAgIC8vIGxldCBjMSA9IGMxIC0gYWEgLSBiYjtcbiAgICAgICAgICAgIGMuY2FsbChmNm1QcmVmaXggKyBcIl9zdWJcIiwgUl9jMSwgYWEsIFJfYzEpLFxuICAgICAgICAgICAgYy5jYWxsKGY2bVByZWZpeCArIFwiX3N1YlwiLCBSX2MxLCBiYiwgUl9jMSksXG5cbiAgICAgICAgICAgIC8vIGxldCBjMCA9IGJiO1xuICAgICAgICAgICAgYy5jYWxsKGY2bVByZWZpeCArIFwiX2NvcHlcIiwgYmIsIFJfYzApLFxuXG4gICAgICAgICAgICAvLyBsZXQgYzAgPSBjMC5tdWxfYnlfbm9ucmVzaWR1ZSgpO1xuICAgICAgICAgICAgYy5jYWxsKGY2bVByZWZpeCArIFwiX211bE5SXCIsIFJfYzAsIFJfYzApLFxuXG4gICAgICAgICAgICAvLyBsZXQgYzAgPSBjMCArIGFhO1xuICAgICAgICAgICAgYy5jYWxsKGY2bVByZWZpeCArIFwiX2FkZFwiLCBSX2MwLCBhYSwgUl9jMCksXG4gICAgICAgICk7XG4gICAgfVxuICAgIGJ1aWxkRjEyTXVsMDE0KCk7XG5cblxuICAgIGZ1bmN0aW9uIGJ1aWxkRUxMKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCsgXCJfZWxsXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicFBcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwQ29lZnNcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwRlwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IFB4ICA9IGMuZ2V0TG9jYWwoXCJwUFwiKTtcbiAgICAgICAgY29uc3QgUHkgID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwUFwiKSwgYy5pMzJfY29uc3QobjhxKSk7XG5cbiAgICAgICAgY29uc3QgRiAgPSBjLmdldExvY2FsKFwicEZcIik7XG5cbiAgICAgICAgY29uc3QgY29lZjBfMCAgPSBjLmdldExvY2FsKFwicENvZWZzXCIpO1xuICAgICAgICBjb25zdCBjb2VmMF8xICA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwicENvZWZzXCIpLCBjLmkzMl9jb25zdChmMXNpemUpKTtcbiAgICAgICAgY29uc3QgY29lZjFfMCAgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInBDb2Vmc1wiKSwgYy5pMzJfY29uc3QoZjFzaXplKjIpKTtcbiAgICAgICAgY29uc3QgY29lZjFfMSAgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInBDb2Vmc1wiKSwgYy5pMzJfY29uc3QoZjFzaXplKjMpKTtcbiAgICAgICAgY29uc3QgY29lZjIgID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwQ29lZnNcIiksIGMuaTMyX2NvbnN0KGYxc2l6ZSo0KSk7XG5cbiAgICAgICAgY29uc3QgcGMwID0gbW9kdWxlLmFsbG9jKGYxc2l6ZSoyKTtcbiAgICAgICAgY29uc3QgYzAgID0gYy5pMzJfY29uc3QocGMwKTtcbiAgICAgICAgY29uc3QgYzBfYzAgPSBjLmkzMl9jb25zdChwYzApO1xuICAgICAgICBjb25zdCBjMF9jMSA9IGMuaTMyX2NvbnN0KHBjMCtmMXNpemUpO1xuXG4gICAgICAgIGNvbnN0IHBjMSA9IG1vZHVsZS5hbGxvYyhmMXNpemUqMik7XG4gICAgICAgIGNvbnN0IGMxICA9IGMuaTMyX2NvbnN0KHBjMSk7XG4gICAgICAgIGNvbnN0IGMxX2MwID0gYy5pMzJfY29uc3QocGMxKTtcbiAgICAgICAgY29uc3QgYzFfYzEgPSBjLmkzMl9jb25zdChwYzErZjFzaXplKTtcbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgLy8gICAgIGxldCBtdXQgYzAgPSBjb2VmZnMuMDtcbiAgICAgICAgICAgIC8vICAgICBsZXQgbXV0IGMxID0gY29lZmZzLjE7XG4gICAgICAgICAgICAvL1xuICAgICAgICAgICAgLy8gICAgYzAuYzAgKj0gcC55O1xuICAgICAgICAgICAgLy8gICAgYzAuYzEgKj0gcC55O1xuICAgICAgICAgICAgLy9cbiAgICAgICAgICAgIC8vICAgIGMxLmMwICo9IHAueDtcbiAgICAgICAgICAgIC8vICAgIGMxLmMxICo9IHAueDtcbiAgICAgICAgICAgIC8vXG4gICAgICAgICAgICAvLyAgICAgZi5tdWxfYnlfMDE0KCZjb2VmZnMuMiwgJmMxLCAmYzApXG5cbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXggKyBcIl9tdWxcIiwgY29lZjBfMCwgUHksIGMwX2MwKSxcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXggKyBcIl9tdWxcIiwgY29lZjBfMSwgUHksIGMwX2MxKSxcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXggKyBcIl9tdWxcIiwgY29lZjFfMCwgUHgsIGMxX2MwKSxcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXggKyBcIl9tdWxcIiwgY29lZjFfMSwgUHgsIGMxX2MxKSxcblxuICAgICAgICAgICAgYy5jYWxsKGZ0bVByZWZpeCArIFwiX211bDAxNFwiLCBGLCBjb2VmMiwgYzEsIGMwLCBGKSxcblxuICAgICAgICApO1xuXG4gICAgfVxuICAgIGJ1aWxkRUxMKCk7XG5cbiAgICBmdW5jdGlvbiBidWlsZE1pbGxlckxvb3AoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4KyBcIl9taWxsZXJMb29wXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicHByZVBcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwcHJlUVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInJcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJwQ29lZlwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcImlcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCBwcmVQID0gYy5nZXRMb2NhbChcInBwcmVQXCIpO1xuXG4gICAgICAgIGNvbnN0IGNvZWZzICA9IGMuZ2V0TG9jYWwoXCJwQ29lZlwiKTtcblxuICAgICAgICBjb25zdCBGID0gYy5nZXRMb2NhbChcInJcIik7XG5cblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLmNhbGwoZnRtUHJlZml4ICsgXCJfb25lXCIsIEYpLFxuXG4gICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgIGMuY2FsbChnMW1QcmVmaXggKyBcIl9pc1plcm9cIiwgcHJlUCksXG4gICAgICAgICAgICAgICAgYy5yZXQoW10pXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICBjLmNhbGwoZzFtUHJlZml4ICsgXCJfaXNaZXJvXCIsIGMuZ2V0TG9jYWwoXCJwcHJlUVwiKSksXG4gICAgICAgICAgICAgICAgYy5yZXQoW10pXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcInBDb2VmXCIsIGMuaTMyX2FkZCggYy5nZXRMb2NhbChcInBwcmVRXCIpLCBjLmkzMl9jb25zdChmMnNpemUqMykpKSxcblxuICAgICAgICAgICAgYy5zZXRMb2NhbChcImlcIiwgYy5pMzJfY29uc3QoYXRlTG9vcEJpdEJ5dGVzLmxlbmd0aC0yKSksXG4gICAgICAgICAgICBjLmJsb2NrKGMubG9vcChcblxuXG4gICAgICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX2VsbFwiLCBwcmVQLCBjb2VmcywgIEYpLFxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJwQ29lZlwiLCBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInBDb2VmXCIpLCBjLmkzMl9jb25zdChhdGVDb2VmU2l6ZSkpKSxcblxuICAgICAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX2xvYWQ4X3MoYy5nZXRMb2NhbChcImlcIiksIHBBdGVMb29wQml0Qnl0ZXMpLFxuICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5jLmNhbGwocHJlZml4ICsgXCJfZWxsXCIsIHByZVAsIGNvZWZzLCAgRiksXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5jLnNldExvY2FsKFwicENvZWZcIiwgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwQ29lZlwiKSwgYy5pMzJfY29uc3QoYXRlQ29lZlNpemUpKSksXG4gICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGMuY2FsbChmdG1QcmVmaXggKyBcIl9zcXVhcmVcIiwgRiwgRiksXG5cbiAgICAgICAgICAgICAgICBjLmJyX2lmKDEsIGMuaTMyX2VxICggYy5nZXRMb2NhbChcImlcIiksIGMuaTMyX2NvbnN0KDEpICkpLFxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpXCIsIGMuaTMyX3N1YihjLmdldExvY2FsKFwiaVwiKSwgYy5pMzJfY29uc3QoMSkpKSxcbiAgICAgICAgICAgICAgICBjLmJyKDApXG4gICAgICAgICAgICApKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9lbGxcIiwgcHJlUCwgY29lZnMsICBGKSxcblxuICAgICAgICApO1xuXG5cbiAgICAgICAge1xuICAgICAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgICAgIGMuY2FsbChmdG1QcmVmaXggKyBcIl9jb25qdWdhdGVcIiwgRiwgRiksXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgfVxuXG5cbiAgICBmdW5jdGlvbiBidWlsZEZyb2Jlbml1c01hcChuKSB7XG4gICAgICAgIGNvbnN0IEYxMiA9IFtcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICBbMW4sIDBuXSxcbiAgICAgICAgICAgICAgICBbMW4sIDBuXSxcbiAgICAgICAgICAgICAgICBbMW4sIDBuXSxcbiAgICAgICAgICAgICAgICBbMW4sIDBuXSxcbiAgICAgICAgICAgICAgICBbMW4sIDBuXSxcbiAgICAgICAgICAgICAgICBbMW4sIDBuXSxcbiAgICAgICAgICAgICAgICBbMW4sIDBuXSxcbiAgICAgICAgICAgICAgICBbMW4sIDBuXSxcbiAgICAgICAgICAgICAgICBbMW4sIDBuXSxcbiAgICAgICAgICAgICAgICBbMW4sIDBuXSxcbiAgICAgICAgICAgICAgICBbMW4sIDBuXSxcbiAgICAgICAgICAgICAgICBbMW4sIDBuXSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgWzFuLCAwbl0sXG4gICAgICAgICAgICAgICAgWzM4NTA3NTQzNzAwMzcxNjkwMTE5NTIxNDcwNzYwNTEzNjQwNTcxNTg4MDc0MjA5NzA2ODI0Mzg2NzYwNTA1MjI2MTM2Mjg0MjMyMTk2Mzc3MjUwNzIxODI2OTcxMTMwNjI3Nzc4OTE1ODk1MDY0MjQ3NjBuLCAxNTE2NTUxODUxODQ0OTgzODE0NjU2NDI3NDk2ODQ1NDAwOTkzOTgwNzUzOTg5NjgzMjU0NDY2NTYwMDc2MTM1MTA0MDMyMjcyNzEyMDAxMzkzNzA1MDQ5MzIwMTU5NTI4ODYxNDYzMDQ3NjYxMzUwMjduXSxcbiAgICAgICAgICAgICAgICBbNzkzNDc5MzkwNzI5MjE1NTEyNjIxMzc5NzAxNjMzNDIxNDQ3MDYwODg2NzQwMjgxMDYwNDkzMDEwNDU2NDg3NDI3MjgxNjQ5MDc1NDc2MzA1NjIwNzU4NzMxNjIwMzUxbiwgMG5dLFxuICAgICAgICAgICAgICAgIFsyOTczNjc3NDA4OTg2NTYxMDQzNDQyNDY1MzQ2NTIwMTA4ODc5MTcyMDQyODgzMDA5MjQ5OTg5MTc2NDE1MDE4MDkxNDIwODA3MTkyMTgyNjM4NTY3MTE2MzE4NTc2NDcyNjQ5MzQ3MDE1OTE3NjkwNTMwbiwgMTAyODczMjE0NjIzNTEwNjM0OTk3NTMyNDQ3OTIxNTc5NTI3NzM4NDgzOTkzNjkyOTc1Nzg5NjE1NTY0MzExODAzMjYxMDg0MzI5ODY1NTIyNTg3NTU3MTMxMDU1MjU0MzAxNDY5MDg3ODM1NDg2OTI1N25dLFxuICAgICAgICAgICAgICAgIFs3OTM0NzkzOTA3MjkyMTU1MTI2MjEzNzk3MDE2MzM0MjE0NDcwNjA4ODY3NDAyODEwNjA0OTMwMTA0NTY0ODc0MjcyODE2NDkwNzU0NzYzMDU2MjA3NTg3MzE2MjAzNTBuLCAwbl0sXG4gICAgICAgICAgICAgICAgWzMxMjUzMzI1OTQxNzEwNTk0MjQ5MDgxMDgwOTYyMDQ2NDg5Nzg1NzAxMTgyODE5Nzc1NzU0MzU4MzI0MjI2MzE2MDE4MjQwMzQ0NjMzODI3Nzc5Mzc2MjEyNTA1OTI0MjU1MzU0OTMzMjA2ODM4MjU1NTduLCA4NzcwNzY5NjEwNTA2MDc5Njg1MDk2ODE3Mjk1MzEyNTUxNzc5ODY3NjQ1Mzc5NjE0MzI0NDk0OTk2MzU1MDQ1MjIyMDc2MTYwMjc0NTUwODY1MDUwNjYzNzg1MzY1OTAxMjg1NDQ1NzM1ODg3MzQyMzBuXSxcbiAgICAgICAgICAgICAgICBbNDAwMjQwOTU1NTIyMTY2NzM5MzQxNzc4OTgyNTczNTkwNDE1NjU1Njg4MjgxOTkzOTAwNzg4NTMzMjA1ODEzNjEyNDAzMTY1MDQ5MDgzNzg2NDQ0MjY4NzYyOTEyOTAxNTY2NDAzNzg5NDI3MjU1OTc4Nm4sIDBuXSxcbiAgICAgICAgICAgICAgICBbMTUxNjU1MTg1MTg0NDk4MzgxNDY1NjQyNzQ5Njg0NTQwMDk5Mzk4MDc1Mzk4OTY4MzI1NDQ2NjU2MDA3NjEzNTEwNDAzMjI3MjcxMjAwMTM5MzcwNTA0OTMyMDE1OTUyODg2MTQ2MzA0NzY2MTM1MDI3biwgMzg1MDc1NDM3MDAzNzE2OTAxMTk1MjE0NzA3NjA1MTM2NDA1NzE1ODgwNzQyMDk3MDY4MjQzODY3NjA1MDUyMjYxMzYyODQyMzIxOTYzNzcyNTA3MjE4MjY5NzExMzA2Mjc3Nzg5MTU4OTUwNjQyNDc2MG5dLFxuICAgICAgICAgICAgICAgIFs0MDAyNDA5NTU1MjIxNjY3MzkyNjI0MzEwNDM1MDA2Njg4NjQzOTM1NTAzMTE4MzA1NTg2NDM4MjcxMTcxMzk1ODQyOTcxMTU3NDgwMzgxMzc3MDE1NDA1OTgwMDUzNTM5MzU4NDE3MTM1NTQwOTM5NDM2biwgMG5dLFxuICAgICAgICAgICAgICAgIFsxMDI4NzMyMTQ2MjM1MTA2MzQ5OTc1MzI0NDc5MjE1Nzk1Mjc3Mzg0ODM5OTM2OTI5NzU3ODk2MTU1NjQzMTE4MDMyNjEwODQzMjk4NjU1MjI1ODc1NTcxMzEwNTUyNTQzMDE0NjkwODc4MzU0ODY5MjU3biwgMjk3MzY3NzQwODk4NjU2MTA0MzQ0MjQ2NTM0NjUyMDEwODg3OTE3MjA0Mjg4MzAwOTI0OTk4OTE3NjQxNTAxODA5MTQyMDgwNzE5MjE4MjYzODU2NzExNjMxODU3NjQ3MjY0OTM0NzAxNTkxNzY5MDUzMG5dLFxuICAgICAgICAgICAgICAgIFs0MDAyNDA5NTU1MjIxNjY3MzkyNjI0MzEwNDM1MDA2Njg4NjQzOTM1NTAzMTE4MzA1NTg2NDM4MjcxMTcxMzk1ODQyOTcxMTU3NDgwMzgxMzc3MDE1NDA1OTgwMDUzNTM5MzU4NDE3MTM1NTQwOTM5NDM3biwgMG5dLFxuICAgICAgICAgICAgICAgIFs4NzcwNzY5NjEwNTA2MDc5Njg1MDk2ODE3Mjk1MzEyNTUxNzc5ODY3NjQ1Mzc5NjE0MzI0NDk0OTk2MzU1MDQ1MjIyMDc2MTYwMjc0NTUwODY1MDUwNjYzNzg1MzY1OTAxMjg1NDQ1NzM1ODg3MzQyMzBuLCAzMTI1MzMyNTk0MTcxMDU5NDI0OTA4MTA4MDk2MjA0NjQ4OTc4NTcwMTE4MjgxOTc3NTc1NDM1ODMyNDIyNjMxNjAxODI0MDM0NDYzMzgyNzc3OTM3NjIxMjUwNTkyNDI1NTM1NDkzMzIwNjgzODI1NTU3bl0sXG4gICAgICAgICAgICBdXG4gICAgICAgIF07XG5cbiAgICAgICAgY29uc3QgRjYgPSBbXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgWzFuLCAwbl0sXG4gICAgICAgICAgICAgICAgWzFuLCAwbl0sXG4gICAgICAgICAgICAgICAgWzFuLCAwbl0sXG4gICAgICAgICAgICAgICAgWzFuLCAwbl0sXG4gICAgICAgICAgICAgICAgWzFuLCAwbl0sXG4gICAgICAgICAgICAgICAgWzFuLCAwbl0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgIFsxbiwgMG5dLFxuICAgICAgICAgICAgICAgIFswbiwgNDAwMjQwOTU1NTIyMTY2NzM5MjYyNDMxMDQzNTAwNjY4ODY0MzkzNTUwMzExODMwNTU4NjQzODI3MTE3MTM5NTg0Mjk3MTE1NzQ4MDM4MTM3NzAxNTQwNTk4MDA1MzUzOTM1ODQxNzEzNTU0MDkzOTQzNm5dLFxuICAgICAgICAgICAgICAgIFs3OTM0NzkzOTA3MjkyMTU1MTI2MjEzNzk3MDE2MzM0MjE0NDcwNjA4ODY3NDAyODEwNjA0OTMwMTA0NTY0ODc0MjcyODE2NDkwNzU0NzYzMDU2MjA3NTg3MzE2MjAzNTBuLCAwbl0sXG4gICAgICAgICAgICAgICAgWzBuLCAxbl0sXG4gICAgICAgICAgICAgICAgWzQwMDI0MDk1NTUyMjE2NjczOTI2MjQzMTA0MzUwMDY2ODg2NDM5MzU1MDMxMTgzMDU1ODY0MzgyNzExNzEzOTU4NDI5NzExNTc0ODAzODEzNzcwMTU0MDU5ODAwNTM1MzkzNTg0MTcxMzU1NDA5Mzk0MzZuLCAwbl0sXG4gICAgICAgICAgICAgICAgWzBuLCA3OTM0NzkzOTA3MjkyMTU1MTI2MjEzNzk3MDE2MzM0MjE0NDcwNjA4ODY3NDAyODEwNjA0OTMwMTA0NTY0ODc0MjcyODE2NDkwNzU0NzYzMDU2MjA3NTg3MzE2MjAzNTBuXSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgWzFuLCAwbl0sXG4gICAgICAgICAgICAgICAgWzQwMDI0MDk1NTUyMjE2NjczOTI2MjQzMTA0MzUwMDY2ODg2NDM5MzU1MDMxMTgzMDU1ODY0MzgyNzExNzEzOTU4NDI5NzExNTc0ODAzODEzNzcwMTU0MDU5ODAwNTM1MzkzNTg0MTcxMzU1NDA5Mzk0MzduLCAwbl0sXG4gICAgICAgICAgICAgICAgWzQwMDI0MDk1NTUyMjE2NjczOTI2MjQzMTA0MzUwMDY2ODg2NDM5MzU1MDMxMTgzMDU1ODY0MzgyNzExNzEzOTU4NDI5NzExNTc0ODAzODEzNzcwMTU0MDU5ODAwNTM1MzkzNTg0MTcxMzU1NDA5Mzk0MzZuLCAwbl0sXG4gICAgICAgICAgICAgICAgWzQwMDI0MDk1NTUyMjE2NjczOTM0MTc3ODk4MjU3MzU5MDQxNTY1NTY4ODI4MTk5MzkwMDc4ODUzMzIwNTgxMzYxMjQwMzE2NTA0OTA4Mzc4NjQ0NDI2ODc2MjkxMjkwMTU2NjQwMzc4OTQyNzI1NTk3ODZuLCAwbl0sXG4gICAgICAgICAgICAgICAgWzc5MzQ3OTM5MDcyOTIxNTUxMjYyMTM3OTcwMTYzMzQyMTQ0NzA2MDg4Njc0MDI4MTA2MDQ5MzAxMDQ1NjQ4NzQyNzI4MTY0OTA3NTQ3NjMwNTYyMDc1ODczMTYyMDM1MG4sIDBuXSxcbiAgICAgICAgICAgICAgICBbNzkzNDc5MzkwNzI5MjE1NTEyNjIxMzc5NzAxNjMzNDIxNDQ3MDYwODg2NzQwMjgxMDYwNDkzMDEwNDU2NDg3NDI3MjgxNjQ5MDc1NDc2MzA1NjIwNzU4NzMxNjIwMzUxbiwgMG5dLFxuICAgICAgICAgICAgXVxuICAgICAgICBdO1xuXG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24oZnRtUHJlZml4ICsgXCJfZnJvYmVuaXVzTWFwXCIrbik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiclwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGZvciAobGV0IGk9MDsgaTw2OyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IFggPSAoaT09MCkgPyBjLmdldExvY2FsKFwieFwiKSA6IGMuaTMyX2FkZChjLmdldExvY2FsKFwieFwiKSwgYy5pMzJfY29uc3QoaSpmMnNpemUpKTtcbiAgICAgICAgICAgIGNvbnN0IFhjMCA9IFg7XG4gICAgICAgICAgICBjb25zdCBYYzEgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInhcIiksIGMuaTMyX2NvbnN0KGkqZjJzaXplICsgZjFzaXplKSk7XG4gICAgICAgICAgICBjb25zdCBSID0gKGk9PTApID8gYy5nZXRMb2NhbChcInJcIikgOiBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInJcIiksIGMuaTMyX2NvbnN0KGkqZjJzaXplKSk7XG4gICAgICAgICAgICBjb25zdCBSYzAgPSBSO1xuICAgICAgICAgICAgY29uc3QgUmMxID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJyXCIpLCBjLmkzMl9jb25zdChpKmYyc2l6ZSArIGYxc2l6ZSkpO1xuICAgICAgICAgICAgY29uc3QgY29lZiA9IG11bDIoRjEyW01hdGguZmxvb3IoaS8zKV1bbiUxMl0gLCBGNltpJTNdW24lNl0pO1xuICAgICAgICAgICAgY29uc3QgcENvZWYgPSBtb2R1bGUuYWxsb2MoW1xuICAgICAgICAgICAgICAgIC4uLnV0aWxzJDEuYmlnSW50MkJ5dGVzTEUodG9Nb250Z29tZXJ5KGNvZWZbMF0pLCBuOHEpLFxuICAgICAgICAgICAgICAgIC4uLnV0aWxzJDEuYmlnSW50MkJ5dGVzTEUodG9Nb250Z29tZXJ5KGNvZWZbMV0pLCBuOHEpLFxuICAgICAgICAgICAgXSk7XG4gICAgICAgICAgICBpZiAobiUyID09IDEpIHtcbiAgICAgICAgICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXggKyBcIl9jb3B5XCIsIFhjMCwgUmMwKSxcbiAgICAgICAgICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCArIFwiX25lZ1wiLCBYYzEsIFJjMSksXG4gICAgICAgICAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9tdWxcIiwgUiwgYy5pMzJfY29uc3QocENvZWYpLCBSKSxcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBmLmFkZENvZGUoYy5jYWxsKGYybVByZWZpeCArIFwiX211bFwiLCBYLCBjLmkzMl9jb25zdChwQ29lZiksIFIpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGZ1bmN0aW9uIG11bDIoYSwgYikge1xuICAgICAgICAgICAgY29uc3QgYWMwID0gYVswXTtcbiAgICAgICAgICAgIGNvbnN0IGFjMSA9IGFbMV07XG4gICAgICAgICAgICBjb25zdCBiYzAgPSBiWzBdO1xuICAgICAgICAgICAgY29uc3QgYmMxID0gYlsxXTtcbiAgICAgICAgICAgIGNvbnN0IHJlcyA9IFtcbiAgICAgICAgICAgICAgICAoYWMwICogYmMwIC0gKGFjMSAqIGJjMSkpICUgcSxcbiAgICAgICAgICAgICAgICAoYWMwICogYmMxICsgKGFjMSAqIGJjMCkpICUgcSxcbiAgICAgICAgICAgIF07XG4gICAgICAgICAgICBpZiAoaXNOZWdhdGl2ZSQxKHJlc1swXSkpIHJlc1swXSA9IHJlc1swXSArIHE7XG4gICAgICAgICAgICByZXR1cm4gcmVzO1xuICAgICAgICB9XG5cbiAgICB9XG5cblxuICAgIGZ1bmN0aW9uIGJ1aWxkQ3ljbG90b21pY1NxdWFyZSgpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrIFwiX19jeWNsb3RvbWljU3F1YXJlXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInJcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCB4MCA9IGMuZ2V0TG9jYWwoXCJ4XCIpO1xuICAgICAgICBjb25zdCB4NCA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwieFwiKSwgYy5pMzJfY29uc3QoZjJzaXplKSk7XG4gICAgICAgIGNvbnN0IHgzID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJ4XCIpLCBjLmkzMl9jb25zdCgyKmYyc2l6ZSkpO1xuICAgICAgICBjb25zdCB4MiA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwieFwiKSwgYy5pMzJfY29uc3QoMypmMnNpemUpKTtcbiAgICAgICAgY29uc3QgeDEgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInhcIiksIGMuaTMyX2NvbnN0KDQqZjJzaXplKSk7XG4gICAgICAgIGNvbnN0IHg1ID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJ4XCIpLCBjLmkzMl9jb25zdCg1KmYyc2l6ZSkpO1xuXG4gICAgICAgIGNvbnN0IHIwID0gYy5nZXRMb2NhbChcInJcIik7XG4gICAgICAgIGNvbnN0IHI0ID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJyXCIpLCBjLmkzMl9jb25zdChmMnNpemUpKTtcbiAgICAgICAgY29uc3QgcjMgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInJcIiksIGMuaTMyX2NvbnN0KDIqZjJzaXplKSk7XG4gICAgICAgIGNvbnN0IHIyID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJyXCIpLCBjLmkzMl9jb25zdCgzKmYyc2l6ZSkpO1xuICAgICAgICBjb25zdCByMSA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwiclwiKSwgYy5pMzJfY29uc3QoNCpmMnNpemUpKTtcbiAgICAgICAgY29uc3QgcjUgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInJcIiksIGMuaTMyX2NvbnN0KDUqZjJzaXplKSk7XG5cbiAgICAgICAgY29uc3QgdDAgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjJzaXplKSk7XG4gICAgICAgIGNvbnN0IHQxID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYyc2l6ZSkpO1xuICAgICAgICBjb25zdCB0MiA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMnNpemUpKTtcbiAgICAgICAgY29uc3QgdDMgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjJzaXplKSk7XG4gICAgICAgIGNvbnN0IHQ0ID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYyc2l6ZSkpO1xuICAgICAgICBjb25zdCB0NSA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMnNpemUpKTtcbiAgICAgICAgY29uc3QgdG1wID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYyc2l6ZSkpO1xuICAgICAgICBjb25zdCBBVVggPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjJzaXplKSk7XG5cblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICAvLyAgICAvLyB0MCArIHQxKnkgPSAoejAgKyB6MSp5KV4yID0gYV4yXG4gICAgICAgICAgICAvLyAgICB0bXAgPSB6MCAqIHoxO1xuICAgICAgICAgICAgLy8gICAgdDAgPSAoejAgKyB6MSkgKiAoejAgKyBteV9GcDY6Om5vbl9yZXNpZHVlICogejEpIC0gdG1wIC0gbXlfRnA2Ojpub25fcmVzaWR1ZSAqIHRtcDtcbiAgICAgICAgICAgIC8vICAgIHQxID0gdG1wICsgdG1wO1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX211bFwiLCB4MCwgeDEsIHRtcCksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbXVsTlJcIiwgeDEsIHQwKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgeDAsIHQwLCB0MCksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIHgwLCB4MSwgQVVYKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9tdWxcIiwgQVVYLCB0MCwgdDApLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX211bE5SXCIsIHRtcCwgQVVYKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgdG1wLCBBVVgsIEFVWCksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfc3ViXCIsIHQwLCBBVVgsIHQwKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgdG1wLCB0bXAsIHQxKSxcblxuICAgICAgICAgICAgLy8gIC8vIHQyICsgdDMqeSA9ICh6MiArIHozKnkpXjIgPSBiXjJcbiAgICAgICAgICAgIC8vICB0bXAgPSB6MiAqIHozO1xuICAgICAgICAgICAgLy8gIHQyID0gKHoyICsgejMpICogKHoyICsgbXlfRnA2Ojpub25fcmVzaWR1ZSAqIHozKSAtIHRtcCAtIG15X0ZwNjo6bm9uX3Jlc2lkdWUgKiB0bXA7XG4gICAgICAgICAgICAvLyAgdDMgPSB0bXAgKyB0bXA7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbXVsXCIsIHgyLCB4MywgdG1wKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9tdWxOUlwiLCB4MywgdDIpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCB4MiwgdDIsIHQyKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgeDIsIHgzLCBBVVgpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX211bFwiLCBBVVgsIHQyLCB0MiksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbXVsTlJcIiwgdG1wLCBBVVgpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCB0bXAsIEFVWCwgQVVYKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9zdWJcIiwgdDIsIEFVWCwgdDIpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCB0bXAsIHRtcCwgdDMpLFxuXG4gICAgICAgICAgICAvLyAgLy8gdDQgKyB0NSp5ID0gKHo0ICsgejUqeSleMiA9IGNeMlxuICAgICAgICAgICAgLy8gIHRtcCA9IHo0ICogejU7XG4gICAgICAgICAgICAvLyAgdDQgPSAoejQgKyB6NSkgKiAoejQgKyBteV9GcDY6Om5vbl9yZXNpZHVlICogejUpIC0gdG1wIC0gbXlfRnA2Ojpub25fcmVzaWR1ZSAqIHRtcDtcbiAgICAgICAgICAgIC8vICB0NSA9IHRtcCArIHRtcDtcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9tdWxcIiwgeDQsIHg1LCB0bXApLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX211bE5SXCIsIHg1LCB0NCksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIHg0LCB0NCwgdDQpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCB4NCwgeDUsIEFVWCksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbXVsXCIsIEFVWCwgdDQsIHQ0KSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9tdWxOUlwiLCB0bXAsIEFVWCksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIHRtcCwgQVVYLCBBVVgpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX3N1YlwiLCB0NCwgQVVYLCB0NCksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIHRtcCwgdG1wLCB0NSksXG5cbiAgICAgICAgICAgIC8vIEZvciBBXG4gICAgICAgICAgICAvLyB6MCA9IDMgKiB0MCAtIDIgKiB6MFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX3N1YlwiLCB0MCwgeDAsIHIwKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgcjAsIHIwLCByMCksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIHQwLCByMCwgcjApLFxuICAgICAgICAgICAgLy8gejEgPSAzICogdDEgKyAyICogejFcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgdDEsIHgxLCByMSksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIHIxLCByMSwgcjEpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCB0MSwgcjEsIHIxKSxcblxuICAgICAgICAgICAgLy8gRm9yIEJcbiAgICAgICAgICAgIC8vIHoyID0gMyAqICh4aSAqIHQ1KSArIDIgKiB6MlxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX211bFwiLCB0NSwgYy5pMzJfY29uc3QocEJsczEyMzgxVHdpc3QpLCBBVVgpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCBBVVgsIHgyLCByMiksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIHIyLCByMiwgcjIpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCBBVVgsIHIyLCByMiksXG4gICAgICAgICAgICAvLyB6MyA9IDMgKiB0NCAtIDIgKiB6M1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX3N1YlwiLCB0NCwgeDMsIHIzKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgcjMsIHIzLCByMyksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIHQ0LCByMywgcjMpLFxuXG4gICAgICAgICAgICAvLyBGb3IgQ1xuICAgICAgICAgICAgLy8gejQgPSAzICogdDIgLSAyICogejRcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9zdWJcIiwgdDIsIHg0LCByNCksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIHI0LCByNCwgcjQpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCB0MiwgcjQsIHI0KSxcbiAgICAgICAgICAgIC8vIHo1ID0gMyAqIHQzICsgMiAqIHo1XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIHQzLCB4NSwgcjUpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCByNSwgcjUsIHI1KSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgdDMsIHI1LCByNSksXG5cbiAgICAgICAgKTtcbiAgICB9XG5cblxuICAgIGZ1bmN0aW9uIGJ1aWxkQ3ljbG90b21pY0V4cChleHBvbmVudCwgaXNFeHBOZWdhdGl2ZSwgZm5OYW1lKSB7XG4gICAgICAgIGNvbnN0IGV4cG9uZW50TmFmQnl0ZXMgPSBuYWYoZXhwb25lbnQpLm1hcCggKGIpID0+IChiPT0tMSA/IDB4RkY6IGIpICk7XG4gICAgICAgIGNvbnN0IHBFeHBvbmVudE5hZkJ5dGVzID0gbW9kdWxlLmFsbG9jKGV4cG9uZW50TmFmQnl0ZXMpO1xuICAgICAgICAvLyBjb25zdCBwRXhwb25lbnQgPSBtb2R1bGUuYWxsb2ModXRpbHMuYmlnSW50MkJ5dGVzTEUoZXhwb25lbnQsIG44KSk7XG5cbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrIFwiX19jeWNsb3RvbWljRXhwX1wiK2ZuTmFtZSk7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiclwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcImJpdFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcImlcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCB4ID0gYy5nZXRMb2NhbChcInhcIik7XG5cbiAgICAgICAgY29uc3QgcmVzID0gYy5nZXRMb2NhbChcInJcIik7XG5cbiAgICAgICAgY29uc3QgaW52ZXJzZSA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmdHNpemUpKTtcblxuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuY2FsbChmdG1QcmVmaXggKyBcIl9jb25qdWdhdGVcIiwgeCwgaW52ZXJzZSksXG4gICAgICAgICAgICBjLmNhbGwoZnRtUHJlZml4ICsgXCJfb25lXCIsIHJlcyksXG5cbiAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgYy50ZWVMb2NhbChcImJpdFwiLCBjLmkzMl9sb2FkOF9zKGMuaTMyX2NvbnN0KGV4cG9uZW50TmFmQnl0ZXMubGVuZ3RoLTEpLCBwRXhwb25lbnROYWZCeXRlcykpLFxuICAgICAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX2VxKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImJpdFwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KDEpXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgIGMuY2FsbChmdG1QcmVmaXggKyBcIl9tdWxcIiwgcmVzLCB4LCByZXMpLFxuICAgICAgICAgICAgICAgICAgICBjLmNhbGwoZnRtUHJlZml4ICsgXCJfbXVsXCIsIHJlcywgaW52ZXJzZSwgcmVzKSxcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApLFxuXG4gICAgICAgICAgICBjLnNldExvY2FsKFwiaVwiLCBjLmkzMl9jb25zdChleHBvbmVudE5hZkJ5dGVzLmxlbmd0aC0yKSksXG4gICAgICAgICAgICBjLmJsb2NrKGMubG9vcChcbiAgICAgICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfX2N5Y2xvdG9taWNTcXVhcmVcIiwgcmVzLCByZXMpLFxuICAgICAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgICAgIGMudGVlTG9jYWwoXCJiaXRcIiwgYy5pMzJfbG9hZDhfcyhjLmdldExvY2FsKFwiaVwiKSwgcEV4cG9uZW50TmFmQnl0ZXMpKSxcbiAgICAgICAgICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2VxKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJiaXRcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QoMSlcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmNhbGwoZnRtUHJlZml4ICsgXCJfbXVsXCIsIHJlcywgeCwgcmVzKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuY2FsbChmdG1QcmVmaXggKyBcIl9tdWxcIiwgcmVzLCBpbnZlcnNlLCByZXMpLFxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBjLmJyX2lmKDEsIGMuaTMyX2VxeiAoIGMuZ2V0TG9jYWwoXCJpXCIpICkpLFxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpXCIsIGMuaTMyX3N1YihjLmdldExvY2FsKFwiaVwiKSwgYy5pMzJfY29uc3QoMSkpKSxcbiAgICAgICAgICAgICAgICBjLmJyKDApXG4gICAgICAgICAgICApKVxuICAgICAgICApO1xuXG4gICAgICAgIGlmIChpc0V4cE5lZ2F0aXZlKSB7XG4gICAgICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICAgICAgYy5jYWxsKGZ0bVByZWZpeCArIFwiX2Nvbmp1Z2F0ZVwiLCByZXMsIHJlcyksXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBidWlsZEZpbmFsRXhwb25lbnRpYXRpb24oKSB7XG4gICAgICAgIGJ1aWxkQ3ljbG90b21pY1NxdWFyZSgpO1xuICAgICAgICBidWlsZEN5Y2xvdG9taWNFeHAoZmluYWxFeHBaLCBmaW5hbEV4cElzTmVnYXRpdmUsIFwidzBcIik7XG5cbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrIFwiX2ZpbmFsRXhwb25lbnRpYXRpb25cIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiclwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IGVsdCA9IGMuZ2V0TG9jYWwoXCJ4XCIpO1xuICAgICAgICBjb25zdCByZXMgPSBjLmdldExvY2FsKFwiclwiKTtcbiAgICAgICAgY29uc3QgdDAgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZnRzaXplKSk7XG4gICAgICAgIGNvbnN0IHQxID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGZ0c2l6ZSkpO1xuICAgICAgICBjb25zdCB0MiA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmdHNpemUpKTtcbiAgICAgICAgY29uc3QgdDMgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZnRzaXplKSk7XG4gICAgICAgIGNvbnN0IHQ0ID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGZ0c2l6ZSkpO1xuICAgICAgICBjb25zdCB0NSA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmdHNpemUpKTtcbiAgICAgICAgY29uc3QgdDYgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZnRzaXplKSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuXG4gICAgICAgICAgICAvLyBsZXQgbXV0IHQwID0gZi5mcm9iZW5pdXNfbWFwKDYpXG4gICAgICAgICAgICBjLmNhbGwoZnRtUHJlZml4ICsgXCJfZnJvYmVuaXVzTWFwNlwiLCBlbHQsIHQwKSxcblxuICAgICAgICAgICAgLy8gbGV0IHQxID0gZi5pbnZlcnQoKVxuICAgICAgICAgICAgYy5jYWxsKGZ0bVByZWZpeCArIFwiX2ludmVyc2VcIiwgZWx0LCB0MSksXG5cbiAgICAgICAgICAgIC8vIGxldCBtdXQgdDIgPSB0MCAqIHQxO1xuICAgICAgICAgICAgYy5jYWxsKGZ0bVByZWZpeCArIFwiX211bFwiLCB0MCwgdDEsIHQyKSxcblxuICAgICAgICAgICAgLy8gdDEgPSB0Mi5jbG9uZSgpO1xuICAgICAgICAgICAgYy5jYWxsKGZ0bVByZWZpeCArIFwiX2NvcHlcIiwgdDIsIHQxKSxcblxuICAgICAgICAgICAgLy8gdDIgPSB0Mi5mcm9iZW5pdXNfbWFwKCkuZnJvYmVuaXVzX21hcCgpO1xuICAgICAgICAgICAgYy5jYWxsKGZ0bVByZWZpeCArIFwiX2Zyb2Jlbml1c01hcDJcIiwgdDIsIHQyKSxcblxuICAgICAgICAgICAgLy8gdDIgKj0gdDE7XG4gICAgICAgICAgICBjLmNhbGwoZnRtUHJlZml4ICsgXCJfbXVsXCIsIHQyLCB0MSwgdDIpLFxuXG5cbiAgICAgICAgICAgIC8vIHQxID0gY3ljbG90b21pY19zcXVhcmUodDIpLmNvbmp1Z2F0ZSgpO1xuICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX19jeWNsb3RvbWljU3F1YXJlXCIsIHQyLCB0MSksXG4gICAgICAgICAgICBjLmNhbGwoZnRtUHJlZml4ICsgXCJfY29uanVnYXRlXCIsIHQxLCB0MSksXG5cbiAgICAgICAgICAgIC8vIGxldCBtdXQgdDMgPSBjeWNvbG90b21pY19leHAodDIpO1xuICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX19jeWNsb3RvbWljRXhwX3cwXCIsIHQyLCB0MyksXG5cbiAgICAgICAgICAgIC8vIGxldCBtdXQgdDQgPSBjeWNsb3RvbWljX3NxdWFyZSh0Myk7XG4gICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfX2N5Y2xvdG9taWNTcXVhcmVcIiwgdDMsIHQ0KSxcblxuICAgICAgICAgICAgLy8gbGV0IG11dCB0NSA9IHQxICogdDM7XG4gICAgICAgICAgICBjLmNhbGwoZnRtUHJlZml4ICsgXCJfbXVsXCIsIHQxLCB0MywgdDUpLFxuXG4gICAgICAgICAgICAvLyB0MSA9IGN5Y29sb3RvbWljX2V4cCh0NSk7XG4gICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfX2N5Y2xvdG9taWNFeHBfdzBcIiwgdDUsIHQxKSxcblxuICAgICAgICAgICAgLy8gdDAgPSBjeWNvbG90b21pY19leHAodDEpO1xuICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX19jeWNsb3RvbWljRXhwX3cwXCIsIHQxLCB0MCksXG5cbiAgICAgICAgICAgIC8vIGxldCBtdXQgdDYgPSBjeWNvbG90b21pY19leHAodDApO1xuICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX19jeWNsb3RvbWljRXhwX3cwXCIsIHQwLCB0NiksXG5cbiAgICAgICAgICAgIC8vIHQ2ICo9IHQ0O1xuICAgICAgICAgICAgYy5jYWxsKGZ0bVByZWZpeCArIFwiX211bFwiLCB0NiwgdDQsIHQ2KSxcblxuICAgICAgICAgICAgLy8gdDQgPSBjeWNvbG90b21pY19leHAodDYpO1xuICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX19jeWNsb3RvbWljRXhwX3cwXCIsIHQ2LCB0NCksXG5cbiAgICAgICAgICAgIC8vIHQ1ID0gdDUuY29uanVnYXRlKCk7XG4gICAgICAgICAgICBjLmNhbGwoZnRtUHJlZml4ICsgXCJfY29uanVnYXRlXCIsIHQ1LCB0NSksXG5cbiAgICAgICAgICAgIC8vIHQ0ICo9IHQ1ICogdDI7XG4gICAgICAgICAgICBjLmNhbGwoZnRtUHJlZml4ICsgXCJfbXVsXCIsIHQ0LCB0NSwgdDQpLFxuICAgICAgICAgICAgYy5jYWxsKGZ0bVByZWZpeCArIFwiX211bFwiLCB0NCwgdDIsIHQ0KSxcblxuICAgICAgICAgICAgLy8gdDUgPSB0Mi5jb25qdWdhdGUoKTtcbiAgICAgICAgICAgIGMuY2FsbChmdG1QcmVmaXggKyBcIl9jb25qdWdhdGVcIiwgdDIsIHQ1KSxcblxuICAgICAgICAgICAgLy8gdDEgKj0gdDI7XG4gICAgICAgICAgICBjLmNhbGwoZnRtUHJlZml4ICsgXCJfbXVsXCIsIHQxLCB0MiwgdDEpLFxuXG4gICAgICAgICAgICAvLyB0MSA9IHQxLmZyb2Jlbml1c19tYXAoKS5mcm9iZW5pdXNfbWFwKCkuZnJvYmVuaXVzX21hcCgpO1xuICAgICAgICAgICAgYy5jYWxsKGZ0bVByZWZpeCArIFwiX2Zyb2Jlbml1c01hcDNcIiwgdDEsIHQxKSxcblxuICAgICAgICAgICAgLy8gdDYgKj0gdDU7XG4gICAgICAgICAgICBjLmNhbGwoZnRtUHJlZml4ICsgXCJfbXVsXCIsIHQ2LCB0NSwgdDYpLFxuXG4gICAgICAgICAgICAvLyB0NiA9IHQ2LmZyb2Jlbml1c19tYXAoKTtcbiAgICAgICAgICAgIGMuY2FsbChmdG1QcmVmaXggKyBcIl9mcm9iZW5pdXNNYXAxXCIsIHQ2LCB0NiksXG5cbiAgICAgICAgICAgIC8vIHQzICo9IHQwO1xuICAgICAgICAgICAgYy5jYWxsKGZ0bVByZWZpeCArIFwiX211bFwiLCB0MywgdDAsIHQzKSxcblxuICAgICAgICAgICAgLy8gdDMgPSB0My5mcm9iZW5pdXNfbWFwKCkuZnJvYmVuaXVzX21hcCgpO1xuICAgICAgICAgICAgYy5jYWxsKGZ0bVByZWZpeCArIFwiX2Zyb2Jlbml1c01hcDJcIiwgdDMsIHQzKSxcblxuICAgICAgICAgICAgLy8gdDMgKj0gdDE7XG4gICAgICAgICAgICBjLmNhbGwoZnRtUHJlZml4ICsgXCJfbXVsXCIsIHQzLCB0MSwgdDMpLFxuXG4gICAgICAgICAgICAvLyB0MyAqPSB0NjtcbiAgICAgICAgICAgIGMuY2FsbChmdG1QcmVmaXggKyBcIl9tdWxcIiwgdDMsIHQ2LCB0MyksXG5cbiAgICAgICAgICAgIC8vIGYgPSB0MyAqIHQ0O1xuICAgICAgICAgICAgYy5jYWxsKGZ0bVByZWZpeCArIFwiX211bFwiLCB0MywgdDQsIHJlcyksXG5cbiAgICAgICAgKTtcbiAgICB9XG5cblxuICAgIGZ1bmN0aW9uIGJ1aWxkRmluYWxFeHBvbmVudGlhdGlvbk9sZCgpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrIFwiX2ZpbmFsRXhwb25lbnRpYXRpb25PbGRcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiclwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBleHBvbmVudCA9IDMyMjI3NzM2MTUxNjkzNDE0MDQ2Mjg5MTU2NDU4NjUxMDEzOTkwODM3OTk2OTUxNDgyODQ5NDIxODM2NjY4ODAyNTI4ODY2MTA0MTEwNDY4Mjc5NDk5ODY4MDQ5NzU4MDAwODg5OTk3MzI0OTgxNDEwNDQ0NzY5Mjc3ODk4ODIwODM3Njc3OTU3MzgxOTQ4NTI2MzAyNjE1OTU4ODUxMDUxMzgzNDg3NjMwMzAxNDAxNjc5ODgwOTkxOTM0MzUzMjg5OTE2NDg0ODczMDI4MDk0MjYwOTk1NjY3MDkxNzU2NTYxODExNTg2NzI4NzM5OTYyMzI4NjgxMzI3MDM1NzkwMTczMTUxMDE4ODE0OTkzNDM2MzM2MDM4MTYxNDUwMTMzNDA4NjgyNTQ0MjI3MTkyMDA3OTM2MzI4OTk1NDUxMDU2NTM3NTM3ODQ0MzcwNDM3Mjk5NDg4MTQwNjc5Nzg4MjY3Njk3MTA4MjIwMDYyNjU0MTkxNjQxMzE4NDY0MjUyMDI2OTY3ODg5NzU1OTUzMjI2MDk0OTMzNDc2MDYwNDk2MjA4NjM0ODg5ODExODk4MjI0ODg0MjYzNDM3OTYzNzU5ODY2NTQ2ODgxNzc2OTA3NTg3ODU1NTQ5Mzc1MjIxNDQ5Mjc5MDEyMjc4NTg1MDIwMjk1NzU3NTIwMDE3NjA4NDIwNDQyMjc1MTQ4NTk1NzMzNjQ2NTQ3MjMyNDgxMDk4MjgzMzYzODQ5MDkwNDI3OTI4MjY5NjEzNDMyMzA3MjUxNTIyMDA0NDQ1MTU5MjY0Njg4NTQxMDU3MjIzNDQ1MTczMjc5MDU5MDAxMzQ3OTM1ODM0Mzg0MTIyMDA3NDE3NDg0ODIyMTcyMjAxNzA4MzU5Nzg3MjAxNzYzODUxNDEwMzE3NDEyMjc4NDg0MzkyNTU3ODM3MDQzMDg0MzUyMjk1OTYwMDA5NTY3NjI4NTcyMzczNzA0OTQzODM0NjU0NDc1MzE2ODkxMjk3NDk3Njc5MTUyODUzNTI3NjMxNzI1NjkwNDMzNjUyMDE3OTI4MTE0NTM5NDY4NjU2NTA1MDQxOTI1MDYxNDEwNzgwMzIzMzMxNDY1ODgyNTQ2MzExNzkwMDI1MDcwMTE5OTE4MTUyOTIwNTk0MjM2MzE1OTMyNTc2NTk5MTgxOTQzMzkxNDMwMzkwODg2MDQ2MDcyMDU4MTQwODIwMTM3MzE2NDA0Nzc3Mzc5NDgyNTQxMTAxMTkyMjMwNTgyMDA2NTYxMTEyMTU0NDU2MTgwODQxNDA1NTMwMjIxMjA1NzQ3MTM5NTcxOTQzMjA3MjIwOTI0NTYwMDI1ODEzNDM2NDU4NDYzNjgxMDA5MzUyMDI4NTcxMTA3MjU3ODcyMTQzNTUxNzg4NDEwMzUyNjQ4MzgzMjczMzI4OTgwMjQyNjE1NzMwMTU0Mjc0NDQ3Njc0MDAwODQ5NDc4MDM2MzM1NDMwNTExNjk3ODgwNTYyMDY3MTQ2NzA3MTQwMDcxMTM1ODgzOTU1MzM3NTM0MDcyNDg5OTczNTQ2MDQ4MDE0NDU5OTc4MjAxNDkwNjU4NjU0MzgxMzI5MjE1NzkyMjIyMDY0NTA4OTE5MjEzMDIwOTMzNDkyNjY2MTU4ODczNzAwNzc2ODU2NTgzODUxOTQ1NjYwMTU2MDgwNDk1Nzk4NTY2Nzg4MDM5NTIyMTA0OTI0OTgwMzc1MzU4MjYzNzcwODU2MG47XG5cbiAgICAgICAgY29uc3QgcEV4cG9uZW50ID0gbW9kdWxlLmFsbG9jKHV0aWxzJDEuYmlnSW50MkJ5dGVzTEUoIGV4cG9uZW50LCA1NDQgKSk7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLmNhbGwoZnRtUHJlZml4ICsgXCJfZXhwXCIsIGMuZ2V0TG9jYWwoXCJ4XCIpLCBjLmkzMl9jb25zdChwRXhwb25lbnQpLCBjLmkzMl9jb25zdCg1NDQpLCBjLmdldExvY2FsKFwiclwiKSksXG4gICAgICAgICk7XG4gICAgfVxuXG5cbiAgICBjb25zdCBwUHJlUCA9IG1vZHVsZS5hbGxvYyhwcmVQU2l6ZSk7XG4gICAgY29uc3QgcFByZVEgPSBtb2R1bGUuYWxsb2MocHJlUVNpemUpO1xuXG4gICAgZnVuY3Rpb24gYnVpbGRQYWlyaW5nRXF1YXRpb24oblBhaXJpbmdzKSB7XG5cbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrIFwiX3BhaXJpbmdFcVwiK25QYWlyaW5ncyk7XG4gICAgICAgIGZvciAobGV0IGk9MDsgaTxuUGFpcmluZ3M7IGkrKykge1xuICAgICAgICAgICAgZi5hZGRQYXJhbShcInBfXCIraSwgXCJpMzJcIik7XG4gICAgICAgICAgICBmLmFkZFBhcmFtKFwicV9cIitpLCBcImkzMlwiKTtcbiAgICAgICAgfVxuICAgICAgICBmLmFkZFBhcmFtKFwiY1wiLCBcImkzMlwiKTtcbiAgICAgICAgZi5zZXRSZXR1cm5UeXBlKFwiaTMyXCIpO1xuXG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCByZXNUID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGZ0c2l6ZSkpO1xuICAgICAgICBjb25zdCBhdXhUID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGZ0c2l6ZSkpO1xuXG4gICAgICAgIGYuYWRkQ29kZShjLmNhbGwoZnRtUHJlZml4ICsgXCJfb25lXCIsIHJlc1QgKSk7XG5cbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPG5QYWlyaW5nczsgaSsrKSB7XG5cbiAgICAgICAgICAgIGYuYWRkQ29kZShjLmNhbGwocHJlZml4ICsgXCJfcHJlcGFyZUcxXCIsIGMuZ2V0TG9jYWwoXCJwX1wiK2kpLCBjLmkzMl9jb25zdChwUHJlUCkgKSk7XG4gICAgICAgICAgICBmLmFkZENvZGUoYy5jYWxsKHByZWZpeCArIFwiX3ByZXBhcmVHMlwiLCBjLmdldExvY2FsKFwicV9cIitpKSwgYy5pMzJfY29uc3QocFByZVEpICkpO1xuXG4gICAgICAgICAgICAvLyBDaGVja3NcbiAgICAgICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9lcXooYy5jYWxsKGcxbVByZWZpeCArIFwiX2luR3JvdXBBZmZpbmVcIiwgYy5pMzJfY29uc3QocFByZVApKSksXG4gICAgICAgICAgICAgICAgICAgIGMucmV0KGMuaTMyX2NvbnN0KDApKVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfZXF6KGMuY2FsbChnMm1QcmVmaXggKyBcIl9pbkdyb3VwQWZmaW5lXCIsIGMuaTMyX2NvbnN0KHBQcmVRKSkpLFxuICAgICAgICAgICAgICAgICAgICBjLnJldChjLmkzMl9jb25zdCgwKSlcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICBmLmFkZENvZGUoYy5jYWxsKHByZWZpeCArIFwiX21pbGxlckxvb3BcIiwgYy5pMzJfY29uc3QocFByZVApLCBjLmkzMl9jb25zdChwUHJlUSksIGF1eFQgKSk7XG5cbiAgICAgICAgICAgIGYuYWRkQ29kZShjLmNhbGwoZnRtUHJlZml4ICsgXCJfbXVsXCIsIHJlc1QsIGF1eFQsIHJlc1QgKSk7XG4gICAgICAgIH1cblxuICAgICAgICBmLmFkZENvZGUoYy5jYWxsKHByZWZpeCArIFwiX2ZpbmFsRXhwb25lbnRpYXRpb25cIiwgcmVzVCwgcmVzVCApKTtcblxuICAgICAgICBmLmFkZENvZGUoYy5jYWxsKGZ0bVByZWZpeCArIFwiX2VxXCIsIHJlc1QsIGMuZ2V0TG9jYWwoXCJjXCIpKSk7XG4gICAgfVxuXG5cbiAgICBmdW5jdGlvbiBidWlsZFBhaXJpbmcoKSB7XG5cbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrIFwiX3BhaXJpbmdcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInJcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCByZXNUID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGZ0c2l6ZSkpO1xuXG4gICAgICAgIGYuYWRkQ29kZShjLmNhbGwocHJlZml4ICsgXCJfcHJlcGFyZUcxXCIsIGMuZ2V0TG9jYWwoXCJwXCIpLCBjLmkzMl9jb25zdChwUHJlUCkgKSk7XG4gICAgICAgIGYuYWRkQ29kZShjLmNhbGwocHJlZml4ICsgXCJfcHJlcGFyZUcyXCIsIGMuZ2V0TG9jYWwoXCJxXCIpLCBjLmkzMl9jb25zdChwUHJlUSkgKSk7XG4gICAgICAgIGYuYWRkQ29kZShjLmNhbGwocHJlZml4ICsgXCJfbWlsbGVyTG9vcFwiLCBjLmkzMl9jb25zdChwUHJlUCksIGMuaTMyX2NvbnN0KHBQcmVRKSwgcmVzVCApKTtcbiAgICAgICAgZi5hZGRDb2RlKGMuY2FsbChwcmVmaXggKyBcIl9maW5hbEV4cG9uZW50aWF0aW9uXCIsIHJlc1QsIGMuZ2V0TG9jYWwoXCJyXCIpICkpO1xuICAgIH1cblxuXG4gICAgZnVuY3Rpb24gYnVpbGRJbkdyb3VwRzIoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24oZzJtUHJlZml4KyBcIl9pbkdyb3VwQWZmaW5lXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5zZXRSZXR1cm5UeXBlKFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgV0lOViA9IFtcbiAgICAgICAgICAgIDIwMDEyMDQ3Nzc2MTA4MzM2OTY3MDg4OTQ5MTI4Njc5NTIwNzgyNzg0NDE0MDk5Njk1MDM5NDI2NjYwMjkwNjgwNjIwMTU4MjUyNDU0MTg5MzIyMjEzNDM4MTQ1NjQ1MDc4MzIwMTg5NDcxMzYyNzk4OTRuLFxuICAgICAgICAgICAgMjAwMTIwNDc3NzYxMDgzMzY5NjcwODg5NDkxMjg2Nzk1MjA3ODI3ODQ0MTQwOTk2OTUwMzk0MjY2NjAyOTA2ODA2MjAxNTgyNTI0NTQxODkzMjIyMTM0MzgxNDU2NDUwNzgzMjAxODk0NzEzNjI3OTg5M25cbiAgICAgICAgXTtcblxuICAgICAgICBjb25zdCBGUk9CMlggPSA0MDAyNDA5NTU1MjIxNjY3MzkyNjI0MzEwNDM1MDA2Njg4NjQzOTM1NTAzMTE4MzA1NTg2NDM4MjcxMTcxMzk1ODQyOTcxMTU3NDgwMzgxMzc3MDE1NDA1OTgwMDUzNTM5MzU4NDE3MTM1NTQwOTM5NDM2bjtcbiAgICAgICAgY29uc3QgRlJPQjNZID0gW1xuICAgICAgICAgICAgMjk3MzY3NzQwODk4NjU2MTA0MzQ0MjQ2NTM0NjUyMDEwODg3OTE3MjA0Mjg4MzAwOTI0OTk4OTE3NjQxNTAxODA5MTQyMDgwNzE5MjE4MjYzODU2NzExNjMxODU3NjQ3MjY0OTM0NzAxNTkxNzY5MDUzMG4sXG4gICAgICAgICAgICAyOTczNjc3NDA4OTg2NTYxMDQzNDQyNDY1MzQ2NTIwMTA4ODc5MTcyMDQyODgzMDA5MjQ5OTg5MTc2NDE1MDE4MDkxNDIwODA3MTkyMTgyNjM4NTY3MTE2MzE4NTc2NDcyNjQ5MzQ3MDE1OTE3NjkwNTMwblxuICAgICAgICBdO1xuXG4gICAgICAgIGNvbnN0IHdJbnYgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoW1xuICAgICAgICAgICAgLi4udXRpbHMkMS5iaWdJbnQyQnl0ZXNMRSh0b01vbnRnb21lcnkoV0lOVlswXSksIG44cSksXG4gICAgICAgICAgICAuLi51dGlscyQxLmJpZ0ludDJCeXRlc0xFKHRvTW9udGdvbWVyeShXSU5WWzFdKSwgbjhxKSxcbiAgICAgICAgXSkpO1xuXG4gICAgICAgIGNvbnN0IGZyb2IyWCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyh1dGlscyQxLmJpZ0ludDJCeXRlc0xFKHRvTW9udGdvbWVyeShGUk9CMlgpLCBuOHEpKSk7XG4gICAgICAgIGNvbnN0IGZyb2IzWSA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhbXG4gICAgICAgICAgICAuLi51dGlscyQxLmJpZ0ludDJCeXRlc0xFKHRvTW9udGdvbWVyeShGUk9CM1lbMF0pLCBuOHEpLFxuICAgICAgICAgICAgLi4udXRpbHMkMS5iaWdJbnQyQnl0ZXNMRSh0b01vbnRnb21lcnkoRlJPQjNZWzFdKSwgbjhxKSxcbiAgICAgICAgXSkpO1xuXG4gICAgICAgIGNvbnN0IHogPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2ModXRpbHMkMS5iaWdJbnQyQnl0ZXNMRShmaW5hbEV4cFosIDgpKSk7XG5cbiAgICAgICAgY29uc3QgcHggPSBjLmdldExvY2FsKFwicFwiKTtcbiAgICAgICAgY29uc3QgcHkgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInBcIiksIGMuaTMyX2NvbnN0KGYyc2l6ZSkpO1xuXG4gICAgICAgIGNvbnN0IGF1eCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMXNpemUpKTtcblxuICAgICAgICBjb25zdCB4X3dpbnYgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjJzaXplKSk7XG4gICAgICAgIGNvbnN0IHlfd2ludiA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMnNpemUpKTtcbiAgICAgICAgY29uc3QgcGYyID0gbW9kdWxlLmFsbG9jKGYyc2l6ZSoyKTtcbiAgICAgICAgY29uc3QgZjIgPSBjLmkzMl9jb25zdChwZjIpO1xuICAgICAgICBjb25zdCBmMnggPSBjLmkzMl9jb25zdChwZjIpO1xuICAgICAgICBjb25zdCBmMnhfYzEgPSBjLmkzMl9jb25zdChwZjIpO1xuICAgICAgICBjb25zdCBmMnhfYzIgPSBjLmkzMl9jb25zdChwZjIrZjFzaXplKTtcbiAgICAgICAgY29uc3QgZjJ5ID0gYy5pMzJfY29uc3QocGYyK2Yyc2l6ZSk7XG4gICAgICAgIGNvbnN0IGYyeV9jMSA9IGMuaTMyX2NvbnN0KHBmMitmMnNpemUpO1xuICAgICAgICBjb25zdCBmMnlfYzIgPSBjLmkzMl9jb25zdChwZjIrZjJzaXplK2Yxc2l6ZSk7XG4gICAgICAgIGNvbnN0IHBmMyA9IG1vZHVsZS5hbGxvYyhmMnNpemUqMyk7XG4gICAgICAgIGNvbnN0IGYzID0gYy5pMzJfY29uc3QocGYzKTtcbiAgICAgICAgY29uc3QgZjN4ID0gYy5pMzJfY29uc3QocGYzKTtcbiAgICAgICAgY29uc3QgZjN4X2MxID0gYy5pMzJfY29uc3QocGYzKTtcbiAgICAgICAgY29uc3QgZjN4X2MyID0gYy5pMzJfY29uc3QocGYzK2Yxc2l6ZSk7XG4gICAgICAgIGNvbnN0IGYzeSA9IGMuaTMyX2NvbnN0KHBmMytmMnNpemUpO1xuICAgICAgICBjb25zdCBmM3lfYzEgPSBjLmkzMl9jb25zdChwZjMrZjJzaXplKTtcbiAgICAgICAgY29uc3QgZjN5X2MyID0gYy5pMzJfY29uc3QocGYzK2Yyc2l6ZStmMXNpemUpO1xuICAgICAgICBjb25zdCBmM3ogPSBjLmkzMl9jb25zdChwZjMrZjJzaXplKjIpO1xuXG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICBjLmNhbGwoZzJtUHJlZml4ICsgXCJfaXNaZXJvQWZmaW5lXCIsIGMuZ2V0TG9jYWwoXCJwXCIpKSxcbiAgICAgICAgICAgICAgICBjLnJldCggYy5pMzJfY29uc3QoMSkpLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgYy5pMzJfZXF6KGMuY2FsbChnMm1QcmVmaXggKyBcIl9pbkN1cnZlQWZmaW5lXCIsIGMuZ2V0TG9jYWwoXCJwXCIpKSksXG4gICAgICAgICAgICAgICAgYy5yZXQoIGMuaTMyX2NvbnN0KDApKSxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbXVsXCIsIHB4LCB3SW52LCB4X3dpbnYpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX211bFwiLCBweSwgd0ludiwgeV93aW52KSxcblxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX211bDFcIiwgeF93aW52LCBmcm9iMlgsIGYyeCksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbmVnXCIsIHlfd2ludiwgZjJ5KSxcblxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX25lZ1wiLCB4X3dpbnYsIGYzeCksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbXVsXCIsIHlfd2ludiwgZnJvYjNZLCBmM3kpLFxuXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4ICsgXCJfc3ViXCIsIGYyeF9jMSwgZjJ4X2MyLCBhdXgpLFxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCArIFwiX2FkZFwiLCBmMnhfYzEsIGYyeF9jMiwgZjJ4X2MyKSxcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXggKyBcIl9jb3B5XCIsIGF1eCwgZjJ4X2MxKSxcblxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCArIFwiX3N1YlwiLCBmMnlfYzEsIGYyeV9jMiwgYXV4KSxcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXggKyBcIl9hZGRcIiwgZjJ5X2MxLCBmMnlfYzIsIGYyeV9jMiksXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4ICsgXCJfY29weVwiLCBhdXgsIGYyeV9jMSksXG5cbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXggKyBcIl9hZGRcIiwgZjN4X2MxLCBmM3hfYzIsIGF1eCksXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4ICsgXCJfc3ViXCIsIGYzeF9jMSwgZjN4X2MyLCBmM3hfYzIpLFxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCArIFwiX2NvcHlcIiwgYXV4LCBmM3hfYzEpLFxuXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4ICsgXCJfc3ViXCIsIGYzeV9jMiwgZjN5X2MxLCBhdXgpLFxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCArIFwiX2FkZFwiLCBmM3lfYzEsIGYzeV9jMiwgZjN5X2MyKSxcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXggKyBcIl9jb3B5XCIsIGF1eCwgZjN5X2MxKSxcblxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX29uZVwiLCBmM3opLFxuXG4gICAgICAgICAgICBjLmNhbGwoZzJtUHJlZml4ICsgXCJfdGltZXNTY2FsYXJcIiwgZjMsIHosIGMuaTMyX2NvbnN0KDgpLCBmMyksXG4gICAgICAgICAgICBjLmNhbGwoZzJtUHJlZml4ICsgXCJfYWRkTWl4ZWRcIiwgZjMsIGYyLCBmMyksXG5cbiAgICAgICAgICAgIGMucmV0KFxuICAgICAgICAgICAgICAgIGMuY2FsbChnMm1QcmVmaXggKyBcIl9lcU1peGVkXCIsIGYzLCBjLmdldExvY2FsKFwicFwiKSlcbiAgICAgICAgICAgIClcbiAgICAgICAgKTtcblxuICAgICAgICBjb25zdCBmSW5Hcm91cCA9IG1vZHVsZS5hZGRGdW5jdGlvbihnMm1QcmVmaXggKyBcIl9pbkdyb3VwXCIpO1xuICAgICAgICBmSW5Hcm91cC5hZGRQYXJhbShcInBJblwiLCBcImkzMlwiKTtcbiAgICAgICAgZkluR3JvdXAuc2V0UmV0dXJuVHlwZShcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjMiA9IGZJbkdyb3VwLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgYXV4MiA9IGMyLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjJzaXplKjIpKTtcblxuICAgICAgICBmSW5Hcm91cC5hZGRDb2RlKFxuICAgICAgICAgICAgYzIuY2FsbChnMm1QcmVmaXggKyBcIl90b0FmZmluZVwiLCBjMi5nZXRMb2NhbChcInBJblwiKSwgYXV4MiksXG5cbiAgICAgICAgICAgIGMyLnJldChcbiAgICAgICAgICAgICAgICBjMi5jYWxsKGcybVByZWZpeCArIFwiX2luR3JvdXBBZmZpbmVcIiwgYXV4MiksXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG5cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBidWlsZEluR3JvdXBHMSgpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihnMW1QcmVmaXgrIFwiX2luR3JvdXBBZmZpbmVcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLnNldFJldHVyblR5cGUoXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCBCRVRBID0gNDAwMjQwOTU1NTIyMTY2NzM5MjYyNDMxMDQzNTAwNjY4ODY0MzkzNTUwMzExODMwNTU4NjQzODI3MTE3MTM5NTg0Mjk3MTE1NzQ4MDM4MTM3NzAxNTQwNTk4MDA1MzUzOTM1ODQxNzEzNTU0MDkzOTQzNm47XG4gICAgICAgIGNvbnN0IEJFVEEyID0gNzkzNDc5MzkwNzI5MjE1NTEyNjIxMzc5NzAxNjMzNDIxNDQ3MDYwODg2NzQwMjgxMDYwNDkzMDEwNDU2NDg3NDI3MjgxNjQ5MDc1NDc2MzA1NjIwNzU4NzMxNjIwMzUwbjtcbiAgICAgICAgY29uc3QgWjJNMUQzID0gKGZpbmFsRXhwWiAqIGZpbmFsRXhwWiAtIDFuKSAvIDNuO1xuXG4gICAgICAgIGNvbnN0IGJldGEgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2ModXRpbHMkMS5iaWdJbnQyQnl0ZXNMRSh0b01vbnRnb21lcnkoQkVUQSksIG44cSkpKTtcbiAgICAgICAgY29uc3QgYmV0YTIgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2ModXRpbHMkMS5iaWdJbnQyQnl0ZXNMRSh0b01vbnRnb21lcnkoQkVUQTIpLCBuOHEpKSk7XG5cbiAgICAgICAgY29uc3QgejJtMWQzID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKHV0aWxzJDEuYmlnSW50MkJ5dGVzTEUoWjJNMUQzLCAxNikpKTtcblxuXG4gICAgICAgIGNvbnN0IHB4ID0gYy5nZXRMb2NhbChcInBcIik7XG4gICAgICAgIGNvbnN0IHB5ID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwXCIpLCBjLmkzMl9jb25zdChmMXNpemUpKTtcblxuICAgICAgICBjb25zdCBwc3AgPSBtb2R1bGUuYWxsb2MoZjFzaXplKjMpO1xuICAgICAgICBjb25zdCBzcCA9IGMuaTMyX2NvbnN0KHBzcCk7XG4gICAgICAgIGNvbnN0IHNweCA9IGMuaTMyX2NvbnN0KHBzcCk7XG4gICAgICAgIGNvbnN0IHNweSA9IGMuaTMyX2NvbnN0KHBzcCtmMXNpemUpO1xuXG4gICAgICAgIGNvbnN0IHBzMnAgPSBtb2R1bGUuYWxsb2MoZjFzaXplKjIpO1xuICAgICAgICBjb25zdCBzMnAgPSBjLmkzMl9jb25zdChwczJwKTtcbiAgICAgICAgY29uc3QgczJweCA9IGMuaTMyX2NvbnN0KHBzMnApO1xuICAgICAgICBjb25zdCBzMnB5ID0gYy5pMzJfY29uc3QocHMycCtmMXNpemUpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgYy5jYWxsKGcxbVByZWZpeCArIFwiX2lzWmVyb0FmZmluZVwiLCBjLmdldExvY2FsKFwicFwiKSksXG4gICAgICAgICAgICAgICAgYy5yZXQoIGMuaTMyX2NvbnN0KDEpKSxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgIGMuaTMyX2VxeihjLmNhbGwoZzFtUHJlZml4ICsgXCJfaW5DdXJ2ZUFmZmluZVwiLCBjLmdldExvY2FsKFwicFwiKSkpLFxuICAgICAgICAgICAgICAgIGMucmV0KCBjLmkzMl9jb25zdCgwKSksXG4gICAgICAgICAgICApLFxuXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4ICsgXCJfbXVsXCIsIHB4LCBiZXRhLCBzcHgpLFxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCArIFwiX2NvcHlcIiwgcHksIHNweSksXG5cbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXggKyBcIl9tdWxcIiwgcHgsIGJldGEyLCBzMnB4KSxcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXggKyBcIl9jb3B5XCIsIHB5LCBzMnB5KSxcblxuXG4gICAgICAgICAgICBjLmNhbGwoZzFtUHJlZml4ICsgXCJfZG91YmxlQWZmaW5lXCIsIHNwLCBzcCksXG4gICAgICAgICAgICBjLmNhbGwoZzFtUHJlZml4ICsgXCJfc3ViTWl4ZWRcIiwgc3AsIGMuZ2V0TG9jYWwoXCJwXCIpLCBzcCksXG4gICAgICAgICAgICBjLmNhbGwoZzFtUHJlZml4ICsgXCJfc3ViTWl4ZWRcIiwgc3AsIHMycCwgc3ApLFxuXG4gICAgICAgICAgICBjLmNhbGwoZzFtUHJlZml4ICsgXCJfdGltZXNTY2FsYXJcIiwgc3AsIHoybTFkMywgYy5pMzJfY29uc3QoMTYpLCBzcCksXG5cbiAgICAgICAgICAgIGMucmV0KFxuICAgICAgICAgICAgICAgIGMuY2FsbChnMW1QcmVmaXggKyBcIl9lcU1peGVkXCIsIHNwLCBzMnApXG4gICAgICAgICAgICApXG5cbiAgICAgICAgKTtcblxuICAgICAgICBjb25zdCBmSW5Hcm91cCA9IG1vZHVsZS5hZGRGdW5jdGlvbihnMW1QcmVmaXggKyBcIl9pbkdyb3VwXCIpO1xuICAgICAgICBmSW5Hcm91cC5hZGRQYXJhbShcInBJblwiLCBcImkzMlwiKTtcbiAgICAgICAgZkluR3JvdXAuc2V0UmV0dXJuVHlwZShcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjMiA9IGZJbkdyb3VwLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgYXV4MiA9IGMyLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjFzaXplKjIpKTtcblxuICAgICAgICBmSW5Hcm91cC5hZGRDb2RlKFxuICAgICAgICAgICAgYzIuY2FsbChnMW1QcmVmaXggKyBcIl90b0FmZmluZVwiLCBjMi5nZXRMb2NhbChcInBJblwiKSwgYXV4MiksXG5cbiAgICAgICAgICAgIGMyLnJldChcbiAgICAgICAgICAgICAgICBjMi5jYWxsKGcxbVByZWZpeCArIFwiX2luR3JvdXBBZmZpbmVcIiwgYXV4MiksXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZm9yIChsZXQgaT0wOyBpPDEwOyBpKyspIHtcbiAgICAgICAgYnVpbGRGcm9iZW5pdXNNYXAoaSk7XG4gICAgICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihmdG1QcmVmaXggKyBcIl9mcm9iZW5pdXNNYXBcIitpKTtcbiAgICB9XG5cblxuICAgIGJ1aWxkSW5Hcm91cEcxKCk7XG4gICAgYnVpbGRJbkdyb3VwRzIoKTtcblxuICAgIGJ1aWxkUHJlcEFkZFN0ZXAoKTtcbiAgICBidWlsZFByZXBEb3VibGVTdGVwKCk7XG5cbiAgICBidWlsZFByZXBhcmVHMSgpO1xuICAgIGJ1aWxkUHJlcGFyZUcyKCk7XG5cbiAgICBidWlsZE1pbGxlckxvb3AoKTtcblxuICAgIGJ1aWxkRmluYWxFeHBvbmVudGlhdGlvbk9sZCgpO1xuICAgIGJ1aWxkRmluYWxFeHBvbmVudGlhdGlvbigpO1xuXG4gICAgZm9yIChsZXQgaT0xOyBpPD01OyBpKyspIHtcbiAgICAgICAgYnVpbGRQYWlyaW5nRXF1YXRpb24oaSk7XG4gICAgICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9wYWlyaW5nRXFcIitpKTtcbiAgICB9XG5cbiAgICBidWlsZFBhaXJpbmcoKTtcblxuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9wYWlyaW5nXCIpO1xuXG5cbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfcHJlcGFyZUcxXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9wcmVwYXJlRzJcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX21pbGxlckxvb3BcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX2ZpbmFsRXhwb25lbnRpYXRpb25cIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX2ZpbmFsRXhwb25lbnRpYXRpb25PbGRcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX19jeWNsb3RvbWljU3F1YXJlXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9fY3ljbG90b21pY0V4cF93MFwiKTtcblxuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihmNm1QcmVmaXggKyBcIl9tdWwxXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihmNm1QcmVmaXggKyBcIl9tdWwwMVwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24oZnRtUHJlZml4ICsgXCJfbXVsMDE0XCIpO1xuXG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKGcxbVByZWZpeCArIFwiX2luR3JvdXBBZmZpbmVcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKGcxbVByZWZpeCArIFwiX2luR3JvdXBcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKGcybVByZWZpeCArIFwiX2luR3JvdXBBZmZpbmVcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKGcybVByZWZpeCArIFwiX2luR3JvdXBcIik7XG5cbiAgICAvLyBjb25zb2xlLmxvZyhtb2R1bGUuZnVuY3Rpb25JZHhCeU5hbWUpO1xufTtcblxuLypcbiAgICBDb3B5cmlnaHQgMjAxOSAwS0lNUyBhc3NvY2lhdGlvbi5cblxuICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHdhc21zbmFyayAoV2ViIEFzc2VtYmx5IHprU25hcmsgUHJvdmVyKS5cblxuICAgIHdhc21zbmFyayBpcyBhIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXRcbiAgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yXG4gICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cblxuICAgIHdhc21zbmFyayBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVFxuICAgIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWVxuICAgIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpY1xuICAgIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cblxuICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gICAgYWxvbmcgd2l0aCB3YXNtc25hcmsuIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXG4qL1xuXG4vLyBtb2R1bGUuZXhwb3J0cy5ibjEyOF93YXNtID0gcmVxdWlyZShcIi4vYnVpbGQvYm4xMjhfd2FzbS5qc1wiKTtcbi8vIG1vZHVsZS5leHBvcnRzLmJsczEyMzgxX3dhc20gPSByZXF1aXJlKFwiLi9idWlsZC9ibHMxMjM4MV93YXNtLmpzXCIpO1xuLy8gbW9kdWxlLmV4cG9ydHMubW50Njc1M193YXNtID0gcmVxdWlyZShcIi4vYnVpbGQvbW50Njc1M193YXNtLmpzXCIpO1xuXG52YXIgYnVpbGRCbjEyOCQxID0gYnVpbGRfYm4xMjg7XG52YXIgYnVpbGRCbHMxMjM4MSQxID0gYnVpbGRfYmxzMTIzODE7XG5cbi8qIGdsb2JhbCBCaWdJbnQgKi9cblxuZnVuY3Rpb24gc3RyaW5naWZ5QmlnSW50cyhvKSB7XG4gICAgaWYgKHR5cGVvZiBvID09IFwiYmlnaW50XCIgfHwgby5lcSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybiBvLnRvU3RyaW5nKDEwKTtcbiAgICB9IGVsc2UgaWYgKG8gaW5zdGFuY2VvZiBVaW50OEFycmF5KSB7XG4gICAgICAgIHJldHVybiBmcm9tUnByTEUobywgMCk7XG4gICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KG8pKSB7XG4gICAgICAgIHJldHVybiBvLm1hcChzdHJpbmdpZnlCaWdJbnRzKTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBvID09IFwib2JqZWN0XCIpIHtcbiAgICAgICAgY29uc3QgcmVzID0ge307XG4gICAgICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhvKTtcbiAgICAgICAga2V5cy5mb3JFYWNoKChrKSA9PiB7XG4gICAgICAgICAgICByZXNba10gPSBzdHJpbmdpZnlCaWdJbnRzKG9ba10pO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gbztcbiAgICB9XG59XG5cbmZ1bmN0aW9uIHVuc3RyaW5naWZ5QmlnSW50cyhvKSB7XG4gICAgaWYgKHR5cGVvZiBvID09IFwic3RyaW5nXCIgJiYgL15bMC05XSskLy50ZXN0KG8pKSB7XG4gICAgICAgIHJldHVybiBCaWdJbnQobyk7XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgbyA9PSBcInN0cmluZ1wiICYmIC9eMHhbMC05YS1mQS1GXSskLy50ZXN0KG8pKSB7XG4gICAgICAgIHJldHVybiBCaWdJbnQobyk7XG4gICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KG8pKSB7XG4gICAgICAgIHJldHVybiBvLm1hcCh1bnN0cmluZ2lmeUJpZ0ludHMpO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIG8gPT0gXCJvYmplY3RcIikge1xuICAgICAgICBpZiAobyA9PT0gbnVsbCkgcmV0dXJuIG51bGw7XG4gICAgICAgIGNvbnN0IHJlcyA9IHt9O1xuICAgICAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMobyk7XG4gICAgICAgIGtleXMuZm9yRWFjaCgoaykgPT4ge1xuICAgICAgICAgICAgcmVzW2tdID0gdW5zdHJpbmdpZnlCaWdJbnRzKG9ba10pO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gbztcbiAgICB9XG59XG5cbmZ1bmN0aW9uIGJlQnVmZjJpbnQoYnVmZikge1xuICAgIGxldCByZXMgPSBCaWdJbnQoMCk7XG4gICAgbGV0IGkgPSBidWZmLmxlbmd0aDtcbiAgICBsZXQgb2Zmc2V0ID0gMDtcbiAgICBjb25zdCBidWZmViA9IG5ldyBEYXRhVmlldyhidWZmLmJ1ZmZlciwgYnVmZi5ieXRlT2Zmc2V0LCBidWZmLmJ5dGVMZW5ndGgpO1xuICAgIHdoaWxlIChpID4gMCkge1xuICAgICAgICBpZiAoaSA+PSA0KSB7XG4gICAgICAgICAgICBpIC09IDQ7XG4gICAgICAgICAgICByZXMgKz0gQmlnSW50KGJ1ZmZWLmdldFVpbnQzMihpKSkgPDwgQmlnSW50KG9mZnNldCAqIDgpO1xuICAgICAgICAgICAgb2Zmc2V0ICs9IDQ7XG4gICAgICAgIH0gZWxzZSBpZiAoaSA+PSAyKSB7XG4gICAgICAgICAgICBpIC09IDI7XG4gICAgICAgICAgICByZXMgKz0gQmlnSW50KGJ1ZmZWLmdldFVpbnQxNihpKSkgPDwgQmlnSW50KG9mZnNldCAqIDgpO1xuICAgICAgICAgICAgb2Zmc2V0ICs9IDI7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpIC09IDE7XG4gICAgICAgICAgICByZXMgKz0gQmlnSW50KGJ1ZmZWLmdldFVpbnQ4KGkpKSA8PCBCaWdJbnQob2Zmc2V0ICogOCk7XG4gICAgICAgICAgICBvZmZzZXQgKz0gMTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzO1xufVxuXG5mdW5jdGlvbiBiZUludDJCdWZmKG4sIGxlbikge1xuICAgIGxldCByID0gbjtcbiAgICBjb25zdCBidWZmID0gbmV3IFVpbnQ4QXJyYXkobGVuKTtcbiAgICBjb25zdCBidWZmViA9IG5ldyBEYXRhVmlldyhidWZmLmJ1ZmZlcik7XG4gICAgbGV0IG8gPSBsZW47XG4gICAgd2hpbGUgKG8gPiAwKSB7XG4gICAgICAgIGlmIChvIC0gNCA+PSAwKSB7XG4gICAgICAgICAgICBvIC09IDQ7XG4gICAgICAgICAgICBidWZmVi5zZXRVaW50MzIobywgTnVtYmVyKHIgJiBCaWdJbnQoMHhmZmZmZmZmZikpKTtcbiAgICAgICAgICAgIHIgPSByID4+IEJpZ0ludCgzMik7XG4gICAgICAgIH0gZWxzZSBpZiAobyAtIDIgPj0gMCkge1xuICAgICAgICAgICAgbyAtPSAyO1xuICAgICAgICAgICAgYnVmZlYuc2V0VWludDE2KG8sIE51bWJlcihyICYgQmlnSW50KDB4ZmZmZikpKTtcbiAgICAgICAgICAgIHIgPSByID4+IEJpZ0ludCgxNik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBvIC09IDE7XG4gICAgICAgICAgICBidWZmVi5zZXRVaW50OChvLCBOdW1iZXIociAmIEJpZ0ludCgweGZmKSkpO1xuICAgICAgICAgICAgciA9IHIgPj4gQmlnSW50KDgpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGlmIChyKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIk51bWJlciBkb2VzIG5vdCBmaXQgaW4gdGhpcyBsZW5ndGhcIik7XG4gICAgfVxuICAgIHJldHVybiBidWZmO1xufVxuXG5mdW5jdGlvbiBsZUJ1ZmYyaW50KGJ1ZmYpIHtcbiAgICBsZXQgcmVzID0gQmlnSW50KDApO1xuICAgIGxldCBpID0gMDtcbiAgICBjb25zdCBidWZmViA9IG5ldyBEYXRhVmlldyhidWZmLmJ1ZmZlciwgYnVmZi5ieXRlT2Zmc2V0LCBidWZmLmJ5dGVMZW5ndGgpO1xuICAgIHdoaWxlIChpIDwgYnVmZi5sZW5ndGgpIHtcbiAgICAgICAgaWYgKGkgKyA0IDw9IGJ1ZmYubGVuZ3RoKSB7XG4gICAgICAgICAgICByZXMgKz0gQmlnSW50KGJ1ZmZWLmdldFVpbnQzMihpLCB0cnVlKSkgPDwgQmlnSW50KGkgKiA4KTtcbiAgICAgICAgICAgIGkgKz0gNDtcbiAgICAgICAgfSBlbHNlIGlmIChpICsgMiA8PSBidWZmLmxlbmd0aCkge1xuICAgICAgICAgICAgcmVzICs9IEJpZ0ludChidWZmVi5nZXRVaW50MTYoaSwgdHJ1ZSkpIDw8IEJpZ0ludChpICogOCk7XG4gICAgICAgICAgICBpICs9IDI7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXMgKz0gQmlnSW50KGJ1ZmZWLmdldFVpbnQ4KGksIHRydWUpKSA8PCBCaWdJbnQoaSAqIDgpO1xuICAgICAgICAgICAgaSArPSAxO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXM7XG59XG5cbmZ1bmN0aW9uIGxlSW50MkJ1ZmYobiwgbGVuKSB7XG4gICAgbGV0IHIgPSBuO1xuICAgIGlmICh0eXBlb2YgbGVuID09PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgICAgIGxlbiA9IE1hdGguZmxvb3IoKGJpdExlbmd0aCQ2KG4pIC0gMSkgLyA4KSArIDE7XG4gICAgICAgIGlmIChsZW4gPT0gMCkgbGVuID0gMTtcbiAgICB9XG4gICAgY29uc3QgYnVmZiA9IG5ldyBVaW50OEFycmF5KGxlbik7XG4gICAgY29uc3QgYnVmZlYgPSBuZXcgRGF0YVZpZXcoYnVmZi5idWZmZXIpO1xuICAgIGxldCBvID0gMDtcbiAgICB3aGlsZSAobyA8IGxlbikge1xuICAgICAgICBpZiAobyArIDQgPD0gbGVuKSB7XG4gICAgICAgICAgICBidWZmVi5zZXRVaW50MzIobywgTnVtYmVyKHIgJiBCaWdJbnQoMHhmZmZmZmZmZikpLCB0cnVlKTtcbiAgICAgICAgICAgIG8gKz0gNDtcbiAgICAgICAgICAgIHIgPSByID4+IEJpZ0ludCgzMik7XG4gICAgICAgIH0gZWxzZSBpZiAobyArIDIgPD0gbGVuKSB7XG4gICAgICAgICAgICBidWZmVi5zZXRVaW50MTYobywgTnVtYmVyKHIgJiBCaWdJbnQoMHhmZmZmKSksIHRydWUpO1xuICAgICAgICAgICAgbyArPSAyO1xuICAgICAgICAgICAgciA9IHIgPj4gQmlnSW50KDE2KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGJ1ZmZWLnNldFVpbnQ4KG8sIE51bWJlcihyICYgQmlnSW50KDB4ZmYpKSwgdHJ1ZSk7XG4gICAgICAgICAgICBvICs9IDE7XG4gICAgICAgICAgICByID0gciA+PiBCaWdJbnQoOCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgaWYgKHIpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTnVtYmVyIGRvZXMgbm90IGZpdCBpbiB0aGlzIGxlbmd0aFwiKTtcbiAgICB9XG4gICAgcmV0dXJuIGJ1ZmY7XG59XG5cbmZ1bmN0aW9uIHN0cmluZ2lmeUZFbGVtZW50cyhGLCBvKSB7XG4gICAgaWYgKHR5cGVvZiBvID09IFwiYmlnaW50XCIgfHwgby5lcSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybiBvLnRvU3RyaW5nKDEwKTtcbiAgICB9IGVsc2UgaWYgKG8gaW5zdGFuY2VvZiBVaW50OEFycmF5KSB7XG4gICAgICAgIHJldHVybiBGLnRvU3RyaW5nKEYuZShvKSk7XG4gICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KG8pKSB7XG4gICAgICAgIHJldHVybiBvLm1hcChzdHJpbmdpZnlGRWxlbWVudHMuYmluZCh0aGlzLCBGKSk7XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgbyA9PSBcIm9iamVjdFwiKSB7XG4gICAgICAgIGNvbnN0IHJlcyA9IHt9O1xuICAgICAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMobyk7XG4gICAgICAgIGtleXMuZm9yRWFjaCgoaykgPT4ge1xuICAgICAgICAgICAgcmVzW2tdID0gc3RyaW5naWZ5RkVsZW1lbnRzKEYsIG9ba10pO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gbztcbiAgICB9XG59XG5cbmZ1bmN0aW9uIHVuc3RyaW5naWZ5RkVsZW1lbnRzKEYsIG8pIHtcbiAgICBpZiAodHlwZW9mIG8gPT0gXCJzdHJpbmdcIiAmJiAvXlswLTldKyQvLnRlc3QobykpIHtcbiAgICAgICAgcmV0dXJuIEYuZShvKTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBvID09IFwic3RyaW5nXCIgJiYgL14weFswLTlhLWZBLUZdKyQvLnRlc3QobykpIHtcbiAgICAgICAgcmV0dXJuIEYuZShvKTtcbiAgICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkobykpIHtcbiAgICAgICAgcmV0dXJuIG8ubWFwKHVuc3RyaW5naWZ5RkVsZW1lbnRzLmJpbmQodGhpcywgRikpO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIG8gPT0gXCJvYmplY3RcIikge1xuICAgICAgICBpZiAobyA9PT0gbnVsbCkgcmV0dXJuIG51bGw7XG4gICAgICAgIGNvbnN0IHJlcyA9IHt9O1xuICAgICAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMobyk7XG4gICAgICAgIGtleXMuZm9yRWFjaCgoaykgPT4ge1xuICAgICAgICAgICAgcmVzW2tdID0gdW5zdHJpbmdpZnlGRWxlbWVudHMoRiwgb1trXSk7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBvO1xuICAgIH1cbn1cblxuY29uc3QgX3JldlRhYmxlID0gW107XG5mb3IgKGxldCBpID0gMDsgaSA8IDI1NjsgaSsrKSB7XG4gICAgX3JldlRhYmxlW2ldID0gX3JldlNsb3coaSwgOCk7XG59XG5cbmZ1bmN0aW9uIF9yZXZTbG93KGlkeCwgYml0cykge1xuICAgIGxldCByZXMgPSAwO1xuICAgIGxldCBhID0gaWR4O1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYml0czsgaSsrKSB7XG4gICAgICAgIHJlcyA8PD0gMTtcbiAgICAgICAgcmVzID0gcmVzIHwgKGEgJiAxKTtcbiAgICAgICAgYSA+Pj0gMTtcbiAgICB9XG4gICAgcmV0dXJuIHJlcztcbn1cblxuZnVuY3Rpb24gYml0UmV2ZXJzZShpZHgsIGJpdHMpIHtcbiAgICByZXR1cm4gKFxuICAgICAgICAoX3JldlRhYmxlW2lkeCA+Pj4gMjRdIHxcbiAgICAgICAgKF9yZXZUYWJsZVsoaWR4ID4+PiAxNikgJiAweGZmXSA8PCA4KSB8XG4gICAgICAgIChfcmV2VGFibGVbKGlkeCA+Pj4gOCkgJiAweGZmXSA8PCAxNikgfFxuICAgICAgICAoX3JldlRhYmxlW2lkeCAmIDB4ZmZdIDw8IDI0KSkgPj4+XG4gICAgICAgICgzMiAtIGJpdHMpXG4gICAgKTtcbn1cblxuZnVuY3Rpb24gbG9nMihWKSB7XG4gICAgcmV0dXJuIChcbiAgICAgICAgKChWICYgMHhmZmZmMDAwMCkgIT09IDAgPyAoKFYgJj0gMHhmZmZmMDAwMCksIDE2KSA6IDApIHxcbiAgICAgICAgKChWICYgMHhmZjAwZmYwMCkgIT09IDAgPyAoKFYgJj0gMHhmZjAwZmYwMCksIDgpIDogMCkgfFxuICAgICAgICAoKFYgJiAweGYwZjBmMGYwKSAhPT0gMCA/ICgoViAmPSAweGYwZjBmMGYwKSwgNCkgOiAwKSB8XG4gICAgICAgICgoViAmIDB4Y2NjY2NjY2MpICE9PSAwID8gKChWICY9IDB4Y2NjY2NjY2MpLCAyKSA6IDApIHxcbiAgICAgICAgKChWICYgMHhhYWFhYWFhYSkgIT09IDApXG4gICAgKTtcbn1cblxuZnVuY3Rpb24gYnVmZlJldmVyc2VCaXRzKGJ1ZmYsIGVTaXplKSB7XG4gICAgY29uc3QgbiA9IGJ1ZmYuYnl0ZUxlbmd0aCAvIGVTaXplO1xuICAgIGNvbnN0IGJpdHMgPSBsb2cyKG4pO1xuICAgIGlmIChuICE9IDEgPDwgYml0cykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIG51bWJlciBvZiBwb2ludGVyc1wiKTtcbiAgICB9XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBuOyBpKyspIHtcbiAgICAgICAgY29uc3QgciA9IGJpdFJldmVyc2UoaSwgYml0cyk7XG4gICAgICAgIGlmIChpID4gcikge1xuICAgICAgICAgICAgY29uc3QgdG1wID0gYnVmZi5zbGljZShpICogZVNpemUsIChpICsgMSkgKiBlU2l6ZSk7XG4gICAgICAgICAgICBidWZmLnNldChidWZmLnNsaWNlKHIgKiBlU2l6ZSwgKHIgKyAxKSAqIGVTaXplKSwgaSAqIGVTaXplKTtcbiAgICAgICAgICAgIGJ1ZmYuc2V0KHRtcCwgciAqIGVTaXplKTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuZnVuY3Rpb24gYXJyYXkyYnVmZmVyKGFyciwgc0cpIHtcbiAgICBjb25zdCBidWZmID0gbmV3IFVpbnQ4QXJyYXkoc0cgKiBhcnIubGVuZ3RoKTtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYXJyLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGJ1ZmYuc2V0KGFycltpXSwgaSAqIHNHKTtcbiAgICB9XG5cbiAgICByZXR1cm4gYnVmZjtcbn1cblxuZnVuY3Rpb24gYnVmZmVyMmFycmF5KGJ1ZmYsIHNHKSB7XG4gICAgY29uc3QgbiA9IGJ1ZmYuYnl0ZUxlbmd0aCAvIHNHO1xuICAgIGNvbnN0IGFyciA9IG5ldyBBcnJheShuKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG47IGkrKykge1xuICAgICAgICBhcnJbaV0gPSBidWZmLnNsaWNlKGkgKiBzRywgaSAqIHNHICsgc0cpO1xuICAgIH1cbiAgICByZXR1cm4gYXJyO1xufVxuXG52YXIgX3V0aWxzID0gLyojX19QVVJFX18qL09iamVjdC5mcmVlemUoe1xuICAgIF9fcHJvdG9fXzogbnVsbCxcbiAgICBhcnJheTJidWZmZXI6IGFycmF5MmJ1ZmZlcixcbiAgICBiZUJ1ZmYyaW50OiBiZUJ1ZmYyaW50LFxuICAgIGJlSW50MkJ1ZmY6IGJlSW50MkJ1ZmYsXG4gICAgYml0UmV2ZXJzZTogYml0UmV2ZXJzZSxcbiAgICBidWZmUmV2ZXJzZUJpdHM6IGJ1ZmZSZXZlcnNlQml0cyxcbiAgICBidWZmZXIyYXJyYXk6IGJ1ZmZlcjJhcnJheSxcbiAgICBsZUJ1ZmYyaW50OiBsZUJ1ZmYyaW50LFxuICAgIGxlSW50MkJ1ZmY6IGxlSW50MkJ1ZmYsXG4gICAgbG9nMjogbG9nMixcbiAgICBzdHJpbmdpZnlCaWdJbnRzOiBzdHJpbmdpZnlCaWdJbnRzLFxuICAgIHN0cmluZ2lmeUZFbGVtZW50czogc3RyaW5naWZ5RkVsZW1lbnRzLFxuICAgIHVuc3RyaW5naWZ5QmlnSW50czogdW5zdHJpbmdpZnlCaWdJbnRzLFxuICAgIHVuc3RyaW5naWZ5RkVsZW1lbnRzOiB1bnN0cmluZ2lmeUZFbGVtZW50c1xufSk7XG5cbmNvbnN0IFBBR0VfU0laRSA9IDE8PDMwO1xuXG5jbGFzcyBCaWdCdWZmZXIge1xuXG4gICAgY29uc3RydWN0b3Ioc2l6ZSkge1xuICAgICAgICB0aGlzLmJ1ZmZlcnMgPSBbXTtcbiAgICAgICAgdGhpcy5ieXRlTGVuZ3RoID0gc2l6ZTtcbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPHNpemU7IGkrPSBQQUdFX1NJWkUpIHtcbiAgICAgICAgICAgIGNvbnN0IG4gPSBNYXRoLm1pbihzaXplLWksIFBBR0VfU0laRSk7XG4gICAgICAgICAgICB0aGlzLmJ1ZmZlcnMucHVzaChuZXcgVWludDhBcnJheShuKSk7XG4gICAgICAgIH1cblxuICAgIH1cblxuICAgIHNsaWNlKGZyLCB0bykge1xuICAgICAgICBpZiAoIHRvID09PSB1bmRlZmluZWQgKSB0byA9IHRoaXMuYnl0ZUxlbmd0aDtcbiAgICAgICAgaWYgKCBmciA9PT0gdW5kZWZpbmVkICkgZnIgPSAwO1xuICAgICAgICBjb25zdCBsZW4gPSB0by1mcjtcblxuICAgICAgICBjb25zdCBmaXJzdFBhZ2UgPSBNYXRoLmZsb29yKGZyIC8gUEFHRV9TSVpFKTtcbiAgICAgICAgY29uc3QgbGFzdFBhZ2UgPSBNYXRoLmZsb29yKChmcitsZW4tMSkgLyBQQUdFX1NJWkUpO1xuXG4gICAgICAgIGlmICgoZmlyc3RQYWdlID09IGxhc3RQYWdlKXx8KGxlbj09MCkpXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5idWZmZXJzW2ZpcnN0UGFnZV0uc2xpY2UoZnIlUEFHRV9TSVpFLCBmciVQQUdFX1NJWkUgKyBsZW4pO1xuXG4gICAgICAgIGxldCBidWZmO1xuXG4gICAgICAgIGxldCBwID0gZmlyc3RQYWdlO1xuICAgICAgICBsZXQgbyA9IGZyICUgUEFHRV9TSVpFO1xuICAgICAgICAvLyBSZW1haW5pbmcgYnl0ZXMgdG8gcmVhZFxuICAgICAgICBsZXQgciA9IGxlbjtcbiAgICAgICAgd2hpbGUgKHI+MCkge1xuICAgICAgICAgICAgLy8gYnl0ZXMgdG8gY29weSBmcm9tIHRoaXMgcGFnZVxuICAgICAgICAgICAgY29uc3QgbCA9IChvK3IgPiBQQUdFX1NJWkUpID8gKFBBR0VfU0laRSAtbykgOiByO1xuICAgICAgICAgICAgY29uc3Qgc3JjVmlldyA9IG5ldyBVaW50OEFycmF5KHRoaXMuYnVmZmVyc1twXS5idWZmZXIsIHRoaXMuYnVmZmVyc1twXS5ieXRlT2Zmc2V0K28sIGwpO1xuICAgICAgICAgICAgaWYgKGwgPT0gbGVuKSByZXR1cm4gc3JjVmlldy5zbGljZSgpO1xuICAgICAgICAgICAgaWYgKCFidWZmKSB7XG4gICAgICAgICAgICAgICAgaWYgKGxlbiA8PSBQQUdFX1NJWkUpIHtcbiAgICAgICAgICAgICAgICAgICAgYnVmZiA9IG5ldyBVaW50OEFycmF5KGxlbik7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgYnVmZiA9IG5ldyBCaWdCdWZmZXIobGVuKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBidWZmLnNldChzcmNWaWV3LCBsZW4tcik7XG4gICAgICAgICAgICByID0gci1sO1xuICAgICAgICAgICAgcCArKztcbiAgICAgICAgICAgIG8gPSAwO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGJ1ZmY7XG4gICAgfVxuXG4gICAgc2V0KGJ1ZmYsIG9mZnNldCkge1xuICAgICAgICBpZiAob2Zmc2V0ID09PSB1bmRlZmluZWQpIG9mZnNldCA9IDA7XG5cbiAgICAgICAgY29uc3QgbGVuID0gYnVmZi5ieXRlTGVuZ3RoO1xuXG4gICAgICAgIGlmIChsZW49PTApIHJldHVybjtcblxuICAgICAgICBjb25zdCBmaXJzdFBhZ2UgPSBNYXRoLmZsb29yKG9mZnNldCAvIFBBR0VfU0laRSk7XG4gICAgICAgIGNvbnN0IGxhc3RQYWdlID0gTWF0aC5mbG9vcigob2Zmc2V0K2xlbi0xKSAvIFBBR0VfU0laRSk7XG5cbiAgICAgICAgaWYgKGZpcnN0UGFnZSA9PSBsYXN0UGFnZSkge1xuICAgICAgICAgICAgaWYgKChidWZmIGluc3RhbmNlb2YgQmlnQnVmZmVyKSYmKGJ1ZmYuYnVmZmVycy5sZW5ndGg9PTEpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuYnVmZmVyc1tmaXJzdFBhZ2VdLnNldChidWZmLmJ1ZmZlcnNbMF0sIG9mZnNldCAlIFBBR0VfU0laRSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmJ1ZmZlcnNbZmlyc3RQYWdlXS5zZXQoYnVmZiwgb2Zmc2V0ICUgUEFHRV9TSVpFKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9XG5cblxuICAgICAgICBsZXQgcCA9IGZpcnN0UGFnZTtcbiAgICAgICAgbGV0IG8gPSBvZmZzZXQgJSBQQUdFX1NJWkU7XG4gICAgICAgIGxldCByID0gbGVuO1xuICAgICAgICB3aGlsZSAocj4wKSB7XG4gICAgICAgICAgICBjb25zdCBsID0gKG8rciA+IFBBR0VfU0laRSkgPyAoUEFHRV9TSVpFIC1vKSA6IHI7XG4gICAgICAgICAgICBjb25zdCBzcmNWaWV3ID0gYnVmZi5zbGljZSggbGVuIC1yLCBsZW4gLXIrbCk7XG4gICAgICAgICAgICBjb25zdCBkc3RWaWV3ID0gbmV3IFVpbnQ4QXJyYXkodGhpcy5idWZmZXJzW3BdLmJ1ZmZlciwgdGhpcy5idWZmZXJzW3BdLmJ5dGVPZmZzZXQgKyBvLCBsKTtcbiAgICAgICAgICAgIGRzdFZpZXcuc2V0KHNyY1ZpZXcpO1xuICAgICAgICAgICAgciA9IHItbDtcbiAgICAgICAgICAgIHAgKys7XG4gICAgICAgICAgICBvID0gMDtcbiAgICAgICAgfVxuXG4gICAgfVxufVxuXG5mdW5jdGlvbiBidWlsZEJhdGNoQ29udmVydCh0bSwgZm5OYW1lLCBzSW4sIHNPdXQpIHtcbiAgICByZXR1cm4gYXN5bmMgZnVuY3Rpb24gYmF0Y2hDb252ZXJ0KGJ1ZmZJbikge1xuICAgICAgICBjb25zdCBuUG9pbnRzID0gTWF0aC5mbG9vcihidWZmSW4uYnl0ZUxlbmd0aCAvIHNJbik7XG4gICAgICAgIGlmICggblBvaW50cyAqIHNJbiAhPT0gYnVmZkluLmJ5dGVMZW5ndGgpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgYnVmZmVyIHNpemVcIik7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcG9pbnRzUGVyQ2h1bmsgPSBNYXRoLmZsb29yKG5Qb2ludHMvdG0uY29uY3VycmVuY3kpO1xuICAgICAgICBjb25zdCBvcFByb21pc2VzID0gW107XG4gICAgICAgIGZvciAobGV0IGk9MDsgaTx0bS5jb25jdXJyZW5jeTsgaSsrKSB7XG4gICAgICAgICAgICBsZXQgbjtcbiAgICAgICAgICAgIGlmIChpPCB0bS5jb25jdXJyZW5jeS0xKSB7XG4gICAgICAgICAgICAgICAgbiA9IHBvaW50c1BlckNodW5rO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBuID0gblBvaW50cyAtIGkqcG9pbnRzUGVyQ2h1bms7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobj09MCkgY29udGludWU7XG5cbiAgICAgICAgICAgIGNvbnN0IGJ1ZmZDaHVuayA9IGJ1ZmZJbi5zbGljZShpKnBvaW50c1BlckNodW5rKnNJbiwgaSpwb2ludHNQZXJDaHVuaypzSW4gKyBuKnNJbik7XG4gICAgICAgICAgICBjb25zdCB0YXNrID0gW1xuICAgICAgICAgICAgICAgIHtjbWQ6IFwiQUxMT0NTRVRcIiwgdmFyOiAwLCBidWZmOmJ1ZmZDaHVua30sXG4gICAgICAgICAgICAgICAge2NtZDogXCJBTExPQ1wiLCB2YXI6IDEsIGxlbjpzT3V0ICogbn0sXG4gICAgICAgICAgICAgICAge2NtZDogXCJDQUxMXCIsIGZuTmFtZTogZm5OYW1lLCBwYXJhbXM6IFtcbiAgICAgICAgICAgICAgICAgICAge3ZhcjogMH0sXG4gICAgICAgICAgICAgICAgICAgIHt2YWw6IG59LFxuICAgICAgICAgICAgICAgICAgICB7dmFyOiAxfVxuICAgICAgICAgICAgICAgIF19LFxuICAgICAgICAgICAgICAgIHtjbWQ6IFwiR0VUXCIsIG91dDogMCwgdmFyOiAxLCBsZW46c091dCAqIG59LFxuICAgICAgICAgICAgXTtcbiAgICAgICAgICAgIG9wUHJvbWlzZXMucHVzaChcbiAgICAgICAgICAgICAgICB0bS5xdWV1ZUFjdGlvbih0YXNrKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IFByb21pc2UuYWxsKG9wUHJvbWlzZXMpO1xuXG4gICAgICAgIGxldCBmdWxsQnVmZk91dDtcbiAgICAgICAgaWYgKGJ1ZmZJbiBpbnN0YW5jZW9mIEJpZ0J1ZmZlcikge1xuICAgICAgICAgICAgZnVsbEJ1ZmZPdXQgPSBuZXcgQmlnQnVmZmVyKG5Qb2ludHMqc091dCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBmdWxsQnVmZk91dCA9IG5ldyBVaW50OEFycmF5KG5Qb2ludHMqc091dCk7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgcCA9MDtcbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPHJlc3VsdC5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgZnVsbEJ1ZmZPdXQuc2V0KHJlc3VsdFtpXVswXSwgcCk7XG4gICAgICAgICAgICBwKz1yZXN1bHRbaV1bMF0uYnl0ZUxlbmd0aDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBmdWxsQnVmZk91dDtcbiAgICB9O1xufVxuXG5jbGFzcyBXYXNtRmllbGQxIHtcblxuICAgIGNvbnN0cnVjdG9yKHRtLCBwcmVmaXgsIG44LCBwKSB7XG4gICAgICAgIHRoaXMudG0gPSB0bTtcbiAgICAgICAgdGhpcy5wcmVmaXggPSBwcmVmaXg7XG5cbiAgICAgICAgdGhpcy5wID0gcDtcbiAgICAgICAgdGhpcy5uOCA9IG44O1xuICAgICAgICB0aGlzLnR5cGUgPSBcIkYxXCI7XG4gICAgICAgIHRoaXMubSA9IDE7XG5cbiAgICAgICAgdGhpcy5oYWxmID0gc2hpZnRSaWdodChwLCBvbmUpO1xuICAgICAgICB0aGlzLmJpdExlbmd0aCA9IGJpdExlbmd0aCQ2KHApO1xuICAgICAgICB0aGlzLm1hc2sgPSBzdWIoc2hpZnRMZWZ0KG9uZSwgdGhpcy5iaXRMZW5ndGgpLCBvbmUpO1xuXG4gICAgICAgIHRoaXMucE9wMSA9IHRtLmFsbG9jKG44KTtcbiAgICAgICAgdGhpcy5wT3AyID0gdG0uYWxsb2MobjgpO1xuICAgICAgICB0aGlzLnBPcDMgPSB0bS5hbGxvYyhuOCk7XG4gICAgICAgIHRoaXMudG0uaW5zdGFuY2UuZXhwb3J0c1twcmVmaXggKyBcIl96ZXJvXCJdKHRoaXMucE9wMSk7XG4gICAgICAgIHRoaXMuemVybyA9IHRoaXMudG0uZ2V0QnVmZih0aGlzLnBPcDEsIHRoaXMubjgpO1xuICAgICAgICB0aGlzLnRtLmluc3RhbmNlLmV4cG9ydHNbcHJlZml4ICsgXCJfb25lXCJdKHRoaXMucE9wMSk7XG4gICAgICAgIHRoaXMub25lID0gdGhpcy50bS5nZXRCdWZmKHRoaXMucE9wMSwgdGhpcy5uOCk7XG5cbiAgICAgICAgdGhpcy5uZWdvbmUgPSB0aGlzLm5lZyh0aGlzLm9uZSk7XG4gICAgICAgIHRoaXMudHdvID0gdGhpcy5hZGQodGhpcy5vbmUsIHRoaXMub25lKTtcblxuICAgICAgICB0aGlzLm42NCA9IE1hdGguZmxvb3IobjgvOCk7XG4gICAgICAgIHRoaXMubjMyID0gTWF0aC5mbG9vcihuOC80KTtcblxuICAgICAgICBpZih0aGlzLm42NCo4ICE9IHRoaXMubjgpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIm44IG11c3QgYmUgYSBtdWx0aXBsZSBvZiA4XCIpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5oYWxmID0gc2hpZnRSaWdodCh0aGlzLnAsIG9uZSk7XG4gICAgICAgIHRoaXMubnFyID0gdGhpcy50d287XG4gICAgICAgIGxldCByID0gdGhpcy5leHAodGhpcy5ucXIsIHRoaXMuaGFsZik7XG4gICAgICAgIHdoaWxlICghdGhpcy5lcShyLCB0aGlzLm5lZ29uZSkpIHtcbiAgICAgICAgICAgIHRoaXMubnFyID0gdGhpcy5hZGQodGhpcy5ucXIsIHRoaXMub25lKTtcbiAgICAgICAgICAgIHIgPSB0aGlzLmV4cCh0aGlzLm5xciwgdGhpcy5oYWxmKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuc2hpZnQgPSB0aGlzLm11bCh0aGlzLm5xciwgdGhpcy5ucXIpO1xuICAgICAgICB0aGlzLnNoaWZ0SW52ID0gdGhpcy5pbnYodGhpcy5zaGlmdCk7XG5cbiAgICAgICAgdGhpcy5zID0gMDtcbiAgICAgICAgbGV0IHQgPSBzdWIodGhpcy5wLCBvbmUpO1xuXG4gICAgICAgIHdoaWxlICggIWlzT2RkJDUodCkgKSB7XG4gICAgICAgICAgICB0aGlzLnMgPSB0aGlzLnMgKyAxO1xuICAgICAgICAgICAgdCA9IHNoaWZ0UmlnaHQodCwgb25lKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMudyA9IFtdO1xuICAgICAgICB0aGlzLndbdGhpcy5zXSA9IHRoaXMuZXhwKHRoaXMubnFyLCB0KTtcblxuICAgICAgICBmb3IgKGxldCBpPSB0aGlzLnMtMTsgaT49MDsgaS0tKSB7XG4gICAgICAgICAgICB0aGlzLndbaV0gPSB0aGlzLnNxdWFyZSh0aGlzLndbaSsxXSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXRoaXMuZXEodGhpcy53WzBdLCB0aGlzLm9uZSkpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkVycm9yIGNhbGN1bGF0aW5nIHJvb3RzIG9mIHVuaXR5XCIpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5iYXRjaFRvTW9udGdvbWVyeSA9IGJ1aWxkQmF0Y2hDb252ZXJ0KHRtLCBwcmVmaXggKyBcIl9iYXRjaFRvTW9udGdvbWVyeVwiLCB0aGlzLm44LCB0aGlzLm44KTtcbiAgICAgICAgdGhpcy5iYXRjaEZyb21Nb250Z29tZXJ5ID0gYnVpbGRCYXRjaENvbnZlcnQodG0sIHByZWZpeCArIFwiX2JhdGNoRnJvbU1vbnRnb21lcnlcIiwgdGhpcy5uOCwgdGhpcy5uOCk7XG4gICAgfVxuXG5cbiAgICBvcDIob3BOYW1lLCBhLCBiKSB7XG4gICAgICAgIHRoaXMudG0uc2V0QnVmZih0aGlzLnBPcDEsIGEpO1xuICAgICAgICB0aGlzLnRtLnNldEJ1ZmYodGhpcy5wT3AyLCBiKTtcbiAgICAgICAgdGhpcy50bS5pbnN0YW5jZS5leHBvcnRzW3RoaXMucHJlZml4ICsgb3BOYW1lXSh0aGlzLnBPcDEsIHRoaXMucE9wMiwgdGhpcy5wT3AzKTtcbiAgICAgICAgcmV0dXJuIHRoaXMudG0uZ2V0QnVmZih0aGlzLnBPcDMsIHRoaXMubjgpO1xuICAgIH1cblxuICAgIG9wMkJvb2wob3BOYW1lLCBhLCBiKSB7XG4gICAgICAgIHRoaXMudG0uc2V0QnVmZih0aGlzLnBPcDEsIGEpO1xuICAgICAgICB0aGlzLnRtLnNldEJ1ZmYodGhpcy5wT3AyLCBiKTtcbiAgICAgICAgcmV0dXJuICEhdGhpcy50bS5pbnN0YW5jZS5leHBvcnRzW3RoaXMucHJlZml4ICsgb3BOYW1lXSh0aGlzLnBPcDEsIHRoaXMucE9wMik7XG4gICAgfVxuXG4gICAgb3AxKG9wTmFtZSwgYSkge1xuICAgICAgICB0aGlzLnRtLnNldEJ1ZmYodGhpcy5wT3AxLCBhKTtcbiAgICAgICAgdGhpcy50bS5pbnN0YW5jZS5leHBvcnRzW3RoaXMucHJlZml4ICsgb3BOYW1lXSh0aGlzLnBPcDEsIHRoaXMucE9wMyk7XG4gICAgICAgIHJldHVybiB0aGlzLnRtLmdldEJ1ZmYodGhpcy5wT3AzLCB0aGlzLm44KTtcbiAgICB9XG5cbiAgICBvcDFCb29sKG9wTmFtZSwgYSkge1xuICAgICAgICB0aGlzLnRtLnNldEJ1ZmYodGhpcy5wT3AxLCBhKTtcbiAgICAgICAgcmV0dXJuICEhdGhpcy50bS5pbnN0YW5jZS5leHBvcnRzW3RoaXMucHJlZml4ICsgb3BOYW1lXSh0aGlzLnBPcDEsIHRoaXMucE9wMyk7XG4gICAgfVxuXG4gICAgYWRkKGEsYikge1xuICAgICAgICByZXR1cm4gdGhpcy5vcDIoXCJfYWRkXCIsIGEsIGIpO1xuICAgIH1cblxuXG4gICAgZXEoYSxiKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wMkJvb2woXCJfZXFcIiwgYSwgYik7XG4gICAgfVxuXG4gICAgaXNaZXJvKGEpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3AxQm9vbChcIl9pc1plcm9cIiwgYSk7XG4gICAgfVxuXG4gICAgc3ViKGEsYikge1xuICAgICAgICByZXR1cm4gdGhpcy5vcDIoXCJfc3ViXCIsIGEsIGIpO1xuICAgIH1cblxuICAgIG5lZyhhKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wMShcIl9uZWdcIiwgYSk7XG4gICAgfVxuXG4gICAgaW52KGEpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3AxKFwiX2ludmVyc2VcIiwgYSk7XG4gICAgfVxuXG4gICAgdG9Nb250Z29tZXJ5KGEpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3AxKFwiX3RvTW9udGdvbWVyeVwiLCBhKTtcbiAgICB9XG5cbiAgICBmcm9tTW9udGdvbWVyeShhKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wMShcIl9mcm9tTW9udGdvbWVyeVwiLCBhKTtcbiAgICB9XG5cbiAgICBtdWwoYSxiKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wMihcIl9tdWxcIiwgYSwgYik7XG4gICAgfVxuXG4gICAgZGl2KGEsIGIpIHtcbiAgICAgICAgdGhpcy50bS5zZXRCdWZmKHRoaXMucE9wMSwgYSk7XG4gICAgICAgIHRoaXMudG0uc2V0QnVmZih0aGlzLnBPcDIsIGIpO1xuICAgICAgICB0aGlzLnRtLmluc3RhbmNlLmV4cG9ydHNbdGhpcy5wcmVmaXggKyBcIl9pbnZlcnNlXCJdKHRoaXMucE9wMiwgdGhpcy5wT3AyKTtcbiAgICAgICAgdGhpcy50bS5pbnN0YW5jZS5leHBvcnRzW3RoaXMucHJlZml4ICsgXCJfbXVsXCJdKHRoaXMucE9wMSwgdGhpcy5wT3AyLCB0aGlzLnBPcDMpO1xuICAgICAgICByZXR1cm4gdGhpcy50bS5nZXRCdWZmKHRoaXMucE9wMywgdGhpcy5uOCk7XG4gICAgfVxuXG4gICAgc3F1YXJlKGEpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3AxKFwiX3NxdWFyZVwiLCBhKTtcbiAgICB9XG5cbiAgICBpc1NxdWFyZShhKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wMUJvb2woXCJfaXNTcXVhcmVcIiwgYSk7XG4gICAgfVxuXG4gICAgc3FydChhKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wMShcIl9zcXJ0XCIsIGEpO1xuICAgIH1cblxuICAgIGV4cChhLCBiKSB7XG4gICAgICAgIGlmICghKGIgaW5zdGFuY2VvZiBVaW50OEFycmF5KSkge1xuICAgICAgICAgICAgYiA9IHRvTEVCdWZmKGUoYikpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMudG0uc2V0QnVmZih0aGlzLnBPcDEsIGEpO1xuICAgICAgICB0aGlzLnRtLnNldEJ1ZmYodGhpcy5wT3AyLCBiKTtcbiAgICAgICAgdGhpcy50bS5pbnN0YW5jZS5leHBvcnRzW3RoaXMucHJlZml4ICsgXCJfZXhwXCJdKHRoaXMucE9wMSwgdGhpcy5wT3AyLCBiLmJ5dGVMZW5ndGgsIHRoaXMucE9wMyk7XG4gICAgICAgIHJldHVybiB0aGlzLnRtLmdldEJ1ZmYodGhpcy5wT3AzLCB0aGlzLm44KTtcbiAgICB9XG5cbiAgICBpc05lZ2F0aXZlKGEpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3AxQm9vbChcIl9pc05lZ2F0aXZlXCIsIGEpO1xuICAgIH1cblxuICAgIGUoYSwgYikge1xuICAgICAgICBpZiAoYSBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpIHJldHVybiBhO1xuICAgICAgICBsZXQgcmEgPSBlKGEsIGIpO1xuICAgICAgICBpZiAoaXNOZWdhdGl2ZSQ0KHJhKSkge1xuICAgICAgICAgICAgcmEgPSBuZWcocmEpO1xuICAgICAgICAgICAgaWYgKGd0KHJhLCB0aGlzLnApKSB7XG4gICAgICAgICAgICAgICAgcmEgPSBtb2QocmEsIHRoaXMucCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByYSA9IHN1Yih0aGlzLnAsIHJhKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChndChyYSwgdGhpcy5wKSkge1xuICAgICAgICAgICAgICAgIHJhID0gbW9kKHJhLCB0aGlzLnApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGJ1ZmYgPSBsZUludDJCdWZmKHJhLCB0aGlzLm44KTtcbiAgICAgICAgcmV0dXJuIHRoaXMudG9Nb250Z29tZXJ5KGJ1ZmYpO1xuICAgIH1cblxuICAgIHRvU3RyaW5nKGEsIHJhZGl4KSB7XG4gICAgICAgIGNvbnN0IGFuID0gdGhpcy5mcm9tTW9udGdvbWVyeShhKTtcbiAgICAgICAgY29uc3QgcyA9IGZyb21ScHJMRShhbiwgMCk7XG4gICAgICAgIHJldHVybiB0b1N0cmluZyhzLCByYWRpeCk7XG4gICAgfVxuXG4gICAgZnJvbVJuZyhybmcpIHtcbiAgICAgICAgbGV0IHY7XG4gICAgICAgIGNvbnN0IGJ1ZmYgPSBuZXcgVWludDhBcnJheSh0aGlzLm44KTtcbiAgICAgICAgZG8ge1xuICAgICAgICAgICAgdiA9IHplcm87XG4gICAgICAgICAgICBmb3IgKGxldCBpPTA7IGk8dGhpcy5uNjQ7IGkrKykge1xuICAgICAgICAgICAgICAgIHYgPSBhZGQodiwgIHNoaWZ0TGVmdChybmcubmV4dFU2NCgpLCA2NCppKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB2ID0gYmFuZCh2LCB0aGlzLm1hc2spO1xuICAgICAgICB9IHdoaWxlIChnZXEodiwgdGhpcy5wKSk7XG4gICAgICAgIHRvUnByTEUoYnVmZiwgMCwgdiwgdGhpcy5uOCk7XG4gICAgICAgIHJldHVybiBidWZmO1xuICAgIH1cblxuICAgIHJhbmRvbSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZnJvbVJuZyhnZXRUaHJlYWRSbmcoKSk7XG4gICAgfVxuXG4gICAgdG9PYmplY3QoYSkge1xuICAgICAgICBjb25zdCBhbiA9IHRoaXMuZnJvbU1vbnRnb21lcnkoYSk7XG4gICAgICAgIHJldHVybiBmcm9tUnByTEUoYW4sIDApO1xuICAgIH1cblxuICAgIGZyb21PYmplY3QoYSkge1xuICAgICAgICBjb25zdCBidWZmID0gbmV3IFVpbnQ4QXJyYXkodGhpcy5uOCk7XG4gICAgICAgIHRvUnByTEUoYnVmZiwgMCwgYSwgdGhpcy5uOCk7XG4gICAgICAgIHJldHVybiB0aGlzLnRvTW9udGdvbWVyeShidWZmKTtcbiAgICB9XG5cbiAgICB0b1JwckxFKGJ1ZmYsIG9mZnNldCwgYSkge1xuICAgICAgICBidWZmLnNldCh0aGlzLmZyb21Nb250Z29tZXJ5KGEpLCBvZmZzZXQpO1xuICAgIH1cblxuICAgIHRvUnByQkUoYnVmZiwgb2Zmc2V0LCBhKSB7XG4gICAgICAgIGNvbnN0IGJ1ZmYyID0gdGhpcy5mcm9tTW9udGdvbWVyeShhKTtcbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPHRoaXMubjgvMjsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCBhdXggPSBidWZmMltpXTtcbiAgICAgICAgICAgIGJ1ZmYyW2ldID0gYnVmZjJbdGhpcy5uOC0xLWldO1xuICAgICAgICAgICAgYnVmZjJbdGhpcy5uOC0xLWldID0gYXV4O1xuICAgICAgICB9XG4gICAgICAgIGJ1ZmYuc2V0KGJ1ZmYyLCBvZmZzZXQpO1xuICAgIH1cblxuICAgIGZyb21ScHJMRShidWZmLCBvZmZzZXQpIHtcbiAgICAgICAgb2Zmc2V0ID0gb2Zmc2V0IHx8IDA7XG4gICAgICAgIGNvbnN0IHJlcyA9IGJ1ZmYuc2xpY2Uob2Zmc2V0LCBvZmZzZXQgKyB0aGlzLm44KTtcbiAgICAgICAgcmV0dXJuIHRoaXMudG9Nb250Z29tZXJ5KHJlcyk7XG4gICAgfVxuXG4gICAgYXN5bmMgYmF0Y2hJbnZlcnNlKGJ1ZmZJbikge1xuICAgICAgICBsZXQgcmV0dXJuQXJyYXkgPSBmYWxzZTtcbiAgICAgICAgY29uc3Qgc0luID0gdGhpcy5uODtcbiAgICAgICAgY29uc3Qgc091dCA9IHRoaXMubjg7XG5cbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoYnVmZkluKSkge1xuICAgICAgICAgICAgYnVmZkluID0gYXJyYXkyYnVmZmVyKGJ1ZmZJbiwgc0luICk7XG4gICAgICAgICAgICByZXR1cm5BcnJheSA9IHRydWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBidWZmSW4gPSBidWZmSW4uc2xpY2UoMCwgYnVmZkluLmJ5dGVMZW5ndGgpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgblBvaW50cyA9IE1hdGguZmxvb3IoYnVmZkluLmJ5dGVMZW5ndGggLyBzSW4pO1xuICAgICAgICBpZiAoIG5Qb2ludHMgKiBzSW4gIT09IGJ1ZmZJbi5ieXRlTGVuZ3RoKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIGJ1ZmZlciBzaXplXCIpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHBvaW50c1BlckNodW5rID0gTWF0aC5mbG9vcihuUG9pbnRzL3RoaXMudG0uY29uY3VycmVuY3kpO1xuICAgICAgICBjb25zdCBvcFByb21pc2VzID0gW107XG4gICAgICAgIGZvciAobGV0IGk9MDsgaTx0aGlzLnRtLmNvbmN1cnJlbmN5OyBpKyspIHtcbiAgICAgICAgICAgIGxldCBuO1xuICAgICAgICAgICAgaWYgKGk8IHRoaXMudG0uY29uY3VycmVuY3ktMSkge1xuICAgICAgICAgICAgICAgIG4gPSBwb2ludHNQZXJDaHVuaztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgbiA9IG5Qb2ludHMgLSBpKnBvaW50c1BlckNodW5rO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG49PTApIGNvbnRpbnVlO1xuXG4gICAgICAgICAgICBjb25zdCBidWZmQ2h1bmsgPSBidWZmSW4uc2xpY2UoaSpwb2ludHNQZXJDaHVuaypzSW4sIGkqcG9pbnRzUGVyQ2h1bmsqc0luICsgbipzSW4pO1xuICAgICAgICAgICAgY29uc3QgdGFzayA9IFtcbiAgICAgICAgICAgICAgICB7Y21kOiBcIkFMTE9DU0VUXCIsIHZhcjogMCwgYnVmZjpidWZmQ2h1bmt9LFxuICAgICAgICAgICAgICAgIHtjbWQ6IFwiQUxMT0NcIiwgdmFyOiAxLCBsZW46c091dCAqIG59LFxuICAgICAgICAgICAgICAgIHtjbWQ6IFwiQ0FMTFwiLCBmbk5hbWU6IHRoaXMucHJlZml4ICsgXCJfYmF0Y2hJbnZlcnNlXCIsIHBhcmFtczogW1xuICAgICAgICAgICAgICAgICAgICB7dmFyOiAwfSxcbiAgICAgICAgICAgICAgICAgICAge3ZhbDogc0lufSxcbiAgICAgICAgICAgICAgICAgICAge3ZhbDogbn0sXG4gICAgICAgICAgICAgICAgICAgIHt2YXI6IDF9LFxuICAgICAgICAgICAgICAgICAgICB7dmFsOiBzT3V0fSxcbiAgICAgICAgICAgICAgICBdfSxcbiAgICAgICAgICAgICAgICB7Y21kOiBcIkdFVFwiLCBvdXQ6IDAsIHZhcjogMSwgbGVuOnNPdXQgKiBufSxcbiAgICAgICAgICAgIF07XG4gICAgICAgICAgICBvcFByb21pc2VzLnB1c2goXG4gICAgICAgICAgICAgICAgdGhpcy50bS5xdWV1ZUFjdGlvbih0YXNrKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IFByb21pc2UuYWxsKG9wUHJvbWlzZXMpO1xuXG4gICAgICAgIGxldCBmdWxsQnVmZk91dDtcbiAgICAgICAgaWYgKGJ1ZmZJbiBpbnN0YW5jZW9mIEJpZ0J1ZmZlcikge1xuICAgICAgICAgICAgZnVsbEJ1ZmZPdXQgPSBuZXcgQmlnQnVmZmVyKG5Qb2ludHMqc091dCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBmdWxsQnVmZk91dCA9IG5ldyBVaW50OEFycmF5KG5Qb2ludHMqc091dCk7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgcCA9MDtcbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPHJlc3VsdC5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgZnVsbEJ1ZmZPdXQuc2V0KHJlc3VsdFtpXVswXSwgcCk7XG4gICAgICAgICAgICBwKz1yZXN1bHRbaV1bMF0uYnl0ZUxlbmd0aDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChyZXR1cm5BcnJheSkge1xuICAgICAgICAgICAgcmV0dXJuIGJ1ZmZlcjJhcnJheShmdWxsQnVmZk91dCwgc091dCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gZnVsbEJ1ZmZPdXQ7XG4gICAgICAgIH1cblxuICAgIH1cblxufVxuXG5jbGFzcyBXYXNtRmllbGQyIHtcblxuICAgIGNvbnN0cnVjdG9yKHRtLCBwcmVmaXgsIEYpIHtcbiAgICAgICAgdGhpcy50bSA9IHRtO1xuICAgICAgICB0aGlzLnByZWZpeCA9IHByZWZpeDtcblxuICAgICAgICB0aGlzLkYgPSBGO1xuICAgICAgICB0aGlzLnR5cGUgPSBcIkYyXCI7XG4gICAgICAgIHRoaXMubSA9IEYubSAqIDI7XG4gICAgICAgIHRoaXMubjggPSB0aGlzLkYubjgqMjtcbiAgICAgICAgdGhpcy5uMzIgPSB0aGlzLkYubjMyKjI7XG4gICAgICAgIHRoaXMubjY0ID0gdGhpcy5GLm42NCoyO1xuXG4gICAgICAgIHRoaXMucE9wMSA9IHRtLmFsbG9jKEYubjgqMik7XG4gICAgICAgIHRoaXMucE9wMiA9IHRtLmFsbG9jKEYubjgqMik7XG4gICAgICAgIHRoaXMucE9wMyA9IHRtLmFsbG9jKEYubjgqMik7XG4gICAgICAgIHRoaXMudG0uaW5zdGFuY2UuZXhwb3J0c1twcmVmaXggKyBcIl96ZXJvXCJdKHRoaXMucE9wMSk7XG4gICAgICAgIHRoaXMuemVybyA9IHRtLmdldEJ1ZmYodGhpcy5wT3AxLCB0aGlzLm44KTtcbiAgICAgICAgdGhpcy50bS5pbnN0YW5jZS5leHBvcnRzW3ByZWZpeCArIFwiX29uZVwiXSh0aGlzLnBPcDEpO1xuICAgICAgICB0aGlzLm9uZSA9IHRtLmdldEJ1ZmYodGhpcy5wT3AxLCB0aGlzLm44KTtcblxuICAgICAgICB0aGlzLm5lZ29uZSA9IHRoaXMubmVnKHRoaXMub25lKTtcbiAgICAgICAgdGhpcy50d28gPSB0aGlzLmFkZCh0aGlzLm9uZSwgdGhpcy5vbmUpO1xuXG4gICAgfVxuXG4gICAgb3AyKG9wTmFtZSwgYSwgYikge1xuICAgICAgICB0aGlzLnRtLnNldEJ1ZmYodGhpcy5wT3AxLCBhKTtcbiAgICAgICAgdGhpcy50bS5zZXRCdWZmKHRoaXMucE9wMiwgYik7XG4gICAgICAgIHRoaXMudG0uaW5zdGFuY2UuZXhwb3J0c1t0aGlzLnByZWZpeCArIG9wTmFtZV0odGhpcy5wT3AxLCB0aGlzLnBPcDIsIHRoaXMucE9wMyk7XG4gICAgICAgIHJldHVybiB0aGlzLnRtLmdldEJ1ZmYodGhpcy5wT3AzLCB0aGlzLm44KTtcbiAgICB9XG5cbiAgICBvcDJCb29sKG9wTmFtZSwgYSwgYikge1xuICAgICAgICB0aGlzLnRtLnNldEJ1ZmYodGhpcy5wT3AxLCBhKTtcbiAgICAgICAgdGhpcy50bS5zZXRCdWZmKHRoaXMucE9wMiwgYik7XG4gICAgICAgIHJldHVybiAhIXRoaXMudG0uaW5zdGFuY2UuZXhwb3J0c1t0aGlzLnByZWZpeCArIG9wTmFtZV0odGhpcy5wT3AxLCB0aGlzLnBPcDIpO1xuICAgIH1cblxuICAgIG9wMShvcE5hbWUsIGEpIHtcbiAgICAgICAgdGhpcy50bS5zZXRCdWZmKHRoaXMucE9wMSwgYSk7XG4gICAgICAgIHRoaXMudG0uaW5zdGFuY2UuZXhwb3J0c1t0aGlzLnByZWZpeCArIG9wTmFtZV0odGhpcy5wT3AxLCB0aGlzLnBPcDMpO1xuICAgICAgICByZXR1cm4gdGhpcy50bS5nZXRCdWZmKHRoaXMucE9wMywgdGhpcy5uOCk7XG4gICAgfVxuXG4gICAgb3AxQm9vbChvcE5hbWUsIGEpIHtcbiAgICAgICAgdGhpcy50bS5zZXRCdWZmKHRoaXMucE9wMSwgYSk7XG4gICAgICAgIHJldHVybiAhIXRoaXMudG0uaW5zdGFuY2UuZXhwb3J0c1t0aGlzLnByZWZpeCArIG9wTmFtZV0odGhpcy5wT3AxLCB0aGlzLnBPcDMpO1xuICAgIH1cblxuICAgIGFkZChhLGIpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3AyKFwiX2FkZFwiLCBhLCBiKTtcbiAgICB9XG5cbiAgICBlcShhLGIpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3AyQm9vbChcIl9lcVwiLCBhLCBiKTtcbiAgICB9XG5cbiAgICBpc1plcm8oYSkge1xuICAgICAgICByZXR1cm4gdGhpcy5vcDFCb29sKFwiX2lzWmVyb1wiLCBhKTtcbiAgICB9XG5cbiAgICBzdWIoYSxiKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wMihcIl9zdWJcIiwgYSwgYik7XG4gICAgfVxuXG4gICAgbmVnKGEpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3AxKFwiX25lZ1wiLCBhKTtcbiAgICB9XG5cbiAgICBpbnYoYSkge1xuICAgICAgICByZXR1cm4gdGhpcy5vcDEoXCJfaW52ZXJzZVwiLCBhKTtcbiAgICB9XG5cbiAgICBpc05lZ2F0aXZlKGEpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3AxQm9vbChcIl9pc05lZ2F0aXZlXCIsIGEpO1xuICAgIH1cblxuICAgIHRvTW9udGdvbWVyeShhKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wMShcIl90b01vbnRnb21lcnlcIiwgYSk7XG4gICAgfVxuXG4gICAgZnJvbU1vbnRnb21lcnkoYSkge1xuICAgICAgICByZXR1cm4gdGhpcy5vcDEoXCJfZnJvbU1vbnRnb21lcnlcIiwgYSk7XG4gICAgfVxuXG4gICAgbXVsKGEsYikge1xuICAgICAgICByZXR1cm4gdGhpcy5vcDIoXCJfbXVsXCIsIGEsIGIpO1xuICAgIH1cblxuICAgIG11bDEoYSxiKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wMihcIl9tdWwxXCIsIGEsIGIpO1xuICAgIH1cblxuICAgIGRpdihhLCBiKSB7XG4gICAgICAgIHRoaXMudG0uc2V0QnVmZih0aGlzLnBPcDEsIGEpO1xuICAgICAgICB0aGlzLnRtLnNldEJ1ZmYodGhpcy5wT3AyLCBiKTtcbiAgICAgICAgdGhpcy50bS5pbnN0YW5jZS5leHBvcnRzW3RoaXMucHJlZml4ICsgXCJfaW52ZXJzZVwiXSh0aGlzLnBPcDIsIHRoaXMucE9wMik7XG4gICAgICAgIHRoaXMudG0uaW5zdGFuY2UuZXhwb3J0c1t0aGlzLnByZWZpeCArIFwiX211bFwiXSh0aGlzLnBPcDEsIHRoaXMucE9wMiwgdGhpcy5wT3AzKTtcbiAgICAgICAgcmV0dXJuIHRoaXMudG0uZ2V0QnVmZih0aGlzLnBPcDMsIHRoaXMubjgpO1xuICAgIH1cblxuICAgIHNxdWFyZShhKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wMShcIl9zcXVhcmVcIiwgYSk7XG4gICAgfVxuXG4gICAgaXNTcXVhcmUoYSkge1xuICAgICAgICByZXR1cm4gdGhpcy5vcDFCb29sKFwiX2lzU3F1YXJlXCIsIGEpO1xuICAgIH1cblxuICAgIHNxcnQoYSkge1xuICAgICAgICByZXR1cm4gdGhpcy5vcDEoXCJfc3FydFwiLCBhKTtcbiAgICB9XG5cbiAgICBleHAoYSwgYikge1xuICAgICAgICBpZiAoIShiIGluc3RhbmNlb2YgVWludDhBcnJheSkpIHtcbiAgICAgICAgICAgIGIgPSB0b0xFQnVmZihlKGIpKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnRtLnNldEJ1ZmYodGhpcy5wT3AxLCBhKTtcbiAgICAgICAgdGhpcy50bS5zZXRCdWZmKHRoaXMucE9wMiwgYik7XG4gICAgICAgIHRoaXMudG0uaW5zdGFuY2UuZXhwb3J0c1t0aGlzLnByZWZpeCArIFwiX2V4cFwiXSh0aGlzLnBPcDEsIHRoaXMucE9wMiwgYi5ieXRlTGVuZ3RoLCB0aGlzLnBPcDMpO1xuICAgICAgICByZXR1cm4gdGhpcy50bS5nZXRCdWZmKHRoaXMucE9wMywgdGhpcy5uOCk7XG4gICAgfVxuXG4gICAgZShhLCBiKSB7XG4gICAgICAgIGlmIChhIGluc3RhbmNlb2YgVWludDhBcnJheSkgcmV0dXJuIGE7XG4gICAgICAgIGlmICgoQXJyYXkuaXNBcnJheShhKSkgJiYgKGEubGVuZ3RoID09IDIpKSB7XG4gICAgICAgICAgICBjb25zdCBjMSA9IHRoaXMuRi5lKGFbMF0sIGIpO1xuICAgICAgICAgICAgY29uc3QgYzIgPSB0aGlzLkYuZShhWzFdLCBiKTtcbiAgICAgICAgICAgIGNvbnN0IHJlcyA9IG5ldyBVaW50OEFycmF5KHRoaXMuRi5uOCoyKTtcbiAgICAgICAgICAgIHJlcy5zZXQoYzEpO1xuICAgICAgICAgICAgcmVzLnNldChjMiwgdGhpcy5GLm44KjIpO1xuICAgICAgICAgICAgcmV0dXJuIHJlcztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcImludmFsaWQgRjJcIik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB0b1N0cmluZyhhLCByYWRpeCkge1xuICAgICAgICBjb25zdCBzMSA9IHRoaXMuRi50b1N0cmluZyhhLnNsaWNlKDAsIHRoaXMuRi5uOCksIHJhZGl4KTtcbiAgICAgICAgY29uc3QgczIgPSB0aGlzLkYudG9TdHJpbmcoYS5zbGljZSh0aGlzLkYubjgpLCByYWRpeCk7XG4gICAgICAgIHJldHVybiBgWyR7czF9LCAke3MyfV1gO1xuICAgIH1cblxuICAgIGZyb21Sbmcocm5nKSB7XG4gICAgICAgIGNvbnN0IGMxID0gdGhpcy5GLmZyb21Sbmcocm5nKTtcbiAgICAgICAgY29uc3QgYzIgPSB0aGlzLkYuZnJvbVJuZyhybmcpO1xuICAgICAgICBjb25zdCByZXMgPSBuZXcgVWludDhBcnJheSh0aGlzLkYubjgqMik7XG4gICAgICAgIHJlcy5zZXQoYzEpO1xuICAgICAgICByZXMuc2V0KGMyLCB0aGlzLkYubjgpO1xuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH1cblxuICAgIHJhbmRvbSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZnJvbVJuZyhnZXRUaHJlYWRSbmcoKSk7XG4gICAgfVxuXG4gICAgdG9PYmplY3QoYSkge1xuICAgICAgICBjb25zdCBjMSA9IHRoaXMuRi50b09iamVjdChhLnNsaWNlKDAsIHRoaXMuRi5uOCkpO1xuICAgICAgICBjb25zdCBjMiA9IHRoaXMuRi50b09iamVjdChhLnNsaWNlKHRoaXMuRi5uOCwgdGhpcy5GLm44KjIpKTtcbiAgICAgICAgcmV0dXJuIFtjMSwgYzJdO1xuICAgIH1cblxuICAgIGZyb21PYmplY3QoYSkge1xuICAgICAgICBjb25zdCBidWZmID0gbmV3IFVpbnQ4QXJyYXkodGhpcy5GLm44KjIpO1xuICAgICAgICBjb25zdCBiMSA9IHRoaXMuRi5mcm9tT2JqZWN0KGFbMF0pO1xuICAgICAgICBjb25zdCBiMiA9IHRoaXMuRi5mcm9tT2JqZWN0KGFbMV0pO1xuICAgICAgICBidWZmLnNldChiMSk7XG4gICAgICAgIGJ1ZmYuc2V0KGIyLCB0aGlzLkYubjgpO1xuICAgICAgICByZXR1cm4gYnVmZjtcbiAgICB9XG5cbiAgICBjMShhKSB7XG4gICAgICAgIHJldHVybiBhLnNsaWNlKDAsIHRoaXMuRi5uOCk7XG4gICAgfVxuXG4gICAgYzIoYSkge1xuICAgICAgICByZXR1cm4gYS5zbGljZSh0aGlzLkYubjgpO1xuICAgIH1cblxufVxuXG5jbGFzcyBXYXNtRmllbGQzIHtcblxuICAgIGNvbnN0cnVjdG9yKHRtLCBwcmVmaXgsIEYpIHtcbiAgICAgICAgdGhpcy50bSA9IHRtO1xuICAgICAgICB0aGlzLnByZWZpeCA9IHByZWZpeDtcblxuICAgICAgICB0aGlzLkYgPSBGO1xuICAgICAgICB0aGlzLnR5cGUgPSBcIkYzXCI7XG4gICAgICAgIHRoaXMubSA9IEYubSAqIDM7XG4gICAgICAgIHRoaXMubjggPSB0aGlzLkYubjgqMztcbiAgICAgICAgdGhpcy5uMzIgPSB0aGlzLkYubjMyKjM7XG4gICAgICAgIHRoaXMubjY0ID0gdGhpcy5GLm42NCozO1xuXG4gICAgICAgIHRoaXMucE9wMSA9IHRtLmFsbG9jKEYubjgqMyk7XG4gICAgICAgIHRoaXMucE9wMiA9IHRtLmFsbG9jKEYubjgqMyk7XG4gICAgICAgIHRoaXMucE9wMyA9IHRtLmFsbG9jKEYubjgqMyk7XG4gICAgICAgIHRoaXMudG0uaW5zdGFuY2UuZXhwb3J0c1twcmVmaXggKyBcIl96ZXJvXCJdKHRoaXMucE9wMSk7XG4gICAgICAgIHRoaXMuemVybyA9IHRtLmdldEJ1ZmYodGhpcy5wT3AxLCB0aGlzLm44KTtcbiAgICAgICAgdGhpcy50bS5pbnN0YW5jZS5leHBvcnRzW3ByZWZpeCArIFwiX29uZVwiXSh0aGlzLnBPcDEpO1xuICAgICAgICB0aGlzLm9uZSA9IHRtLmdldEJ1ZmYodGhpcy5wT3AxLCB0aGlzLm44KTtcblxuICAgICAgICB0aGlzLm5lZ29uZSA9IHRoaXMubmVnKHRoaXMub25lKTtcbiAgICAgICAgdGhpcy50d28gPSB0aGlzLmFkZCh0aGlzLm9uZSwgdGhpcy5vbmUpO1xuXG4gICAgfVxuXG4gICAgb3AyKG9wTmFtZSwgYSwgYikge1xuICAgICAgICB0aGlzLnRtLnNldEJ1ZmYodGhpcy5wT3AxLCBhKTtcbiAgICAgICAgdGhpcy50bS5zZXRCdWZmKHRoaXMucE9wMiwgYik7XG4gICAgICAgIHRoaXMudG0uaW5zdGFuY2UuZXhwb3J0c1t0aGlzLnByZWZpeCArIG9wTmFtZV0odGhpcy5wT3AxLCB0aGlzLnBPcDIsIHRoaXMucE9wMyk7XG4gICAgICAgIHJldHVybiB0aGlzLnRtLmdldEJ1ZmYodGhpcy5wT3AzLCB0aGlzLm44KTtcbiAgICB9XG5cbiAgICBvcDJCb29sKG9wTmFtZSwgYSwgYikge1xuICAgICAgICB0aGlzLnRtLnNldEJ1ZmYodGhpcy5wT3AxLCBhKTtcbiAgICAgICAgdGhpcy50bS5zZXRCdWZmKHRoaXMucE9wMiwgYik7XG4gICAgICAgIHJldHVybiAhIXRoaXMudG0uaW5zdGFuY2UuZXhwb3J0c1t0aGlzLnByZWZpeCArIG9wTmFtZV0odGhpcy5wT3AxLCB0aGlzLnBPcDIpO1xuICAgIH1cblxuICAgIG9wMShvcE5hbWUsIGEpIHtcbiAgICAgICAgdGhpcy50bS5zZXRCdWZmKHRoaXMucE9wMSwgYSk7XG4gICAgICAgIHRoaXMudG0uaW5zdGFuY2UuZXhwb3J0c1t0aGlzLnByZWZpeCArIG9wTmFtZV0odGhpcy5wT3AxLCB0aGlzLnBPcDMpO1xuICAgICAgICByZXR1cm4gdGhpcy50bS5nZXRCdWZmKHRoaXMucE9wMywgdGhpcy5uOCk7XG4gICAgfVxuXG4gICAgb3AxQm9vbChvcE5hbWUsIGEpIHtcbiAgICAgICAgdGhpcy50bS5zZXRCdWZmKHRoaXMucE9wMSwgYSk7XG4gICAgICAgIHJldHVybiAhIXRoaXMudG0uaW5zdGFuY2UuZXhwb3J0c1t0aGlzLnByZWZpeCArIG9wTmFtZV0odGhpcy5wT3AxLCB0aGlzLnBPcDMpO1xuICAgIH1cblxuXG4gICAgZXEoYSxiKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wMkJvb2woXCJfZXFcIiwgYSwgYik7XG4gICAgfVxuXG4gICAgaXNaZXJvKGEpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3AxQm9vbChcIl9pc1plcm9cIiwgYSk7XG4gICAgfVxuXG4gICAgYWRkKGEsYikge1xuICAgICAgICByZXR1cm4gdGhpcy5vcDIoXCJfYWRkXCIsIGEsIGIpO1xuICAgIH1cblxuICAgIHN1YihhLGIpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3AyKFwiX3N1YlwiLCBhLCBiKTtcbiAgICB9XG5cbiAgICBuZWcoYSkge1xuICAgICAgICByZXR1cm4gdGhpcy5vcDEoXCJfbmVnXCIsIGEpO1xuICAgIH1cblxuICAgIGludihhKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wMShcIl9pbnZlcnNlXCIsIGEpO1xuICAgIH1cblxuICAgIGlzTmVnYXRpdmUoYSkge1xuICAgICAgICByZXR1cm4gdGhpcy5vcDFCb29sKFwiX2lzTmVnYXRpdmVcIiwgYSk7XG4gICAgfVxuXG4gICAgdG9Nb250Z29tZXJ5KGEpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3AxKFwiX3RvTW9udGdvbWVyeVwiLCBhKTtcbiAgICB9XG5cbiAgICBmcm9tTW9udGdvbWVyeShhKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wMShcIl9mcm9tTW9udGdvbWVyeVwiLCBhKTtcbiAgICB9XG5cbiAgICBtdWwoYSxiKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wMihcIl9tdWxcIiwgYSwgYik7XG4gICAgfVxuXG4gICAgZGl2KGEsIGIpIHtcbiAgICAgICAgdGhpcy50bS5zZXRCdWZmKHRoaXMucE9wMSwgYSk7XG4gICAgICAgIHRoaXMudG0uc2V0QnVmZih0aGlzLnBPcDIsIGIpO1xuICAgICAgICB0aGlzLnRtLmluc3RhbmNlLmV4cG9ydHNbdGhpcy5wcmVmaXggKyBcIl9pbnZlcnNlXCJdKHRoaXMucE9wMiwgdGhpcy5wT3AyKTtcbiAgICAgICAgdGhpcy50bS5pbnN0YW5jZS5leHBvcnRzW3RoaXMucHJlZml4ICsgXCJfbXVsXCJdKHRoaXMucE9wMSwgdGhpcy5wT3AyLCB0aGlzLnBPcDMpO1xuICAgICAgICByZXR1cm4gdGhpcy50bS5nZXRCdWZmKHRoaXMucE9wMywgdGhpcy5uOCk7XG4gICAgfVxuXG4gICAgc3F1YXJlKGEpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3AxKFwiX3NxdWFyZVwiLCBhKTtcbiAgICB9XG5cbiAgICBpc1NxdWFyZShhKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wMUJvb2woXCJfaXNTcXVhcmVcIiwgYSk7XG4gICAgfVxuXG4gICAgc3FydChhKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wMShcIl9zcXJ0XCIsIGEpO1xuICAgIH1cblxuICAgIGV4cChhLCBiKSB7XG4gICAgICAgIGlmICghKGIgaW5zdGFuY2VvZiBVaW50OEFycmF5KSkge1xuICAgICAgICAgICAgYiA9IHRvTEVCdWZmKGUoYikpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMudG0uc2V0QnVmZih0aGlzLnBPcDEsIGEpO1xuICAgICAgICB0aGlzLnRtLnNldEJ1ZmYodGhpcy5wT3AyLCBiKTtcbiAgICAgICAgdGhpcy50bS5pbnN0YW5jZS5leHBvcnRzW3RoaXMucHJlZml4ICsgXCJfZXhwXCJdKHRoaXMucE9wMSwgdGhpcy5wT3AyLCBiLmJ5dGVMZW5ndGgsIHRoaXMucE9wMyk7XG4gICAgICAgIHJldHVybiB0aGlzLmdldEJ1ZmYodGhpcy5wT3AzLCB0aGlzLm44KTtcbiAgICB9XG5cbiAgICBlKGEsIGIpIHtcbiAgICAgICAgaWYgKGEgaW5zdGFuY2VvZiBVaW50OEFycmF5KSByZXR1cm4gYTtcbiAgICAgICAgaWYgKChBcnJheS5pc0FycmF5KGEpKSAmJiAoYS5sZW5ndGggPT0gMykpIHtcbiAgICAgICAgICAgIGNvbnN0IGMxID0gdGhpcy5GLmUoYVswXSwgYik7XG4gICAgICAgICAgICBjb25zdCBjMiA9IHRoaXMuRi5lKGFbMV0sIGIpO1xuICAgICAgICAgICAgY29uc3QgYzMgPSB0aGlzLkYuZShhWzJdLCBiKTtcbiAgICAgICAgICAgIGNvbnN0IHJlcyA9IG5ldyBVaW50OEFycmF5KHRoaXMuRi5uOCozKTtcbiAgICAgICAgICAgIHJlcy5zZXQoYzEpO1xuICAgICAgICAgICAgcmVzLnNldChjMiwgdGhpcy5GLm44KTtcbiAgICAgICAgICAgIHJlcy5zZXQoYzMsIHRoaXMuRi5uOCoyKTtcbiAgICAgICAgICAgIHJldHVybiByZXM7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJpbnZhbGlkIEYzXCIpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdG9TdHJpbmcoYSwgcmFkaXgpIHtcbiAgICAgICAgY29uc3QgczEgPSB0aGlzLkYudG9TdHJpbmcoYS5zbGljZSgwLCB0aGlzLkYubjgpLCByYWRpeCk7XG4gICAgICAgIGNvbnN0IHMyID0gdGhpcy5GLnRvU3RyaW5nKGEuc2xpY2UodGhpcy5GLm44LCB0aGlzLkYubjgqMiksIHJhZGl4KTtcbiAgICAgICAgY29uc3QgczMgPSB0aGlzLkYudG9TdHJpbmcoYS5zbGljZSh0aGlzLkYubjgqMiksIHJhZGl4KTtcbiAgICAgICAgcmV0dXJuIGBbJHtzMX0sICR7czJ9LCAke3MzfV1gO1xuICAgIH1cblxuICAgIGZyb21Sbmcocm5nKSB7XG4gICAgICAgIGNvbnN0IGMxID0gdGhpcy5GLmZyb21Sbmcocm5nKTtcbiAgICAgICAgY29uc3QgYzIgPSB0aGlzLkYuZnJvbVJuZyhybmcpO1xuICAgICAgICBjb25zdCBjMyA9IHRoaXMuRi5mcm9tUm5nKHJuZyk7XG4gICAgICAgIGNvbnN0IHJlcyA9IG5ldyBVaW50OEFycmF5KHRoaXMuRi5uOCozKTtcbiAgICAgICAgcmVzLnNldChjMSk7XG4gICAgICAgIHJlcy5zZXQoYzIsIHRoaXMuRi5uOCk7XG4gICAgICAgIHJlcy5zZXQoYzMsIHRoaXMuRi5uOCoyKTtcbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG5cbiAgICByYW5kb20oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmZyb21SbmcoZ2V0VGhyZWFkUm5nKCkpO1xuICAgIH1cblxuICAgIHRvT2JqZWN0KGEpIHtcbiAgICAgICAgY29uc3QgYzEgPSB0aGlzLkYudG9PYmplY3QoYS5zbGljZSgwLCB0aGlzLkYubjgpKTtcbiAgICAgICAgY29uc3QgYzIgPSB0aGlzLkYudG9PYmplY3QoYS5zbGljZSh0aGlzLkYubjgsIHRoaXMuRi5uOCoyKSk7XG4gICAgICAgIGNvbnN0IGMzID0gdGhpcy5GLnRvT2JqZWN0KGEuc2xpY2UodGhpcy5GLm44KjIsIHRoaXMuRi5uOCozKSk7XG4gICAgICAgIHJldHVybiBbYzEsIGMyLCBjM107XG4gICAgfVxuXG4gICAgZnJvbU9iamVjdChhKSB7XG4gICAgICAgIGNvbnN0IGJ1ZmYgPSBuZXcgVWludDhBcnJheSh0aGlzLkYubjgqMyk7XG4gICAgICAgIGNvbnN0IGIxID0gdGhpcy5GLmZyb21PYmplY3QoYVswXSk7XG4gICAgICAgIGNvbnN0IGIyID0gdGhpcy5GLmZyb21PYmplY3QoYVsxXSk7XG4gICAgICAgIGNvbnN0IGIzID0gdGhpcy5GLmZyb21PYmplY3QoYVsyXSk7XG4gICAgICAgIGJ1ZmYuc2V0KGIxKTtcbiAgICAgICAgYnVmZi5zZXQoYjIsIHRoaXMuRi5uOCk7XG4gICAgICAgIGJ1ZmYuc2V0KGIzLCB0aGlzLkYubjgqMik7XG4gICAgICAgIHJldHVybiBidWZmO1xuICAgIH1cblxuICAgIGMxKGEpIHtcbiAgICAgICAgcmV0dXJuIGEuc2xpY2UoMCwgdGhpcy5GLm44KTtcbiAgICB9XG5cbiAgICBjMihhKSB7XG4gICAgICAgIHJldHVybiBhLnNsaWNlKHRoaXMuRi5uOCwgdGhpcy5GLm44KjIpO1xuICAgIH1cblxuICAgIGMzKGEpIHtcbiAgICAgICAgcmV0dXJuIGEuc2xpY2UodGhpcy5GLm44KjIpO1xuICAgIH1cblxufVxuXG5jbGFzcyBXYXNtQ3VydmUge1xuXG4gICAgY29uc3RydWN0b3IodG0sIHByZWZpeCwgRiwgcEdlbiwgcEdiLCBjb2ZhY3Rvcikge1xuICAgICAgICB0aGlzLnRtID0gdG07XG4gICAgICAgIHRoaXMucHJlZml4ID0gcHJlZml4O1xuICAgICAgICB0aGlzLkYgPSBGO1xuXG4gICAgICAgIHRoaXMucE9wMSA9IHRtLmFsbG9jKEYubjgqMyk7XG4gICAgICAgIHRoaXMucE9wMiA9IHRtLmFsbG9jKEYubjgqMyk7XG4gICAgICAgIHRoaXMucE9wMyA9IHRtLmFsbG9jKEYubjgqMyk7XG4gICAgICAgIHRoaXMudG0uaW5zdGFuY2UuZXhwb3J0c1twcmVmaXggKyBcIl96ZXJvXCJdKHRoaXMucE9wMSk7XG4gICAgICAgIHRoaXMuemVybyA9IHRoaXMudG0uZ2V0QnVmZih0aGlzLnBPcDEsIEYubjgqMyk7XG4gICAgICAgIHRoaXMudG0uaW5zdGFuY2UuZXhwb3J0c1twcmVmaXggKyBcIl96ZXJvQWZmaW5lXCJdKHRoaXMucE9wMSk7XG4gICAgICAgIHRoaXMuemVyb0FmZmluZSA9IHRoaXMudG0uZ2V0QnVmZih0aGlzLnBPcDEsIEYubjgqMik7XG4gICAgICAgIHRoaXMub25lID0gdGhpcy50bS5nZXRCdWZmKHBHZW4sIEYubjgqMyk7XG4gICAgICAgIHRoaXMuZyA9IHRoaXMub25lO1xuICAgICAgICB0aGlzLm9uZUFmZmluZSA9IHRoaXMudG0uZ2V0QnVmZihwR2VuLCBGLm44KjIpO1xuICAgICAgICB0aGlzLmdBZmZpbmUgPSB0aGlzLm9uZUFmZmluZTtcbiAgICAgICAgdGhpcy5iID0gdGhpcy50bS5nZXRCdWZmKHBHYiwgRi5uOCk7XG5cbiAgICAgICAgaWYgKGNvZmFjdG9yKSB7XG4gICAgICAgICAgICB0aGlzLmNvZmFjdG9yID0gdG9MRUJ1ZmYoY29mYWN0b3IpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5uZWdvbmUgPSB0aGlzLm5lZyh0aGlzLm9uZSk7XG4gICAgICAgIHRoaXMudHdvID0gdGhpcy5hZGQodGhpcy5vbmUsIHRoaXMub25lKTtcblxuICAgICAgICB0aGlzLmJhdGNoTEVNdG9DID0gYnVpbGRCYXRjaENvbnZlcnQodG0sIHByZWZpeCArIFwiX2JhdGNoTEVNdG9DXCIsIEYubjgqMiwgRi5uOCk7XG4gICAgICAgIHRoaXMuYmF0Y2hMRU10b1UgPSBidWlsZEJhdGNoQ29udmVydCh0bSwgcHJlZml4ICsgXCJfYmF0Y2hMRU10b1VcIiwgRi5uOCoyLCBGLm44KjIpO1xuICAgICAgICB0aGlzLmJhdGNoQ3RvTEVNID0gYnVpbGRCYXRjaENvbnZlcnQodG0sIHByZWZpeCArIFwiX2JhdGNoQ3RvTEVNXCIsIEYubjgsIEYubjgqMik7XG4gICAgICAgIHRoaXMuYmF0Y2hVdG9MRU0gPSBidWlsZEJhdGNoQ29udmVydCh0bSwgcHJlZml4ICsgXCJfYmF0Y2hVdG9MRU1cIiwgRi5uOCoyLCBGLm44KjIpO1xuICAgICAgICB0aGlzLmJhdGNoVG9KYWNvYmlhbiA9IGJ1aWxkQmF0Y2hDb252ZXJ0KHRtLCBwcmVmaXggKyBcIl9iYXRjaFRvSmFjb2JpYW5cIiwgRi5uOCoyLCBGLm44KjMpO1xuICAgICAgICB0aGlzLmJhdGNoVG9BZmZpbmUgPSBidWlsZEJhdGNoQ29udmVydCh0bSwgcHJlZml4ICsgXCJfYmF0Y2hUb0FmZmluZVwiLCBGLm44KjMsIEYubjgqMik7XG4gICAgfVxuXG4gICAgb3AyKG9wTmFtZSwgYSwgYikge1xuICAgICAgICB0aGlzLnRtLnNldEJ1ZmYodGhpcy5wT3AxLCBhKTtcbiAgICAgICAgdGhpcy50bS5zZXRCdWZmKHRoaXMucE9wMiwgYik7XG4gICAgICAgIHRoaXMudG0uaW5zdGFuY2UuZXhwb3J0c1t0aGlzLnByZWZpeCArIG9wTmFtZV0odGhpcy5wT3AxLCB0aGlzLnBPcDIsIHRoaXMucE9wMyk7XG4gICAgICAgIHJldHVybiB0aGlzLnRtLmdldEJ1ZmYodGhpcy5wT3AzLCB0aGlzLkYubjgqMyk7XG4gICAgfVxuXG4gICAgb3AyYm9vbChvcE5hbWUsIGEsIGIpIHtcbiAgICAgICAgdGhpcy50bS5zZXRCdWZmKHRoaXMucE9wMSwgYSk7XG4gICAgICAgIHRoaXMudG0uc2V0QnVmZih0aGlzLnBPcDIsIGIpO1xuICAgICAgICByZXR1cm4gISF0aGlzLnRtLmluc3RhbmNlLmV4cG9ydHNbdGhpcy5wcmVmaXggKyBvcE5hbWVdKHRoaXMucE9wMSwgdGhpcy5wT3AyLCB0aGlzLnBPcDMpO1xuICAgIH1cblxuICAgIG9wMShvcE5hbWUsIGEpIHtcbiAgICAgICAgdGhpcy50bS5zZXRCdWZmKHRoaXMucE9wMSwgYSk7XG4gICAgICAgIHRoaXMudG0uaW5zdGFuY2UuZXhwb3J0c1t0aGlzLnByZWZpeCArIG9wTmFtZV0odGhpcy5wT3AxLCB0aGlzLnBPcDMpO1xuICAgICAgICByZXR1cm4gdGhpcy50bS5nZXRCdWZmKHRoaXMucE9wMywgdGhpcy5GLm44KjMpO1xuICAgIH1cblxuICAgIG9wMUFmZmluZShvcE5hbWUsIGEpIHtcbiAgICAgICAgdGhpcy50bS5zZXRCdWZmKHRoaXMucE9wMSwgYSk7XG4gICAgICAgIHRoaXMudG0uaW5zdGFuY2UuZXhwb3J0c1t0aGlzLnByZWZpeCArIG9wTmFtZV0odGhpcy5wT3AxLCB0aGlzLnBPcDMpO1xuICAgICAgICByZXR1cm4gdGhpcy50bS5nZXRCdWZmKHRoaXMucE9wMywgdGhpcy5GLm44KjIpO1xuICAgIH1cblxuICAgIG9wMUJvb2wob3BOYW1lLCBhKSB7XG4gICAgICAgIHRoaXMudG0uc2V0QnVmZih0aGlzLnBPcDEsIGEpO1xuICAgICAgICByZXR1cm4gISF0aGlzLnRtLmluc3RhbmNlLmV4cG9ydHNbdGhpcy5wcmVmaXggKyBvcE5hbWVdKHRoaXMucE9wMSwgdGhpcy5wT3AzKTtcbiAgICB9XG5cbiAgICBhZGQoYSxiKSB7XG4gICAgICAgIGlmIChhLmJ5dGVMZW5ndGggPT0gdGhpcy5GLm44KjMpIHtcbiAgICAgICAgICAgIGlmIChiLmJ5dGVMZW5ndGggPT0gdGhpcy5GLm44KjMpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5vcDIoXCJfYWRkXCIsIGEsIGIpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChiLmJ5dGVMZW5ndGggPT0gdGhpcy5GLm44KjIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5vcDIoXCJfYWRkTWl4ZWRcIiwgYSwgYik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcImludmFsaWQgcG9pbnQgc2l6ZVwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChhLmJ5dGVMZW5ndGggPT0gdGhpcy5GLm44KjIpIHtcbiAgICAgICAgICAgIGlmIChiLmJ5dGVMZW5ndGggPT0gdGhpcy5GLm44KjMpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5vcDIoXCJfYWRkTWl4ZWRcIiwgYiwgYSk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGIuYnl0ZUxlbmd0aCA9PSB0aGlzLkYubjgqMikge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLm9wMihcIl9hZGRBZmZpbmVcIiwgYSwgYik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcImludmFsaWQgcG9pbnQgc2l6ZVwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcImludmFsaWQgcG9pbnQgc2l6ZVwiKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHN1YihhLGIpIHtcbiAgICAgICAgaWYgKGEuYnl0ZUxlbmd0aCA9PSB0aGlzLkYubjgqMykge1xuICAgICAgICAgICAgaWYgKGIuYnl0ZUxlbmd0aCA9PSB0aGlzLkYubjgqMykge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLm9wMihcIl9zdWJcIiwgYSwgYik7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGIuYnl0ZUxlbmd0aCA9PSB0aGlzLkYubjgqMikge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLm9wMihcIl9zdWJNaXhlZFwiLCBhLCBiKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiaW52YWxpZCBwb2ludCBzaXplXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKGEuYnl0ZUxlbmd0aCA9PSB0aGlzLkYubjgqMikge1xuICAgICAgICAgICAgaWYgKGIuYnl0ZUxlbmd0aCA9PSB0aGlzLkYubjgqMykge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLm9wMihcIl9zdWJNaXhlZFwiLCBiLCBhKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoYi5ieXRlTGVuZ3RoID09IHRoaXMuRi5uOCoyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMub3AyKFwiX3N1YkFmZmluZVwiLCBhLCBiKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiaW52YWxpZCBwb2ludCBzaXplXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiaW52YWxpZCBwb2ludCBzaXplXCIpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmVnKGEpIHtcbiAgICAgICAgaWYgKGEuYnl0ZUxlbmd0aCA9PSB0aGlzLkYubjgqMykge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMub3AxKFwiX25lZ1wiLCBhKTtcbiAgICAgICAgfSBlbHNlIGlmIChhLmJ5dGVMZW5ndGggPT0gdGhpcy5GLm44KjIpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLm9wMUFmZmluZShcIl9uZWdBZmZpbmVcIiwgYSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJpbnZhbGlkIHBvaW50IHNpemVcIik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBkb3VibGUoYSkge1xuICAgICAgICBpZiAoYS5ieXRlTGVuZ3RoID09IHRoaXMuRi5uOCozKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5vcDEoXCJfZG91YmxlXCIsIGEpO1xuICAgICAgICB9IGVsc2UgaWYgKGEuYnl0ZUxlbmd0aCA9PSB0aGlzLkYubjgqMikge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMub3AxKFwiX2RvdWJsZUFmZmluZVwiLCBhKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcImludmFsaWQgcG9pbnQgc2l6ZVwiKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGlzWmVybyhhKSB7XG4gICAgICAgIGlmIChhLmJ5dGVMZW5ndGggPT0gdGhpcy5GLm44KjMpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLm9wMUJvb2woXCJfaXNaZXJvXCIsIGEpO1xuICAgICAgICB9IGVsc2UgaWYgKGEuYnl0ZUxlbmd0aCA9PSB0aGlzLkYubjgqMikge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMub3AxQm9vbChcIl9pc1plcm9BZmZpbmVcIiwgYSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJpbnZhbGlkIHBvaW50IHNpemVcIik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB0aW1lc1NjYWxhcihhLCBzKSB7XG4gICAgICAgIGlmICghKHMgaW5zdGFuY2VvZiBVaW50OEFycmF5KSkge1xuICAgICAgICAgICAgcyA9IHRvTEVCdWZmKGUocykpO1xuICAgICAgICB9XG4gICAgICAgIGxldCBmbk5hbWU7XG4gICAgICAgIGlmIChhLmJ5dGVMZW5ndGggPT0gdGhpcy5GLm44KjMpIHtcbiAgICAgICAgICAgIGZuTmFtZSA9IHRoaXMucHJlZml4ICsgXCJfdGltZXNTY2FsYXJcIjtcbiAgICAgICAgfSBlbHNlIGlmIChhLmJ5dGVMZW5ndGggPT0gdGhpcy5GLm44KjIpIHtcbiAgICAgICAgICAgIGZuTmFtZSA9IHRoaXMucHJlZml4ICsgXCJfdGltZXNTY2FsYXJBZmZpbmVcIjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcImludmFsaWQgcG9pbnQgc2l6ZVwiKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnRtLnNldEJ1ZmYodGhpcy5wT3AxLCBhKTtcbiAgICAgICAgdGhpcy50bS5zZXRCdWZmKHRoaXMucE9wMiwgcyk7XG4gICAgICAgIHRoaXMudG0uaW5zdGFuY2UuZXhwb3J0c1tmbk5hbWVdKHRoaXMucE9wMSwgdGhpcy5wT3AyLCBzLmJ5dGVMZW5ndGgsIHRoaXMucE9wMyk7XG4gICAgICAgIHJldHVybiB0aGlzLnRtLmdldEJ1ZmYodGhpcy5wT3AzLCB0aGlzLkYubjgqMyk7XG4gICAgfVxuXG4gICAgdGltZXNGcihhLCBzKSB7XG4gICAgICAgIGxldCBmbk5hbWU7XG4gICAgICAgIGlmIChhLmJ5dGVMZW5ndGggPT0gdGhpcy5GLm44KjMpIHtcbiAgICAgICAgICAgIGZuTmFtZSA9IHRoaXMucHJlZml4ICsgXCJfdGltZXNGclwiO1xuICAgICAgICB9IGVsc2UgaWYgKGEuYnl0ZUxlbmd0aCA9PSB0aGlzLkYubjgqMikge1xuICAgICAgICAgICAgZm5OYW1lID0gdGhpcy5wcmVmaXggKyBcIl90aW1lc0ZyQWZmaW5lXCI7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJpbnZhbGlkIHBvaW50IHNpemVcIik7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy50bS5zZXRCdWZmKHRoaXMucE9wMSwgYSk7XG4gICAgICAgIHRoaXMudG0uc2V0QnVmZih0aGlzLnBPcDIsIHMpO1xuICAgICAgICB0aGlzLnRtLmluc3RhbmNlLmV4cG9ydHNbZm5OYW1lXSh0aGlzLnBPcDEsIHRoaXMucE9wMiwgdGhpcy5wT3AzKTtcbiAgICAgICAgcmV0dXJuIHRoaXMudG0uZ2V0QnVmZih0aGlzLnBPcDMsIHRoaXMuRi5uOCozKTtcbiAgICB9XG5cbiAgICBlcShhLGIpIHtcbiAgICAgICAgaWYgKGEuYnl0ZUxlbmd0aCA9PSB0aGlzLkYubjgqMykge1xuICAgICAgICAgICAgaWYgKGIuYnl0ZUxlbmd0aCA9PSB0aGlzLkYubjgqMykge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLm9wMmJvb2woXCJfZXFcIiwgYSwgYik7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGIuYnl0ZUxlbmd0aCA9PSB0aGlzLkYubjgqMikge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLm9wMmJvb2woXCJfZXFNaXhlZFwiLCBhLCBiKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiaW52YWxpZCBwb2ludCBzaXplXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKGEuYnl0ZUxlbmd0aCA9PSB0aGlzLkYubjgqMikge1xuICAgICAgICAgICAgaWYgKGIuYnl0ZUxlbmd0aCA9PSB0aGlzLkYubjgqMykge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLm9wMmJvb2woXCJfZXFNaXhlZFwiLCBiLCBhKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoYi5ieXRlTGVuZ3RoID09IHRoaXMuRi5uOCoyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMub3AyYm9vbChcIl9lcUFmZmluZVwiLCBhLCBiKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiaW52YWxpZCBwb2ludCBzaXplXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiaW52YWxpZCBwb2ludCBzaXplXCIpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdG9BZmZpbmUoYSkge1xuICAgICAgICBpZiAoYS5ieXRlTGVuZ3RoID09IHRoaXMuRi5uOCozKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5vcDFBZmZpbmUoXCJfdG9BZmZpbmVcIiwgYSk7XG4gICAgICAgIH0gZWxzZSBpZiAoYS5ieXRlTGVuZ3RoID09IHRoaXMuRi5uOCoyKSB7XG4gICAgICAgICAgICByZXR1cm4gYTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcImludmFsaWQgcG9pbnQgc2l6ZVwiKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHRvSmFjb2JpYW4oYSkge1xuICAgICAgICBpZiAoYS5ieXRlTGVuZ3RoID09IHRoaXMuRi5uOCozKSB7XG4gICAgICAgICAgICByZXR1cm4gYTtcbiAgICAgICAgfSBlbHNlIGlmIChhLmJ5dGVMZW5ndGggPT0gdGhpcy5GLm44KjIpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLm9wMShcIl90b0phY29iaWFuXCIsIGEpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiaW52YWxpZCBwb2ludCBzaXplXCIpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdG9ScHJVbmNvbXByZXNzZWQoYXJyLCBvZmZzZXQsIGEpIHtcbiAgICAgICAgdGhpcy50bS5zZXRCdWZmKHRoaXMucE9wMSwgYSk7XG4gICAgICAgIGlmIChhLmJ5dGVMZW5ndGggPT0gdGhpcy5GLm44KjMpIHtcbiAgICAgICAgICAgIHRoaXMudG0uaW5zdGFuY2UuZXhwb3J0c1t0aGlzLnByZWZpeCArIFwiX3RvQWZmaW5lXCJdKHRoaXMucE9wMSwgdGhpcy5wT3AxKTtcbiAgICAgICAgfSBlbHNlIGlmIChhLmJ5dGVMZW5ndGggIT0gdGhpcy5GLm44KjIpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcImludmFsaWQgcG9pbnQgc2l6ZVwiKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnRtLmluc3RhbmNlLmV4cG9ydHNbdGhpcy5wcmVmaXggKyBcIl9MRU10b1VcIl0odGhpcy5wT3AxLCB0aGlzLnBPcDEpO1xuICAgICAgICBjb25zdCByZXMgPSB0aGlzLnRtLmdldEJ1ZmYodGhpcy5wT3AxLCB0aGlzLkYubjgqMik7XG4gICAgICAgIGFyci5zZXQocmVzLCBvZmZzZXQpO1xuICAgIH1cblxuICAgIGZyb21ScHJVbmNvbXByZXNzZWQoYXJyLCBvZmZzZXQpIHtcbiAgICAgICAgY29uc3QgYnVmZiA9IGFyci5zbGljZShvZmZzZXQsIG9mZnNldCArIHRoaXMuRi5uOCoyKTtcbiAgICAgICAgdGhpcy50bS5zZXRCdWZmKHRoaXMucE9wMSwgYnVmZik7XG4gICAgICAgIHRoaXMudG0uaW5zdGFuY2UuZXhwb3J0c1t0aGlzLnByZWZpeCArIFwiX1V0b0xFTVwiXSh0aGlzLnBPcDEsIHRoaXMucE9wMSk7XG4gICAgICAgIHJldHVybiB0aGlzLnRtLmdldEJ1ZmYodGhpcy5wT3AxLCB0aGlzLkYubjgqMik7XG4gICAgfVxuXG4gICAgdG9ScHJDb21wcmVzc2VkKGFyciwgb2Zmc2V0LCBhKSB7XG4gICAgICAgIHRoaXMudG0uc2V0QnVmZih0aGlzLnBPcDEsIGEpO1xuICAgICAgICBpZiAoYS5ieXRlTGVuZ3RoID09IHRoaXMuRi5uOCozKSB7XG4gICAgICAgICAgICB0aGlzLnRtLmluc3RhbmNlLmV4cG9ydHNbdGhpcy5wcmVmaXggKyBcIl90b0FmZmluZVwiXSh0aGlzLnBPcDEsIHRoaXMucE9wMSk7XG4gICAgICAgIH0gZWxzZSBpZiAoYS5ieXRlTGVuZ3RoICE9IHRoaXMuRi5uOCoyKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJpbnZhbGlkIHBvaW50IHNpemVcIik7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy50bS5pbnN0YW5jZS5leHBvcnRzW3RoaXMucHJlZml4ICsgXCJfTEVNdG9DXCJdKHRoaXMucE9wMSwgdGhpcy5wT3AxKTtcbiAgICAgICAgY29uc3QgcmVzID0gdGhpcy50bS5nZXRCdWZmKHRoaXMucE9wMSwgdGhpcy5GLm44KTtcbiAgICAgICAgYXJyLnNldChyZXMsIG9mZnNldCk7XG4gICAgfVxuXG4gICAgZnJvbVJwckNvbXByZXNzZWQoYXJyLCBvZmZzZXQpIHtcbiAgICAgICAgY29uc3QgYnVmZiA9IGFyci5zbGljZShvZmZzZXQsIG9mZnNldCArIHRoaXMuRi5uOCk7XG4gICAgICAgIHRoaXMudG0uc2V0QnVmZih0aGlzLnBPcDEsIGJ1ZmYpO1xuICAgICAgICB0aGlzLnRtLmluc3RhbmNlLmV4cG9ydHNbdGhpcy5wcmVmaXggKyBcIl9DdG9MRU1cIl0odGhpcy5wT3AxLCB0aGlzLnBPcDIpO1xuICAgICAgICByZXR1cm4gdGhpcy50bS5nZXRCdWZmKHRoaXMucE9wMiwgdGhpcy5GLm44KjIpO1xuICAgIH1cblxuICAgIHRvVW5jb21wcmVzc2VkKGEpIHtcbiAgICAgICAgY29uc3QgYnVmZiA9IG5ldyBVaW50OEFycmF5KHRoaXMuRi5uOCoyKTtcbiAgICAgICAgdGhpcy50b1JwclVuY29tcHJlc3NlZChidWZmLCAwLCBhKTtcbiAgICAgICAgcmV0dXJuIGJ1ZmY7XG4gICAgfVxuXG4gICAgdG9ScHJMRU0oYXJyLCBvZmZzZXQsIGEpIHtcbiAgICAgICAgaWYgKGEuYnl0ZUxlbmd0aCA9PSB0aGlzLkYubjgqMikge1xuICAgICAgICAgICAgYXJyLnNldChhLCBvZmZzZXQpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9IGVsc2UgaWYgKGEuYnl0ZUxlbmd0aCA9PSB0aGlzLkYubjgqMykge1xuICAgICAgICAgICAgdGhpcy50bS5zZXRCdWZmKHRoaXMucE9wMSwgYSk7XG4gICAgICAgICAgICB0aGlzLnRtLmluc3RhbmNlLmV4cG9ydHNbdGhpcy5wcmVmaXggKyBcIl90b0FmZmluZVwiXSh0aGlzLnBPcDEsIHRoaXMucE9wMSk7XG4gICAgICAgICAgICBjb25zdCByZXMgPSB0aGlzLnRtLmdldEJ1ZmYodGhpcy5wT3AxLCB0aGlzLkYubjgqMik7XG4gICAgICAgICAgICBhcnIuc2V0KHJlcywgb2Zmc2V0KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcImludmFsaWQgcG9pbnQgc2l6ZVwiKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZyb21ScHJMRU0oYXJyLCBvZmZzZXQpIHtcbiAgICAgICAgb2Zmc2V0ID0gb2Zmc2V0IHx8IDA7XG4gICAgICAgIHJldHVybiBhcnIuc2xpY2Uob2Zmc2V0LCBvZmZzZXQrdGhpcy5GLm44KjIpO1xuICAgIH1cblxuICAgIHRvU3RyaW5nKGEsIHJhZGl4KSB7XG4gICAgICAgIGlmIChhLmJ5dGVMZW5ndGggPT0gdGhpcy5GLm44KjMpIHtcbiAgICAgICAgICAgIGNvbnN0IHggPSB0aGlzLkYudG9TdHJpbmcoYS5zbGljZSgwLCB0aGlzLkYubjgpLCByYWRpeCk7XG4gICAgICAgICAgICBjb25zdCB5ID0gdGhpcy5GLnRvU3RyaW5nKGEuc2xpY2UodGhpcy5GLm44LCB0aGlzLkYubjgqMiksIHJhZGl4KTtcbiAgICAgICAgICAgIGNvbnN0IHogPSB0aGlzLkYudG9TdHJpbmcoYS5zbGljZSh0aGlzLkYubjgqMiksIHJhZGl4KTtcbiAgICAgICAgICAgIHJldHVybiBgWyAke3h9LCAke3l9LCAke3p9IF1gO1xuICAgICAgICB9IGVsc2UgaWYgKGEuYnl0ZUxlbmd0aCA9PSB0aGlzLkYubjgqMikge1xuICAgICAgICAgICAgY29uc3QgeCA9IHRoaXMuRi50b1N0cmluZyhhLnNsaWNlKDAsIHRoaXMuRi5uOCksIHJhZGl4KTtcbiAgICAgICAgICAgIGNvbnN0IHkgPSB0aGlzLkYudG9TdHJpbmcoYS5zbGljZSh0aGlzLkYubjgpLCByYWRpeCk7XG4gICAgICAgICAgICByZXR1cm4gYFsgJHt4fSwgJHt5fSBdYDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcImludmFsaWQgcG9pbnQgc2l6ZVwiKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGlzVmFsaWQoYSkge1xuICAgICAgICBpZiAodGhpcy5pc1plcm8oYSkpIHJldHVybiB0cnVlO1xuICAgICAgICBjb25zdCBGID0gdGhpcy5GO1xuICAgICAgICBjb25zdCBhYSA9IHRoaXMudG9BZmZpbmUoYSk7XG4gICAgICAgIGNvbnN0IHggPSBhYS5zbGljZSgwLCB0aGlzLkYubjgpO1xuICAgICAgICBjb25zdCB5ID0gYWEuc2xpY2UodGhpcy5GLm44LCB0aGlzLkYubjgqMik7XG4gICAgICAgIGNvbnN0IHgzYiA9IEYuYWRkKEYubXVsKEYuc3F1YXJlKHgpLHgpLCB0aGlzLmIpO1xuICAgICAgICBjb25zdCB5MiA9IEYuc3F1YXJlKHkpO1xuICAgICAgICByZXR1cm4gRi5lcSh4M2IsIHkyKTtcbiAgICB9XG5cbiAgICBmcm9tUm5nKHJuZykge1xuICAgICAgICBjb25zdCBGID0gdGhpcy5GO1xuICAgICAgICBsZXQgUCA9IFtdO1xuICAgICAgICBsZXQgZ3JlYXRlc3Q7XG4gICAgICAgIGxldCB4M2I7XG4gICAgICAgIGRvIHtcbiAgICAgICAgICAgIFBbMF0gPSBGLmZyb21Sbmcocm5nKTtcbiAgICAgICAgICAgIGdyZWF0ZXN0ID0gcm5nLm5leHRCb29sKCk7XG4gICAgICAgICAgICB4M2IgPSBGLmFkZChGLm11bChGLnNxdWFyZShQWzBdKSwgUFswXSksIHRoaXMuYik7XG4gICAgICAgIH0gd2hpbGUgKCFGLmlzU3F1YXJlKHgzYikpO1xuXG4gICAgICAgIFBbMV0gPSBGLnNxcnQoeDNiKTtcblxuICAgICAgICBjb25zdCBzID0gRi5pc05lZ2F0aXZlKFBbMV0pO1xuICAgICAgICBpZiAoZ3JlYXRlc3QgXiBzKSBQWzFdID0gRi5uZWcoUFsxXSk7XG5cbiAgICAgICAgbGV0IFBidWZmID0gbmV3IFVpbnQ4QXJyYXkodGhpcy5GLm44KjIpO1xuICAgICAgICBQYnVmZi5zZXQoUFswXSk7XG4gICAgICAgIFBidWZmLnNldChQWzFdLCB0aGlzLkYubjgpO1xuXG4gICAgICAgIGlmICh0aGlzLmNvZmFjdG9yKSB7XG4gICAgICAgICAgICBQYnVmZiA9IHRoaXMudGltZXNTY2FsYXIoUGJ1ZmYsIHRoaXMuY29mYWN0b3IpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIFBidWZmO1xuICAgIH1cblxuXG5cbiAgICB0b09iamVjdChhKSB7XG4gICAgICAgIGlmICh0aGlzLmlzWmVybyhhKSkge1xuICAgICAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgICAgICB0aGlzLkYudG9PYmplY3QodGhpcy5GLnplcm8pLFxuICAgICAgICAgICAgICAgIHRoaXMuRi50b09iamVjdCh0aGlzLkYub25lKSxcbiAgICAgICAgICAgICAgICB0aGlzLkYudG9PYmplY3QodGhpcy5GLnplcm8pLFxuICAgICAgICAgICAgXTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB4ID0gdGhpcy5GLnRvT2JqZWN0KGEuc2xpY2UoMCwgdGhpcy5GLm44KSk7XG4gICAgICAgIGNvbnN0IHkgPSB0aGlzLkYudG9PYmplY3QoYS5zbGljZSh0aGlzLkYubjgsIHRoaXMuRi5uOCoyKSk7XG4gICAgICAgIGxldCB6O1xuICAgICAgICBpZiAoYS5ieXRlTGVuZ3RoID09IHRoaXMuRi5uOCozKSB7XG4gICAgICAgICAgICB6ID0gdGhpcy5GLnRvT2JqZWN0KGEuc2xpY2UodGhpcy5GLm44KjIsIHRoaXMuRi5uOCozKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB6ID0gdGhpcy5GLnRvT2JqZWN0KHRoaXMuRi5vbmUpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBbeCwgeSwgel07XG4gICAgfVxuXG4gICAgZnJvbU9iamVjdChhKSB7XG4gICAgICAgIGNvbnN0IHggPSB0aGlzLkYuZnJvbU9iamVjdChhWzBdKTtcbiAgICAgICAgY29uc3QgeSA9IHRoaXMuRi5mcm9tT2JqZWN0KGFbMV0pO1xuICAgICAgICBsZXQgejtcbiAgICAgICAgaWYgKGEubGVuZ3RoPT0zKSB7XG4gICAgICAgICAgICB6ID0gdGhpcy5GLmZyb21PYmplY3QoYVsyXSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB6ID0gdGhpcy5GLm9uZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5GLmlzWmVybyh6LCB0aGlzLkYub25lKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuemVyb0FmZmluZTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLkYuZXEoeiwgdGhpcy5GLm9uZSkpIHtcbiAgICAgICAgICAgIGNvbnN0IGJ1ZmYgPSBuZXcgVWludDhBcnJheSh0aGlzLkYubjgqMik7XG4gICAgICAgICAgICBidWZmLnNldCh4KTtcbiAgICAgICAgICAgIGJ1ZmYuc2V0KHksIHRoaXMuRi5uOCk7XG4gICAgICAgICAgICByZXR1cm4gYnVmZjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IGJ1ZmYgPSBuZXcgVWludDhBcnJheSh0aGlzLkYubjgqMyk7XG4gICAgICAgICAgICBidWZmLnNldCh4KTtcbiAgICAgICAgICAgIGJ1ZmYuc2V0KHksIHRoaXMuRi5uOCk7XG4gICAgICAgICAgICBidWZmLnNldCh6LCB0aGlzLkYubjgqMik7XG4gICAgICAgICAgICByZXR1cm4gYnVmZjtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGUoYSkge1xuICAgICAgICBpZiAoYSBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpIHJldHVybiBhO1xuICAgICAgICByZXR1cm4gdGhpcy5mcm9tT2JqZWN0KGEpO1xuICAgIH1cblxuICAgIHgoYSkge1xuICAgICAgICBjb25zdCB0bXAgPSB0aGlzLnRvQWZmaW5lKGEpO1xuICAgICAgICByZXR1cm4gdG1wLnNsaWNlKDAsIHRoaXMuRi5uOCk7XG4gICAgfVxuXG4gICAgeShhKSB7XG4gICAgICAgIGNvbnN0IHRtcCA9IHRoaXMudG9BZmZpbmUoYSk7XG4gICAgICAgIHJldHVybiB0bXAuc2xpY2UodGhpcy5GLm44KTtcbiAgICB9XG5cbn1cblxuLyogZ2xvYmFsIFdlYkFzc2VtYmx5ICovXG5cbmZ1bmN0aW9uIHRocmVhZChzZWxmKSB7XG4gICAgY29uc3QgTUFYTUVNID0gMzI3Njc7XG4gICAgbGV0IGluc3RhbmNlO1xuICAgIGxldCBtZW1vcnk7XG5cbiAgICBpZiAoc2VsZikge1xuICAgICAgICBzZWxmLm9ubWVzc2FnZSA9IGZ1bmN0aW9uKGUpIHtcbiAgICAgICAgICAgIGxldCBkYXRhO1xuICAgICAgICAgICAgaWYgKGUuZGF0YSkge1xuICAgICAgICAgICAgICAgIGRhdGEgPSBlLmRhdGE7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGRhdGEgPSBlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoZGF0YVswXS5jbWQgPT0gXCJJTklUXCIpIHtcbiAgICAgICAgICAgICAgICBpbml0KGRhdGFbMF0pLnRoZW4oZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgIHNlbGYucG9zdE1lc3NhZ2UoZGF0YS5yZXN1bHQpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChkYXRhWzBdLmNtZCA9PSBcIlRFUk1JTkFURVwiKSB7XG4gICAgICAgICAgICAgICAgc2VsZi5jbG9zZSgpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zdCByZXMgPSBydW5UYXNrKGRhdGEpO1xuICAgICAgICAgICAgICAgIHNlbGYucG9zdE1lc3NhZ2UocmVzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBhc3luYyBmdW5jdGlvbiBpbml0KGRhdGEpIHtcbiAgICAgICAgY29uc3QgY29kZSA9IG5ldyBVaW50OEFycmF5KGRhdGEuY29kZSk7XG4gICAgICAgIGNvbnN0IHdhc21Nb2R1bGUgPSBhd2FpdCBXZWJBc3NlbWJseS5jb21waWxlKGNvZGUpO1xuICAgICAgICBtZW1vcnkgPSBuZXcgV2ViQXNzZW1ibHkuTWVtb3J5KHtpbml0aWFsOmRhdGEuaW5pdCwgbWF4aW11bTogTUFYTUVNfSk7XG5cbiAgICAgICAgaW5zdGFuY2UgPSBhd2FpdCBXZWJBc3NlbWJseS5pbnN0YW50aWF0ZSh3YXNtTW9kdWxlLCB7XG4gICAgICAgICAgICBlbnY6IHtcbiAgICAgICAgICAgICAgICBcIm1lbW9yeVwiOiBtZW1vcnlcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG5cblxuICAgIGZ1bmN0aW9uIGFsbG9jKGxlbmd0aCkge1xuICAgICAgICBjb25zdCB1MzIgPSBuZXcgVWludDMyQXJyYXkobWVtb3J5LmJ1ZmZlciwgMCwgMSk7XG4gICAgICAgIHdoaWxlICh1MzJbMF0gJiAzKSB1MzJbMF0rKzsgIC8vIFJldHVybiBhbHdheXMgYWxpZ25lZCBwb2ludGVyc1xuICAgICAgICBjb25zdCByZXMgPSB1MzJbMF07XG4gICAgICAgIHUzMlswXSArPSBsZW5ndGg7XG4gICAgICAgIGlmICh1MzJbMF0gKyBsZW5ndGggPiBtZW1vcnkuYnVmZmVyLmJ5dGVMZW5ndGgpIHtcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRQYWdlcyA9IG1lbW9yeS5idWZmZXIuYnl0ZUxlbmd0aCAvIDB4MTAwMDA7XG4gICAgICAgICAgICBsZXQgcmVxdWlyZWRQYWdlcyA9IE1hdGguZmxvb3IoKHUzMlswXSArIGxlbmd0aCkgLyAweDEwMDAwKSsxO1xuICAgICAgICAgICAgaWYgKHJlcXVpcmVkUGFnZXM+TUFYTUVNKSByZXF1aXJlZFBhZ2VzPU1BWE1FTTtcbiAgICAgICAgICAgIG1lbW9yeS5ncm93KHJlcXVpcmVkUGFnZXMtY3VycmVudFBhZ2VzKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGFsbG9jQnVmZmVyKGJ1ZmZlcikge1xuICAgICAgICBjb25zdCBwID0gYWxsb2MoYnVmZmVyLmJ5dGVMZW5ndGgpO1xuICAgICAgICBzZXRCdWZmZXIocCwgYnVmZmVyKTtcbiAgICAgICAgcmV0dXJuIHA7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ2V0QnVmZmVyKHBvaW50ZXIsIGxlbmd0aCkge1xuICAgICAgICBjb25zdCB1OCA9IG5ldyBVaW50OEFycmF5KG1lbW9yeS5idWZmZXIpO1xuICAgICAgICByZXR1cm4gbmV3IFVpbnQ4QXJyYXkodTguYnVmZmVyLCB1OC5ieXRlT2Zmc2V0ICsgcG9pbnRlciwgbGVuZ3RoKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBzZXRCdWZmZXIocG9pbnRlciwgYnVmZmVyKSB7XG4gICAgICAgIGNvbnN0IHU4ID0gbmV3IFVpbnQ4QXJyYXkobWVtb3J5LmJ1ZmZlcik7XG4gICAgICAgIHU4LnNldChuZXcgVWludDhBcnJheShidWZmZXIpLCBwb2ludGVyKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBydW5UYXNrKHRhc2spIHtcbiAgICAgICAgaWYgKHRhc2tbMF0uY21kID09IFwiSU5JVFwiKSB7XG4gICAgICAgICAgICByZXR1cm4gaW5pdCh0YXNrWzBdKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBjdHggPSB7XG4gICAgICAgICAgICB2YXJzOiBbXSxcbiAgICAgICAgICAgIG91dDogW11cbiAgICAgICAgfTtcbiAgICAgICAgY29uc3QgdTMyYSA9IG5ldyBVaW50MzJBcnJheShtZW1vcnkuYnVmZmVyLCAwLCAxKTtcbiAgICAgICAgY29uc3Qgb2xkQWxsb2MgPSB1MzJhWzBdO1xuICAgICAgICBmb3IgKGxldCBpPTA7IGk8dGFzay5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgc3dpdGNoICh0YXNrW2ldLmNtZCkge1xuICAgICAgICAgICAgY2FzZSBcIkFMTE9DU0VUXCI6XG4gICAgICAgICAgICAgICAgY3R4LnZhcnNbdGFza1tpXS52YXJdID0gYWxsb2NCdWZmZXIodGFza1tpXS5idWZmKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgXCJBTExPQ1wiOlxuICAgICAgICAgICAgICAgIGN0eC52YXJzW3Rhc2tbaV0udmFyXSA9IGFsbG9jKHRhc2tbaV0ubGVuKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgXCJTRVRcIjpcbiAgICAgICAgICAgICAgICBzZXRCdWZmZXIoY3R4LnZhcnNbdGFza1tpXS52YXJdLCB0YXNrW2ldLmJ1ZmYpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBcIkNBTExcIjoge1xuICAgICAgICAgICAgICAgIGNvbnN0IHBhcmFtcyA9IFtdO1xuICAgICAgICAgICAgICAgIGZvciAobGV0IGo9MDsgajx0YXNrW2ldLnBhcmFtcy5sZW5ndGg7IGorKykge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBwID0gdGFza1tpXS5wYXJhbXNbal07XG4gICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgcC52YXIgIT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtcy5wdXNoKGN0eC52YXJzW3AudmFyXSArIChwLm9mZnNldCB8fCAwKSk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHAudmFsICE9IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtcy5wdXNoKHAudmFsKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpbnN0YW5jZS5leHBvcnRzW3Rhc2tbaV0uZm5OYW1lXSguLi5wYXJhbXMpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBcIkdFVFwiOlxuICAgICAgICAgICAgICAgIGN0eC5vdXRbdGFza1tpXS5vdXRdID0gZ2V0QnVmZmVyKGN0eC52YXJzW3Rhc2tbaV0udmFyXSwgdGFza1tpXS5sZW4pLnNsaWNlKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgY21kXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHUzMmIgPSBuZXcgVWludDMyQXJyYXkobWVtb3J5LmJ1ZmZlciwgMCwgMSk7XG4gICAgICAgIHUzMmJbMF0gPSBvbGRBbGxvYztcbiAgICAgICAgcmV0dXJuIGN0eC5vdXQ7XG4gICAgfVxuXG5cbiAgICByZXR1cm4gcnVuVGFzaztcbn1cblxuLypcbiAgICBDb3B5cmlnaHQgMjAxOSAwS0lNUyBhc3NvY2lhdGlvbi5cblxuICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHdhc21zbmFyayAoV2ViIEFzc2VtYmx5IHprU25hcmsgUHJvdmVyKS5cblxuICAgIHdhc21zbmFyayBpcyBhIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXRcbiAgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yXG4gICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cblxuICAgIHdhc21zbmFyayBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVFxuICAgIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWVxuICAgIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpY1xuICAgIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cblxuICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gICAgYWxvbmcgd2l0aCB3YXNtc25hcmsuIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXG4qL1xuXG4vLyBjb25zdCBNRU1fU0laRSA9IDEwMDA7ICAvLyBNZW1vcnkgc2l6ZSBpbiA2NEsgUGFrZXMgKDUxMk1iKVxuY29uc3QgTUVNX1NJWkUgPSAyNTsgIC8vIE1lbW9yeSBzaXplIGluIDY0SyBQYWtlcyAoMTYwMEtiKVxuXG5jbGFzcyBEZWZlcnJlZCB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHRoaXMucHJvbWlzZSA9IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpPT4ge1xuICAgICAgICAgICAgdGhpcy5yZWplY3QgPSByZWplY3Q7XG4gICAgICAgICAgICB0aGlzLnJlc29sdmUgPSByZXNvbHZlO1xuICAgICAgICB9KTtcbiAgICB9XG59XG5cbmZ1bmN0aW9uIHNsZWVwKG1zKSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4gc2V0VGltZW91dChyZXNvbHZlLCBtcykpO1xufVxuXG5sZXQgd29ya2VyU291cmNlO1xuXG5jb25zdCB0aHJlYWRTdHIgPSBgKCR7XCJmdW5jdGlvbiB0aHJlYWQoc2VsZikge1xcbiAgICBjb25zdCBNQVhNRU0gPSAzMjc2NztcXG4gICAgbGV0IGluc3RhbmNlO1xcbiAgICBsZXQgbWVtb3J5O1xcblxcbiAgICBpZiAoc2VsZikge1xcbiAgICAgICAgc2VsZi5vbm1lc3NhZ2UgPSBmdW5jdGlvbihlKSB7XFxuICAgICAgICAgICAgbGV0IGRhdGE7XFxuICAgICAgICAgICAgaWYgKGUuZGF0YSkge1xcbiAgICAgICAgICAgICAgICBkYXRhID0gZS5kYXRhO1xcbiAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgIGRhdGEgPSBlO1xcbiAgICAgICAgICAgIH1cXG5cXG4gICAgICAgICAgICBpZiAoZGF0YVswXS5jbWQgPT0gXFxcIklOSVRcXFwiKSB7XFxuICAgICAgICAgICAgICAgIGluaXQoZGF0YVswXSkudGhlbihmdW5jdGlvbigpIHtcXG4gICAgICAgICAgICAgICAgICAgIHNlbGYucG9zdE1lc3NhZ2UoZGF0YS5yZXN1bHQpO1xcbiAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGRhdGFbMF0uY21kID09IFxcXCJURVJNSU5BVEVcXFwiKSB7XFxuICAgICAgICAgICAgICAgIHNlbGYuY2xvc2UoKTtcXG4gICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICBjb25zdCByZXMgPSBydW5UYXNrKGRhdGEpO1xcbiAgICAgICAgICAgICAgICBzZWxmLnBvc3RNZXNzYWdlKHJlcyk7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfTtcXG4gICAgfVxcblxcbiAgICBhc3luYyBmdW5jdGlvbiBpbml0KGRhdGEpIHtcXG4gICAgICAgIGNvbnN0IGNvZGUgPSBuZXcgVWludDhBcnJheShkYXRhLmNvZGUpO1xcbiAgICAgICAgY29uc3Qgd2FzbU1vZHVsZSA9IGF3YWl0IFdlYkFzc2VtYmx5LmNvbXBpbGUoY29kZSk7XFxuICAgICAgICBtZW1vcnkgPSBuZXcgV2ViQXNzZW1ibHkuTWVtb3J5KHtpbml0aWFsOmRhdGEuaW5pdCwgbWF4aW11bTogTUFYTUVNfSk7XFxuXFxuICAgICAgICBpbnN0YW5jZSA9IGF3YWl0IFdlYkFzc2VtYmx5Lmluc3RhbnRpYXRlKHdhc21Nb2R1bGUsIHtcXG4gICAgICAgICAgICBlbnY6IHtcXG4gICAgICAgICAgICAgICAgXFxcIm1lbW9yeVxcXCI6IG1lbW9yeVxcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH0pO1xcbiAgICB9XFxuXFxuXFxuXFxuICAgIGZ1bmN0aW9uIGFsbG9jKGxlbmd0aCkge1xcbiAgICAgICAgY29uc3QgdTMyID0gbmV3IFVpbnQzMkFycmF5KG1lbW9yeS5idWZmZXIsIDAsIDEpO1xcbiAgICAgICAgd2hpbGUgKHUzMlswXSAmIDMpIHUzMlswXSsrOyAgLy8gUmV0dXJuIGFsd2F5cyBhbGlnbmVkIHBvaW50ZXJzXFxuICAgICAgICBjb25zdCByZXMgPSB1MzJbMF07XFxuICAgICAgICB1MzJbMF0gKz0gbGVuZ3RoO1xcbiAgICAgICAgaWYgKHUzMlswXSArIGxlbmd0aCA+IG1lbW9yeS5idWZmZXIuYnl0ZUxlbmd0aCkge1xcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRQYWdlcyA9IG1lbW9yeS5idWZmZXIuYnl0ZUxlbmd0aCAvIDB4MTAwMDA7XFxuICAgICAgICAgICAgbGV0IHJlcXVpcmVkUGFnZXMgPSBNYXRoLmZsb29yKCh1MzJbMF0gKyBsZW5ndGgpIC8gMHgxMDAwMCkrMTtcXG4gICAgICAgICAgICBpZiAocmVxdWlyZWRQYWdlcz5NQVhNRU0pIHJlcXVpcmVkUGFnZXM9TUFYTUVNO1xcbiAgICAgICAgICAgIG1lbW9yeS5ncm93KHJlcXVpcmVkUGFnZXMtY3VycmVudFBhZ2VzKTtcXG4gICAgICAgIH1cXG4gICAgICAgIHJldHVybiByZXM7XFxuICAgIH1cXG5cXG4gICAgZnVuY3Rpb24gYWxsb2NCdWZmZXIoYnVmZmVyKSB7XFxuICAgICAgICBjb25zdCBwID0gYWxsb2MoYnVmZmVyLmJ5dGVMZW5ndGgpO1xcbiAgICAgICAgc2V0QnVmZmVyKHAsIGJ1ZmZlcik7XFxuICAgICAgICByZXR1cm4gcDtcXG4gICAgfVxcblxcbiAgICBmdW5jdGlvbiBnZXRCdWZmZXIocG9pbnRlciwgbGVuZ3RoKSB7XFxuICAgICAgICBjb25zdCB1OCA9IG5ldyBVaW50OEFycmF5KG1lbW9yeS5idWZmZXIpO1xcbiAgICAgICAgcmV0dXJuIG5ldyBVaW50OEFycmF5KHU4LmJ1ZmZlciwgdTguYnl0ZU9mZnNldCArIHBvaW50ZXIsIGxlbmd0aCk7XFxuICAgIH1cXG5cXG4gICAgZnVuY3Rpb24gc2V0QnVmZmVyKHBvaW50ZXIsIGJ1ZmZlcikge1xcbiAgICAgICAgY29uc3QgdTggPSBuZXcgVWludDhBcnJheShtZW1vcnkuYnVmZmVyKTtcXG4gICAgICAgIHU4LnNldChuZXcgVWludDhBcnJheShidWZmZXIpLCBwb2ludGVyKTtcXG4gICAgfVxcblxcbiAgICBmdW5jdGlvbiBydW5UYXNrKHRhc2spIHtcXG4gICAgICAgIGlmICh0YXNrWzBdLmNtZCA9PSBcXFwiSU5JVFxcXCIpIHtcXG4gICAgICAgICAgICByZXR1cm4gaW5pdCh0YXNrWzBdKTtcXG4gICAgICAgIH1cXG4gICAgICAgIGNvbnN0IGN0eCA9IHtcXG4gICAgICAgICAgICB2YXJzOiBbXSxcXG4gICAgICAgICAgICBvdXQ6IFtdXFxuICAgICAgICB9O1xcbiAgICAgICAgY29uc3QgdTMyYSA9IG5ldyBVaW50MzJBcnJheShtZW1vcnkuYnVmZmVyLCAwLCAxKTtcXG4gICAgICAgIGNvbnN0IG9sZEFsbG9jID0gdTMyYVswXTtcXG4gICAgICAgIGZvciAobGV0IGk9MDsgaTx0YXNrLmxlbmd0aDsgaSsrKSB7XFxuICAgICAgICAgICAgc3dpdGNoICh0YXNrW2ldLmNtZCkge1xcbiAgICAgICAgICAgIGNhc2UgXFxcIkFMTE9DU0VUXFxcIjpcXG4gICAgICAgICAgICAgICAgY3R4LnZhcnNbdGFza1tpXS52YXJdID0gYWxsb2NCdWZmZXIodGFza1tpXS5idWZmKTtcXG4gICAgICAgICAgICAgICAgYnJlYWs7XFxuICAgICAgICAgICAgY2FzZSBcXFwiQUxMT0NcXFwiOlxcbiAgICAgICAgICAgICAgICBjdHgudmFyc1t0YXNrW2ldLnZhcl0gPSBhbGxvYyh0YXNrW2ldLmxlbik7XFxuICAgICAgICAgICAgICAgIGJyZWFrO1xcbiAgICAgICAgICAgIGNhc2UgXFxcIlNFVFxcXCI6XFxuICAgICAgICAgICAgICAgIHNldEJ1ZmZlcihjdHgudmFyc1t0YXNrW2ldLnZhcl0sIHRhc2tbaV0uYnVmZik7XFxuICAgICAgICAgICAgICAgIGJyZWFrO1xcbiAgICAgICAgICAgIGNhc2UgXFxcIkNBTExcXFwiOiB7XFxuICAgICAgICAgICAgICAgIGNvbnN0IHBhcmFtcyA9IFtdO1xcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBqPTA7IGo8dGFza1tpXS5wYXJhbXMubGVuZ3RoOyBqKyspIHtcXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHAgPSB0YXNrW2ldLnBhcmFtc1tqXTtcXG4gICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgcC52YXIgIT09IFxcXCJ1bmRlZmluZWRcXFwiKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zLnB1c2goY3R4LnZhcnNbcC52YXJdICsgKHAub2Zmc2V0IHx8IDApKTtcXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHAudmFsICE9IFxcXCJ1bmRlZmluZWRcXFwiKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zLnB1c2gocC52YWwpO1xcbiAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgIGluc3RhbmNlLmV4cG9ydHNbdGFza1tpXS5mbk5hbWVdKC4uLnBhcmFtcyk7XFxuICAgICAgICAgICAgICAgIGJyZWFrO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgICBjYXNlIFxcXCJHRVRcXFwiOlxcbiAgICAgICAgICAgICAgICBjdHgub3V0W3Rhc2tbaV0ub3V0XSA9IGdldEJ1ZmZlcihjdHgudmFyc1t0YXNrW2ldLnZhcl0sIHRhc2tbaV0ubGVuKS5zbGljZSgpO1xcbiAgICAgICAgICAgICAgICBicmVhaztcXG4gICAgICAgICAgICBkZWZhdWx0OlxcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXFxcIkludmFsaWQgY21kXFxcIik7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfVxcbiAgICAgICAgY29uc3QgdTMyYiA9IG5ldyBVaW50MzJBcnJheShtZW1vcnkuYnVmZmVyLCAwLCAxKTtcXG4gICAgICAgIHUzMmJbMF0gPSBvbGRBbGxvYztcXG4gICAgICAgIHJldHVybiBjdHgub3V0O1xcbiAgICB9XFxuXFxuXFxuICAgIHJldHVybiBydW5UYXNrO1xcbn1cIn0pKHNlbGYpYDtcbntcbiAgICBpZihnbG9iYWxUaGlzPy5CbG9iKSB7XG4gICAgICAgIGNvbnN0IHRocmVhZEJ5dGVzPSBuZXcgVGV4dEVuY29kZXIoKS5lbmNvZGUodGhyZWFkU3RyKTtcbiAgICAgICAgY29uc3Qgd29ya2VyQmxvYiA9IG5ldyBCbG9iKFt0aHJlYWRCeXRlc10sIHsgdHlwZTogXCJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0XCIgfSkgO1xuICAgICAgICB3b3JrZXJTb3VyY2UgPSBVUkwuY3JlYXRlT2JqZWN0VVJMKHdvcmtlckJsb2IpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHdvcmtlclNvdXJjZSA9IFwiZGF0YTphcHBsaWNhdGlvbi9qYXZhc2NyaXB0O2Jhc2U2NCxcIiArIGdsb2JhbFRoaXMuYnRvYSh0aHJlYWRTdHIpO1xuICAgIH1cbn1cblxuXG5cbmFzeW5jIGZ1bmN0aW9uIGJ1aWxkVGhyZWFkTWFuYWdlcih3YXNtLCBzaW5nbGVUaHJlYWQpIHtcbiAgICBjb25zdCB0bSA9IG5ldyBUaHJlYWRNYW5hZ2VyKCk7XG5cbiAgICB0bS5tZW1vcnkgPSBuZXcgV2ViQXNzZW1ibHkuTWVtb3J5KHtpbml0aWFsOk1FTV9TSVpFfSk7XG4gICAgdG0udTggPSBuZXcgVWludDhBcnJheSh0bS5tZW1vcnkuYnVmZmVyKTtcbiAgICB0bS51MzIgPSBuZXcgVWludDMyQXJyYXkodG0ubWVtb3J5LmJ1ZmZlcik7XG5cbiAgICBjb25zdCB3YXNtTW9kdWxlID0gYXdhaXQgV2ViQXNzZW1ibHkuY29tcGlsZSh3YXNtLmNvZGUpO1xuXG4gICAgdG0uaW5zdGFuY2UgPSBhd2FpdCBXZWJBc3NlbWJseS5pbnN0YW50aWF0ZSh3YXNtTW9kdWxlLCB7XG4gICAgICAgIGVudjoge1xuICAgICAgICAgICAgXCJtZW1vcnlcIjogdG0ubWVtb3J5XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICBcbiAgICBpZighZ2xvYmFsVGhpcz8uV29ya2VyKSB7XG4gICAgICAgIHNpbmdsZVRocmVhZCA9IHRydWU7XG4gICAgfVxuICAgIFxuICAgIHRtLnNpbmdsZVRocmVhZCA9IHNpbmdsZVRocmVhZDtcbiAgICB0bS5pbml0YWxQRnJlZSA9IHRtLnUzMlswXTsgICAvLyBTYXZlIHRoZSBQb2ludGVyIHRvIGZyZWUgc3BhY2UuXG4gICAgdG0ucHEgPSB3YXNtLnBxO1xuICAgIHRtLnByID0gd2FzbS5wcjtcbiAgICB0bS5wRzFnZW4gPSB3YXNtLnBHMWdlbjtcbiAgICB0bS5wRzF6ZXJvID0gd2FzbS5wRzF6ZXJvO1xuICAgIHRtLnBHMmdlbiA9IHdhc20ucEcyZ2VuO1xuICAgIHRtLnBHMnplcm8gPSB3YXNtLnBHMnplcm87XG4gICAgdG0ucE9uZVQgPSB3YXNtLnBPbmVUO1xuXG4gICAgLy8gICAgdG0ucFRtcDAgPSB0bS5hbGxvYyhjdXJ2ZS5HMi5GLm44KjMpO1xuICAgIC8vICAgIHRtLnBUbXAxID0gdG0uYWxsb2MoY3VydmUuRzIuRi5uOCozKTtcblxuICAgIGlmIChzaW5nbGVUaHJlYWQpIHtcbiAgICAgICAgdG0uY29kZSA9IHdhc20uY29kZTtcbiAgICAgICAgdG0udGFza01hbmFnZXIgPSB0aHJlYWQoKTtcbiAgICAgICAgYXdhaXQgdG0udGFza01hbmFnZXIoW3tcbiAgICAgICAgICAgIGNtZDogXCJJTklUXCIsXG4gICAgICAgICAgICBpbml0OiBNRU1fU0laRSxcbiAgICAgICAgICAgIGNvZGU6IHRtLmNvZGUuc2xpY2UoKVxuICAgICAgICB9XSk7XG4gICAgICAgIHRtLmNvbmN1cnJlbmN5ICA9IDE7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgdG0ud29ya2VycyA9IFtdO1xuICAgICAgICB0bS5wZW5kaW5nRGVmZXJyZWRzID0gW107XG4gICAgICAgIHRtLndvcmtpbmcgPSBbXTtcblxuICAgICAgICBsZXQgY29uY3VycmVuY3kgPSAyO1xuICAgICAgICB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIG5hdmlnYXRvciA9PT0gXCJvYmplY3RcIiAmJiBuYXZpZ2F0b3IuaGFyZHdhcmVDb25jdXJyZW5jeSkge1xuICAgICAgICAgICAgICAgIGNvbmN1cnJlbmN5ID0gbmF2aWdhdG9yLmhhcmR3YXJlQ29uY3VycmVuY3k7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZihjb25jdXJyZW5jeSA9PSAwKXtcbiAgICAgICAgICAgIGNvbmN1cnJlbmN5ID0gMjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIExpbWl0IHRvIDY0IHRocmVhZHMgZm9yIG1lbW9yeSByZWFzb25zLlxuICAgICAgICBpZiAoY29uY3VycmVuY3k+NjQpIGNvbmN1cnJlbmN5PTY0O1xuICAgICAgICB0bS5jb25jdXJyZW5jeSA9IGNvbmN1cnJlbmN5O1xuXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpPGNvbmN1cnJlbmN5OyBpKyspIHtcblxuICAgICAgICAgICAgdG0ud29ya2Vyc1tpXSA9IG5ldyBXb3JrZXIod29ya2VyU291cmNlKTtcblxuICAgICAgICAgICAgdG0ud29ya2Vyc1tpXS5hZGRFdmVudExpc3RlbmVyKFwibWVzc2FnZVwiLCBnZXRPbk1zZyhpKSk7XG5cbiAgICAgICAgICAgIHRtLndvcmtpbmdbaV09ZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBpbml0UHJvbWlzZXMgPSBbXTtcbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPHRtLndvcmtlcnMubGVuZ3RoO2krKykge1xuICAgICAgICAgICAgY29uc3QgY29weUNvZGUgPSB3YXNtLmNvZGUuc2xpY2UoKTtcbiAgICAgICAgICAgIGluaXRQcm9taXNlcy5wdXNoKHRtLnBvc3RBY3Rpb24oaSwgW3tcbiAgICAgICAgICAgICAgICBjbWQ6IFwiSU5JVFwiLFxuICAgICAgICAgICAgICAgIGluaXQ6IE1FTV9TSVpFLFxuICAgICAgICAgICAgICAgIGNvZGU6IGNvcHlDb2RlXG4gICAgICAgICAgICB9XSwgW2NvcHlDb2RlLmJ1ZmZlcl0pKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGF3YWl0IFByb21pc2UuYWxsKGluaXRQcm9taXNlcyk7XG5cbiAgICB9XG4gICAgcmV0dXJuIHRtO1xuXG4gICAgZnVuY3Rpb24gZ2V0T25Nc2coaSkge1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24oZSkge1xuICAgICAgICAgICAgbGV0IGRhdGE7XG4gICAgICAgICAgICBpZiAoKGUpJiYoZS5kYXRhKSkge1xuICAgICAgICAgICAgICAgIGRhdGEgPSBlLmRhdGE7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGRhdGEgPSBlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0bS53b3JraW5nW2ldPWZhbHNlO1xuICAgICAgICAgICAgdG0ucGVuZGluZ0RlZmVycmVkc1tpXS5yZXNvbHZlKGRhdGEpO1xuICAgICAgICAgICAgdG0ucHJvY2Vzc1dvcmtzKCk7XG4gICAgICAgIH07XG4gICAgfVxuXG59XG5cbmNsYXNzIFRocmVhZE1hbmFnZXIge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICB0aGlzLmFjdGlvblF1ZXVlID0gW107XG4gICAgICAgIHRoaXMub2xkUEZyZWUgPSAwO1xuICAgIH1cblxuICAgIHN0YXJ0U3luY09wKCkge1xuICAgICAgICBpZiAodGhpcy5vbGRQRnJlZSAhPSAwKSB0aHJvdyBuZXcgRXJyb3IoXCJTeW5jIG9wZXJhdGlvbiBpbiBwcm9ncmVzc1wiKTtcbiAgICAgICAgdGhpcy5vbGRQRnJlZSA9IHRoaXMudTMyWzBdO1xuICAgIH1cblxuICAgIGVuZFN5bmNPcCgpIHtcbiAgICAgICAgaWYgKHRoaXMub2xkUEZyZWUgPT0gMCkgdGhyb3cgbmV3IEVycm9yKFwiTm8gc3luYyBvcGVyYXRpb24gaW4gcHJvZ3Jlc3NcIik7XG4gICAgICAgIHRoaXMudTMyWzBdID0gdGhpcy5vbGRQRnJlZTtcbiAgICAgICAgdGhpcy5vbGRQRnJlZSA9IDA7XG4gICAgfVxuXG4gICAgcG9zdEFjdGlvbih3b3JrZXJJZCwgZSwgdHJhbnNmZXJzLCBfZGVmZXJyZWQpIHtcbiAgICAgICAgaWYgKHRoaXMud29ya2luZ1t3b3JrZXJJZF0pIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIlBvc3RpbmcgYSBqb2IgdCBhIHdvcmtpbmcgd29ya2VyXCIpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMud29ya2luZ1t3b3JrZXJJZF0gPSB0cnVlO1xuXG4gICAgICAgIHRoaXMucGVuZGluZ0RlZmVycmVkc1t3b3JrZXJJZF0gPSBfZGVmZXJyZWQgPyBfZGVmZXJyZWQgOiBuZXcgRGVmZXJyZWQoKTtcbiAgICAgICAgdGhpcy53b3JrZXJzW3dvcmtlcklkXS5wb3N0TWVzc2FnZShlLCB0cmFuc2ZlcnMpO1xuXG4gICAgICAgIHJldHVybiB0aGlzLnBlbmRpbmdEZWZlcnJlZHNbd29ya2VySWRdLnByb21pc2U7XG4gICAgfVxuXG4gICAgcHJvY2Vzc1dvcmtzKCkge1xuICAgICAgICBmb3IgKGxldCBpPTA7IChpPHRoaXMud29ya2Vycy5sZW5ndGgpJiYodGhpcy5hY3Rpb25RdWV1ZS5sZW5ndGggPiAwKTsgaSsrKSB7XG4gICAgICAgICAgICBpZiAodGhpcy53b3JraW5nW2ldID09IGZhbHNlKSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgd29yayA9IHRoaXMuYWN0aW9uUXVldWUuc2hpZnQoKTtcbiAgICAgICAgICAgICAgICB0aGlzLnBvc3RBY3Rpb24oaSwgd29yay5kYXRhLCB3b3JrLnRyYW5zZmVycywgd29yay5kZWZlcnJlZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBxdWV1ZUFjdGlvbihhY3Rpb25EYXRhLCB0cmFuc2ZlcnMpIHtcbiAgICAgICAgY29uc3QgZCA9IG5ldyBEZWZlcnJlZCgpO1xuXG4gICAgICAgIGlmICh0aGlzLnNpbmdsZVRocmVhZCkge1xuICAgICAgICAgICAgY29uc3QgcmVzID0gdGhpcy50YXNrTWFuYWdlcihhY3Rpb25EYXRhKTtcbiAgICAgICAgICAgIGQucmVzb2x2ZShyZXMpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5hY3Rpb25RdWV1ZS5wdXNoKHtcbiAgICAgICAgICAgICAgICBkYXRhOiBhY3Rpb25EYXRhLFxuICAgICAgICAgICAgICAgIHRyYW5zZmVyczogdHJhbnNmZXJzLFxuICAgICAgICAgICAgICAgIGRlZmVycmVkOiBkXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRoaXMucHJvY2Vzc1dvcmtzKCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGQucHJvbWlzZTtcbiAgICB9XG5cbiAgICByZXNldE1lbW9yeSgpIHtcbiAgICAgICAgdGhpcy51MzJbMF0gPSB0aGlzLmluaXRhbFBGcmVlO1xuICAgIH1cblxuICAgIGFsbG9jQnVmZihidWZmKSB7XG4gICAgICAgIGNvbnN0IHBvaW50ZXIgPSB0aGlzLmFsbG9jKGJ1ZmYuYnl0ZUxlbmd0aCk7XG4gICAgICAgIHRoaXMuc2V0QnVmZihwb2ludGVyLCBidWZmKTtcbiAgICAgICAgcmV0dXJuIHBvaW50ZXI7XG4gICAgfVxuXG4gICAgZ2V0QnVmZihwb2ludGVyLCBsZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudTguc2xpY2UocG9pbnRlciwgcG9pbnRlcisgbGVuZ3RoKTtcbiAgICB9XG5cbiAgICBzZXRCdWZmKHBvaW50ZXIsIGJ1ZmZlcikge1xuICAgICAgICB0aGlzLnU4LnNldChuZXcgVWludDhBcnJheShidWZmZXIpLCBwb2ludGVyKTtcbiAgICB9XG5cbiAgICBhbGxvYyhsZW5ndGgpIHtcbiAgICAgICAgd2hpbGUgKHRoaXMudTMyWzBdICYgMykgdGhpcy51MzJbMF0rKzsgIC8vIFJldHVybiBhbHdheXMgYWxpZ25lZCBwb2ludGVyc1xuICAgICAgICBjb25zdCByZXMgPSB0aGlzLnUzMlswXTtcbiAgICAgICAgdGhpcy51MzJbMF0gKz0gbGVuZ3RoO1xuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH1cblxuICAgIGFzeW5jIHRlcm1pbmF0ZSgpIHtcbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPHRoaXMud29ya2Vycy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgdGhpcy53b3JrZXJzW2ldLnBvc3RNZXNzYWdlKFt7Y21kOiBcIlRFUk1JTkFURVwifV0pO1xuICAgICAgICB9XG4gICAgICAgIGF3YWl0IHNsZWVwKDIwMCk7XG4gICAgfVxuXG59XG5cbmZ1bmN0aW9uIGJ1aWxkQmF0Y2hBcHBseUtleShjdXJ2ZSwgZ3JvdXBOYW1lKSB7XG4gICAgY29uc3QgRyA9IGN1cnZlW2dyb3VwTmFtZV07XG4gICAgY29uc3QgRnIgPSBjdXJ2ZS5GcjtcbiAgICBjb25zdCB0bSA9IGN1cnZlLnRtO1xuXG4gICAgY3VydmVbZ3JvdXBOYW1lXS5iYXRjaEFwcGx5S2V5ID0gYXN5bmMgZnVuY3Rpb24oYnVmZiwgZmlyc3QsIGluYywgaW5UeXBlLCBvdXRUeXBlKSB7XG4gICAgICAgIGluVHlwZSA9IGluVHlwZSB8fCBcImFmZmluZVwiO1xuICAgICAgICBvdXRUeXBlID0gb3V0VHlwZSB8fCBcImFmZmluZVwiO1xuICAgICAgICBsZXQgZm5OYW1lLCBmbkFmZmluZTtcbiAgICAgICAgbGV0IHNHaW4sIHNHbWlkLCBzR291dDtcbiAgICAgICAgaWYgKGdyb3VwTmFtZSA9PSBcIkcxXCIpIHtcbiAgICAgICAgICAgIGlmIChpblR5cGUgPT0gXCJqYWNvYmlhblwiKSB7XG4gICAgICAgICAgICAgICAgc0dpbiA9IEcuRi5uOCozO1xuICAgICAgICAgICAgICAgIGZuTmFtZSA9IFwiZzFtX2JhdGNoQXBwbHlLZXlcIjtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgc0dpbiA9IEcuRi5uOCoyO1xuICAgICAgICAgICAgICAgIGZuTmFtZSA9IFwiZzFtX2JhdGNoQXBwbHlLZXlNaXhlZFwiO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc0dtaWQgPSBHLkYubjgqMztcbiAgICAgICAgICAgIGlmIChvdXRUeXBlID09IFwiamFjb2JpYW5cIikge1xuICAgICAgICAgICAgICAgIHNHb3V0ID0gRy5GLm44KjM7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGZuQWZmaW5lID0gXCJnMW1fYmF0Y2hUb0FmZmluZVwiO1xuICAgICAgICAgICAgICAgIHNHb3V0ID0gRy5GLm44KjI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoZ3JvdXBOYW1lID09IFwiRzJcIikge1xuICAgICAgICAgICAgaWYgKGluVHlwZSA9PSBcImphY29iaWFuXCIpIHtcbiAgICAgICAgICAgICAgICBzR2luID0gRy5GLm44KjM7XG4gICAgICAgICAgICAgICAgZm5OYW1lID0gXCJnMm1fYmF0Y2hBcHBseUtleVwiO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBzR2luID0gRy5GLm44KjI7XG4gICAgICAgICAgICAgICAgZm5OYW1lID0gXCJnMm1fYmF0Y2hBcHBseUtleU1peGVkXCI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzR21pZCA9IEcuRi5uOCozO1xuICAgICAgICAgICAgaWYgKG91dFR5cGUgPT0gXCJqYWNvYmlhblwiKSB7XG4gICAgICAgICAgICAgICAgc0dvdXQgPSBHLkYubjgqMztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgZm5BZmZpbmUgPSBcImcybV9iYXRjaFRvQWZmaW5lXCI7XG4gICAgICAgICAgICAgICAgc0dvdXQgPSBHLkYubjgqMjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChncm91cE5hbWUgPT0gXCJGclwiKSB7XG4gICAgICAgICAgICBmbk5hbWUgPSBcImZybV9iYXRjaEFwcGx5S2V5XCI7XG4gICAgICAgICAgICBzR2luID0gRy5uODtcbiAgICAgICAgICAgIHNHbWlkID0gRy5uODtcbiAgICAgICAgICAgIHNHb3V0ID0gRy5uODtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgZ3JvdXA6IFwiICsgZ3JvdXBOYW1lKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBuUG9pbnRzID0gTWF0aC5mbG9vcihidWZmLmJ5dGVMZW5ndGggLyBzR2luKTtcbiAgICAgICAgY29uc3QgcG9pbnRzUGVyQ2h1bmsgPSBNYXRoLmZsb29yKG5Qb2ludHMvdG0uY29uY3VycmVuY3kpO1xuICAgICAgICBjb25zdCBvcFByb21pc2VzID0gW107XG4gICAgICAgIGluYyA9IEZyLmUoaW5jKTtcbiAgICAgICAgbGV0IHQgPSBGci5lKGZpcnN0KTtcbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPHRtLmNvbmN1cnJlbmN5OyBpKyspIHtcbiAgICAgICAgICAgIGxldCBuO1xuICAgICAgICAgICAgaWYgKGk8IHRtLmNvbmN1cnJlbmN5LTEpIHtcbiAgICAgICAgICAgICAgICBuID0gcG9pbnRzUGVyQ2h1bms7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIG4gPSBuUG9pbnRzIC0gaSpwb2ludHNQZXJDaHVuaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChuPT0wKSBjb250aW51ZTtcblxuICAgICAgICAgICAgY29uc3QgdGFzayA9IFtdO1xuXG4gICAgICAgICAgICB0YXNrLnB1c2goe1xuICAgICAgICAgICAgICAgIGNtZDogXCJBTExPQ1NFVFwiLFxuICAgICAgICAgICAgICAgIHZhcjogMCxcbiAgICAgICAgICAgICAgICBidWZmOiBidWZmLnNsaWNlKGkqcG9pbnRzUGVyQ2h1bmsqc0dpbiwgaSpwb2ludHNQZXJDaHVuaypzR2luICsgbipzR2luKVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJBTExPQ1NFVFwiLCB2YXI6IDEsIGJ1ZmY6IHR9KTtcbiAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkFMTE9DU0VUXCIsIHZhcjogMiwgYnVmZjogaW5jfSk7XG4gICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJBTExPQ1wiLCB2YXI6IDMsIGxlbjogbipNYXRoLm1heChzR21pZCwgc0dvdXQpfSk7XG4gICAgICAgICAgICB0YXNrLnB1c2goe1xuICAgICAgICAgICAgICAgIGNtZDogXCJDQUxMXCIsXG4gICAgICAgICAgICAgICAgZm5OYW1lOiBmbk5hbWUsXG4gICAgICAgICAgICAgICAgcGFyYW1zOiBbXG4gICAgICAgICAgICAgICAgICAgIHt2YXI6IDB9LFxuICAgICAgICAgICAgICAgICAgICB7dmFsOiBufSxcbiAgICAgICAgICAgICAgICAgICAge3ZhcjogMX0sXG4gICAgICAgICAgICAgICAgICAgIHt2YXI6IDJ9LFxuICAgICAgICAgICAgICAgICAgICB7dmFyOjN9XG4gICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBpZiAoZm5BZmZpbmUpIHtcbiAgICAgICAgICAgICAgICB0YXNrLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICBjbWQ6IFwiQ0FMTFwiLFxuICAgICAgICAgICAgICAgICAgICBmbk5hbWU6IGZuQWZmaW5lLFxuICAgICAgICAgICAgICAgICAgICBwYXJhbXM6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHt2YXI6IDN9LFxuICAgICAgICAgICAgICAgICAgICAgICAge3ZhbDogbn0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7dmFyOiAzfSxcbiAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiR0VUXCIsIG91dDogMCwgdmFyOiAzLCBsZW46IG4qc0dvdXR9KTtcblxuICAgICAgICAgICAgb3BQcm9taXNlcy5wdXNoKHRtLnF1ZXVlQWN0aW9uKHRhc2spKTtcbiAgICAgICAgICAgIHQgPSBGci5tdWwodCwgRnIuZXhwKGluYywgbikpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgUHJvbWlzZS5hbGwob3BQcm9taXNlcyk7XG5cbiAgICAgICAgbGV0IG91dEJ1ZmY7XG4gICAgICAgIGlmIChidWZmIGluc3RhbmNlb2YgQmlnQnVmZmVyKSB7XG4gICAgICAgICAgICBvdXRCdWZmID0gbmV3IEJpZ0J1ZmZlcihuUG9pbnRzKnNHb3V0KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG91dEJ1ZmYgPSBuZXcgVWludDhBcnJheShuUG9pbnRzKnNHb3V0KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBwPTA7XG4gICAgICAgIGZvciAobGV0IGk9MDsgaTxyZXN1bHQubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIG91dEJ1ZmYuc2V0KHJlc3VsdFtpXVswXSwgcCk7XG4gICAgICAgICAgICBwICs9IHJlc3VsdFtpXVswXS5ieXRlTGVuZ3RoO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG91dEJ1ZmY7XG4gICAgfTtcbn1cblxuZnVuY3Rpb24gYnVpbGRQYWlyaW5nKGN1cnZlKSB7XG4gICAgY29uc3QgdG0gPSBjdXJ2ZS50bTtcbiAgICBjdXJ2ZS5wYWlyaW5nID0gZnVuY3Rpb24gcGFpcmluZyhhLCBiKSB7XG5cbiAgICAgICAgdG0uc3RhcnRTeW5jT3AoKTtcbiAgICAgICAgY29uc3QgcEEgPSB0bS5hbGxvY0J1ZmYoY3VydmUuRzEudG9KYWNvYmlhbihhKSk7XG4gICAgICAgIGNvbnN0IHBCID0gdG0uYWxsb2NCdWZmKGN1cnZlLkcyLnRvSmFjb2JpYW4oYikpO1xuICAgICAgICBjb25zdCBwUmVzID0gdG0uYWxsb2MoY3VydmUuR3QubjgpO1xuICAgICAgICB0bS5pbnN0YW5jZS5leHBvcnRzW2N1cnZlLm5hbWUgKyBcIl9wYWlyaW5nXCJdKHBBLCBwQiwgcFJlcyk7XG5cbiAgICAgICAgY29uc3QgcmVzID0gdG0uZ2V0QnVmZihwUmVzLCBjdXJ2ZS5HdC5uOCk7XG5cbiAgICAgICAgdG0uZW5kU3luY09wKCk7XG4gICAgICAgIHJldHVybiByZXM7XG4gICAgfTtcblxuICAgIGN1cnZlLnBhaXJpbmdFcSA9IGFzeW5jIGZ1bmN0aW9uIHBhaXJpbmdFcSgpIHtcbiAgICAgICAgbGV0ICBidWZmQ3Q7XG4gICAgICAgIGxldCBuRXFzO1xuICAgICAgICBpZiAoKGFyZ3VtZW50cy5sZW5ndGggJSAyKSA9PSAxKSB7XG4gICAgICAgICAgICBidWZmQ3QgPSBhcmd1bWVudHNbYXJndW1lbnRzLmxlbmd0aC0xXTtcbiAgICAgICAgICAgIG5FcXMgPSAoYXJndW1lbnRzLmxlbmd0aCAtMSkgLzI7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBidWZmQ3QgPSBjdXJ2ZS5HdC5vbmU7XG4gICAgICAgICAgICBuRXFzID0gYXJndW1lbnRzLmxlbmd0aCAvMjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IG9wUHJvbWlzZXMgPSBbXTtcbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPG5FcXM7IGkrKykge1xuXG4gICAgICAgICAgICBjb25zdCB0YXNrID0gW107XG5cbiAgICAgICAgICAgIGNvbnN0IGcxQnVmZiA9IGN1cnZlLkcxLnRvSmFjb2JpYW4oYXJndW1lbnRzW2kqMl0pO1xuICAgICAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiQUxMT0NTRVRcIiwgdmFyOiAwLCBidWZmOiBnMUJ1ZmZ9KTtcbiAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkFMTE9DXCIsIHZhcjogMSwgbGVuOiBjdXJ2ZS5wcmVQU2l6ZX0pO1xuXG4gICAgICAgICAgICBjb25zdCBnMkJ1ZmYgPSBjdXJ2ZS5HMi50b0phY29iaWFuKGFyZ3VtZW50c1tpKjIgKzFdKTtcbiAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkFMTE9DU0VUXCIsIHZhcjogMiwgYnVmZjogZzJCdWZmfSk7XG4gICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJBTExPQ1wiLCB2YXI6IDMsIGxlbjogY3VydmUucHJlUVNpemV9KTtcblxuICAgICAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiQUxMT0NcIiwgdmFyOiA0LCBsZW46IGN1cnZlLkd0Lm44fSk7XG5cbiAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkNBTExcIiwgZm5OYW1lOiBjdXJ2ZS5uYW1lICsgXCJfcHJlcGFyZUcxXCIsIHBhcmFtczogW1xuICAgICAgICAgICAgICAgIHt2YXI6IDB9LFxuICAgICAgICAgICAgICAgIHt2YXI6IDF9XG4gICAgICAgICAgICBdfSk7XG5cbiAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkNBTExcIiwgZm5OYW1lOiBjdXJ2ZS5uYW1lICsgXCJfcHJlcGFyZUcyXCIsIHBhcmFtczogW1xuICAgICAgICAgICAgICAgIHt2YXI6IDJ9LFxuICAgICAgICAgICAgICAgIHt2YXI6IDN9XG4gICAgICAgICAgICBdfSk7XG5cbiAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkNBTExcIiwgZm5OYW1lOiBjdXJ2ZS5uYW1lICsgXCJfbWlsbGVyTG9vcFwiLCBwYXJhbXM6IFtcbiAgICAgICAgICAgICAgICB7dmFyOiAxfSxcbiAgICAgICAgICAgICAgICB7dmFyOiAzfSxcbiAgICAgICAgICAgICAgICB7dmFyOiA0fVxuICAgICAgICAgICAgXX0pO1xuXG4gICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJHRVRcIiwgb3V0OiAwLCB2YXI6IDQsIGxlbjogY3VydmUuR3Qubjh9KTtcblxuICAgICAgICAgICAgb3BQcm9taXNlcy5wdXNoKFxuICAgICAgICAgICAgICAgIHRtLnF1ZXVlQWN0aW9uKHRhc2spXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG5cblxuICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBQcm9taXNlLmFsbChvcFByb21pc2VzKTtcblxuICAgICAgICB0bS5zdGFydFN5bmNPcCgpO1xuICAgICAgICBjb25zdCBwUmVzID0gdG0uYWxsb2MoY3VydmUuR3QubjgpO1xuICAgICAgICB0bS5pbnN0YW5jZS5leHBvcnRzLmZ0bV9vbmUocFJlcyk7XG5cbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPHJlc3VsdC5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgY29uc3QgcE1SID0gdG0uYWxsb2NCdWZmKHJlc3VsdFtpXVswXSk7XG4gICAgICAgICAgICB0bS5pbnN0YW5jZS5leHBvcnRzLmZ0bV9tdWwocFJlcywgcE1SLCBwUmVzKTtcbiAgICAgICAgfVxuICAgICAgICB0bS5pbnN0YW5jZS5leHBvcnRzW2N1cnZlLm5hbWUgKyBcIl9maW5hbEV4cG9uZW50aWF0aW9uXCJdKHBSZXMsIHBSZXMpO1xuXG4gICAgICAgIGNvbnN0IHBDdCA9IHRtLmFsbG9jQnVmZihidWZmQ3QpO1xuXG4gICAgICAgIGNvbnN0IHIgPSAhIXRtLmluc3RhbmNlLmV4cG9ydHMuZnRtX2VxKHBSZXMsIHBDdCk7XG5cbiAgICAgICAgdG0uZW5kU3luY09wKCk7XG5cbiAgICAgICAgcmV0dXJuIHI7XG4gICAgfTtcblxuICAgIGN1cnZlLnByZXBhcmVHMSA9IGZ1bmN0aW9uKHApIHtcbiAgICAgICAgdGhpcy50bS5zdGFydFN5bmNPcCgpO1xuICAgICAgICBjb25zdCBwUCA9IHRoaXMudG0uYWxsb2NCdWZmKHApO1xuICAgICAgICBjb25zdCBwUHJlcFAgPSB0aGlzLnRtLmFsbG9jKHRoaXMucHJlUFNpemUpO1xuICAgICAgICB0aGlzLnRtLmluc3RhbmNlLmV4cG9ydHNbdGhpcy5uYW1lICsgXCJfcHJlcGFyZUcxXCJdKHBQLCBwUHJlcFApO1xuICAgICAgICBjb25zdCByZXMgPSB0aGlzLnRtLmdldEJ1ZmYocFByZXBQLCB0aGlzLnByZVBTaXplKTtcbiAgICAgICAgdGhpcy50bS5lbmRTeW5jT3AoKTtcbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9O1xuXG4gICAgY3VydmUucHJlcGFyZUcyID0gZnVuY3Rpb24ocSkge1xuICAgICAgICB0aGlzLnRtLnN0YXJ0U3luY09wKCk7XG4gICAgICAgIGNvbnN0IHBRID0gdGhpcy50bS5hbGxvY0J1ZmYocSk7XG4gICAgICAgIGNvbnN0IHBQcmVwUSA9IHRoaXMudG0uYWxsb2ModGhpcy5wcmVRU2l6ZSk7XG4gICAgICAgIHRoaXMudG0uaW5zdGFuY2UuZXhwb3J0c1t0aGlzLm5hbWUgKyBcIl9wcmVwYXJlRzJcIl0ocFEsIHBQcmVwUSk7XG4gICAgICAgIGNvbnN0IHJlcyA9IHRoaXMudG0uZ2V0QnVmZihwUHJlcFEsIHRoaXMucHJlUVNpemUpO1xuICAgICAgICB0aGlzLnRtLmVuZFN5bmNPcCgpO1xuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH07XG5cbiAgICBjdXJ2ZS5taWxsZXJMb29wID0gZnVuY3Rpb24ocHJlUCwgcHJlUSkge1xuICAgICAgICB0aGlzLnRtLnN0YXJ0U3luY09wKCk7XG4gICAgICAgIGNvbnN0IHBQcmVQID0gdGhpcy50bS5hbGxvY0J1ZmYocHJlUCk7XG4gICAgICAgIGNvbnN0IHBQcmVRID0gdGhpcy50bS5hbGxvY0J1ZmYocHJlUSk7XG4gICAgICAgIGNvbnN0IHBSZXMgPSB0aGlzLnRtLmFsbG9jKHRoaXMuR3QubjgpO1xuICAgICAgICB0aGlzLnRtLmluc3RhbmNlLmV4cG9ydHNbdGhpcy5uYW1lICsgXCJfbWlsbGVyTG9vcFwiXShwUHJlUCwgcFByZVEsIHBSZXMpO1xuICAgICAgICBjb25zdCByZXMgPSB0aGlzLnRtLmdldEJ1ZmYocFJlcywgdGhpcy5HdC5uOCk7XG4gICAgICAgIHRoaXMudG0uZW5kU3luY09wKCk7XG4gICAgICAgIHJldHVybiByZXM7XG4gICAgfTtcblxuICAgIGN1cnZlLmZpbmFsRXhwb25lbnRpYXRpb24gPSBmdW5jdGlvbihhKSB7XG4gICAgICAgIHRoaXMudG0uc3RhcnRTeW5jT3AoKTtcbiAgICAgICAgY29uc3QgcEEgPSB0aGlzLnRtLmFsbG9jQnVmZihhKTtcbiAgICAgICAgY29uc3QgcFJlcyA9IHRoaXMudG0uYWxsb2ModGhpcy5HdC5uOCk7XG4gICAgICAgIHRoaXMudG0uaW5zdGFuY2UuZXhwb3J0c1t0aGlzLm5hbWUgKyBcIl9maW5hbEV4cG9uZW50aWF0aW9uXCJdKHBBLCBwUmVzKTtcbiAgICAgICAgY29uc3QgcmVzID0gdGhpcy50bS5nZXRCdWZmKHBSZXMsIHRoaXMuR3QubjgpO1xuICAgICAgICB0aGlzLnRtLmVuZFN5bmNPcCgpO1xuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH07XG5cbn1cblxuY29uc3QgcFRTaXplcyA9IFtcbiAgICAxICwgIDEsICAxLCAgMSwgICAgMiwgIDMsICA0LCAgNSxcbiAgICA2ICwgIDcsICA3LCAgOCwgICAgOSwgMTAsIDExLCAxMixcbiAgICAxMywgMTMsIDE0LCAxNSwgICAxNiwgMTYsIDE3LCAxNyxcbiAgICAxNywgMTcsIDE3LCAxNywgICAxNywgMTcsIDE3LCAxN1xuXTtcblxuZnVuY3Rpb24gYnVpbGRNdWx0aWV4cChjdXJ2ZSwgZ3JvdXBOYW1lKSB7XG4gICAgY29uc3QgRyA9IGN1cnZlW2dyb3VwTmFtZV07XG4gICAgY29uc3QgdG0gPSBHLnRtO1xuICAgIGFzeW5jIGZ1bmN0aW9uIF9tdWx0aUV4cENodW5rKGJ1ZmZCYXNlcywgYnVmZlNjYWxhcnMsIGluVHlwZSwgbG9nZ2VyLCBsb2dUZXh0KSB7XG4gICAgICAgIGlmICggISAoYnVmZkJhc2VzIGluc3RhbmNlb2YgVWludDhBcnJheSkgKSB7XG4gICAgICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZXJyb3IoYCR7bG9nVGV4dH0gX211bHRpRXhwQ2h1bmsgYnVmZkJhc2VzIGlzIG5vdCBVaW50OEFycmF5YCk7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYCR7bG9nVGV4dH0gX211bHRpRXhwQ2h1bmsgYnVmZkJhc2VzIGlzIG5vdCBVaW50OEFycmF5YCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCAhIChidWZmU2NhbGFycyBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpICkge1xuICAgICAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmVycm9yKGAke2xvZ1RleHR9IF9tdWx0aUV4cENodW5rIGJ1ZmZTY2FsYXJzIGlzIG5vdCBVaW50OEFycmF5YCk7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYCR7bG9nVGV4dH0gX211bHRpRXhwQ2h1bmsgYnVmZlNjYWxhcnMgaXMgbm90IFVpbnQ4QXJyYXlgKTtcbiAgICAgICAgfVxuICAgICAgICBpblR5cGUgPSBpblR5cGUgfHwgXCJhZmZpbmVcIjtcblxuICAgICAgICBsZXQgc0dJbjtcbiAgICAgICAgbGV0IGZuTmFtZTtcbiAgICAgICAgaWYgKGdyb3VwTmFtZSA9PSBcIkcxXCIpIHtcbiAgICAgICAgICAgIGlmIChpblR5cGUgPT0gXCJhZmZpbmVcIikge1xuICAgICAgICAgICAgICAgIGZuTmFtZSA9IFwiZzFtX211bHRpZXhwQWZmaW5lX2NodW5rXCI7XG4gICAgICAgICAgICAgICAgc0dJbiA9IEcuRi5uOCoyO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBmbk5hbWUgPSBcImcxbV9tdWx0aWV4cF9jaHVua1wiO1xuICAgICAgICAgICAgICAgIHNHSW4gPSBHLkYubjgqMztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChncm91cE5hbWUgPT0gXCJHMlwiKSB7XG4gICAgICAgICAgICBpZiAoaW5UeXBlID09IFwiYWZmaW5lXCIpIHtcbiAgICAgICAgICAgICAgICBmbk5hbWUgPSBcImcybV9tdWx0aWV4cEFmZmluZV9jaHVua1wiO1xuICAgICAgICAgICAgICAgIHNHSW4gPSBHLkYubjgqMjtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgZm5OYW1lID0gXCJnMm1fbXVsdGlleHBfY2h1bmtcIjtcbiAgICAgICAgICAgICAgICBzR0luID0gRy5GLm44KjM7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIGdyb3VwXCIpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG5Qb2ludHMgPSBNYXRoLmZsb29yKGJ1ZmZCYXNlcy5ieXRlTGVuZ3RoIC8gc0dJbik7XG5cbiAgICAgICAgaWYgKG5Qb2ludHMgPT0gMCkgcmV0dXJuIEcuemVybztcbiAgICAgICAgY29uc3Qgc1NjYWxhciA9IE1hdGguZmxvb3IoYnVmZlNjYWxhcnMuYnl0ZUxlbmd0aCAvIG5Qb2ludHMpO1xuICAgICAgICBpZiggc1NjYWxhciAqIG5Qb2ludHMgIT0gYnVmZlNjYWxhcnMuYnl0ZUxlbmd0aCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiU2NhbGFyIHNpemUgZG9lcyBub3QgbWF0Y2hcIik7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBiaXRDaHVua1NpemUgPSBwVFNpemVzW2xvZzIoblBvaW50cyldO1xuICAgICAgICBjb25zdCBuQ2h1bmtzID0gTWF0aC5mbG9vcigoc1NjYWxhcio4IC0gMSkgLyBiaXRDaHVua1NpemUpICsxO1xuXG4gICAgICAgIGNvbnN0IG9wUHJvbWlzZXMgPSBbXTtcbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPG5DaHVua3M7IGkrKykge1xuICAgICAgICAgICAgY29uc3QgdGFzayA9IFtcbiAgICAgICAgICAgICAgICB7Y21kOiBcIkFMTE9DU0VUXCIsIHZhcjogMCwgYnVmZjogYnVmZkJhc2VzfSxcbiAgICAgICAgICAgICAgICB7Y21kOiBcIkFMTE9DU0VUXCIsIHZhcjogMSwgYnVmZjogYnVmZlNjYWxhcnN9LFxuICAgICAgICAgICAgICAgIHtjbWQ6IFwiQUxMT0NcIiwgdmFyOiAyLCBsZW46IEcuRi5uOCozfSxcbiAgICAgICAgICAgICAgICB7Y21kOiBcIkNBTExcIiwgZm5OYW1lOiBmbk5hbWUsIHBhcmFtczogW1xuICAgICAgICAgICAgICAgICAgICB7dmFyOiAwfSxcbiAgICAgICAgICAgICAgICAgICAge3ZhcjogMX0sXG4gICAgICAgICAgICAgICAgICAgIHt2YWw6IHNTY2FsYXJ9LFxuICAgICAgICAgICAgICAgICAgICB7dmFsOiBuUG9pbnRzfSxcbiAgICAgICAgICAgICAgICAgICAge3ZhbDogaSpiaXRDaHVua1NpemV9LFxuICAgICAgICAgICAgICAgICAgICB7dmFsOiBNYXRoLm1pbihzU2NhbGFyKjggLSBpKmJpdENodW5rU2l6ZSwgYml0Q2h1bmtTaXplKX0sXG4gICAgICAgICAgICAgICAgICAgIHt2YXI6IDJ9XG4gICAgICAgICAgICAgICAgXX0sXG4gICAgICAgICAgICAgICAge2NtZDogXCJHRVRcIiwgb3V0OiAwLCB2YXI6IDIsIGxlbjogRy5GLm44KjN9XG4gICAgICAgICAgICBdO1xuICAgICAgICAgICAgb3BQcm9taXNlcy5wdXNoKFxuICAgICAgICAgICAgICAgIEcudG0ucXVldWVBY3Rpb24odGFzaylcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBQcm9taXNlLmFsbChvcFByb21pc2VzKTtcblxuICAgICAgICBsZXQgcmVzID0gRy56ZXJvO1xuICAgICAgICBmb3IgKGxldCBpPXJlc3VsdC5sZW5ndGgtMTsgaT49MDsgaS0tKSB7XG4gICAgICAgICAgICBpZiAoIUcuaXNaZXJvKHJlcykpIHtcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBqPTA7IGo8Yml0Q2h1bmtTaXplOyBqKyspIHJlcyA9IEcuZG91YmxlKHJlcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXMgPSBHLmFkZChyZXMsIHJlc3VsdFtpXVswXSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH1cblxuICAgIGFzeW5jIGZ1bmN0aW9uIF9tdWx0aUV4cChidWZmQmFzZXMsIGJ1ZmZTY2FsYXJzLCBpblR5cGUsIGxvZ2dlciwgbG9nVGV4dCkge1xuICAgICAgICBjb25zdCBNQVhfQ0hVTktfU0laRSA9IDEgPDwgMjI7XG4gICAgICAgIGNvbnN0IE1JTl9DSFVOS19TSVpFID0gMSA8PCAxMDtcbiAgICAgICAgbGV0IHNHSW47XG5cbiAgICAgICAgaWYgKGdyb3VwTmFtZSA9PSBcIkcxXCIpIHtcbiAgICAgICAgICAgIGlmIChpblR5cGUgPT0gXCJhZmZpbmVcIikge1xuICAgICAgICAgICAgICAgIHNHSW4gPSBHLkYubjgqMjtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgc0dJbiA9IEcuRi5uOCozO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKGdyb3VwTmFtZSA9PSBcIkcyXCIpIHtcbiAgICAgICAgICAgIGlmIChpblR5cGUgPT0gXCJhZmZpbmVcIikge1xuICAgICAgICAgICAgICAgIHNHSW4gPSBHLkYubjgqMjtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgc0dJbiA9IEcuRi5uOCozO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBncm91cFwiKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IG5Qb2ludHMgPSBNYXRoLmZsb29yKGJ1ZmZCYXNlcy5ieXRlTGVuZ3RoIC8gc0dJbik7XG4gICAgICAgIGNvbnN0IHNTY2FsYXIgPSBNYXRoLmZsb29yKGJ1ZmZTY2FsYXJzLmJ5dGVMZW5ndGggLyBuUG9pbnRzKTtcbiAgICAgICAgaWYoIHNTY2FsYXIgKiBuUG9pbnRzICE9IGJ1ZmZTY2FsYXJzLmJ5dGVMZW5ndGgpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIlNjYWxhciBzaXplIGRvZXMgbm90IG1hdGNoXCIpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgYml0Q2h1bmtTaXplID0gcFRTaXplc1tsb2cyKG5Qb2ludHMpXTtcbiAgICAgICAgY29uc3QgbkNodW5rcyA9IE1hdGguZmxvb3IoKHNTY2FsYXIqOCAtIDEpIC8gYml0Q2h1bmtTaXplKSArMTtcblxuICAgICAgICBsZXQgY2h1bmtTaXplO1xuICAgICAgICBjaHVua1NpemUgPSBNYXRoLmZsb29yKG5Qb2ludHMgLyAodG0uY29uY3VycmVuY3kgL25DaHVua3MpKTtcbiAgICAgICAgaWYgKGNodW5rU2l6ZT5NQVhfQ0hVTktfU0laRSkgY2h1bmtTaXplID0gTUFYX0NIVU5LX1NJWkU7XG4gICAgICAgIGlmIChjaHVua1NpemU8TUlOX0NIVU5LX1NJWkUpIGNodW5rU2l6ZSA9IE1JTl9DSFVOS19TSVpFO1xuXG4gICAgICAgIGNvbnN0IG9wUHJvbWlzZXMgPSBbXTtcbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPG5Qb2ludHM7IGkgKz0gY2h1bmtTaXplKSB7XG4gICAgICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZGVidWcoYE11bHRpZXhwIHN0YXJ0OiAke2xvZ1RleHR9OiAke2l9LyR7blBvaW50c31gKTtcbiAgICAgICAgICAgIGNvbnN0IG49IE1hdGgubWluKG5Qb2ludHMgLSBpLCBjaHVua1NpemUpO1xuICAgICAgICAgICAgY29uc3QgYnVmZkJhc2VzQ2h1bmsgPSBidWZmQmFzZXMuc2xpY2UoaSpzR0luLCAoaStuKSpzR0luKTtcbiAgICAgICAgICAgIGNvbnN0IGJ1ZmZTY2FsYXJzQ2h1bmsgPSBidWZmU2NhbGFycy5zbGljZShpKnNTY2FsYXIsIChpK24pKnNTY2FsYXIpO1xuICAgICAgICAgICAgb3BQcm9taXNlcy5wdXNoKF9tdWx0aUV4cENodW5rKGJ1ZmZCYXNlc0NodW5rLCBidWZmU2NhbGFyc0NodW5rLCBpblR5cGUsIGxvZ2dlciwgbG9nVGV4dCkudGhlbiggKHIpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZGVidWcoYE11bHRpZXhwIGVuZDogJHtsb2dUZXh0fTogJHtpfS8ke25Qb2ludHN9YCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHI7XG4gICAgICAgICAgICB9KSk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBQcm9taXNlLmFsbChvcFByb21pc2VzKTtcblxuICAgICAgICBsZXQgcmVzID0gRy56ZXJvO1xuICAgICAgICBmb3IgKGxldCBpPXJlc3VsdC5sZW5ndGgtMTsgaT49MDsgaS0tKSB7XG4gICAgICAgICAgICByZXMgPSBHLmFkZChyZXMsIHJlc3VsdFtpXSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH1cblxuICAgIEcubXVsdGlFeHAgPSBhc3luYyBmdW5jdGlvbiBtdWx0aUV4cEFmZmluZShidWZmQmFzZXMsIGJ1ZmZTY2FsYXJzLCBsb2dnZXIsIGxvZ1RleHQpIHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IF9tdWx0aUV4cChidWZmQmFzZXMsIGJ1ZmZTY2FsYXJzLCBcImphY29iaWFuXCIsIGxvZ2dlciwgbG9nVGV4dCk7XG4gICAgfTtcbiAgICBHLm11bHRpRXhwQWZmaW5lID0gYXN5bmMgZnVuY3Rpb24gbXVsdGlFeHBBZmZpbmUoYnVmZkJhc2VzLCBidWZmU2NhbGFycywgbG9nZ2VyLCBsb2dUZXh0KSB7XG4gICAgICAgIHJldHVybiBhd2FpdCBfbXVsdGlFeHAoYnVmZkJhc2VzLCBidWZmU2NhbGFycywgXCJhZmZpbmVcIiwgbG9nZ2VyLCBsb2dUZXh0KTtcbiAgICB9O1xufVxuXG5mdW5jdGlvbiBidWlsZEZGVChjdXJ2ZSwgZ3JvdXBOYW1lKSB7XG4gICAgY29uc3QgRyA9IGN1cnZlW2dyb3VwTmFtZV07XG4gICAgY29uc3QgRnIgPSBjdXJ2ZS5GcjtcbiAgICBjb25zdCB0bSA9IEcudG07XG4gICAgYXN5bmMgZnVuY3Rpb24gX2ZmdChidWZmLCBpbnZlcnNlLCBpblR5cGUsIG91dFR5cGUsIGxvZ2dlciwgbG9nZ2VyVHh0KSB7XG5cbiAgICAgICAgaW5UeXBlID0gaW5UeXBlIHx8IFwiYWZmaW5lXCI7XG4gICAgICAgIG91dFR5cGUgPSBvdXRUeXBlIHx8IFwiYWZmaW5lXCI7XG4gICAgICAgIGNvbnN0IE1BWF9CSVRTX1RIUkVBRCA9IDE0O1xuXG4gICAgICAgIGxldCBzSW4sIHNNaWQsIHNPdXQsIGZuSW4yTWlkLCBmbk1pZDJPdXQsIGZuRkZUTWl4LCBmbkZGVEpvaW4sIGZuRkZURmluYWw7XG4gICAgICAgIGlmIChncm91cE5hbWUgPT0gXCJHMVwiKSB7XG4gICAgICAgICAgICBpZiAoaW5UeXBlID09IFwiYWZmaW5lXCIpIHtcbiAgICAgICAgICAgICAgICBzSW4gPSBHLkYubjgqMjtcbiAgICAgICAgICAgICAgICBmbkluMk1pZCA9IFwiZzFtX2JhdGNoVG9KYWNvYmlhblwiO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBzSW4gPSBHLkYubjgqMztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHNNaWQgPSBHLkYubjgqMztcbiAgICAgICAgICAgIGlmIChpbnZlcnNlKSB7XG4gICAgICAgICAgICAgICAgZm5GRlRGaW5hbCA9IFwiZzFtX2ZmdEZpbmFsXCI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmbkZGVEpvaW4gPSBcImcxbV9mZnRKb2luXCI7XG4gICAgICAgICAgICBmbkZGVE1peCA9IFwiZzFtX2ZmdE1peFwiO1xuXG4gICAgICAgICAgICBpZiAob3V0VHlwZSA9PSBcImFmZmluZVwiKSB7XG4gICAgICAgICAgICAgICAgc091dCA9IEcuRi5uOCoyO1xuICAgICAgICAgICAgICAgIGZuTWlkMk91dCA9IFwiZzFtX2JhdGNoVG9BZmZpbmVcIjtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgc091dCA9IEcuRi5uOCozO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH0gZWxzZSBpZiAoZ3JvdXBOYW1lID09IFwiRzJcIikge1xuICAgICAgICAgICAgaWYgKGluVHlwZSA9PSBcImFmZmluZVwiKSB7XG4gICAgICAgICAgICAgICAgc0luID0gRy5GLm44KjI7XG4gICAgICAgICAgICAgICAgZm5JbjJNaWQgPSBcImcybV9iYXRjaFRvSmFjb2JpYW5cIjtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgc0luID0gRy5GLm44KjM7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzTWlkID0gRy5GLm44KjM7XG4gICAgICAgICAgICBpZiAoaW52ZXJzZSkge1xuICAgICAgICAgICAgICAgIGZuRkZURmluYWwgPSBcImcybV9mZnRGaW5hbFwiO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZm5GRlRKb2luID0gXCJnMm1fZmZ0Sm9pblwiO1xuICAgICAgICAgICAgZm5GRlRNaXggPSBcImcybV9mZnRNaXhcIjtcbiAgICAgICAgICAgIGlmIChvdXRUeXBlID09IFwiYWZmaW5lXCIpIHtcbiAgICAgICAgICAgICAgICBzT3V0ID0gRy5GLm44KjI7XG4gICAgICAgICAgICAgICAgZm5NaWQyT3V0ID0gXCJnMm1fYmF0Y2hUb0FmZmluZVwiO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBzT3V0ID0gRy5GLm44KjM7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoZ3JvdXBOYW1lID09IFwiRnJcIikge1xuICAgICAgICAgICAgc0luID0gRy5uODtcbiAgICAgICAgICAgIHNNaWQgPSBHLm44O1xuICAgICAgICAgICAgc091dCA9IEcubjg7XG4gICAgICAgICAgICBpZiAoaW52ZXJzZSkge1xuICAgICAgICAgICAgICAgIGZuRkZURmluYWwgPSBcImZybV9mZnRGaW5hbFwiO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZm5GRlRNaXggPSBcImZybV9mZnRNaXhcIjtcbiAgICAgICAgICAgIGZuRkZUSm9pbiA9IFwiZnJtX2ZmdEpvaW5cIjtcbiAgICAgICAgfVxuXG5cbiAgICAgICAgbGV0IHJldHVybkFycmF5ID0gZmFsc2U7XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KGJ1ZmYpKSB7XG4gICAgICAgICAgICBidWZmID0gYXJyYXkyYnVmZmVyKGJ1ZmYsIHNJbik7XG4gICAgICAgICAgICByZXR1cm5BcnJheSA9IHRydWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBidWZmID0gYnVmZi5zbGljZSgwLCBidWZmLmJ5dGVMZW5ndGgpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgblBvaW50cyA9IGJ1ZmYuYnl0ZUxlbmd0aCAvIHNJbjtcbiAgICAgICAgY29uc3QgYml0cyA9IGxvZzIoblBvaW50cyk7XG5cbiAgICAgICAgaWYgICgoMSA8PCBiaXRzKSAhPSBuUG9pbnRzKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJmZnQgbXVzdCBiZSBtdWx0aXBsZSBvZiAyXCIgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChiaXRzID09IEZyLnMgKzEpIHtcbiAgICAgICAgICAgIGxldCBidWZmT3V0O1xuXG4gICAgICAgICAgICBpZiAoaW52ZXJzZSkge1xuICAgICAgICAgICAgICAgIGJ1ZmZPdXQgPSAgYXdhaXQgX2ZmdEV4dEludihidWZmLCBpblR5cGUsIG91dFR5cGUsIGxvZ2dlciwgbG9nZ2VyVHh0KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgYnVmZk91dCA9ICBhd2FpdCBfZmZ0RXh0KGJ1ZmYsIGluVHlwZSwgb3V0VHlwZSwgbG9nZ2VyLCBsb2dnZXJUeHQpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAocmV0dXJuQXJyYXkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gYnVmZmVyMmFycmF5KGJ1ZmZPdXQsIHNPdXQpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gYnVmZk91dDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBpbnY7XG4gICAgICAgIGlmIChpbnZlcnNlKSB7XG4gICAgICAgICAgICBpbnYgPSBGci5pbnYoRnIuZShuUG9pbnRzKSk7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgYnVmZk91dDtcblxuICAgICAgICBidWZmUmV2ZXJzZUJpdHMoYnVmZiwgc0luKTtcblxuICAgICAgICBsZXQgY2h1bmtzO1xuICAgICAgICBsZXQgcG9pbnRzSW5DaHVuayA9IE1hdGgubWluKDEgPDwgTUFYX0JJVFNfVEhSRUFELCBuUG9pbnRzKTtcbiAgICAgICAgbGV0IG5DaHVua3MgPSBuUG9pbnRzIC8gcG9pbnRzSW5DaHVuaztcblxuICAgICAgICB3aGlsZSAoKG5DaHVua3MgPCB0bS5jb25jdXJyZW5jeSkmJihwb2ludHNJbkNodW5rPj0xNikpIHtcbiAgICAgICAgICAgIG5DaHVua3MgKj0gMjtcbiAgICAgICAgICAgIHBvaW50c0luQ2h1bmsgLz0gMjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGwyQ2h1bmsgPSBsb2cyKHBvaW50c0luQ2h1bmspO1xuXG4gICAgICAgIGNvbnN0IHByb21pc2VzID0gW107XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpPCBuQ2h1bmtzOyBpKyspIHtcbiAgICAgICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5kZWJ1ZyhgJHtsb2dnZXJUeHR9OiBmZnQgJHtiaXRzfSBtaXggc3RhcnQ6ICR7aX0vJHtuQ2h1bmtzfWApO1xuICAgICAgICAgICAgY29uc3QgdGFzayA9IFtdO1xuICAgICAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiQUxMT0NcIiwgdmFyOiAwLCBsZW46IHNNaWQqcG9pbnRzSW5DaHVua30pO1xuICAgICAgICAgICAgY29uc3QgYnVmZkNodW5rID0gYnVmZi5zbGljZSggKHBvaW50c0luQ2h1bmsgKiBpKSpzSW4sIChwb2ludHNJbkNodW5rICogKGkrMSkpKnNJbik7XG4gICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJTRVRcIiwgdmFyOiAwLCBidWZmOiBidWZmQ2h1bmt9KTtcbiAgICAgICAgICAgIGlmIChmbkluMk1pZCkge1xuICAgICAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkNBTExcIiwgZm5OYW1lOmZuSW4yTWlkLCBwYXJhbXM6IFt7dmFyOjB9LCB7dmFsOiBwb2ludHNJbkNodW5rfSwge3ZhcjogMH1dfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmb3IgKGxldCBqPTE7IGo8PWwyQ2h1bms7aisrKSB7XG4gICAgICAgICAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiQ0FMTFwiLCBmbk5hbWU6Zm5GRlRNaXgsIHBhcmFtczogW3t2YXI6MH0sIHt2YWw6IHBvaW50c0luQ2h1bmt9LCB7dmFsOiBqfV19KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGwyQ2h1bms9PWJpdHMpIHtcbiAgICAgICAgICAgICAgICBpZiAoZm5GRlRGaW5hbCkge1xuICAgICAgICAgICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJBTExPQ1NFVFwiLCB2YXI6IDEsIGJ1ZmY6IGludn0pO1xuICAgICAgICAgICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJDQUxMXCIsIGZuTmFtZTogZm5GRlRGaW5hbCwgIHBhcmFtczpbXG4gICAgICAgICAgICAgICAgICAgICAgICB7dmFyOiAwfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHt2YWw6IHBvaW50c0luQ2h1bmt9LFxuICAgICAgICAgICAgICAgICAgICAgICAge3ZhcjogMX0sXG4gICAgICAgICAgICAgICAgICAgIF19KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGZuTWlkMk91dCkge1xuICAgICAgICAgICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJDQUxMXCIsIGZuTmFtZTpmbk1pZDJPdXQsIHBhcmFtczogW3t2YXI6MH0sIHt2YWw6IHBvaW50c0luQ2h1bmt9LCB7dmFyOiAwfV19KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiR0VUXCIsIG91dDogMCwgdmFyOiAwLCBsZW46IHBvaW50c0luQ2h1bmsqc091dH0pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJHRVRcIiwgb3V0OjAsIHZhcjogMCwgbGVuOiBzTWlkKnBvaW50c0luQ2h1bmt9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHByb21pc2VzLnB1c2godG0ucXVldWVBY3Rpb24odGFzaykudGhlbiggKHIpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZGVidWcoYCR7bG9nZ2VyVHh0fTogZmZ0ICR7Yml0c30gbWl4IGVuZDogJHtpfS8ke25DaHVua3N9YCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHI7XG4gICAgICAgICAgICB9KSk7XG4gICAgICAgIH1cblxuICAgICAgICBjaHVua3MgPSBhd2FpdCBQcm9taXNlLmFsbChwcm9taXNlcyk7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpPCBuQ2h1bmtzOyBpKyspIGNodW5rc1tpXSA9IGNodW5rc1tpXVswXTtcblxuICAgICAgICBmb3IgKGxldCBpID0gbDJDaHVuaysxOyAgIGk8PWJpdHM7IGkrKykge1xuICAgICAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmRlYnVnKGAke2xvZ2dlclR4dH06IGZmdCAgJHtiaXRzfSAgam9pbjogJHtpfS8ke2JpdHN9YCk7XG4gICAgICAgICAgICBjb25zdCBuR3JvdXBzID0gMSA8PCAoYml0cyAtIGkpO1xuICAgICAgICAgICAgY29uc3QgbkNodW5rc1Blckdyb3VwID0gbkNodW5rcyAvIG5Hcm91cHM7XG4gICAgICAgICAgICBjb25zdCBvcFByb21pc2VzID0gW107XG4gICAgICAgICAgICBmb3IgKGxldCBqPTA7IGo8bkdyb3VwczsgaisrKSB7XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaz0wOyBrIDxuQ2h1bmtzUGVyR3JvdXAvMjsgaysrKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGZpcnN0ID0gRnIuZXhwKCBGci53W2ldLCBrKnBvaW50c0luQ2h1bmspO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBpbmMgPSBGci53W2ldO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBvMSA9IGoqbkNodW5rc1Blckdyb3VwICsgaztcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbzIgPSBqKm5DaHVua3NQZXJHcm91cCArIGsgKyBuQ2h1bmtzUGVyR3JvdXAvMjtcblxuICAgICAgICAgICAgICAgICAgICBjb25zdCB0YXNrID0gW107XG4gICAgICAgICAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkFMTE9DU0VUXCIsIHZhcjogMCwgYnVmZjogY2h1bmtzW28xXX0pO1xuICAgICAgICAgICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJBTExPQ1NFVFwiLCB2YXI6IDEsIGJ1ZmY6IGNodW5rc1tvMl19KTtcbiAgICAgICAgICAgICAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiQUxMT0NTRVRcIiwgdmFyOiAyLCBidWZmOiBmaXJzdH0pO1xuICAgICAgICAgICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJBTExPQ1NFVFwiLCB2YXI6IDMsIGJ1ZmY6IGluY30pO1xuICAgICAgICAgICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJDQUxMXCIsIGZuTmFtZTogZm5GRlRKb2luLCAgcGFyYW1zOltcbiAgICAgICAgICAgICAgICAgICAgICAgIHt2YXI6IDB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge3ZhcjogMX0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7dmFsOiBwb2ludHNJbkNodW5rfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHt2YXI6IDJ9LFxuICAgICAgICAgICAgICAgICAgICAgICAge3ZhcjogM31cbiAgICAgICAgICAgICAgICAgICAgXX0pO1xuICAgICAgICAgICAgICAgICAgICBpZiAoaT09Yml0cykge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZuRkZURmluYWwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJBTExPQ1NFVFwiLCB2YXI6IDQsIGJ1ZmY6IGludn0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkNBTExcIiwgZm5OYW1lOiBmbkZGVEZpbmFsLCAgcGFyYW1zOltcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3ZhcjogMH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt2YWw6IHBvaW50c0luQ2h1bmt9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7dmFyOiA0fSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiQ0FMTFwiLCBmbk5hbWU6IGZuRkZURmluYWwsICBwYXJhbXM6W1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7dmFyOiAxfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3ZhbDogcG9pbnRzSW5DaHVua30sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt2YXI6IDR9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF19KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmbk1pZDJPdXQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJDQUxMXCIsIGZuTmFtZTpmbk1pZDJPdXQsIHBhcmFtczogW3t2YXI6MH0sIHt2YWw6IHBvaW50c0luQ2h1bmt9LCB7dmFyOiAwfV19KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJDQUxMXCIsIGZuTmFtZTpmbk1pZDJPdXQsIHBhcmFtczogW3t2YXI6MX0sIHt2YWw6IHBvaW50c0luQ2h1bmt9LCB7dmFyOiAxfV19KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkdFVFwiLCBvdXQ6IDAsIHZhcjogMCwgbGVuOiBwb2ludHNJbkNodW5rKnNPdXR9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkdFVFwiLCBvdXQ6IDEsIHZhcjogMSwgbGVuOiBwb2ludHNJbkNodW5rKnNPdXR9KTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkdFVFwiLCBvdXQ6IDAsIHZhcjogMCwgbGVuOiBwb2ludHNJbkNodW5rKnNNaWR9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkdFVFwiLCBvdXQ6IDEsIHZhcjogMSwgbGVuOiBwb2ludHNJbkNodW5rKnNNaWR9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBvcFByb21pc2VzLnB1c2godG0ucXVldWVBY3Rpb24odGFzaykudGhlbiggKHIpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5kZWJ1ZyhgJHtsb2dnZXJUeHR9OiBmZnQgJHtiaXRzfSBqb2luICAke2l9LyR7Yml0c30gICR7aisxfS8ke25Hcm91cHN9ICR7a30vJHtuQ2h1bmtzUGVyR3JvdXAvMn1gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByO1xuICAgICAgICAgICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCByZXMgPSBhd2FpdCBQcm9taXNlLmFsbChvcFByb21pc2VzKTtcbiAgICAgICAgICAgIGZvciAobGV0IGo9MDsgajxuR3JvdXBzOyBqKyspIHtcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBrPTA7IGsgPG5DaHVua3NQZXJHcm91cC8yOyBrKyspIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbzEgPSBqKm5DaHVua3NQZXJHcm91cCArIGs7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG8yID0gaipuQ2h1bmtzUGVyR3JvdXAgKyBrICsgbkNodW5rc1Blckdyb3VwLzI7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlc0NodW5rID0gcmVzLnNoaWZ0KCk7XG4gICAgICAgICAgICAgICAgICAgIGNodW5rc1tvMV0gPSByZXNDaHVua1swXTtcbiAgICAgICAgICAgICAgICAgICAgY2h1bmtzW28yXSA9IHJlc0NodW5rWzFdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChidWZmIGluc3RhbmNlb2YgQmlnQnVmZmVyKSB7XG4gICAgICAgICAgICBidWZmT3V0ID0gbmV3IEJpZ0J1ZmZlcihuUG9pbnRzKnNPdXQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgYnVmZk91dCA9IG5ldyBVaW50OEFycmF5KG5Qb2ludHMqc091dCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGludmVyc2UpIHtcbiAgICAgICAgICAgIGJ1ZmZPdXQuc2V0KGNodW5rc1swXS5zbGljZSgocG9pbnRzSW5DaHVuay0xKSpzT3V0KSk7XG4gICAgICAgICAgICBsZXQgcD0gc091dDtcbiAgICAgICAgICAgIGZvciAobGV0IGk9bkNodW5rcy0xOyBpPjA7IGktLSkge1xuICAgICAgICAgICAgICAgIGJ1ZmZPdXQuc2V0KGNodW5rc1tpXSwgcCk7XG4gICAgICAgICAgICAgICAgcCArPSBwb2ludHNJbkNodW5rKnNPdXQ7XG4gICAgICAgICAgICAgICAgZGVsZXRlIGNodW5rc1tpXTsgIC8vIExpYmVyYXRlIG1lbVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnVmZk91dC5zZXQoY2h1bmtzWzBdLnNsaWNlKDAsIChwb2ludHNJbkNodW5rLTEpKnNPdXQpLCBwKTtcbiAgICAgICAgICAgIGRlbGV0ZSBjaHVua3NbMF07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBmb3IgKGxldCBpPTA7IGk8bkNodW5rczsgaSsrKSB7XG4gICAgICAgICAgICAgICAgYnVmZk91dC5zZXQoY2h1bmtzW2ldLCBwb2ludHNJbkNodW5rKnNPdXQqaSk7XG4gICAgICAgICAgICAgICAgZGVsZXRlIGNodW5rc1tpXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChyZXR1cm5BcnJheSkge1xuICAgICAgICAgICAgcmV0dXJuIGJ1ZmZlcjJhcnJheShidWZmT3V0LCBzT3V0KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBidWZmT3V0O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgYXN5bmMgZnVuY3Rpb24gX2ZmdEV4dChidWZmLCBpblR5cGUsIG91dFR5cGUsIGxvZ2dlciwgbG9nZ2VyVHh0KSB7XG4gICAgICAgIGxldCBiMSwgYjI7XG4gICAgICAgIGIxID0gYnVmZi5zbGljZSggMCAsIGJ1ZmYuYnl0ZUxlbmd0aC8yKTtcbiAgICAgICAgYjIgPSBidWZmLnNsaWNlKCBidWZmLmJ5dGVMZW5ndGgvMiwgYnVmZi5ieXRlTGVuZ3RoKTtcblxuICAgICAgICBjb25zdCBwcm9taXNlcyA9IFtdO1xuXG4gICAgICAgIFtiMSwgYjJdID0gYXdhaXQgX2ZmdEpvaW5FeHQoYjEsIGIyLCBcImZmdEpvaW5FeHRcIiwgRnIub25lLCBGci5zaGlmdCwgaW5UeXBlLCBcImphY29iaWFuXCIsIGxvZ2dlciwgbG9nZ2VyVHh0KTtcblxuICAgICAgICBwcm9taXNlcy5wdXNoKCBfZmZ0KGIxLCBmYWxzZSwgXCJqYWNvYmlhblwiLCBvdXRUeXBlLCBsb2dnZXIsIGxvZ2dlclR4dCkpO1xuICAgICAgICBwcm9taXNlcy5wdXNoKCBfZmZ0KGIyLCBmYWxzZSwgXCJqYWNvYmlhblwiLCBvdXRUeXBlLCBsb2dnZXIsIGxvZ2dlclR4dCkpO1xuXG4gICAgICAgIGNvbnN0IHJlczEgPSBhd2FpdCBQcm9taXNlLmFsbChwcm9taXNlcyk7XG5cbiAgICAgICAgbGV0IGJ1ZmZPdXQ7XG4gICAgICAgIGlmIChyZXMxWzBdLmJ5dGVMZW5ndGggPiAoMTw8MjgpKSB7XG4gICAgICAgICAgICBidWZmT3V0ID0gbmV3IEJpZ0J1ZmZlcihyZXMxWzBdLmJ5dGVMZW5ndGgqMik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBidWZmT3V0ID0gbmV3IFVpbnQ4QXJyYXkocmVzMVswXS5ieXRlTGVuZ3RoKjIpO1xuICAgICAgICB9XG5cbiAgICAgICAgYnVmZk91dC5zZXQocmVzMVswXSk7XG4gICAgICAgIGJ1ZmZPdXQuc2V0KHJlczFbMV0sIHJlczFbMF0uYnl0ZUxlbmd0aCk7XG5cbiAgICAgICAgcmV0dXJuIGJ1ZmZPdXQ7XG4gICAgfVxuXG4gICAgYXN5bmMgZnVuY3Rpb24gX2ZmdEV4dEludihidWZmLCBpblR5cGUsIG91dFR5cGUsIGxvZ2dlciwgbG9nZ2VyVHh0KSB7XG4gICAgICAgIGxldCBiMSwgYjI7XG4gICAgICAgIGIxID0gYnVmZi5zbGljZSggMCAsIGJ1ZmYuYnl0ZUxlbmd0aC8yKTtcbiAgICAgICAgYjIgPSBidWZmLnNsaWNlKCBidWZmLmJ5dGVMZW5ndGgvMiwgYnVmZi5ieXRlTGVuZ3RoKTtcblxuICAgICAgICBjb25zdCBwcm9taXNlcyA9IFtdO1xuXG4gICAgICAgIHByb21pc2VzLnB1c2goIF9mZnQoYjEsIHRydWUsIGluVHlwZSwgXCJqYWNvYmlhblwiLCBsb2dnZXIsIGxvZ2dlclR4dCkpO1xuICAgICAgICBwcm9taXNlcy5wdXNoKCBfZmZ0KGIyLCB0cnVlLCBpblR5cGUsIFwiamFjb2JpYW5cIiwgbG9nZ2VyLCBsb2dnZXJUeHQpKTtcblxuICAgICAgICBbYjEsIGIyXSA9IGF3YWl0IFByb21pc2UuYWxsKHByb21pc2VzKTtcblxuICAgICAgICBjb25zdCByZXMxID0gYXdhaXQgX2ZmdEpvaW5FeHQoYjEsIGIyLCBcImZmdEpvaW5FeHRJbnZcIiwgRnIub25lLCBGci5zaGlmdEludiwgXCJqYWNvYmlhblwiLCBvdXRUeXBlLCBsb2dnZXIsIGxvZ2dlclR4dCk7XG5cbiAgICAgICAgbGV0IGJ1ZmZPdXQ7XG4gICAgICAgIGlmIChyZXMxWzBdLmJ5dGVMZW5ndGggPiAoMTw8MjgpKSB7XG4gICAgICAgICAgICBidWZmT3V0ID0gbmV3IEJpZ0J1ZmZlcihyZXMxWzBdLmJ5dGVMZW5ndGgqMik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBidWZmT3V0ID0gbmV3IFVpbnQ4QXJyYXkocmVzMVswXS5ieXRlTGVuZ3RoKjIpO1xuICAgICAgICB9XG5cbiAgICAgICAgYnVmZk91dC5zZXQocmVzMVswXSk7XG4gICAgICAgIGJ1ZmZPdXQuc2V0KHJlczFbMV0sIHJlczFbMF0uYnl0ZUxlbmd0aCk7XG5cbiAgICAgICAgcmV0dXJuIGJ1ZmZPdXQ7XG4gICAgfVxuXG5cbiAgICBhc3luYyBmdW5jdGlvbiBfZmZ0Sm9pbkV4dChidWZmMSwgYnVmZjIsIGZuLCBmaXJzdCwgaW5jLCBpblR5cGUsIG91dFR5cGUsIGxvZ2dlciwgbG9nZ2VyVHh0KSB7XG4gICAgICAgIGNvbnN0IE1BWF9DSFVOS19TSVpFID0gMTw8MTY7XG4gICAgICAgIGNvbnN0IE1JTl9DSFVOS19TSVpFID0gMTw8NDtcblxuICAgICAgICBsZXQgZm5OYW1lO1xuICAgICAgICBsZXQgZm5JbjJNaWQsIGZuTWlkMk91dDtcbiAgICAgICAgbGV0IHNPdXQsIHNJbiwgc01pZDtcblxuICAgICAgICBpZiAoZ3JvdXBOYW1lID09IFwiRzFcIikge1xuICAgICAgICAgICAgaWYgKGluVHlwZSA9PSBcImFmZmluZVwiKSB7XG4gICAgICAgICAgICAgICAgc0luID0gRy5GLm44KjI7XG4gICAgICAgICAgICAgICAgZm5JbjJNaWQgPSBcImcxbV9iYXRjaFRvSmFjb2JpYW5cIjtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgc0luID0gRy5GLm44KjM7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzTWlkID0gRy5GLm44KjM7XG4gICAgICAgICAgICBmbk5hbWUgPSBcImcxbV9cIitmbjtcbiAgICAgICAgICAgIGlmIChvdXRUeXBlID09IFwiYWZmaW5lXCIpIHtcbiAgICAgICAgICAgICAgICBmbk1pZDJPdXQgPSBcImcxbV9iYXRjaFRvQWZmaW5lXCI7XG4gICAgICAgICAgICAgICAgc091dCA9IEcuRi5uOCoyO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBzT3V0ID0gRy5GLm44KjM7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoZ3JvdXBOYW1lID09IFwiRzJcIikge1xuICAgICAgICAgICAgaWYgKGluVHlwZSA9PSBcImFmZmluZVwiKSB7XG4gICAgICAgICAgICAgICAgc0luID0gRy5GLm44KjI7XG4gICAgICAgICAgICAgICAgZm5JbjJNaWQgPSBcImcybV9iYXRjaFRvSmFjb2JpYW5cIjtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgc0luID0gRy5GLm44KjM7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmbk5hbWUgPSBcImcybV9cIitmbjtcbiAgICAgICAgICAgIHNNaWQgPSBHLkYubjgqMztcbiAgICAgICAgICAgIGlmIChvdXRUeXBlID09IFwiYWZmaW5lXCIpIHtcbiAgICAgICAgICAgICAgICBmbk1pZDJPdXQgPSBcImcybV9iYXRjaFRvQWZmaW5lXCI7XG4gICAgICAgICAgICAgICAgc091dCA9IEcuRi5uOCoyO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBzT3V0ID0gRy5GLm44KjM7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoZ3JvdXBOYW1lID09IFwiRnJcIikge1xuICAgICAgICAgICAgc0luID0gRnIubjg7XG4gICAgICAgICAgICBzT3V0ID0gRnIubjg7XG4gICAgICAgICAgICBzTWlkID0gRnIubjg7XG4gICAgICAgICAgICBmbk5hbWUgPSBcImZybV9cIiArIGZuO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBncm91cFwiKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChidWZmMS5ieXRlTGVuZ3RoICE9IGJ1ZmYyLmJ5dGVMZW5ndGgpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgYnVmZmVyIHNpemVcIik7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgblBvaW50cyA9IE1hdGguZmxvb3IoYnVmZjEuYnl0ZUxlbmd0aCAvIHNJbik7XG4gICAgICAgIGlmIChuUG9pbnRzICE9IDEgPDwgbG9nMihuUG9pbnRzKSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBudW1iZXIgb2YgcG9pbnRzXCIpO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGNodW5rU2l6ZSA9IE1hdGguZmxvb3IoblBvaW50cyAvdG0uY29uY3VycmVuY3kpO1xuICAgICAgICBpZiAoY2h1bmtTaXplIDwgTUlOX0NIVU5LX1NJWkUpIGNodW5rU2l6ZSA9IE1JTl9DSFVOS19TSVpFO1xuICAgICAgICBpZiAoY2h1bmtTaXplID4gTUFYX0NIVU5LX1NJWkUpIGNodW5rU2l6ZSA9IE1BWF9DSFVOS19TSVpFO1xuXG4gICAgICAgIGNvbnN0IG9wUHJvbWlzZXMgPSBbXTtcblxuICAgICAgICBmb3IgKGxldCBpPTA7IGk8blBvaW50czsgaSArPSBjaHVua1NpemUpIHtcbiAgICAgICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5kZWJ1ZyhgJHtsb2dnZXJUeHR9OiBmZnRKb2luRXh0IFN0YXJ0OiAke2l9LyR7blBvaW50c31gKTtcbiAgICAgICAgICAgIGNvbnN0IG49IE1hdGgubWluKG5Qb2ludHMgLSBpLCBjaHVua1NpemUpO1xuXG4gICAgICAgICAgICBjb25zdCBmaXJzdENodW5rID0gRnIubXVsKGZpcnN0LCBGci5leHAoIGluYywgaSkpO1xuICAgICAgICAgICAgY29uc3QgdGFzayA9IFtdO1xuXG4gICAgICAgICAgICBjb25zdCBiMSA9IGJ1ZmYxLnNsaWNlKGkqc0luLCAoaStuKSpzSW4pO1xuICAgICAgICAgICAgY29uc3QgYjIgPSBidWZmMi5zbGljZShpKnNJbiwgKGkrbikqc0luKTtcblxuICAgICAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiQUxMT0NcIiwgdmFyOiAwLCBsZW46IHNNaWQqbn0pO1xuICAgICAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiU0VUXCIsIHZhcjogMCwgYnVmZjogYjF9KTtcbiAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkFMTE9DXCIsIHZhcjogMSwgbGVuOiBzTWlkKm59KTtcbiAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIlNFVFwiLCB2YXI6IDEsIGJ1ZmY6IGIyfSk7XG4gICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJBTExPQ1NFVFwiLCB2YXI6IDIsIGJ1ZmY6IGZpcnN0Q2h1bmt9KTtcbiAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkFMTE9DU0VUXCIsIHZhcjogMywgYnVmZjogaW5jfSk7XG4gICAgICAgICAgICBpZiAoZm5JbjJNaWQpIHtcbiAgICAgICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJDQUxMXCIsIGZuTmFtZTpmbkluMk1pZCwgcGFyYW1zOiBbe3ZhcjowfSwge3ZhbDogbn0sIHt2YXI6IDB9XX0pO1xuICAgICAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkNBTExcIiwgZm5OYW1lOmZuSW4yTWlkLCBwYXJhbXM6IFt7dmFyOjF9LCB7dmFsOiBufSwge3ZhcjogMX1dfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJDQUxMXCIsIGZuTmFtZTogZm5OYW1lLCBwYXJhbXM6IFtcbiAgICAgICAgICAgICAgICB7dmFyOiAwfSxcbiAgICAgICAgICAgICAgICB7dmFyOiAxfSxcbiAgICAgICAgICAgICAgICB7dmFsOiBufSxcbiAgICAgICAgICAgICAgICB7dmFyOiAyfSxcbiAgICAgICAgICAgICAgICB7dmFyOiAzfSxcbiAgICAgICAgICAgICAgICB7dmFsOiBGci5zfSxcbiAgICAgICAgICAgIF19KTtcbiAgICAgICAgICAgIGlmIChmbk1pZDJPdXQpIHtcbiAgICAgICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJDQUxMXCIsIGZuTmFtZTpmbk1pZDJPdXQsIHBhcmFtczogW3t2YXI6MH0sIHt2YWw6IG59LCB7dmFyOiAwfV19KTtcbiAgICAgICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJDQUxMXCIsIGZuTmFtZTpmbk1pZDJPdXQsIHBhcmFtczogW3t2YXI6MX0sIHt2YWw6IG59LCB7dmFyOiAxfV19KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkdFVFwiLCBvdXQ6IDAsIHZhcjogMCwgbGVuOiBuKnNPdXR9KTtcbiAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkdFVFwiLCBvdXQ6IDEsIHZhcjogMSwgbGVuOiBuKnNPdXR9KTtcbiAgICAgICAgICAgIG9wUHJvbWlzZXMucHVzaChcbiAgICAgICAgICAgICAgICB0bS5xdWV1ZUFjdGlvbih0YXNrKS50aGVuKCAocikgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZGVidWcoYCR7bG9nZ2VyVHh0fTogZmZ0Sm9pbkV4dCBFbmQ6ICR7aX0vJHtuUG9pbnRzfWApO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcjtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IFByb21pc2UuYWxsKG9wUHJvbWlzZXMpO1xuXG4gICAgICAgIGxldCBmdWxsQnVmZk91dDE7XG4gICAgICAgIGxldCBmdWxsQnVmZk91dDI7XG4gICAgICAgIGlmIChuUG9pbnRzICogc091dCA+IDE8PDI4KSB7XG4gICAgICAgICAgICBmdWxsQnVmZk91dDEgPSBuZXcgQmlnQnVmZmVyKG5Qb2ludHMqc091dCk7XG4gICAgICAgICAgICBmdWxsQnVmZk91dDIgPSBuZXcgQmlnQnVmZmVyKG5Qb2ludHMqc091dCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBmdWxsQnVmZk91dDEgPSBuZXcgVWludDhBcnJheShuUG9pbnRzKnNPdXQpO1xuICAgICAgICAgICAgZnVsbEJ1ZmZPdXQyID0gbmV3IFVpbnQ4QXJyYXkoblBvaW50cypzT3V0KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBwID0wO1xuICAgICAgICBmb3IgKGxldCBpPTA7IGk8cmVzdWx0Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBmdWxsQnVmZk91dDEuc2V0KHJlc3VsdFtpXVswXSwgcCk7XG4gICAgICAgICAgICBmdWxsQnVmZk91dDIuc2V0KHJlc3VsdFtpXVsxXSwgcCk7XG4gICAgICAgICAgICBwKz1yZXN1bHRbaV1bMF0uYnl0ZUxlbmd0aDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBbZnVsbEJ1ZmZPdXQxLCBmdWxsQnVmZk91dDJdO1xuICAgIH1cblxuXG4gICAgRy5mZnQgPSBhc3luYyBmdW5jdGlvbihidWZmLCBpblR5cGUsIG91dFR5cGUsIGxvZ2dlciwgbG9nZ2VyVHh0KSB7XG4gICAgICAgIHJldHVybiBhd2FpdCBfZmZ0KGJ1ZmYsIGZhbHNlLCBpblR5cGUsIG91dFR5cGUsIGxvZ2dlciwgbG9nZ2VyVHh0KTtcbiAgICB9O1xuXG4gICAgRy5pZmZ0ID0gYXN5bmMgZnVuY3Rpb24oYnVmZiwgaW5UeXBlLCBvdXRUeXBlLCBsb2dnZXIsIGxvZ2dlclR4dCkge1xuICAgICAgICByZXR1cm4gYXdhaXQgX2ZmdChidWZmLCB0cnVlLCBpblR5cGUsIG91dFR5cGUsIGxvZ2dlciwgbG9nZ2VyVHh0KTtcbiAgICB9O1xuXG4gICAgRy5sYWdyYW5nZUV2YWx1YXRpb25zID0gYXN5bmMgZnVuY3Rpb24gKGJ1ZmYsIGluVHlwZSwgb3V0VHlwZSwgbG9nZ2VyLCBsb2dnZXJUeHQpIHtcbiAgICAgICAgaW5UeXBlID0gaW5UeXBlIHx8IFwiYWZmaW5lXCI7XG4gICAgICAgIG91dFR5cGUgPSBvdXRUeXBlIHx8IFwiYWZmaW5lXCI7XG5cbiAgICAgICAgbGV0IHNJbjtcbiAgICAgICAgaWYgKGdyb3VwTmFtZSA9PSBcIkcxXCIpIHtcbiAgICAgICAgICAgIGlmIChpblR5cGUgPT0gXCJhZmZpbmVcIikge1xuICAgICAgICAgICAgICAgIHNJbiA9IEcuRi5uOCoyO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBzSW4gPSBHLkYubjgqMztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChncm91cE5hbWUgPT0gXCJHMlwiKSB7XG4gICAgICAgICAgICBpZiAoaW5UeXBlID09IFwiYWZmaW5lXCIpIHtcbiAgICAgICAgICAgICAgICBzSW4gPSBHLkYubjgqMjtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgc0luID0gRy5GLm44KjM7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoZ3JvdXBOYW1lID09IFwiRnJcIikge1xuICAgICAgICAgICAgc0luID0gRnIubjg7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIGdyb3VwXCIpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgblBvaW50cyA9IGJ1ZmYuYnl0ZUxlbmd0aCAvc0luO1xuICAgICAgICBjb25zdCBiaXRzID0gbG9nMihuUG9pbnRzKTtcblxuICAgICAgICBpZiAoKDIgKiogYml0cykqc0luICE9IGJ1ZmYuYnl0ZUxlbmd0aCkge1xuICAgICAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmVycm9yKFwibGFncmFuZ2VFdmFsdWF0aW9ucyBpaW52YWxpZCBpbnB1dCBzaXplXCIpO1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwibGFncmFuZ2VFdmFsdWF0aW9ucyBpbnZhbGlkIElucHV0IHNpemVcIik7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoYml0cyA8PSBGci5zKSB7XG4gICAgICAgICAgICByZXR1cm4gYXdhaXQgRy5pZmZ0KGJ1ZmYsIGluVHlwZSwgb3V0VHlwZSwgbG9nZ2VyLCBsb2dnZXJUeHQpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGJpdHMgPiBGci5zKzEpIHtcbiAgICAgICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5lcnJvcihcImxhZ3JhbmdlRXZhbHVhdGlvbnMgaW5wdXQgdG9vIGJpZ1wiKTtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcImxhZ3JhbmdlRXZhbHVhdGlvbnMgaW5wdXQgdG9vIGJpZ1wiKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCB0MCA9IGJ1ZmYuc2xpY2UoMCwgYnVmZi5ieXRlTGVuZ3RoLzIpO1xuICAgICAgICBsZXQgdDEgPSBidWZmLnNsaWNlKGJ1ZmYuYnl0ZUxlbmd0aC8yLCBidWZmLmJ5dGVMZW5ndGgpO1xuXG5cbiAgICAgICAgY29uc3Qgc2hpZnRUb1NtYWxsTSA9IEZyLmV4cChGci5zaGlmdCwgblBvaW50cy8yKTtcbiAgICAgICAgY29uc3Qgc0NvbnN0ID0gRnIuaW52KCBGci5zdWIoRnIub25lLCBzaGlmdFRvU21hbGxNKSk7XG5cbiAgICAgICAgW3QwLCB0MV0gPSBhd2FpdCBfZmZ0Sm9pbkV4dCh0MCwgdDEsIFwicHJlcGFyZUxhZ3JhbmdlRXZhbHVhdGlvblwiLCBzQ29uc3QsIEZyLnNoaWZ0SW52LCBpblR5cGUsIFwiamFjb2JpYW5cIiwgbG9nZ2VyLCBsb2dnZXJUeHQgKyBcIiBwcmVwXCIpO1xuXG4gICAgICAgIGNvbnN0IHByb21pc2VzID0gW107XG5cbiAgICAgICAgcHJvbWlzZXMucHVzaCggX2ZmdCh0MCwgdHJ1ZSwgXCJqYWNvYmlhblwiLCBvdXRUeXBlLCBsb2dnZXIsIGxvZ2dlclR4dCArIFwiIHQwXCIpKTtcbiAgICAgICAgcHJvbWlzZXMucHVzaCggX2ZmdCh0MSwgdHJ1ZSwgXCJqYWNvYmlhblwiLCBvdXRUeXBlLCBsb2dnZXIsIGxvZ2dlclR4dCArIFwiIHQxXCIpKTtcblxuICAgICAgICBbdDAsIHQxXSA9IGF3YWl0IFByb21pc2UuYWxsKHByb21pc2VzKTtcblxuICAgICAgICBsZXQgYnVmZk91dDtcbiAgICAgICAgaWYgKHQwLmJ5dGVMZW5ndGggPiAoMTw8MjgpKSB7XG4gICAgICAgICAgICBidWZmT3V0ID0gbmV3IEJpZ0J1ZmZlcih0MC5ieXRlTGVuZ3RoKjIpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgYnVmZk91dCA9IG5ldyBVaW50OEFycmF5KHQwLmJ5dGVMZW5ndGgqMik7XG4gICAgICAgIH1cblxuICAgICAgICBidWZmT3V0LnNldCh0MCk7XG4gICAgICAgIGJ1ZmZPdXQuc2V0KHQxLCB0MC5ieXRlTGVuZ3RoKTtcblxuICAgICAgICByZXR1cm4gYnVmZk91dDtcbiAgICB9O1xuXG4gICAgRy5mZnRNaXggPSBhc3luYyBmdW5jdGlvbiBmZnRNaXgoYnVmZikge1xuICAgICAgICBjb25zdCBzRyA9IEcuRi5uOCozO1xuICAgICAgICBsZXQgZm5OYW1lLCBmbkZGVEpvaW47XG4gICAgICAgIGlmIChncm91cE5hbWUgPT0gXCJHMVwiKSB7XG4gICAgICAgICAgICBmbk5hbWUgPSBcImcxbV9mZnRNaXhcIjtcbiAgICAgICAgICAgIGZuRkZUSm9pbiA9IFwiZzFtX2ZmdEpvaW5cIjtcbiAgICAgICAgfSBlbHNlIGlmIChncm91cE5hbWUgPT0gXCJHMlwiKSB7XG4gICAgICAgICAgICBmbk5hbWUgPSBcImcybV9mZnRNaXhcIjtcbiAgICAgICAgICAgIGZuRkZUSm9pbiA9IFwiZzJtX2ZmdEpvaW5cIjtcbiAgICAgICAgfSBlbHNlIGlmIChncm91cE5hbWUgPT0gXCJGclwiKSB7XG4gICAgICAgICAgICBmbk5hbWUgPSBcImZybV9mZnRNaXhcIjtcbiAgICAgICAgICAgIGZuRkZUSm9pbiA9IFwiZnJtX2ZmdEpvaW5cIjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgZ3JvdXBcIik7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBuUG9pbnRzID0gTWF0aC5mbG9vcihidWZmLmJ5dGVMZW5ndGggLyBzRyk7XG4gICAgICAgIGNvbnN0IHBvd2VyID0gbG9nMihuUG9pbnRzKTtcblxuICAgICAgICBsZXQgbkNodW5rcyA9IDEgPDwgbG9nMih0bS5jb25jdXJyZW5jeSk7XG5cbiAgICAgICAgaWYgKG5Qb2ludHMgPD0gbkNodW5rcyoyKSBuQ2h1bmtzID0gMTtcblxuICAgICAgICBjb25zdCBwb2ludHNQZXJDaHVuayA9IG5Qb2ludHMgLyBuQ2h1bmtzO1xuXG4gICAgICAgIGNvbnN0IHBvd2VyQ2h1bmsgPSBsb2cyKHBvaW50c1BlckNodW5rKTtcblxuICAgICAgICBjb25zdCBvcFByb21pc2VzID0gW107XG4gICAgICAgIGZvciAobGV0IGk9MDsgaTxuQ2h1bmtzOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IHRhc2sgPSBbXTtcbiAgICAgICAgICAgIGNvbnN0IGIgPSBidWZmLnNsaWNlKChpKiBwb2ludHNQZXJDaHVuaykqc0csICgoaSsxKSogcG9pbnRzUGVyQ2h1bmspKnNHKTtcbiAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkFMTE9DU0VUXCIsIHZhcjogMCwgYnVmZjogYn0pO1xuICAgICAgICAgICAgZm9yIChsZXQgaj0xOyBqPD1wb3dlckNodW5rOyBqKyspIHtcbiAgICAgICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJDQUxMXCIsIGZuTmFtZTogZm5OYW1lLCBwYXJhbXM6IFtcbiAgICAgICAgICAgICAgICAgICAge3ZhcjogMH0sXG4gICAgICAgICAgICAgICAgICAgIHt2YWw6IHBvaW50c1BlckNodW5rfSxcbiAgICAgICAgICAgICAgICAgICAge3ZhbDogan1cbiAgICAgICAgICAgICAgICBdfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJHRVRcIiwgb3V0OiAwLCB2YXI6IDAsIGxlbjogcG9pbnRzUGVyQ2h1bmsqc0d9KTtcbiAgICAgICAgICAgIG9wUHJvbWlzZXMucHVzaChcbiAgICAgICAgICAgICAgICB0bS5xdWV1ZUFjdGlvbih0YXNrKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IFByb21pc2UuYWxsKG9wUHJvbWlzZXMpO1xuXG4gICAgICAgIGNvbnN0IGNodW5rcyA9IFtdO1xuICAgICAgICBmb3IgKGxldCBpPTA7IGk8cmVzdWx0Lmxlbmd0aDsgaSsrKSBjaHVua3NbaV0gPSByZXN1bHRbaV1bMF07XG5cblxuICAgICAgICBmb3IgKGxldCBpID0gcG93ZXJDaHVuaysxOyBpPD1wb3dlcjsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCBuR3JvdXBzID0gMSA8PCAocG93ZXIgLSBpKTtcbiAgICAgICAgICAgIGNvbnN0IG5DaHVua3NQZXJHcm91cCA9IG5DaHVua3MgLyBuR3JvdXBzO1xuICAgICAgICAgICAgY29uc3Qgb3BQcm9taXNlcyA9IFtdO1xuICAgICAgICAgICAgZm9yIChsZXQgaj0wOyBqPG5Hcm91cHM7IGorKykge1xuICAgICAgICAgICAgICAgIGZvciAobGV0IGs9MDsgayA8bkNodW5rc1Blckdyb3VwLzI7IGsrKykge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBmaXJzdCA9IEZyLmV4cCggRnIud1tpXSwgaypwb2ludHNQZXJDaHVuayk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGluYyA9IEZyLndbaV07XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG8xID0gaipuQ2h1bmtzUGVyR3JvdXAgKyBrO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBvMiA9IGoqbkNodW5rc1Blckdyb3VwICsgayArIG5DaHVua3NQZXJHcm91cC8yO1xuXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHRhc2sgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiQUxMT0NTRVRcIiwgdmFyOiAwLCBidWZmOiBjaHVua3NbbzFdfSk7XG4gICAgICAgICAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkFMTE9DU0VUXCIsIHZhcjogMSwgYnVmZjogY2h1bmtzW28yXX0pO1xuICAgICAgICAgICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJBTExPQ1NFVFwiLCB2YXI6IDIsIGJ1ZmY6IGZpcnN0fSk7XG4gICAgICAgICAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkFMTE9DU0VUXCIsIHZhcjogMywgYnVmZjogaW5jfSk7XG4gICAgICAgICAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkNBTExcIiwgZm5OYW1lOiBmbkZGVEpvaW4sICBwYXJhbXM6W1xuICAgICAgICAgICAgICAgICAgICAgICAge3ZhcjogMH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7dmFyOiAxfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHt2YWw6IHBvaW50c1BlckNodW5rfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHt2YXI6IDJ9LFxuICAgICAgICAgICAgICAgICAgICAgICAge3ZhcjogM31cbiAgICAgICAgICAgICAgICAgICAgXX0pO1xuICAgICAgICAgICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJHRVRcIiwgb3V0OiAwLCB2YXI6IDAsIGxlbjogcG9pbnRzUGVyQ2h1bmsqc0d9KTtcbiAgICAgICAgICAgICAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiR0VUXCIsIG91dDogMSwgdmFyOiAxLCBsZW46IHBvaW50c1BlckNodW5rKnNHfSk7XG4gICAgICAgICAgICAgICAgICAgIG9wUHJvbWlzZXMucHVzaCh0bS5xdWV1ZUFjdGlvbih0YXNrKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCByZXMgPSBhd2FpdCBQcm9taXNlLmFsbChvcFByb21pc2VzKTtcbiAgICAgICAgICAgIGZvciAobGV0IGo9MDsgajxuR3JvdXBzOyBqKyspIHtcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBrPTA7IGsgPG5DaHVua3NQZXJHcm91cC8yOyBrKyspIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbzEgPSBqKm5DaHVua3NQZXJHcm91cCArIGs7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG8yID0gaipuQ2h1bmtzUGVyR3JvdXAgKyBrICsgbkNodW5rc1Blckdyb3VwLzI7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlc0NodW5rID0gcmVzLnNoaWZ0KCk7XG4gICAgICAgICAgICAgICAgICAgIGNodW5rc1tvMV0gPSByZXNDaHVua1swXTtcbiAgICAgICAgICAgICAgICAgICAgY2h1bmtzW28yXSA9IHJlc0NodW5rWzFdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBmdWxsQnVmZk91dDtcbiAgICAgICAgaWYgKGJ1ZmYgaW5zdGFuY2VvZiBCaWdCdWZmZXIpIHtcbiAgICAgICAgICAgIGZ1bGxCdWZmT3V0ID0gbmV3IEJpZ0J1ZmZlcihuUG9pbnRzKnNHKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGZ1bGxCdWZmT3V0ID0gbmV3IFVpbnQ4QXJyYXkoblBvaW50cypzRyk7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IHAgPTA7XG4gICAgICAgIGZvciAobGV0IGk9MDsgaTxuQ2h1bmtzOyBpKyspIHtcbiAgICAgICAgICAgIGZ1bGxCdWZmT3V0LnNldChjaHVua3NbaV0sIHApO1xuICAgICAgICAgICAgcCs9Y2h1bmtzW2ldLmJ5dGVMZW5ndGg7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZnVsbEJ1ZmZPdXQ7XG4gICAgfTtcblxuICAgIEcuZmZ0Sm9pbiA9IGFzeW5jIGZ1bmN0aW9uIGZmdEpvaW4oYnVmZjEsIGJ1ZmYyLCBmaXJzdCwgaW5jKSB7XG4gICAgICAgIGNvbnN0IHNHID0gRy5GLm44KjM7XG4gICAgICAgIGxldCBmbk5hbWU7XG4gICAgICAgIGlmIChncm91cE5hbWUgPT0gXCJHMVwiKSB7XG4gICAgICAgICAgICBmbk5hbWUgPSBcImcxbV9mZnRKb2luXCI7XG4gICAgICAgIH0gZWxzZSBpZiAoZ3JvdXBOYW1lID09IFwiRzJcIikge1xuICAgICAgICAgICAgZm5OYW1lID0gXCJnMm1fZmZ0Sm9pblwiO1xuICAgICAgICB9IGVsc2UgaWYgKGdyb3VwTmFtZSA9PSBcIkZyXCIpIHtcbiAgICAgICAgICAgIGZuTmFtZSA9IFwiZnJtX2ZmdEpvaW5cIjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgZ3JvdXBcIik7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoYnVmZjEuYnl0ZUxlbmd0aCAhPSBidWZmMi5ieXRlTGVuZ3RoKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIGJ1ZmZlciBzaXplXCIpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG5Qb2ludHMgPSBNYXRoLmZsb29yKGJ1ZmYxLmJ5dGVMZW5ndGggLyBzRyk7XG4gICAgICAgIGlmIChuUG9pbnRzICE9IDEgPDwgbG9nMihuUG9pbnRzKSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBudW1iZXIgb2YgcG9pbnRzXCIpO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IG5DaHVua3MgPSAxIDw8IGxvZzIodG0uY29uY3VycmVuY3kpO1xuICAgICAgICBpZiAoblBvaW50cyA8PSBuQ2h1bmtzKjIpIG5DaHVua3MgPSAxO1xuXG4gICAgICAgIGNvbnN0IHBvaW50c1BlckNodW5rID0gblBvaW50cyAvIG5DaHVua3M7XG5cblxuICAgICAgICBjb25zdCBvcFByb21pc2VzID0gW107XG4gICAgICAgIGZvciAobGV0IGk9MDsgaTxuQ2h1bmtzOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IHRhc2sgPSBbXTtcblxuICAgICAgICAgICAgY29uc3QgZmlyc3RDaHVuayA9IEZyLm11bChmaXJzdCwgRnIuZXhwKGluYywgaSpwb2ludHNQZXJDaHVuaykpO1xuICAgICAgICAgICAgY29uc3QgYjEgPSBidWZmMS5zbGljZSgoaSogcG9pbnRzUGVyQ2h1bmspKnNHLCAoKGkrMSkqIHBvaW50c1BlckNodW5rKSpzRyk7XG4gICAgICAgICAgICBjb25zdCBiMiA9IGJ1ZmYyLnNsaWNlKChpKiBwb2ludHNQZXJDaHVuaykqc0csICgoaSsxKSogcG9pbnRzUGVyQ2h1bmspKnNHKTtcbiAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkFMTE9DU0VUXCIsIHZhcjogMCwgYnVmZjogYjF9KTtcbiAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkFMTE9DU0VUXCIsIHZhcjogMSwgYnVmZjogYjJ9KTtcbiAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkFMTE9DU0VUXCIsIHZhcjogMiwgYnVmZjogZmlyc3RDaHVua30pO1xuICAgICAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiQUxMT0NTRVRcIiwgdmFyOiAzLCBidWZmOiBpbmN9KTtcbiAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkNBTExcIiwgZm5OYW1lOiBmbk5hbWUsIHBhcmFtczogW1xuICAgICAgICAgICAgICAgIHt2YXI6IDB9LFxuICAgICAgICAgICAgICAgIHt2YXI6IDF9LFxuICAgICAgICAgICAgICAgIHt2YWw6IHBvaW50c1BlckNodW5rfSxcbiAgICAgICAgICAgICAgICB7dmFyOiAyfSxcbiAgICAgICAgICAgICAgICB7dmFyOiAzfVxuICAgICAgICAgICAgXX0pO1xuICAgICAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiR0VUXCIsIG91dDogMCwgdmFyOiAwLCBsZW46IHBvaW50c1BlckNodW5rKnNHfSk7XG4gICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJHRVRcIiwgb3V0OiAxLCB2YXI6IDEsIGxlbjogcG9pbnRzUGVyQ2h1bmsqc0d9KTtcbiAgICAgICAgICAgIG9wUHJvbWlzZXMucHVzaChcbiAgICAgICAgICAgICAgICB0bS5xdWV1ZUFjdGlvbih0YXNrKVxuICAgICAgICAgICAgKTtcblxuICAgICAgICB9XG5cblxuICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBQcm9taXNlLmFsbChvcFByb21pc2VzKTtcblxuICAgICAgICBsZXQgZnVsbEJ1ZmZPdXQxO1xuICAgICAgICBsZXQgZnVsbEJ1ZmZPdXQyO1xuICAgICAgICBpZiAoYnVmZjEgaW5zdGFuY2VvZiBCaWdCdWZmZXIpIHtcbiAgICAgICAgICAgIGZ1bGxCdWZmT3V0MSA9IG5ldyBCaWdCdWZmZXIoblBvaW50cypzRyk7XG4gICAgICAgICAgICBmdWxsQnVmZk91dDIgPSBuZXcgQmlnQnVmZmVyKG5Qb2ludHMqc0cpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZnVsbEJ1ZmZPdXQxID0gbmV3IFVpbnQ4QXJyYXkoblBvaW50cypzRyk7XG4gICAgICAgICAgICBmdWxsQnVmZk91dDIgPSBuZXcgVWludDhBcnJheShuUG9pbnRzKnNHKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBwID0wO1xuICAgICAgICBmb3IgKGxldCBpPTA7IGk8cmVzdWx0Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBmdWxsQnVmZk91dDEuc2V0KHJlc3VsdFtpXVswXSwgcCk7XG4gICAgICAgICAgICBmdWxsQnVmZk91dDIuc2V0KHJlc3VsdFtpXVsxXSwgcCk7XG4gICAgICAgICAgICBwKz1yZXN1bHRbaV1bMF0uYnl0ZUxlbmd0aDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBbZnVsbEJ1ZmZPdXQxLCBmdWxsQnVmZk91dDJdO1xuICAgIH07XG5cblxuXG4gICAgRy5mZnRGaW5hbCA9ICBhc3luYyBmdW5jdGlvbiBmZnRGaW5hbChidWZmLCBmYWN0b3IpIHtcbiAgICAgICAgY29uc3Qgc0cgPSBHLkYubjgqMztcbiAgICAgICAgY29uc3Qgc0dvdXQgPSBHLkYubjgqMjtcbiAgICAgICAgbGV0IGZuTmFtZSwgZm5Ub0FmZmluZTtcbiAgICAgICAgaWYgKGdyb3VwTmFtZSA9PSBcIkcxXCIpIHtcbiAgICAgICAgICAgIGZuTmFtZSA9IFwiZzFtX2ZmdEZpbmFsXCI7XG4gICAgICAgICAgICBmblRvQWZmaW5lID0gXCJnMW1fYmF0Y2hUb0FmZmluZVwiO1xuICAgICAgICB9IGVsc2UgaWYgKGdyb3VwTmFtZSA9PSBcIkcyXCIpIHtcbiAgICAgICAgICAgIGZuTmFtZSA9IFwiZzJtX2ZmdEZpbmFsXCI7XG4gICAgICAgICAgICBmblRvQWZmaW5lID0gXCJnMm1fYmF0Y2hUb0FmZmluZVwiO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBncm91cFwiKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IG5Qb2ludHMgPSBNYXRoLmZsb29yKGJ1ZmYuYnl0ZUxlbmd0aCAvIHNHKTtcbiAgICAgICAgaWYgKG5Qb2ludHMgIT0gMSA8PCBsb2cyKG5Qb2ludHMpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIG51bWJlciBvZiBwb2ludHNcIik7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBwb2ludHNQZXJDaHVuayA9IE1hdGguZmxvb3IoblBvaW50cyAvIHRtLmNvbmN1cnJlbmN5KTtcblxuICAgICAgICBjb25zdCBvcFByb21pc2VzID0gW107XG4gICAgICAgIGZvciAobGV0IGk9MDsgaTx0bS5jb25jdXJyZW5jeTsgaSsrKSB7XG4gICAgICAgICAgICBsZXQgbjtcbiAgICAgICAgICAgIGlmIChpPCB0bS5jb25jdXJyZW5jeS0xKSB7XG4gICAgICAgICAgICAgICAgbiA9IHBvaW50c1BlckNodW5rO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBuID0gblBvaW50cyAtIGkqcG9pbnRzUGVyQ2h1bms7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobj09MCkgY29udGludWU7XG4gICAgICAgICAgICBjb25zdCB0YXNrID0gW107XG4gICAgICAgICAgICBjb25zdCBiID0gYnVmZi5zbGljZSgoaSogcG9pbnRzUGVyQ2h1bmspKnNHLCAoaSpwb2ludHNQZXJDaHVuaytuKSpzRyk7XG4gICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJBTExPQ1NFVFwiLCB2YXI6IDAsIGJ1ZmY6IGJ9KTtcbiAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkFMTE9DU0VUXCIsIHZhcjogMSwgYnVmZjogZmFjdG9yfSk7XG4gICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJDQUxMXCIsIGZuTmFtZTogZm5OYW1lLCBwYXJhbXM6IFtcbiAgICAgICAgICAgICAgICB7dmFyOiAwfSxcbiAgICAgICAgICAgICAgICB7dmFsOiBufSxcbiAgICAgICAgICAgICAgICB7dmFyOiAxfSxcbiAgICAgICAgICAgIF19KTtcbiAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkNBTExcIiwgZm5OYW1lOiBmblRvQWZmaW5lLCBwYXJhbXM6IFtcbiAgICAgICAgICAgICAgICB7dmFyOiAwfSxcbiAgICAgICAgICAgICAgICB7dmFsOiBufSxcbiAgICAgICAgICAgICAgICB7dmFyOiAwfSxcbiAgICAgICAgICAgIF19KTtcbiAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkdFVFwiLCBvdXQ6IDAsIHZhcjogMCwgbGVuOiBuKnNHb3V0fSk7XG4gICAgICAgICAgICBvcFByb21pc2VzLnB1c2goXG4gICAgICAgICAgICAgICAgdG0ucXVldWVBY3Rpb24odGFzaylcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IFByb21pc2UuYWxsKG9wUHJvbWlzZXMpO1xuXG4gICAgICAgIGxldCBmdWxsQnVmZk91dDtcbiAgICAgICAgaWYgKGJ1ZmYgaW5zdGFuY2VvZiBCaWdCdWZmZXIpIHtcbiAgICAgICAgICAgIGZ1bGxCdWZmT3V0ID0gbmV3IEJpZ0J1ZmZlcihuUG9pbnRzKnNHb3V0KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGZ1bGxCdWZmT3V0ID0gbmV3IFVpbnQ4QXJyYXkoblBvaW50cypzR291dCk7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgcCA9MDtcbiAgICAgICAgZm9yIChsZXQgaT1yZXN1bHQubGVuZ3RoLTE7IGk+PTA7IGktLSkge1xuICAgICAgICAgICAgZnVsbEJ1ZmZPdXQuc2V0KHJlc3VsdFtpXVswXSwgcCk7XG4gICAgICAgICAgICBwKz1yZXN1bHRbaV1bMF0uYnl0ZUxlbmd0aDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBmdWxsQnVmZk91dDtcbiAgICB9O1xufVxuXG5hc3luYyBmdW5jdGlvbiBidWlsZEVuZ2luZShwYXJhbXMpIHtcblxuICAgIGNvbnN0IHRtID0gYXdhaXQgYnVpbGRUaHJlYWRNYW5hZ2VyKHBhcmFtcy53YXNtLCBwYXJhbXMuc2luZ2xlVGhyZWFkKTtcblxuXG4gICAgY29uc3QgY3VydmUgPSB7fTtcblxuICAgIGN1cnZlLnEgPSBlKHBhcmFtcy53YXNtLnEudG9TdHJpbmcoKSk7XG4gICAgY3VydmUuciA9IGUocGFyYW1zLndhc20uci50b1N0cmluZygpKTtcbiAgICBjdXJ2ZS5uYW1lID0gcGFyYW1zLm5hbWU7XG4gICAgY3VydmUudG0gPSB0bTtcbiAgICBjdXJ2ZS5wcmVQU2l6ZSA9IHBhcmFtcy53YXNtLnByZVBTaXplO1xuICAgIGN1cnZlLnByZVFTaXplID0gcGFyYW1zLndhc20ucHJlUVNpemU7XG4gICAgY3VydmUuRnIgPSBuZXcgV2FzbUZpZWxkMSh0bSwgXCJmcm1cIiwgcGFyYW1zLm44ciwgcGFyYW1zLnIpO1xuICAgIGN1cnZlLkYxID0gbmV3IFdhc21GaWVsZDEodG0sIFwiZjFtXCIsIHBhcmFtcy5uOHEsIHBhcmFtcy5xKTtcbiAgICBjdXJ2ZS5GMiA9IG5ldyBXYXNtRmllbGQyKHRtLCBcImYybVwiLCBjdXJ2ZS5GMSk7XG4gICAgY3VydmUuRzEgPSBuZXcgV2FzbUN1cnZlKHRtLCBcImcxbVwiLCBjdXJ2ZS5GMSwgcGFyYW1zLndhc20ucEcxZ2VuLCBwYXJhbXMud2FzbS5wRzFiLCBwYXJhbXMuY29mYWN0b3JHMSk7XG4gICAgY3VydmUuRzIgPSBuZXcgV2FzbUN1cnZlKHRtLCBcImcybVwiLCBjdXJ2ZS5GMiwgcGFyYW1zLndhc20ucEcyZ2VuLCBwYXJhbXMud2FzbS5wRzJiLCBwYXJhbXMuY29mYWN0b3JHMik7XG4gICAgY3VydmUuRjYgPSBuZXcgV2FzbUZpZWxkMyh0bSwgXCJmNm1cIiwgY3VydmUuRjIpO1xuICAgIGN1cnZlLkYxMiA9IG5ldyBXYXNtRmllbGQyKHRtLCBcImZ0bVwiLCBjdXJ2ZS5GNik7XG5cbiAgICBjdXJ2ZS5HdCA9IGN1cnZlLkYxMjtcblxuICAgIGJ1aWxkQmF0Y2hBcHBseUtleShjdXJ2ZSwgXCJHMVwiKTtcbiAgICBidWlsZEJhdGNoQXBwbHlLZXkoY3VydmUsIFwiRzJcIik7XG4gICAgYnVpbGRCYXRjaEFwcGx5S2V5KGN1cnZlLCBcIkZyXCIpO1xuXG4gICAgYnVpbGRNdWx0aWV4cChjdXJ2ZSwgXCJHMVwiKTtcbiAgICBidWlsZE11bHRpZXhwKGN1cnZlLCBcIkcyXCIpO1xuXG4gICAgYnVpbGRGRlQoY3VydmUsIFwiRzFcIik7XG4gICAgYnVpbGRGRlQoY3VydmUsIFwiRzJcIik7XG4gICAgYnVpbGRGRlQoY3VydmUsIFwiRnJcIik7XG5cbiAgICBidWlsZFBhaXJpbmcoY3VydmUpO1xuXG4gICAgY3VydmUuYXJyYXkyYnVmZmVyID0gZnVuY3Rpb24oYXJyLCBzRykge1xuICAgICAgICBjb25zdCBidWZmID0gbmV3IFVpbnQ4QXJyYXkoc0cqYXJyLmxlbmd0aCk7XG5cbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPGFyci5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgYnVmZi5zZXQoYXJyW2ldLCBpKnNHKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBidWZmO1xuICAgIH07XG5cbiAgICBjdXJ2ZS5idWZmZXIyYXJyYXkgPSBmdW5jdGlvbihidWZmICwgc0cpIHtcbiAgICAgICAgY29uc3Qgbj0gYnVmZi5ieXRlTGVuZ3RoIC8gc0c7XG4gICAgICAgIGNvbnN0IGFyciA9IG5ldyBBcnJheShuKTtcbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPG47IGkrKykge1xuICAgICAgICAgICAgYXJyW2ldID0gYnVmZi5zbGljZShpKnNHLCBpKnNHK3NHKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYXJyO1xuICAgIH07XG5cbiAgICByZXR1cm4gY3VydmU7XG59XG5cbi8qXG4gICAgQ29weXJpZ2h0IDIwMTkgMEtJTVMgYXNzb2NpYXRpb24uXG5cbiAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB3YXNtYnVpbGRlclxuXG4gICAgd2FzbWJ1aWxkZXIgaXMgYSBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0XG4gICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxuICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG5cbiAgICB3YXNtYnVpbGRlciBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVFxuICAgIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWVxuICAgIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpY1xuICAgIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cblxuICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gICAgYWxvbmcgd2l0aCB3YXNtYnVpbGRlci4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cbiovXG5cbmZ1bmN0aW9uIHRvTnVtYmVyKG4pIHtcbiAgICByZXR1cm4gQmlnSW50KG4pO1xufVxuXG5mdW5jdGlvbiBpc05lZ2F0aXZlKG4pIHtcbiAgICByZXR1cm4gbiA8IDBuO1xufVxuXG5mdW5jdGlvbiBpc1plcm8obikge1xuICAgIHJldHVybiBuID09PSAwbjtcbn1cblxuZnVuY3Rpb24gYml0TGVuZ3RoKG4pIHtcbiAgICBpZiAoaXNOZWdhdGl2ZShuKSkge1xuICAgICAgICByZXR1cm4gbi50b1N0cmluZygyKS5sZW5ndGggLSAxOyAvLyBkaXNjYXJkIHRoZSAtIHNpZ25cbiAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gbi50b1N0cmluZygyKS5sZW5ndGg7XG4gICAgfVxufVxuXG5mdW5jdGlvbiB1MzIobikge1xuICAgIGNvbnN0IGIgPSBbXTtcbiAgICBjb25zdCB2ID0gdG9OdW1iZXIobik7XG4gICAgYi5wdXNoKE51bWJlcih2ICYgMHhGRm4pKTtcbiAgICBiLnB1c2goTnVtYmVyKHYgPj4gOG4gJiAweEZGbikpO1xuICAgIGIucHVzaChOdW1iZXIodiA+PiAxNm4gJiAweEZGbikpO1xuICAgIGIucHVzaChOdW1iZXIodiA+PiAyNG4gJiAweEZGbikpO1xuICAgIHJldHVybiBiO1xufVxuXG5mdW5jdGlvbiB0b1VURjhBcnJheShzdHIpIHtcbiAgICB2YXIgdXRmOCA9IFtdO1xuICAgIGZvciAodmFyIGk9MDsgaSA8IHN0ci5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgY2hhcmNvZGUgPSBzdHIuY2hhckNvZGVBdChpKTtcbiAgICAgICAgaWYgKGNoYXJjb2RlIDwgMHg4MCkgdXRmOC5wdXNoKGNoYXJjb2RlKTtcbiAgICAgICAgZWxzZSBpZiAoY2hhcmNvZGUgPCAweDgwMCkge1xuICAgICAgICAgICAgdXRmOC5wdXNoKDB4YzAgfCAoY2hhcmNvZGUgPj4gNiksXG4gICAgICAgICAgICAgICAgMHg4MCB8IChjaGFyY29kZSAmIDB4M2YpKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChjaGFyY29kZSA8IDB4ZDgwMCB8fCBjaGFyY29kZSA+PSAweGUwMDApIHtcbiAgICAgICAgICAgIHV0ZjgucHVzaCgweGUwIHwgKGNoYXJjb2RlID4+IDEyKSxcbiAgICAgICAgICAgICAgICAweDgwIHwgKChjaGFyY29kZT4+NikgJiAweDNmKSxcbiAgICAgICAgICAgICAgICAweDgwIHwgKGNoYXJjb2RlICYgMHgzZikpO1xuICAgICAgICB9XG4gICAgICAgIC8vIHN1cnJvZ2F0ZSBwYWlyXG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgaSsrO1xuICAgICAgICAgICAgLy8gVVRGLTE2IGVuY29kZXMgMHgxMDAwMC0weDEwRkZGRiBieVxuICAgICAgICAgICAgLy8gc3VidHJhY3RpbmcgMHgxMDAwMCBhbmQgc3BsaXR0aW5nIHRoZVxuICAgICAgICAgICAgLy8gMjAgYml0cyBvZiAweDAtMHhGRkZGRiBpbnRvIHR3byBoYWx2ZXNcbiAgICAgICAgICAgIGNoYXJjb2RlID0gMHgxMDAwMCArICgoKGNoYXJjb2RlICYgMHgzZmYpPDwxMClcbiAgICAgICAgICAgICAgICAgICAgICB8IChzdHIuY2hhckNvZGVBdChpKSAmIDB4M2ZmKSk7XG4gICAgICAgICAgICB1dGY4LnB1c2goMHhmMCB8IChjaGFyY29kZSA+PjE4KSxcbiAgICAgICAgICAgICAgICAweDgwIHwgKChjaGFyY29kZT4+MTIpICYgMHgzZiksXG4gICAgICAgICAgICAgICAgMHg4MCB8ICgoY2hhcmNvZGU+PjYpICYgMHgzZiksXG4gICAgICAgICAgICAgICAgMHg4MCB8IChjaGFyY29kZSAmIDB4M2YpKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdXRmODtcbn1cblxuZnVuY3Rpb24gc3RyaW5nKHN0cikge1xuICAgIGNvbnN0IGJ5dGVzID0gdG9VVEY4QXJyYXkoc3RyKTtcbiAgICByZXR1cm4gWyAuLi52YXJ1aW50MzIoYnl0ZXMubGVuZ3RoKSwgLi4uYnl0ZXMgXTtcbn1cblxuZnVuY3Rpb24gdmFydWludChuKSB7XG4gICAgY29uc3QgY29kZSA9IFtdO1xuICAgIGxldCB2ID0gdG9OdW1iZXIobik7XG4gICAgaWYgKGlzTmVnYXRpdmUodikpIHRocm93IG5ldyBFcnJvcihcIk51bWJlciBjYW5ub3QgYmUgbmVnYXRpdmVcIik7XG4gICAgd2hpbGUgKCFpc1plcm8odikpIHtcbiAgICAgICAgY29kZS5wdXNoKE51bWJlcih2ICYgMHg3Rm4pKTtcbiAgICAgICAgdiA9IHYgPj4gN247XG4gICAgfVxuICAgIGlmIChjb2RlLmxlbmd0aD09MCkgY29kZS5wdXNoKDApO1xuICAgIGZvciAobGV0IGk9MDsgaTxjb2RlLmxlbmd0aC0xOyBpKyspIHtcbiAgICAgICAgY29kZVtpXSA9IGNvZGVbaV0gfCAweDgwO1xuICAgIH1cbiAgICByZXR1cm4gY29kZTtcbn1cblxuZnVuY3Rpb24gdmFyaW50KF9uKSB7XG4gICAgbGV0IG4sIHNpZ247XG4gICAgY29uc3QgYml0cyA9IGJpdExlbmd0aChfbik7XG4gICAgaWYgKF9uPDApIHtcbiAgICAgICAgc2lnbiA9IHRydWU7XG4gICAgICAgIG4gPSAoMW4gPDwgQmlnSW50KGJpdHMpKSArIF9uO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHNpZ24gPSBmYWxzZTtcbiAgICAgICAgbiA9IHRvTnVtYmVyKF9uKTtcbiAgICB9XG4gICAgY29uc3QgcGFkZGluZ0JpdHMgPSA3IC0gKGJpdHMgJSA3KTtcblxuICAgIGNvbnN0IHBhZGRpbmcgPSAoKDFuIDw8IEJpZ0ludChwYWRkaW5nQml0cykpIC0gMW4pIDw8IEJpZ0ludChiaXRzKTtcbiAgICBjb25zdCBwYWRkaW5nTWFzayA9ICgoMSA8PCAoNyAtIHBhZGRpbmdCaXRzKSktMSkgfCAweDgwO1xuXG4gICAgY29uc3QgY29kZSA9IHZhcnVpbnQobiArIHBhZGRpbmcpO1xuXG4gICAgaWYgKCFzaWduKSB7XG4gICAgICAgIGNvZGVbY29kZS5sZW5ndGgtMV0gPSBjb2RlW2NvZGUubGVuZ3RoLTFdICYgcGFkZGluZ01hc2s7XG4gICAgfVxuXG4gICAgcmV0dXJuIGNvZGU7XG59XG5cbmZ1bmN0aW9uIHZhcmludDMyKG4pIHtcbiAgICBsZXQgdiA9IHRvTnVtYmVyKG4pO1xuICAgIGlmICh2ID4gMHhGRkZGRkZGRm4pIHRocm93IG5ldyBFcnJvcihcIk51bWJlciB0b28gYmlnXCIpO1xuICAgIGlmICh2ID4gMHg3RkZGRkZGRm4pIHYgPSB2IC0gMHgxMDAwMDAwMDBuO1xuICAgIC8vIGJpZ0ludChcIi04MDAwMDAwMFwiLCAxNikgYXMgYmFzZTEwXG4gICAgaWYgKHYgPCAtMjE0NzQ4MzY0OG4pIHRocm93IG5ldyBFcnJvcihcIk51bWJlciB0b28gc21hbGxcIik7XG4gICAgcmV0dXJuIHZhcmludCh2KTtcbn1cblxuZnVuY3Rpb24gdmFyaW50NjQobikge1xuICAgIGxldCB2ID0gdG9OdW1iZXIobik7XG4gICAgaWYgKHYgPiAweEZGRkZGRkZGRkZGRkZGRkZuKSB0aHJvdyBuZXcgRXJyb3IoXCJOdW1iZXIgdG9vIGJpZ1wiKTtcbiAgICBpZiAodiA+IDB4N0ZGRkZGRkZGRkZGRkZGRm4pIHYgPSB2IC0gMHgxMDAwMDAwMDAwMDAwMDAwMG47XG4gICAgLy8gYmlnSW50KFwiLTgwMDAwMDAwMDAwMDAwMDBcIiwgMTYpIGFzIGJhc2UxMFxuICAgIGlmICh2IDwgLTkyMjMzNzIwMzY4NTQ3NzU4MDhuKSB0aHJvdyBuZXcgRXJyb3IoXCJOdW1iZXIgdG9vIHNtYWxsXCIpO1xuICAgIHJldHVybiB2YXJpbnQodik7XG59XG5cbmZ1bmN0aW9uIHZhcnVpbnQzMihuKSB7XG4gICAgbGV0IHYgPSB0b051bWJlcihuKTtcbiAgICBpZiAodiA+IDB4RkZGRkZGRkZuKSB0aHJvdyBuZXcgRXJyb3IoXCJOdW1iZXIgdG9vIGJpZ1wiKTtcbiAgICByZXR1cm4gdmFydWludCh2KTtcbn1cblxuZnVuY3Rpb24gdG9IZXhTdHJpbmcoYnl0ZUFycmF5KSB7XG4gICAgcmV0dXJuIEFycmF5LmZyb20oYnl0ZUFycmF5LCBmdW5jdGlvbihieXRlKSB7XG4gICAgICAgIHJldHVybiAoXCIwXCIgKyAoYnl0ZSAmIDB4RkYpLnRvU3RyaW5nKDE2KSkuc2xpY2UoLTIpO1xuICAgIH0pLmpvaW4oXCJcIik7XG59XG5cbi8qXG4gICAgQ29weXJpZ2h0IDIwMTkgMEtJTVMgYXNzb2NpYXRpb24uXG5cbiAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB3YXNtYnVpbGRlclxuXG4gICAgd2FzbWJ1aWxkZXIgaXMgYSBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0XG4gICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxuICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG5cbiAgICB3YXNtYnVpbGRlciBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVFxuICAgIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWVxuICAgIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpY1xuICAgIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cblxuICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gICAgYWxvbmcgd2l0aCB3YXNtYnVpbGRlci4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cbiovXG5cblxuY2xhc3MgQ29kZUJ1aWxkZXIge1xuICAgIGNvbnN0cnVjdG9yKGZ1bmMpIHtcbiAgICAgICAgdGhpcy5mdW5jID0gZnVuYztcbiAgICAgICAgdGhpcy5mdW5jdGlvbk5hbWUgPSBmdW5jLmZ1bmN0aW9uTmFtZTtcbiAgICAgICAgdGhpcy5tb2R1bGUgPSBmdW5jLm1vZHVsZTtcbiAgICB9XG5cbiAgICBzZXRMb2NhbChsb2NhbE5hbWUsIHZhbENvZGUpIHtcbiAgICAgICAgY29uc3QgaWR4ID0gdGhpcy5mdW5jLmxvY2FsSWR4QnlOYW1lW2xvY2FsTmFtZV07XG4gICAgICAgIGlmIChpZHggPT09IHVuZGVmaW5lZClcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgTG9jYWwgVmFyaWFibGUgbm90IGRlZmluZWQ6IEZ1bmN0aW9uOiAke3RoaXMuZnVuY3Rpb25OYW1lfSBsb2NhbDogJHtsb2NhbE5hbWV9IGApO1xuICAgICAgICByZXR1cm4gWy4uLnZhbENvZGUsIDB4MjEsIC4uLnZhcnVpbnQzMiggaWR4ICldO1xuICAgIH1cblxuICAgIHRlZUxvY2FsKGxvY2FsTmFtZSwgdmFsQ29kZSkge1xuICAgICAgICBjb25zdCBpZHggPSB0aGlzLmZ1bmMubG9jYWxJZHhCeU5hbWVbbG9jYWxOYW1lXTtcbiAgICAgICAgaWYgKGlkeCA9PT0gdW5kZWZpbmVkKVxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBMb2NhbCBWYXJpYWJsZSBub3QgZGVmaW5lZDogRnVuY3Rpb246ICR7dGhpcy5mdW5jdGlvbk5hbWV9IGxvY2FsOiAke2xvY2FsTmFtZX0gYCk7XG4gICAgICAgIHJldHVybiBbLi4udmFsQ29kZSwgMHgyMiwgLi4udmFydWludDMyKCBpZHggKV07XG4gICAgfVxuXG4gICAgZ2V0TG9jYWwobG9jYWxOYW1lKSB7XG4gICAgICAgIGNvbnN0IGlkeCA9IHRoaXMuZnVuYy5sb2NhbElkeEJ5TmFtZVtsb2NhbE5hbWVdO1xuICAgICAgICBpZiAoaWR4ID09PSB1bmRlZmluZWQpXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYExvY2FsIFZhcmlhYmxlIG5vdCBkZWZpbmVkOiBGdW5jdGlvbjogJHt0aGlzLmZ1bmN0aW9uTmFtZX0gbG9jYWw6ICR7bG9jYWxOYW1lfSBgKTtcbiAgICAgICAgcmV0dXJuIFsweDIwLCAuLi52YXJ1aW50MzIoIGlkeCApXTtcbiAgICB9XG5cbiAgICBpNjRfbG9hZDhfcyhpZHhDb2RlLCBfb2Zmc2V0LCBfYWxpZ24pIHtcbiAgICAgICAgY29uc3Qgb2Zmc2V0ID0gX29mZnNldCB8fCAwO1xuICAgICAgICBjb25zdCBhbGlnbiA9IChfYWxpZ24gPT09IHVuZGVmaW5lZCkgPyAwIDogX2FsaWduOyAgLy8gOCBiaXRzIGFsaWdubWVudCBieSBkZWZhdWx0XG4gICAgICAgIHJldHVybiBbLi4uaWR4Q29kZSwgMHgzMCwgYWxpZ24sIC4uLnZhcnVpbnQzMihvZmZzZXQpXTtcbiAgICB9XG5cbiAgICBpNjRfbG9hZDhfdShpZHhDb2RlLCBfb2Zmc2V0LCBfYWxpZ24pIHtcbiAgICAgICAgY29uc3Qgb2Zmc2V0ID0gX29mZnNldCB8fCAwO1xuICAgICAgICBjb25zdCBhbGlnbiA9IChfYWxpZ24gPT09IHVuZGVmaW5lZCkgPyAwIDogX2FsaWduOyAgLy8gOCBiaXRzIGFsaWdubWVudCBieSBkZWZhdWx0XG4gICAgICAgIHJldHVybiBbLi4uaWR4Q29kZSwgMHgzMSwgYWxpZ24sIC4uLnZhcnVpbnQzMihvZmZzZXQpXTtcbiAgICB9XG5cbiAgICBpNjRfbG9hZDE2X3MoaWR4Q29kZSwgX29mZnNldCwgX2FsaWduKSB7XG4gICAgICAgIGNvbnN0IG9mZnNldCA9IF9vZmZzZXQgfHwgMDtcbiAgICAgICAgY29uc3QgYWxpZ24gPSAoX2FsaWduID09PSB1bmRlZmluZWQpID8gMSA6IF9hbGlnbjsgIC8vIDE2IGJpdHMgYWxpZ25tZW50IGJ5IGRlZmF1bHRcbiAgICAgICAgcmV0dXJuIFsuLi5pZHhDb2RlLCAweDMyLCBhbGlnbiwgLi4udmFydWludDMyKG9mZnNldCldO1xuICAgIH1cblxuICAgIGk2NF9sb2FkMTZfdShpZHhDb2RlLCBfb2Zmc2V0LCBfYWxpZ24pIHtcbiAgICAgICAgY29uc3Qgb2Zmc2V0ID0gX29mZnNldCB8fCAwO1xuICAgICAgICBjb25zdCBhbGlnbiA9IChfYWxpZ24gPT09IHVuZGVmaW5lZCkgPyAxIDogX2FsaWduOyAgLy8gMTYgYml0cyBhbGlnbm1lbnQgYnkgZGVmYXVsdFxuICAgICAgICByZXR1cm4gWy4uLmlkeENvZGUsIDB4MzMsIGFsaWduLCAuLi52YXJ1aW50MzIob2Zmc2V0KV07XG4gICAgfVxuXG4gICAgaTY0X2xvYWQzMl9zKGlkeENvZGUsIF9vZmZzZXQsIF9hbGlnbikge1xuICAgICAgICBjb25zdCBvZmZzZXQgPSBfb2Zmc2V0IHx8IDA7XG4gICAgICAgIGNvbnN0IGFsaWduID0gKF9hbGlnbiA9PT0gdW5kZWZpbmVkKSA/IDIgOiBfYWxpZ247ICAvLyAzMiBiaXRzIGFsaWdubWVudCBieSBkZWZhdWx0XG4gICAgICAgIHJldHVybiBbLi4uaWR4Q29kZSwgMHgzNCwgYWxpZ24sIC4uLnZhcnVpbnQzMihvZmZzZXQpXTtcbiAgICB9XG5cbiAgICBpNjRfbG9hZDMyX3UoaWR4Q29kZSwgX29mZnNldCwgX2FsaWduKSB7XG4gICAgICAgIGNvbnN0IG9mZnNldCA9IF9vZmZzZXQgfHwgMDtcbiAgICAgICAgY29uc3QgYWxpZ24gPSAoX2FsaWduID09PSB1bmRlZmluZWQpID8gMiA6IF9hbGlnbjsgIC8vIDMyIGJpdHMgYWxpZ25tZW50IGJ5IGRlZmF1bHRcbiAgICAgICAgcmV0dXJuIFsuLi5pZHhDb2RlLCAweDM1LCBhbGlnbiwgLi4udmFydWludDMyKG9mZnNldCldO1xuICAgIH1cblxuICAgIGk2NF9sb2FkKGlkeENvZGUsIF9vZmZzZXQsIF9hbGlnbikge1xuICAgICAgICBjb25zdCBvZmZzZXQgPSBfb2Zmc2V0IHx8IDA7XG4gICAgICAgIGNvbnN0IGFsaWduID0gKF9hbGlnbiA9PT0gdW5kZWZpbmVkKSA/IDMgOiBfYWxpZ247ICAvLyA2NCBiaXRzIGFsaWdubWVudCBieSBkZWZhdWx0XG4gICAgICAgIHJldHVybiBbLi4uaWR4Q29kZSwgMHgyOSwgYWxpZ24sIC4uLnZhcnVpbnQzMihvZmZzZXQpXTtcbiAgICB9XG5cblxuICAgIGk2NF9zdG9yZShpZHhDb2RlLCBfb2Zmc2V0LCBfYWxpZ24sIF9jb2RlVmFsKSB7XG4gICAgICAgIGxldCBvZmZzZXQsIGFsaWduLCBjb2RlVmFsO1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShfb2Zmc2V0KSkge1xuICAgICAgICAgICAgb2Zmc2V0ID0gMDtcbiAgICAgICAgICAgIGFsaWduID0gMztcbiAgICAgICAgICAgIGNvZGVWYWwgPSBfb2Zmc2V0O1xuICAgICAgICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkoX2FsaWduKSkge1xuICAgICAgICAgICAgb2Zmc2V0ID0gX29mZnNldDtcbiAgICAgICAgICAgIGFsaWduID0gMztcbiAgICAgICAgICAgIGNvZGVWYWwgPSBfYWxpZ247XG4gICAgICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShfY29kZVZhbCkpIHtcbiAgICAgICAgICAgIG9mZnNldCA9IF9vZmZzZXQ7XG4gICAgICAgICAgICBhbGlnbiA9IF9hbGlnbjtcbiAgICAgICAgICAgIGNvZGVWYWwgPSBfY29kZVZhbDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gWy4uLmlkeENvZGUsIC4uLmNvZGVWYWwsIDB4MzcsIGFsaWduLCAuLi52YXJ1aW50MzIob2Zmc2V0KV07XG4gICAgfVxuXG4gICAgaTY0X3N0b3JlMzIoaWR4Q29kZSwgX29mZnNldCwgX2FsaWduLCBfY29kZVZhbCkge1xuICAgICAgICBsZXQgb2Zmc2V0LCBhbGlnbiwgY29kZVZhbDtcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoX29mZnNldCkpIHtcbiAgICAgICAgICAgIG9mZnNldCA9IDA7XG4gICAgICAgICAgICBhbGlnbiA9IDI7XG4gICAgICAgICAgICBjb2RlVmFsID0gX29mZnNldDtcbiAgICAgICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KF9hbGlnbikpIHtcbiAgICAgICAgICAgIG9mZnNldCA9IF9vZmZzZXQ7XG4gICAgICAgICAgICBhbGlnbiA9IDI7XG4gICAgICAgICAgICBjb2RlVmFsID0gX2FsaWduO1xuICAgICAgICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkoX2NvZGVWYWwpKSB7XG4gICAgICAgICAgICBvZmZzZXQgPSBfb2Zmc2V0O1xuICAgICAgICAgICAgYWxpZ24gPSBfYWxpZ247XG4gICAgICAgICAgICBjb2RlVmFsID0gX2NvZGVWYWw7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFsuLi5pZHhDb2RlLCAuLi5jb2RlVmFsLCAweDNlLCBhbGlnbiwgLi4udmFydWludDMyKG9mZnNldCldO1xuICAgIH1cblxuXG4gICAgaTY0X3N0b3JlMTYoaWR4Q29kZSwgX29mZnNldCwgX2FsaWduLCBfY29kZVZhbCkge1xuICAgICAgICBsZXQgb2Zmc2V0LCBhbGlnbiwgY29kZVZhbDtcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoX29mZnNldCkpIHtcbiAgICAgICAgICAgIG9mZnNldCA9IDA7XG4gICAgICAgICAgICBhbGlnbiA9IDE7XG4gICAgICAgICAgICBjb2RlVmFsID0gX29mZnNldDtcbiAgICAgICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KF9hbGlnbikpIHtcbiAgICAgICAgICAgIG9mZnNldCA9IF9vZmZzZXQ7XG4gICAgICAgICAgICBhbGlnbiA9IDE7XG4gICAgICAgICAgICBjb2RlVmFsID0gX2FsaWduO1xuICAgICAgICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkoX2NvZGVWYWwpKSB7XG4gICAgICAgICAgICBvZmZzZXQgPSBfb2Zmc2V0O1xuICAgICAgICAgICAgYWxpZ24gPSBfYWxpZ247XG4gICAgICAgICAgICBjb2RlVmFsID0gX2NvZGVWYWw7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFsuLi5pZHhDb2RlLCAuLi5jb2RlVmFsLCAweDNkLCBhbGlnbiwgLi4udmFydWludDMyKG9mZnNldCldO1xuICAgIH1cblxuXG4gICAgaTY0X3N0b3JlOChpZHhDb2RlLCBfb2Zmc2V0LCBfYWxpZ24sIF9jb2RlVmFsKSB7XG4gICAgICAgIGxldCBvZmZzZXQsIGFsaWduLCBjb2RlVmFsO1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShfb2Zmc2V0KSkge1xuICAgICAgICAgICAgb2Zmc2V0ID0gMDtcbiAgICAgICAgICAgIGFsaWduID0gMDtcbiAgICAgICAgICAgIGNvZGVWYWwgPSBfb2Zmc2V0O1xuICAgICAgICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkoX2FsaWduKSkge1xuICAgICAgICAgICAgb2Zmc2V0ID0gX29mZnNldDtcbiAgICAgICAgICAgIGFsaWduID0gMDtcbiAgICAgICAgICAgIGNvZGVWYWwgPSBfYWxpZ247XG4gICAgICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShfY29kZVZhbCkpIHtcbiAgICAgICAgICAgIG9mZnNldCA9IF9vZmZzZXQ7XG4gICAgICAgICAgICBhbGlnbiA9IF9hbGlnbjtcbiAgICAgICAgICAgIGNvZGVWYWwgPSBfY29kZVZhbDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gWy4uLmlkeENvZGUsIC4uLmNvZGVWYWwsIDB4M2MsIGFsaWduLCAuLi52YXJ1aW50MzIob2Zmc2V0KV07XG4gICAgfVxuXG4gICAgaTMyX2xvYWQ4X3MoaWR4Q29kZSwgX29mZnNldCwgX2FsaWduKSB7XG4gICAgICAgIGNvbnN0IG9mZnNldCA9IF9vZmZzZXQgfHwgMDtcbiAgICAgICAgY29uc3QgYWxpZ24gPSAoX2FsaWduID09PSB1bmRlZmluZWQpID8gMCA6IF9hbGlnbjsgIC8vIDMyIGJpdHMgYWxpZ25tZW50IGJ5IGRlZmF1bHRcbiAgICAgICAgcmV0dXJuIFsuLi5pZHhDb2RlLCAweDJjLCBhbGlnbiwgLi4udmFydWludDMyKG9mZnNldCldO1xuICAgIH1cblxuICAgIGkzMl9sb2FkOF91KGlkeENvZGUsIF9vZmZzZXQsIF9hbGlnbikge1xuICAgICAgICBjb25zdCBvZmZzZXQgPSBfb2Zmc2V0IHx8IDA7XG4gICAgICAgIGNvbnN0IGFsaWduID0gKF9hbGlnbiA9PT0gdW5kZWZpbmVkKSA/IDAgOiBfYWxpZ247ICAvLyAzMiBiaXRzIGFsaWdubWVudCBieSBkZWZhdWx0XG4gICAgICAgIHJldHVybiBbLi4uaWR4Q29kZSwgMHgyZCwgYWxpZ24sIC4uLnZhcnVpbnQzMihvZmZzZXQpXTtcbiAgICB9XG5cbiAgICBpMzJfbG9hZDE2X3MoaWR4Q29kZSwgX29mZnNldCwgX2FsaWduKSB7XG4gICAgICAgIGNvbnN0IG9mZnNldCA9IF9vZmZzZXQgfHwgMDtcbiAgICAgICAgY29uc3QgYWxpZ24gPSAoX2FsaWduID09PSB1bmRlZmluZWQpID8gMSA6IF9hbGlnbjsgIC8vIDMyIGJpdHMgYWxpZ25tZW50IGJ5IGRlZmF1bHRcbiAgICAgICAgcmV0dXJuIFsuLi5pZHhDb2RlLCAweDJlLCBhbGlnbiwgLi4udmFydWludDMyKG9mZnNldCldO1xuICAgIH1cblxuICAgIGkzMl9sb2FkMTZfdShpZHhDb2RlLCBfb2Zmc2V0LCBfYWxpZ24pIHtcbiAgICAgICAgY29uc3Qgb2Zmc2V0ID0gX29mZnNldCB8fCAwO1xuICAgICAgICBjb25zdCBhbGlnbiA9IChfYWxpZ24gPT09IHVuZGVmaW5lZCkgPyAxIDogX2FsaWduOyAgLy8gMzIgYml0cyBhbGlnbm1lbnQgYnkgZGVmYXVsdFxuICAgICAgICByZXR1cm4gWy4uLmlkeENvZGUsIDB4MmYsIGFsaWduLCAuLi52YXJ1aW50MzIob2Zmc2V0KV07XG4gICAgfVxuXG4gICAgaTMyX2xvYWQoaWR4Q29kZSwgX29mZnNldCwgX2FsaWduKSB7XG4gICAgICAgIGNvbnN0IG9mZnNldCA9IF9vZmZzZXQgfHwgMDtcbiAgICAgICAgY29uc3QgYWxpZ24gPSAoX2FsaWduID09PSB1bmRlZmluZWQpID8gMiA6IF9hbGlnbjsgIC8vIDMyIGJpdHMgYWxpZ25tZW50IGJ5IGRlZmF1bHRcbiAgICAgICAgcmV0dXJuIFsuLi5pZHhDb2RlLCAweDI4LCBhbGlnbiwgLi4udmFydWludDMyKG9mZnNldCldO1xuICAgIH1cblxuICAgIGkzMl9zdG9yZShpZHhDb2RlLCBfb2Zmc2V0LCBfYWxpZ24sIF9jb2RlVmFsKSB7XG4gICAgICAgIGxldCBvZmZzZXQsIGFsaWduLCBjb2RlVmFsO1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShfb2Zmc2V0KSkge1xuICAgICAgICAgICAgb2Zmc2V0ID0gMDtcbiAgICAgICAgICAgIGFsaWduID0gMjtcbiAgICAgICAgICAgIGNvZGVWYWwgPSBfb2Zmc2V0O1xuICAgICAgICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkoX2FsaWduKSkge1xuICAgICAgICAgICAgb2Zmc2V0ID0gX29mZnNldDtcbiAgICAgICAgICAgIGFsaWduID0gMjtcbiAgICAgICAgICAgIGNvZGVWYWwgPSBfYWxpZ247XG4gICAgICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShfY29kZVZhbCkpIHtcbiAgICAgICAgICAgIG9mZnNldCA9IF9vZmZzZXQ7XG4gICAgICAgICAgICBhbGlnbiA9IF9hbGlnbjtcbiAgICAgICAgICAgIGNvZGVWYWwgPSBfY29kZVZhbDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gWy4uLmlkeENvZGUsIC4uLmNvZGVWYWwsIDB4MzYsIGFsaWduLCAuLi52YXJ1aW50MzIob2Zmc2V0KV07XG4gICAgfVxuXG5cbiAgICBpMzJfc3RvcmUxNihpZHhDb2RlLCBfb2Zmc2V0LCBfYWxpZ24sIF9jb2RlVmFsKSB7XG4gICAgICAgIGxldCBvZmZzZXQsIGFsaWduLCBjb2RlVmFsO1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShfb2Zmc2V0KSkge1xuICAgICAgICAgICAgb2Zmc2V0ID0gMDtcbiAgICAgICAgICAgIGFsaWduID0gMTtcbiAgICAgICAgICAgIGNvZGVWYWwgPSBfb2Zmc2V0O1xuICAgICAgICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkoX2FsaWduKSkge1xuICAgICAgICAgICAgb2Zmc2V0ID0gX29mZnNldDtcbiAgICAgICAgICAgIGFsaWduID0gMTtcbiAgICAgICAgICAgIGNvZGVWYWwgPSBfYWxpZ247XG4gICAgICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShfY29kZVZhbCkpIHtcbiAgICAgICAgICAgIG9mZnNldCA9IF9vZmZzZXQ7XG4gICAgICAgICAgICBhbGlnbiA9IF9hbGlnbjtcbiAgICAgICAgICAgIGNvZGVWYWwgPSBfY29kZVZhbDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gWy4uLmlkeENvZGUsIC4uLmNvZGVWYWwsIDB4M2IsIGFsaWduLCAuLi52YXJ1aW50MzIob2Zmc2V0KV07XG4gICAgfVxuXG4gICAgaTMyX3N0b3JlOChpZHhDb2RlLCBfb2Zmc2V0LCBfYWxpZ24sIF9jb2RlVmFsKSB7XG4gICAgICAgIGxldCBvZmZzZXQsIGFsaWduLCBjb2RlVmFsO1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShfb2Zmc2V0KSkge1xuICAgICAgICAgICAgb2Zmc2V0ID0gMDtcbiAgICAgICAgICAgIGFsaWduID0gMDtcbiAgICAgICAgICAgIGNvZGVWYWwgPSBfb2Zmc2V0O1xuICAgICAgICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkoX2FsaWduKSkge1xuICAgICAgICAgICAgb2Zmc2V0ID0gX29mZnNldDtcbiAgICAgICAgICAgIGFsaWduID0gMDtcbiAgICAgICAgICAgIGNvZGVWYWwgPSBfYWxpZ247XG4gICAgICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShfY29kZVZhbCkpIHtcbiAgICAgICAgICAgIG9mZnNldCA9IF9vZmZzZXQ7XG4gICAgICAgICAgICBhbGlnbiA9IF9hbGlnbjtcbiAgICAgICAgICAgIGNvZGVWYWwgPSBfY29kZVZhbDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gWy4uLmlkeENvZGUsIC4uLmNvZGVWYWwsIDB4M2EsIGFsaWduLCAuLi52YXJ1aW50MzIob2Zmc2V0KV07XG4gICAgfVxuXG4gICAgY2FsbChmbk5hbWUsIC4uLmFyZ3MpIHtcbiAgICAgICAgY29uc3QgaWR4ID0gdGhpcy5tb2R1bGUuZnVuY3Rpb25JZHhCeU5hbWVbZm5OYW1lXTtcbiAgICAgICAgaWYgKGlkeCA9PT0gdW5kZWZpbmVkKVxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBGdW5jdGlvbiBub3QgZGVmaW5lZDogRnVuY3Rpb246ICR7Zm5OYW1lfWApO1xuICAgICAgICByZXR1cm4gWy4uLltdLmNvbmNhdCguLi5hcmdzKSwgMHgxMCwgLi4udmFydWludDMyKGlkeCldO1xuICAgIH1cblxuICAgIGNhbGxfaW5kaXJlY3QoZm5JZHgsIC4uLmFyZ3MpIHtcbiAgICAgICAgcmV0dXJuIFsuLi5bXS5jb25jYXQoLi4uYXJncyksIC4uLmZuSWR4LCAweDExLCAwLCAwXTtcbiAgICB9XG5cbiAgICBpZihjb25kQ29kZSwgdGhlbkNvZGUsIGVsc2VDb2RlKSB7XG4gICAgICAgIGlmIChlbHNlQ29kZSkge1xuICAgICAgICAgICAgcmV0dXJuIFsuLi5jb25kQ29kZSwgMHgwNCwgMHg0MCwgLi4udGhlbkNvZGUsIDB4MDUsIC4uLmVsc2VDb2RlLCAweDBiXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBbLi4uY29uZENvZGUsIDB4MDQsIDB4NDAsIC4uLnRoZW5Db2RlLCAweDBiXTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGJsb2NrKGJDb2RlKSB7IHJldHVybiBbMHgwMiwgMHg0MCwgLi4uYkNvZGUsIDB4MGJdOyB9XG4gICAgbG9vcCguLi5hcmdzKSB7XG4gICAgICAgIHJldHVybiBbMHgwMywgMHg0MCwgLi4uW10uY29uY2F0KC4uLlsuLi5hcmdzXSksIDB4MGJdO1xuICAgIH1cbiAgICBicl9pZihyZWxQYXRoLCBjb25kQ29kZSkgeyByZXR1cm4gWy4uLmNvbmRDb2RlLCAweDBkLCAuLi52YXJ1aW50MzIocmVsUGF0aCldOyB9XG4gICAgYnIocmVsUGF0aCkgeyByZXR1cm4gWzB4MGMsIC4uLnZhcnVpbnQzMihyZWxQYXRoKV07IH1cbiAgICByZXQockNvZGUpIHsgcmV0dXJuIFsuLi5yQ29kZSwgMHgwZl07IH1cbiAgICBkcm9wKGRDb2RlKSB7IHJldHVybiBbLi4uZENvZGUsICAweDFhXTsgfVxuXG4gICAgaTY0X2NvbnN0KG51bSkgeyByZXR1cm4gWzB4NDIsIC4uLnZhcmludDY0KG51bSldOyB9XG4gICAgaTMyX2NvbnN0KG51bSkgeyByZXR1cm4gWzB4NDEsIC4uLnZhcmludDMyKG51bSldOyB9XG5cblxuICAgIGk2NF9lcXoob3Bjb2RlKSB7IHJldHVybiBbLi4ub3Bjb2RlLCAweDUwXTsgfVxuICAgIGk2NF9lcShvcDFjb2RlLCBvcDJjb2RlKSB7IHJldHVybiBbLi4ub3AxY29kZSwgLi4ub3AyY29kZSwgMHg1MV07IH1cbiAgICBpNjRfbmUob3AxY29kZSwgb3AyY29kZSkgeyByZXR1cm4gWy4uLm9wMWNvZGUsIC4uLm9wMmNvZGUsIDB4NTJdOyB9XG4gICAgaTY0X2x0X3Mob3AxY29kZSwgb3AyY29kZSkgeyByZXR1cm4gWy4uLm9wMWNvZGUsIC4uLm9wMmNvZGUsIDB4NTNdOyB9XG4gICAgaTY0X2x0X3Uob3AxY29kZSwgb3AyY29kZSkgeyByZXR1cm4gWy4uLm9wMWNvZGUsIC4uLm9wMmNvZGUsIDB4NTRdOyB9XG4gICAgaTY0X2d0X3Mob3AxY29kZSwgb3AyY29kZSkgeyByZXR1cm4gWy4uLm9wMWNvZGUsIC4uLm9wMmNvZGUsIDB4NTVdOyB9XG4gICAgaTY0X2d0X3Uob3AxY29kZSwgb3AyY29kZSkgeyByZXR1cm4gWy4uLm9wMWNvZGUsIC4uLm9wMmNvZGUsIDB4NTZdOyB9XG4gICAgaTY0X2xlX3Mob3AxY29kZSwgb3AyY29kZSkgeyByZXR1cm4gWy4uLm9wMWNvZGUsIC4uLm9wMmNvZGUsIDB4NTddOyB9XG4gICAgaTY0X2xlX3Uob3AxY29kZSwgb3AyY29kZSkgeyByZXR1cm4gWy4uLm9wMWNvZGUsIC4uLm9wMmNvZGUsIDB4NThdOyB9XG4gICAgaTY0X2dlX3Mob3AxY29kZSwgb3AyY29kZSkgeyByZXR1cm4gWy4uLm9wMWNvZGUsIC4uLm9wMmNvZGUsIDB4NTldOyB9XG4gICAgaTY0X2dlX3Uob3AxY29kZSwgb3AyY29kZSkgeyByZXR1cm4gWy4uLm9wMWNvZGUsIC4uLm9wMmNvZGUsIDB4NWFdOyB9XG4gICAgaTY0X2FkZChvcDFjb2RlLCBvcDJjb2RlKSB7IHJldHVybiBbLi4ub3AxY29kZSwgLi4ub3AyY29kZSwgMHg3Y107IH1cbiAgICBpNjRfc3ViKG9wMWNvZGUsIG9wMmNvZGUpIHsgcmV0dXJuIFsuLi5vcDFjb2RlLCAuLi5vcDJjb2RlLCAweDdkXTsgfVxuICAgIGk2NF9tdWwob3AxY29kZSwgb3AyY29kZSkgeyByZXR1cm4gWy4uLm9wMWNvZGUsIC4uLm9wMmNvZGUsIDB4N2VdOyB9XG4gICAgaTY0X2Rpdl9zKG9wMWNvZGUsIG9wMmNvZGUpIHsgcmV0dXJuIFsuLi5vcDFjb2RlLCAuLi5vcDJjb2RlLCAweDdmXTsgfVxuICAgIGk2NF9kaXZfdShvcDFjb2RlLCBvcDJjb2RlKSB7IHJldHVybiBbLi4ub3AxY29kZSwgLi4ub3AyY29kZSwgMHg4MF07IH1cbiAgICBpNjRfcmVtX3Mob3AxY29kZSwgb3AyY29kZSkgeyByZXR1cm4gWy4uLm9wMWNvZGUsIC4uLm9wMmNvZGUsIDB4ODFdOyB9XG4gICAgaTY0X3JlbV91KG9wMWNvZGUsIG9wMmNvZGUpIHsgcmV0dXJuIFsuLi5vcDFjb2RlLCAuLi5vcDJjb2RlLCAweDgyXTsgfVxuICAgIGk2NF9hbmQob3AxY29kZSwgb3AyY29kZSkgeyByZXR1cm4gWy4uLm9wMWNvZGUsIC4uLm9wMmNvZGUsIDB4ODNdOyB9XG4gICAgaTY0X29yKG9wMWNvZGUsIG9wMmNvZGUpIHsgcmV0dXJuIFsuLi5vcDFjb2RlLCAuLi5vcDJjb2RlLCAweDg0XTsgfVxuICAgIGk2NF94b3Iob3AxY29kZSwgb3AyY29kZSkgeyByZXR1cm4gWy4uLm9wMWNvZGUsIC4uLm9wMmNvZGUsIDB4ODVdOyB9XG4gICAgaTY0X3NobChvcDFjb2RlLCBvcDJjb2RlKSB7IHJldHVybiBbLi4ub3AxY29kZSwgLi4ub3AyY29kZSwgMHg4Nl07IH1cbiAgICBpNjRfc2hyX3Mob3AxY29kZSwgb3AyY29kZSkgeyByZXR1cm4gWy4uLm9wMWNvZGUsIC4uLm9wMmNvZGUsIDB4ODddOyB9XG4gICAgaTY0X3Nocl91KG9wMWNvZGUsIG9wMmNvZGUpIHsgcmV0dXJuIFsuLi5vcDFjb2RlLCAuLi5vcDJjb2RlLCAweDg4XTsgfVxuICAgIGk2NF9leHRlbmRfaTMyX3Mob3AxY29kZSkgeyByZXR1cm4gWy4uLm9wMWNvZGUsIDB4YWNdOyB9XG4gICAgaTY0X2V4dGVuZF9pMzJfdShvcDFjb2RlKSB7IHJldHVybiBbLi4ub3AxY29kZSwgMHhhZF07IH1cbiAgICBpNjRfY2x6KG9wMWNvZGUpIHsgcmV0dXJuIFsuLi5vcDFjb2RlLCAweDc5XTsgfVxuICAgIGk2NF9jdHoob3AxY29kZSkgeyByZXR1cm4gWy4uLm9wMWNvZGUsIDB4N2FdOyB9XG5cbiAgICBpMzJfZXF6KG9wMWNvZGUpIHsgcmV0dXJuIFsuLi5vcDFjb2RlLCAweDQ1XTsgfVxuICAgIGkzMl9lcShvcDFjb2RlLCBvcDJjb2RlKSB7IHJldHVybiBbLi4ub3AxY29kZSwgLi4ub3AyY29kZSwgMHg0Nl07IH1cbiAgICBpMzJfbmUob3AxY29kZSwgb3AyY29kZSkgeyByZXR1cm4gWy4uLm9wMWNvZGUsIC4uLm9wMmNvZGUsIDB4NDddOyB9XG4gICAgaTMyX2x0X3Mob3AxY29kZSwgb3AyY29kZSkgeyByZXR1cm4gWy4uLm9wMWNvZGUsIC4uLm9wMmNvZGUsIDB4NDhdOyB9XG4gICAgaTMyX2x0X3Uob3AxY29kZSwgb3AyY29kZSkgeyByZXR1cm4gWy4uLm9wMWNvZGUsIC4uLm9wMmNvZGUsIDB4NDldOyB9XG4gICAgaTMyX2d0X3Mob3AxY29kZSwgb3AyY29kZSkgeyByZXR1cm4gWy4uLm9wMWNvZGUsIC4uLm9wMmNvZGUsIDB4NGFdOyB9XG4gICAgaTMyX2d0X3Uob3AxY29kZSwgb3AyY29kZSkgeyByZXR1cm4gWy4uLm9wMWNvZGUsIC4uLm9wMmNvZGUsIDB4NGJdOyB9XG4gICAgaTMyX2xlX3Mob3AxY29kZSwgb3AyY29kZSkgeyByZXR1cm4gWy4uLm9wMWNvZGUsIC4uLm9wMmNvZGUsIDB4NGNdOyB9XG4gICAgaTMyX2xlX3Uob3AxY29kZSwgb3AyY29kZSkgeyByZXR1cm4gWy4uLm9wMWNvZGUsIC4uLm9wMmNvZGUsIDB4NGRdOyB9XG4gICAgaTMyX2dlX3Mob3AxY29kZSwgb3AyY29kZSkgeyByZXR1cm4gWy4uLm9wMWNvZGUsIC4uLm9wMmNvZGUsIDB4NGVdOyB9XG4gICAgaTMyX2dlX3Uob3AxY29kZSwgb3AyY29kZSkgeyByZXR1cm4gWy4uLm9wMWNvZGUsIC4uLm9wMmNvZGUsIDB4NGZdOyB9XG4gICAgaTMyX2FkZChvcDFjb2RlLCBvcDJjb2RlKSB7IHJldHVybiBbLi4ub3AxY29kZSwgLi4ub3AyY29kZSwgMHg2YV07IH1cbiAgICBpMzJfc3ViKG9wMWNvZGUsIG9wMmNvZGUpIHsgcmV0dXJuIFsuLi5vcDFjb2RlLCAuLi5vcDJjb2RlLCAweDZiXTsgfVxuICAgIGkzMl9tdWwob3AxY29kZSwgb3AyY29kZSkgeyByZXR1cm4gWy4uLm9wMWNvZGUsIC4uLm9wMmNvZGUsIDB4NmNdOyB9XG4gICAgaTMyX2Rpdl9zKG9wMWNvZGUsIG9wMmNvZGUpIHsgcmV0dXJuIFsuLi5vcDFjb2RlLCAuLi5vcDJjb2RlLCAweDZkXTsgfVxuICAgIGkzMl9kaXZfdShvcDFjb2RlLCBvcDJjb2RlKSB7IHJldHVybiBbLi4ub3AxY29kZSwgLi4ub3AyY29kZSwgMHg2ZV07IH1cbiAgICBpMzJfcmVtX3Mob3AxY29kZSwgb3AyY29kZSkgeyByZXR1cm4gWy4uLm9wMWNvZGUsIC4uLm9wMmNvZGUsIDB4NmZdOyB9XG4gICAgaTMyX3JlbV91KG9wMWNvZGUsIG9wMmNvZGUpIHsgcmV0dXJuIFsuLi5vcDFjb2RlLCAuLi5vcDJjb2RlLCAweDcwXTsgfVxuICAgIGkzMl9hbmQob3AxY29kZSwgb3AyY29kZSkgeyByZXR1cm4gWy4uLm9wMWNvZGUsIC4uLm9wMmNvZGUsIDB4NzFdOyB9XG4gICAgaTMyX29yKG9wMWNvZGUsIG9wMmNvZGUpIHsgcmV0dXJuIFsuLi5vcDFjb2RlLCAuLi5vcDJjb2RlLCAweDcyXTsgfVxuICAgIGkzMl94b3Iob3AxY29kZSwgb3AyY29kZSkgeyByZXR1cm4gWy4uLm9wMWNvZGUsIC4uLm9wMmNvZGUsIDB4NzNdOyB9XG4gICAgaTMyX3NobChvcDFjb2RlLCBvcDJjb2RlKSB7IHJldHVybiBbLi4ub3AxY29kZSwgLi4ub3AyY29kZSwgMHg3NF07IH1cbiAgICBpMzJfc2hyX3Mob3AxY29kZSwgb3AyY29kZSkgeyByZXR1cm4gWy4uLm9wMWNvZGUsIC4uLm9wMmNvZGUsIDB4NzVdOyB9XG4gICAgaTMyX3Nocl91KG9wMWNvZGUsIG9wMmNvZGUpIHsgcmV0dXJuIFsuLi5vcDFjb2RlLCAuLi5vcDJjb2RlLCAweDc2XTsgfVxuICAgIGkzMl9yb3RsKG9wMWNvZGUsIG9wMmNvZGUpIHsgcmV0dXJuIFsuLi5vcDFjb2RlLCAuLi5vcDJjb2RlLCAweDc3XTsgfVxuICAgIGkzMl9yb3RyKG9wMWNvZGUsIG9wMmNvZGUpIHsgcmV0dXJuIFsuLi5vcDFjb2RlLCAuLi5vcDJjb2RlLCAweDc4XTsgfVxuICAgIGkzMl93cmFwX2k2NChvcDFjb2RlKSB7IHJldHVybiBbLi4ub3AxY29kZSwgMHhhN107IH1cbiAgICBpMzJfY2x6KG9wMWNvZGUpIHsgcmV0dXJuIFsuLi5vcDFjb2RlLCAweDY3XTsgfVxuICAgIGkzMl9jdHoob3AxY29kZSkgeyByZXR1cm4gWy4uLm9wMWNvZGUsIDB4NjhdOyB9XG5cbiAgICB1bnJlYWNoYWJsZSgpIHsgcmV0dXJuIFsgMHgwIF07IH1cblxuICAgIGN1cnJlbnRfbWVtb3J5KCkgeyByZXR1cm4gWyAweDNmLCAwXTsgfVxuXG4gICAgY29tbWVudCgpIHsgcmV0dXJuIFtdOyB9XG59XG5cbi8qXG4gICAgQ29weXJpZ2h0IDIwMTkgMEtJTVMgYXNzb2NpYXRpb24uXG5cbiAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB3YXNtYnVpbGRlclxuXG4gICAgd2FzbWJ1aWxkZXIgaXMgYSBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0XG4gICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxuICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG5cbiAgICB3YXNtYnVpbGRlciBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVFxuICAgIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWVxuICAgIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpY1xuICAgIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cblxuICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gICAgYWxvbmcgd2l0aCB3YXNtYnVpbGRlci4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cbiovXG5cblxuY29uc3QgdHlwZUNvZGVzID0ge1xuICAgIFwiaTMyXCI6IDB4N2YsXG4gICAgXCJpNjRcIjogMHg3ZSxcbiAgICBcImYzMlwiOiAweDdkLFxuICAgIFwiZjY0XCI6IDB4N2MsXG4gICAgXCJhbnlmdW5jXCI6IDB4NzAsXG4gICAgXCJmdW5jXCI6IDB4NjAsXG4gICAgXCJlbXB0eWJsb2NrXCI6IDB4NDBcbn07XG5cblxuY2xhc3MgRnVuY3Rpb25CdWlsZGVyIHtcblxuICAgIGNvbnN0cnVjdG9yIChtb2R1bGUsIGZuTmFtZSwgZm5UeXBlLCBtb2R1bGVOYW1lLCBmaWVsZE5hbWUpIHtcbiAgICAgICAgaWYgKGZuVHlwZSA9PSBcImltcG9ydFwiKSB7XG4gICAgICAgICAgICB0aGlzLmZuVHlwZSA9IFwiaW1wb3J0XCI7XG4gICAgICAgICAgICB0aGlzLm1vZHVsZU5hbWUgPSBtb2R1bGVOYW1lO1xuICAgICAgICAgICAgdGhpcy5maWVsZE5hbWUgPSBmaWVsZE5hbWU7XG4gICAgICAgIH0gZWxzZSBpZiAoZm5UeXBlID09IFwiaW50ZXJuYWxcIikge1xuICAgICAgICAgICAgdGhpcy5mblR5cGUgPSBcImludGVybmFsXCI7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIGZ1bmN0aW9uIGZuVHlwZTogXCIgKyBmblR5cGUpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMubW9kdWxlID0gbW9kdWxlO1xuICAgICAgICB0aGlzLmZuTmFtZSA9IGZuTmFtZTtcbiAgICAgICAgdGhpcy5wYXJhbXMgPSBbXTtcbiAgICAgICAgdGhpcy5sb2NhbHMgPSBbXTtcbiAgICAgICAgdGhpcy5sb2NhbElkeEJ5TmFtZSA9IHt9O1xuICAgICAgICB0aGlzLmNvZGUgPSBbXTtcbiAgICAgICAgdGhpcy5yZXR1cm5UeXBlID0gbnVsbDtcbiAgICAgICAgdGhpcy5uZXh0TG9jYWwgPTA7XG4gICAgfVxuXG4gICAgYWRkUGFyYW0ocGFyYW1OYW1lLCBwYXJhbVR5cGUpIHtcbiAgICAgICAgaWYgKHRoaXMubG9jYWxJZHhCeU5hbWVbcGFyYW1OYW1lXSlcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgcGFyYW0gYWxyZWFkeSBleGlzdHMuIEZ1bmN0aW9uOiAke3RoaXMuZm5OYW1lfSwgUGFyYW06ICR7cGFyYW1OYW1lfSBgKTtcbiAgICAgICAgY29uc3QgaWR4ID0gdGhpcy5uZXh0TG9jYWwrKztcbiAgICAgICAgdGhpcy5sb2NhbElkeEJ5TmFtZVtwYXJhbU5hbWVdID0gaWR4O1xuICAgICAgICB0aGlzLnBhcmFtcy5wdXNoKHtcbiAgICAgICAgICAgIHR5cGU6IHBhcmFtVHlwZVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBhZGRMb2NhbChsb2NhbE5hbWUsIGxvY2FsVHlwZSwgX2xlbmd0aCkge1xuICAgICAgICBjb25zdCBsZW5ndGggPSBfbGVuZ3RoIHx8IDE7XG4gICAgICAgIGlmICh0aGlzLmxvY2FsSWR4QnlOYW1lW2xvY2FsTmFtZV0pXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGxvY2FsIGFscmVhZHkgZXhpc3RzLiBGdW5jdGlvbjogJHt0aGlzLmZuTmFtZX0sIFBhcmFtOiAke2xvY2FsTmFtZX0gYCk7XG4gICAgICAgIGNvbnN0IGlkeCA9IHRoaXMubmV4dExvY2FsKys7XG4gICAgICAgIHRoaXMubG9jYWxJZHhCeU5hbWVbbG9jYWxOYW1lXSA9IGlkeDtcbiAgICAgICAgdGhpcy5sb2NhbHMucHVzaCh7XG4gICAgICAgICAgICB0eXBlOiBsb2NhbFR5cGUsXG4gICAgICAgICAgICBsZW5ndGg6IGxlbmd0aFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBzZXRSZXR1cm5UeXBlKHJldHVyblR5cGUpIHtcbiAgICAgICAgaWYgKHRoaXMucmV0dXJuVHlwZSlcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgcmV0dXJuVHlwZSBhbHJlYWR5IGRlZmluZWQuIEZ1bmN0aW9uOiAke3RoaXMuZm5OYW1lfWApO1xuICAgICAgICB0aGlzLnJldHVyblR5cGUgPSByZXR1cm5UeXBlO1xuICAgIH1cblxuICAgIGdldFNpZ25hdHVyZSgpIHtcbiAgICAgICAgY29uc3QgcGFyYW1zID0gWy4uLnZhcnVpbnQzMih0aGlzLnBhcmFtcy5sZW5ndGgpLCAuLi50aGlzLnBhcmFtcy5tYXAoKHApID0+IHR5cGVDb2Rlc1twLnR5cGVdKV07XG4gICAgICAgIGNvbnN0IHJldHVybnMgPSB0aGlzLnJldHVyblR5cGUgPyBbMHgwMSwgdHlwZUNvZGVzW3RoaXMucmV0dXJuVHlwZV1dIDogWzBdO1xuICAgICAgICByZXR1cm4gWzB4NjAsIC4uLnBhcmFtcywgLi4ucmV0dXJuc107XG4gICAgfVxuXG4gICAgZ2V0Qm9keSgpIHtcbiAgICAgICAgY29uc3QgbG9jYWxzID0gdGhpcy5sb2NhbHMubWFwKChsKSA9PiBbXG4gICAgICAgICAgICAuLi52YXJ1aW50MzIobC5sZW5ndGgpLFxuICAgICAgICAgICAgdHlwZUNvZGVzW2wudHlwZV1cbiAgICAgICAgXSk7XG5cbiAgICAgICAgY29uc3QgYm9keSA9IFtcbiAgICAgICAgICAgIC4uLnZhcnVpbnQzMih0aGlzLmxvY2Fscy5sZW5ndGgpLFxuICAgICAgICAgICAgLi4uW10uY29uY2F0KC4uLmxvY2FscyksXG4gICAgICAgICAgICAuLi50aGlzLmNvZGUsXG4gICAgICAgICAgICAweDBiXG4gICAgICAgIF07XG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICAuLi52YXJ1aW50MzIoYm9keS5sZW5ndGgpLFxuICAgICAgICAgICAgLi4uYm9keVxuICAgICAgICBdO1xuICAgIH1cblxuICAgIGFkZENvZGUoLi4uY29kZSkge1xuICAgICAgICB0aGlzLmNvZGUucHVzaCguLi5bXS5jb25jYXQoLi4uWy4uLmNvZGVdKSk7XG4gICAgfVxuXG4gICAgZ2V0Q29kZUJ1aWxkZXIoKSB7XG4gICAgICAgIHJldHVybiBuZXcgQ29kZUJ1aWxkZXIodGhpcyk7XG4gICAgfVxufVxuXG4vKlxuICAgIENvcHlyaWdodCAyMDE5IDBLSU1TIGFzc29jaWF0aW9uLlxuXG4gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2Ygd2FzbWJ1aWxkZXJcblxuICAgIHdhc21idWlsZGVyIGlzIGEgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdFxuICAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3JcbiAgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuXG4gICAgd2FzbWJ1aWxkZXIgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVRcbiAgICBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFlcbiAgICBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWNcbiAgICBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG5cbiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICAgIGFsb25nIHdpdGggd2FzbWJ1aWxkZXIuIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXG4qL1xuXG5cbmNsYXNzIE1vZHVsZUJ1aWxkZXIge1xuXG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHRoaXMuZnVuY3Rpb25zID0gW107XG4gICAgICAgIHRoaXMuZnVuY3Rpb25JZHhCeU5hbWUgPSB7fTtcbiAgICAgICAgdGhpcy5uSW1wb3J0RnVuY3Rpb25zID0gMDtcbiAgICAgICAgdGhpcy5uSW50ZXJuYWxGdW5jdGlvbnMgPTA7XG4gICAgICAgIHRoaXMubWVtb3J5ID0ge1xuICAgICAgICAgICAgcGFnZXNTaXplOiAxLFxuICAgICAgICAgICAgbW9kdWxlTmFtZTogXCJlbnZcIixcbiAgICAgICAgICAgIGZpZWxkTmFtZTogXCJtZW1vcnlcIlxuICAgICAgICB9O1xuICAgICAgICB0aGlzLmZyZWUgPSA4O1xuICAgICAgICB0aGlzLmRhdGFzID0gW107XG4gICAgICAgIHRoaXMubW9kdWxlcyA9IHt9O1xuICAgICAgICB0aGlzLmV4cG9ydHMgPSBbXTtcbiAgICAgICAgdGhpcy5mdW5jdGlvbnNUYWJsZSA9IFtdO1xuICAgIH1cblxuICAgIGJ1aWxkKCkge1xuICAgICAgICB0aGlzLl9zZXRTaWduYXR1cmVzKCk7XG4gICAgICAgIHJldHVybiBuZXcgVWludDhBcnJheShbXG4gICAgICAgICAgICAuLi51MzIoMHg2ZDczNjEwMCksXG4gICAgICAgICAgICAuLi51MzIoMSksXG4gICAgICAgICAgICAuLi50aGlzLl9idWlsZFR5cGUoKSxcbiAgICAgICAgICAgIC4uLnRoaXMuX2J1aWxkSW1wb3J0KCksXG4gICAgICAgICAgICAuLi50aGlzLl9idWlsZEZ1bmN0aW9uRGVjbGFyYXRpb25zKCksXG4gICAgICAgICAgICAuLi50aGlzLl9idWlsZEZ1bmN0aW9uc1RhYmxlKCksXG4gICAgICAgICAgICAuLi50aGlzLl9idWlsZEV4cG9ydHMoKSxcbiAgICAgICAgICAgIC4uLnRoaXMuX2J1aWxkRWxlbWVudHMoKSxcbiAgICAgICAgICAgIC4uLnRoaXMuX2J1aWxkQ29kZSgpLFxuICAgICAgICAgICAgLi4udGhpcy5fYnVpbGREYXRhKClcbiAgICAgICAgXSk7XG4gICAgfVxuXG4gICAgYWRkRnVuY3Rpb24oZm5OYW1lKSB7XG4gICAgICAgIGlmICh0eXBlb2YodGhpcy5mdW5jdGlvbklkeEJ5TmFtZVtmbk5hbWVdKSAhPT0gXCJ1bmRlZmluZWRcIilcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgRnVuY3Rpb24gYWxyZWFkeSBkZWZpbmVkOiAke2ZuTmFtZX1gKTtcblxuICAgICAgICBjb25zdCBpZHggPSB0aGlzLmZ1bmN0aW9ucy5sZW5ndGg7XG4gICAgICAgIHRoaXMuZnVuY3Rpb25JZHhCeU5hbWVbZm5OYW1lXSA9IGlkeDtcblxuICAgICAgICB0aGlzLmZ1bmN0aW9ucy5wdXNoKG5ldyBGdW5jdGlvbkJ1aWxkZXIodGhpcywgZm5OYW1lLCBcImludGVybmFsXCIpKTtcblxuICAgICAgICB0aGlzLm5JbnRlcm5hbEZ1bmN0aW9ucysrO1xuICAgICAgICByZXR1cm4gdGhpcy5mdW5jdGlvbnNbaWR4XTtcbiAgICB9XG5cbiAgICBhZGRJaW1wb3J0RnVuY3Rpb24oZm5OYW1lLCBtb2R1bGVOYW1lLCBfZmllbGROYW1lKSB7XG4gICAgICAgIGlmICh0eXBlb2YodGhpcy5mdW5jdGlvbklkeEJ5TmFtZVtmbk5hbWVdKSAhPT0gXCJ1bmRlZmluZWRcIilcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgRnVuY3Rpb24gYWxyZWFkeSBkZWZpbmVkOiAke2ZuTmFtZX1gKTtcblxuICAgICAgICBpZiAoICAodGhpcy5mdW5jdGlvbnMubGVuZ3RoPjApXG4gICAgICAgICAgICAmJih0aGlzLmZ1bmN0aW9uc1t0aGlzLmZ1bmN0aW9ucy5sZW5ndGgtMV0udHlwZSA9PSBcImludGVybmFsXCIpKVxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbXBvcnQgZnVuY3Rpb25zIG11c3QgYmUgZGVjbGFyZWQgYmVmb3JlIGludGVybmFsOiAke2ZuTmFtZX1gKTtcblxuICAgICAgICBsZXQgZmllbGROYW1lID0gX2ZpZWxkTmFtZSB8fCBmbk5hbWU7XG5cbiAgICAgICAgY29uc3QgaWR4ID0gdGhpcy5mdW5jdGlvbnMubGVuZ3RoO1xuICAgICAgICB0aGlzLmZ1bmN0aW9uSWR4QnlOYW1lW2ZuTmFtZV0gPSBpZHg7XG5cbiAgICAgICAgdGhpcy5mdW5jdGlvbnMucHVzaChuZXcgRnVuY3Rpb25CdWlsZGVyKHRoaXMsIGZuTmFtZSwgXCJpbXBvcnRcIiwgbW9kdWxlTmFtZSwgZmllbGROYW1lKSk7XG5cbiAgICAgICAgdGhpcy5uSW1wb3J0RnVuY3Rpb25zICsrO1xuICAgICAgICByZXR1cm4gdGhpcy5mdW5jdGlvbnNbaWR4XTtcbiAgICB9XG5cbiAgICBzZXRNZW1vcnkocGFnZXNTaXplLCBtb2R1bGVOYW1lLCBmaWVsZE5hbWUpIHtcbiAgICAgICAgdGhpcy5tZW1vcnkgPSB7XG4gICAgICAgICAgICBwYWdlc1NpemU6IHBhZ2VzU2l6ZSxcbiAgICAgICAgICAgIG1vZHVsZU5hbWU6IG1vZHVsZU5hbWUgfHwgXCJlbnZcIixcbiAgICAgICAgICAgIGZpZWxkTmFtZTogZmllbGROYW1lIHx8IFwibWVtb3J5XCJcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBleHBvcnRGdW5jdGlvbihmbk5hbWUsIF9leHBvcnROYW1lKSB7XG4gICAgICAgIGNvbnN0IGV4cG9ydE5hbWUgPSBfZXhwb3J0TmFtZSB8fCBmbk5hbWU7XG4gICAgICAgIGlmICh0eXBlb2YodGhpcy5mdW5jdGlvbklkeEJ5TmFtZVtmbk5hbWVdKSA9PT0gXCJ1bmRlZmluZWRcIilcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgRnVuY3Rpb24gbm90IGRlZmluZWQ6ICR7Zm5OYW1lfWApO1xuICAgICAgICBjb25zdCBpZHggPSB0aGlzLmZ1bmN0aW9uSWR4QnlOYW1lW2ZuTmFtZV07XG4gICAgICAgIGlmIChleHBvcnROYW1lICE9IGZuTmFtZSkge1xuICAgICAgICAgICAgdGhpcy5mdW5jdGlvbklkeEJ5TmFtZVtleHBvcnROYW1lXSA9IGlkeDtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmV4cG9ydHMucHVzaCh7XG4gICAgICAgICAgICBleHBvcnROYW1lOiBleHBvcnROYW1lLFxuICAgICAgICAgICAgaWR4OiBpZHhcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgYWRkRnVuY3Rpb25Ub1RhYmxlKGZuTmFtZSkge1xuICAgICAgICBjb25zdCBpZHggPSB0aGlzLmZ1bmN0aW9uSWR4QnlOYW1lW2ZuTmFtZV07XG4gICAgICAgIHRoaXMuZnVuY3Rpb25zVGFibGUucHVzaChpZHgpO1xuICAgIH1cblxuICAgIGFkZERhdGEob2Zmc2V0LCBieXRlcykge1xuICAgICAgICB0aGlzLmRhdGFzLnB1c2goe1xuICAgICAgICAgICAgb2Zmc2V0OiBvZmZzZXQsXG4gICAgICAgICAgICBieXRlczogYnl0ZXNcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgYWxsb2MoYSwgYikge1xuICAgICAgICBsZXQgc2l6ZTtcbiAgICAgICAgbGV0IGJ5dGVzO1xuICAgICAgICBpZiAoKEFycmF5LmlzQXJyYXkoYSkgfHwgQXJyYXlCdWZmZXIuaXNWaWV3KGEpKSAmJiAodHlwZW9mKGIpID09PSBcInVuZGVmaW5lZFwiKSkge1xuICAgICAgICAgICAgc2l6ZSA9IGEubGVuZ3RoO1xuICAgICAgICAgICAgYnl0ZXMgPSBhO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgc2l6ZSA9IGE7XG4gICAgICAgICAgICBieXRlcyA9IGI7XG4gICAgICAgIH1cbiAgICAgICAgc2l6ZSA9ICgoKHNpemUtMSk+PjMpICsxKTw8MzsgICAgICAgLy8gQWxpZ24gdG8gNjQgYml0cy5cbiAgICAgICAgY29uc3QgcCA9IHRoaXMuZnJlZTtcbiAgICAgICAgdGhpcy5mcmVlICs9IHNpemU7XG4gICAgICAgIGlmIChieXRlcykge1xuICAgICAgICAgICAgdGhpcy5hZGREYXRhKHAsIGJ5dGVzKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcDtcbiAgICB9XG5cbiAgICBhbGxvY1N0cmluZyhzKSB7XG4gICAgICAgIGNvbnN0IGVuY29kZXIgPSBuZXcgZ2xvYmFsVGhpcy5UZXh0RW5jb2RlcigpO1xuICAgICAgICBjb25zdCB1aW50OGFycmF5ID0gZW5jb2Rlci5lbmNvZGUocyk7XG4gICAgICAgIHJldHVybiB0aGlzLmFsbG9jKFsuLi51aW50OGFycmF5LCAwXSk7XG4gICAgfVxuXG4gICAgX3NldFNpZ25hdHVyZXMoKSB7XG4gICAgICAgIHRoaXMuc2lnbmF0dXJlcyA9IFtdO1xuICAgICAgICBjb25zdCBzaWduYXR1cmVJZHhCeU5hbWUgPSB7fTtcbiAgICAgICAgaWYgKHRoaXMuZnVuY3Rpb25zVGFibGUubGVuZ3RoPjApIHtcbiAgICAgICAgICAgIGNvbnN0IHNpZ25hdHVyZSA9IHRoaXMuZnVuY3Rpb25zW3RoaXMuZnVuY3Rpb25zVGFibGVbMF1dLmdldFNpZ25hdHVyZSgpO1xuICAgICAgICAgICAgY29uc3Qgc2lnbmF0dXJlTmFtZSA9IFwic19cIit0b0hleFN0cmluZyhzaWduYXR1cmUpO1xuICAgICAgICAgICAgc2lnbmF0dXJlSWR4QnlOYW1lW3NpZ25hdHVyZU5hbWVdID0gMDtcbiAgICAgICAgICAgIHRoaXMuc2lnbmF0dXJlcy5wdXNoKHNpZ25hdHVyZSk7XG4gICAgICAgIH1cbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPHRoaXMuZnVuY3Rpb25zLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCBzaWduYXR1cmUgPSB0aGlzLmZ1bmN0aW9uc1tpXS5nZXRTaWduYXR1cmUoKTtcbiAgICAgICAgICAgIGNvbnN0IHNpZ25hdHVyZU5hbWUgPSBcInNfXCIrdG9IZXhTdHJpbmcoc2lnbmF0dXJlKTtcbiAgICAgICAgICAgIGlmICh0eXBlb2Yoc2lnbmF0dXJlSWR4QnlOYW1lW3NpZ25hdHVyZU5hbWVdKSA9PT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgICAgICAgICAgIHNpZ25hdHVyZUlkeEJ5TmFtZVtzaWduYXR1cmVOYW1lXSA9IHRoaXMuc2lnbmF0dXJlcy5sZW5ndGg7XG4gICAgICAgICAgICAgICAgdGhpcy5zaWduYXR1cmVzLnB1c2goc2lnbmF0dXJlKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5mdW5jdGlvbnNbaV0uc2lnbmF0dXJlSWR4ID0gc2lnbmF0dXJlSWR4QnlOYW1lW3NpZ25hdHVyZU5hbWVdO1xuICAgICAgICB9XG5cbiAgICB9XG5cbiAgICBfYnVpbGRTZWN0aW9uKHNlY3Rpb25UeXBlLCBzZWN0aW9uKSB7XG4gICAgICAgIHJldHVybiBbc2VjdGlvblR5cGUsIC4uLnZhcnVpbnQzMihzZWN0aW9uLmxlbmd0aCksIC4uLnNlY3Rpb25dO1xuICAgIH1cblxuICAgIF9idWlsZFR5cGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9idWlsZFNlY3Rpb24oXG4gICAgICAgICAgICAweDAxLFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgIC4uLnZhcnVpbnQzMih0aGlzLnNpZ25hdHVyZXMubGVuZ3RoKSxcbiAgICAgICAgICAgICAgICAuLi5bXS5jb25jYXQoLi4udGhpcy5zaWduYXR1cmVzKVxuICAgICAgICAgICAgXVxuICAgICAgICApO1xuICAgIH1cblxuICAgIF9idWlsZEltcG9ydCgpIHtcbiAgICAgICAgY29uc3QgZW50cmllcyA9IFtdO1xuICAgICAgICBlbnRyaWVzLnB1c2goW1xuICAgICAgICAgICAgLi4uc3RyaW5nKHRoaXMubWVtb3J5Lm1vZHVsZU5hbWUpLFxuICAgICAgICAgICAgLi4uc3RyaW5nKHRoaXMubWVtb3J5LmZpZWxkTmFtZSksXG4gICAgICAgICAgICAweDAyLFxuICAgICAgICAgICAgMHgwMCwgICAvL0ZsYWdzIG5vIGluaXQgdmFsdWFcbiAgICAgICAgICAgIC4uLnZhcnVpbnQzMih0aGlzLm1lbW9yeS5wYWdlc1NpemUpXG4gICAgICAgIF0pO1xuICAgICAgICBmb3IgKGxldCBpPTA7IGk8IHRoaXMubkltcG9ydEZ1bmN0aW9uczsgaSsrKSB7XG4gICAgICAgICAgICBlbnRyaWVzLnB1c2goW1xuICAgICAgICAgICAgICAgIC4uLnN0cmluZyh0aGlzLmZ1bmN0aW9uc1tpXS5tb2R1bGVOYW1lKSxcbiAgICAgICAgICAgICAgICAuLi5zdHJpbmcodGhpcy5mdW5jdGlvbnNbaV0uZmllbGROYW1lKSxcbiAgICAgICAgICAgICAgICAweDAwLFxuICAgICAgICAgICAgICAgIC4uLnZhcnVpbnQzMih0aGlzLmZ1bmN0aW9uc1tpXS5zaWduYXR1cmVJZHgpXG4gICAgICAgICAgICBdKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5fYnVpbGRTZWN0aW9uKFxuICAgICAgICAgICAgMHgwMixcbiAgICAgICAgICAgIHZhcnVpbnQzMihlbnRyaWVzLmxlbmd0aCkuY29uY2F0KC4uLmVudHJpZXMpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgX2J1aWxkRnVuY3Rpb25EZWNsYXJhdGlvbnMoKSB7XG4gICAgICAgIGNvbnN0IGVudHJpZXMgPSBbXTtcbiAgICAgICAgZm9yIChsZXQgaT10aGlzLm5JbXBvcnRGdW5jdGlvbnM7IGk8IHRoaXMubkltcG9ydEZ1bmN0aW9ucyArIHRoaXMubkludGVybmFsRnVuY3Rpb25zOyBpKyspIHtcbiAgICAgICAgICAgIGVudHJpZXMucHVzaCguLi52YXJ1aW50MzIodGhpcy5mdW5jdGlvbnNbaV0uc2lnbmF0dXJlSWR4KSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuX2J1aWxkU2VjdGlvbihcbiAgICAgICAgICAgIDB4MDMsXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgLi4udmFydWludDMyKGVudHJpZXMubGVuZ3RoKSxcbiAgICAgICAgICAgICAgICAuLi5bLi4uZW50cmllc11cbiAgICAgICAgICAgIF1cbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBfYnVpbGRGdW5jdGlvbnNUYWJsZSgpIHtcbiAgICAgICAgaWYgKHRoaXMuZnVuY3Rpb25zVGFibGUubGVuZ3RoID09IDApIHJldHVybiBbXTtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2J1aWxkU2VjdGlvbihcbiAgICAgICAgICAgIDB4MDQsXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgLi4udmFydWludDMyKDEpLFxuICAgICAgICAgICAgICAgIDB4NzAsIDAsIC4uLnZhcnVpbnQzMih0aGlzLmZ1bmN0aW9uc1RhYmxlLmxlbmd0aClcbiAgICAgICAgICAgIF1cbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBfYnVpbGRFbGVtZW50cygpIHtcbiAgICAgICAgaWYgKHRoaXMuZnVuY3Rpb25zVGFibGUubGVuZ3RoID09IDApIHJldHVybiBbXTtcbiAgICAgICAgY29uc3QgZW50cmllcyA9IFtdO1xuICAgICAgICBmb3IgKGxldCBpPTA7IGk8dGhpcy5mdW5jdGlvbnNUYWJsZS5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgZW50cmllcy5wdXNoKC4uLnZhcnVpbnQzMih0aGlzLmZ1bmN0aW9uc1RhYmxlW2ldKSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuX2J1aWxkU2VjdGlvbihcbiAgICAgICAgICAgIDB4MDksXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgLi4udmFydWludDMyKDEpLCAgICAgIC8vIDEgZW50cnlcbiAgICAgICAgICAgICAgICAuLi52YXJ1aW50MzIoMCksICAgICAgLy8gVGFibGUgKDAgaW4gTVZQKVxuICAgICAgICAgICAgICAgIDB4NDEsICAgICAgICAgICAgICAgICAgICAgICAvLyBvZmZzZXQgMFxuICAgICAgICAgICAgICAgIC4uLnZhcmludDMyKDApLFxuICAgICAgICAgICAgICAgIDB4MGIsXG4gICAgICAgICAgICAgICAgLi4udmFydWludDMyKHRoaXMuZnVuY3Rpb25zVGFibGUubGVuZ3RoKSwgLy8gTnVtYmVyIG9mIGVsZW1lbnRzXG4gICAgICAgICAgICAgICAgLi4uWy4uLmVudHJpZXNdXG4gICAgICAgICAgICBdXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgX2J1aWxkRXhwb3J0cygpIHtcbiAgICAgICAgY29uc3QgZW50cmllcyA9IFtdO1xuICAgICAgICBmb3IgKGxldCBpPTA7IGk8IHRoaXMuZXhwb3J0cy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgZW50cmllcy5wdXNoKFtcbiAgICAgICAgICAgICAgICAuLi5zdHJpbmcodGhpcy5leHBvcnRzW2ldLmV4cG9ydE5hbWUpLFxuICAgICAgICAgICAgICAgIDB4MDAsXG4gICAgICAgICAgICAgICAgLi4udmFydWludDMyKHRoaXMuZXhwb3J0c1tpXS5pZHgpXG4gICAgICAgICAgICBdKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5fYnVpbGRTZWN0aW9uKFxuICAgICAgICAgICAgMHgwNyxcbiAgICAgICAgICAgIHZhcnVpbnQzMihlbnRyaWVzLmxlbmd0aCkuY29uY2F0KC4uLmVudHJpZXMpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgX2J1aWxkQ29kZSgpIHtcbiAgICAgICAgY29uc3QgZW50cmllcyA9IFtdO1xuICAgICAgICBmb3IgKGxldCBpPXRoaXMubkltcG9ydEZ1bmN0aW9uczsgaTwgdGhpcy5uSW1wb3J0RnVuY3Rpb25zICsgdGhpcy5uSW50ZXJuYWxGdW5jdGlvbnM7IGkrKykge1xuICAgICAgICAgICAgZW50cmllcy5wdXNoKHRoaXMuZnVuY3Rpb25zW2ldLmdldEJvZHkoKSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuX2J1aWxkU2VjdGlvbihcbiAgICAgICAgICAgIDB4MGEsXG4gICAgICAgICAgICB2YXJ1aW50MzIoZW50cmllcy5sZW5ndGgpLmNvbmNhdCguLi5lbnRyaWVzKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIF9idWlsZERhdGEoKSB7XG4gICAgICAgIGNvbnN0IGVudHJpZXMgPSBbXTtcbiAgICAgICAgZW50cmllcy5wdXNoKFtcbiAgICAgICAgICAgIDB4MDAsXG4gICAgICAgICAgICAweDQxLFxuICAgICAgICAgICAgMHgwMCxcbiAgICAgICAgICAgIDB4MGIsXG4gICAgICAgICAgICAweDA0LFxuICAgICAgICAgICAgLi4udTMyKHRoaXMuZnJlZSlcbiAgICAgICAgXSk7XG4gICAgICAgIGZvciAobGV0IGk9MDsgaTwgdGhpcy5kYXRhcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgZW50cmllcy5wdXNoKFtcbiAgICAgICAgICAgICAgICAweDAwLFxuICAgICAgICAgICAgICAgIDB4NDEsXG4gICAgICAgICAgICAgICAgLi4udmFyaW50MzIodGhpcy5kYXRhc1tpXS5vZmZzZXQpLFxuICAgICAgICAgICAgICAgIDB4MGIsXG4gICAgICAgICAgICAgICAgLi4udmFydWludDMyKHRoaXMuZGF0YXNbaV0uYnl0ZXMubGVuZ3RoKSxcbiAgICAgICAgICAgICAgICAuLi50aGlzLmRhdGFzW2ldLmJ5dGVzLFxuICAgICAgICAgICAgXSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuX2J1aWxkU2VjdGlvbihcbiAgICAgICAgICAgIDB4MGIsXG4gICAgICAgICAgICB2YXJ1aW50MzIoZW50cmllcy5sZW5ndGgpLmNvbmNhdCguLi5lbnRyaWVzKVxuICAgICAgICApO1xuICAgIH1cblxufVxuXG5nbG9iYWxUaGlzLmN1cnZlX2JuMTI4ID0gbnVsbDtcblxuYXN5bmMgZnVuY3Rpb24gYnVpbGRCbjEyOChzaW5nbGVUaHJlYWQsIHBsdWdpbnMpIHtcbiAgICBpZiAoKCFzaW5nbGVUaHJlYWQpICYmIChnbG9iYWxUaGlzLmN1cnZlX2JuMTI4KSkgcmV0dXJuIGdsb2JhbFRoaXMuY3VydmVfYm4xMjg7XG5cbiAgICBjb25zdCBtb2R1bGVCdWlsZGVyID0gbmV3IE1vZHVsZUJ1aWxkZXIoKTtcbiAgICBtb2R1bGVCdWlsZGVyLnNldE1lbW9yeSgyNSk7XG4gICAgYnVpbGRCbjEyOCQxKG1vZHVsZUJ1aWxkZXIpO1xuXG4gICAgaWYgKHBsdWdpbnMpIHBsdWdpbnMobW9kdWxlQnVpbGRlcik7XG5cbiAgICBjb25zdCBibjEyOHdhc20gPSB7fTtcblxuICAgIGJuMTI4d2FzbS5jb2RlID0gbW9kdWxlQnVpbGRlci5idWlsZCgpO1xuICAgIGJuMTI4d2FzbS5wcSA9IG1vZHVsZUJ1aWxkZXIubW9kdWxlcy5mMW0ucHE7XG4gICAgYm4xMjh3YXNtLnByID0gbW9kdWxlQnVpbGRlci5tb2R1bGVzLmZybS5wcTtcbiAgICBibjEyOHdhc20ucEcxZ2VuID0gbW9kdWxlQnVpbGRlci5tb2R1bGVzLmJuMTI4LnBHMWdlbjtcbiAgICBibjEyOHdhc20ucEcxemVybyA9IG1vZHVsZUJ1aWxkZXIubW9kdWxlcy5ibjEyOC5wRzF6ZXJvO1xuICAgIGJuMTI4d2FzbS5wRzFiID0gbW9kdWxlQnVpbGRlci5tb2R1bGVzLmJuMTI4LnBHMWI7XG4gICAgYm4xMjh3YXNtLnBHMmdlbiA9IG1vZHVsZUJ1aWxkZXIubW9kdWxlcy5ibjEyOC5wRzJnZW47XG4gICAgYm4xMjh3YXNtLnBHMnplcm8gPSBtb2R1bGVCdWlsZGVyLm1vZHVsZXMuYm4xMjgucEcyemVybztcbiAgICBibjEyOHdhc20ucEcyYiA9IG1vZHVsZUJ1aWxkZXIubW9kdWxlcy5ibjEyOC5wRzJiO1xuICAgIGJuMTI4d2FzbS5wT25lVCA9IG1vZHVsZUJ1aWxkZXIubW9kdWxlcy5ibjEyOC5wT25lVDtcbiAgICBibjEyOHdhc20ucHJlUFNpemUgPSBtb2R1bGVCdWlsZGVyLm1vZHVsZXMuYm4xMjgucHJlUFNpemU7XG4gICAgYm4xMjh3YXNtLnByZVFTaXplID0gbW9kdWxlQnVpbGRlci5tb2R1bGVzLmJuMTI4LnByZVFTaXplO1xuICAgIGJuMTI4d2FzbS5uOHEgPSAzMjtcbiAgICBibjEyOHdhc20ubjhyID0gMzI7XG4gICAgYm4xMjh3YXNtLnEgPSBtb2R1bGVCdWlsZGVyLm1vZHVsZXMuYm4xMjgucTtcbiAgICBibjEyOHdhc20uciA9IG1vZHVsZUJ1aWxkZXIubW9kdWxlcy5ibjEyOC5yO1xuXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgICBuYW1lOiBcImJuMTI4XCIsXG4gICAgICAgIHdhc206IGJuMTI4d2FzbSxcbiAgICAgICAgcTogZShcIjIxODg4MjQyODcxODM5Mjc1MjIyMjQ2NDA1NzQ1MjU3Mjc1MDg4Njk2MzExMTU3Mjk3ODIzNjYyNjg5MDM3ODk0NjQ1MjI2MjA4NTgzXCIpLFxuICAgICAgICByOiBlKFwiMjE4ODgyNDI4NzE4MzkyNzUyMjIyNDY0MDU3NDUyNTcyNzUwODg1NDgzNjQ0MDA0MTYwMzQzNDM2OTgyMDQxODY1NzU4MDg0OTU2MTdcIiksXG4gICAgICAgIG44cTogMzIsXG4gICAgICAgIG44cjogMzIsXG4gICAgICAgIGNvZmFjdG9yRzI6IGUoXCIzMDY0NGU3MmUxMzFhMDI5Yjg1MDQ1YjY4MTgxNTg1ZTA2Y2VlY2RhNTcyYTI0ODkzNDVmMjI5OWMwZjlmYThkXCIsIDE2KSxcbiAgICAgICAgc2luZ2xlVGhyZWFkOiBzaW5nbGVUaHJlYWQgPyB0cnVlIDogZmFsc2VcbiAgICB9O1xuXG4gICAgY29uc3QgY3VydmUgPSBhd2FpdCBidWlsZEVuZ2luZShwYXJhbXMpO1xuICAgIGN1cnZlLnRlcm1pbmF0ZSA9IGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKCFwYXJhbXMuc2luZ2xlVGhyZWFkKSB7XG4gICAgICAgICAgICBnbG9iYWxUaGlzLmN1cnZlX2JuMTI4ID0gbnVsbDtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMudG0udGVybWluYXRlKCk7XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgaWYgKCFzaW5nbGVUaHJlYWQpIHtcbiAgICAgICAgZ2xvYmFsVGhpcy5jdXJ2ZV9ibjEyOCA9IGN1cnZlO1xuICAgIH1cblxuICAgIHJldHVybiBjdXJ2ZTtcbn1cblxuZ2xvYmFsVGhpcy5jdXJ2ZV9ibHMxMjM4MSA9IG51bGw7XG5cbmFzeW5jIGZ1bmN0aW9uIGJ1aWxkQmxzMTIzODEoc2luZ2xlVGhyZWFkLCBwbHVnaW5zKSB7XG4gICAgaWYgKCghc2luZ2xlVGhyZWFkKSAmJiAoZ2xvYmFsVGhpcy5jdXJ2ZV9ibHMxMjM4MSkpIHJldHVybiBnbG9iYWxUaGlzLmN1cnZlX2JsczEyMzgxO1xuXG4gICAgY29uc3QgbW9kdWxlQnVpbGRlciA9IG5ldyBNb2R1bGVCdWlsZGVyKCk7XG4gICAgbW9kdWxlQnVpbGRlci5zZXRNZW1vcnkoMjUpO1xuICAgIGJ1aWxkQmxzMTIzODEkMShtb2R1bGVCdWlsZGVyKTtcblxuICAgIGlmIChwbHVnaW5zKSBwbHVnaW5zKG1vZHVsZUJ1aWxkZXIpO1xuXG4gICAgY29uc3QgYmxzMTIzODF3YXNtID0ge307XG5cbiAgICBibHMxMjM4MXdhc20uY29kZSA9IG1vZHVsZUJ1aWxkZXIuYnVpbGQoKTtcbiAgICBibHMxMjM4MXdhc20ucHEgPSBtb2R1bGVCdWlsZGVyLm1vZHVsZXMuZjFtLnBxO1xuICAgIGJsczEyMzgxd2FzbS5wciA9IG1vZHVsZUJ1aWxkZXIubW9kdWxlcy5mcm0ucHE7XG4gICAgYmxzMTIzODF3YXNtLnBHMWdlbiA9IG1vZHVsZUJ1aWxkZXIubW9kdWxlcy5ibHMxMjM4MS5wRzFnZW47XG4gICAgYmxzMTIzODF3YXNtLnBHMXplcm8gPSBtb2R1bGVCdWlsZGVyLm1vZHVsZXMuYmxzMTIzODEucEcxemVybztcbiAgICBibHMxMjM4MXdhc20ucEcxYiA9IG1vZHVsZUJ1aWxkZXIubW9kdWxlcy5ibHMxMjM4MS5wRzFiO1xuICAgIGJsczEyMzgxd2FzbS5wRzJnZW4gPSBtb2R1bGVCdWlsZGVyLm1vZHVsZXMuYmxzMTIzODEucEcyZ2VuO1xuICAgIGJsczEyMzgxd2FzbS5wRzJ6ZXJvID0gbW9kdWxlQnVpbGRlci5tb2R1bGVzLmJsczEyMzgxLnBHMnplcm87XG4gICAgYmxzMTIzODF3YXNtLnBHMmIgPSBtb2R1bGVCdWlsZGVyLm1vZHVsZXMuYmxzMTIzODEucEcyYjtcbiAgICBibHMxMjM4MXdhc20ucE9uZVQgPSBtb2R1bGVCdWlsZGVyLm1vZHVsZXMuYmxzMTIzODEucE9uZVQ7XG4gICAgYmxzMTIzODF3YXNtLnByZVBTaXplID0gbW9kdWxlQnVpbGRlci5tb2R1bGVzLmJsczEyMzgxLnByZVBTaXplO1xuICAgIGJsczEyMzgxd2FzbS5wcmVRU2l6ZSA9IG1vZHVsZUJ1aWxkZXIubW9kdWxlcy5ibHMxMjM4MS5wcmVRU2l6ZTtcbiAgICBibHMxMjM4MXdhc20ubjhxID0gNDg7XG4gICAgYmxzMTIzODF3YXNtLm44ciA9IDMyO1xuICAgIGJsczEyMzgxd2FzbS5xID0gbW9kdWxlQnVpbGRlci5tb2R1bGVzLmJsczEyMzgxLnE7XG4gICAgYmxzMTIzODF3YXNtLnIgPSBtb2R1bGVCdWlsZGVyLm1vZHVsZXMuYmxzMTIzODEucjtcblxuXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgICBuYW1lOiBcImJsczEyMzgxXCIsXG4gICAgICAgIHdhc206IGJsczEyMzgxd2FzbSxcbiAgICAgICAgcTogZShcIjFhMDExMWVhMzk3ZmU2OWE0YjFiYTdiNjQzNGJhY2Q3NjQ3NzRiODRmMzg1MTJiZjY3MzBkMmEwZjZiMGY2MjQxZWFiZmZmZWIxNTNmZmZmYjlmZWZmZmZmZmZmYWFhYlwiLCAxNiksXG4gICAgICAgIHI6IGUoXCI3M2VkYTc1MzI5OWQ3ZDQ4MzMzOWQ4MDgwOWExZDgwNTUzYmRhNDAyZmZmZTViZmVmZmZmZmZmZjAwMDAwMDAxXCIsIDE2KSxcbiAgICAgICAgbjhxOiA0OCxcbiAgICAgICAgbjhyOiAzMixcbiAgICAgICAgY29mYWN0b3JHMTogZShcIjB4Mzk2YzhjMDA1NTU1ZTE1NjhjMDBhYWFiMDAwMGFhYWJcIiwgMTYpLFxuICAgICAgICBjb2ZhY3RvckcyOiBlKFwiMHg1ZDU0M2E5NTQxNGU3ZjEwOTFkNTA3OTI4NzZhMjAyY2Q5MWRlNDU0NzA4NWFiYWE2OGEyMDViMmU1YTdkZGZhNjI4ZjFjYjRkOWU4MmVmMjE1MzdlMjkzYTY2OTFhZTE2MTZlYzZlNzg2ZjBjNzBjZjFjMzhlMzFjNzIzOGU1XCIsIDE2KSxcbiAgICAgICAgc2luZ2xlVGhyZWFkOiBzaW5nbGVUaHJlYWQgPyB0cnVlIDogZmFsc2VcbiAgICB9O1xuXG4gICAgY29uc3QgY3VydmUgPSBhd2FpdCBidWlsZEVuZ2luZShwYXJhbXMpO1xuICAgIGN1cnZlLnRlcm1pbmF0ZSA9IGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKCFwYXJhbXMuc2luZ2xlVGhyZWFkKSB7XG4gICAgICAgICAgICBnbG9iYWxUaGlzLmN1cnZlX2JsczEyMzgxID0gbnVsbDtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMudG0udGVybWluYXRlKCk7XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgaWYgKCFzaW5nbGVUaHJlYWQpIHtcbiAgICAgICAgZ2xvYmFsVGhpcy5jdXJ2ZV9ibHMxMjM4MSA9IGN1cnZlO1xuICAgIH1cblxuICAgIHJldHVybiBjdXJ2ZTtcbn1cblxuY29uc3QgYmxzMTIzODFyID0gZShcIjczZWRhNzUzMjk5ZDdkNDgzMzM5ZDgwODA5YTFkODA1NTNiZGE0MDJmZmZlNWJmZWZmZmZmZmZmMDAwMDAwMDFcIiwgMTYpO1xuY29uc3QgYm4xMjhyID0gZShcIjIxODg4MjQyODcxODM5Mjc1MjIyMjQ2NDA1NzQ1MjU3Mjc1MDg4NTQ4MzY0NDAwNDE2MDM0MzQzNjk4MjA0MTg2NTc1ODA4NDk1NjE3XCIpO1xuXG5jb25zdCBibHMxMjM4MXEgPSBlKFwiMWEwMTExZWEzOTdmZTY5YTRiMWJhN2I2NDM0YmFjZDc2NDc3NGI4NGYzODUxMmJmNjczMGQyYTBmNmIwZjYyNDFlYWJmZmZlYjE1M2ZmZmZiOWZlZmZmZmZmZmZhYWFiXCIsIDE2KTtcbmNvbnN0IGJuMTI4cSA9IGUoXCIyMTg4ODI0Mjg3MTgzOTI3NTIyMjI0NjQwNTc0NTI1NzI3NTA4ODY5NjMxMTE1NzI5NzgyMzY2MjY4OTAzNzg5NDY0NTIyNjIwODU4M1wiKTtcblxuYXN5bmMgZnVuY3Rpb24gZ2V0Q3VydmVGcm9tUihyLCBzaW5nbGVUaHJlYWQsIHBsdWdpbnMpIHtcbiAgICBsZXQgY3VydmU7XG4gICAgaWYgKGVxKHIsIGJuMTI4cikpIHtcbiAgICAgICAgY3VydmUgPSBhd2FpdCBidWlsZEJuMTI4KHNpbmdsZVRocmVhZCwgcGx1Z2lucyk7XG4gICAgfSBlbHNlIGlmIChlcShyLCBibHMxMjM4MXIpKSB7XG4gICAgICAgIGN1cnZlID0gYXdhaXQgYnVpbGRCbHMxMjM4MShzaW5nbGVUaHJlYWQsIHBsdWdpbnMpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgQ3VydmUgbm90IHN1cHBvcnRlZDogJHt0b1N0cmluZyhyKX1gKTtcbiAgICB9XG4gICAgcmV0dXJuIGN1cnZlO1xufVxuXG5hc3luYyBmdW5jdGlvbiBnZXRDdXJ2ZUZyb21RKHEsIHNpbmdsZVRocmVhZCwgcGx1Z2lucykge1xuICAgIGxldCBjdXJ2ZTtcbiAgICBpZiAoZXEocSwgYm4xMjhxKSkge1xuICAgICAgICBjdXJ2ZSA9IGF3YWl0IGJ1aWxkQm4xMjgoc2luZ2xlVGhyZWFkLCBwbHVnaW5zKTtcbiAgICB9IGVsc2UgaWYgKGVxKHEsIGJsczEyMzgxcSkpIHtcbiAgICAgICAgY3VydmUgPSBhd2FpdCBidWlsZEJsczEyMzgxKHNpbmdsZVRocmVhZCwgcGx1Z2lucyk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBDdXJ2ZSBub3Qgc3VwcG9ydGVkOiAke3RvU3RyaW5nKHEsIDE2KX1gKTtcbiAgICB9XG4gICAgcmV0dXJuIGN1cnZlO1xufVxuXG5hc3luYyBmdW5jdGlvbiBnZXRDdXJ2ZUZyb21OYW1lKG5hbWUsIHNpbmdsZVRocmVhZCwgcGx1Z2lucykge1xuICAgIGxldCBjdXJ2ZTtcbiAgICBjb25zdCBub3JtTmFtZSA9IG5vcm1hbGl6ZU5hbWUobmFtZSk7XG4gICAgaWYgKFtcIkJOMTI4XCIsIFwiQk4yNTRcIiwgXCJBTFRCTjEyOFwiXS5pbmRleE9mKG5vcm1OYW1lKSA+PSAwKSB7XG4gICAgICAgIGN1cnZlID0gYXdhaXQgYnVpbGRCbjEyOChzaW5nbGVUaHJlYWQsIHBsdWdpbnMpO1xuICAgIH0gZWxzZSBpZiAoW1wiQkxTMTIzODFcIl0uaW5kZXhPZihub3JtTmFtZSkgPj0gMCkge1xuICAgICAgICBjdXJ2ZSA9IGF3YWl0IGJ1aWxkQmxzMTIzODEoc2luZ2xlVGhyZWFkLCBwbHVnaW5zKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEN1cnZlIG5vdCBzdXBwb3J0ZWQ6ICR7bmFtZX1gKTtcbiAgICB9XG4gICAgcmV0dXJuIGN1cnZlO1xuXG4gICAgZnVuY3Rpb24gbm9ybWFsaXplTmFtZShuKSB7XG4gICAgICAgIHJldHVybiBuLnRvVXBwZXJDYXNlKCkubWF0Y2goL1tBLVphLXowLTldKy9nKS5qb2luKFwiXCIpO1xuICAgIH1cblxufVxuXG5jb25zdCBTY2FsYXI9X1NjYWxhcjtcbmNvbnN0IHV0aWxzID0gX3V0aWxzO1xuXG5leHBvcnQgeyBCaWdCdWZmZXIsIENoYUNoYSwgRUMsIFpxRmllbGQgYXMgRjFGaWVsZCwgRjJGaWVsZCwgRjNGaWVsZCwgUG9sRmllbGQsIFNjYWxhciwgWnFGaWVsZCwgYnVpbGRCbHMxMjM4MSwgYnVpbGRCbjEyOCwgZ2V0Q3VydmVGcm9tTmFtZSwgZ2V0Q3VydmVGcm9tUSwgZ2V0Q3VydmVGcm9tUiwgdXRpbHMgfTtcbiIsIlxuaW1wb3J0IGZzIGZyb21cImZzXCI7XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBvcGVuKGZpbGVOYW1lLCBvcGVuRmxhZ3MsIGNhY2hlU2l6ZSwgcGFnZVNpemUpIHtcbiAgICBjYWNoZVNpemUgPSBjYWNoZVNpemUgfHwgNDA5Nio2NDtcbiAgICBpZiAodHlwZW9mIG9wZW5GbGFncyAhPT0gXCJudW1iZXJcIiAmJiBbXCJ3K1wiLCBcInd4K1wiLCBcInJcIiwgXCJheCtcIiwgXCJhK1wiXS5pbmRleE9mKG9wZW5GbGFncykgPDApXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgb3BlbiBvcHRpb25cIik7XG4gICAgY29uc3QgZmQgPWF3YWl0IGZzLnByb21pc2VzLm9wZW4oZmlsZU5hbWUsIG9wZW5GbGFncyk7XG5cbiAgICBjb25zdCBzdGF0cyA9IGF3YWl0IGZkLnN0YXQoKTtcblxuICAgIHJldHVybiAgbmV3IEZhc3RGaWxlKGZkLCBzdGF0cywgY2FjaGVTaXplLCBwYWdlU2l6ZSwgZmlsZU5hbWUpO1xufVxuXG5cbmNsYXNzIEZhc3RGaWxlIHtcblxuICAgIGNvbnN0cnVjdG9yKGZkLCBzdGF0cywgY2FjaGVTaXplLCBwYWdlU2l6ZSwgZmlsZU5hbWUpIHtcbiAgICAgICAgdGhpcy5maWxlTmFtZSA9IGZpbGVOYW1lO1xuICAgICAgICB0aGlzLmZkID0gZmQ7XG4gICAgICAgIHRoaXMucG9zID0gMDtcbiAgICAgICAgdGhpcy5wYWdlU2l6ZSA9IHBhZ2VTaXplIHx8ICgxIDw8IDgpO1xuICAgICAgICB3aGlsZSAodGhpcy5wYWdlU2l6ZSA8IHN0YXRzLmJsa3NpemUpIHtcbiAgICAgICAgICAgIHRoaXMucGFnZVNpemUgKj0gMjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnRvdGFsU2l6ZSA9IHN0YXRzLnNpemU7XG4gICAgICAgIHRoaXMudG90YWxQYWdlcyA9IE1hdGguZmxvb3IoKHN0YXRzLnNpemUgLTEpIC8gdGhpcy5wYWdlU2l6ZSkrMTtcbiAgICAgICAgdGhpcy5tYXhQYWdlc0xvYWRlZCA9IE1hdGguZmxvb3IoIGNhY2hlU2l6ZSAvIHRoaXMucGFnZVNpemUpKzE7XG4gICAgICAgIHRoaXMucGFnZXMgPSB7fTtcbiAgICAgICAgdGhpcy5wZW5kaW5nTG9hZHMgPSBbXTtcbiAgICAgICAgdGhpcy53cml0aW5nID0gZmFsc2U7XG4gICAgICAgIHRoaXMucmVhZGluZyA9IGZhbHNlO1xuICAgICAgICB0aGlzLmF2QnVmZnMgPSBbXTtcbiAgICAgICAgdGhpcy5oaXN0b3J5ID0ge307XG4gICAgfVxuXG4gICAgX2xvYWRQYWdlKHApIHtcbiAgICAgICAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gICAgICAgIGNvbnN0IFAgPSBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KT0+IHtcbiAgICAgICAgICAgIHNlbGYucGVuZGluZ0xvYWRzLnB1c2goe1xuICAgICAgICAgICAgICAgIHBhZ2U6IHAsXG4gICAgICAgICAgICAgICAgcmVzb2x2ZTogcmVzb2x2ZSxcbiAgICAgICAgICAgICAgICByZWplY3Q6IHJlamVjdFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgICBzZWxmLl9fc3RhdHVzUGFnZShcIkFmdGVyIExvYWQgcmVxdWVzdDogXCIsIHApO1xuICAgICAgICByZXR1cm4gUDtcbiAgICB9XG5cbiAgICBfX3N0YXR1c1BhZ2UocywgcCkge1xuICAgICAgICBjb25zdCBsb2dFbnRyeSA9IFtdO1xuICAgICAgICBjb25zdCBzZWxmPXRoaXM7XG4gICAgICAgIGlmICghc2VsZi5sb2dIaXN0b3J5KSByZXR1cm47XG4gICAgICAgIGxvZ0VudHJ5LnB1c2goXCI9PVwiICsgcysgXCIgXCIgK3ApO1xuICAgICAgICBsZXQgUyA9IFwiXCI7XG4gICAgICAgIGZvciAobGV0IGk9MDsgaTxzZWxmLnBlbmRpbmdMb2Fkcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgaWYgKHNlbGYucGVuZGluZ0xvYWRzW2ldLnBhZ2UgPT0gcCkgUyA9IFMgKyBcIiBcIiArIGk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKFMpIGxvZ0VudHJ5LnB1c2goXCJQZW5kaW5nIGxvYWRzOlwiK1MpO1xuICAgICAgICBpZiAodHlwZW9mIHNlbGYucGFnZXNbcF0gIT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgICAgICAgY29uc3QgcGFnZSA9IHNlbGYucGFnZXNbcF07XG4gICAgICAgICAgICBsb2dFbnRyeS5wdXNoKFwiTG9hZGVkXCIpO1xuICAgICAgICAgICAgbG9nRW50cnkucHVzaChcInBlbmRpbmdPcHM6IFwiK3BhZ2UucGVuZGluZ09wcyk7XG4gICAgICAgICAgICBpZiAocGFnZS5sb2FkaW5nKSBsb2dFbnRyeS5wdXNoKFwibG9hZGluZzogXCIrcGFnZS5sb2FkaW5nKTtcbiAgICAgICAgICAgIGlmIChwYWdlLndyaXRpbmcpIGxvZ0VudHJ5LnB1c2goXCJ3cml0aW5nXCIpO1xuICAgICAgICAgICAgaWYgKHBhZ2UuZGlydHkpIGxvZ0VudHJ5LnB1c2goXCJkaXJ0eVwiKTtcbiAgICAgICAgfVxuICAgICAgICBsb2dFbnRyeS5wdXNoKFwiPT1cIik7XG5cbiAgICAgICAgaWYgKCFzZWxmLmhpc3RvcnlbcF0pIHNlbGYuaGlzdG9yeVtwXSA9IFtdO1xuICAgICAgICBzZWxmLmhpc3RvcnlbcF0ucHVzaChsb2dFbnRyeSk7XG4gICAgfVxuXG4gICAgX19wcmludEhpc3RvcnkocCkge1xuICAgICAgICBjb25zdCBzZWxmID0gdGhpcztcbiAgICAgICAgaWYgKCFzZWxmLmhpc3RvcnlbcF0pIGNvbnNvbGUubG9nKFwiRW1wdHkgSGlzdG9yeSBcIiwgcCk7XG4gICAgICAgIGNvbnNvbGUubG9nKFwiSGlzdG9yeSBcIitwKTtcbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPHNlbGYuaGlzdG9yeVtwXS5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgZm9yIChsZXQgaj0wOyBqPHNlbGYuaGlzdG9yeVtwXVtpXS5sZW5ndGg7IGorKykge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiLT4gXCIgKyBzZWxmLmhpc3RvcnlbcF1baV1bal0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG5cblxuICAgIF90cmlnZ2VyTG9hZCgpIHtcbiAgICAgICAgY29uc3Qgc2VsZiA9IHRoaXM7XG5cbiAgICAgICAgaWYgKHNlbGYucmVhZGluZykgcmV0dXJuO1xuICAgICAgICBpZiAoc2VsZi5wZW5kaW5nTG9hZHMubGVuZ3RoPT0wKSByZXR1cm47XG5cbiAgICAgICAgY29uc3QgcGFnZUlkeHMgPSBPYmplY3Qua2V5cyhzZWxmLnBhZ2VzKTtcblxuICAgICAgICBjb25zdCBkZWxldGFibGVQYWdlcyA9IFtdO1xuICAgICAgICBmb3IgKGxldCBpPTA7IGk8cGFnZUlkeHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IHBhZ2UgPSBzZWxmLnBhZ2VzW3BhcnNlSW50KHBhZ2VJZHhzW2ldKV07XG4gICAgICAgICAgICBpZiAoKHBhZ2UuZGlydHkgPT0gZmFsc2UpJiYocGFnZS5wZW5kaW5nT3BzPT0wKSYmKCFwYWdlLndyaXRpbmcpJiYoIXBhZ2UubG9hZGluZykpIGRlbGV0YWJsZVBhZ2VzLnB1c2gocGFyc2VJbnQocGFnZUlkeHNbaV0pKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBmcmVlUGFnZXMgPSBzZWxmLm1heFBhZ2VzTG9hZGVkIC0gcGFnZUlkeHMubGVuZ3RoO1xuXG4gICAgICAgIGNvbnN0IG9wcyA9IFtdO1xuXG4gICAgICAgIC8vIHdoaWxlIHBlbmRpbmcgbG9hZHMgYW5kXG4gICAgICAgIC8vICAgICB0aGUgcGFnZSBpcyBsb2FkZWQgb3IgSSBjYW4gcmVjb3ZlciBvbmUuXG4gICAgICAgIHdoaWxlIChcbiAgICAgICAgICAgIChzZWxmLnBlbmRpbmdMb2Fkcy5sZW5ndGg+MCkgJiZcbiAgICAgICAgICAgICggICAodHlwZW9mIHNlbGYucGFnZXNbc2VsZi5wZW5kaW5nTG9hZHNbMF0ucGFnZV0gIT0gXCJ1bmRlZmluZWRcIiApXG4gICAgICAgICAgICAgIHx8KCAgKGZyZWVQYWdlcz4wKVxuICAgICAgICAgICAgICAgICB8fChkZWxldGFibGVQYWdlcy5sZW5ndGg+MCkpKSkge1xuICAgICAgICAgICAgY29uc3QgbG9hZCA9IHNlbGYucGVuZGluZ0xvYWRzLnNoaWZ0KCk7XG4gICAgICAgICAgICBpZiAodHlwZW9mIHNlbGYucGFnZXNbbG9hZC5wYWdlXSAhPSBcInVuZGVmaW5lZFwiKSB7XG4gICAgICAgICAgICAgICAgc2VsZi5wYWdlc1tsb2FkLnBhZ2VdLnBlbmRpbmdPcHMgKys7XG4gICAgICAgICAgICAgICAgY29uc3QgaWR4ID0gZGVsZXRhYmxlUGFnZXMuaW5kZXhPZihsb2FkLnBhZ2UpO1xuICAgICAgICAgICAgICAgIGlmIChpZHg+PTApIGRlbGV0YWJsZVBhZ2VzLnNwbGljZShpZHgsIDEpO1xuICAgICAgICAgICAgICAgIGlmIChzZWxmLnBhZ2VzW2xvYWQucGFnZV0ubG9hZGluZykge1xuICAgICAgICAgICAgICAgICAgICBzZWxmLnBhZ2VzW2xvYWQucGFnZV0ubG9hZGluZy5wdXNoKGxvYWQpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGxvYWQucmVzb2x2ZSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBzZWxmLl9fc3RhdHVzUGFnZShcIkFmdGVyIExvYWQgKGNhY2hlZCk6IFwiLCBsb2FkLnBhZ2UpO1xuXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmIChmcmVlUGFnZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgZnJlZVBhZ2VzLS07XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZnAgPSBkZWxldGFibGVQYWdlcy5zaGlmdCgpO1xuICAgICAgICAgICAgICAgICAgICBzZWxmLl9fc3RhdHVzUGFnZShcIkJlZm9yZSBVbmxvYWQ6IFwiLCBmcCk7XG4gICAgICAgICAgICAgICAgICAgIHNlbGYuYXZCdWZmcy51bnNoaWZ0KHNlbGYucGFnZXNbZnBdKTtcbiAgICAgICAgICAgICAgICAgICAgZGVsZXRlIHNlbGYucGFnZXNbZnBdO1xuICAgICAgICAgICAgICAgICAgICBzZWxmLl9fc3RhdHVzUGFnZShcIkFmdGVyIFVubG9hZDogXCIsIGZwKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAobG9hZC5wYWdlPj1zZWxmLnRvdGFsUGFnZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgc2VsZi5wYWdlc1tsb2FkLnBhZ2VdID0gZ2V0TmV3UGFnZSgpO1xuICAgICAgICAgICAgICAgICAgICBsb2FkLnJlc29sdmUoKTtcbiAgICAgICAgICAgICAgICAgICAgc2VsZi5fX3N0YXR1c1BhZ2UoXCJBZnRlciBMb2FkIChuZXcpOiBcIiwgbG9hZC5wYWdlKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBzZWxmLnJlYWRpbmcgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICBzZWxmLnBhZ2VzW2xvYWQucGFnZV0gPSBnZXROZXdQYWdlKCk7XG4gICAgICAgICAgICAgICAgICAgIHNlbGYucGFnZXNbbG9hZC5wYWdlXS5sb2FkaW5nID0gW2xvYWRdO1xuICAgICAgICAgICAgICAgICAgICBvcHMucHVzaChzZWxmLmZkLnJlYWQoc2VsZi5wYWdlc1tsb2FkLnBhZ2VdLmJ1ZmYsIDAsIHNlbGYucGFnZVNpemUsIGxvYWQucGFnZSpzZWxmLnBhZ2VTaXplKS50aGVuKChyZXMpPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5wYWdlc1tsb2FkLnBhZ2VdLnNpemUgPSByZXMuYnl0ZXNSZWFkO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbG9hZGluZyA9IHNlbGYucGFnZXNbbG9hZC5wYWdlXS5sb2FkaW5nO1xuICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlIHNlbGYucGFnZXNbbG9hZC5wYWdlXS5sb2FkaW5nO1xuICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaT0wOyBpPGxvYWRpbmcubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2FkaW5nW2ldLnJlc29sdmUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX19zdGF0dXNQYWdlKFwiQWZ0ZXIgTG9hZCAobG9hZGVkKTogXCIsIGxvYWQucGFnZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzO1xuICAgICAgICAgICAgICAgICAgICB9LCAoZXJyKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsb2FkLnJlamVjdChlcnIpO1xuICAgICAgICAgICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICAgICAgICAgIHNlbGYuX19zdGF0dXNQYWdlKFwiQWZ0ZXIgTG9hZCAobG9hZGluZyk6IFwiLCBsb2FkLnBhZ2UpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyBpZiAob3BzLmxlbmd0aD4xKSBjb25zb2xlLmxvZyhvcHMubGVuZ3RoKTtcblxuICAgICAgICBQcm9taXNlLmFsbChvcHMpLnRoZW4oICgpID0+IHtcbiAgICAgICAgICAgIHNlbGYucmVhZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgaWYgKHNlbGYucGVuZGluZ0xvYWRzLmxlbmd0aD4wKSBzZXRJbW1lZGlhdGUoc2VsZi5fdHJpZ2dlckxvYWQuYmluZChzZWxmKSk7XG4gICAgICAgICAgICBzZWxmLl90cnlDbG9zZSgpO1xuICAgICAgICB9KTtcblxuICAgICAgICBmdW5jdGlvbiBnZXROZXdQYWdlKCkge1xuICAgICAgICAgICAgaWYgKHNlbGYuYXZCdWZmcy5sZW5ndGg+MCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHAgPSBzZWxmLmF2QnVmZnMuc2hpZnQoKTtcbiAgICAgICAgICAgICAgICBwLmRpcnR5ID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgcC5wZW5kaW5nT3BzID0gMTtcbiAgICAgICAgICAgICAgICBwLnNpemUgPTA7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHA7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIGRpcnR5OiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgYnVmZjogbmV3IFVpbnQ4QXJyYXkoc2VsZi5wYWdlU2l6ZSksXG4gICAgICAgICAgICAgICAgICAgIHBlbmRpbmdPcHM6IDEsXG4gICAgICAgICAgICAgICAgICAgIHNpemU6IDBcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICB9XG5cblxuICAgIF90cmlnZ2VyV3JpdGUoKSB7XG4gICAgICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuICAgICAgICBpZiAoc2VsZi53cml0aW5nKSByZXR1cm47XG5cbiAgICAgICAgY29uc3QgcGFnZUlkeHMgPSBPYmplY3Qua2V5cyhzZWxmLnBhZ2VzKTtcblxuICAgICAgICBjb25zdCBvcHMgPSBbXTtcblxuICAgICAgICBmb3IgKGxldCBpPTA7IGk8cGFnZUlkeHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IHBhZ2UgPSBzZWxmLnBhZ2VzW3BhcnNlSW50KHBhZ2VJZHhzW2ldKV07XG4gICAgICAgICAgICBpZiAocGFnZS5kaXJ0eSkge1xuICAgICAgICAgICAgICAgIHBhZ2UuZGlydHkgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBwYWdlLndyaXRpbmcgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHNlbGYud3JpdGluZyA9IHRydWU7XG4gICAgICAgICAgICAgICAgb3BzLnB1c2goIHNlbGYuZmQud3JpdGUocGFnZS5idWZmLCAwLCBwYWdlLnNpemUsIHBhcnNlSW50KHBhZ2VJZHhzW2ldKSpzZWxmLnBhZ2VTaXplKS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcGFnZS53cml0aW5nID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9LCAoZXJyKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiRVJST1IgV3JpdGluZzogXCIrZXJyKTtcbiAgICAgICAgICAgICAgICAgICAgc2VsZi5lcnJvciA9IGVycjtcbiAgICAgICAgICAgICAgICAgICAgc2VsZi5fdHJ5Q2xvc2UoKTtcbiAgICAgICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoc2VsZi53cml0aW5nKSB7XG4gICAgICAgICAgICBQcm9taXNlLmFsbChvcHMpLnRoZW4oICgpID0+IHtcbiAgICAgICAgICAgICAgICBzZWxmLndyaXRpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBzZXRJbW1lZGlhdGUoc2VsZi5fdHJpZ2dlcldyaXRlLmJpbmQoc2VsZikpO1xuICAgICAgICAgICAgICAgIHNlbGYuX3RyeUNsb3NlKCk7XG4gICAgICAgICAgICAgICAgaWYgKHNlbGYucGVuZGluZ0xvYWRzLmxlbmd0aD4wKSBzZXRJbW1lZGlhdGUoc2VsZi5fdHJpZ2dlckxvYWQuYmluZChzZWxmKSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIF9nZXREaXJ0eVBhZ2UoKSB7XG4gICAgICAgIGZvciAobGV0IHAgaW4gdGhpcy5wYWdlcykge1xuICAgICAgICAgICAgaWYgKHRoaXMucGFnZXNbcF0uZGlydHkpIHJldHVybiBwO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAtMTtcbiAgICB9XG5cbiAgICBhc3luYyB3cml0ZShidWZmLCBwb3MpIHtcbiAgICAgICAgaWYgKGJ1ZmYuYnl0ZUxlbmd0aCA9PSAwKSByZXR1cm47XG4gICAgICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuLypcbiAgICAgICAgaWYgKGJ1ZmYuYnl0ZUxlbmd0aCA+IHNlbGYucGFnZVNpemUqc2VsZi5tYXhQYWdlc0xvYWRlZCowLjgpIHtcbiAgICAgICAgICAgIGNvbnN0IGNhY2hlU2l6ZSA9IE1hdGguZmxvb3IoYnVmZi5ieXRlTGVuZ3RoICogMS4xKTtcbiAgICAgICAgICAgIHRoaXMubWF4UGFnZXNMb2FkZWQgPSBNYXRoLmZsb29yKCBjYWNoZVNpemUgLyBzZWxmLnBhZ2VTaXplKSsxO1xuICAgICAgICB9XG4qL1xuICAgICAgICBpZiAodHlwZW9mIHBvcyA9PSBcInVuZGVmaW5lZFwiKSBwb3MgPSBzZWxmLnBvcztcbiAgICAgICAgc2VsZi5wb3MgPSBwb3MrYnVmZi5ieXRlTGVuZ3RoO1xuICAgICAgICBpZiAoc2VsZi50b3RhbFNpemUgPCBwb3MgKyBidWZmLmJ5dGVMZW5ndGgpIHNlbGYudG90YWxTaXplID0gcG9zICsgYnVmZi5ieXRlTGVuZ3RoO1xuICAgICAgICBpZiAoc2VsZi5wZW5kaW5nQ2xvc2UpXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJXcml0aW5nIGEgY2xvc2luZyBmaWxlXCIpO1xuICAgICAgICBjb25zdCBmaXJzdFBhZ2UgPSBNYXRoLmZsb29yKHBvcyAvIHNlbGYucGFnZVNpemUpO1xuICAgICAgICBjb25zdCBsYXN0UGFnZSA9IE1hdGguZmxvb3IoKHBvcyArIGJ1ZmYuYnl0ZUxlbmd0aCAtMSkgLyBzZWxmLnBhZ2VTaXplKTtcblxuICAgICAgICBjb25zdCBwYWdlUHJvbWlzZXMgPSBbXTtcbiAgICAgICAgZm9yIChsZXQgaT1maXJzdFBhZ2U7IGk8PWxhc3RQYWdlOyBpKyspIHBhZ2VQcm9taXNlcy5wdXNoKHNlbGYuX2xvYWRQYWdlKGkpKTtcbiAgICAgICAgc2VsZi5fdHJpZ2dlckxvYWQoKTtcblxuICAgICAgICBsZXQgcCA9IGZpcnN0UGFnZTtcbiAgICAgICAgbGV0IG8gPSBwb3MgJSBzZWxmLnBhZ2VTaXplO1xuICAgICAgICBsZXQgciA9IGJ1ZmYuYnl0ZUxlbmd0aDtcbiAgICAgICAgd2hpbGUgKHI+MCkge1xuICAgICAgICAgICAgYXdhaXQgcGFnZVByb21pc2VzW3AtZmlyc3RQYWdlXTtcbiAgICAgICAgICAgIGNvbnN0IGwgPSAobytyID4gc2VsZi5wYWdlU2l6ZSkgPyAoc2VsZi5wYWdlU2l6ZSAtbykgOiByO1xuICAgICAgICAgICAgY29uc3Qgc3JjVmlldyA9IGJ1ZmYuc2xpY2UoIGJ1ZmYuYnl0ZUxlbmd0aCAtIHIsIGJ1ZmYuYnl0ZUxlbmd0aCAtIHIgKyBsKTtcbiAgICAgICAgICAgIGNvbnN0IGRzdFZpZXcgPSBuZXcgVWludDhBcnJheShzZWxmLnBhZ2VzW3BdLmJ1ZmYuYnVmZmVyLCBvLCBsKTtcbiAgICAgICAgICAgIGRzdFZpZXcuc2V0KHNyY1ZpZXcpO1xuICAgICAgICAgICAgc2VsZi5wYWdlc1twXS5kaXJ0eSA9IHRydWU7XG4gICAgICAgICAgICBzZWxmLnBhZ2VzW3BdLnBlbmRpbmdPcHMgLS07XG4gICAgICAgICAgICBzZWxmLnBhZ2VzW3BdLnNpemUgPSBNYXRoLm1heChvK2wsIHNlbGYucGFnZXNbcF0uc2l6ZSk7XG4gICAgICAgICAgICBpZiAocD49c2VsZi50b3RhbFBhZ2VzKSB7XG4gICAgICAgICAgICAgICAgc2VsZi50b3RhbFBhZ2VzID0gcCsxO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgciA9IHItbDtcbiAgICAgICAgICAgIHAgKys7XG4gICAgICAgICAgICBvID0gMDtcbiAgICAgICAgICAgIGlmICghc2VsZi53cml0aW5nKSBzZXRJbW1lZGlhdGUoc2VsZi5fdHJpZ2dlcldyaXRlLmJpbmQoc2VsZikpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgYXN5bmMgcmVhZChsZW4sIHBvcykge1xuICAgICAgICBjb25zdCBzZWxmID0gdGhpcztcbiAgICAgICAgbGV0IGJ1ZmYgPSBuZXcgVWludDhBcnJheShsZW4pO1xuICAgICAgICBhd2FpdCBzZWxmLnJlYWRUb0J1ZmZlcihidWZmLCAwLCBsZW4sIHBvcyk7XG5cbiAgICAgICAgcmV0dXJuIGJ1ZmY7XG4gICAgfVxuXG4gICAgYXN5bmMgcmVhZFRvQnVmZmVyKGJ1ZmZEc3QsIG9mZnNldCwgbGVuLCBwb3MpIHtcbiAgICAgICAgaWYgKGxlbiA9PSAwKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gICAgICAgIGlmIChsZW4gPiBzZWxmLnBhZ2VTaXplKnNlbGYubWF4UGFnZXNMb2FkZWQqMC44KSB7XG4gICAgICAgICAgICBjb25zdCBjYWNoZVNpemUgPSBNYXRoLmZsb29yKGxlbiAqIDEuMSk7XG4gICAgICAgICAgICB0aGlzLm1heFBhZ2VzTG9hZGVkID0gTWF0aC5mbG9vciggY2FjaGVTaXplIC8gc2VsZi5wYWdlU2l6ZSkrMTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodHlwZW9mIHBvcyA9PSBcInVuZGVmaW5lZFwiKSBwb3MgPSBzZWxmLnBvcztcbiAgICAgICAgc2VsZi5wb3MgPSBwb3MrbGVuO1xuICAgICAgICBpZiAoc2VsZi5wZW5kaW5nQ2xvc2UpXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJSZWFkaW5nIGEgY2xvc2luZyBmaWxlXCIpO1xuICAgICAgICBjb25zdCBmaXJzdFBhZ2UgPSBNYXRoLmZsb29yKHBvcyAvIHNlbGYucGFnZVNpemUpO1xuICAgICAgICBjb25zdCBsYXN0UGFnZSA9IE1hdGguZmxvb3IoKHBvcyArIGxlbiAtMSkgLyBzZWxmLnBhZ2VTaXplKTtcblxuICAgICAgICBjb25zdCBwYWdlUHJvbWlzZXMgPSBbXTtcbiAgICAgICAgZm9yIChsZXQgaT1maXJzdFBhZ2U7IGk8PWxhc3RQYWdlOyBpKyspIHBhZ2VQcm9taXNlcy5wdXNoKHNlbGYuX2xvYWRQYWdlKGkpKTtcblxuICAgICAgICBzZWxmLl90cmlnZ2VyTG9hZCgpO1xuXG4gICAgICAgIGxldCBwID0gZmlyc3RQYWdlO1xuICAgICAgICBsZXQgbyA9IHBvcyAlIHNlbGYucGFnZVNpemU7XG4gICAgICAgIC8vIFJlbWFpbmluZyBieXRlcyB0byByZWFkXG4gICAgICAgIGxldCByID0gcG9zICsgbGVuID4gc2VsZi50b3RhbFNpemUgPyBsZW4gLSAocG9zICsgbGVuIC0gc2VsZi50b3RhbFNpemUpOiBsZW47XG4gICAgICAgIHdoaWxlIChyPjApIHtcbiAgICAgICAgICAgIGF3YWl0IHBhZ2VQcm9taXNlc1twIC0gZmlyc3RQYWdlXTtcbiAgICAgICAgICAgIHNlbGYuX19zdGF0dXNQYWdlKFwiQWZ0ZXIgQXdhaXQgKHJlYWQpOiBcIiwgcCk7XG5cbiAgICAgICAgICAgIC8vIGJ5dGVzIHRvIGNvcHkgZnJvbSB0aGlzIHBhZ2VcbiAgICAgICAgICAgIGNvbnN0IGwgPSAobytyID4gc2VsZi5wYWdlU2l6ZSkgPyAoc2VsZi5wYWdlU2l6ZSAtbykgOiByO1xuICAgICAgICAgICAgY29uc3Qgc3JjVmlldyA9IG5ldyBVaW50OEFycmF5KHNlbGYucGFnZXNbcF0uYnVmZi5idWZmZXIsIHNlbGYucGFnZXNbcF0uYnVmZi5ieXRlT2Zmc2V0ICsgbywgbCk7XG4gICAgICAgICAgICBidWZmRHN0LnNldChzcmNWaWV3LCBvZmZzZXQrbGVuLXIpO1xuICAgICAgICAgICAgc2VsZi5wYWdlc1twXS5wZW5kaW5nT3BzIC0tO1xuXG4gICAgICAgICAgICBzZWxmLl9fc3RhdHVzUGFnZShcIkFmdGVyIE9wIGRvbmU6IFwiLCBwKTtcblxuICAgICAgICAgICAgciA9IHItbDtcbiAgICAgICAgICAgIHAgKys7XG4gICAgICAgICAgICBvID0gMDtcbiAgICAgICAgICAgIGlmIChzZWxmLnBlbmRpbmdMb2Fkcy5sZW5ndGg+MCkgc2V0SW1tZWRpYXRlKHNlbGYuX3RyaWdnZXJMb2FkLmJpbmQoc2VsZikpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5wb3MgPSBwb3MgKyBsZW47XG5cbiAgICB9XG5cblxuICAgIF90cnlDbG9zZSgpIHtcbiAgICAgICAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gICAgICAgIGlmICghc2VsZi5wZW5kaW5nQ2xvc2UpIHJldHVybjtcbiAgICAgICAgaWYgKHNlbGYuZXJyb3IpIHtcbiAgICAgICAgICAgIHNlbGYucGVuZGluZ0Nsb3NlUmVqZWN0KHNlbGYuZXJyb3IpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHAgPSBzZWxmLl9nZXREaXJ0eVBhZ2UoKTtcbiAgICAgICAgaWYgKChwPj0wKSB8fCAoc2VsZi53cml0aW5nKSB8fCAoc2VsZi5yZWFkaW5nKSB8fCAoc2VsZi5wZW5kaW5nTG9hZHMubGVuZ3RoPjApKSByZXR1cm47XG4gICAgICAgIHNlbGYucGVuZGluZ0Nsb3NlKCk7XG4gICAgfVxuXG4gICAgY2xvc2UoKSB7XG4gICAgICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuICAgICAgICBpZiAoc2VsZi5wZW5kaW5nQ2xvc2UpXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJDbG9zaW5nIHRoZSBmaWxlIHR3aWNlXCIpO1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgc2VsZi5wZW5kaW5nQ2xvc2UgPSByZXNvbHZlO1xuICAgICAgICAgICAgc2VsZi5wZW5kaW5nQ2xvc2VSZWplY3QgPSByZWplY3Q7XG4gICAgICAgICAgICBzZWxmLl90cnlDbG9zZSgpO1xuICAgICAgICB9KS50aGVuKCgpPT4ge1xuICAgICAgICAgICAgc2VsZi5mZC5jbG9zZSgpO1xuICAgICAgICB9LCAoZXJyKSA9PiB7XG4gICAgICAgICAgICBzZWxmLmZkLmNsb3NlKCk7XG4gICAgICAgICAgICB0aHJvdyAoZXJyKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgYXN5bmMgZGlzY2FyZCgpIHtcbiAgICAgICAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gICAgICAgIGF3YWl0IHNlbGYuY2xvc2UoKTtcbiAgICAgICAgYXdhaXQgZnMucHJvbWlzZXMudW5saW5rKHRoaXMuZmlsZU5hbWUpO1xuICAgIH1cblxuICAgIGFzeW5jIHdyaXRlVUxFMzIodiwgcG9zKSB7XG4gICAgICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuICAgICAgICBjb25zdCB0bXBCdWZmMzIgPSBuZXcgVWludDhBcnJheSg0KTtcbiAgICAgICAgY29uc3QgdG1wQnVmZjMydiA9IG5ldyBEYXRhVmlldyh0bXBCdWZmMzIuYnVmZmVyKTtcblxuICAgICAgICB0bXBCdWZmMzJ2LnNldFVpbnQzMigwLCB2LCB0cnVlKTtcblxuICAgICAgICBhd2FpdCBzZWxmLndyaXRlKHRtcEJ1ZmYzMiwgcG9zKTtcbiAgICB9XG5cbiAgICBhc3luYyB3cml0ZVVCRTMyKHYsIHBvcykge1xuICAgICAgICBjb25zdCBzZWxmID0gdGhpcztcblxuICAgICAgICBjb25zdCB0bXBCdWZmMzIgPSBuZXcgVWludDhBcnJheSg0KTtcbiAgICAgICAgY29uc3QgdG1wQnVmZjMydiA9IG5ldyBEYXRhVmlldyh0bXBCdWZmMzIuYnVmZmVyKTtcblxuICAgICAgICB0bXBCdWZmMzJ2LnNldFVpbnQzMigwLCB2LCBmYWxzZSk7XG5cbiAgICAgICAgYXdhaXQgc2VsZi53cml0ZSh0bXBCdWZmMzIsIHBvcyk7XG4gICAgfVxuXG5cbiAgICBhc3luYyB3cml0ZVVMRTY0KHYsIHBvcykge1xuICAgICAgICBjb25zdCBzZWxmID0gdGhpcztcblxuICAgICAgICBjb25zdCB0bXBCdWZmNjQgPSBuZXcgVWludDhBcnJheSg4KTtcbiAgICAgICAgY29uc3QgdG1wQnVmZjY0diA9IG5ldyBEYXRhVmlldyh0bXBCdWZmNjQuYnVmZmVyKTtcblxuICAgICAgICB0bXBCdWZmNjR2LnNldFVpbnQzMigwLCB2ICYgMHhGRkZGRkZGRiwgdHJ1ZSk7XG4gICAgICAgIHRtcEJ1ZmY2NHYuc2V0VWludDMyKDQsIE1hdGguZmxvb3IodiAvIDB4MTAwMDAwMDAwKSAsIHRydWUpO1xuXG4gICAgICAgIGF3YWl0IHNlbGYud3JpdGUodG1wQnVmZjY0LCBwb3MpO1xuICAgIH1cblxuICAgIGFzeW5jIHJlYWRVTEUzMihwb3MpIHtcbiAgICAgICAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gICAgICAgIGNvbnN0IGIgPSBhd2FpdCBzZWxmLnJlYWQoNCwgcG9zKTtcblxuICAgICAgICBjb25zdCB2aWV3ID0gbmV3IFVpbnQzMkFycmF5KGIuYnVmZmVyKTtcblxuICAgICAgICByZXR1cm4gdmlld1swXTtcbiAgICB9XG5cbiAgICBhc3luYyByZWFkVUJFMzIocG9zKSB7XG4gICAgICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuICAgICAgICBjb25zdCBiID0gYXdhaXQgc2VsZi5yZWFkKDQsIHBvcyk7XG5cbiAgICAgICAgY29uc3QgdmlldyA9IG5ldyBEYXRhVmlldyhiLmJ1ZmZlcik7XG5cbiAgICAgICAgcmV0dXJuIHZpZXcuZ2V0VWludDMyKDAsIGZhbHNlKTtcbiAgICB9XG5cbiAgICBhc3luYyByZWFkVUxFNjQocG9zKSB7XG4gICAgICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuICAgICAgICBjb25zdCBiID0gYXdhaXQgc2VsZi5yZWFkKDgsIHBvcyk7XG5cbiAgICAgICAgY29uc3QgdmlldyA9IG5ldyBVaW50MzJBcnJheShiLmJ1ZmZlcik7XG5cbiAgICAgICAgcmV0dXJuIHZpZXdbMV0gKiAweDEwMDAwMDAwMCArIHZpZXdbMF07XG4gICAgfVxuXG4gICAgYXN5bmMgcmVhZFN0cmluZyhwb3MpIHtcbiAgICAgICAgY29uc3Qgc2VsZiA9IHRoaXM7XG5cbiAgICAgICAgaWYgKHNlbGYucGVuZGluZ0Nsb3NlKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJSZWFkaW5nIGEgY2xvc2luZyBmaWxlXCIpO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGN1cnJlbnRQb3NpdGlvbiA9IHR5cGVvZiBwb3MgPT0gXCJ1bmRlZmluZWRcIiA/IHNlbGYucG9zIDogcG9zO1xuICAgICAgICBsZXQgY3VycmVudFBhZ2UgPSBNYXRoLmZsb29yKGN1cnJlbnRQb3NpdGlvbiAvIHNlbGYucGFnZVNpemUpO1xuXG4gICAgICAgIGxldCBlbmRPZlN0cmluZ0ZvdW5kID0gZmFsc2U7XG4gICAgICAgIGxldCBzdHIgPSBcIlwiO1xuXG4gICAgICAgIHdoaWxlICghZW5kT2ZTdHJpbmdGb3VuZCkge1xuICAgICAgICAgICAgLy9SZWFkIHBhZ2VcbiAgICAgICAgICAgIGxldCBwYWdlUHJvbWlzZSA9IHNlbGYuX2xvYWRQYWdlKGN1cnJlbnRQYWdlKTtcbiAgICAgICAgICAgIHNlbGYuX3RyaWdnZXJMb2FkKCk7XG4gICAgICAgICAgICBhd2FpdCBwYWdlUHJvbWlzZTtcbiAgICAgICAgICAgIHNlbGYuX19zdGF0dXNQYWdlKFwiQWZ0ZXIgQXdhaXQgKHJlYWQpOiBcIiwgY3VycmVudFBhZ2UpO1xuXG4gICAgICAgICAgICBsZXQgb2Zmc2V0T25QYWdlID0gY3VycmVudFBvc2l0aW9uICUgc2VsZi5wYWdlU2l6ZTtcblxuICAgICAgICAgICAgY29uc3QgZGF0YUFycmF5ID0gbmV3IFVpbnQ4QXJyYXkoXG4gICAgICAgICAgICAgICAgc2VsZi5wYWdlc1tjdXJyZW50UGFnZV0uYnVmZi5idWZmZXIsXG4gICAgICAgICAgICAgICAgc2VsZi5wYWdlc1tjdXJyZW50UGFnZV0uYnVmZi5ieXRlT2Zmc2V0ICsgb2Zmc2V0T25QYWdlLFxuICAgICAgICAgICAgICAgIHNlbGYucGFnZVNpemUgLSBvZmZzZXRPblBhZ2VcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIGxldCBpbmRleEVuZE9mU3RyaW5nID0gZGF0YUFycmF5LmZpbmRJbmRleChlbGVtZW50ID0+IGVsZW1lbnQgPT09IDApO1xuICAgICAgICAgICAgZW5kT2ZTdHJpbmdGb3VuZCA9IGluZGV4RW5kT2ZTdHJpbmcgIT09IC0xO1xuXG4gICAgICAgICAgICBpZiAoZW5kT2ZTdHJpbmdGb3VuZCkge1xuICAgICAgICAgICAgICAgIHN0ciArPSBuZXcgVGV4dERlY29kZXIoKS5kZWNvZGUoZGF0YUFycmF5LnNsaWNlKDAsIGluZGV4RW5kT2ZTdHJpbmcpKTtcbiAgICAgICAgICAgICAgICBzZWxmLnBvcyA9IGN1cnJlbnRQYWdlICogdGhpcy5wYWdlU2l6ZSArIG9mZnNldE9uUGFnZSArIGluZGV4RW5kT2ZTdHJpbmcgKyAxO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBzdHIgKz0gbmV3IFRleHREZWNvZGVyKCkuZGVjb2RlKGRhdGFBcnJheSk7XG4gICAgICAgICAgICAgICAgc2VsZi5wb3MgPSBjdXJyZW50UGFnZSAqIHRoaXMucGFnZVNpemUgKyBvZmZzZXRPblBhZ2UgKyBkYXRhQXJyYXkubGVuZ3RoO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBzZWxmLnBhZ2VzW2N1cnJlbnRQYWdlXS5wZW5kaW5nT3BzLS07XG4gICAgICAgICAgICBzZWxmLl9fc3RhdHVzUGFnZShcIkFmdGVyIE9wIGRvbmU6IFwiLCBjdXJyZW50UGFnZSk7XG5cbiAgICAgICAgICAgIGN1cnJlbnRQb3NpdGlvbiA9IHNlbGYucG9zO1xuICAgICAgICAgICAgY3VycmVudFBhZ2UrKztcblxuICAgICAgICAgICAgaWYgKHNlbGYucGVuZGluZ0xvYWRzLmxlbmd0aCA+IDApIHNldEltbWVkaWF0ZShzZWxmLl90cmlnZ2VyTG9hZC5iaW5kKHNlbGYpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBzdHI7XG4gICAgfVxufVxuIiwiZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZU5ldyhvKSB7XG4gICAgY29uc3QgaW5pdGlhbFNpemUgPSBvLmluaXRpYWxTaXplIHx8IDE8PDIwO1xuICAgIGNvbnN0IGZkID0gbmV3IE1lbUZpbGUoKTtcbiAgICBmZC5vID0gbztcbiAgICBmZC5vLmRhdGEgPSBuZXcgVWludDhBcnJheShpbml0aWFsU2l6ZSk7XG4gICAgZmQuYWxsb2NTaXplID0gaW5pdGlhbFNpemU7XG4gICAgZmQudG90YWxTaXplID0gMDtcbiAgICBmZC5yZWFkT25seSA9IGZhbHNlO1xuICAgIGZkLnBvcyA9IDA7XG4gICAgcmV0dXJuIGZkO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVhZEV4aXN0aW5nKG8pIHtcbiAgICBjb25zdCBmZCA9IG5ldyBNZW1GaWxlKCk7XG4gICAgZmQubyA9IG87XG4gICAgZmQuYWxsb2NTaXplID0gby5kYXRhLmJ5dGVMZW5ndGg7XG4gICAgZmQudG90YWxTaXplID0gby5kYXRhLmJ5dGVMZW5ndGg7XG4gICAgZmQucmVhZE9ubHkgPSB0cnVlO1xuICAgIGZkLnBvcyA9IDA7XG4gICAgcmV0dXJuIGZkO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVhZFdyaXRlRXhpc3Rpbmcobykge1xuICAgIGNvbnN0IGZkID0gbmV3IE1lbUZpbGUoKTtcbiAgICBmZC5vID0gbztcbiAgICBmZC5hbGxvY1NpemUgPSBvLmRhdGEuYnl0ZUxlbmd0aDtcbiAgICBmZC50b3RhbFNpemUgPSBvLmRhdGEuYnl0ZUxlbmd0aDtcbiAgICBmZC5yZWFkT25seSA9IGZhbHNlO1xuICAgIGZkLnBvcyA9IDA7XG4gICAgcmV0dXJuIGZkO1xufVxuXG5jb25zdCB0bXBCdWZmMzIgPSBuZXcgVWludDhBcnJheSg0KTtcbmNvbnN0IHRtcEJ1ZmYzMnYgPSBuZXcgRGF0YVZpZXcodG1wQnVmZjMyLmJ1ZmZlcik7XG5jb25zdCB0bXBCdWZmNjQgPSBuZXcgVWludDhBcnJheSg4KTtcbmNvbnN0IHRtcEJ1ZmY2NHYgPSBuZXcgRGF0YVZpZXcodG1wQnVmZjY0LmJ1ZmZlcik7XG5cbmNsYXNzIE1lbUZpbGUge1xuXG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHRoaXMucGFnZVNpemUgPSAxIDw8IDE0OyAgLy8gZm9yIGNvbXBhdGliaWxpdHlcbiAgICB9XG5cbiAgICBfcmVzaXplSWZOZWVkZWQobmV3TGVuKSB7XG4gICAgICAgIGlmIChuZXdMZW4gPiB0aGlzLmFsbG9jU2l6ZSkge1xuICAgICAgICAgICAgY29uc3QgbmV3QWxsb2NTaXplID0gTWF0aC5tYXgoXG4gICAgICAgICAgICAgICAgdGhpcy5hbGxvY1NpemUgKyAoMSA8PCAyMCksXG4gICAgICAgICAgICAgICAgTWF0aC5mbG9vcih0aGlzLmFsbG9jU2l6ZSAqIDEuMSksXG4gICAgICAgICAgICAgICAgbmV3TGVuXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgY29uc3QgbmV3RGF0YSA9IG5ldyBVaW50OEFycmF5KG5ld0FsbG9jU2l6ZSk7XG4gICAgICAgICAgICBuZXdEYXRhLnNldCh0aGlzLm8uZGF0YSk7XG4gICAgICAgICAgICB0aGlzLm8uZGF0YSA9IG5ld0RhdGE7XG4gICAgICAgICAgICB0aGlzLmFsbG9jU2l6ZSA9IG5ld0FsbG9jU2l6ZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGFzeW5jIHdyaXRlKGJ1ZmYsIHBvcykge1xuICAgICAgICBjb25zdCBzZWxmID10aGlzO1xuICAgICAgICBpZiAodHlwZW9mIHBvcyA9PSBcInVuZGVmaW5lZFwiKSBwb3MgPSBzZWxmLnBvcztcbiAgICAgICAgaWYgKHRoaXMucmVhZE9ubHkpIHRocm93IG5ldyBFcnJvcihcIldyaXRpbmcgYSByZWFkIG9ubHkgZmlsZVwiKTtcblxuICAgICAgICB0aGlzLl9yZXNpemVJZk5lZWRlZChwb3MgKyBidWZmLmJ5dGVMZW5ndGgpO1xuXG4gICAgICAgIHRoaXMuby5kYXRhLnNldChidWZmLnNsaWNlKCksIHBvcyk7XG5cbiAgICAgICAgaWYgKHBvcyArIGJ1ZmYuYnl0ZUxlbmd0aCA+IHRoaXMudG90YWxTaXplKSB0aGlzLnRvdGFsU2l6ZSA9IHBvcyArIGJ1ZmYuYnl0ZUxlbmd0aDtcblxuICAgICAgICB0aGlzLnBvcyA9IHBvcyArIGJ1ZmYuYnl0ZUxlbmd0aDtcbiAgICB9XG5cbiAgICBhc3luYyByZWFkVG9CdWZmZXIoYnVmZkRlc3QsIG9mZnNldCwgbGVuLCBwb3MpIHtcbiAgICAgICAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gICAgICAgIGlmICh0eXBlb2YgcG9zID09IFwidW5kZWZpbmVkXCIpIHBvcyA9IHNlbGYucG9zO1xuICAgICAgICBpZiAodGhpcy5yZWFkT25seSkge1xuICAgICAgICAgICAgaWYgKHBvcyArIGxlbiA+IHRoaXMudG90YWxTaXplKSB0aHJvdyBuZXcgRXJyb3IoXCJSZWFkaW5nIG91dCBvZiBib3VuZHNcIik7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fcmVzaXplSWZOZWVkZWQocG9zICsgbGVuKTtcblxuICAgICAgICBjb25zdCBidWZmU3JjID0gbmV3IFVpbnQ4QXJyYXkodGhpcy5vLmRhdGEuYnVmZmVyLCB0aGlzLm8uZGF0YS5ieXRlT2Zmc2V0ICsgcG9zLCBsZW4pO1xuXG4gICAgICAgIGJ1ZmZEZXN0LnNldChidWZmU3JjLCBvZmZzZXQpO1xuXG4gICAgICAgIHRoaXMucG9zID0gcG9zICsgbGVuO1xuICAgIH1cblxuICAgIGFzeW5jIHJlYWQobGVuLCBwb3MpIHtcbiAgICAgICAgY29uc3Qgc2VsZiA9IHRoaXM7XG5cbiAgICAgICAgY29uc3QgYnVmZiA9IG5ldyBVaW50OEFycmF5KGxlbik7XG4gICAgICAgIGF3YWl0IHNlbGYucmVhZFRvQnVmZmVyKGJ1ZmYsIDAsIGxlbiwgcG9zKTtcblxuICAgICAgICByZXR1cm4gYnVmZjtcbiAgICB9XG5cbiAgICBjbG9zZSgpIHtcbiAgICAgICAgaWYgKHRoaXMuby5kYXRhLmJ5dGVMZW5ndGggIT0gdGhpcy50b3RhbFNpemUpIHtcbiAgICAgICAgICAgIHRoaXMuby5kYXRhID0gdGhpcy5vLmRhdGEuc2xpY2UoMCwgdGhpcy50b3RhbFNpemUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgYXN5bmMgZGlzY2FyZCgpIHtcbiAgICB9XG5cblxuICAgIGFzeW5jIHdyaXRlVUxFMzIodiwgcG9zKSB7XG4gICAgICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuXG4gICAgICAgIHRtcEJ1ZmYzMnYuc2V0VWludDMyKDAsIHYsIHRydWUpO1xuXG4gICAgICAgIGF3YWl0IHNlbGYud3JpdGUodG1wQnVmZjMyLCBwb3MpO1xuICAgIH1cblxuICAgIGFzeW5jIHdyaXRlVUJFMzIodiwgcG9zKSB7XG4gICAgICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuXG4gICAgICAgIHRtcEJ1ZmYzMnYuc2V0VWludDMyKDAsIHYsIGZhbHNlKTtcblxuICAgICAgICBhd2FpdCBzZWxmLndyaXRlKHRtcEJ1ZmYzMiwgcG9zKTtcbiAgICB9XG5cblxuICAgIGFzeW5jIHdyaXRlVUxFNjQodiwgcG9zKSB7XG4gICAgICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuXG4gICAgICAgIHRtcEJ1ZmY2NHYuc2V0VWludDMyKDAsIHYgJiAweEZGRkZGRkZGLCB0cnVlKTtcbiAgICAgICAgdG1wQnVmZjY0di5zZXRVaW50MzIoNCwgTWF0aC5mbG9vcih2IC8gMHgxMDAwMDAwMDApICwgdHJ1ZSk7XG5cbiAgICAgICAgYXdhaXQgc2VsZi53cml0ZSh0bXBCdWZmNjQsIHBvcyk7XG4gICAgfVxuXG5cbiAgICBhc3luYyByZWFkVUxFMzIocG9zKSB7XG4gICAgICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuICAgICAgICBjb25zdCBiID0gYXdhaXQgc2VsZi5yZWFkKDQsIHBvcyk7XG5cbiAgICAgICAgY29uc3QgdmlldyA9IG5ldyBVaW50MzJBcnJheShiLmJ1ZmZlcik7XG5cbiAgICAgICAgcmV0dXJuIHZpZXdbMF07XG4gICAgfVxuXG4gICAgYXN5bmMgcmVhZFVCRTMyKHBvcykge1xuICAgICAgICBjb25zdCBzZWxmID0gdGhpcztcbiAgICAgICAgY29uc3QgYiA9IGF3YWl0IHNlbGYucmVhZCg0LCBwb3MpO1xuXG4gICAgICAgIGNvbnN0IHZpZXcgPSBuZXcgRGF0YVZpZXcoYi5idWZmZXIpO1xuXG4gICAgICAgIHJldHVybiB2aWV3LmdldFVpbnQzMigwLCBmYWxzZSk7XG4gICAgfVxuXG4gICAgYXN5bmMgcmVhZFVMRTY0KHBvcykge1xuICAgICAgICBjb25zdCBzZWxmID0gdGhpcztcbiAgICAgICAgY29uc3QgYiA9IGF3YWl0IHNlbGYucmVhZCg4LCBwb3MpO1xuXG4gICAgICAgIGNvbnN0IHZpZXcgPSBuZXcgVWludDMyQXJyYXkoYi5idWZmZXIpO1xuXG4gICAgICAgIHJldHVybiB2aWV3WzFdICogMHgxMDAwMDAwMDAgKyB2aWV3WzBdO1xuICAgIH1cblxuICAgIGFzeW5jIHJlYWRTdHJpbmcocG9zKSB7XG4gICAgICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuXG4gICAgICAgIGxldCBjdXJyZW50UG9zaXRpb24gPSB0eXBlb2YgcG9zID09IFwidW5kZWZpbmVkXCIgPyBzZWxmLnBvcyA6IHBvcztcblxuICAgICAgICBpZiAoY3VycmVudFBvc2l0aW9uID4gdGhpcy50b3RhbFNpemUpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnJlYWRPbmx5KSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiUmVhZGluZyBvdXQgb2YgYm91bmRzXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5fcmVzaXplSWZOZWVkZWQocG9zKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBkYXRhQXJyYXkgPSBuZXcgVWludDhBcnJheShcbiAgICAgICAgICAgIHNlbGYuby5kYXRhLmJ1ZmZlcixcbiAgICAgICAgICAgIGN1cnJlbnRQb3NpdGlvbixcbiAgICAgICAgICAgIHRoaXMudG90YWxTaXplIC0gY3VycmVudFBvc2l0aW9uXG4gICAgICAgICk7XG5cbiAgICAgICAgbGV0IGluZGV4RW5kT2ZTdHJpbmcgPSBkYXRhQXJyYXkuZmluZEluZGV4KGVsZW1lbnQgPT4gZWxlbWVudCA9PT0gMCk7XG4gICAgICAgIGxldCBlbmRPZlN0cmluZ0ZvdW5kID0gaW5kZXhFbmRPZlN0cmluZyAhPT0gLTE7XG5cbiAgICAgICAgbGV0IHN0ciA9IFwiXCI7XG4gICAgICAgIGlmIChlbmRPZlN0cmluZ0ZvdW5kKSB7XG4gICAgICAgICAgICBzdHIgPSBuZXcgVGV4dERlY29kZXIoKS5kZWNvZGUoZGF0YUFycmF5LnNsaWNlKDAsIGluZGV4RW5kT2ZTdHJpbmcpKTtcbiAgICAgICAgICAgIHNlbGYucG9zID0gY3VycmVudFBvc2l0aW9uICsgaW5kZXhFbmRPZlN0cmluZyArIDE7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzZWxmLnBvcyA9IGN1cnJlbnRQb3NpdGlvbjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc3RyO1xuICAgIH1cbn1cbiIsImNvbnN0IFBBR0VfU0laRSA9IDE8PDIyO1xuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlTmV3KG8pIHtcbiAgICBjb25zdCBpbml0aWFsU2l6ZSA9IG8uaW5pdGlhbFNpemUgfHwgMDtcbiAgICBjb25zdCBmZCA9IG5ldyBCaWdNZW1GaWxlKCk7XG4gICAgZmQubyA9IG87XG4gICAgY29uc3QgblBhZ2VzID0gaW5pdGlhbFNpemUgPyBNYXRoLmZsb29yKChpbml0aWFsU2l6ZSAtIDEpIC8gUEFHRV9TSVpFKSsxIDogMDtcbiAgICBmZC5vLmRhdGEgPSBbXTtcbiAgICBmb3IgKGxldCBpPTA7IGk8blBhZ2VzLTE7IGkrKykge1xuICAgICAgICBmZC5vLmRhdGEucHVzaCggbmV3IFVpbnQ4QXJyYXkoUEFHRV9TSVpFKSk7XG4gICAgfVxuICAgIGlmIChuUGFnZXMpIGZkLm8uZGF0YS5wdXNoKCBuZXcgVWludDhBcnJheShpbml0aWFsU2l6ZSAtIFBBR0VfU0laRSooblBhZ2VzLTEpKSk7XG4gICAgZmQudG90YWxTaXplID0gMDtcbiAgICBmZC5yZWFkT25seSA9IGZhbHNlO1xuICAgIGZkLnBvcyA9IDA7XG4gICAgcmV0dXJuIGZkO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVhZEV4aXN0aW5nKG8pIHtcbiAgICBjb25zdCBmZCA9IG5ldyBCaWdNZW1GaWxlKCk7XG4gICAgZmQubyA9IG87XG4gICAgZmQudG90YWxTaXplID0gKG8uZGF0YS5sZW5ndGgtMSkqIFBBR0VfU0laRSArIG8uZGF0YVtvLmRhdGEubGVuZ3RoLTFdLmJ5dGVMZW5ndGg7XG4gICAgZmQucmVhZE9ubHkgPSB0cnVlO1xuICAgIGZkLnBvcyA9IDA7XG4gICAgcmV0dXJuIGZkO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVhZFdyaXRlRXhpc3Rpbmcobykge1xuICAgIGNvbnN0IGZkID0gbmV3IEJpZ01lbUZpbGUoKTtcbiAgICBmZC5vID0gbztcbiAgICBmZC50b3RhbFNpemUgPSAoby5kYXRhLmxlbmd0aC0xKSogUEFHRV9TSVpFICsgby5kYXRhW28uZGF0YS5sZW5ndGgtMV0uYnl0ZUxlbmd0aDtcbiAgICBmZC5yZWFkT25seSA9IGZhbHNlO1xuICAgIGZkLnBvcyA9IDA7XG4gICAgcmV0dXJuIGZkO1xufVxuXG5jb25zdCB0bXBCdWZmMzIgPSBuZXcgVWludDhBcnJheSg0KTtcbmNvbnN0IHRtcEJ1ZmYzMnYgPSBuZXcgRGF0YVZpZXcodG1wQnVmZjMyLmJ1ZmZlcik7XG5jb25zdCB0bXBCdWZmNjQgPSBuZXcgVWludDhBcnJheSg4KTtcbmNvbnN0IHRtcEJ1ZmY2NHYgPSBuZXcgRGF0YVZpZXcodG1wQnVmZjY0LmJ1ZmZlcik7XG5cbmNsYXNzIEJpZ01lbUZpbGUge1xuXG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHRoaXMucGFnZVNpemUgPSAxIDw8IDE0OyAgLy8gZm9yIGNvbXBhdGliaWxpdHlcbiAgICB9XG5cbiAgICBfcmVzaXplSWZOZWVkZWQobmV3TGVuKSB7XG5cbiAgICAgICAgaWYgKG5ld0xlbiA8PSB0aGlzLnRvdGFsU2l6ZSkgcmV0dXJuO1xuXG4gICAgICAgIGlmICh0aGlzLnJlYWRPbmx5KSB0aHJvdyBuZXcgRXJyb3IoXCJSZWFkaW5nIG91dCBvZiBmaWxlIGJvdW5kc1wiKTtcblxuICAgICAgICBjb25zdCBuUGFnZXMgPSBNYXRoLmZsb29yKChuZXdMZW4gLSAxKSAvIFBBR0VfU0laRSkrMTtcbiAgICAgICAgZm9yIChsZXQgaT0gTWF0aC5tYXgodGhpcy5vLmRhdGEubGVuZ3RoLTEsIDApOyBpPG5QYWdlczsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCBuZXdTaXplID0gaTxuUGFnZXMtMSA/IFBBR0VfU0laRSA6IG5ld0xlbiAtIChuUGFnZXMtMSkqUEFHRV9TSVpFO1xuICAgICAgICAgICAgY29uc3QgcCA9IG5ldyBVaW50OEFycmF5KG5ld1NpemUpO1xuICAgICAgICAgICAgaWYgKGkgPT0gdGhpcy5vLmRhdGEubGVuZ3RoLTEpIHAuc2V0KHRoaXMuby5kYXRhW2ldKTtcbiAgICAgICAgICAgIHRoaXMuby5kYXRhW2ldID0gcDtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnRvdGFsU2l6ZSA9IG5ld0xlbjtcbiAgICB9XG5cbiAgICBhc3luYyB3cml0ZShidWZmLCBwb3MpIHtcbiAgICAgICAgY29uc3Qgc2VsZiA9dGhpcztcbiAgICAgICAgaWYgKHR5cGVvZiBwb3MgPT0gXCJ1bmRlZmluZWRcIikgcG9zID0gc2VsZi5wb3M7XG4gICAgICAgIGlmICh0aGlzLnJlYWRPbmx5KSB0aHJvdyBuZXcgRXJyb3IoXCJXcml0aW5nIGEgcmVhZCBvbmx5IGZpbGVcIik7XG5cbiAgICAgICAgdGhpcy5fcmVzaXplSWZOZWVkZWQocG9zICsgYnVmZi5ieXRlTGVuZ3RoKTtcblxuICAgICAgICBjb25zdCBmaXJzdFBhZ2UgPSBNYXRoLmZsb29yKHBvcyAvIFBBR0VfU0laRSk7XG5cbiAgICAgICAgbGV0IHAgPSBmaXJzdFBhZ2U7XG4gICAgICAgIGxldCBvID0gcG9zICUgUEFHRV9TSVpFO1xuICAgICAgICBsZXQgciA9IGJ1ZmYuYnl0ZUxlbmd0aDtcbiAgICAgICAgd2hpbGUgKHI+MCkge1xuICAgICAgICAgICAgY29uc3QgbCA9IChvK3IgPiBQQUdFX1NJWkUpID8gKFBBR0VfU0laRSAtbykgOiByO1xuICAgICAgICAgICAgY29uc3Qgc3JjVmlldyA9IGJ1ZmYuc2xpY2UoYnVmZi5ieXRlTGVuZ3RoIC0gciwgYnVmZi5ieXRlTGVuZ3RoIC0gciArIGwpO1xuICAgICAgICAgICAgY29uc3QgZHN0VmlldyA9IG5ldyBVaW50OEFycmF5KHNlbGYuby5kYXRhW3BdLmJ1ZmZlciwgbywgbCk7XG4gICAgICAgICAgICBkc3RWaWV3LnNldChzcmNWaWV3KTtcbiAgICAgICAgICAgIHIgPSByLWw7XG4gICAgICAgICAgICBwICsrO1xuICAgICAgICAgICAgbyA9IDA7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnBvcyA9IHBvcyArIGJ1ZmYuYnl0ZUxlbmd0aDtcbiAgICB9XG5cbiAgICBhc3luYyByZWFkVG9CdWZmZXIoYnVmZkRzdCwgb2Zmc2V0LCBsZW4sIHBvcykge1xuICAgICAgICBjb25zdCBzZWxmID0gdGhpcztcbiAgICAgICAgaWYgKHR5cGVvZiBwb3MgPT0gXCJ1bmRlZmluZWRcIikgcG9zID0gc2VsZi5wb3M7XG4gICAgICAgIGlmICh0aGlzLnJlYWRPbmx5KSB7XG4gICAgICAgICAgICBpZiAocG9zICsgbGVuID4gdGhpcy50b3RhbFNpemUpIHRocm93IG5ldyBFcnJvcihcIlJlYWRpbmcgb3V0IG9mIGJvdW5kc1wiKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9yZXNpemVJZk5lZWRlZChwb3MgKyBsZW4pO1xuXG4gICAgICAgIGNvbnN0IGZpcnN0UGFnZSA9IE1hdGguZmxvb3IocG9zIC8gUEFHRV9TSVpFKTtcblxuICAgICAgICBsZXQgcCA9IGZpcnN0UGFnZTtcbiAgICAgICAgbGV0IG8gPSBwb3MgJSBQQUdFX1NJWkU7XG4gICAgICAgIC8vIFJlbWFpbmluZyBieXRlcyB0byByZWFkXG4gICAgICAgIGxldCByID0gbGVuO1xuICAgICAgICB3aGlsZSAocj4wKSB7XG4gICAgICAgICAgICAvLyBieXRlcyB0byBjb3B5IGZyb20gdGhpcyBwYWdlXG4gICAgICAgICAgICBjb25zdCBsID0gKG8rciA+IFBBR0VfU0laRSkgPyAoUEFHRV9TSVpFIC1vKSA6IHI7XG4gICAgICAgICAgICBjb25zdCBzcmNWaWV3ID0gbmV3IFVpbnQ4QXJyYXkoc2VsZi5vLmRhdGFbcF0uYnVmZmVyLCBvLCBsKTtcbiAgICAgICAgICAgIGJ1ZmZEc3Quc2V0KHNyY1ZpZXcsIG9mZnNldCtsZW4tcik7XG4gICAgICAgICAgICByID0gci1sO1xuICAgICAgICAgICAgcCArKztcbiAgICAgICAgICAgIG8gPSAwO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5wb3MgPSBwb3MgKyBsZW47XG4gICAgfVxuXG4gICAgYXN5bmMgcmVhZChsZW4sIHBvcykge1xuICAgICAgICBjb25zdCBzZWxmID0gdGhpcztcbiAgICAgICAgY29uc3QgYnVmZiA9IG5ldyBVaW50OEFycmF5KGxlbik7XG5cbiAgICAgICAgYXdhaXQgc2VsZi5yZWFkVG9CdWZmZXIoYnVmZiwgMCwgbGVuLCBwb3MpO1xuXG4gICAgICAgIHJldHVybiBidWZmO1xuICAgIH1cblxuICAgIGNsb3NlKCkge1xuICAgIH1cblxuICAgIGFzeW5jIGRpc2NhcmQoKSB7XG4gICAgfVxuXG5cbiAgICBhc3luYyB3cml0ZVVMRTMyKHYsIHBvcykge1xuICAgICAgICBjb25zdCBzZWxmID0gdGhpcztcblxuICAgICAgICB0bXBCdWZmMzJ2LnNldFVpbnQzMigwLCB2LCB0cnVlKTtcblxuICAgICAgICBhd2FpdCBzZWxmLndyaXRlKHRtcEJ1ZmYzMiwgcG9zKTtcbiAgICB9XG5cbiAgICBhc3luYyB3cml0ZVVCRTMyKHYsIHBvcykge1xuICAgICAgICBjb25zdCBzZWxmID0gdGhpcztcblxuICAgICAgICB0bXBCdWZmMzJ2LnNldFVpbnQzMigwLCB2LCBmYWxzZSk7XG5cbiAgICAgICAgYXdhaXQgc2VsZi53cml0ZSh0bXBCdWZmMzIsIHBvcyk7XG4gICAgfVxuXG5cbiAgICBhc3luYyB3cml0ZVVMRTY0KHYsIHBvcykge1xuICAgICAgICBjb25zdCBzZWxmID0gdGhpcztcblxuICAgICAgICB0bXBCdWZmNjR2LnNldFVpbnQzMigwLCB2ICYgMHhGRkZGRkZGRiwgdHJ1ZSk7XG4gICAgICAgIHRtcEJ1ZmY2NHYuc2V0VWludDMyKDQsIE1hdGguZmxvb3IodiAvIDB4MTAwMDAwMDAwKSAsIHRydWUpO1xuXG4gICAgICAgIGF3YWl0IHNlbGYud3JpdGUodG1wQnVmZjY0LCBwb3MpO1xuICAgIH1cblxuXG4gICAgYXN5bmMgcmVhZFVMRTMyKHBvcykge1xuICAgICAgICBjb25zdCBzZWxmID0gdGhpcztcbiAgICAgICAgY29uc3QgYiA9IGF3YWl0IHNlbGYucmVhZCg0LCBwb3MpO1xuXG4gICAgICAgIGNvbnN0IHZpZXcgPSBuZXcgVWludDMyQXJyYXkoYi5idWZmZXIpO1xuXG4gICAgICAgIHJldHVybiB2aWV3WzBdO1xuICAgIH1cblxuICAgIGFzeW5jIHJlYWRVQkUzMihwb3MpIHtcbiAgICAgICAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gICAgICAgIGNvbnN0IGIgPSBhd2FpdCBzZWxmLnJlYWQoNCwgcG9zKTtcblxuICAgICAgICBjb25zdCB2aWV3ID0gbmV3IERhdGFWaWV3KGIuYnVmZmVyKTtcblxuICAgICAgICByZXR1cm4gdmlldy5nZXRVaW50MzIoMCwgZmFsc2UpO1xuICAgIH1cblxuICAgIGFzeW5jIHJlYWRVTEU2NChwb3MpIHtcbiAgICAgICAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gICAgICAgIGNvbnN0IGIgPSBhd2FpdCBzZWxmLnJlYWQoOCwgcG9zKTtcblxuICAgICAgICBjb25zdCB2aWV3ID0gbmV3IFVpbnQzMkFycmF5KGIuYnVmZmVyKTtcblxuICAgICAgICByZXR1cm4gdmlld1sxXSAqIDB4MTAwMDAwMDAwICsgdmlld1swXTtcbiAgICB9XG5cbiAgICBhc3luYyByZWFkU3RyaW5nKHBvcykge1xuICAgICAgICBjb25zdCBzZWxmID0gdGhpcztcbiAgICAgICAgY29uc3QgZml4ZWRTaXplID0gMjA0ODtcblxuICAgICAgICBsZXQgY3VycmVudFBvc2l0aW9uID0gdHlwZW9mIHBvcyA9PSBcInVuZGVmaW5lZFwiID8gc2VsZi5wb3MgOiBwb3M7XG5cbiAgICAgICAgaWYgKGN1cnJlbnRQb3NpdGlvbiA+IHRoaXMudG90YWxTaXplKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5yZWFkT25seSkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIlJlYWRpbmcgb3V0IG9mIGJvdW5kc1wiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuX3Jlc2l6ZUlmTmVlZGVkKHBvcyk7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgZW5kT2ZTdHJpbmdGb3VuZCA9IGZhbHNlO1xuICAgICAgICBsZXQgc3RyID0gXCJcIjtcblxuICAgICAgICB3aGlsZSAoIWVuZE9mU3RyaW5nRm91bmQpIHtcbiAgICAgICAgICAgIGxldCBjdXJyZW50UGFnZSA9IE1hdGguZmxvb3IoY3VycmVudFBvc2l0aW9uIC8gUEFHRV9TSVpFKTtcbiAgICAgICAgICAgIGxldCBvZmZzZXRPblBhZ2UgPSBjdXJyZW50UG9zaXRpb24gJSBQQUdFX1NJWkU7XG5cbiAgICAgICAgICAgIGlmIChzZWxmLm8uZGF0YVtjdXJyZW50UGFnZV0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkVSUk9SXCIpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBsZXQgcmVhZExlbmd0aCA9IE1hdGgubWluKGZpeGVkU2l6ZSwgc2VsZi5vLmRhdGFbY3VycmVudFBhZ2VdLmxlbmd0aCAtIG9mZnNldE9uUGFnZSk7XG4gICAgICAgICAgICBjb25zdCBkYXRhQXJyYXkgPSBuZXcgVWludDhBcnJheShzZWxmLm8uZGF0YVtjdXJyZW50UGFnZV0uYnVmZmVyLCBvZmZzZXRPblBhZ2UsIHJlYWRMZW5ndGgpO1xuXG4gICAgICAgICAgICBsZXQgaW5kZXhFbmRPZlN0cmluZyA9IGRhdGFBcnJheS5maW5kSW5kZXgoZWxlbWVudCA9PiBlbGVtZW50ID09PSAwKTtcbiAgICAgICAgICAgIGVuZE9mU3RyaW5nRm91bmQgPSBpbmRleEVuZE9mU3RyaW5nICE9PSAtMTtcblxuICAgICAgICAgICAgaWYgKGVuZE9mU3RyaW5nRm91bmQpIHtcbiAgICAgICAgICAgICAgICBzdHIgKz0gbmV3IFRleHREZWNvZGVyKCkuZGVjb2RlKGRhdGFBcnJheS5zbGljZSgwLCBpbmRleEVuZE9mU3RyaW5nKSk7XG4gICAgICAgICAgICAgICAgc2VsZi5wb3MgPSBjdXJyZW50UGFnZSAqIFBBR0VfU0laRSArIG9mZnNldE9uUGFnZSArIGluZGV4RW5kT2ZTdHJpbmcgKyAxO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBzdHIgKz0gbmV3IFRleHREZWNvZGVyKCkuZGVjb2RlKGRhdGFBcnJheSk7XG4gICAgICAgICAgICAgICAgc2VsZi5wb3MgPSBjdXJyZW50UGFnZSAqIFBBR0VfU0laRSArIG9mZnNldE9uUGFnZSArIGRhdGFBcnJheS5sZW5ndGg7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGN1cnJlbnRQb3NpdGlvbiA9IHNlbGYucG9zO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzdHI7XG4gICAgfVxufVxuIiwiLyogZ2xvYmFsIGZldGNoICovXG5pbXBvcnQgeyBvcGVuIH0gZnJvbSBcIi4vb3NmaWxlLmpzXCI7XG5pbXBvcnQgKiBhcyBtZW1GaWxlIGZyb20gXCIuL21lbWZpbGUuanNcIjtcbmltcG9ydCAqIGFzIGJpZ01lbUZpbGUgZnJvbSBcIi4vYmlnbWVtZmlsZS5qc1wiO1xuaW1wb3J0IHsgT19UUlVOQywgT19DUkVBVCwgT19SRFdSLCBPX0VYQ0wsIE9fUkRPTkxZIH0gZnJvbSBcImNvbnN0YW50c1wiO1xuXG5jb25zdCBERUZBVUxUX0NBQ0hFX1NJWkUgPSAoMSA8PCAxNik7XG5jb25zdCBERUZBVUxUX1BBR0VfU0laRSA9ICgxIDw8IDEzKTtcblxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY3JlYXRlT3ZlcnJpZGUobywgYiwgYykge1xuICAgIGlmICh0eXBlb2YgbyA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICBvID0ge1xuICAgICAgICAgICAgdHlwZTogXCJmaWxlXCIsXG4gICAgICAgICAgICBmaWxlTmFtZTogbyxcbiAgICAgICAgICAgIGNhY2hlU2l6ZTogYiB8fCBERUZBVUxUX0NBQ0hFX1NJWkUsXG4gICAgICAgICAgICBwYWdlU2l6ZTogYyB8fCBERUZBVUxUX1BBR0VfU0laRVxuICAgICAgICB9O1xuICAgIH1cbiAgICBpZiAoby50eXBlID09IFwiZmlsZVwiKSB7XG4gICAgICAgIHJldHVybiBhd2FpdCBvcGVuKG8uZmlsZU5hbWUsIE9fVFJVTkMgfCBPX0NSRUFUIHwgT19SRFdSLCBvLmNhY2hlU2l6ZSwgby5wYWdlU2l6ZSk7XG4gICAgfSBlbHNlIGlmIChvLnR5cGUgPT0gXCJtZW1cIikge1xuICAgICAgICByZXR1cm4gbWVtRmlsZS5jcmVhdGVOZXcobyk7XG4gICAgfSBlbHNlIGlmIChvLnR5cGUgPT0gXCJiaWdNZW1cIikge1xuICAgICAgICByZXR1cm4gYmlnTWVtRmlsZS5jcmVhdGVOZXcobyk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBGYXN0RmlsZSB0eXBlOiBcIitvLnR5cGUpO1xuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZU5vT3ZlcnJpZGUobywgYiwgYykge1xuICAgIGlmICh0eXBlb2YgbyA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICBvID0ge1xuICAgICAgICAgICAgdHlwZTogXCJmaWxlXCIsXG4gICAgICAgICAgICBmaWxlTmFtZTogbyxcbiAgICAgICAgICAgIGNhY2hlU2l6ZTogYiB8fCBERUZBVUxUX0NBQ0hFX1NJWkUsXG4gICAgICAgICAgICBwYWdlU2l6ZTogYyB8fCBERUZBVUxUX1BBR0VfU0laRVxuICAgICAgICB9O1xuICAgIH1cbiAgICBpZiAoby50eXBlID09IFwiZmlsZVwiKSB7XG4gICAgICAgIHJldHVybiBvcGVuKG8uZmlsZU5hbWUsIE9fVFJVTkMgfCBPX0NSRUFUIHwgT19SRFdSIHwgT19FWENMLCBvLmNhY2hlU2l6ZSwgby5wYWdlU2l6ZSk7XG4gICAgfSBlbHNlIGlmIChvLnR5cGUgPT0gXCJtZW1cIikge1xuICAgICAgICByZXR1cm4gbWVtRmlsZS5jcmVhdGVOZXcobyk7XG4gICAgfSBlbHNlIGlmIChvLnR5cGUgPT0gXCJiaWdNZW1cIikge1xuICAgICAgICByZXR1cm4gYmlnTWVtRmlsZS5jcmVhdGVOZXcobyk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBGYXN0RmlsZSB0eXBlOiBcIitvLnR5cGUpO1xuICAgIH1cbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlYWRFeGlzdGluZyhvLCBiLCBjKSB7XG4gICAgaWYgKG8gaW5zdGFuY2VvZiBVaW50OEFycmF5KSB7XG4gICAgICAgIG8gPSB7XG4gICAgICAgICAgICB0eXBlOiBcIm1lbVwiLFxuICAgICAgICAgICAgZGF0YTogb1xuICAgICAgICB9O1xuICAgIH1cbiAgICBpZiAocHJvY2Vzcy5icm93c2VyKSB7XG4gICAgICAgIGlmICh0eXBlb2YgbyA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgY29uc3QgYnVmZiA9IGF3YWl0IGZldGNoKG8pLnRoZW4oIGZ1bmN0aW9uKHJlcykge1xuICAgICAgICAgICAgICAgIHJldHVybiByZXMuYXJyYXlCdWZmZXIoKTtcbiAgICAgICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKGFiKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBVaW50OEFycmF5KGFiKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgbyA9IHtcbiAgICAgICAgICAgICAgICB0eXBlOiBcIm1lbVwiLFxuICAgICAgICAgICAgICAgIGRhdGE6IGJ1ZmZcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgICBpZiAodHlwZW9mIG8gPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICAgIG8gPSB7XG4gICAgICAgICAgICAgICAgdHlwZTogXCJmaWxlXCIsXG4gICAgICAgICAgICAgICAgZmlsZU5hbWU6IG8sXG4gICAgICAgICAgICAgICAgY2FjaGVTaXplOiBiIHx8IERFRkFVTFRfQ0FDSEVfU0laRSxcbiAgICAgICAgICAgICAgICBwYWdlU2l6ZTogYyB8fCBERUZBVUxUX1BBR0VfU0laRVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBpZiAoby50eXBlID09IFwiZmlsZVwiKSB7XG4gICAgICAgIHJldHVybiBhd2FpdCBvcGVuKG8uZmlsZU5hbWUsIE9fUkRPTkxZLCBvLmNhY2hlU2l6ZSwgby5wYWdlU2l6ZSk7XG4gICAgfSBlbHNlIGlmIChvLnR5cGUgPT0gXCJtZW1cIikge1xuICAgICAgICByZXR1cm4gYXdhaXQgbWVtRmlsZS5yZWFkRXhpc3Rpbmcobyk7XG4gICAgfSBlbHNlIGlmIChvLnR5cGUgPT0gXCJiaWdNZW1cIikge1xuICAgICAgICByZXR1cm4gYXdhaXQgYmlnTWVtRmlsZS5yZWFkRXhpc3Rpbmcobyk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBGYXN0RmlsZSB0eXBlOiBcIitvLnR5cGUpO1xuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlYWRXcml0ZUV4aXN0aW5nKG8sIGIsIGMpIHtcbiAgICBpZiAodHlwZW9mIG8gPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgbyA9IHtcbiAgICAgICAgICAgIHR5cGU6IFwiZmlsZVwiLFxuICAgICAgICAgICAgZmlsZU5hbWU6IG8sXG4gICAgICAgICAgICBjYWNoZVNpemU6IGIgfHwgREVGQVVMVF9DQUNIRV9TSVpFLFxuICAgICAgICAgICAgcGFnZVNpemU6IGMgfHwgREVGQVVMVF9QQUdFX1NJWkVcbiAgICAgICAgfTtcbiAgICB9XG4gICAgaWYgKG8udHlwZSA9PSBcImZpbGVcIikge1xuICAgICAgICByZXR1cm4gb3BlbihvLmZpbGVOYW1lLCBPX0NSRUFUIHwgT19SRFdSLCBvLmNhY2hlU2l6ZSwgby5wYWdlU2l6ZSk7XG4gICAgfSBlbHNlIGlmIChvLnR5cGUgPT0gXCJtZW1cIikge1xuICAgICAgICByZXR1cm4gbWVtRmlsZS5yZWFkV3JpdGVFeGlzdGluZyhvKTtcbiAgICB9IGVsc2UgaWYgKG8udHlwZSA9PSBcImJpZ01lbVwiKSB7XG4gICAgICAgIHJldHVybiBiaWdNZW1GaWxlLnJlYWRXcml0ZUV4aXN0aW5nKG8pO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgRmFzdEZpbGUgdHlwZTogXCIrby50eXBlKTtcbiAgICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZWFkV3JpdGVFeGlzdGluZ09yQ3JlYXRlKG8sIGIsIGMpIHtcbiAgICBpZiAodHlwZW9mIG8gPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgbyA9IHtcbiAgICAgICAgICAgIHR5cGU6IFwiZmlsZVwiLFxuICAgICAgICAgICAgZmlsZU5hbWU6IG8sXG4gICAgICAgICAgICBjYWNoZVNpemU6IGIgfHwgREVGQVVMVF9DQUNIRV9TSVpFLFxuICAgICAgICAgICAgcGFnZVNpemU6IGMgfHwgREVGQVVMVF9QQUdFX1NJWkVcbiAgICAgICAgfTtcbiAgICB9XG4gICAgaWYgKG8udHlwZSA9PSBcImZpbGVcIikge1xuICAgICAgICByZXR1cm4gb3BlbihvLmZpbGVOYW1lLCBPX0NSRUFUIHwgT19SRFdSIHwgT19FWENMLCBvLmNhY2hlU2l6ZSk7XG4gICAgfSBlbHNlIGlmIChvLnR5cGUgPT0gXCJtZW1cIikge1xuICAgICAgICByZXR1cm4gbWVtRmlsZS5yZWFkV3JpdGVFeGlzdGluZyhvKTtcbiAgICB9IGVsc2UgaWYgKG8udHlwZSA9PSBcImJpZ01lbVwiKSB7XG4gICAgICAgIHJldHVybiBiaWdNZW1GaWxlLnJlYWRXcml0ZUV4aXN0aW5nKG8pO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgRmFzdEZpbGUgdHlwZTogXCIrby50eXBlKTtcbiAgICB9XG59XG4iLCJcbmltcG9ydCAgeyBTY2FsYXIsIEJpZ0J1ZmZlciB9IGZyb20gXCJmZmphdmFzY3JpcHRcIjtcbmltcG9ydCAqIGFzIGZhc3RGaWxlIGZyb20gXCJmYXN0ZmlsZVwiO1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVhZEJpbkZpbGUoZmlsZU5hbWUsIHR5cGUsIG1heFZlcnNpb24sIGNhY2hlU2l6ZSwgcGFnZVNpemUpIHtcblxuICAgIGNvbnN0IGZkID0gYXdhaXQgZmFzdEZpbGUucmVhZEV4aXN0aW5nKGZpbGVOYW1lLCBjYWNoZVNpemUsIHBhZ2VTaXplKTtcblxuICAgIGNvbnN0IGIgPSBhd2FpdCBmZC5yZWFkKDQpO1xuICAgIGxldCByZWFkZWRUeXBlID0gXCJcIjtcbiAgICBmb3IgKGxldCBpPTA7IGk8NDsgaSsrKSByZWFkZWRUeXBlICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoYltpXSk7XG5cbiAgICBpZiAocmVhZGVkVHlwZSAhPSB0eXBlKSB0aHJvdyBuZXcgRXJyb3IoZmlsZU5hbWUgKyBcIjogSW52YWxpZCBGaWxlIGZvcm1hdFwiKTtcblxuICAgIGxldCB2ID0gYXdhaXQgZmQucmVhZFVMRTMyKCk7XG5cbiAgICBpZiAodj5tYXhWZXJzaW9uKSB0aHJvdyBuZXcgRXJyb3IoXCJWZXJzaW9uIG5vdCBzdXBwb3J0ZWRcIik7XG5cbiAgICBjb25zdCBuU2VjdGlvbnMgPSBhd2FpdCBmZC5yZWFkVUxFMzIoKTtcblxuICAgIC8vIFNjYW4gc2VjdGlvbnNcbiAgICBsZXQgc2VjdGlvbnMgPSBbXTtcbiAgICBmb3IgKGxldCBpPTA7IGk8blNlY3Rpb25zOyBpKyspIHtcbiAgICAgICAgbGV0IGh0ID0gYXdhaXQgZmQucmVhZFVMRTMyKCk7XG4gICAgICAgIGxldCBobCA9IGF3YWl0IGZkLnJlYWRVTEU2NCgpO1xuICAgICAgICBpZiAodHlwZW9mIHNlY3Rpb25zW2h0XSA9PSBcInVuZGVmaW5lZFwiKSBzZWN0aW9uc1todF0gPSBbXTtcbiAgICAgICAgc2VjdGlvbnNbaHRdLnB1c2goe1xuICAgICAgICAgICAgcDogZmQucG9zLFxuICAgICAgICAgICAgc2l6ZTogaGxcbiAgICAgICAgfSk7XG4gICAgICAgIGZkLnBvcyArPSBobDtcbiAgICB9XG5cbiAgICByZXR1cm4ge2ZkLCBzZWN0aW9uc307XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjcmVhdGVCaW5GaWxlKGZpbGVOYW1lLCB0eXBlLCB2ZXJzaW9uLCBuU2VjdGlvbnMsIGNhY2hlU2l6ZSwgcGFnZVNpemUpIHtcblxuICAgIGNvbnN0IGZkID0gYXdhaXQgZmFzdEZpbGUuY3JlYXRlT3ZlcnJpZGUoZmlsZU5hbWUsIGNhY2hlU2l6ZSwgcGFnZVNpemUpO1xuXG4gICAgY29uc3QgYnVmZiA9IG5ldyBVaW50OEFycmF5KDQpO1xuICAgIGZvciAobGV0IGk9MDsgaTw0OyBpKyspIGJ1ZmZbaV0gPSB0eXBlLmNoYXJDb2RlQXQoaSk7XG4gICAgYXdhaXQgZmQud3JpdGUoYnVmZiwgMCk7IC8vIE1hZ2ljIFwicjFjc1wiXG5cbiAgICBhd2FpdCBmZC53cml0ZVVMRTMyKHZlcnNpb24pOyAvLyBWZXJzaW9uXG4gICAgYXdhaXQgZmQud3JpdGVVTEUzMihuU2VjdGlvbnMpOyAvLyBOdW1iZXIgb2YgU2VjdGlvbnNcblxuICAgIHJldHVybiBmZDtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHN0YXJ0V3JpdGVTZWN0aW9uKGZkLCBpZFNlY3Rpb24pIHtcbiAgICBpZiAodHlwZW9mIGZkLndyaXRpbmdTZWN0aW9uICE9PSBcInVuZGVmaW5lZFwiKSB0aHJvdyBuZXcgRXJyb3IoXCJBbHJlYWR5IHdyaXRpbmcgYSBzZWN0aW9uXCIpO1xuICAgIGF3YWl0IGZkLndyaXRlVUxFMzIoaWRTZWN0aW9uKTsgLy8gSGVhZGVyIHR5cGVcbiAgICBmZC53cml0aW5nU2VjdGlvbiA9IHtcbiAgICAgICAgcFNlY3Rpb25TaXplOiBmZC5wb3NcbiAgICB9O1xuICAgIGF3YWl0IGZkLndyaXRlVUxFNjQoMCk7IC8vIFRlbXBvcmFsbHkgc2V0IHRvIDAgbGVuZ3RoXG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBlbmRXcml0ZVNlY3Rpb24oZmQpIHtcbiAgICBpZiAodHlwZW9mIGZkLndyaXRpbmdTZWN0aW9uID09PSBcInVuZGVmaW5lZFwiKSB0aHJvdyBuZXcgRXJyb3IoXCJOb3Qgd3JpdGluZyBhIHNlY3Rpb25cIik7XG5cbiAgICBjb25zdCBzZWN0aW9uU2l6ZSA9IGZkLnBvcyAtIGZkLndyaXRpbmdTZWN0aW9uLnBTZWN0aW9uU2l6ZSAtIDg7XG4gICAgY29uc3Qgb2xkUG9zID0gZmQucG9zO1xuICAgIGZkLnBvcyA9IGZkLndyaXRpbmdTZWN0aW9uLnBTZWN0aW9uU2l6ZTtcbiAgICBhd2FpdCBmZC53cml0ZVVMRTY0KHNlY3Rpb25TaXplKTtcbiAgICBmZC5wb3MgPSBvbGRQb3M7XG4gICAgZGVsZXRlIGZkLndyaXRpbmdTZWN0aW9uO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gc3RhcnRSZWFkVW5pcXVlU2VjdGlvbihmZCwgc2VjdGlvbnMsIGlkU2VjdGlvbikge1xuICAgIGlmICh0eXBlb2YgZmQucmVhZGluZ1NlY3Rpb24gIT09IFwidW5kZWZpbmVkXCIpIHRocm93IG5ldyBFcnJvcihcIkFscmVhZHkgcmVhZGluZyBhIHNlY3Rpb25cIik7XG4gICAgaWYgKCFzZWN0aW9uc1tpZFNlY3Rpb25dKSAgdGhyb3cgbmV3IEVycm9yKGZkLmZpbGVOYW1lICsgXCI6IE1pc3Npbmcgc2VjdGlvbiBcIisgaWRTZWN0aW9uICk7XG4gICAgaWYgKHNlY3Rpb25zW2lkU2VjdGlvbl0ubGVuZ3RoPjEpIHRocm93IG5ldyBFcnJvcihmZC5maWxlTmFtZSArXCI6IFNlY3Rpb24gRHVwbGljYXRlZCBcIiAraWRTZWN0aW9uKTtcblxuICAgIGZkLnBvcyA9IHNlY3Rpb25zW2lkU2VjdGlvbl1bMF0ucDtcblxuICAgIGZkLnJlYWRpbmdTZWN0aW9uID0gc2VjdGlvbnNbaWRTZWN0aW9uXVswXTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGVuZFJlYWRTZWN0aW9uKGZkLCBub0NoZWNrKSB7XG4gICAgaWYgKHR5cGVvZiBmZC5yZWFkaW5nU2VjdGlvbiA9PT0gXCJ1bmRlZmluZWRcIikgdGhyb3cgbmV3IEVycm9yKFwiTm90IHJlYWRpbmcgYSBzZWN0aW9uXCIpO1xuICAgIGlmICghbm9DaGVjaykge1xuICAgICAgICBpZiAoZmQucG9zLWZkLnJlYWRpbmdTZWN0aW9uLnAgIT0gIGZkLnJlYWRpbmdTZWN0aW9uLnNpemUpIHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgc2VjdGlvbiBzaXplIHJlYWRpbmdcIik7XG4gICAgfVxuICAgIGRlbGV0ZSBmZC5yZWFkaW5nU2VjdGlvbjtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHdyaXRlQmlnSW50KGZkLCBuLCBuOCwgcG9zKSB7XG4gICAgY29uc3QgYnVmZiA9IG5ldyBVaW50OEFycmF5KG44KTtcbiAgICBTY2FsYXIudG9ScHJMRShidWZmLCAwLCBuLCBuOCk7XG4gICAgYXdhaXQgZmQud3JpdGUoYnVmZiwgcG9zKTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlYWRCaWdJbnQoZmQsIG44LCBwb3MpIHtcbiAgICBjb25zdCBidWZmID0gYXdhaXQgZmQucmVhZChuOCwgcG9zKTtcbiAgICByZXR1cm4gU2NhbGFyLmZyb21ScHJMRShidWZmLCAwLCBuOCk7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjb3B5U2VjdGlvbihmZEZyb20sIHNlY3Rpb25zLCBmZFRvLCBzZWN0aW9uSWQsIHNpemUpIHtcbiAgICBpZiAodHlwZW9mIHNpemUgPT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgICAgc2l6ZSA9IHNlY3Rpb25zW3NlY3Rpb25JZF1bMF0uc2l6ZTtcbiAgICB9XG4gICAgY29uc3QgY2h1bmtTaXplID0gZmRGcm9tLnBhZ2VTaXplO1xuICAgIGF3YWl0IHN0YXJ0UmVhZFVuaXF1ZVNlY3Rpb24oZmRGcm9tLCBzZWN0aW9ucywgc2VjdGlvbklkKTtcbiAgICBhd2FpdCBzdGFydFdyaXRlU2VjdGlvbihmZFRvLCBzZWN0aW9uSWQpO1xuICAgIGZvciAobGV0IHA9MDsgcDxzaXplOyBwKz1jaHVua1NpemUpIHtcbiAgICAgICAgY29uc3QgbCA9IE1hdGgubWluKHNpemUgLXAsIGNodW5rU2l6ZSk7XG4gICAgICAgIGNvbnN0IGJ1ZmYgPSBhd2FpdCBmZEZyb20ucmVhZChsKTtcbiAgICAgICAgYXdhaXQgZmRUby53cml0ZShidWZmKTtcbiAgICB9XG4gICAgYXdhaXQgZW5kV3JpdGVTZWN0aW9uKGZkVG8pO1xuICAgIGF3YWl0IGVuZFJlYWRTZWN0aW9uKGZkRnJvbSwgc2l6ZSAhPSBzZWN0aW9uc1tzZWN0aW9uSWRdWzBdLnNpemUpO1xuXG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZWFkU2VjdGlvbihmZCwgc2VjdGlvbnMsIGlkU2VjdGlvbiwgb2Zmc2V0LCBsZW5ndGgpIHtcblxuICAgIG9mZnNldCA9ICh0eXBlb2Ygb2Zmc2V0ID09PSBcInVuZGVmaW5lZFwiKSA/IDAgOiBvZmZzZXQ7XG4gICAgbGVuZ3RoID0gKHR5cGVvZiBsZW5ndGggPT09IFwidW5kZWZpbmVkXCIpID8gc2VjdGlvbnNbaWRTZWN0aW9uXVswXS5zaXplIC0gb2Zmc2V0IDogbGVuZ3RoO1xuXG4gICAgaWYgKG9mZnNldCArIGxlbmd0aCA+IHNlY3Rpb25zW2lkU2VjdGlvbl1bMF0uc2l6ZSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJSZWFkaW5nIG91dCBvZiB0aGUgcmFuZ2Ugb2YgdGhlIHNlY3Rpb25cIik7XG4gICAgfVxuXG4gICAgbGV0IGJ1ZmY7XG4gICAgaWYgKGxlbmd0aCA8ICgxIDw8IDMwKSApIHtcbiAgICAgICAgYnVmZiA9IG5ldyBVaW50OEFycmF5KGxlbmd0aCk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgYnVmZiA9IG5ldyBCaWdCdWZmZXIobGVuZ3RoKTtcbiAgICB9XG5cbiAgICBhd2FpdCBmZC5yZWFkVG9CdWZmZXIoYnVmZiwgMCwgbGVuZ3RoLCBzZWN0aW9uc1tpZFNlY3Rpb25dWzBdLnAgKyBvZmZzZXQpO1xuICAgIHJldHVybiBidWZmO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gc2VjdGlvbklzRXF1YWwoZmQxLCBzZWN0aW9uczEsIGZkMiwgc2VjdGlvbnMyLCBpZFNlY3Rpb24pIHtcbiAgICBjb25zdCBNQVhfQlVGRl9TSVpFID0gZmQxLnBhZ2VTaXplICogMTY7XG4gICAgYXdhaXQgc3RhcnRSZWFkVW5pcXVlU2VjdGlvbihmZDEsIHNlY3Rpb25zMSwgaWRTZWN0aW9uKTtcbiAgICBhd2FpdCBzdGFydFJlYWRVbmlxdWVTZWN0aW9uKGZkMiwgc2VjdGlvbnMyLCBpZFNlY3Rpb24pO1xuICAgIGlmIChzZWN0aW9uczFbaWRTZWN0aW9uXVswXS5zaXplICE9IHNlY3Rpb25zMltpZFNlY3Rpb25dWzBdLnNpemUpIHJldHVybiBmYWxzZTtcbiAgICBjb25zdCB0b3RhbEJ5dGVzPXNlY3Rpb25zMVtpZFNlY3Rpb25dWzBdLnNpemU7XG4gICAgZm9yIChsZXQgaT0wOyBpPHRvdGFsQnl0ZXM7IGkrPSBNQVhfQlVGRl9TSVpFKSB7XG4gICAgICAgIGNvbnN0IG4gPSBNYXRoLm1pbih0b3RhbEJ5dGVzLWksIE1BWF9CVUZGX1NJWkUpO1xuICAgICAgICBjb25zdCBidWZmMSA9IGF3YWl0IGZkMS5yZWFkKG4pO1xuICAgICAgICBjb25zdCBidWZmMiA9IGF3YWl0IGZkMi5yZWFkKG4pO1xuICAgICAgICBmb3IgKGxldCBqPTA7IGo8bjsgaisrKSBpZiAoYnVmZjFbal0gIT0gYnVmZjJbal0pIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgYXdhaXQgZW5kUmVhZFNlY3Rpb24oZmQxKTtcbiAgICBhd2FpdCBlbmRSZWFkU2VjdGlvbihmZDIpO1xuICAgIHJldHVybiB0cnVlO1xufVxuIiwiaW1wb3J0IHsgU2NhbGFyLCBidWlsZEJuMTI4LCBidWlsZEJsczEyMzgxfSBmcm9tIFwiZmZqYXZhc2NyaXB0XCI7XG5cbmNvbnN0IGJsczEyMzgxciA9IFNjYWxhci5lKFwiNzNlZGE3NTMyOTlkN2Q0ODMzMzlkODA4MDlhMWQ4MDU1M2JkYTQwMmZmZmU1YmZlZmZmZmZmZmYwMDAwMDAwMVwiLCAxNik7XG5jb25zdCBibjEyOHIgPSBTY2FsYXIuZShcIjIxODg4MjQyODcxODM5Mjc1MjIyMjQ2NDA1NzQ1MjU3Mjc1MDg4NTQ4MzY0NDAwNDE2MDM0MzQzNjk4MjA0MTg2NTc1ODA4NDk1NjE3XCIpO1xuXG5jb25zdCBibHMxMjM4MXEgPSBTY2FsYXIuZShcIjFhMDExMWVhMzk3ZmU2OWE0YjFiYTdiNjQzNGJhY2Q3NjQ3NzRiODRmMzg1MTJiZjY3MzBkMmEwZjZiMGY2MjQxZWFiZmZmZWIxNTNmZmZmYjlmZWZmZmZmZmZmYWFhYlwiLCAxNik7XG5jb25zdCBibjEyOHEgPSBTY2FsYXIuZShcIjIxODg4MjQyODcxODM5Mjc1MjIyMjQ2NDA1NzQ1MjU3Mjc1MDg4Njk2MzExMTU3Mjk3ODIzNjYyNjg5MDM3ODk0NjQ1MjI2MjA4NTgzXCIpO1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0Q3VydmVGcm9tUihyKSB7XG4gICAgbGV0IGN1cnZlO1xuICAgIGlmIChTY2FsYXIuZXEociwgYm4xMjhyKSkge1xuICAgICAgICBjdXJ2ZSA9IGF3YWl0IGJ1aWxkQm4xMjgoKTtcbiAgICB9IGVsc2UgaWYgKFNjYWxhci5lcShyLCBibHMxMjM4MXIpKSB7XG4gICAgICAgIGN1cnZlID0gYXdhaXQgYnVpbGRCbHMxMjM4MSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgQ3VydmUgbm90IHN1cHBvcnRlZDogJHtTY2FsYXIudG9TdHJpbmcocil9YCk7XG4gICAgfVxuICAgIHJldHVybiBjdXJ2ZTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldEN1cnZlRnJvbVEocSkge1xuICAgIGxldCBjdXJ2ZTtcbiAgICBpZiAoU2NhbGFyLmVxKHEsIGJuMTI4cSkpIHtcbiAgICAgICAgY3VydmUgPSBhd2FpdCBidWlsZEJuMTI4KCk7XG4gICAgfSBlbHNlIGlmIChTY2FsYXIuZXEocSwgYmxzMTIzODFxKSkge1xuICAgICAgICBjdXJ2ZSA9IGF3YWl0IGJ1aWxkQmxzMTIzODEoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEN1cnZlIG5vdCBzdXBwb3J0ZWQ6ICR7U2NhbGFyLnRvU3RyaW5nKHEpfWApO1xuICAgIH1cbiAgICByZXR1cm4gY3VydmU7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRDdXJ2ZUZyb21OYW1lKG5hbWUpIHtcbiAgICBsZXQgY3VydmU7XG4gICAgY29uc3Qgbm9ybU5hbWUgPSBub3JtYWxpemVOYW1lKG5hbWUpO1xuICAgIGlmIChbXCJCTjEyOFwiLCBcIkJOMjU0XCIsIFwiQUxUQk4xMjhcIl0uaW5kZXhPZihub3JtTmFtZSkgPj0gMCkge1xuICAgICAgICBjdXJ2ZSA9IGF3YWl0IGJ1aWxkQm4xMjgoKTtcbiAgICB9IGVsc2UgaWYgKFtcIkJMUzEyMzgxXCJdLmluZGV4T2Yobm9ybU5hbWUpID49IDApIHtcbiAgICAgICAgY3VydmUgPSBhd2FpdCBidWlsZEJsczEyMzgxKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBDdXJ2ZSBub3Qgc3VwcG9ydGVkOiAke25hbWV9YCk7XG4gICAgfVxuICAgIHJldHVybiBjdXJ2ZTtcblxuICAgIGZ1bmN0aW9uIG5vcm1hbGl6ZU5hbWUobikge1xuICAgICAgICByZXR1cm4gbi50b1VwcGVyQ2FzZSgpLm1hdGNoKC9bQS1aYS16MC05XSsvZykuam9pbihcIlwiKTtcbiAgICB9XG5cbn1cblxuIiwibW9kdWxlLmV4cG9ydHMgPSBhc3NlcnRcblxuY2xhc3MgQXNzZXJ0aW9uRXJyb3IgZXh0ZW5kcyBFcnJvciB7fVxuQXNzZXJ0aW9uRXJyb3IucHJvdG90eXBlLm5hbWUgPSAnQXNzZXJ0aW9uRXJyb3InXG5cbi8qKlxuICogTWluaW1hbCBhc3NlcnQgZnVuY3Rpb25cbiAqIEBwYXJhbSAge2FueX0gdCBWYWx1ZSB0byBjaGVjayBpZiBmYWxzeVxuICogQHBhcmFtICB7c3RyaW5nPX0gbSBPcHRpb25hbCBhc3NlcnRpb24gZXJyb3IgbWVzc2FnZVxuICogQHRocm93cyB7QXNzZXJ0aW9uRXJyb3J9XG4gKi9cbmZ1bmN0aW9uIGFzc2VydCAodCwgbSkge1xuICBpZiAoIXQpIHtcbiAgICB2YXIgZXJyID0gbmV3IEFzc2VydGlvbkVycm9yKG0pXG4gICAgaWYgKEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKSBFcnJvci5jYXB0dXJlU3RhY2tUcmFjZShlcnIsIGFzc2VydClcbiAgICB0aHJvdyBlcnJcbiAgfVxufVxuIiwiZnVuY3Rpb24gYnl0ZUxlbmd0aCAoc3RyaW5nKSB7XG4gIHJldHVybiBzdHJpbmcubGVuZ3RoXG59XG5cbmZ1bmN0aW9uIHRvU3RyaW5nIChidWZmZXIpIHtcbiAgY29uc3QgbGVuID0gYnVmZmVyLmJ5dGVMZW5ndGhcblxuICBsZXQgcmVzdWx0ID0gJydcblxuICBmb3IgKGxldCBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgcmVzdWx0ICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoYnVmZmVyW2ldKVxuICB9XG5cbiAgcmV0dXJuIHJlc3VsdFxufVxuXG5mdW5jdGlvbiB3cml0ZSAoYnVmZmVyLCBzdHJpbmcsIG9mZnNldCA9IDAsIGxlbmd0aCA9IGJ5dGVMZW5ndGgoc3RyaW5nKSkge1xuICBjb25zdCBsZW4gPSBNYXRoLm1pbihsZW5ndGgsIGJ1ZmZlci5ieXRlTGVuZ3RoIC0gb2Zmc2V0KVxuXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICBidWZmZXJbb2Zmc2V0ICsgaV0gPSBzdHJpbmcuY2hhckNvZGVBdChpKVxuICB9XG5cbiAgcmV0dXJuIGxlblxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgYnl0ZUxlbmd0aCxcbiAgdG9TdHJpbmcsXG4gIHdyaXRlXG59XG4iLCJjb25zdCBhbHBoYWJldCA9ICdBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSsvJ1xuXG5jb25zdCBjb2RlcyA9IG5ldyBVaW50OEFycmF5KDI1NilcblxuZm9yIChsZXQgaSA9IDA7IGkgPCBhbHBoYWJldC5sZW5ndGg7IGkrKykge1xuICBjb2Rlc1thbHBoYWJldC5jaGFyQ29kZUF0KGkpXSA9IGlcbn1cblxuY29kZXNbLyogLSAqLyAweDJkXSA9IDYyXG5jb2Rlc1svKiBfICovIDB4NWZdID0gNjNcblxuZnVuY3Rpb24gYnl0ZUxlbmd0aCAoc3RyaW5nKSB7XG4gIGxldCBsZW4gPSBzdHJpbmcubGVuZ3RoXG5cbiAgaWYgKHN0cmluZy5jaGFyQ29kZUF0KGxlbiAtIDEpID09PSAweDNkKSBsZW4tLVxuICBpZiAobGVuID4gMSAmJiBzdHJpbmcuY2hhckNvZGVBdChsZW4gLSAxKSA9PT0gMHgzZCkgbGVuLS1cblxuICByZXR1cm4gKGxlbiAqIDMpID4+PiAyXG59XG5cbmZ1bmN0aW9uIHRvU3RyaW5nIChidWZmZXIpIHtcbiAgY29uc3QgbGVuID0gYnVmZmVyLmJ5dGVMZW5ndGhcblxuICBsZXQgcmVzdWx0ID0gJydcblxuICBmb3IgKGxldCBpID0gMDsgaSA8IGxlbjsgaSArPSAzKSB7XG4gICAgcmVzdWx0ICs9IChcbiAgICAgIGFscGhhYmV0W2J1ZmZlcltpXSA+PiAyXSArXG4gICAgICBhbHBoYWJldFsoKGJ1ZmZlcltpXSAmIDMpIDw8IDQpIHwgKGJ1ZmZlcltpICsgMV0gPj4gNCldICtcbiAgICAgIGFscGhhYmV0WygoYnVmZmVyW2kgKyAxXSAmIDE1KSA8PCAyKSB8IChidWZmZXJbaSArIDJdID4+IDYpXSArXG4gICAgICBhbHBoYWJldFtidWZmZXJbaSArIDJdICYgNjNdXG4gICAgKVxuICB9XG5cbiAgaWYgKGxlbiAlIDMgPT09IDIpIHtcbiAgICByZXN1bHQgPSByZXN1bHQuc3Vic3RyaW5nKDAsIHJlc3VsdC5sZW5ndGggLSAxKSArICc9J1xuICB9IGVsc2UgaWYgKGxlbiAlIDMgPT09IDEpIHtcbiAgICByZXN1bHQgPSByZXN1bHQuc3Vic3RyaW5nKDAsIHJlc3VsdC5sZW5ndGggLSAyKSArICc9PSdcbiAgfVxuXG4gIHJldHVybiByZXN1bHRcbn07XG5cbmZ1bmN0aW9uIHdyaXRlIChidWZmZXIsIHN0cmluZywgb2Zmc2V0ID0gMCwgbGVuZ3RoID0gYnl0ZUxlbmd0aChzdHJpbmcpKSB7XG4gIGNvbnN0IGxlbiA9IE1hdGgubWluKGxlbmd0aCwgYnVmZmVyLmJ5dGVMZW5ndGggLSBvZmZzZXQpXG5cbiAgZm9yIChsZXQgaSA9IDAsIGogPSAwOyBqIDwgbGVuOyBpICs9IDQpIHtcbiAgICBjb25zdCBhID0gY29kZXNbc3RyaW5nLmNoYXJDb2RlQXQoaSldXG4gICAgY29uc3QgYiA9IGNvZGVzW3N0cmluZy5jaGFyQ29kZUF0KGkgKyAxKV1cbiAgICBjb25zdCBjID0gY29kZXNbc3RyaW5nLmNoYXJDb2RlQXQoaSArIDIpXVxuICAgIGNvbnN0IGQgPSBjb2Rlc1tzdHJpbmcuY2hhckNvZGVBdChpICsgMyldXG5cbiAgICBidWZmZXJbaisrXSA9IChhIDw8IDIpIHwgKGIgPj4gNClcbiAgICBidWZmZXJbaisrXSA9ICgoYiAmIDE1KSA8PCA0KSB8IChjID4+IDIpXG4gICAgYnVmZmVyW2orK10gPSAoKGMgJiAzKSA8PCA2KSB8IChkICYgNjMpXG4gIH1cblxuICByZXR1cm4gbGVuXG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgYnl0ZUxlbmd0aCxcbiAgdG9TdHJpbmcsXG4gIHdyaXRlXG59XG4iLCJmdW5jdGlvbiBieXRlTGVuZ3RoIChzdHJpbmcpIHtcbiAgcmV0dXJuIHN0cmluZy5sZW5ndGggPj4+IDFcbn1cblxuZnVuY3Rpb24gdG9TdHJpbmcgKGJ1ZmZlcikge1xuICBjb25zdCBsZW4gPSBidWZmZXIuYnl0ZUxlbmd0aFxuXG4gIGJ1ZmZlciA9IG5ldyBEYXRhVmlldyhidWZmZXIuYnVmZmVyLCBidWZmZXIuYnl0ZU9mZnNldCwgbGVuKVxuXG4gIGxldCByZXN1bHQgPSAnJ1xuICBsZXQgaSA9IDBcblxuICBmb3IgKGxldCBuID0gbGVuIC0gKGxlbiAlIDQpOyBpIDwgbjsgaSArPSA0KSB7XG4gICAgcmVzdWx0ICs9IGJ1ZmZlci5nZXRVaW50MzIoaSkudG9TdHJpbmcoMTYpLnBhZFN0YXJ0KDgsICcwJylcbiAgfVxuXG4gIGZvciAoOyBpIDwgbGVuOyBpKyspIHtcbiAgICByZXN1bHQgKz0gYnVmZmVyLmdldFVpbnQ4KGkpLnRvU3RyaW5nKDE2KS5wYWRTdGFydCgyLCAnMCcpXG4gIH1cblxuICByZXR1cm4gcmVzdWx0XG59XG5cbmZ1bmN0aW9uIHdyaXRlIChidWZmZXIsIHN0cmluZywgb2Zmc2V0ID0gMCwgbGVuZ3RoID0gYnl0ZUxlbmd0aChzdHJpbmcpKSB7XG4gIGNvbnN0IGxlbiA9IE1hdGgubWluKGxlbmd0aCwgYnVmZmVyLmJ5dGVMZW5ndGggLSBvZmZzZXQpXG5cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgIGNvbnN0IGEgPSBoZXhWYWx1ZShzdHJpbmcuY2hhckNvZGVBdChpICogMikpXG4gICAgY29uc3QgYiA9IGhleFZhbHVlKHN0cmluZy5jaGFyQ29kZUF0KGkgKiAyICsgMSkpXG5cbiAgICBpZiAoYSA9PT0gdW5kZWZpbmVkIHx8IGIgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIGJ1ZmZlci5zdWJhcnJheSgwLCBpKVxuICAgIH1cblxuICAgIGJ1ZmZlcltvZmZzZXQgKyBpXSA9IChhIDw8IDQpIHwgYlxuICB9XG5cbiAgcmV0dXJuIGxlblxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgYnl0ZUxlbmd0aCxcbiAgdG9TdHJpbmcsXG4gIHdyaXRlXG59XG5cbmZ1bmN0aW9uIGhleFZhbHVlIChjaGFyKSB7XG4gIGlmIChjaGFyID49IDB4MzAgJiYgY2hhciA8PSAweDM5KSByZXR1cm4gY2hhciAtIDB4MzBcbiAgaWYgKGNoYXIgPj0gMHg0MSAmJiBjaGFyIDw9IDB4NDYpIHJldHVybiBjaGFyIC0gMHg0MSArIDEwXG4gIGlmIChjaGFyID49IDB4NjEgJiYgY2hhciA8PSAweDY2KSByZXR1cm4gY2hhciAtIDB4NjEgKyAxMFxufVxuIiwiZnVuY3Rpb24gYnl0ZUxlbmd0aCAoc3RyaW5nKSB7XG4gIGxldCBsZW5ndGggPSAwXG5cbiAgZm9yIChsZXQgaSA9IDAsIG4gPSBzdHJpbmcubGVuZ3RoOyBpIDwgbjsgaSsrKSB7XG4gICAgY29uc3QgY29kZSA9IHN0cmluZy5jaGFyQ29kZUF0KGkpXG5cbiAgICBpZiAoY29kZSA+PSAweGQ4MDAgJiYgY29kZSA8PSAweGRiZmYgJiYgaSArIDEgPCBuKSB7XG4gICAgICBjb25zdCBjb2RlID0gc3RyaW5nLmNoYXJDb2RlQXQoaSArIDEpXG5cbiAgICAgIGlmIChjb2RlID49IDB4ZGMwMCAmJiBjb2RlIDw9IDB4ZGZmZikge1xuICAgICAgICBsZW5ndGggKz0gNFxuICAgICAgICBpKytcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoY29kZSA8PSAweDdmKSBsZW5ndGggKz0gMVxuICAgIGVsc2UgaWYgKGNvZGUgPD0gMHg3ZmYpIGxlbmd0aCArPSAyXG4gICAgZWxzZSBsZW5ndGggKz0gM1xuICB9XG5cbiAgcmV0dXJuIGxlbmd0aFxufVxuXG5sZXQgdG9TdHJpbmdcblxuaWYgKHR5cGVvZiBUZXh0RGVjb2RlciAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgY29uc3QgZGVjb2RlciA9IG5ldyBUZXh0RGVjb2RlcigpXG5cbiAgdG9TdHJpbmcgPSBmdW5jdGlvbiB0b1N0cmluZyAoYnVmZmVyKSB7XG4gICAgcmV0dXJuIGRlY29kZXIuZGVjb2RlKGJ1ZmZlcilcbiAgfVxufSBlbHNlIHtcbiAgdG9TdHJpbmcgPSBmdW5jdGlvbiB0b1N0cmluZyAoYnVmZmVyKSB7XG4gICAgY29uc3QgbGVuID0gYnVmZmVyLmJ5dGVMZW5ndGhcblxuICAgIGxldCBvdXRwdXQgPSAnJ1xuICAgIGxldCBpID0gMFxuXG4gICAgd2hpbGUgKGkgPCBsZW4pIHtcbiAgICAgIGxldCBieXRlID0gYnVmZmVyW2ldXG5cbiAgICAgIGlmIChieXRlIDw9IDB4N2YpIHtcbiAgICAgICAgb3V0cHV0ICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoYnl0ZSlcbiAgICAgICAgaSsrXG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG5cbiAgICAgIGxldCBieXRlc05lZWRlZCA9IDBcbiAgICAgIGxldCBjb2RlUG9pbnQgPSAwXG5cbiAgICAgIGlmIChieXRlIDw9IDB4ZGYpIHtcbiAgICAgICAgYnl0ZXNOZWVkZWQgPSAxXG4gICAgICAgIGNvZGVQb2ludCA9IGJ5dGUgJiAweDFmXG4gICAgICB9IGVsc2UgaWYgKGJ5dGUgPD0gMHhlZikge1xuICAgICAgICBieXRlc05lZWRlZCA9IDJcbiAgICAgICAgY29kZVBvaW50ID0gYnl0ZSAmIDB4MGZcbiAgICAgIH0gZWxzZSBpZiAoYnl0ZSA8PSAweGY0KSB7XG4gICAgICAgIGJ5dGVzTmVlZGVkID0gM1xuICAgICAgICBjb2RlUG9pbnQgPSBieXRlICYgMHgwN1xuICAgICAgfVxuXG4gICAgICBpZiAobGVuIC0gaSAtIGJ5dGVzTmVlZGVkID4gMCkge1xuICAgICAgICBsZXQgayA9IDBcblxuICAgICAgICB3aGlsZSAoayA8IGJ5dGVzTmVlZGVkKSB7XG4gICAgICAgICAgYnl0ZSA9IGJ1ZmZlcltpICsgayArIDFdXG4gICAgICAgICAgY29kZVBvaW50ID0gKGNvZGVQb2ludCA8PCA2KSB8IChieXRlICYgMHgzZilcbiAgICAgICAgICBrICs9IDFcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29kZVBvaW50ID0gMHhmZmZkXG4gICAgICAgIGJ5dGVzTmVlZGVkID0gbGVuIC0gaVxuICAgICAgfVxuXG4gICAgICBvdXRwdXQgKz0gU3RyaW5nLmZyb21Db2RlUG9pbnQoY29kZVBvaW50KVxuICAgICAgaSArPSBieXRlc05lZWRlZCArIDFcbiAgICB9XG5cbiAgICByZXR1cm4gb3V0cHV0XG4gIH1cbn1cblxubGV0IHdyaXRlXG5cbmlmICh0eXBlb2YgVGV4dEVuY29kZXIgIT09ICd1bmRlZmluZWQnKSB7XG4gIGNvbnN0IGVuY29kZXIgPSBuZXcgVGV4dEVuY29kZXIoKVxuXG4gIHdyaXRlID0gZnVuY3Rpb24gd3JpdGUgKGJ1ZmZlciwgc3RyaW5nLCBvZmZzZXQgPSAwLCBsZW5ndGggPSBieXRlTGVuZ3RoKHN0cmluZykpIHtcbiAgICBjb25zdCBsZW4gPSBNYXRoLm1pbihsZW5ndGgsIGJ1ZmZlci5ieXRlTGVuZ3RoIC0gb2Zmc2V0KVxuICAgIGVuY29kZXIuZW5jb2RlSW50byhzdHJpbmcsIGJ1ZmZlci5zdWJhcnJheShvZmZzZXQsIG9mZnNldCArIGxlbikpXG4gICAgcmV0dXJuIGxlblxuICB9XG59IGVsc2Uge1xuICB3cml0ZSA9IGZ1bmN0aW9uIHdyaXRlIChidWZmZXIsIHN0cmluZywgb2Zmc2V0ID0gMCwgbGVuZ3RoID0gYnl0ZUxlbmd0aChzdHJpbmcpKSB7XG4gICAgY29uc3QgbGVuID0gTWF0aC5taW4obGVuZ3RoLCBidWZmZXIuYnl0ZUxlbmd0aCAtIG9mZnNldClcblxuICAgIGJ1ZmZlciA9IGJ1ZmZlci5zdWJhcnJheShvZmZzZXQsIG9mZnNldCArIGxlbilcblxuICAgIGxldCBpID0gMFxuICAgIGxldCBqID0gMFxuXG4gICAgd2hpbGUgKGkgPCBzdHJpbmcubGVuZ3RoKSB7XG4gICAgICBjb25zdCBjb2RlID0gc3RyaW5nLmNvZGVQb2ludEF0KGkpXG5cbiAgICAgIGlmIChjb2RlIDw9IDB4N2YpIHtcbiAgICAgICAgYnVmZmVyW2orK10gPSBjb2RlXG4gICAgICAgIGkrK1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuXG4gICAgICBsZXQgY291bnQgPSAwXG4gICAgICBsZXQgYml0cyA9IDBcblxuICAgICAgaWYgKGNvZGUgPD0gMHg3ZmYpIHtcbiAgICAgICAgY291bnQgPSA2XG4gICAgICAgIGJpdHMgPSAweGMwXG4gICAgICB9IGVsc2UgaWYgKGNvZGUgPD0gMHhmZmZmKSB7XG4gICAgICAgIGNvdW50ID0gMTJcbiAgICAgICAgYml0cyA9IDB4ZTBcbiAgICAgIH0gZWxzZSBpZiAoY29kZSA8PSAweDFmZmZmZikge1xuICAgICAgICBjb3VudCA9IDE4XG4gICAgICAgIGJpdHMgPSAweGYwXG4gICAgICB9XG5cbiAgICAgIGJ1ZmZlcltqKytdID0gYml0cyB8IChjb2RlID4+IGNvdW50KVxuICAgICAgY291bnQgLT0gNlxuXG4gICAgICB3aGlsZSAoY291bnQgPj0gMCkge1xuICAgICAgICBidWZmZXJbaisrXSA9IDB4ODAgfCAoKGNvZGUgPj4gY291bnQpICYgMHgzZilcbiAgICAgICAgY291bnQgLT0gNlxuICAgICAgfVxuXG4gICAgICBpICs9IGNvZGUgPj0gMHgxMDAwMCA/IDIgOiAxXG4gICAgfVxuXG4gICAgcmV0dXJuIGxlblxuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBieXRlTGVuZ3RoLFxuICB0b1N0cmluZyxcbiAgd3JpdGVcbn1cbiIsImZ1bmN0aW9uIGJ5dGVMZW5ndGggKHN0cmluZykge1xuICByZXR1cm4gc3RyaW5nLmxlbmd0aCAqIDJcbn1cblxuZnVuY3Rpb24gdG9TdHJpbmcgKGJ1ZmZlcikge1xuICBjb25zdCBsZW4gPSBidWZmZXIuYnl0ZUxlbmd0aFxuXG4gIGxldCByZXN1bHQgPSAnJ1xuXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgbGVuIC0gMTsgaSArPSAyKSB7XG4gICAgcmVzdWx0ICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoYnVmZmVyW2ldICsgKGJ1ZmZlcltpICsgMV0gKiAyNTYpKVxuICB9XG5cbiAgcmV0dXJuIHJlc3VsdFxufVxuXG5mdW5jdGlvbiB3cml0ZSAoYnVmZmVyLCBzdHJpbmcsIG9mZnNldCA9IDAsIGxlbmd0aCA9IGJ5dGVMZW5ndGgoc3RyaW5nKSkge1xuICBjb25zdCBsZW4gPSBNYXRoLm1pbihsZW5ndGgsIGJ1ZmZlci5ieXRlTGVuZ3RoIC0gb2Zmc2V0KVxuXG4gIGxldCB1bml0cyA9IGxlblxuXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgc3RyaW5nLmxlbmd0aDsgKytpKSB7XG4gICAgaWYgKCh1bml0cyAtPSAyKSA8IDApIGJyZWFrXG5cbiAgICBjb25zdCBjID0gc3RyaW5nLmNoYXJDb2RlQXQoaSlcbiAgICBjb25zdCBoaSA9IGMgPj4gOFxuICAgIGNvbnN0IGxvID0gYyAlIDI1NlxuXG4gICAgYnVmZmVyW29mZnNldCArIGkgKiAyXSA9IGxvXG4gICAgYnVmZmVyW29mZnNldCArIGkgKiAyICsgMV0gPSBoaVxuICB9XG5cbiAgcmV0dXJuIGxlblxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgYnl0ZUxlbmd0aCxcbiAgdG9TdHJpbmcsXG4gIHdyaXRlXG59XG4iLCJjb25zdCBhc2NpaSA9IHJlcXVpcmUoJy4vbGliL2FzY2lpJylcbmNvbnN0IGJhc2U2NCA9IHJlcXVpcmUoJy4vbGliL2Jhc2U2NCcpXG5jb25zdCBoZXggPSByZXF1aXJlKCcuL2xpYi9oZXgnKVxuY29uc3QgdXRmOCA9IHJlcXVpcmUoJy4vbGliL3V0ZjgnKVxuY29uc3QgdXRmMTZsZSA9IHJlcXVpcmUoJy4vbGliL3V0ZjE2bGUnKVxuXG5jb25zdCBMRSA9IG5ldyBVaW50OEFycmF5KFVpbnQxNkFycmF5Lm9mKDB4ZmYpLmJ1ZmZlcilbMF0gPT09IDB4ZmZcblxuZnVuY3Rpb24gY29kZWNGb3IgKGVuY29kaW5nKSB7XG4gIHN3aXRjaCAoZW5jb2RpbmcpIHtcbiAgICBjYXNlICdhc2NpaSc6XG4gICAgICByZXR1cm4gYXNjaWlcbiAgICBjYXNlICdiYXNlNjQnOlxuICAgICAgcmV0dXJuIGJhc2U2NFxuICAgIGNhc2UgJ2hleCc6XG4gICAgICByZXR1cm4gaGV4XG4gICAgY2FzZSAndXRmOCc6XG4gICAgY2FzZSAndXRmLTgnOlxuICAgIGNhc2UgdW5kZWZpbmVkOlxuICAgICAgcmV0dXJuIHV0ZjhcbiAgICBjYXNlICd1Y3MyJzpcbiAgICBjYXNlICd1Y3MtMic6XG4gICAgY2FzZSAndXRmMTZsZSc6XG4gICAgY2FzZSAndXRmLTE2bGUnOlxuICAgICAgcmV0dXJuIHV0ZjE2bGVcbiAgICBkZWZhdWx0OlxuICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbmtub3duIGVuY29kaW5nOiAke2VuY29kaW5nfWApXG4gIH1cbn1cblxuZnVuY3Rpb24gaXNCdWZmZXIgKHZhbHVlKSB7XG4gIHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFVpbnQ4QXJyYXlcbn1cblxuZnVuY3Rpb24gaXNFbmNvZGluZyAoZW5jb2RpbmcpIHtcbiAgdHJ5IHtcbiAgICBjb2RlY0ZvcihlbmNvZGluZylcbiAgICByZXR1cm4gdHJ1ZVxuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gZmFsc2VcbiAgfVxufVxuXG5mdW5jdGlvbiBhbGxvYyAoc2l6ZSwgZmlsbCwgZW5jb2RpbmcpIHtcbiAgY29uc3QgYnVmZmVyID0gbmV3IFVpbnQ4QXJyYXkoc2l6ZSlcbiAgaWYgKGZpbGwgIT09IHVuZGVmaW5lZCkgZXhwb3J0cy5maWxsKGJ1ZmZlciwgZmlsbCwgMCwgYnVmZmVyLmJ5dGVMZW5ndGgsIGVuY29kaW5nKVxuICByZXR1cm4gYnVmZmVyXG59XG5cbmZ1bmN0aW9uIGFsbG9jVW5zYWZlIChzaXplKSB7XG4gIHJldHVybiBuZXcgVWludDhBcnJheShzaXplKVxufVxuXG5mdW5jdGlvbiBhbGxvY1Vuc2FmZVNsb3cgKHNpemUpIHtcbiAgcmV0dXJuIG5ldyBVaW50OEFycmF5KHNpemUpXG59XG5cbmZ1bmN0aW9uIGJ5dGVMZW5ndGggKHN0cmluZywgZW5jb2RpbmcpIHtcbiAgcmV0dXJuIGNvZGVjRm9yKGVuY29kaW5nKS5ieXRlTGVuZ3RoKHN0cmluZylcbn1cblxuZnVuY3Rpb24gY29tcGFyZSAoYSwgYikge1xuICBpZiAoYSA9PT0gYikgcmV0dXJuIDBcblxuICBjb25zdCBsZW4gPSBNYXRoLm1pbihhLmJ5dGVMZW5ndGgsIGIuYnl0ZUxlbmd0aClcblxuICBhID0gbmV3IERhdGFWaWV3KGEuYnVmZmVyLCBhLmJ5dGVPZmZzZXQsIGEuYnl0ZUxlbmd0aClcbiAgYiA9IG5ldyBEYXRhVmlldyhiLmJ1ZmZlciwgYi5ieXRlT2Zmc2V0LCBiLmJ5dGVMZW5ndGgpXG5cbiAgbGV0IGkgPSAwXG5cbiAgZm9yIChsZXQgbiA9IGxlbiAtIChsZW4gJSA0KTsgaSA8IG47IGkgKz0gNCkge1xuICAgIGNvbnN0IHggPSBhLmdldFVpbnQzMihpLCBMRSlcbiAgICBjb25zdCB5ID0gYi5nZXRVaW50MzIoaSwgTEUpXG4gICAgaWYgKHggIT09IHkpIGJyZWFrXG4gIH1cblxuICBmb3IgKDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgY29uc3QgeCA9IGEuZ2V0VWludDgoaSlcbiAgICBjb25zdCB5ID0gYi5nZXRVaW50OChpKVxuICAgIGlmICh4IDwgeSkgcmV0dXJuIC0xXG4gICAgaWYgKHggPiB5KSByZXR1cm4gMVxuICB9XG5cbiAgcmV0dXJuIGEuYnl0ZUxlbmd0aCA+IGIuYnl0ZUxlbmd0aCA/IDEgOiBhLmJ5dGVMZW5ndGggPCBiLmJ5dGVMZW5ndGggPyAtMSA6IDBcbn1cblxuZnVuY3Rpb24gY29uY2F0IChidWZmZXJzLCB0b3RhbExlbmd0aCkge1xuICBpZiAodG90YWxMZW5ndGggPT09IHVuZGVmaW5lZCkge1xuICAgIHRvdGFsTGVuZ3RoID0gYnVmZmVycy5yZWR1Y2UoKGxlbiwgYnVmZmVyKSA9PiBsZW4gKyBidWZmZXIuYnl0ZUxlbmd0aCwgMClcbiAgfVxuXG4gIGNvbnN0IHJlc3VsdCA9IG5ldyBVaW50OEFycmF5KHRvdGFsTGVuZ3RoKVxuXG4gIGxldCBvZmZzZXQgPSAwXG4gIGZvciAoY29uc3QgYnVmZmVyIG9mIGJ1ZmZlcnMpIHtcbiAgICBpZiAob2Zmc2V0ICsgYnVmZmVyLmJ5dGVMZW5ndGggPiByZXN1bHQuYnl0ZUxlbmd0aCkge1xuICAgICAgY29uc3Qgc3ViID0gYnVmZmVyLnN1YmFycmF5KDAsIHJlc3VsdC5ieXRlTGVuZ3RoIC0gb2Zmc2V0KVxuICAgICAgcmVzdWx0LnNldChzdWIsIG9mZnNldClcbiAgICAgIHJldHVybiByZXN1bHRcbiAgICB9XG4gICAgcmVzdWx0LnNldChidWZmZXIsIG9mZnNldClcbiAgICBvZmZzZXQgKz0gYnVmZmVyLmJ5dGVMZW5ndGhcbiAgfVxuXG4gIHJldHVybiByZXN1bHRcbn1cblxuZnVuY3Rpb24gY29weSAoc291cmNlLCB0YXJnZXQsIHRhcmdldFN0YXJ0ID0gMCwgc3RhcnQgPSAwLCBlbmQgPSBzb3VyY2UuYnl0ZUxlbmd0aCkge1xuICBpZiAoZW5kID4gMCAmJiBlbmQgPCBzdGFydCkgcmV0dXJuIDBcbiAgaWYgKGVuZCA9PT0gc3RhcnQpIHJldHVybiAwXG4gIGlmIChzb3VyY2UuYnl0ZUxlbmd0aCA9PT0gMCB8fCB0YXJnZXQuYnl0ZUxlbmd0aCA9PT0gMCkgcmV0dXJuIDBcblxuICBpZiAodGFyZ2V0U3RhcnQgPCAwKSB0aHJvdyBuZXcgUmFuZ2VFcnJvcigndGFyZ2V0U3RhcnQgaXMgb3V0IG9mIHJhbmdlJylcbiAgaWYgKHN0YXJ0IDwgMCB8fCBzdGFydCA+PSBzb3VyY2UuYnl0ZUxlbmd0aCkgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ3NvdXJjZVN0YXJ0IGlzIG91dCBvZiByYW5nZScpXG4gIGlmIChlbmQgPCAwKSB0aHJvdyBuZXcgUmFuZ2VFcnJvcignc291cmNlRW5kIGlzIG91dCBvZiByYW5nZScpXG5cbiAgaWYgKHRhcmdldFN0YXJ0ID49IHRhcmdldC5ieXRlTGVuZ3RoKSB0YXJnZXRTdGFydCA9IHRhcmdldC5ieXRlTGVuZ3RoXG4gIGlmIChlbmQgPiBzb3VyY2UuYnl0ZUxlbmd0aCkgZW5kID0gc291cmNlLmJ5dGVMZW5ndGhcbiAgaWYgKHRhcmdldC5ieXRlTGVuZ3RoIC0gdGFyZ2V0U3RhcnQgPCBlbmQgLSBzdGFydCkge1xuICAgIGVuZCA9IHRhcmdldC5sZW5ndGggLSB0YXJnZXRTdGFydCArIHN0YXJ0XG4gIH1cblxuICBjb25zdCBsZW4gPSBlbmQgLSBzdGFydFxuXG4gIGlmIChzb3VyY2UgPT09IHRhcmdldCkge1xuICAgIHRhcmdldC5jb3B5V2l0aGluKHRhcmdldFN0YXJ0LCBzdGFydCwgZW5kKVxuICB9IGVsc2Uge1xuICAgIHRhcmdldC5zZXQoc291cmNlLnN1YmFycmF5KHN0YXJ0LCBlbmQpLCB0YXJnZXRTdGFydClcbiAgfVxuXG4gIHJldHVybiBsZW5cbn1cblxuZnVuY3Rpb24gZXF1YWxzIChhLCBiKSB7XG4gIGlmIChhID09PSBiKSByZXR1cm4gdHJ1ZVxuICBpZiAoYS5ieXRlTGVuZ3RoICE9PSBiLmJ5dGVMZW5ndGgpIHJldHVybiBmYWxzZVxuXG4gIGNvbnN0IGxlbiA9IGEuYnl0ZUxlbmd0aFxuXG4gIGEgPSBuZXcgRGF0YVZpZXcoYS5idWZmZXIsIGEuYnl0ZU9mZnNldCwgYS5ieXRlTGVuZ3RoKVxuICBiID0gbmV3IERhdGFWaWV3KGIuYnVmZmVyLCBiLmJ5dGVPZmZzZXQsIGIuYnl0ZUxlbmd0aClcblxuICBsZXQgaSA9IDBcblxuICBmb3IgKGxldCBuID0gbGVuIC0gKGxlbiAlIDQpOyBpIDwgbjsgaSArPSA0KSB7XG4gICAgaWYgKGEuZ2V0VWludDMyKGksIExFKSAhPT0gYi5nZXRVaW50MzIoaSwgTEUpKSByZXR1cm4gZmFsc2VcbiAgfVxuXG4gIGZvciAoOyBpIDwgbGVuOyBpKyspIHtcbiAgICBpZiAoYS5nZXRVaW50OChpKSAhPT0gYi5nZXRVaW50OChpKSkgcmV0dXJuIGZhbHNlXG4gIH1cblxuICByZXR1cm4gdHJ1ZVxufVxuXG5mdW5jdGlvbiBmaWxsIChidWZmZXIsIHZhbHVlLCBvZmZzZXQsIGVuZCwgZW5jb2RpbmcpIHtcbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAvLyBmaWxsKGJ1ZmZlciwgc3RyaW5nLCBlbmNvZGluZylcbiAgICBpZiAodHlwZW9mIG9mZnNldCA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGVuY29kaW5nID0gb2Zmc2V0XG4gICAgICBvZmZzZXQgPSAwXG4gICAgICBlbmQgPSBidWZmZXIuYnl0ZUxlbmd0aFxuXG4gICAgLy8gZmlsbChidWZmZXIsIHN0cmluZywgb2Zmc2V0LCBlbmNvZGluZylcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBlbmQgPT09ICdzdHJpbmcnKSB7XG4gICAgICBlbmNvZGluZyA9IGVuZFxuICAgICAgZW5kID0gYnVmZmVyLmJ5dGVMZW5ndGhcbiAgICB9XG4gIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJykge1xuICAgIHZhbHVlID0gdmFsdWUgJiAweGZmXG4gIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAnYm9vbGVhbicpIHtcbiAgICB2YWx1ZSA9ICt2YWx1ZVxuICB9XG5cbiAgaWYgKG9mZnNldCA8IDAgfHwgYnVmZmVyLmJ5dGVMZW5ndGggPCBvZmZzZXQgfHwgYnVmZmVyLmJ5dGVMZW5ndGggPCBlbmQpIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignT3V0IG9mIHJhbmdlIGluZGV4JylcbiAgfVxuXG4gIGlmIChvZmZzZXQgPT09IHVuZGVmaW5lZCkgb2Zmc2V0ID0gMFxuICBpZiAoZW5kID09PSB1bmRlZmluZWQpIGVuZCA9IGJ1ZmZlci5ieXRlTGVuZ3RoXG5cbiAgaWYgKGVuZCA8PSBvZmZzZXQpIHJldHVybiBidWZmZXJcblxuICBpZiAoIXZhbHVlKSB2YWx1ZSA9IDBcblxuICBpZiAodHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJykge1xuICAgIGZvciAobGV0IGkgPSBvZmZzZXQ7IGkgPCBlbmQ7ICsraSkge1xuICAgICAgYnVmZmVyW2ldID0gdmFsdWVcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgdmFsdWUgPSBpc0J1ZmZlcih2YWx1ZSkgPyB2YWx1ZSA6IGZyb20odmFsdWUsIGVuY29kaW5nKVxuXG4gICAgY29uc3QgbGVuID0gdmFsdWUuYnl0ZUxlbmd0aFxuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBlbmQgLSBvZmZzZXQ7ICsraSkge1xuICAgICAgYnVmZmVyW2kgKyBvZmZzZXRdID0gdmFsdWVbaSAlIGxlbl1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gYnVmZmVyXG59XG5cbmZ1bmN0aW9uIGZyb20gKHZhbHVlLCBlbmNvZGluZ09yT2Zmc2V0LCBsZW5ndGgpIHtcbiAgLy8gZnJvbShzdHJpbmcsIGVuY29kaW5nKVxuICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykgcmV0dXJuIGZyb21TdHJpbmcodmFsdWUsIGVuY29kaW5nT3JPZmZzZXQpXG5cbiAgLy8gZnJvbShhcnJheSlcbiAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSByZXR1cm4gZnJvbUFycmF5KHZhbHVlKVxuXG4gIC8vIGZyb20oYnVmZmVyKVxuICBpZiAoQXJyYXlCdWZmZXIuaXNWaWV3KHZhbHVlKSkgcmV0dXJuIGZyb21CdWZmZXIodmFsdWUpXG5cbiAgLy8gZnJvbShhcnJheUJ1ZmZlclssIGJ5dGVPZmZzZXRbLCBsZW5ndGhdXSlcbiAgcmV0dXJuIGZyb21BcnJheUJ1ZmZlcih2YWx1ZSwgZW5jb2RpbmdPck9mZnNldCwgbGVuZ3RoKVxufVxuXG5mdW5jdGlvbiBmcm9tU3RyaW5nIChzdHJpbmcsIGVuY29kaW5nKSB7XG4gIGNvbnN0IGNvZGVjID0gY29kZWNGb3IoZW5jb2RpbmcpXG4gIGNvbnN0IGJ1ZmZlciA9IG5ldyBVaW50OEFycmF5KGNvZGVjLmJ5dGVMZW5ndGgoc3RyaW5nKSlcbiAgY29kZWMud3JpdGUoYnVmZmVyLCBzdHJpbmcsIDAsIGJ1ZmZlci5ieXRlTGVuZ3RoKVxuICByZXR1cm4gYnVmZmVyXG59XG5cbmZ1bmN0aW9uIGZyb21BcnJheSAoYXJyYXkpIHtcbiAgY29uc3QgYnVmZmVyID0gbmV3IFVpbnQ4QXJyYXkoYXJyYXkubGVuZ3RoKVxuICBidWZmZXIuc2V0KGFycmF5KVxuICByZXR1cm4gYnVmZmVyXG59XG5cbmZ1bmN0aW9uIGZyb21CdWZmZXIgKGJ1ZmZlcikge1xuICBjb25zdCBjb3B5ID0gbmV3IFVpbnQ4QXJyYXkoYnVmZmVyLmJ5dGVMZW5ndGgpXG4gIGNvcHkuc2V0KGJ1ZmZlcilcbiAgcmV0dXJuIGNvcHlcbn1cblxuZnVuY3Rpb24gZnJvbUFycmF5QnVmZmVyIChhcnJheUJ1ZmZlciwgYnl0ZU9mZnNldCwgbGVuZ3RoKSB7XG4gIHJldHVybiBuZXcgVWludDhBcnJheShhcnJheUJ1ZmZlciwgYnl0ZU9mZnNldCwgbGVuZ3RoKVxufVxuXG5mdW5jdGlvbiBpbmNsdWRlcyAoYnVmZmVyLCB2YWx1ZSwgYnl0ZU9mZnNldCwgZW5jb2RpbmcpIHtcbiAgcmV0dXJuIGluZGV4T2YoYnVmZmVyLCB2YWx1ZSwgYnl0ZU9mZnNldCwgZW5jb2RpbmcpICE9PSAtMVxufVxuXG5mdW5jdGlvbiBiaWRpcmVjdGlvbmFsSW5kZXhPZiAoYnVmZmVyLCB2YWx1ZSwgYnl0ZU9mZnNldCwgZW5jb2RpbmcsIGZpcnN0KSB7XG4gIGlmIChidWZmZXIuYnl0ZUxlbmd0aCA9PT0gMCkgcmV0dXJuIC0xXG5cbiAgaWYgKHR5cGVvZiBieXRlT2Zmc2V0ID09PSAnc3RyaW5nJykge1xuICAgIGVuY29kaW5nID0gYnl0ZU9mZnNldFxuICAgIGJ5dGVPZmZzZXQgPSAwXG4gIH0gZWxzZSBpZiAoYnl0ZU9mZnNldCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgYnl0ZU9mZnNldCA9IGZpcnN0ID8gMCA6IChidWZmZXIubGVuZ3RoIC0gMSlcbiAgfSBlbHNlIGlmIChieXRlT2Zmc2V0IDwgMCkge1xuICAgIGJ5dGVPZmZzZXQgKz0gYnVmZmVyLmJ5dGVMZW5ndGhcbiAgfVxuXG4gIGlmIChieXRlT2Zmc2V0ID49IGJ1ZmZlci5ieXRlTGVuZ3RoKSB7XG4gICAgaWYgKGZpcnN0KSByZXR1cm4gLTFcbiAgICBlbHNlIGJ5dGVPZmZzZXQgPSBidWZmZXIuYnl0ZUxlbmd0aCAtIDFcbiAgfSBlbHNlIGlmIChieXRlT2Zmc2V0IDwgMCkge1xuICAgIGlmIChmaXJzdCkgYnl0ZU9mZnNldCA9IDBcbiAgICBlbHNlIHJldHVybiAtMVxuICB9XG5cbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICB2YWx1ZSA9IGZyb20odmFsdWUsIGVuY29kaW5nKVxuICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicpIHtcbiAgICB2YWx1ZSA9IHZhbHVlICYgMHhmZlxuXG4gICAgaWYgKGZpcnN0KSB7XG4gICAgICByZXR1cm4gYnVmZmVyLmluZGV4T2YodmFsdWUsIGJ5dGVPZmZzZXQpXG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBidWZmZXIubGFzdEluZGV4T2YodmFsdWUsIGJ5dGVPZmZzZXQpXG4gICAgfVxuICB9XG5cbiAgaWYgKHZhbHVlLmJ5dGVMZW5ndGggPT09IDApIHJldHVybiAtMVxuXG4gIGlmIChmaXJzdCkge1xuICAgIGxldCBmb3VuZEluZGV4ID0gLTFcblxuICAgIGZvciAobGV0IGkgPSBieXRlT2Zmc2V0OyBpIDwgYnVmZmVyLmJ5dGVMZW5ndGg7IGkrKykge1xuICAgICAgaWYgKGJ1ZmZlcltpXSA9PT0gdmFsdWVbZm91bmRJbmRleCA9PT0gLTEgPyAwIDogaSAtIGZvdW5kSW5kZXhdKSB7XG4gICAgICAgIGlmIChmb3VuZEluZGV4ID09PSAtMSkgZm91bmRJbmRleCA9IGlcbiAgICAgICAgaWYgKGkgLSBmb3VuZEluZGV4ICsgMSA9PT0gdmFsdWUuYnl0ZUxlbmd0aCkgcmV0dXJuIGZvdW5kSW5kZXhcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChmb3VuZEluZGV4ICE9PSAtMSkgaSAtPSBpIC0gZm91bmRJbmRleFxuICAgICAgICBmb3VuZEluZGV4ID0gLTFcbiAgICAgIH1cbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgaWYgKGJ5dGVPZmZzZXQgKyB2YWx1ZS5ieXRlTGVuZ3RoID4gYnVmZmVyLmJ5dGVMZW5ndGgpIHtcbiAgICAgIGJ5dGVPZmZzZXQgPSBidWZmZXIuYnl0ZUxlbmd0aCAtIHZhbHVlLmJ5dGVMZW5ndGhcbiAgICB9XG5cbiAgICBmb3IgKGxldCBpID0gYnl0ZU9mZnNldDsgaSA+PSAwOyBpLS0pIHtcbiAgICAgIGxldCBmb3VuZCA9IHRydWVcblxuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB2YWx1ZS5ieXRlTGVuZ3RoOyBqKyspIHtcbiAgICAgICAgaWYgKGJ1ZmZlcltpICsgal0gIT09IHZhbHVlW2pdKSB7XG4gICAgICAgICAgZm91bmQgPSBmYWxzZVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKGZvdW5kKSByZXR1cm4gaVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiAtMVxufVxuXG5mdW5jdGlvbiBpbmRleE9mIChidWZmZXIsIHZhbHVlLCBieXRlT2Zmc2V0LCBlbmNvZGluZykge1xuICByZXR1cm4gYmlkaXJlY3Rpb25hbEluZGV4T2YoYnVmZmVyLCB2YWx1ZSwgYnl0ZU9mZnNldCwgZW5jb2RpbmcsIHRydWUgLyogZmlyc3QgKi8pXG59XG5cbmZ1bmN0aW9uIGxhc3RJbmRleE9mIChidWZmZXIsIHZhbHVlLCBieXRlT2Zmc2V0LCBlbmNvZGluZykge1xuICByZXR1cm4gYmlkaXJlY3Rpb25hbEluZGV4T2YoYnVmZmVyLCB2YWx1ZSwgYnl0ZU9mZnNldCwgZW5jb2RpbmcsIGZhbHNlIC8qIGxhc3QgKi8pXG59XG5cbmZ1bmN0aW9uIHN3YXAgKGJ1ZmZlciwgbiwgbSkge1xuICBjb25zdCBpID0gYnVmZmVyW25dXG4gIGJ1ZmZlcltuXSA9IGJ1ZmZlclttXVxuICBidWZmZXJbbV0gPSBpXG59XG5cbmZ1bmN0aW9uIHN3YXAxNiAoYnVmZmVyKSB7XG4gIGNvbnN0IGxlbiA9IGJ1ZmZlci5ieXRlTGVuZ3RoXG5cbiAgaWYgKGxlbiAlIDIgIT09IDApIHRocm93IG5ldyBSYW5nZUVycm9yKCdCdWZmZXIgc2l6ZSBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgMTYtYml0cycpXG5cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW47IGkgKz0gMikgc3dhcChidWZmZXIsIGksIGkgKyAxKVxuXG4gIHJldHVybiBidWZmZXJcbn1cblxuZnVuY3Rpb24gc3dhcDMyIChidWZmZXIpIHtcbiAgY29uc3QgbGVuID0gYnVmZmVyLmJ5dGVMZW5ndGhcblxuICBpZiAobGVuICUgNCAhPT0gMCkgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ0J1ZmZlciBzaXplIG11c3QgYmUgYSBtdWx0aXBsZSBvZiAzMi1iaXRzJylcblxuICBmb3IgKGxldCBpID0gMDsgaSA8IGxlbjsgaSArPSA0KSB7XG4gICAgc3dhcChidWZmZXIsIGksIGkgKyAzKVxuICAgIHN3YXAoYnVmZmVyLCBpICsgMSwgaSArIDIpXG4gIH1cblxuICByZXR1cm4gYnVmZmVyXG59XG5cbmZ1bmN0aW9uIHN3YXA2NCAoYnVmZmVyKSB7XG4gIGNvbnN0IGxlbiA9IGJ1ZmZlci5ieXRlTGVuZ3RoXG5cbiAgaWYgKGxlbiAlIDggIT09IDApIHRocm93IG5ldyBSYW5nZUVycm9yKCdCdWZmZXIgc2l6ZSBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgNjQtYml0cycpXG5cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW47IGkgKz0gOCkge1xuICAgIHN3YXAoYnVmZmVyLCBpLCBpICsgNylcbiAgICBzd2FwKGJ1ZmZlciwgaSArIDEsIGkgKyA2KVxuICAgIHN3YXAoYnVmZmVyLCBpICsgMiwgaSArIDUpXG4gICAgc3dhcChidWZmZXIsIGkgKyAzLCBpICsgNClcbiAgfVxuXG4gIHJldHVybiBidWZmZXJcbn1cblxuZnVuY3Rpb24gdG9CdWZmZXIgKGJ1ZmZlcikge1xuICByZXR1cm4gYnVmZmVyXG59XG5cbmZ1bmN0aW9uIHRvU3RyaW5nIChidWZmZXIsIGVuY29kaW5nLCBzdGFydCA9IDAsIGVuZCA9IGJ1ZmZlci5ieXRlTGVuZ3RoKSB7XG4gIGNvbnN0IGxlbiA9IGJ1ZmZlci5ieXRlTGVuZ3RoXG5cbiAgaWYgKHN0YXJ0ID49IGxlbikgcmV0dXJuICcnXG4gIGlmIChlbmQgPD0gc3RhcnQpIHJldHVybiAnJ1xuICBpZiAoc3RhcnQgPCAwKSBzdGFydCA9IDBcbiAgaWYgKGVuZCA+IGxlbikgZW5kID0gbGVuXG5cbiAgaWYgKHN0YXJ0ICE9PSAwIHx8IGVuZCA8IGxlbikgYnVmZmVyID0gYnVmZmVyLnN1YmFycmF5KHN0YXJ0LCBlbmQpXG5cbiAgcmV0dXJuIGNvZGVjRm9yKGVuY29kaW5nKS50b1N0cmluZyhidWZmZXIpXG59XG5cbmZ1bmN0aW9uIHdyaXRlIChidWZmZXIsIHN0cmluZywgb2Zmc2V0LCBsZW5ndGgsIGVuY29kaW5nKSB7XG4gIC8vIHdyaXRlKGJ1ZmZlciwgc3RyaW5nKVxuICBpZiAob2Zmc2V0ID09PSB1bmRlZmluZWQpIHtcbiAgICBlbmNvZGluZyA9ICd1dGY4J1xuXG4gIC8vIHdyaXRlKGJ1ZmZlciwgc3RyaW5nLCBlbmNvZGluZylcbiAgfSBlbHNlIGlmIChsZW5ndGggPT09IHVuZGVmaW5lZCAmJiB0eXBlb2Ygb2Zmc2V0ID09PSAnc3RyaW5nJykge1xuICAgIGVuY29kaW5nID0gb2Zmc2V0XG4gICAgb2Zmc2V0ID0gdW5kZWZpbmVkXG5cbiAgLy8gd3JpdGUoYnVmZmVyLCBzdHJpbmcsIG9mZnNldCwgZW5jb2RpbmcpXG4gIH0gZWxzZSBpZiAoZW5jb2RpbmcgPT09IHVuZGVmaW5lZCAmJiB0eXBlb2YgbGVuZ3RoID09PSAnc3RyaW5nJykge1xuICAgIGVuY29kaW5nID0gbGVuZ3RoXG4gICAgbGVuZ3RoID0gdW5kZWZpbmVkXG4gIH1cblxuICByZXR1cm4gY29kZWNGb3IoZW5jb2RpbmcpLndyaXRlKGJ1ZmZlciwgc3RyaW5nLCBvZmZzZXQsIGxlbmd0aClcbn1cblxuZnVuY3Rpb24gd3JpdGVEb3VibGVMRSAoYnVmZmVyLCB2YWx1ZSwgb2Zmc2V0KSB7XG4gIGlmIChvZmZzZXQgPT09IHVuZGVmaW5lZCkgb2Zmc2V0ID0gMFxuXG4gIGNvbnN0IHZpZXcgPSBuZXcgRGF0YVZpZXcoYnVmZmVyLmJ1ZmZlciwgYnVmZmVyLmJ5dGVPZmZzZXQsIGJ1ZmZlci5ieXRlTGVuZ3RoKVxuICB2aWV3LnNldEZsb2F0NjQob2Zmc2V0LCB2YWx1ZSwgdHJ1ZSlcblxuICByZXR1cm4gb2Zmc2V0ICsgOFxufVxuXG5mdW5jdGlvbiB3cml0ZUZsb2F0TEUgKGJ1ZmZlciwgdmFsdWUsIG9mZnNldCkge1xuICBpZiAob2Zmc2V0ID09PSB1bmRlZmluZWQpIG9mZnNldCA9IDBcblxuICBjb25zdCB2aWV3ID0gbmV3IERhdGFWaWV3KGJ1ZmZlci5idWZmZXIsIGJ1ZmZlci5ieXRlT2Zmc2V0LCBidWZmZXIuYnl0ZUxlbmd0aClcbiAgdmlldy5zZXRGbG9hdDMyKG9mZnNldCwgdmFsdWUsIHRydWUpXG5cbiAgcmV0dXJuIG9mZnNldCArIDRcbn1cblxuZnVuY3Rpb24gd3JpdGVVSW50MzJMRSAoYnVmZmVyLCB2YWx1ZSwgb2Zmc2V0KSB7XG4gIGlmIChvZmZzZXQgPT09IHVuZGVmaW5lZCkgb2Zmc2V0ID0gMFxuXG4gIGNvbnN0IHZpZXcgPSBuZXcgRGF0YVZpZXcoYnVmZmVyLmJ1ZmZlciwgYnVmZmVyLmJ5dGVPZmZzZXQsIGJ1ZmZlci5ieXRlTGVuZ3RoKVxuICB2aWV3LnNldFVpbnQzMihvZmZzZXQsIHZhbHVlLCB0cnVlKVxuXG4gIHJldHVybiBvZmZzZXQgKyA0XG59XG5cbmZ1bmN0aW9uIHdyaXRlSW50MzJMRSAoYnVmZmVyLCB2YWx1ZSwgb2Zmc2V0KSB7XG4gIGlmIChvZmZzZXQgPT09IHVuZGVmaW5lZCkgb2Zmc2V0ID0gMFxuXG4gIGNvbnN0IHZpZXcgPSBuZXcgRGF0YVZpZXcoYnVmZmVyLmJ1ZmZlciwgYnVmZmVyLmJ5dGVPZmZzZXQsIGJ1ZmZlci5ieXRlTGVuZ3RoKVxuICB2aWV3LnNldEludDMyKG9mZnNldCwgdmFsdWUsIHRydWUpXG5cbiAgcmV0dXJuIG9mZnNldCArIDRcbn1cblxuZnVuY3Rpb24gcmVhZERvdWJsZUxFIChidWZmZXIsIG9mZnNldCkge1xuICBpZiAob2Zmc2V0ID09PSB1bmRlZmluZWQpIG9mZnNldCA9IDBcblxuICBjb25zdCB2aWV3ID0gbmV3IERhdGFWaWV3KGJ1ZmZlci5idWZmZXIsIGJ1ZmZlci5ieXRlT2Zmc2V0LCBidWZmZXIuYnl0ZUxlbmd0aClcblxuICByZXR1cm4gdmlldy5nZXRGbG9hdDY0KG9mZnNldCwgdHJ1ZSlcbn1cblxuZnVuY3Rpb24gcmVhZEZsb2F0TEUgKGJ1ZmZlciwgb2Zmc2V0KSB7XG4gIGlmIChvZmZzZXQgPT09IHVuZGVmaW5lZCkgb2Zmc2V0ID0gMFxuXG4gIGNvbnN0IHZpZXcgPSBuZXcgRGF0YVZpZXcoYnVmZmVyLmJ1ZmZlciwgYnVmZmVyLmJ5dGVPZmZzZXQsIGJ1ZmZlci5ieXRlTGVuZ3RoKVxuXG4gIHJldHVybiB2aWV3LmdldEZsb2F0MzIob2Zmc2V0LCB0cnVlKVxufVxuXG5mdW5jdGlvbiByZWFkVUludDMyTEUgKGJ1ZmZlciwgb2Zmc2V0KSB7XG4gIGlmIChvZmZzZXQgPT09IHVuZGVmaW5lZCkgb2Zmc2V0ID0gMFxuXG4gIGNvbnN0IHZpZXcgPSBuZXcgRGF0YVZpZXcoYnVmZmVyLmJ1ZmZlciwgYnVmZmVyLmJ5dGVPZmZzZXQsIGJ1ZmZlci5ieXRlTGVuZ3RoKVxuXG4gIHJldHVybiB2aWV3LmdldFVpbnQzMihvZmZzZXQsIHRydWUpXG59XG5cbmZ1bmN0aW9uIHJlYWRJbnQzMkxFIChidWZmZXIsIG9mZnNldCkge1xuICBpZiAob2Zmc2V0ID09PSB1bmRlZmluZWQpIG9mZnNldCA9IDBcblxuICBjb25zdCB2aWV3ID0gbmV3IERhdGFWaWV3KGJ1ZmZlci5idWZmZXIsIGJ1ZmZlci5ieXRlT2Zmc2V0LCBidWZmZXIuYnl0ZUxlbmd0aClcblxuICByZXR1cm4gdmlldy5nZXRJbnQzMihvZmZzZXQsIHRydWUpXG59XG5cbm1vZHVsZS5leHBvcnRzID0gZXhwb3J0cyA9IHtcbiAgaXNCdWZmZXIsXG4gIGlzRW5jb2RpbmcsXG4gIGFsbG9jLFxuICBhbGxvY1Vuc2FmZSxcbiAgYWxsb2NVbnNhZmVTbG93LFxuICBieXRlTGVuZ3RoLFxuICBjb21wYXJlLFxuICBjb25jYXQsXG4gIGNvcHksXG4gIGVxdWFscyxcbiAgZmlsbCxcbiAgZnJvbSxcbiAgaW5jbHVkZXMsXG4gIGluZGV4T2YsXG4gIGxhc3RJbmRleE9mLFxuICBzd2FwMTYsXG4gIHN3YXAzMixcbiAgc3dhcDY0LFxuICB0b0J1ZmZlcixcbiAgdG9TdHJpbmcsXG4gIHdyaXRlLFxuICB3cml0ZURvdWJsZUxFLFxuICB3cml0ZUZsb2F0TEUsXG4gIHdyaXRlVUludDMyTEUsXG4gIHdyaXRlSW50MzJMRSxcbiAgcmVhZERvdWJsZUxFLFxuICByZWFkRmxvYXRMRSxcbiAgcmVhZFVJbnQzMkxFLFxuICByZWFkSW50MzJMRVxufVxuIiwidmFyIF9fY29tbW9uSlMgPSAoY2IsIG1vZCkgPT4gZnVuY3Rpb24gX19yZXF1aXJlKCkge1xuICByZXR1cm4gbW9kIHx8ICgwLCBjYltPYmplY3Qua2V5cyhjYilbMF1dKSgobW9kID0geyBleHBvcnRzOiB7fSB9KS5leHBvcnRzLCBtb2QpLCBtb2QuZXhwb3J0cztcbn07XG52YXIgX190b0JpbmFyeSA9IC8qIEBfX1BVUkVfXyAqLyAoKCkgPT4ge1xuICB2YXIgdGFibGUgPSBuZXcgVWludDhBcnJheSgxMjgpO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IDY0OyBpKyspXG4gICAgdGFibGVbaSA8IDI2ID8gaSArIDY1IDogaSA8IDUyID8gaSArIDcxIDogaSA8IDYyID8gaSAtIDQgOiBpICogNCAtIDIwNV0gPSBpO1xuICByZXR1cm4gKGJhc2U2NCkgPT4ge1xuICAgIHZhciBuID0gYmFzZTY0Lmxlbmd0aCwgYnl0ZXMyID0gbmV3IFVpbnQ4QXJyYXkoKG4gLSAoYmFzZTY0W24gLSAxXSA9PSBcIj1cIikgLSAoYmFzZTY0W24gLSAyXSA9PSBcIj1cIikpICogMyAvIDQgfCAwKTtcbiAgICBmb3IgKHZhciBpMiA9IDAsIGogPSAwOyBpMiA8IG47ICkge1xuICAgICAgdmFyIGMwID0gdGFibGVbYmFzZTY0LmNoYXJDb2RlQXQoaTIrKyldLCBjMSA9IHRhYmxlW2Jhc2U2NC5jaGFyQ29kZUF0KGkyKyspXTtcbiAgICAgIHZhciBjMiA9IHRhYmxlW2Jhc2U2NC5jaGFyQ29kZUF0KGkyKyspXSwgYzMgPSB0YWJsZVtiYXNlNjQuY2hhckNvZGVBdChpMisrKV07XG4gICAgICBieXRlczJbaisrXSA9IGMwIDw8IDIgfCBjMSA+PiA0O1xuICAgICAgYnl0ZXMyW2orK10gPSBjMSA8PCA0IHwgYzIgPj4gMjtcbiAgICAgIGJ5dGVzMltqKytdID0gYzIgPDwgNiB8IGMzO1xuICAgIH1cbiAgICByZXR1cm4gYnl0ZXMyO1xuICB9O1xufSkoKTtcblxuLy8gd2FzbS1iaW5hcnk6Li9ibGFrZTJiLndhdFxudmFyIHJlcXVpcmVfYmxha2UyYiA9IF9fY29tbW9uSlMoe1xuICBcIndhc20tYmluYXJ5Oi4vYmxha2UyYi53YXRcIihleHBvcnRzMiwgbW9kdWxlMikge1xuICAgIG1vZHVsZTIuZXhwb3J0cyA9IF9fdG9CaW5hcnkoXCJBR0Z6YlFFQUFBQUJFQU5nQW45L0FHQURmMzkvQUdBQmZ3QURCUVFBQVFJQ0JRVUJBUXJvQndkTkJRWnRaVzF2Y25rQ0FBeGliR0ZyWlRKaVgybHVhWFFBQUE1aWJHRnJaVEppWDNWd1pHRjBaUUFCRFdKc1lXdGxNbUpmWm1sdVlXd0FBaEJpYkdGclpUSmlYMk52YlhCeVpYTnpBQU1Ldno4RXdBSUFJQUJDQURjREFDQUFRZ0EzQXdnZ0FFSUFOd01RSUFCQ0FEY0RHQ0FBUWdBM0F5QWdBRUlBTndNb0lBQkNBRGNETUNBQVFnQTNBemdnQUVJQU53TkFJQUJDQURjRFNDQUFRZ0EzQTFBZ0FFSUFOd05ZSUFCQ0FEY0RZQ0FBUWdBM0EyZ2dBRUlBTndOd0lBQkNBRGNEZUNBQVFvaVM4NTMvelBtRTZnQkJBQ2tEQUlVM0E0QUJJQUJDdTg2cXB0alE2N083ZjBFSUtRTUFoVGNEaUFFZ0FFS3I4TlAwcis2OHR6eEJFQ2tEQUlVM0E1QUJJQUJDOGUzMCtLV24vYWVsZjBFWUtRTUFoVGNEbUFFZ0FFTFJoWnJ2K3MrVWg5RUFRU0FwQXdDRk53T2dBU0FBUXAvWStkbkNrZHFDbTM5QktDa0RBSVUzQTZnQklBQkM2L3FHMnIrMTlzRWZRVEFwQXdDRk53T3dBU0FBUXZuQytKdVJvN1B3MndCQk9Da0RBSVUzQTdnQklBQkNBRGNEd0FFZ0FFSUFOd1BJQVNBQVFnQTNBOUFCQzIwQkEzOGdBRUhBQVdvaEF5QUFRY2dCYWlFRUlBUXBBd0NuSVFVQ1FBTkFJQUVnQWtZTkFTQUZRWUFCUmdSQUlBTWdBeWtEQUNBRnJYdzNBd0JCQUNFRklBQVFBd3NnQUNBRmFpQUJMUUFBT2dBQUlBVkJBV29oQlNBQlFRRnFJUUVNQUFzTElBUWdCYTAzQXdBTFlRRURmeUFBUWNBQmFpRUJJQUJCeUFGcUlRSWdBU0FCS1FNQUlBSXBBd0I4TndNQUlBQkNmemNEMEFFZ0Fpa0RBS2NoQXdKQUEwQWdBMEdBQVVZTkFTQUFJQU5xUVFBNkFBQWdBMEVCYWlFRERBQUxDeUFDSUFPdE53TUFJQUFRQXd1cU93SWdmZ2wvSUFCQmdBRnFJU0VnQUVHSUFXb2hJaUFBUVpBQmFpRWpJQUJCbUFGcUlTUWdBRUdnQVdvaEpTQUFRYWdCYWlFbUlBQkJzQUZxSVNjZ0FFRzRBV29oS0NBaEtRTUFJUUVnSWlrREFDRUNJQ01wQXdBaEF5QWtLUU1BSVFRZ0pTa0RBQ0VGSUNZcEF3QWhCaUFuS1FNQUlRY2dLQ2tEQUNFSVFvaVM4NTMvelBtRTZnQWhDVUs3enFxbTJORHJzN3QvSVFwQ3EvRFQ5Sy91dkxjOElRdEM4ZTMwK0tXbi9hZWxmeUVNUXRHRm11LzZ6NVNIMFFBaERVS2YyUG5ad3BIYWdwdC9JUTVDNi9xRzJyKzE5c0VmSVE5QytjTDRtNUdqcy9EYkFDRVFJQUFwQXdBaEVTQUFLUU1JSVJJZ0FDa0RFQ0VUSUFBcEF4Z2hGQ0FBS1FNZ0lSVWdBQ2tES0NFV0lBQXBBekFoRnlBQUtRTTRJUmdnQUNrRFFDRVpJQUFwQTBnaEdpQUFLUU5RSVJzZ0FDa0RXQ0VjSUFBcEEyQWhIU0FBS1FOb0lSNGdBQ2tEY0NFZklBQXBBM2doSUNBTklBQXBBOEFCaFNFTklBOGdBQ2tEMEFHRklROGdBU0FGSUJGOGZDRUJJQTBnQVlWQ0lJb2hEU0FKSUExOElRa2dCU0FKaFVJWWlpRUZJQUVnQlNBU2ZId2hBU0FOSUFHRlFoQ0tJUTBnQ1NBTmZDRUpJQVVnQ1lWQ1A0b2hCU0FDSUFZZ0UzeDhJUUlnRGlBQ2hVSWdpaUVPSUFvZ0Rud2hDaUFHSUFxRlFoaUtJUVlnQWlBR0lCUjhmQ0VDSUE0Z0FvVkNFSW9oRGlBS0lBNThJUW9nQmlBS2hVSS9paUVHSUFNZ0J5QVZmSHdoQXlBUElBT0ZRaUNLSVE4Z0N5QVBmQ0VMSUFjZ0M0VkNHSW9oQnlBRElBY2dGbng4SVFNZ0R5QURoVUlRaWlFUElBc2dEM3doQ3lBSElBdUZRaitLSVFjZ0JDQUlJQmQ4ZkNFRUlCQWdCSVZDSUlvaEVDQU1JQkI4SVF3Z0NDQU1oVUlZaWlFSUlBUWdDQ0FZZkh3aEJDQVFJQVNGUWhDS0lSQWdEQ0FRZkNFTUlBZ2dESVZDUDRvaENDQUJJQVlnR1h4OElRRWdFQ0FCaFVJZ2lpRVFJQXNnRUh3aEN5QUdJQXVGUWhpS0lRWWdBU0FHSUJwOGZDRUJJQkFnQVlWQ0VJb2hFQ0FMSUJCOElRc2dCaUFMaFVJL2lpRUdJQUlnQnlBYmZId2hBaUFOSUFLRlFpQ0tJUTBnRENBTmZDRU1JQWNnRElWQ0dJb2hCeUFDSUFjZ0hIeDhJUUlnRFNBQ2hVSVFpaUVOSUF3Z0RYd2hEQ0FISUF5RlFqK0tJUWNnQXlBSUlCMThmQ0VESUE0Z0E0VkNJSW9oRGlBSklBNThJUWtnQ0NBSmhVSVlpaUVJSUFNZ0NDQWVmSHdoQXlBT0lBT0ZRaENLSVE0Z0NTQU9mQ0VKSUFnZ0NZVkNQNG9oQ0NBRUlBVWdIM3g4SVFRZ0R5QUVoVUlnaWlFUElBb2dEM3doQ2lBRklBcUZRaGlLSVFVZ0JDQUZJQ0I4ZkNFRUlBOGdCSVZDRUlvaER5QUtJQTk4SVFvZ0JTQUtoVUkvaWlFRklBRWdCU0FmZkh3aEFTQU5JQUdGUWlDS0lRMGdDU0FOZkNFSklBVWdDWVZDR0lvaEJTQUJJQVVnRzN4OElRRWdEU0FCaFVJUWlpRU5JQWtnRFh3aENTQUZJQW1GUWorS0lRVWdBaUFHSUJWOGZDRUNJQTRnQW9WQ0lJb2hEaUFLSUE1OElRb2dCaUFLaFVJWWlpRUdJQUlnQmlBWmZId2hBaUFPSUFLRlFoQ0tJUTRnQ2lBT2ZDRUtJQVlnQ29WQ1A0b2hCaUFESUFjZ0dueDhJUU1nRHlBRGhVSWdpaUVQSUFzZ0Qzd2hDeUFISUF1RlFoaUtJUWNnQXlBSElDQjhmQ0VESUE4Z0E0VkNFSW9oRHlBTElBOThJUXNnQnlBTGhVSS9paUVISUFRZ0NDQWVmSHdoQkNBUUlBU0ZRaUNLSVJBZ0RDQVFmQ0VNSUFnZ0RJVkNHSW9oQ0NBRUlBZ2dGM3g4SVFRZ0VDQUVoVUlRaWlFUUlBd2dFSHdoRENBSUlBeUZRaitLSVFnZ0FTQUdJQko4ZkNFQklCQWdBWVZDSUlvaEVDQUxJQkI4SVFzZ0JpQUxoVUlZaWlFR0lBRWdCaUFkZkh3aEFTQVFJQUdGUWhDS0lSQWdDeUFRZkNFTElBWWdDNFZDUDRvaEJpQUNJQWNnRVh4OElRSWdEU0FDaFVJZ2lpRU5JQXdnRFh3aERDQUhJQXlGUWhpS0lRY2dBaUFISUJOOGZDRUNJQTBnQW9WQ0VJb2hEU0FNSUExOElRd2dCeUFNaFVJL2lpRUhJQU1nQ0NBY2ZId2hBeUFPSUFPRlFpQ0tJUTRnQ1NBT2ZDRUpJQWdnQ1lWQ0dJb2hDQ0FESUFnZ0dIeDhJUU1nRGlBRGhVSVFpaUVPSUFrZ0Rud2hDU0FJSUFtRlFqK0tJUWdnQkNBRklCWjhmQ0VFSUE4Z0JJVkNJSW9oRHlBS0lBOThJUW9nQlNBS2hVSVlpaUVGSUFRZ0JTQVVmSHdoQkNBUElBU0ZRaENLSVE4Z0NpQVBmQ0VLSUFVZ0NvVkNQNG9oQlNBQklBVWdISHg4SVFFZ0RTQUJoVUlnaWlFTklBa2dEWHdoQ1NBRklBbUZRaGlLSVFVZ0FTQUZJQmw4ZkNFQklBMGdBWVZDRUlvaERTQUpJQTE4SVFrZ0JTQUpoVUkvaWlFRklBSWdCaUFkZkh3aEFpQU9JQUtGUWlDS0lRNGdDaUFPZkNFS0lBWWdDb1ZDR0lvaEJpQUNJQVlnRVh4OElRSWdEaUFDaFVJUWlpRU9JQW9nRG53aENpQUdJQXFGUWorS0lRWWdBeUFISUJaOGZDRURJQThnQTRWQ0lJb2hEeUFMSUE5OElRc2dCeUFMaFVJWWlpRUhJQU1nQnlBVGZId2hBeUFQSUFPRlFoQ0tJUThnQ3lBUGZDRUxJQWNnQzRWQ1A0b2hCeUFFSUFnZ0lIeDhJUVFnRUNBRWhVSWdpaUVRSUF3Z0VId2hEQ0FJSUF5RlFoaUtJUWdnQkNBSUlCNThmQ0VFSUJBZ0JJVkNFSW9oRUNBTUlCQjhJUXdnQ0NBTWhVSS9paUVJSUFFZ0JpQWJmSHdoQVNBUUlBR0ZRaUNLSVJBZ0N5QVFmQ0VMSUFZZ0M0VkNHSW9oQmlBQklBWWdIM3g4SVFFZ0VDQUJoVUlRaWlFUUlBc2dFSHdoQ3lBR0lBdUZRaitLSVFZZ0FpQUhJQlI4ZkNFQ0lBMGdBb1ZDSUlvaERTQU1JQTE4SVF3Z0J5QU1oVUlZaWlFSElBSWdCeUFYZkh3aEFpQU5JQUtGUWhDS0lRMGdEQ0FOZkNFTUlBY2dESVZDUDRvaEJ5QURJQWdnR0h4OElRTWdEaUFEaFVJZ2lpRU9JQWtnRG53aENTQUlJQW1GUWhpS0lRZ2dBeUFJSUJKOGZDRURJQTRnQTRWQ0VJb2hEaUFKSUE1OElRa2dDQ0FKaFVJL2lpRUlJQVFnQlNBYWZId2hCQ0FQSUFTRlFpQ0tJUThnQ2lBUGZDRUtJQVVnQ29WQ0dJb2hCU0FFSUFVZ0ZYeDhJUVFnRHlBRWhVSVFpaUVQSUFvZ0Qzd2hDaUFGSUFxRlFqK0tJUVVnQVNBRklCaDhmQ0VCSUEwZ0FZVkNJSW9oRFNBSklBMThJUWtnQlNBSmhVSVlpaUVGSUFFZ0JTQWFmSHdoQVNBTklBR0ZRaENLSVEwZ0NTQU5mQ0VKSUFVZ0NZVkNQNG9oQlNBQ0lBWWdGSHg4SVFJZ0RpQUNoVUlnaWlFT0lBb2dEbndoQ2lBR0lBcUZRaGlLSVFZZ0FpQUdJQko4ZkNFQ0lBNGdBb1ZDRUlvaERpQUtJQTU4SVFvZ0JpQUtoVUkvaWlFR0lBTWdCeUFlZkh3aEF5QVBJQU9GUWlDS0lROGdDeUFQZkNFTElBY2dDNFZDR0lvaEJ5QURJQWNnSFh4OElRTWdEeUFEaFVJUWlpRVBJQXNnRDN3aEN5QUhJQXVGUWorS0lRY2dCQ0FJSUJ4OGZDRUVJQkFnQklWQ0lJb2hFQ0FNSUJCOElRd2dDQ0FNaFVJWWlpRUlJQVFnQ0NBZmZId2hCQ0FRSUFTRlFoQ0tJUkFnRENBUWZDRU1JQWdnRElWQ1A0b2hDQ0FCSUFZZ0UzeDhJUUVnRUNBQmhVSWdpaUVRSUFzZ0VId2hDeUFHSUF1RlFoaUtJUVlnQVNBR0lCZDhmQ0VCSUJBZ0FZVkNFSW9oRUNBTElCQjhJUXNnQmlBTGhVSS9paUVHSUFJZ0J5QVdmSHdoQWlBTklBS0ZRaUNLSVEwZ0RDQU5mQ0VNSUFjZ0RJVkNHSW9oQnlBQ0lBY2dHM3g4SVFJZ0RTQUNoVUlRaWlFTklBd2dEWHdoRENBSElBeUZRaitLSVFjZ0F5QUlJQlY4ZkNFRElBNGdBNFZDSUlvaERpQUpJQTU4SVFrZ0NDQUpoVUlZaWlFSUlBTWdDQ0FSZkh3aEF5QU9JQU9GUWhDS0lRNGdDU0FPZkNFSklBZ2dDWVZDUDRvaENDQUVJQVVnSUh4OElRUWdEeUFFaFVJZ2lpRVBJQW9nRDN3aENpQUZJQXFGUWhpS0lRVWdCQ0FGSUJsOGZDRUVJQThnQklWQ0VJb2hEeUFLSUE5OElRb2dCU0FLaFVJL2lpRUZJQUVnQlNBYWZId2hBU0FOSUFHRlFpQ0tJUTBnQ1NBTmZDRUpJQVVnQ1lWQ0dJb2hCU0FCSUFVZ0VYeDhJUUVnRFNBQmhVSVFpaUVOSUFrZ0RYd2hDU0FGSUFtRlFqK0tJUVVnQWlBR0lCWjhmQ0VDSUE0Z0FvVkNJSW9oRGlBS0lBNThJUW9nQmlBS2hVSVlpaUVHSUFJZ0JpQVlmSHdoQWlBT0lBS0ZRaENLSVE0Z0NpQU9mQ0VLSUFZZ0NvVkNQNG9oQmlBRElBY2dFM3g4SVFNZ0R5QURoVUlnaWlFUElBc2dEM3doQ3lBSElBdUZRaGlLSVFjZ0F5QUhJQlY4ZkNFRElBOGdBNFZDRUlvaER5QUxJQTk4SVFzZ0J5QUxoVUkvaWlFSElBUWdDQ0FiZkh3aEJDQVFJQVNGUWlDS0lSQWdEQ0FRZkNFTUlBZ2dESVZDR0lvaENDQUVJQWdnSUh4OElRUWdFQ0FFaFVJUWlpRVFJQXdnRUh3aERDQUlJQXlGUWorS0lRZ2dBU0FHSUI5OGZDRUJJQkFnQVlWQ0lJb2hFQ0FMSUJCOElRc2dCaUFMaFVJWWlpRUdJQUVnQmlBU2ZId2hBU0FRSUFHRlFoQ0tJUkFnQ3lBUWZDRUxJQVlnQzRWQ1A0b2hCaUFDSUFjZ0hIeDhJUUlnRFNBQ2hVSWdpaUVOSUF3Z0RYd2hEQ0FISUF5RlFoaUtJUWNnQWlBSElCMThmQ0VDSUEwZ0FvVkNFSW9oRFNBTUlBMThJUXdnQnlBTWhVSS9paUVISUFNZ0NDQVhmSHdoQXlBT0lBT0ZRaUNLSVE0Z0NTQU9mQ0VKSUFnZ0NZVkNHSW9oQ0NBRElBZ2dHWHg4SVFNZ0RpQURoVUlRaWlFT0lBa2dEbndoQ1NBSUlBbUZRaitLSVFnZ0JDQUZJQlI4ZkNFRUlBOGdCSVZDSUlvaER5QUtJQTk4SVFvZ0JTQUtoVUlZaWlFRklBUWdCU0FlZkh3aEJDQVBJQVNGUWhDS0lROGdDaUFQZkNFS0lBVWdDb1ZDUDRvaEJTQUJJQVVnRTN4OElRRWdEU0FCaFVJZ2lpRU5JQWtnRFh3aENTQUZJQW1GUWhpS0lRVWdBU0FGSUIxOGZDRUJJQTBnQVlWQ0VJb2hEU0FKSUExOElRa2dCU0FKaFVJL2lpRUZJQUlnQmlBWGZId2hBaUFPSUFLRlFpQ0tJUTRnQ2lBT2ZDRUtJQVlnQ29WQ0dJb2hCaUFDSUFZZ0czeDhJUUlnRGlBQ2hVSVFpaUVPSUFvZ0Rud2hDaUFHSUFxRlFqK0tJUVlnQXlBSElCRjhmQ0VESUE4Z0E0VkNJSW9oRHlBTElBOThJUXNnQnlBTGhVSVlpaUVISUFNZ0J5QWNmSHdoQXlBUElBT0ZRaENLSVE4Z0N5QVBmQ0VMSUFjZ0M0VkNQNG9oQnlBRUlBZ2dHWHg4SVFRZ0VDQUVoVUlnaWlFUUlBd2dFSHdoRENBSUlBeUZRaGlLSVFnZ0JDQUlJQlI4ZkNFRUlCQWdCSVZDRUlvaEVDQU1JQkI4SVF3Z0NDQU1oVUkvaWlFSUlBRWdCaUFWZkh3aEFTQVFJQUdGUWlDS0lSQWdDeUFRZkNFTElBWWdDNFZDR0lvaEJpQUJJQVlnSG54OElRRWdFQ0FCaFVJUWlpRVFJQXNnRUh3aEN5QUdJQXVGUWorS0lRWWdBaUFISUJoOGZDRUNJQTBnQW9WQ0lJb2hEU0FNSUExOElRd2dCeUFNaFVJWWlpRUhJQUlnQnlBV2ZId2hBaUFOSUFLRlFoQ0tJUTBnRENBTmZDRU1JQWNnRElWQ1A0b2hCeUFESUFnZ0lIeDhJUU1nRGlBRGhVSWdpaUVPSUFrZ0Rud2hDU0FJSUFtRlFoaUtJUWdnQXlBSUlCOThmQ0VESUE0Z0E0VkNFSW9oRGlBSklBNThJUWtnQ0NBSmhVSS9paUVJSUFRZ0JTQVNmSHdoQkNBUElBU0ZRaUNLSVE4Z0NpQVBmQ0VLSUFVZ0NvVkNHSW9oQlNBRUlBVWdHbng4SVFRZ0R5QUVoVUlRaWlFUElBb2dEM3doQ2lBRklBcUZRaitLSVFVZ0FTQUZJQjE4ZkNFQklBMGdBWVZDSUlvaERTQUpJQTE4SVFrZ0JTQUpoVUlZaWlFRklBRWdCU0FXZkh3aEFTQU5JQUdGUWhDS0lRMGdDU0FOZkNFSklBVWdDWVZDUDRvaEJTQUNJQVlnRW54OElRSWdEaUFDaFVJZ2lpRU9JQW9nRG53aENpQUdJQXFGUWhpS0lRWWdBaUFHSUNCOGZDRUNJQTRnQW9WQ0VJb2hEaUFLSUE1OElRb2dCaUFLaFVJL2lpRUdJQU1nQnlBZmZId2hBeUFQSUFPRlFpQ0tJUThnQ3lBUGZDRUxJQWNnQzRWQ0dJb2hCeUFESUFjZ0hueDhJUU1nRHlBRGhVSVFpaUVQSUFzZ0Qzd2hDeUFISUF1RlFqK0tJUWNnQkNBSUlCVjhmQ0VFSUJBZ0JJVkNJSW9oRUNBTUlCQjhJUXdnQ0NBTWhVSVlpaUVJSUFRZ0NDQWJmSHdoQkNBUUlBU0ZRaENLSVJBZ0RDQVFmQ0VNSUFnZ0RJVkNQNG9oQ0NBQklBWWdFWHg4SVFFZ0VDQUJoVUlnaWlFUUlBc2dFSHdoQ3lBR0lBdUZRaGlLSVFZZ0FTQUdJQmg4ZkNFQklCQWdBWVZDRUlvaEVDQUxJQkI4SVFzZ0JpQUxoVUkvaWlFR0lBSWdCeUFYZkh3aEFpQU5JQUtGUWlDS0lRMGdEQ0FOZkNFTUlBY2dESVZDR0lvaEJ5QUNJQWNnRkh4OElRSWdEU0FDaFVJUWlpRU5JQXdnRFh3aERDQUhJQXlGUWorS0lRY2dBeUFJSUJwOGZDRURJQTRnQTRWQ0lJb2hEaUFKSUE1OElRa2dDQ0FKaFVJWWlpRUlJQU1nQ0NBVGZId2hBeUFPSUFPRlFoQ0tJUTRnQ1NBT2ZDRUpJQWdnQ1lWQ1A0b2hDQ0FFSUFVZ0dYeDhJUVFnRHlBRWhVSWdpaUVQSUFvZ0Qzd2hDaUFGSUFxRlFoaUtJUVVnQkNBRklCeDhmQ0VFSUE4Z0JJVkNFSW9oRHlBS0lBOThJUW9nQlNBS2hVSS9paUVGSUFFZ0JTQWVmSHdoQVNBTklBR0ZRaUNLSVEwZ0NTQU5mQ0VKSUFVZ0NZVkNHSW9oQlNBQklBVWdISHg4SVFFZ0RTQUJoVUlRaWlFTklBa2dEWHdoQ1NBRklBbUZRaitLSVFVZ0FpQUdJQmg4ZkNFQ0lBNGdBb1ZDSUlvaERpQUtJQTU4SVFvZ0JpQUtoVUlZaWlFR0lBSWdCaUFmZkh3aEFpQU9JQUtGUWhDS0lRNGdDaUFPZkNFS0lBWWdDb1ZDUDRvaEJpQURJQWNnSFh4OElRTWdEeUFEaFVJZ2lpRVBJQXNnRDN3aEN5QUhJQXVGUWhpS0lRY2dBeUFISUJKOGZDRURJQThnQTRWQ0VJb2hEeUFMSUE5OElRc2dCeUFMaFVJL2lpRUhJQVFnQ0NBVWZId2hCQ0FRSUFTRlFpQ0tJUkFnRENBUWZDRU1JQWdnRElWQ0dJb2hDQ0FFSUFnZ0dueDhJUVFnRUNBRWhVSVFpaUVRSUF3Z0VId2hEQ0FJSUF5RlFqK0tJUWdnQVNBR0lCWjhmQ0VCSUJBZ0FZVkNJSW9oRUNBTElCQjhJUXNnQmlBTGhVSVlpaUVHSUFFZ0JpQVJmSHdoQVNBUUlBR0ZRaENLSVJBZ0N5QVFmQ0VMSUFZZ0M0VkNQNG9oQmlBQ0lBY2dJSHg4SVFJZ0RTQUNoVUlnaWlFTklBd2dEWHdoRENBSElBeUZRaGlLSVFjZ0FpQUhJQlY4ZkNFQ0lBMGdBb1ZDRUlvaERTQU1JQTE4SVF3Z0J5QU1oVUkvaWlFSElBTWdDQ0FaZkh3aEF5QU9JQU9GUWlDS0lRNGdDU0FPZkNFSklBZ2dDWVZDR0lvaENDQURJQWdnRjN4OElRTWdEaUFEaFVJUWlpRU9JQWtnRG53aENTQUlJQW1GUWorS0lRZ2dCQ0FGSUJOOGZDRUVJQThnQklWQ0lJb2hEeUFLSUE5OElRb2dCU0FLaFVJWWlpRUZJQVFnQlNBYmZId2hCQ0FQSUFTRlFoQ0tJUThnQ2lBUGZDRUtJQVVnQ29WQ1A0b2hCU0FCSUFVZ0YzeDhJUUVnRFNBQmhVSWdpaUVOSUFrZ0RYd2hDU0FGSUFtRlFoaUtJUVVnQVNBRklDQjhmQ0VCSUEwZ0FZVkNFSW9oRFNBSklBMThJUWtnQlNBSmhVSS9paUVGSUFJZ0JpQWZmSHdoQWlBT0lBS0ZRaUNLSVE0Z0NpQU9mQ0VLSUFZZ0NvVkNHSW9oQmlBQ0lBWWdHbng4SVFJZ0RpQUNoVUlRaWlFT0lBb2dEbndoQ2lBR0lBcUZRaitLSVFZZ0F5QUhJQng4ZkNFRElBOGdBNFZDSUlvaER5QUxJQTk4SVFzZ0J5QUxoVUlZaWlFSElBTWdCeUFVZkh3aEF5QVBJQU9GUWhDS0lROGdDeUFQZkNFTElBY2dDNFZDUDRvaEJ5QUVJQWdnRVh4OElRUWdFQ0FFaFVJZ2lpRVFJQXdnRUh3aERDQUlJQXlGUWhpS0lRZ2dCQ0FJSUJsOGZDRUVJQkFnQklWQ0VJb2hFQ0FNSUJCOElRd2dDQ0FNaFVJL2lpRUlJQUVnQmlBZGZId2hBU0FRSUFHRlFpQ0tJUkFnQ3lBUWZDRUxJQVlnQzRWQ0dJb2hCaUFCSUFZZ0UzeDhJUUVnRUNBQmhVSVFpaUVRSUFzZ0VId2hDeUFHSUF1RlFqK0tJUVlnQWlBSElCNThmQ0VDSUEwZ0FvVkNJSW9oRFNBTUlBMThJUXdnQnlBTWhVSVlpaUVISUFJZ0J5QVlmSHdoQWlBTklBS0ZRaENLSVEwZ0RDQU5mQ0VNSUFjZ0RJVkNQNG9oQnlBRElBZ2dFbng4SVFNZ0RpQURoVUlnaWlFT0lBa2dEbndoQ1NBSUlBbUZRaGlLSVFnZ0F5QUlJQlY4ZkNFRElBNGdBNFZDRUlvaERpQUpJQTU4SVFrZ0NDQUpoVUkvaWlFSUlBUWdCU0FiZkh3aEJDQVBJQVNGUWlDS0lROGdDaUFQZkNFS0lBVWdDb1ZDR0lvaEJTQUVJQVVnRm54OElRUWdEeUFFaFVJUWlpRVBJQW9nRDN3aENpQUZJQXFGUWorS0lRVWdBU0FGSUJ0OGZDRUJJQTBnQVlWQ0lJb2hEU0FKSUExOElRa2dCU0FKaFVJWWlpRUZJQUVnQlNBVGZId2hBU0FOSUFHRlFoQ0tJUTBnQ1NBTmZDRUpJQVVnQ1lWQ1A0b2hCU0FDSUFZZ0dYeDhJUUlnRGlBQ2hVSWdpaUVPSUFvZ0Rud2hDaUFHSUFxRlFoaUtJUVlnQWlBR0lCVjhmQ0VDSUE0Z0FvVkNFSW9oRGlBS0lBNThJUW9nQmlBS2hVSS9paUVHSUFNZ0J5QVlmSHdoQXlBUElBT0ZRaUNLSVE4Z0N5QVBmQ0VMSUFjZ0M0VkNHSW9oQnlBRElBY2dGM3g4SVFNZ0R5QURoVUlRaWlFUElBc2dEM3doQ3lBSElBdUZRaitLSVFjZ0JDQUlJQko4ZkNFRUlCQWdCSVZDSUlvaEVDQU1JQkI4SVF3Z0NDQU1oVUlZaWlFSUlBUWdDQ0FXZkh3aEJDQVFJQVNGUWhDS0lSQWdEQ0FRZkNFTUlBZ2dESVZDUDRvaENDQUJJQVlnSUh4OElRRWdFQ0FCaFVJZ2lpRVFJQXNnRUh3aEN5QUdJQXVGUWhpS0lRWWdBU0FHSUJ4OGZDRUJJQkFnQVlWQ0VJb2hFQ0FMSUJCOElRc2dCaUFMaFVJL2lpRUdJQUlnQnlBYWZId2hBaUFOSUFLRlFpQ0tJUTBnRENBTmZDRU1JQWNnRElWQ0dJb2hCeUFDSUFjZ0gzeDhJUUlnRFNBQ2hVSVFpaUVOSUF3Z0RYd2hEQ0FISUF5RlFqK0tJUWNnQXlBSUlCUjhmQ0VESUE0Z0E0VkNJSW9oRGlBSklBNThJUWtnQ0NBSmhVSVlpaUVJSUFNZ0NDQWRmSHdoQXlBT0lBT0ZRaENLSVE0Z0NTQU9mQ0VKSUFnZ0NZVkNQNG9oQ0NBRUlBVWdIbng4SVFRZ0R5QUVoVUlnaWlFUElBb2dEM3doQ2lBRklBcUZRaGlLSVFVZ0JDQUZJQkY4ZkNFRUlBOGdCSVZDRUlvaER5QUtJQTk4SVFvZ0JTQUtoVUkvaWlFRklBRWdCU0FSZkh3aEFTQU5JQUdGUWlDS0lRMGdDU0FOZkNFSklBVWdDWVZDR0lvaEJTQUJJQVVnRW54OElRRWdEU0FCaFVJUWlpRU5JQWtnRFh3aENTQUZJQW1GUWorS0lRVWdBaUFHSUJOOGZDRUNJQTRnQW9WQ0lJb2hEaUFLSUE1OElRb2dCaUFLaFVJWWlpRUdJQUlnQmlBVWZId2hBaUFPSUFLRlFoQ0tJUTRnQ2lBT2ZDRUtJQVlnQ29WQ1A0b2hCaUFESUFjZ0ZYeDhJUU1nRHlBRGhVSWdpaUVQSUFzZ0Qzd2hDeUFISUF1RlFoaUtJUWNnQXlBSElCWjhmQ0VESUE4Z0E0VkNFSW9oRHlBTElBOThJUXNnQnlBTGhVSS9paUVISUFRZ0NDQVhmSHdoQkNBUUlBU0ZRaUNLSVJBZ0RDQVFmQ0VNSUFnZ0RJVkNHSW9oQ0NBRUlBZ2dHSHg4SVFRZ0VDQUVoVUlRaWlFUUlBd2dFSHdoRENBSUlBeUZRaitLSVFnZ0FTQUdJQmw4ZkNFQklCQWdBWVZDSUlvaEVDQUxJQkI4SVFzZ0JpQUxoVUlZaWlFR0lBRWdCaUFhZkh3aEFTQVFJQUdGUWhDS0lSQWdDeUFRZkNFTElBWWdDNFZDUDRvaEJpQUNJQWNnRzN4OElRSWdEU0FDaFVJZ2lpRU5JQXdnRFh3aERDQUhJQXlGUWhpS0lRY2dBaUFISUJ4OGZDRUNJQTBnQW9WQ0VJb2hEU0FNSUExOElRd2dCeUFNaFVJL2lpRUhJQU1nQ0NBZGZId2hBeUFPSUFPRlFpQ0tJUTRnQ1NBT2ZDRUpJQWdnQ1lWQ0dJb2hDQ0FESUFnZ0hueDhJUU1nRGlBRGhVSVFpaUVPSUFrZ0Rud2hDU0FJSUFtRlFqK0tJUWdnQkNBRklCOThmQ0VFSUE4Z0JJVkNJSW9oRHlBS0lBOThJUW9nQlNBS2hVSVlpaUVGSUFRZ0JTQWdmSHdoQkNBUElBU0ZRaENLSVE4Z0NpQVBmQ0VLSUFVZ0NvVkNQNG9oQlNBQklBVWdIM3g4SVFFZ0RTQUJoVUlnaWlFTklBa2dEWHdoQ1NBRklBbUZRaGlLSVFVZ0FTQUZJQnQ4ZkNFQklBMGdBWVZDRUlvaERTQUpJQTE4SVFrZ0JTQUpoVUkvaWlFRklBSWdCaUFWZkh3aEFpQU9JQUtGUWlDS0lRNGdDaUFPZkNFS0lBWWdDb1ZDR0lvaEJpQUNJQVlnR1h4OElRSWdEaUFDaFVJUWlpRU9JQW9nRG53aENpQUdJQXFGUWorS0lRWWdBeUFISUJwOGZDRURJQThnQTRWQ0lJb2hEeUFMSUE5OElRc2dCeUFMaFVJWWlpRUhJQU1nQnlBZ2ZId2hBeUFQSUFPRlFoQ0tJUThnQ3lBUGZDRUxJQWNnQzRWQ1A0b2hCeUFFSUFnZ0hueDhJUVFnRUNBRWhVSWdpaUVRSUF3Z0VId2hEQ0FJSUF5RlFoaUtJUWdnQkNBSUlCZDhmQ0VFSUJBZ0JJVkNFSW9oRUNBTUlCQjhJUXdnQ0NBTWhVSS9paUVJSUFFZ0JpQVNmSHdoQVNBUUlBR0ZRaUNLSVJBZ0N5QVFmQ0VMSUFZZ0M0VkNHSW9oQmlBQklBWWdIWHg4SVFFZ0VDQUJoVUlRaWlFUUlBc2dFSHdoQ3lBR0lBdUZRaitLSVFZZ0FpQUhJQkY4ZkNFQ0lBMGdBb1ZDSUlvaERTQU1JQTE4SVF3Z0J5QU1oVUlZaWlFSElBSWdCeUFUZkh3aEFpQU5JQUtGUWhDS0lRMGdEQ0FOZkNFTUlBY2dESVZDUDRvaEJ5QURJQWdnSEh4OElRTWdEaUFEaFVJZ2lpRU9JQWtnRG53aENTQUlJQW1GUWhpS0lRZ2dBeUFJSUJoOGZDRURJQTRnQTRWQ0VJb2hEaUFKSUE1OElRa2dDQ0FKaFVJL2lpRUlJQVFnQlNBV2ZId2hCQ0FQSUFTRlFpQ0tJUThnQ2lBUGZDRUtJQVVnQ29WQ0dJb2hCU0FFSUFVZ0ZIeDhJUVFnRHlBRWhVSVFpaUVQSUFvZ0Qzd2hDaUFGSUFxRlFqK0tJUVVnSVNBaEtRTUFJQUVnQ1lXRk53TUFJQ0lnSWlrREFDQUNJQXFGaFRjREFDQWpJQ01wQXdBZ0F5QUxoWVUzQXdBZ0pDQWtLUU1BSUFRZ0RJV0ZOd01BSUNVZ0pTa0RBQ0FGSUEyRmhUY0RBQ0FtSUNZcEF3QWdCaUFPaFlVM0F3QWdKeUFuS1FNQUlBY2dENFdGTndNQUlDZ2dLQ2tEQUNBSUlCQ0ZoVGNEQUFzPVwiKTtcbiAgfVxufSk7XG5cbi8vIHdhc20tbW9kdWxlOi4vYmxha2UyYi53YXRcbnZhciBieXRlcyA9IHJlcXVpcmVfYmxha2UyYigpO1xudmFyIGNvbXBpbGVkID0gV2ViQXNzZW1ibHkuY29tcGlsZShieXRlcyk7XG5tb2R1bGUuZXhwb3J0cyA9IGFzeW5jIChpbXBvcnRzKSA9PiB7XG4gIGNvbnN0IGluc3RhbmNlID0gYXdhaXQgV2ViQXNzZW1ibHkuaW5zdGFudGlhdGUoYXdhaXQgY29tcGlsZWQsIGltcG9ydHMpO1xuICByZXR1cm4gaW5zdGFuY2UuZXhwb3J0cztcbn07XG4iLCJ2YXIgYXNzZXJ0ID0gcmVxdWlyZSgnbmFub2Fzc2VydCcpXG52YXIgYjRhID0gcmVxdWlyZSgnYjRhJylcblxudmFyIHdhc20gPSBudWxsXG52YXIgd2FzbVByb21pc2UgPSB0eXBlb2YgV2ViQXNzZW1ibHkgIT09IFwidW5kZWZpbmVkXCIgJiYgcmVxdWlyZSgnLi9ibGFrZTJiJykoKS50aGVuKG1vZCA9PiB7XG4gIHdhc20gPSBtb2Rcbn0pXG5cbnZhciBoZWFkID0gNjRcbnZhciBmcmVlTGlzdCA9IFtdXG5cbm1vZHVsZS5leHBvcnRzID0gQmxha2UyYlxudmFyIEJZVEVTX01JTiA9IG1vZHVsZS5leHBvcnRzLkJZVEVTX01JTiA9IDE2XG52YXIgQllURVNfTUFYID0gbW9kdWxlLmV4cG9ydHMuQllURVNfTUFYID0gNjRcbnZhciBCWVRFUyA9IG1vZHVsZS5leHBvcnRzLkJZVEVTID0gMzJcbnZhciBLRVlCWVRFU19NSU4gPSBtb2R1bGUuZXhwb3J0cy5LRVlCWVRFU19NSU4gPSAxNlxudmFyIEtFWUJZVEVTX01BWCA9IG1vZHVsZS5leHBvcnRzLktFWUJZVEVTX01BWCA9IDY0XG52YXIgS0VZQllURVMgPSBtb2R1bGUuZXhwb3J0cy5LRVlCWVRFUyA9IDMyXG52YXIgU0FMVEJZVEVTID0gbW9kdWxlLmV4cG9ydHMuU0FMVEJZVEVTID0gMTZcbnZhciBQRVJTT05BTEJZVEVTID0gbW9kdWxlLmV4cG9ydHMuUEVSU09OQUxCWVRFUyA9IDE2XG5cbmZ1bmN0aW9uIEJsYWtlMmIgKGRpZ2VzdExlbmd0aCwga2V5LCBzYWx0LCBwZXJzb25hbCwgbm9Bc3NlcnQpIHtcbiAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIEJsYWtlMmIpKSByZXR1cm4gbmV3IEJsYWtlMmIoZGlnZXN0TGVuZ3RoLCBrZXksIHNhbHQsIHBlcnNvbmFsLCBub0Fzc2VydClcbiAgaWYgKCF3YXNtKSB0aHJvdyBuZXcgRXJyb3IoJ1dBU00gbm90IGxvYWRlZC4gV2FpdCBmb3IgQmxha2UyYi5yZWFkeShjYiknKVxuICBpZiAoIWRpZ2VzdExlbmd0aCkgZGlnZXN0TGVuZ3RoID0gMzJcblxuICBpZiAobm9Bc3NlcnQgIT09IHRydWUpIHtcbiAgICBhc3NlcnQoZGlnZXN0TGVuZ3RoID49IEJZVEVTX01JTiwgJ2RpZ2VzdExlbmd0aCBtdXN0IGJlIGF0IGxlYXN0ICcgKyBCWVRFU19NSU4gKyAnLCB3YXMgZ2l2ZW4gJyArIGRpZ2VzdExlbmd0aClcbiAgICBhc3NlcnQoZGlnZXN0TGVuZ3RoIDw9IEJZVEVTX01BWCwgJ2RpZ2VzdExlbmd0aCBtdXN0IGJlIGF0IG1vc3QgJyArIEJZVEVTX01BWCArICcsIHdhcyBnaXZlbiAnICsgZGlnZXN0TGVuZ3RoKVxuICAgIGlmIChrZXkgIT0gbnVsbCkge1xuICAgICAgYXNzZXJ0KGtleSBpbnN0YW5jZW9mIFVpbnQ4QXJyYXksICdrZXkgbXVzdCBiZSBVaW50OEFycmF5IG9yIEJ1ZmZlcicpXG4gICAgICBhc3NlcnQoa2V5Lmxlbmd0aCA+PSBLRVlCWVRFU19NSU4sICdrZXkgbXVzdCBiZSBhdCBsZWFzdCAnICsgS0VZQllURVNfTUlOICsgJywgd2FzIGdpdmVuICcgKyBrZXkubGVuZ3RoKVxuICAgICAgYXNzZXJ0KGtleS5sZW5ndGggPD0gS0VZQllURVNfTUFYLCAna2V5IG11c3QgYmUgYXQgbGVhc3QgJyArIEtFWUJZVEVTX01BWCArICcsIHdhcyBnaXZlbiAnICsga2V5Lmxlbmd0aClcbiAgICB9XG4gICAgaWYgKHNhbHQgIT0gbnVsbCkge1xuICAgICAgYXNzZXJ0KHNhbHQgaW5zdGFuY2VvZiBVaW50OEFycmF5LCAnc2FsdCBtdXN0IGJlIFVpbnQ4QXJyYXkgb3IgQnVmZmVyJylcbiAgICAgIGFzc2VydChzYWx0Lmxlbmd0aCA9PT0gU0FMVEJZVEVTLCAnc2FsdCBtdXN0IGJlIGV4YWN0bHkgJyArIFNBTFRCWVRFUyArICcsIHdhcyBnaXZlbiAnICsgc2FsdC5sZW5ndGgpXG4gICAgfVxuICAgIGlmIChwZXJzb25hbCAhPSBudWxsKSB7XG4gICAgICBhc3NlcnQocGVyc29uYWwgaW5zdGFuY2VvZiBVaW50OEFycmF5LCAncGVyc29uYWwgbXVzdCBiZSBVaW50OEFycmF5IG9yIEJ1ZmZlcicpXG4gICAgICBhc3NlcnQocGVyc29uYWwubGVuZ3RoID09PSBQRVJTT05BTEJZVEVTLCAncGVyc29uYWwgbXVzdCBiZSBleGFjdGx5ICcgKyBQRVJTT05BTEJZVEVTICsgJywgd2FzIGdpdmVuICcgKyBwZXJzb25hbC5sZW5ndGgpXG4gICAgfVxuICB9XG5cbiAgaWYgKCFmcmVlTGlzdC5sZW5ndGgpIHtcbiAgICBmcmVlTGlzdC5wdXNoKGhlYWQpXG4gICAgaGVhZCArPSAyMTZcbiAgfVxuXG4gIHRoaXMuZGlnZXN0TGVuZ3RoID0gZGlnZXN0TGVuZ3RoXG4gIHRoaXMuZmluYWxpemVkID0gZmFsc2VcbiAgdGhpcy5wb2ludGVyID0gZnJlZUxpc3QucG9wKClcbiAgdGhpcy5fbWVtb3J5ID0gbmV3IFVpbnQ4QXJyYXkod2FzbS5tZW1vcnkuYnVmZmVyKVxuXG4gIHRoaXMuX21lbW9yeS5maWxsKDAsIDAsIDY0KVxuICB0aGlzLl9tZW1vcnlbMF0gPSB0aGlzLmRpZ2VzdExlbmd0aFxuICB0aGlzLl9tZW1vcnlbMV0gPSBrZXkgPyBrZXkubGVuZ3RoIDogMFxuICB0aGlzLl9tZW1vcnlbMl0gPSAxIC8vIGZhbm91dFxuICB0aGlzLl9tZW1vcnlbM10gPSAxIC8vIGRlcHRoXG5cbiAgaWYgKHNhbHQpIHRoaXMuX21lbW9yeS5zZXQoc2FsdCwgMzIpXG4gIGlmIChwZXJzb25hbCkgdGhpcy5fbWVtb3J5LnNldChwZXJzb25hbCwgNDgpXG5cbiAgaWYgKHRoaXMucG9pbnRlciArIDIxNiA+IHRoaXMuX21lbW9yeS5sZW5ndGgpIHRoaXMuX3JlYWxsb2ModGhpcy5wb2ludGVyICsgMjE2KSAvLyB3ZSBuZWVkIDIxNiBieXRlcyBmb3IgdGhlIHN0YXRlXG4gIHdhc20uYmxha2UyYl9pbml0KHRoaXMucG9pbnRlciwgdGhpcy5kaWdlc3RMZW5ndGgpXG5cbiAgaWYgKGtleSkge1xuICAgIHRoaXMudXBkYXRlKGtleSlcbiAgICB0aGlzLl9tZW1vcnkuZmlsbCgwLCBoZWFkLCBoZWFkICsga2V5Lmxlbmd0aCkgLy8gd2hpdGVvdXQga2V5XG4gICAgdGhpcy5fbWVtb3J5W3RoaXMucG9pbnRlciArIDIwMF0gPSAxMjhcbiAgfVxufVxuXG5CbGFrZTJiLnByb3RvdHlwZS5fcmVhbGxvYyA9IGZ1bmN0aW9uIChzaXplKSB7XG4gIHdhc20ubWVtb3J5Lmdyb3coTWF0aC5tYXgoMCwgTWF0aC5jZWlsKE1hdGguYWJzKHNpemUgLSB0aGlzLl9tZW1vcnkubGVuZ3RoKSAvIDY1NTM2KSkpXG4gIHRoaXMuX21lbW9yeSA9IG5ldyBVaW50OEFycmF5KHdhc20ubWVtb3J5LmJ1ZmZlcilcbn1cblxuQmxha2UyYi5wcm90b3R5cGUudXBkYXRlID0gZnVuY3Rpb24gKGlucHV0KSB7XG4gIGFzc2VydCh0aGlzLmZpbmFsaXplZCA9PT0gZmFsc2UsICdIYXNoIGluc3RhbmNlIGZpbmFsaXplZCcpXG4gIGFzc2VydChpbnB1dCBpbnN0YW5jZW9mIFVpbnQ4QXJyYXksICdpbnB1dCBtdXN0IGJlIFVpbnQ4QXJyYXkgb3IgQnVmZmVyJylcblxuICBpZiAoaGVhZCArIGlucHV0Lmxlbmd0aCA+IHRoaXMuX21lbW9yeS5sZW5ndGgpIHRoaXMuX3JlYWxsb2MoaGVhZCArIGlucHV0Lmxlbmd0aClcbiAgdGhpcy5fbWVtb3J5LnNldChpbnB1dCwgaGVhZClcbiAgd2FzbS5ibGFrZTJiX3VwZGF0ZSh0aGlzLnBvaW50ZXIsIGhlYWQsIGhlYWQgKyBpbnB1dC5sZW5ndGgpXG4gIHJldHVybiB0aGlzXG59XG5cbkJsYWtlMmIucHJvdG90eXBlLmRpZ2VzdCA9IGZ1bmN0aW9uIChlbmMpIHtcbiAgYXNzZXJ0KHRoaXMuZmluYWxpemVkID09PSBmYWxzZSwgJ0hhc2ggaW5zdGFuY2UgZmluYWxpemVkJylcbiAgdGhpcy5maW5hbGl6ZWQgPSB0cnVlXG5cbiAgZnJlZUxpc3QucHVzaCh0aGlzLnBvaW50ZXIpXG4gIHdhc20uYmxha2UyYl9maW5hbCh0aGlzLnBvaW50ZXIpXG5cbiAgaWYgKCFlbmMgfHwgZW5jID09PSAnYmluYXJ5Jykge1xuICAgIHJldHVybiB0aGlzLl9tZW1vcnkuc2xpY2UodGhpcy5wb2ludGVyICsgMTI4LCB0aGlzLnBvaW50ZXIgKyAxMjggKyB0aGlzLmRpZ2VzdExlbmd0aClcbiAgfVxuXG4gIGlmICh0eXBlb2YgZW5jID09PSAnc3RyaW5nJykge1xuICAgIHJldHVybiBiNGEudG9TdHJpbmcodGhpcy5fbWVtb3J5LCBlbmMsIHRoaXMucG9pbnRlciArIDEyOCwgdGhpcy5wb2ludGVyICsgMTI4ICsgdGhpcy5kaWdlc3RMZW5ndGgpXG4gIH1cblxuICBhc3NlcnQoZW5jIGluc3RhbmNlb2YgVWludDhBcnJheSAmJiBlbmMubGVuZ3RoID49IHRoaXMuZGlnZXN0TGVuZ3RoLCAnaW5wdXQgbXVzdCBiZSBVaW50OEFycmF5IG9yIEJ1ZmZlcicpXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5kaWdlc3RMZW5ndGg7IGkrKykge1xuICAgIGVuY1tpXSA9IHRoaXMuX21lbW9yeVt0aGlzLnBvaW50ZXIgKyAxMjggKyBpXVxuICB9XG5cbiAgcmV0dXJuIGVuY1xufVxuXG4vLyBsaWJzb2RpdW0gY29tcGF0XG5CbGFrZTJiLnByb3RvdHlwZS5maW5hbCA9IEJsYWtlMmIucHJvdG90eXBlLmRpZ2VzdFxuXG5CbGFrZTJiLldBU00gPSB3YXNtXG5CbGFrZTJiLlNVUFBPUlRFRCA9IHR5cGVvZiBXZWJBc3NlbWJseSAhPT0gJ3VuZGVmaW5lZCdcblxuQmxha2UyYi5yZWFkeSA9IGZ1bmN0aW9uIChjYikge1xuICBpZiAoIWNiKSBjYiA9IG5vb3BcbiAgaWYgKCF3YXNtUHJvbWlzZSkgcmV0dXJuIGNiKG5ldyBFcnJvcignV2ViQXNzZW1ibHkgbm90IHN1cHBvcnRlZCcpKVxuICByZXR1cm4gd2FzbVByb21pc2UudGhlbigoKSA9PiBjYigpLCBjYilcbn1cblxuQmxha2UyYi5wcm90b3R5cGUucmVhZHkgPSBCbGFrZTJiLnJlYWR5XG5cbkJsYWtlMmIucHJvdG90eXBlLmdldFBhcnRpYWxIYXNoID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdGhpcy5fbWVtb3J5LnNsaWNlKHRoaXMucG9pbnRlciwgdGhpcy5wb2ludGVyICsgMjE2KTtcbn1cblxuQmxha2UyYi5wcm90b3R5cGUuc2V0UGFydGlhbEhhc2ggPSBmdW5jdGlvbiAocGgpIHtcbiAgdGhpcy5fbWVtb3J5LnNldChwaCwgdGhpcy5wb2ludGVyKTtcbn1cblxuZnVuY3Rpb24gbm9vcCAoKSB7fVxuIiwiLypcbiAgICBDb3B5cmlnaHQgMjAxOCAwS0lNUyBhc3NvY2lhdGlvbi5cblxuICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHNuYXJrSlMuXG5cbiAgICBzbmFya0pTIGlzIGEgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdFxuICAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3JcbiAgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuXG4gICAgc25hcmtKUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVFxuICAgIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWVxuICAgIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpY1xuICAgIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cblxuICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gICAgYWxvbmcgd2l0aCBzbmFya0pTLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuKi9cblxuLyogZ2xvYmFsIHdpbmRvdyAqL1xuaW1wb3J0IEJsYWtlMmIgZnJvbSBcImJsYWtlMmItd2FzbVwiO1xuaW1wb3J0IHJlYWRsaW5lIGZyb20gXCJyZWFkbGluZVwiO1xuaW1wb3J0IHsgQ2hhQ2hhIH0gZnJvbSBcImZmamF2YXNjcmlwdFwiO1xuaW1wb3J0IGNyeXB0byBmcm9tIFwiY3J5cHRvXCI7XG5cbmNvbnN0IF9yZXZUYWJsZSA9IFtdO1xuZm9yIChsZXQgaT0wOyBpPDI1NjsgaSsrKSB7XG4gICAgX3JldlRhYmxlW2ldID0gX3JldlNsb3coaSwgOCk7XG59XG5cbmZ1bmN0aW9uIF9yZXZTbG93KGlkeCwgYml0cykge1xuICAgIGxldCByZXMgPTA7XG4gICAgbGV0IGEgPSBpZHg7XG4gICAgZm9yIChsZXQgaT0wOyBpPGJpdHM7IGkrKykge1xuICAgICAgICByZXMgPDw9IDE7XG4gICAgICAgIHJlcyA9IHJlcyB8IChhICYxKTtcbiAgICAgICAgYSA+Pj0xO1xuICAgIH1cbiAgICByZXR1cm4gcmVzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYml0UmV2ZXJzZShpZHgsIGJpdHMpIHtcbiAgICByZXR1cm4gKFxuICAgICAgICBfcmV2VGFibGVbaWR4ID4+PiAyNF0gfFxuICAgICAgICAoX3JldlRhYmxlWyhpZHggPj4+IDE2KSAmIDB4RkZdIDw8IDgpIHxcbiAgICAgICAgKF9yZXZUYWJsZVsoaWR4ID4+PiA4KSAmIDB4RkZdIDw8IDE2KSB8XG4gICAgICAgIChfcmV2VGFibGVbaWR4ICYgMHhGRl0gPDwgMjQpXG4gICAgKSA+Pj4gKDMyLWJpdHMpO1xufVxuXG5cbmV4cG9ydCBmdW5jdGlvbiBsb2cyKCBWIClcbntcbiAgICByZXR1cm4oICggKCBWICYgMHhGRkZGMDAwMCApICE9PSAwID8gKCBWICY9IDB4RkZGRjAwMDAsIDE2ICkgOiAwICkgfCAoICggViAmIDB4RkYwMEZGMDAgKSAhPT0gMCA/ICggViAmPSAweEZGMDBGRjAwLCA4ICkgOiAwICkgfCAoICggViAmIDB4RjBGMEYwRjAgKSAhPT0gMCA/ICggViAmPSAweEYwRjBGMEYwLCA0ICkgOiAwICkgfCAoICggViAmIDB4Q0NDQ0NDQ0MgKSAhPT0gMCA/ICggViAmPSAweENDQ0NDQ0NDLCAyICkgOiAwICkgfCAoICggViAmIDB4QUFBQUFBQUEgKSAhPT0gMCApICk7XG59XG5cblxuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdEhhc2goYiwgdGl0bGUpIHtcbiAgICBjb25zdCBhID0gbmV3IERhdGFWaWV3KGIuYnVmZmVyLCBiLmJ5dGVPZmZzZXQsIGIuYnl0ZUxlbmd0aCk7XG4gICAgbGV0IFMgPSBcIlwiO1xuICAgIGZvciAobGV0IGk9MDsgaTw0OyBpKyspIHtcbiAgICAgICAgaWYgKGk+MCkgUyArPSBcIlxcblwiO1xuICAgICAgICBTICs9IFwiXFx0XFx0XCI7XG4gICAgICAgIGZvciAobGV0IGo9MDsgajw0OyBqKyspIHtcbiAgICAgICAgICAgIGlmIChqPjApIFMgKz0gXCIgXCI7XG4gICAgICAgICAgICBTICs9IGEuZ2V0VWludDMyKGkqMTYraio0KS50b1N0cmluZygxNikucGFkU3RhcnQoOCwgXCIwXCIpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGlmICh0aXRsZSkgUyA9IHRpdGxlICsgXCJcXG5cIiArIFM7XG4gICAgcmV0dXJuIFM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBoYXNoSXNFcXVhbChoMSwgaDIpIHtcbiAgICBpZiAoaDEuYnl0ZUxlbmd0aCAhPSBoMi5ieXRlTGVuZ3RoKSByZXR1cm4gZmFsc2U7XG4gICAgdmFyIGR2MSA9IG5ldyBJbnQ4QXJyYXkoaDEpO1xuICAgIHZhciBkdjIgPSBuZXcgSW50OEFycmF5KGgyKTtcbiAgICBmb3IgKHZhciBpID0gMCA7IGkgIT0gaDEuYnl0ZUxlbmd0aCA7IGkrKylcbiAgICB7XG4gICAgICAgIGlmIChkdjFbaV0gIT0gZHYyW2ldKSByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY2xvbmVIYXNoZXIoaCkge1xuICAgIGNvbnN0IHBoID0gaC5nZXRQYXJ0aWFsSGFzaCgpO1xuICAgIGNvbnN0IHJlcyA9IEJsYWtlMmIoNjQpO1xuICAgIHJlcy5zZXRQYXJ0aWFsSGFzaChwaCk7XG4gICAgcmV0dXJuIHJlcztcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHNhbWVSYXRpbyhjdXJ2ZSwgZzFzLCBnMXN4LCBnMnMsIGcyc3gpIHtcbiAgICBpZiAoY3VydmUuRzEuaXNaZXJvKGcxcykpIHJldHVybiBmYWxzZTtcbiAgICBpZiAoY3VydmUuRzEuaXNaZXJvKGcxc3gpKSByZXR1cm4gZmFsc2U7XG4gICAgaWYgKGN1cnZlLkcyLmlzWmVybyhnMnMpKSByZXR1cm4gZmFsc2U7XG4gICAgaWYgKGN1cnZlLkcyLmlzWmVybyhnMnN4KSkgcmV0dXJuIGZhbHNlO1xuICAgIC8vIHJldHVybiBjdXJ2ZS5GMTIuZXEoY3VydmUucGFpcmluZyhnMXMsIGcyc3gpLCBjdXJ2ZS5wYWlyaW5nKGcxc3gsIGcycykpO1xuICAgIGNvbnN0IHJlcyA9IGF3YWl0IGN1cnZlLnBhaXJpbmdFcShnMXMsIGcyc3gsIGN1cnZlLkcxLm5lZyhnMXN4KSwgZzJzKTtcbiAgICByZXR1cm4gcmVzO1xufVxuXG5cbmV4cG9ydCBmdW5jdGlvbiBhc2tFbnRyb3B5KCkge1xuICAgIGlmIChwcm9jZXNzLmJyb3dzZXIpIHtcbiAgICAgICAgcmV0dXJuIHdpbmRvdy5wcm9tcHQoXCJFbnRlciBhIHJhbmRvbSB0ZXh0LiAoRW50cm9weSk6IFwiLCBcIlwiKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBybCA9IHJlYWRsaW5lLmNyZWF0ZUludGVyZmFjZSh7XG4gICAgICAgICAgICBpbnB1dDogcHJvY2Vzcy5zdGRpbixcbiAgICAgICAgICAgIG91dHB1dDogcHJvY2Vzcy5zdGRvdXRcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XG4gICAgICAgICAgICBybC5xdWVzdGlvbihcIkVudGVyIGEgcmFuZG9tIHRleHQuIChFbnRyb3B5KTogXCIsIChpbnB1dCkgPT4gcmVzb2x2ZShpbnB1dCkgKTtcbiAgICAgICAgfSk7XG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0UmFuZG9tQnl0ZXMobikge1xuICAgIGxldCBhcnJheSA9IG5ldyBVaW50OEFycmF5KG4pO1xuICAgIGlmIChwcm9jZXNzLmJyb3dzZXIpIHsgLy8gU3VwcG9ydGVkXG4gICAgICAgIGdsb2JhbFRoaXMuY3J5cHRvLmdldFJhbmRvbVZhbHVlcyhhcnJheSk7XG4gICAgfSBlbHNlIHsgLy8gTm9kZUpTXG4gICAgICAgIGNyeXB0by5yYW5kb21GaWxsU3luYyhhcnJheSk7XG4gICAgfVxuICAgIHJldHVybiBhcnJheTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHNoYTI1NmRpZ2VzdChkYXRhKSB7XG4gICAgaWYgKHByb2Nlc3MuYnJvd3NlcikgeyAvLyBTdXBwb3J0ZWRcbiAgICAgICAgY29uc3QgYnVmZmVyID0gYXdhaXQgZ2xvYmFsVGhpcy5jcnlwdG8uc3VidGxlLmRpZ2VzdChcIlNIQS0yNTZcIiwgZGF0YS5idWZmZXIpO1xuICAgICAgICByZXR1cm4gbmV3IFVpbnQ4QXJyYXkoYnVmZmVyKTtcbiAgICB9IGVsc2UgeyAvLyBOb2RlSlNcbiAgICAgICAgcmV0dXJuIGNyeXB0by5jcmVhdGVIYXNoKFwic2hhMjU2XCIpLnVwZGF0ZShkYXRhKS5kaWdlc3QoKTtcbiAgICB9XG59XG5cbi8qKlxuICogQHBhcmFtIHtVaW50OEFycmF5fSBkYXRhXG4gKiBAcGFyYW0ge251bWJlcn0gb2Zmc2V0XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZWFkVUludDMyQkUoZGF0YSwgb2Zmc2V0KSB7XG4gICAgcmV0dXJuIG5ldyBEYXRhVmlldyhkYXRhLmJ1ZmZlcikuZ2V0VWludDMyKG9mZnNldCwgZmFsc2UpO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0UmFuZG9tUm5nKGVudHJvcHkpIHtcbiAgICAvLyBHZW5lcmF0ZSBhIHJhbmRvbSBSbmdcbiAgICB3aGlsZSAoIWVudHJvcHkpIHtcbiAgICAgICAgZW50cm9weSA9IGF3YWl0IGFza0VudHJvcHkoKTtcbiAgICB9XG4gICAgY29uc3QgaGFzaGVyID0gQmxha2UyYig2NCk7XG4gICAgaGFzaGVyLnVwZGF0ZShnZXRSYW5kb21CeXRlcyg2NCkpO1xuICAgIGNvbnN0IGVuYyA9IG5ldyBUZXh0RW5jb2RlcigpOyAvLyBhbHdheXMgdXRmLThcbiAgICBoYXNoZXIudXBkYXRlKGVuYy5lbmNvZGUoZW50cm9weSkpO1xuICAgIGNvbnN0IGhhc2ggPSBoYXNoZXIuZGlnZXN0KCk7XG5cbiAgICBjb25zdCBzZWVkID0gW107XG4gICAgZm9yIChsZXQgaT0wO2k8ODtpKyspIHtcbiAgICAgICAgc2VlZFtpXSA9IHJlYWRVSW50MzJCRShoYXNoLCBpKjQpO1xuICAgIH1cbiAgICBjb25zdCBybmcgPSBuZXcgQ2hhQ2hhKHNlZWQpO1xuICAgIHJldHVybiBybmc7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBybmdGcm9tQmVhY29uUGFyYW1zKGJlYWNvbkhhc2gsIG51bUl0ZXJhdGlvbnNFeHApIHtcbiAgICBsZXQgbkl0ZXJhdGlvbnNJbm5lcjtcbiAgICBsZXQgbkl0ZXJhdGlvbnNPdXRlcjtcbiAgICBpZiAobnVtSXRlcmF0aW9uc0V4cDwzMikge1xuICAgICAgICBuSXRlcmF0aW9uc0lubmVyID0gKDEgPDwgbnVtSXRlcmF0aW9uc0V4cCkgPj4+IDA7XG4gICAgICAgIG5JdGVyYXRpb25zT3V0ZXIgPSAxO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIG5JdGVyYXRpb25zSW5uZXIgPSAweDEwMDAwMDAwMDtcbiAgICAgICAgbkl0ZXJhdGlvbnNPdXRlciA9ICgxIDw8IChudW1JdGVyYXRpb25zRXhwLTMyKSkgPj4+IDA7XG4gICAgfVxuXG4gICAgbGV0IGN1ckhhc2ggPSBiZWFjb25IYXNoO1xuICAgIGZvciAobGV0IGk9MDsgaTxuSXRlcmF0aW9uc091dGVyOyBpKyspIHtcbiAgICAgICAgZm9yIChsZXQgaj0wOyBqPG5JdGVyYXRpb25zSW5uZXI7IGorKykge1xuICAgICAgICAgICAgY3VySGFzaCA9IGF3YWl0IHNoYTI1NmRpZ2VzdChjdXJIYXNoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IGN1ckhhc2hWID0gbmV3IERhdGFWaWV3KGN1ckhhc2guYnVmZmVyLCBjdXJIYXNoLmJ5dGVPZmZzZXQsIGN1ckhhc2guYnl0ZUxlbmd0aCk7XG4gICAgY29uc3Qgc2VlZCA9IFtdO1xuICAgIGZvciAobGV0IGk9MDsgaTw4OyBpKyspIHtcbiAgICAgICAgc2VlZFtpXSA9IGN1ckhhc2hWLmdldFVpbnQzMihpKjQsIGZhbHNlKTtcbiAgICB9XG5cbiAgICBjb25zdCBybmcgPSBuZXcgQ2hhQ2hhKHNlZWQpO1xuXG4gICAgcmV0dXJuIHJuZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGhleDJCeXRlQXJyYXkocykge1xuICAgIGlmIChzIGluc3RhbmNlb2YgVWludDhBcnJheSkgcmV0dXJuIHM7XG4gICAgaWYgKHMuc2xpY2UoMCwyKSA9PSBcIjB4XCIpIHM9IHMuc2xpY2UoMik7XG4gICAgcmV0dXJuIG5ldyBVaW50OEFycmF5KHMubWF0Y2goL1tcXGRhLWZdezJ9L2dpKS5tYXAoZnVuY3Rpb24gKGgpIHtcbiAgICAgICAgcmV0dXJuIHBhcnNlSW50KGgsIDE2KTtcbiAgICB9KSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBieXRlQXJyYXkyaGV4KGJ5dGVBcnJheSkge1xuICAgIHJldHVybiBBcnJheS5wcm90b3R5cGUubWFwLmNhbGwoYnl0ZUFycmF5LCBmdW5jdGlvbihieXRlKSB7XG4gICAgICAgIHJldHVybiAoXCIwXCIgKyAoYnl0ZSAmIDB4RkYpLnRvU3RyaW5nKDE2KSkuc2xpY2UoLTIpO1xuICAgIH0pLmpvaW4oXCJcIik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdHJpbmdpZnlCaWdJbnRzV2l0aEZpZWxkKEZyLCBvKSB7XG4gICAgaWYgKG8gaW5zdGFuY2VvZiBVaW50OEFycmF5KSAge1xuICAgICAgICByZXR1cm4gRnIudG9TdHJpbmcobyk7XG4gICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KG8pKSB7XG4gICAgICAgIHJldHVybiBvLm1hcChzdHJpbmdpZnlCaWdJbnRzV2l0aEZpZWxkLmJpbmQobnVsbCwgRnIpKTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBvID09IFwib2JqZWN0XCIpIHtcbiAgICAgICAgY29uc3QgcmVzID0ge307XG4gICAgICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhvKTtcbiAgICAgICAga2V5cy5mb3JFYWNoKCAoaykgPT4ge1xuICAgICAgICAgICAgcmVzW2tdID0gc3RyaW5naWZ5QmlnSW50c1dpdGhGaWVsZChGciwgb1trXSk7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH0gZWxzZSBpZiAoKHR5cGVvZihvKSA9PSBcImJpZ2ludFwiKSB8fCBvLmVxICE9PSB1bmRlZmluZWQpICB7XG4gICAgICAgIHJldHVybiBvLnRvU3RyaW5nKDEwKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gbztcbiAgICB9XG59XG4iLCJleHBvcnQgY29uc3QgSEVBREVSX1pLRVlfU0VDVElPTiA9IDE7XG5cbmV4cG9ydCBjb25zdCBHUk9USDE2X1BST1RPQ09MX0lEID0gMTtcbmV4cG9ydCBjb25zdCBQTE9OS19QUk9UT0NPTF9JRCA9IDI7XG5leHBvcnQgY29uc3QgRkZMT05LX1BST1RPQ09MX0lEID0gMTA7XG4iLCIvKlxuICAgIENvcHlyaWdodCAyMDIyIGlkZW4zIGFzc29jaWF0aW9uLlxuXG4gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2Ygc25hcmtqcy5cblxuICAgIHNuYXJranMgaXMgYSBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3JcbiAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlXG4gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pXG4gICAgYW55IGxhdGVyIHZlcnNpb24uXG5cbiAgICBzbmFya2pzIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZXG4gICAgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yXG4gICAgbW9yZSBkZXRhaWxzLlxuXG4gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcgd2l0aFxuICAgIHNuYXJranMuIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXG4qL1xuXG4vLyBGRmxvbmsgY29uc3RhbnRzXG5leHBvcnQgY29uc3QgRkZfVF9QT0xfREVHX01JTiA9IDM7XG5cbi8vIEZGbG9uayBBXG5leHBvcnQgY29uc3QgQSA9IDEyO1xuXG4vLyBaS0VZIGNvbnN0YW50c1xuZXhwb3J0IGNvbnN0IFpLRVlfRkZfTlNFQ1RJT05TID0gMTc7XG5cbmV4cG9ydCBjb25zdCBaS0VZX0ZGX0hFQURFUl9TRUNUSU9OID0gMjtcbmV4cG9ydCBjb25zdCBaS0VZX0ZGX0FERElUSU9OU19TRUNUSU9OID0gMztcbmV4cG9ydCBjb25zdCBaS0VZX0ZGX0FfTUFQX1NFQ1RJT04gPSA0O1xuZXhwb3J0IGNvbnN0IFpLRVlfRkZfQl9NQVBfU0VDVElPTiA9IDU7XG5leHBvcnQgY29uc3QgWktFWV9GRl9DX01BUF9TRUNUSU9OID0gNjtcbmV4cG9ydCBjb25zdCBaS0VZX0ZGX1FMX1NFQ1RJT04gPSA3O1xuZXhwb3J0IGNvbnN0IFpLRVlfRkZfUVJfU0VDVElPTiA9IDg7XG5leHBvcnQgY29uc3QgWktFWV9GRl9RTV9TRUNUSU9OID0gOTtcbmV4cG9ydCBjb25zdCBaS0VZX0ZGX1FPX1NFQ1RJT04gPSAxMDtcbmV4cG9ydCBjb25zdCBaS0VZX0ZGX1FDX1NFQ1RJT04gPSAxMTtcbmV4cG9ydCBjb25zdCBaS0VZX0ZGX1NJR01BMV9TRUNUSU9OID0gMTI7XG5leHBvcnQgY29uc3QgWktFWV9GRl9TSUdNQTJfU0VDVElPTiA9IDEzO1xuZXhwb3J0IGNvbnN0IFpLRVlfRkZfU0lHTUEzX1NFQ1RJT04gPSAxNDtcbmV4cG9ydCBjb25zdCBaS0VZX0ZGX0xBR1JBTkdFX1NFQ1RJT04gPSAxNTtcbmV4cG9ydCBjb25zdCBaS0VZX0ZGX1BUQVVfU0VDVElPTiA9IDE2O1xuZXhwb3J0IGNvbnN0IFpLRVlfRkZfQzBfU0VDVElPTiA9IDE3O1xuIiwiLypcbiAgICBDb3B5cmlnaHQgMjAxOCAwS0lNUyBhc3NvY2lhdGlvbi5cblxuICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHNuYXJrSlMuXG5cbiAgICBzbmFya0pTIGlzIGEgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdFxuICAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3JcbiAgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuXG4gICAgc25hcmtKUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVFxuICAgIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWVxuICAgIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpY1xuICAgIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cblxuICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gICAgYWxvbmcgd2l0aCBzbmFya0pTLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuKi9cblxuLy8gRm9ybWF0XG4vLyA9PT09PT1cbi8vIEhlYWRlcigxKVxuLy8gICAgICBQcm92ZXIgVHlwZSAxIEdyb3RoXG4vLyBIZWFkZXJHcm90aCgyKVxuLy8gICAgICBuOHFcbi8vICAgICAgcVxuLy8gICAgICBuOHJcbi8vICAgICAgclxuLy8gICAgICBOVmFyc1xuLy8gICAgICBOUHViXG4vLyAgICAgIERvbWFpblNpemUgIChtdWx0aXBsZSBvZiAyXG4vLyAgICAgIGFscGhhMVxuLy8gICAgICBiZXRhMVxuLy8gICAgICBkZWx0YTFcbi8vICAgICAgYmV0YTJcbi8vICAgICAgZ2FtbWEyXG4vLyAgICAgIGRlbHRhMlxuLy8gSUMoMylcbi8vIENvZWZzKDQpXG4vLyBQb2ludHNBKDUpXG4vLyBQb2ludHNCMSg2KVxuLy8gUG9pbnRzQjIoNylcbi8vIFBvaW50c0MoOClcbi8vIFBvaW50c0goOSlcbi8vIENvbnRyaWJ1dGlvbnMoMTApXG5cbmltcG9ydCB7IFNjYWxhciwgRjFGaWVsZCB9IGZyb20gXCJmZmphdmFzY3JpcHRcIjtcbmltcG9ydCAqIGFzIGJpbkZpbGVVdGlscyBmcm9tIFwiQGlkZW4zL2JpbmZpbGV1dGlsc1wiO1xuXG5pbXBvcnQgeyBnZXRDdXJ2ZUZyb21RIGFzIGdldEN1cnZlIH0gZnJvbSBcIi4vY3VydmVzLmpzXCI7XG5pbXBvcnQgeyBsb2cyIH0gZnJvbSBcIi4vbWlzYy5qc1wiO1xuaW1wb3J0IHtGRkxPTktfUFJPVE9DT0xfSUQsIEdST1RIMTZfUFJPVE9DT0xfSUQsIFBMT05LX1BST1RPQ09MX0lEfSBmcm9tIFwiLi96a2V5X2NvbnN0YW50cy5qc1wiO1xuaW1wb3J0IHtaS0VZX0ZGX0hFQURFUl9TRUNUSU9OfSBmcm9tIFwiLi9mZmxvbmtfY29uc3RhbnRzLmpzXCI7XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB3cml0ZUhlYWRlcihmZCwgemtleSkge1xuXG4gICAgLy8gV3JpdGUgdGhlIGhlYWRlclxuICAgIC8vLy8vLy8vLy8vXG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLnN0YXJ0V3JpdGVTZWN0aW9uKGZkLCAxKTtcbiAgICBhd2FpdCBmZC53cml0ZVVMRTMyKDEpOyAvLyBHcm90aFxuICAgIGF3YWl0IGJpbkZpbGVVdGlscy5lbmRXcml0ZVNlY3Rpb24oZmQpO1xuXG4gICAgLy8gV3JpdGUgdGhlIEdyb3RoIGhlYWRlciBzZWN0aW9uXG4gICAgLy8vLy8vLy8vLy9cblxuICAgIGNvbnN0IGN1cnZlID0gYXdhaXQgZ2V0Q3VydmUoemtleS5xKTtcblxuICAgIGF3YWl0IGJpbkZpbGVVdGlscy5zdGFydFdyaXRlU2VjdGlvbihmZCwgMik7XG4gICAgY29uc3QgcHJpbWVRID0gY3VydmUucTtcbiAgICBjb25zdCBuOHEgPSAoTWF0aC5mbG9vciggKFNjYWxhci5iaXRMZW5ndGgocHJpbWVRKSAtIDEpIC8gNjQpICsxKSo4O1xuXG4gICAgY29uc3QgcHJpbWVSID0gY3VydmUucjtcbiAgICBjb25zdCBuOHIgPSAoTWF0aC5mbG9vciggKFNjYWxhci5iaXRMZW5ndGgocHJpbWVSKSAtIDEpIC8gNjQpICsxKSo4O1xuXG4gICAgYXdhaXQgZmQud3JpdGVVTEUzMihuOHEpO1xuICAgIGF3YWl0IGJpbkZpbGVVdGlscy53cml0ZUJpZ0ludChmZCwgcHJpbWVRLCBuOHEpO1xuICAgIGF3YWl0IGZkLndyaXRlVUxFMzIobjhyKTtcbiAgICBhd2FpdCBiaW5GaWxlVXRpbHMud3JpdGVCaWdJbnQoZmQsIHByaW1lUiwgbjhyKTtcbiAgICBhd2FpdCBmZC53cml0ZVVMRTMyKHprZXkublZhcnMpOyAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUb3RhbCBudW1iZXIgb2YgYmFyc1xuICAgIGF3YWl0IGZkLndyaXRlVUxFMzIoemtleS5uUHVibGljKTsgICAgICAgICAgICAgICAgICAgICAgIC8vIFRvdGFsIG51bWJlciBvZiBwdWJsaWMgdmFycyAobm90IGluY2x1ZGluZyBPTkUpXG4gICAgYXdhaXQgZmQud3JpdGVVTEUzMih6a2V5LmRvbWFpblNpemUpOyAgICAgICAgICAgICAgICAgIC8vIGRvbWFpblNpemVcbiAgICBhd2FpdCB3cml0ZUcxKGZkLCBjdXJ2ZSwgemtleS52a19hbHBoYV8xKTtcbiAgICBhd2FpdCB3cml0ZUcxKGZkLCBjdXJ2ZSwgemtleS52a19iZXRhXzEpO1xuICAgIGF3YWl0IHdyaXRlRzIoZmQsIGN1cnZlLCB6a2V5LnZrX2JldGFfMik7XG4gICAgYXdhaXQgd3JpdGVHMihmZCwgY3VydmUsIHprZXkudmtfZ2FtbWFfMik7XG4gICAgYXdhaXQgd3JpdGVHMShmZCwgY3VydmUsIHprZXkudmtfZGVsdGFfMSk7XG4gICAgYXdhaXQgd3JpdGVHMihmZCwgY3VydmUsIHprZXkudmtfZGVsdGFfMik7XG5cbiAgICBhd2FpdCBiaW5GaWxlVXRpbHMuZW5kV3JpdGVTZWN0aW9uKGZkKTtcblxuXG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB3cml0ZVpLZXkoZmlsZU5hbWUsIHprZXkpIHtcblxuICAgIGxldCBjdXJ2ZSA9IGdldEN1cnZlKHprZXkucSk7XG5cbiAgICBjb25zdCBmZCA9IGF3YWl0IGJpbkZpbGVVdGlscy5jcmVhdGVCaW5GaWxlKGZpbGVOYW1lLFwiemtleVwiLCAxLCA5KTtcblxuICAgIGF3YWl0IHdyaXRlSGVhZGVyKGZkLCB6a2V5KTtcbiAgICBjb25zdCBuOHIgPSAoTWF0aC5mbG9vciggKFNjYWxhci5iaXRMZW5ndGgoemtleS5yKSAtIDEpIC8gNjQpICsxKSo4O1xuICAgIGNvbnN0IFJyID0gU2NhbGFyLm1vZChTY2FsYXIuc2hsKDEsIG44cio4KSwgemtleS5yKTtcbiAgICBjb25zdCBSMnIgPSBTY2FsYXIubW9kKFNjYWxhci5tdWwoUnIsUnIpLCB6a2V5LnIpO1xuXG4gICAgLy8gV3JpdGUgUG9scyAoQSBhbmQgQiAoQyBjYW4gYmUgb21pdHRlZCkpXG4gICAgLy8vLy8vLy8vLy9cblxuICAgIHprZXkuY2NvZWZzID0gemtleS5jY29lZnMuZmlsdGVyKGMgPT4gYy5tYXRyaXg8Mik7XG4gICAgemtleS5jY29lZnMuc29ydCggKGEsYikgPT4gYS5jb25zdHJhaW50IC0gYi5jb25zdHJhaW50ICk7XG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLnN0YXJ0V3JpdGVTZWN0aW9uKGZkLCA0KTtcbiAgICBhd2FpdCBmZC53cml0ZVVMRTMyKHprZXkuY2NvZWZzLmxlbmd0aCk7XG4gICAgZm9yIChsZXQgaT0wOyBpPHprZXkuY2NvZWZzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGNvbnN0IGNvZWYgPSB6a2V5LmNjb2Vmc1tpXTtcbiAgICAgICAgYXdhaXQgZmQud3JpdGVVTEUzMihjb2VmLm1hdHJpeCk7XG4gICAgICAgIGF3YWl0IGZkLndyaXRlVUxFMzIoY29lZi5jb25zdHJhaW50KTtcbiAgICAgICAgYXdhaXQgZmQud3JpdGVVTEUzMihjb2VmLnNpZ25hbCk7XG4gICAgICAgIGF3YWl0IHdyaXRlRnIyKGNvZWYudmFsdWUpO1xuICAgIH1cbiAgICBhd2FpdCBiaW5GaWxlVXRpbHMuZW5kV3JpdGVTZWN0aW9uKGZkKTtcblxuXG4gICAgLy8gV3JpdGUgSUMgU2VjdGlvblxuICAgIC8vLy8vLy8vLy8vXG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLnN0YXJ0V3JpdGVTZWN0aW9uKGZkLCAzKTtcbiAgICBmb3IgKGxldCBpPTA7IGk8PSB6a2V5Lm5QdWJsaWM7IGkrKykge1xuICAgICAgICBhd2FpdCB3cml0ZUcxKGZkLCBjdXJ2ZSwgemtleS5JQ1tpXSApO1xuICAgIH1cbiAgICBhd2FpdCBiaW5GaWxlVXRpbHMuZW5kV3JpdGVTZWN0aW9uKGZkKTtcblxuXG4gICAgLy8gV3JpdGUgQVxuICAgIC8vLy8vLy8vLy8vXG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLnN0YXJ0V3JpdGVTZWN0aW9uKGZkLCA1KTtcbiAgICBmb3IgKGxldCBpPTA7IGk8emtleS5uVmFyczsgaSsrKSB7XG4gICAgICAgIGF3YWl0IHdyaXRlRzEoZmQsIGN1cnZlLCB6a2V5LkFbaV0pO1xuICAgIH1cbiAgICBhd2FpdCBiaW5GaWxlVXRpbHMuZW5kV3JpdGVTZWN0aW9uKGZkKTtcblxuICAgIC8vIFdyaXRlIEIxXG4gICAgLy8vLy8vLy8vLy9cbiAgICBhd2FpdCBiaW5GaWxlVXRpbHMuc3RhcnRXcml0ZVNlY3Rpb24oZmQsIDYpO1xuICAgIGZvciAobGV0IGk9MDsgaTx6a2V5Lm5WYXJzOyBpKyspIHtcbiAgICAgICAgYXdhaXQgd3JpdGVHMShmZCwgY3VydmUsIHprZXkuQjFbaV0pO1xuICAgIH1cbiAgICBhd2FpdCBiaW5GaWxlVXRpbHMuZW5kV3JpdGVTZWN0aW9uKGZkKTtcblxuICAgIC8vIFdyaXRlIEIyXG4gICAgLy8vLy8vLy8vLy9cbiAgICBhd2FpdCBiaW5GaWxlVXRpbHMuc3RhcnRXcml0ZVNlY3Rpb24oZmQsIDcpO1xuICAgIGZvciAobGV0IGk9MDsgaTx6a2V5Lm5WYXJzOyBpKyspIHtcbiAgICAgICAgYXdhaXQgd3JpdGVHMihmZCwgY3VydmUsIHprZXkuQjJbaV0pO1xuICAgIH1cbiAgICBhd2FpdCBiaW5GaWxlVXRpbHMuZW5kV3JpdGVTZWN0aW9uKGZkKTtcblxuICAgIC8vIFdyaXRlIENcbiAgICAvLy8vLy8vLy8vL1xuICAgIGF3YWl0IGJpbkZpbGVVdGlscy5zdGFydFdyaXRlU2VjdGlvbihmZCwgOCk7XG4gICAgZm9yIChsZXQgaT16a2V5Lm5QdWJsaWMrMTsgaTx6a2V5Lm5WYXJzOyBpKyspIHtcbiAgICAgICAgYXdhaXQgd3JpdGVHMShmZCwgY3VydmUsIHprZXkuQ1tpXSk7XG4gICAgfVxuICAgIGF3YWl0IGJpbkZpbGVVdGlscy5lbmRXcml0ZVNlY3Rpb24oZmQpO1xuXG5cbiAgICAvLyBXcml0ZSBIIHBvaW50c1xuICAgIC8vLy8vLy8vLy8vXG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLnN0YXJ0V3JpdGVTZWN0aW9uKGZkLCA5KTtcbiAgICBmb3IgKGxldCBpPTA7IGk8emtleS5kb21haW5TaXplOyBpKyspIHtcbiAgICAgICAgYXdhaXQgd3JpdGVHMShmZCwgY3VydmUsIHprZXkuaEV4cHNbaV0pO1xuICAgIH1cbiAgICBhd2FpdCBiaW5GaWxlVXRpbHMuZW5kV3JpdGVTZWN0aW9uKGZkKTtcblxuICAgIGF3YWl0IGZkLmNsb3NlKCk7XG5cbiAgICBhc3luYyBmdW5jdGlvbiB3cml0ZUZyMihuKSB7XG4gICAgICAgIC8vIENvbnZlcnQgdG8gbW9udGdvbWVyeVxuICAgICAgICBuID0gU2NhbGFyLm1vZCggU2NhbGFyLm11bChuLCBSMnIpLCB6a2V5LnIpO1xuXG4gICAgICAgIGF3YWl0IGJpbkZpbGVVdGlscy53cml0ZUJpZ0ludChmZCwgbiwgbjhyKTtcbiAgICB9XG5cbn1cblxuYXN5bmMgZnVuY3Rpb24gd3JpdGVHMShmZCwgY3VydmUsIHApIHtcbiAgICBjb25zdCBidWZmID0gbmV3IFVpbnQ4QXJyYXkoY3VydmUuRzEuRi5uOCoyKTtcbiAgICBjdXJ2ZS5HMS50b1JwckxFTShidWZmLCAwLCBwKTtcbiAgICBhd2FpdCBmZC53cml0ZShidWZmKTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gd3JpdGVHMihmZCwgY3VydmUsIHApIHtcbiAgICBjb25zdCBidWZmID0gbmV3IFVpbnQ4QXJyYXkoY3VydmUuRzIuRi5uOCoyKTtcbiAgICBjdXJ2ZS5HMi50b1JwckxFTShidWZmLCAwLCBwKTtcbiAgICBhd2FpdCBmZC53cml0ZShidWZmKTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gcmVhZEcxKGZkLCBjdXJ2ZSwgdG9PYmplY3QpIHtcbiAgICBjb25zdCBidWZmID0gYXdhaXQgZmQucmVhZChjdXJ2ZS5HMS5GLm44KjIpO1xuICAgIGNvbnN0IHJlcyA9IGN1cnZlLkcxLmZyb21ScHJMRU0oYnVmZiwgMCk7XG4gICAgcmV0dXJuIHRvT2JqZWN0ID8gY3VydmUuRzEudG9PYmplY3QocmVzKSA6IHJlcztcbn1cblxuYXN5bmMgZnVuY3Rpb24gcmVhZEcyKGZkLCBjdXJ2ZSwgdG9PYmplY3QpIHtcbiAgICBjb25zdCBidWZmID0gYXdhaXQgZmQucmVhZChjdXJ2ZS5HMi5GLm44KjIpO1xuICAgIGNvbnN0IHJlcyA9IGN1cnZlLkcyLmZyb21ScHJMRU0oYnVmZiwgMCk7XG4gICAgcmV0dXJuIHRvT2JqZWN0ID8gY3VydmUuRzIudG9PYmplY3QocmVzKSA6IHJlcztcbn1cblxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVhZEhlYWRlcihmZCwgc2VjdGlvbnMsIHRvT2JqZWN0KSB7XG4gICAgLy8gUmVhZCBIZWFkZXJcbiAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiAgICBhd2FpdCBiaW5GaWxlVXRpbHMuc3RhcnRSZWFkVW5pcXVlU2VjdGlvbihmZCwgc2VjdGlvbnMsIDEpO1xuICAgIGNvbnN0IHByb3RvY29sSWQgPSBhd2FpdCBmZC5yZWFkVUxFMzIoKTtcbiAgICBhd2FpdCBiaW5GaWxlVXRpbHMuZW5kUmVhZFNlY3Rpb24oZmQpO1xuXG4gICAgaWYgKHByb3RvY29sSWQgPT09IEdST1RIMTZfUFJPVE9DT0xfSUQpIHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHJlYWRIZWFkZXJHcm90aDE2KGZkLCBzZWN0aW9ucywgdG9PYmplY3QpO1xuICAgIH0gZWxzZSBpZiAocHJvdG9jb2xJZCA9PT0gUExPTktfUFJPVE9DT0xfSUQpIHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHJlYWRIZWFkZXJQbG9uayhmZCwgc2VjdGlvbnMsIHRvT2JqZWN0KTtcbiAgICB9IGVsc2UgaWYgKHByb3RvY29sSWQgPT09IEZGTE9OS19QUk9UT0NPTF9JRCkge1xuICAgICAgICByZXR1cm4gYXdhaXQgcmVhZEhlYWRlckZGbG9uayhmZCwgc2VjdGlvbnMsIHRvT2JqZWN0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJQcm90b2NvbCBub3Qgc3VwcG9ydGVkOiBcIik7XG4gICAgfVxufVxuXG5cblxuXG5hc3luYyBmdW5jdGlvbiByZWFkSGVhZGVyR3JvdGgxNihmZCwgc2VjdGlvbnMsIHRvT2JqZWN0KSB7XG4gICAgY29uc3QgemtleSA9IHt9O1xuXG4gICAgemtleS5wcm90b2NvbCA9IFwiZ3JvdGgxNlwiO1xuXG4gICAgLy8gUmVhZCBHcm90aCBIZWFkZXJcbiAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiAgICBhd2FpdCBiaW5GaWxlVXRpbHMuc3RhcnRSZWFkVW5pcXVlU2VjdGlvbihmZCwgc2VjdGlvbnMsIDIpO1xuICAgIGNvbnN0IG44cSA9IGF3YWl0IGZkLnJlYWRVTEUzMigpO1xuICAgIHprZXkubjhxID0gbjhxO1xuICAgIHprZXkucSA9IGF3YWl0IGJpbkZpbGVVdGlscy5yZWFkQmlnSW50KGZkLCBuOHEpO1xuXG4gICAgY29uc3QgbjhyID0gYXdhaXQgZmQucmVhZFVMRTMyKCk7XG4gICAgemtleS5uOHIgPSBuOHI7XG4gICAgemtleS5yID0gYXdhaXQgYmluRmlsZVV0aWxzLnJlYWRCaWdJbnQoZmQsIG44cik7XG4gICAgemtleS5jdXJ2ZSA9IGF3YWl0IGdldEN1cnZlKHprZXkucSk7XG4gICAgemtleS5uVmFycyA9IGF3YWl0IGZkLnJlYWRVTEUzMigpO1xuICAgIHprZXkublB1YmxpYyA9IGF3YWl0IGZkLnJlYWRVTEUzMigpO1xuICAgIHprZXkuZG9tYWluU2l6ZSA9IGF3YWl0IGZkLnJlYWRVTEUzMigpO1xuICAgIHprZXkucG93ZXIgPSBsb2cyKHprZXkuZG9tYWluU2l6ZSk7XG4gICAgemtleS52a19hbHBoYV8xID0gYXdhaXQgcmVhZEcxKGZkLCB6a2V5LmN1cnZlLCB0b09iamVjdCk7XG4gICAgemtleS52a19iZXRhXzEgPSBhd2FpdCByZWFkRzEoZmQsIHprZXkuY3VydmUsIHRvT2JqZWN0KTtcbiAgICB6a2V5LnZrX2JldGFfMiA9IGF3YWl0IHJlYWRHMihmZCwgemtleS5jdXJ2ZSwgdG9PYmplY3QpO1xuICAgIHprZXkudmtfZ2FtbWFfMiA9IGF3YWl0IHJlYWRHMihmZCwgemtleS5jdXJ2ZSwgdG9PYmplY3QpO1xuICAgIHprZXkudmtfZGVsdGFfMSA9IGF3YWl0IHJlYWRHMShmZCwgemtleS5jdXJ2ZSwgdG9PYmplY3QpO1xuICAgIHprZXkudmtfZGVsdGFfMiA9IGF3YWl0IHJlYWRHMihmZCwgemtleS5jdXJ2ZSwgdG9PYmplY3QpO1xuICAgIGF3YWl0IGJpbkZpbGVVdGlscy5lbmRSZWFkU2VjdGlvbihmZCk7XG5cbiAgICByZXR1cm4gemtleTtcblxufVxuXG5hc3luYyBmdW5jdGlvbiByZWFkSGVhZGVyUGxvbmsoZmQsIHNlY3Rpb25zLCB0b09iamVjdCkge1xuICAgIGNvbnN0IHprZXkgPSB7fTtcblxuICAgIHprZXkucHJvdG9jb2wgPSBcInBsb25rXCI7XG5cbiAgICAvLyBSZWFkIFBsb25rIEhlYWRlclxuICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuICAgIGF3YWl0IGJpbkZpbGVVdGlscy5zdGFydFJlYWRVbmlxdWVTZWN0aW9uKGZkLCBzZWN0aW9ucywgMik7XG4gICAgY29uc3QgbjhxID0gYXdhaXQgZmQucmVhZFVMRTMyKCk7XG4gICAgemtleS5uOHEgPSBuOHE7XG4gICAgemtleS5xID0gYXdhaXQgYmluRmlsZVV0aWxzLnJlYWRCaWdJbnQoZmQsIG44cSk7XG5cbiAgICBjb25zdCBuOHIgPSBhd2FpdCBmZC5yZWFkVUxFMzIoKTtcbiAgICB6a2V5Lm44ciA9IG44cjtcbiAgICB6a2V5LnIgPSBhd2FpdCBiaW5GaWxlVXRpbHMucmVhZEJpZ0ludChmZCwgbjhyKTtcbiAgICB6a2V5LmN1cnZlID0gYXdhaXQgZ2V0Q3VydmUoemtleS5xKTtcbiAgICB6a2V5Lm5WYXJzID0gYXdhaXQgZmQucmVhZFVMRTMyKCk7XG4gICAgemtleS5uUHVibGljID0gYXdhaXQgZmQucmVhZFVMRTMyKCk7XG4gICAgemtleS5kb21haW5TaXplID0gYXdhaXQgZmQucmVhZFVMRTMyKCk7XG4gICAgemtleS5wb3dlciA9IGxvZzIoemtleS5kb21haW5TaXplKTtcbiAgICB6a2V5Lm5BZGRpdGlvbnMgPSBhd2FpdCBmZC5yZWFkVUxFMzIoKTtcbiAgICB6a2V5Lm5Db25zdHJhaW50cyA9IGF3YWl0IGZkLnJlYWRVTEUzMigpO1xuICAgIHprZXkuazEgPSBhd2FpdCBmZC5yZWFkKG44cik7XG4gICAgemtleS5rMiA9IGF3YWl0IGZkLnJlYWQobjhyKTtcblxuICAgIHprZXkuUW0gPSBhd2FpdCByZWFkRzEoZmQsIHprZXkuY3VydmUsIHRvT2JqZWN0KTtcbiAgICB6a2V5LlFsID0gYXdhaXQgcmVhZEcxKGZkLCB6a2V5LmN1cnZlLCB0b09iamVjdCk7XG4gICAgemtleS5RciA9IGF3YWl0IHJlYWRHMShmZCwgemtleS5jdXJ2ZSwgdG9PYmplY3QpO1xuICAgIHprZXkuUW8gPSBhd2FpdCByZWFkRzEoZmQsIHprZXkuY3VydmUsIHRvT2JqZWN0KTtcbiAgICB6a2V5LlFjID0gYXdhaXQgcmVhZEcxKGZkLCB6a2V5LmN1cnZlLCB0b09iamVjdCk7XG4gICAgemtleS5TMSA9IGF3YWl0IHJlYWRHMShmZCwgemtleS5jdXJ2ZSwgdG9PYmplY3QpO1xuICAgIHprZXkuUzIgPSBhd2FpdCByZWFkRzEoZmQsIHprZXkuY3VydmUsIHRvT2JqZWN0KTtcbiAgICB6a2V5LlMzID0gYXdhaXQgcmVhZEcxKGZkLCB6a2V5LmN1cnZlLCB0b09iamVjdCk7XG4gICAgemtleS5YXzIgPSBhd2FpdCByZWFkRzIoZmQsIHprZXkuY3VydmUsIHRvT2JqZWN0KTtcblxuICAgIGF3YWl0IGJpbkZpbGVVdGlscy5lbmRSZWFkU2VjdGlvbihmZCk7XG5cbiAgICByZXR1cm4gemtleTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gcmVhZEhlYWRlckZGbG9uayhmZCwgc2VjdGlvbnMsIHRvT2JqZWN0KSB7XG4gICAgY29uc3QgemtleSA9IHt9O1xuXG4gICAgemtleS5wcm90b2NvbCA9IFwiZmZsb25rXCI7XG4gICAgemtleS5wcm90b2NvbElkID0gRkZMT05LX1BST1RPQ09MX0lEO1xuXG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLnN0YXJ0UmVhZFVuaXF1ZVNlY3Rpb24oZmQsIHNlY3Rpb25zLCBaS0VZX0ZGX0hFQURFUl9TRUNUSU9OKTtcbiAgICBjb25zdCBuOHEgPSBhd2FpdCBmZC5yZWFkVUxFMzIoKTtcbiAgICB6a2V5Lm44cSA9IG44cTtcbiAgICB6a2V5LnEgPSBhd2FpdCBiaW5GaWxlVXRpbHMucmVhZEJpZ0ludChmZCwgbjhxKTtcbiAgICB6a2V5LmN1cnZlID0gYXdhaXQgZ2V0Q3VydmUoemtleS5xKTtcblxuICAgIGNvbnN0IG44ciA9IGF3YWl0IGZkLnJlYWRVTEUzMigpO1xuICAgIHprZXkubjhyID0gbjhyO1xuICAgIHprZXkuciA9IGF3YWl0IGJpbkZpbGVVdGlscy5yZWFkQmlnSW50KGZkLCBuOHIpO1xuXG4gICAgemtleS5uVmFycyA9IGF3YWl0IGZkLnJlYWRVTEUzMigpO1xuICAgIHprZXkublB1YmxpYyA9IGF3YWl0IGZkLnJlYWRVTEUzMigpO1xuICAgIHprZXkuZG9tYWluU2l6ZSA9IGF3YWl0IGZkLnJlYWRVTEUzMigpO1xuICAgIHprZXkucG93ZXIgPSBsb2cyKHprZXkuZG9tYWluU2l6ZSk7XG4gICAgemtleS5uQWRkaXRpb25zID0gYXdhaXQgZmQucmVhZFVMRTMyKCk7XG4gICAgemtleS5uQ29uc3RyYWludHMgPSBhd2FpdCBmZC5yZWFkVUxFMzIoKTtcblxuICAgIHprZXkuazEgPSBhd2FpdCBmZC5yZWFkKG44cik7XG4gICAgemtleS5rMiA9IGF3YWl0IGZkLnJlYWQobjhyKTtcblxuICAgIHprZXkudzMgPSBhd2FpdCBmZC5yZWFkKG44cik7XG4gICAgemtleS53NCA9IGF3YWl0IGZkLnJlYWQobjhyKTtcbiAgICB6a2V5Lnc4ID0gYXdhaXQgZmQucmVhZChuOHIpO1xuICAgIHprZXkud3IgPSBhd2FpdCBmZC5yZWFkKG44cik7XG5cbiAgICB6a2V5LlhfMiA9IGF3YWl0IHJlYWRHMihmZCwgemtleS5jdXJ2ZSwgdG9PYmplY3QpO1xuXG4gICAgemtleS5DMCA9IGF3YWl0IHJlYWRHMShmZCwgemtleS5jdXJ2ZSwgdG9PYmplY3QpO1xuXG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLmVuZFJlYWRTZWN0aW9uKGZkKTtcblxuICAgIHJldHVybiB6a2V5O1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVhZFpLZXkoZmlsZU5hbWUsIHRvT2JqZWN0KSB7XG4gICAgY29uc3Qge2ZkLCBzZWN0aW9uc30gPSBhd2FpdCBiaW5GaWxlVXRpbHMucmVhZEJpbkZpbGUoZmlsZU5hbWUsIFwiemtleVwiLCAxKTtcblxuICAgIGNvbnN0IHprZXkgPSBhd2FpdCByZWFkSGVhZGVyKGZkLCBzZWN0aW9ucywgdG9PYmplY3QpO1xuXG4gICAgY29uc3QgRnIgPSBuZXcgRjFGaWVsZCh6a2V5LnIpO1xuICAgIGNvbnN0IFJyID0gU2NhbGFyLm1vZChTY2FsYXIuc2hsKDEsIHprZXkubjhyKjgpLCB6a2V5LnIpO1xuICAgIGNvbnN0IFJyaSA9IEZyLmludihScik7XG4gICAgY29uc3QgUnJpMiA9IEZyLm11bChScmksIFJyaSk7XG5cbiAgICBsZXQgY3VydmUgPSBhd2FpdCBnZXRDdXJ2ZSh6a2V5LnEpO1xuXG4gICAgLy8gUmVhZCBJQyBTZWN0aW9uXG4gICAgLy8vLy8vLy8vLy9cbiAgICBhd2FpdCBiaW5GaWxlVXRpbHMuc3RhcnRSZWFkVW5pcXVlU2VjdGlvbihmZCwgc2VjdGlvbnMsIDMpO1xuICAgIHprZXkuSUMgPSBbXTtcbiAgICBmb3IgKGxldCBpPTA7IGk8PSB6a2V5Lm5QdWJsaWM7IGkrKykge1xuICAgICAgICBjb25zdCBQID0gYXdhaXQgcmVhZEcxKGZkLCBjdXJ2ZSwgdG9PYmplY3QpO1xuICAgICAgICB6a2V5LklDLnB1c2goUCk7XG4gICAgfVxuICAgIGF3YWl0IGJpbkZpbGVVdGlscy5lbmRSZWFkU2VjdGlvbihmZCk7XG5cblxuICAgIC8vIFJlYWQgQ29lZnNcbiAgICAvLy8vLy8vLy8vL1xuICAgIGF3YWl0IGJpbkZpbGVVdGlscy5zdGFydFJlYWRVbmlxdWVTZWN0aW9uKGZkLCBzZWN0aW9ucywgNCk7XG4gICAgY29uc3QgbkNDb2VmcyA9IGF3YWl0IGZkLnJlYWRVTEUzMigpO1xuICAgIHprZXkuY2NvZWZzID0gW107XG4gICAgZm9yIChsZXQgaT0wOyBpPG5DQ29lZnM7IGkrKykge1xuICAgICAgICBjb25zdCBtID0gYXdhaXQgZmQucmVhZFVMRTMyKCk7XG4gICAgICAgIGNvbnN0IGMgPSBhd2FpdCBmZC5yZWFkVUxFMzIoKTtcbiAgICAgICAgY29uc3QgcyA9IGF3YWl0IGZkLnJlYWRVTEUzMigpO1xuICAgICAgICBjb25zdCB2ID0gYXdhaXQgcmVhZEZyMih0b09iamVjdCk7XG4gICAgICAgIHprZXkuY2NvZWZzLnB1c2goe1xuICAgICAgICAgICAgbWF0cml4OiBtLFxuICAgICAgICAgICAgY29uc3RyYWludDogYyxcbiAgICAgICAgICAgIHNpZ25hbDogcyxcbiAgICAgICAgICAgIHZhbHVlOiB2XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBhd2FpdCBiaW5GaWxlVXRpbHMuZW5kUmVhZFNlY3Rpb24oZmQpO1xuXG4gICAgLy8gUmVhZCBBIHBvaW50c1xuICAgIC8vLy8vLy8vLy8vXG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLnN0YXJ0UmVhZFVuaXF1ZVNlY3Rpb24oZmQsIHNlY3Rpb25zLCA1KTtcbiAgICB6a2V5LkEgPSBbXTtcbiAgICBmb3IgKGxldCBpPTA7IGk8emtleS5uVmFyczsgaSsrKSB7XG4gICAgICAgIGNvbnN0IEEgPSBhd2FpdCByZWFkRzEoZmQsIGN1cnZlLCB0b09iamVjdCk7XG4gICAgICAgIHprZXkuQVtpXSA9IEE7XG4gICAgfVxuICAgIGF3YWl0IGJpbkZpbGVVdGlscy5lbmRSZWFkU2VjdGlvbihmZCk7XG5cblxuICAgIC8vIFJlYWQgQjFcbiAgICAvLy8vLy8vLy8vL1xuICAgIGF3YWl0IGJpbkZpbGVVdGlscy5zdGFydFJlYWRVbmlxdWVTZWN0aW9uKGZkLCBzZWN0aW9ucywgNik7XG4gICAgemtleS5CMSA9IFtdO1xuICAgIGZvciAobGV0IGk9MDsgaTx6a2V5Lm5WYXJzOyBpKyspIHtcbiAgICAgICAgY29uc3QgQjEgPSBhd2FpdCByZWFkRzEoZmQsIGN1cnZlLCB0b09iamVjdCk7XG5cbiAgICAgICAgemtleS5CMVtpXSA9IEIxO1xuICAgIH1cbiAgICBhd2FpdCBiaW5GaWxlVXRpbHMuZW5kUmVhZFNlY3Rpb24oZmQpO1xuXG5cbiAgICAvLyBSZWFkIEIyIHBvaW50c1xuICAgIC8vLy8vLy8vLy8vXG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLnN0YXJ0UmVhZFVuaXF1ZVNlY3Rpb24oZmQsIHNlY3Rpb25zLCA3KTtcbiAgICB6a2V5LkIyID0gW107XG4gICAgZm9yIChsZXQgaT0wOyBpPHprZXkublZhcnM7IGkrKykge1xuICAgICAgICBjb25zdCBCMiA9IGF3YWl0IHJlYWRHMihmZCwgY3VydmUsIHRvT2JqZWN0KTtcbiAgICAgICAgemtleS5CMltpXSA9IEIyO1xuICAgIH1cbiAgICBhd2FpdCBiaW5GaWxlVXRpbHMuZW5kUmVhZFNlY3Rpb24oZmQpO1xuXG5cbiAgICAvLyBSZWFkIEMgcG9pbnRzXG4gICAgLy8vLy8vLy8vLy9cbiAgICBhd2FpdCBiaW5GaWxlVXRpbHMuc3RhcnRSZWFkVW5pcXVlU2VjdGlvbihmZCwgc2VjdGlvbnMsIDgpO1xuICAgIHprZXkuQyA9IFtdO1xuICAgIGZvciAobGV0IGk9emtleS5uUHVibGljKzE7IGk8emtleS5uVmFyczsgaSsrKSB7XG4gICAgICAgIGNvbnN0IEMgPSBhd2FpdCByZWFkRzEoZmQsIGN1cnZlLCB0b09iamVjdCk7XG5cbiAgICAgICAgemtleS5DW2ldID0gQztcbiAgICB9XG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLmVuZFJlYWRTZWN0aW9uKGZkKTtcblxuXG4gICAgLy8gUmVhZCBIIHBvaW50c1xuICAgIC8vLy8vLy8vLy8vXG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLnN0YXJ0UmVhZFVuaXF1ZVNlY3Rpb24oZmQsIHNlY3Rpb25zLCA5KTtcbiAgICB6a2V5LmhFeHBzID0gW107XG4gICAgZm9yIChsZXQgaT0wOyBpPHprZXkuZG9tYWluU2l6ZTsgaSsrKSB7XG4gICAgICAgIGNvbnN0IEggPSBhd2FpdCByZWFkRzEoZmQsIGN1cnZlLCB0b09iamVjdCk7XG4gICAgICAgIHprZXkuaEV4cHMucHVzaChIKTtcbiAgICB9XG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLmVuZFJlYWRTZWN0aW9uKGZkKTtcblxuICAgIGF3YWl0IGZkLmNsb3NlKCk7XG5cbiAgICByZXR1cm4gemtleTtcblxuICAgIGFzeW5jIGZ1bmN0aW9uIHJlYWRGcjIoLyogdG9PYmplY3QgKi8pIHtcbiAgICAgICAgY29uc3QgbiA9IGF3YWl0IGJpbkZpbGVVdGlscy5yZWFkQmlnSW50KGZkLCB6a2V5Lm44cik7XG4gICAgICAgIHJldHVybiBGci5tdWwobiwgUnJpMik7XG4gICAgfVxuXG59XG5cblxuYXN5bmMgZnVuY3Rpb24gcmVhZENvbnRyaWJ1dGlvbihmZCwgY3VydmUsIHRvT2JqZWN0KSB7XG4gICAgY29uc3QgYyA9IHtkZWx0YTp7fX07XG4gICAgYy5kZWx0YUFmdGVyID0gYXdhaXQgcmVhZEcxKGZkLCBjdXJ2ZSwgdG9PYmplY3QpO1xuICAgIGMuZGVsdGEuZzFfcyA9IGF3YWl0IHJlYWRHMShmZCwgY3VydmUsIHRvT2JqZWN0KTtcbiAgICBjLmRlbHRhLmcxX3N4ID0gYXdhaXQgcmVhZEcxKGZkLCBjdXJ2ZSwgdG9PYmplY3QpO1xuICAgIGMuZGVsdGEuZzJfc3B4ID0gYXdhaXQgcmVhZEcyKGZkLCBjdXJ2ZSwgdG9PYmplY3QpO1xuICAgIGMudHJhbnNjcmlwdCA9IGF3YWl0IGZkLnJlYWQoNjQpO1xuICAgIGMudHlwZSA9IGF3YWl0IGZkLnJlYWRVTEUzMigpO1xuXG4gICAgY29uc3QgcGFyYW1MZW5ndGggPSBhd2FpdCBmZC5yZWFkVUxFMzIoKTtcbiAgICBjb25zdCBjdXJQb3MgPSBmZC5wb3M7XG4gICAgbGV0IGxhc3RUeXBlID0wO1xuICAgIHdoaWxlIChmZC5wb3MtY3VyUG9zIDwgcGFyYW1MZW5ndGgpIHtcbiAgICAgICAgY29uc3QgYnVmZlR5cGUgPSBhd2FpdCBmZC5yZWFkKDEpO1xuICAgICAgICBpZiAoYnVmZlR5cGVbMF08PSBsYXN0VHlwZSkgdGhyb3cgbmV3IEVycm9yKFwiUGFyYW1ldGVycyBpbiB0aGUgY29udHJpYnV0aW9uIG11c3QgYmUgc29ydGVkXCIpO1xuICAgICAgICBsYXN0VHlwZSA9IGJ1ZmZUeXBlWzBdO1xuICAgICAgICBpZiAoYnVmZlR5cGVbMF09PTEpIHsgICAgIC8vIE5hbWVcbiAgICAgICAgICAgIGNvbnN0IGJ1ZmZMZW4gPSBhd2FpdCBmZC5yZWFkKDEpO1xuICAgICAgICAgICAgY29uc3QgYnVmZlN0ciA9IGF3YWl0IGZkLnJlYWQoYnVmZkxlblswXSk7XG4gICAgICAgICAgICBjLm5hbWUgPSBuZXcgVGV4dERlY29kZXIoKS5kZWNvZGUoYnVmZlN0cik7XG4gICAgICAgIH0gZWxzZSBpZiAoYnVmZlR5cGVbMF09PTIpIHtcbiAgICAgICAgICAgIGNvbnN0IGJ1ZmZFeHAgPSBhd2FpdCBmZC5yZWFkKDEpO1xuICAgICAgICAgICAgYy5udW1JdGVyYXRpb25zRXhwID0gYnVmZkV4cFswXTtcbiAgICAgICAgfSBlbHNlIGlmIChidWZmVHlwZVswXT09Mykge1xuICAgICAgICAgICAgY29uc3QgYnVmZkxlbiA9IGF3YWl0IGZkLnJlYWQoMSk7XG4gICAgICAgICAgICBjLmJlYWNvbkhhc2ggPSBhd2FpdCBmZC5yZWFkKGJ1ZmZMZW5bMF0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiUGFyYW1ldGVyIG5vdCByZWNvZ25pemVkXCIpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGlmIChmZC5wb3MgIT0gY3VyUG9zICsgcGFyYW1MZW5ndGgpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiUGFyYW1ldGVycyBkbyBub3QgbWF0Y2hcIik7XG4gICAgfVxuXG4gICAgcmV0dXJuIGM7XG59XG5cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlYWRNUENQYXJhbXMoZmQsIGN1cnZlLCBzZWN0aW9ucykge1xuICAgIGF3YWl0IGJpbkZpbGVVdGlscy5zdGFydFJlYWRVbmlxdWVTZWN0aW9uKGZkLCBzZWN0aW9ucywgMTApO1xuICAgIGNvbnN0IHJlcyA9IHsgY29udHJpYnV0aW9uczogW119O1xuICAgIHJlcy5jc0hhc2ggPSBhd2FpdCBmZC5yZWFkKDY0KTtcbiAgICBjb25zdCBuID0gYXdhaXQgZmQucmVhZFVMRTMyKCk7XG4gICAgZm9yIChsZXQgaT0wOyBpPG47IGkrKykge1xuICAgICAgICBjb25zdCBjID0gYXdhaXQgcmVhZENvbnRyaWJ1dGlvbihmZCwgY3VydmUpO1xuICAgICAgICByZXMuY29udHJpYnV0aW9ucy5wdXNoKGMpO1xuICAgIH1cbiAgICBhd2FpdCBiaW5GaWxlVXRpbHMuZW5kUmVhZFNlY3Rpb24oZmQpO1xuXG4gICAgcmV0dXJuIHJlcztcbn1cblxuYXN5bmMgZnVuY3Rpb24gd3JpdGVDb250cmlidXRpb24oZmQsIGN1cnZlLCBjKSB7XG4gICAgYXdhaXQgd3JpdGVHMShmZCwgY3VydmUsIGMuZGVsdGFBZnRlcik7XG4gICAgYXdhaXQgd3JpdGVHMShmZCwgY3VydmUsIGMuZGVsdGEuZzFfcyk7XG4gICAgYXdhaXQgd3JpdGVHMShmZCwgY3VydmUsIGMuZGVsdGEuZzFfc3gpO1xuICAgIGF3YWl0IHdyaXRlRzIoZmQsIGN1cnZlLCBjLmRlbHRhLmcyX3NweCk7XG4gICAgYXdhaXQgZmQud3JpdGUoYy50cmFuc2NyaXB0KTtcbiAgICBhd2FpdCBmZC53cml0ZVVMRTMyKGMudHlwZSB8fCAwKTtcblxuICAgIGNvbnN0IHBhcmFtcyA9IFtdO1xuICAgIGlmIChjLm5hbWUpIHtcbiAgICAgICAgcGFyYW1zLnB1c2goMSk7ICAgICAgLy8gUGFyYW0gTmFtZVxuICAgICAgICBjb25zdCBuYW1lRGF0YSA9IG5ldyBUZXh0RW5jb2RlcihcInV0Zi04XCIpLmVuY29kZShjLm5hbWUuc3Vic3RyaW5nKDAsNjQpKTtcbiAgICAgICAgcGFyYW1zLnB1c2gobmFtZURhdGEuYnl0ZUxlbmd0aCk7XG4gICAgICAgIGZvciAobGV0IGk9MDsgaTxuYW1lRGF0YS5ieXRlTGVuZ3RoOyBpKyspIHBhcmFtcy5wdXNoKG5hbWVEYXRhW2ldKTtcbiAgICB9XG4gICAgaWYgKGMudHlwZSA9PSAxKSB7XG4gICAgICAgIHBhcmFtcy5wdXNoKDIpOyAgICAgIC8vIFBhcmFtIG51bUl0ZXJhdGlvbnNFeHBcbiAgICAgICAgcGFyYW1zLnB1c2goYy5udW1JdGVyYXRpb25zRXhwKTtcblxuICAgICAgICBwYXJhbXMucHVzaCgzKTsgICAgICAvLyBCZWFjb24gSGFzaFxuICAgICAgICBwYXJhbXMucHVzaChjLmJlYWNvbkhhc2guYnl0ZUxlbmd0aCk7XG4gICAgICAgIGZvciAobGV0IGk9MDsgaTxjLmJlYWNvbkhhc2guYnl0ZUxlbmd0aDsgaSsrKSBwYXJhbXMucHVzaChjLmJlYWNvbkhhc2hbaV0pO1xuICAgIH1cbiAgICBpZiAocGFyYW1zLmxlbmd0aD4wKSB7XG4gICAgICAgIGNvbnN0IHBhcmFtc0J1ZmYgPSBuZXcgVWludDhBcnJheShwYXJhbXMpO1xuICAgICAgICBhd2FpdCBmZC53cml0ZVVMRTMyKHBhcmFtc0J1ZmYuYnl0ZUxlbmd0aCk7XG4gICAgICAgIGF3YWl0IGZkLndyaXRlKHBhcmFtc0J1ZmYpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIGF3YWl0IGZkLndyaXRlVUxFMzIoMCk7XG4gICAgfVxuXG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB3cml0ZU1QQ1BhcmFtcyhmZCwgY3VydmUsIG1wY1BhcmFtcykge1xuICAgIGF3YWl0IGJpbkZpbGVVdGlscy5zdGFydFdyaXRlU2VjdGlvbihmZCwgMTApO1xuICAgIGF3YWl0IGZkLndyaXRlKG1wY1BhcmFtcy5jc0hhc2gpO1xuICAgIGF3YWl0IGZkLndyaXRlVUxFMzIobXBjUGFyYW1zLmNvbnRyaWJ1dGlvbnMubGVuZ3RoKTtcbiAgICBmb3IgKGxldCBpPTA7IGk8bXBjUGFyYW1zLmNvbnRyaWJ1dGlvbnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgYXdhaXQgd3JpdGVDb250cmlidXRpb24oZmQsIGN1cnZlLG1wY1BhcmFtcy5jb250cmlidXRpb25zW2ldKTtcbiAgICB9XG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLmVuZFdyaXRlU2VjdGlvbihmZCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBoYXNoRzEoaGFzaGVyLCBjdXJ2ZSwgcCkge1xuICAgIGNvbnN0IGJ1ZmYgPSBuZXcgVWludDhBcnJheShjdXJ2ZS5HMS5GLm44KjIpO1xuICAgIGN1cnZlLkcxLnRvUnByVW5jb21wcmVzc2VkKGJ1ZmYsIDAsIHApO1xuICAgIGhhc2hlci51cGRhdGUoYnVmZik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBoYXNoRzIoaGFzaGVyLGN1cnZlLCBwKSB7XG4gICAgY29uc3QgYnVmZiA9IG5ldyBVaW50OEFycmF5KGN1cnZlLkcyLkYubjgqMik7XG4gICAgY3VydmUuRzIudG9ScHJVbmNvbXByZXNzZWQoYnVmZiwgMCwgcCk7XG4gICAgaGFzaGVyLnVwZGF0ZShidWZmKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGhhc2hQdWJLZXkoaGFzaGVyLCBjdXJ2ZSwgYykge1xuICAgIGhhc2hHMShoYXNoZXIsIGN1cnZlLCBjLmRlbHRhQWZ0ZXIpO1xuICAgIGhhc2hHMShoYXNoZXIsIGN1cnZlLCBjLmRlbHRhLmcxX3MpO1xuICAgIGhhc2hHMShoYXNoZXIsIGN1cnZlLCBjLmRlbHRhLmcxX3N4KTtcbiAgICBoYXNoRzIoaGFzaGVyLCBjdXJ2ZSwgYy5kZWx0YS5nMl9zcHgpO1xuICAgIGhhc2hlci51cGRhdGUoYy50cmFuc2NyaXB0KTtcbn1cblxuIiwiLypcbiAgICBDb3B5cmlnaHQgMjAxOCAwS0lNUyBhc3NvY2lhdGlvbi5cblxuICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHNuYXJrSlMuXG5cbiAgICBzbmFya0pTIGlzIGEgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdFxuICAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3JcbiAgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuXG4gICAgc25hcmtKUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVFxuICAgIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWVxuICAgIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpY1xuICAgIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cblxuICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gICAgYWxvbmcgd2l0aCBzbmFya0pTLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuKi9cblxuaW1wb3J0IHsgU2NhbGFyIH0gZnJvbSBcImZmamF2YXNjcmlwdFwiO1xuXG5pbXBvcnQgKiBhcyBiaW5GaWxlVXRpbHMgZnJvbSBcIkBpZGVuMy9iaW5maWxldXRpbHNcIjtcblxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gd3JpdGUoZmQsIHdpdG5lc3MsIHByaW1lKSB7XG5cbiAgICBhd2FpdCBiaW5GaWxlVXRpbHMuc3RhcnRXcml0ZVNlY3Rpb24oZmQsIDEpO1xuICAgIGNvbnN0IG44ID0gKE1hdGguZmxvb3IoIChTY2FsYXIuYml0TGVuZ3RoKHByaW1lKSAtIDEpIC8gNjQpICsxKSo4O1xuICAgIGF3YWl0IGZkLndyaXRlVUxFMzIobjgpO1xuICAgIGF3YWl0IGJpbkZpbGVVdGlscy53cml0ZUJpZ0ludChmZCwgcHJpbWUsIG44KTtcbiAgICBhd2FpdCBmZC53cml0ZVVMRTMyKHdpdG5lc3MubGVuZ3RoKTtcbiAgICBhd2FpdCBiaW5GaWxlVXRpbHMuZW5kV3JpdGVTZWN0aW9uKGZkKTtcblxuICAgIGF3YWl0IGJpbkZpbGVVdGlscy5zdGFydFdyaXRlU2VjdGlvbihmZCwgMik7XG4gICAgZm9yIChsZXQgaT0wOyBpPHdpdG5lc3MubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgYXdhaXQgYmluRmlsZVV0aWxzLndyaXRlQmlnSW50KGZkLCB3aXRuZXNzW2ldLCBuOCk7XG4gICAgfVxuICAgIGF3YWl0IGJpbkZpbGVVdGlscy5lbmRXcml0ZVNlY3Rpb24oZmQsIDIpO1xuXG5cbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHdyaXRlQmluKGZkLCB3aXRuZXNzQmluLCBwcmltZSkge1xuXG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLnN0YXJ0V3JpdGVTZWN0aW9uKGZkLCAxKTtcbiAgICBjb25zdCBuOCA9IChNYXRoLmZsb29yKCAoU2NhbGFyLmJpdExlbmd0aChwcmltZSkgLSAxKSAvIDY0KSArMSkqODtcbiAgICBhd2FpdCBmZC53cml0ZVVMRTMyKG44KTtcbiAgICBhd2FpdCBiaW5GaWxlVXRpbHMud3JpdGVCaWdJbnQoZmQsIHByaW1lLCBuOCk7XG4gICAgaWYgKHdpdG5lc3NCaW4uYnl0ZUxlbmd0aCAlIG44ICE9IDApIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCB3aXRuZXNzIGxlbmd0aFwiKTtcbiAgICB9XG4gICAgYXdhaXQgZmQud3JpdGVVTEUzMih3aXRuZXNzQmluLmJ5dGVMZW5ndGggLyBuOCk7XG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLmVuZFdyaXRlU2VjdGlvbihmZCk7XG5cblxuICAgIGF3YWl0IGJpbkZpbGVVdGlscy5zdGFydFdyaXRlU2VjdGlvbihmZCwgMik7XG4gICAgYXdhaXQgZmQud3JpdGUod2l0bmVzc0Jpbik7XG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLmVuZFdyaXRlU2VjdGlvbihmZCk7XG5cbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlYWRIZWFkZXIoZmQsIHNlY3Rpb25zKSB7XG5cbiAgICBhd2FpdCBiaW5GaWxlVXRpbHMuc3RhcnRSZWFkVW5pcXVlU2VjdGlvbihmZCwgc2VjdGlvbnMsIDEpO1xuICAgIGNvbnN0IG44ID0gYXdhaXQgZmQucmVhZFVMRTMyKCk7XG4gICAgY29uc3QgcSA9IGF3YWl0IGJpbkZpbGVVdGlscy5yZWFkQmlnSW50KGZkLCBuOCk7XG4gICAgY29uc3QgbldpdG5lc3MgPSBhd2FpdCBmZC5yZWFkVUxFMzIoKTtcbiAgICBhd2FpdCBiaW5GaWxlVXRpbHMuZW5kUmVhZFNlY3Rpb24oZmQpO1xuXG4gICAgcmV0dXJuIHtuOCwgcSwgbldpdG5lc3N9O1xuXG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZWFkKGZpbGVOYW1lKSB7XG5cbiAgICBjb25zdCB7ZmQsIHNlY3Rpb25zfSA9IGF3YWl0IGJpbkZpbGVVdGlscy5yZWFkQmluRmlsZShmaWxlTmFtZSwgXCJ3dG5zXCIsIDIpO1xuXG4gICAgY29uc3Qge244LCBuV2l0bmVzc30gPSBhd2FpdCByZWFkSGVhZGVyKGZkLCBzZWN0aW9ucyk7XG5cbiAgICBhd2FpdCBiaW5GaWxlVXRpbHMuc3RhcnRSZWFkVW5pcXVlU2VjdGlvbihmZCwgc2VjdGlvbnMsIDIpO1xuICAgIGNvbnN0IHJlcyA9IFtdO1xuICAgIGZvciAobGV0IGk9MDsgaTxuV2l0bmVzczsgaSsrKSB7XG4gICAgICAgIGNvbnN0IHYgPSBhd2FpdCBiaW5GaWxlVXRpbHMucmVhZEJpZ0ludChmZCwgbjgpO1xuICAgICAgICByZXMucHVzaCh2KTtcbiAgICB9XG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLmVuZFJlYWRTZWN0aW9uKGZkKTtcblxuICAgIGF3YWl0IGZkLmNsb3NlKCk7XG5cbiAgICByZXR1cm4gcmVzO1xufVxuXG4iLCIvKlxuICAgIENvcHlyaWdodCAyMDE4IDBLSU1TIGFzc29jaWF0aW9uLlxuXG4gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2Ygc25hcmtKUy5cblxuICAgIHNuYXJrSlMgaXMgYSBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0XG4gICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxuICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG5cbiAgICBzbmFya0pTIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUXG4gICAgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZXG4gICAgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljXG4gICAgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuXG4gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAgICBhbG9uZyB3aXRoIHNuYXJrSlMuIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXG4qL1xuXG5pbXBvcnQgKiBhcyBiaW5GaWxlVXRpbHMgZnJvbSBcIkBpZGVuMy9iaW5maWxldXRpbHNcIjtcbmltcG9ydCAqIGFzIHprZXlVdGlscyBmcm9tIFwiLi96a2V5X3V0aWxzLmpzXCI7XG5pbXBvcnQgKiBhcyB3dG5zVXRpbHMgZnJvbSBcIi4vd3Ruc191dGlscy5qc1wiO1xuaW1wb3J0IHsgZ2V0Q3VydmVGcm9tUSBhcyBnZXRDdXJ2ZSB9IGZyb20gXCIuL2N1cnZlcy5qc1wiO1xuaW1wb3J0IHsgbG9nMiB9IGZyb20gXCIuL21pc2MuanNcIjtcbmltcG9ydCB7IFNjYWxhciwgdXRpbHMsIEJpZ0J1ZmZlciB9IGZyb20gXCJmZmphdmFzY3JpcHRcIjtcbmNvbnN0IHtzdHJpbmdpZnlCaWdJbnRzfSA9IHV0aWxzO1xuXG5leHBvcnQgZGVmYXVsdCBhc3luYyBmdW5jdGlvbiBncm90aDE2UHJvdmUoemtleUZpbGVOYW1lLCB3aXRuZXNzRmlsZU5hbWUsIGxvZ2dlcikge1xuICAgIGNvbnN0IHtmZDogZmRXdG5zLCBzZWN0aW9uczogc2VjdGlvbnNXdG5zfSA9IGF3YWl0IGJpbkZpbGVVdGlscy5yZWFkQmluRmlsZSh3aXRuZXNzRmlsZU5hbWUsIFwid3Ruc1wiLCAyLCAxPDwyNSwgMTw8MjMpO1xuXG4gICAgY29uc3Qgd3RucyA9IGF3YWl0IHd0bnNVdGlscy5yZWFkSGVhZGVyKGZkV3Rucywgc2VjdGlvbnNXdG5zKTtcblxuICAgIGNvbnN0IHtmZDogZmRaS2V5LCBzZWN0aW9uczogc2VjdGlvbnNaS2V5fSA9IGF3YWl0IGJpbkZpbGVVdGlscy5yZWFkQmluRmlsZSh6a2V5RmlsZU5hbWUsIFwiemtleVwiLCAyLCAxPDwyNSwgMTw8MjMpO1xuXG4gICAgY29uc3QgemtleSA9IGF3YWl0IHprZXlVdGlscy5yZWFkSGVhZGVyKGZkWktleSwgc2VjdGlvbnNaS2V5KTtcblxuICAgIGlmICh6a2V5LnByb3RvY29sICE9IFwiZ3JvdGgxNlwiKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcInprZXkgZmlsZSBpcyBub3QgZ3JvdGgxNlwiKTtcbiAgICB9XG5cbiAgICBpZiAoIVNjYWxhci5lcSh6a2V5LnIsICB3dG5zLnEpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIkN1cnZlIG9mIHRoZSB3aXRuZXNzIGRvZXMgbm90IG1hdGNoIHRoZSBjdXJ2ZSBvZiB0aGUgcHJvdmluZyBrZXlcIik7XG4gICAgfVxuXG4gICAgaWYgKHd0bnMubldpdG5lc3MgIT0gemtleS5uVmFycykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgd2l0bmVzcyBsZW5ndGguIENpcmN1aXQ6ICR7emtleS5uVmFyc30sIHdpdG5lc3M6ICR7d3Rucy5uV2l0bmVzc31gKTtcbiAgICB9XG5cbiAgICBjb25zdCBjdXJ2ZSA9IHprZXkuY3VydmU7XG4gICAgY29uc3QgRnIgPSBjdXJ2ZS5GcjtcbiAgICBjb25zdCBHMSA9IGN1cnZlLkcxO1xuICAgIGNvbnN0IEcyID0gY3VydmUuRzI7XG5cbiAgICBjb25zdCBwb3dlciA9IGxvZzIoemtleS5kb21haW5TaXplKTtcblxuICAgIGlmIChsb2dnZXIpIGxvZ2dlci5kZWJ1ZyhcIlJlYWRpbmcgV3Ruc1wiKTtcbiAgICBjb25zdCBidWZmV2l0bmVzcyA9IGF3YWl0IGJpbkZpbGVVdGlscy5yZWFkU2VjdGlvbihmZFd0bnMsIHNlY3Rpb25zV3RucywgMik7XG4gICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmRlYnVnKFwiUmVhZGluZyBDb2VmZnNcIik7XG4gICAgY29uc3QgYnVmZkNvZWZmcyA9IGF3YWl0IGJpbkZpbGVVdGlscy5yZWFkU2VjdGlvbihmZFpLZXksIHNlY3Rpb25zWktleSwgNCk7XG5cbiAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZGVidWcoXCJCdWlsZGluZyBBQkNcIik7XG4gICAgY29uc3QgW2J1ZmZBX1QsIGJ1ZmZCX1QsIGJ1ZmZDX1RdID0gYXdhaXQgYnVpbGRBQkMxKGN1cnZlLCB6a2V5LCBidWZmV2l0bmVzcywgYnVmZkNvZWZmcywgbG9nZ2VyKTtcblxuICAgIGNvbnN0IGluYyA9IHBvd2VyID09IEZyLnMgPyBjdXJ2ZS5Gci5zaGlmdCA6IGN1cnZlLkZyLndbcG93ZXIrMV07XG5cbiAgICBjb25zdCBidWZmQSA9IGF3YWl0IEZyLmlmZnQoYnVmZkFfVCwgXCJcIiwgXCJcIiwgbG9nZ2VyLCBcIklGRlRfQVwiKTtcbiAgICBjb25zdCBidWZmQW9kZCA9IGF3YWl0IEZyLmJhdGNoQXBwbHlLZXkoYnVmZkEsIEZyLmUoMSksIGluYyk7XG4gICAgY29uc3QgYnVmZkFvZGRfVCA9IGF3YWl0IEZyLmZmdChidWZmQW9kZCwgXCJcIiwgXCJcIiwgbG9nZ2VyLCBcIkZGVF9BXCIpO1xuXG4gICAgY29uc3QgYnVmZkIgPSBhd2FpdCBGci5pZmZ0KGJ1ZmZCX1QsIFwiXCIsIFwiXCIsIGxvZ2dlciwgXCJJRkZUX0JcIik7XG4gICAgY29uc3QgYnVmZkJvZGQgPSBhd2FpdCBGci5iYXRjaEFwcGx5S2V5KGJ1ZmZCLCBGci5lKDEpLCBpbmMpO1xuICAgIGNvbnN0IGJ1ZmZCb2RkX1QgPSBhd2FpdCBGci5mZnQoYnVmZkJvZGQsIFwiXCIsIFwiXCIsIGxvZ2dlciwgXCJGRlRfQlwiKTtcblxuICAgIGNvbnN0IGJ1ZmZDID0gYXdhaXQgRnIuaWZmdChidWZmQ19ULCBcIlwiLCBcIlwiLCBsb2dnZXIsIFwiSUZGVF9DXCIpO1xuICAgIGNvbnN0IGJ1ZmZDb2RkID0gYXdhaXQgRnIuYmF0Y2hBcHBseUtleShidWZmQywgRnIuZSgxKSwgaW5jKTtcbiAgICBjb25zdCBidWZmQ29kZF9UID0gYXdhaXQgRnIuZmZ0KGJ1ZmZDb2RkLCBcIlwiLCBcIlwiLCBsb2dnZXIsIFwiRkZUX0NcIik7XG5cbiAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZGVidWcoXCJKb2luIEFCQ1wiKTtcbiAgICBjb25zdCBidWZmUG9kZF9UID0gYXdhaXQgam9pbkFCQyhjdXJ2ZSwgemtleSwgYnVmZkFvZGRfVCwgYnVmZkJvZGRfVCwgYnVmZkNvZGRfVCwgbG9nZ2VyKTtcblxuICAgIGxldCBwcm9vZiA9IHt9O1xuXG4gICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmRlYnVnKFwiUmVhZGluZyBBIFBvaW50c1wiKTtcbiAgICBjb25zdCBidWZmQmFzZXNBID0gYXdhaXQgYmluRmlsZVV0aWxzLnJlYWRTZWN0aW9uKGZkWktleSwgc2VjdGlvbnNaS2V5LCA1KTtcbiAgICBwcm9vZi5waV9hID0gYXdhaXQgY3VydmUuRzEubXVsdGlFeHBBZmZpbmUoYnVmZkJhc2VzQSwgYnVmZldpdG5lc3MsIGxvZ2dlciwgXCJtdWx0aWV4cCBBXCIpO1xuXG4gICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmRlYnVnKFwiUmVhZGluZyBCMSBQb2ludHNcIik7XG4gICAgY29uc3QgYnVmZkJhc2VzQjEgPSBhd2FpdCBiaW5GaWxlVXRpbHMucmVhZFNlY3Rpb24oZmRaS2V5LCBzZWN0aW9uc1pLZXksIDYpO1xuICAgIGxldCBwaWIxID0gYXdhaXQgY3VydmUuRzEubXVsdGlFeHBBZmZpbmUoYnVmZkJhc2VzQjEsIGJ1ZmZXaXRuZXNzLCBsb2dnZXIsIFwibXVsdGlleHAgQjFcIik7XG5cbiAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZGVidWcoXCJSZWFkaW5nIEIyIFBvaW50c1wiKTtcbiAgICBjb25zdCBidWZmQmFzZXNCMiA9IGF3YWl0IGJpbkZpbGVVdGlscy5yZWFkU2VjdGlvbihmZFpLZXksIHNlY3Rpb25zWktleSwgNyk7XG4gICAgcHJvb2YucGlfYiA9IGF3YWl0IGN1cnZlLkcyLm11bHRpRXhwQWZmaW5lKGJ1ZmZCYXNlc0IyLCBidWZmV2l0bmVzcywgbG9nZ2VyLCBcIm11bHRpZXhwIEIyXCIpO1xuXG4gICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmRlYnVnKFwiUmVhZGluZyBDIFBvaW50c1wiKTtcbiAgICBjb25zdCBidWZmQmFzZXNDID0gYXdhaXQgYmluRmlsZVV0aWxzLnJlYWRTZWN0aW9uKGZkWktleSwgc2VjdGlvbnNaS2V5LCA4KTtcbiAgICBwcm9vZi5waV9jID0gYXdhaXQgY3VydmUuRzEubXVsdGlFeHBBZmZpbmUoYnVmZkJhc2VzQywgYnVmZldpdG5lc3Muc2xpY2UoKHprZXkublB1YmxpYysxKSpjdXJ2ZS5Gci5uOCksIGxvZ2dlciwgXCJtdWx0aWV4cCBDXCIpO1xuXG4gICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmRlYnVnKFwiUmVhZGluZyBIIFBvaW50c1wiKTtcbiAgICBjb25zdCBidWZmQmFzZXNIID0gYXdhaXQgYmluRmlsZVV0aWxzLnJlYWRTZWN0aW9uKGZkWktleSwgc2VjdGlvbnNaS2V5LCA5KTtcbiAgICBjb25zdCByZXNIID0gYXdhaXQgY3VydmUuRzEubXVsdGlFeHBBZmZpbmUoYnVmZkJhc2VzSCwgYnVmZlBvZGRfVCwgbG9nZ2VyLCBcIm11bHRpZXhwIEhcIik7XG5cbiAgICBjb25zdCByID0gY3VydmUuRnIucmFuZG9tKCk7XG4gICAgY29uc3QgcyA9IGN1cnZlLkZyLnJhbmRvbSgpO1xuXG4gICAgcHJvb2YucGlfYSAgPSBHMS5hZGQoIHByb29mLnBpX2EsIHprZXkudmtfYWxwaGFfMSApO1xuICAgIHByb29mLnBpX2EgID0gRzEuYWRkKCBwcm9vZi5waV9hLCBHMS50aW1lc0ZyKCB6a2V5LnZrX2RlbHRhXzEsIHIgKSk7XG5cbiAgICBwcm9vZi5waV9iICA9IEcyLmFkZCggcHJvb2YucGlfYiwgemtleS52a19iZXRhXzIgKTtcbiAgICBwcm9vZi5waV9iICA9IEcyLmFkZCggcHJvb2YucGlfYiwgRzIudGltZXNGciggemtleS52a19kZWx0YV8yLCBzICkpO1xuXG4gICAgcGliMSA9IEcxLmFkZCggcGliMSwgemtleS52a19iZXRhXzEgKTtcbiAgICBwaWIxID0gRzEuYWRkKCBwaWIxLCBHMS50aW1lc0ZyKCB6a2V5LnZrX2RlbHRhXzEsIHMgKSk7XG5cbiAgICBwcm9vZi5waV9jID0gRzEuYWRkKHByb29mLnBpX2MsIHJlc0gpO1xuXG5cbiAgICBwcm9vZi5waV9jICA9IEcxLmFkZCggcHJvb2YucGlfYywgRzEudGltZXNGciggcHJvb2YucGlfYSwgcyApKTtcbiAgICBwcm9vZi5waV9jICA9IEcxLmFkZCggcHJvb2YucGlfYywgRzEudGltZXNGciggcGliMSwgciApKTtcbiAgICBwcm9vZi5waV9jICA9IEcxLmFkZCggcHJvb2YucGlfYywgRzEudGltZXNGciggemtleS52a19kZWx0YV8xLCBGci5uZWcoRnIubXVsKHIscykgKSkpO1xuXG5cbiAgICBsZXQgcHVibGljU2lnbmFscyA9IFtdO1xuXG4gICAgZm9yIChsZXQgaT0xOyBpPD0gemtleS5uUHVibGljOyBpKyspIHtcbiAgICAgICAgY29uc3QgYiA9IGJ1ZmZXaXRuZXNzLnNsaWNlKGkqRnIubjgsIGkqRnIubjgrRnIubjgpO1xuICAgICAgICBwdWJsaWNTaWduYWxzLnB1c2goU2NhbGFyLmZyb21ScHJMRShiKSk7XG4gICAgfVxuXG4gICAgcHJvb2YucGlfYSA9IEcxLnRvT2JqZWN0KEcxLnRvQWZmaW5lKHByb29mLnBpX2EpKTtcbiAgICBwcm9vZi5waV9iID0gRzIudG9PYmplY3QoRzIudG9BZmZpbmUocHJvb2YucGlfYikpO1xuICAgIHByb29mLnBpX2MgPSBHMS50b09iamVjdChHMS50b0FmZmluZShwcm9vZi5waV9jKSk7XG5cbiAgICBwcm9vZi5wcm90b2NvbCA9IFwiZ3JvdGgxNlwiO1xuICAgIHByb29mLmN1cnZlID0gY3VydmUubmFtZTtcblxuICAgIGF3YWl0IGZkWktleS5jbG9zZSgpO1xuICAgIGF3YWl0IGZkV3Rucy5jbG9zZSgpO1xuXG4gICAgcHJvb2YgPSBzdHJpbmdpZnlCaWdJbnRzKHByb29mKTtcbiAgICBwdWJsaWNTaWduYWxzID0gc3RyaW5naWZ5QmlnSW50cyhwdWJsaWNTaWduYWxzKTtcblxuICAgIHJldHVybiB7cHJvb2YsIHB1YmxpY1NpZ25hbHN9O1xufVxuXG5cbmFzeW5jIGZ1bmN0aW9uIGJ1aWxkQUJDMShjdXJ2ZSwgemtleSwgd2l0bmVzcywgY29lZmZzLCBsb2dnZXIpIHtcbiAgICBjb25zdCBuOCA9IGN1cnZlLkZyLm44O1xuICAgIGNvbnN0IHNDb2VmID0gNCozICsgemtleS5uOHI7XG4gICAgY29uc3QgbkNvZWYgPSAoY29lZmZzLmJ5dGVMZW5ndGgtNCkgLyBzQ29lZjtcblxuICAgIGNvbnN0IG91dEJ1ZmZBID0gbmV3IEJpZ0J1ZmZlcih6a2V5LmRvbWFpblNpemUgKiBuOCk7XG4gICAgY29uc3Qgb3V0QnVmZkIgPSBuZXcgQmlnQnVmZmVyKHprZXkuZG9tYWluU2l6ZSAqIG44KTtcbiAgICBjb25zdCBvdXRCdWZmQyA9IG5ldyBCaWdCdWZmZXIoemtleS5kb21haW5TaXplICogbjgpO1xuXG4gICAgY29uc3Qgb3V0QnVmID0gWyBvdXRCdWZmQSwgb3V0QnVmZkIgXTtcbiAgICBmb3IgKGxldCBpPTA7IGk8bkNvZWY7IGkrKykge1xuICAgICAgICBpZiAoKGxvZ2dlcikmJihpJTEwMDAwMDAgPT0gMCkpIGxvZ2dlci5kZWJ1ZyhgUUFQIEFCOiAke2l9LyR7bkNvZWZ9YCk7XG4gICAgICAgIGNvbnN0IGJ1ZmZDb2VmID0gY29lZmZzLnNsaWNlKDQraSpzQ29lZiwgNCtpKnNDb2VmK3NDb2VmKTtcbiAgICAgICAgY29uc3QgYnVmZkNvZWZWID0gbmV3IERhdGFWaWV3KGJ1ZmZDb2VmLmJ1ZmZlcik7XG4gICAgICAgIGNvbnN0IG09IGJ1ZmZDb2VmVi5nZXRVaW50MzIoMCwgdHJ1ZSk7XG4gICAgICAgIGNvbnN0IGM9IGJ1ZmZDb2VmVi5nZXRVaW50MzIoNCwgdHJ1ZSk7XG4gICAgICAgIGNvbnN0IHM9IGJ1ZmZDb2VmVi5nZXRVaW50MzIoOCwgdHJ1ZSk7XG4gICAgICAgIGNvbnN0IGNvZWYgPSBidWZmQ29lZi5zbGljZSgxMiwgMTIrbjgpO1xuICAgICAgICBvdXRCdWZbbV0uc2V0KFxuICAgICAgICAgICAgY3VydmUuRnIuYWRkKFxuICAgICAgICAgICAgICAgIG91dEJ1ZlttXS5zbGljZShjKm44LCBjKm44K244KSxcbiAgICAgICAgICAgICAgICBjdXJ2ZS5Gci5tdWwoY29lZiwgd2l0bmVzcy5zbGljZShzKm44LCBzKm44K244KSlcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjKm44XG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZm9yIChsZXQgaT0wOyBpPHprZXkuZG9tYWluU2l6ZTsgaSsrKSB7XG4gICAgICAgIGlmICgobG9nZ2VyKSYmKGklMTAwMDAwMCA9PSAwKSkgbG9nZ2VyLmRlYnVnKGBRQVAgQzogJHtpfS8ke3prZXkuZG9tYWluU2l6ZX1gKTtcbiAgICAgICAgb3V0QnVmZkMuc2V0KFxuICAgICAgICAgICAgY3VydmUuRnIubXVsKFxuICAgICAgICAgICAgICAgIG91dEJ1ZmZBLnNsaWNlKGkqbjgsIGkqbjgrbjgpLFxuICAgICAgICAgICAgICAgIG91dEJ1ZmZCLnNsaWNlKGkqbjgsIGkqbjgrbjgpLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGkqbjhcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gW291dEJ1ZmZBLCBvdXRCdWZmQiwgb3V0QnVmZkNdO1xuXG59XG5cbi8qXG5hc3luYyBmdW5jdGlvbiBidWlsZEFCQyhjdXJ2ZSwgemtleSwgd2l0bmVzcywgY29lZmZzLCBsb2dnZXIpIHtcbiAgICBjb25zdCBjb25jdXJyZW5jeSA9IGN1cnZlLnRtLmNvbmN1cnJlbmN5O1xuICAgIGNvbnN0IHNDb2VmID0gNCozICsgemtleS5uOHI7XG5cbiAgICBsZXQgZ2V0VWludDMyO1xuXG4gICAgaWYgKGNvZWZmcyBpbnN0YW5jZW9mIEJpZ0J1ZmZlcikge1xuICAgICAgICBjb25zdCBjb2VmZnNEViA9IFtdO1xuICAgICAgICBjb25zdCBQQUdFX0xFTiA9IGNvZWZmcy5idWZmZXJzWzBdLmxlbmd0aDtcbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPCBjb2VmZnMuYnVmZmVycy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgY29lZmZzRFYucHVzaChuZXcgRGF0YVZpZXcoY29lZmZzLmJ1ZmZlcnNbaV0uYnVmZmVyKSk7XG4gICAgICAgIH1cbiAgICAgICAgZ2V0VWludDMyID0gZnVuY3Rpb24gKHBvcykge1xuICAgICAgICAgICAgcmV0dXJuIGNvZWZmc0RWW01hdGguZmxvb3IocG9zL1BBR0VfTEVOKV0uZ2V0VWludDMyKHBvcyAlIFBBR0VfTEVOLCB0cnVlKTtcbiAgICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBjb2VmZnNEViA9IG5ldyBEYXRhVmlldyhjb2VmZnMuYnVmZmVyLCBjb2VmZnMuYnl0ZU9mZnNldCwgY29lZmZzLmJ5dGVMZW5ndGgpO1xuICAgICAgICBnZXRVaW50MzIgPSBmdW5jdGlvbiAocG9zKSB7XG4gICAgICAgICAgICByZXR1cm4gY29lZmZzRFYuZ2V0VWludDMyKHBvcywgdHJ1ZSk7XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgY29uc3QgZWxlbWVudHNQZXJDaHVuayA9IE1hdGguZmxvb3IoemtleS5kb21haW5TaXplL2NvbmN1cnJlbmN5KTtcbiAgICBjb25zdCBwcm9taXNlcyA9IFtdO1xuXG4gICAgY29uc3QgY3V0UG9pbnRzID0gW107XG4gICAgZm9yIChsZXQgaT0wOyBpPGNvbmN1cnJlbmN5OyBpKyspIHtcbiAgICAgICAgY3V0UG9pbnRzLnB1c2goIGdldEN1dFBvaW50KCBNYXRoLmZsb29yKGkqZWxlbWVudHNQZXJDaHVuaykgKSk7XG4gICAgfVxuICAgIGN1dFBvaW50cy5wdXNoKGNvZWZmcy5ieXRlTGVuZ3RoKTtcblxuICAgIGNvbnN0IGNodW5rU2l6ZSA9IDIqKjI2O1xuICAgIGZvciAobGV0IHM9MCA7IHM8emtleS5uVmFycyA7IHMrPSBjaHVua1NpemUpIHtcbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmRlYnVnKGBRQVAgJHtzfTogJHtzfS8ke3prZXkublZhcnN9YCk7XG4gICAgICAgIGNvbnN0IG5zPSBNYXRoLm1pbih6a2V5Lm5WYXJzLXMsIGNodW5rU2l6ZSApO1xuXG4gICAgICAgIGZvciAobGV0IGk9MDsgaTxjb25jdXJyZW5jeTsgaSsrKSB7XG4gICAgICAgICAgICBsZXQgbjtcbiAgICAgICAgICAgIGlmIChpPCBjb25jdXJyZW5jeS0xKSB7XG4gICAgICAgICAgICAgICAgbiA9IGVsZW1lbnRzUGVyQ2h1bms7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIG4gPSB6a2V5LmRvbWFpblNpemUgLSBpKmVsZW1lbnRzUGVyQ2h1bms7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobj09MCkgY29udGludWU7XG5cbiAgICAgICAgICAgIGNvbnN0IHRhc2sgPSBbXTtcblxuICAgICAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiQUxMT0NTRVRcIiwgdmFyOiAwLCBidWZmOiBjb2VmZnMuc2xpY2UoY3V0UG9pbnRzW2ldLCBjdXRQb2ludHNbaSsxXSl9KTtcbiAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkFMTE9DU0VUXCIsIHZhcjogMSwgYnVmZjogd2l0bmVzcy5zbGljZShzKmN1cnZlLkZyLm44LCAocytucykqY3VydmUuRnIubjgpfSk7XG4gICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJBTExPQ1wiLCB2YXI6IDIsIGxlbjogbipjdXJ2ZS5Gci5uOH0pO1xuICAgICAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiQUxMT0NcIiwgdmFyOiAzLCBsZW46IG4qY3VydmUuRnIubjh9KTtcbiAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkFMTE9DXCIsIHZhcjogNCwgbGVuOiBuKmN1cnZlLkZyLm44fSk7XG4gICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJDQUxMXCIsIGZuTmFtZTogXCJxYXBfYnVpbGRBQkNcIiwgcGFyYW1zOltcbiAgICAgICAgICAgICAgICB7dmFyOiAwfSxcbiAgICAgICAgICAgICAgICB7dmFsOiAoY3V0UG9pbnRzW2krMV0gLSBjdXRQb2ludHNbaV0pL3NDb2VmfSxcbiAgICAgICAgICAgICAgICB7dmFyOiAxfSxcbiAgICAgICAgICAgICAgICB7dmFyOiAyfSxcbiAgICAgICAgICAgICAgICB7dmFyOiAzfSxcbiAgICAgICAgICAgICAgICB7dmFyOiA0fSxcbiAgICAgICAgICAgICAgICB7dmFsOiBpKmVsZW1lbnRzUGVyQ2h1bmt9LFxuICAgICAgICAgICAgICAgIHt2YWw6IG59LFxuICAgICAgICAgICAgICAgIHt2YWw6IHN9LFxuICAgICAgICAgICAgICAgIHt2YWw6IG5zfVxuICAgICAgICAgICAgXX0pO1xuICAgICAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiR0VUXCIsIG91dDogMCwgdmFyOiAyLCBsZW46IG4qY3VydmUuRnIubjh9KTtcbiAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkdFVFwiLCBvdXQ6IDEsIHZhcjogMywgbGVuOiBuKmN1cnZlLkZyLm44fSk7XG4gICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJHRVRcIiwgb3V0OiAyLCB2YXI6IDQsIGxlbjogbipjdXJ2ZS5Gci5uOH0pO1xuICAgICAgICAgICAgcHJvbWlzZXMucHVzaChjdXJ2ZS50bS5xdWV1ZUFjdGlvbih0YXNrKSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBsZXQgcmVzdWx0ID0gYXdhaXQgUHJvbWlzZS5hbGwocHJvbWlzZXMpO1xuXG4gICAgY29uc3Qgbkdyb3VwcyA9IHJlc3VsdC5sZW5ndGggLyBjb25jdXJyZW5jeTtcbiAgICBpZiAobkdyb3Vwcz4xKSB7XG4gICAgICAgIGNvbnN0IHByb21pc2VzMiA9IFtdO1xuICAgICAgICBmb3IgKGxldCBpPTA7IGk8Y29uY3VycmVuY3k7IGkrKykge1xuICAgICAgICAgICAgY29uc3QgdGFzaz1bXTtcbiAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkFMTE9DXCIsIHZhcjogMCwgbGVuOiByZXN1bHRbaV1bMF0uYnl0ZUxlbmd0aH0pO1xuICAgICAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiQUxMT0NcIiwgdmFyOiAxLCBsZW46IHJlc3VsdFtpXVswXS5ieXRlTGVuZ3RofSk7XG4gICAgICAgICAgICBmb3IgKGxldCBtPTA7IG08MzsgbSsrKSB7XG4gICAgICAgICAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiU0VUXCIsIHZhcjogMCwgYnVmZjogcmVzdWx0W2ldW21dfSk7XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgcz0xOyBzPG5Hcm91cHM7IHMrKykge1xuICAgICAgICAgICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJTRVRcIiwgdmFyOiAxLCBidWZmOiByZXN1bHRbcypjb25jdXJyZW5jeSArIGldW21dfSk7XG4gICAgICAgICAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkNBTExcIiwgZm5OYW1lOiBcInFhcF9iYXRjaEFkZFwiLCBwYXJhbXM6W1xuICAgICAgICAgICAgICAgICAgICAgICAge3ZhcjogMH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7dmFyOiAxfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHt2YWw6IHJlc3VsdFtpXVttXS5sZW5ndGgvY3VydmUuRnIubjh9LFxuICAgICAgICAgICAgICAgICAgICAgICAge3ZhcjogMH1cbiAgICAgICAgICAgICAgICAgICAgXX0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJHRVRcIiwgb3V0OiBtLCB2YXI6IDAsIGxlbjogcmVzdWx0W2ldW21dLmxlbmd0aH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcHJvbWlzZXMyLnB1c2goY3VydmUudG0ucXVldWVBY3Rpb24odGFzaykpO1xuICAgICAgICB9XG4gICAgICAgIHJlc3VsdCA9IGF3YWl0IFByb21pc2UuYWxsKHByb21pc2VzMik7XG4gICAgfVxuXG4gICAgY29uc3Qgb3V0QnVmZkEgPSBuZXcgQmlnQnVmZmVyKHprZXkuZG9tYWluU2l6ZSAqIGN1cnZlLkZyLm44KTtcbiAgICBjb25zdCBvdXRCdWZmQiA9IG5ldyBCaWdCdWZmZXIoemtleS5kb21haW5TaXplICogY3VydmUuRnIubjgpO1xuICAgIGNvbnN0IG91dEJ1ZmZDID0gbmV3IEJpZ0J1ZmZlcih6a2V5LmRvbWFpblNpemUgKiBjdXJ2ZS5Gci5uOCk7XG4gICAgbGV0IHA9MDtcbiAgICBmb3IgKGxldCBpPTA7IGk8cmVzdWx0Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIG91dEJ1ZmZBLnNldChyZXN1bHRbaV1bMF0sIHApO1xuICAgICAgICBvdXRCdWZmQi5zZXQocmVzdWx0W2ldWzFdLCBwKTtcbiAgICAgICAgb3V0QnVmZkMuc2V0KHJlc3VsdFtpXVsyXSwgcCk7XG4gICAgICAgIHAgKz0gcmVzdWx0W2ldWzBdLmJ5dGVMZW5ndGg7XG4gICAgfVxuXG4gICAgcmV0dXJuIFtvdXRCdWZmQSwgb3V0QnVmZkIsIG91dEJ1ZmZDXTtcblxuICAgIGZ1bmN0aW9uIGdldEN1dFBvaW50KHYpIHtcbiAgICAgICAgbGV0IG0gPSAwO1xuICAgICAgICBsZXQgbiA9IGdldFVpbnQzMigwKTtcbiAgICAgICAgd2hpbGUgKG0gPCBuKSB7XG4gICAgICAgICAgICB2YXIgayA9IE1hdGguZmxvb3IoKG4gKyBtKSAvIDIpO1xuICAgICAgICAgICAgY29uc3QgdmEgPSBnZXRVaW50MzIoNCArIGsqc0NvZWYgKyA0KTtcbiAgICAgICAgICAgIGlmICh2YSA+IHYpIHtcbiAgICAgICAgICAgICAgICBuID0gayAtIDE7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHZhIDwgdikge1xuICAgICAgICAgICAgICAgIG0gPSBrICsgMTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgbiA9IGs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIDQgKyBtKnNDb2VmO1xuICAgIH1cbn1cbiovXG5cbmFzeW5jIGZ1bmN0aW9uIGpvaW5BQkMoY3VydmUsIHprZXksIGEsIGIsIGMsIGxvZ2dlcikge1xuICAgIGNvbnN0IE1BWF9DSFVOS19TSVpFID0gMSA8PCAyMjtcblxuICAgIGNvbnN0IG44ID0gY3VydmUuRnIubjg7XG4gICAgY29uc3QgbkVsZW1lbnRzID0gTWF0aC5mbG9vcihhLmJ5dGVMZW5ndGggLyBjdXJ2ZS5Gci5uOCk7XG5cbiAgICBjb25zdCBwcm9taXNlcyA9IFtdO1xuXG4gICAgZm9yIChsZXQgaT0wOyBpPG5FbGVtZW50czsgaSArPSBNQVhfQ0hVTktfU0laRSkge1xuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZGVidWcoYEpvaW5BQkM6ICR7aX0vJHtuRWxlbWVudHN9YCk7XG4gICAgICAgIGNvbnN0IG49IE1hdGgubWluKG5FbGVtZW50cyAtIGksIE1BWF9DSFVOS19TSVpFKTtcblxuICAgICAgICBjb25zdCB0YXNrID0gW107XG5cbiAgICAgICAgY29uc3QgYUNodW5rID0gYS5zbGljZShpKm44LCAoaSArIG4pKm44ICk7XG4gICAgICAgIGNvbnN0IGJDaHVuayA9IGIuc2xpY2UoaSpuOCwgKGkgKyBuKSpuOCApO1xuICAgICAgICBjb25zdCBjQ2h1bmsgPSBjLnNsaWNlKGkqbjgsIChpICsgbikqbjggKTtcblxuICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJBTExPQ1NFVFwiLCB2YXI6IDAsIGJ1ZmY6IGFDaHVua30pO1xuICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJBTExPQ1NFVFwiLCB2YXI6IDEsIGJ1ZmY6IGJDaHVua30pO1xuICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJBTExPQ1NFVFwiLCB2YXI6IDIsIGJ1ZmY6IGNDaHVua30pO1xuICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJBTExPQ1wiLCB2YXI6IDMsIGxlbjogbipuOH0pO1xuICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJDQUxMXCIsIGZuTmFtZTogXCJxYXBfam9pbkFCQ1wiLCBwYXJhbXM6W1xuICAgICAgICAgICAge3ZhcjogMH0sXG4gICAgICAgICAgICB7dmFyOiAxfSxcbiAgICAgICAgICAgIHt2YXI6IDJ9LFxuICAgICAgICAgICAge3ZhbDogbn0sXG4gICAgICAgICAgICB7dmFyOiAzfSxcbiAgICAgICAgXX0pO1xuICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJDQUxMXCIsIGZuTmFtZTogXCJmcm1fYmF0Y2hGcm9tTW9udGdvbWVyeVwiLCBwYXJhbXM6W1xuICAgICAgICAgICAge3ZhcjogM30sXG4gICAgICAgICAgICB7dmFsOiBufSxcbiAgICAgICAgICAgIHt2YXI6IDN9XG4gICAgICAgIF19KTtcbiAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiR0VUXCIsIG91dDogMCwgdmFyOiAzLCBsZW46IG4qbjh9KTtcbiAgICAgICAgcHJvbWlzZXMucHVzaChjdXJ2ZS50bS5xdWV1ZUFjdGlvbih0YXNrKSk7XG4gICAgfVxuXG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgUHJvbWlzZS5hbGwocHJvbWlzZXMpO1xuXG4gICAgbGV0IG91dEJ1ZmY7XG4gICAgaWYgKGEgaW5zdGFuY2VvZiBCaWdCdWZmZXIpIHtcbiAgICAgICAgb3V0QnVmZiA9IG5ldyBCaWdCdWZmZXIoYS5ieXRlTGVuZ3RoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBvdXRCdWZmID0gbmV3IFVpbnQ4QXJyYXkoYS5ieXRlTGVuZ3RoKTtcbiAgICB9XG5cbiAgICBsZXQgcD0wO1xuICAgIGZvciAobGV0IGk9MDsgaTxyZXN1bHQubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgb3V0QnVmZi5zZXQocmVzdWx0W2ldWzBdLCBwKTtcbiAgICAgICAgcCArPSByZXN1bHRbaV1bMF0uYnl0ZUxlbmd0aDtcbiAgICB9XG5cbiAgICByZXR1cm4gb3V0QnVmZjtcbn1cblxuIiwiLypcblxuQ29weXJpZ2h0IDIwMjAgMEtJTVMgYXNzb2NpYXRpb24uXG5cbkxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG55b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG5Zb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG5Vbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG5kaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG5XSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cblNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbmxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuXG4qL1xuXG5leHBvcnQgZnVuY3Rpb24gZmxhdEFycmF5KGEpIHtcbiAgICBsZXQgcmVzID0gW107XG4gICAgZmlsbEFycmF5KHJlcywgYSk7XG4gICAgcmV0dXJuIHJlcztcblxuICAgIGZ1bmN0aW9uIGZpbGxBcnJheShyZXMsIGEpIHtcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoYSkpIHtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYS5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIGZpbGxBcnJheShyZXMsIGFbaV0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmVzLnB1c2goYSk7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8vIFJlZiBodHRwczovL2dpdGh1Yi5jb20vaWRlbjMvY2lyY29tL2NvbW1pdC9lYzYzODhjZjZlYjYyNDYzNTM5Y2I0YzQwY2MzY2VhZTk4MjZkZTE5XG5leHBvcnQgZnVuY3Rpb24gbm9ybWFsaXplKG4sIHByaW1lKSB7XG4gICAgbGV0IHJlcyA9IEJpZ0ludChuKSAlIHByaW1lO1xuICAgIGlmIChyZXMgPCAwKSByZXMgKz0gcHJpbWU7XG4gICAgcmV0dXJuIHJlcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZudkhhc2goc3RyKSB7XG4gICAgY29uc3QgdWludDY0X21heCA9IEJpZ0ludCgyKSAqKiBCaWdJbnQoNjQpO1xuICAgIGxldCBoYXNoID0gQmlnSW50KFwiMHhDQkYyOUNFNDg0MjIyMzI1XCIpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc3RyLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGhhc2ggXj0gQmlnSW50KHN0cltpXS5jaGFyQ29kZUF0KDApKTtcbiAgICAgICAgaGFzaCAqPSBCaWdJbnQoMHgxMDAwMDAwMDFCMyk7XG4gICAgICAgIGhhc2ggJT0gdWludDY0X21heDtcbiAgICB9XG4gICAgbGV0IHNoYXNoID0gaGFzaC50b1N0cmluZygxNik7XG4gICAgbGV0IG4gPSAxNiAtIHNoYXNoLmxlbmd0aDtcbiAgICBzaGFzaCA9IFwiMFwiLnJlcGVhdChuKS5jb25jYXQoc2hhc2gpO1xuICAgIHJldHVybiBzaGFzaDtcbn1cblxuLy8gTm90ZSB0aGF0IHRoaXMgcGFkcyB6ZXJvc1xuZXhwb3J0IGZ1bmN0aW9uIHRvQXJyYXkzMihzLCBzaXplKSB7XG4gICAgY29uc3QgcmVzID0gW107IC8vbmV3IFVpbnQzMkFycmF5KHNpemUpOyAvL2hhcyBubyB1bnNoaWZ0XG4gICAgbGV0IHJlbSA9IEJpZ0ludChzKTtcbiAgICBjb25zdCByYWRpeCA9IEJpZ0ludCgweDEwMDAwMDAwMCk7XG4gICAgd2hpbGUgKHJlbSkge1xuICAgICAgICByZXMudW5zaGlmdChOdW1iZXIocmVtICUgcmFkaXgpKTtcbiAgICAgICAgcmVtID0gcmVtIC8gcmFkaXg7XG4gICAgfVxuICAgIGlmIChzaXplKSB7XG4gICAgICAgIGxldCBpID0gc2l6ZSAtIHJlcy5sZW5ndGg7XG4gICAgICAgIHdoaWxlIChpID4gMCkge1xuICAgICAgICAgICAgcmVzLnVuc2hpZnQoMCk7XG4gICAgICAgICAgICBpLS07XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlcztcbn1cbiIsIi8qIGdsb2JhbHMgV2ViQXNzZW1ibHkgKi9cbi8qXG5cbkNvcHlyaWdodCAyMDIwIDBLSU1TIGFzc29jaWF0aW9uLlxuXG5MaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xueW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG5TZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG5saW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cblxuKi9cblxuaW1wb3J0IHtmbGF0QXJyYXksIGZudkhhc2gsIHRvQXJyYXkzMiwgbm9ybWFsaXplfSBmcm9tIFwiLi91dGlscy5qc1wiO1xuaW1wb3J0IHtTY2FsYXIsIEYxRmllbGR9IGZyb20gXCJmZmphdmFzY3JpcHRcIjtcblxuZXhwb3J0IGRlZmF1bHQgYXN5bmMgZnVuY3Rpb24gYnVpbGRlcihjb2RlLCBvcHRpb25zKSB7XG4gICAgbGV0IGluc3RhbmNlO1xuICAgIGxldCB3YztcbiAgICBsZXQgbWVtb3J5O1xuICAgIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9O1xuXG4gICAgLy8gT25seSBjaXJjb20gMiBpbXBsZW1lbnRzIHZlcnNpb24gbG9va3VwIHRocm91Z2ggZXhwb3J0cyBpbiB0aGUgV0FTTVxuICAgIC8vIFdlIGRlZmF1bHQgdG8gYDFgIGFuZCB1cGRhdGUgaWYgd2Ugc2VlIHRoZSBgZ2V0VmVyc2lvbmAgZXhwb3J0IChtYWpvciB2ZXJzaW9uKVxuICAgIC8vIFRoZXNlIGFyZSB1cGRhdGVkIGFmdGVyIHRoZSBpbnN0YW5jZSBpcyBpbnN0YW50aWF0ZWQsIGFzc3VtaW5nIHRoZSBmdW5jdGlvbnMgYXJlIGF2YWlsYWJsZVxuICAgIGxldCBtYWpvclZlcnNpb24gPSAxO1xuICAgIC8vIEFmdGVyIENpcmNvbSAyLjAuNywgQmxhaW5lIGFkZGVkIGV4cG9ydGVkIGZ1bmN0aW9ucyBmb3IgZ2V0dGluZyBtaW5vciBhbmQgcGF0Y2ggdmVyc2lvbnNcbiAgICBsZXQgbWlub3JWZXJzaW9uID0gMDtcbiAgICAvLyBJZiB3ZSBjYW4ndCBsb29rIHVwIHRoZSBwYXRjaCB2ZXJzaW9uLCBhc3N1bWUgdGhlIGxvd2VzdFxuICAgIGxldCBwYXRjaFZlcnNpb24gPSAwO1xuXG4gICAgbGV0IGNvZGVJc1dlYkFzc2VtYmx5SW5zdGFuY2UgPSBmYWxzZTtcblxuICAgIC8vIElmIGNvZGUgaXMgYWxyZWFkeSBwcmVwYXJlZCBXZWJBc3NlbWJseS5JbnN0YW5jZSwgd2UgdXNlIGl0IGRpcmVjdGx5XG4gICAgaWYgKGNvZGUgaW5zdGFuY2VvZiBXZWJBc3NlbWJseS5JbnN0YW5jZSkge1xuICAgICAgICBpbnN0YW5jZSA9IGNvZGU7XG4gICAgICAgIGNvZGVJc1dlYkFzc2VtYmx5SW5zdGFuY2UgPSB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIGxldCBtZW1vcnlTaXplID0gMzI3Njc7XG5cbiAgICAgICAgaWYgKG9wdGlvbnMubWVtb3J5U2l6ZSkge1xuICAgICAgICAgICAgLy8gbWFrZSBzdXJlIHdlIGhhdmUgaW50XG4gICAgICAgICAgICBtZW1vcnlTaXplID0gcGFyc2VJbnQob3B0aW9ucy5tZW1vcnlTaXplKTtcbiAgICAgICAgICAgIGlmIChtZW1vcnlTaXplIDwgMCkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgbWVtb3J5IHNpemVcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgbWVtb3J5QWxsb2NhdGVkID0gZmFsc2U7XG4gICAgICAgIHdoaWxlICghbWVtb3J5QWxsb2NhdGVkKSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIG1lbW9yeSA9IG5ldyBXZWJBc3NlbWJseS5NZW1vcnkoe2luaXRpYWw6IG1lbW9yeVNpemV9KTtcbiAgICAgICAgICAgICAgICBtZW1vcnlBbGxvY2F0ZWQgPSB0cnVlO1xuICAgICAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICAgICAgaWYgKG1lbW9yeVNpemUgPD0gMSkge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBlcnI7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybihcIkNvdWxkIG5vdCBhbGxvY2F0ZSBcIiArIG1lbW9yeVNpemUgKiAxMDI0ICogNjQgKyBcIiBieXRlcy4gVGhpcyBtYXkgY2F1c2Ugc2V2ZXJlIGluc3RhYmlsaXR5LiBUcnlpbmcgd2l0aCBcIiArIG1lbW9yeVNpemUgKiAxMDI0ICogNjQgLyAyICsgXCIgYnl0ZXNcIik7XG4gICAgICAgICAgICAgICAgbWVtb3J5U2l6ZSA9IE1hdGguZmxvb3IobWVtb3J5U2l6ZSAvIDIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgd2FzbU1vZHVsZSA9IGF3YWl0IFdlYkFzc2VtYmx5LmNvbXBpbGUoY29kZSk7XG5cbiAgICAgICAgbGV0IGVyclN0ciA9IFwiXCI7XG4gICAgICAgIGxldCBtc2dTdHIgPSBcIlwiO1xuXG4gICAgICAgIGluc3RhbmNlID0gYXdhaXQgV2ViQXNzZW1ibHkuaW5zdGFudGlhdGUod2FzbU1vZHVsZSwge1xuICAgICAgICAgICAgZW52OiB7XG4gICAgICAgICAgICAgICAgXCJtZW1vcnlcIjogbWVtb3J5XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcnVudGltZToge1xuICAgICAgICAgICAgICAgIGV4Y2VwdGlvbkhhbmRsZXI6IGZ1bmN0aW9uIChjb2RlKSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBlcnI7XG4gICAgICAgICAgICAgICAgICAgIGlmIChjb2RlID09PSAxKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBlcnIgPSBcIlNpZ25hbCBub3QgZm91bmQuIFwiO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGNvZGUgPT09IDIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVyciA9IFwiVG9vIG1hbnkgc2lnbmFscyBzZXQuIFwiO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGNvZGUgPT09IDMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVyciA9IFwiU2lnbmFsIGFscmVhZHkgc2V0LiBcIjtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChjb2RlID09PSA0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBlcnIgPSBcIkFzc2VydCBGYWlsZWQuIFwiO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGNvZGUgPT09IDUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVyciA9IFwiTm90IGVub3VnaCBtZW1vcnkuIFwiO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGNvZGUgPT09IDYpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVyciA9IFwiSW5wdXQgc2lnbmFsIGFycmF5IGFjY2VzcyBleGNlZWRzIHRoZSBzaXplLiBcIjtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVyciA9IFwiVW5rbm93biBlcnJvci4gXCI7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihcIkVSUk9SOiBcIiwgY29kZSwgZXJyU3RyKTtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGVyciArIGVyclN0cik7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAvLyBBIG5ldyB3YXkgb2YgbG9nZ2luZyBtZXNzYWdlcyB3YXMgYWRkZWQgaW4gQ2lyY29tIDIuMC43IHRoYXQgcmVxdWlyZXMgMiBuZXcgaW1wb3J0c1xuICAgICAgICAgICAgICAgIC8vIGBwcmludEVycm9yTWVzc2FnZWAgYW5kIGB3cml0ZUJ1ZmZlck1lc3NhZ2VgLlxuICAgICAgICAgICAgICAgIHByaW50RXJyb3JNZXNzYWdlOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIGVyclN0ciArPSBnZXRNZXNzYWdlKCkgKyBcIlxcblwiO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgd3JpdGVCdWZmZXJNZXNzYWdlOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG1zZyA9IGdldE1lc3NhZ2UoKTtcbiAgICAgICAgICAgICAgICAgICAgLy8gQW55IGNhbGxzIHRvIGBsb2coKWAgd2lsbCBhbHdheXMgZW5kIHdpdGggYSBgXFxuYCwgc28gdGhhdCdzIHdoZW4gd2UgcHJpbnQgYW5kIHJlc2V0XG4gICAgICAgICAgICAgICAgICAgIGlmIChtc2cgPT09IFwiXFxuXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKG1zZ1N0cik7XG4gICAgICAgICAgICAgICAgICAgICAgICBtc2dTdHIgPSBcIlwiO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gSWYgd2UndmUgYnVmZmVyZWQgb3RoZXIgY29udGVudCwgcHV0IGEgc3BhY2UgaW4gYmV0d2VlbiB0aGUgaXRlbXNcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtc2dTdHIgIT09IFwiXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc2dTdHIgKz0gXCIgXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGVuIGFwcGVuZCB0aGUgbWVzc2FnZSB0byB0aGUgbWVzc2FnZSB3ZSBhcmUgY3JlYXRpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgIG1zZ1N0ciArPSBtc2c7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHNob3dTaGFyZWRSV01lbW9yeTogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBzaGFyZWRfcndfbWVtb3J5X3NpemUgPSBpbnN0YW5jZS5leHBvcnRzLmdldEZpZWxkTnVtTGVuMzIoKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYXJyID0gbmV3IFVpbnQzMkFycmF5KHNoYXJlZF9yd19tZW1vcnlfc2l6ZSk7XG4gICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgc2hhcmVkX3J3X21lbW9yeV9zaXplOyBqKyspIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFycltzaGFyZWRfcndfbWVtb3J5X3NpemUgLSAxIC0gal0gPSBpbnN0YW5jZS5leHBvcnRzLnJlYWRTaGFyZWRSV01lbW9yeShqKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIC8vIEluIGNpcmNvbSAyLjAuNywgdGhleSBjaGFuZ2VkIHRoZSBsb2coKSBmdW5jdGlvbiB0byBhbGxvdyBzdHJpbmdzIGFuZCBjaGFuZ2VkIHRoZVxuICAgICAgICAgICAgICAgICAgICAvLyBvdXRwdXQgQVBJLiBUaGlzIHNtb290aGVzIG92ZXIgdGhlIGJyZWFraW5nIGNoYW5nZS5cbiAgICAgICAgICAgICAgICAgICAgaWYgKG1ham9yVmVyc2lvbiA+PSAyICYmIChtaW5vclZlcnNpb24gPj0gMSB8fCBwYXRjaFZlcnNpb24gPj0gNykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIElmIHdlJ3ZlIGJ1ZmZlcmVkIG90aGVyIGNvbnRlbnQsIHB1dCBhIHNwYWNlIGluIGJldHdlZW4gdGhlIGl0ZW1zXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAobXNnU3RyICE9PSBcIlwiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbXNnU3RyICs9IFwiIFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhlbiBhcHBlbmQgdGhlIHZhbHVlIHRvIHRoZSBtZXNzYWdlIHdlIGFyZSBjcmVhdGluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbXNnID0gKFNjYWxhci5mcm9tQXJyYXkoYXJyLCAweDEwMDAwMDAwMCkudG9TdHJpbmcoKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBtc2dTdHIgKz0gbXNnO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coU2NhbGFyLmZyb21BcnJheShhcnIsIDB4MTAwMDAwMDAwKSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGVycm9yOiBmdW5jdGlvbiAoY29kZSwgcHN0ciwgYSwgYiwgYywgZCkge1xuICAgICAgICAgICAgICAgICAgICBsZXQgZXJyU3RyO1xuICAgICAgICAgICAgICAgICAgICBpZiAoY29kZSA9PT0gNykge1xuICAgICAgICAgICAgICAgICAgICAgICAgZXJyU3RyID0gcDJzdHIocHN0cikgKyBcIiBcIiArIHdjLmdldEZyKGIpLnRvU3RyaW5nKCkgKyBcIiAhPSBcIiArIHdjLmdldEZyKGMpLnRvU3RyaW5nKCkgKyBcIiBcIiArIHAyc3RyKGQpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGNvZGUgPT09IDkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVyclN0ciA9IHAyc3RyKHBzdHIpICsgXCIgXCIgKyB3Yy5nZXRGcihiKS50b1N0cmluZygpICsgXCIgXCIgKyBwMnN0cihjKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICgoY29kZSA9PT0gNSkgJiYgKG9wdGlvbnMuc3ltKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZXJyU3RyID0gcDJzdHIocHN0cikgKyBcIiBcIiArIG9wdGlvbnMuc3ltLmxhYmVsSWR4Mk5hbWVbY107XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJTdHIgPSBwMnN0cihwc3RyKSArIFwiIFwiICsgYSArIFwiIFwiICsgYiArIFwiIFwiICsgYyArIFwiIFwiICsgZDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIkVSUk9SOiBcIiwgY29kZSwgZXJyU3RyKTtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGVyclN0cik7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBsb2c6IGZ1bmN0aW9uIChhKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKHdjLmdldEZyKGEpLnRvU3RyaW5nKCkpO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgbG9nR2V0U2lnbmFsOiBmdW5jdGlvbiAoc2lnbmFsLCBwVmFsKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChvcHRpb25zLmxvZ0dldFNpZ25hbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5sb2dHZXRTaWduYWwoc2lnbmFsLCB3Yy5nZXRGcihwVmFsKSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGxvZ1NldFNpZ25hbDogZnVuY3Rpb24gKHNpZ25hbCwgcFZhbCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAob3B0aW9ucy5sb2dTZXRTaWduYWwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnMubG9nU2V0U2lnbmFsKHNpZ25hbCwgd2MuZ2V0RnIocFZhbCkpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBsb2dTdGFydENvbXBvbmVudDogZnVuY3Rpb24gKGNJZHgpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKG9wdGlvbnMubG9nU3RhcnRDb21wb25lbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnMubG9nU3RhcnRDb21wb25lbnQoY0lkeCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGxvZ0ZpbmlzaENvbXBvbmVudDogZnVuY3Rpb24gKGNJZHgpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKG9wdGlvbnMubG9nRmluaXNoQ29tcG9uZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zLmxvZ0ZpbmlzaENvbXBvbmVudChjSWR4KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBpbnN0YW5jZS5leHBvcnRzLmdldFZlcnNpb24gPT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgIG1ham9yVmVyc2lvbiA9IGluc3RhbmNlLmV4cG9ydHMuZ2V0VmVyc2lvbigpO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIGluc3RhbmNlLmV4cG9ydHMuZ2V0TWlub3JWZXJzaW9uID09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICBtaW5vclZlcnNpb24gPSBpbnN0YW5jZS5leHBvcnRzLmdldE1pbm9yVmVyc2lvbigpO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIGluc3RhbmNlLmV4cG9ydHMuZ2V0UGF0Y2hWZXJzaW9uID09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICBwYXRjaFZlcnNpb24gPSBpbnN0YW5jZS5leHBvcnRzLmdldFBhdGNoVmVyc2lvbigpO1xuICAgIH1cblxuICAgIGNvbnN0IHNhbml0eUNoZWNrID1cbiAgICAgICAgb3B0aW9ucyAmJlxuICAgICAgICAoXG4gICAgICAgICAgICBvcHRpb25zLnNhbml0eUNoZWNrIHx8XG4gICAgICAgICAgICBvcHRpb25zLmxvZ0dldFNpZ25hbCB8fFxuICAgICAgICAgICAgb3B0aW9ucy5sb2dTZXRTaWduYWwgfHxcbiAgICAgICAgICAgIG9wdGlvbnMubG9nU3RhcnRDb21wb25lbnQgfHxcbiAgICAgICAgICAgIG9wdGlvbnMubG9nRmluaXNoQ29tcG9uZW50XG4gICAgICAgICk7XG5cbiAgICAvLyBXZSBleHBsaWNpdGx5IGNoZWNrIGZvciBtYWpvciB2ZXJzaW9uIDIgaW4gY2FzZSB0aGVyZSdzIGEgY2lyY29tIHYzIGluIHRoZSBmdXR1cmVcbiAgICBpZiAobWFqb3JWZXJzaW9uID09PSAyKSB7XG4gICAgICAgIHdjID0gbmV3IFdpdG5lc3NDYWxjdWxhdG9yQ2lyY29tMihpbnN0YW5jZSwgc2FuaXR5Q2hlY2spO1xuICAgIH0gZWxzZSBpZiAobWFqb3JWZXJzaW9uID09PSAxKSB7XG4gICAgICAgIGlmIChjb2RlSXNXZWJBc3NlbWJseUluc3RhbmNlKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0xvYWRpbmcgY29kZSBmcm9tIFdlYkFzc2VtYmx5IGluc3RhbmNlIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIGNpcmNvbSB2ZXJzaW9uIDEnKTtcbiAgICAgICAgfVxuICAgICAgICB3YyA9IG5ldyBXaXRuZXNzQ2FsY3VsYXRvckNpcmNvbTEobWVtb3J5LCBpbnN0YW5jZSwgc2FuaXR5Q2hlY2spO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5zdXBwb3J0ZWQgY2lyY29tIHZlcnNpb246ICR7bWFqb3JWZXJzaW9ufWApO1xuICAgIH1cbiAgICByZXR1cm4gd2M7XG5cbiAgICBmdW5jdGlvbiBnZXRNZXNzYWdlKCkge1xuICAgICAgICBsZXQgbWVzc2FnZSA9IFwiXCI7XG4gICAgICAgIGxldCBjID0gaW5zdGFuY2UuZXhwb3J0cy5nZXRNZXNzYWdlQ2hhcigpO1xuICAgICAgICB3aGlsZSAoYyAhPT0gMCkge1xuICAgICAgICAgICAgbWVzc2FnZSArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGMpO1xuICAgICAgICAgICAgYyA9IGluc3RhbmNlLmV4cG9ydHMuZ2V0TWVzc2FnZUNoYXIoKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbWVzc2FnZTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBwMnN0cihwKSB7XG4gICAgICAgIGNvbnN0IGk4ID0gbmV3IFVpbnQ4QXJyYXkobWVtb3J5LmJ1ZmZlcik7XG5cbiAgICAgICAgY29uc3QgYnl0ZXMgPSBbXTtcblxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaThbcCArIGldID4gMDsgaSsrKSBieXRlcy5wdXNoKGk4W3AgKyBpXSk7XG5cbiAgICAgICAgcmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkobnVsbCwgYnl0ZXMpO1xuICAgIH1cbn1cblxuY2xhc3MgV2l0bmVzc0NhbGN1bGF0b3JDaXJjb20xIHtcbiAgICBjb25zdHJ1Y3RvcihtZW1vcnksIGluc3RhbmNlLCBzYW5pdHlDaGVjaykge1xuICAgICAgICB0aGlzLm1lbW9yeSA9IG1lbW9yeTtcbiAgICAgICAgdGhpcy5pMzIgPSBuZXcgVWludDMyQXJyYXkobWVtb3J5LmJ1ZmZlcik7XG4gICAgICAgIHRoaXMuaW5zdGFuY2UgPSBpbnN0YW5jZTtcblxuICAgICAgICB0aGlzLm4zMiA9ICh0aGlzLmluc3RhbmNlLmV4cG9ydHMuZ2V0RnJMZW4oKSA+PiAyKSAtIDI7XG4gICAgICAgIGNvbnN0IHBSYXdQcmltZSA9IHRoaXMuaW5zdGFuY2UuZXhwb3J0cy5nZXRQUmF3UHJpbWUoKTtcblxuICAgICAgICBjb25zdCBhcnIgPSBuZXcgQXJyYXkodGhpcy5uMzIpO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMubjMyOyBpKyspIHtcbiAgICAgICAgICAgIGFyclt0aGlzLm4zMiAtIDEgLSBpXSA9IHRoaXMuaTMyWyhwUmF3UHJpbWUgPj4gMikgKyBpXTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMucHJpbWUgPSBTY2FsYXIuZnJvbUFycmF5KGFyciwgMHgxMDAwMDAwMDApO1xuXG4gICAgICAgIHRoaXMuRnIgPSBuZXcgRjFGaWVsZCh0aGlzLnByaW1lKTtcblxuICAgICAgICB0aGlzLm1hc2szMiA9IFNjYWxhci5mcm9tU3RyaW5nKFwiRkZGRkZGRkZcIiwgMTYpO1xuICAgICAgICB0aGlzLk5WYXJzID0gdGhpcy5pbnN0YW5jZS5leHBvcnRzLmdldE5WYXJzKCk7XG4gICAgICAgIHRoaXMubjY0ID0gTWF0aC5mbG9vcigodGhpcy5Gci5iaXRMZW5ndGggLSAxKSAvIDY0KSArIDE7XG4gICAgICAgIHRoaXMuUiA9IHRoaXMuRnIuZShTY2FsYXIuc2hpZnRMZWZ0KDEsIHRoaXMubjY0ICogNjQpKTtcbiAgICAgICAgdGhpcy5SSW52ID0gdGhpcy5Gci5pbnYodGhpcy5SKTtcbiAgICAgICAgdGhpcy5zYW5pdHlDaGVjayA9IHNhbml0eUNoZWNrO1xuICAgIH1cblxuICAgIGNpcmNvbV92ZXJzaW9uKCkge1xuICAgICAgICByZXR1cm4gMTtcbiAgICB9XG5cbiAgICBhc3luYyBfZG9DYWxjdWxhdGVXaXRuZXNzKGlucHV0LCBzYW5pdHlDaGVjaykge1xuICAgICAgICB0aGlzLmluc3RhbmNlLmV4cG9ydHMuaW5pdCgodGhpcy5zYW5pdHlDaGVjayB8fCBzYW5pdHlDaGVjaykgPyAxIDogMCk7XG4gICAgICAgIGNvbnN0IHBTaWdPZmZzZXQgPSB0aGlzLmFsbG9jSW50KCk7XG4gICAgICAgIGNvbnN0IHBGciA9IHRoaXMuYWxsb2NGcigpO1xuICAgICAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMoaW5wdXQpO1xuICAgICAgICBrZXlzLmZvckVhY2goKGspID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGggPSBmbnZIYXNoKGspO1xuICAgICAgICAgICAgY29uc3QgaE1TQiA9IHBhcnNlSW50KGguc2xpY2UoMCwgOCksIDE2KTtcbiAgICAgICAgICAgIGNvbnN0IGhMU0IgPSBwYXJzZUludChoLnNsaWNlKDgsIDE2KSwgMTYpO1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICB0aGlzLmluc3RhbmNlLmV4cG9ydHMuZ2V0U2lnbmFsT2Zmc2V0MzIocFNpZ09mZnNldCwgMCwgaE1TQiwgaExTQik7XG4gICAgICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFNpZ25hbCAke2t9IGlzIG5vdCBhbiBpbnB1dCBvZiB0aGUgY2lyY3VpdC5gKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IHNpZ09mZnNldCA9IHRoaXMuZ2V0SW50KHBTaWdPZmZzZXQpO1xuICAgICAgICAgICAgY29uc3QgZkFyciA9IGZsYXRBcnJheShpbnB1dFtrXSk7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGZBcnIubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNldEZyKHBGciwgZkFycltpXSk7XG4gICAgICAgICAgICAgICAgdGhpcy5pbnN0YW5jZS5leHBvcnRzLnNldFNpZ25hbCgwLCAwLCBzaWdPZmZzZXQgKyBpLCBwRnIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBhc3luYyBjYWxjdWxhdGVXaXRuZXNzKGlucHV0LCBzYW5pdHlDaGVjaykge1xuICAgICAgICBjb25zdCBzZWxmID0gdGhpcztcblxuICAgICAgICBjb25zdCBvbGQwID0gc2VsZi5pMzJbMF07XG4gICAgICAgIGNvbnN0IHcgPSBbXTtcblxuICAgICAgICBhd2FpdCBzZWxmLl9kb0NhbGN1bGF0ZVdpdG5lc3MoaW5wdXQsIHNhbml0eUNoZWNrKTtcblxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNlbGYuTlZhcnM7IGkrKykge1xuICAgICAgICAgICAgY29uc3QgcFdpdG5lc3MgPSBzZWxmLmluc3RhbmNlLmV4cG9ydHMuZ2V0UFdpdG5lc3MoaSk7XG4gICAgICAgICAgICB3LnB1c2goc2VsZi5nZXRGcihwV2l0bmVzcykpO1xuICAgICAgICB9XG5cbiAgICAgICAgc2VsZi5pMzJbMF0gPSBvbGQwO1xuICAgICAgICByZXR1cm4gdztcbiAgICB9XG5cbiAgICBhc3luYyBjYWxjdWxhdGVCaW5XaXRuZXNzKGlucHV0LCBzYW5pdHlDaGVjaykge1xuICAgICAgICBjb25zdCBzZWxmID0gdGhpcztcblxuICAgICAgICBjb25zdCBvbGQwID0gc2VsZi5pMzJbMF07XG5cbiAgICAgICAgYXdhaXQgc2VsZi5fZG9DYWxjdWxhdGVXaXRuZXNzKGlucHV0LCBzYW5pdHlDaGVjayk7XG5cbiAgICAgICAgY29uc3QgcFdpdG5lc3NCdWZmZXIgPSBzZWxmLmluc3RhbmNlLmV4cG9ydHMuZ2V0V2l0bmVzc0J1ZmZlcigpO1xuXG4gICAgICAgIHNlbGYuaTMyWzBdID0gb2xkMDtcblxuICAgICAgICBjb25zdCBidWZmID0gc2VsZi5tZW1vcnkuYnVmZmVyLnNsaWNlKHBXaXRuZXNzQnVmZmVyLCBwV2l0bmVzc0J1ZmZlciArIChzZWxmLk5WYXJzICogc2VsZi5uNjQgKiA4KSk7XG4gICAgICAgIHJldHVybiBuZXcgVWludDhBcnJheShidWZmKTtcbiAgICB9XG5cbiAgICBhbGxvY0ludCgpIHtcbiAgICAgICAgY29uc3QgcCA9IHRoaXMuaTMyWzBdO1xuICAgICAgICB0aGlzLmkzMlswXSA9IHAgKyA4O1xuICAgICAgICByZXR1cm4gcDtcbiAgICB9XG5cbiAgICBhbGxvY0ZyKCkge1xuICAgICAgICBjb25zdCBwID0gdGhpcy5pMzJbMF07XG4gICAgICAgIHRoaXMuaTMyWzBdID0gcCArIHRoaXMubjMyICogNCArIDg7XG4gICAgICAgIHJldHVybiBwO1xuICAgIH1cblxuICAgIGdldEludChwKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmkzMltwID4+IDJdO1xuICAgIH1cblxuICAgIHNldEludChwLCB2KSB7XG4gICAgICAgIHRoaXMuaTMyW3AgPj4gMl0gPSB2O1xuICAgIH1cblxuICAgIGdldEZyKHApIHtcbiAgICAgICAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gICAgICAgIGNvbnN0IGlkeCA9IChwID4+IDIpO1xuXG4gICAgICAgIGlmIChzZWxmLmkzMltpZHggKyAxXSAmIDB4ODAwMDAwMDApIHtcbiAgICAgICAgICAgIGNvbnN0IGFyciA9IG5ldyBBcnJheShzZWxmLm4zMik7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNlbGYubjMyOyBpKyspIHtcbiAgICAgICAgICAgICAgICBhcnJbc2VsZi5uMzIgLSAxIC0gaV0gPSBzZWxmLmkzMltpZHggKyAyICsgaV07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCByZXMgPSBzZWxmLkZyLmUoU2NhbGFyLmZyb21BcnJheShhcnIsIDB4MTAwMDAwMDAwKSk7XG4gICAgICAgICAgICBpZiAoc2VsZi5pMzJbaWR4ICsgMV0gJiAweDQwMDAwMDAwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZyb21Nb250Z29tZXJ5KHJlcyk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiByZXM7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChzZWxmLmkzMltpZHhdICYgMHg4MDAwMDAwMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLkZyLmUoc2VsZi5pMzJbaWR4XSAtIDB4MTAwMDAwMDAwKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuRnIuZShzZWxmLmkzMltpZHhdKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGZ1bmN0aW9uIGZyb21Nb250Z29tZXJ5KG4pIHtcbiAgICAgICAgICAgIHJldHVybiBzZWxmLkZyLm11bChzZWxmLlJJbnYsIG4pO1xuICAgICAgICB9XG5cbiAgICB9XG5cblxuICAgIHNldEZyKHAsIHYpIHtcbiAgICAgICAgY29uc3Qgc2VsZiA9IHRoaXM7XG5cbiAgICAgICAgdiA9IHNlbGYuRnIuZSh2KTtcblxuICAgICAgICBjb25zdCBtaW5TaG9ydCA9IHNlbGYuRnIubmVnKHNlbGYuRnIuZShcIjgwMDAwMDAwXCIsIDE2KSk7XG4gICAgICAgIGNvbnN0IG1heFNob3J0ID0gc2VsZi5Gci5lKFwiN0ZGRkZGRkZcIiwgMTYpO1xuXG4gICAgICAgIGlmICgoc2VsZi5Gci5nZXEodiwgbWluU2hvcnQpKVxuICAgICAgICAgICAgJiYgKHNlbGYuRnIubGVxKHYsIG1heFNob3J0KSkpIHtcbiAgICAgICAgICAgIGxldCBhO1xuICAgICAgICAgICAgaWYgKHNlbGYuRnIuZ2VxKHYsIHNlbGYuRnIuemVybykpIHtcbiAgICAgICAgICAgICAgICBhID0gU2NhbGFyLnRvTnVtYmVyKHYpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBhID0gU2NhbGFyLnRvTnVtYmVyKHNlbGYuRnIuc3ViKHYsIG1pblNob3J0KSk7XG4gICAgICAgICAgICAgICAgYSA9IGEgLSAweDgwMDAwMDAwO1xuICAgICAgICAgICAgICAgIGEgPSAweDEwMDAwMDAwMCArIGE7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzZWxmLmkzMlsocCA+PiAyKV0gPSBhO1xuICAgICAgICAgICAgc2VsZi5pMzJbKHAgPj4gMikgKyAxXSA9IDA7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBzZWxmLmkzMlsocCA+PiAyKV0gPSAwO1xuICAgICAgICBzZWxmLmkzMlsocCA+PiAyKSArIDFdID0gMHg4MDAwMDAwMDtcbiAgICAgICAgY29uc3QgYXJyID0gU2NhbGFyLnRvQXJyYXkodiwgMHgxMDAwMDAwMDApO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNlbGYubjMyOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IGlkeCA9IGFyci5sZW5ndGggLSAxIC0gaTtcblxuICAgICAgICAgICAgaWYgKGlkeCA+PSAwKSB7XG4gICAgICAgICAgICAgICAgc2VsZi5pMzJbKHAgPj4gMikgKyAyICsgaV0gPSBhcnJbaWR4XTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgc2VsZi5pMzJbKHAgPj4gMikgKyAyICsgaV0gPSAwO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuXG5jbGFzcyBXaXRuZXNzQ2FsY3VsYXRvckNpcmNvbTIge1xuICAgIGNvbnN0cnVjdG9yKGluc3RhbmNlLCBzYW5pdHlDaGVjaykge1xuICAgICAgICB0aGlzLmluc3RhbmNlID0gaW5zdGFuY2U7XG5cbiAgICAgICAgdGhpcy52ZXJzaW9uID0gdGhpcy5pbnN0YW5jZS5leHBvcnRzLmdldFZlcnNpb24oKTtcbiAgICAgICAgdGhpcy5uMzIgPSB0aGlzLmluc3RhbmNlLmV4cG9ydHMuZ2V0RmllbGROdW1MZW4zMigpO1xuXG4gICAgICAgIHRoaXMuaW5zdGFuY2UuZXhwb3J0cy5nZXRSYXdQcmltZSgpO1xuICAgICAgICBjb25zdCBhcnIgPSBuZXcgVWludDMyQXJyYXkodGhpcy5uMzIpO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMubjMyOyBpKyspIHtcbiAgICAgICAgICAgIGFyclt0aGlzLm4zMiAtIDEgLSBpXSA9IHRoaXMuaW5zdGFuY2UuZXhwb3J0cy5yZWFkU2hhcmVkUldNZW1vcnkoaSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5wcmltZSA9IFNjYWxhci5mcm9tQXJyYXkoYXJyLCAweDEwMDAwMDAwMCk7XG5cbiAgICAgICAgdGhpcy53aXRuZXNzU2l6ZSA9IHRoaXMuaW5zdGFuY2UuZXhwb3J0cy5nZXRXaXRuZXNzU2l6ZSgpO1xuXG4gICAgICAgIHRoaXMuc2FuaXR5Q2hlY2sgPSBzYW5pdHlDaGVjaztcbiAgICB9XG5cbiAgICBjaXJjb21fdmVyc2lvbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaW5zdGFuY2UuZXhwb3J0cy5nZXRWZXJzaW9uKCk7XG4gICAgfVxuXG4gICAgYXN5bmMgX2RvQ2FsY3VsYXRlV2l0bmVzcyhpbnB1dCwgc2FuaXR5Q2hlY2spIHtcbiAgICAgICAgLy9pbnB1dCBpcyBhc3N1bWVkIHRvIGJlIGEgbWFwIGZyb20gc2lnbmFscyB0byBhcnJheXMgb2YgYmlnaW50c1xuICAgICAgICB0aGlzLmluc3RhbmNlLmV4cG9ydHMuaW5pdCgodGhpcy5zYW5pdHlDaGVjayB8fCBzYW5pdHlDaGVjaykgPyAxIDogMCk7XG4gICAgICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhpbnB1dCk7XG4gICAgICAgIGxldCBpbnB1dF9jb3VudGVyID0gMDtcbiAgICAgICAga2V5cy5mb3JFYWNoKChrKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBoID0gZm52SGFzaChrKTtcbiAgICAgICAgICAgIGNvbnN0IGhNU0IgPSBwYXJzZUludChoLnNsaWNlKDAsIDgpLCAxNik7XG4gICAgICAgICAgICBjb25zdCBoTFNCID0gcGFyc2VJbnQoaC5zbGljZSg4LCAxNiksIDE2KTtcbiAgICAgICAgICAgIGNvbnN0IGZBcnIgPSBmbGF0QXJyYXkoaW5wdXRba10pO1xuICAgICAgICAgICAgLy8gU2xpZ2h0IGRldmlhdGlvbiBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9pZGVuMy9jaXJjb20vYmxvYi92Mi4xLjYvY29kZV9wcm9kdWNlcnMvc3JjL3dhc21fZWxlbWVudHMvY29tbW9uL3dpdG5lc3NfY2FsY3VsYXRvci5qc1xuICAgICAgICAgICAgLy8gYmVjYXVzZSBJIGRvbid0IGtub3cgd2hlbiB0aGlzIGV4cG9ydGVkIGZ1bmN0aW9uIHdhcyBhZGRlZFxuICAgICAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmluc3RhbmNlLmV4cG9ydHMuZ2V0SW5wdXRTaWduYWxTaXplID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgICAgICAgICBsZXQgc2lnbmFsU2l6ZSA9IHRoaXMuaW5zdGFuY2UuZXhwb3J0cy5nZXRJbnB1dFNpZ25hbFNpemUoaE1TQiwgaExTQik7XG4gICAgICAgICAgICAgICAgaWYgKHNpZ25hbFNpemUgPCAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgU2lnbmFsICR7a30gbm90IGZvdW5kXFxuYCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChmQXJyLmxlbmd0aCA8IHNpZ25hbFNpemUpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBOb3QgZW5vdWdoIHZhbHVlcyBmb3IgaW5wdXQgc2lnbmFsICR7a31cXG5gKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGZBcnIubGVuZ3RoID4gc2lnbmFsU2l6ZSkge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFRvbyBtYW55IHZhbHVlcyBmb3IgaW5wdXQgc2lnbmFsICR7a31cXG5gKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGZBcnIubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICBjb25zdCBhcnJGciA9IHRvQXJyYXkzMihub3JtYWxpemUoZkFycltpXSwgdGhpcy5wcmltZSksIHRoaXMubjMyKTtcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMubjMyOyBqKyspIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbnN0YW5jZS5leHBvcnRzLndyaXRlU2hhcmVkUldNZW1vcnkoaiwgYXJyRnJbdGhpcy5uMzIgLSAxIC0gal0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmluc3RhbmNlLmV4cG9ydHMuc2V0SW5wdXRTaWduYWwoaE1TQiwgaExTQiwgaSk7XG4gICAgICAgICAgICAgICAgICAgIGlucHV0X2NvdW50ZXIrKztcbiAgICAgICAgICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coYEFmdGVyIGFkZGluZyBzaWduYWwgJHtpfSBvZiAke2t9YClcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGVycik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgIH0pO1xuICAgICAgICBpZiAoaW5wdXRfY291bnRlciA8IHRoaXMuaW5zdGFuY2UuZXhwb3J0cy5nZXRJbnB1dFNpemUoKSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBOb3QgYWxsIGlucHV0cyBoYXZlIGJlZW4gc2V0LiBPbmx5ICR7aW5wdXRfY291bnRlcn0gb3V0IG9mICR7dGhpcy5pbnN0YW5jZS5leHBvcnRzLmdldElucHV0U2l6ZSgpfWApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgYXN5bmMgY2FsY3VsYXRlV2l0bmVzcyhpbnB1dCwgc2FuaXR5Q2hlY2spIHtcbiAgICAgICAgY29uc3QgdyA9IFtdO1xuXG4gICAgICAgIGF3YWl0IHRoaXMuX2RvQ2FsY3VsYXRlV2l0bmVzcyhpbnB1dCwgc2FuaXR5Q2hlY2spO1xuXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy53aXRuZXNzU2l6ZTsgaSsrKSB7XG4gICAgICAgICAgICB0aGlzLmluc3RhbmNlLmV4cG9ydHMuZ2V0V2l0bmVzcyhpKTtcbiAgICAgICAgICAgIGNvbnN0IGFyciA9IG5ldyBVaW50MzJBcnJheSh0aGlzLm4zMik7XG4gICAgICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMubjMyOyBqKyspIHtcbiAgICAgICAgICAgICAgICBhcnJbdGhpcy5uMzIgLSAxIC0gal0gPSB0aGlzLmluc3RhbmNlLmV4cG9ydHMucmVhZFNoYXJlZFJXTWVtb3J5KGopO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdy5wdXNoKFNjYWxhci5mcm9tQXJyYXkoYXJyLCAweDEwMDAwMDAwMCkpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHc7XG4gICAgfVxuXG4gICAgYXN5bmMgY2FsY3VsYXRlV1ROU0JpbihpbnB1dCwgc2FuaXR5Q2hlY2spIHtcbiAgICAgICAgY29uc3QgYnVmZjMyID0gbmV3IFVpbnQzMkFycmF5KHRoaXMud2l0bmVzc1NpemUgKiB0aGlzLm4zMiArIHRoaXMubjMyICsgMTEpO1xuICAgICAgICBjb25zdCBidWZmID0gbmV3IFVpbnQ4QXJyYXkoYnVmZjMyLmJ1ZmZlcik7XG4gICAgICAgIGF3YWl0IHRoaXMuX2RvQ2FsY3VsYXRlV2l0bmVzcyhpbnB1dCwgc2FuaXR5Q2hlY2spO1xuXG4gICAgICAgIC8vXCJ3dG5zXCJcbiAgICAgICAgYnVmZlswXSA9IFwid1wiLmNoYXJDb2RlQXQoMCk7XG4gICAgICAgIGJ1ZmZbMV0gPSBcInRcIi5jaGFyQ29kZUF0KDApO1xuICAgICAgICBidWZmWzJdID0gXCJuXCIuY2hhckNvZGVBdCgwKTtcbiAgICAgICAgYnVmZlszXSA9IFwic1wiLmNoYXJDb2RlQXQoMCk7XG5cbiAgICAgICAgLy92ZXJzaW9uIDJcbiAgICAgICAgYnVmZjMyWzFdID0gMjtcblxuICAgICAgICAvL251bWJlciBvZiBzZWN0aW9uczogMlxuICAgICAgICBidWZmMzJbMl0gPSAyO1xuXG4gICAgICAgIC8vaWQgc2VjdGlvbiAxXG4gICAgICAgIGJ1ZmYzMlszXSA9IDE7XG5cbiAgICAgICAgY29uc3QgbjggPSB0aGlzLm4zMiAqIDQ7XG4gICAgICAgIC8vaWQgc2VjdGlvbiAxIGxlbmd0aCBpbiA2NGJ5dGVzXG4gICAgICAgIGNvbnN0IGlkU2VjdGlvbjFsZW5ndGggPSA4ICsgbjg7XG4gICAgICAgIGNvbnN0IGlkU2VjdGlvbjFsZW5ndGhIZXggPSBpZFNlY3Rpb24xbGVuZ3RoLnRvU3RyaW5nKDE2KTtcbiAgICAgICAgYnVmZjMyWzRdID0gcGFyc2VJbnQoaWRTZWN0aW9uMWxlbmd0aEhleC5zbGljZSgwLCA4KSwgMTYpO1xuICAgICAgICBidWZmMzJbNV0gPSBwYXJzZUludChpZFNlY3Rpb24xbGVuZ3RoSGV4LnNsaWNlKDgsIDE2KSwgMTYpO1xuXG4gICAgICAgIC8vdGhpcy5uMzJcbiAgICAgICAgYnVmZjMyWzZdID0gbjg7XG5cbiAgICAgICAgLy9wcmltZSBudW1iZXJcbiAgICAgICAgdGhpcy5pbnN0YW5jZS5leHBvcnRzLmdldFJhd1ByaW1lKCk7XG5cbiAgICAgICAgbGV0IHBvcyA9IDc7XG4gICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5uMzI7IGorKykge1xuICAgICAgICAgICAgYnVmZjMyW3BvcyArIGpdID0gdGhpcy5pbnN0YW5jZS5leHBvcnRzLnJlYWRTaGFyZWRSV01lbW9yeShqKTtcbiAgICAgICAgfVxuICAgICAgICBwb3MgKz0gdGhpcy5uMzI7XG5cbiAgICAgICAgLy8gd2l0bmVzcyBzaXplXG4gICAgICAgIGJ1ZmYzMltwb3NdID0gdGhpcy53aXRuZXNzU2l6ZTtcbiAgICAgICAgcG9zKys7XG5cbiAgICAgICAgLy9pZCBzZWN0aW9uIDJcbiAgICAgICAgYnVmZjMyW3Bvc10gPSAyO1xuICAgICAgICBwb3MrKztcblxuICAgICAgICAvLyBzZWN0aW9uIDIgbGVuZ3RoXG4gICAgICAgIGNvbnN0IGlkU2VjdGlvbjJsZW5ndGggPSBuOCAqIHRoaXMud2l0bmVzc1NpemU7XG4gICAgICAgIGNvbnN0IGlkU2VjdGlvbjJsZW5ndGhIZXggPSBpZFNlY3Rpb24ybGVuZ3RoLnRvU3RyaW5nKDE2KTtcbiAgICAgICAgYnVmZjMyW3Bvc10gPSBwYXJzZUludChpZFNlY3Rpb24ybGVuZ3RoSGV4LnNsaWNlKDAsIDgpLCAxNik7XG4gICAgICAgIGJ1ZmYzMltwb3MgKyAxXSA9IHBhcnNlSW50KGlkU2VjdGlvbjJsZW5ndGhIZXguc2xpY2UoOCwgMTYpLCAxNik7XG5cbiAgICAgICAgcG9zICs9IDI7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy53aXRuZXNzU2l6ZTsgaSsrKSB7XG4gICAgICAgICAgICB0aGlzLmluc3RhbmNlLmV4cG9ydHMuZ2V0V2l0bmVzcyhpKTtcbiAgICAgICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5uMzI7IGorKykge1xuICAgICAgICAgICAgICAgIGJ1ZmYzMltwb3MgKyBqXSA9IHRoaXMuaW5zdGFuY2UuZXhwb3J0cy5yZWFkU2hhcmVkUldNZW1vcnkoaik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBwb3MgKz0gdGhpcy5uMzI7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gYnVmZjtcbiAgICB9XG5cbn1cbiIsIi8qXG4gICAgQ29weXJpZ2h0IDIwMTggMEtJTVMgYXNzb2NpYXRpb24uXG5cbiAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBzbmFya0pTLlxuXG4gICAgc25hcmtKUyBpcyBhIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXRcbiAgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yXG4gICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cblxuICAgIHNuYXJrSlMgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVRcbiAgICBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFlcbiAgICBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWNcbiAgICBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG5cbiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICAgIGFsb25nIHdpdGggc25hcmtKUy4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cbiovXG5cbmltcG9ydCAqIGFzIGZhc3RGaWxlIGZyb20gXCJmYXN0ZmlsZVwiO1xuaW1wb3J0IHsgV2l0bmVzc0NhbGN1bGF0b3JCdWlsZGVyIH0gZnJvbSBcImNpcmNvbV9ydW50aW1lXCI7XG5pbXBvcnQgKiBhcyB3dG5zVXRpbHMgZnJvbSBcIi4vd3Ruc191dGlscy5qc1wiO1xuaW1wb3J0ICogYXMgYmluRmlsZVV0aWxzIGZyb20gXCJAaWRlbjMvYmluZmlsZXV0aWxzXCI7XG5pbXBvcnQgeyAgdXRpbHMgfSAgIGZyb20gXCJmZmphdmFzY3JpcHRcIjtcbmNvbnN0IHsgdW5zdHJpbmdpZnlCaWdJbnRzfSA9IHV0aWxzO1xuXG5leHBvcnQgZGVmYXVsdCBhc3luYyBmdW5jdGlvbiB3dG5zQ2FsY3VsYXRlKF9pbnB1dCwgd2FzbUZpbGVOYW1lLCB3dG5zRmlsZU5hbWUsIG9wdGlvbnMpIHtcbiAgICBjb25zdCBpbnB1dCA9IHVuc3RyaW5naWZ5QmlnSW50cyhfaW5wdXQpO1xuXG4gICAgY29uc3QgZmRXYXNtID0gYXdhaXQgZmFzdEZpbGUucmVhZEV4aXN0aW5nKHdhc21GaWxlTmFtZSk7XG4gICAgY29uc3Qgd2FzbSA9IGF3YWl0IGZkV2FzbS5yZWFkKGZkV2FzbS50b3RhbFNpemUpO1xuICAgIGF3YWl0IGZkV2FzbS5jbG9zZSgpO1xuXG4gICAgY29uc3Qgd2MgPSBhd2FpdCBXaXRuZXNzQ2FsY3VsYXRvckJ1aWxkZXIod2FzbSwgb3B0aW9ucyk7XG4gICAgaWYgKHdjLmNpcmNvbV92ZXJzaW9uKCkgPT09IDEpIHtcbiAgICAgICAgY29uc3QgdyA9IGF3YWl0IHdjLmNhbGN1bGF0ZUJpbldpdG5lc3MoaW5wdXQpO1xuXG4gICAgICAgIGNvbnN0IGZkV3RucyA9IGF3YWl0IGJpbkZpbGVVdGlscy5jcmVhdGVCaW5GaWxlKHd0bnNGaWxlTmFtZSwgXCJ3dG5zXCIsIDIsIDIpO1xuXG4gICAgICAgIGF3YWl0IHd0bnNVdGlscy53cml0ZUJpbihmZFd0bnMsIHcsIHdjLnByaW1lKTtcbiAgICAgICAgYXdhaXQgZmRXdG5zLmNsb3NlKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgZmRXdG5zID0gYXdhaXQgZmFzdEZpbGUuY3JlYXRlT3ZlcnJpZGUod3Ruc0ZpbGVOYW1lKTtcblxuICAgICAgICBjb25zdCB3ID0gYXdhaXQgd2MuY2FsY3VsYXRlV1ROU0JpbihpbnB1dCk7XG5cbiAgICAgICAgYXdhaXQgZmRXdG5zLndyaXRlKHcpO1xuICAgICAgICBhd2FpdCBmZFd0bnMuY2xvc2UoKTtcbiAgICB9XG59XG4iLCIvKlxuICAgIENvcHlyaWdodCAyMDE4IDBLSU1TIGFzc29jaWF0aW9uLlxuXG4gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2Ygc25hcmtKUy5cblxuICAgIHNuYXJrSlMgaXMgYSBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0XG4gICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxuICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG5cbiAgICBzbmFya0pTIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUXG4gICAgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZXG4gICAgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljXG4gICAgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuXG4gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAgICBhbG9uZyB3aXRoIHNuYXJrSlMuIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXG4qL1xuXG5pbXBvcnQgZ3JvdGgxNl9wcm92ZSBmcm9tIFwiLi9ncm90aDE2X3Byb3ZlLmpzXCI7XG5pbXBvcnQgd3Ruc19jYWxjdWxhdGUgZnJvbSBcIi4vd3Ruc19jYWxjdWxhdGUuanNcIjtcbmltcG9ydCB7dXRpbHN9IGZyb20gXCJmZmphdmFzY3JpcHRcIjtcbmNvbnN0IHt1bnN0cmluZ2lmeUJpZ0ludHN9ID0gdXRpbHM7XG5cbmV4cG9ydCBkZWZhdWx0IGFzeW5jIGZ1bmN0aW9uIGdyb3RoMTZGdWxsUHJvdmUoX2lucHV0LCB3YXNtRmlsZSwgemtleUZpbGVOYW1lLCBsb2dnZXIsIHd0bnNDYWxjT3B0aW9ucykge1xuICAgIGNvbnN0IGlucHV0ID0gdW5zdHJpbmdpZnlCaWdJbnRzKF9pbnB1dCk7XG5cbiAgICBjb25zdCB3dG5zPSB7XG4gICAgICAgIHR5cGU6IFwibWVtXCJcbiAgICB9O1xuICAgIGF3YWl0IHd0bnNfY2FsY3VsYXRlKGlucHV0LCB3YXNtRmlsZSwgd3Rucywgd3Ruc0NhbGNPcHRpb25zKTtcbiAgICByZXR1cm4gYXdhaXQgZ3JvdGgxNl9wcm92ZSh6a2V5RmlsZU5hbWUsIHd0bnMsIGxvZ2dlcik7XG59XG4iLCIvKlxuICAgIENvcHlyaWdodCAyMDE4IDBraW1zIGFzc29jaWF0aW9uLlxuXG4gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2Ygc25hcmtqcy5cblxuICAgIHNuYXJranMgaXMgYSBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3JcbiAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlXG4gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pXG4gICAgYW55IGxhdGVyIHZlcnNpb24uXG5cbiAgICBzbmFya2pzIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZXG4gICAgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yXG4gICAgbW9yZSBkZXRhaWxzLlxuXG4gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcgd2l0aFxuICAgIHNuYXJranMuIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXG4qL1xuXG4vKiBJbXBsZW1lbnRhdGlvbiBvZiB0aGlzIHBhcGVyOiBodHRwczovL2VwcmludC5pYWNyLm9yZy8yMDE2LzI2MC5wZGYgKi9cbmltcG9ydCB7IFNjYWxhciB9IGZyb20gXCJmZmphdmFzY3JpcHRcIjtcbmltcG9ydCAqIGFzIGN1cnZlcyBmcm9tIFwiLi9jdXJ2ZXMuanNcIjtcbmltcG9ydCB7ICB1dGlscyB9ICAgZnJvbSBcImZmamF2YXNjcmlwdFwiO1xuY29uc3Qge3Vuc3RyaW5naWZ5QmlnSW50c30gPSB1dGlscztcblxuZXhwb3J0IGRlZmF1bHQgYXN5bmMgZnVuY3Rpb24gZ3JvdGgxNlZlcmlmeShfdmtfdmVyaWZpZXIsIF9wdWJsaWNTaWduYWxzLCBfcHJvb2YsIGxvZ2dlcikge1xuLypcbiAgICBsZXQgY3B1YiA9IHZrX3ZlcmlmaWVyLklDWzBdO1xuICAgIGZvciAobGV0IHM9IDA7IHM8IHZrX3ZlcmlmaWVyLm5QdWJsaWM7IHMrKykge1xuICAgICAgICBjcHViICA9IEcxLmFkZCggY3B1YiwgRzEudGltZXNTY2FsYXIoIHZrX3ZlcmlmaWVyLklDW3MrMV0sIHB1YmxpY1NpZ25hbHNbc10pKTtcbiAgICB9XG4qL1xuXG4gICAgY29uc3QgdmtfdmVyaWZpZXIgPSB1bnN0cmluZ2lmeUJpZ0ludHMoX3ZrX3ZlcmlmaWVyKTtcbiAgICBjb25zdCBwcm9vZiA9IHVuc3RyaW5naWZ5QmlnSW50cyhfcHJvb2YpO1xuICAgIGNvbnN0IHB1YmxpY1NpZ25hbHMgPSB1bnN0cmluZ2lmeUJpZ0ludHMoX3B1YmxpY1NpZ25hbHMpO1xuXG4gICAgY29uc3QgY3VydmUgPSBhd2FpdCBjdXJ2ZXMuZ2V0Q3VydmVGcm9tTmFtZSh2a192ZXJpZmllci5jdXJ2ZSk7XG5cbiAgICBjb25zdCBJQzAgPSBjdXJ2ZS5HMS5mcm9tT2JqZWN0KHZrX3ZlcmlmaWVyLklDWzBdKTtcbiAgICBjb25zdCBJQyA9IG5ldyBVaW50OEFycmF5KGN1cnZlLkcxLkYubjgqMiAqIHB1YmxpY1NpZ25hbHMubGVuZ3RoKTtcbiAgICBjb25zdCB3ID0gbmV3IFVpbnQ4QXJyYXkoY3VydmUuRnIubjggKiBwdWJsaWNTaWduYWxzLmxlbmd0aCk7XG5cbiAgICBpZiAoIXB1YmxpY0lucHV0c0FyZVZhbGlkKGN1cnZlLCBwdWJsaWNTaWduYWxzKSkge1xuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZXJyb3IoXCJQdWJsaWMgaW5wdXRzIGFyZSBub3QgdmFsaWQuXCIpO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgZm9yIChsZXQgaT0wOyBpPHB1YmxpY1NpZ25hbHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgY29uc3QgYnVmZlAgPSBjdXJ2ZS5HMS5mcm9tT2JqZWN0KHZrX3ZlcmlmaWVyLklDW2krMV0pO1xuICAgICAgICBJQy5zZXQoYnVmZlAsIGkqY3VydmUuRzEuRi5uOCoyKTtcbiAgICAgICAgU2NhbGFyLnRvUnByTEUodywgY3VydmUuRnIubjgqaSwgcHVibGljU2lnbmFsc1tpXSwgY3VydmUuRnIubjgpO1xuICAgIH1cblxuICAgIGxldCBjcHViID0gYXdhaXQgY3VydmUuRzEubXVsdGlFeHBBZmZpbmUoSUMsIHcpO1xuICAgIGNwdWIgPSBjdXJ2ZS5HMS5hZGQoY3B1YiwgSUMwKTtcblxuICAgIGNvbnN0IHBpX2EgPSBjdXJ2ZS5HMS5mcm9tT2JqZWN0KHByb29mLnBpX2EpO1xuICAgIGNvbnN0IHBpX2IgPSBjdXJ2ZS5HMi5mcm9tT2JqZWN0KHByb29mLnBpX2IpO1xuICAgIGNvbnN0IHBpX2MgPSBjdXJ2ZS5HMS5mcm9tT2JqZWN0KHByb29mLnBpX2MpO1xuXG4gICAgaWYgKCFpc1dlbGxDb25zdHJ1Y3RlZChjdXJ2ZSwge3BpX2EsIHBpX2IsIHBpX2N9KSkge1xuICAgICAgICBpZihsb2dnZXIpIGxvZ2dlci5lcnJvcihcIlByb29mIGNvbW1pdG1lbnRzIGFyZSBub3QgdmFsaWQuXCIpO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgY29uc3QgdmtfZ2FtbWFfMiA9IGN1cnZlLkcyLmZyb21PYmplY3QodmtfdmVyaWZpZXIudmtfZ2FtbWFfMik7XG4gICAgY29uc3QgdmtfZGVsdGFfMiA9IGN1cnZlLkcyLmZyb21PYmplY3QodmtfdmVyaWZpZXIudmtfZGVsdGFfMik7XG4gICAgY29uc3QgdmtfYWxwaGFfMSA9IGN1cnZlLkcxLmZyb21PYmplY3QodmtfdmVyaWZpZXIudmtfYWxwaGFfMSk7XG4gICAgY29uc3QgdmtfYmV0YV8yID0gY3VydmUuRzIuZnJvbU9iamVjdCh2a192ZXJpZmllci52a19iZXRhXzIpO1xuXG4gICAgY29uc3QgcmVzID0gYXdhaXQgY3VydmUucGFpcmluZ0VxKFxuICAgICAgICBjdXJ2ZS5HMS5uZWcocGlfYSkgLCBwaV9iLFxuICAgICAgICBjcHViICwgdmtfZ2FtbWFfMixcbiAgICAgICAgcGlfYyAsIHZrX2RlbHRhXzIsXG5cbiAgICAgICAgdmtfYWxwaGFfMSwgdmtfYmV0YV8yXG4gICAgKTtcblxuICAgIGlmICghIHJlcykge1xuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZXJyb3IoXCJJbnZhbGlkIHByb29mXCIpO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oXCJPSyFcIik7XG4gICAgcmV0dXJuIHRydWU7XG59XG5cbmZ1bmN0aW9uIGlzV2VsbENvbnN0cnVjdGVkKGN1cnZlLCBwcm9vZikge1xuICAgIGNvbnN0IEcxID0gY3VydmUuRzE7XG4gICAgY29uc3QgRzIgPSBjdXJ2ZS5HMjtcblxuICAgIHJldHVybiBHMS5pc1ZhbGlkKHByb29mLnBpX2EpXG4gICAgICAgICYmIEcyLmlzVmFsaWQocHJvb2YucGlfYilcbiAgICAgICAgJiYgRzEuaXNWYWxpZChwcm9vZi5waV9jKTtcbn1cblxuZnVuY3Rpb24gcHVibGljSW5wdXRzQXJlVmFsaWQoY3VydmUsIHB1YmxpY0lucHV0cykge1xuICAgIGZvcihsZXQgaSA9IDA7IGkgPCBwdWJsaWNJbnB1dHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgaWYoIVNjYWxhci5sdChwdWJsaWNJbnB1dHNbaV0sIGN1cnZlLnIpKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG59XG4iLCIvKlxuICAgIENvcHlyaWdodCAyMDE4IDBLSU1TIGFzc29jaWF0aW9uLlxuXG4gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2Ygc25hcmtKUy5cblxuICAgIHNuYXJrSlMgaXMgYSBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0XG4gICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxuICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG5cbiAgICBzbmFya0pTIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUXG4gICAgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZXG4gICAgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljXG4gICAgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuXG4gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAgICBhbG9uZyB3aXRoIHNuYXJrSlMuIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXG4qL1xuaW1wb3J0IHsgIHV0aWxzIH0gICBmcm9tIFwiZmZqYXZhc2NyaXB0XCI7XG5jb25zdCB7IHVuc3RyaW5naWZ5QmlnSW50c30gPSB1dGlscztcblxuZnVuY3Rpb24gcDI1NihuKSB7XG4gICAgbGV0IG5zdHIgPSBuLnRvU3RyaW5nKDE2KTtcbiAgICB3aGlsZSAobnN0ci5sZW5ndGggPCA2NCkgbnN0ciA9IFwiMFwiK25zdHI7XG4gICAgbnN0ciA9IGBcIjB4JHtuc3RyfVwiYDtcbiAgICByZXR1cm4gbnN0cjtcbn1cblxuZXhwb3J0IGRlZmF1bHQgYXN5bmMgZnVuY3Rpb24gZ3JvdGgxNkV4cG9ydFNvbGlkaXR5Q2FsbERhdGEoX3Byb29mLCBfcHViKSB7XG4gICAgY29uc3QgcHJvb2YgPSB1bnN0cmluZ2lmeUJpZ0ludHMoX3Byb29mKTtcbiAgICBjb25zdCBwdWIgPSB1bnN0cmluZ2lmeUJpZ0ludHMoX3B1Yik7XG5cbiAgICBsZXQgaW5wdXRzID0gXCJcIjtcbiAgICBmb3IgKGxldCBpPTA7IGk8cHViLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGlmIChpbnB1dHMgIT0gXCJcIikgaW5wdXRzID0gaW5wdXRzICsgXCIsXCI7XG4gICAgICAgIGlucHV0cyA9IGlucHV0cyArIHAyNTYocHViW2ldKTtcbiAgICB9XG5cbiAgICBsZXQgUztcbiAgICBTPWBbJHtwMjU2KHByb29mLnBpX2FbMF0pfSwgJHtwMjU2KHByb29mLnBpX2FbMV0pfV0sYCArXG4gICAgICAgIGBbWyR7cDI1Nihwcm9vZi5waV9iWzBdWzFdKX0sICR7cDI1Nihwcm9vZi5waV9iWzBdWzBdKX1dLFske3AyNTYocHJvb2YucGlfYlsxXVsxXSl9LCAke3AyNTYocHJvb2YucGlfYlsxXVswXSl9XV0sYCArXG4gICAgICAgIGBbJHtwMjU2KHByb29mLnBpX2NbMF0pfSwgJHtwMjU2KHByb29mLnBpX2NbMV0pfV0sYCArXG4gICAgICAgIGBbJHtpbnB1dHN9XWA7XG5cbiAgICByZXR1cm4gUztcbn1cbiIsIi8qXG4gICAgQ29weXJpZ2h0IDIwMTggMEtJTVMgYXNzb2NpYXRpb24uXG5cbiAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBzbmFya0pTLlxuXG4gICAgc25hcmtKUyBpcyBhIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXRcbiAgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yXG4gICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cblxuICAgIHNuYXJrSlMgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVRcbiAgICBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFlcbiAgICBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWNcbiAgICBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG5cbiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICAgIGFsb25nIHdpdGggc25hcmtKUy4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cbiovXG5cbmV4cG9ydCB7ZGVmYXVsdCBhcyBmdWxsUHJvdmV9IGZyb20gXCIuL2dyb3RoMTZfZnVsbHByb3ZlLmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgcHJvdmV9IGZyb20gXCIuL2dyb3RoMTZfcHJvdmUuanNcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyB2ZXJpZnl9IGZyb20gXCIuL2dyb3RoMTZfdmVyaWZ5LmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgZXhwb3J0U29saWRpdHlDYWxsRGF0YX0gZnJvbSBcIi4vZ3JvdGgxNl9leHBvcnRzb2xpZGl0eWNhbGxkYXRhLmpzXCI7XG4iLCIvKlxuICAgIENvcHlyaWdodCAyMDE4IDBLSU1TIGFzc29jaWF0aW9uLlxuXG4gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2Ygc25hcmtKUy5cblxuICAgIHNuYXJrSlMgaXMgYSBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0XG4gICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxuICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG5cbiAgICBzbmFya0pTIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUXG4gICAgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZXG4gICAgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljXG4gICAgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuXG4gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAgICBhbG9uZyB3aXRoIHNuYXJrSlMuIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXG4qL1xuXG5pbXBvcnQgYmxha2UyYiBmcm9tIFwiYmxha2UyYi13YXNtXCI7XG5cbmltcG9ydCB7IENoYUNoYSB9IGZyb20gXCJmZmphdmFzY3JpcHRcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIGhhc2hUb0cyKGN1cnZlLCBoYXNoKSB7XG4gICAgY29uc3QgaGFzaFYgPSBuZXcgRGF0YVZpZXcoaGFzaC5idWZmZXIsIGhhc2guYnl0ZU9mZnNldCwgaGFzaC5ieXRlTGVuZ3RoKTtcbiAgICBjb25zdCBzZWVkID0gW107XG4gICAgZm9yIChsZXQgaT0wOyBpPDg7IGkrKykge1xuICAgICAgICBzZWVkW2ldID0gaGFzaFYuZ2V0VWludDMyKGkqNCk7XG4gICAgfVxuXG4gICAgY29uc3Qgcm5nID0gbmV3IENoYUNoYShzZWVkKTtcblxuICAgIGNvbnN0IGcyX3NwID0gY3VydmUuRzIuZnJvbVJuZyhybmcpO1xuXG4gICAgcmV0dXJuIGcyX3NwO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0RzJzcChjdXJ2ZSwgcGVyc2luYWxpemF0aW9uLCBjaGFsbGVuZ2UsIGcxcywgZzFzeCkge1xuXG4gICAgY29uc3QgaCA9IGJsYWtlMmIoNjQpO1xuICAgIGNvbnN0IGIxID0gbmV3IFVpbnQ4QXJyYXkoW3BlcnNpbmFsaXphdGlvbl0pO1xuICAgIGgudXBkYXRlKGIxKTtcbiAgICBoLnVwZGF0ZShjaGFsbGVuZ2UpO1xuICAgIGNvbnN0IGIzID0gY3VydmUuRzEudG9VbmNvbXByZXNzZWQoZzFzKTtcbiAgICBoLnVwZGF0ZSggYjMpO1xuICAgIGNvbnN0IGI0ID0gY3VydmUuRzEudG9VbmNvbXByZXNzZWQoZzFzeCk7XG4gICAgaC51cGRhdGUoIGI0KTtcbiAgICBjb25zdCBoYXNoID1oLmRpZ2VzdCgpO1xuXG4gICAgcmV0dXJuIGhhc2hUb0cyKGN1cnZlLCBoYXNoKTtcbn1cblxuZnVuY3Rpb24gY2FsY3VsYXRlUHViS2V5KGssIGN1cnZlLCBwZXJzb25hbGl6YXRpb24sIGNoYWxsZW5nZUhhc2gsIHJuZyApIHtcbiAgICBrLmcxX3MgPSBjdXJ2ZS5HMS50b0FmZmluZShjdXJ2ZS5HMS5mcm9tUm5nKHJuZykpO1xuICAgIGsuZzFfc3ggPSBjdXJ2ZS5HMS50b0FmZmluZShjdXJ2ZS5HMS50aW1lc0ZyKGsuZzFfcywgay5wcnZLZXkpKTtcbiAgICBrLmcyX3NwID0gY3VydmUuRzIudG9BZmZpbmUoZ2V0RzJzcChjdXJ2ZSwgcGVyc29uYWxpemF0aW9uLCBjaGFsbGVuZ2VIYXNoLCBrLmcxX3MsIGsuZzFfc3gpKTtcbiAgICBrLmcyX3NweCA9IGN1cnZlLkcyLnRvQWZmaW5lKGN1cnZlLkcyLnRpbWVzRnIoay5nMl9zcCwgay5wcnZLZXkpKTtcbiAgICByZXR1cm4gaztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVBUYXVLZXkoY3VydmUsIGNoYWxsZW5nZUhhc2gsIHJuZykge1xuICAgIGNvbnN0IGtleSA9IHtcbiAgICAgICAgdGF1OiB7fSxcbiAgICAgICAgYWxwaGE6IHt9LFxuICAgICAgICBiZXRhOiB7fVxuICAgIH07XG4gICAga2V5LnRhdS5wcnZLZXkgPSBjdXJ2ZS5Gci5mcm9tUm5nKHJuZyk7XG4gICAga2V5LmFscGhhLnBydktleSA9IGN1cnZlLkZyLmZyb21Sbmcocm5nKTtcbiAgICBrZXkuYmV0YS5wcnZLZXkgPSBjdXJ2ZS5Gci5mcm9tUm5nKHJuZyk7XG4gICAgY2FsY3VsYXRlUHViS2V5KGtleS50YXUsIGN1cnZlLCAwLCBjaGFsbGVuZ2VIYXNoLCBybmcpO1xuICAgIGNhbGN1bGF0ZVB1YktleShrZXkuYWxwaGEsIGN1cnZlLCAxLCBjaGFsbGVuZ2VIYXNoLCBybmcpO1xuICAgIGNhbGN1bGF0ZVB1YktleShrZXkuYmV0YSwgY3VydmUsIDIsIGNoYWxsZW5nZUhhc2gsIHJuZyk7XG4gICAgcmV0dXJuIGtleTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZURlbHRhS2V5KGN1cnZlLCB0cmFuc2NyaXB0LCBybmcpIHtcbiAgICBjb25zdCBkZWx0YSA9IHt9O1xuICAgIGRlbHRhLnBydktleSA9IGN1cnZlLkZyLmZyb21Sbmcocm5nKTtcbiAgICBkZWx0YS5nMV9zID0gY3VydmUuRzEudG9BZmZpbmUoY3VydmUuRzEuZnJvbVJuZyhybmcpKTtcbiAgICBkZWx0YS5nMV9zeCA9IGN1cnZlLkcxLnRvQWZmaW5lKGN1cnZlLkcxLnRpbWVzU2NhbGFyKGRlbHRhLmcxX3MsIGRlbHRhLnBydktleSkpO1xuICAgIGRlbHRhLmcyX3NwID0gaGFzaFRvRzIoY3VydmUsIHRyYW5zY3JpcHQpO1xuICAgIGRlbHRhLmcyX3NweCA9IGN1cnZlLkcyLnRvQWZmaW5lKGN1cnZlLkcyLnRpbWVzU2NhbGFyKGRlbHRhLmcyX3NwLCBkZWx0YS5wcnZLZXkpKTtcbiAgICByZXR1cm4gZGVsdGE7XG59XG4iLCIvKlxuICAgIENvcHlyaWdodCAyMDE4IDBLSU1TIGFzc29jaWF0aW9uLlxuXG4gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2Ygc25hcmtKUy5cblxuICAgIHNuYXJrSlMgaXMgYSBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0XG4gICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxuICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG5cbiAgICBzbmFya0pTIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUXG4gICAgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZXG4gICAgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljXG4gICAgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuXG4gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAgICBhbG9uZyB3aXRoIHNuYXJrSlMuIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXG4qL1xuXG5pbXBvcnQgeyBTY2FsYXIgfSBmcm9tIFwiZmZqYXZhc2NyaXB0XCI7XG5pbXBvcnQgQmxha2UyYiBmcm9tIFwiYmxha2UyYi13YXNtXCI7XG5pbXBvcnQgKiBhcyBrZXlQYWlyIGZyb20gXCIuL2tleXBhaXIuanNcIjtcbmltcG9ydCAqIGFzIG1pc2MgZnJvbSBcIi4vbWlzYy5qc1wiO1xuaW1wb3J0IHsgZ2V0Q3VydmVGcm9tUSB9IGZyb20gXCIuL2N1cnZlcy5qc1wiO1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gd3JpdGVQVGF1SGVhZGVyKGZkLCBjdXJ2ZSwgcG93ZXIsIGNlcmVtb255UG93ZXIpIHtcbiAgICAvLyBXcml0ZSB0aGUgaGVhZGVyXG4gICAgLy8vLy8vLy8vLy9cblxuICAgIGlmICghIGNlcmVtb255UG93ZXIpIGNlcmVtb255UG93ZXIgPSBwb3dlcjtcbiAgICBhd2FpdCBmZC53cml0ZVVMRTMyKDEpOyAvLyBIZWFkZXIgdHlwZVxuICAgIGNvbnN0IHBIZWFkZXJTaXplID0gZmQucG9zO1xuICAgIGF3YWl0IGZkLndyaXRlVUxFNjQoMCk7IC8vIFRlbXBvcmFsbHkgc2V0IHRvIDAgbGVuZ3RoXG5cbiAgICBhd2FpdCBmZC53cml0ZVVMRTMyKGN1cnZlLkYxLm42NCo4KTtcblxuICAgIGNvbnN0IGJ1ZmYgPSBuZXcgVWludDhBcnJheShjdXJ2ZS5GMS5uOCk7XG4gICAgU2NhbGFyLnRvUnByTEUoYnVmZiwgMCwgY3VydmUucSwgY3VydmUuRjEubjgpO1xuICAgIGF3YWl0IGZkLndyaXRlKGJ1ZmYpO1xuICAgIGF3YWl0IGZkLndyaXRlVUxFMzIocG93ZXIpOyAgICAgICAgICAgICAgICAgICAgLy8gcG93ZXJcbiAgICBhd2FpdCBmZC53cml0ZVVMRTMyKGNlcmVtb255UG93ZXIpOyAgICAgICAgICAgICAgIC8vIHBvd2VyXG5cbiAgICBjb25zdCBoZWFkZXJTaXplID0gZmQucG9zIC0gcEhlYWRlclNpemUgLSA4O1xuXG4gICAgY29uc3Qgb2xkUG9zID0gZmQucG9zO1xuXG4gICAgYXdhaXQgZmQud3JpdGVVTEU2NChoZWFkZXJTaXplLCBwSGVhZGVyU2l6ZSk7XG5cbiAgICBmZC5wb3MgPSBvbGRQb3M7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZWFkUFRhdUhlYWRlcihmZCwgc2VjdGlvbnMpIHtcbiAgICBpZiAoIXNlY3Rpb25zWzFdKSAgdGhyb3cgbmV3IEVycm9yKGZkLmZpbGVOYW1lICsgXCI6IEZpbGUgaGFzIG5vICBoZWFkZXJcIik7XG4gICAgaWYgKHNlY3Rpb25zWzFdLmxlbmd0aD4xKSB0aHJvdyBuZXcgRXJyb3IoZmQuZmlsZU5hbWUgK1wiOiBGaWxlIGhhcyBtb3JlIHRoYW4gb25lIGhlYWRlclwiKTtcblxuICAgIGZkLnBvcyA9IHNlY3Rpb25zWzFdWzBdLnA7XG4gICAgY29uc3QgbjggPSBhd2FpdCBmZC5yZWFkVUxFMzIoKTtcbiAgICBjb25zdCBidWZmID0gYXdhaXQgZmQucmVhZChuOCk7XG4gICAgY29uc3QgcSA9IFNjYWxhci5mcm9tUnByTEUoYnVmZik7XG5cbiAgICBjb25zdCBjdXJ2ZSA9IGF3YWl0IGdldEN1cnZlRnJvbVEocSk7XG5cbiAgICBpZiAoY3VydmUuRjEubjY0KjggIT0gbjgpIHRocm93IG5ldyBFcnJvcihmZC5maWxlTmFtZSArXCI6IEludmFsaWQgc2l6ZVwiKTtcblxuICAgIGNvbnN0IHBvd2VyID0gYXdhaXQgZmQucmVhZFVMRTMyKCk7XG4gICAgY29uc3QgY2VyZW1vbnlQb3dlciA9IGF3YWl0IGZkLnJlYWRVTEUzMigpO1xuXG4gICAgaWYgKGZkLnBvcy1zZWN0aW9uc1sxXVswXS5wICE9IHNlY3Rpb25zWzFdWzBdLnNpemUpIHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgUFRhdSBoZWFkZXIgc2l6ZVwiKTtcblxuICAgIHJldHVybiB7Y3VydmUsIHBvd2VyLCBjZXJlbW9ueVBvd2VyfTtcbn1cblxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVhZFB0YXVQdWJLZXkoZmQsIGN1cnZlLCBtb250Z29tZXJ5KSB7XG5cbiAgICBjb25zdCBidWZmID0gYXdhaXQgZmQucmVhZChjdXJ2ZS5GMS5uOCoyKjYgKyBjdXJ2ZS5GMi5uOCoyKjMpO1xuXG4gICAgcmV0dXJuIGZyb21QdGF1UHViS2V5UnByKGJ1ZmYsIDAsIGN1cnZlLCBtb250Z29tZXJ5KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZyb21QdGF1UHViS2V5UnByKGJ1ZmYsIHBvcywgY3VydmUsIG1vbnRnb21lcnkpIHtcblxuICAgIGNvbnN0IGtleSA9IHtcbiAgICAgICAgdGF1OiB7fSxcbiAgICAgICAgYWxwaGE6IHt9LFxuICAgICAgICBiZXRhOiB7fVxuICAgIH07XG5cbiAgICBrZXkudGF1LmcxX3MgPSByZWFkRzEoKTtcbiAgICBrZXkudGF1LmcxX3N4ID0gcmVhZEcxKCk7XG4gICAga2V5LmFscGhhLmcxX3MgPSByZWFkRzEoKTtcbiAgICBrZXkuYWxwaGEuZzFfc3ggPSByZWFkRzEoKTtcbiAgICBrZXkuYmV0YS5nMV9zID0gcmVhZEcxKCk7XG4gICAga2V5LmJldGEuZzFfc3ggPSByZWFkRzEoKTtcbiAgICBrZXkudGF1LmcyX3NweCA9IHJlYWRHMigpO1xuICAgIGtleS5hbHBoYS5nMl9zcHggPSByZWFkRzIoKTtcbiAgICBrZXkuYmV0YS5nMl9zcHggPSByZWFkRzIoKTtcblxuICAgIHJldHVybiBrZXk7XG5cbiAgICBmdW5jdGlvbiByZWFkRzEoKSB7XG4gICAgICAgIGxldCBwO1xuICAgICAgICBpZiAobW9udGdvbWVyeSkge1xuICAgICAgICAgICAgcCA9IGN1cnZlLkcxLmZyb21ScHJMRU0oIGJ1ZmYsIHBvcyApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcCA9IGN1cnZlLkcxLmZyb21ScHJVbmNvbXByZXNzZWQoIGJ1ZmYsIHBvcyApO1xuICAgICAgICB9XG4gICAgICAgIHBvcyArPSBjdXJ2ZS5HMS5GLm44KjI7XG4gICAgICAgIHJldHVybiBwO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHJlYWRHMigpIHtcbiAgICAgICAgbGV0IHA7XG4gICAgICAgIGlmIChtb250Z29tZXJ5KSB7XG4gICAgICAgICAgICBwID0gY3VydmUuRzIuZnJvbVJwckxFTSggYnVmZiwgcG9zICk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBwID0gY3VydmUuRzIuZnJvbVJwclVuY29tcHJlc3NlZCggYnVmZiwgcG9zICk7XG4gICAgICAgIH1cbiAgICAgICAgcG9zICs9IGN1cnZlLkcyLkYubjgqMjtcbiAgICAgICAgcmV0dXJuIHA7XG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdG9QdGF1UHViS2V5UnByKGJ1ZmYsIHBvcywgY3VydmUsIGtleSwgbW9udGdvbWVyeSkge1xuXG4gICAgd3JpdGVHMShrZXkudGF1LmcxX3MpO1xuICAgIHdyaXRlRzEoa2V5LnRhdS5nMV9zeCk7XG4gICAgd3JpdGVHMShrZXkuYWxwaGEuZzFfcyk7XG4gICAgd3JpdGVHMShrZXkuYWxwaGEuZzFfc3gpO1xuICAgIHdyaXRlRzEoa2V5LmJldGEuZzFfcyk7XG4gICAgd3JpdGVHMShrZXkuYmV0YS5nMV9zeCk7XG4gICAgd3JpdGVHMihrZXkudGF1LmcyX3NweCk7XG4gICAgd3JpdGVHMihrZXkuYWxwaGEuZzJfc3B4KTtcbiAgICB3cml0ZUcyKGtleS5iZXRhLmcyX3NweCk7XG5cbiAgICBhc3luYyBmdW5jdGlvbiB3cml0ZUcxKHApIHtcbiAgICAgICAgaWYgKG1vbnRnb21lcnkpIHtcbiAgICAgICAgICAgIGN1cnZlLkcxLnRvUnByTEVNKGJ1ZmYsIHBvcywgcCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjdXJ2ZS5HMS50b1JwclVuY29tcHJlc3NlZChidWZmLCBwb3MsIHApO1xuICAgICAgICB9XG4gICAgICAgIHBvcyArPSBjdXJ2ZS5GMS5uOCoyO1xuICAgIH1cblxuICAgIGFzeW5jIGZ1bmN0aW9uIHdyaXRlRzIocCkge1xuICAgICAgICBpZiAobW9udGdvbWVyeSkge1xuICAgICAgICAgICAgY3VydmUuRzIudG9ScHJMRU0oYnVmZiwgcG9zLCBwKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGN1cnZlLkcyLnRvUnByVW5jb21wcmVzc2VkKGJ1ZmYsIHBvcywgcCk7XG4gICAgICAgIH1cbiAgICAgICAgcG9zICs9IGN1cnZlLkYyLm44KjI7XG4gICAgfVxuXG4gICAgcmV0dXJuIGJ1ZmY7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB3cml0ZVB0YXVQdWJLZXkoZmQsIGN1cnZlLCBrZXksIG1vbnRnb21lcnkpIHtcbiAgICBjb25zdCBidWZmID0gbmV3IFVpbnQ4QXJyYXkoY3VydmUuRjEubjgqMio2ICsgY3VydmUuRjIubjgqMiozKTtcbiAgICB0b1B0YXVQdWJLZXlScHIoYnVmZiwgMCwgY3VydmUsIGtleSwgbW9udGdvbWVyeSk7XG4gICAgYXdhaXQgZmQud3JpdGUoYnVmZik7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHJlYWRDb250cmlidXRpb24oZmQsIGN1cnZlKSB7XG4gICAgY29uc3QgYyA9IHt9O1xuXG4gICAgYy50YXVHMSA9IGF3YWl0IHJlYWRHMSgpO1xuICAgIGMudGF1RzIgPSBhd2FpdCByZWFkRzIoKTtcbiAgICBjLmFscGhhRzEgPSBhd2FpdCByZWFkRzEoKTtcbiAgICBjLmJldGFHMSA9IGF3YWl0IHJlYWRHMSgpO1xuICAgIGMuYmV0YUcyID0gYXdhaXQgcmVhZEcyKCk7XG4gICAgYy5rZXkgPSBhd2FpdCByZWFkUHRhdVB1YktleShmZCwgY3VydmUsIHRydWUpO1xuICAgIGMucGFydGlhbEhhc2ggPSBhd2FpdCBmZC5yZWFkKDIxNik7XG4gICAgYy5uZXh0Q2hhbGxlbmdlID0gYXdhaXQgZmQucmVhZCg2NCk7XG4gICAgYy50eXBlID0gYXdhaXQgZmQucmVhZFVMRTMyKCk7XG5cbiAgICBjb25zdCBidWZmViAgPSBuZXcgVWludDhBcnJheShjdXJ2ZS5HMS5GLm44KjIqNitjdXJ2ZS5HMi5GLm44KjIqMyk7XG4gICAgdG9QdGF1UHViS2V5UnByKGJ1ZmZWLCAwLCBjdXJ2ZSwgYy5rZXksIGZhbHNlKTtcblxuICAgIGNvbnN0IHJlc3BvbnNlSGFzaGVyID0gQmxha2UyYig2NCk7XG4gICAgcmVzcG9uc2VIYXNoZXIuc2V0UGFydGlhbEhhc2goYy5wYXJ0aWFsSGFzaCk7XG4gICAgcmVzcG9uc2VIYXNoZXIudXBkYXRlKGJ1ZmZWKTtcbiAgICBjLnJlc3BvbnNlSGFzaCA9IHJlc3BvbnNlSGFzaGVyLmRpZ2VzdCgpO1xuXG4gICAgY29uc3QgcGFyYW1MZW5ndGggPSBhd2FpdCBmZC5yZWFkVUxFMzIoKTtcbiAgICBjb25zdCBjdXJQb3MgPSBmZC5wb3M7XG4gICAgbGV0IGxhc3RUeXBlID0wO1xuICAgIHdoaWxlIChmZC5wb3MtY3VyUG9zIDwgcGFyYW1MZW5ndGgpIHtcbiAgICAgICAgY29uc3QgYnVmZlR5cGUgPSBhd2FpdCByZWFkRFYoMSk7XG4gICAgICAgIGlmIChidWZmVHlwZVswXTw9IGxhc3RUeXBlKSB0aHJvdyBuZXcgRXJyb3IoXCJQYXJhbWV0ZXJzIGluIHRoZSBjb250cmlidXRpb24gbXVzdCBiZSBzb3J0ZWRcIik7XG4gICAgICAgIGxhc3RUeXBlID0gYnVmZlR5cGVbMF07XG4gICAgICAgIGlmIChidWZmVHlwZVswXT09MSkgeyAgICAgLy8gTmFtZVxuICAgICAgICAgICAgY29uc3QgYnVmZkxlbiA9IGF3YWl0IHJlYWREVigxKTtcbiAgICAgICAgICAgIGNvbnN0IGJ1ZmZTdHIgPSBhd2FpdCByZWFkRFYoYnVmZkxlblswXSk7XG4gICAgICAgICAgICBjLm5hbWUgPSBuZXcgVGV4dERlY29kZXIoKS5kZWNvZGUoYnVmZlN0cik7XG4gICAgICAgIH0gZWxzZSBpZiAoYnVmZlR5cGVbMF09PTIpIHtcbiAgICAgICAgICAgIGNvbnN0IGJ1ZmZFeHAgPSBhd2FpdCByZWFkRFYoMSk7XG4gICAgICAgICAgICBjLm51bUl0ZXJhdGlvbnNFeHAgPSBidWZmRXhwWzBdO1xuICAgICAgICB9IGVsc2UgaWYgKGJ1ZmZUeXBlWzBdPT0zKSB7XG4gICAgICAgICAgICBjb25zdCBidWZmTGVuID0gYXdhaXQgcmVhZERWKDEpO1xuICAgICAgICAgICAgYy5iZWFjb25IYXNoID0gYXdhaXQgcmVhZERWKGJ1ZmZMZW5bMF0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiUGFyYW1ldGVyIG5vdCByZWNvZ25pemVkXCIpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGlmIChmZC5wb3MgIT0gY3VyUG9zICsgcGFyYW1MZW5ndGgpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiUGFyYW1ldGVycyBkbyBub3QgbWF0Y2hcIik7XG4gICAgfVxuXG4gICAgcmV0dXJuIGM7XG5cbiAgICBhc3luYyBmdW5jdGlvbiByZWFkRzEoKSB7XG4gICAgICAgIGNvbnN0IHBCdWZmID0gYXdhaXQgZmQucmVhZChjdXJ2ZS5HMS5GLm44KjIpO1xuICAgICAgICByZXR1cm4gY3VydmUuRzEuZnJvbVJwckxFTSggcEJ1ZmYgKTtcbiAgICB9XG5cbiAgICBhc3luYyBmdW5jdGlvbiByZWFkRzIoKSB7XG4gICAgICAgIGNvbnN0IHBCdWZmID0gYXdhaXQgZmQucmVhZChjdXJ2ZS5HMi5GLm44KjIpO1xuICAgICAgICByZXR1cm4gY3VydmUuRzIuZnJvbVJwckxFTSggcEJ1ZmYgKTtcbiAgICB9XG5cbiAgICBhc3luYyBmdW5jdGlvbiByZWFkRFYobikge1xuICAgICAgICBjb25zdCBiID0gYXdhaXQgZmQucmVhZChuKTtcbiAgICAgICAgcmV0dXJuIG5ldyBVaW50OEFycmF5KGIpO1xuICAgIH1cbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlYWRDb250cmlidXRpb25zKGZkLCBjdXJ2ZSwgc2VjdGlvbnMpIHtcbiAgICBpZiAoIXNlY3Rpb25zWzddKSAgdGhyb3cgbmV3IEVycm9yKGZkLmZpbGVOYW1lICsgXCI6IEZpbGUgaGFzIG5vICBjb250cmlidXRpb25zXCIpO1xuICAgIGlmIChzZWN0aW9uc1s3XVswXS5sZW5ndGg+MSkgdGhyb3cgbmV3IEVycm9yKGZkLmZpbGVOYW1lICtcIjogRmlsZSBoYXMgbW9yZSB0aGFuIG9uZSBjb250cmlidXRpb25zIHNlY3Rpb25cIik7XG5cbiAgICBmZC5wb3MgPSBzZWN0aW9uc1s3XVswXS5wO1xuICAgIGNvbnN0IG5Db250cmlidXRpb25zID0gYXdhaXQgZmQucmVhZFVMRTMyKCk7XG4gICAgY29uc3QgY29udHJpYnV0aW9ucyA9IFtdO1xuICAgIGZvciAobGV0IGk9MDsgaTxuQ29udHJpYnV0aW9uczsgaSsrKSB7XG4gICAgICAgIGNvbnN0IGMgPSBhd2FpdCByZWFkQ29udHJpYnV0aW9uKGZkLCBjdXJ2ZSk7XG4gICAgICAgIGMuaWQgPSBpKzE7XG4gICAgICAgIGNvbnRyaWJ1dGlvbnMucHVzaChjKTtcbiAgICB9XG5cbiAgICBpZiAoZmQucG9zLXNlY3Rpb25zWzddWzBdLnAgIT0gc2VjdGlvbnNbN11bMF0uc2l6ZSkgdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBjb250cmlidXRpb24gc2VjdGlvbiBzaXplXCIpO1xuXG4gICAgcmV0dXJuIGNvbnRyaWJ1dGlvbnM7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHdyaXRlQ29udHJpYnV0aW9uKGZkLCBjdXJ2ZSwgY29udHJpYnV0aW9uKSB7XG5cbiAgICBjb25zdCBidWZmRzEgPSBuZXcgVWludDhBcnJheShjdXJ2ZS5GMS5uOCoyKTtcbiAgICBjb25zdCBidWZmRzIgPSBuZXcgVWludDhBcnJheShjdXJ2ZS5GMi5uOCoyKTtcbiAgICBhd2FpdCB3cml0ZUcxKGNvbnRyaWJ1dGlvbi50YXVHMSk7XG4gICAgYXdhaXQgd3JpdGVHMihjb250cmlidXRpb24udGF1RzIpO1xuICAgIGF3YWl0IHdyaXRlRzEoY29udHJpYnV0aW9uLmFscGhhRzEpO1xuICAgIGF3YWl0IHdyaXRlRzEoY29udHJpYnV0aW9uLmJldGFHMSk7XG4gICAgYXdhaXQgd3JpdGVHMihjb250cmlidXRpb24uYmV0YUcyKTtcbiAgICBhd2FpdCB3cml0ZVB0YXVQdWJLZXkoZmQsIGN1cnZlLCBjb250cmlidXRpb24ua2V5LCB0cnVlKTtcbiAgICBhd2FpdCBmZC53cml0ZShjb250cmlidXRpb24ucGFydGlhbEhhc2gpO1xuICAgIGF3YWl0IGZkLndyaXRlKGNvbnRyaWJ1dGlvbi5uZXh0Q2hhbGxlbmdlKTtcbiAgICBhd2FpdCBmZC53cml0ZVVMRTMyKGNvbnRyaWJ1dGlvbi50eXBlIHx8IDApO1xuXG4gICAgY29uc3QgcGFyYW1zID0gW107XG4gICAgaWYgKGNvbnRyaWJ1dGlvbi5uYW1lKSB7XG4gICAgICAgIHBhcmFtcy5wdXNoKDEpOyAgICAgIC8vIFBhcmFtIE5hbWVcbiAgICAgICAgY29uc3QgbmFtZURhdGEgPSBuZXcgVGV4dEVuY29kZXIoXCJ1dGYtOFwiKS5lbmNvZGUoY29udHJpYnV0aW9uLm5hbWUuc3Vic3RyaW5nKDAsNjQpKTtcbiAgICAgICAgcGFyYW1zLnB1c2gobmFtZURhdGEuYnl0ZUxlbmd0aCk7XG4gICAgICAgIGZvciAobGV0IGk9MDsgaTxuYW1lRGF0YS5ieXRlTGVuZ3RoOyBpKyspIHBhcmFtcy5wdXNoKG5hbWVEYXRhW2ldKTtcbiAgICB9XG4gICAgaWYgKGNvbnRyaWJ1dGlvbi50eXBlID09IDEpIHtcbiAgICAgICAgcGFyYW1zLnB1c2goMik7ICAgICAgLy8gUGFyYW0gbnVtSXRlcmF0aW9uc0V4cFxuICAgICAgICBwYXJhbXMucHVzaChjb250cmlidXRpb24ubnVtSXRlcmF0aW9uc0V4cCk7XG5cbiAgICAgICAgcGFyYW1zLnB1c2goMyk7ICAgICAgLy8gQmVhY29uIEhhc2hcbiAgICAgICAgcGFyYW1zLnB1c2goY29udHJpYnV0aW9uLmJlYWNvbkhhc2guYnl0ZUxlbmd0aCk7XG4gICAgICAgIGZvciAobGV0IGk9MDsgaTxjb250cmlidXRpb24uYmVhY29uSGFzaC5ieXRlTGVuZ3RoOyBpKyspIHBhcmFtcy5wdXNoKGNvbnRyaWJ1dGlvbi5iZWFjb25IYXNoW2ldKTtcbiAgICB9XG4gICAgaWYgKHBhcmFtcy5sZW5ndGg+MCkge1xuICAgICAgICBjb25zdCBwYXJhbXNCdWZmID0gbmV3IFVpbnQ4QXJyYXkocGFyYW1zKTtcbiAgICAgICAgYXdhaXQgZmQud3JpdGVVTEUzMihwYXJhbXNCdWZmLmJ5dGVMZW5ndGgpO1xuICAgICAgICBhd2FpdCBmZC53cml0ZShwYXJhbXNCdWZmKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBhd2FpdCBmZC53cml0ZVVMRTMyKDApO1xuICAgIH1cblxuXG4gICAgYXN5bmMgZnVuY3Rpb24gd3JpdGVHMShwKSB7XG4gICAgICAgIGN1cnZlLkcxLnRvUnByTEVNKGJ1ZmZHMSwgMCwgcCk7XG4gICAgICAgIGF3YWl0IGZkLndyaXRlKGJ1ZmZHMSk7XG4gICAgfVxuXG4gICAgYXN5bmMgZnVuY3Rpb24gd3JpdGVHMihwKSB7XG4gICAgICAgIGN1cnZlLkcyLnRvUnByTEVNKGJ1ZmZHMiwgMCwgcCk7XG4gICAgICAgIGF3YWl0IGZkLndyaXRlKGJ1ZmZHMik7XG4gICAgfVxuXG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB3cml0ZUNvbnRyaWJ1dGlvbnMoZmQsIGN1cnZlLCBjb250cmlidXRpb25zKSB7XG5cbiAgICBhd2FpdCBmZC53cml0ZVVMRTMyKDcpOyAvLyBIZWFkZXIgdHlwZVxuICAgIGNvbnN0IHBDb250cmlidXRpb25zU2l6ZSA9IGZkLnBvcztcbiAgICBhd2FpdCBmZC53cml0ZVVMRTY0KDApOyAvLyBUZW1wb3JhbGx5IHNldCB0byAwIGxlbmd0aFxuXG4gICAgYXdhaXQgZmQud3JpdGVVTEUzMihjb250cmlidXRpb25zLmxlbmd0aCk7XG4gICAgZm9yIChsZXQgaT0wOyBpPCBjb250cmlidXRpb25zLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGF3YWl0IHdyaXRlQ29udHJpYnV0aW9uKGZkLCBjdXJ2ZSwgY29udHJpYnV0aW9uc1tpXSk7XG4gICAgfVxuICAgIGNvbnN0IGNvbnRyaWJ1dGlvbnNTaXplID0gZmQucG9zIC0gcENvbnRyaWJ1dGlvbnNTaXplIC0gODtcblxuICAgIGNvbnN0IG9sZFBvcyA9IGZkLnBvcztcblxuICAgIGF3YWl0IGZkLndyaXRlVUxFNjQoY29udHJpYnV0aW9uc1NpemUsIHBDb250cmlidXRpb25zU2l6ZSk7XG4gICAgZmQucG9zID0gb2xkUG9zO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY2FsY3VsYXRlRmlyc3RDaGFsbGVuZ2VIYXNoKGN1cnZlLCBwb3dlciwgbG9nZ2VyKSB7XG4gICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmRlYnVnKFwiQ2FsY3VsYXRpbmcgRmlyc3QgQ2hhbGxlbmdlIEhhc2hcIik7XG5cbiAgICBjb25zdCBoYXNoZXIgPSBuZXcgQmxha2UyYig2NCk7XG5cbiAgICBjb25zdCB2RzEgPSBuZXcgVWludDhBcnJheShjdXJ2ZS5HMS5GLm44KjIpO1xuICAgIGNvbnN0IHZHMiA9IG5ldyBVaW50OEFycmF5KGN1cnZlLkcyLkYubjgqMik7XG4gICAgY3VydmUuRzEudG9ScHJVbmNvbXByZXNzZWQodkcxLCAwLCBjdXJ2ZS5HMS5nKTtcbiAgICBjdXJ2ZS5HMi50b1JwclVuY29tcHJlc3NlZCh2RzIsIDAsIGN1cnZlLkcyLmcpO1xuXG4gICAgaGFzaGVyLnVwZGF0ZShCbGFrZTJiKDY0KS5kaWdlc3QoKSk7XG5cbiAgICBsZXQgbjtcblxuICAgIG49KDIgKiogcG93ZXIpKjIgLTE7XG4gICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmRlYnVnKFwiQ2FsY3VsYXRlIEluaXRpYWwgSGFzaDogdGF1RzFcIik7XG4gICAgaGFzaEJsb2NrKHZHMSwgbik7XG4gICAgbj0gMiAqKiBwb3dlcjtcbiAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZGVidWcoXCJDYWxjdWxhdGUgSW5pdGlhbCBIYXNoOiB0YXVHMlwiKTtcbiAgICBoYXNoQmxvY2sodkcyLCBuKTtcbiAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZGVidWcoXCJDYWxjdWxhdGUgSW5pdGlhbCBIYXNoOiBhbHBoYVRhdUcxXCIpO1xuICAgIGhhc2hCbG9jayh2RzEsIG4pO1xuICAgIGlmIChsb2dnZXIpIGxvZ2dlci5kZWJ1ZyhcIkNhbGN1bGF0ZSBJbml0aWFsIEhhc2g6IGJldGFUYXVHMVwiKTtcbiAgICBoYXNoQmxvY2sodkcxLCBuKTtcbiAgICBoYXNoZXIudXBkYXRlKHZHMik7XG5cbiAgICByZXR1cm4gaGFzaGVyLmRpZ2VzdCgpO1xuXG4gICAgZnVuY3Rpb24gaGFzaEJsb2NrKGJ1ZmYsIG4pIHtcbiAgICAgICAgLy8gdGhpcyBibG9jayBzaXplIGlzIGEgZ29vZCBjb21wcm9taXNlIGJldHdlZW4gc3BlZWQgYW5kIHRoZSBtYXhpbXVtXG4gICAgICAgIC8vIGlucHV0IHNpemUgb2YgdGhlIEJsYWtlMmIgdXBkYXRlIG1ldGhvZCAoNjUsNTM1LDcyMCBieXRlcykuXG4gICAgICAgIGNvbnN0IGJsb2NrU2l6ZSA9IDM0MTAwMDtcbiAgICAgICAgY29uc3QgbkJsb2NrcyA9IE1hdGguZmxvb3IobiAvIGJsb2NrU2l6ZSk7XG4gICAgICAgIGNvbnN0IHJlbSA9IG4gJSBibG9ja1NpemU7XG4gICAgICAgIGNvbnN0IGJpZ0J1ZmYgPSBuZXcgVWludDhBcnJheShibG9ja1NpemUgKiBidWZmLmJ5dGVMZW5ndGgpO1xuICAgICAgICBmb3IgKGxldCBpPTA7IGk8YmxvY2tTaXplOyBpKyspIHtcbiAgICAgICAgICAgIGJpZ0J1ZmYuc2V0KGJ1ZmYsIGkqYnVmZi5ieXRlTGVuZ3RoKTtcbiAgICAgICAgfVxuICAgICAgICBmb3IgKGxldCBpPTA7IGk8bkJsb2NrczsgaSsrKSB7XG4gICAgICAgICAgICBoYXNoZXIudXBkYXRlKGJpZ0J1ZmYpO1xuICAgICAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmRlYnVnKFwiSW5pdGlhbCBoYXNoOiBcIiAraSpibG9ja1NpemUpO1xuICAgICAgICB9XG4gICAgICAgIGZvciAobGV0IGk9MDsgaTxyZW07IGkrKykge1xuICAgICAgICAgICAgaGFzaGVyLnVwZGF0ZShidWZmKTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24ga2V5RnJvbUJlYWNvbihjdXJ2ZSwgY2hhbGxlbmdlSGFzaCwgYmVhY29uSGFzaCwgbnVtSXRlcmF0aW9uc0V4cCkge1xuXG4gICAgY29uc3Qgcm5nID0gYXdhaXQgbWlzYy5ybmdGcm9tQmVhY29uUGFyYW1zKGJlYWNvbkhhc2gsIG51bUl0ZXJhdGlvbnNFeHApO1xuXG4gICAgY29uc3Qga2V5ID0ga2V5UGFpci5jcmVhdGVQVGF1S2V5KGN1cnZlLCBjaGFsbGVuZ2VIYXNoLCBybmcpO1xuXG4gICAgcmV0dXJuIGtleTtcbn1cblxuIiwiLypcbiAgICBDb3B5cmlnaHQgMjAxOCAwS0lNUyBhc3NvY2lhdGlvbi5cblxuICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHNuYXJrSlMuXG5cbiAgICBzbmFya0pTIGlzIGEgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdFxuICAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3JcbiAgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuXG4gICAgc25hcmtKUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVFxuICAgIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWVxuICAgIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpY1xuICAgIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cblxuICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gICAgYWxvbmcgd2l0aCBzbmFya0pTLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuKi9cblxuLypcbkhlYWRlcigxKVxuICAgIG44XG4gICAgcHJpbWVcbiAgICBwb3dlclxudGF1RzEoMilcbiAgICB7KDIgKiogcG93ZXIpKjItMX0gW1xuICAgICAgICBHMSwgdGF1KkcxLCB0YXVeMiAqIEcxLCAuLi4uXG4gICAgXVxudGF1RzIoMylcbiAgICB7MiAqKiBwb3dlcn1bXG4gICAgICAgIEcyLCB0YXUqRzIsIHRhdV4yICogRzIsIC4uLlxuICAgIF1cbmFscGhhVGF1RzEoNClcbiAgICB7MiAqKiBwb3dlcn1bXG4gICAgICAgIGFscGhhKkcxLCBhbHBoYSp0YXUqRzEsIGFscGhhKnRhdV4yKkcxLC4uLi5cbiAgICBdXG5iZXRhVGF1RzEoNSlcbiAgICB7MiAqKiBwb3dlcn0gW11cbiAgICAgICAgYmV0YSpHMSwgYmV0YSp0YXUqRzEsIGJldGEqdGF1XjIqRzEsIC4uLi5cbiAgICBdXG5iZXRhRzIoNilcbiAgICB7MX1bXG4gICAgICAgIGJldGEqRzJcbiAgICBdXG5jb250cmlidXRpb25zKDcpXG4gICAgTkNvbnRyaWJ1dGlvbnNcbiAgICB7TkNvbnRyaWJ1dGlvbnN9W1xuICAgICAgICB0YXUqRzFcbiAgICAgICAgdGF1KkcyXG4gICAgICAgIGFscGhhKkcxXG4gICAgICAgIGJldGEqRzFcbiAgICAgICAgYmV0YSpHMlxuICAgICAgICBwdWJLZXlcbiAgICAgICAgICAgIHRhdV9nMXNcbiAgICAgICAgICAgIHRhdV9nMXN4XG4gICAgICAgICAgICB0YXVfZzJzcHhcbiAgICAgICAgICAgIGFscGhhX2cxc1xuICAgICAgICAgICAgYWxwaGFfZzFzeFxuICAgICAgICAgICAgYWxwaGFfZzFzcHhcbiAgICAgICAgICAgIGJldGFfZzFzXG4gICAgICAgICAgICBiZXRhX2cxc3hcbiAgICAgICAgICAgIGJldGFfZzFzcHhcbiAgICAgICAgcGFydGlhbEhhc2ggKDIxNiBieXRlcykgU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9tYWZpbnRvc2gvYmxha2UyYi13YXNtL2Jsb2IvMjNiZWUwNjk0NTgwNjMwOTk3N2FmODAyYmMzNzQ3Mjc1NDI2MTdjNy9ibGFrZTJiLndhdCNMOVxuICAgICAgICBoYXNoTmV3Q2hhbGxlbmdlXG4gICAgXVxuICovXG5cbmltcG9ydCAqIGFzIHB0YXVVdGlscyBmcm9tIFwiLi9wb3dlcnNvZnRhdV91dGlscy5qc1wiO1xuaW1wb3J0ICogYXMgYmluRmlsZVV0aWxzIGZyb20gXCJAaWRlbjMvYmluZmlsZXV0aWxzXCI7XG5pbXBvcnQgQmxha2UyYiBmcm9tIFwiYmxha2UyYi13YXNtXCI7XG5pbXBvcnQgKiBhcyBtaXNjIGZyb20gXCIuL21pc2MuanNcIjtcblxuZXhwb3J0IGRlZmF1bHQgYXN5bmMgZnVuY3Rpb24gbmV3QWNjdW11bGF0b3IoY3VydmUsIHBvd2VyLCBmaWxlTmFtZSwgbG9nZ2VyKSB7XG5cbiAgICBhd2FpdCBCbGFrZTJiLnJlYWR5KCk7XG5cbiAgICBjb25zdCBmZCA9IGF3YWl0IGJpbkZpbGVVdGlscy5jcmVhdGVCaW5GaWxlKGZpbGVOYW1lLCBcInB0YXVcIiwgMSwgNyk7XG5cbiAgICBhd2FpdCBwdGF1VXRpbHMud3JpdGVQVGF1SGVhZGVyKGZkLCBjdXJ2ZSwgcG93ZXIsIDApO1xuXG4gICAgY29uc3QgYnVmZkcxID0gY3VydmUuRzEub25lQWZmaW5lO1xuICAgIGNvbnN0IGJ1ZmZHMiA9IGN1cnZlLkcyLm9uZUFmZmluZTtcblxuICAgIC8vIFdyaXRlIHRhdUcxXG4gICAgLy8vLy8vLy8vLy9cbiAgICBhd2FpdCBiaW5GaWxlVXRpbHMuc3RhcnRXcml0ZVNlY3Rpb24oZmQsIDIpO1xuICAgIGNvbnN0IG5UYXVHMSA9ICgyICoqIHBvd2VyKSAqIDIgLTE7XG4gICAgZm9yIChsZXQgaT0wOyBpPCBuVGF1RzE7IGkrKykge1xuICAgICAgICBhd2FpdCBmZC53cml0ZShidWZmRzEpO1xuICAgICAgICBpZiAoKGxvZ2dlcikmJigoaSUxMDAwMDApID09IDApJiZpKSBsb2dnZXIubG9nKFwidGF1RzE6IFwiICsgaSk7XG4gICAgfVxuICAgIGF3YWl0IGJpbkZpbGVVdGlscy5lbmRXcml0ZVNlY3Rpb24oZmQpO1xuXG4gICAgLy8gV3JpdGUgdGF1RzJcbiAgICAvLy8vLy8vLy8vL1xuICAgIGF3YWl0IGJpbkZpbGVVdGlscy5zdGFydFdyaXRlU2VjdGlvbihmZCwgMyk7XG4gICAgY29uc3QgblRhdUcyID0gKDIgKiogcG93ZXIpO1xuICAgIGZvciAobGV0IGk9MDsgaTwgblRhdUcyOyBpKyspIHtcbiAgICAgICAgYXdhaXQgZmQud3JpdGUoYnVmZkcyKTtcbiAgICAgICAgaWYgKChsb2dnZXIpJiYoKGklMTAwMDAwKSA9PSAwKSYmaSkgbG9nZ2VyLmxvZyhcInRhdUcyOiBcIiArIGkpO1xuICAgIH1cbiAgICBhd2FpdCBiaW5GaWxlVXRpbHMuZW5kV3JpdGVTZWN0aW9uKGZkKTtcblxuICAgIC8vIFdyaXRlIGFscGhhVGF1RzFcbiAgICAvLy8vLy8vLy8vL1xuICAgIGF3YWl0IGJpbkZpbGVVdGlscy5zdGFydFdyaXRlU2VjdGlvbihmZCwgNCk7XG4gICAgY29uc3QgbkFsZmFUYXVHMSA9ICgyICoqIHBvd2VyKTtcbiAgICBmb3IgKGxldCBpPTA7IGk8IG5BbGZhVGF1RzE7IGkrKykge1xuICAgICAgICBhd2FpdCBmZC53cml0ZShidWZmRzEpO1xuICAgICAgICBpZiAoKGxvZ2dlcikmJigoaSUxMDAwMDApID09IDApJiZpKSBsb2dnZXIubG9nKFwiYWxwaGFUYXVHMTogXCIgKyBpKTtcbiAgICB9XG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLmVuZFdyaXRlU2VjdGlvbihmZCk7XG5cbiAgICAvLyBXcml0ZSBiZXRhVGF1RzFcbiAgICAvLy8vLy8vLy8vL1xuICAgIGF3YWl0IGJpbkZpbGVVdGlscy5zdGFydFdyaXRlU2VjdGlvbihmZCwgNSk7XG4gICAgY29uc3QgbkJldGFUYXVHMSA9ICgyICoqIHBvd2VyKTtcbiAgICBmb3IgKGxldCBpPTA7IGk8IG5CZXRhVGF1RzE7IGkrKykge1xuICAgICAgICBhd2FpdCBmZC53cml0ZShidWZmRzEpO1xuICAgICAgICBpZiAoKGxvZ2dlcikmJigoaSUxMDAwMDApID09IDApJiZpKSBsb2dnZXIubG9nKFwiYmV0YVRhdUcxOiBcIiArIGkpO1xuICAgIH1cbiAgICBhd2FpdCBiaW5GaWxlVXRpbHMuZW5kV3JpdGVTZWN0aW9uKGZkKTtcblxuICAgIC8vIFdyaXRlIGJldGFHMlxuICAgIC8vLy8vLy8vLy8vXG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLnN0YXJ0V3JpdGVTZWN0aW9uKGZkLCA2KTtcbiAgICBhd2FpdCBmZC53cml0ZShidWZmRzIpO1xuICAgIGF3YWl0IGJpbkZpbGVVdGlscy5lbmRXcml0ZVNlY3Rpb24oZmQpO1xuXG4gICAgLy8gQ29udHJpYnV0aW9uc1xuICAgIC8vLy8vLy8vLy8vXG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLnN0YXJ0V3JpdGVTZWN0aW9uKGZkLCA3KTtcbiAgICBhd2FpdCBmZC53cml0ZVVMRTMyKDApOyAvLyAwIENvbnRyaWJ1dGlvbnNcbiAgICBhd2FpdCBiaW5GaWxlVXRpbHMuZW5kV3JpdGVTZWN0aW9uKGZkKTtcblxuICAgIGF3YWl0IGZkLmNsb3NlKCk7XG5cbiAgICBjb25zdCBmaXJzdENoYWxsZW5nZUhhc2ggPSBwdGF1VXRpbHMuY2FsY3VsYXRlRmlyc3RDaGFsbGVuZ2VIYXNoKGN1cnZlLCBwb3dlciwgbG9nZ2VyKTtcblxuICAgIGlmIChsb2dnZXIpIGxvZ2dlci5kZWJ1ZyhtaXNjLmZvcm1hdEhhc2goQmxha2UyYig2NCkuZGlnZXN0KCksIFwiQmxhbmsgQ29udHJpYnV0aW9uIEhhc2g6XCIpKTtcblxuICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKG1pc2MuZm9ybWF0SGFzaChmaXJzdENoYWxsZW5nZUhhc2gsIFwiRmlyc3QgQ29udHJpYnV0aW9uIEhhc2g6XCIpKTtcblxuICAgIHJldHVybiBmaXJzdENoYWxsZW5nZUhhc2g7XG5cbn1cbiIsIi8vIEZvcm1hdCBvZiB0aGUgb3V0cHVcbi8vICAgICBIYXNoIG9mIHRoZSBsYXN0IGNvbnRyaWJ1dGlvbiAgNjRCeXRlc1xuLy8gICAgIDJeTiAqIDIgLTEgIFRhdUcxIHBvaW50cyAodW5jb21wcmVzc2VkKVxuLy8gICAgIDJeTiAgVGF1RzIgUG9pbnRzICh1bmNvbXByZXNzZWQpXG4vLyAgICAgMl5OICBBbHBoYVRhdUcxIFBvaW50cyAodW5jb21wcmVzc2VkKVxuLy8gICAgIDJeTiAgQmV0YVRhdUcxIFBvaW50cyAodW5jb21wcmVzc2VkKVxuLy8gICAgIEJldGFHMiAodW5jb21wcmVzc2VkKVxuXG5pbXBvcnQgKiBhcyBmYXN0RmlsZSBmcm9tIFwiZmFzdGZpbGVcIjtcbmltcG9ydCBCbGFrZTJiIGZyb20gXCJibGFrZTJiLXdhc21cIjtcbmltcG9ydCAqIGFzIHV0aWxzIGZyb20gXCIuL3Bvd2Vyc29mdGF1X3V0aWxzLmpzXCI7XG5pbXBvcnQgKiBhcyBiaW5GaWxlVXRpbHMgZnJvbSBcIkBpZGVuMy9iaW5maWxldXRpbHNcIjtcbmltcG9ydCAqIGFzIG1pc2MgZnJvbSBcIi4vbWlzYy5qc1wiO1xuXG5leHBvcnQgZGVmYXVsdCBhc3luYyBmdW5jdGlvbiBleHBvcnRDaGFsbGVuZ2UocFRhdUZpbGVuYW1lLCBjaGFsbGVuZ2VGaWxlbmFtZSwgbG9nZ2VyKSB7XG4gICAgYXdhaXQgQmxha2UyYi5yZWFkeSgpO1xuICAgIGNvbnN0IHtmZDogZmRGcm9tLCBzZWN0aW9uc30gPSBhd2FpdCBiaW5GaWxlVXRpbHMucmVhZEJpbkZpbGUocFRhdUZpbGVuYW1lLCBcInB0YXVcIiwgMSk7XG5cbiAgICBjb25zdCB7Y3VydmUsIHBvd2VyfSA9IGF3YWl0IHV0aWxzLnJlYWRQVGF1SGVhZGVyKGZkRnJvbSwgc2VjdGlvbnMpO1xuXG4gICAgY29uc3QgY29udHJpYnV0aW9ucyA9IGF3YWl0IHV0aWxzLnJlYWRDb250cmlidXRpb25zKGZkRnJvbSwgY3VydmUsIHNlY3Rpb25zKTtcbiAgICBsZXQgbGFzdFJlc3BvbnNlSGFzaCwgY3VyQ2hhbGxlbmdlSGFzaDtcbiAgICBpZiAoY29udHJpYnV0aW9ucy5sZW5ndGggPT0gMCkge1xuICAgICAgICBsYXN0UmVzcG9uc2VIYXNoID0gQmxha2UyYig2NCkuZGlnZXN0KCk7XG4gICAgICAgIGN1ckNoYWxsZW5nZUhhc2ggPSB1dGlscy5jYWxjdWxhdGVGaXJzdENoYWxsZW5nZUhhc2goY3VydmUsIHBvd2VyKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBsYXN0UmVzcG9uc2VIYXNoID0gY29udHJpYnV0aW9uc1tjb250cmlidXRpb25zLmxlbmd0aC0xXS5yZXNwb25zZUhhc2g7XG4gICAgICAgIGN1ckNoYWxsZW5nZUhhc2ggPSBjb250cmlidXRpb25zW2NvbnRyaWJ1dGlvbnMubGVuZ3RoLTFdLm5leHRDaGFsbGVuZ2U7XG4gICAgfVxuXG4gICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8obWlzYy5mb3JtYXRIYXNoKGxhc3RSZXNwb25zZUhhc2gsIFwiTGFzdCBSZXNwb25zZSBIYXNoOiBcIikpO1xuXG4gICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8obWlzYy5mb3JtYXRIYXNoKGN1ckNoYWxsZW5nZUhhc2gsIFwiTmV3IENoYWxsZW5nZSBIYXNoOiBcIikpO1xuXG5cbiAgICBjb25zdCBmZFRvID0gYXdhaXQgZmFzdEZpbGUuY3JlYXRlT3ZlcnJpZGUoY2hhbGxlbmdlRmlsZW5hbWUpO1xuXG4gICAgY29uc3QgdG9IYXNoID0gQmxha2UyYig2NCk7XG4gICAgYXdhaXQgZmRUby53cml0ZShsYXN0UmVzcG9uc2VIYXNoKTtcbiAgICB0b0hhc2gudXBkYXRlKGxhc3RSZXNwb25zZUhhc2gpO1xuXG4gICAgYXdhaXQgZXhwb3J0U2VjdGlvbigyLCBcIkcxXCIsICgyICoqIHBvd2VyKSAqIDIgLTEsIFwidGF1RzFcIik7XG4gICAgYXdhaXQgZXhwb3J0U2VjdGlvbigzLCBcIkcyXCIsICgyICoqIHBvd2VyKSAgICAgICAsIFwidGF1RzJcIik7XG4gICAgYXdhaXQgZXhwb3J0U2VjdGlvbig0LCBcIkcxXCIsICgyICoqIHBvd2VyKSAgICAgICAsIFwiYWxwaGFUYXVHMVwiKTtcbiAgICBhd2FpdCBleHBvcnRTZWN0aW9uKDUsIFwiRzFcIiwgKDIgKiogcG93ZXIpICAgICAgICwgXCJiZXRhVGF1RzFcIik7XG4gICAgYXdhaXQgZXhwb3J0U2VjdGlvbig2LCBcIkcyXCIsIDEgICAgICAgICAgICAgICAgICAsIFwiYmV0YUcyXCIpO1xuXG4gICAgYXdhaXQgZmRGcm9tLmNsb3NlKCk7XG4gICAgYXdhaXQgZmRUby5jbG9zZSgpO1xuXG4gICAgY29uc3QgY2FsY0N1ckNoYWxsZW5nZUhhc2ggPSB0b0hhc2guZGlnZXN0KCk7XG5cbiAgICBpZiAoIW1pc2MuaGFzaElzRXF1YWwgKGN1ckNoYWxsZW5nZUhhc2gsIGNhbGNDdXJDaGFsbGVuZ2VIYXNoKSkge1xuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhtaXNjLmZvcm1hdEhhc2goY2FsY0N1ckNoYWxsZW5nZUhhc2gsIFwiQ2FsYyBDdXJyZXQgQ2hhbGxlbmdlIEhhc2g6IFwiKSk7XG5cbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmVycm9yKFwiUFRhdSBmaWxlIGlzIGNvcnJ1cHRlZC4gQ2FsY3VsYXRlZCBuZXcgY2hhbGxlbmdlIGhhc2ggZG9lcyBub3QgbWF0Y2ggd2l0aCB0aGUgZWNsYXJlZCBvbmVcIik7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIlBUYXUgZmlsZSBpcyBjb3JydXB0ZWQuIENhbGN1bGF0ZWQgbmV3IGNoYWxsZW5nZSBoYXNoIGRvZXMgbm90IG1hdGNoIHdpdGggdGhlIGVjbGFyZWQgb25lXCIpO1xuICAgIH1cblxuICAgIHJldHVybiBjdXJDaGFsbGVuZ2VIYXNoO1xuXG4gICAgYXN5bmMgZnVuY3Rpb24gZXhwb3J0U2VjdGlvbihzZWN0aW9uSWQsIGdyb3VwTmFtZSwgblBvaW50cywgc2VjdGlvbk5hbWUpIHtcbiAgICAgICAgY29uc3QgRyA9IGN1cnZlW2dyb3VwTmFtZV07XG4gICAgICAgIGNvbnN0IHNHID0gRy5GLm44KjI7XG4gICAgICAgIGNvbnN0IG5Qb2ludHNDaHVuayA9IE1hdGguZmxvb3IoKDE8PDI0KS9zRyk7XG5cbiAgICAgICAgYXdhaXQgYmluRmlsZVV0aWxzLnN0YXJ0UmVhZFVuaXF1ZVNlY3Rpb24oZmRGcm9tLCBzZWN0aW9ucywgc2VjdGlvbklkKTtcbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPCBuUG9pbnRzOyBpKz0gblBvaW50c0NodW5rKSB7XG4gICAgICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZGVidWcoYEV4cG9ydGluZyAke3NlY3Rpb25OYW1lfTogJHtpfS8ke25Qb2ludHN9YCk7XG4gICAgICAgICAgICBjb25zdCBuID0gTWF0aC5taW4oblBvaW50cy1pLCBuUG9pbnRzQ2h1bmspO1xuICAgICAgICAgICAgbGV0IGJ1ZmY7XG4gICAgICAgICAgICBidWZmID0gYXdhaXQgZmRGcm9tLnJlYWQobipzRyk7XG4gICAgICAgICAgICBidWZmID0gYXdhaXQgRy5iYXRjaExFTXRvVShidWZmKTtcbiAgICAgICAgICAgIGF3YWl0IGZkVG8ud3JpdGUoYnVmZik7XG4gICAgICAgICAgICB0b0hhc2gudXBkYXRlKGJ1ZmYpO1xuICAgICAgICB9XG4gICAgICAgIGF3YWl0IGJpbkZpbGVVdGlscy5lbmRSZWFkU2VjdGlvbihmZEZyb20pO1xuICAgIH1cblxuXG59XG5cbiIsIi8qXG4gICAgQ29weXJpZ2h0IDIwMTggMEtJTVMgYXNzb2NpYXRpb24uXG5cbiAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBzbmFya0pTLlxuXG4gICAgc25hcmtKUyBpcyBhIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXRcbiAgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yXG4gICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cblxuICAgIHNuYXJrSlMgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVRcbiAgICBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFlcbiAgICBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWNcbiAgICBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG5cbiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICAgIGFsb25nIHdpdGggc25hcmtKUy4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cbiovXG5cbmltcG9ydCAqIGFzIGZhc3RGaWxlIGZyb20gXCJmYXN0ZmlsZVwiO1xuaW1wb3J0IEJsYWtlMmIgZnJvbSBcImJsYWtlMmItd2FzbVwiO1xuaW1wb3J0ICogYXMgdXRpbHMgZnJvbSBcIi4vcG93ZXJzb2Z0YXVfdXRpbHMuanNcIjtcbmltcG9ydCAqIGFzIGJpbkZpbGVVdGlscyBmcm9tIFwiQGlkZW4zL2JpbmZpbGV1dGlsc1wiO1xuaW1wb3J0ICogYXMgbWlzYyBmcm9tIFwiLi9taXNjLmpzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGFzeW5jIGZ1bmN0aW9uIGltcG9ydFJlc3BvbnNlKG9sZFB0YXVGaWxlbmFtZSwgY29udHJpYnV0aW9uRmlsZW5hbWUsIG5ld1BUYXVGaWxlbmFtZSwgbmFtZSwgaW1wb3J0UG9pbnRzLCBsb2dnZXIpIHtcblxuICAgIGF3YWl0IEJsYWtlMmIucmVhZHkoKTtcblxuICAgIGNvbnN0IG5vSGFzaCA9IG5ldyBVaW50OEFycmF5KDY0KTtcbiAgICBmb3IgKGxldCBpPTA7IGk8NjQ7IGkrKykgbm9IYXNoW2ldID0gMHhGRjtcblxuICAgIGNvbnN0IHtmZDogZmRPbGQsIHNlY3Rpb25zfSA9IGF3YWl0IGJpbkZpbGVVdGlscy5yZWFkQmluRmlsZShvbGRQdGF1RmlsZW5hbWUsIFwicHRhdVwiLCAxKTtcbiAgICBjb25zdCB7Y3VydmUsIHBvd2VyfSA9IGF3YWl0IHV0aWxzLnJlYWRQVGF1SGVhZGVyKGZkT2xkLCBzZWN0aW9ucyk7XG4gICAgY29uc3QgY29udHJpYnV0aW9ucyA9IGF3YWl0IHV0aWxzLnJlYWRDb250cmlidXRpb25zKGZkT2xkLCBjdXJ2ZSwgc2VjdGlvbnMpO1xuICAgIGNvbnN0IGN1cnJlbnRDb250cmlidXRpb24gPSB7fTtcblxuICAgIGlmIChuYW1lKSBjdXJyZW50Q29udHJpYnV0aW9uLm5hbWUgPSBuYW1lO1xuXG4gICAgY29uc3Qgc0cxID0gY3VydmUuRjEubjgqMjtcbiAgICBjb25zdCBzY0cxID0gY3VydmUuRjEubjg7IC8vIENvbXByZXNzZWQgc2l6ZVxuICAgIGNvbnN0IHNHMiA9IGN1cnZlLkYyLm44KjI7XG4gICAgY29uc3Qgc2NHMiA9IGN1cnZlLkYyLm44OyAvLyBDb21wcmVzc2VkIHNpemVcblxuICAgIGNvbnN0IGZkUmVzcG9uc2UgPSBhd2FpdCBmYXN0RmlsZS5yZWFkRXhpc3RpbmcoY29udHJpYnV0aW9uRmlsZW5hbWUpO1xuXG4gICAgaWYgIChmZFJlc3BvbnNlLnRvdGFsU2l6ZSAhPVxuICAgICAgICA2NCArICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE9sZCBIYXNoXG4gICAgICAgICgoMiAqKiBwb3dlcikqMi0xKSpzY0cxICtcbiAgICAgICAgKDIgKiogcG93ZXIpKnNjRzIgK1xuICAgICAgICAoMiAqKiBwb3dlcikqc2NHMSArXG4gICAgICAgICgyICoqIHBvd2VyKSpzY0cxICtcbiAgICAgICAgc2NHMiArXG4gICAgICAgIHNHMSo2ICsgc0cyKjMpXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIlNpemUgb2YgdGhlIGNvbnRyaWJ1dGlvbiBpcyBpbnZhbGlkXCIpO1xuXG4gICAgbGV0IGxhc3RDaGFsbGVuZ2VIYXNoO1xuXG4gICAgaWYgKGNvbnRyaWJ1dGlvbnMubGVuZ3RoPjApIHtcbiAgICAgICAgbGFzdENoYWxsZW5nZUhhc2ggPSBjb250cmlidXRpb25zW2NvbnRyaWJ1dGlvbnMubGVuZ3RoLTFdLm5leHRDaGFsbGVuZ2U7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgbGFzdENoYWxsZW5nZUhhc2ggPSB1dGlscy5jYWxjdWxhdGVGaXJzdENoYWxsZW5nZUhhc2goY3VydmUsIHBvd2VyLCBsb2dnZXIpO1xuICAgIH1cblxuICAgIGNvbnN0IGZkTmV3ID0gYXdhaXQgYmluRmlsZVV0aWxzLmNyZWF0ZUJpbkZpbGUobmV3UFRhdUZpbGVuYW1lLCBcInB0YXVcIiwgMSwgaW1wb3J0UG9pbnRzID8gNzogMik7XG4gICAgYXdhaXQgdXRpbHMud3JpdGVQVGF1SGVhZGVyKGZkTmV3LCBjdXJ2ZSwgcG93ZXIpO1xuXG4gICAgY29uc3QgY29udHJpYnV0aW9uUHJldmlvdXNIYXNoID0gYXdhaXQgZmRSZXNwb25zZS5yZWFkKDY0KTtcblxuICAgIGlmIChtaXNjLmhhc2hJc0VxdWFsKG5vSGFzaCxsYXN0Q2hhbGxlbmdlSGFzaCkpIHtcbiAgICAgICAgbGFzdENoYWxsZW5nZUhhc2ggPSBjb250cmlidXRpb25QcmV2aW91c0hhc2g7XG4gICAgICAgIGNvbnRyaWJ1dGlvbnNbY29udHJpYnV0aW9ucy5sZW5ndGgtMV0ubmV4dENoYWxsZW5nZSA9IGxhc3RDaGFsbGVuZ2VIYXNoO1xuICAgIH1cblxuICAgIGlmKCFtaXNjLmhhc2hJc0VxdWFsKGNvbnRyaWJ1dGlvblByZXZpb3VzSGFzaCxsYXN0Q2hhbGxlbmdlSGFzaCkpXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIldyb25nIGNvbnRyaWJ1dGlvbi4gVGhpcyBjb250cmlidXRpb24gaXMgbm90IGJhc2VkIG9uIHRoZSBwcmV2aW91cyBoYXNoXCIpO1xuXG4gICAgY29uc3QgaGFzaGVyUmVzcG9uc2UgPSBuZXcgQmxha2UyYig2NCk7XG4gICAgaGFzaGVyUmVzcG9uc2UudXBkYXRlKGNvbnRyaWJ1dGlvblByZXZpb3VzSGFzaCk7XG5cbiAgICBjb25zdCBzdGFydFNlY3Rpb25zID0gW107XG4gICAgbGV0IHJlcztcbiAgICByZXMgPSBhd2FpdCBwcm9jZXNzU2VjdGlvbihmZFJlc3BvbnNlLCBmZE5ldywgXCJHMVwiLCAyLCAoMiAqKiBwb3dlcikgKiAyIC0xLCBbMV0sIFwidGF1RzFcIik7XG4gICAgY3VycmVudENvbnRyaWJ1dGlvbi50YXVHMSA9IHJlc1swXTtcbiAgICByZXMgPSBhd2FpdCBwcm9jZXNzU2VjdGlvbihmZFJlc3BvbnNlLCBmZE5ldywgXCJHMlwiLCAzLCAoMiAqKiBwb3dlcikgICAgICAgLCBbMV0sIFwidGF1RzJcIik7XG4gICAgY3VycmVudENvbnRyaWJ1dGlvbi50YXVHMiA9IHJlc1swXTtcbiAgICByZXMgPSBhd2FpdCBwcm9jZXNzU2VjdGlvbihmZFJlc3BvbnNlLCBmZE5ldywgXCJHMVwiLCA0LCAoMiAqKiBwb3dlcikgICAgICAgLCBbMF0sIFwiYWxwaGFHMVwiKTtcbiAgICBjdXJyZW50Q29udHJpYnV0aW9uLmFscGhhRzEgPSByZXNbMF07XG4gICAgcmVzID0gYXdhaXQgcHJvY2Vzc1NlY3Rpb24oZmRSZXNwb25zZSwgZmROZXcsIFwiRzFcIiwgNSwgKDIgKiogcG93ZXIpICAgICAgICwgWzBdLCBcImJldGFHMVwiKTtcbiAgICBjdXJyZW50Q29udHJpYnV0aW9uLmJldGFHMSA9IHJlc1swXTtcbiAgICByZXMgPSBhd2FpdCBwcm9jZXNzU2VjdGlvbihmZFJlc3BvbnNlLCBmZE5ldywgXCJHMlwiLCA2LCAxICAgICAgICAgICAgICAgICAgLCBbMF0sIFwiYmV0YUcyXCIpO1xuICAgIGN1cnJlbnRDb250cmlidXRpb24uYmV0YUcyID0gcmVzWzBdO1xuXG4gICAgY3VycmVudENvbnRyaWJ1dGlvbi5wYXJ0aWFsSGFzaCA9IGhhc2hlclJlc3BvbnNlLmdldFBhcnRpYWxIYXNoKCk7XG5cblxuICAgIGNvbnN0IGJ1ZmZLZXkgPSBhd2FpdCBmZFJlc3BvbnNlLnJlYWQoY3VydmUuRjEubjgqMio2K2N1cnZlLkYyLm44KjIqMyk7XG5cbiAgICBjdXJyZW50Q29udHJpYnV0aW9uLmtleSA9IHV0aWxzLmZyb21QdGF1UHViS2V5UnByKGJ1ZmZLZXksIDAsIGN1cnZlLCBmYWxzZSk7XG5cbiAgICBoYXNoZXJSZXNwb25zZS51cGRhdGUobmV3IFVpbnQ4QXJyYXkoYnVmZktleSkpO1xuICAgIGNvbnN0IGhhc2hSZXNwb25zZSA9IGhhc2hlclJlc3BvbnNlLmRpZ2VzdCgpO1xuXG4gICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8obWlzYy5mb3JtYXRIYXNoKGhhc2hSZXNwb25zZSwgXCJDb250cmlidXRpb24gUmVzcG9uc2UgSGFzaCBpbXBvcnRlZDogXCIpKTtcblxuICAgIGlmIChpbXBvcnRQb2ludHMpIHtcbiAgICAgICAgY29uc3QgbmV4dENoYWxsZW5nZUhhc2hlciA9IG5ldyBCbGFrZTJiKDY0KTtcbiAgICAgICAgbmV4dENoYWxsZW5nZUhhc2hlci51cGRhdGUoaGFzaFJlc3BvbnNlKTtcblxuICAgICAgICBhd2FpdCBoYXNoU2VjdGlvbihuZXh0Q2hhbGxlbmdlSGFzaGVyLCBmZE5ldywgXCJHMVwiLCAyLCAoMiAqKiBwb3dlcikgKiAyIC0xLCBcInRhdUcxXCIsIGxvZ2dlcik7XG4gICAgICAgIGF3YWl0IGhhc2hTZWN0aW9uKG5leHRDaGFsbGVuZ2VIYXNoZXIsIGZkTmV3LCBcIkcyXCIsIDMsICgyICoqIHBvd2VyKSAgICAgICAsIFwidGF1RzJcIiwgbG9nZ2VyKTtcbiAgICAgICAgYXdhaXQgaGFzaFNlY3Rpb24obmV4dENoYWxsZW5nZUhhc2hlciwgZmROZXcsIFwiRzFcIiwgNCwgKDIgKiogcG93ZXIpICAgICAgICwgXCJhbHBoYVRhdUcxXCIsIGxvZ2dlcik7XG4gICAgICAgIGF3YWl0IGhhc2hTZWN0aW9uKG5leHRDaGFsbGVuZ2VIYXNoZXIsIGZkTmV3LCBcIkcxXCIsIDUsICgyICoqIHBvd2VyKSAgICAgICAsIFwiYmV0YVRhdUcxXCIsIGxvZ2dlcik7XG4gICAgICAgIGF3YWl0IGhhc2hTZWN0aW9uKG5leHRDaGFsbGVuZ2VIYXNoZXIsIGZkTmV3LCBcIkcyXCIsIDYsIDEgICAgICAgICAgICAgICAgICAsIFwiYmV0YUcyXCIsIGxvZ2dlcik7XG5cbiAgICAgICAgY3VycmVudENvbnRyaWJ1dGlvbi5uZXh0Q2hhbGxlbmdlID0gbmV4dENoYWxsZW5nZUhhc2hlci5kaWdlc3QoKTtcblxuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhtaXNjLmZvcm1hdEhhc2goY3VycmVudENvbnRyaWJ1dGlvbi5uZXh0Q2hhbGxlbmdlLCBcIk5leHQgQ2hhbGxlbmdlIEhhc2g6IFwiKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgY3VycmVudENvbnRyaWJ1dGlvbi5uZXh0Q2hhbGxlbmdlID0gbm9IYXNoO1xuICAgIH1cblxuICAgIGNvbnRyaWJ1dGlvbnMucHVzaChjdXJyZW50Q29udHJpYnV0aW9uKTtcblxuICAgIGF3YWl0IHV0aWxzLndyaXRlQ29udHJpYnV0aW9ucyhmZE5ldywgY3VydmUsIGNvbnRyaWJ1dGlvbnMpO1xuXG4gICAgYXdhaXQgZmRSZXNwb25zZS5jbG9zZSgpO1xuICAgIGF3YWl0IGZkTmV3LmNsb3NlKCk7XG4gICAgYXdhaXQgZmRPbGQuY2xvc2UoKTtcblxuICAgIHJldHVybiBjdXJyZW50Q29udHJpYnV0aW9uLm5leHRDaGFsbGVuZ2U7XG5cbiAgICBhc3luYyBmdW5jdGlvbiBwcm9jZXNzU2VjdGlvbihmZEZyb20sIGZkVG8sIGdyb3VwTmFtZSwgc2VjdGlvbklkLCBuUG9pbnRzLCBzaW5ndWxhclBvaW50SW5kZXhlcywgc2VjdGlvbk5hbWUpIHtcbiAgICAgICAgaWYgKGltcG9ydFBvaW50cykge1xuICAgICAgICAgICAgcmV0dXJuIGF3YWl0IHByb2Nlc3NTZWN0aW9uSW1wb3J0UG9pbnRzKGZkRnJvbSwgZmRUbywgZ3JvdXBOYW1lLCBzZWN0aW9uSWQsIG5Qb2ludHMsIHNpbmd1bGFyUG9pbnRJbmRleGVzLCBzZWN0aW9uTmFtZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gYXdhaXQgcHJvY2Vzc1NlY3Rpb25Ob0ltcG9ydFBvaW50cyhmZEZyb20sIGZkVG8sIGdyb3VwTmFtZSwgc2VjdGlvbklkLCBuUG9pbnRzLCBzaW5ndWxhclBvaW50SW5kZXhlcywgc2VjdGlvbk5hbWUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgYXN5bmMgZnVuY3Rpb24gcHJvY2Vzc1NlY3Rpb25JbXBvcnRQb2ludHMoZmRGcm9tLCBmZFRvLCBncm91cE5hbWUsIHNlY3Rpb25JZCwgblBvaW50cywgc2luZ3VsYXJQb2ludEluZGV4ZXMsIHNlY3Rpb25OYW1lKSB7XG5cbiAgICAgICAgY29uc3QgRyA9IGN1cnZlW2dyb3VwTmFtZV07XG4gICAgICAgIGNvbnN0IHNjRyA9IEcuRi5uODtcbiAgICAgICAgY29uc3Qgc0cgPSBHLkYubjgqMjtcblxuICAgICAgICBjb25zdCBzaW5ndWxhclBvaW50cyA9IFtdO1xuXG4gICAgICAgIGF3YWl0IGJpbkZpbGVVdGlscy5zdGFydFdyaXRlU2VjdGlvbihmZFRvLCBzZWN0aW9uSWQpO1xuICAgICAgICBjb25zdCBuUG9pbnRzQ2h1bmsgPSBNYXRoLmZsb29yKCgxPDwyNCkvc0cpO1xuXG4gICAgICAgIHN0YXJ0U2VjdGlvbnNbc2VjdGlvbklkXSA9IGZkVG8ucG9zO1xuXG4gICAgICAgIGZvciAobGV0IGk9MDsgaTwgblBvaW50czsgaSArPSBuUG9pbnRzQ2h1bmspIHtcbiAgICAgICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5kZWJ1ZyhgSW1wb3J0aW5nICR7c2VjdGlvbk5hbWV9OiAke2l9LyR7blBvaW50c31gKTtcbiAgICAgICAgICAgIGNvbnN0IG4gPSBNYXRoLm1pbihuUG9pbnRzLWksIG5Qb2ludHNDaHVuayk7XG5cbiAgICAgICAgICAgIGNvbnN0IGJ1ZmZDID0gYXdhaXQgZmRGcm9tLnJlYWQobiAqIHNjRyk7XG4gICAgICAgICAgICBoYXNoZXJSZXNwb25zZS51cGRhdGUoYnVmZkMpO1xuXG4gICAgICAgICAgICBjb25zdCBidWZmTEVNID0gYXdhaXQgRy5iYXRjaEN0b0xFTShidWZmQyk7XG5cbiAgICAgICAgICAgIGF3YWl0IGZkVG8ud3JpdGUoYnVmZkxFTSk7XG4gICAgICAgICAgICBmb3IgKGxldCBqPTA7IGo8c2luZ3VsYXJQb2ludEluZGV4ZXMubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgICAgICAgICBjb25zdCBzcCA9IHNpbmd1bGFyUG9pbnRJbmRleGVzW2pdO1xuICAgICAgICAgICAgICAgIGlmICgoc3AgPj1pKSAmJiAoc3AgPCBpK24pKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IFAgPSBHLmZyb21ScHJMRU0oYnVmZkxFTSwgKHNwLWkpKnNHKTtcbiAgICAgICAgICAgICAgICAgICAgc2luZ3VsYXJQb2ludHMucHVzaChQKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBhd2FpdCBiaW5GaWxlVXRpbHMuZW5kV3JpdGVTZWN0aW9uKGZkVG8pO1xuXG4gICAgICAgIHJldHVybiBzaW5ndWxhclBvaW50cztcbiAgICB9XG5cblxuICAgIGFzeW5jIGZ1bmN0aW9uIHByb2Nlc3NTZWN0aW9uTm9JbXBvcnRQb2ludHMoZmRGcm9tLCBmZFRvLCBncm91cE5hbWUsIHNlY3Rpb25JZCwgblBvaW50cywgc2luZ3VsYXJQb2ludEluZGV4ZXMsIHNlY3Rpb25OYW1lKSB7XG5cbiAgICAgICAgY29uc3QgRyA9IGN1cnZlW2dyb3VwTmFtZV07XG4gICAgICAgIGNvbnN0IHNjRyA9IEcuRi5uODtcblxuICAgICAgICBjb25zdCBzaW5ndWxhclBvaW50cyA9IFtdO1xuXG4gICAgICAgIGNvbnN0IG5Qb2ludHNDaHVuayA9IE1hdGguZmxvb3IoKDE8PDI0KS9zY0cpO1xuXG4gICAgICAgIGZvciAobGV0IGk9MDsgaTwgblBvaW50czsgaSArPSBuUG9pbnRzQ2h1bmspIHtcbiAgICAgICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5kZWJ1ZyhgSW1wb3J0aW5nICR7c2VjdGlvbk5hbWV9OiAke2l9LyR7blBvaW50c31gKTtcbiAgICAgICAgICAgIGNvbnN0IG4gPSBNYXRoLm1pbihuUG9pbnRzLWksIG5Qb2ludHNDaHVuayk7XG5cbiAgICAgICAgICAgIGNvbnN0IGJ1ZmZDID0gYXdhaXQgZmRGcm9tLnJlYWQobiAqIHNjRyk7XG4gICAgICAgICAgICBoYXNoZXJSZXNwb25zZS51cGRhdGUoYnVmZkMpO1xuXG4gICAgICAgICAgICBmb3IgKGxldCBqPTA7IGo8c2luZ3VsYXJQb2ludEluZGV4ZXMubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgICAgICAgICBjb25zdCBzcCA9IHNpbmd1bGFyUG9pbnRJbmRleGVzW2pdO1xuICAgICAgICAgICAgICAgIGlmICgoc3AgPj1pKSAmJiAoc3AgPCBpK24pKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IFAgPSBHLmZyb21ScHJDb21wcmVzc2VkKGJ1ZmZDLCAoc3AtaSkqc2NHKTtcbiAgICAgICAgICAgICAgICAgICAgc2luZ3VsYXJQb2ludHMucHVzaChQKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gc2luZ3VsYXJQb2ludHM7XG4gICAgfVxuXG5cbiAgICBhc3luYyBmdW5jdGlvbiBoYXNoU2VjdGlvbihuZXh0Q2hhbGxlbmdlSGFzaGVyLCBmZFRvLCBncm91cE5hbWUsIHNlY3Rpb25JZCwgblBvaW50cywgc2VjdGlvbk5hbWUsIGxvZ2dlcikge1xuXG4gICAgICAgIGNvbnN0IEcgPSBjdXJ2ZVtncm91cE5hbWVdO1xuICAgICAgICBjb25zdCBzRyA9IEcuRi5uOCoyO1xuICAgICAgICBjb25zdCBuUG9pbnRzQ2h1bmsgPSBNYXRoLmZsb29yKCgxPDwyNCkvc0cpO1xuXG4gICAgICAgIGNvbnN0IG9sZFBvcyA9IGZkVG8ucG9zO1xuICAgICAgICBmZFRvLnBvcyA9IHN0YXJ0U2VjdGlvbnNbc2VjdGlvbklkXTtcblxuICAgICAgICBmb3IgKGxldCBpPTA7IGk8IG5Qb2ludHM7IGkgKz0gblBvaW50c0NodW5rKSB7XG4gICAgICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZGVidWcoYEhhc2hpbmcgJHtzZWN0aW9uTmFtZX06ICR7aX0vJHtuUG9pbnRzfWApO1xuICAgICAgICAgICAgY29uc3QgbiA9IE1hdGgubWluKG5Qb2ludHMtaSwgblBvaW50c0NodW5rKTtcblxuICAgICAgICAgICAgY29uc3QgYnVmZkxFTSA9IGF3YWl0IGZkVG8ucmVhZChuICogc0cpO1xuXG4gICAgICAgICAgICBjb25zdCBidWZmVSA9IGF3YWl0IEcuYmF0Y2hMRU10b1UoYnVmZkxFTSk7XG5cbiAgICAgICAgICAgIG5leHRDaGFsbGVuZ2VIYXNoZXIudXBkYXRlKGJ1ZmZVKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZkVG8ucG9zID0gb2xkUG9zO1xuICAgIH1cblxufVxuXG4iLCIvKlxuICAgIENvcHlyaWdodCAyMDE4IDBLSU1TIGFzc29jaWF0aW9uLlxuXG4gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2Ygc25hcmtKUy5cblxuICAgIHNuYXJrSlMgaXMgYSBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0XG4gICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxuICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG5cbiAgICBzbmFya0pTIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUXG4gICAgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZXG4gICAgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljXG4gICAgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuXG4gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAgICBhbG9uZyB3aXRoIHNuYXJrSlMuIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXG4qL1xuXG5pbXBvcnQgQmxha2UyYiBmcm9tIFwiYmxha2UyYi13YXNtXCI7XG5pbXBvcnQgKiBhcyB1dGlscyBmcm9tIFwiLi9wb3dlcnNvZnRhdV91dGlscy5qc1wiO1xuaW1wb3J0ICogYXMga2V5UGFpciBmcm9tIFwiLi9rZXlwYWlyLmpzXCI7XG5pbXBvcnQgKiBhcyBiaW5GaWxlVXRpbHMgZnJvbSBcIkBpZGVuMy9iaW5maWxldXRpbHNcIjtcbmltcG9ydCB7IENoYUNoYSwgQmlnQnVmZmVyIH0gZnJvbSBcImZmamF2YXNjcmlwdFwiO1xuaW1wb3J0ICogYXMgbWlzYyBmcm9tIFwiLi9taXNjLmpzXCI7XG5jb25zdCBzYW1lUmF0aW8gPSBtaXNjLnNhbWVSYXRpbztcblxuYXN5bmMgZnVuY3Rpb24gdmVyaWZ5Q29udHJpYnV0aW9uKGN1cnZlLCBjdXIsIHByZXYsIGxvZ2dlcikge1xuICAgIGxldCBzcjtcbiAgICBpZiAoY3VyLnR5cGUgPT0gMSkgeyAgICAvLyBWZXJpZnkgdGhlIGJlYWNvbi5cbiAgICAgICAgY29uc3QgYmVhY29uS2V5ID0gYXdhaXQgdXRpbHMua2V5RnJvbUJlYWNvbihjdXJ2ZSwgcHJldi5uZXh0Q2hhbGxlbmdlLCBjdXIuYmVhY29uSGFzaCwgY3VyLm51bUl0ZXJhdGlvbnNFeHApO1xuXG4gICAgICAgIGlmICghY3VydmUuRzEuZXEoY3VyLmtleS50YXUuZzFfcywgYmVhY29uS2V5LnRhdS5nMV9zKSkge1xuICAgICAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmVycm9yKGBCRUFDT04ga2V5ICh0YXVHMV9zKSBpcyBub3QgZ2VuZXJhdGVkIGNvcnJlY3RseSBpbiBjaGFsbGVuZ2UgIyR7Y3VyLmlkfSAgJHtjdXIubmFtZSB8fCBcIlwifWAgKTtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIWN1cnZlLkcxLmVxKGN1ci5rZXkudGF1LmcxX3N4LCBiZWFjb25LZXkudGF1LmcxX3N4KSkge1xuICAgICAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmVycm9yKGBCRUFDT04ga2V5ICh0YXVHMV9zeCkgaXMgbm90IGdlbmVyYXRlZCBjb3JyZWN0bHkgaW4gY2hhbGxlbmdlICMke2N1ci5pZH0gICR7Y3VyLm5hbWUgfHwgXCJcIn1gICk7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFjdXJ2ZS5HMi5lcShjdXIua2V5LnRhdS5nMl9zcHgsIGJlYWNvbktleS50YXUuZzJfc3B4KSkge1xuICAgICAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmVycm9yKGBCRUFDT04ga2V5ICh0YXVHMl9zcHgpIGlzIG5vdCBnZW5lcmF0ZWQgY29ycmVjdGx5IGluIGNoYWxsZW5nZSAjJHtjdXIuaWR9ICAke2N1ci5uYW1lIHx8IFwiXCJ9YCApO1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFjdXJ2ZS5HMS5lcShjdXIua2V5LmFscGhhLmcxX3MsIGJlYWNvbktleS5hbHBoYS5nMV9zKSkge1xuICAgICAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmVycm9yKGBCRUFDT04ga2V5IChhbHBoYUcxX3MpIGlzIG5vdCBnZW5lcmF0ZWQgY29ycmVjdGx5IGluIGNoYWxsZW5nZSAjJHtjdXIuaWR9ICAke2N1ci5uYW1lIHx8IFwiXCJ9YCApO1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGlmICghY3VydmUuRzEuZXEoY3VyLmtleS5hbHBoYS5nMV9zeCwgYmVhY29uS2V5LmFscGhhLmcxX3N4KSkge1xuICAgICAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmVycm9yKGBCRUFDT04ga2V5IChhbHBoYUcxX3N4KSBpcyBub3QgZ2VuZXJhdGVkIGNvcnJlY3RseSBpbiBjaGFsbGVuZ2UgIyR7Y3VyLmlkfSAgJHtjdXIubmFtZSB8fCBcIlwifWAgKTtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIWN1cnZlLkcyLmVxKGN1ci5rZXkuYWxwaGEuZzJfc3B4LCBiZWFjb25LZXkuYWxwaGEuZzJfc3B4KSkge1xuICAgICAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmVycm9yKGBCRUFDT04ga2V5IChhbHBoYUcyX3NweCkgaXMgbm90IGdlbmVyYXRlZCBjb3JyZWN0bHkgaW4gY2hhbGxlbmdlICMke2N1ci5pZH0gICR7Y3VyLm5hbWUgfHwgXCJcIn1gICk7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIWN1cnZlLkcxLmVxKGN1ci5rZXkuYmV0YS5nMV9zLCBiZWFjb25LZXkuYmV0YS5nMV9zKSkge1xuICAgICAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmVycm9yKGBCRUFDT04ga2V5IChiZXRhRzFfcykgaXMgbm90IGdlbmVyYXRlZCBjb3JyZWN0bHkgaW4gY2hhbGxlbmdlICMke2N1ci5pZH0gICR7Y3VyLm5hbWUgfHwgXCJcIn1gICk7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFjdXJ2ZS5HMS5lcShjdXIua2V5LmJldGEuZzFfc3gsIGJlYWNvbktleS5iZXRhLmcxX3N4KSkge1xuICAgICAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmVycm9yKGBCRUFDT04ga2V5IChiZXRhRzFfc3gpIGlzIG5vdCBnZW5lcmF0ZWQgY29ycmVjdGx5IGluIGNoYWxsZW5nZSAjJHtjdXIuaWR9ICAke2N1ci5uYW1lIHx8IFwiXCJ9YCApO1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGlmICghY3VydmUuRzIuZXEoY3VyLmtleS5iZXRhLmcyX3NweCwgYmVhY29uS2V5LmJldGEuZzJfc3B4KSkge1xuICAgICAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmVycm9yKGBCRUFDT04ga2V5IChiZXRhRzJfc3B4KSBpcyBub3QgZ2VuZXJhdGVkIGNvcnJlY3RseSBpbiBjaGFsbGVuZ2UgIyR7Y3VyLmlkfSAgJHtjdXIubmFtZSB8fCBcIlwifWAgKTtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGN1ci5rZXkudGF1LmcyX3NwID0gY3VydmUuRzIudG9BZmZpbmUoa2V5UGFpci5nZXRHMnNwKGN1cnZlLCAwLCBwcmV2Lm5leHRDaGFsbGVuZ2UsIGN1ci5rZXkudGF1LmcxX3MsIGN1ci5rZXkudGF1LmcxX3N4KSk7XG4gICAgY3VyLmtleS5hbHBoYS5nMl9zcCA9IGN1cnZlLkcyLnRvQWZmaW5lKGtleVBhaXIuZ2V0RzJzcChjdXJ2ZSwgMSwgcHJldi5uZXh0Q2hhbGxlbmdlLCBjdXIua2V5LmFscGhhLmcxX3MsIGN1ci5rZXkuYWxwaGEuZzFfc3gpKTtcbiAgICBjdXIua2V5LmJldGEuZzJfc3AgPSBjdXJ2ZS5HMi50b0FmZmluZShrZXlQYWlyLmdldEcyc3AoY3VydmUsIDIsIHByZXYubmV4dENoYWxsZW5nZSwgY3VyLmtleS5iZXRhLmcxX3MsIGN1ci5rZXkuYmV0YS5nMV9zeCkpO1xuXG4gICAgc3IgPSBhd2FpdCBzYW1lUmF0aW8oY3VydmUsIGN1ci5rZXkudGF1LmcxX3MsIGN1ci5rZXkudGF1LmcxX3N4LCBjdXIua2V5LnRhdS5nMl9zcCwgY3VyLmtleS50YXUuZzJfc3B4KTtcbiAgICBpZiAoc3IgIT09IHRydWUpIHtcbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmVycm9yKFwiSU5WQUxJRCBrZXkgKHRhdSkgaW4gY2hhbGxlbmdlICNcIitjdXIuaWQpO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgc3IgPSBhd2FpdCBzYW1lUmF0aW8oY3VydmUsIGN1ci5rZXkuYWxwaGEuZzFfcywgY3VyLmtleS5hbHBoYS5nMV9zeCwgY3VyLmtleS5hbHBoYS5nMl9zcCwgY3VyLmtleS5hbHBoYS5nMl9zcHgpO1xuICAgIGlmIChzciAhPT0gdHJ1ZSkge1xuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZXJyb3IoXCJJTlZBTElEIGtleSAoYWxwaGEpIGluIGNoYWxsZW5nZSAjXCIrY3VyLmlkKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHNyID0gYXdhaXQgc2FtZVJhdGlvKGN1cnZlLCBjdXIua2V5LmJldGEuZzFfcywgY3VyLmtleS5iZXRhLmcxX3N4LCBjdXIua2V5LmJldGEuZzJfc3AsIGN1ci5rZXkuYmV0YS5nMl9zcHgpO1xuICAgIGlmIChzciAhPT0gdHJ1ZSkge1xuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZXJyb3IoXCJJTlZBTElEIGtleSAoYmV0YSkgaW4gY2hhbGxlbmdlICNcIitjdXIuaWQpO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgc3IgPSBhd2FpdCBzYW1lUmF0aW8oY3VydmUsIHByZXYudGF1RzEsIGN1ci50YXVHMSwgY3VyLmtleS50YXUuZzJfc3AsIGN1ci5rZXkudGF1LmcyX3NweCk7XG4gICAgaWYgKHNyICE9PSB0cnVlKSB7XG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5lcnJvcihcIklOVkFMSUQgdGF1KkcxLiBjaGFsbGVuZ2UgI1wiK2N1ci5pZCtcIiBJdCBkb2VzIG5vdCBmb2xsb3cgdGhlIHByZXZpb3VzIGNvbnRyaWJ1dGlvblwiKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHNyID0gYXdhaXQgc2FtZVJhdGlvKGN1cnZlLCAgY3VyLmtleS50YXUuZzFfcywgY3VyLmtleS50YXUuZzFfc3gsIHByZXYudGF1RzIsIGN1ci50YXVHMik7XG4gICAgaWYgKHNyICE9PSB0cnVlKSB7XG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5lcnJvcihcIklOVkFMSUQgdGF1KkcyLiBjaGFsbGVuZ2UgI1wiK2N1ci5pZCtcIiBJdCBkb2VzIG5vdCBmb2xsb3cgdGhlIHByZXZpb3VzIGNvbnRyaWJ1dGlvblwiKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHNyID0gYXdhaXQgc2FtZVJhdGlvKGN1cnZlLCBwcmV2LmFscGhhRzEsIGN1ci5hbHBoYUcxLCBjdXIua2V5LmFscGhhLmcyX3NwLCBjdXIua2V5LmFscGhhLmcyX3NweCk7XG4gICAgaWYgKHNyICE9PSB0cnVlKSB7XG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5lcnJvcihcIklOVkFMSUQgYWxwaGEqRzEuIGNoYWxsZW5nZSAjXCIrY3VyLmlkK1wiIEl0IGRvZXMgbm90IGZvbGxvdyB0aGUgcHJldmlvdXMgY29udHJpYnV0aW9uXCIpO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgc3IgPSBhd2FpdCBzYW1lUmF0aW8oY3VydmUsIHByZXYuYmV0YUcxLCBjdXIuYmV0YUcxLCBjdXIua2V5LmJldGEuZzJfc3AsIGN1ci5rZXkuYmV0YS5nMl9zcHgpO1xuICAgIGlmIChzciAhPT0gdHJ1ZSkge1xuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZXJyb3IoXCJJTlZBTElEIGJldGEqRzEuIGNoYWxsZW5nZSAjXCIrY3VyLmlkK1wiIEl0IGRvZXMgbm90IGZvbGxvdyB0aGUgcHJldmlvdXMgY29udHJpYnV0aW9uXCIpO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgc3IgPSBhd2FpdCBzYW1lUmF0aW8oY3VydmUsICBjdXIua2V5LmJldGEuZzFfcywgY3VyLmtleS5iZXRhLmcxX3N4LCBwcmV2LmJldGFHMiwgY3VyLmJldGFHMik7XG4gICAgaWYgKHNyICE9PSB0cnVlKSB7XG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5lcnJvcihcIklOVkFMSUQgYmV0YSpHMi4gY2hhbGxlbmdlICNcIitjdXIuaWQrXCJJdCBkb2VzIG5vdCBmb2xsb3cgdGhlIHByZXZpb3VzIGNvbnRyaWJ1dGlvblwiKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKFwiUG93ZXJzIE9mIHRhdSBmaWxlIE9LIVwiKTtcbiAgICByZXR1cm4gdHJ1ZTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgYXN5bmMgZnVuY3Rpb24gdmVyaWZ5KHRhdUZpbGVuYW1lLCBsb2dnZXIpIHtcbiAgICBsZXQgc3I7XG4gICAgYXdhaXQgQmxha2UyYi5yZWFkeSgpO1xuXG4gICAgY29uc3Qge2ZkLCBzZWN0aW9uc30gPSBhd2FpdCBiaW5GaWxlVXRpbHMucmVhZEJpbkZpbGUodGF1RmlsZW5hbWUsIFwicHRhdVwiLCAxKTtcbiAgICBjb25zdCB7Y3VydmUsIHBvd2VyLCBjZXJlbW9ueVBvd2VyfSA9IGF3YWl0IHV0aWxzLnJlYWRQVGF1SGVhZGVyKGZkLCBzZWN0aW9ucyk7XG4gICAgY29uc3QgY29udHJzID0gYXdhaXQgdXRpbHMucmVhZENvbnRyaWJ1dGlvbnMoZmQsIGN1cnZlLCBzZWN0aW9ucyk7XG5cbiAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZGVidWcoXCJwb3dlcjogMioqXCIgKyBwb3dlcik7XG4gICAgLy8gVmVyaWZ5IExhc3QgY29udHJpYnV0aW9uXG5cbiAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZGVidWcoXCJDb21wdXRpbmcgaW5pdGlhbCBjb250cmlidXRpb24gaGFzaFwiKTtcbiAgICBjb25zdCBpbml0aWFsQ29udHJpYnV0aW9uID0ge1xuICAgICAgICB0YXVHMTogY3VydmUuRzEuZyxcbiAgICAgICAgdGF1RzI6IGN1cnZlLkcyLmcsXG4gICAgICAgIGFscGhhRzE6IGN1cnZlLkcxLmcsXG4gICAgICAgIGJldGFHMTogY3VydmUuRzEuZyxcbiAgICAgICAgYmV0YUcyOiBjdXJ2ZS5HMi5nLFxuICAgICAgICBuZXh0Q2hhbGxlbmdlOiB1dGlscy5jYWxjdWxhdGVGaXJzdENoYWxsZW5nZUhhc2goY3VydmUsIGNlcmVtb255UG93ZXIsIGxvZ2dlciksXG4gICAgICAgIHJlc3BvbnNlSGFzaDogQmxha2UyYig2NCkuZGlnZXN0KClcbiAgICB9O1xuXG4gICAgaWYgKGNvbnRycy5sZW5ndGggPT0gMCkge1xuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZXJyb3IoXCJUaGlzIGZpbGUgaGFzIG5vIGNvbnRyaWJ1dGlvbiEgSXQgY2Fubm90IGJlIHVzZWQgaW4gcHJvZHVjdGlvblwiKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGxldCBwcmV2Q29udHI7XG4gICAgaWYgKGNvbnRycy5sZW5ndGg+MSkge1xuICAgICAgICBwcmV2Q29udHIgPSBjb250cnNbY29udHJzLmxlbmd0aC0yXTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBwcmV2Q29udHIgPSBpbml0aWFsQ29udHJpYnV0aW9uO1xuICAgIH1cbiAgICBjb25zdCBjdXJDb250ciA9IGNvbnRyc1tjb250cnMubGVuZ3RoLTFdO1xuICAgIGlmIChsb2dnZXIpIGxvZ2dlci5kZWJ1ZyhcIlZhbGlkYXRpbmcgY29udHJpYnV0aW9uICNcIitjb250cnNbY29udHJzLmxlbmd0aC0xXS5pZCk7XG4gICAgY29uc3QgcmVzID0gYXdhaXQgdmVyaWZ5Q29udHJpYnV0aW9uKGN1cnZlLCBjdXJDb250ciwgcHJldkNvbnRyLCBsb2dnZXIpO1xuICAgIGlmICghcmVzKSByZXR1cm4gZmFsc2U7XG5cblxuICAgIGNvbnN0IG5leHRDb250cmlidXRpb25IYXNoZXIgPSBCbGFrZTJiKDY0KTtcbiAgICBuZXh0Q29udHJpYnV0aW9uSGFzaGVyLnVwZGF0ZShjdXJDb250ci5yZXNwb25zZUhhc2gpO1xuXG4gICAgLy8gVmVyaWZ5IHBvd2VycyBhbmQgY29tcHV0ZSBuZXh0Q2hhbGxlbmdlSGFzaFxuXG4gICAgLy8gYXdhaXQgdGVzdCgpO1xuXG4gICAgLy8gVmVyaWZ5IFNlY3Rpb24gdGF1KkcxXG4gICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmRlYnVnKFwiVmVyaWZ5aW5nIHBvd2VycyBpbiB0YXUqRzEgc2VjdGlvblwiKTtcbiAgICBjb25zdCByVGF1MSA9IGF3YWl0IHByb2Nlc3NTZWN0aW9uKDIsIFwiRzFcIiwgXCJ0YXVHMVwiLCAoMiAqKiBwb3dlcikqMi0xLCBbMCwgMV0sIGxvZ2dlcik7XG4gICAgc3IgPSBhd2FpdCBzYW1lUmF0aW8oY3VydmUsIHJUYXUxLlIxLCByVGF1MS5SMiwgY3VydmUuRzIuZywgY3VyQ29udHIudGF1RzIpO1xuICAgIGlmIChzciAhPT0gdHJ1ZSkge1xuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZXJyb3IoXCJ0YXVHMSBzZWN0aW9uLiBQb3dlcnMgZG8gbm90IG1hdGNoXCIpO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGlmICghY3VydmUuRzEuZXEoY3VydmUuRzEuZywgclRhdTEuc2luZ3VsYXJQb2ludHNbMF0pKSB7XG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5lcnJvcihcIkZpcnN0IGVsZW1lbnQgb2YgdGF1KkcxIHNlY3Rpb24gbXVzdCBiZSB0aGUgZ2VuZXJhdG9yXCIpO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGlmICghY3VydmUuRzEuZXEoY3VyQ29udHIudGF1RzEsIHJUYXUxLnNpbmd1bGFyUG9pbnRzWzFdKSkge1xuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZXJyb3IoXCJTZWNvbmQgZWxlbWVudCBvZiB0YXUqRzEgc2VjdGlvbiBkb2VzIG5vdCBtYXRjaCB0aGUgb25lIGluIHRoZSBjb250cmlidXRpb24gc2VjdGlvblwiKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIC8vIGF3YWl0IHRlc3QoKTtcblxuICAgIC8vIFZlcmlmeSBTZWN0aW9uIHRhdSpHMlxuICAgIGlmIChsb2dnZXIpIGxvZ2dlci5kZWJ1ZyhcIlZlcmlmeWluZyBwb3dlcnMgaW4gdGF1KkcyIHNlY3Rpb25cIik7XG4gICAgY29uc3QgclRhdTIgPSBhd2FpdCBwcm9jZXNzU2VjdGlvbigzLCBcIkcyXCIsIFwidGF1RzJcIiwgMiAqKiBwb3dlciwgWzAsIDFdLCAgbG9nZ2VyKTtcbiAgICBzciA9IGF3YWl0IHNhbWVSYXRpbyhjdXJ2ZSwgY3VydmUuRzEuZywgY3VyQ29udHIudGF1RzEsIHJUYXUyLlIxLCByVGF1Mi5SMik7XG4gICAgaWYgKHNyICE9PSB0cnVlKSB7XG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5lcnJvcihcInRhdUcyIHNlY3Rpb24uIFBvd2VycyBkbyBub3QgbWF0Y2hcIik7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgaWYgKCFjdXJ2ZS5HMi5lcShjdXJ2ZS5HMi5nLCByVGF1Mi5zaW5ndWxhclBvaW50c1swXSkpIHtcbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmVycm9yKFwiRmlyc3QgZWxlbWVudCBvZiB0YXUqRzIgc2VjdGlvbiBtdXN0IGJlIHRoZSBnZW5lcmF0b3JcIik7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgaWYgKCFjdXJ2ZS5HMi5lcShjdXJDb250ci50YXVHMiwgclRhdTIuc2luZ3VsYXJQb2ludHNbMV0pKSB7XG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5lcnJvcihcIlNlY29uZCBlbGVtZW50IG9mIHRhdSpHMiBzZWN0aW9uIGRvZXMgbm90IG1hdGNoIHRoZSBvbmUgaW4gdGhlIGNvbnRyaWJ1dGlvbiBzZWN0aW9uXCIpO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgLy8gVmVyaWZ5IFNlY3Rpb24gYWxwaGEqdGF1KkcxXG4gICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmRlYnVnKFwiVmVyaWZ5aW5nIHBvd2VycyBpbiBhbHBoYSp0YXUqRzEgc2VjdGlvblwiKTtcbiAgICBjb25zdCByQWxwaGFUYXVHMSA9IGF3YWl0IHByb2Nlc3NTZWN0aW9uKDQsIFwiRzFcIiwgXCJhbHBoYXRhdUcxXCIsIDIgKiogcG93ZXIsIFswXSwgbG9nZ2VyKTtcbiAgICBzciA9IGF3YWl0IHNhbWVSYXRpbyhjdXJ2ZSwgckFscGhhVGF1RzEuUjEsIHJBbHBoYVRhdUcxLlIyLCBjdXJ2ZS5HMi5nLCBjdXJDb250ci50YXVHMik7XG4gICAgaWYgKHNyICE9PSB0cnVlKSB7XG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5lcnJvcihcImFscGhhVGF1RzEgc2VjdGlvbi4gUG93ZXJzIGRvIG5vdCBtYXRjaFwiKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBpZiAoIWN1cnZlLkcxLmVxKGN1ckNvbnRyLmFscGhhRzEsIHJBbHBoYVRhdUcxLnNpbmd1bGFyUG9pbnRzWzBdKSkge1xuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZXJyb3IoXCJGaXJzdCBlbGVtZW50IG9mIGFscGhhKnRhdSpHMSBzZWN0aW9uIChhbHBoYSpHMSkgZG9lcyBub3QgbWF0Y2ggdGhlIG9uZSBpbiB0aGUgY29udHJpYnV0aW9uIHNlY3Rpb25cIik7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvLyBWZXJpZnkgU2VjdGlvbiBiZXRhKnRhdSpHMVxuICAgIGlmIChsb2dnZXIpIGxvZ2dlci5kZWJ1ZyhcIlZlcmlmeWluZyBwb3dlcnMgaW4gYmV0YSp0YXUqRzEgc2VjdGlvblwiKTtcbiAgICBjb25zdCByQmV0YVRhdUcxID0gYXdhaXQgcHJvY2Vzc1NlY3Rpb24oNSwgXCJHMVwiLCBcImJldGF0YXVHMVwiLCAyICoqIHBvd2VyLCBbMF0sIGxvZ2dlcik7XG4gICAgc3IgPSBhd2FpdCBzYW1lUmF0aW8oY3VydmUsIHJCZXRhVGF1RzEuUjEsIHJCZXRhVGF1RzEuUjIsIGN1cnZlLkcyLmcsIGN1ckNvbnRyLnRhdUcyKTtcbiAgICBpZiAoc3IgIT09IHRydWUpIHtcbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmVycm9yKFwiYmV0YVRhdUcxIHNlY3Rpb24uIFBvd2VycyBkbyBub3QgbWF0Y2hcIik7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgaWYgKCFjdXJ2ZS5HMS5lcShjdXJDb250ci5iZXRhRzEsIHJCZXRhVGF1RzEuc2luZ3VsYXJQb2ludHNbMF0pKSB7XG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5lcnJvcihcIkZpcnN0IGVsZW1lbnQgb2YgYmV0YSp0YXUqRzEgc2VjdGlvbiAoYmV0YSpHMSkgZG9lcyBub3QgbWF0Y2ggdGhlIG9uZSBpbiB0aGUgY29udHJpYnV0aW9uIHNlY3Rpb25cIik7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvL1ZlcmlmeSBCZXRhIEcyXG4gICAgY29uc3QgYmV0YUcyID0gYXdhaXQgcHJvY2Vzc1NlY3Rpb25CZXRhRzIobG9nZ2VyKTtcbiAgICBpZiAoIWN1cnZlLkcyLmVxKGN1ckNvbnRyLmJldGFHMiwgYmV0YUcyKSkge1xuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZXJyb3IoXCJiZXRhRzIgZWxlbWVudCBpbiBiZXRhRzIgc2VjdGlvbiBkb2VzIG5vdCBtYXRjaCB0aGUgb25lIGluIHRoZSBjb250cmlidXRpb24gc2VjdGlvblwiKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuXG4gICAgY29uc3QgbmV4dENvbnRyaWJ1dGlvbkhhc2ggPSBuZXh0Q29udHJpYnV0aW9uSGFzaGVyLmRpZ2VzdCgpO1xuXG4gICAgLy8gQ2hlY2sgdGhlIG5leHRDaGFsbGVuZ2VIYXNoXG4gICAgaWYgKHBvd2VyID09IGNlcmVtb255UG93ZXIpIHtcbiAgICAgICAgaWYgKCFtaXNjLmhhc2hJc0VxdWFsKG5leHRDb250cmlidXRpb25IYXNoLGN1ckNvbnRyLm5leHRDaGFsbGVuZ2UpKSB7XG4gICAgICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZXJyb3IoXCJIYXNoIG9mIHRoZSB2YWx1ZXMgZG9lcyBub3QgbWF0Y2ggdGhlIG5leHQgY2hhbGxlbmdlIG9mIHRoZSBsYXN0IGNvbnRyaWJ1dG9yIGluIHRoZSBjb250cmlidXRpb25zIHNlY3Rpb25cIik7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhtaXNjLmZvcm1hdEhhc2gobmV4dENvbnRyaWJ1dGlvbkhhc2gsIFwiTmV4dCBjaGFsbGVuZ2UgaGFzaDogXCIpKTtcblxuICAgIC8vIFZlcmlmeSBQcmV2aW91cyBjb250cmlidXRpb25zXG5cbiAgICBwcmludENvbnRyaWJ1dGlvbihjdXJDb250ciwgcHJldkNvbnRyKTtcbiAgICBmb3IgKGxldCBpID0gY29udHJzLmxlbmd0aC0yOyBpPj0wOyBpLS0pIHtcbiAgICAgICAgY29uc3QgY3VyQ29udHIgPSBjb250cnNbaV07XG4gICAgICAgIGNvbnN0IHByZXZDb250ciA9ICAoaT4wKSA/IGNvbnRyc1tpLTFdIDogaW5pdGlhbENvbnRyaWJ1dGlvbjtcbiAgICAgICAgY29uc3QgcmVzID0gYXdhaXQgdmVyaWZ5Q29udHJpYnV0aW9uKGN1cnZlLCBjdXJDb250ciwgcHJldkNvbnRyLCBsb2dnZXIpO1xuICAgICAgICBpZiAoIXJlcykgcmV0dXJuIGZhbHNlO1xuICAgICAgICBwcmludENvbnRyaWJ1dGlvbihjdXJDb250ciwgcHJldkNvbnRyLCBsb2dnZXIpO1xuICAgIH1cbiAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhcIi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXCIpO1xuXG4gICAgaWYgKCghc2VjdGlvbnNbMTJdKSB8fCAoIXNlY3Rpb25zWzEzXSkgfHwgKCFzZWN0aW9uc1sxNF0pIHx8ICghc2VjdGlvbnNbMTVdKSkge1xuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIud2FybihcbiAgICAgICAgICAgIFwidGhpcyBmaWxlIGRvZXMgbm90IGNvbnRhaW4gcGhhc2UyIHByZWNhbGN1bGF0ZWQgdmFsdWVzLiBQbGVhc2UgcnVuOiBcXG5cIiArXG4gICAgICAgICAgICBcIiAgIHNuYXJranMgXFxcInBvd2Vyc29mdGF1IHByZXBhcmVwaGFzZTJcXFwiIHRvIHByZXBhcmUgdGhpcyBmaWxlIHRvIGJlIHVzZWQgaW4gdGhlIHBoYXNlMiBjZXJlbW9ueS5cIlxuICAgICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIGxldCByZXM7XG4gICAgICAgIHJlcyA9IGF3YWl0IHZlcmlmeUxhZ3JhbmdlRXZhbHVhdGlvbnMoXCJHMVwiLCAyLCAxMiwgXCJ0YXVHMVwiLCBsb2dnZXIpO1xuICAgICAgICBpZiAoIXJlcykgcmV0dXJuIGZhbHNlO1xuICAgICAgICByZXMgPSBhd2FpdCB2ZXJpZnlMYWdyYW5nZUV2YWx1YXRpb25zKFwiRzJcIiwgMywgMTMsIFwidGF1RzJcIiwgbG9nZ2VyKTtcbiAgICAgICAgaWYgKCFyZXMpIHJldHVybiBmYWxzZTtcbiAgICAgICAgcmVzID0gYXdhaXQgdmVyaWZ5TGFncmFuZ2VFdmFsdWF0aW9ucyhcIkcxXCIsIDQsIDE0LCBcImFscGhhVGF1RzFcIiwgbG9nZ2VyKTtcbiAgICAgICAgaWYgKCFyZXMpIHJldHVybiBmYWxzZTtcbiAgICAgICAgcmVzID0gYXdhaXQgdmVyaWZ5TGFncmFuZ2VFdmFsdWF0aW9ucyhcIkcxXCIsIDUsIDE1LCBcImJldGFUYXVHMVwiLCBsb2dnZXIpO1xuICAgICAgICBpZiAoIXJlcykgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGF3YWl0IGZkLmNsb3NlKCk7XG5cbiAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhcIlBvd2VycyBvZiBUYXUgT2shXCIpO1xuXG4gICAgcmV0dXJuIHRydWU7XG5cbiAgICBmdW5jdGlvbiBwcmludENvbnRyaWJ1dGlvbihjdXJDb250ciwgcHJldkNvbnRyKSB7XG4gICAgICAgIGlmICghbG9nZ2VyKSByZXR1cm47XG4gICAgICAgIGxvZ2dlci5pbmZvKFwiLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cIik7XG4gICAgICAgIGxvZ2dlci5pbmZvKGBDb250cmlidXRpb24gIyR7Y3VyQ29udHIuaWR9OiAke2N1ckNvbnRyLm5hbWUgfHxcIlwifWApO1xuXG4gICAgICAgIGxvZ2dlci5pbmZvKG1pc2MuZm9ybWF0SGFzaChjdXJDb250ci5uZXh0Q2hhbGxlbmdlLCBcIk5leHQgQ2hhbGxlbmdlOiBcIikpO1xuXG4gICAgICAgIGNvbnN0IGJ1ZmZWICA9IG5ldyBVaW50OEFycmF5KGN1cnZlLkcxLkYubjgqMio2K2N1cnZlLkcyLkYubjgqMiozKTtcbiAgICAgICAgdXRpbHMudG9QdGF1UHViS2V5UnByKGJ1ZmZWLCAwLCBjdXJ2ZSwgY3VyQ29udHIua2V5LCBmYWxzZSk7XG5cbiAgICAgICAgY29uc3QgcmVzcG9uc2VIYXNoZXIgPSBCbGFrZTJiKDY0KTtcbiAgICAgICAgcmVzcG9uc2VIYXNoZXIuc2V0UGFydGlhbEhhc2goY3VyQ29udHIucGFydGlhbEhhc2gpO1xuICAgICAgICByZXNwb25zZUhhc2hlci51cGRhdGUoYnVmZlYpO1xuICAgICAgICBjb25zdCByZXNwb25zZUhhc2ggPSByZXNwb25zZUhhc2hlci5kaWdlc3QoKTtcblxuICAgICAgICBsb2dnZXIuaW5mbyhtaXNjLmZvcm1hdEhhc2gocmVzcG9uc2VIYXNoLCBcIlJlc3BvbnNlIEhhc2g6XCIpKTtcblxuICAgICAgICBsb2dnZXIuaW5mbyhtaXNjLmZvcm1hdEhhc2gocHJldkNvbnRyLm5leHRDaGFsbGVuZ2UsIFwiUmVzcG9uc2UgSGFzaDpcIikpO1xuXG4gICAgICAgIGlmIChjdXJDb250ci50eXBlID09IDEpIHtcbiAgICAgICAgICAgIGxvZ2dlci5pbmZvKGBCZWFjb24gZ2VuZXJhdG9yOiAke21pc2MuYnl0ZUFycmF5MmhleChjdXJDb250ci5iZWFjb25IYXNoKX1gKTtcbiAgICAgICAgICAgIGxvZ2dlci5pbmZvKGBCZWFjb24gaXRlcmF0aW9ucyBFeHA6ICR7Y3VyQ29udHIubnVtSXRlcmF0aW9uc0V4cH1gKTtcbiAgICAgICAgfVxuXG4gICAgfVxuXG4gICAgYXN5bmMgZnVuY3Rpb24gcHJvY2Vzc1NlY3Rpb25CZXRhRzIobG9nZ2VyKSB7XG4gICAgICAgIGNvbnN0IEcgPSBjdXJ2ZS5HMjtcbiAgICAgICAgY29uc3Qgc0cgPSBHLkYubjgqMjtcbiAgICAgICAgY29uc3QgYnVmZlV2ID0gbmV3IFVpbnQ4QXJyYXkoc0cpO1xuXG4gICAgICAgIGlmICghc2VjdGlvbnNbNl0pICB7XG4gICAgICAgICAgICBsb2dnZXIuZXJyb3IoXCJGaWxlIGhhcyBubyBCZXRhRzIgc2VjdGlvblwiKTtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkZpbGUgaGFzIG5vIEJldGFHMiBzZWN0aW9uXCIpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzZWN0aW9uc1s2XS5sZW5ndGg+MSkge1xuICAgICAgICAgICAgbG9nZ2VyLmVycm9yKFwiRmlsZSBoYXMgbm8gQmV0YUcyIHNlY3Rpb25cIik7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJGaWxlIGhhcyBtb3JlIHRoYW4gb25lIEdldGFHMiBzZWN0aW9uXCIpO1xuICAgICAgICB9XG4gICAgICAgIGZkLnBvcyA9IHNlY3Rpb25zWzZdWzBdLnA7XG5cbiAgICAgICAgY29uc3QgYnVmZiA9IGF3YWl0IGZkLnJlYWQoc0cpO1xuICAgICAgICBjb25zdCBQID0gRy5mcm9tUnByTEVNKGJ1ZmYpO1xuXG4gICAgICAgIEcudG9ScHJVbmNvbXByZXNzZWQoYnVmZlV2LCAwLCBQKTtcbiAgICAgICAgbmV4dENvbnRyaWJ1dGlvbkhhc2hlci51cGRhdGUoYnVmZlV2KTtcblxuICAgICAgICByZXR1cm4gUDtcbiAgICB9XG5cbiAgICBhc3luYyBmdW5jdGlvbiBwcm9jZXNzU2VjdGlvbihpZFNlY3Rpb24sIGdyb3VwTmFtZSwgc2VjdGlvbk5hbWUsIG5Qb2ludHMsIHNpbmd1bGFyUG9pbnRJbmRleGVzLCBsb2dnZXIpIHtcbiAgICAgICAgY29uc3QgTUFYX0NIVU5LX1NJWkUgPSAxPDwxNjtcbiAgICAgICAgY29uc3QgRyA9IGN1cnZlW2dyb3VwTmFtZV07XG4gICAgICAgIGNvbnN0IHNHID0gRy5GLm44KjI7XG4gICAgICAgIGF3YWl0IGJpbkZpbGVVdGlscy5zdGFydFJlYWRVbmlxdWVTZWN0aW9uKGZkLCBzZWN0aW9ucywgaWRTZWN0aW9uKTtcblxuICAgICAgICBjb25zdCBzaW5ndWxhclBvaW50cyA9IFtdO1xuXG4gICAgICAgIGxldCBSMSA9IEcuemVybztcbiAgICAgICAgbGV0IFIyID0gRy56ZXJvO1xuXG4gICAgICAgIGxldCBsYXN0QmFzZSA9IEcuemVybztcblxuICAgICAgICBmb3IgKGxldCBpPTA7IGk8blBvaW50czsgaSArPSBNQVhfQ0hVTktfU0laRSkge1xuICAgICAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmRlYnVnKGBwb2ludHMgcmVsYXRpb25zOiAke3NlY3Rpb25OYW1lfTogJHtpfS8ke25Qb2ludHN9IGApO1xuICAgICAgICAgICAgY29uc3QgbiA9IE1hdGgubWluKG5Qb2ludHMgLSBpLCBNQVhfQ0hVTktfU0laRSk7XG4gICAgICAgICAgICBjb25zdCBiYXNlcyA9IGF3YWl0IGZkLnJlYWQobipzRyk7XG5cbiAgICAgICAgICAgIGNvbnN0IGJhc2VzVSA9IGF3YWl0IEcuYmF0Y2hMRU10b1UoYmFzZXMpO1xuICAgICAgICAgICAgbmV4dENvbnRyaWJ1dGlvbkhhc2hlci51cGRhdGUoYmFzZXNVKTtcblxuICAgICAgICAgICAgY29uc3Qgc2NhbGFycyA9IG1pc2MuZ2V0UmFuZG9tQnl0ZXMoNCoobi0xKSk7XG5cbiAgICAgICAgICAgIGlmIChpPjApIHtcbiAgICAgICAgICAgICAgICBjb25zdCBmaXJzdEJhc2UgPSBHLmZyb21ScHJMRU0oYmFzZXMsIDApO1xuICAgICAgICAgICAgICAgIGNvbnN0IHIgPSBtaXNjLnJlYWRVSW50MzJCRShtaXNjLmdldFJhbmRvbUJ5dGVzKDQpLCAwKTtcblxuICAgICAgICAgICAgICAgIFIxID0gRy5hZGQoUjEsIEcudGltZXNTY2FsYXIobGFzdEJhc2UsIHIpKTtcbiAgICAgICAgICAgICAgICBSMiA9IEcuYWRkKFIyLCBHLnRpbWVzU2NhbGFyKGZpcnN0QmFzZSwgcikpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCByMSA9IGF3YWl0IEcubXVsdGlFeHBBZmZpbmUoYmFzZXMuc2xpY2UoMCwgKG4tMSkqc0cpLCBzY2FsYXJzKTtcbiAgICAgICAgICAgIGNvbnN0IHIyID0gYXdhaXQgRy5tdWx0aUV4cEFmZmluZShiYXNlcy5zbGljZShzRyksIHNjYWxhcnMpO1xuXG4gICAgICAgICAgICBSMSA9IEcuYWRkKFIxLCByMSk7XG4gICAgICAgICAgICBSMiA9IEcuYWRkKFIyLCByMik7XG5cbiAgICAgICAgICAgIGxhc3RCYXNlID0gRy5mcm9tUnByTEVNKCBiYXNlcywgKG4tMSkqc0cpO1xuXG4gICAgICAgICAgICBmb3IgKGxldCBqPTA7IGo8c2luZ3VsYXJQb2ludEluZGV4ZXMubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgICAgICAgICBjb25zdCBzcCA9IHNpbmd1bGFyUG9pbnRJbmRleGVzW2pdO1xuICAgICAgICAgICAgICAgIGlmICgoc3AgPj1pKSAmJiAoc3AgPCBpK24pKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IFAgPSBHLmZyb21ScHJMRU0oYmFzZXMsIChzcC1pKSpzRyk7XG4gICAgICAgICAgICAgICAgICAgIHNpbmd1bGFyUG9pbnRzLnB1c2goUCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgIH1cbiAgICAgICAgYXdhaXQgYmluRmlsZVV0aWxzLmVuZFJlYWRTZWN0aW9uKGZkKTtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgUjE6IFIxLFxuICAgICAgICAgICAgUjI6IFIyLFxuICAgICAgICAgICAgc2luZ3VsYXJQb2ludHM6IHNpbmd1bGFyUG9pbnRzXG4gICAgICAgIH07XG5cbiAgICB9XG5cbiAgICBhc3luYyBmdW5jdGlvbiB2ZXJpZnlMYWdyYW5nZUV2YWx1YXRpb25zKGdOYW1lLCB0YXVTZWN0aW9uLCBsYWdyYW5nZVNlY3Rpb24sIHNlY3Rpb25OYW1lLCBsb2dnZXIpIHtcblxuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZGVidWcoYFZlcmlmeWluZyBwaGFzZTIgY2FsY3VsYXRlZCB2YWx1ZXMgJHtzZWN0aW9uTmFtZX0uLi5gKTtcbiAgICAgICAgY29uc3QgRyA9IGN1cnZlW2dOYW1lXTtcbiAgICAgICAgY29uc3Qgc0cgPSBHLkYubjgqMjtcblxuICAgICAgICBjb25zdCBzZWVkPSBuZXcgQXJyYXkoOCk7XG4gICAgICAgIGZvciAobGV0IGk9MDsgaTw4OyBpKyspIHtcbiAgICAgICAgICAgIHNlZWRbaV0gPSBtaXNjLnJlYWRVSW50MzJCRShtaXNjLmdldFJhbmRvbUJ5dGVzKDQpLCAwKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZvciAobGV0IHA9MDsgcDw9IHBvd2VyOyBwICsrKSB7XG4gICAgICAgICAgICBjb25zdCByZXMgPSBhd2FpdCB2ZXJpZnlQb3dlcihwKTtcbiAgICAgICAgICAgIGlmICghcmVzKSByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGF1U2VjdGlvbiA9PSAyKSB7XG4gICAgICAgICAgICBjb25zdCByZXMgPSBhd2FpdCB2ZXJpZnlQb3dlcihwb3dlcisxKTtcbiAgICAgICAgICAgIGlmICghcmVzKSByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdHJ1ZTtcblxuICAgICAgICBhc3luYyBmdW5jdGlvbiB2ZXJpZnlQb3dlcihwKSB7XG4gICAgICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZGVidWcoYFBvd2VyICR7cH0uLi5gKTtcbiAgICAgICAgICAgIGNvbnN0IG44ciA9IGN1cnZlLkZyLm44O1xuICAgICAgICAgICAgY29uc3QgblBvaW50cyA9IDIgKiogcDtcbiAgICAgICAgICAgIGxldCBidWZmX3IgPSBuZXcgVWludDMyQXJyYXkoblBvaW50cyk7XG4gICAgICAgICAgICBsZXQgYnVmZkc7XG5cbiAgICAgICAgICAgIGxldCBybmcgPSBuZXcgQ2hhQ2hhKHNlZWQpO1xuXG4gICAgICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZGVidWcoYENyZWF0aW5nIHJhbmRvbSBudW1iZXJzIFBvd2VycyR7cH0uLi5gKTtcbiAgICAgICAgICAgIGZvciAobGV0IGk9MDsgaTxuUG9pbnRzOyBpKyspIHtcbiAgICAgICAgICAgICAgICBpZiAoKHAgPT0gcG93ZXIrMSkmJihpID09IG5Qb2ludHMtMSkpIHtcbiAgICAgICAgICAgICAgICAgICAgYnVmZl9yW2ldID0gMDtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBidWZmX3JbaV0gPSBybmcubmV4dFUzMigpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgYnVmZl9yID0gbmV3IFVpbnQ4QXJyYXkoYnVmZl9yLmJ1ZmZlciwgYnVmZl9yLmJ5dGVPZmZzZXQsIGJ1ZmZfci5ieXRlTGVuZ3RoKTtcblxuICAgICAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmRlYnVnKGByZWFkaW5nIHBvaW50cyBQb3dlcnMke3B9Li4uYCk7XG4gICAgICAgICAgICBhd2FpdCBiaW5GaWxlVXRpbHMuc3RhcnRSZWFkVW5pcXVlU2VjdGlvbihmZCwgc2VjdGlvbnMsIHRhdVNlY3Rpb24pO1xuICAgICAgICAgICAgYnVmZkcgPSBuZXcgQmlnQnVmZmVyKG5Qb2ludHMqc0cpO1xuICAgICAgICAgICAgaWYgKHAgPT0gcG93ZXIrMSkge1xuICAgICAgICAgICAgICAgIGF3YWl0IGZkLnJlYWRUb0J1ZmZlcihidWZmRywgMCwgKG5Qb2ludHMtMSkqc0cpO1xuICAgICAgICAgICAgICAgIGJ1ZmZHLnNldChjdXJ2ZS5HMS56ZXJvQWZmaW5lLCAoblBvaW50cy0xKSpzRyk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGF3YWl0IGZkLnJlYWRUb0J1ZmZlcihidWZmRywgMCwgblBvaW50cypzRyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBhd2FpdCBiaW5GaWxlVXRpbHMuZW5kUmVhZFNlY3Rpb24oZmQsIHRydWUpO1xuXG4gICAgICAgICAgICBjb25zdCByZXNUYXUgPSBhd2FpdCBHLm11bHRpRXhwQWZmaW5lKGJ1ZmZHLCBidWZmX3IsIGxvZ2dlciwgc2VjdGlvbk5hbWUgKyBcIl9cIiArIHApO1xuXG4gICAgICAgICAgICBidWZmX3IgPSBuZXcgQmlnQnVmZmVyKG5Qb2ludHMgKiBuOHIpO1xuXG4gICAgICAgICAgICBybmcgPSBuZXcgQ2hhQ2hhKHNlZWQpO1xuXG4gICAgICAgICAgICBjb25zdCBidWZmNCA9IG5ldyBVaW50OEFycmF5KDQpO1xuICAgICAgICAgICAgY29uc3QgYnVmZjRWID0gbmV3IERhdGFWaWV3KGJ1ZmY0LmJ1ZmZlcik7XG5cbiAgICAgICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5kZWJ1ZyhgQ3JlYXRpbmcgcmFuZG9tIG51bWJlcnMgUG93ZXJzJHtwfS4uLmApO1xuICAgICAgICAgICAgZm9yIChsZXQgaT0wOyBpPG5Qb2ludHM7IGkrKykge1xuICAgICAgICAgICAgICAgIGlmICgoaSAhPSBuUG9pbnRzLTEpIHx8IChwICE9IHBvd2VyKzEpKSB7XG4gICAgICAgICAgICAgICAgICAgIGJ1ZmY0Vi5zZXRVaW50MzIoMCwgcm5nLm5leHRVMzIoKSwgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgIGJ1ZmZfci5zZXQoYnVmZjQsIGkqbjhyKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5kZWJ1ZyhgYmF0Y2hUb01vbnRnb21lcnkgJHtwfS4uLmApO1xuICAgICAgICAgICAgYnVmZl9yID0gYXdhaXQgY3VydmUuRnIuYmF0Y2hUb01vbnRnb21lcnkoYnVmZl9yKTtcbiAgICAgICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5kZWJ1ZyhgZmZ0ICR7cH0uLi5gKTtcbiAgICAgICAgICAgIGJ1ZmZfciA9IGF3YWl0IGN1cnZlLkZyLmZmdChidWZmX3IpO1xuICAgICAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmRlYnVnKGBiYXRjaEZyb21Nb250Z29tZXJ5ICR7cH0uLi5gKTtcbiAgICAgICAgICAgIGJ1ZmZfciA9IGF3YWl0IGN1cnZlLkZyLmJhdGNoRnJvbU1vbnRnb21lcnkoYnVmZl9yKTtcblxuICAgICAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmRlYnVnKGByZWFkaW5nIHBvaW50cyBMYWdyYW5nZSR7cH0uLi5gKTtcbiAgICAgICAgICAgIGF3YWl0IGJpbkZpbGVVdGlscy5zdGFydFJlYWRVbmlxdWVTZWN0aW9uKGZkLCBzZWN0aW9ucywgbGFncmFuZ2VTZWN0aW9uKTtcbiAgICAgICAgICAgIGZkLnBvcyArPSBzRyooKDIgKiogcCktMSk7XG4gICAgICAgICAgICBhd2FpdCBmZC5yZWFkVG9CdWZmZXIoYnVmZkcsIDAsIG5Qb2ludHMqc0cpO1xuICAgICAgICAgICAgYXdhaXQgYmluRmlsZVV0aWxzLmVuZFJlYWRTZWN0aW9uKGZkLCB0cnVlKTtcblxuICAgICAgICAgICAgY29uc3QgcmVzTGFncmFuZ2UgPSBhd2FpdCBHLm11bHRpRXhwQWZmaW5lKGJ1ZmZHLCBidWZmX3IsIGxvZ2dlciwgc2VjdGlvbk5hbWUgKyBcIl9cIiArIHAgKyBcIl90cmFuc2Zvcm1lZFwiKTtcblxuICAgICAgICAgICAgaWYgKCFHLmVxKHJlc1RhdSwgcmVzTGFncmFuZ2UpKSB7XG4gICAgICAgICAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmVycm9yKFwiUGhhc2UyIGNhY2x1dGF0aW9uIGRvZXMgbm90IG1hdGNoIHdpdGggcG93ZXJzIG9mIHRhdVwiKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgfVxufVxuIiwiLypcbiAgICBDb3B5cmlnaHQgMjAxOCAwS0lNUyBhc3NvY2lhdGlvbi5cblxuICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHNuYXJrSlMuXG5cbiAgICBzbmFya0pTIGlzIGEgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdFxuICAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3JcbiAgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuXG4gICAgc25hcmtKUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVFxuICAgIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWVxuICAgIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpY1xuICAgIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cblxuICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gICAgYWxvbmcgd2l0aCBzbmFya0pTLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuKi9cblxuaW1wb3J0ICogYXMgYmluRmlsZVV0aWxzIGZyb20gXCJAaWRlbjMvYmluZmlsZXV0aWxzXCI7XG5cbi8qXG4gICAgVGhpcyBmdW5jdGlvbiBjcmVhdGVzIGEgbmV3IHNlY3Rpb24gaW4gdGhlIGZkVG8gZmlsZSB3aXRoIGlkIGlkU2VjdGlvbi5cbiAgICBJdCBtdWx0aXBsaWVzIHRoZSBwb2ludHMgaW4gZmRGcm9tIGJ5IGZpcnN0LCBmaXJzdCppbmMsIGZpcnN0KmluY14yLCAuLi4uXG4gICAgblBvaW50IFRpbWVzLlxuICAgIEl0IGFsc28gdXBkYXRlcyB0aGUgbmV3Q2hhbGxlbmdlSGFzaGVyIHdpdGggdGhlIG5ldyBwb2ludHNcbiovXG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBhcHBseUtleVRvU2VjdGlvbihmZE9sZCwgc2VjdGlvbnMsIGZkTmV3LCBpZFNlY3Rpb24sIGN1cnZlLCBncm91cE5hbWUsIGZpcnN0LCBpbmMsIHNlY3Rpb25OYW1lLCBsb2dnZXIpIHtcbiAgICBjb25zdCBNQVhfQ0hVTktfU0laRSA9IDEgPDwgMTY7XG4gICAgY29uc3QgRyA9IGN1cnZlW2dyb3VwTmFtZV07XG4gICAgY29uc3Qgc0cgPSBHLkYubjgqMjtcbiAgICBjb25zdCBuUG9pbnRzID0gc2VjdGlvbnNbaWRTZWN0aW9uXVswXS5zaXplIC8gc0c7XG5cbiAgICBhd2FpdCBiaW5GaWxlVXRpbHMuc3RhcnRSZWFkVW5pcXVlU2VjdGlvbihmZE9sZCwgc2VjdGlvbnMsaWRTZWN0aW9uICk7XG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLnN0YXJ0V3JpdGVTZWN0aW9uKGZkTmV3LCBpZFNlY3Rpb24pO1xuXG4gICAgbGV0IHQgPSBmaXJzdDtcbiAgICBmb3IgKGxldCBpPTA7IGk8blBvaW50czsgaSArPSBNQVhfQ0hVTktfU0laRSkge1xuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZGVidWcoYEFwcGx5aW5nIGtleTogJHtzZWN0aW9uTmFtZX06ICR7aX0vJHtuUG9pbnRzfWApO1xuICAgICAgICBjb25zdCBuPSBNYXRoLm1pbihuUG9pbnRzIC0gaSwgTUFYX0NIVU5LX1NJWkUpO1xuICAgICAgICBsZXQgYnVmZjtcbiAgICAgICAgYnVmZiA9IGF3YWl0IGZkT2xkLnJlYWQobipzRyk7XG4gICAgICAgIGJ1ZmYgPSBhd2FpdCBHLmJhdGNoQXBwbHlLZXkoYnVmZiwgdCwgaW5jKTtcbiAgICAgICAgYXdhaXQgZmROZXcud3JpdGUoYnVmZik7XG4gICAgICAgIHQgPSBjdXJ2ZS5Gci5tdWwodCwgY3VydmUuRnIuZXhwKGluYywgbikpO1xuICAgIH1cblxuICAgIGF3YWl0IGJpbkZpbGVVdGlscy5lbmRXcml0ZVNlY3Rpb24oZmROZXcpO1xuICAgIGF3YWl0IGJpbkZpbGVVdGlscy5lbmRSZWFkU2VjdGlvbihmZE9sZCk7XG59XG5cblxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gYXBwbHlLZXlUb0NoYWxsZW5nZVNlY3Rpb24oZmRPbGQsIGZkTmV3LCByZXNwb25zZUhhc2hlciwgY3VydmUsIGdyb3VwTmFtZSwgblBvaW50cywgZmlyc3QsIGluYywgZm9ybWF0T3V0LCBzZWN0aW9uTmFtZSwgbG9nZ2VyKSB7XG4gICAgY29uc3QgRyA9IGN1cnZlW2dyb3VwTmFtZV07XG4gICAgY29uc3Qgc0cgPSBHLkYubjgqMjtcbiAgICBjb25zdCBjaHVua1NpemUgPSBNYXRoLmZsb29yKCgxPDwyMCkgLyBzRyk7ICAgLy8gMTI4TWIgY2h1bmtzXG4gICAgbGV0IHQgPSBmaXJzdDtcbiAgICBmb3IgKGxldCBpPTAgOyBpPG5Qb2ludHMgOyBpKz0gY2h1bmtTaXplKSB7XG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5kZWJ1ZyhgQXBwbHlpbmcga2V5ICR7c2VjdGlvbk5hbWV9OiAke2l9LyR7blBvaW50c31gKTtcbiAgICAgICAgY29uc3Qgbj0gTWF0aC5taW4oblBvaW50cy1pLCBjaHVua1NpemUgKTtcbiAgICAgICAgY29uc3QgYnVmZkluVSA9IGF3YWl0IGZkT2xkLnJlYWQobiAqIHNHKTtcbiAgICAgICAgY29uc3QgYnVmZkluTEVNID0gYXdhaXQgRy5iYXRjaFV0b0xFTShidWZmSW5VKTtcbiAgICAgICAgY29uc3QgYnVmZk91dExFTSA9IGF3YWl0IEcuYmF0Y2hBcHBseUtleShidWZmSW5MRU0sIHQsIGluYyk7XG4gICAgICAgIGxldCBidWZmT3V0O1xuICAgICAgICBpZiAoZm9ybWF0T3V0ID09IFwiQ09NUFJFU1NFRFwiKSB7XG4gICAgICAgICAgICBidWZmT3V0ID0gYXdhaXQgRy5iYXRjaExFTXRvQyhidWZmT3V0TEVNKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGJ1ZmZPdXQgPSBhd2FpdCBHLmJhdGNoTEVNdG9VKGJ1ZmZPdXRMRU0pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHJlc3BvbnNlSGFzaGVyKSByZXNwb25zZUhhc2hlci51cGRhdGUoYnVmZk91dCk7XG4gICAgICAgIGF3YWl0IGZkTmV3LndyaXRlKGJ1ZmZPdXQpO1xuICAgICAgICB0ID0gY3VydmUuRnIubXVsKHQsIGN1cnZlLkZyLmV4cChpbmMsIG4pKTtcbiAgICB9XG59XG5cbiIsIi8qXG4gICAgQ29weXJpZ2h0IDIwMTggMEtJTVMgYXNzb2NpYXRpb24uXG5cbiAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBzbmFya0pTLlxuXG4gICAgc25hcmtKUyBpcyBhIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXRcbiAgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yXG4gICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cblxuICAgIHNuYXJrSlMgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVRcbiAgICBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFlcbiAgICBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWNcbiAgICBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG5cbiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICAgIGFsb25nIHdpdGggc25hcmtKUy4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cbiovXG5cbi8vIEZvcm1hdCBvZiB0aGUgb3V0cHV0XG4vLyAgICAgIEhhc2ggb2YgdGhlIGxhc3QgY29udHJpYnV0aW9uICA2NCBCeXRlc1xuLy8gICAgICAyXk4qMi0xIFRhdUcxIFBvaW50cyAoY29tcHJlc3NlZClcbi8vICAgICAgMl5OIFRhdUcyIFBvaW50cyAoY29tcHJlc3NlZClcbi8vICAgICAgMl5OIEFscGhhVGF1RzEgUG9pbnRzIChjb21wcmVzc2VkKVxuLy8gICAgICAyXk4gQmV0YVRhdUcxIFBvaW50cyAoY29tcHJlc3NlZClcbi8vICAgICAgUHVibGljIEtleVxuLy8gICAgICAgICAgQmV0YUcyIChjb21wcmVzc2VkKVxuLy8gICAgICAgICAgRzEqcyAoY29tcHJlc3NlZClcbi8vICAgICAgICAgIEcxKnMqdGF1IChjb21wcmVzc2VkKVxuLy8gICAgICAgICAgRzEqdCAoY29tcHJlc3NlZClcbi8vICAgICAgICAgIEcxKnQqYWxwaGEgKGNvbXByZXNzZWQpXG4vLyAgICAgICAgICBHMSp1IChjb21wcmVzc2VkKVxuLy8gICAgICAgICAgRzEqdSpiZXRhIChjb21wcmVzc2VkKVxuLy8gICAgICAgICAgRzIqc3AqdGF1IChjb21wcmVzc2VkKVxuLy8gICAgICAgICAgRzIqdHAqYWxwaGEgKGNvbXByZXNzZWQpXG4vLyAgICAgICAgICBHMip1cCpiZXRhIChjb21wcmVzc2VkKVxuXG5pbXBvcnQgKiBhcyBmYXN0RmlsZSBmcm9tIFwiZmFzdGZpbGVcIjtcbmltcG9ydCBCbGFrZTJiIGZyb20gXCJibGFrZTJiLXdhc21cIjtcbmltcG9ydCAqIGFzIHV0aWxzIGZyb20gXCIuL3Bvd2Vyc29mdGF1X3V0aWxzLmpzXCI7XG5pbXBvcnQgKiBhcyBtaXNjIGZyb20gXCIuL21pc2MuanNcIjtcbmltcG9ydCB7IGFwcGx5S2V5VG9DaGFsbGVuZ2VTZWN0aW9uIH0gZnJvbSBcIi4vbXBjX2FwcGx5a2V5LmpzXCI7XG5pbXBvcnQgKiBhcyBrZXlQYWlyIGZyb20gXCIuL2tleXBhaXIuanNcIjtcblxuZXhwb3J0IGRlZmF1bHQgYXN5bmMgZnVuY3Rpb24gY2hhbGxlbmdlQ29udHJpYnV0ZShjdXJ2ZSwgY2hhbGxlbmdlRmlsZW5hbWUsIHJlc3BvbnNlRmlsZU5hbWUsIGVudHJvcHksIGxvZ2dlcikge1xuICAgIGF3YWl0IEJsYWtlMmIucmVhZHkoKTtcblxuICAgIGNvbnN0IGZkRnJvbSA9IGF3YWl0IGZhc3RGaWxlLnJlYWRFeGlzdGluZyhjaGFsbGVuZ2VGaWxlbmFtZSk7XG5cblxuICAgIGNvbnN0IHNHMSA9IGN1cnZlLkYxLm42NCo4KjI7XG4gICAgY29uc3Qgc0cyID0gY3VydmUuRjIubjY0KjgqMjtcbiAgICBjb25zdCBkb21haW5TaXplID0gKGZkRnJvbS50b3RhbFNpemUgKyBzRzEgLSA2NCAtIHNHMikgLyAoNCpzRzEgKyBzRzIpO1xuICAgIGxldCBlID0gZG9tYWluU2l6ZTtcbiAgICBsZXQgcG93ZXIgPSAwO1xuICAgIHdoaWxlIChlPjEpIHtcbiAgICAgICAgZSA9IGUgLzI7XG4gICAgICAgIHBvd2VyICs9IDE7XG4gICAgfVxuXG4gICAgaWYgKDIgKiogcG93ZXIgIT0gZG9tYWluU2l6ZSkgdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBmaWxlIHNpemVcIik7XG4gICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmRlYnVnKFwiUG93ZXIgdG8gdGF1IHNpemU6IFwiK3Bvd2VyKTtcblxuICAgIGNvbnN0IHJuZyA9IGF3YWl0IG1pc2MuZ2V0UmFuZG9tUm5nKGVudHJvcHkpO1xuXG4gICAgY29uc3QgZmRUbyA9IGF3YWl0IGZhc3RGaWxlLmNyZWF0ZU92ZXJyaWRlKHJlc3BvbnNlRmlsZU5hbWUpO1xuXG4gICAgLy8gQ2FsY3VsYXRlIHRoZSBoYXNoXG4gICAgY29uc3QgY2hhbGxlbmdlSGFzaGVyID0gQmxha2UyYig2NCk7XG4gICAgZm9yIChsZXQgaT0wOyBpPGZkRnJvbS50b3RhbFNpemU7IGkrPSBmZEZyb20ucGFnZVNpemUpIHtcbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmRlYnVnKGBIYXNoaW5nIGNoYWxsZW5nZSAke2l9LyR7ZmRGcm9tLnRvdGFsU2l6ZX1gKTtcbiAgICAgICAgY29uc3QgcyA9IE1hdGgubWluKGZkRnJvbS50b3RhbFNpemUgLSBpLCBmZEZyb20ucGFnZVNpemUpO1xuICAgICAgICBjb25zdCBidWZmID0gYXdhaXQgZmRGcm9tLnJlYWQocyk7XG4gICAgICAgIGNoYWxsZW5nZUhhc2hlci51cGRhdGUoYnVmZik7XG4gICAgfVxuXG4gICAgY29uc3QgY2xhaW1lZEhhc2ggPSBhd2FpdCBmZEZyb20ucmVhZCg2NCwgMCk7XG4gICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8obWlzYy5mb3JtYXRIYXNoKGNsYWltZWRIYXNoLCBcIkNsYWltZWQgUHJldmlvdXMgUmVzcG9uc2UgSGFzaDogXCIpKTtcblxuICAgIGNvbnN0IGNoYWxsZW5nZUhhc2ggPSBjaGFsbGVuZ2VIYXNoZXIuZGlnZXN0KCk7XG4gICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8obWlzYy5mb3JtYXRIYXNoKGNoYWxsZW5nZUhhc2gsIFwiQ3VycmVudCBDaGFsbGVuZ2UgSGFzaDogXCIpKTtcblxuICAgIGNvbnN0IGtleSA9IGtleVBhaXIuY3JlYXRlUFRhdUtleShjdXJ2ZSwgY2hhbGxlbmdlSGFzaCwgcm5nKTtcblxuICAgIGlmIChsb2dnZXIpIHtcbiAgICAgICAgW1widGF1XCIsIFwiYWxwaGFcIiwgXCJiZXRhXCJdLmZvckVhY2goIChrKSA9PiB7XG4gICAgICAgICAgICBsb2dnZXIuZGVidWcoayArIFwiLmcxX3M6IFwiICsgY3VydmUuRzEudG9TdHJpbmcoa2V5W2tdLmcxX3MsIDE2KSk7XG4gICAgICAgICAgICBsb2dnZXIuZGVidWcoayArIFwiLmcxX3N4OiBcIiArIGN1cnZlLkcxLnRvU3RyaW5nKGtleVtrXS5nMV9zeCwgMTYpKTtcbiAgICAgICAgICAgIGxvZ2dlci5kZWJ1ZyhrICsgXCIuZzJfc3A6IFwiICsgY3VydmUuRzIudG9TdHJpbmcoa2V5W2tdLmcyX3NwLCAxNikpO1xuICAgICAgICAgICAgbG9nZ2VyLmRlYnVnKGsgKyBcIi5nMl9zcHg6IFwiICsgY3VydmUuRzIudG9TdHJpbmcoa2V5W2tdLmcyX3NweCwgMTYpKTtcbiAgICAgICAgICAgIGxvZ2dlci5kZWJ1ZyhcIlwiKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgY29uc3QgcmVzcG9uc2VIYXNoZXIgPSBCbGFrZTJiKDY0KTtcblxuICAgIGF3YWl0IGZkVG8ud3JpdGUoY2hhbGxlbmdlSGFzaCk7XG4gICAgcmVzcG9uc2VIYXNoZXIudXBkYXRlKGNoYWxsZW5nZUhhc2gpO1xuXG4gICAgYXdhaXQgYXBwbHlLZXlUb0NoYWxsZW5nZVNlY3Rpb24oZmRGcm9tLCBmZFRvLCByZXNwb25zZUhhc2hlciwgY3VydmUsIFwiRzFcIiwgKDIgKiogcG93ZXIpKjItMSwgY3VydmUuRnIub25lICAgICwga2V5LnRhdS5wcnZLZXksIFwiQ09NUFJFU1NFRFwiLCBcInRhdUcxXCIgICAgICwgbG9nZ2VyICk7XG4gICAgYXdhaXQgYXBwbHlLZXlUb0NoYWxsZW5nZVNlY3Rpb24oZmRGcm9tLCBmZFRvLCByZXNwb25zZUhhc2hlciwgY3VydmUsIFwiRzJcIiwgKDIgKiogcG93ZXIpICAgICwgY3VydmUuRnIub25lICAgICwga2V5LnRhdS5wcnZLZXksIFwiQ09NUFJFU1NFRFwiLCBcInRhdUcyXCIgICAgICwgbG9nZ2VyICk7XG4gICAgYXdhaXQgYXBwbHlLZXlUb0NoYWxsZW5nZVNlY3Rpb24oZmRGcm9tLCBmZFRvLCByZXNwb25zZUhhc2hlciwgY3VydmUsIFwiRzFcIiwgKDIgKiogcG93ZXIpICAgICwga2V5LmFscGhhLnBydktleSwga2V5LnRhdS5wcnZLZXksIFwiQ09NUFJFU1NFRFwiLCBcImFscGhhVGF1RzFcIiwgbG9nZ2VyICk7XG4gICAgYXdhaXQgYXBwbHlLZXlUb0NoYWxsZW5nZVNlY3Rpb24oZmRGcm9tLCBmZFRvLCByZXNwb25zZUhhc2hlciwgY3VydmUsIFwiRzFcIiwgKDIgKiogcG93ZXIpICAgICwga2V5LmJldGEucHJ2S2V5ICwga2V5LnRhdS5wcnZLZXksIFwiQ09NUFJFU1NFRFwiLCBcImJldGFUYXVHMVwiICwgbG9nZ2VyICk7XG4gICAgYXdhaXQgYXBwbHlLZXlUb0NoYWxsZW5nZVNlY3Rpb24oZmRGcm9tLCBmZFRvLCByZXNwb25zZUhhc2hlciwgY3VydmUsIFwiRzJcIiwgMSAgICAgICAgICAgICAsIGtleS5iZXRhLnBydktleSAsIGtleS50YXUucHJ2S2V5LCBcIkNPTVBSRVNTRURcIiwgXCJiZXRhVGF1RzJcIiAsIGxvZ2dlciApO1xuXG4gICAgLy8gV3JpdGUgYW5kIGhhc2gga2V5XG4gICAgY29uc3QgYnVmZktleSA9IG5ldyBVaW50OEFycmF5KGN1cnZlLkYxLm44KjIqNitjdXJ2ZS5GMi5uOCoyKjMpO1xuICAgIHV0aWxzLnRvUHRhdVB1YktleVJwcihidWZmS2V5LCAwLCBjdXJ2ZSwga2V5LCBmYWxzZSk7XG4gICAgYXdhaXQgZmRUby53cml0ZShidWZmS2V5KTtcbiAgICByZXNwb25zZUhhc2hlci51cGRhdGUoYnVmZktleSk7XG4gICAgY29uc3QgcmVzcG9uc2VIYXNoID0gcmVzcG9uc2VIYXNoZXIuZGlnZXN0KCk7XG4gICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8obWlzYy5mb3JtYXRIYXNoKHJlc3BvbnNlSGFzaCwgXCJDb250cmlidXRpb24gUmVzcG9uc2UgSGFzaDogXCIpKTtcblxuICAgIGF3YWl0IGZkVG8uY2xvc2UoKTtcbiAgICBhd2FpdCBmZEZyb20uY2xvc2UoKTtcbn1cblxuIiwiLypcbiAgICBDb3B5cmlnaHQgMjAxOCAwS0lNUyBhc3NvY2lhdGlvbi5cblxuICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHNuYXJrSlMuXG5cbiAgICBzbmFya0pTIGlzIGEgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdFxuICAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3JcbiAgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuXG4gICAgc25hcmtKUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVFxuICAgIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWVxuICAgIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpY1xuICAgIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cblxuICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gICAgYWxvbmcgd2l0aCBzbmFya0pTLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuKi9cblxuaW1wb3J0IEJsYWtlMmIgZnJvbSBcImJsYWtlMmItd2FzbVwiO1xuaW1wb3J0ICogYXMgdXRpbHMgZnJvbSBcIi4vcG93ZXJzb2Z0YXVfdXRpbHMuanNcIjtcbmltcG9ydCAqIGFzIG1pc2MgZnJvbSBcIi4vbWlzYy5qc1wiO1xuaW1wb3J0ICogYXMgYmluRmlsZVV0aWxzIGZyb20gXCJAaWRlbjMvYmluZmlsZXV0aWxzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGFzeW5jIGZ1bmN0aW9uIGJlYWNvbihvbGRQdGF1RmlsZW5hbWUsIG5ld1BUYXVGaWxlbmFtZSwgbmFtZSwgIGJlYWNvbkhhc2hTdHIsbnVtSXRlcmF0aW9uc0V4cCwgbG9nZ2VyKSB7XG4gICAgY29uc3QgYmVhY29uSGFzaCA9IG1pc2MuaGV4MkJ5dGVBcnJheShiZWFjb25IYXNoU3RyKTtcbiAgICBpZiAoICAgKGJlYWNvbkhhc2guYnl0ZUxlbmd0aCA9PSAwKVxuICAgICAgICB8fCAoYmVhY29uSGFzaC5ieXRlTGVuZ3RoKjIgIT1iZWFjb25IYXNoU3RyLmxlbmd0aCkpXG4gICAge1xuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZXJyb3IoXCJJbnZhbGlkIEJlYWNvbiBIYXNoLiAoSXQgbXVzdCBiZSBhIHZhbGlkIGhleGFkZWNpbWFsIHNlcXVlbmNlKVwiKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBpZiAoYmVhY29uSGFzaC5sZW5ndGg+PTI1Nikge1xuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZXJyb3IoXCJNYXhpbXVtIGxlbmd0aCBvZiBiZWFjb24gaGFzaCBpcyAyNTUgYnl0ZXNcIik7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBudW1JdGVyYXRpb25zRXhwID0gcGFyc2VJbnQobnVtSXRlcmF0aW9uc0V4cCk7XG4gICAgaWYgKChudW1JdGVyYXRpb25zRXhwPDEwKXx8KG51bUl0ZXJhdGlvbnNFeHA+NjMpKSB7XG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5lcnJvcihcIkludmFsaWQgbnVtSXRlcmF0aW9uc0V4cC4gKE11c3QgYmUgYmV0d2VlbiAxMCBhbmQgNjMpXCIpO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG5cbiAgICBhd2FpdCBCbGFrZTJiLnJlYWR5KCk7XG5cbiAgICBjb25zdCB7ZmQ6IGZkT2xkLCBzZWN0aW9uc30gPSBhd2FpdCBiaW5GaWxlVXRpbHMucmVhZEJpbkZpbGUob2xkUHRhdUZpbGVuYW1lLCBcInB0YXVcIiwgMSk7XG4gICAgY29uc3Qge2N1cnZlLCBwb3dlciwgY2VyZW1vbnlQb3dlcn0gPSBhd2FpdCB1dGlscy5yZWFkUFRhdUhlYWRlcihmZE9sZCwgc2VjdGlvbnMpO1xuICAgIGlmIChwb3dlciAhPSBjZXJlbW9ueVBvd2VyKSB7XG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5lcnJvcihcIlRoaXMgZmlsZSBoYXMgYmVlbiByZWR1Y2VkLiBZb3UgY2Fubm90IGNvbnRyaWJ1dGUgaW50byBhIHJlZHVjZWQgZmlsZS5cIik7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgaWYgKHNlY3Rpb25zWzEyXSkge1xuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIud2FybihcIkNvbnRyaWJ1dGluZyBpbnRvIGEgZmlsZSB0aGF0IGhhcyBwaGFzZTIgY2FsY3VsYXRlZC4gWW91IHdpbGwgaGF2ZSB0byBwcmVwYXJlIHBoYXNlMiBhZ2Fpbi5cIik7XG4gICAgfVxuICAgIGNvbnN0IGNvbnRyaWJ1dGlvbnMgPSBhd2FpdCB1dGlscy5yZWFkQ29udHJpYnV0aW9ucyhmZE9sZCwgY3VydmUsIHNlY3Rpb25zKTtcbiAgICBjb25zdCBjdXJDb250cmlidXRpb24gPSB7XG4gICAgICAgIG5hbWU6IG5hbWUsXG4gICAgICAgIHR5cGU6IDEsIC8vIEJlYWNvblxuICAgICAgICBudW1JdGVyYXRpb25zRXhwOiBudW1JdGVyYXRpb25zRXhwLFxuICAgICAgICBiZWFjb25IYXNoOiBiZWFjb25IYXNoXG4gICAgfTtcblxuICAgIGxldCBsYXN0Q2hhbGxlbmdlSGFzaDtcblxuICAgIGlmIChjb250cmlidXRpb25zLmxlbmd0aD4wKSB7XG4gICAgICAgIGxhc3RDaGFsbGVuZ2VIYXNoID0gY29udHJpYnV0aW9uc1tjb250cmlidXRpb25zLmxlbmd0aC0xXS5uZXh0Q2hhbGxlbmdlO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIGxhc3RDaGFsbGVuZ2VIYXNoID0gdXRpbHMuY2FsY3VsYXRlRmlyc3RDaGFsbGVuZ2VIYXNoKGN1cnZlLCBwb3dlciwgbG9nZ2VyKTtcbiAgICB9XG5cbiAgICBjdXJDb250cmlidXRpb24ua2V5ID0gYXdhaXQgdXRpbHMua2V5RnJvbUJlYWNvbihjdXJ2ZSwgbGFzdENoYWxsZW5nZUhhc2gsIGJlYWNvbkhhc2gsIG51bUl0ZXJhdGlvbnNFeHApO1xuXG4gICAgY29uc3QgcmVzcG9uc2VIYXNoZXIgPSBuZXcgQmxha2UyYig2NCk7XG4gICAgcmVzcG9uc2VIYXNoZXIudXBkYXRlKGxhc3RDaGFsbGVuZ2VIYXNoKTtcblxuICAgIGNvbnN0IGZkTmV3ID0gYXdhaXQgYmluRmlsZVV0aWxzLmNyZWF0ZUJpbkZpbGUobmV3UFRhdUZpbGVuYW1lLCBcInB0YXVcIiwgMSwgNyk7XG4gICAgYXdhaXQgdXRpbHMud3JpdGVQVGF1SGVhZGVyKGZkTmV3LCBjdXJ2ZSwgcG93ZXIpO1xuXG4gICAgY29uc3Qgc3RhcnRTZWN0aW9ucyA9IFtdO1xuXG4gICAgbGV0IGZpcnN0UG9pbnRzO1xuICAgIGZpcnN0UG9pbnRzID0gYXdhaXQgcHJvY2Vzc1NlY3Rpb24oMiwgXCJHMVwiLCAgKDIgKiogcG93ZXIpICogMiAtMSwgY3VydmUuRnIuZSgxKSwgY3VyQ29udHJpYnV0aW9uLmtleS50YXUucHJ2S2V5LCBcInRhdUcxXCIsIGxvZ2dlciApO1xuICAgIGN1ckNvbnRyaWJ1dGlvbi50YXVHMSA9IGZpcnN0UG9pbnRzWzFdO1xuICAgIGZpcnN0UG9pbnRzID0gYXdhaXQgcHJvY2Vzc1NlY3Rpb24oMywgXCJHMlwiLCAgKDIgKiogcG93ZXIpICwgY3VydmUuRnIuZSgxKSwgY3VyQ29udHJpYnV0aW9uLmtleS50YXUucHJ2S2V5LCBcInRhdUcyXCIsIGxvZ2dlciApO1xuICAgIGN1ckNvbnRyaWJ1dGlvbi50YXVHMiA9IGZpcnN0UG9pbnRzWzFdO1xuICAgIGZpcnN0UG9pbnRzID0gYXdhaXQgcHJvY2Vzc1NlY3Rpb24oNCwgXCJHMVwiLCAgKDIgKiogcG93ZXIpICwgY3VyQ29udHJpYnV0aW9uLmtleS5hbHBoYS5wcnZLZXksIGN1ckNvbnRyaWJ1dGlvbi5rZXkudGF1LnBydktleSwgXCJhbHBoYVRhdUcxXCIsIGxvZ2dlciApO1xuICAgIGN1ckNvbnRyaWJ1dGlvbi5hbHBoYUcxID0gZmlyc3RQb2ludHNbMF07XG4gICAgZmlyc3RQb2ludHMgPSBhd2FpdCBwcm9jZXNzU2VjdGlvbig1LCBcIkcxXCIsICAoMiAqKiBwb3dlcikgLCBjdXJDb250cmlidXRpb24ua2V5LmJldGEucHJ2S2V5LCBjdXJDb250cmlidXRpb24ua2V5LnRhdS5wcnZLZXksIFwiYmV0YVRhdUcxXCIsIGxvZ2dlciApO1xuICAgIGN1ckNvbnRyaWJ1dGlvbi5iZXRhRzEgPSBmaXJzdFBvaW50c1swXTtcbiAgICBmaXJzdFBvaW50cyA9IGF3YWl0IHByb2Nlc3NTZWN0aW9uKDYsIFwiRzJcIiwgIDEsIGN1ckNvbnRyaWJ1dGlvbi5rZXkuYmV0YS5wcnZLZXksIGN1ckNvbnRyaWJ1dGlvbi5rZXkudGF1LnBydktleSwgXCJiZXRhVGF1RzJcIiwgbG9nZ2VyICk7XG4gICAgY3VyQ29udHJpYnV0aW9uLmJldGFHMiA9IGZpcnN0UG9pbnRzWzBdO1xuXG4gICAgY3VyQ29udHJpYnV0aW9uLnBhcnRpYWxIYXNoID0gcmVzcG9uc2VIYXNoZXIuZ2V0UGFydGlhbEhhc2goKTtcblxuICAgIGNvbnN0IGJ1ZmZLZXkgPSBuZXcgVWludDhBcnJheShjdXJ2ZS5GMS5uOCoyKjYrY3VydmUuRjIubjgqMiozKTtcblxuICAgIHV0aWxzLnRvUHRhdVB1YktleVJwcihidWZmS2V5LCAwLCBjdXJ2ZSwgY3VyQ29udHJpYnV0aW9uLmtleSwgZmFsc2UpO1xuXG4gICAgcmVzcG9uc2VIYXNoZXIudXBkYXRlKG5ldyBVaW50OEFycmF5KGJ1ZmZLZXkpKTtcbiAgICBjb25zdCBoYXNoUmVzcG9uc2UgPSByZXNwb25zZUhhc2hlci5kaWdlc3QoKTtcblxuICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKG1pc2MuZm9ybWF0SGFzaChoYXNoUmVzcG9uc2UsIFwiQ29udHJpYnV0aW9uIFJlc3BvbnNlIEhhc2ggaW1wb3J0ZWQ6IFwiKSk7XG5cbiAgICBjb25zdCBuZXh0Q2hhbGxlbmdlSGFzaGVyID0gbmV3IEJsYWtlMmIoNjQpO1xuICAgIG5leHRDaGFsbGVuZ2VIYXNoZXIudXBkYXRlKGhhc2hSZXNwb25zZSk7XG5cbiAgICBhd2FpdCBoYXNoU2VjdGlvbihmZE5ldywgXCJHMVwiLCAyLCAoMiAqKiBwb3dlcikgKiAyIC0xLCBcInRhdUcxXCIsIGxvZ2dlcik7XG4gICAgYXdhaXQgaGFzaFNlY3Rpb24oZmROZXcsIFwiRzJcIiwgMywgKDIgKiogcG93ZXIpICAgICAgICwgXCJ0YXVHMlwiLCBsb2dnZXIpO1xuICAgIGF3YWl0IGhhc2hTZWN0aW9uKGZkTmV3LCBcIkcxXCIsIDQsICgyICoqIHBvd2VyKSAgICAgICAsIFwiYWxwaGFUYXVHMVwiLCBsb2dnZXIpO1xuICAgIGF3YWl0IGhhc2hTZWN0aW9uKGZkTmV3LCBcIkcxXCIsIDUsICgyICoqIHBvd2VyKSAgICAgICAsIFwiYmV0YVRhdUcxXCIsIGxvZ2dlcik7XG4gICAgYXdhaXQgaGFzaFNlY3Rpb24oZmROZXcsIFwiRzJcIiwgNiwgMSAgICAgICAgICAgICAgICAgICwgXCJiZXRhRzJcIiwgbG9nZ2VyKTtcblxuICAgIGN1ckNvbnRyaWJ1dGlvbi5uZXh0Q2hhbGxlbmdlID0gbmV4dENoYWxsZW5nZUhhc2hlci5kaWdlc3QoKTtcblxuICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKG1pc2MuZm9ybWF0SGFzaChjdXJDb250cmlidXRpb24ubmV4dENoYWxsZW5nZSwgXCJOZXh0IENoYWxsZW5nZSBIYXNoOiBcIikpO1xuXG4gICAgY29udHJpYnV0aW9ucy5wdXNoKGN1ckNvbnRyaWJ1dGlvbik7XG5cbiAgICBhd2FpdCB1dGlscy53cml0ZUNvbnRyaWJ1dGlvbnMoZmROZXcsIGN1cnZlLCBjb250cmlidXRpb25zKTtcblxuICAgIGF3YWl0IGZkT2xkLmNsb3NlKCk7XG4gICAgYXdhaXQgZmROZXcuY2xvc2UoKTtcblxuICAgIHJldHVybiBoYXNoUmVzcG9uc2U7XG5cbiAgICBhc3luYyBmdW5jdGlvbiBwcm9jZXNzU2VjdGlvbihzZWN0aW9uSWQsIGdyb3VwTmFtZSwgTlBvaW50cywgZmlyc3QsIGluYywgc2VjdGlvbk5hbWUsIGxvZ2dlcikge1xuICAgICAgICBjb25zdCByZXMgPSBbXTtcbiAgICAgICAgZmRPbGQucG9zID0gc2VjdGlvbnNbc2VjdGlvbklkXVswXS5wO1xuXG4gICAgICAgIGF3YWl0IGJpbkZpbGVVdGlscy5zdGFydFdyaXRlU2VjdGlvbihmZE5ldywgc2VjdGlvbklkKTtcblxuICAgICAgICBzdGFydFNlY3Rpb25zW3NlY3Rpb25JZF0gPSBmZE5ldy5wb3M7XG5cbiAgICAgICAgY29uc3QgRyA9IGN1cnZlW2dyb3VwTmFtZV07XG4gICAgICAgIGNvbnN0IHNHID0gRy5GLm44KjI7XG4gICAgICAgIGNvbnN0IGNodW5rU2l6ZSA9IE1hdGguZmxvb3IoKDE8PDIwKSAvIHNHKTsgICAvLyAxMjhNYiBjaHVua3NcbiAgICAgICAgbGV0IHQgPSBmaXJzdDtcbiAgICAgICAgZm9yIChsZXQgaT0wIDsgaTxOUG9pbnRzIDsgaSs9IGNodW5rU2l6ZSkge1xuICAgICAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmRlYnVnKGBhcHBseWluZyBrZXkke3NlY3Rpb25OYW1lfTogJHtpfS8ke05Qb2ludHN9YCk7XG4gICAgICAgICAgICBjb25zdCBuPSBNYXRoLm1pbihOUG9pbnRzLWksIGNodW5rU2l6ZSApO1xuICAgICAgICAgICAgY29uc3QgYnVmZkluID0gYXdhaXQgZmRPbGQucmVhZChuICogc0cpO1xuICAgICAgICAgICAgY29uc3QgYnVmZk91dExFTSA9IGF3YWl0IEcuYmF0Y2hBcHBseUtleShidWZmSW4sIHQsIGluYyk7XG5cbiAgICAgICAgICAgIC8qIENvZGUgdG8gdGVzdCB0aGUgY2FzZSB3aGVyZSB3ZSBkb24ndCBoYXZlIHRoZSAyXm0tMiBjb21wb25lbnRcbiAgICAgICAgICAgIGlmIChzZWN0aW9uTmFtZT09IFwidGF1RzFcIikge1xuICAgICAgICAgICAgICAgIGNvbnN0IGJ6ID0gbmV3IFVpbnQ4QXJyYXkoNjQpO1xuICAgICAgICAgICAgICAgIGJ1ZmZPdXRMRU0uc2V0KGJ6LCA2NCooKDIgKiogcG93ZXIpIC0gMSApKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgICovXG5cbiAgICAgICAgICAgIGNvbnN0IHByb21pc2VXcml0ZSA9IGZkTmV3LndyaXRlKGJ1ZmZPdXRMRU0pO1xuICAgICAgICAgICAgY29uc3QgYnVmZk91dEMgPSBhd2FpdCBHLmJhdGNoTEVNdG9DKGJ1ZmZPdXRMRU0pO1xuXG4gICAgICAgICAgICByZXNwb25zZUhhc2hlci51cGRhdGUoYnVmZk91dEMpO1xuICAgICAgICAgICAgYXdhaXQgcHJvbWlzZVdyaXRlO1xuICAgICAgICAgICAgaWYgKGk9PTApICAgLy8gUmV0dXJuIHRoZSAyIGZpcnN0IHBvaW50cy5cbiAgICAgICAgICAgICAgICBmb3IgKGxldCBqPTA7IGo8TWF0aC5taW4oMiwgTlBvaW50cyk7IGorKylcbiAgICAgICAgICAgICAgICAgICAgcmVzLnB1c2goRy5mcm9tUnByTEVNKGJ1ZmZPdXRMRU0sIGoqc0cpKTtcbiAgICAgICAgICAgIHQgPSBjdXJ2ZS5Gci5tdWwodCwgY3VydmUuRnIuZXhwKGluYywgbikpO1xuICAgICAgICB9XG5cbiAgICAgICAgYXdhaXQgYmluRmlsZVV0aWxzLmVuZFdyaXRlU2VjdGlvbihmZE5ldyk7XG5cbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG5cblxuICAgIGFzeW5jIGZ1bmN0aW9uIGhhc2hTZWN0aW9uKGZkVG8sIGdyb3VwTmFtZSwgc2VjdGlvbklkLCBuUG9pbnRzLCBzZWN0aW9uTmFtZSwgbG9nZ2VyKSB7XG5cbiAgICAgICAgY29uc3QgRyA9IGN1cnZlW2dyb3VwTmFtZV07XG4gICAgICAgIGNvbnN0IHNHID0gRy5GLm44KjI7XG4gICAgICAgIGNvbnN0IG5Qb2ludHNDaHVuayA9IE1hdGguZmxvb3IoKDE8PDI0KS9zRyk7XG5cbiAgICAgICAgY29uc3Qgb2xkUG9zID0gZmRUby5wb3M7XG4gICAgICAgIGZkVG8ucG9zID0gc3RhcnRTZWN0aW9uc1tzZWN0aW9uSWRdO1xuXG4gICAgICAgIGZvciAobGV0IGk9MDsgaTwgblBvaW50czsgaSArPSBuUG9pbnRzQ2h1bmspIHtcbiAgICAgICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5kZWJ1ZyhgSGFzaGluZyAke3NlY3Rpb25OYW1lfTogJHtpfS8ke25Qb2ludHN9YCk7XG4gICAgICAgICAgICBjb25zdCBuID0gTWF0aC5taW4oblBvaW50cy1pLCBuUG9pbnRzQ2h1bmspO1xuXG4gICAgICAgICAgICBjb25zdCBidWZmTEVNID0gYXdhaXQgZmRUby5yZWFkKG4gKiBzRyk7XG5cbiAgICAgICAgICAgIGNvbnN0IGJ1ZmZVID0gYXdhaXQgRy5iYXRjaExFTXRvVShidWZmTEVNKTtcblxuICAgICAgICAgICAgbmV4dENoYWxsZW5nZUhhc2hlci51cGRhdGUoYnVmZlUpO1xuICAgICAgICB9XG5cbiAgICAgICAgZmRUby5wb3MgPSBvbGRQb3M7XG4gICAgfVxufVxuXG4iLCIvKlxuICAgIENvcHlyaWdodCAyMDE4IDBLSU1TIGFzc29jaWF0aW9uLlxuXG4gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2Ygc25hcmtKUy5cblxuICAgIHNuYXJrSlMgaXMgYSBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0XG4gICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxuICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG5cbiAgICBzbmFya0pTIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUXG4gICAgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZXG4gICAgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljXG4gICAgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuXG4gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAgICBhbG9uZyB3aXRoIHNuYXJrSlMuIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXG4qL1xuXG4vLyBGb3JtYXQgb2YgdGhlIG91dHB1dFxuLy8gICAgICBIYXNoIG9mIHRoZSBsYXN0IGNvbnRyaWJ1dGlvbiAgNjQgQnl0ZXNcbi8vICAgICAgMl5OKjItMSBUYXVHMSBQb2ludHMgKHVuY29tcHJlc3NlZClcbi8vICAgICAgMl5OIFRhdUcyIFBvaW50cyAodW5jb21wcmVzc2VkKVxuLy8gICAgICAyXk4gQWxwaGFUYXVHMSBQb2ludHMgKHVuY29tcHJlc3NlZClcbi8vICAgICAgMl5OIEJldGFUYXVHMSBQb2ludHMgKHVuY29tcHJlc3NlZClcblxuaW1wb3J0IEJsYWtlMmIgZnJvbSBcImJsYWtlMmItd2FzbVwiO1xuaW1wb3J0ICogYXMgdXRpbHMgZnJvbSBcIi4vcG93ZXJzb2Z0YXVfdXRpbHMuanNcIjtcbmltcG9ydCAqIGFzIGtleVBhaXIgZnJvbSBcIi4va2V5cGFpci5qc1wiO1xuaW1wb3J0ICogYXMgYmluRmlsZVV0aWxzIGZyb20gXCJAaWRlbjMvYmluZmlsZXV0aWxzXCI7XG5pbXBvcnQgKiBhcyBtaXNjIGZyb20gXCIuL21pc2MuanNcIjtcblxuZXhwb3J0IGRlZmF1bHQgYXN5bmMgZnVuY3Rpb24gY29udHJpYnV0ZShvbGRQdGF1RmlsZW5hbWUsIG5ld1BUYXVGaWxlbmFtZSwgbmFtZSwgZW50cm9weSwgbG9nZ2VyKSB7XG4gICAgYXdhaXQgQmxha2UyYi5yZWFkeSgpO1xuXG4gICAgY29uc3Qge2ZkOiBmZE9sZCwgc2VjdGlvbnN9ID0gYXdhaXQgYmluRmlsZVV0aWxzLnJlYWRCaW5GaWxlKG9sZFB0YXVGaWxlbmFtZSwgXCJwdGF1XCIsIDEpO1xuICAgIGNvbnN0IHtjdXJ2ZSwgcG93ZXIsIGNlcmVtb255UG93ZXJ9ID0gYXdhaXQgdXRpbHMucmVhZFBUYXVIZWFkZXIoZmRPbGQsIHNlY3Rpb25zKTtcbiAgICBpZiAocG93ZXIgIT0gY2VyZW1vbnlQb3dlcikge1xuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZXJyb3IoXCJUaGlzIGZpbGUgaGFzIGJlZW4gcmVkdWNlZC4gWW91IGNhbm5vdCBjb250cmlidXRlIGludG8gYSByZWR1Y2VkIGZpbGUuXCIpO1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJUaGlzIGZpbGUgaGFzIGJlZW4gcmVkdWNlZC4gWW91IGNhbm5vdCBjb250cmlidXRlIGludG8gYSByZWR1Y2VkIGZpbGUuXCIpO1xuICAgIH1cbiAgICBpZiAoc2VjdGlvbnNbMTJdKSB7XG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci53YXJuKFwiV0FSTklORzogQ29udHJpYnV0aW5nIGludG8gYSBmaWxlIHRoYXQgaGFzIHBoYXNlMiBjYWxjdWxhdGVkLiBZb3Ugd2lsbCBoYXZlIHRvIHByZXBhcmUgcGhhc2UyIGFnYWluLlwiKTtcbiAgICB9XG4gICAgY29uc3QgY29udHJpYnV0aW9ucyA9IGF3YWl0IHV0aWxzLnJlYWRDb250cmlidXRpb25zKGZkT2xkLCBjdXJ2ZSwgc2VjdGlvbnMpO1xuICAgIGNvbnN0IGN1ckNvbnRyaWJ1dGlvbiA9IHtcbiAgICAgICAgbmFtZTogbmFtZSxcbiAgICAgICAgdHlwZTogMCwgLy8gQmVhY29uXG4gICAgfTtcblxuICAgIGxldCBsYXN0Q2hhbGxlbmdlSGFzaDtcblxuICAgIGNvbnN0IHJuZyA9IGF3YWl0IG1pc2MuZ2V0UmFuZG9tUm5nKGVudHJvcHkpO1xuXG4gICAgaWYgKGNvbnRyaWJ1dGlvbnMubGVuZ3RoPjApIHtcbiAgICAgICAgbGFzdENoYWxsZW5nZUhhc2ggPSBjb250cmlidXRpb25zW2NvbnRyaWJ1dGlvbnMubGVuZ3RoLTFdLm5leHRDaGFsbGVuZ2U7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgbGFzdENoYWxsZW5nZUhhc2ggPSB1dGlscy5jYWxjdWxhdGVGaXJzdENoYWxsZW5nZUhhc2goY3VydmUsIHBvd2VyLCBsb2dnZXIpO1xuICAgIH1cblxuICAgIC8vIEdlbmVyYXRlIGEgcmFuZG9tIGtleVxuXG5cbiAgICBjdXJDb250cmlidXRpb24ua2V5ID0ga2V5UGFpci5jcmVhdGVQVGF1S2V5KGN1cnZlLCBsYXN0Q2hhbGxlbmdlSGFzaCwgcm5nKTtcblxuXG4gICAgY29uc3QgcmVzcG9uc2VIYXNoZXIgPSBuZXcgQmxha2UyYig2NCk7XG4gICAgcmVzcG9uc2VIYXNoZXIudXBkYXRlKGxhc3RDaGFsbGVuZ2VIYXNoKTtcblxuICAgIGNvbnN0IGZkTmV3ID0gYXdhaXQgYmluRmlsZVV0aWxzLmNyZWF0ZUJpbkZpbGUobmV3UFRhdUZpbGVuYW1lLCBcInB0YXVcIiwgMSwgNyk7XG4gICAgYXdhaXQgdXRpbHMud3JpdGVQVGF1SGVhZGVyKGZkTmV3LCBjdXJ2ZSwgcG93ZXIpO1xuXG4gICAgY29uc3Qgc3RhcnRTZWN0aW9ucyA9IFtdO1xuXG4gICAgbGV0IGZpcnN0UG9pbnRzO1xuICAgIGZpcnN0UG9pbnRzID0gYXdhaXQgcHJvY2Vzc1NlY3Rpb24oMiwgXCJHMVwiLCAgKDIgKiogcG93ZXIpICogMiAtMSwgY3VydmUuRnIuZSgxKSwgY3VyQ29udHJpYnV0aW9uLmtleS50YXUucHJ2S2V5LCBcInRhdUcxXCIgKTtcbiAgICBjdXJDb250cmlidXRpb24udGF1RzEgPSBmaXJzdFBvaW50c1sxXTtcbiAgICBmaXJzdFBvaW50cyA9IGF3YWl0IHByb2Nlc3NTZWN0aW9uKDMsIFwiRzJcIiwgICgyICoqIHBvd2VyKSAsIGN1cnZlLkZyLmUoMSksIGN1ckNvbnRyaWJ1dGlvbi5rZXkudGF1LnBydktleSwgXCJ0YXVHMlwiICk7XG4gICAgY3VyQ29udHJpYnV0aW9uLnRhdUcyID0gZmlyc3RQb2ludHNbMV07XG4gICAgZmlyc3RQb2ludHMgPSBhd2FpdCBwcm9jZXNzU2VjdGlvbig0LCBcIkcxXCIsICAoMiAqKiBwb3dlcikgLCBjdXJDb250cmlidXRpb24ua2V5LmFscGhhLnBydktleSwgY3VyQ29udHJpYnV0aW9uLmtleS50YXUucHJ2S2V5LCBcImFscGhhVGF1RzFcIiApO1xuICAgIGN1ckNvbnRyaWJ1dGlvbi5hbHBoYUcxID0gZmlyc3RQb2ludHNbMF07XG4gICAgZmlyc3RQb2ludHMgPSBhd2FpdCBwcm9jZXNzU2VjdGlvbig1LCBcIkcxXCIsICAoMiAqKiBwb3dlcikgLCBjdXJDb250cmlidXRpb24ua2V5LmJldGEucHJ2S2V5LCBjdXJDb250cmlidXRpb24ua2V5LnRhdS5wcnZLZXksIFwiYmV0YVRhdUcxXCIgKTtcbiAgICBjdXJDb250cmlidXRpb24uYmV0YUcxID0gZmlyc3RQb2ludHNbMF07XG4gICAgZmlyc3RQb2ludHMgPSBhd2FpdCBwcm9jZXNzU2VjdGlvbig2LCBcIkcyXCIsICAxLCBjdXJDb250cmlidXRpb24ua2V5LmJldGEucHJ2S2V5LCBjdXJDb250cmlidXRpb24ua2V5LnRhdS5wcnZLZXksIFwiYmV0YVRhdUcyXCIgKTtcbiAgICBjdXJDb250cmlidXRpb24uYmV0YUcyID0gZmlyc3RQb2ludHNbMF07XG5cbiAgICBjdXJDb250cmlidXRpb24ucGFydGlhbEhhc2ggPSByZXNwb25zZUhhc2hlci5nZXRQYXJ0aWFsSGFzaCgpO1xuXG4gICAgY29uc3QgYnVmZktleSA9IG5ldyBVaW50OEFycmF5KGN1cnZlLkYxLm44KjIqNitjdXJ2ZS5GMi5uOCoyKjMpO1xuXG4gICAgdXRpbHMudG9QdGF1UHViS2V5UnByKGJ1ZmZLZXksIDAsIGN1cnZlLCBjdXJDb250cmlidXRpb24ua2V5LCBmYWxzZSk7XG5cbiAgICByZXNwb25zZUhhc2hlci51cGRhdGUobmV3IFVpbnQ4QXJyYXkoYnVmZktleSkpO1xuICAgIGNvbnN0IGhhc2hSZXNwb25zZSA9IHJlc3BvbnNlSGFzaGVyLmRpZ2VzdCgpO1xuXG4gICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8obWlzYy5mb3JtYXRIYXNoKGhhc2hSZXNwb25zZSwgXCJDb250cmlidXRpb24gUmVzcG9uc2UgSGFzaCBpbXBvcnRlZDogXCIpKTtcblxuICAgIGNvbnN0IG5leHRDaGFsbGVuZ2VIYXNoZXIgPSBuZXcgQmxha2UyYig2NCk7XG4gICAgbmV4dENoYWxsZW5nZUhhc2hlci51cGRhdGUoaGFzaFJlc3BvbnNlKTtcblxuICAgIGF3YWl0IGhhc2hTZWN0aW9uKGZkTmV3LCBcIkcxXCIsIDIsICgyICoqIHBvd2VyKSAqIDIgLTEsIFwidGF1RzFcIik7XG4gICAgYXdhaXQgaGFzaFNlY3Rpb24oZmROZXcsIFwiRzJcIiwgMywgKDIgKiogcG93ZXIpICAgICAgICwgXCJ0YXVHMlwiKTtcbiAgICBhd2FpdCBoYXNoU2VjdGlvbihmZE5ldywgXCJHMVwiLCA0LCAoMiAqKiBwb3dlcikgICAgICAgLCBcImFscGhhVGF1RzFcIik7XG4gICAgYXdhaXQgaGFzaFNlY3Rpb24oZmROZXcsIFwiRzFcIiwgNSwgKDIgKiogcG93ZXIpICAgICAgICwgXCJiZXRhVGF1RzFcIik7XG4gICAgYXdhaXQgaGFzaFNlY3Rpb24oZmROZXcsIFwiRzJcIiwgNiwgMSAgICAgICAgICAgICAgICAgICwgXCJiZXRhRzJcIik7XG5cbiAgICBjdXJDb250cmlidXRpb24ubmV4dENoYWxsZW5nZSA9IG5leHRDaGFsbGVuZ2VIYXNoZXIuZGlnZXN0KCk7XG5cbiAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhtaXNjLmZvcm1hdEhhc2goY3VyQ29udHJpYnV0aW9uLm5leHRDaGFsbGVuZ2UsIFwiTmV4dCBDaGFsbGVuZ2UgSGFzaDogXCIpKTtcblxuICAgIGNvbnRyaWJ1dGlvbnMucHVzaChjdXJDb250cmlidXRpb24pO1xuXG4gICAgYXdhaXQgdXRpbHMud3JpdGVDb250cmlidXRpb25zKGZkTmV3LCBjdXJ2ZSwgY29udHJpYnV0aW9ucyk7XG5cbiAgICBhd2FpdCBmZE9sZC5jbG9zZSgpO1xuICAgIGF3YWl0IGZkTmV3LmNsb3NlKCk7XG5cbiAgICByZXR1cm4gaGFzaFJlc3BvbnNlO1xuXG4gICAgYXN5bmMgZnVuY3Rpb24gcHJvY2Vzc1NlY3Rpb24oc2VjdGlvbklkLCBncm91cE5hbWUsIE5Qb2ludHMsIGZpcnN0LCBpbmMsIHNlY3Rpb25OYW1lKSB7XG4gICAgICAgIGNvbnN0IHJlcyA9IFtdO1xuICAgICAgICBmZE9sZC5wb3MgPSBzZWN0aW9uc1tzZWN0aW9uSWRdWzBdLnA7XG5cbiAgICAgICAgYXdhaXQgYmluRmlsZVV0aWxzLnN0YXJ0V3JpdGVTZWN0aW9uKGZkTmV3LCBzZWN0aW9uSWQpO1xuXG4gICAgICAgIHN0YXJ0U2VjdGlvbnNbc2VjdGlvbklkXSA9IGZkTmV3LnBvcztcblxuICAgICAgICBjb25zdCBHID0gY3VydmVbZ3JvdXBOYW1lXTtcbiAgICAgICAgY29uc3Qgc0cgPSBHLkYubjgqMjtcbiAgICAgICAgY29uc3QgY2h1bmtTaXplID0gTWF0aC5mbG9vcigoMTw8MjApIC8gc0cpOyAgIC8vIDEyOE1iIGNodW5rc1xuICAgICAgICBsZXQgdCA9IGZpcnN0O1xuICAgICAgICBmb3IgKGxldCBpPTAgOyBpPE5Qb2ludHMgOyBpKz0gY2h1bmtTaXplKSB7XG4gICAgICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZGVidWcoYHByb2Nlc3Npbmc6ICR7c2VjdGlvbk5hbWV9OiAke2l9LyR7TlBvaW50c31gKTtcbiAgICAgICAgICAgIGNvbnN0IG49IE1hdGgubWluKE5Qb2ludHMtaSwgY2h1bmtTaXplICk7XG4gICAgICAgICAgICBjb25zdCBidWZmSW4gPSBhd2FpdCBmZE9sZC5yZWFkKG4gKiBzRyk7XG4gICAgICAgICAgICBjb25zdCBidWZmT3V0TEVNID0gYXdhaXQgRy5iYXRjaEFwcGx5S2V5KGJ1ZmZJbiwgdCwgaW5jKTtcblxuICAgICAgICAgICAgLyogQ29kZSB0byB0ZXN0IHRoZSBjYXNlIHdoZXJlIHdlIGRvbid0IGhhdmUgdGhlIDJebS0yIGNvbXBvbmVudFxuICAgICAgICAgICAgaWYgKHNlY3Rpb25OYW1lPT0gXCJ0YXVHMVwiKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgYnogPSBuZXcgVWludDhBcnJheSg2NCk7XG4gICAgICAgICAgICAgICAgYnVmZk91dExFTS5zZXQoYnosIDY0KigoMiAqKiBwb3dlcikgLSAxICkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgKi9cblxuICAgICAgICAgICAgY29uc3QgcHJvbWlzZVdyaXRlID0gZmROZXcud3JpdGUoYnVmZk91dExFTSk7XG4gICAgICAgICAgICBjb25zdCBidWZmT3V0QyA9IGF3YWl0IEcuYmF0Y2hMRU10b0MoYnVmZk91dExFTSk7XG5cbiAgICAgICAgICAgIHJlc3BvbnNlSGFzaGVyLnVwZGF0ZShidWZmT3V0Qyk7XG4gICAgICAgICAgICBhd2FpdCBwcm9taXNlV3JpdGU7XG4gICAgICAgICAgICBpZiAoaT09MCkgICAvLyBSZXR1cm4gdGhlIDIgZmlyc3QgcG9pbnRzLlxuICAgICAgICAgICAgICAgIGZvciAobGV0IGo9MDsgajxNYXRoLm1pbigyLCBOUG9pbnRzKTsgaisrKVxuICAgICAgICAgICAgICAgICAgICByZXMucHVzaChHLmZyb21ScHJMRU0oYnVmZk91dExFTSwgaipzRykpO1xuICAgICAgICAgICAgdCA9IGN1cnZlLkZyLm11bCh0LCBjdXJ2ZS5Gci5leHAoaW5jLCBuKSk7XG4gICAgICAgIH1cblxuICAgICAgICBhd2FpdCBiaW5GaWxlVXRpbHMuZW5kV3JpdGVTZWN0aW9uKGZkTmV3KTtcblxuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH1cblxuXG4gICAgYXN5bmMgZnVuY3Rpb24gaGFzaFNlY3Rpb24oZmRUbywgZ3JvdXBOYW1lLCBzZWN0aW9uSWQsIG5Qb2ludHMsIHNlY3Rpb25OYW1lKSB7XG5cbiAgICAgICAgY29uc3QgRyA9IGN1cnZlW2dyb3VwTmFtZV07XG4gICAgICAgIGNvbnN0IHNHID0gRy5GLm44KjI7XG4gICAgICAgIGNvbnN0IG5Qb2ludHNDaHVuayA9IE1hdGguZmxvb3IoKDE8PDI0KS9zRyk7XG5cbiAgICAgICAgY29uc3Qgb2xkUG9zID0gZmRUby5wb3M7XG4gICAgICAgIGZkVG8ucG9zID0gc3RhcnRTZWN0aW9uc1tzZWN0aW9uSWRdO1xuXG4gICAgICAgIGZvciAobGV0IGk9MDsgaTwgblBvaW50czsgaSArPSBuUG9pbnRzQ2h1bmspIHtcbiAgICAgICAgICAgIGlmICgobG9nZ2VyKSYmaSkgbG9nZ2VyLmRlYnVnKGBIYXNoaW5nICR7c2VjdGlvbk5hbWV9OiBgICsgaSk7XG4gICAgICAgICAgICBjb25zdCBuID0gTWF0aC5taW4oblBvaW50cy1pLCBuUG9pbnRzQ2h1bmspO1xuXG4gICAgICAgICAgICBjb25zdCBidWZmTEVNID0gYXdhaXQgZmRUby5yZWFkKG4gKiBzRyk7XG5cbiAgICAgICAgICAgIGNvbnN0IGJ1ZmZVID0gYXdhaXQgRy5iYXRjaExFTXRvVShidWZmTEVNKTtcblxuICAgICAgICAgICAgbmV4dENoYWxsZW5nZUhhc2hlci51cGRhdGUoYnVmZlUpO1xuICAgICAgICB9XG5cbiAgICAgICAgZmRUby5wb3MgPSBvbGRQb3M7XG4gICAgfVxuXG5cbn1cblxuIiwiLypcbiAgICBDb3B5cmlnaHQgMjAxOCAwS0lNUyBhc3NvY2lhdGlvbi5cblxuICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHNuYXJrSlMuXG5cbiAgICBzbmFya0pTIGlzIGEgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdFxuICAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3JcbiAgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuXG4gICAgc25hcmtKUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVFxuICAgIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWVxuICAgIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpY1xuICAgIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cblxuICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gICAgYWxvbmcgd2l0aCBzbmFya0pTLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuKi9cblxuaW1wb3J0ICogYXMgYmluRmlsZVV0aWxzIGZyb20gXCJAaWRlbjMvYmluZmlsZXV0aWxzXCI7XG5pbXBvcnQgKiBhcyB1dGlscyBmcm9tIFwiLi9wb3dlcnNvZnRhdV91dGlscy5qc1wiO1xuaW1wb3J0IHtCaWdCdWZmZXJ9IGZyb20gXCJmZmphdmFzY3JpcHRcIjtcblxuZXhwb3J0IGRlZmF1bHQgYXN5bmMgZnVuY3Rpb24gcHJlcGFyZVBoYXNlMihvbGRQdGF1RmlsZW5hbWUsIG5ld1BUYXVGaWxlbmFtZSwgbG9nZ2VyKSB7XG5cbiAgICBjb25zdCB7ZmQ6IGZkT2xkLCBzZWN0aW9uc30gPSBhd2FpdCBiaW5GaWxlVXRpbHMucmVhZEJpbkZpbGUob2xkUHRhdUZpbGVuYW1lLCBcInB0YXVcIiwgMSk7XG4gICAgY29uc3Qge2N1cnZlLCBwb3dlcn0gPSBhd2FpdCB1dGlscy5yZWFkUFRhdUhlYWRlcihmZE9sZCwgc2VjdGlvbnMpO1xuXG4gICAgY29uc3QgZmROZXcgPSBhd2FpdCBiaW5GaWxlVXRpbHMuY3JlYXRlQmluRmlsZShuZXdQVGF1RmlsZW5hbWUsIFwicHRhdVwiLCAxLCAxMSk7XG4gICAgYXdhaXQgdXRpbHMud3JpdGVQVGF1SGVhZGVyKGZkTmV3LCBjdXJ2ZSwgcG93ZXIpO1xuXG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLmNvcHlTZWN0aW9uKGZkT2xkLCBzZWN0aW9ucywgZmROZXcsIDIpO1xuICAgIGF3YWl0IGJpbkZpbGVVdGlscy5jb3B5U2VjdGlvbihmZE9sZCwgc2VjdGlvbnMsIGZkTmV3LCAzKTtcbiAgICBhd2FpdCBiaW5GaWxlVXRpbHMuY29weVNlY3Rpb24oZmRPbGQsIHNlY3Rpb25zLCBmZE5ldywgNCk7XG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLmNvcHlTZWN0aW9uKGZkT2xkLCBzZWN0aW9ucywgZmROZXcsIDUpO1xuICAgIGF3YWl0IGJpbkZpbGVVdGlscy5jb3B5U2VjdGlvbihmZE9sZCwgc2VjdGlvbnMsIGZkTmV3LCA2KTtcbiAgICBhd2FpdCBiaW5GaWxlVXRpbHMuY29weVNlY3Rpb24oZmRPbGQsIHNlY3Rpb25zLCBmZE5ldywgNyk7XG5cbiAgICBhd2FpdCBwcm9jZXNzU2VjdGlvbigyLCAxMiwgXCJHMVwiLCBcInRhdUcxXCIgKTtcbiAgICBhd2FpdCBwcm9jZXNzU2VjdGlvbigzLCAxMywgXCJHMlwiLCBcInRhdUcyXCIgKTtcbiAgICBhd2FpdCBwcm9jZXNzU2VjdGlvbig0LCAxNCwgXCJHMVwiLCBcImFscGhhVGF1RzFcIiApO1xuICAgIGF3YWl0IHByb2Nlc3NTZWN0aW9uKDUsIDE1LCBcIkcxXCIsIFwiYmV0YVRhdUcxXCIgKTtcblxuICAgIGF3YWl0IGZkT2xkLmNsb3NlKCk7XG4gICAgYXdhaXQgZmROZXcuY2xvc2UoKTtcblxuICAgIC8vIGF3YWl0IGZzLnByb21pc2VzLnVubGluayhuZXdQVGF1RmlsZW5hbWUrIFwiLnRtcFwiKTtcblxuICAgIHJldHVybjtcblxuICAgIGFzeW5jIGZ1bmN0aW9uIHByb2Nlc3NTZWN0aW9uKG9sZFNlY3Rpb25JZCwgbmV3U2VjdGlvbklkLCBHc3RyLCBzZWN0aW9uTmFtZSkge1xuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZGVidWcoXCJTdGFydGluZyBzZWN0aW9uOiBcIitzZWN0aW9uTmFtZSk7XG5cbiAgICAgICAgYXdhaXQgYmluRmlsZVV0aWxzLnN0YXJ0V3JpdGVTZWN0aW9uKGZkTmV3LCBuZXdTZWN0aW9uSWQpO1xuXG4gICAgICAgIGZvciAobGV0IHA9MDsgcDw9cG93ZXI7IHArKykge1xuICAgICAgICAgICAgYXdhaXQgcHJvY2Vzc1NlY3Rpb25Qb3dlcihwKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChvbGRTZWN0aW9uSWQgPT0gMikge1xuICAgICAgICAgICAgYXdhaXQgcHJvY2Vzc1NlY3Rpb25Qb3dlcihwb3dlcisxKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGF3YWl0IGJpbkZpbGVVdGlscy5lbmRXcml0ZVNlY3Rpb24oZmROZXcpO1xuXG5cbiAgICAgICAgYXN5bmMgZnVuY3Rpb24gcHJvY2Vzc1NlY3Rpb25Qb3dlcihwKSB7XG4gICAgICAgICAgICBjb25zdCBuUG9pbnRzID0gMiAqKiBwO1xuICAgICAgICAgICAgY29uc3QgRyA9IGN1cnZlW0dzdHJdO1xuICAgICAgICAgICAgY29uc3QgRnIgPSBjdXJ2ZS5GcjtcbiAgICAgICAgICAgIGNvbnN0IHNHaW4gPSBHLkYubjgqMjtcbiAgICAgICAgICAgIGNvbnN0IHNHbWlkID0gRy5GLm44KjM7XG5cbiAgICAgICAgICAgIGxldCBidWZmO1xuICAgICAgICAgICAgYnVmZiA9IG5ldyBCaWdCdWZmZXIoblBvaW50cypzR2luKTtcblxuICAgICAgICAgICAgYXdhaXQgYmluRmlsZVV0aWxzLnN0YXJ0UmVhZFVuaXF1ZVNlY3Rpb24oZmRPbGQsIHNlY3Rpb25zLCBvbGRTZWN0aW9uSWQpO1xuICAgICAgICAgICAgaWYgKChvbGRTZWN0aW9uSWQgPT0gMikmJihwPT1wb3dlcisxKSkge1xuICAgICAgICAgICAgICAgIGF3YWl0IGZkT2xkLnJlYWRUb0J1ZmZlcihidWZmLCAwLChuUG9pbnRzLTEpKnNHaW4gKTtcbiAgICAgICAgICAgICAgICBidWZmLnNldChjdXJ2ZS5HMS56ZXJvQWZmaW5lLCAoblBvaW50cy0xKSpzR2luICk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGF3YWl0IGZkT2xkLnJlYWRUb0J1ZmZlcihidWZmLCAwLG5Qb2ludHMqc0dpbiApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYXdhaXQgYmluRmlsZVV0aWxzLmVuZFJlYWRTZWN0aW9uKGZkT2xkLCB0cnVlKTtcblxuXG4gICAgICAgICAgICBidWZmID0gYXdhaXQgRy5sYWdyYW5nZUV2YWx1YXRpb25zKGJ1ZmYsIFwiYWZmaW5lXCIsIFwiYWZmaW5lXCIsIGxvZ2dlciwgc2VjdGlvbk5hbWUpO1xuICAgICAgICAgICAgYXdhaXQgZmROZXcud3JpdGUoYnVmZik7XG5cbi8qXG4gICAgICAgICAgICBpZiAocCA8PSBjdXJ2ZS5Gci5zKSB7XG4gICAgICAgICAgICAgICAgYnVmZiA9IGF3YWl0IEcuaWZmdChidWZmLCBcImFmZmluZVwiLCBcImFmZmluZVwiLCBsb2dnZXIsIHNlY3Rpb25OYW1lKTtcbiAgICAgICAgICAgICAgICBhd2FpdCBmZE5ldy53cml0ZShidWZmKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAocCA9PSBjdXJ2ZS5Gci5zKzEpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBzbWFsbE0gPSAxPDxjdXJ2ZS5Gci5zO1xuICAgICAgICAgICAgICAgIGxldCB0MCA9IG5ldyBCaWdCdWZmZXIoIHNtYWxsTSAqIHNHbWlkICk7XG4gICAgICAgICAgICAgICAgbGV0IHQxID0gbmV3IEJpZ0J1ZmZlciggc21hbGxNICogc0dtaWQgKTtcblxuICAgICAgICAgICAgICAgIGNvbnN0IHNoaWZ0X3RvX3NtYWxsX20gPSBGci5leHAoRnIuc2hpZnQsIHNtYWxsTSk7XG4gICAgICAgICAgICAgICAgY29uc3Qgb25lX292ZXJfZGVub20gPSBGci5pbnYoRnIuc3ViKHNoaWZ0X3RvX3NtYWxsX20sIEZyLm9uZSkpO1xuXG4gICAgICAgICAgICAgICAgbGV0IHNJbnZBY2MgPSBGci5vbmU7XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaT0wOyBpPHNtYWxsTTsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHRpID0gIGJ1ZmYuc2xpY2UoaSpzR2luLCAoaSsxKSpzR2luKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdG1pID0gYnVmZi5zbGljZSgoaStzbWFsbE0pKnNHaW4sIChpK3NtYWxsTSsxKSpzR2luKTtcblxuICAgICAgICAgICAgICAgICAgICB0MC5zZXQoXG4gICAgICAgICAgICAgICAgICAgICAgICBHLnRpbWVzRnIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRy5zdWIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEcudGltZXNGcih0aSAsIHNoaWZ0X3RvX3NtYWxsX20pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bWlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uZV9vdmVyX2Rlbm9tXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgaSpzR21pZFxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICB0MS5zZXQoXG4gICAgICAgICAgICAgICAgICAgICAgICBHLnRpbWVzRnIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRy5zdWIoIHRtaSwgdGkpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZyLm11bChzSW52QWNjLCBvbmVfb3Zlcl9kZW5vbSlcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICBpKnNHbWlkXG4gICAgICAgICAgICAgICAgICAgICk7XG5cblxuICAgICAgICAgICAgICAgICAgICBzSW52QWNjID0gRnIubXVsKHNJbnZBY2MsIEZyLnNoaWZ0SW52KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdDAgPSBhd2FpdCBHLmlmZnQodDAsIFwiamFjb2JpYW5cIiwgXCJhZmZpbmVcIiwgbG9nZ2VyLCBzZWN0aW9uTmFtZSArIFwiIHQwXCIpO1xuICAgICAgICAgICAgICAgIGF3YWl0IGZkTmV3LndyaXRlKHQwKTtcbiAgICAgICAgICAgICAgICB0MCA9IG51bGw7XG4gICAgICAgICAgICAgICAgdDEgPSBhd2FpdCBHLmlmZnQodDEsIFwiamFjb2JpYW5cIiwgXCJhZmZpbmVcIiwgbG9nZ2VyLCBzZWN0aW9uTmFtZSArIFwiIHQwXCIpO1xuICAgICAgICAgICAgICAgIGF3YWl0IGZkTmV3LndyaXRlKHQxKTtcblxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZXJyb3IoXCJQb3dlciB0b28gYmlnXCIpO1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIlBvd2VyIHRvIGJpZ1wiKTtcbiAgICAgICAgICAgIH1cbiovXG4gICAgICAgIH1cbiAgICB9XG59XG5cbiIsIi8qXG4gICAgQ29weXJpZ2h0IDIwMTggMEtJTVMgYXNzb2NpYXRpb24uXG5cbiAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBzbmFya0pTLlxuXG4gICAgc25hcmtKUyBpcyBhIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXRcbiAgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yXG4gICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cblxuICAgIHNuYXJrSlMgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVRcbiAgICBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFlcbiAgICBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWNcbiAgICBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG5cbiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICAgIGFsb25nIHdpdGggc25hcmtKUy4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cbiovXG5cbmltcG9ydCAqIGFzIGJpbkZpbGVVdGlscyBmcm9tIFwiQGlkZW4zL2JpbmZpbGV1dGlsc1wiO1xuaW1wb3J0ICogYXMgdXRpbHMgZnJvbSBcIi4vcG93ZXJzb2Z0YXVfdXRpbHMuanNcIjtcblxuZXhwb3J0IGRlZmF1bHQgYXN5bmMgZnVuY3Rpb24gdHJ1bmNhdGUocHRhdUZpbGVuYW1lLCB0ZW1wbGF0ZSwgbG9nZ2VyKSB7XG5cbiAgICBjb25zdCB7ZmQ6IGZkT2xkLCBzZWN0aW9uc30gPSBhd2FpdCBiaW5GaWxlVXRpbHMucmVhZEJpbkZpbGUocHRhdUZpbGVuYW1lLCBcInB0YXVcIiwgMSk7XG4gICAgY29uc3Qge2N1cnZlLCBwb3dlciwgY2VyZW1vbnlQb3dlcn0gPSBhd2FpdCB1dGlscy5yZWFkUFRhdUhlYWRlcihmZE9sZCwgc2VjdGlvbnMpO1xuXG4gICAgY29uc3Qgc0cxID0gY3VydmUuRzEuRi5uOCoyO1xuICAgIGNvbnN0IHNHMiA9IGN1cnZlLkcyLkYubjgqMjtcblxuICAgIGZvciAobGV0IHA9MTsgcDxwb3dlcjsgcCsrKSB7XG4gICAgICAgIGF3YWl0IGdlbmVyYXRlVHJ1bmNhdGUocCk7XG4gICAgfVxuXG4gICAgYXdhaXQgZmRPbGQuY2xvc2UoKTtcblxuICAgIHJldHVybiB0cnVlO1xuXG4gICAgYXN5bmMgZnVuY3Rpb24gZ2VuZXJhdGVUcnVuY2F0ZShwKSB7XG5cbiAgICAgICAgbGV0IHNQID0gcC50b1N0cmluZygpO1xuICAgICAgICB3aGlsZSAoc1AubGVuZ3RoPDIpIHNQID0gXCIwXCIgKyBzUDtcblxuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZGVidWcoXCJXcml0aW5nIFBvd2VyOiBcIitzUCk7XG5cbiAgICAgICAgY29uc3QgZmROZXcgPSBhd2FpdCBiaW5GaWxlVXRpbHMuY3JlYXRlQmluRmlsZSh0ZW1wbGF0ZSArIHNQICsgXCIucHRhdVwiLCBcInB0YXVcIiwgMSwgMTEpO1xuICAgICAgICBhd2FpdCB1dGlscy53cml0ZVBUYXVIZWFkZXIoZmROZXcsIGN1cnZlLCBwLCBjZXJlbW9ueVBvd2VyKTtcblxuICAgICAgICBhd2FpdCBiaW5GaWxlVXRpbHMuY29weVNlY3Rpb24oZmRPbGQsIHNlY3Rpb25zLCBmZE5ldywgMiwgKCgyICoqIHApKjItMSkgKiBzRzEgKTsgLy8gdGFnRzFcbiAgICAgICAgYXdhaXQgYmluRmlsZVV0aWxzLmNvcHlTZWN0aW9uKGZkT2xkLCBzZWN0aW9ucywgZmROZXcsIDMsICgyICoqIHApICogc0cyKTsgLy8gdGF1RzJcbiAgICAgICAgYXdhaXQgYmluRmlsZVV0aWxzLmNvcHlTZWN0aW9uKGZkT2xkLCBzZWN0aW9ucywgZmROZXcsIDQsICgyICoqIHApICogc0cxKTsgLy8gYWxmYVRhdUcxXG4gICAgICAgIGF3YWl0IGJpbkZpbGVVdGlscy5jb3B5U2VjdGlvbihmZE9sZCwgc2VjdGlvbnMsIGZkTmV3LCA1LCAoMiAqKiBwKSAqIHNHMSk7IC8vIGJldGFUYXVHMVxuICAgICAgICBhd2FpdCBiaW5GaWxlVXRpbHMuY29weVNlY3Rpb24oZmRPbGQsIHNlY3Rpb25zLCBmZE5ldywgNiwgIHNHMik7IC8vIGJldGFUYXVHMlxuICAgICAgICBhd2FpdCBiaW5GaWxlVXRpbHMuY29weVNlY3Rpb24oZmRPbGQsIHNlY3Rpb25zLCBmZE5ldywgNyk7IC8vIGNvbnRyaWJ1dGlvbnNcbiAgICAgICAgYXdhaXQgYmluRmlsZVV0aWxzLmNvcHlTZWN0aW9uKGZkT2xkLCBzZWN0aW9ucywgZmROZXcsIDEyLCAoKDIgKiogKHArMSkpKjIgLTEpICogc0cxKTsgLy8gTF90YXVHMVxuICAgICAgICBhd2FpdCBiaW5GaWxlVXRpbHMuY29weVNlY3Rpb24oZmRPbGQsIHNlY3Rpb25zLCBmZE5ldywgMTMsICgoMiAqKiBwKSoyIC0xKSAqIHNHMik7IC8vIExfdGF1RzJcbiAgICAgICAgYXdhaXQgYmluRmlsZVV0aWxzLmNvcHlTZWN0aW9uKGZkT2xkLCBzZWN0aW9ucywgZmROZXcsIDE0LCAoKDIgKiogcCkqMiAtMSkgKiBzRzEpOyAvLyBMX2FsZmFUYXVHMVxuICAgICAgICBhd2FpdCBiaW5GaWxlVXRpbHMuY29weVNlY3Rpb24oZmRPbGQsIHNlY3Rpb25zLCBmZE5ldywgMTUsICgoMiAqKiBwKSoyIC0xKSAqIHNHMSk7IC8vIExfYmV0YVRhdUcxXG5cbiAgICAgICAgYXdhaXQgZmROZXcuY2xvc2UoKTtcbiAgICB9XG5cblxufVxuIiwiLypcbiAgICBDb3B5cmlnaHQgMjAxOCAwS0lNUyBhc3NvY2lhdGlvbi5cblxuICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHNuYXJrSlMuXG5cbiAgICBzbmFya0pTIGlzIGEgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdFxuICAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3JcbiAgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuXG4gICAgc25hcmtKUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVFxuICAgIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWVxuICAgIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpY1xuICAgIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cblxuICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gICAgYWxvbmcgd2l0aCBzbmFya0pTLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuKi9cblxuaW1wb3J0ICogYXMgYmluRmlsZVV0aWxzIGZyb20gXCJAaWRlbjMvYmluZmlsZXV0aWxzXCI7XG5pbXBvcnQgKiBhcyB1dGlscyBmcm9tIFwiLi9wb3dlcnNvZnRhdV91dGlscy5qc1wiO1xuaW1wb3J0ICogYXMgZmFzdEZpbGUgZnJvbSBcImZhc3RmaWxlXCI7XG5pbXBvcnQge0JpZ0J1ZmZlcn0gZnJvbSBcImZmamF2YXNjcmlwdFwiO1xuXG5leHBvcnQgZGVmYXVsdCBhc3luYyBmdW5jdGlvbiBjb252ZXJ0KG9sZFB0YXVGaWxlbmFtZSwgbmV3UFRhdUZpbGVuYW1lLCBsb2dnZXIpIHtcblxuICAgIGNvbnN0IHtmZDogZmRPbGQsIHNlY3Rpb25zfSA9IGF3YWl0IGJpbkZpbGVVdGlscy5yZWFkQmluRmlsZShvbGRQdGF1RmlsZW5hbWUsIFwicHRhdVwiLCAxKTtcbiAgICBjb25zdCB7Y3VydmUsIHBvd2VyfSA9IGF3YWl0IHV0aWxzLnJlYWRQVGF1SGVhZGVyKGZkT2xkLCBzZWN0aW9ucyk7XG5cbiAgICBjb25zdCBmZE5ldyA9IGF3YWl0IGJpbkZpbGVVdGlscy5jcmVhdGVCaW5GaWxlKG5ld1BUYXVGaWxlbmFtZSwgXCJwdGF1XCIsIDEsIDExKTtcbiAgICBhd2FpdCB1dGlscy53cml0ZVBUYXVIZWFkZXIoZmROZXcsIGN1cnZlLCBwb3dlcik7XG5cbiAgICAvLyBjb25zdCBmZFRtcCA9IGF3YWl0IGZhc3RGaWxlLmNyZWF0ZU92ZXJyaWRlKG5ld1BUYXVGaWxlbmFtZSsgXCIudG1wXCIpO1xuXG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLmNvcHlTZWN0aW9uKGZkT2xkLCBzZWN0aW9ucywgZmROZXcsIDIpO1xuICAgIGF3YWl0IGJpbkZpbGVVdGlscy5jb3B5U2VjdGlvbihmZE9sZCwgc2VjdGlvbnMsIGZkTmV3LCAzKTtcbiAgICBhd2FpdCBiaW5GaWxlVXRpbHMuY29weVNlY3Rpb24oZmRPbGQsIHNlY3Rpb25zLCBmZE5ldywgNCk7XG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLmNvcHlTZWN0aW9uKGZkT2xkLCBzZWN0aW9ucywgZmROZXcsIDUpO1xuICAgIGF3YWl0IGJpbkZpbGVVdGlscy5jb3B5U2VjdGlvbihmZE9sZCwgc2VjdGlvbnMsIGZkTmV3LCA2KTtcbiAgICBhd2FpdCBiaW5GaWxlVXRpbHMuY29weVNlY3Rpb24oZmRPbGQsIHNlY3Rpb25zLCBmZE5ldywgNyk7XG5cbiAgICBhd2FpdCBwcm9jZXNzU2VjdGlvbigyLCAxMiwgXCJHMVwiLCBcInRhdUcxXCIgKTtcbiAgICBhd2FpdCBiaW5GaWxlVXRpbHMuY29weVNlY3Rpb24oZmRPbGQsIHNlY3Rpb25zLCBmZE5ldywgMTMpO1xuICAgIGF3YWl0IGJpbkZpbGVVdGlscy5jb3B5U2VjdGlvbihmZE9sZCwgc2VjdGlvbnMsIGZkTmV3LCAxNCk7XG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLmNvcHlTZWN0aW9uKGZkT2xkLCBzZWN0aW9ucywgZmROZXcsIDE1KTtcblxuICAgIGF3YWl0IGZkT2xkLmNsb3NlKCk7XG4gICAgYXdhaXQgZmROZXcuY2xvc2UoKTtcblxuICAgIC8vIGF3YWl0IGZzLnByb21pc2VzLnVubGluayhuZXdQVGF1RmlsZW5hbWUrIFwiLnRtcFwiKTtcblxuICAgIHJldHVybjtcblxuICAgIGFzeW5jIGZ1bmN0aW9uIHByb2Nlc3NTZWN0aW9uKG9sZFNlY3Rpb25JZCwgbmV3U2VjdGlvbklkLCBHc3RyLCBzZWN0aW9uTmFtZSkge1xuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZGVidWcoXCJTdGFydGluZyBzZWN0aW9uOiBcIitzZWN0aW9uTmFtZSk7XG5cbiAgICAgICAgYXdhaXQgYmluRmlsZVV0aWxzLnN0YXJ0V3JpdGVTZWN0aW9uKGZkTmV3LCBuZXdTZWN0aW9uSWQpO1xuXG4gICAgICAgIGNvbnN0IHNpemUgPSBzZWN0aW9uc1tuZXdTZWN0aW9uSWRdWzBdLnNpemU7XG4gICAgICAgIGNvbnN0IGNodW5rU2l6ZSA9IGZkT2xkLnBhZ2VTaXplO1xuICAgICAgICBhd2FpdCBiaW5GaWxlVXRpbHMuc3RhcnRSZWFkVW5pcXVlU2VjdGlvbihmZE9sZCwgc2VjdGlvbnMsIG5ld1NlY3Rpb25JZCk7XG4gICAgICAgIGZvciAobGV0IHA9MDsgcDxzaXplOyBwKz1jaHVua1NpemUpIHtcbiAgICAgICAgICAgIGNvbnN0IGwgPSBNYXRoLm1pbihzaXplIC1wLCBjaHVua1NpemUpO1xuICAgICAgICAgICAgY29uc3QgYnVmZiA9IGF3YWl0IGZkT2xkLnJlYWQobCk7XG4gICAgICAgICAgICBhd2FpdCBmZE5ldy53cml0ZShidWZmKTtcbiAgICAgICAgfVxuICAgICAgICBhd2FpdCBiaW5GaWxlVXRpbHMuZW5kUmVhZFNlY3Rpb24oZmRPbGQpO1xuXG4gICAgICAgIGlmIChvbGRTZWN0aW9uSWQgPT0gMikge1xuICAgICAgICAgICAgYXdhaXQgcHJvY2Vzc1NlY3Rpb25Qb3dlcihwb3dlcisxKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGF3YWl0IGJpbkZpbGVVdGlscy5lbmRXcml0ZVNlY3Rpb24oZmROZXcpO1xuXG4gICAgICAgIGFzeW5jIGZ1bmN0aW9uIHByb2Nlc3NTZWN0aW9uUG93ZXIocCkge1xuICAgICAgICAgICAgY29uc3QgblBvaW50cyA9IDIgKiogcDtcbiAgICAgICAgICAgIGNvbnN0IEcgPSBjdXJ2ZVtHc3RyXTtcbiAgICAgICAgICAgIGNvbnN0IHNHaW4gPSBHLkYubjgqMjtcblxuICAgICAgICAgICAgbGV0IGJ1ZmY7XG4gICAgICAgICAgICBidWZmID0gbmV3IEJpZ0J1ZmZlcihuUG9pbnRzKnNHaW4pO1xuXG4gICAgICAgICAgICBhd2FpdCBiaW5GaWxlVXRpbHMuc3RhcnRSZWFkVW5pcXVlU2VjdGlvbihmZE9sZCwgc2VjdGlvbnMsIG9sZFNlY3Rpb25JZCk7XG4gICAgICAgICAgICBpZiAoKG9sZFNlY3Rpb25JZCA9PSAyKSYmKHA9PXBvd2VyKzEpKSB7XG4gICAgICAgICAgICAgICAgYXdhaXQgZmRPbGQucmVhZFRvQnVmZmVyKGJ1ZmYsIDAsKG5Qb2ludHMtMSkqc0dpbiApO1xuICAgICAgICAgICAgICAgIGJ1ZmYuc2V0KGN1cnZlLkcxLnplcm9BZmZpbmUsIChuUG9pbnRzLTEpKnNHaW4gKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgYXdhaXQgZmRPbGQucmVhZFRvQnVmZmVyKGJ1ZmYsIDAsblBvaW50cypzR2luICk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBhd2FpdCBiaW5GaWxlVXRpbHMuZW5kUmVhZFNlY3Rpb24oZmRPbGQsIHRydWUpO1xuXG4gICAgICAgICAgICBidWZmID0gYXdhaXQgRy5sYWdyYW5nZUV2YWx1YXRpb25zKGJ1ZmYsIFwiYWZmaW5lXCIsIFwiYWZmaW5lXCIsIGxvZ2dlciwgc2VjdGlvbk5hbWUpO1xuICAgICAgICAgICAgYXdhaXQgZmROZXcud3JpdGUoYnVmZik7XG5cbi8qXG4gICAgICAgICAgICBpZiAocCA8PSBjdXJ2ZS5Gci5zKSB7XG4gICAgICAgICAgICAgICAgYnVmZiA9IGF3YWl0IEcuaWZmdChidWZmLCBcImFmZmluZVwiLCBcImFmZmluZVwiLCBsb2dnZXIsIHNlY3Rpb25OYW1lKTtcbiAgICAgICAgICAgICAgICBhd2FpdCBmZE5ldy53cml0ZShidWZmKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAocCA9PSBjdXJ2ZS5Gci5zKzEpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBzbWFsbE0gPSAxPDxjdXJ2ZS5Gci5zO1xuICAgICAgICAgICAgICAgIGxldCB0MCA9IG5ldyBCaWdCdWZmZXIoIHNtYWxsTSAqIHNHbWlkICk7XG4gICAgICAgICAgICAgICAgbGV0IHQxID0gbmV3IEJpZ0J1ZmZlciggc21hbGxNICogc0dtaWQgKTtcblxuICAgICAgICAgICAgICAgIGNvbnN0IHNoaWZ0X3RvX3NtYWxsX20gPSBGci5leHAoRnIuc2hpZnQsIHNtYWxsTSk7XG4gICAgICAgICAgICAgICAgY29uc3Qgb25lX292ZXJfZGVub20gPSBGci5pbnYoRnIuc3ViKHNoaWZ0X3RvX3NtYWxsX20sIEZyLm9uZSkpO1xuXG4gICAgICAgICAgICAgICAgbGV0IHNJbnZBY2MgPSBGci5vbmU7XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaT0wOyBpPHNtYWxsTTsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpJTEwMDAwKSBsb2dnZXIuZGVidWcoYHNlY3Rpb25OYW1lIHByZXBhcmUgTCBjYWxjOiAke3NlY3Rpb25OYW1lfSwgJHtpfS8ke3NtYWxsTX1gKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdGkgPSAgYnVmZi5zbGljZShpKnNHaW4sIChpKzEpKnNHaW4pO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB0bWkgPSBidWZmLnNsaWNlKChpK3NtYWxsTSkqc0dpbiwgKGkrc21hbGxNKzEpKnNHaW4pO1xuXG4gICAgICAgICAgICAgICAgICAgIHQwLnNldChcbiAgICAgICAgICAgICAgICAgICAgICAgIEcudGltZXNGcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBHLnN1YihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRy50aW1lc0ZyKHRpICwgc2hpZnRfdG9fc21hbGxfbSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtaVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25lX292ZXJfZGVub21cbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICBpKnNHbWlkXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIHQxLnNldChcbiAgICAgICAgICAgICAgICAgICAgICAgIEcudGltZXNGcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBHLnN1YiggdG1pLCB0aSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRnIubXVsKHNJbnZBY2MsIG9uZV9vdmVyX2Rlbm9tKVxuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGkqc0dtaWRcbiAgICAgICAgICAgICAgICAgICAgKTtcblxuXG4gICAgICAgICAgICAgICAgICAgIHNJbnZBY2MgPSBGci5tdWwoc0ludkFjYywgRnIuc2hpZnRJbnYpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0MCA9IGF3YWl0IEcuaWZmdCh0MCwgXCJqYWNvYmlhblwiLCBcImFmZmluZVwiLCBsb2dnZXIsIHNlY3Rpb25OYW1lICsgXCIgdDBcIik7XG4gICAgICAgICAgICAgICAgYXdhaXQgZmROZXcud3JpdGUodDApO1xuICAgICAgICAgICAgICAgIHQwID0gbnVsbDtcbiAgICAgICAgICAgICAgICB0MSA9IGF3YWl0IEcuaWZmdCh0MSwgXCJqYWNvYmlhblwiLCBcImFmZmluZVwiLCBsb2dnZXIsIHNlY3Rpb25OYW1lICsgXCIgdDFcIik7XG4gICAgICAgICAgICAgICAgYXdhaXQgZmROZXcud3JpdGUodDEpO1xuXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5lcnJvcihcIlBvd2VyIHRvbyBiaWdcIik7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiUG93ZXIgdG8gYmlnXCIpO1xuICAgICAgICAgICAgfVxuKi9cbiAgICAgICAgfVxuXG5cbiAgICB9XG59XG5cbiIsIi8qXG4gICAgQ29weXJpZ2h0IDIwMTggMEtJTVMgYXNzb2NpYXRpb24uXG5cbiAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBzbmFya0pTLlxuXG4gICAgc25hcmtKUyBpcyBhIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXRcbiAgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yXG4gICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cblxuICAgIHNuYXJrSlMgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVRcbiAgICBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFlcbiAgICBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWNcbiAgICBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG5cbiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICAgIGFsb25nIHdpdGggc25hcmtKUy4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cbiovXG5cbmltcG9ydCAqIGFzIHV0aWxzIGZyb20gXCIuL3Bvd2Vyc29mdGF1X3V0aWxzLmpzXCI7XG5pbXBvcnQgKiBhcyBiaW5GaWxlVXRpbHMgZnJvbSBcIkBpZGVuMy9iaW5maWxldXRpbHNcIjtcbmltcG9ydCB7IHN0cmluZ2lmeUJpZ0ludHNXaXRoRmllbGQgfSBmcm9tIFwiLi9taXNjLmpzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGFzeW5jIGZ1bmN0aW9uIGV4cG9ydEpzb24ocFRhdUZpbGVuYW1lLCB2ZXJib3NlKSB7XG4gICAgY29uc3Qge2ZkLCBzZWN0aW9uc30gPSBhd2FpdCBiaW5GaWxlVXRpbHMucmVhZEJpbkZpbGUocFRhdUZpbGVuYW1lLCBcInB0YXVcIiwgMSk7XG5cbiAgICBjb25zdCB7Y3VydmUsIHBvd2VyfSA9IGF3YWl0IHV0aWxzLnJlYWRQVGF1SGVhZGVyKGZkLCBzZWN0aW9ucyk7XG5cbiAgICBjb25zdCBwVGF1ID0ge307XG4gICAgcFRhdS5xID0gY3VydmUucTtcbiAgICBwVGF1LnBvd2VyID0gcG93ZXI7XG4gICAgcFRhdS5jb250cmlidXRpb25zID0gYXdhaXQgdXRpbHMucmVhZENvbnRyaWJ1dGlvbnMoZmQsIGN1cnZlLCBzZWN0aW9ucyk7XG5cbiAgICBwVGF1LnRhdUcxID0gYXdhaXQgZXhwb3J0U2VjdGlvbigyLCBcIkcxXCIsICgyICoqIHBvd2VyKSoyIC0xLCBcInRhdUcxXCIpO1xuICAgIHBUYXUudGF1RzIgPSBhd2FpdCBleHBvcnRTZWN0aW9uKDMsIFwiRzJcIiwgKDIgKiogcG93ZXIpLCBcInRhdUcyXCIpO1xuICAgIHBUYXUuYWxwaGFUYXVHMSA9IGF3YWl0IGV4cG9ydFNlY3Rpb24oNCwgXCJHMVwiLCAoMiAqKiBwb3dlciksIFwiYWxwaGFUYXVHMVwiKTtcbiAgICBwVGF1LmJldGFUYXVHMSA9IGF3YWl0IGV4cG9ydFNlY3Rpb24oNSwgXCJHMVwiLCAoMiAqKiBwb3dlciksIFwiYmV0YVRhdUcxXCIpO1xuICAgIHBUYXUuYmV0YUcyID0gYXdhaXQgZXhwb3J0U2VjdGlvbig2LCBcIkcyXCIsIDEsIFwiYmV0YUcyXCIpO1xuXG4gICAgcFRhdS5sVGF1RzEgPSBhd2FpdCBleHBvcnRMYWdyYW5nZSgxMiwgXCJHMVwiLCBcImxUYXVHMVwiKTtcbiAgICBwVGF1LmxUYXVHMiA9IGF3YWl0IGV4cG9ydExhZ3JhbmdlKDEzLCBcIkcyXCIsIFwibFRhdUcyXCIpO1xuICAgIHBUYXUubEFscGhhVGF1RzEgPSBhd2FpdCBleHBvcnRMYWdyYW5nZSgxNCwgXCJHMVwiLCBcImxBbHBoYVRhdUcyXCIpO1xuICAgIHBUYXUubEJldGFUYXVHMSA9IGF3YWl0IGV4cG9ydExhZ3JhbmdlKDE1LCBcIkcxXCIsIFwibEJldGFUYXVHMlwiKTtcblxuICAgIGF3YWl0IGZkLmNsb3NlKCk7XG5cbiAgICByZXR1cm4gc3RyaW5naWZ5QmlnSW50c1dpdGhGaWVsZChjdXJ2ZS5GciwgcFRhdSk7XG5cblxuXG4gICAgYXN5bmMgZnVuY3Rpb24gZXhwb3J0U2VjdGlvbihzZWN0aW9uSWQsIGdyb3VwTmFtZSwgblBvaW50cywgc2VjdGlvbk5hbWUpIHtcbiAgICAgICAgY29uc3QgRyA9IGN1cnZlW2dyb3VwTmFtZV07XG4gICAgICAgIGNvbnN0IHNHID0gRy5GLm44KjI7XG5cbiAgICAgICAgY29uc3QgcmVzID0gW107XG4gICAgICAgIGF3YWl0IGJpbkZpbGVVdGlscy5zdGFydFJlYWRVbmlxdWVTZWN0aW9uKGZkLCBzZWN0aW9ucywgc2VjdGlvbklkKTtcbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPCBuUG9pbnRzOyBpKyspIHtcbiAgICAgICAgICAgIGlmICgodmVyYm9zZSkmJmkmJihpJTEwMDAwID09IDApKSBjb25zb2xlLmxvZyhgJHtzZWN0aW9uTmFtZX06IGAgKyBpKTtcbiAgICAgICAgICAgIGNvbnN0IGJ1ZmYgPSBhd2FpdCBmZC5yZWFkKHNHKTtcbiAgICAgICAgICAgIHJlcy5wdXNoKEcuZnJvbVJwckxFTShidWZmLCAwKSk7XG4gICAgICAgIH1cbiAgICAgICAgYXdhaXQgYmluRmlsZVV0aWxzLmVuZFJlYWRTZWN0aW9uKGZkKTtcblxuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH1cblxuICAgIGFzeW5jIGZ1bmN0aW9uIGV4cG9ydExhZ3JhbmdlKHNlY3Rpb25JZCwgZ3JvdXBOYW1lLCBzZWN0aW9uTmFtZSkge1xuICAgICAgICBjb25zdCBHID0gY3VydmVbZ3JvdXBOYW1lXTtcbiAgICAgICAgY29uc3Qgc0cgPSBHLkYubjgqMjtcblxuICAgICAgICBjb25zdCByZXMgPSBbXTtcbiAgICAgICAgYXdhaXQgYmluRmlsZVV0aWxzLnN0YXJ0UmVhZFVuaXF1ZVNlY3Rpb24oZmQsIHNlY3Rpb25zLCBzZWN0aW9uSWQpO1xuICAgICAgICBmb3IgKGxldCBwPTA7IHA8PXBvd2VyOyBwKyspIHtcbiAgICAgICAgICAgIGlmICh2ZXJib3NlKSBjb25zb2xlLmxvZyhgJHtzZWN0aW9uTmFtZX06IFBvd2VyOiAke3B9YCk7XG4gICAgICAgICAgICByZXNbcF0gPSBbXTtcbiAgICAgICAgICAgIGNvbnN0IG5Qb2ludHMgPSAoMiAqKiBwKTtcbiAgICAgICAgICAgIGZvciAobGV0IGk9MDsgaTxuUG9pbnRzOyBpKyspIHtcbiAgICAgICAgICAgICAgICBpZiAoKHZlcmJvc2UpJiZpJiYoaSUxMDAwMCA9PSAwKSkgY29uc29sZS5sb2coYCR7c2VjdGlvbk5hbWV9OiAke2l9LyR7blBvaW50c31gKTtcbiAgICAgICAgICAgICAgICBjb25zdCBidWZmID0gYXdhaXQgZmQucmVhZChzRyk7XG4gICAgICAgICAgICAgICAgcmVzW3BdLnB1c2goRy5mcm9tUnByTEVNKGJ1ZmYsIDApKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBhd2FpdCBiaW5GaWxlVXRpbHMuZW5kUmVhZFNlY3Rpb24oZmQsIHRydWUpO1xuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH1cblxuXG59XG5cblxuIiwiLypcbiAgICBDb3B5cmlnaHQgMjAxOCAwS0lNUyBhc3NvY2lhdGlvbi5cblxuICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHNuYXJrSlMuXG5cbiAgICBzbmFya0pTIGlzIGEgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdFxuICAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3JcbiAgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuXG4gICAgc25hcmtKUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVFxuICAgIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWVxuICAgIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpY1xuICAgIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cblxuICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gICAgYWxvbmcgd2l0aCBzbmFya0pTLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuKi9cblxuZXhwb3J0IHtkZWZhdWx0IGFzIG5ld0FjY3VtdWxhdG9yfSBmcm9tIFwiLi9wb3dlcnNvZnRhdV9uZXcuanNcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBleHBvcnRDaGFsbGVuZ2V9IGZyb20gXCIuL3Bvd2Vyc29mdGF1X2V4cG9ydF9jaGFsbGVuZ2UuanNcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBpbXBvcnRSZXNwb25zZX0gZnJvbSBcIi4vcG93ZXJzb2Z0YXVfaW1wb3J0LmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgdmVyaWZ5fSBmcm9tIFwiLi9wb3dlcnNvZnRhdV92ZXJpZnkuanNcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBjaGFsbGVuZ2VDb250cmlidXRlfSBmcm9tIFwiLi9wb3dlcnNvZnRhdV9jaGFsbGVuZ2VfY29udHJpYnV0ZS5qc1wiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIGJlYWNvbn0gZnJvbSBcIi4vcG93ZXJzb2Z0YXVfYmVhY29uLmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgY29udHJpYnV0ZX0gZnJvbSBcIi4vcG93ZXJzb2Z0YXVfY29udHJpYnV0ZS5qc1wiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIHByZXBhcmVQaGFzZTJ9IGZyb20gXCIuL3Bvd2Vyc29mdGF1X3ByZXBhcmVwaGFzZTIuanNcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyB0cnVuY2F0ZX0gZnJvbSBcIi4vcG93ZXJzb2Z0YXVfdHJ1bmNhdGUuanNcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBjb252ZXJ0fSBmcm9tIFwiLi9wb3dlcnNvZnRhdV9jb252ZXJ0LmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgZXhwb3J0SnNvbn0gZnJvbSBcIi4vcG93ZXJzb2Z0YXVfZXhwb3J0X2pzb24uanNcIjtcbiIsIi8qXG4gICAgQ29weXJpZ2h0IDIwMTggMEtJTVMgYXNzb2NpYXRpb24uXG5cbiAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBzbmFya0pTLlxuXG4gICAgc25hcmtKUyBpcyBhIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXRcbiAgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yXG4gICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cblxuICAgIHNuYXJrSlMgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVRcbiAgICBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFlcbiAgICBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWNcbiAgICBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG5cbiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICAgIGFsb25nIHdpdGggc25hcmtKUy4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cbiovXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHIxY3NQcmludChyMWNzLCBzeW1zLCBsb2dnZXIpIHtcbiAgICBmb3IgKGxldCBpPTA7IGk8cjFjcy5jb25zdHJhaW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgICBwcmludENvc3RyYWludChyMWNzLmNvbnN0cmFpbnRzW2ldKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gcHJpbnRDb3N0cmFpbnQoYykge1xuICAgICAgICBjb25zdCBsYzJzdHIgPSAobGMpID0+IHtcbiAgICAgICAgICAgIGxldCBTID0gXCJcIjtcbiAgICAgICAgICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhsYyk7XG4gICAgICAgICAgICBrZXlzLmZvckVhY2goIChrKSA9PiB7XG4gICAgICAgICAgICAgICAgbGV0IG5hbWUgPSBzeW1zLnZhcklkeDJOYW1lW2tdO1xuICAgICAgICAgICAgICAgIGlmIChuYW1lID09IFwib25lXCIpIG5hbWUgPSBcIjFcIjtcblxuICAgICAgICAgICAgICAgIGxldCB2cyA9IHIxY3MuY3VydmUuRnIudG9TdHJpbmcobGNba10pO1xuICAgICAgICAgICAgICAgIGlmICh2cyA9PSBcIjFcIikgdnMgPSBcIlwiOyAgLy8gRG8gbm90IHNob3cgb25lc1xuICAgICAgICAgICAgICAgIGlmICh2cyA9PSBcIi0xXCIpIHZzID0gXCItXCI7ICAvLyBEbyBub3Qgc2hvdyBvbmVzXG4gICAgICAgICAgICAgICAgaWYgKChTIT1cIlwiKSYmKHZzWzBdIT1cIi1cIikpIHZzID0gXCIrXCIrdnM7XG4gICAgICAgICAgICAgICAgaWYgKFMhPVwiXCIpIHZzID0gXCIgXCIrdnM7XG4gICAgICAgICAgICAgICAgUz0gUyArIHZzICAgKyBuYW1lO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm4gUztcbiAgICAgICAgfTtcbiAgICAgICAgY29uc3QgUyA9IGBbICR7bGMyc3RyKGNbMF0pfSBdICogWyAke2xjMnN0cihjWzFdKX0gXSAtIFsgJHtsYzJzdHIoY1syXSl9IF0gPSAwYDtcbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oUyk7XG4gICAgfVxuXG59XG4iLCJjb25zdCBTVUJBUlJBWV9TSVpFID0gMHg0MDAwMDtcblxuY29uc3QgQmlnQXJyYXlIYW5kbGVyID0ge1xuICAgIGdldDogZnVuY3Rpb24ob2JqLCBwcm9wKSB7XG4gICAgICAgIGlmICghaXNOYU4ocHJvcCkpIHtcbiAgICAgICAgICAgIHJldHVybiBvYmouZ2V0RWxlbWVudChwcm9wKTtcbiAgICAgICAgfSBlbHNlIHJldHVybiBvYmpbcHJvcF07XG4gICAgfSxcbiAgICBzZXQ6IGZ1bmN0aW9uKG9iaiwgcHJvcCwgdmFsdWUpIHtcbiAgICAgICAgaWYgKCFpc05hTihwcm9wKSkge1xuICAgICAgICAgICAgcmV0dXJuIG9iai5zZXRFbGVtZW50KHByb3AsIHZhbHVlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG9ialtwcm9wXSA9IHZhbHVlO1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICB9XG59O1xuXG5jbGFzcyBfQmlnQXJyYXkge1xuICAgIGNvbnN0cnVjdG9yIChpbml0U2l6ZSkge1xuICAgICAgICB0aGlzLmxlbmd0aCA9IGluaXRTaXplIHx8IDA7XG4gICAgICAgIHRoaXMuYXJyID0gbmV3IEFycmF5KFNVQkFSUkFZX1NJWkUpO1xuXG4gICAgICAgIGZvciAobGV0IGk9MDsgaTxpbml0U2l6ZTsgaSs9U1VCQVJSQVlfU0laRSkge1xuICAgICAgICAgICAgdGhpcy5hcnJbaS9TVUJBUlJBWV9TSVpFXSA9IG5ldyBBcnJheShNYXRoLm1pbihTVUJBUlJBWV9TSVpFLCBpbml0U2l6ZSAtIGkpKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gICAgcHVzaCAoKSB7XG4gICAgICAgIGZvciAobGV0IGk9MDsgaTxhcmd1bWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIHRoaXMuc2V0RWxlbWVudCAodGhpcy5sZW5ndGgsIGFyZ3VtZW50c1tpXSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzbGljZSAoZiwgdCkge1xuICAgICAgICBjb25zdCBhcnIgPSBuZXcgQXJyYXkodC1mKTtcbiAgICAgICAgZm9yIChsZXQgaT1mOyBpPCB0OyBpKyspIGFycltpLWZdID0gdGhpcy5nZXRFbGVtZW50KGkpO1xuICAgICAgICByZXR1cm4gYXJyO1xuICAgIH1cbiAgICBnZXRFbGVtZW50KGlkeCkge1xuICAgICAgICBpZHggPSBwYXJzZUludChpZHgpO1xuICAgICAgICBjb25zdCBpZHgxID0gTWF0aC5mbG9vcihpZHggLyBTVUJBUlJBWV9TSVpFKTtcbiAgICAgICAgY29uc3QgaWR4MiA9IGlkeCAlIFNVQkFSUkFZX1NJWkU7XG4gICAgICAgIHJldHVybiB0aGlzLmFycltpZHgxXSA/IHRoaXMuYXJyW2lkeDFdW2lkeDJdIDogdW5kZWZpbmVkO1xuICAgIH1cbiAgICBzZXRFbGVtZW50KGlkeCwgdmFsdWUpIHtcbiAgICAgICAgaWR4ID0gcGFyc2VJbnQoaWR4KTtcbiAgICAgICAgY29uc3QgaWR4MSA9IE1hdGguZmxvb3IoaWR4IC8gU1VCQVJSQVlfU0laRSk7XG4gICAgICAgIGlmICghdGhpcy5hcnJbaWR4MV0pIHtcbiAgICAgICAgICAgIHRoaXMuYXJyW2lkeDFdID0gbmV3IEFycmF5KFNVQkFSUkFZX1NJWkUpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGlkeDIgPSBpZHggJSBTVUJBUlJBWV9TSVpFO1xuICAgICAgICB0aGlzLmFycltpZHgxXVtpZHgyXSA9IHZhbHVlO1xuICAgICAgICBpZiAoaWR4ID49IHRoaXMubGVuZ3RoKSB0aGlzLmxlbmd0aCA9IGlkeCsxO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgZ2V0S2V5cygpIHtcbiAgICAgICAgY29uc3QgbmV3QSA9IG5ldyBCaWdBcnJheSgpO1xuICAgICAgICBmb3IgKGxldCBpPTA7IGk8dGhpcy5hcnIubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmFycltpXSkge1xuICAgICAgICAgICAgICAgIGZvciAobGV0IGo9MDsgajx0aGlzLmFycltpXS5sZW5ndGg7IGorKykge1xuICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHRoaXMuYXJyW2ldW2pdICE9PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBuZXdBLnB1c2goaSpTVUJBUlJBWV9TSVpFK2opO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBuZXdBO1xuICAgIH1cbn1cblxuY2xhc3MgQmlnQXJyYXkge1xuICAgIGNvbnN0cnVjdG9yKCBpbml0U2l6ZSApIHtcbiAgICAgICAgY29uc3Qgb2JqID0gbmV3IF9CaWdBcnJheShpbml0U2l6ZSk7XG4gICAgICAgIGNvbnN0IGV4dE9iaiA9IG5ldyBQcm94eShvYmosIEJpZ0FycmF5SGFuZGxlcik7XG4gICAgICAgIHJldHVybiBleHRPYmo7XG4gICAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBCaWdBcnJheTtcbiIsImltcG9ydCB7RjFGaWVsZCwgZ2V0Q3VydmVGcm9tUn0gZnJvbSBcImZmamF2YXNjcmlwdFwiO1xuaW1wb3J0ICBCaWdBcnJheSBmcm9tIFwiQGlkZW4zL2JpZ2FycmF5XCI7XG5pbXBvcnQgKiBhcyBiaW5GaWxlVXRpbHMgZnJvbSBcIkBpZGVuMy9iaW5maWxldXRpbHNcIjtcblxuZXhwb3J0IGNvbnN0IFIxQ1NfRklMRV9IRUFERVJfU0VDVElPTiA9IDE7XG5leHBvcnQgY29uc3QgUjFDU19GSUxFX0NPTlNUUkFJTlRTX1NFQ1RJT04gPSAyO1xuZXhwb3J0IGNvbnN0IFIxQ1NfRklMRV9XSVJFMkxBQkVMSURfU0VDVElPTiA9IDM7XG5leHBvcnQgY29uc3QgUjFDU19GSUxFX0NVU1RPTV9HQVRFU19MSVNUX1NFQ1RJT04gPSA0O1xuZXhwb3J0IGNvbnN0IFIxQ1NfRklMRV9DVVNUT01fR0FURVNfVVNFU19TRUNUSU9OID0gNTtcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlYWRSMWNzSGVhZGVyKGZkLHNlY3Rpb25zLHNpbmdsZVRocmVhZCkge1xuICAgIGxldCBvcHRpb25zO1xuICAgIGlmICh0eXBlb2Ygc2luZ2xlVGhyZWFkID09PSBcIm9iamVjdFwiKSB7XG4gICAgICAgIG9wdGlvbnMgPSBzaW5nbGVUaHJlYWQ7XG4gICAgfSBlbHNlIGlmICh0eXBlb2Ygc2luZ2xlVGhyZWFkID09PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgICAgIG9wdGlvbnM9IHtcbiAgICAgICAgICAgIHNpbmdsZVRocmVhZDogZmFsc2UsXG4gICAgICAgIH07XG4gICAgfSBlbHNlIHtcbiAgICAgICAgb3B0aW9ucyA9IHtcbiAgICAgICAgICAgIHNpbmdsZVRocmVhZDogc2luZ2xlVGhyZWFkLFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIGNvbnN0IHJlcyA9IHt9O1xuICAgIGF3YWl0IGJpbkZpbGVVdGlscy5zdGFydFJlYWRVbmlxdWVTZWN0aW9uKGZkLCBzZWN0aW9ucywgMSk7XG4gICAgLy8gUmVhZCBIZWFkZXJcbiAgICByZXMubjggPSBhd2FpdCBmZC5yZWFkVUxFMzIoKTtcbiAgICByZXMucHJpbWUgPSBhd2FpdCBiaW5GaWxlVXRpbHMucmVhZEJpZ0ludChmZCwgcmVzLm44KTtcblxuICAgIGlmIChvcHRpb25zLkYpIHtcbiAgICAgICAgaWYgKG9wdGlvbnMuRi5wICE9IHJlcy5wcmltZSkgdGhyb3cgbmV3IEVycm9yKFwiRGlmZmVyZW50IFByaW1lXCIpO1xuICAgICAgICByZXMuRiA9IG9wdGlvbnMuRjtcbiAgICB9IGVsc2UgaWYgKG9wdGlvbnMuZ2V0RmllbGRGcm9tUHJpbWUpIHtcbiAgICAgICAgcmVzLkYgPSBhd2FpdCBvcHRpb25zLmdldEZpZWxkRnJvbVByaW1lKHJlcy5wcmltZSwgb3B0aW9ucy5zaW5nbGVUaHJlYWQpO1xuICAgIH0gZWxzZSBpZiAob3B0aW9ucy5nZXRDdXJ2ZUZyb21QcmltZSkge1xuICAgICAgICByZXMuY3VydmUgPSBhd2FpdCBvcHRpb25zLmdldEN1cnZlRnJvbVByaW1lKHJlcy5wcmltZSwgb3B0aW9ucy5zaW5nbGVUaHJlYWQpO1xuICAgICAgICByZXMuRiA9IHJlcy5jdXJ2ZS5GcjtcbiAgICB9IGVsc2Uge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgcmVzLmN1cnZlID0gYXdhaXQgZ2V0Q3VydmVGcm9tUihyZXMucHJpbWUsIG9wdGlvbnMuc2luZ2xlVGhyZWFkKTtcbiAgICAgICAgICAgIHJlcy5GID0gcmVzLmN1cnZlLkZyO1xuICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgIHJlcy5GID0gbmV3IEYxRmllbGQocmVzLnByaW1lKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJlcy5uVmFycyA9IGF3YWl0IGZkLnJlYWRVTEUzMigpO1xuICAgIHJlcy5uT3V0cHV0cyA9IGF3YWl0IGZkLnJlYWRVTEUzMigpO1xuICAgIHJlcy5uUHViSW5wdXRzID0gYXdhaXQgZmQucmVhZFVMRTMyKCk7XG4gICAgcmVzLm5QcnZJbnB1dHMgPSBhd2FpdCBmZC5yZWFkVUxFMzIoKTtcbiAgICByZXMubkxhYmVscyA9IGF3YWl0IGZkLnJlYWRVTEU2NCgpO1xuICAgIHJlcy5uQ29uc3RyYWludHMgPSBhd2FpdCBmZC5yZWFkVUxFMzIoKTtcbiAgICByZXMudXNlQ3VzdG9tR2F0ZXMgPSB0eXBlb2Ygc2VjdGlvbnNbUjFDU19GSUxFX0NVU1RPTV9HQVRFU19MSVNUX1NFQ1RJT05dICE9PSBcInVuZGVmaW5lZFwiICYmIHNlY3Rpb25zW1IxQ1NfRklMRV9DVVNUT01fR0FURVNfTElTVF9TRUNUSU9OXSAhPT0gbnVsbFxuICAgICAgICAmJiB0eXBlb2Ygc2VjdGlvbnNbUjFDU19GSUxFX0NVU1RPTV9HQVRFU19VU0VTX1NFQ1RJT05dICE9PSBcInVuZGVmaW5lZFwiICYmIHNlY3Rpb25zW1IxQ1NfRklMRV9DVVNUT01fR0FURVNfVVNFU19TRUNUSU9OXSAhPT0gbnVsbDtcblxuICAgIGF3YWl0IGJpbkZpbGVVdGlscy5lbmRSZWFkU2VjdGlvbihmZCk7XG5cbiAgICByZXR1cm4gcmVzO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVhZENvbnN0cmFpbnRzKGZkLHNlY3Rpb25zLCByMWNzLCBsb2dnZXIsIGxvZ2dlckN0eCkge1xuICAgIGxldCBvcHRpb25zO1xuICAgIGlmICh0eXBlb2YgbG9nZ2VyID09PSBcIm9iamVjdFwiKSB7XG4gICAgICAgIG9wdGlvbnMgPSBsb2dnZXI7XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgbG9nZ2VyID09PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgICAgIG9wdGlvbnM9IHt9O1xuICAgIH0gZWxzZSB7XG4gICAgICAgIG9wdGlvbnMgPSB7XG4gICAgICAgICAgICBsb2dnZXI6IGxvZ2dlcixcbiAgICAgICAgICAgIGxvZ2dlckN0eDogbG9nZ2VyQ3R4LFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIGNvbnN0IGJSMWNzID0gYXdhaXQgYmluRmlsZVV0aWxzLnJlYWRTZWN0aW9uKGZkLCBzZWN0aW9ucywgMik7XG4gICAgbGV0IGJSMWNzUG9zID0gMDtcbiAgICBsZXQgY29uc3RyYWludHM7XG4gICAgaWYgKHIxY3MubkNvbnN0cmFpbnRzPjE8PDIwKSB7XG4gICAgICAgIGNvbnN0cmFpbnRzID0gbmV3IEJpZ0FycmF5KCk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3RyYWludHMgPSBbXTtcbiAgICB9XG4gICAgZm9yIChsZXQgaT0wOyBpPHIxY3MubkNvbnN0cmFpbnRzOyBpKyspIHtcbiAgICAgICAgaWYgKChvcHRpb25zLmxvZ2dlcikmJihpJTEwMDAwMCA9PSAwKSkgb3B0aW9ucy5sb2dnZXIuaW5mbyhgJHtvcHRpb25zLmxvZ2dlckN0eH06IExvYWRpbmcgY29uc3RyYWludHM6ICR7aX0vJHtyMWNzLm5Db25zdHJhaW50c31gKTtcbiAgICAgICAgY29uc3QgYyA9IHJlYWRDb25zdHJhaW50KCk7XG4gICAgICAgIGNvbnN0cmFpbnRzLnB1c2goYyk7XG4gICAgfVxuICAgIHJldHVybiBjb25zdHJhaW50cztcblxuXG4gICAgZnVuY3Rpb24gcmVhZENvbnN0cmFpbnQoKSB7XG4gICAgICAgIGNvbnN0IGMgPSBbXTtcbiAgICAgICAgY1swXSA9IHJlYWRMQygpO1xuICAgICAgICBjWzFdID0gcmVhZExDKCk7XG4gICAgICAgIGNbMl0gPSByZWFkTEMoKTtcbiAgICAgICAgcmV0dXJuIGM7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcmVhZExDKCkge1xuICAgICAgICBjb25zdCBsYz0ge307XG5cbiAgICAgICAgY29uc3QgYnVmZlVMMzIgPSBiUjFjcy5zbGljZShiUjFjc1BvcywgYlIxY3NQb3MrNCk7XG4gICAgICAgIGJSMWNzUG9zICs9IDQ7XG4gICAgICAgIGNvbnN0IGJ1ZmZVTDMyViA9IG5ldyBEYXRhVmlldyhidWZmVUwzMi5idWZmZXIpO1xuICAgICAgICBjb25zdCBuSWR4ID0gYnVmZlVMMzJWLmdldFVpbnQzMigwLCB0cnVlKTtcblxuICAgICAgICBjb25zdCBidWZmID0gYlIxY3Muc2xpY2UoYlIxY3NQb3MsIGJSMWNzUG9zICsgKDQrcjFjcy5uOCkqbklkeCApO1xuICAgICAgICBiUjFjc1BvcyArPSAoNCtyMWNzLm44KSpuSWR4O1xuICAgICAgICBjb25zdCBidWZmViA9IG5ldyBEYXRhVmlldyhidWZmLmJ1ZmZlcik7XG4gICAgICAgIGZvciAobGV0IGk9MDsgaTxuSWR4OyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IGlkeCA9IGJ1ZmZWLmdldFVpbnQzMihpKig0K3IxY3MubjgpLCB0cnVlKTtcbiAgICAgICAgICAgIGNvbnN0IHZhbCA9IHIxY3MuRi5mcm9tUnByTEUoYnVmZiwgaSooNCtyMWNzLm44KSs0KTtcbiAgICAgICAgICAgIGxjW2lkeF0gPSB2YWw7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGxjO1xuICAgIH1cbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlYWRNYXAoZmQsIHNlY3Rpb25zLCByMWNzLCBsb2dnZXIsIGxvZ2dlckN0eCkge1xuICAgIGxldCBvcHRpb25zO1xuICAgIGlmICh0eXBlb2YgbG9nZ2VyID09PSBcIm9iamVjdFwiKSB7XG4gICAgICAgIG9wdGlvbnMgPSBsb2dnZXI7XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgbG9nZ2VyID09PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgICAgIG9wdGlvbnM9IHt9O1xuICAgIH0gZWxzZSB7XG4gICAgICAgIG9wdGlvbnMgPSB7XG4gICAgICAgICAgICBsb2dnZXI6IGxvZ2dlcixcbiAgICAgICAgICAgIGxvZ2dlckN0eDogbG9nZ2VyQ3R4LFxuICAgICAgICB9O1xuICAgIH1cbiAgICBjb25zdCBiTWFwID0gYXdhaXQgYmluRmlsZVV0aWxzLnJlYWRTZWN0aW9uKGZkLCBzZWN0aW9ucywgMyk7XG4gICAgbGV0IGJNYXBQb3MgPSAwO1xuICAgIGxldCBtYXA7XG5cbiAgICBpZiAocjFjcy5uVmFycz4xPDwyMCkge1xuICAgICAgICBtYXAgPSBuZXcgQmlnQXJyYXkoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBtYXAgPSBbXTtcbiAgICB9XG4gICAgZm9yIChsZXQgaT0wOyBpPHIxY3MublZhcnM7IGkrKykge1xuICAgICAgICBpZiAoKG9wdGlvbnMubG9nZ2VyKSYmKGklMTAwMDAgPT0gMCkpIG9wdGlvbnMubG9nZ2VyLmluZm8oYCR7b3B0aW9ucy5sb2dnZXJDdHh9OiBMb2FkaW5nIG1hcDogJHtpfS8ke3IxY3MublZhcnN9YCk7XG4gICAgICAgIGNvbnN0IGlkeCA9IHJlYWRVTEU2NCgpO1xuICAgICAgICBtYXAucHVzaChpZHgpO1xuICAgIH1cblxuICAgIHJldHVybiBtYXA7XG5cbiAgICBmdW5jdGlvbiByZWFkVUxFNjQoKSB7XG4gICAgICAgIGNvbnN0IGJ1ZmZVTEU2NCA9IGJNYXAuc2xpY2UoYk1hcFBvcywgYk1hcFBvcys4KTtcbiAgICAgICAgYk1hcFBvcyArPSA4O1xuICAgICAgICBjb25zdCBidWZmVUxFNjRWID0gbmV3IERhdGFWaWV3KGJ1ZmZVTEU2NC5idWZmZXIpO1xuICAgICAgICBjb25zdCBMU0IgPSBidWZmVUxFNjRWLmdldFVpbnQzMigwLCB0cnVlKTtcbiAgICAgICAgY29uc3QgTVNCID0gYnVmZlVMRTY0Vi5nZXRVaW50MzIoNCwgdHJ1ZSk7XG5cbiAgICAgICAgcmV0dXJuIE1TQiAqIDB4MTAwMDAwMDAwICsgTFNCO1xuICAgIH1cblxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVhZFIxY3NGZChmZCwgc2VjdGlvbnMsIG9wdGlvbnMpIHtcbiAgICAvKipcbiAgICAgKiBPcHRpb25zIHByb3BlcnRpZXM6XG4gICAgICogIGxvYWRDb25zdHJhaW50czogPGJvb2w+IHRydWUgYnkgZGVmYXVsdFxuICAgICAqICBsb2FkTWFwOiAgICAgICAgIDxib29sPiBmYWxzZSBieSBkZWZhdWx0XG4gICAgICogIGxvYWRDdXN0b21HYXRlczogPGJvb2w+IHRydWUgYnkgZGVmYXVsdFxuICAgICAqL1xuXG4gICAgaWYodHlwZW9mIG9wdGlvbnMgIT09IFwib2JqZWN0XCIpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwicmVhZFIxY3NGZDogb3B0aW9ucyBtdXN0IGJlIGFuIG9iamVjdFwiKTtcbiAgICB9XG5cbiAgICBvcHRpb25zLmxvYWRDb25zdHJhaW50cyA9IFwibG9hZENvbnN0cmFpbnRzXCIgaW4gb3B0aW9ucyA/IG9wdGlvbnMubG9hZENvbnN0cmFpbnRzIDogdHJ1ZTtcbiAgICBvcHRpb25zLmxvYWRNYXAgPSBcImxvYWRNYXBcIiBpbiBvcHRpb25zID8gb3B0aW9ucy5sb2FkTWFwIDogZmFsc2U7XG4gICAgb3B0aW9ucy5sb2FkQ3VzdG9tR2F0ZXMgPSBcImxvYWRDdXN0b21HYXRlc1wiIGluIG9wdGlvbnMgPyBvcHRpb25zLmxvYWRDdXN0b21HYXRlcyA6IHRydWU7XG5cbiAgICBjb25zdCByZXMgPSBhd2FpdCByZWFkUjFjc0hlYWRlcihmZCwgc2VjdGlvbnMsIG9wdGlvbnMpO1xuXG4gICAgaWYgKG9wdGlvbnMubG9hZENvbnN0cmFpbnRzKSB7XG4gICAgICAgIHJlcy5jb25zdHJhaW50cyA9IGF3YWl0IHJlYWRDb25zdHJhaW50cyhmZCwgc2VjdGlvbnMsIHJlcywgb3B0aW9ucyk7XG4gICAgfVxuXG4gICAgLy8gUmVhZCBMYWJlbHNcblxuICAgIGlmIChvcHRpb25zLmxvYWRNYXApIHtcbiAgICAgICAgcmVzLm1hcCA9IGF3YWl0IHJlYWRNYXAoZmQsIHNlY3Rpb25zLCByZXMsIG9wdGlvbnMpO1xuICAgIH1cblxuICAgIGlmIChvcHRpb25zLmxvYWRDdXN0b21HYXRlcykge1xuICAgICAgICBpZiAocmVzLnVzZUN1c3RvbUdhdGVzKSB7XG4gICAgICAgICAgICByZXMuY3VzdG9tR2F0ZXMgPSBhd2FpdCByZWFkQ3VzdG9tR2F0ZXNMaXN0U2VjdGlvbihmZCwgc2VjdGlvbnMsIHJlcyk7XG4gICAgICAgICAgICByZXMuY3VzdG9tR2F0ZXNVc2VzID0gYXdhaXQgcmVhZEN1c3RvbUdhdGVzVXNlc1NlY3Rpb24oZmQsIHNlY3Rpb25zLCBvcHRpb25zKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJlcy5jdXN0b21HYXRlcyA9IFtdO1xuICAgICAgICAgICAgcmVzLmN1c3RvbUdhdGVzVXNlcyA9IFtdO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXM7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZWFkUjFjcyhmaWxlTmFtZSwgbG9hZENvbnN0cmFpbnRzLCBsb2FkTWFwLCBzaW5nbGVUaHJlYWQsIGxvZ2dlciwgbG9nZ2VyQ3R4KSB7XG4gICAgbGV0IG9wdGlvbnM7XG4gICAgaWYgKHR5cGVvZiBsb2FkQ29uc3RyYWludHMgPT09IFwib2JqZWN0XCIpIHtcbiAgICAgICAgb3B0aW9ucyA9IGxvYWRDb25zdHJhaW50cztcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBsb2FkQ29uc3RyYWludHMgPT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgICAgb3B0aW9ucz0ge1xuICAgICAgICAgICAgbG9hZENvbnN0cmFpbnRzOiB0cnVlLFxuICAgICAgICAgICAgbG9hZE1hcDogZmFsc2UsXG4gICAgICAgICAgICBsb2FkQ3VzdG9tR2F0ZXM6IHRydWVcbiAgICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBvcHRpb25zID0ge1xuICAgICAgICAgICAgbG9hZENvbnN0cmFpbnRzOiBsb2FkQ29uc3RyYWludHMsXG4gICAgICAgICAgICBsb2FkTWFwOiBsb2FkTWFwLFxuICAgICAgICAgICAgc2luZ2xlVGhyZWFkOiBzaW5nbGVUaHJlYWQsXG4gICAgICAgICAgICBsb2dnZXI6IGxvZ2dlcixcbiAgICAgICAgICAgIGxvZ2dlckN0eDogbG9nZ2VyQ3R4XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgY29uc3Qge2ZkLCBzZWN0aW9uc30gPSBhd2FpdCBiaW5GaWxlVXRpbHMucmVhZEJpbkZpbGUoZmlsZU5hbWUsIFwicjFjc1wiLCAxLCAxPDwyNSwgMTw8MjIpO1xuXG4gICAgY29uc3QgcmVzID0gYXdhaXQgcmVhZFIxY3NGZChmZCwgc2VjdGlvbnMsIG9wdGlvbnMpO1xuXG4gICAgYXdhaXQgZmQuY2xvc2UoKTtcblxuICAgIHJldHVybiByZXM7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZWFkQ3VzdG9tR2F0ZXNMaXN0U2VjdGlvbihmZCwgc2VjdGlvbnMsIHJlcykge1xuICAgIGF3YWl0IGJpbkZpbGVVdGlscy5zdGFydFJlYWRVbmlxdWVTZWN0aW9uKGZkLCBzZWN0aW9ucywgUjFDU19GSUxFX0NVU1RPTV9HQVRFU19MSVNUX1NFQ1RJT04pO1xuXG4gICAgbGV0IG51bSA9IGF3YWl0IGZkLnJlYWRVTEUzMigpO1xuXG4gICAgbGV0IGN1c3RvbUdhdGVzID0gW107XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBudW07IGkrKykge1xuICAgICAgICBsZXQgY3VzdG9tR2F0ZSA9IHt9O1xuICAgICAgICBjdXN0b21HYXRlLnRlbXBsYXRlTmFtZSA9IGF3YWl0IGZkLnJlYWRTdHJpbmcoKTtcbiAgICAgICAgbGV0IG51bVBhcmFtZXRlcnMgPSBhd2FpdCBmZC5yZWFkVUxFMzIoKTtcblxuICAgICAgICBjdXN0b21HYXRlLnBhcmFtZXRlcnMgPSBBcnJheShudW1QYXJhbWV0ZXJzKTtcbiAgICAgICAgbGV0IGJ1ZmYgPSBhd2FpdCBmZC5yZWFkKHJlcy5uOCAqIG51bVBhcmFtZXRlcnMpO1xuXG4gICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgbnVtUGFyYW1ldGVyczsgaisrKSB7XG4gICAgICAgICAgICBjdXN0b21HYXRlLnBhcmFtZXRlcnNbal0gPSByZXMuRi5mcm9tUnByTEUoYnVmZiwgaiAqIHJlcy5uOCwgcmVzLm44KTs7XG4gICAgICAgIH1cbiAgICAgICAgY3VzdG9tR2F0ZXMucHVzaChjdXN0b21HYXRlKTtcbiAgICB9XG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLmVuZFJlYWRTZWN0aW9uKGZkKTtcblxuICAgIHJldHVybiBjdXN0b21HYXRlcztcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlYWRDdXN0b21HYXRlc1VzZXNTZWN0aW9uKGZkLHNlY3Rpb25zLCBvcHRpb25zKSB7XG4gICAgY29uc3QgYlIxY3MgPSBhd2FpdCBiaW5GaWxlVXRpbHMucmVhZFNlY3Rpb24oZmQsIHNlY3Rpb25zLCBSMUNTX0ZJTEVfQ1VTVE9NX0dBVEVTX1VTRVNfU0VDVElPTik7XG4gICAgY29uc3QgYlIxY3MzMiA9IG5ldyBVaW50MzJBcnJheShiUjFjcy5idWZmZXIsIGJSMWNzLmJ5dGVPZmZzZXQsIGJSMWNzLmJ5dGVMZW5ndGgvNCk7XG4gICAgY29uc3QgbkN1c3RvbUdhdGVVc2VzID0gYlIxY3MzMlswXTtcbiAgICBsZXQgYlIxY3NQb3MgPSAxO1xuICAgIGxldCBjdXN0b21HYXRlc1VzZXM7XG4gICAgaWYgKG5DdXN0b21HYXRlVXNlcz4xPDwyMCkge1xuICAgICAgICBjdXN0b21HYXRlc1VzZXMgPSBuZXcgQmlnQXJyYXkoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBjdXN0b21HYXRlc1VzZXMgPSBbXTtcbiAgICB9XG4gICAgZm9yIChsZXQgaT0wOyBpPG5DdXN0b21HYXRlVXNlczsgaSsrKSB7XG4gICAgICAgIGlmICgob3B0aW9ucy5sb2dnZXIpJiYoaSUxMDAwMDAgPT0gMCkpIG9wdGlvbnMubG9nZ2VyLmluZm8oYCR7b3B0aW9ucy5sb2dnZXJDdHh9OiBMb2FkaW5nIGN1c3RvbSBnYXRlIHVzZXM6ICR7aX0vJHtuQ3VzdG9tR2F0ZVVzZXN9YCk7XG4gICAgICAgIGxldCBjID0ge307XG4gICAgICAgIGMuaWQgPSBiUjFjczMyW2JSMWNzUG9zKytdO1xuICAgICAgICBsZXQgbnVtU2lnbmFscyA9IGJSMWNzMzJbYlIxY3NQb3MrK107XG4gICAgICAgIGMuc2lnbmFscyA9IFtdO1xuICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IG51bVNpZ25hbHM7IGorKykge1xuICAgICAgICAgICAgY29uc3QgTFNCID0gYlIxY3MzMltiUjFjc1BvcysrXTtcbiAgICAgICAgICAgIGNvbnN0IE1TQiA9IGJSMWNzMzJbYlIxY3NQb3MrK107XG4gICAgICAgICAgICBjLnNpZ25hbHMucHVzaChNU0IgKiAweDEwMDAwMDAwMCArIExTQik7XG4gICAgICAgIH1cbiAgICAgICAgY3VzdG9tR2F0ZXNVc2VzLnB1c2goYyk7XG4gICAgfVxuICAgIHJldHVybiBjdXN0b21HYXRlc1VzZXM7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB3cml0ZVIxY3NIZWFkZXIoZmQsIGNpcikge1xuICAgIGF3YWl0IGJpbkZpbGVVdGlscy5zdGFydFdyaXRlU2VjdGlvbihmZCwgMSk7XG4gICAgYXdhaXQgZmQud3JpdGVVTEUzMihjaXIubjgpOyAvLyBUZW1wb3JhbGx5IHNldCB0byAwIGxlbmd0aFxuICAgIGF3YWl0IGJpbkZpbGVVdGlscy53cml0ZUJpZ0ludChmZCwgY2lyLnByaW1lLCBjaXIubjgpO1xuXG4gICAgYXdhaXQgZmQud3JpdGVVTEUzMihjaXIublZhcnMpO1xuICAgIGF3YWl0IGZkLndyaXRlVUxFMzIoY2lyLm5PdXRwdXRzKTtcbiAgICBhd2FpdCBmZC53cml0ZVVMRTMyKGNpci5uUHViSW5wdXRzKTtcbiAgICBhd2FpdCBmZC53cml0ZVVMRTMyKGNpci5uUHJ2SW5wdXRzKTtcbiAgICBhd2FpdCBmZC53cml0ZVVMRTY0KGNpci5uTGFiZWxzKTtcbiAgICBhd2FpdCBmZC53cml0ZVVMRTMyKGNpci5jb25zdHJhaW50cy5sZW5ndGgpO1xuXG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLmVuZFdyaXRlU2VjdGlvbihmZCk7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB3cml0ZVIxY3NDb25zdHJhaW50cyhmZCwgY2lyLCBsb2dnZXIsIGxvZ2dlckN0eCkge1xuICAgIGF3YWl0IGJpbkZpbGVVdGlscy5zdGFydFdyaXRlU2VjdGlvbihmZCwgMik7XG5cbiAgICBmb3IgKGxldCBpPTA7IGk8Y2lyLmNvbnN0cmFpbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGlmICgobG9nZ2VyKSYmKGklMTAwMDAgPT0gMCkpIGxvZ2dlci5pbmZvKGAke2xvZ2dlckN0eH06IHdyaXRpbmcgY29uc3RyYWludDogJHtpfS8ke2Npci5jb25zdHJhaW50cy5sZW5ndGh9YCk7XG4gICAgICAgIGF3YWl0IHdyaXRlQ29uc3RyYWludChjaXIuY29uc3RyYWludHNbaV0pO1xuICAgIH1cblxuICAgIGF3YWl0IGJpbkZpbGVVdGlscy5lbmRXcml0ZVNlY3Rpb24oZmQpO1xuXG5cbiAgICBmdW5jdGlvbiB3cml0ZUNvbnN0cmFpbnQoYykge1xuICAgICAgICBjb25zdCBuOCA9IGNpci5uODtcbiAgICAgICAgY29uc3QgRiA9IGNpci5GIHx8IGNpci5jdXJ2ZS5GcjtcbiAgICAgICAgY29uc3QgaWR4QSA9IE9iamVjdC5rZXlzKGNbMF0pO1xuICAgICAgICBjb25zdCBpZHhCID0gT2JqZWN0LmtleXMoY1sxXSk7XG4gICAgICAgIGNvbnN0IGlkeEMgPSBPYmplY3Qua2V5cyhjWzJdKTtcbiAgICAgICAgY29uc3QgYnVmZiA9IG5ldyBVaW50OEFycmF5KChpZHhBLmxlbmd0aCtpZHhCLmxlbmd0aCtpZHhDLmxlbmd0aCkqKG44KzQpICsgMTIpO1xuICAgICAgICBjb25zdCBidWZmViA9IG5ldyBEYXRhVmlldyhidWZmLmJ1ZmZlcik7XG4gICAgICAgIGxldCBvPTA7XG5cbiAgICAgICAgYnVmZlYuc2V0VWludDMyKG8sIGlkeEEubGVuZ3RoLCB0cnVlKTsgbys9NDtcbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPGlkeEEubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IGNvZWYgPSBpZHhBW2ldO1xuICAgICAgICAgICAgYnVmZlYuc2V0VWludDMyKG8sIGNvZWYsIHRydWUpOyBvKz00O1xuICAgICAgICAgICAgRi50b1JwckxFKGJ1ZmYsIG8sIGNbMF1bY29lZl0pOyBvKz1uODtcbiAgICAgICAgfVxuXG4gICAgICAgIGJ1ZmZWLnNldFVpbnQzMihvLCBpZHhCLmxlbmd0aCwgdHJ1ZSk7IG8rPTQ7XG4gICAgICAgIGZvciAobGV0IGk9MDsgaTxpZHhCLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCBjb2VmID0gaWR4QltpXTtcbiAgICAgICAgICAgIGJ1ZmZWLnNldFVpbnQzMihvLCBjb2VmLCB0cnVlKTsgbys9NDtcbiAgICAgICAgICAgIEYudG9ScHJMRShidWZmLCBvLCBjWzFdW2NvZWZdKTsgbys9bjg7XG4gICAgICAgIH1cblxuICAgICAgICBidWZmVi5zZXRVaW50MzIobywgaWR4Qy5sZW5ndGgsIHRydWUpOyBvKz00O1xuICAgICAgICBmb3IgKGxldCBpPTA7IGk8aWR4Qy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgY29uc3QgY29lZiA9IGlkeENbaV07XG4gICAgICAgICAgICBidWZmVi5zZXRVaW50MzIobywgY29lZiwgdHJ1ZSk7IG8rPTQ7XG4gICAgICAgICAgICBGLnRvUnByTEUoYnVmZiwgbywgY1syXVtjb2VmXSk7IG8rPW44O1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGZkLndyaXRlKGJ1ZmYpO1xuICAgIH1cblxufVxuXG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB3cml0ZVIxY3NNYXAoZmQsIGNpciwgbG9nZ2VyLCBsb2dnZXJDdHgpIHtcbiAgICBhd2FpdCBiaW5GaWxlVXRpbHMuc3RhcnRXcml0ZVNlY3Rpb24oZmQsIDMpO1xuXG4gICAgaWYgKGNpci5tYXAubGVuZ3RoICE9IGNpci5uVmFycykgdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBtYXAgc2l6ZVwiKTtcbiAgICBmb3IgKGxldCBpPTA7IGk8Y2lyLm5WYXJzOyBpKyspIHtcbiAgICAgICAgaWYgKChsb2dnZXIpJiYoaSUxMDAwMCA9PSAwKSkgbG9nZ2VyLmluZm8oYCR7bG9nZ2VyQ3R4fTogd3JpdGluZyBtYXA6ICR7aX0vJHtjaXIublZhcnN9YCk7XG4gICAgICAgIGF3YWl0IGZkLndyaXRlVUxFNjQoY2lyLm1hcFtpXSk7XG4gICAgfVxuXG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLmVuZFdyaXRlU2VjdGlvbihmZCk7XG59XG5cblxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gd3JpdGVSMWNzKGZpbGVOYW1lLCBjaXIsIGxvZ2dlciwgbG9nZ2VyQ3R4KSB7XG5cbiAgICBjb25zdCBmZCA9IGF3YWl0IGJpbkZpbGVVdGlscy5jcmVhdGVCaW5GaWxlKGZpbGVOYW1lLCBcInIxY3NcIiwgMSwgMywgMTw8MjUsIDE8PDIyKTtcblxuICAgIGF3YWl0IHdyaXRlUjFjc0hlYWRlcihmZCwgY2lyKTtcblxuICAgIGF3YWl0IHdyaXRlUjFjc0NvbnN0cmFpbnRzKGZkLCBjaXIsIGxvZ2dlciwgbG9nZ2VyQ3R4KTtcblxuICAgIGF3YWl0IHdyaXRlUjFjc01hcChmZCwgY2lyLCBsb2dnZXIsIGxvZ2dlckN0eCk7XG5cbiAgICBhd2FpdCBmZC5jbG9zZSgpO1xufVxuIiwiLypcbiAgICBDb3B5cmlnaHQgMjAxOCAwS0lNUyBhc3NvY2lhdGlvbi5cblxuICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHNuYXJrSlMuXG5cbiAgICBzbmFya0pTIGlzIGEgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdFxuICAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3JcbiAgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuXG4gICAgc25hcmtKUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVFxuICAgIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWVxuICAgIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpY1xuICAgIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cblxuICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gICAgYWxvbmcgd2l0aCBzbmFya0pTLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuKi9cblxuaW1wb3J0IHsgU2NhbGFyIH0gZnJvbSBcImZmamF2YXNjcmlwdFwiO1xuaW1wb3J0IHsgcmVhZFIxY3MgfSAgZnJvbSBcInIxY3NmaWxlXCI7XG5cbmNvbnN0IGJsczEyMzgxciA9IFNjYWxhci5lKFwiNzNlZGE3NTMyOTlkN2Q0ODMzMzlkODA4MDlhMWQ4MDU1M2JkYTQwMmZmZmU1YmZlZmZmZmZmZmYwMDAwMDAwMVwiLCAxNik7XG5jb25zdCBibjEyOHIgPSBTY2FsYXIuZShcIjIxODg4MjQyODcxODM5Mjc1MjIyMjQ2NDA1NzQ1MjU3Mjc1MDg4NTQ4MzY0NDAwNDE2MDM0MzQzNjk4MjA0MTg2NTc1ODA4NDk1NjE3XCIpO1xuXG5leHBvcnQgZGVmYXVsdCBhc3luYyBmdW5jdGlvbiByMWNzSW5mbyhyMWNzTmFtZSwgbG9nZ2VyKSB7XG5cbiAgICBjb25zdCBjaXIgPSBhd2FpdCByZWFkUjFjcyhyMWNzTmFtZSk7XG5cbiAgICBpZiAoU2NhbGFyLmVxKGNpci5wcmltZSwgYm4xMjhyKSkge1xuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhcIkN1cnZlOiBibi0xMjhcIik7XG4gICAgfSBlbHNlIGlmIChTY2FsYXIuZXEoY2lyLnByaW1lLCBibHMxMjM4MXIpKSB7XG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKFwiQ3VydmU6IGJsczEyLTM4MVwiKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhgVW5rbm93biBDdXJ2ZS4gUHJpbWU6ICR7U2NhbGFyLnRvU3RyaW5nKGNpci5wcmltZSl9YCk7XG4gICAgfVxuICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKGAjIG9mIFdpcmVzOiAke2Npci5uVmFyc31gKTtcbiAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhgIyBvZiBDb25zdHJhaW50czogJHtjaXIubkNvbnN0cmFpbnRzfWApO1xuICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKGAjIG9mIFByaXZhdGUgSW5wdXRzOiAke2Npci5uUHJ2SW5wdXRzfWApO1xuICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKGAjIG9mIFB1YmxpYyBJbnB1dHM6ICR7Y2lyLm5QdWJJbnB1dHN9YCk7XG4gICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oYCMgb2YgTGFiZWxzOiAke2Npci5uTGFiZWxzfWApO1xuICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKGAjIG9mIE91dHB1dHM6ICR7Y2lyLm5PdXRwdXRzfWApO1xuXG4gICAgcmV0dXJuIGNpcjtcbn1cbiIsIi8qXG4gICAgQ29weXJpZ2h0IDIwMTggMEtJTVMgYXNzb2NpYXRpb24uXG5cbiAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBzbmFya0pTLlxuXG4gICAgc25hcmtKUyBpcyBhIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXRcbiAgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yXG4gICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cblxuICAgIHNuYXJrSlMgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVRcbiAgICBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFlcbiAgICBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWNcbiAgICBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG5cbiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICAgIGFsb25nIHdpdGggc25hcmtKUy4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cbiovXG5cbmltcG9ydCB7cmVhZFIxY3N9ICBmcm9tIFwicjFjc2ZpbGVcIjtcbmltcG9ydCB7IHN0cmluZ2lmeUJpZ0ludHNXaXRoRmllbGQgfSBmcm9tIFwiLi9taXNjLmpzXCI7XG5cblxuZXhwb3J0IGRlZmF1bHQgYXN5bmMgZnVuY3Rpb24gcjFjc0V4cG9ydEpzb24ocjFjc0ZpbGVOYW1lLCBsb2dnZXIpIHtcblxuICAgIGNvbnN0IGNpciA9IGF3YWl0IHJlYWRSMWNzKHIxY3NGaWxlTmFtZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgbG9nZ2VyKTtcbiAgICBjb25zdCBGcj1jaXIuY3VydmUuRnI7XG4gICAgZGVsZXRlIGNpci5jdXJ2ZTtcbiAgICBkZWxldGUgY2lyLkY7XG5cbiAgICByZXR1cm4gc3RyaW5naWZ5QmlnSW50c1dpdGhGaWVsZChGciwgY2lyKTtcbn1cbiIsIi8qXG4gICAgQ29weXJpZ2h0IDIwMTggMEtJTVMgYXNzb2NpYXRpb24uXG5cbiAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBzbmFya0pTLlxuXG4gICAgc25hcmtKUyBpcyBhIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXRcbiAgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yXG4gICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cblxuICAgIHNuYXJrSlMgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVRcbiAgICBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFlcbiAgICBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWNcbiAgICBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG5cbiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICAgIGFsb25nIHdpdGggc25hcmtKUy4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cbiovXG5cbmV4cG9ydCB7ZGVmYXVsdCBhcyBwcmludH0gZnJvbSBcIi4vcjFjc19wcmludC5qc1wiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIGluZm99IGZyb20gXCIuL3IxY3NfaW5mby5qc1wiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIGV4cG9ydEpzb259IGZyb20gXCIuL3IxY3NfZXhwb3J0X2pzb24uanNcIjtcblxuIiwiLypcbiAgICBDb3B5cmlnaHQgMjAxOCAwS0lNUyBhc3NvY2lhdGlvbi5cblxuICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHNuYXJrSlMuXG5cbiAgICBzbmFya0pTIGlzIGEgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdFxuICAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3JcbiAgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuXG4gICAgc25hcmtKUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVFxuICAgIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWVxuICAgIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpY1xuICAgIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cblxuICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gICAgYWxvbmcgd2l0aCBzbmFya0pTLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuKi9cblxuaW1wb3J0ICogYXMgZmFzdEZpbGUgZnJvbSBcImZhc3RmaWxlXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGFzeW5jIGZ1bmN0aW9uIGxvYWRTeW1ib2xzKHN5bUZpbGVOYW1lKSB7XG4gICAgY29uc3Qgc3ltID0ge1xuICAgICAgICBsYWJlbElkeDJOYW1lOiBbIFwib25lXCIgXSxcbiAgICAgICAgdmFySWR4Mk5hbWU6IFsgXCJvbmVcIiBdLFxuICAgICAgICBjb21wb25lbnRJZHgyTmFtZTogW11cbiAgICB9O1xuICAgIGNvbnN0IGZkID0gYXdhaXQgZmFzdEZpbGUucmVhZEV4aXN0aW5nKHN5bUZpbGVOYW1lKTtcbiAgICBjb25zdCBidWZmID0gYXdhaXQgZmQucmVhZChmZC50b3RhbFNpemUpO1xuICAgIGNvbnN0IHN5bXNTdHIgPSBuZXcgVGV4dERlY29kZXIoXCJ1dGYtOFwiKS5kZWNvZGUoYnVmZik7XG4gICAgY29uc3QgbGluZXMgPSBzeW1zU3RyLnNwbGl0KFwiXFxuXCIpO1xuICAgIGZvciAobGV0IGk9MDsgaTxsaW5lcy5sZW5ndGg7IGkrKykge1xuICAgICAgICBjb25zdCBhcnIgPSBsaW5lc1tpXS5zcGxpdChcIixcIik7XG4gICAgICAgIGlmIChhcnIubGVuZ3RoIT00KSBjb250aW51ZTtcbiAgICAgICAgaWYgKHN5bS52YXJJZHgyTmFtZVthcnJbMV1dKSB7XG4gICAgICAgICAgICBzeW0udmFySWR4Mk5hbWVbYXJyWzFdXSArPSBcInxcIiArIGFyclszXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHN5bS52YXJJZHgyTmFtZVthcnJbMV1dID0gYXJyWzNdO1xuICAgICAgICB9XG4gICAgICAgIHN5bS5sYWJlbElkeDJOYW1lW2FyclswXV0gPSBhcnJbM107XG4gICAgICAgIGlmICghc3ltLmNvbXBvbmVudElkeDJOYW1lW2FyclsyXV0pIHtcbiAgICAgICAgICAgIHN5bS5jb21wb25lbnRJZHgyTmFtZVthcnJbMl1dID0gZXh0cmFjdENvbXBvbmVudChhcnJbM10pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgYXdhaXQgZmQuY2xvc2UoKTtcblxuICAgIHJldHVybiBzeW07XG5cbiAgICBmdW5jdGlvbiBleHRyYWN0Q29tcG9uZW50KG5hbWUpIHtcbiAgICAgICAgY29uc3QgYXJyID0gbmFtZS5zcGxpdChcIi5cIik7XG4gICAgICAgIGFyci5wb3AoKTsgLy8gUmVtb3ZlIHRoZSBsYXNyIGVsZW1lbnRcbiAgICAgICAgcmV0dXJuIGFyci5qb2luKFwiLlwiKTtcbiAgICB9XG59XG4iLCIvKlxuICAgIENvcHlyaWdodCAyMDE4IDBLSU1TIGFzc29jaWF0aW9uLlxuXG4gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2Ygc25hcmtKUy5cblxuICAgIHNuYXJrSlMgaXMgYSBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0XG4gICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxuICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG5cbiAgICBzbmFya0pTIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUXG4gICAgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZXG4gICAgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljXG4gICAgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuXG4gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAgICBhbG9uZyB3aXRoIHNuYXJrSlMuIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXG4qL1xuXG5pbXBvcnQgKiBhcyBmYXN0RmlsZSBmcm9tIFwiZmFzdGZpbGVcIjtcbmltcG9ydCB7IFdpdG5lc3NDYWxjdWxhdG9yQnVpbGRlciB9IGZyb20gXCJjaXJjb21fcnVudGltZVwiO1xuaW1wb3J0ICogYXMgd3Ruc1V0aWxzIGZyb20gXCIuL3d0bnNfdXRpbHMuanNcIjtcbmltcG9ydCAqIGFzIGJpbkZpbGVVdGlscyBmcm9tIFwiQGlkZW4zL2JpbmZpbGV1dGlsc1wiO1xuaW1wb3J0IGxvYWRTeW1zIGZyb20gXCIuL2xvYWRzeW1zLmpzXCI7XG5pbXBvcnQgeyAgdXRpbHMgfSAgIGZyb20gXCJmZmphdmFzY3JpcHRcIjtcbmNvbnN0IHt1bnN0cmluZ2lmeUJpZ0ludHN9ID0gdXRpbHM7XG5cblxuZXhwb3J0IGRlZmF1bHQgYXN5bmMgZnVuY3Rpb24gd3Ruc0RlYnVnKF9pbnB1dCwgd2FzbUZpbGVOYW1lLCB3dG5zRmlsZU5hbWUsIHN5bU5hbWUsIG9wdGlvbnMsIGxvZ2dlcikge1xuXG4gICAgY29uc3QgaW5wdXQgPSB1bnN0cmluZ2lmeUJpZ0ludHMoX2lucHV0KTtcblxuICAgIGNvbnN0IGZkV2FzbSA9IGF3YWl0IGZhc3RGaWxlLnJlYWRFeGlzdGluZyh3YXNtRmlsZU5hbWUpO1xuICAgIGNvbnN0IHdhc20gPSBhd2FpdCBmZFdhc20ucmVhZChmZFdhc20udG90YWxTaXplKTtcbiAgICBhd2FpdCBmZFdhc20uY2xvc2UoKTtcblxuICAgIGNvbnN0IHdjT3BzID0gey4uLm9wdGlvbnMsIHNhbml0eUNoZWNrOiB0cnVlfTtcbiAgICBsZXQgc3ltID0gYXdhaXQgbG9hZFN5bXMoc3ltTmFtZSk7XG4gICAgaWYgKG9wdGlvbnMuc2V0KSB7XG4gICAgICAgIGlmICghc3ltKSBzeW0gPSBhd2FpdCBsb2FkU3ltcyhzeW1OYW1lKTtcbiAgICAgICAgd2NPcHMubG9nU2V0U2lnbmFsPSBmdW5jdGlvbihsYWJlbElkeCwgdmFsdWUpIHtcbiAgICAgICAgICAgIC8vIFRoZSBsaW5lIGJlbG93IHNwbGl0cyB0aGUgYXJyb3cgbG9nIGludG8gMiBzdHJpbmdzIHRvIGF2b2lkIHNvbWUgU2VjdXJlIEVDTUFTY3JpcHQgaXNzdWVzXG4gICAgICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhcIlNFVCBcIiArIHN5bS5sYWJlbElkeDJOYW1lW2xhYmVsSWR4XSArIFwiIDxcIiArIFwiLS0gXCIgKyB2YWx1ZS50b1N0cmluZygpKTtcbiAgICAgICAgfTtcbiAgICB9XG4gICAgaWYgKG9wdGlvbnMuZ2V0KSB7XG4gICAgICAgIGlmICghc3ltKSBzeW0gPSBhd2FpdCBsb2FkU3ltcyhzeW1OYW1lKTtcbiAgICAgICAgd2NPcHMubG9nR2V0U2lnbmFsPSBmdW5jdGlvbih2YXJJZHgsIHZhbHVlKSB7XG4gICAgICAgICAgICAvLyBUaGUgbGluZSBiZWxvdyBzcGxpdHMgdGhlIGFycm93IGxvZyBpbnRvIDIgc3RyaW5ncyB0byBhdm9pZCBzb21lIFNlY3VyZSBFQ01BU2NyaXB0IGlzc3Vlc1xuICAgICAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oXCJHRVQgXCIgKyBzeW0ubGFiZWxJZHgyTmFtZVt2YXJJZHhdICsgXCIgLS1cIiArIFwiPiBcIiArIHZhbHVlLnRvU3RyaW5nKCkpO1xuICAgICAgICB9O1xuICAgIH1cbiAgICBpZiAob3B0aW9ucy50cmlnZ2VyKSB7XG4gICAgICAgIGlmICghc3ltKSBzeW0gPSBhd2FpdCBsb2FkU3ltcyhzeW1OYW1lKTtcbiAgICAgICAgd2NPcHMubG9nU3RhcnRDb21wb25lbnQ9IGZ1bmN0aW9uKGNJZHgpIHtcbiAgICAgICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKFwiU1RBUlQ6IFwiICsgc3ltLmNvbXBvbmVudElkeDJOYW1lW2NJZHhdKTtcbiAgICAgICAgfTtcbiAgICAgICAgd2NPcHMubG9nRmluaXNoQ29tcG9uZW50PSBmdW5jdGlvbihjSWR4KSB7XG4gICAgICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhcIkZJTklTSDogXCIgKyBzeW0uY29tcG9uZW50SWR4Mk5hbWVbY0lkeF0pO1xuICAgICAgICB9O1xuICAgIH1cbiAgICB3Y09wcy5zeW0gPSBzeW07XG5cbiAgICBjb25zdCB3YyA9IGF3YWl0IFdpdG5lc3NDYWxjdWxhdG9yQnVpbGRlcih3YXNtLCB3Y09wcyk7XG4gICAgY29uc3QgdyA9IGF3YWl0IHdjLmNhbGN1bGF0ZVdpdG5lc3MoaW5wdXQsIHRydWUpO1xuXG4gICAgY29uc3QgZmRXdG5zID0gYXdhaXQgYmluRmlsZVV0aWxzLmNyZWF0ZUJpbkZpbGUod3Ruc0ZpbGVOYW1lLCBcInd0bnNcIiwgMiwgMik7XG5cbiAgICBhd2FpdCB3dG5zVXRpbHMud3JpdGUoZmRXdG5zLCB3LCB3Yy5wcmltZSk7XG5cbiAgICBhd2FpdCBmZFd0bnMuY2xvc2UoKTtcbn1cbiIsIi8qXG4gICAgQ29weXJpZ2h0IDIwMTggMEtJTVMgYXNzb2NpYXRpb24uXG5cbiAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBzbmFya0pTLlxuXG4gICAgc25hcmtKUyBpcyBhIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXRcbiAgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yXG4gICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cblxuICAgIHNuYXJrSlMgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVRcbiAgICBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFlcbiAgICBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWNcbiAgICBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG5cbiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICAgIGFsb25nIHdpdGggc25hcmtKUy4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cbiovXG5cbmltcG9ydCB7cmVhZH0gZnJvbSBcIi4vd3Ruc191dGlscy5qc1wiO1xuXG5leHBvcnQgZGVmYXVsdCBhc3luYyBmdW5jdGlvbiB3dG5zRXhwb3J0SnNvbih3dG5zRmlsZU5hbWUpIHtcblxuICAgIGNvbnN0IHcgPSBhd2FpdCByZWFkKHd0bnNGaWxlTmFtZSk7XG5cbiAgICByZXR1cm4gdztcbn1cbiIsIi8qXG4gICAgQ29weXJpZ2h0IDIwMTggMEtJTVMgYXNzb2NpYXRpb24uXG5cbiAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBzbmFya0pTLlxuXG4gICAgc25hcmtKUyBpcyBhIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXRcbiAgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yXG4gICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cblxuICAgIHNuYXJrSlMgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVRcbiAgICBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFlcbiAgICBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWNcbiAgICBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG5cbiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICAgIGFsb25nIHdpdGggc25hcmtKUy4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cbiovXG5cbmltcG9ydCAqIGFzIGJpbkZpbGVVdGlscyBmcm9tIFwiQGlkZW4zL2JpbmZpbGV1dGlsc1wiO1xuaW1wb3J0ICogYXMgd3Ruc1V0aWxzIGZyb20gXCIuL3d0bnNfdXRpbHMuanNcIjtcbmltcG9ydCB7IHJlYWRSMWNzRmQgfSBmcm9tIFwicjFjc2ZpbGVcIjtcbmltcG9ydCB7IFNjYWxhciB9IGZyb20gXCJmZmphdmFzY3JpcHRcIjtcbmltcG9ydCAqIGFzIGN1cnZlcyBmcm9tIFwiLi9jdXJ2ZXMuanNcIjtcblxuZXhwb3J0IGRlZmF1bHQgYXN5bmMgZnVuY3Rpb24gd3Ruc0NoZWNrKHIxY3NGaWxlbmFtZSwgd3Ruc0ZpbGVuYW1lLCBsb2dnZXIpIHtcblxuICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKFwiV0lUTkVTUyBDSEVDS0lORyBTVEFSVEVEXCIpO1xuXG4gICAgLy8gUmVhZCByMWNzIGZpbGVcbiAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhcIj4gUmVhZGluZyByMWNzIGZpbGVcIik7XG4gICAgY29uc3Qge1xuICAgICAgICBmZDogZmRSMWNzLFxuICAgICAgICBzZWN0aW9uczogc2VjdGlvbnNSMWNzXG4gICAgfSA9IGF3YWl0IGJpbkZpbGVVdGlscy5yZWFkQmluRmlsZShyMWNzRmlsZW5hbWUsIFwicjFjc1wiLCAxLCAxIDw8IDIyLCAxIDw8IDI0KTtcbiAgICBjb25zdCByMWNzID0gYXdhaXQgcmVhZFIxY3NGZChmZFIxY3MsIHNlY3Rpb25zUjFjcywgeyBsb2FkQ29uc3RyYWludHM6IGZhbHNlLCBsb2FkQ3VzdG9tR2F0ZXM6IGZhbHNlIH0pO1xuXG4gICAgLy8gUmVhZCB3aXRuZXNzIGZpbGVcbiAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhcIj4gUmVhZGluZyB3aXRuZXNzIGZpbGVcIik7XG4gICAgY29uc3Qge1xuICAgICAgICBmZDogZmRXdG5zLFxuICAgICAgICBzZWN0aW9uczogd3Ruc1NlY3Rpb25zXG4gICAgfSA9IGF3YWl0IGJpbkZpbGVVdGlscy5yZWFkQmluRmlsZSh3dG5zRmlsZW5hbWUsIFwid3Ruc1wiLCAyLCAxIDw8IDIyLCAxIDw8IDI0KTtcbiAgICBjb25zdCB3dG5zSGVhZGVyID0gYXdhaXQgd3Ruc1V0aWxzLnJlYWRIZWFkZXIoZmRXdG5zLCB3dG5zU2VjdGlvbnMpO1xuXG4gICAgaWYgKCFTY2FsYXIuZXEocjFjcy5wcmltZSwgd3Ruc0hlYWRlci5xKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJDdXJ2ZSBvZiB0aGUgd2l0bmVzcyBkb2VzIG5vdCBtYXRjaCB0aGUgY3VydmUgb2YgdGhlIHByb3Zpbmcga2V5XCIpO1xuICAgIH1cblxuICAgIGNvbnN0IGJ1ZmZXaXRuZXNzID0gYXdhaXQgYmluRmlsZVV0aWxzLnJlYWRTZWN0aW9uKGZkV3Rucywgd3Ruc1NlY3Rpb25zLCAyKTtcbiAgICBhd2FpdCBmZFd0bnMuY2xvc2UoKTtcblxuICAgIGNvbnN0IGN1cnZlID0gYXdhaXQgY3VydmVzLmdldEN1cnZlRnJvbVIocjFjcy5wcmltZSk7XG4gICAgY29uc3QgRnIgPSBjdXJ2ZS5GcjtcbiAgICBjb25zdCBzRnIgPSBGci5uODtcblxuICAgIGNvbnN0IGJSMWNzID0gYXdhaXQgYmluRmlsZVV0aWxzLnJlYWRTZWN0aW9uKGZkUjFjcywgc2VjdGlvbnNSMWNzLCAyKTtcblxuICAgIGlmIChsb2dnZXIpIHtcbiAgICAgICAgbG9nZ2VyLmluZm8oXCItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXCIpO1xuICAgICAgICBsb2dnZXIuaW5mbyhcIiAgV0lUTkVTUyBDSEVDS1wiKTtcbiAgICAgICAgbG9nZ2VyLmluZm8oYCAgQ3VydmU6ICAgICAgICAgICR7cjFjcy5jdXJ2ZS5uYW1lfWApO1xuICAgICAgICBsb2dnZXIuaW5mbyhgICBWYXJzICh3aXJlcyk6ICAgJHtyMWNzLm5WYXJzfWApO1xuICAgICAgICBsb2dnZXIuaW5mbyhgICBPdXRwdXRzOiAgICAgICAgJHtyMWNzLm5PdXRwdXRzfWApO1xuICAgICAgICBsb2dnZXIuaW5mbyhgICBQdWJsaWMgSW5wdXRzOiAgJHtyMWNzLm5QdWJJbnB1dHN9YCk7XG4gICAgICAgIGxvZ2dlci5pbmZvKGAgIFByaXZhdGUgSW5wdXRzOiAke3IxY3MublBydklucHV0c31gKTtcbiAgICAgICAgbG9nZ2VyLmluZm8oYCAgTGFiZWxzOiAgICAgICAgICR7cjFjcy5uTGFiZWxzfWApO1xuICAgICAgICBsb2dnZXIuaW5mbyhgICBDb25zdHJhaW50czogICAgJHtyMWNzLm5Db25zdHJhaW50c31gKTtcbiAgICAgICAgbG9nZ2VyLmluZm8oYCAgQ3VzdG9tIEdhdGVzOiAgICR7cjFjcy51c2VDdXN0b21HYXRlc31gKTtcbiAgICAgICAgbG9nZ2VyLmluZm8oXCItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXCIpO1xuICAgIH1cblxuICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKFwiPiBDaGVja2luZyB3aXRuZXNzIGNvcnJlY3RuZXNzXCIpO1xuXG4gICAgbGV0IGJSMWNzUG9zID0gMDtcbiAgICBsZXQgcmVzID0gdHJ1ZTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHIxY3MubkNvbnN0cmFpbnRzOyBpKyspIHtcbiAgICAgICAgaWYgKChsb2dnZXIpICYmIChpICE9PSAwKSAmJiAoaSAlIDUwMDAwMCA9PT0gMCkpIHtcbiAgICAgICAgICAgIGxvZ2dlci5pbmZvKGDCt8K3wrcgcHJvY2Vzc2luZyByMWNzIGNvbnN0cmFpbnRzICR7aX0vJHtyMWNzLm5Db25zdHJhaW50c31gKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vUmVhZCB0aGUgdGhyZWUgbGluZWFyIGNvbWJpbmF0aW9ucyBvZiB0aGUgY29uc3RyYWludCB3aGVyZSBBICogQiAtIEMgPSAwXG4gICAgICAgIGNvbnN0IGxjQSA9IHJlYWRMQygpO1xuICAgICAgICBjb25zdCBsY0IgPSByZWFkTEMoKTtcbiAgICAgICAgY29uc3QgbGNDID0gcmVhZExDKCk7XG5cbiAgICAgICAgLy8gRXZhbHVhdGUgdGhlIGxpbmVhciBjb21iaW5hdGlvbnNcbiAgICAgICAgY29uc3QgZXZhbEEgPSBFdmFsdWF0ZUxpbmVhckNvbWJpbmF0aW9uKGxjQSk7XG4gICAgICAgIGNvbnN0IGV2YWxCID0gRXZhbHVhdGVMaW5lYXJDb21iaW5hdGlvbihsY0IpO1xuICAgICAgICBjb25zdCBldmFsQyA9IEV2YWx1YXRlTGluZWFyQ29tYmluYXRpb24obGNDKTtcblxuICAgICAgICAvLyBDaGVjayB0aGF0IEEgKiBCIC0gQyA9PSAwXG4gICAgICAgIGlmICghRnIuZXEoRnIuc3ViKEZyLm11bChldmFsQSwgZXZhbEIpLCBldmFsQyksIEZyLnplcm8pKSB7XG4gICAgICAgICAgICBsb2dnZXIud2FybihcIsK3wrfCtyBhYm9ydGluZyBjaGVja2luZyBwcm9jZXNzIGF0IGNvbnN0cmFpbnQgXCIgKyBpKTtcbiAgICAgICAgICAgIHJlcyA9IGZhbHNlO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmZFIxY3MuY2xvc2UoKTtcblxuICAgIGlmIChsb2dnZXIpIHtcbiAgICAgICAgaWYgKHJlcykge1xuICAgICAgICAgICAgbG9nZ2VyLmluZm8oXCJXSVRORVNTIElTIENPUlJFQ1RcIik7XG4gICAgICAgICAgICBsb2dnZXIuaW5mbyhcIldJVE5FU1MgQ0hFQ0tJTkcgRklOSVNIRUQgU1VDQ0VTU0ZVTExZXCIpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbG9nZ2VyLndhcm4oXCJXSVRORVNTIElTIE5PVCBDT1JSRUNUXCIpO1xuICAgICAgICAgICAgbG9nZ2VyLndhcm4oXCJXSVRORVNTIENIRUNLSU5HIEZJTklTSEVEIFVOU1VDQ0VTU0ZVTExZXCIpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlcztcblxuICAgIGZ1bmN0aW9uIEV2YWx1YXRlTGluZWFyQ29tYmluYXRpb24obGMpIHtcbiAgICAgICAgbGV0IHJlcyA9IEZyLnplcm87XG5cbiAgICAgICAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKGxjKTtcbiAgICAgICAga2V5cy5mb3JFYWNoKChzaWduYWxJZCkgPT4ge1xuICAgICAgICAgICAgY29uc3Qgc2lnbmFsVmFsdWUgPSBnZXRXaXRuZXNzVmFsdWUoc2lnbmFsSWQpO1xuICAgICAgICAgICAgY29uc3Qgc2lnbmFsRmFjdG9yID0gbGNbc2lnbmFsSWRdO1xuXG4gICAgICAgICAgICByZXMgPSBGci5hZGQocmVzLCBGci5tdWwoc2lnbmFsVmFsdWUsIHNpZ25hbEZhY3RvcikpO1xuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHJlYWRMQygpIHtcbiAgICAgICAgY29uc3QgbGMgPSB7fTtcblxuICAgICAgICBjb25zdCBidWZmVUwzMiA9IGJSMWNzLnNsaWNlKGJSMWNzUG9zLCBiUjFjc1BvcyArIDQpO1xuICAgICAgICBiUjFjc1BvcyArPSA0O1xuICAgICAgICBjb25zdCBidWZmVUwzMlYgPSBuZXcgRGF0YVZpZXcoYnVmZlVMMzIuYnVmZmVyKTtcbiAgICAgICAgY29uc3QgbklkeCA9IGJ1ZmZVTDMyVi5nZXRVaW50MzIoMCwgdHJ1ZSk7XG5cbiAgICAgICAgY29uc3QgYnVmZiA9IGJSMWNzLnNsaWNlKGJSMWNzUG9zLCBiUjFjc1BvcyArICg0ICsgcjFjcy5uOCkgKiBuSWR4KTtcbiAgICAgICAgYlIxY3NQb3MgKz0gKDQgKyByMWNzLm44KSAqIG5JZHg7XG4gICAgICAgIGNvbnN0IGJ1ZmZWID0gbmV3IERhdGFWaWV3KGJ1ZmYuYnVmZmVyKTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBuSWR4OyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IGlkeCA9IGJ1ZmZWLmdldFVpbnQzMihpICogKDQgKyByMWNzLm44KSwgdHJ1ZSk7XG4gICAgICAgICAgICBjb25zdCB2YWwgPSByMWNzLkYuZnJvbVJwckxFKGJ1ZmYsIGkgKiAoNCArIHIxY3MubjgpICsgNCk7XG4gICAgICAgICAgICBsY1tpZHhdID0gdmFsO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBsYztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRXaXRuZXNzVmFsdWUoc2lnbmFsSWQpIHtcbiAgICAgICAgcmV0dXJuIEZyLmZyb21ScHJMRShidWZmV2l0bmVzcy5zbGljZShzaWduYWxJZCAqIHNGciwgc2lnbmFsSWQgKiBzRnIgKyBzRnIpKTtcbiAgICB9XG59IiwiLypcbiAgICBDb3B5cmlnaHQgMjAxOCAwS0lNUyBhc3NvY2lhdGlvbi5cblxuICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHNuYXJrSlMuXG5cbiAgICBzbmFya0pTIGlzIGEgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdFxuICAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3JcbiAgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuXG4gICAgc25hcmtKUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVFxuICAgIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWVxuICAgIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpY1xuICAgIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cblxuICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gICAgYWxvbmcgd2l0aCBzbmFya0pTLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuKi9cblxuZXhwb3J0IHtkZWZhdWx0IGFzIGNhbGN1bGF0ZX0gZnJvbSBcIi4vd3Ruc19jYWxjdWxhdGUuanNcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBkZWJ1Z30gZnJvbSBcIi4vd3Ruc19kZWJ1Zy5qc1wiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIGV4cG9ydEpzb259IGZyb20gXCIuL3d0bnNfZXhwb3J0X2pzb24uanNcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBjaGVja30gZnJvbSBcIi4vd3Ruc19jaGVjay5qc1wiOyIsIi8qXG4gICAgQ29weXJpZ2h0IDIwMTggMEtJTVMgYXNzb2NpYXRpb24uXG5cbiAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBzbmFya0pTLlxuXG4gICAgc25hcmtKUyBpcyBhIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXRcbiAgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yXG4gICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cblxuICAgIHNuYXJrSlMgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVRcbiAgICBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFlcbiAgICBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWNcbiAgICBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG5cbiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICAgIGFsb25nIHdpdGggc25hcmtKUy4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cbiovXG5cbmNvbnN0IFNVQkFSUkFZX1NJWkUgPSAweDQwMDAwO1xuXG5jb25zdCBCaWdBcnJheUhhbmRsZXIgPSB7XG4gICAgZ2V0OiBmdW5jdGlvbihvYmosIHByb3ApIHtcbiAgICAgICAgaWYgKCFpc05hTihwcm9wKSkge1xuICAgICAgICAgICAgcmV0dXJuIG9iai5nZXRFbGVtZW50KHByb3ApO1xuICAgICAgICB9IGVsc2UgcmV0dXJuIG9ialtwcm9wXTtcbiAgICB9LFxuICAgIHNldDogZnVuY3Rpb24ob2JqLCBwcm9wLCB2YWx1ZSkge1xuICAgICAgICBpZiAoIWlzTmFOKHByb3ApKSB7XG4gICAgICAgICAgICByZXR1cm4gb2JqLnNldEVsZW1lbnQocHJvcCwgdmFsdWUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgb2JqW3Byb3BdID0gdmFsdWU7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH1cbn07XG5cbmNsYXNzIF9CaWdBcnJheSB7XG4gICAgY29uc3RydWN0b3IgKGluaXRTaXplKSB7XG4gICAgICAgIHRoaXMubGVuZ3RoID0gaW5pdFNpemUgfHwgMDtcbiAgICAgICAgdGhpcy5hcnIgPSBuZXcgQXJyYXkoU1VCQVJSQVlfU0laRSk7XG5cbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPGluaXRTaXplOyBpKz1TVUJBUlJBWV9TSVpFKSB7XG4gICAgICAgICAgICB0aGlzLmFycltpL1NVQkFSUkFZX1NJWkVdID0gbmV3IEFycmF5KE1hdGgubWluKFNVQkFSUkFZX1NJWkUsIGluaXRTaXplIC0gaSkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgICBwdXNoICgpIHtcbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPGFyZ3VtZW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgdGhpcy5zZXRFbGVtZW50ICh0aGlzLmxlbmd0aCwgYXJndW1lbnRzW2ldKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHNsaWNlIChmLCB0KSB7XG4gICAgICAgIGNvbnN0IGFyciA9IG5ldyBBcnJheSh0LWYpO1xuICAgICAgICBmb3IgKGxldCBpPWY7IGk8IHQ7IGkrKykgYXJyW2ktZl0gPSB0aGlzLmdldEVsZW1lbnQoaSk7XG4gICAgICAgIHJldHVybiBhcnI7XG4gICAgfVxuICAgIGdldEVsZW1lbnQoaWR4KSB7XG4gICAgICAgIGlkeCA9IHBhcnNlSW50KGlkeCk7XG4gICAgICAgIGNvbnN0IGlkeDEgPSBNYXRoLmZsb29yKGlkeCAvIFNVQkFSUkFZX1NJWkUpO1xuICAgICAgICBjb25zdCBpZHgyID0gaWR4ICUgU1VCQVJSQVlfU0laRTtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXJyW2lkeDFdID8gdGhpcy5hcnJbaWR4MV1baWR4Ml0gOiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIHNldEVsZW1lbnQoaWR4LCB2YWx1ZSkge1xuICAgICAgICBpZHggPSBwYXJzZUludChpZHgpO1xuICAgICAgICBjb25zdCBpZHgxID0gTWF0aC5mbG9vcihpZHggLyBTVUJBUlJBWV9TSVpFKTtcbiAgICAgICAgaWYgKCF0aGlzLmFycltpZHgxXSkge1xuICAgICAgICAgICAgdGhpcy5hcnJbaWR4MV0gPSBuZXcgQXJyYXkoU1VCQVJSQVlfU0laRSk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgaWR4MiA9IGlkeCAlIFNVQkFSUkFZX1NJWkU7XG4gICAgICAgIHRoaXMuYXJyW2lkeDFdW2lkeDJdID0gdmFsdWU7XG4gICAgICAgIGlmIChpZHggPj0gdGhpcy5sZW5ndGgpIHRoaXMubGVuZ3RoID0gaWR4KzE7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBnZXRLZXlzKCkge1xuICAgICAgICBjb25zdCBuZXdBID0gbmV3IEJpZ0FycmF5KCk7XG4gICAgICAgIGZvciAobGV0IGk9MDsgaTx0aGlzLmFyci5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgaWYgKHRoaXMuYXJyW2ldKSB7XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaj0wOyBqPHRoaXMuYXJyW2ldLmxlbmd0aDsgaisrKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgdGhpcy5hcnJbaV1bal0gIT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5ld0EucHVzaChpKlNVQkFSUkFZX1NJWkUraik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG5ld0E7XG4gICAgfVxufVxuXG5jbGFzcyBCaWdBcnJheSB7XG4gICAgY29uc3RydWN0b3IoIGluaXRTaXplICkge1xuICAgICAgICBjb25zdCBvYmogPSBuZXcgX0JpZ0FycmF5KGluaXRTaXplKTtcbiAgICAgICAgY29uc3QgZXh0T2JqID0gbmV3IFByb3h5KG9iaiwgQmlnQXJyYXlIYW5kbGVyKTtcbiAgICAgICAgcmV0dXJuIGV4dE9iajtcbiAgICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IEJpZ0FycmF5O1xuIiwiLypcbiAgICBDb3B5cmlnaHQgMjAxOCAwS0lNUyBhc3NvY2lhdGlvbi5cblxuICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHNuYXJrSlMuXG5cbiAgICBzbmFya0pTIGlzIGEgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdFxuICAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3JcbiAgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuXG4gICAgc25hcmtKUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVFxuICAgIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWVxuICAgIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpY1xuICAgIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cblxuICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gICAgYWxvbmcgd2l0aCBzbmFya0pTLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuKi9cblxuaW1wb3J0IHtyZWFkUjFjc0hlYWRlcn0gZnJvbSBcInIxY3NmaWxlXCI7XG5pbXBvcnQgKiBhcyB1dGlscyBmcm9tIFwiLi9wb3dlcnNvZnRhdV91dGlscy5qc1wiO1xuaW1wb3J0IHtcbiAgICByZWFkQmluRmlsZSxcbiAgICBjcmVhdGVCaW5GaWxlLFxuICAgIHJlYWRTZWN0aW9uLFxuICAgIHdyaXRlQmlnSW50LFxuICAgIHN0YXJ0V3JpdGVTZWN0aW9uLFxuICAgIGVuZFdyaXRlU2VjdGlvbixcbn0gZnJvbSBcIkBpZGVuMy9iaW5maWxldXRpbHNcIjtcbmltcG9ydCB7IGxvZzIsIGZvcm1hdEhhc2ggfSBmcm9tIFwiLi9taXNjLmpzXCI7XG5pbXBvcnQgeyBTY2FsYXIsIEJpZ0J1ZmZlciB9IGZyb20gXCJmZmphdmFzY3JpcHRcIjtcbmltcG9ydCBCbGFrZTJiIGZyb20gXCJibGFrZTJiLXdhc21cIjtcbmltcG9ydCBCaWdBcnJheSBmcm9tIFwiLi9iaWdhcnJheS5qc1wiO1xuXG5cbmV4cG9ydCBkZWZhdWx0IGFzeW5jIGZ1bmN0aW9uIG5ld1pLZXkocjFjc05hbWUsIHB0YXVOYW1lLCB6a2V5TmFtZSwgbG9nZ2VyKSB7XG5cbiAgICBjb25zdCBUQVVfRzEgPSAwO1xuICAgIGNvbnN0IFRBVV9HMiA9IDE7XG4gICAgY29uc3QgQUxQSEFUQVVfRzEgPSAyO1xuICAgIGNvbnN0IEJFVEFUQVVfRzEgPSAzO1xuICAgIGF3YWl0IEJsYWtlMmIucmVhZHkoKTtcbiAgICBjb25zdCBjc0hhc2hlciA9IEJsYWtlMmIoNjQpO1xuXG4gICAgY29uc3Qge2ZkOiBmZFBUYXUsIHNlY3Rpb25zOiBzZWN0aW9uc1BUYXV9ID0gYXdhaXQgcmVhZEJpbkZpbGUocHRhdU5hbWUsIFwicHRhdVwiLCAxLCAxPDwyMiwgMTw8MjQpO1xuICAgIGNvbnN0IHtjdXJ2ZSwgcG93ZXJ9ID0gYXdhaXQgdXRpbHMucmVhZFBUYXVIZWFkZXIoZmRQVGF1LCBzZWN0aW9uc1BUYXUpO1xuICAgIGNvbnN0IHtmZDogZmRSMWNzLCBzZWN0aW9uczogc2VjdGlvbnNSMWNzfSA9IGF3YWl0IHJlYWRCaW5GaWxlKHIxY3NOYW1lLCBcInIxY3NcIiwgMSwgMTw8MjIsIDE8PDI0KTtcbiAgICBjb25zdCByMWNzID0gYXdhaXQgcmVhZFIxY3NIZWFkZXIoZmRSMWNzLCBzZWN0aW9uc1IxY3MsIGZhbHNlKTtcblxuICAgIGNvbnN0IGZkWktleSA9IGF3YWl0IGNyZWF0ZUJpbkZpbGUoemtleU5hbWUsIFwiemtleVwiLCAxLCAxMCwgMTw8MjIsIDE8PDI0KTtcblxuICAgIGNvbnN0IHNHMSA9IGN1cnZlLkcxLkYubjgqMjtcbiAgICBjb25zdCBzRzIgPSBjdXJ2ZS5HMi5GLm44KjI7XG5cbiAgICBpZiAocjFjcy5wcmltZSAhPSBjdXJ2ZS5yKSB7XG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5lcnJvcihcInIxY3MgY3VydmUgZG9lcyBub3QgbWF0Y2ggcG93ZXJzIG9mIHRhdSBjZXJlbW9ueSBjdXJ2ZVwiKTtcbiAgICAgICAgcmV0dXJuIC0xO1xuICAgIH1cblxuICAgIGNvbnN0IGNpclBvd2VyID0gbG9nMihyMWNzLm5Db25zdHJhaW50cyArIHIxY3MublB1YklucHV0cyArIHIxY3Mubk91dHB1dHMgKzEgLTEpICsxO1xuXG4gICAgaWYgKGNpclBvd2VyID4gcG93ZXIpIHtcbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmVycm9yKGBjaXJjdWl0IHRvbyBiaWcgZm9yIHRoaXMgcG93ZXIgb2YgdGF1IGNlcmVtb255LiAke3IxY3MubkNvbnN0cmFpbnRzfSoyID4gMioqJHtwb3dlcn1gKTtcbiAgICAgICAgcmV0dXJuIC0xO1xuICAgIH1cblxuICAgIGlmICghc2VjdGlvbnNQVGF1WzEyXSkge1xuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZXJyb3IoXCJQb3dlcnMgb2YgdGF1IGlzIG5vdCBwcmVwYXJlZC5cIik7XG4gICAgICAgIHJldHVybiAtMTtcbiAgICB9XG5cbiAgICBjb25zdCBuUHVibGljID0gcjFjcy5uT3V0cHV0cyArIHIxY3MublB1YklucHV0cztcbiAgICBjb25zdCBkb21haW5TaXplID0gMiAqKiBjaXJQb3dlcjtcblxuICAgIC8vIFdyaXRlIHRoZSBoZWFkZXJcbiAgICAvLy8vLy8vLy8vL1xuICAgIGF3YWl0IHN0YXJ0V3JpdGVTZWN0aW9uKGZkWktleSwgMSk7XG4gICAgYXdhaXQgZmRaS2V5LndyaXRlVUxFMzIoMSk7IC8vIEdyb3RoXG4gICAgYXdhaXQgZW5kV3JpdGVTZWN0aW9uKGZkWktleSk7XG5cbiAgICAvLyBXcml0ZSB0aGUgR3JvdGggaGVhZGVyIHNlY3Rpb25cbiAgICAvLy8vLy8vLy8vL1xuXG4gICAgYXdhaXQgc3RhcnRXcml0ZVNlY3Rpb24oZmRaS2V5LCAyKTtcbiAgICBjb25zdCBwcmltZVEgPSBjdXJ2ZS5xO1xuICAgIGNvbnN0IG44cSA9IChNYXRoLmZsb29yKCAoU2NhbGFyLmJpdExlbmd0aChwcmltZVEpIC0gMSkgLyA2NCkgKzEpKjg7XG5cbiAgICBjb25zdCBwcmltZVIgPSBjdXJ2ZS5yO1xuICAgIGNvbnN0IG44ciA9IChNYXRoLmZsb29yKCAoU2NhbGFyLmJpdExlbmd0aChwcmltZVIpIC0gMSkgLyA2NCkgKzEpKjg7XG4gICAgY29uc3QgUnIgPSBTY2FsYXIubW9kKFNjYWxhci5zaGwoMSwgbjhyKjgpLCBwcmltZVIpO1xuICAgIGNvbnN0IFIyciA9IGN1cnZlLkZyLmUoU2NhbGFyLm1vZChTY2FsYXIubXVsKFJyLFJyKSwgcHJpbWVSKSk7XG5cbiAgICBhd2FpdCBmZFpLZXkud3JpdGVVTEUzMihuOHEpO1xuICAgIGF3YWl0IHdyaXRlQmlnSW50KGZkWktleSwgcHJpbWVRLCBuOHEpO1xuICAgIGF3YWl0IGZkWktleS53cml0ZVVMRTMyKG44cik7XG4gICAgYXdhaXQgd3JpdGVCaWdJbnQoZmRaS2V5LCBwcmltZVIsIG44cik7XG4gICAgYXdhaXQgZmRaS2V5LndyaXRlVUxFMzIocjFjcy5uVmFycyk7ICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRvdGFsIG51bWJlciBvZiBiYXJzXG4gICAgYXdhaXQgZmRaS2V5LndyaXRlVUxFMzIoblB1YmxpYyk7ICAgICAgICAgICAgICAgICAgICAgICAvLyBUb3RhbCBudW1iZXIgb2YgcHVibGljIHZhcnMgKG5vdCBpbmNsdWRpbmcgT05FKVxuICAgIGF3YWl0IGZkWktleS53cml0ZVVMRTMyKGRvbWFpblNpemUpOyAgICAgICAgICAgICAgICAgIC8vIGRvbWFpblNpemVcblxuICAgIGxldCBiQWxwaGExO1xuICAgIGJBbHBoYTEgPSBhd2FpdCBmZFBUYXUucmVhZChzRzEsIHNlY3Rpb25zUFRhdVs0XVswXS5wKTtcbiAgICBhd2FpdCBmZFpLZXkud3JpdGUoYkFscGhhMSk7XG4gICAgYkFscGhhMSA9IGF3YWl0IGN1cnZlLkcxLmJhdGNoTEVNdG9VKGJBbHBoYTEpO1xuICAgIGNzSGFzaGVyLnVwZGF0ZShiQWxwaGExKTtcblxuICAgIGxldCBiQmV0YTE7XG4gICAgYkJldGExID0gYXdhaXQgZmRQVGF1LnJlYWQoc0cxLCBzZWN0aW9uc1BUYXVbNV1bMF0ucCk7XG4gICAgYXdhaXQgZmRaS2V5LndyaXRlKGJCZXRhMSk7XG4gICAgYkJldGExID0gYXdhaXQgY3VydmUuRzEuYmF0Y2hMRU10b1UoYkJldGExKTtcbiAgICBjc0hhc2hlci51cGRhdGUoYkJldGExKTtcblxuICAgIGxldCBiQmV0YTI7XG4gICAgYkJldGEyID0gYXdhaXQgZmRQVGF1LnJlYWQoc0cyLCBzZWN0aW9uc1BUYXVbNl1bMF0ucCk7XG4gICAgYXdhaXQgZmRaS2V5LndyaXRlKGJCZXRhMik7XG4gICAgYkJldGEyID0gYXdhaXQgY3VydmUuRzIuYmF0Y2hMRU10b1UoYkJldGEyKTtcbiAgICBjc0hhc2hlci51cGRhdGUoYkJldGEyKTtcblxuICAgIGNvbnN0IGJnMSA9IG5ldyBVaW50OEFycmF5KHNHMSk7XG4gICAgY3VydmUuRzEudG9ScHJMRU0oYmcxLCAwLCBjdXJ2ZS5HMS5nKTtcbiAgICBjb25zdCBiZzIgPSBuZXcgVWludDhBcnJheShzRzIpO1xuICAgIGN1cnZlLkcyLnRvUnByTEVNKGJnMiwgMCwgY3VydmUuRzIuZyk7XG4gICAgY29uc3QgYmcxVSA9IG5ldyBVaW50OEFycmF5KHNHMSk7XG4gICAgY3VydmUuRzEudG9ScHJVbmNvbXByZXNzZWQoYmcxVSwgMCwgY3VydmUuRzEuZyk7XG4gICAgY29uc3QgYmcyVSA9IG5ldyBVaW50OEFycmF5KHNHMik7XG4gICAgY3VydmUuRzIudG9ScHJVbmNvbXByZXNzZWQoYmcyVSwgMCwgY3VydmUuRzIuZyk7XG5cbiAgICBhd2FpdCBmZFpLZXkud3JpdGUoYmcyKTsgICAgICAgIC8vIGdhbW1hMlxuICAgIGF3YWl0IGZkWktleS53cml0ZShiZzEpOyAgICAgICAgLy8gZGVsdGExXG4gICAgYXdhaXQgZmRaS2V5LndyaXRlKGJnMik7ICAgICAgICAvLyBkZWx0YTJcbiAgICBjc0hhc2hlci51cGRhdGUoYmcyVSk7ICAgICAgLy8gZ2FtbWEyXG4gICAgY3NIYXNoZXIudXBkYXRlKGJnMVUpOyAgICAgIC8vIGRlbHRhMVxuICAgIGNzSGFzaGVyLnVwZGF0ZShiZzJVKTsgICAgICAvLyBkZWx0YTJcbiAgICBhd2FpdCBlbmRXcml0ZVNlY3Rpb24oZmRaS2V5KTtcblxuICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKFwiUmVhZGluZyByMWNzXCIpO1xuICAgIGxldCBzUjFjcyA9IGF3YWl0IHJlYWRTZWN0aW9uKGZkUjFjcywgc2VjdGlvbnNSMWNzLCAyKTtcblxuICAgIGNvbnN0IEEgPSBuZXcgQmlnQXJyYXkocjFjcy5uVmFycyk7XG4gICAgY29uc3QgQjEgPSBuZXcgQmlnQXJyYXkocjFjcy5uVmFycyk7XG4gICAgY29uc3QgQjIgPSBuZXcgQmlnQXJyYXkocjFjcy5uVmFycyk7XG4gICAgY29uc3QgQyA9IG5ldyBCaWdBcnJheShyMWNzLm5WYXJzLSBuUHVibGljIC0xKTtcbiAgICBjb25zdCBJQyA9IG5ldyBBcnJheShuUHVibGljKzEpO1xuXG4gICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oXCJSZWFkaW5nIHRhdUcxXCIpO1xuICAgIGxldCBzVGF1RzEgPSBhd2FpdCByZWFkU2VjdGlvbihmZFBUYXUsIHNlY3Rpb25zUFRhdSwgMTIsIChkb21haW5TaXplIC0xKSpzRzEsIGRvbWFpblNpemUqc0cxKTtcbiAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhcIlJlYWRpbmcgdGF1RzJcIik7XG4gICAgbGV0IHNUYXVHMiA9IGF3YWl0IHJlYWRTZWN0aW9uKGZkUFRhdSwgc2VjdGlvbnNQVGF1LCAxMywgKGRvbWFpblNpemUgLTEpKnNHMiwgZG9tYWluU2l6ZSpzRzIpO1xuICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKFwiUmVhZGluZyBhbHBoYXRhdUcxXCIpO1xuICAgIGxldCBzQWxwaGFUYXVHMSA9IGF3YWl0IHJlYWRTZWN0aW9uKGZkUFRhdSwgc2VjdGlvbnNQVGF1LCAxNCwgKGRvbWFpblNpemUgLTEpKnNHMSwgZG9tYWluU2l6ZSpzRzEpO1xuICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKFwiUmVhZGluZyBiZXRhdGF1RzFcIik7XG4gICAgbGV0IHNCZXRhVGF1RzEgPSBhd2FpdCByZWFkU2VjdGlvbihmZFBUYXUsIHNlY3Rpb25zUFRhdSwgMTUsIChkb21haW5TaXplIC0xKSpzRzEsIGRvbWFpblNpemUqc0cxKTtcblxuICAgIGF3YWl0IHByb2Nlc3NDb25zdHJhaW50cygpO1xuXG4gICAgYXdhaXQgY29tcG9zZUFuZFdyaXRlUG9pbnRzKDMsIFwiRzFcIiwgSUMsIFwiSUNcIik7XG5cbiAgICBhd2FpdCB3cml0ZUhzKCk7XG5cbiAgICBhd2FpdCBoYXNoSFBvaW50cygpO1xuXG4gICAgYXdhaXQgY29tcG9zZUFuZFdyaXRlUG9pbnRzKDgsIFwiRzFcIiwgQywgXCJDXCIpO1xuICAgIGF3YWl0IGNvbXBvc2VBbmRXcml0ZVBvaW50cyg1LCBcIkcxXCIsIEEsIFwiQVwiKTtcbiAgICBhd2FpdCBjb21wb3NlQW5kV3JpdGVQb2ludHMoNiwgXCJHMVwiLCBCMSwgXCJCMVwiKTtcbiAgICBhd2FpdCBjb21wb3NlQW5kV3JpdGVQb2ludHMoNywgXCJHMlwiLCBCMiwgXCJCMlwiKTtcblxuICAgIGNvbnN0IGNzSGFzaCA9IGNzSGFzaGVyLmRpZ2VzdCgpO1xuICAgIC8vIENvbnRyaWJ1dGlvbnMgc2VjdGlvblxuICAgIGF3YWl0IHN0YXJ0V3JpdGVTZWN0aW9uKGZkWktleSwgMTApO1xuICAgIGF3YWl0IGZkWktleS53cml0ZShjc0hhc2gpO1xuICAgIGF3YWl0IGZkWktleS53cml0ZVVMRTMyKDApO1xuICAgIGF3YWl0IGVuZFdyaXRlU2VjdGlvbihmZFpLZXkpO1xuXG4gICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oZm9ybWF0SGFzaChjc0hhc2gsIFwiQ2lyY3VpdCBoYXNoOiBcIikpO1xuXG5cbiAgICBhd2FpdCBmZFpLZXkuY2xvc2UoKTtcbiAgICBhd2FpdCBmZFIxY3MuY2xvc2UoKTtcbiAgICBhd2FpdCBmZFBUYXUuY2xvc2UoKTtcblxuICAgIHJldHVybiBjc0hhc2g7XG5cbiAgICBhc3luYyBmdW5jdGlvbiB3cml0ZUhzKCkge1xuICAgICAgICBhd2FpdCBzdGFydFdyaXRlU2VjdGlvbihmZFpLZXksIDkpO1xuICAgICAgICBjb25zdCBidWZmT3V0ID0gbmV3IEJpZ0J1ZmZlcihkb21haW5TaXplKnNHMSk7XG4gICAgICAgIGlmIChjaXJQb3dlciA8IGN1cnZlLkZyLnMpIHtcbiAgICAgICAgICAgIGxldCBzVGF1RzEgPSBhd2FpdCByZWFkU2VjdGlvbihmZFBUYXUsIHNlY3Rpb25zUFRhdSwgMTIsIChkb21haW5TaXplKjItMSkqc0cxLCBkb21haW5TaXplKjIqc0cxKTtcbiAgICAgICAgICAgIGZvciAobGV0IGk9MDsgaTwgZG9tYWluU2l6ZTsgaSsrKSB7XG4gICAgICAgICAgICAgICAgaWYgKChsb2dnZXIpJiYoaSUxMDAwMCA9PSAwKSkgbG9nZ2VyLmRlYnVnKGBzcGxpdHRpbmcgYnVmZmVyOiAke2l9LyR7ZG9tYWluU2l6ZX1gKTtcbiAgICAgICAgICAgICAgICBjb25zdCBidWZmID0gc1RhdUcxLnNsaWNlKCAoaSoyKzEpKnNHMSwgKGkqMisxKSpzRzEgKyBzRzEgKTtcbiAgICAgICAgICAgICAgICBidWZmT3V0LnNldChidWZmLCBpKnNHMSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoY2lyUG93ZXIgPT0gY3VydmUuRnIucykge1xuICAgICAgICAgICAgY29uc3QgbyA9IHNlY3Rpb25zUFRhdVsxMl1bMF0ucCArICgoMiAqKiAoY2lyUG93ZXIrMSkpIC0xKSpzRzE7XG4gICAgICAgICAgICBhd2FpdCBmZFBUYXUucmVhZFRvQnVmZmVyKGJ1ZmZPdXQsIDAsIGRvbWFpblNpemUqc0cxLCBvICsgZG9tYWluU2l6ZSpzRzEpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmVycm9yKFwiQ2lyY3VpdCB0b28gYmlnXCIpO1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiQ2lyY3VpdCB0b28gYmlnIGZvciB0aGlzIGN1cnZlXCIpO1xuICAgICAgICB9XG4gICAgICAgIGF3YWl0IGZkWktleS53cml0ZShidWZmT3V0KTtcbiAgICAgICAgYXdhaXQgZW5kV3JpdGVTZWN0aW9uKGZkWktleSk7XG4gICAgfVxuXG4gICAgYXN5bmMgZnVuY3Rpb24gcHJvY2Vzc0NvbnN0cmFpbnRzKCkge1xuICAgICAgICBjb25zdCBidWZmQ29lZmYgPSBuZXcgVWludDhBcnJheSgxMiArIGN1cnZlLkZyLm44KTtcbiAgICAgICAgY29uc3QgYnVmZkNvZWZmViA9IG5ldyBEYXRhVmlldyhidWZmQ29lZmYuYnVmZmVyKTtcbiAgICAgICAgY29uc3QgYk9uZSA9IG5ldyBVaW50OEFycmF5KGN1cnZlLkZyLm44KTtcbiAgICAgICAgY3VydmUuRnIudG9ScHJMRShiT25lLCAwLCBjdXJ2ZS5Gci5lKDEpKTtcblxuICAgICAgICBsZXQgcjFjc1BvcyA9IDA7XG5cbiAgICAgICAgZnVuY3Rpb24gcjFjc19yZWFkVUxFMzIoKSB7XG4gICAgICAgICAgICBjb25zdCBidWZmID0gc1IxY3Muc2xpY2UocjFjc1BvcywgcjFjc1Bvcys0KTtcbiAgICAgICAgICAgIHIxY3NQb3MgKz0gNDtcbiAgICAgICAgICAgIGNvbnN0IGJ1ZmZWID0gbmV3IERhdGFWaWV3KGJ1ZmYuYnVmZmVyKTtcbiAgICAgICAgICAgIHJldHVybiBidWZmVi5nZXRVaW50MzIoMCwgdHJ1ZSk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBjb2VmcyA9IG5ldyBCaWdBcnJheSgpO1xuICAgICAgICBmb3IgKGxldCBjPTA7IGM8cjFjcy5uQ29uc3RyYWludHM7IGMrKykge1xuICAgICAgICAgICAgaWYgKChsb2dnZXIpJiYoYyUxMDAwMCA9PSAwKSkgbG9nZ2VyLmRlYnVnKGBwcm9jZXNzaW5nIGNvbnN0cmFpbnRzOiAke2N9LyR7cjFjcy5uQ29uc3RyYWludHN9YCk7XG4gICAgICAgICAgICBjb25zdCBuQSA9IHIxY3NfcmVhZFVMRTMyKCk7XG4gICAgICAgICAgICBmb3IgKGxldCBpPTA7IGk8bkE7IGkrKykge1xuICAgICAgICAgICAgICAgIGNvbnN0IHMgPSByMWNzX3JlYWRVTEUzMigpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGNvZWZwID0gcjFjc1BvcztcbiAgICAgICAgICAgICAgICByMWNzUG9zICs9IGN1cnZlLkZyLm44O1xuXG4gICAgICAgICAgICAgICAgY29uc3QgbDF0ID0gVEFVX0cxO1xuICAgICAgICAgICAgICAgIGNvbnN0IGwxID0gc0cxKmM7XG4gICAgICAgICAgICAgICAgY29uc3QgbDJ0ID0gQkVUQVRBVV9HMTtcbiAgICAgICAgICAgICAgICBjb25zdCBsMiA9IHNHMSpjO1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgQVtzXSA9PT0gXCJ1bmRlZmluZWRcIikgQVtzXSA9IFtdO1xuICAgICAgICAgICAgICAgIEFbc10ucHVzaChbbDF0LCBsMSwgY29lZnBdKTtcblxuICAgICAgICAgICAgICAgIGlmIChzIDw9IG5QdWJsaWMpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBJQ1tzXSA9PT0gXCJ1bmRlZmluZWRcIikgSUNbc10gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgSUNbc10ucHVzaChbbDJ0LCBsMiwgY29lZnBdKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIENbcy0gblB1YmxpYyAtMV0gPT09IFwidW5kZWZpbmVkXCIpIENbcy0gblB1YmxpYyAtMV0gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgQ1tzIC0gblB1YmxpYyAtMV0ucHVzaChbbDJ0LCBsMiwgY29lZnBdKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29lZnMucHVzaChbMCwgYywgcywgY29lZnBdKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgbkIgPSByMWNzX3JlYWRVTEUzMigpO1xuICAgICAgICAgICAgZm9yIChsZXQgaT0wOyBpPG5COyBpKyspIHtcbiAgICAgICAgICAgICAgICBjb25zdCBzID0gcjFjc19yZWFkVUxFMzIoKTtcbiAgICAgICAgICAgICAgICBjb25zdCBjb2VmcCA9IHIxY3NQb3M7XG4gICAgICAgICAgICAgICAgcjFjc1BvcyArPSBjdXJ2ZS5Gci5uODtcblxuICAgICAgICAgICAgICAgIGNvbnN0IGwxdCA9IFRBVV9HMTtcbiAgICAgICAgICAgICAgICBjb25zdCBsMSA9IHNHMSpjO1xuICAgICAgICAgICAgICAgIGNvbnN0IGwydCA9IFRBVV9HMjtcbiAgICAgICAgICAgICAgICBjb25zdCBsMiA9IHNHMipjO1xuICAgICAgICAgICAgICAgIGNvbnN0IGwzdCA9IEFMUEhBVEFVX0cxO1xuICAgICAgICAgICAgICAgIGNvbnN0IGwzID0gc0cxKmM7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBCMVtzXSA9PT0gXCJ1bmRlZmluZWRcIikgQjFbc10gPSBbXTtcbiAgICAgICAgICAgICAgICBCMVtzXS5wdXNoKFtsMXQsIGwxLCBjb2VmcF0pO1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgQjJbc10gPT09IFwidW5kZWZpbmVkXCIpIEIyW3NdID0gW107XG4gICAgICAgICAgICAgICAgQjJbc10ucHVzaChbbDJ0LCBsMiwgY29lZnBdKTtcblxuICAgICAgICAgICAgICAgIGlmIChzIDw9IG5QdWJsaWMpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBJQ1tzXSA9PT0gXCJ1bmRlZmluZWRcIikgSUNbc10gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgSUNbc10ucHVzaChbbDN0LCBsMywgY29lZnBdKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIENbcy0gblB1YmxpYyAtMV0gPT09IFwidW5kZWZpbmVkXCIpIENbcy0gblB1YmxpYyAtMV0gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgQ1tzLSBuUHVibGljIC0xXS5wdXNoKFtsM3QsIGwzLCBjb2VmcF0pO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGNvZWZzLnB1c2goWzEsIGMsIHMsIGNvZWZwXSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IG5DID0gcjFjc19yZWFkVUxFMzIoKTtcbiAgICAgICAgICAgIGZvciAobGV0IGk9MDsgaTxuQzsgaSsrKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcyA9IHIxY3NfcmVhZFVMRTMyKCk7XG4gICAgICAgICAgICAgICAgY29uc3QgY29lZnAgPSByMWNzUG9zO1xuICAgICAgICAgICAgICAgIHIxY3NQb3MgKz0gY3VydmUuRnIubjg7XG5cbiAgICAgICAgICAgICAgICBjb25zdCBsMXQgPSBUQVVfRzE7XG4gICAgICAgICAgICAgICAgY29uc3QgbDEgPSBzRzEqYztcbiAgICAgICAgICAgICAgICBpZiAocyA8PSBuUHVibGljKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgSUNbc10gPT09IFwidW5kZWZpbmVkXCIpIElDW3NdID0gW107XG4gICAgICAgICAgICAgICAgICAgIElDW3NdLnB1c2goW2wxdCwgbDEsIGNvZWZwXSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBDW3MtIG5QdWJsaWMgLTFdID09PSBcInVuZGVmaW5lZFwiKSBDW3MtIG5QdWJsaWMgLTFdID0gW107XG4gICAgICAgICAgICAgICAgICAgIENbcy0gblB1YmxpYyAtMV0ucHVzaChbbDF0LCBsMSwgY29lZnBdKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBmb3IgKGxldCBzID0gMDsgcyA8PSBuUHVibGljIDsgcysrKSB7XG4gICAgICAgICAgICBjb25zdCBsMXQgPSBUQVVfRzE7XG4gICAgICAgICAgICBjb25zdCBsMSA9IHNHMSoocjFjcy5uQ29uc3RyYWludHMgKyBzKTtcbiAgICAgICAgICAgIGNvbnN0IGwydCA9IEJFVEFUQVVfRzE7XG4gICAgICAgICAgICBjb25zdCBsMiA9IHNHMSoocjFjcy5uQ29uc3RyYWludHMgKyBzKTtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgQVtzXSA9PT0gXCJ1bmRlZmluZWRcIikgQVtzXSA9IFtdO1xuICAgICAgICAgICAgQVtzXS5wdXNoKFtsMXQsIGwxLCAtMV0pO1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBJQ1tzXSA9PT0gXCJ1bmRlZmluZWRcIikgSUNbc10gPSBbXTtcbiAgICAgICAgICAgIElDW3NdLnB1c2goW2wydCwgbDIsIC0xXSk7XG4gICAgICAgICAgICBjb2Vmcy5wdXNoKFswLCByMWNzLm5Db25zdHJhaW50cyArIHMsIHMsIC0xXSk7XG4gICAgICAgIH1cblxuXG4gICAgICAgIGF3YWl0IHN0YXJ0V3JpdGVTZWN0aW9uKGZkWktleSwgNCk7XG5cbiAgICAgICAgY29uc3QgYnVmZlNlY3Rpb24gPSBuZXcgQmlnQnVmZmVyKGNvZWZzLmxlbmd0aCooMTIrY3VydmUuRnIubjgpICsgNCk7XG5cbiAgICAgICAgY29uc3QgYnVmZjQgPSBuZXcgVWludDhBcnJheSg0KTtcbiAgICAgICAgY29uc3QgYnVmZjRWID0gbmV3IERhdGFWaWV3KGJ1ZmY0LmJ1ZmZlcik7XG4gICAgICAgIGJ1ZmY0Vi5zZXRVaW50MzIoMCwgY29lZnMubGVuZ3RoLCB0cnVlKTtcbiAgICAgICAgYnVmZlNlY3Rpb24uc2V0KGJ1ZmY0KTtcbiAgICAgICAgbGV0IGNvZWZzUG9zID0gNDtcbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPGNvZWZzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBpZiAoKGxvZ2dlcikmJihpJTEwMDAwMCA9PSAwKSkgbG9nZ2VyLmRlYnVnKGB3cml0aW5nIGNvZWZmczogJHtpfS8ke2NvZWZzLmxlbmd0aH1gKTtcbiAgICAgICAgICAgIHdyaXRlQ29lZihjb2Vmc1tpXSk7XG4gICAgICAgIH1cblxuICAgICAgICBhd2FpdCBmZFpLZXkud3JpdGUoYnVmZlNlY3Rpb24pO1xuICAgICAgICBhd2FpdCBlbmRXcml0ZVNlY3Rpb24oZmRaS2V5KTtcblxuICAgICAgICBmdW5jdGlvbiB3cml0ZUNvZWYoYykge1xuICAgICAgICAgICAgYnVmZkNvZWZmVi5zZXRVaW50MzIoMCwgY1swXSwgdHJ1ZSk7XG4gICAgICAgICAgICBidWZmQ29lZmZWLnNldFVpbnQzMig0LCBjWzFdLCB0cnVlKTtcbiAgICAgICAgICAgIGJ1ZmZDb2VmZlYuc2V0VWludDMyKDgsIGNbMl0sIHRydWUpO1xuICAgICAgICAgICAgbGV0IG47XG4gICAgICAgICAgICBpZiAoY1szXT49MCkge1xuICAgICAgICAgICAgICAgIG4gPSBjdXJ2ZS5Gci5mcm9tUnByTEUoc1IxY3Muc2xpY2UoY1szXSwgY1szXSArIGN1cnZlLkZyLm44KSwgMCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIG4gPSBjdXJ2ZS5Gci5mcm9tUnByTEUoYk9uZSwgMCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBuUjIgPSBjdXJ2ZS5Gci5tdWwobiwgUjJyKTtcbiAgICAgICAgICAgIGN1cnZlLkZyLnRvUnByTEUoYnVmZkNvZWZmLCAxMiwgblIyKTtcbiAgICAgICAgICAgIGJ1ZmZTZWN0aW9uLnNldChidWZmQ29lZmYsIGNvZWZzUG9zKTtcbiAgICAgICAgICAgIGNvZWZzUG9zICs9IGJ1ZmZDb2VmZi5sZW5ndGg7XG4gICAgICAgIH1cblxuICAgIH1cblxuICAgIGFzeW5jIGZ1bmN0aW9uIGNvbXBvc2VBbmRXcml0ZVBvaW50cyhpZFNlY3Rpb24sIGdyb3VwTmFtZSwgYXJyLCBzZWN0aW9uTmFtZSkge1xuICAgICAgICBjb25zdCBDSFVOS19TSVpFPSAxPDwxNTtcbiAgICAgICAgY29uc3QgRyA9IGN1cnZlW2dyb3VwTmFtZV07XG5cbiAgICAgICAgaGFzaFUzMihhcnIubGVuZ3RoKTtcbiAgICAgICAgYXdhaXQgc3RhcnRXcml0ZVNlY3Rpb24oZmRaS2V5LCBpZFNlY3Rpb24pO1xuXG4gICAgICAgIGxldCBvcFByb21pc2VzID0gW107XG5cbiAgICAgICAgbGV0IGk9MDtcbiAgICAgICAgd2hpbGUgKGk8YXJyLmxlbmd0aCkge1xuXG4gICAgICAgICAgICBsZXQgdD0wO1xuICAgICAgICAgICAgd2hpbGUgKChpPGFyci5sZW5ndGgpJiYodDxjdXJ2ZS50bS5jb25jdXJyZW5jeSkpIHtcbiAgICAgICAgICAgICAgICBpZiAobG9nZ2VyKSAgbG9nZ2VyLmRlYnVnKGBXcml0aW5nIHBvaW50cyBzdGFydCAke3NlY3Rpb25OYW1lfTogJHtpfS8ke2Fyci5sZW5ndGh9YCk7XG4gICAgICAgICAgICAgICAgbGV0IG4gPSAxO1xuICAgICAgICAgICAgICAgIGxldCBuUCA9IChhcnJbaV0gPyBhcnJbaV0ubGVuZ3RoIDogMCk7XG4gICAgICAgICAgICAgICAgd2hpbGUgKChpICsgbiA8IGFyci5sZW5ndGgpICYmIChuUCArIChhcnJbaStuXSA/IGFycltpK25dLmxlbmd0aCA6IDApIDwgQ0hVTktfU0laRSkgJiYgKG48Q0hVTktfU0laRSkpIHtcbiAgICAgICAgICAgICAgICAgICAgblAgKz0gKGFycltpK25dID8gYXJyW2krbl0ubGVuZ3RoIDogMCk7XG4gICAgICAgICAgICAgICAgICAgIG4gKys7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnN0IHN1YkFyciA9IGFyci5zbGljZShpLCBpICsgbik7XG4gICAgICAgICAgICAgICAgY29uc3QgX2kgPSBpO1xuICAgICAgICAgICAgICAgIG9wUHJvbWlzZXMucHVzaChjb21wb3NlQW5kV3JpdGVQb2ludHNUaHJlYWQoZ3JvdXBOYW1lLCBzdWJBcnIsIGxvZ2dlciwgc2VjdGlvbk5hbWUpLnRoZW4oIChyKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChsb2dnZXIpICBsb2dnZXIuZGVidWcoYFdyaXRpbmcgcG9pbnRzIGVuZCAke3NlY3Rpb25OYW1lfTogJHtfaX0vJHthcnIubGVuZ3RofWApO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcjtcbiAgICAgICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICAgICAgaSArPSBuO1xuICAgICAgICAgICAgICAgIHQrKztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgUHJvbWlzZS5hbGwob3BQcm9taXNlcyk7XG5cbiAgICAgICAgICAgIGZvciAobGV0IGs9MDsgazxyZXN1bHQubGVuZ3RoOyBrKyspIHtcbiAgICAgICAgICAgICAgICBhd2FpdCBmZFpLZXkud3JpdGUocmVzdWx0W2tdWzBdKTtcbiAgICAgICAgICAgICAgICBjb25zdCBidWZmID0gYXdhaXQgRy5iYXRjaExFTXRvVShyZXN1bHRba11bMF0pO1xuICAgICAgICAgICAgICAgIGNzSGFzaGVyLnVwZGF0ZShidWZmKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG9wUHJvbWlzZXMgPSBbXTtcblxuICAgICAgICB9XG4gICAgICAgIGF3YWl0IGVuZFdyaXRlU2VjdGlvbihmZFpLZXkpO1xuXG4gICAgfVxuXG4gICAgYXN5bmMgZnVuY3Rpb24gY29tcG9zZUFuZFdyaXRlUG9pbnRzVGhyZWFkKGdyb3VwTmFtZSwgYXJyLCBsb2dnZXIsIHNlY3Rpb25OYW1lKSB7XG4gICAgICAgIGNvbnN0IEcgPSBjdXJ2ZVtncm91cE5hbWVdO1xuICAgICAgICBjb25zdCBzR2luID0gRy5GLm44KjI7XG4gICAgICAgIGNvbnN0IHNHbWlkID0gRy5GLm44KjM7XG4gICAgICAgIGNvbnN0IHNHb3V0ID0gRy5GLm44KjI7XG4gICAgICAgIGxldCBmbkV4cCwgZm5NdWx0aUV4cCwgZm5CYXRjaFRvQWZmaW5lLCBmblplcm87XG4gICAgICAgIGlmIChncm91cE5hbWUgPT0gXCJHMVwiKSB7XG4gICAgICAgICAgICBmbkV4cCA9IFwiZzFtX3RpbWVzU2NhbGFyQWZmaW5lXCI7XG4gICAgICAgICAgICBmbk11bHRpRXhwID0gXCJnMW1fbXVsdGlleHBBZmZpbmVcIjtcbiAgICAgICAgICAgIGZuQmF0Y2hUb0FmZmluZSA9IFwiZzFtX2JhdGNoVG9BZmZpbmVcIjtcbiAgICAgICAgICAgIGZuWmVybyA9IFwiZzFtX3plcm9cIjtcbiAgICAgICAgfSBlbHNlIGlmIChncm91cE5hbWUgPT0gXCJHMlwiKSB7XG4gICAgICAgICAgICBmbkV4cCA9IFwiZzJtX3RpbWVzU2NhbGFyQWZmaW5lXCI7XG4gICAgICAgICAgICBmbk11bHRpRXhwID0gXCJnMm1fbXVsdGlleHBBZmZpbmVcIjtcbiAgICAgICAgICAgIGZuQmF0Y2hUb0FmZmluZSA9IFwiZzJtX2JhdGNoVG9BZmZpbmVcIjtcbiAgICAgICAgICAgIGZuWmVybyA9IFwiZzJtX3plcm9cIjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgZ3JvdXBcIik7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IGFjYyA9MDtcbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPGFyci5sZW5ndGg7IGkrKykgYWNjICs9IGFycltpXSA/IGFycltpXS5sZW5ndGggOiAwO1xuICAgICAgICBsZXQgYkJhc2VzLCBiU2NhbGFycztcbiAgICAgICAgaWYgKGFjYz4gMjw8MTQpIHtcbiAgICAgICAgICAgIGJCYXNlcyA9IG5ldyBCaWdCdWZmZXIoYWNjKnNHaW4pO1xuICAgICAgICAgICAgYlNjYWxhcnMgPSBuZXcgQmlnQnVmZmVyKGFjYypjdXJ2ZS5Gci5uOCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBiQmFzZXMgPSBuZXcgVWludDhBcnJheShhY2Mqc0dpbik7XG4gICAgICAgICAgICBiU2NhbGFycyA9IG5ldyBVaW50OEFycmF5KGFjYypjdXJ2ZS5Gci5uOCk7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IHBCID0wO1xuICAgICAgICBsZXQgcFMgPTA7XG5cbiAgICAgICAgY29uc3Qgc0J1ZmZzID0gW1xuICAgICAgICAgICAgc1RhdUcxLFxuICAgICAgICAgICAgc1RhdUcyLFxuICAgICAgICAgICAgc0FscGhhVGF1RzEsXG4gICAgICAgICAgICBzQmV0YVRhdUcxXG4gICAgICAgIF07XG5cbiAgICAgICAgY29uc3QgYk9uZSA9IG5ldyBVaW50OEFycmF5KGN1cnZlLkZyLm44KTtcbiAgICAgICAgY3VydmUuRnIudG9ScHJMRShiT25lLCAwLCBjdXJ2ZS5Gci5lKDEpKTtcblxuICAgICAgICBsZXQgb2Zmc2V0ID0gMDtcbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPGFyci5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgaWYgKCFhcnJbaV0pIGNvbnRpbnVlO1xuICAgICAgICAgICAgZm9yIChsZXQgaj0wOyBqPGFycltpXS5sZW5ndGg7IGorKykge1xuICAgICAgICAgICAgICAgIGlmICgobG9nZ2VyKSYmKGopJiYoaiUxMDAwMCA9PSAwKSkgIGxvZ2dlci5kZWJ1ZyhgQ29uZmlndXJpbmcgYmlnIGFycmF5ICR7c2VjdGlvbk5hbWV9OiAke2p9LyR7YXJyW2ldLmxlbmd0aH1gKTtcbiAgICAgICAgICAgICAgICBiQmFzZXMuc2V0KFxuICAgICAgICAgICAgICAgICAgICBzQnVmZnNbYXJyW2ldW2pdWzBdXS5zbGljZShcbiAgICAgICAgICAgICAgICAgICAgICAgIGFycltpXVtqXVsxXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGFycltpXVtqXVsxXSArIHNHaW5cbiAgICAgICAgICAgICAgICAgICAgKSwgb2Zmc2V0KnNHaW5cbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIGlmIChhcnJbaV1bal1bMl0+PTApIHtcbiAgICAgICAgICAgICAgICAgICAgYlNjYWxhcnMuc2V0KFxuICAgICAgICAgICAgICAgICAgICAgICAgc1IxY3Muc2xpY2UoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJyW2ldW2pdWzJdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFycltpXVtqXVsyXSArIGN1cnZlLkZyLm44XG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0KmN1cnZlLkZyLm44XG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgYlNjYWxhcnMuc2V0KGJPbmUsIG9mZnNldCpjdXJ2ZS5Gci5uOCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIG9mZnNldCArKztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChhcnIubGVuZ3RoPjEpIHtcbiAgICAgICAgICAgIGNvbnN0IHRhc2sgPSBbXTtcbiAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkFMTE9DU0VUXCIsIHZhcjogMCwgYnVmZjogYkJhc2VzfSk7XG4gICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJBTExPQ1NFVFwiLCB2YXI6IDEsIGJ1ZmY6IGJTY2FsYXJzfSk7XG4gICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJBTExPQ1wiLCB2YXI6IDIsIGxlbjogYXJyLmxlbmd0aCpzR21pZH0pO1xuICAgICAgICAgICAgcEIgPSAwO1xuICAgICAgICAgICAgcFMgPSAwO1xuICAgICAgICAgICAgbGV0IHBEID0wO1xuICAgICAgICAgICAgZm9yIChsZXQgaT0wOyBpPGFyci5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIGlmICghYXJyW2ldKSB7XG4gICAgICAgICAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkNBTExcIiwgZm5OYW1lOiBmblplcm8sIHBhcmFtczogW1xuICAgICAgICAgICAgICAgICAgICAgICAge3ZhcjogMiwgb2Zmc2V0OiBwRH1cbiAgICAgICAgICAgICAgICAgICAgXX0pO1xuICAgICAgICAgICAgICAgICAgICBwRCArPSBzR21pZDtcbiAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChhcnJbaV0ubGVuZ3RoID09IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiQ0FMTFwiLCBmbk5hbWU6IGZuRXhwLCBwYXJhbXM6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHt2YXI6IDAsIG9mZnNldDogcEJ9LFxuICAgICAgICAgICAgICAgICAgICAgICAge3ZhcjogMSwgb2Zmc2V0OiBwU30sXG4gICAgICAgICAgICAgICAgICAgICAgICB7dmFsOiBjdXJ2ZS5Gci5uOH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7dmFyOiAyLCBvZmZzZXQ6IHBEfVxuICAgICAgICAgICAgICAgICAgICBdfSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiQ0FMTFwiLCBmbk5hbWU6IGZuTXVsdGlFeHAsIHBhcmFtczogW1xuICAgICAgICAgICAgICAgICAgICAgICAge3ZhcjogMCwgb2Zmc2V0OiBwQn0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7dmFyOiAxLCBvZmZzZXQ6IHBTfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHt2YWw6IGN1cnZlLkZyLm44fSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHt2YWw6IGFycltpXS5sZW5ndGh9LFxuICAgICAgICAgICAgICAgICAgICAgICAge3ZhcjogMiwgb2Zmc2V0OiBwRH1cbiAgICAgICAgICAgICAgICAgICAgXX0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBwQiArPSBzR2luKmFycltpXS5sZW5ndGg7XG4gICAgICAgICAgICAgICAgcFMgKz0gY3VydmUuRnIubjgqYXJyW2ldLmxlbmd0aDtcbiAgICAgICAgICAgICAgICBwRCArPSBzR21pZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkNBTExcIiwgZm5OYW1lOiBmbkJhdGNoVG9BZmZpbmUsIHBhcmFtczogW1xuICAgICAgICAgICAgICAgIHt2YXI6IDJ9LFxuICAgICAgICAgICAgICAgIHt2YWw6IGFyci5sZW5ndGh9LFxuICAgICAgICAgICAgICAgIHt2YXI6IDJ9LFxuICAgICAgICAgICAgXX0pO1xuICAgICAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiR0VUXCIsIG91dDogMCwgdmFyOiAyLCBsZW46IGFyci5sZW5ndGgqc0dvdXR9KTtcblxuICAgICAgICAgICAgY29uc3QgcmVzID0gYXdhaXQgY3VydmUudG0ucXVldWVBY3Rpb24odGFzayk7XG4gICAgICAgICAgICByZXR1cm4gcmVzO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbGV0IHJlcyA9IGF3YWl0IEcubXVsdGlFeHBBZmZpbmUoYkJhc2VzLCBiU2NhbGFycywgbG9nZ2VyLCBzZWN0aW9uTmFtZSk7XG4gICAgICAgICAgICByZXMgPSBbIEcudG9BZmZpbmUocmVzKSBdO1xuICAgICAgICAgICAgcmV0dXJuIHJlcztcbiAgICAgICAgfVxuICAgIH1cblxuXG4gICAgYXN5bmMgZnVuY3Rpb24gaGFzaEhQb2ludHMoKSB7XG4gICAgICAgIGNvbnN0IENIVU5LX1NJWkUgPSAxPDwxNDtcblxuICAgICAgICBoYXNoVTMyKGRvbWFpblNpemUtMSk7XG5cbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPGRvbWFpblNpemUtMTsgaSs9IENIVU5LX1NJWkUpIHtcbiAgICAgICAgICAgIGlmIChsb2dnZXIpICBsb2dnZXIuZGVidWcoYEhhc2hpbmdIUG9pbnRzOiAke2l9LyR7ZG9tYWluU2l6ZX1gKTtcbiAgICAgICAgICAgIGNvbnN0IG4gPSBNYXRoLm1pbihkb21haW5TaXplLTEsIENIVU5LX1NJWkUpO1xuICAgICAgICAgICAgYXdhaXQgaGFzaEhQb2ludHNDaHVuayhpLCBuKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGFzeW5jIGZ1bmN0aW9uIGhhc2hIUG9pbnRzQ2h1bmsob2Zmc2V0LCBuUG9pbnRzKSB7XG4gICAgICAgIGNvbnN0IGJ1ZmYxID0gYXdhaXQgZmRQVGF1LnJlYWQoblBvaW50cyAqc0cxLCBzZWN0aW9uc1BUYXVbMl1bMF0ucCArIChvZmZzZXQgKyBkb21haW5TaXplKSpzRzEpO1xuICAgICAgICBjb25zdCBidWZmMiA9IGF3YWl0IGZkUFRhdS5yZWFkKG5Qb2ludHMgKnNHMSwgc2VjdGlvbnNQVGF1WzJdWzBdLnAgKyBvZmZzZXQqc0cxKTtcbiAgICAgICAgY29uc3QgY29uY3VycmVuY3k9IGN1cnZlLnRtLmNvbmN1cnJlbmN5O1xuICAgICAgICBjb25zdCBuUG9pbnRzUGVyVGhyZWFkID0gTWF0aC5mbG9vcihuUG9pbnRzIC8gY29uY3VycmVuY3kpO1xuICAgICAgICBjb25zdCBvcFByb21pc2VzID0gW107XG4gICAgICAgIGZvciAobGV0IGk9MDsgaTxjb25jdXJyZW5jeTsgaSsrKSB7XG4gICAgICAgICAgICBsZXQgbjtcbiAgICAgICAgICAgIGlmIChpPCBjb25jdXJyZW5jeS0xKSB7XG4gICAgICAgICAgICAgICAgbiA9IG5Qb2ludHNQZXJUaHJlYWQ7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIG4gPSBuUG9pbnRzIC0gaSpuUG9pbnRzUGVyVGhyZWFkO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG49PTApIGNvbnRpbnVlO1xuXG4gICAgICAgICAgICBjb25zdCBzdWJCdWZmMSA9IGJ1ZmYxLnNsaWNlKGkqblBvaW50c1BlclRocmVhZCpzRzEsIChpKm5Qb2ludHNQZXJUaHJlYWQrbikqc0cxKTtcbiAgICAgICAgICAgIGNvbnN0IHN1YkJ1ZmYyID0gYnVmZjIuc2xpY2UoaSpuUG9pbnRzUGVyVGhyZWFkKnNHMSwgKGkqblBvaW50c1BlclRocmVhZCtuKSpzRzEpO1xuICAgICAgICAgICAgb3BQcm9taXNlcy5wdXNoKGhhc2hIUG9pbnRzVGhyZWFkKHN1YkJ1ZmYxLCBzdWJCdWZmMikpO1xuICAgICAgICB9XG5cblxuICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBQcm9taXNlLmFsbChvcFByb21pc2VzKTtcblxuICAgICAgICBmb3IgKGxldCBpPTA7IGk8cmVzdWx0Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBjc0hhc2hlci51cGRhdGUocmVzdWx0W2ldWzBdKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGFzeW5jIGZ1bmN0aW9uIGhhc2hIUG9pbnRzVGhyZWFkKGJ1ZmYxLCBidWZmMikge1xuICAgICAgICBjb25zdCBuUG9pbnRzID0gYnVmZjEuYnl0ZUxlbmd0aC9zRzE7XG4gICAgICAgIGNvbnN0IHNHbWlkID0gY3VydmUuRzEuRi5uOCozO1xuICAgICAgICBjb25zdCB0YXNrID0gW107XG4gICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkFMTE9DU0VUXCIsIHZhcjogMCwgYnVmZjogYnVmZjF9KTtcbiAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiQUxMT0NTRVRcIiwgdmFyOiAxLCBidWZmOiBidWZmMn0pO1xuICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJBTExPQ1wiLCB2YXI6IDIsIGxlbjogblBvaW50cypzR21pZH0pO1xuICAgICAgICBmb3IgKGxldCBpPTA7IGk8blBvaW50czsgaSsrKSB7XG4gICAgICAgICAgICB0YXNrLnB1c2goe1xuICAgICAgICAgICAgICAgIGNtZDogXCJDQUxMXCIsXG4gICAgICAgICAgICAgICAgZm5OYW1lOiBcImcxbV9zdWJBZmZpbmVcIixcbiAgICAgICAgICAgICAgICBwYXJhbXM6IFtcbiAgICAgICAgICAgICAgICAgICAge3ZhcjogMCwgb2Zmc2V0OiBpKnNHMX0sXG4gICAgICAgICAgICAgICAgICAgIHt2YXI6IDEsIG9mZnNldDogaSpzRzF9LFxuICAgICAgICAgICAgICAgICAgICB7dmFyOiAyLCBvZmZzZXQ6IGkqc0dtaWR9LFxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkNBTExcIiwgZm5OYW1lOiBcImcxbV9iYXRjaFRvQWZmaW5lXCIsIHBhcmFtczogW1xuICAgICAgICAgICAge3ZhcjogMn0sXG4gICAgICAgICAgICB7dmFsOiBuUG9pbnRzfSxcbiAgICAgICAgICAgIHt2YXI6IDJ9LFxuICAgICAgICBdfSk7XG4gICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkNBTExcIiwgZm5OYW1lOiBcImcxbV9iYXRjaExFTXRvVVwiLCBwYXJhbXM6IFtcbiAgICAgICAgICAgIHt2YXI6IDJ9LFxuICAgICAgICAgICAge3ZhbDogblBvaW50c30sXG4gICAgICAgICAgICB7dmFyOiAyfSxcbiAgICAgICAgXX0pO1xuICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJHRVRcIiwgb3V0OiAwLCB2YXI6IDIsIGxlbjogblBvaW50cypzRzF9KTtcblxuICAgICAgICBjb25zdCByZXMgPSBhd2FpdCBjdXJ2ZS50bS5xdWV1ZUFjdGlvbih0YXNrKTtcblxuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGhhc2hVMzIobikge1xuICAgICAgICBjb25zdCBidWZmID0gbmV3IFVpbnQ4QXJyYXkoNCk7XG4gICAgICAgIGNvbnN0IGJ1ZmZWID0gbmV3IERhdGFWaWV3KGJ1ZmYuYnVmZmVyLCBidWZmLmJ5dGVPZmZzZXQsIGJ1ZmYuYnl0ZUxlbmd0aCk7XG4gICAgICAgIGJ1ZmZWLnNldFVpbnQzMigwLCBuLCBmYWxzZSk7XG4gICAgICAgIGNzSGFzaGVyLnVwZGF0ZShidWZmKTtcbiAgICB9XG5cbn1cblxuXG4iLCJcbmltcG9ydCAqIGFzIGJpbkZpbGVVdGlscyBmcm9tIFwiQGlkZW4zL2JpbmZpbGV1dGlsc1wiO1xuaW1wb3J0ICogYXMgemtleVV0aWxzIGZyb20gXCIuL3prZXlfdXRpbHMuanNcIjtcbmltcG9ydCAqIGFzIGZhc3RGaWxlIGZyb20gXCJmYXN0ZmlsZVwiO1xuaW1wb3J0IHsgZ2V0Q3VydmVGcm9tUSBhcyBnZXRDdXJ2ZSB9IGZyb20gXCIuL2N1cnZlcy5qc1wiO1xuXG5leHBvcnQgZGVmYXVsdCBhc3luYyBmdW5jdGlvbiBwaGFzZTJleHBvcnRNUENQYXJhbXMoemtleU5hbWUsIG1wY3BhcmFtc05hbWUsIGxvZ2dlcikge1xuXG4gICAgY29uc3Qge2ZkOiBmZFpLZXksIHNlY3Rpb25zOiBzZWN0aW9uc1pLZXl9ID0gYXdhaXQgYmluRmlsZVV0aWxzLnJlYWRCaW5GaWxlKHprZXlOYW1lLCBcInprZXlcIiwgMik7XG4gICAgY29uc3QgemtleSA9IGF3YWl0IHprZXlVdGlscy5yZWFkSGVhZGVyKGZkWktleSwgc2VjdGlvbnNaS2V5KTtcbiAgICBpZiAoemtleS5wcm90b2NvbCAhPSBcImdyb3RoMTZcIikge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJ6a2V5IGZpbGUgaXMgbm90IGdyb3RoMTZcIik7XG4gICAgfVxuXG4gICAgY29uc3QgY3VydmUgPSBhd2FpdCBnZXRDdXJ2ZSh6a2V5LnEpO1xuICAgIGNvbnN0IHNHMSA9IGN1cnZlLkcxLkYubjgqMjtcbiAgICBjb25zdCBzRzIgPSBjdXJ2ZS5HMi5GLm44KjI7XG5cbiAgICBjb25zdCBtcGNQYXJhbXMgPSBhd2FpdCB6a2V5VXRpbHMucmVhZE1QQ1BhcmFtcyhmZFpLZXksIGN1cnZlLCBzZWN0aW9uc1pLZXkpO1xuXG4gICAgY29uc3QgZmRNUENQYXJhbXMgPSBhd2FpdCBmYXN0RmlsZS5jcmVhdGVPdmVycmlkZShtcGNwYXJhbXNOYW1lKTtcblxuICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuICAgIC8vIFZlcmlmaWNhdGlvbiBLZXkgU2VjdGlvblxuICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuICAgIGF3YWl0IHdyaXRlRzEoemtleS52a19hbHBoYV8xKTtcbiAgICBhd2FpdCB3cml0ZUcxKHprZXkudmtfYmV0YV8xKTtcbiAgICBhd2FpdCB3cml0ZUcyKHprZXkudmtfYmV0YV8yKTtcbiAgICBhd2FpdCB3cml0ZUcyKHprZXkudmtfZ2FtbWFfMik7XG4gICAgYXdhaXQgd3JpdGVHMSh6a2V5LnZrX2RlbHRhXzEpO1xuICAgIGF3YWl0IHdyaXRlRzIoemtleS52a19kZWx0YV8yKTtcblxuICAgIC8vIElDXG4gICAgbGV0IGJ1ZmZCYXNlc0lDO1xuICAgIGJ1ZmZCYXNlc0lDID0gYXdhaXQgYmluRmlsZVV0aWxzLnJlYWRTZWN0aW9uKGZkWktleSwgc2VjdGlvbnNaS2V5LCAzKTtcbiAgICBidWZmQmFzZXNJQyA9IGF3YWl0IGN1cnZlLkcxLmJhdGNoTEVNdG9VKGJ1ZmZCYXNlc0lDKTtcblxuICAgIGF3YWl0IHdyaXRlUG9pbnRBcnJheShcIkcxXCIsIGJ1ZmZCYXNlc0lDKTtcblxuICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuICAgIC8vIGggU2VjdGlvblxuICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuICAgIGNvbnN0IGJ1ZmZCYXNlc0hfTG9kZCA9IGF3YWl0IGJpbkZpbGVVdGlscy5yZWFkU2VjdGlvbihmZFpLZXksIHNlY3Rpb25zWktleSwgOSk7XG5cbiAgICBsZXQgYnVmZkJhc2VzSF9UYXU7XG4gICAgYnVmZkJhc2VzSF9UYXUgPSBhd2FpdCBjdXJ2ZS5HMS5mZnQoYnVmZkJhc2VzSF9Mb2RkLCBcImFmZmluZVwiLCBcImphY29iaWFuXCIsIGxvZ2dlcik7XG4gICAgYnVmZkJhc2VzSF9UYXUgPSBhd2FpdCBjdXJ2ZS5HMS5iYXRjaEFwcGx5S2V5KGJ1ZmZCYXNlc0hfVGF1LCBjdXJ2ZS5Gci5uZWcoY3VydmUuRnIuZSgyKSksIGN1cnZlLkZyLndbemtleS5wb3dlcisxXSwgXCJqYWNvYmlhblwiLCBcImFmZmluZVwiLCBsb2dnZXIpO1xuXG4gICAgLy8gUmVtb3ZlIGxhc3QgZWxlbWVudC4gIChUaGUgZGVncmVlIG9mIEggd2lsbCBiZSBhbHdheXMgbS0yKVxuICAgIGJ1ZmZCYXNlc0hfVGF1ID0gYnVmZkJhc2VzSF9UYXUuc2xpY2UoMCwgYnVmZkJhc2VzSF9UYXUuYnl0ZUxlbmd0aCAtIHNHMSk7XG4gICAgYnVmZkJhc2VzSF9UYXUgPSBhd2FpdCBjdXJ2ZS5HMS5iYXRjaExFTXRvVShidWZmQmFzZXNIX1RhdSk7XG4gICAgYXdhaXQgd3JpdGVQb2ludEFycmF5KFwiRzFcIiwgYnVmZkJhc2VzSF9UYXUpO1xuXG4gICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4gICAgLy8gTCBzZWN0aW9uXG4gICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4gICAgbGV0IGJ1ZmZCYXNlc0M7XG4gICAgYnVmZkJhc2VzQyA9IGF3YWl0IGJpbkZpbGVVdGlscy5yZWFkU2VjdGlvbihmZFpLZXksIHNlY3Rpb25zWktleSwgOCk7XG4gICAgYnVmZkJhc2VzQyA9IGF3YWl0IGN1cnZlLkcxLmJhdGNoTEVNdG9VKGJ1ZmZCYXNlc0MpO1xuICAgIGF3YWl0IHdyaXRlUG9pbnRBcnJheShcIkcxXCIsIGJ1ZmZCYXNlc0MpO1xuXG4gICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4gICAgLy8gQSBTZWN0aW9uIChDIHNlY3Rpb24pXG4gICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4gICAgbGV0IGJ1ZmZCYXNlc0E7XG4gICAgYnVmZkJhc2VzQSA9IGF3YWl0IGJpbkZpbGVVdGlscy5yZWFkU2VjdGlvbihmZFpLZXksIHNlY3Rpb25zWktleSwgNSk7XG4gICAgYnVmZkJhc2VzQSA9IGF3YWl0IGN1cnZlLkcxLmJhdGNoTEVNdG9VKGJ1ZmZCYXNlc0EpO1xuICAgIGF3YWl0IHdyaXRlUG9pbnRBcnJheShcIkcxXCIsIGJ1ZmZCYXNlc0EpO1xuXG4gICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4gICAgLy8gQjEgU2VjdGlvblxuICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuICAgIGxldCBidWZmQmFzZXNCMTtcbiAgICBidWZmQmFzZXNCMSA9IGF3YWl0IGJpbkZpbGVVdGlscy5yZWFkU2VjdGlvbihmZFpLZXksIHNlY3Rpb25zWktleSwgNik7XG4gICAgYnVmZkJhc2VzQjEgPSBhd2FpdCBjdXJ2ZS5HMS5iYXRjaExFTXRvVShidWZmQmFzZXNCMSk7XG4gICAgYXdhaXQgd3JpdGVQb2ludEFycmF5KFwiRzFcIiwgYnVmZkJhc2VzQjEpO1xuXG4gICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4gICAgLy8gQjIgU2VjdGlvblxuICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuICAgIGxldCBidWZmQmFzZXNCMjtcbiAgICBidWZmQmFzZXNCMiA9IGF3YWl0IGJpbkZpbGVVdGlscy5yZWFkU2VjdGlvbihmZFpLZXksIHNlY3Rpb25zWktleSwgNyk7XG4gICAgYnVmZkJhc2VzQjIgPSBhd2FpdCBjdXJ2ZS5HMi5iYXRjaExFTXRvVShidWZmQmFzZXNCMik7XG4gICAgYXdhaXQgd3JpdGVQb2ludEFycmF5KFwiRzJcIiwgYnVmZkJhc2VzQjIpO1xuXG4gICAgYXdhaXQgZmRNUENQYXJhbXMud3JpdGUobXBjUGFyYW1zLmNzSGFzaCk7XG4gICAgYXdhaXQgd3JpdGVVMzIobXBjUGFyYW1zLmNvbnRyaWJ1dGlvbnMubGVuZ3RoKTtcblxuICAgIGZvciAobGV0IGk9MDsgaTxtcGNQYXJhbXMuY29udHJpYnV0aW9ucy5sZW5ndGg7IGkrKykge1xuICAgICAgICBjb25zdCBjID0gbXBjUGFyYW1zLmNvbnRyaWJ1dGlvbnNbaV07XG4gICAgICAgIGF3YWl0IHdyaXRlRzEoYy5kZWx0YUFmdGVyKTtcbiAgICAgICAgYXdhaXQgd3JpdGVHMShjLmRlbHRhLmcxX3MpO1xuICAgICAgICBhd2FpdCB3cml0ZUcxKGMuZGVsdGEuZzFfc3gpO1xuICAgICAgICBhd2FpdCB3cml0ZUcyKGMuZGVsdGEuZzJfc3B4KTtcbiAgICAgICAgYXdhaXQgZmRNUENQYXJhbXMud3JpdGUoYy50cmFuc2NyaXB0KTtcbiAgICB9XG5cbiAgICBhd2FpdCBmZFpLZXkuY2xvc2UoKTtcbiAgICBhd2FpdCBmZE1QQ1BhcmFtcy5jbG9zZSgpO1xuXG4gICAgYXN5bmMgZnVuY3Rpb24gd3JpdGVHMShQKSB7XG4gICAgICAgIGNvbnN0IGJ1ZmYgPSBuZXcgVWludDhBcnJheShzRzEpO1xuICAgICAgICBjdXJ2ZS5HMS50b1JwclVuY29tcHJlc3NlZChidWZmLCAwLCBQKTtcbiAgICAgICAgYXdhaXQgZmRNUENQYXJhbXMud3JpdGUoYnVmZik7XG4gICAgfVxuXG4gICAgYXN5bmMgZnVuY3Rpb24gd3JpdGVHMihQKSB7XG4gICAgICAgIGNvbnN0IGJ1ZmYgPSBuZXcgVWludDhBcnJheShzRzIpO1xuICAgICAgICBjdXJ2ZS5HMi50b1JwclVuY29tcHJlc3NlZChidWZmLCAwLCBQKTtcbiAgICAgICAgYXdhaXQgZmRNUENQYXJhbXMud3JpdGUoYnVmZik7XG4gICAgfVxuXG4gICAgYXN5bmMgZnVuY3Rpb24gd3JpdGVQb2ludEFycmF5KGdyb3VwTmFtZSwgYnVmZikge1xuICAgICAgICBsZXQgc0c7XG4gICAgICAgIGlmIChncm91cE5hbWUgPT0gXCJHMVwiKSB7XG4gICAgICAgICAgICBzRyA9IHNHMTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHNHID0gc0cyO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgYnVmZlNpemUgPSBuZXcgVWludDhBcnJheSg0KTtcbiAgICAgICAgY29uc3QgYnVmZlNpemVWID0gbmV3IERhdGFWaWV3KGJ1ZmZTaXplLmJ1ZmZlciwgYnVmZlNpemUuYnl0ZU9mZnNldCwgYnVmZlNpemUuYnl0ZUxlbmd0aCk7XG4gICAgICAgIGJ1ZmZTaXplVi5zZXRVaW50MzIoMCwgYnVmZi5ieXRlTGVuZ3RoIC8gc0csIGZhbHNlKTtcblxuICAgICAgICBhd2FpdCBmZE1QQ1BhcmFtcy53cml0ZShidWZmU2l6ZSk7XG4gICAgICAgIGF3YWl0IGZkTVBDUGFyYW1zLndyaXRlKGJ1ZmYpO1xuICAgIH1cblxuICAgIGFzeW5jIGZ1bmN0aW9uIHdyaXRlVTMyKG4pIHtcbiAgICAgICAgY29uc3QgYnVmZlNpemUgPSBuZXcgVWludDhBcnJheSg0KTtcbiAgICAgICAgY29uc3QgYnVmZlNpemVWID0gbmV3IERhdGFWaWV3KGJ1ZmZTaXplLmJ1ZmZlciwgYnVmZlNpemUuYnl0ZU9mZnNldCwgYnVmZlNpemUuYnl0ZUxlbmd0aCk7XG4gICAgICAgIGJ1ZmZTaXplVi5zZXRVaW50MzIoMCwgbiwgZmFsc2UpO1xuXG4gICAgICAgIGF3YWl0IGZkTVBDUGFyYW1zLndyaXRlKGJ1ZmZTaXplKTtcbiAgICB9XG5cblxuXG59XG4iLCIvKlxuICAgIENvcHlyaWdodCAyMDE4IDBLSU1TIGFzc29jaWF0aW9uLlxuXG4gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2Ygc25hcmtKUy5cblxuICAgIHNuYXJrSlMgaXMgYSBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0XG4gICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxuICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG5cbiAgICBzbmFya0pTIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUXG4gICAgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZXG4gICAgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljXG4gICAgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuXG4gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAgICBhbG9uZyB3aXRoIHNuYXJrSlMuIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXG4qL1xuXG5pbXBvcnQgKiBhcyB6a2V5VXRpbHMgZnJvbSBcIi4vemtleV91dGlscy5qc1wiO1xuaW1wb3J0ICogYXMgYmluRmlsZVV0aWxzIGZyb20gXCJAaWRlbjMvYmluZmlsZXV0aWxzXCI7XG5pbXBvcnQgKiBhcyBmYXN0RmlsZSBmcm9tIFwiZmFzdGZpbGVcIjtcbmltcG9ydCB7IGdldEN1cnZlRnJvbVEgYXMgZ2V0Q3VydmUgfSBmcm9tIFwiLi9jdXJ2ZXMuanNcIjtcbmltcG9ydCAqIGFzIG1pc2MgZnJvbSBcIi4vbWlzYy5qc1wiO1xuXG5leHBvcnQgZGVmYXVsdCBhc3luYyBmdW5jdGlvbiBwaGFzZTJpbXBvcnRNUENQYXJhbXMoemtleU5hbWVPbGQsIG1wY3BhcmFtc05hbWUsIHprZXlOYW1lTmV3LCBuYW1lLCBsb2dnZXIpIHtcblxuICAgIGNvbnN0IHtmZDogZmRaS2V5T2xkLCBzZWN0aW9uczogc2VjdGlvbnNaS2V5T2xkfSA9IGF3YWl0IGJpbkZpbGVVdGlscy5yZWFkQmluRmlsZSh6a2V5TmFtZU9sZCwgXCJ6a2V5XCIsIDIpO1xuICAgIGNvbnN0IHprZXlIZWFkZXIgPSBhd2FpdCB6a2V5VXRpbHMucmVhZEhlYWRlcihmZFpLZXlPbGQsIHNlY3Rpb25zWktleU9sZCwgZmFsc2UpO1xuICAgIGlmICh6a2V5SGVhZGVyLnByb3RvY29sICE9IFwiZ3JvdGgxNlwiKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcInprZXkgZmlsZSBpcyBub3QgZ3JvdGgxNlwiKTtcbiAgICB9XG5cbiAgICBjb25zdCBjdXJ2ZSA9IGF3YWl0IGdldEN1cnZlKHprZXlIZWFkZXIucSk7XG4gICAgY29uc3Qgc0cxID0gY3VydmUuRzEuRi5uOCoyO1xuICAgIGNvbnN0IHNHMiA9IGN1cnZlLkcyLkYubjgqMjtcblxuICAgIGNvbnN0IG9sZE1QQ1BhcmFtcyA9IGF3YWl0IHprZXlVdGlscy5yZWFkTVBDUGFyYW1zKGZkWktleU9sZCwgY3VydmUsIHNlY3Rpb25zWktleU9sZCk7XG4gICAgY29uc3QgbmV3TVBDUGFyYW1zID0ge307XG5cbiAgICBjb25zdCBmZE1QQ1BhcmFtcyA9IGF3YWl0IGZhc3RGaWxlLnJlYWRFeGlzdGluZyhtcGNwYXJhbXNOYW1lKTtcblxuICAgIGZkTVBDUGFyYW1zLnBvcyA9XG4gICAgICAgIHNHMSozICsgc0cyKjMgKyAgICAgICAgICAgICAgICAgICAgIC8vIHZLZXlcbiAgICAgICAgOCArIHNHMSp6a2V5SGVhZGVyLm5WYXJzICsgICAgICAgICAgICAgIC8vIElDICsgQ1xuICAgICAgICA0ICsgc0cxKih6a2V5SGVhZGVyLmRvbWFpblNpemUtMSkgKyAgICAgLy8gSFxuICAgICAgICA0ICsgc0cxKnprZXlIZWFkZXIublZhcnMgKyAgICAgICAgICAgICAgLy8gQVxuICAgICAgICA0ICsgc0cxKnprZXlIZWFkZXIublZhcnMgKyAgICAgICAgICAgICAgLy8gQjFcbiAgICAgICAgNCArIHNHMip6a2V5SGVhZGVyLm5WYXJzOyAgICAgICAgICAgICAgIC8vIEIyXG5cbiAgICAvLyBjc0hhc2hcbiAgICBuZXdNUENQYXJhbXMuY3NIYXNoID0gIGF3YWl0IGZkTVBDUGFyYW1zLnJlYWQoNjQpO1xuXG4gICAgY29uc3QgbkNvbnRyaWJ1dGlvbnMgPSBhd2FpdCBmZE1QQ1BhcmFtcy5yZWFkVUJFMzIoKTtcbiAgICBuZXdNUENQYXJhbXMuY29udHJpYnV0aW9ucyA9IFtdO1xuICAgIGZvciAobGV0IGk9MDsgaTxuQ29udHJpYnV0aW9uczsgaSsrKSB7XG4gICAgICAgIGNvbnN0IGMgPSB7IGRlbHRhOnt9IH07XG4gICAgICAgIGMuZGVsdGFBZnRlciA9IGF3YWl0IHJlYWRHMShmZE1QQ1BhcmFtcyk7XG4gICAgICAgIGMuZGVsdGEuZzFfcyA9IGF3YWl0IHJlYWRHMShmZE1QQ1BhcmFtcyk7XG4gICAgICAgIGMuZGVsdGEuZzFfc3ggPSBhd2FpdCByZWFkRzEoZmRNUENQYXJhbXMpO1xuICAgICAgICBjLmRlbHRhLmcyX3NweCA9IGF3YWl0IHJlYWRHMihmZE1QQ1BhcmFtcyk7XG4gICAgICAgIGMudHJhbnNjcmlwdCA9IGF3YWl0IGZkTVBDUGFyYW1zLnJlYWQoNjQpO1xuICAgICAgICBpZiAoaTxvbGRNUENQYXJhbXMuY29udHJpYnV0aW9ucy5sZW5ndGgpIHtcbiAgICAgICAgICAgIGMudHlwZSA9IG9sZE1QQ1BhcmFtcy5jb250cmlidXRpb25zW2ldLnR5cGU7XG4gICAgICAgICAgICBpZiAoYy50eXBlPT0xKSB7XG4gICAgICAgICAgICAgICAgYy5iZWFjb25IYXNoID0gb2xkTVBDUGFyYW1zLmNvbnRyaWJ1dGlvbnNbaV0uYmVhY29uSGFzaDtcbiAgICAgICAgICAgICAgICBjLm51bUl0ZXJhdGlvbnNFeHAgPSBvbGRNUENQYXJhbXMuY29udHJpYnV0aW9uc1tpXS5udW1JdGVyYXRpb25zRXhwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG9sZE1QQ1BhcmFtcy5jb250cmlidXRpb25zW2ldLm5hbWUpIHtcbiAgICAgICAgICAgICAgICBjLm5hbWUgPSBvbGRNUENQYXJhbXMuY29udHJpYnV0aW9uc1tpXS5uYW1lO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIG5ld01QQ1BhcmFtcy5jb250cmlidXRpb25zLnB1c2goYyk7XG4gICAgfVxuXG4gICAgaWYgKCFtaXNjLmhhc2hJc0VxdWFsKG5ld01QQ1BhcmFtcy5jc0hhc2gsIG9sZE1QQ1BhcmFtcy5jc0hhc2gpKSB7XG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5lcnJvcihcIkhhc2ggb2YgdGhlIG9yaWdpbmFsIGNpcmN1aXQgZG9lcyBub3QgbWF0Y2ggd2l0aCB0aGUgTVBDIG9uZVwiKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGlmIChvbGRNUENQYXJhbXMuY29udHJpYnV0aW9ucy5sZW5ndGggPiBuZXdNUENQYXJhbXMuY29udHJpYnV0aW9ucy5sZW5ndGgpIHtcbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmVycm9yKFwiVGhlIGltcG9lcnRlZCBmaWxlIGRvZXMgbm90IGluY2x1ZGUgbmV3IGNvbnRyaWJ1dGlvbnNcIik7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBmb3IgKGxldCBpPTA7IGk8b2xkTVBDUGFyYW1zLmNvbnRyaWJ1dGlvbnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgaWYgKCFjb250cmlidXRpb25Jc0VxdWFsKG9sZE1QQ1BhcmFtcy5jb250cmlidXRpb25zW2ldLCBuZXdNUENQYXJhbXMuY29udHJpYnV0aW9uc1tpXSkpIHtcbiAgICAgICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5lcnJvcihgUHJldmlvdXMgY29udHJpYnV0aW9uICR7aX0gZG9lcyBub3QgbWF0Y2hgKTtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cblxuXG4gICAgLy8gU2V0IHRoZSBzYW1lIG5hbWUgdG8gYWxsIG5ldyBjb250cmlidXRpb25zXG4gICAgaWYgKG5hbWUpIHtcbiAgICAgICAgZm9yIChsZXQgaT1vbGRNUENQYXJhbXMuY29udHJpYnV0aW9ucy5sZW5ndGg7IGk8bmV3TVBDUGFyYW1zLmNvbnRyaWJ1dGlvbnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIG5ld01QQ1BhcmFtcy5jb250cmlidXRpb25zW2ldLm5hbWUgPSBuYW1lO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgZmRaS2V5TmV3ID0gYXdhaXQgYmluRmlsZVV0aWxzLmNyZWF0ZUJpbkZpbGUoemtleU5hbWVOZXcsIFwiemtleVwiLCAxLCAxMCk7XG4gICAgZmRNUENQYXJhbXMucG9zID0gMDtcblxuICAgIC8vIEhlYWRlclxuICAgIGZkTVBDUGFyYW1zLnBvcyArPSBzRzE7ICAvLyBpZ25vcmUgYWxwaGExIChrZWVwIG9yaWdpbmFsKVxuICAgIGZkTVBDUGFyYW1zLnBvcyArPSBzRzE7ICAvLyBpZ25vcmUgYmV0YTFcbiAgICBmZE1QQ1BhcmFtcy5wb3MgKz0gc0cyOyAgLy8gaWdub3JlIGJldGEyXG4gICAgZmRNUENQYXJhbXMucG9zICs9IHNHMjsgIC8vIGlnbm9yZSBnYW1tYTJcbiAgICB6a2V5SGVhZGVyLnZrX2RlbHRhXzEgPSBhd2FpdCByZWFkRzEoZmRNUENQYXJhbXMpO1xuICAgIHprZXlIZWFkZXIudmtfZGVsdGFfMiA9IGF3YWl0IHJlYWRHMihmZE1QQ1BhcmFtcyk7XG4gICAgYXdhaXQgemtleVV0aWxzLndyaXRlSGVhZGVyKGZkWktleU5ldywgemtleUhlYWRlcik7XG5cbiAgICAvLyBJQyAoS2VlcCBvcmlnaW5hbClcbiAgICBjb25zdCBuSUMgPSBhd2FpdCBmZE1QQ1BhcmFtcy5yZWFkVUJFMzIoKTtcbiAgICBpZiAobklDICE9IHprZXlIZWFkZXIublB1YmxpYyArMSkge1xuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZXJyb3IoXCJJbnZhbGlkIG51bWJlciBvZiBwb2ludHMgaW4gSUNcIik7XG4gICAgICAgIGF3YWl0IGZkWktleU5ldy5kaXNjYXJkKCk7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgZmRNUENQYXJhbXMucG9zICs9IHNHMSooemtleUhlYWRlci5uUHVibGljKzEpO1xuICAgIGF3YWl0IGJpbkZpbGVVdGlscy5jb3B5U2VjdGlvbihmZFpLZXlPbGQsIHNlY3Rpb25zWktleU9sZCwgZmRaS2V5TmV3LCAzKTtcblxuICAgIC8vIENvZWZmcyAoS2VlcCBvcmlnaW5hbClcbiAgICBhd2FpdCBiaW5GaWxlVXRpbHMuY29weVNlY3Rpb24oZmRaS2V5T2xkLCBzZWN0aW9uc1pLZXlPbGQsIGZkWktleU5ldywgNCk7XG5cbiAgICAvLyBIIFNlY3Rpb25cbiAgICBjb25zdCBuSCA9IGF3YWl0IGZkTVBDUGFyYW1zLnJlYWRVQkUzMigpO1xuICAgIGlmIChuSCAhPSB6a2V5SGVhZGVyLmRvbWFpblNpemUtMSkge1xuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZXJyb3IoXCJJbnZhbGlkIG51bWJlciBvZiBwb2ludHMgaW4gSFwiKTtcbiAgICAgICAgYXdhaXQgZmRaS2V5TmV3LmRpc2NhcmQoKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBsZXQgYnVmZkg7XG4gICAgY29uc3QgYnVmZlRhdVUgPSBhd2FpdCBmZE1QQ1BhcmFtcy5yZWFkKHNHMSooemtleUhlYWRlci5kb21haW5TaXplLTEpKTtcbiAgICBjb25zdCBidWZmVGF1TEVNID0gYXdhaXQgY3VydmUuRzEuYmF0Y2hVdG9MRU0oYnVmZlRhdVUpO1xuICAgIGJ1ZmZIID0gbmV3IFVpbnQ4QXJyYXkoemtleUhlYWRlci5kb21haW5TaXplKnNHMSk7XG4gICAgYnVmZkguc2V0KGJ1ZmZUYXVMRU0pOyAgIC8vIExldCB0aGUgbGFzdCBvbmUgdG8gemVyby5cbiAgICBjdXJ2ZS5HMS50b1JwckxFTShidWZmSCwgc0cxKih6a2V5SGVhZGVyLmRvbWFpblNpemUtMSksIGN1cnZlLkcxLnplcm9BZmZpbmUpO1xuICAgIGNvbnN0IG4ySW52ID0gY3VydmUuRnIubmVnKGN1cnZlLkZyLmludihjdXJ2ZS5Gci5lKDIpKSk7XG4gICAgY29uc3Qgd0ludiA9IGN1cnZlLkZyLmludihjdXJ2ZS5Gci53W3prZXlIZWFkZXIucG93ZXIrMV0pO1xuICAgIGJ1ZmZIID0gYXdhaXQgY3VydmUuRzEuYmF0Y2hBcHBseUtleShidWZmSCwgbjJJbnYsIHdJbnYsIFwiYWZmaW5lXCIsIFwiamFjb2JpYW5cIiwgbG9nZ2VyKTtcbiAgICBidWZmSCA9IGF3YWl0IGN1cnZlLkcxLmlmZnQoYnVmZkgsIFwiamFjb2JpYW5cIiwgXCJhZmZpbmVcIiwgbG9nZ2VyKTtcbiAgICBhd2FpdCBiaW5GaWxlVXRpbHMuc3RhcnRXcml0ZVNlY3Rpb24oZmRaS2V5TmV3LCA5KTtcbiAgICBhd2FpdCBmZFpLZXlOZXcud3JpdGUoYnVmZkgpO1xuICAgIGF3YWl0IGJpbkZpbGVVdGlscy5lbmRXcml0ZVNlY3Rpb24oZmRaS2V5TmV3KTtcblxuICAgIC8vIEMgU2VjdGlvbiAoTCBzZWN0aW9uKVxuICAgIGNvbnN0IG5MID0gYXdhaXQgZmRNUENQYXJhbXMucmVhZFVCRTMyKCk7XG4gICAgaWYgKG5MICE9ICh6a2V5SGVhZGVyLm5WYXJzLXprZXlIZWFkZXIublB1YmxpYy0xKSkge1xuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZXJyb3IoXCJJbnZhbGlkIG51bWJlciBvZiBwb2ludHMgaW4gTFwiKTtcbiAgICAgICAgYXdhaXQgZmRaS2V5TmV3LmRpc2NhcmQoKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBsZXQgYnVmZkw7XG4gICAgYnVmZkwgPSBhd2FpdCBmZE1QQ1BhcmFtcy5yZWFkKHNHMSooemtleUhlYWRlci5uVmFycy16a2V5SGVhZGVyLm5QdWJsaWMtMSkpO1xuICAgIGJ1ZmZMID0gYXdhaXQgY3VydmUuRzEuYmF0Y2hVdG9MRU0oYnVmZkwpO1xuICAgIGF3YWl0IGJpbkZpbGVVdGlscy5zdGFydFdyaXRlU2VjdGlvbihmZFpLZXlOZXcsIDgpO1xuICAgIGF3YWl0IGZkWktleU5ldy53cml0ZShidWZmTCk7XG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLmVuZFdyaXRlU2VjdGlvbihmZFpLZXlOZXcpO1xuXG4gICAgLy8gQSBTZWN0aW9uXG4gICAgY29uc3QgbkEgPSBhd2FpdCBmZE1QQ1BhcmFtcy5yZWFkVUJFMzIoKTtcbiAgICBpZiAobkEgIT0gemtleUhlYWRlci5uVmFycykge1xuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZXJyb3IoXCJJbnZhbGlkIG51bWJlciBvZiBwb2ludHMgaW4gQVwiKTtcbiAgICAgICAgYXdhaXQgZmRaS2V5TmV3LmRpc2NhcmQoKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBmZE1QQ1BhcmFtcy5wb3MgKz0gc0cxKih6a2V5SGVhZGVyLm5WYXJzKTtcbiAgICBhd2FpdCBiaW5GaWxlVXRpbHMuY29weVNlY3Rpb24oZmRaS2V5T2xkLCBzZWN0aW9uc1pLZXlPbGQsIGZkWktleU5ldywgNSk7XG5cbiAgICAvLyBCMSBTZWN0aW9uXG4gICAgY29uc3QgbkIxID0gYXdhaXQgZmRNUENQYXJhbXMucmVhZFVCRTMyKCk7XG4gICAgaWYgKG5CMSAhPSB6a2V5SGVhZGVyLm5WYXJzKSB7XG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5lcnJvcihcIkludmFsaWQgbnVtYmVyIG9mIHBvaW50cyBpbiBCMVwiKTtcbiAgICAgICAgYXdhaXQgZmRaS2V5TmV3LmRpc2NhcmQoKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBmZE1QQ1BhcmFtcy5wb3MgKz0gc0cxKih6a2V5SGVhZGVyLm5WYXJzKTtcbiAgICBhd2FpdCBiaW5GaWxlVXRpbHMuY29weVNlY3Rpb24oZmRaS2V5T2xkLCBzZWN0aW9uc1pLZXlPbGQsIGZkWktleU5ldywgNik7XG5cbiAgICAvLyBCMiBTZWN0aW9uXG4gICAgY29uc3QgbkIyID0gYXdhaXQgZmRNUENQYXJhbXMucmVhZFVCRTMyKCk7XG4gICAgaWYgKG5CMiAhPSB6a2V5SGVhZGVyLm5WYXJzKSB7XG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5lcnJvcihcIkludmFsaWQgbnVtYmVyIG9mIHBvaW50cyBpbiBCMlwiKTtcbiAgICAgICAgYXdhaXQgZmRaS2V5TmV3LmRpc2NhcmQoKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBmZE1QQ1BhcmFtcy5wb3MgKz0gc0cyKih6a2V5SGVhZGVyLm5WYXJzKTtcbiAgICBhd2FpdCBiaW5GaWxlVXRpbHMuY29weVNlY3Rpb24oZmRaS2V5T2xkLCBzZWN0aW9uc1pLZXlPbGQsIGZkWktleU5ldywgNyk7XG5cbiAgICBhd2FpdCB6a2V5VXRpbHMud3JpdGVNUENQYXJhbXMoZmRaS2V5TmV3LCBjdXJ2ZSwgbmV3TVBDUGFyYW1zKTtcblxuICAgIGF3YWl0IGZkTVBDUGFyYW1zLmNsb3NlKCk7XG4gICAgYXdhaXQgZmRaS2V5TmV3LmNsb3NlKCk7XG4gICAgYXdhaXQgZmRaS2V5T2xkLmNsb3NlKCk7XG5cbiAgICByZXR1cm4gdHJ1ZTtcblxuICAgIGFzeW5jIGZ1bmN0aW9uIHJlYWRHMShmZCkge1xuICAgICAgICBjb25zdCBidWZmID0gYXdhaXQgZmQucmVhZChjdXJ2ZS5HMS5GLm44KjIpO1xuICAgICAgICByZXR1cm4gY3VydmUuRzEuZnJvbVJwclVuY29tcHJlc3NlZChidWZmLCAwKTtcbiAgICB9XG5cbiAgICBhc3luYyBmdW5jdGlvbiByZWFkRzIoZmQpIHtcbiAgICAgICAgY29uc3QgYnVmZiA9IGF3YWl0IGZkLnJlYWQoY3VydmUuRzIuRi5uOCoyKTtcbiAgICAgICAgcmV0dXJuIGN1cnZlLkcyLmZyb21ScHJVbmNvbXByZXNzZWQoYnVmZiwgMCk7XG4gICAgfVxuXG5cbiAgICBmdW5jdGlvbiBjb250cmlidXRpb25Jc0VxdWFsKGMxLCBjMikge1xuICAgICAgICBpZiAoIWN1cnZlLkcxLmVxKGMxLmRlbHRhQWZ0ZXIgICAsIGMyLmRlbHRhQWZ0ZXIpKSByZXR1cm4gZmFsc2U7XG4gICAgICAgIGlmICghY3VydmUuRzEuZXEoYzEuZGVsdGEuZzFfcyAgICwgYzIuZGVsdGEuZzFfcykpIHJldHVybiBmYWxzZTtcbiAgICAgICAgaWYgKCFjdXJ2ZS5HMS5lcShjMS5kZWx0YS5nMV9zeCAgLCBjMi5kZWx0YS5nMV9zeCkpIHJldHVybiBmYWxzZTtcbiAgICAgICAgaWYgKCFjdXJ2ZS5HMi5lcShjMS5kZWx0YS5nMl9zcHggLCBjMi5kZWx0YS5nMl9zcHgpKSByZXR1cm4gZmFsc2U7XG4gICAgICAgIGlmICghbWlzYy5oYXNoSXNFcXVhbChjMS50cmFuc2NyaXB0LCBjMi50cmFuc2NyaXB0KSkgcmV0dXJuIGZhbHNlO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cblxufVxuXG4iLCIvKlxuICAgIENvcHlyaWdodCAyMDE4IDBLSU1TIGFzc29jaWF0aW9uLlxuXG4gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2Ygc25hcmtKUy5cblxuICAgIHNuYXJrSlMgaXMgYSBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0XG4gICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxuICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG5cbiAgICBzbmFya0pTIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUXG4gICAgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZXG4gICAgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljXG4gICAgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuXG4gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAgICBhbG9uZyB3aXRoIHNuYXJrSlMuIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXG4qL1xuXG5pbXBvcnQgKiBhcyBiaW5GaWxlVXRpbHMgZnJvbSBcIkBpZGVuMy9iaW5maWxldXRpbHNcIjtcbmltcG9ydCAqIGFzIHprZXlVdGlscyBmcm9tIFwiLi96a2V5X3V0aWxzLmpzXCI7XG5pbXBvcnQgeyBnZXRDdXJ2ZUZyb21RIGFzIGdldEN1cnZlIH0gZnJvbSBcIi4vY3VydmVzLmpzXCI7XG5pbXBvcnQgQmxha2UyYiBmcm9tIFwiYmxha2UyYi13YXNtXCI7XG5pbXBvcnQgKiBhcyBtaXNjIGZyb20gXCIuL21pc2MuanNcIjtcbmltcG9ydCB7IGhhc2hUb0cyIGFzIGhhc2hUb0cyIH0gZnJvbSBcIi4va2V5cGFpci5qc1wiO1xuY29uc3Qgc2FtZVJhdGlvID0gbWlzYy5zYW1lUmF0aW87XG5pbXBvcnQge2hhc2hHMSwgaGFzaFB1YktleX0gZnJvbSBcIi4vemtleV91dGlscy5qc1wiO1xuaW1wb3J0IHsgU2NhbGFyLCBDaGFDaGEsIEJpZ0J1ZmZlciB9IGZyb20gXCJmZmphdmFzY3JpcHRcIjtcblxuXG5cbmV4cG9ydCBkZWZhdWx0IGFzeW5jIGZ1bmN0aW9uIHBoYXNlMnZlcmlmeUZyb21Jbml0KGluaXRGaWxlTmFtZSwgcFRhdUZpbGVOYW1lLCB6a2V5RmlsZU5hbWUsIGxvZ2dlcikge1xuXG4gICAgbGV0IHNyO1xuICAgIGF3YWl0IEJsYWtlMmIucmVhZHkoKTtcblxuICAgIGNvbnN0IHtmZCwgc2VjdGlvbnN9ID0gYXdhaXQgYmluRmlsZVV0aWxzLnJlYWRCaW5GaWxlKHprZXlGaWxlTmFtZSwgXCJ6a2V5XCIsIDIpO1xuICAgIGNvbnN0IHprZXkgPSBhd2FpdCB6a2V5VXRpbHMucmVhZEhlYWRlcihmZCwgc2VjdGlvbnMsIGZhbHNlKTtcbiAgICBpZiAoemtleS5wcm90b2NvbCAhPSBcImdyb3RoMTZcIikge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJ6a2V5IGZpbGUgaXMgbm90IGdyb3RoMTZcIik7XG4gICAgfVxuXG4gICAgY29uc3QgY3VydmUgPSBhd2FpdCBnZXRDdXJ2ZSh6a2V5LnEpO1xuICAgIGNvbnN0IHNHMSA9IGN1cnZlLkcxLkYubjgqMjtcblxuICAgIGNvbnN0IG1wY1BhcmFtcyA9IGF3YWl0IHprZXlVdGlscy5yZWFkTVBDUGFyYW1zKGZkLCBjdXJ2ZSwgc2VjdGlvbnMpO1xuXG4gICAgY29uc3QgYWNjdW11bGF0ZWRIYXNoZXIgPSBCbGFrZTJiKDY0KTtcbiAgICBhY2N1bXVsYXRlZEhhc2hlci51cGRhdGUobXBjUGFyYW1zLmNzSGFzaCk7XG4gICAgbGV0IGN1ckRlbHRhID0gY3VydmUuRzEuZztcbiAgICBmb3IgKGxldCBpPTA7IGk8bXBjUGFyYW1zLmNvbnRyaWJ1dGlvbnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgY29uc3QgYyA9IG1wY1BhcmFtcy5jb250cmlidXRpb25zW2ldO1xuICAgICAgICBjb25zdCBvdXJIYXNoZXIgPSBtaXNjLmNsb25lSGFzaGVyKGFjY3VtdWxhdGVkSGFzaGVyKTtcblxuICAgICAgICBoYXNoRzEob3VySGFzaGVyLCBjdXJ2ZSwgYy5kZWx0YS5nMV9zKTtcbiAgICAgICAgaGFzaEcxKG91ckhhc2hlciwgY3VydmUsIGMuZGVsdGEuZzFfc3gpO1xuXG4gICAgICAgIGlmICghbWlzYy5oYXNoSXNFcXVhbChvdXJIYXNoZXIuZGlnZXN0KCksIGMudHJhbnNjcmlwdCkpIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGBJTlZBTElEKCR7aX0pOiBJbmNvbnNpc3RlbnQgdHJhbnNjcmlwdCBgKTtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGRlbHRhX2cyX3NwID0gaGFzaFRvRzIoY3VydmUsIGMudHJhbnNjcmlwdCk7XG5cbiAgICAgICAgc3IgPSBhd2FpdCBzYW1lUmF0aW8oY3VydmUsIGMuZGVsdGEuZzFfcywgYy5kZWx0YS5nMV9zeCwgZGVsdGFfZzJfc3AsIGMuZGVsdGEuZzJfc3B4KTtcbiAgICAgICAgaWYgKHNyICE9PSB0cnVlKSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhgSU5WQUxJRCgke2l9KTogcHVibGljIGtleSBHMSBhbmQgRzIgZG8gbm90IGhhdmUgdGhlIHNhbWUgcmF0aW9uIGApO1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgc3IgPSBhd2FpdCBzYW1lUmF0aW8oY3VydmUsIGN1ckRlbHRhLCBjLmRlbHRhQWZ0ZXIsIGRlbHRhX2cyX3NwLCBjLmRlbHRhLmcyX3NweCk7XG4gICAgICAgIGlmIChzciAhPT0gdHJ1ZSkge1xuICAgICAgICAgICAgY29uc29sZS5sb2coYElOVkFMSUQoJHtpfSk6IGRlbHRhQWZ0ZXIgZG9lcyBub3QgZmlsbG93IHRoZSBwdWJsaWMga2V5IGApO1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGMudHlwZSA9PSAxKSB7XG4gICAgICAgICAgICBjb25zdCBybmcgPSBhd2FpdCBtaXNjLnJuZ0Zyb21CZWFjb25QYXJhbXMoYy5iZWFjb25IYXNoLCBjLm51bUl0ZXJhdGlvbnNFeHApO1xuICAgICAgICAgICAgY29uc3QgZXhwZWN0ZWRfcHJ2S2V5ID0gY3VydmUuRnIuZnJvbVJuZyhybmcpO1xuICAgICAgICAgICAgY29uc3QgZXhwZWN0ZWRfZzFfcyA9IGN1cnZlLkcxLnRvQWZmaW5lKGN1cnZlLkcxLmZyb21Sbmcocm5nKSk7XG4gICAgICAgICAgICBjb25zdCBleHBlY3RlZF9nMV9zeCA9IGN1cnZlLkcxLnRvQWZmaW5lKGN1cnZlLkcxLnRpbWVzRnIoZXhwZWN0ZWRfZzFfcywgZXhwZWN0ZWRfcHJ2S2V5KSk7XG4gICAgICAgICAgICBpZiAoY3VydmUuRzEuZXEoZXhwZWN0ZWRfZzFfcywgYy5kZWx0YS5nMV9zKSAhPT0gdHJ1ZSkge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGBJTlZBTElEKCR7aX0pOiBLZXkgb2YgdGhlIGJlYWNvbiBkb2VzIG5vdCBtYXRjaC4gZzFfcyBgKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoY3VydmUuRzEuZXEoZXhwZWN0ZWRfZzFfc3gsIGMuZGVsdGEuZzFfc3gpICE9PSB0cnVlKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coYElOVkFMSUQoJHtpfSk6IEtleSBvZiB0aGUgYmVhY29uIGRvZXMgbm90IG1hdGNoLiBnMV9zeCBgKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBoYXNoUHViS2V5KGFjY3VtdWxhdGVkSGFzaGVyLCBjdXJ2ZSwgYyk7XG5cbiAgICAgICAgY29uc3QgY29udHJpYnV0aW9uSGFzaGVyID0gQmxha2UyYig2NCk7XG4gICAgICAgIGhhc2hQdWJLZXkoY29udHJpYnV0aW9uSGFzaGVyLCBjdXJ2ZSwgYyk7XG5cbiAgICAgICAgYy5jb250cmlidXRpb25IYXNoID0gY29udHJpYnV0aW9uSGFzaGVyLmRpZ2VzdCgpO1xuXG4gICAgICAgIGN1ckRlbHRhID0gYy5kZWx0YUFmdGVyO1xuICAgIH1cblxuXG4gICAgY29uc3Qge2ZkOiBmZEluaXQsIHNlY3Rpb25zOiBzZWN0aW9uc0luaXR9ID0gYXdhaXQgYmluRmlsZVV0aWxzLnJlYWRCaW5GaWxlKGluaXRGaWxlTmFtZSwgXCJ6a2V5XCIsIDIpO1xuICAgIGNvbnN0IHprZXlJbml0ID0gYXdhaXQgemtleVV0aWxzLnJlYWRIZWFkZXIoZmRJbml0LCBzZWN0aW9uc0luaXQsIGZhbHNlKTtcblxuICAgIGlmICh6a2V5SW5pdC5wcm90b2NvbCAhPSBcImdyb3RoMTZcIikge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJ6a2V5aW5pdCBmaWxlIGlzIG5vdCBncm90aDE2XCIpO1xuICAgIH1cblxuICAgIGlmICggICghU2NhbGFyLmVxKHprZXlJbml0LnEsIHprZXkucSkpXG4gICAgICAgIHx8KCFTY2FsYXIuZXEoemtleUluaXQuciwgemtleS5yKSlcbiAgICAgICAgfHwoemtleUluaXQubjhxICE9IHprZXkubjhxKVxuICAgICAgICB8fCh6a2V5SW5pdC5uOHIgIT0gemtleS5uOHIpKVxuICAgIHtcbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmVycm9yKFwiSU5WQUxJRDogIERpZmZlcmVudCBjdXJ2ZXNcIik7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBpZiAoICAoemtleUluaXQublZhcnMgIT0gemtleS5uVmFycylcbiAgICAgICAgfHwoemtleUluaXQublB1YmxpYyAhPSAgemtleS5uUHVibGljKVxuICAgICAgICB8fCh6a2V5SW5pdC5kb21haW5TaXplICE9IHprZXkuZG9tYWluU2l6ZSkpXG4gICAge1xuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZXJyb3IoXCJJTlZBTElEOiAgRGlmZmVyZW50IGNpcmN1aXQgcGFyYW1ldGVyc1wiKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGlmICghY3VydmUuRzEuZXEoemtleS52a19hbHBoYV8xLCB6a2V5SW5pdC52a19hbHBoYV8xKSkge1xuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZXJyb3IoXCJJTlZBTElEOiAgSW52YWxpZCBhbHBoYTFcIik7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgaWYgKCFjdXJ2ZS5HMS5lcSh6a2V5LnZrX2JldGFfMSwgemtleUluaXQudmtfYmV0YV8xKSkge1xuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZXJyb3IoXCJJTlZBTElEOiAgSW52YWxpZCBiZXRhMVwiKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBpZiAoIWN1cnZlLkcyLmVxKHprZXkudmtfYmV0YV8yLCB6a2V5SW5pdC52a19iZXRhXzIpKSB7XG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5lcnJvcihcIklOVkFMSUQ6ICBJbnZhbGlkIGJldGEyXCIpO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGlmICghY3VydmUuRzIuZXEoemtleS52a19nYW1tYV8yLCB6a2V5SW5pdC52a19nYW1tYV8yKSkge1xuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZXJyb3IoXCJJTlZBTElEOiAgSW52YWxpZCBnYW1tYTJcIik7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgaWYgKCFjdXJ2ZS5HMS5lcSh6a2V5LnZrX2RlbHRhXzEsIGN1ckRlbHRhKSkge1xuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZXJyb3IoXCJJTlZBTElEOiAgSW52YWxpZCBkZWx0YTFcIik7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgc3IgPSBhd2FpdCBzYW1lUmF0aW8oY3VydmUsIGN1cnZlLkcxLmcsIGN1ckRlbHRhLCBjdXJ2ZS5HMi5nLCB6a2V5LnZrX2RlbHRhXzIpO1xuICAgIGlmIChzciAhPT0gdHJ1ZSkge1xuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZXJyb3IoXCJJTlZBTElEOiAgSW52YWxpZCBkZWx0YTJcIik7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBjb25zdCBtcGNQYXJhbXNJbml0ID0gYXdhaXQgemtleVV0aWxzLnJlYWRNUENQYXJhbXMoZmRJbml0LCBjdXJ2ZSwgc2VjdGlvbnNJbml0KTtcbiAgICBpZiAoIW1pc2MuaGFzaElzRXF1YWwobXBjUGFyYW1zLmNzSGFzaCwgbXBjUGFyYW1zSW5pdC5jc0hhc2gpKSB7XG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5lcnJvcihcIklOVkFMSUQ6ICBDaXJjdWl0IGRvZXMgbm90IG1hdGNoXCIpO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgLy8gQ2hlY2sgc2l6ZXMgb2Ygc2VjdGlvbnNcbiAgICBpZiAoc2VjdGlvbnNbOF1bMF0uc2l6ZSAhPSBzRzEqKHprZXkublZhcnMtemtleS5uUHVibGljLTEpKSB7XG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5lcnJvcihcIklOVkFMSUQ6ICBJbnZhbGlkIEwgc2VjdGlvbiBzaXplXCIpO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgaWYgKHNlY3Rpb25zWzldWzBdLnNpemUgIT0gc0cxKih6a2V5LmRvbWFpblNpemUpKSB7XG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5lcnJvcihcIklOVkFMSUQ6ICBJbnZhbGlkIEggc2VjdGlvbiBzaXplXCIpO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgbGV0IHNzO1xuICAgIHNzID0gYXdhaXQgYmluRmlsZVV0aWxzLnNlY3Rpb25Jc0VxdWFsKGZkLCBzZWN0aW9ucywgZmRJbml0LCBzZWN0aW9uc0luaXQsIDMpO1xuICAgIGlmICghc3MpIHtcbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmVycm9yKFwiSU5WQUxJRDogIElDIHNlY3Rpb24gaXMgbm90IGlkZW50aWNhbFwiKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHNzID0gYXdhaXQgYmluRmlsZVV0aWxzLnNlY3Rpb25Jc0VxdWFsKGZkLCBzZWN0aW9ucywgZmRJbml0LCBzZWN0aW9uc0luaXQsIDQpO1xuICAgIGlmICghc3MpIHtcbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmVycm9yKFwiQ29lZmZzIHNlY3Rpb24gaXMgbm90IGlkZW50aWNhbFwiKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHNzID0gYXdhaXQgYmluRmlsZVV0aWxzLnNlY3Rpb25Jc0VxdWFsKGZkLCBzZWN0aW9ucywgZmRJbml0LCBzZWN0aW9uc0luaXQsIDUpO1xuICAgIGlmICghc3MpIHtcbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmVycm9yKFwiQSBzZWN0aW9uIGlzIG5vdCBpZGVudGljYWxcIik7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBzcyA9IGF3YWl0IGJpbkZpbGVVdGlscy5zZWN0aW9uSXNFcXVhbChmZCwgc2VjdGlvbnMsIGZkSW5pdCwgc2VjdGlvbnNJbml0LCA2KTtcbiAgICBpZiAoIXNzKSB7XG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5lcnJvcihcIkIxIHNlY3Rpb24gaXMgbm90IGlkZW50aWNhbFwiKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHNzID0gYXdhaXQgYmluRmlsZVV0aWxzLnNlY3Rpb25Jc0VxdWFsKGZkLCBzZWN0aW9ucywgZmRJbml0LCBzZWN0aW9uc0luaXQsIDcpO1xuICAgIGlmICghc3MpIHtcbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmVycm9yKFwiQjIgc2VjdGlvbiBpcyBub3QgaWRlbnRpY2FsXCIpO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgLy8gQ2hlY2sgTFxuICAgIHNyID0gYXdhaXQgc2VjdGlvbkhhc1NhbWVSYXRpbyhcIkcxXCIsIGZkSW5pdCwgc2VjdGlvbnNJbml0LCBmZCwgc2VjdGlvbnMsIDgsIHprZXkudmtfZGVsdGFfMiwgemtleUluaXQudmtfZGVsdGFfMiwgXCJMIHNlY3Rpb25cIik7XG4gICAgaWYgKHNyIT09dHJ1ZSkge1xuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZXJyb3IoXCJMIHNlY3Rpb24gZG9lcyBub3QgbWF0Y2hcIik7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvLyBDaGVjayBIXG4gICAgc3IgPSBhd2FpdCBzYW1lUmF0aW9IKCk7XG4gICAgaWYgKHNyIT09dHJ1ZSkge1xuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZXJyb3IoXCJIIHNlY3Rpb24gZG9lcyBub3QgbWF0Y2hcIik7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhtaXNjLmZvcm1hdEhhc2gobXBjUGFyYW1zLmNzSGFzaCwgXCJDaXJjdWl0IEhhc2g6IFwiKSk7XG5cbiAgICBhd2FpdCBmZC5jbG9zZSgpO1xuICAgIGF3YWl0IGZkSW5pdC5jbG9zZSgpO1xuXG4gICAgZm9yIChsZXQgaT1tcGNQYXJhbXMuY29udHJpYnV0aW9ucy5sZW5ndGgtMTsgaT49MDsgaS0tKSB7XG4gICAgICAgIGNvbnN0IGMgPSBtcGNQYXJhbXMuY29udHJpYnV0aW9uc1tpXTtcbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oXCItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXCIpO1xuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhtaXNjLmZvcm1hdEhhc2goYy5jb250cmlidXRpb25IYXNoLCBgY29udHJpYnV0aW9uICMke2krMX0gJHtjLm5hbWUgPyBjLm5hbWUgOiBcIlwifTpgKSk7XG4gICAgICAgIGlmIChjLnR5cGUgPT0gMSkge1xuICAgICAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oYEJlYWNvbiBnZW5lcmF0b3I6ICR7bWlzYy5ieXRlQXJyYXkyaGV4KGMuYmVhY29uSGFzaCl9YCk7XG4gICAgICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhgQmVhY29uIGl0ZXJhdGlvbnMgRXhwOiAke2MubnVtSXRlcmF0aW9uc0V4cH1gKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhcIi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cIik7XG5cbiAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhcIlpLZXkgT2shXCIpO1xuXG4gICAgcmV0dXJuIHRydWU7XG5cblxuICAgIGFzeW5jIGZ1bmN0aW9uIHNlY3Rpb25IYXNTYW1lUmF0aW8oZ3JvdXBOYW1lLCBmZDEsIHNlY3Rpb25zMSwgZmQyLCBzZWN0aW9uczIsIGlkU2VjdGlvbiwgZzJzcCwgZzJzcHgsIHNlY3Rpb25OYW1lKSB7XG4gICAgICAgIGNvbnN0IE1BWF9DSFVOS19TSVpFID0gMTw8MjA7XG4gICAgICAgIGNvbnN0IEcgPSBjdXJ2ZVtncm91cE5hbWVdO1xuICAgICAgICBjb25zdCBzRyA9IEcuRi5uOCoyO1xuICAgICAgICBhd2FpdCBiaW5GaWxlVXRpbHMuc3RhcnRSZWFkVW5pcXVlU2VjdGlvbihmZDEsIHNlY3Rpb25zMSwgaWRTZWN0aW9uKTtcbiAgICAgICAgYXdhaXQgYmluRmlsZVV0aWxzLnN0YXJ0UmVhZFVuaXF1ZVNlY3Rpb24oZmQyLCBzZWN0aW9uczIsIGlkU2VjdGlvbik7XG5cbiAgICAgICAgbGV0IFIxID0gRy56ZXJvO1xuICAgICAgICBsZXQgUjIgPSBHLnplcm87XG5cbiAgICAgICAgY29uc3QgblBvaW50cyA9IHNlY3Rpb25zMVtpZFNlY3Rpb25dWzBdLnNpemUgLyBzRztcblxuICAgICAgICBmb3IgKGxldCBpPTA7IGk8blBvaW50czsgaSArPSBNQVhfQ0hVTktfU0laRSkge1xuICAgICAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmRlYnVnKGBTYW1lIHJhdGlvIGNoZWNrICR7c2VjdGlvbk5hbWV9OiAgJHtpfS8ke25Qb2ludHN9YCk7XG4gICAgICAgICAgICBjb25zdCBuID0gTWF0aC5taW4oblBvaW50cyAtIGksIE1BWF9DSFVOS19TSVpFKTtcbiAgICAgICAgICAgIGNvbnN0IGJhc2VzMSA9IGF3YWl0IGZkMS5yZWFkKG4qc0cpO1xuICAgICAgICAgICAgY29uc3QgYmFzZXMyID0gYXdhaXQgZmQyLnJlYWQobipzRyk7XG5cbiAgICAgICAgICAgIGNvbnN0IHNjYWxhcnMgPSBtaXNjLmdldFJhbmRvbUJ5dGVzKDQqbik7XG5cbiAgICAgICAgICAgIGNvbnN0IHIxID0gYXdhaXQgRy5tdWx0aUV4cEFmZmluZShiYXNlczEsIHNjYWxhcnMpO1xuICAgICAgICAgICAgY29uc3QgcjIgPSBhd2FpdCBHLm11bHRpRXhwQWZmaW5lKGJhc2VzMiwgc2NhbGFycyk7XG5cbiAgICAgICAgICAgIFIxID0gRy5hZGQoUjEsIHIxKTtcbiAgICAgICAgICAgIFIyID0gRy5hZGQoUjIsIHIyKTtcbiAgICAgICAgfVxuICAgICAgICBhd2FpdCBiaW5GaWxlVXRpbHMuZW5kUmVhZFNlY3Rpb24oZmQxKTtcbiAgICAgICAgYXdhaXQgYmluRmlsZVV0aWxzLmVuZFJlYWRTZWN0aW9uKGZkMik7XG5cbiAgICAgICAgaWYgKG5Qb2ludHMgPT0gMCkgcmV0dXJuIHRydWU7XG5cbiAgICAgICAgc3IgPSBhd2FpdCBzYW1lUmF0aW8oY3VydmUsIFIxLCBSMiwgZzJzcCwgZzJzcHgpO1xuICAgICAgICBpZiAoc3IgIT09IHRydWUpIHJldHVybiBmYWxzZTtcblxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBhc3luYyBmdW5jdGlvbiBzYW1lUmF0aW9IKCkge1xuICAgICAgICBjb25zdCBNQVhfQ0hVTktfU0laRSA9IDE8PDIwO1xuICAgICAgICBjb25zdCBHID0gY3VydmUuRzE7XG4gICAgICAgIGNvbnN0IEZyID0gY3VydmUuRnI7XG4gICAgICAgIGNvbnN0IHNHID0gRy5GLm44KjI7XG5cbiAgICAgICAgY29uc3Qge2ZkOiBmZFBUYXUsIHNlY3Rpb25zOiBzZWN0aW9uc1BUYXV9ID0gYXdhaXQgYmluRmlsZVV0aWxzLnJlYWRCaW5GaWxlKHBUYXVGaWxlTmFtZSwgXCJwdGF1XCIsIDEpO1xuXG4gICAgICAgIGxldCBidWZmX3IgPSBuZXcgQmlnQnVmZmVyKHprZXkuZG9tYWluU2l6ZSAqIHprZXkubjhyKTtcblxuICAgICAgICBjb25zdCBzZWVkPSBuZXcgQXJyYXkoOCk7XG4gICAgICAgIGZvciAobGV0IGk9MDsgaTw4OyBpKyspIHtcbiAgICAgICAgICAgIHNlZWRbaV0gPSBtaXNjLnJlYWRVSW50MzJCRShtaXNjLmdldFJhbmRvbUJ5dGVzKDQpLCAwKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBybmcgPSBuZXcgQ2hhQ2hhKHNlZWQpO1xuICAgICAgICBmb3IgKGxldCBpPTA7IGk8emtleS5kb21haW5TaXplLTE7IGkrKykgeyAgIC8vIE5vdGUgdGhhdCBsYXN0IG9uZSBpcyB6ZXJvXG4gICAgICAgICAgICBjb25zdCBlID0gRnIuZnJvbVJuZyhybmcpO1xuICAgICAgICAgICAgRnIudG9ScHJMRShidWZmX3IsIGkqemtleS5uOHIsIGUpO1xuICAgICAgICB9XG4gICAgICAgIEZyLnRvUnByTEUoYnVmZl9yLCAoemtleS5kb21haW5TaXplLTEpKnprZXkubjhyLCBGci56ZXJvKTtcblxuICAgICAgICBsZXQgUjEgPSBHLnplcm87XG4gICAgICAgIGZvciAobGV0IGk9MDsgaTx6a2V5LmRvbWFpblNpemU7IGkgKz0gTUFYX0NIVU5LX1NJWkUpIHtcbiAgICAgICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5kZWJ1ZyhgSCBWZXJpZmljYXRpb24odGF1KTogICR7aX0vJHt6a2V5LmRvbWFpblNpemV9YCk7XG4gICAgICAgICAgICBjb25zdCBuID0gTWF0aC5taW4oemtleS5kb21haW5TaXplIC0gaSwgTUFYX0NIVU5LX1NJWkUpO1xuXG4gICAgICAgICAgICBjb25zdCBidWZmMSA9IGF3YWl0IGZkUFRhdS5yZWFkKHNHKm4sIHNlY3Rpb25zUFRhdVsyXVswXS5wICsgemtleS5kb21haW5TaXplKnNHICsgaSpzRyk7XG4gICAgICAgICAgICBjb25zdCBidWZmMiA9IGF3YWl0IGZkUFRhdS5yZWFkKHNHKm4sIHNlY3Rpb25zUFRhdVsyXVswXS5wICsgaSpzRyk7XG5cbiAgICAgICAgICAgIGNvbnN0IGJ1ZmZCID0gYXdhaXQgYmF0Y2hTdWJ0cmFjdChidWZmMSwgYnVmZjIpO1xuICAgICAgICAgICAgY29uc3QgYnVmZlMgPSBidWZmX3Iuc2xpY2UoaSp6a2V5Lm44ciwgKGkrbikqemtleS5uOHIpO1xuICAgICAgICAgICAgY29uc3QgciA9IGF3YWl0IEcubXVsdGlFeHBBZmZpbmUoYnVmZkIsIGJ1ZmZTKTtcblxuICAgICAgICAgICAgUjEgPSBHLmFkZChSMSwgcik7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBDYWxjdWxhdGUgb2RkIGNvZWZmaWNpZW50cyBpbiB0cmFuc2Zvcm1lZCBkb21haW5cblxuICAgICAgICBidWZmX3IgPSBhd2FpdCBGci5iYXRjaFRvTW9udGdvbWVyeShidWZmX3IpO1xuICAgICAgICAvLyBjb25zdCBmaXJzdCA9IGN1cnZlLkZyLm5lZyhjdXJ2ZS5Gci5pbnYoY3VydmUuRnIuZSgyKSkpO1xuICAgICAgICAvLyBXb3JrcyoyICAgY29uc3QgZmlyc3QgPSBjdXJ2ZS5Gci5uZWcoY3VydmUuRnIuZSgyKSk7XG5cblxuICAgICAgICBsZXQgZmlyc3Q7XG5cbiAgICAgICAgaWYgKHprZXkucG93ZXIgPCBGci5zKSB7XG4gICAgICAgICAgICBmaXJzdCA9IEZyLm5lZyhGci5lKDIpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IHNtYWxsX20gID0gMiAqKiBGci5zO1xuICAgICAgICAgICAgY29uc3Qgc2hpZnRfdG9fc21hbGxfbSA9IEZyLmV4cChGci5zaGlmdCwgc21hbGxfbSk7XG4gICAgICAgICAgICBmaXJzdCA9IEZyLnN1Yiggc2hpZnRfdG9fc21hbGxfbSwgRnIub25lKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIGNvbnN0IGluYyA9IGN1cnZlLkZyLmludihjdXJ2ZS5QRnIud1t6a2V5LnBvd2VyKzFdKTtcbiAgICAgICAgY29uc3QgaW5jID0gemtleS5wb3dlciA8IEZyLnMgPyBGci53W3prZXkucG93ZXIrMV0gOiBGci5zaGlmdDtcbiAgICAgICAgYnVmZl9yID0gYXdhaXQgRnIuYmF0Y2hBcHBseUtleShidWZmX3IsIGZpcnN0LCBpbmMpO1xuICAgICAgICBidWZmX3IgPSBhd2FpdCBGci5mZnQoYnVmZl9yKTtcbiAgICAgICAgYnVmZl9yID0gYXdhaXQgRnIuYmF0Y2hGcm9tTW9udGdvbWVyeShidWZmX3IpO1xuXG4gICAgICAgIGF3YWl0IGJpbkZpbGVVdGlscy5zdGFydFJlYWRVbmlxdWVTZWN0aW9uKGZkLCBzZWN0aW9ucywgOSk7XG4gICAgICAgIGxldCBSMiA9IEcuemVybztcbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPHprZXkuZG9tYWluU2l6ZTsgaSArPSBNQVhfQ0hVTktfU0laRSkge1xuICAgICAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmRlYnVnKGBIIFZlcmlmaWNhdGlvbihsYWdyYW5nZSk6ICAke2l9LyR7emtleS5kb21haW5TaXplfWApO1xuICAgICAgICAgICAgY29uc3QgbiA9IE1hdGgubWluKHprZXkuZG9tYWluU2l6ZSAtIGksIE1BWF9DSFVOS19TSVpFKTtcblxuICAgICAgICAgICAgY29uc3QgYnVmZiA9IGF3YWl0IGZkLnJlYWQoc0cqbik7XG4gICAgICAgICAgICBjb25zdCBidWZmUyA9IGJ1ZmZfci5zbGljZShpKnprZXkubjhyLCAoaStuKSp6a2V5Lm44cik7XG4gICAgICAgICAgICBjb25zdCByID0gYXdhaXQgRy5tdWx0aUV4cEFmZmluZShidWZmLCBidWZmUyk7XG5cbiAgICAgICAgICAgIFIyID0gRy5hZGQoUjIsIHIpO1xuICAgICAgICB9XG4gICAgICAgIGF3YWl0IGJpbkZpbGVVdGlscy5lbmRSZWFkU2VjdGlvbihmZCk7XG5cbiAgICAgICAgc3IgPSBhd2FpdCBzYW1lUmF0aW8oY3VydmUsIFIxLCBSMiwgemtleS52a19kZWx0YV8yLCB6a2V5SW5pdC52a19kZWx0YV8yKTtcbiAgICAgICAgaWYgKHNyICE9PSB0cnVlKSByZXR1cm4gZmFsc2U7XG5cblxuICAgICAgICByZXR1cm4gdHJ1ZTtcblxuICAgIH1cblxuICAgIGFzeW5jIGZ1bmN0aW9uIGJhdGNoU3VidHJhY3QoYnVmZjEsIGJ1ZmYyKSB7XG4gICAgICAgIGNvbnN0IHNHID0gY3VydmUuRzEuRi5uOCoyO1xuICAgICAgICBjb25zdCBuUG9pbnRzID0gYnVmZjEuYnl0ZUxlbmd0aCAvIHNHO1xuICAgICAgICBjb25zdCBjb25jdXJyZW5jeT0gY3VydmUudG0uY29uY3VycmVuY3k7XG4gICAgICAgIGNvbnN0IG5Qb2ludHNQZXJUaHJlYWQgPSBNYXRoLmZsb29yKG5Qb2ludHMgLyBjb25jdXJyZW5jeSk7XG4gICAgICAgIGNvbnN0IG9wUHJvbWlzZXMgPSBbXTtcbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPGNvbmN1cnJlbmN5OyBpKyspIHtcbiAgICAgICAgICAgIGxldCBuO1xuICAgICAgICAgICAgaWYgKGk8IGNvbmN1cnJlbmN5LTEpIHtcbiAgICAgICAgICAgICAgICBuID0gblBvaW50c1BlclRocmVhZDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgbiA9IG5Qb2ludHMgLSBpKm5Qb2ludHNQZXJUaHJlYWQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobj09MCkgY29udGludWU7XG5cbiAgICAgICAgICAgIGNvbnN0IHN1YkJ1ZmYxID0gYnVmZjEuc2xpY2UoaSpuUG9pbnRzUGVyVGhyZWFkKnNHMSwgKGkqblBvaW50c1BlclRocmVhZCtuKSpzRzEpO1xuICAgICAgICAgICAgY29uc3Qgc3ViQnVmZjIgPSBidWZmMi5zbGljZShpKm5Qb2ludHNQZXJUaHJlYWQqc0cxLCAoaSpuUG9pbnRzUGVyVGhyZWFkK24pKnNHMSk7XG4gICAgICAgICAgICBvcFByb21pc2VzLnB1c2goYmF0Y2hTdWJ0cmFjdFRocmVhZChzdWJCdWZmMSwgc3ViQnVmZjIpKTtcbiAgICAgICAgfVxuXG5cbiAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgUHJvbWlzZS5hbGwob3BQcm9taXNlcyk7XG5cbiAgICAgICAgY29uc3QgZnVsbEJ1ZmZPdXQgPSBuZXcgVWludDhBcnJheShuUG9pbnRzKnNHKTtcbiAgICAgICAgbGV0IHAgPTA7XG4gICAgICAgIGZvciAobGV0IGk9MDsgaTxyZXN1bHQubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGZ1bGxCdWZmT3V0LnNldChyZXN1bHRbaV1bMF0sIHApO1xuICAgICAgICAgICAgcCs9cmVzdWx0W2ldWzBdLmJ5dGVMZW5ndGg7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZnVsbEJ1ZmZPdXQ7XG4gICAgfVxuXG5cbiAgICBhc3luYyBmdW5jdGlvbiBiYXRjaFN1YnRyYWN0VGhyZWFkKGJ1ZmYxLCBidWZmMikge1xuICAgICAgICBjb25zdCBzRzEgPSBjdXJ2ZS5HMS5GLm44KjI7XG4gICAgICAgIGNvbnN0IHNHbWlkID0gY3VydmUuRzEuRi5uOCozO1xuICAgICAgICBjb25zdCBuUG9pbnRzID0gYnVmZjEuYnl0ZUxlbmd0aC9zRzE7XG4gICAgICAgIGNvbnN0IHRhc2sgPSBbXTtcbiAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiQUxMT0NTRVRcIiwgdmFyOiAwLCBidWZmOiBidWZmMX0pO1xuICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJBTExPQ1NFVFwiLCB2YXI6IDEsIGJ1ZmY6IGJ1ZmYyfSk7XG4gICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkFMTE9DXCIsIHZhcjogMiwgbGVuOiBuUG9pbnRzKnNHbWlkfSk7XG4gICAgICAgIGZvciAobGV0IGk9MDsgaTxuUG9pbnRzOyBpKyspIHtcbiAgICAgICAgICAgIHRhc2sucHVzaCh7XG4gICAgICAgICAgICAgICAgY21kOiBcIkNBTExcIixcbiAgICAgICAgICAgICAgICBmbk5hbWU6IFwiZzFtX3N1YkFmZmluZVwiLFxuICAgICAgICAgICAgICAgIHBhcmFtczogW1xuICAgICAgICAgICAgICAgICAgICB7dmFyOiAwLCBvZmZzZXQ6IGkqc0cxfSxcbiAgICAgICAgICAgICAgICAgICAge3ZhcjogMSwgb2Zmc2V0OiBpKnNHMX0sXG4gICAgICAgICAgICAgICAgICAgIHt2YXI6IDIsIG9mZnNldDogaSpzR21pZH0sXG4gICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiQ0FMTFwiLCBmbk5hbWU6IFwiZzFtX2JhdGNoVG9BZmZpbmVcIiwgcGFyYW1zOiBbXG4gICAgICAgICAgICB7dmFyOiAyfSxcbiAgICAgICAgICAgIHt2YWw6IG5Qb2ludHN9LFxuICAgICAgICAgICAge3ZhcjogMn0sXG4gICAgICAgIF19KTtcbiAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiR0VUXCIsIG91dDogMCwgdmFyOiAyLCBsZW46IG5Qb2ludHMqc0cxfSk7XG5cbiAgICAgICAgY29uc3QgcmVzID0gYXdhaXQgY3VydmUudG0ucXVldWVBY3Rpb24odGFzayk7XG5cbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG5cbn1cblxuIiwiLypcbiAgICBDb3B5cmlnaHQgMjAxOCAwS0lNUyBhc3NvY2lhdGlvbi5cblxuICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHNuYXJrSlMuXG5cbiAgICBzbmFya0pTIGlzIGEgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdFxuICAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3JcbiAgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuXG4gICAgc25hcmtKUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVFxuICAgIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWVxuICAgIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpY1xuICAgIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cblxuICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gICAgYWxvbmcgd2l0aCBzbmFya0pTLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuKi9cblxuaW1wb3J0IG5ld1pLZXkgZnJvbSBcIi4vemtleV9uZXcuanNcIjtcbmltcG9ydCBwaGFzZTJ2ZXJpZnlGcm9tSW5pdCBmcm9tIFwiLi96a2V5X3ZlcmlmeV9mcm9taW5pdC5qc1wiO1xuXG5leHBvcnQgZGVmYXVsdCBhc3luYyBmdW5jdGlvbiBwaGFzZTJ2ZXJpZnlGcm9tUjFjcyhyMWNzRmlsZU5hbWUsIHBUYXVGaWxlTmFtZSwgemtleUZpbGVOYW1lLCBsb2dnZXIpIHtcblxuICAgIC8vIGNvbnN0IGluaXRGaWxlTmFtZSA9IFwiflwiICsgemtleUZpbGVOYW1lICsgXCIuaW5pdFwiO1xuICAgIGNvbnN0IGluaXRGaWxlTmFtZSA9IHt0eXBlOiBcImJpZ01lbVwifTtcbiAgICBhd2FpdCBuZXdaS2V5KHIxY3NGaWxlTmFtZSwgcFRhdUZpbGVOYW1lLCBpbml0RmlsZU5hbWUsIGxvZ2dlcik7XG5cbiAgICByZXR1cm4gYXdhaXQgcGhhc2UydmVyaWZ5RnJvbUluaXQoaW5pdEZpbGVOYW1lLCBwVGF1RmlsZU5hbWUsIHprZXlGaWxlTmFtZSwgbG9nZ2VyKTtcbn1cblxuIiwiLypcbiAgICBDb3B5cmlnaHQgMjAxOCAwS0lNUyBhc3NvY2lhdGlvbi5cblxuICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHNuYXJrSlMuXG5cbiAgICBzbmFya0pTIGlzIGEgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdFxuICAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3JcbiAgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuXG4gICAgc25hcmtKUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVFxuICAgIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWVxuICAgIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpY1xuICAgIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cblxuICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gICAgYWxvbmcgd2l0aCBzbmFya0pTLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuKi9cblxuaW1wb3J0ICogYXMgYmluRmlsZVV0aWxzIGZyb20gXCJAaWRlbjMvYmluZmlsZXV0aWxzXCI7XG5pbXBvcnQgKiBhcyB6a2V5VXRpbHMgZnJvbSBcIi4vemtleV91dGlscy5qc1wiO1xuaW1wb3J0IHsgZ2V0Q3VydmVGcm9tUSBhcyBnZXRDdXJ2ZSB9IGZyb20gXCIuL2N1cnZlcy5qc1wiO1xuaW1wb3J0ICogYXMgbWlzYyBmcm9tIFwiLi9taXNjLmpzXCI7XG5pbXBvcnQgQmxha2UyYiBmcm9tIFwiYmxha2UyYi13YXNtXCI7XG5pbXBvcnQgKiBhcyB1dGlscyBmcm9tIFwiLi96a2V5X3V0aWxzLmpzXCI7XG5pbXBvcnQgeyBoYXNoVG9HMiBhcyBoYXNoVG9HMiB9IGZyb20gXCIuL2tleXBhaXIuanNcIjtcbmltcG9ydCB7IGFwcGx5S2V5VG9TZWN0aW9uIH0gZnJvbSBcIi4vbXBjX2FwcGx5a2V5LmpzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGFzeW5jIGZ1bmN0aW9uIHBoYXNlMmNvbnRyaWJ1dGUoemtleU5hbWVPbGQsIHprZXlOYW1lTmV3LCBuYW1lLCBlbnRyb3B5LCBsb2dnZXIpIHtcbiAgICBhd2FpdCBCbGFrZTJiLnJlYWR5KCk7XG5cbiAgICBjb25zdCB7ZmQ6IGZkT2xkLCBzZWN0aW9uczogc2VjdGlvbnN9ID0gYXdhaXQgYmluRmlsZVV0aWxzLnJlYWRCaW5GaWxlKHprZXlOYW1lT2xkLCBcInprZXlcIiwgMik7XG4gICAgY29uc3QgemtleSA9IGF3YWl0IHprZXlVdGlscy5yZWFkSGVhZGVyKGZkT2xkLCBzZWN0aW9ucyk7XG4gICAgaWYgKHprZXkucHJvdG9jb2wgIT0gXCJncm90aDE2XCIpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiemtleSBmaWxlIGlzIG5vdCBncm90aDE2XCIpO1xuICAgIH1cblxuICAgIGNvbnN0IGN1cnZlID0gYXdhaXQgZ2V0Q3VydmUoemtleS5xKTtcblxuICAgIGNvbnN0IG1wY1BhcmFtcyA9IGF3YWl0IHprZXlVdGlscy5yZWFkTVBDUGFyYW1zKGZkT2xkLCBjdXJ2ZSwgc2VjdGlvbnMpO1xuXG4gICAgY29uc3QgZmROZXcgPSBhd2FpdCBiaW5GaWxlVXRpbHMuY3JlYXRlQmluRmlsZSh6a2V5TmFtZU5ldywgXCJ6a2V5XCIsIDEsIDEwKTtcblxuXG4gICAgY29uc3Qgcm5nID0gYXdhaXQgbWlzYy5nZXRSYW5kb21SbmcoZW50cm9weSk7XG5cbiAgICBjb25zdCB0cmFuc2NyaXB0SGFzaGVyID0gQmxha2UyYig2NCk7XG4gICAgdHJhbnNjcmlwdEhhc2hlci51cGRhdGUobXBjUGFyYW1zLmNzSGFzaCk7XG4gICAgZm9yIChsZXQgaT0wOyBpPG1wY1BhcmFtcy5jb250cmlidXRpb25zLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHV0aWxzLmhhc2hQdWJLZXkodHJhbnNjcmlwdEhhc2hlciwgY3VydmUsIG1wY1BhcmFtcy5jb250cmlidXRpb25zW2ldKTtcbiAgICB9XG5cbiAgICBjb25zdCBjdXJDb250cmlidXRpb24gPSB7fTtcbiAgICBjdXJDb250cmlidXRpb24uZGVsdGEgPSB7fTtcbiAgICBjdXJDb250cmlidXRpb24uZGVsdGEucHJ2S2V5ID0gY3VydmUuRnIuZnJvbVJuZyhybmcpO1xuICAgIGN1ckNvbnRyaWJ1dGlvbi5kZWx0YS5nMV9zID0gY3VydmUuRzEudG9BZmZpbmUoY3VydmUuRzEuZnJvbVJuZyhybmcpKTtcbiAgICBjdXJDb250cmlidXRpb24uZGVsdGEuZzFfc3ggPSBjdXJ2ZS5HMS50b0FmZmluZShjdXJ2ZS5HMS50aW1lc0ZyKGN1ckNvbnRyaWJ1dGlvbi5kZWx0YS5nMV9zLCBjdXJDb250cmlidXRpb24uZGVsdGEucHJ2S2V5KSk7XG4gICAgdXRpbHMuaGFzaEcxKHRyYW5zY3JpcHRIYXNoZXIsIGN1cnZlLCBjdXJDb250cmlidXRpb24uZGVsdGEuZzFfcyk7XG4gICAgdXRpbHMuaGFzaEcxKHRyYW5zY3JpcHRIYXNoZXIsIGN1cnZlLCBjdXJDb250cmlidXRpb24uZGVsdGEuZzFfc3gpO1xuICAgIGN1ckNvbnRyaWJ1dGlvbi50cmFuc2NyaXB0ID0gdHJhbnNjcmlwdEhhc2hlci5kaWdlc3QoKTtcbiAgICBjdXJDb250cmlidXRpb24uZGVsdGEuZzJfc3AgPSBoYXNoVG9HMihjdXJ2ZSwgY3VyQ29udHJpYnV0aW9uLnRyYW5zY3JpcHQpO1xuICAgIGN1ckNvbnRyaWJ1dGlvbi5kZWx0YS5nMl9zcHggPSBjdXJ2ZS5HMi50b0FmZmluZShjdXJ2ZS5HMi50aW1lc0ZyKGN1ckNvbnRyaWJ1dGlvbi5kZWx0YS5nMl9zcCwgY3VyQ29udHJpYnV0aW9uLmRlbHRhLnBydktleSkpO1xuXG4gICAgemtleS52a19kZWx0YV8xID0gY3VydmUuRzEudGltZXNGcih6a2V5LnZrX2RlbHRhXzEsIGN1ckNvbnRyaWJ1dGlvbi5kZWx0YS5wcnZLZXkpO1xuICAgIHprZXkudmtfZGVsdGFfMiA9IGN1cnZlLkcyLnRpbWVzRnIoemtleS52a19kZWx0YV8yLCBjdXJDb250cmlidXRpb24uZGVsdGEucHJ2S2V5KTtcblxuICAgIGN1ckNvbnRyaWJ1dGlvbi5kZWx0YUFmdGVyID0gemtleS52a19kZWx0YV8xO1xuXG4gICAgY3VyQ29udHJpYnV0aW9uLnR5cGUgPSAwO1xuICAgIGlmIChuYW1lKSBjdXJDb250cmlidXRpb24ubmFtZSA9IG5hbWU7XG5cbiAgICBtcGNQYXJhbXMuY29udHJpYnV0aW9ucy5wdXNoKGN1ckNvbnRyaWJ1dGlvbik7XG5cbiAgICBhd2FpdCB6a2V5VXRpbHMud3JpdGVIZWFkZXIoZmROZXcsIHprZXkpO1xuXG4gICAgLy8gSUNcbiAgICBhd2FpdCBiaW5GaWxlVXRpbHMuY29weVNlY3Rpb24oZmRPbGQsIHNlY3Rpb25zLCBmZE5ldywgMyk7XG5cbiAgICAvLyBDb2VmZnMgKEtlZXAgb3JpZ2luYWwpXG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLmNvcHlTZWN0aW9uKGZkT2xkLCBzZWN0aW9ucywgZmROZXcsIDQpO1xuXG4gICAgLy8gQSBTZWN0aW9uXG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLmNvcHlTZWN0aW9uKGZkT2xkLCBzZWN0aW9ucywgZmROZXcsIDUpO1xuXG4gICAgLy8gQjEgU2VjdGlvblxuICAgIGF3YWl0IGJpbkZpbGVVdGlscy5jb3B5U2VjdGlvbihmZE9sZCwgc2VjdGlvbnMsIGZkTmV3LCA2KTtcblxuICAgIC8vIEIyIFNlY3Rpb25cbiAgICBhd2FpdCBiaW5GaWxlVXRpbHMuY29weVNlY3Rpb24oZmRPbGQsIHNlY3Rpb25zLCBmZE5ldywgNyk7XG5cbiAgICBjb25zdCBpbnZEZWx0YSA9IGN1cnZlLkZyLmludihjdXJDb250cmlidXRpb24uZGVsdGEucHJ2S2V5KTtcbiAgICBhd2FpdCBhcHBseUtleVRvU2VjdGlvbihmZE9sZCwgc2VjdGlvbnMsIGZkTmV3LCA4LCBjdXJ2ZSwgXCJHMVwiLCBpbnZEZWx0YSwgY3VydmUuRnIuZSgxKSwgXCJMIFNlY3Rpb25cIiwgbG9nZ2VyKTtcbiAgICBhd2FpdCBhcHBseUtleVRvU2VjdGlvbihmZE9sZCwgc2VjdGlvbnMsIGZkTmV3LCA5LCBjdXJ2ZSwgXCJHMVwiLCBpbnZEZWx0YSwgY3VydmUuRnIuZSgxKSwgXCJIIFNlY3Rpb25cIiwgbG9nZ2VyKTtcblxuICAgIGF3YWl0IHprZXlVdGlscy53cml0ZU1QQ1BhcmFtcyhmZE5ldywgY3VydmUsIG1wY1BhcmFtcyk7XG5cbiAgICBhd2FpdCBmZE9sZC5jbG9zZSgpO1xuICAgIGF3YWl0IGZkTmV3LmNsb3NlKCk7XG5cbiAgICBjb25zdCBjb250cmlidXRpb25IYXNoZXIgPSBCbGFrZTJiKDY0KTtcbiAgICB1dGlscy5oYXNoUHViS2V5KGNvbnRyaWJ1dGlvbkhhc2hlciwgY3VydmUsIGN1ckNvbnRyaWJ1dGlvbik7XG5cbiAgICBjb25zdCBjb250cmlidXRpb25IYXNoID0gY29udHJpYnV0aW9uSGFzaGVyLmRpZ2VzdCgpO1xuXG4gICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8obWlzYy5mb3JtYXRIYXNoKG1wY1BhcmFtcy5jc0hhc2gsIFwiQ2lyY3VpdCBIYXNoOiBcIikpO1xuICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKG1pc2MuZm9ybWF0SGFzaChjb250cmlidXRpb25IYXNoLCBcIkNvbnRyaWJ1dGlvbiBIYXNoOiBcIikpO1xuXG4gICAgcmV0dXJuIGNvbnRyaWJ1dGlvbkhhc2g7XG59XG4iLCIvKlxuICAgIENvcHlyaWdodCAyMDE4IDBLSU1TIGFzc29jaWF0aW9uLlxuXG4gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2Ygc25hcmtKUy5cblxuICAgIHNuYXJrSlMgaXMgYSBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0XG4gICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxuICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG5cbiAgICBzbmFya0pTIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUXG4gICAgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZXG4gICAgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljXG4gICAgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuXG4gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAgICBhbG9uZyB3aXRoIHNuYXJrSlMuIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXG4qL1xuXG5pbXBvcnQgKiBhcyBiaW5GaWxlVXRpbHMgZnJvbSBcIkBpZGVuMy9iaW5maWxldXRpbHNcIjtcbmltcG9ydCAqIGFzIHprZXlVdGlscyBmcm9tIFwiLi96a2V5X3V0aWxzLmpzXCI7XG5pbXBvcnQgeyBnZXRDdXJ2ZUZyb21RIGFzIGdldEN1cnZlIH0gZnJvbSBcIi4vY3VydmVzLmpzXCI7XG5pbXBvcnQgKiBhcyBtaXNjIGZyb20gXCIuL21pc2MuanNcIjtcbmltcG9ydCBCbGFrZTJiIGZyb20gXCJibGFrZTJiLXdhc21cIjtcbmltcG9ydCAqIGFzIHV0aWxzIGZyb20gXCIuL3prZXlfdXRpbHMuanNcIjtcbmltcG9ydCB7IGhhc2hUb0cyIGFzIGhhc2hUb0cyIH0gZnJvbSBcIi4va2V5cGFpci5qc1wiO1xuaW1wb3J0IHsgYXBwbHlLZXlUb1NlY3Rpb24gfSBmcm9tIFwiLi9tcGNfYXBwbHlrZXkuanNcIjtcblxuXG5leHBvcnQgZGVmYXVsdCBhc3luYyBmdW5jdGlvbiBiZWFjb24oemtleU5hbWVPbGQsIHprZXlOYW1lTmV3LCBuYW1lLCBiZWFjb25IYXNoU3RyLCBudW1JdGVyYXRpb25zRXhwLCBsb2dnZXIpIHtcbiAgICBhd2FpdCBCbGFrZTJiLnJlYWR5KCk7XG5cbiAgICBjb25zdCBiZWFjb25IYXNoID0gbWlzYy5oZXgyQnl0ZUFycmF5KGJlYWNvbkhhc2hTdHIpO1xuICAgIGlmICggICAoYmVhY29uSGFzaC5ieXRlTGVuZ3RoID09IDApXG4gICAgICAgIHx8IChiZWFjb25IYXNoLmJ5dGVMZW5ndGgqMiAhPWJlYWNvbkhhc2hTdHIubGVuZ3RoKSlcbiAgICB7XG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5lcnJvcihcIkludmFsaWQgQmVhY29uIEhhc2guIChJdCBtdXN0IGJlIGEgdmFsaWQgaGV4YWRlY2ltYWwgc2VxdWVuY2UpXCIpO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGlmIChiZWFjb25IYXNoLmxlbmd0aD49MjU2KSB7XG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5lcnJvcihcIk1heGltdW0gbGVuZ3RoIG9mIGJlYWNvbiBoYXNoIGlzIDI1NSBieXRlc1wiKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIG51bUl0ZXJhdGlvbnNFeHAgPSBwYXJzZUludChudW1JdGVyYXRpb25zRXhwKTtcbiAgICBpZiAoKG51bUl0ZXJhdGlvbnNFeHA8MTApfHwobnVtSXRlcmF0aW9uc0V4cD42MykpIHtcbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmVycm9yKFwiSW52YWxpZCBudW1JdGVyYXRpb25zRXhwLiAoTXVzdCBiZSBiZXR3ZWVuIDEwIGFuZCA2MylcIik7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cblxuICAgIGNvbnN0IHtmZDogZmRPbGQsIHNlY3Rpb25zOiBzZWN0aW9uc30gPSBhd2FpdCBiaW5GaWxlVXRpbHMucmVhZEJpbkZpbGUoemtleU5hbWVPbGQsIFwiemtleVwiLCAyKTtcbiAgICBjb25zdCB6a2V5ID0gYXdhaXQgemtleVV0aWxzLnJlYWRIZWFkZXIoZmRPbGQsIHNlY3Rpb25zKTtcblxuICAgIGlmICh6a2V5LnByb3RvY29sICE9IFwiZ3JvdGgxNlwiKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcInprZXkgZmlsZSBpcyBub3QgZ3JvdGgxNlwiKTtcbiAgICB9XG5cblxuICAgIGNvbnN0IGN1cnZlID0gYXdhaXQgZ2V0Q3VydmUoemtleS5xKTtcblxuICAgIGNvbnN0IG1wY1BhcmFtcyA9IGF3YWl0IHprZXlVdGlscy5yZWFkTVBDUGFyYW1zKGZkT2xkLCBjdXJ2ZSwgc2VjdGlvbnMpO1xuXG4gICAgY29uc3QgZmROZXcgPSBhd2FpdCBiaW5GaWxlVXRpbHMuY3JlYXRlQmluRmlsZSh6a2V5TmFtZU5ldywgXCJ6a2V5XCIsIDEsIDEwKTtcblxuICAgIGNvbnN0IHJuZyA9IGF3YWl0IG1pc2Mucm5nRnJvbUJlYWNvblBhcmFtcyhiZWFjb25IYXNoLCBudW1JdGVyYXRpb25zRXhwKTtcblxuICAgIGNvbnN0IHRyYW5zY3JpcHRIYXNoZXIgPSBCbGFrZTJiKDY0KTtcbiAgICB0cmFuc2NyaXB0SGFzaGVyLnVwZGF0ZShtcGNQYXJhbXMuY3NIYXNoKTtcbiAgICBmb3IgKGxldCBpPTA7IGk8bXBjUGFyYW1zLmNvbnRyaWJ1dGlvbnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdXRpbHMuaGFzaFB1YktleSh0cmFuc2NyaXB0SGFzaGVyLCBjdXJ2ZSwgbXBjUGFyYW1zLmNvbnRyaWJ1dGlvbnNbaV0pO1xuICAgIH1cblxuICAgIGNvbnN0IGN1ckNvbnRyaWJ1dGlvbiA9IHt9O1xuICAgIGN1ckNvbnRyaWJ1dGlvbi5kZWx0YSA9IHt9O1xuICAgIGN1ckNvbnRyaWJ1dGlvbi5kZWx0YS5wcnZLZXkgPSBjdXJ2ZS5Gci5mcm9tUm5nKHJuZyk7XG4gICAgY3VyQ29udHJpYnV0aW9uLmRlbHRhLmcxX3MgPSBjdXJ2ZS5HMS50b0FmZmluZShjdXJ2ZS5HMS5mcm9tUm5nKHJuZykpO1xuICAgIGN1ckNvbnRyaWJ1dGlvbi5kZWx0YS5nMV9zeCA9IGN1cnZlLkcxLnRvQWZmaW5lKGN1cnZlLkcxLnRpbWVzRnIoY3VyQ29udHJpYnV0aW9uLmRlbHRhLmcxX3MsIGN1ckNvbnRyaWJ1dGlvbi5kZWx0YS5wcnZLZXkpKTtcbiAgICB1dGlscy5oYXNoRzEodHJhbnNjcmlwdEhhc2hlciwgY3VydmUsIGN1ckNvbnRyaWJ1dGlvbi5kZWx0YS5nMV9zKTtcbiAgICB1dGlscy5oYXNoRzEodHJhbnNjcmlwdEhhc2hlciwgY3VydmUsIGN1ckNvbnRyaWJ1dGlvbi5kZWx0YS5nMV9zeCk7XG4gICAgY3VyQ29udHJpYnV0aW9uLnRyYW5zY3JpcHQgPSB0cmFuc2NyaXB0SGFzaGVyLmRpZ2VzdCgpO1xuICAgIGN1ckNvbnRyaWJ1dGlvbi5kZWx0YS5nMl9zcCA9IGhhc2hUb0cyKGN1cnZlLCBjdXJDb250cmlidXRpb24udHJhbnNjcmlwdCk7XG4gICAgY3VyQ29udHJpYnV0aW9uLmRlbHRhLmcyX3NweCA9IGN1cnZlLkcyLnRvQWZmaW5lKGN1cnZlLkcyLnRpbWVzRnIoY3VyQ29udHJpYnV0aW9uLmRlbHRhLmcyX3NwLCBjdXJDb250cmlidXRpb24uZGVsdGEucHJ2S2V5KSk7XG5cbiAgICB6a2V5LnZrX2RlbHRhXzEgPSBjdXJ2ZS5HMS50aW1lc0ZyKHprZXkudmtfZGVsdGFfMSwgY3VyQ29udHJpYnV0aW9uLmRlbHRhLnBydktleSk7XG4gICAgemtleS52a19kZWx0YV8yID0gY3VydmUuRzIudGltZXNGcih6a2V5LnZrX2RlbHRhXzIsIGN1ckNvbnRyaWJ1dGlvbi5kZWx0YS5wcnZLZXkpO1xuXG4gICAgY3VyQ29udHJpYnV0aW9uLmRlbHRhQWZ0ZXIgPSB6a2V5LnZrX2RlbHRhXzE7XG5cbiAgICBjdXJDb250cmlidXRpb24udHlwZSA9IDE7XG4gICAgY3VyQ29udHJpYnV0aW9uLm51bUl0ZXJhdGlvbnNFeHAgPSBudW1JdGVyYXRpb25zRXhwO1xuICAgIGN1ckNvbnRyaWJ1dGlvbi5iZWFjb25IYXNoID0gYmVhY29uSGFzaDtcblxuICAgIGlmIChuYW1lKSBjdXJDb250cmlidXRpb24ubmFtZSA9IG5hbWU7XG5cbiAgICBtcGNQYXJhbXMuY29udHJpYnV0aW9ucy5wdXNoKGN1ckNvbnRyaWJ1dGlvbik7XG5cbiAgICBhd2FpdCB6a2V5VXRpbHMud3JpdGVIZWFkZXIoZmROZXcsIHprZXkpO1xuXG4gICAgLy8gSUNcbiAgICBhd2FpdCBiaW5GaWxlVXRpbHMuY29weVNlY3Rpb24oZmRPbGQsIHNlY3Rpb25zLCBmZE5ldywgMyk7XG5cbiAgICAvLyBDb2VmZnMgKEtlZXAgb3JpZ2luYWwpXG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLmNvcHlTZWN0aW9uKGZkT2xkLCBzZWN0aW9ucywgZmROZXcsIDQpO1xuXG4gICAgLy8gQSBTZWN0aW9uXG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLmNvcHlTZWN0aW9uKGZkT2xkLCBzZWN0aW9ucywgZmROZXcsIDUpO1xuXG4gICAgLy8gQjEgU2VjdGlvblxuICAgIGF3YWl0IGJpbkZpbGVVdGlscy5jb3B5U2VjdGlvbihmZE9sZCwgc2VjdGlvbnMsIGZkTmV3LCA2KTtcblxuICAgIC8vIEIyIFNlY3Rpb25cbiAgICBhd2FpdCBiaW5GaWxlVXRpbHMuY29weVNlY3Rpb24oZmRPbGQsIHNlY3Rpb25zLCBmZE5ldywgNyk7XG5cbiAgICBjb25zdCBpbnZEZWx0YSA9IGN1cnZlLkZyLmludihjdXJDb250cmlidXRpb24uZGVsdGEucHJ2S2V5KTtcbiAgICBhd2FpdCBhcHBseUtleVRvU2VjdGlvbihmZE9sZCwgc2VjdGlvbnMsIGZkTmV3LCA4LCBjdXJ2ZSwgXCJHMVwiLCBpbnZEZWx0YSwgY3VydmUuRnIuZSgxKSwgXCJMIFNlY3Rpb25cIiwgbG9nZ2VyKTtcbiAgICBhd2FpdCBhcHBseUtleVRvU2VjdGlvbihmZE9sZCwgc2VjdGlvbnMsIGZkTmV3LCA5LCBjdXJ2ZSwgXCJHMVwiLCBpbnZEZWx0YSwgY3VydmUuRnIuZSgxKSwgXCJIIFNlY3Rpb25cIiwgbG9nZ2VyKTtcblxuICAgIGF3YWl0IHprZXlVdGlscy53cml0ZU1QQ1BhcmFtcyhmZE5ldywgY3VydmUsIG1wY1BhcmFtcyk7XG5cbiAgICBhd2FpdCBmZE9sZC5jbG9zZSgpO1xuICAgIGF3YWl0IGZkTmV3LmNsb3NlKCk7XG5cbiAgICBjb25zdCBjb250cmlidXRpb25IYXNoZXIgPSBCbGFrZTJiKDY0KTtcbiAgICB1dGlscy5oYXNoUHViS2V5KGNvbnRyaWJ1dGlvbkhhc2hlciwgY3VydmUsIGN1ckNvbnRyaWJ1dGlvbik7XG5cbiAgICBjb25zdCBjb250cmlidXRpb25IYXNoID0gY29udHJpYnV0aW9uSGFzaGVyLmRpZ2VzdCgpO1xuXG4gICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8obWlzYy5mb3JtYXRIYXNoKGNvbnRyaWJ1dGlvbkhhc2gsIFwiQ29udHJpYnV0aW9uIEhhc2g6IFwiKSk7XG5cbiAgICByZXR1cm4gY29udHJpYnV0aW9uSGFzaDtcbn1cbiIsImltcG9ydCB7IHJlYWRaS2V5IGFzIHJlYWRaS2V5IH0gZnJvbSBcIi4vemtleV91dGlscy5qc1wiO1xuaW1wb3J0IHsgdXRpbHMgfSBmcm9tIFwiZmZqYXZhc2NyaXB0XCI7XG5cbmV4cG9ydCBkZWZhdWx0IGFzeW5jIGZ1bmN0aW9uIHprZXlFeHBvcnRKc29uKHprZXlGaWxlTmFtZSkge1xuXG4gICAgY29uc3QgektleSA9IGF3YWl0IHJlYWRaS2V5KHprZXlGaWxlTmFtZSwgdHJ1ZSk7XG4gICAgZGVsZXRlIHpLZXkuY3VydmU7XG4gICAgZGVsZXRlIHpLZXkuRjtcblxuICAgIHJldHVybiB1dGlscy5zdHJpbmdpZnlCaWdJbnRzKHpLZXkpO1xufVxuIiwiLypcbiAgICBDb3B5cmlnaHQgMjAxOCAwS0lNUyBhc3NvY2lhdGlvbi5cblxuICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHNuYXJrSlMuXG5cbiAgICBzbmFya0pTIGlzIGEgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdFxuICAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3JcbiAgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuXG4gICAgc25hcmtKUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVFxuICAgIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWVxuICAgIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpY1xuICAgIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cblxuICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gICAgYWxvbmcgd2l0aCBzbmFya0pTLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuKi9cblxuLy8gRm9ybWF0IG9mIHRoZSBvdXRwdXRcbi8vICAgICAgSGFzaCBvZiB0aGUgbGFzdCBjb250cmlidXRpb24gIDY0IEJ5dGVzXG4vLyAgICAgIDJeTioyLTEgVGF1RzEgUG9pbnRzIChjb21wcmVzc2VkKVxuLy8gICAgICAyXk4gVGF1RzIgUG9pbnRzIChjb21wcmVzc2VkKVxuLy8gICAgICAyXk4gQWxwaGFUYXVHMSBQb2ludHMgKGNvbXByZXNzZWQpXG4vLyAgICAgIDJeTiBCZXRhVGF1RzEgUG9pbnRzIChjb21wcmVzc2VkKVxuLy8gICAgICBQdWJsaWMgS2V5XG4vLyAgICAgICAgICBCZXRhRzIgKGNvbXByZXNzZWQpXG4vLyAgICAgICAgICBHMSpzIChjb21wcmVzc2VkKVxuLy8gICAgICAgICAgRzEqcyp0YXUgKGNvbXByZXNzZWQpXG4vLyAgICAgICAgICBHMSp0IChjb21wcmVzc2VkKVxuLy8gICAgICAgICAgRzEqdCphbHBoYSAoY29tcHJlc3NlZClcbi8vICAgICAgICAgIEcxKnUgKGNvbXByZXNzZWQpXG4vLyAgICAgICAgICBHMSp1KmJldGEgKGNvbXByZXNzZWQpXG4vLyAgICAgICAgICBHMipzcCp0YXUgKGNvbXByZXNzZWQpXG4vLyAgICAgICAgICBHMip0cCphbHBoYSAoY29tcHJlc3NlZClcbi8vICAgICAgICAgIEcyKnVwKmJldGEgKGNvbXByZXNzZWQpXG5cbmltcG9ydCAqIGFzIGZhc3RGaWxlIGZyb20gXCJmYXN0ZmlsZVwiO1xuaW1wb3J0IEJsYWtlMmIgZnJvbSBcImJsYWtlMmItd2FzbVwiO1xuaW1wb3J0ICogYXMgdXRpbHMgZnJvbSBcIi4vemtleV91dGlscy5qc1wiO1xuaW1wb3J0ICogYXMgbWlzYyBmcm9tIFwiLi9taXNjLmpzXCI7XG5pbXBvcnQgeyBhcHBseUtleVRvQ2hhbGxlbmdlU2VjdGlvbiB9IGZyb20gXCIuL21wY19hcHBseWtleS5qc1wiO1xuaW1wb3J0IHsgaGFzaFB1YktleSB9IGZyb20gXCIuL3prZXlfdXRpbHMuanNcIjtcbmltcG9ydCB7IGhhc2hUb0cyIGFzIGhhc2hUb0cyIH0gZnJvbSBcIi4va2V5cGFpci5qc1wiO1xuXG5leHBvcnQgZGVmYXVsdCBhc3luYyBmdW5jdGlvbiBiZWxsbWFuQ29udHJpYnV0ZShjdXJ2ZSwgY2hhbGxlbmdlRmlsZW5hbWUsIHJlc3BvbnNlRmlsZU5hbWUsIGVudHJvcHksIGxvZ2dlcikge1xuICAgIGF3YWl0IEJsYWtlMmIucmVhZHkoKTtcblxuICAgIGNvbnN0IHJuZyA9IGF3YWl0IG1pc2MuZ2V0UmFuZG9tUm5nKGVudHJvcHkpO1xuXG4gICAgY29uc3QgZGVsdGEgPSBjdXJ2ZS5Gci5mcm9tUm5nKHJuZyk7XG4gICAgY29uc3QgaW52RGVsdGEgPSBjdXJ2ZS5Gci5pbnYoZGVsdGEpO1xuXG4gICAgY29uc3Qgc0cxID0gY3VydmUuRzEuRi5uOCoyO1xuICAgIGNvbnN0IHNHMiA9IGN1cnZlLkcyLkYubjgqMjtcblxuICAgIGNvbnN0IGZkRnJvbSA9IGF3YWl0IGZhc3RGaWxlLnJlYWRFeGlzdGluZyhjaGFsbGVuZ2VGaWxlbmFtZSk7XG4gICAgY29uc3QgZmRUbyA9IGF3YWl0IGZhc3RGaWxlLmNyZWF0ZU92ZXJyaWRlKHJlc3BvbnNlRmlsZU5hbWUpO1xuXG5cbiAgICBhd2FpdCBjb3B5KHNHMSk7IC8vIGFscGhhMVxuICAgIGF3YWl0IGNvcHkoc0cxKTsgLy8gYmV0YTFcbiAgICBhd2FpdCBjb3B5KHNHMik7IC8vIGJldGEyXG4gICAgYXdhaXQgY29weShzRzIpOyAvLyBnYW1tYTJcbiAgICBjb25zdCBvbGREZWx0YTEgPSBhd2FpdCByZWFkRzEoKTtcbiAgICBjb25zdCBkZWx0YTEgPSBjdXJ2ZS5HMS50aW1lc0ZyKG9sZERlbHRhMSwgZGVsdGEpO1xuICAgIGF3YWl0IHdyaXRlRzEoZGVsdGExKTtcbiAgICBjb25zdCBvbGREZWx0YTIgPSBhd2FpdCByZWFkRzIoKTtcbiAgICBjb25zdCBkZWx0YTIgPSBjdXJ2ZS5HMi50aW1lc0ZyKG9sZERlbHRhMiwgZGVsdGEpO1xuICAgIGF3YWl0IHdyaXRlRzIoZGVsdGEyKTtcblxuICAgIC8vIElDXG4gICAgY29uc3QgbklDID0gYXdhaXQgZmRGcm9tLnJlYWRVQkUzMigpO1xuICAgIGF3YWl0IGZkVG8ud3JpdGVVQkUzMihuSUMpO1xuICAgIGF3YWl0IGNvcHkobklDKnNHMSk7XG5cbiAgICAvLyBIXG4gICAgY29uc3QgbkggPSBhd2FpdCBmZEZyb20ucmVhZFVCRTMyKCk7XG4gICAgYXdhaXQgZmRUby53cml0ZVVCRTMyKG5IKTtcbiAgICBhd2FpdCBhcHBseUtleVRvQ2hhbGxlbmdlU2VjdGlvbihmZEZyb20sIGZkVG8sIG51bGwsIGN1cnZlLCBcIkcxXCIsIG5ILCBpbnZEZWx0YSwgY3VydmUuRnIuZSgxKSwgXCJVTkNPTVBSRVNTRURcIiwgXCJIXCIsIGxvZ2dlcik7XG5cbiAgICAvLyBMXG4gICAgY29uc3QgbkwgPSBhd2FpdCBmZEZyb20ucmVhZFVCRTMyKCk7XG4gICAgYXdhaXQgZmRUby53cml0ZVVCRTMyKG5MKTtcbiAgICBhd2FpdCBhcHBseUtleVRvQ2hhbGxlbmdlU2VjdGlvbihmZEZyb20sIGZkVG8sIG51bGwsIGN1cnZlLCBcIkcxXCIsIG5MLCBpbnZEZWx0YSwgY3VydmUuRnIuZSgxKSwgXCJVTkNPTVBSRVNTRURcIiwgXCJMXCIsIGxvZ2dlcik7XG5cbiAgICAvLyBBXG4gICAgY29uc3QgbkEgPSBhd2FpdCBmZEZyb20ucmVhZFVCRTMyKCk7XG4gICAgYXdhaXQgZmRUby53cml0ZVVCRTMyKG5BKTtcbiAgICBhd2FpdCBjb3B5KG5BKnNHMSk7XG5cbiAgICAvLyBCMVxuICAgIGNvbnN0IG5CMSA9IGF3YWl0IGZkRnJvbS5yZWFkVUJFMzIoKTtcbiAgICBhd2FpdCBmZFRvLndyaXRlVUJFMzIobkIxKTtcbiAgICBhd2FpdCBjb3B5KG5CMSpzRzEpO1xuXG4gICAgLy8gQjJcbiAgICBjb25zdCBuQjIgPSBhd2FpdCBmZEZyb20ucmVhZFVCRTMyKCk7XG4gICAgYXdhaXQgZmRUby53cml0ZVVCRTMyKG5CMik7XG4gICAgYXdhaXQgY29weShuQjIqc0cyKTtcblxuXG4gICAgLy8vLy8vLy8vL1xuICAgIC8vLyBSZWFkIGNvbnRyaWJ1dGlvbnNcbiAgICAvLy8vLy8vLy8vXG4gICAgY29uc3QgdHJhbnNjcmlwdEhhc2hlciA9IEJsYWtlMmIoNjQpO1xuXG4gICAgY29uc3QgbXBjUGFyYW1zID0ge307XG4gICAgLy8gY3NIYXNoXG4gICAgbXBjUGFyYW1zLmNzSGFzaCA9ICBhd2FpdCBmZEZyb20ucmVhZCg2NCk7XG4gICAgdHJhbnNjcmlwdEhhc2hlci51cGRhdGUobXBjUGFyYW1zLmNzSGFzaCk7XG5cbiAgICBjb25zdCBuQ29udHJpYnV0aW9ucyA9IGF3YWl0IGZkRnJvbS5yZWFkVUJFMzIoKTtcbiAgICBtcGNQYXJhbXMuY29udHJpYnV0aW9ucyA9IFtdO1xuICAgIGZvciAobGV0IGk9MDsgaTxuQ29udHJpYnV0aW9uczsgaSsrKSB7XG4gICAgICAgIGNvbnN0IGMgPSB7IGRlbHRhOnt9IH07XG4gICAgICAgIGMuZGVsdGFBZnRlciA9IGF3YWl0IHJlYWRHMSgpO1xuICAgICAgICBjLmRlbHRhLmcxX3MgPSBhd2FpdCByZWFkRzEoKTtcbiAgICAgICAgYy5kZWx0YS5nMV9zeCA9IGF3YWl0IHJlYWRHMSgpO1xuICAgICAgICBjLmRlbHRhLmcyX3NweCA9IGF3YWl0IHJlYWRHMigpO1xuICAgICAgICBjLnRyYW5zY3JpcHQgPSBhd2FpdCBmZEZyb20ucmVhZCg2NCk7XG4gICAgICAgIG1wY1BhcmFtcy5jb250cmlidXRpb25zLnB1c2goYyk7XG4gICAgICAgIGhhc2hQdWJLZXkodHJhbnNjcmlwdEhhc2hlciwgY3VydmUsIGMpO1xuICAgIH1cblxuICAgIGNvbnN0IGN1ckNvbnRyaWJ1dGlvbiA9IHt9O1xuICAgIGN1ckNvbnRyaWJ1dGlvbi5kZWx0YSA9IHt9O1xuICAgIGN1ckNvbnRyaWJ1dGlvbi5kZWx0YS5wcnZLZXkgPSBkZWx0YTtcbiAgICBjdXJDb250cmlidXRpb24uZGVsdGEuZzFfcyA9IGN1cnZlLkcxLnRvQWZmaW5lKGN1cnZlLkcxLmZyb21Sbmcocm5nKSk7XG4gICAgY3VyQ29udHJpYnV0aW9uLmRlbHRhLmcxX3N4ID0gY3VydmUuRzEudG9BZmZpbmUoY3VydmUuRzEudGltZXNGcihjdXJDb250cmlidXRpb24uZGVsdGEuZzFfcywgZGVsdGEpKTtcbiAgICB1dGlscy5oYXNoRzEodHJhbnNjcmlwdEhhc2hlciwgY3VydmUsIGN1ckNvbnRyaWJ1dGlvbi5kZWx0YS5nMV9zKTtcbiAgICB1dGlscy5oYXNoRzEodHJhbnNjcmlwdEhhc2hlciwgY3VydmUsIGN1ckNvbnRyaWJ1dGlvbi5kZWx0YS5nMV9zeCk7XG4gICAgY3VyQ29udHJpYnV0aW9uLnRyYW5zY3JpcHQgPSB0cmFuc2NyaXB0SGFzaGVyLmRpZ2VzdCgpO1xuICAgIGN1ckNvbnRyaWJ1dGlvbi5kZWx0YS5nMl9zcCA9IGhhc2hUb0cyKGN1cnZlLCBjdXJDb250cmlidXRpb24udHJhbnNjcmlwdCk7XG4gICAgY3VyQ29udHJpYnV0aW9uLmRlbHRhLmcyX3NweCA9IGN1cnZlLkcyLnRvQWZmaW5lKGN1cnZlLkcyLnRpbWVzRnIoY3VyQ29udHJpYnV0aW9uLmRlbHRhLmcyX3NwLCBkZWx0YSkpO1xuICAgIGN1ckNvbnRyaWJ1dGlvbi5kZWx0YUFmdGVyID0gZGVsdGExO1xuICAgIGN1ckNvbnRyaWJ1dGlvbi50eXBlID0gMDtcbiAgICBtcGNQYXJhbXMuY29udHJpYnV0aW9ucy5wdXNoKGN1ckNvbnRyaWJ1dGlvbik7XG5cblxuICAgIC8vLy8vLy8vLy9cbiAgICAvLy8gV3JpdGUgQ29udHJpYnV0aW9uXG4gICAgLy8vLy8vLy8vL1xuXG4gICAgYXdhaXQgZmRUby53cml0ZShtcGNQYXJhbXMuY3NIYXNoKTtcbiAgICBhd2FpdCBmZFRvLndyaXRlVUJFMzIobXBjUGFyYW1zLmNvbnRyaWJ1dGlvbnMubGVuZ3RoKTtcblxuICAgIGZvciAobGV0IGk9MDsgaTxtcGNQYXJhbXMuY29udHJpYnV0aW9ucy5sZW5ndGg7IGkrKykge1xuICAgICAgICBjb25zdCBjID0gbXBjUGFyYW1zLmNvbnRyaWJ1dGlvbnNbaV07XG4gICAgICAgIGF3YWl0IHdyaXRlRzEoYy5kZWx0YUFmdGVyKTtcbiAgICAgICAgYXdhaXQgd3JpdGVHMShjLmRlbHRhLmcxX3MpO1xuICAgICAgICBhd2FpdCB3cml0ZUcxKGMuZGVsdGEuZzFfc3gpO1xuICAgICAgICBhd2FpdCB3cml0ZUcyKGMuZGVsdGEuZzJfc3B4KTtcbiAgICAgICAgYXdhaXQgZmRUby53cml0ZShjLnRyYW5zY3JpcHQpO1xuICAgIH1cblxuICAgIGNvbnN0IGNvbnRyaWJ1dGlvbkhhc2hlciA9IEJsYWtlMmIoNjQpO1xuICAgIGhhc2hQdWJLZXkoY29udHJpYnV0aW9uSGFzaGVyLCBjdXJ2ZSwgY3VyQ29udHJpYnV0aW9uKTtcblxuICAgIGNvbnN0IGNvbnRyaWJ1dGlvbkhhc2ggPSBjb250cmlidXRpb25IYXNoZXIuZGlnZXN0KCk7XG5cbiAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhtaXNjLmZvcm1hdEhhc2goY29udHJpYnV0aW9uSGFzaCwgXCJDb250cmlidXRpb24gSGFzaDogXCIpKTtcblxuICAgIGF3YWl0IGZkVG8uY2xvc2UoKTtcbiAgICBhd2FpdCBmZEZyb20uY2xvc2UoKTtcblxuICAgIHJldHVybiBjb250cmlidXRpb25IYXNoO1xuXG4gICAgYXN5bmMgZnVuY3Rpb24gY29weShuQnl0ZXMpIHtcbiAgICAgICAgY29uc3QgQ0hVTktfU0laRSA9IGZkRnJvbS5wYWdlU2l6ZSoyO1xuICAgICAgICBmb3IgKGxldCBpPTA7IGk8bkJ5dGVzOyBpKz0gQ0hVTktfU0laRSkge1xuICAgICAgICAgICAgY29uc3QgbiA9IE1hdGgubWluKG5CeXRlcyAtaSwgQ0hVTktfU0laRSk7XG4gICAgICAgICAgICBjb25zdCBidWZmID0gYXdhaXQgZmRGcm9tLnJlYWQobik7XG4gICAgICAgICAgICBhd2FpdCBmZFRvLndyaXRlKGJ1ZmYpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgYXN5bmMgZnVuY3Rpb24gcmVhZEcxKCkge1xuICAgICAgICBjb25zdCBidWZmID0gYXdhaXQgZmRGcm9tLnJlYWQoY3VydmUuRzEuRi5uOCoyKTtcbiAgICAgICAgcmV0dXJuIGN1cnZlLkcxLmZyb21ScHJVbmNvbXByZXNzZWQoYnVmZiwgMCk7XG4gICAgfVxuXG4gICAgYXN5bmMgZnVuY3Rpb24gcmVhZEcyKCkge1xuICAgICAgICBjb25zdCBidWZmID0gYXdhaXQgZmRGcm9tLnJlYWQoY3VydmUuRzIuRi5uOCoyKTtcbiAgICAgICAgcmV0dXJuIGN1cnZlLkcyLmZyb21ScHJVbmNvbXByZXNzZWQoYnVmZiwgMCk7XG4gICAgfVxuXG4gICAgYXN5bmMgZnVuY3Rpb24gd3JpdGVHMShQKSB7XG4gICAgICAgIGNvbnN0IGJ1ZmYgPSBuZXcgVWludDhBcnJheShzRzEpO1xuICAgICAgICBjdXJ2ZS5HMS50b1JwclVuY29tcHJlc3NlZChidWZmLCAwLCBQKTtcbiAgICAgICAgYXdhaXQgZmRUby53cml0ZShidWZmKTtcbiAgICB9XG5cbiAgICBhc3luYyBmdW5jdGlvbiB3cml0ZUcyKFApIHtcbiAgICAgICAgY29uc3QgYnVmZiA9IG5ldyBVaW50OEFycmF5KHNHMik7XG4gICAgICAgIGN1cnZlLkcyLnRvUnByVW5jb21wcmVzc2VkKGJ1ZmYsIDAsIFApO1xuICAgICAgICBhd2FpdCBmZFRvLndyaXRlKGJ1ZmYpO1xuICAgIH1cblxuXG59XG4iLCIvKlxuICAgIENvcHlyaWdodCAyMDE4IDBLSU1TIGFzc29jaWF0aW9uLlxuXG4gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2Ygc25hcmtKUy5cblxuICAgIHNuYXJrSlMgaXMgYSBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0XG4gICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxuICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG5cbiAgICBzbmFya0pTIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUXG4gICAgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZXG4gICAgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljXG4gICAgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuXG4gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAgICBhbG9uZyB3aXRoIHNuYXJrSlMuIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXG4qL1xuXG5pbXBvcnQgKiBhcyBiaW5GaWxlVXRpbHMgZnJvbSBcIkBpZGVuMy9iaW5maWxldXRpbHNcIjtcbmltcG9ydCAqIGFzIHprZXlVdGlscyBmcm9tIFwiLi96a2V5X3V0aWxzLmpzXCI7XG5pbXBvcnQge2dldEN1cnZlRnJvbVEgYXMgZ2V0Q3VydmV9IGZyb20gXCIuL2N1cnZlcy5qc1wiO1xuaW1wb3J0IHt1dGlsc30gZnJvbSBcImZmamF2YXNjcmlwdFwiO1xuaW1wb3J0IHtGRkxPTktfUFJPVE9DT0xfSUR9IGZyb20gXCIuL3prZXlfY29uc3RhbnRzLmpzXCI7XG5cbmNvbnN0IHtzdHJpbmdpZnlCaWdJbnRzfSA9IHV0aWxzO1xuXG5leHBvcnQgZGVmYXVsdCBhc3luYyBmdW5jdGlvbiB6a2V5RXhwb3J0VmVyaWZpY2F0aW9uS2V5KHprZXlOYW1lLCBsb2dnZXIpIHtcbiAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhcIkVYUE9SVCBWRVJJRklDQVRJT04gS0VZIFNUQVJURURcIik7XG5cbiAgICBjb25zdCB7ZmQsIHNlY3Rpb25zfSA9IGF3YWl0IGJpbkZpbGVVdGlscy5yZWFkQmluRmlsZSh6a2V5TmFtZSwgXCJ6a2V5XCIsIDIpO1xuICAgIGNvbnN0IHprZXkgPSBhd2FpdCB6a2V5VXRpbHMucmVhZEhlYWRlcihmZCwgc2VjdGlvbnMpO1xuXG4gICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oXCI+IERldGVjdGVkIHByb3RvY29sOiBcIiArIHprZXkucHJvdG9jb2wpO1xuXG4gICAgbGV0IHJlcztcbiAgICBpZiAoemtleS5wcm90b2NvbCA9PT0gXCJncm90aDE2XCIpIHtcbiAgICAgICAgcmVzID0gYXdhaXQgZ3JvdGgxNlZrKHprZXksIGZkLCBzZWN0aW9ucyk7XG4gICAgfSBlbHNlIGlmICh6a2V5LnByb3RvY29sID09PSBcInBsb25rXCIpIHtcbiAgICAgICAgcmVzID0gYXdhaXQgcGxvbmtWayh6a2V5KTtcbiAgICB9IGVsc2UgaWYgKHprZXkucHJvdG9jb2xJZCAmJiB6a2V5LnByb3RvY29sSWQgPT09IEZGTE9OS19QUk9UT0NPTF9JRCkge1xuICAgICAgICByZXMgPSBhd2FpdCBleHBvcnRGRmxvbmtWayh6a2V5LCBsb2dnZXIpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcInprZXkgZmlsZSBwcm90b2NvbCB1bnJlY29nbml6ZWRcIik7XG4gICAgfVxuXG4gICAgYXdhaXQgZmQuY2xvc2UoKTtcblxuICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKFwiRVhQT1JUIFZFUklGSUNBVElPTiBLRVkgRklOSVNIRURcIik7XG5cbiAgICByZXR1cm4gcmVzO1xufVxuXG5cbmFzeW5jIGZ1bmN0aW9uIGdyb3RoMTZWayh6a2V5LCBmZCwgc2VjdGlvbnMpIHtcbiAgICBjb25zdCBjdXJ2ZSA9IGF3YWl0IGdldEN1cnZlKHprZXkucSk7XG4gICAgY29uc3Qgc0cxID0gY3VydmUuRzEuRi5uOCAqIDI7XG5cbiAgICBjb25zdCBhbHBoYUJldGEgPSBhd2FpdCBjdXJ2ZS5wYWlyaW5nKHprZXkudmtfYWxwaGFfMSwgemtleS52a19iZXRhXzIpO1xuXG4gICAgbGV0IHZLZXkgPSB7XG4gICAgICAgIHByb3RvY29sOiB6a2V5LnByb3RvY29sLFxuICAgICAgICBjdXJ2ZTogY3VydmUubmFtZSxcbiAgICAgICAgblB1YmxpYzogemtleS5uUHVibGljLFxuXG4gICAgICAgIHZrX2FscGhhXzE6IGN1cnZlLkcxLnRvT2JqZWN0KHprZXkudmtfYWxwaGFfMSksXG5cbiAgICAgICAgdmtfYmV0YV8yOiBjdXJ2ZS5HMi50b09iamVjdCh6a2V5LnZrX2JldGFfMiksXG4gICAgICAgIHZrX2dhbW1hXzI6IGN1cnZlLkcyLnRvT2JqZWN0KHprZXkudmtfZ2FtbWFfMiksXG4gICAgICAgIHZrX2RlbHRhXzI6IGN1cnZlLkcyLnRvT2JqZWN0KHprZXkudmtfZGVsdGFfMiksXG5cbiAgICAgICAgdmtfYWxwaGFiZXRhXzEyOiBjdXJ2ZS5HdC50b09iamVjdChhbHBoYUJldGEpXG4gICAgfTtcblxuICAgIC8vIFJlYWQgSUMgU2VjdGlvblxuICAgIC8vLy8vLy8vLy8vXG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLnN0YXJ0UmVhZFVuaXF1ZVNlY3Rpb24oZmQsIHNlY3Rpb25zLCAzKTtcbiAgICB2S2V5LklDID0gW107XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPD0gemtleS5uUHVibGljOyBpKyspIHtcbiAgICAgICAgY29uc3QgYnVmZiA9IGF3YWl0IGZkLnJlYWQoc0cxKTtcbiAgICAgICAgY29uc3QgUCA9IGN1cnZlLkcxLnRvT2JqZWN0KGJ1ZmYpO1xuICAgICAgICB2S2V5LklDLnB1c2goUCk7XG4gICAgfVxuICAgIGF3YWl0IGJpbkZpbGVVdGlscy5lbmRSZWFkU2VjdGlvbihmZCk7XG5cbiAgICB2S2V5ID0gc3RyaW5naWZ5QmlnSW50cyh2S2V5KTtcblxuICAgIHJldHVybiB2S2V5O1xufVxuXG5cbmFzeW5jIGZ1bmN0aW9uIHBsb25rVmsoemtleSkge1xuICAgIGNvbnN0IGN1cnZlID0gYXdhaXQgZ2V0Q3VydmUoemtleS5xKTtcblxuICAgIGxldCB2S2V5ID0ge1xuICAgICAgICBwcm90b2NvbDogemtleS5wcm90b2NvbCxcbiAgICAgICAgY3VydmU6IGN1cnZlLm5hbWUsXG4gICAgICAgIG5QdWJsaWM6IHprZXkublB1YmxpYyxcbiAgICAgICAgcG93ZXI6IHprZXkucG93ZXIsXG5cbiAgICAgICAgazE6IGN1cnZlLkZyLnRvT2JqZWN0KHprZXkuazEpLFxuICAgICAgICBrMjogY3VydmUuRnIudG9PYmplY3QoemtleS5rMiksXG5cbiAgICAgICAgUW06IGN1cnZlLkcxLnRvT2JqZWN0KHprZXkuUW0pLFxuICAgICAgICBRbDogY3VydmUuRzEudG9PYmplY3QoemtleS5RbCksXG4gICAgICAgIFFyOiBjdXJ2ZS5HMS50b09iamVjdCh6a2V5LlFyKSxcbiAgICAgICAgUW86IGN1cnZlLkcxLnRvT2JqZWN0KHprZXkuUW8pLFxuICAgICAgICBRYzogY3VydmUuRzEudG9PYmplY3QoemtleS5RYyksXG4gICAgICAgIFMxOiBjdXJ2ZS5HMS50b09iamVjdCh6a2V5LlMxKSxcbiAgICAgICAgUzI6IGN1cnZlLkcxLnRvT2JqZWN0KHprZXkuUzIpLFxuICAgICAgICBTMzogY3VydmUuRzEudG9PYmplY3QoemtleS5TMyksXG5cbiAgICAgICAgWF8yOiBjdXJ2ZS5HMi50b09iamVjdCh6a2V5LlhfMiksXG5cbiAgICAgICAgdzogY3VydmUuRnIudG9PYmplY3QoY3VydmUuRnIud1t6a2V5LnBvd2VyXSlcbiAgICB9O1xuXG4gICAgdktleSA9IHN0cmluZ2lmeUJpZ0ludHModktleSk7XG5cbiAgICByZXR1cm4gdktleTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gZXhwb3J0RkZsb25rVmsoemtleSwgbG9nZ2VyKSB7XG4gICAgY29uc3QgY3VydmUgPSBhd2FpdCBnZXRDdXJ2ZSh6a2V5LnEpO1xuXG4gICAgbGV0IHZLZXkgPSB7XG4gICAgICAgIHByb3RvY29sOiB6a2V5LnByb3RvY29sLFxuICAgICAgICBjdXJ2ZTogY3VydmUubmFtZSxcbiAgICAgICAgblB1YmxpYzogemtleS5uUHVibGljLFxuICAgICAgICBwb3dlcjogemtleS5wb3dlcixcblxuICAgICAgICBrMTogY3VydmUuRnIudG9PYmplY3QoemtleS5rMSksXG4gICAgICAgIGsyOiBjdXJ2ZS5Gci50b09iamVjdCh6a2V5LmsyKSxcblxuICAgICAgICB3OiBjdXJ2ZS5Gci50b09iamVjdChjdXJ2ZS5Gci53W3prZXkucG93ZXJdKSxcbiAgICAgICAgLy93VzogY3VydmUuRnIudG9PYmplY3QoY3VydmUuRnIud1t6a2V5LnBvd2VyICsgMV0pLFxuICAgICAgICB3MzogY3VydmUuRnIudG9PYmplY3QoemtleS53MyksXG4gICAgICAgIHc0OiBjdXJ2ZS5Gci50b09iamVjdCh6a2V5Lnc0KSxcbiAgICAgICAgdzg6IGN1cnZlLkZyLnRvT2JqZWN0KHprZXkudzgpLFxuICAgICAgICB3cjogY3VydmUuRnIudG9PYmplY3QoemtleS53ciksXG5cbiAgICAgICAgWF8yOiBjdXJ2ZS5HMi50b09iamVjdCh6a2V5LlhfMiksXG5cbiAgICAgICAgQzA6IGN1cnZlLkcxLnRvT2JqZWN0KHprZXkuQzApLFxuICAgIH07XG5cbiAgICByZXR1cm4gc3RyaW5naWZ5QmlnSW50cyh2S2V5KTtcbn1cbiIsIi8qXG4gICAgQ29weXJpZ2h0IDIwMjEgMEtJTVMgYXNzb2NpYXRpb24uXG5cbiAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBzbmFya0pTLlxuXG4gICAgc25hcmtKUyBpcyBhIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXRcbiAgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yXG4gICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cblxuICAgIHNuYXJrSlMgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVRcbiAgICBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFlcbiAgICBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWNcbiAgICBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG5cbiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICAgIGFsb25nIHdpdGggc25hcmtKUy4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cbiovXG5cbmltcG9ydCBlanMgZnJvbSBcImVqc1wiO1xuaW1wb3J0IHtnZXRDdXJ2ZUZyb21OYW1lfSBmcm9tIFwiLi9jdXJ2ZXMuanNcIjtcbmltcG9ydCB7dXRpbHN9IGZyb20gXCJmZmphdmFzY3JpcHRcIjtcblxuY29uc3Qge3Vuc3RyaW5naWZ5QmlnSW50cywgc3RyaW5naWZ5QmlnSW50c30gPSB1dGlscztcblxuZXhwb3J0IGRlZmF1bHQgYXN5bmMgZnVuY3Rpb24gZmZsb25rRXhwb3J0U29saWRpdHlWZXJpZmllcih2aywgdGVtcGxhdGVzLCBsb2dnZXIpIHtcbiAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhcIkZGTE9OSyBFWFBPUlQgU09MSURJVFkgVkVSSUZJRVIgU1RBUlRFRFwiKTtcblxuICAgIGNvbnN0IGN1cnZlID0gYXdhaXQgZ2V0Q3VydmVGcm9tTmFtZSh2ay5jdXJ2ZSk7XG5cbiAgICAvLyBQcmVjb21wdXRlIHczXzIsIHc0XzIgYW5kIHc0XzNcbiAgICBsZXQgdzMgPSBmcm9tVmtleSh2ay53Myk7XG4gICAgdmsudzNfMiA9IHRvVmtleShjdXJ2ZS5Gci5zcXVhcmUodzMpKTtcblxuICAgIGxldCB3NCA9IGZyb21Wa2V5KHZrLnc0KTtcbiAgICB2ay53NF8yID0gdG9Wa2V5KGN1cnZlLkZyLnNxdWFyZSh3NCkpO1xuICAgIHZrLnc0XzMgPSB0b1ZrZXkoY3VydmUuRnIubXVsKGN1cnZlLkZyLnNxdWFyZSh3NCksIHc0KSk7XG5cbiAgICBsZXQgdzggPSBmcm9tVmtleSh2ay53OCk7XG4gICAgbGV0IGFjYyA9IGN1cnZlLkZyLm9uZTtcblxuICAgIGZvciAobGV0IGkgPSAxOyBpIDwgODsgaSsrKSB7XG4gICAgICAgIGFjYyA9IGN1cnZlLkZyLm11bChhY2MsIHc4KTtcbiAgICAgICAgdmtbXCJ3OF9cIiArIGldID0gdG9Wa2V5KGFjYyk7XG4gICAgfVxuXG4gICAgbGV0IHRlbXBsYXRlID0gdGVtcGxhdGVzW3ZrLnByb3RvY29sXTtcblxuICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKFwiRkZMT05LIEVYUE9SVCBTT0xJRElUWSBWRVJJRklFUiBGSU5JU0hFRFwiKTtcblxuICAgIHJldHVybiBlanMucmVuZGVyKHRlbXBsYXRlLCB2ayk7XG5cbiAgICBmdW5jdGlvbiBmcm9tVmtleShzdHIpIHtcbiAgICAgICAgY29uc3QgdmFsID0gdW5zdHJpbmdpZnlCaWdJbnRzKHN0cik7XG4gICAgICAgIHJldHVybiBjdXJ2ZS5Gci5mcm9tT2JqZWN0KHZhbCk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gdG9Wa2V5KHZhbCkge1xuICAgICAgICBjb25zdCBzdHIgPSBjdXJ2ZS5Gci50b09iamVjdCh2YWwpO1xuICAgICAgICByZXR1cm4gc3RyaW5naWZ5QmlnSW50cyhzdHIpO1xuICAgIH1cbn1cblxuIiwiaW1wb3J0IGVqcyBmcm9tIFwiZWpzXCI7XG5cbmltcG9ydCBleHBvcnRWZXJpZmljYXRpb25LZXkgZnJvbSBcIi4vemtleV9leHBvcnRfdmVyaWZpY2F0aW9ua2V5LmpzXCI7XG5pbXBvcnQgZmZsb25rRXhwb3J0U29saWRpdHlWZXJpZmllckNtZCBmcm9tIFwiLi9mZmxvbmtfZXhwb3J0X3NvbGlkaXR5X3ZlcmlmaWVyLmpzXCI7XG4vLyBOb3QgcmVhZHkgeWV0XG4vLyBtb2R1bGUuZXhwb3J0cy5nZW5lcmF0ZVZlcmlmaWVyX2tpbWxlZW9oID0gZ2VuZXJhdGVWZXJpZmllcl9raW1sZWVvaDtcblxuZXhwb3J0IGRlZmF1bHQgYXN5bmMgZnVuY3Rpb24gZXhwb3J0U29saWRpdHlWZXJpZmllcih6S2V5TmFtZSwgdGVtcGxhdGVzLCBsb2dnZXIpIHtcblxuICAgIGNvbnN0IHZlcmlmaWNhdGlvbktleSA9IGF3YWl0IGV4cG9ydFZlcmlmaWNhdGlvbktleSh6S2V5TmFtZSwgbG9nZ2VyKTtcblxuICAgIGlmIChcImZmbG9ua1wiID09PSB2ZXJpZmljYXRpb25LZXkucHJvdG9jb2wpIHtcbiAgICAgICAgcmV0dXJuIGZmbG9ua0V4cG9ydFNvbGlkaXR5VmVyaWZpZXJDbWQodmVyaWZpY2F0aW9uS2V5LCB0ZW1wbGF0ZXMsIGxvZ2dlcik7XG4gICAgfVxuXG4gICAgbGV0IHRlbXBsYXRlID0gdGVtcGxhdGVzW3ZlcmlmaWNhdGlvbktleS5wcm90b2NvbF07XG5cbiAgICByZXR1cm4gZWpzLnJlbmRlcih0ZW1wbGF0ZSwgdmVyaWZpY2F0aW9uS2V5KTtcbn1cbiIsIi8qXG4gICAgQ29weXJpZ2h0IDIwMTggMEtJTVMgYXNzb2NpYXRpb24uXG5cbiAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBzbmFya0pTLlxuXG4gICAgc25hcmtKUyBpcyBhIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXRcbiAgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yXG4gICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cblxuICAgIHNuYXJrSlMgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVRcbiAgICBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFlcbiAgICBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWNcbiAgICBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG5cbiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICAgIGFsb25nIHdpdGggc25hcmtKUy4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cbiovXG5cblxuZXhwb3J0IHtkZWZhdWx0IGFzIG5ld1pLZXl9IGZyb20gXCIuL3prZXlfbmV3LmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgZXhwb3J0QmVsbG1hbn0gZnJvbSBcIi4vemtleV9leHBvcnRfYmVsbG1hbi5qc1wiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIGltcG9ydEJlbGxtYW59IGZyb20gXCIuL3prZXlfaW1wb3J0X2JlbGxtYW4uanNcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyB2ZXJpZnlGcm9tUjFjc30gZnJvbSBcIi4vemtleV92ZXJpZnlfZnJvbXIxY3MuanNcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyB2ZXJpZnlGcm9tSW5pdH0gZnJvbSBcIi4vemtleV92ZXJpZnlfZnJvbWluaXQuanNcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBjb250cmlidXRlfSBmcm9tIFwiLi96a2V5X2NvbnRyaWJ1dGUuanNcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBiZWFjb259IGZyb20gXCIuL3prZXlfYmVhY29uLmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgZXhwb3J0SnNvbn0gZnJvbSBcIi4vemtleV9leHBvcnRfanNvbi5qc1wiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIGJlbGxtYW5Db250cmlidXRlfSBmcm9tIFwiLi96a2V5X2JlbGxtYW5fY29udHJpYnV0ZS5qc1wiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIGV4cG9ydFZlcmlmaWNhdGlvbktleX0gZnJvbSBcIi4vemtleV9leHBvcnRfdmVyaWZpY2F0aW9ua2V5LmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgZXhwb3J0U29saWRpdHlWZXJpZmllcn0gZnJvbSBcIi4vemtleV9leHBvcnRfc29saWRpdHl2ZXJpZmllci5qc1wiO1xuIiwiLypcbiAgICBDb3B5cmlnaHQgMjAyMSAwa2ltcyBhc3NvY2lhdGlvbi5cblxuICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHNuYXJranMuXG5cbiAgICBzbmFya2pzIGlzIGEgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yXG4gICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZVxuICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKVxuICAgIGFueSBsYXRlciB2ZXJzaW9uLlxuXG4gICAgc25hcmtqcyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWVxuICAgIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvclxuICAgIG1vcmUgZGV0YWlscy5cblxuICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nIHdpdGhcbiAgICBzbmFya2pzLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuKi9cblxuLyogSW1wbGVtZW50YXRpb24gb2YgdGhpcyBwYXBlcjogaHR0cHM6Ly9lcHJpbnQuaWFjci5vcmcvMjAxOS85NTMucGRmICovXG5cbmltcG9ydCB7cmVhZFIxY3NGZH0gZnJvbSBcInIxY3NmaWxlXCI7XG5pbXBvcnQgKiBhcyB1dGlscyBmcm9tIFwiLi9wb3dlcnNvZnRhdV91dGlscy5qc1wiO1xuaW1wb3J0IHtcbiAgICByZWFkQmluRmlsZSxcbiAgICBjcmVhdGVCaW5GaWxlLFxuICAgIHJlYWRTZWN0aW9uLFxuICAgIHdyaXRlQmlnSW50LFxuICAgIHN0YXJ0V3JpdGVTZWN0aW9uLFxuICAgIGVuZFdyaXRlU2VjdGlvbixcbn0gZnJvbSBcIkBpZGVuMy9iaW5maWxldXRpbHNcIjtcbmltcG9ydCB7IGxvZzIgIH0gZnJvbSBcIi4vbWlzYy5qc1wiO1xuaW1wb3J0IHsgU2NhbGFyLCBCaWdCdWZmZXIgfSBmcm9tIFwiZmZqYXZhc2NyaXB0XCI7XG5pbXBvcnQgQmxha2UyYiBmcm9tIFwiYmxha2UyYi13YXNtXCI7XG5pbXBvcnQgQmlnQXJyYXkgZnJvbSBcIi4vYmlnYXJyYXkuanNcIjtcblxuXG5leHBvcnQgZGVmYXVsdCBhc3luYyBmdW5jdGlvbiBwbG9ua1NldHVwKHIxY3NOYW1lLCBwdGF1TmFtZSwgemtleU5hbWUsIGxvZ2dlcikge1xuXG4gICAgaWYgKGdsb2JhbFRoaXMuZ2MpIHtnbG9iYWxUaGlzLmdjKCk7fVxuXG4gICAgYXdhaXQgQmxha2UyYi5yZWFkeSgpO1xuXG4gICAgY29uc3Qge2ZkOiBmZFBUYXUsIHNlY3Rpb25zOiBzZWN0aW9uc1BUYXV9ID0gYXdhaXQgcmVhZEJpbkZpbGUocHRhdU5hbWUsIFwicHRhdVwiLCAxLCAxPDwyMiwgMTw8MjQpO1xuICAgIGNvbnN0IHtjdXJ2ZSwgcG93ZXJ9ID0gYXdhaXQgdXRpbHMucmVhZFBUYXVIZWFkZXIoZmRQVGF1LCBzZWN0aW9uc1BUYXUpO1xuICAgIGNvbnN0IHtmZDogZmRSMWNzLCBzZWN0aW9uczogc2VjdGlvbnNSMWNzfSA9IGF3YWl0IHJlYWRCaW5GaWxlKHIxY3NOYW1lLCBcInIxY3NcIiwgMSwgMTw8MjIsIDE8PDI0KTtcblxuICAgIGNvbnN0IHIxY3MgPSBhd2FpdCByZWFkUjFjc0ZkKGZkUjFjcywgc2VjdGlvbnNSMWNzLCB7bG9hZENvbnN0cmFpbnRzOiB0cnVlLCBsb2FkQ3VzdG9tR2F0ZXM6IHRydWV9KTtcblxuICAgIGNvbnN0IHNHMSA9IGN1cnZlLkcxLkYubjgqMjtcbiAgICBjb25zdCBHMSA9IGN1cnZlLkcxO1xuICAgIGNvbnN0IHNHMiA9IGN1cnZlLkcyLkYubjgqMjtcbiAgICBjb25zdCBGciA9IGN1cnZlLkZyO1xuICAgIGNvbnN0IG44ciA9IGN1cnZlLkZyLm44O1xuXG4gICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oXCJSZWFkaW5nIHIxY3NcIik7XG4gICAgbGV0IHNSMWNzID0gYXdhaXQgcmVhZFNlY3Rpb24oZmRSMWNzLCBzZWN0aW9uc1IxY3MsIDIpO1xuXG4gICAgY29uc3QgcGxvbmtDb25zdHJhaW50cyA9IG5ldyBCaWdBcnJheSgpO1xuICAgIGNvbnN0IHBsb25rQWRkaXRpb25zID0gbmV3IEJpZ0FycmF5KCk7XG4gICAgbGV0IHBsb25rTlZhcnMgPSByMWNzLm5WYXJzO1xuXG4gICAgY29uc3QgblB1YmxpYyA9IHIxY3Mubk91dHB1dHMgKyByMWNzLm5QdWJJbnB1dHM7XG5cbiAgICBhd2FpdCBwcm9jZXNzQ29uc3RyYWludHMoY3VydmUuRnIsIHIxY3MsIGxvZ2dlcik7XG5cbiAgICBpZiAoZ2xvYmFsVGhpcy5nYykge2dsb2JhbFRoaXMuZ2MoKTt9XG5cbiAgICBjb25zdCBmZFpLZXkgPSBhd2FpdCBjcmVhdGVCaW5GaWxlKHprZXlOYW1lLCBcInprZXlcIiwgMSwgMTQsIDE8PDIyLCAxPDwyNCk7XG5cblxuICAgIGlmIChyMWNzLnByaW1lICE9IGN1cnZlLnIpIHtcbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmVycm9yKFwicjFjcyBjdXJ2ZSBkb2VzIG5vdCBtYXRjaCBwb3dlcnMgb2YgdGF1IGNlcmVtb255IGN1cnZlXCIpO1xuICAgICAgICByZXR1cm4gLTE7XG4gICAgfVxuXG4gICAgbGV0IGNpclBvd2VyID0gbG9nMihwbG9ua0NvbnN0cmFpbnRzLmxlbmd0aCAtMSkgKzE7XG4gICAgaWYgKGNpclBvd2VyIDwgMykgY2lyUG93ZXIgPSAzOyAgIC8vIEFzIHRoZSB0IHBvbHlub21pYWwgaXMgbis1IHdlIG5lZWQgYXQgbGVhc3QgYSBwb3dlciBvZiA0XG4gICAgY29uc3QgZG9tYWluU2l6ZSA9IDIgKiogY2lyUG93ZXI7XG5cbiAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhcIlBsb25rIGNvbnN0cmFpbnRzOiBcIiArIHBsb25rQ29uc3RyYWludHMubGVuZ3RoKTtcbiAgICBpZiAoY2lyUG93ZXIgPiBwb3dlcikge1xuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZXJyb3IoYGNpcmN1aXQgdG9vIGJpZyBmb3IgdGhpcyBwb3dlciBvZiB0YXUgY2VyZW1vbnkuICR7cGxvbmtDb25zdHJhaW50cy5sZW5ndGh9ID4gMioqJHtwb3dlcn1gKTtcbiAgICAgICAgcmV0dXJuIC0xO1xuICAgIH1cblxuICAgIGlmICghc2VjdGlvbnNQVGF1WzEyXSkge1xuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZXJyb3IoXCJQb3dlcnMgb2YgdGF1IGlzIG5vdCBwcmVwYXJlZC5cIik7XG4gICAgICAgIHJldHVybiAtMTtcbiAgICB9XG5cblxuICAgIGNvbnN0IExQb2ludHMgPSBuZXcgQmlnQnVmZmVyKGRvbWFpblNpemUqc0cxKTtcbiAgICBjb25zdCBvID0gc2VjdGlvbnNQVGF1WzEyXVswXS5wICsgKCgyICoqIChjaXJQb3dlcikpIC0xKSpzRzE7XG4gICAgYXdhaXQgZmRQVGF1LnJlYWRUb0J1ZmZlcihMUG9pbnRzLCAwLCBkb21haW5TaXplKnNHMSwgbyk7XG5cbiAgICBjb25zdCBbazEsIGsyXSA9IGdldEsxSzIoKTtcblxuICAgIGNvbnN0IHZrID0ge307XG5cblxuICAgIGF3YWl0IHdyaXRlQWRkaXRpb25zKDMsIFwiQWRkaXRpb25zXCIpO1xuICAgIGlmIChnbG9iYWxUaGlzLmdjKSB7Z2xvYmFsVGhpcy5nYygpO31cbiAgICBhd2FpdCB3cml0ZVdpdG5lc3NNYXAoNCwgMCwgXCJBbWFwXCIpO1xuICAgIGlmIChnbG9iYWxUaGlzLmdjKSB7Z2xvYmFsVGhpcy5nYygpO31cbiAgICBhd2FpdCB3cml0ZVdpdG5lc3NNYXAoNSwgMSwgXCJCbWFwXCIpO1xuICAgIGlmIChnbG9iYWxUaGlzLmdjKSB7Z2xvYmFsVGhpcy5nYygpO31cbiAgICBhd2FpdCB3cml0ZVdpdG5lc3NNYXAoNiwgMiwgXCJDbWFwXCIpO1xuICAgIGlmIChnbG9iYWxUaGlzLmdjKSB7Z2xvYmFsVGhpcy5nYygpO31cbiAgICBhd2FpdCB3cml0ZVFNYXAoNywgMywgXCJRbVwiKTtcbiAgICBpZiAoZ2xvYmFsVGhpcy5nYykge2dsb2JhbFRoaXMuZ2MoKTt9XG4gICAgYXdhaXQgd3JpdGVRTWFwKDgsIDQsIFwiUWxcIik7XG4gICAgaWYgKGdsb2JhbFRoaXMuZ2MpIHtnbG9iYWxUaGlzLmdjKCk7fVxuICAgIGF3YWl0IHdyaXRlUU1hcCg5LCA1LCBcIlFyXCIpO1xuICAgIGlmIChnbG9iYWxUaGlzLmdjKSB7Z2xvYmFsVGhpcy5nYygpO31cbiAgICBhd2FpdCB3cml0ZVFNYXAoMTAsIDYsIFwiUW9cIik7XG4gICAgaWYgKGdsb2JhbFRoaXMuZ2MpIHtnbG9iYWxUaGlzLmdjKCk7fVxuICAgIGF3YWl0IHdyaXRlUU1hcCgxMSwgNywgXCJRY1wiKTtcbiAgICBpZiAoZ2xvYmFsVGhpcy5nYykge2dsb2JhbFRoaXMuZ2MoKTt9XG4gICAgYXdhaXQgd3JpdGVTaWdtYSgxMiwgXCJzaWdtYVwiKTtcbiAgICBpZiAoZ2xvYmFsVGhpcy5nYykge2dsb2JhbFRoaXMuZ2MoKTt9XG4gICAgYXdhaXQgd3JpdGVMcygxMywgXCJsYWdyYW5nZSBwb2x5bm9taWFsc1wiKTtcbiAgICBpZiAoZ2xvYmFsVGhpcy5nYykge2dsb2JhbFRoaXMuZ2MoKTt9XG5cbiAgICAvLyBXcml0ZSBQVGF1IHBvaW50c1xuICAgIC8vLy8vLy8vLy8vL1xuXG4gICAgYXdhaXQgc3RhcnRXcml0ZVNlY3Rpb24oZmRaS2V5LCAxNCk7XG4gICAgY29uc3QgYnVmZk91dCA9IG5ldyBCaWdCdWZmZXIoKGRvbWFpblNpemUrNikqc0cxKTtcbiAgICBhd2FpdCBmZFBUYXUucmVhZFRvQnVmZmVyKGJ1ZmZPdXQsIDAsIChkb21haW5TaXplKzYpKnNHMSwgc2VjdGlvbnNQVGF1WzJdWzBdLnApO1xuICAgIGF3YWl0IGZkWktleS53cml0ZShidWZmT3V0KTtcbiAgICBhd2FpdCBlbmRXcml0ZVNlY3Rpb24oZmRaS2V5KTtcbiAgICBpZiAoZ2xvYmFsVGhpcy5nYykge2dsb2JhbFRoaXMuZ2MoKTt9XG5cblxuICAgIGF3YWl0IHdyaXRlSGVhZGVycygpO1xuXG4gICAgYXdhaXQgZmRaS2V5LmNsb3NlKCk7XG4gICAgYXdhaXQgZmRSMWNzLmNsb3NlKCk7XG4gICAgYXdhaXQgZmRQVGF1LmNsb3NlKCk7XG5cbiAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhcIlNldHVwIEZpbmlzaGVkXCIpO1xuXG4gICAgcmV0dXJuIDtcblxuICAgIGFzeW5jIGZ1bmN0aW9uIHByb2Nlc3NDb25zdHJhaW50cyhGciwgcjFjcywgbG9nZ2VyKSB7XG5cbiAgICAgICAgZnVuY3Rpb24gbm9ybWFsaXplKGxpbmVhckNvbWIpIHtcbiAgICAgICAgICAgIGNvbnN0IHNzID0gT2JqZWN0LmtleXMobGluZWFyQ29tYik7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgaWYgKGxpbmVhckNvbWJbc3NbaV1dID09IDBuKSBkZWxldGUgbGluZWFyQ29tYltzc1tpXV07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBmdW5jdGlvbiBqb2luKGxpbmVhckNvbWIxLCBrLCBsaW5lYXJDb21iMikge1xuICAgICAgICAgICAgY29uc3QgcmVzID0ge307XG5cbiAgICAgICAgICAgIGZvciAobGV0IHMgaW4gbGluZWFyQ29tYjEpIHtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHJlc1tzXSA9PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc1tzXSA9IEZyLm11bChrLCBsaW5lYXJDb21iMVtzXSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzW3NdID0gRnIuYWRkKHJlc1tzXSwgRnIubXVsKGssIGxpbmVhckNvbWIxW3NdKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBmb3IgKGxldCBzIGluIGxpbmVhckNvbWIyKSB7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiByZXNbc10gPT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgICAgICAgICAgICAgICByZXNbc10gPSBsaW5lYXJDb21iMltzXTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXNbc10gPSBGci5hZGQocmVzW3NdLCBsaW5lYXJDb21iMltzXSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbm9ybWFsaXplKHJlcyk7XG4gICAgICAgICAgICByZXR1cm4gcmVzO1xuICAgICAgICB9XG5cbiAgICAgICAgZnVuY3Rpb24gcmVkdWNlQ29lZnMobGluZWFyQ29tYiwgbWF4Qykge1xuICAgICAgICAgICAgY29uc3QgcmVzID0ge1xuICAgICAgICAgICAgICAgIGs6IEZyLnplcm8sXG4gICAgICAgICAgICAgICAgczogW10sXG4gICAgICAgICAgICAgICAgY29lZnM6IFtdXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgY29uc3QgY3MgPSBbXTtcblxuICAgICAgICAgICAgZm9yIChsZXQgcyBpbiBsaW5lYXJDb21iKSB7XG4gICAgICAgICAgICAgICAgaWYgKHMgPT0gMCkge1xuICAgICAgICAgICAgICAgICAgICByZXMuayA9IEZyLmFkZChyZXMuaywgbGluZWFyQ29tYltzXSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChsaW5lYXJDb21iW3NdICE9IDBuKSB7XG4gICAgICAgICAgICAgICAgICAgIGNzLnB1c2goW051bWJlcihzKSwgbGluZWFyQ29tYltzXV0pXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgd2hpbGUgKGNzLmxlbmd0aCA+IG1heEMpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBjMSA9IGNzLnNoaWZ0KCk7XG4gICAgICAgICAgICAgICAgY29uc3QgYzIgPSBjcy5zaGlmdCgpO1xuXG4gICAgICAgICAgICAgICAgY29uc3Qgc2wgPSBjMVswXTtcbiAgICAgICAgICAgICAgICBjb25zdCBzciA9IGMyWzBdO1xuICAgICAgICAgICAgICAgIGNvbnN0IHNvID0gcGxvbmtOVmFycysrO1xuICAgICAgICAgICAgICAgIGNvbnN0IHFtID0gRnIuemVybztcbiAgICAgICAgICAgICAgICBjb25zdCBxbCA9IEZyLm5lZyhjMVsxXSk7XG4gICAgICAgICAgICAgICAgY29uc3QgcXIgPSBGci5uZWcoYzJbMV0pO1xuICAgICAgICAgICAgICAgIGNvbnN0IHFvID0gRnIub25lO1xuICAgICAgICAgICAgICAgIGNvbnN0IHFjID0gRnIuemVybztcblxuICAgICAgICAgICAgICAgIHBsb25rQ29uc3RyYWludHMucHVzaChbc2wsIHNyLCBzbywgcW0sIHFsLCBxciwgcW8sIHFjXSk7XG5cbiAgICAgICAgICAgICAgICBwbG9ua0FkZGl0aW9ucy5wdXNoKFtzbCwgc3IsIGMxWzFdLCBjMlsxXV0pO1xuXG4gICAgICAgICAgICAgICAgY3MucHVzaChbc28sIEZyLm9uZV0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIHJlcy5zW2ldID0gY3NbaV1bMF07XG4gICAgICAgICAgICAgICAgcmVzLmNvZWZzW2ldID0gY3NbaV1bMV07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB3aGlsZSAocmVzLmNvZWZzLmxlbmd0aCA8IG1heEMpIHtcbiAgICAgICAgICAgICAgICByZXMucy5wdXNoKDApO1xuICAgICAgICAgICAgICAgIHJlcy5jb2Vmcy5wdXNoKEZyLnplcm8pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHJlcztcbiAgICAgICAgfVxuXG4gICAgICAgIGZ1bmN0aW9uIGFkZENvbnN0cmFpbnRTdW0obGMpIHtcbiAgICAgICAgICAgIGNvbnN0IEMgPSByZWR1Y2VDb2VmcyhsYywgMyk7XG4gICAgICAgICAgICBjb25zdCBzbCA9IEMuc1swXTtcbiAgICAgICAgICAgIGNvbnN0IHNyID0gQy5zWzFdO1xuICAgICAgICAgICAgY29uc3Qgc28gPSBDLnNbMl07XG4gICAgICAgICAgICBjb25zdCBxbSA9IEZyLnplcm87XG4gICAgICAgICAgICBjb25zdCBxbCA9IEMuY29lZnNbMF07XG4gICAgICAgICAgICBjb25zdCBxciA9IEMuY29lZnNbMV07XG4gICAgICAgICAgICBjb25zdCBxbyA9IEMuY29lZnNbMl07XG4gICAgICAgICAgICBjb25zdCBxYyA9IEMuaztcbiAgICAgICAgICAgIHBsb25rQ29uc3RyYWludHMucHVzaChbc2wsIHNyLCBzbywgcW0sIHFsLCBxciwgcW8sIHFjXSk7XG4gICAgICAgIH1cblxuICAgICAgICBmdW5jdGlvbiBhZGRDb25zdHJhaW50TXVsKGxjQSwgbGNCLCBsY0MpIHtcbiAgICAgICAgICAgIGNvbnN0IEEgPSByZWR1Y2VDb2VmcyhsY0EsIDEpO1xuICAgICAgICAgICAgY29uc3QgQiA9IHJlZHVjZUNvZWZzKGxjQiwgMSk7XG4gICAgICAgICAgICBjb25zdCBDID0gcmVkdWNlQ29lZnMobGNDLCAxKTtcblxuXG4gICAgICAgICAgICBjb25zdCBzbCA9IEEuc1swXTtcbiAgICAgICAgICAgIGNvbnN0IHNyID0gQi5zWzBdO1xuICAgICAgICAgICAgY29uc3Qgc28gPSBDLnNbMF07XG4gICAgICAgICAgICBjb25zdCBxbSA9IEZyLm11bChBLmNvZWZzWzBdLCBCLmNvZWZzWzBdKTtcbiAgICAgICAgICAgIGNvbnN0IHFsID0gRnIubXVsKEEuY29lZnNbMF0sIEIuayk7XG4gICAgICAgICAgICBjb25zdCBxciA9IEZyLm11bChBLmssIEIuY29lZnNbMF0pO1xuICAgICAgICAgICAgY29uc3QgcW8gPSBGci5uZWcoQy5jb2Vmc1swXSk7XG4gICAgICAgICAgICBjb25zdCBxYyA9IEZyLnN1YihGci5tdWwoQS5rLCBCLmspLCBDLmspO1xuICAgICAgICAgICAgcGxvbmtDb25zdHJhaW50cy5wdXNoKFtzbCwgc3IsIHNvLCBxbSwgcWwsIHFyLCBxbywgcWNdKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZ1bmN0aW9uIGdldExpbmVhckNvbWJpbmF0aW9uVHlwZShsYykge1xuICAgICAgICAgICAgbGV0IGsgPSBGci56ZXJvO1xuICAgICAgICAgICAgbGV0IG4gPSAwO1xuICAgICAgICAgICAgY29uc3Qgc3MgPSBPYmplY3Qua2V5cyhsYyk7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgaWYgKGxjW3NzW2ldXSA9PSAwbikge1xuICAgICAgICAgICAgICAgICAgICBkZWxldGUgbGNbc3NbaV1dO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoc3NbaV0gPT0gMCkge1xuICAgICAgICAgICAgICAgICAgICBrID0gRnIuYWRkKGssIGxjW3NzW2ldXSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgbisrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChuID4gMCkgcmV0dXJuIG4udG9TdHJpbmcoKTtcbiAgICAgICAgICAgIGlmIChrICE9IEZyLnplcm8pIHJldHVybiBcImtcIjtcbiAgICAgICAgICAgIHJldHVybiBcIjBcIjtcbiAgICAgICAgfVxuXG4gICAgICAgIGZ1bmN0aW9uIHByb2Nlc3MobGNBLCBsY0IsIGxjQykge1xuICAgICAgICAgICAgY29uc3QgbGN0QSA9IGdldExpbmVhckNvbWJpbmF0aW9uVHlwZShsY0EpO1xuICAgICAgICAgICAgY29uc3QgbGN0QiA9IGdldExpbmVhckNvbWJpbmF0aW9uVHlwZShsY0IpO1xuICAgICAgICAgICAgaWYgKChsY3RBID09PSBcIjBcIikgfHwgKGxjdEIgPT09IFwiMFwiKSkge1xuICAgICAgICAgICAgICAgIG5vcm1hbGl6ZShsY0MpO1xuICAgICAgICAgICAgICAgIGFkZENvbnN0cmFpbnRTdW0obGNDKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobGN0QSA9PT0gXCJrXCIpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBsY0NDID0gam9pbihsY0IsIGxjQVswXSwgbGNDKTtcbiAgICAgICAgICAgICAgICBhZGRDb25zdHJhaW50U3VtKGxjQ0MpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChsY3RCID09PSBcImtcIikge1xuICAgICAgICAgICAgICAgIGNvbnN0IGxjQ0MgPSBqb2luKGxjQSwgbGNCWzBdLCBsY0MpO1xuICAgICAgICAgICAgICAgIGFkZENvbnN0cmFpbnRTdW0obGNDQyk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGFkZENvbnN0cmFpbnRNdWwobGNBLCBsY0IsIGxjQyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBmb3IgKGxldCBzID0gMTsgcyA8PSBuUHVibGljOyBzKyspIHtcbiAgICAgICAgICAgIGNvbnN0IHNsID0gcztcbiAgICAgICAgICAgIGNvbnN0IHNyID0gMDtcbiAgICAgICAgICAgIGNvbnN0IHNvID0gMDtcbiAgICAgICAgICAgIGNvbnN0IHFtID0gRnIuemVybztcbiAgICAgICAgICAgIGNvbnN0IHFsID0gRnIub25lO1xuICAgICAgICAgICAgY29uc3QgcXIgPSBGci56ZXJvO1xuICAgICAgICAgICAgY29uc3QgcW8gPSBGci56ZXJvO1xuICAgICAgICAgICAgY29uc3QgcWMgPSBGci56ZXJvO1xuXG4gICAgICAgICAgICBwbG9ua0NvbnN0cmFpbnRzLnB1c2goW3NsLCBzciwgc28sIHFtLCBxbCwgcXIsIHFvLCBxY10pO1xuICAgICAgICB9XG5cbiAgICAgICAgZm9yIChsZXQgYyA9IDA7IGMgPCByMWNzLmNvbnN0cmFpbnRzLmxlbmd0aDsgYysrKSB7XG4gICAgICAgICAgICBpZiAoKGxvZ2dlcikgJiYgKGMgJSAxMDAwMCA9PT0gMCkpIGxvZ2dlci5kZWJ1ZyhgcHJvY2Vzc2luZyBjb25zdHJhaW50czogJHtjfS8ke3IxY3MubkNvbnN0cmFpbnRzfWApO1xuICAgICAgICAgICAgcHJvY2VzcyguLi5yMWNzLmNvbnN0cmFpbnRzW2NdKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGFzeW5jIGZ1bmN0aW9uIHdyaXRlV2l0bmVzc01hcChzZWN0aW9uTnVtLCBwb3NDb25zdHJhaW50LCBuYW1lKSB7XG4gICAgICAgIGF3YWl0IHN0YXJ0V3JpdGVTZWN0aW9uKGZkWktleSwgc2VjdGlvbk51bSk7XG4gICAgICAgIGZvciAobGV0IGk9MDsgaTxwbG9ua0NvbnN0cmFpbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBhd2FpdCBmZFpLZXkud3JpdGVVTEUzMihwbG9ua0NvbnN0cmFpbnRzW2ldW3Bvc0NvbnN0cmFpbnRdKTtcbiAgICAgICAgICAgIGlmICgobG9nZ2VyKSYmKGklMTAwMDAwMCA9PSAwKSkgbG9nZ2VyLmRlYnVnKGB3cml0aW5nICR7bmFtZX06ICR7aX0vJHtwbG9ua0NvbnN0cmFpbnRzLmxlbmd0aH1gKTtcbiAgICAgICAgfVxuICAgICAgICBhd2FpdCBlbmRXcml0ZVNlY3Rpb24oZmRaS2V5KTtcbiAgICB9XG5cbiAgICBhc3luYyBmdW5jdGlvbiB3cml0ZVFNYXAoc2VjdGlvbk51bSwgcG9zQ29uc3RyYWludCwgbmFtZSkge1xuICAgICAgICBsZXQgUSA9IG5ldyBCaWdCdWZmZXIoZG9tYWluU2l6ZSpuOHIpO1xuICAgICAgICBmb3IgKGxldCBpPTA7IGk8cGxvbmtDb25zdHJhaW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgUS5zZXQocGxvbmtDb25zdHJhaW50c1tpXVtwb3NDb25zdHJhaW50XSwgaSpuOHIpO1xuICAgICAgICAgICAgaWYgKChsb2dnZXIpJiYoaSUxMDAwMDAwID09IDApKSBsb2dnZXIuZGVidWcoYHdyaXRpbmcgJHtuYW1lfTogJHtpfS8ke3Bsb25rQ29uc3RyYWludHMubGVuZ3RofWApO1xuICAgICAgICB9XG4gICAgICAgIGF3YWl0IHN0YXJ0V3JpdGVTZWN0aW9uKGZkWktleSwgc2VjdGlvbk51bSk7XG4gICAgICAgIGF3YWl0IHdyaXRlUDQoUSk7XG4gICAgICAgIGF3YWl0IGVuZFdyaXRlU2VjdGlvbihmZFpLZXkpO1xuICAgICAgICBRID0gYXdhaXQgRnIuYmF0Y2hGcm9tTW9udGdvbWVyeShRKTtcbiAgICAgICAgdmtbbmFtZV09IGF3YWl0IGN1cnZlLkcxLm11bHRpRXhwQWZmaW5lKExQb2ludHMsIFEsIGxvZ2dlciwgXCJtdWx0aWV4cCBcIituYW1lKTtcbiAgICB9XG5cbiAgICBhc3luYyBmdW5jdGlvbiB3cml0ZVA0KGJ1ZmYpIHtcbiAgICAgICAgY29uc3QgcSA9IGF3YWl0IEZyLmlmZnQoYnVmZik7XG4gICAgICAgIGNvbnN0IHE0ID0gbmV3IEJpZ0J1ZmZlcihkb21haW5TaXplKm44cio0KTtcbiAgICAgICAgcTQuc2V0KHEsIDApO1xuICAgICAgICBjb25zdCBRNCA9IGF3YWl0IEZyLmZmdChxNCk7XG4gICAgICAgIGF3YWl0IGZkWktleS53cml0ZShxKTtcbiAgICAgICAgYXdhaXQgZmRaS2V5LndyaXRlKFE0KTtcbiAgICB9XG5cbiAgICBhc3luYyBmdW5jdGlvbiB3cml0ZUFkZGl0aW9ucyhzZWN0aW9uTnVtLCBuYW1lKSB7XG4gICAgICAgIGF3YWl0IHN0YXJ0V3JpdGVTZWN0aW9uKGZkWktleSwgc2VjdGlvbk51bSk7XG4gICAgICAgIGNvbnN0IGJ1ZmZPdXQgPSBuZXcgVWludDhBcnJheSgoMio0KzIqbjhyKSk7XG4gICAgICAgIGNvbnN0IGJ1ZmZPdXRWID0gbmV3IERhdGFWaWV3KGJ1ZmZPdXQuYnVmZmVyKTtcbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPHBsb25rQWRkaXRpb25zLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCBhZGRpdGlvbj1wbG9ua0FkZGl0aW9uc1tpXTtcbiAgICAgICAgICAgIGxldCBvPTA7XG4gICAgICAgICAgICBidWZmT3V0Vi5zZXRVaW50MzIobywgYWRkaXRpb25bMF0sIHRydWUpOyBvKz00O1xuICAgICAgICAgICAgYnVmZk91dFYuc2V0VWludDMyKG8sIGFkZGl0aW9uWzFdLCB0cnVlKTsgbys9NDtcbiAgICAgICAgICAgIC8vIFRoZSB2YWx1ZSBpcyBzdG9yZWQgaW4gTW9udGdvbWVyeS4gc3RvcmVkID0gdipSXG4gICAgICAgICAgICAvLyBzbyB3aGVuIG1vbnRnb21lcnkgbXVsdGlwbGllZCBieSB0aGUgd2l0bmVzcywgaXQncyByZXN1bHQgPSB2KlIqdy9SID0gdip3XG4gICAgICAgICAgICBidWZmT3V0LnNldChhZGRpdGlvblsyXSwgbyk7IG8rPSBuOHI7XG4gICAgICAgICAgICBidWZmT3V0LnNldChhZGRpdGlvblszXSwgbyk7IG8rPSBuOHI7XG4gICAgICAgICAgICBhd2FpdCBmZFpLZXkud3JpdGUoYnVmZk91dCk7XG4gICAgICAgICAgICBpZiAoKGxvZ2dlcikmJihpJTEwMDAwMDAgPT0gMCkpIGxvZ2dlci5kZWJ1Zyhgd3JpdGluZyAke25hbWV9OiAke2l9LyR7cGxvbmtBZGRpdGlvbnMubGVuZ3RofWApO1xuICAgICAgICB9XG4gICAgICAgIGF3YWl0IGVuZFdyaXRlU2VjdGlvbihmZFpLZXkpO1xuICAgIH1cblxuICAgIGFzeW5jIGZ1bmN0aW9uIHdyaXRlU2lnbWEoc2VjdGlvbk51bSwgbmFtZSkge1xuICAgICAgICBjb25zdCBzaWdtYSA9IG5ldyBCaWdCdWZmZXIobjhyKmRvbWFpblNpemUqMyk7XG4gICAgICAgIGNvbnN0IGxhc3RBcGFyZW5jZSA9ICBuZXcgQmlnQXJyYXkocGxvbmtOVmFycyk7XG4gICAgICAgIGNvbnN0IGZpcnN0UG9zID0gbmV3IEJpZ0FycmF5KHBsb25rTlZhcnMpO1xuICAgICAgICBsZXQgdyA9IEZyLm9uZTtcbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPGRvbWFpblNpemU7aSsrKSB7XG4gICAgICAgICAgICBpZiAoaTxwbG9ua0NvbnN0cmFpbnRzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIGJ1aWxkU2lnbWEocGxvbmtDb25zdHJhaW50c1tpXVswXSwgaSk7XG4gICAgICAgICAgICAgICAgYnVpbGRTaWdtYShwbG9ua0NvbnN0cmFpbnRzW2ldWzFdLCBkb21haW5TaXplICsgaSk7XG4gICAgICAgICAgICAgICAgYnVpbGRTaWdtYShwbG9ua0NvbnN0cmFpbnRzW2ldWzJdLCBkb21haW5TaXplKjIgKyBpKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgYnVpbGRTaWdtYSgwLCBpKTtcbiAgICAgICAgICAgICAgICBidWlsZFNpZ21hKDAsIGRvbWFpblNpemUgKyBpKTtcbiAgICAgICAgICAgICAgICBidWlsZFNpZ21hKDAsIGRvbWFpblNpemUqMiArIGkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdyA9IEZyLm11bCh3LCBGci53W2NpclBvd2VyXSk7XG4gICAgICAgICAgICBpZiAoKGxvZ2dlcikmJihpJTEwMDAwMDAgPT0gMCkpIGxvZ2dlci5kZWJ1Zyhgd3JpdGluZyAke25hbWV9IHBoYXNlMTogJHtpfS8ke3Bsb25rQ29uc3RyYWludHMubGVuZ3RofWApO1xuICAgICAgICB9XG4gICAgICAgIGZvciAobGV0IHM9MDsgczxwbG9ua05WYXJzOyBzKyspIHtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgZmlyc3RQb3Nbc10gIT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgICAgICAgICAgICBzaWdtYS5zZXQobGFzdEFwYXJlbmNlW3NdLCBmaXJzdFBvc1tzXSpuOHIpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAvLyB0aHJvdyBuZXcgRXJyb3IoXCJWYXJpYWJsZSBub3QgdXNlZFwiKTtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIlZhcmlhYmxlIG5vdCB1c2VkXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKChsb2dnZXIpJiYocyUxMDAwMDAwID09IDApKSBsb2dnZXIuZGVidWcoYHdyaXRpbmcgJHtuYW1lfSBwaGFzZTI6ICR7c30vJHtwbG9ua05WYXJzfWApO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGdsb2JhbFRoaXMuZ2MpIHtnbG9iYWxUaGlzLmdjKCk7fVxuICAgICAgICBhd2FpdCBzdGFydFdyaXRlU2VjdGlvbihmZFpLZXksIHNlY3Rpb25OdW0pO1xuICAgICAgICBsZXQgUzEgPSBzaWdtYS5zbGljZSgwLCBkb21haW5TaXplKm44cik7XG4gICAgICAgIGF3YWl0IHdyaXRlUDQoUzEpO1xuICAgICAgICBpZiAoZ2xvYmFsVGhpcy5nYykge2dsb2JhbFRoaXMuZ2MoKTt9XG4gICAgICAgIGxldCBTMiA9IHNpZ21hLnNsaWNlKGRvbWFpblNpemUqbjhyLCBkb21haW5TaXplKm44cioyKTtcbiAgICAgICAgYXdhaXQgd3JpdGVQNChTMik7XG4gICAgICAgIGlmIChnbG9iYWxUaGlzLmdjKSB7Z2xvYmFsVGhpcy5nYygpO31cbiAgICAgICAgbGV0IFMzID0gc2lnbWEuc2xpY2UoZG9tYWluU2l6ZSpuOHIqMiwgZG9tYWluU2l6ZSpuOHIqMyk7XG4gICAgICAgIGF3YWl0IHdyaXRlUDQoUzMpO1xuICAgICAgICBpZiAoZ2xvYmFsVGhpcy5nYykge2dsb2JhbFRoaXMuZ2MoKTt9XG4gICAgICAgIGF3YWl0IGVuZFdyaXRlU2VjdGlvbihmZFpLZXkpO1xuXG4gICAgICAgIFMxID0gYXdhaXQgRnIuYmF0Y2hGcm9tTW9udGdvbWVyeShTMSk7XG4gICAgICAgIFMyID0gYXdhaXQgRnIuYmF0Y2hGcm9tTW9udGdvbWVyeShTMik7XG4gICAgICAgIFMzID0gYXdhaXQgRnIuYmF0Y2hGcm9tTW9udGdvbWVyeShTMyk7XG5cbiAgICAgICAgdmsuUzE9IGF3YWl0IGN1cnZlLkcxLm11bHRpRXhwQWZmaW5lKExQb2ludHMsIFMxLCBsb2dnZXIsIFwibXVsdGlleHAgUzFcIik7XG4gICAgICAgIGlmIChnbG9iYWxUaGlzLmdjKSB7Z2xvYmFsVGhpcy5nYygpO31cbiAgICAgICAgdmsuUzI9IGF3YWl0IGN1cnZlLkcxLm11bHRpRXhwQWZmaW5lKExQb2ludHMsIFMyLCBsb2dnZXIsIFwibXVsdGlleHAgUzJcIik7XG4gICAgICAgIGlmIChnbG9iYWxUaGlzLmdjKSB7Z2xvYmFsVGhpcy5nYygpO31cbiAgICAgICAgdmsuUzM9IGF3YWl0IGN1cnZlLkcxLm11bHRpRXhwQWZmaW5lKExQb2ludHMsIFMzLCBsb2dnZXIsIFwibXVsdGlleHAgUzNcIik7XG4gICAgICAgIGlmIChnbG9iYWxUaGlzLmdjKSB7Z2xvYmFsVGhpcy5nYygpO31cblxuICAgICAgICBmdW5jdGlvbiBidWlsZFNpZ21hKHMsIHApIHtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgbGFzdEFwYXJlbmNlW3NdID09PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgICAgICAgICAgICAgZmlyc3RQb3Nbc10gPSBwO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBzaWdtYS5zZXQobGFzdEFwYXJlbmNlW3NdLCBwKm44cik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBsZXQgdjtcbiAgICAgICAgICAgIGlmIChwPGRvbWFpblNpemUpIHtcbiAgICAgICAgICAgICAgICB2ID0gdztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAocDwyKmRvbWFpblNpemUpIHtcbiAgICAgICAgICAgICAgICB2ID0gRnIubXVsKHcsIGsxKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdiA9IEZyLm11bCh3LCBrMik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBsYXN0QXBhcmVuY2Vbc109djtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGFzeW5jIGZ1bmN0aW9uIHdyaXRlTHMoc2VjdGlvbk51bSwgbmFtZSkge1xuICAgICAgICBhd2FpdCBzdGFydFdyaXRlU2VjdGlvbihmZFpLZXksIHNlY3Rpb25OdW0pO1xuICAgICAgICBjb25zdCBsPU1hdGgubWF4KG5QdWJsaWMsIDEpO1xuICAgICAgICBmb3IgKGxldCBpPTA7IGk8bDsgaSsrKSB7XG4gICAgICAgICAgICBsZXQgYnVmZiA9IG5ldyBCaWdCdWZmZXIoZG9tYWluU2l6ZSpuOHIpO1xuICAgICAgICAgICAgYnVmZi5zZXQoRnIub25lLCBpKm44cik7XG4gICAgICAgICAgICBhd2FpdCB3cml0ZVA0KGJ1ZmYpO1xuICAgICAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmRlYnVnKGB3cml0aW5nICR7bmFtZX0gJHtpfS8ke2x9YCk7XG4gICAgICAgIH1cbiAgICAgICAgYXdhaXQgZW5kV3JpdGVTZWN0aW9uKGZkWktleSk7XG4gICAgfVxuXG4gICAgYXN5bmMgZnVuY3Rpb24gd3JpdGVIZWFkZXJzKCkge1xuXG4gICAgICAgIC8vIFdyaXRlIHRoZSBoZWFkZXJcbiAgICAgICAgLy8vLy8vLy8vLy9cbiAgICAgICAgYXdhaXQgc3RhcnRXcml0ZVNlY3Rpb24oZmRaS2V5LCAxKTtcbiAgICAgICAgYXdhaXQgZmRaS2V5LndyaXRlVUxFMzIoMik7IC8vIFBsb25rXG4gICAgICAgIGF3YWl0IGVuZFdyaXRlU2VjdGlvbihmZFpLZXkpO1xuXG4gICAgICAgIC8vIFdyaXRlIHRoZSBQbG9uayBoZWFkZXIgc2VjdGlvblxuICAgICAgICAvLy8vLy8vLy8vL1xuXG4gICAgICAgIGF3YWl0IHN0YXJ0V3JpdGVTZWN0aW9uKGZkWktleSwgMik7XG4gICAgICAgIGNvbnN0IHByaW1lUSA9IGN1cnZlLnE7XG4gICAgICAgIGNvbnN0IG44cSA9IChNYXRoLmZsb29yKCAoU2NhbGFyLmJpdExlbmd0aChwcmltZVEpIC0gMSkgLyA2NCkgKzEpKjg7XG5cbiAgICAgICAgY29uc3QgcHJpbWVSID0gY3VydmUucjtcbiAgICAgICAgY29uc3QgbjhyID0gKE1hdGguZmxvb3IoIChTY2FsYXIuYml0TGVuZ3RoKHByaW1lUikgLSAxKSAvIDY0KSArMSkqODtcblxuICAgICAgICBhd2FpdCBmZFpLZXkud3JpdGVVTEUzMihuOHEpO1xuICAgICAgICBhd2FpdCB3cml0ZUJpZ0ludChmZFpLZXksIHByaW1lUSwgbjhxKTtcbiAgICAgICAgYXdhaXQgZmRaS2V5LndyaXRlVUxFMzIobjhyKTtcbiAgICAgICAgYXdhaXQgd3JpdGVCaWdJbnQoZmRaS2V5LCBwcmltZVIsIG44cik7XG4gICAgICAgIGF3YWl0IGZkWktleS53cml0ZVVMRTMyKHBsb25rTlZhcnMpOyAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUb3RhbCBudW1iZXIgb2YgYmFyc1xuICAgICAgICBhd2FpdCBmZFpLZXkud3JpdGVVTEUzMihuUHVibGljKTsgICAgICAgICAgICAgICAgICAgICAgIC8vIFRvdGFsIG51bWJlciBvZiBwdWJsaWMgdmFycyAobm90IGluY2x1ZGluZyBPTkUpXG4gICAgICAgIGF3YWl0IGZkWktleS53cml0ZVVMRTMyKGRvbWFpblNpemUpOyAgICAgICAgICAgICAgICAgIC8vIGRvbWFpblNpemVcbiAgICAgICAgYXdhaXQgZmRaS2V5LndyaXRlVUxFMzIocGxvbmtBZGRpdGlvbnMubGVuZ3RoKTsgICAgICAgICAgICAgICAgICAvLyBkb21haW5TaXplXG4gICAgICAgIGF3YWl0IGZkWktleS53cml0ZVVMRTMyKHBsb25rQ29uc3RyYWludHMubGVuZ3RoKTsgXG5cbiAgICAgICAgYXdhaXQgZmRaS2V5LndyaXRlKGsxKTtcbiAgICAgICAgYXdhaXQgZmRaS2V5LndyaXRlKGsyKTtcblxuICAgICAgICBhd2FpdCBmZFpLZXkud3JpdGUoRzEudG9BZmZpbmUodmsuUW0pKTtcbiAgICAgICAgYXdhaXQgZmRaS2V5LndyaXRlKEcxLnRvQWZmaW5lKHZrLlFsKSk7XG4gICAgICAgIGF3YWl0IGZkWktleS53cml0ZShHMS50b0FmZmluZSh2ay5RcikpO1xuICAgICAgICBhd2FpdCBmZFpLZXkud3JpdGUoRzEudG9BZmZpbmUodmsuUW8pKTtcbiAgICAgICAgYXdhaXQgZmRaS2V5LndyaXRlKEcxLnRvQWZmaW5lKHZrLlFjKSk7XG5cbiAgICAgICAgYXdhaXQgZmRaS2V5LndyaXRlKEcxLnRvQWZmaW5lKHZrLlMxKSk7XG4gICAgICAgIGF3YWl0IGZkWktleS53cml0ZShHMS50b0FmZmluZSh2ay5TMikpO1xuICAgICAgICBhd2FpdCBmZFpLZXkud3JpdGUoRzEudG9BZmZpbmUodmsuUzMpKTtcblxuICAgICAgICBsZXQgYlhfMjtcbiAgICAgICAgYlhfMiA9IGF3YWl0IGZkUFRhdS5yZWFkKHNHMiwgc2VjdGlvbnNQVGF1WzNdWzBdLnAgKyBzRzIpO1xuICAgICAgICBhd2FpdCBmZFpLZXkud3JpdGUoYlhfMik7XG5cbiAgICAgICAgYXdhaXQgZW5kV3JpdGVTZWN0aW9uKGZkWktleSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ2V0SzFLMigpIHtcbiAgICAgICAgbGV0IGsxID0gRnIudHdvO1xuICAgICAgICB3aGlsZSAoaXNJbmNsdWRlZChrMSwgW10sIGNpclBvd2VyKSkgRnIuYWRkKGsxLCBGci5vbmUpO1xuICAgICAgICBsZXQgazIgPSBGci5hZGQoazEsIEZyLm9uZSk7XG4gICAgICAgIHdoaWxlIChpc0luY2x1ZGVkKGsyLCBbazFdLCBjaXJQb3dlcikpIEZyLmFkZChrMiwgRnIub25lKTtcbiAgICAgICAgcmV0dXJuIFtrMSwgazJdO1xuXG5cbiAgICAgICAgZnVuY3Rpb24gaXNJbmNsdWRlZChrLCBrQXJyLCBwb3cpIHtcbiAgICAgICAgICAgIGNvbnN0IGRvbWFpblNpemU9IDIqKnBvdztcbiAgICAgICAgICAgIGxldCB3ID0gRnIub25lO1xuICAgICAgICAgICAgZm9yIChsZXQgaT0wOyBpPGRvbWFpblNpemU7IGkrKykge1xuICAgICAgICAgICAgICAgIGlmIChGci5lcShrLCB3KSkgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaj0wOyBqPGtBcnIubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKEZyLmVxKGssIEZyLm11bChrQXJyW2pdLCB3KSkpIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB3ID0gRnIubXVsKHcsIEZyLndbcG93XSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG59XG5cblxuIiwiLypcbiAgICBDb3B5cmlnaHQgMjAyMiBpZGVuMyBhc3NvY2lhdGlvbi5cblxuICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHNuYXJranMuXG5cbiAgICBzbmFya2pzIGlzIGEgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yXG4gICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZVxuICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKVxuICAgIGFueSBsYXRlciB2ZXJzaW9uLlxuXG4gICAgc25hcmtqcyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWVxuICAgIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvclxuICAgIG1vcmUgZGV0YWlscy5cblxuICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nIHdpdGhcbiAgICBzbmFya2pzLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuKi9cblxuZXhwb3J0IGNsYXNzIFByb29mIHtcbiAgICBjb25zdHJ1Y3RvcihjdXJ2ZSwgbG9nZ2VyKSB7XG4gICAgICAgIHRoaXMuY3VydmUgPSBjdXJ2ZTtcbiAgICAgICAgdGhpcy5sb2dnZXIgPSBsb2dnZXI7XG5cbiAgICAgICAgdGhpcy5yZXNldFByb29mKCk7XG4gICAgfVxuXG4gICAgcmVzZXRQcm9vZigpIHtcbiAgICAgICAgdGhpcy5wb2x5bm9taWFscyA9IHt9O1xuICAgICAgICB0aGlzLmV2YWx1YXRpb25zID0ge307XG4gICAgfVxuXG4gICAgYWRkUG9seW5vbWlhbChrZXksIHBvbHlub21pYWwpIHtcbiAgICAgICAgaWYgKGtleSBpbiB0aGlzLnBvbHlub21pYWxzKSB7XG4gICAgICAgICAgICB0aGlzLmxvZ2dlci53YXJuKGBwcm9vZjogcG9seW5vbWlhbC4ke2tleX0gYWxyZWFkeSBleGlzdCBpbiBwcm9vZmApO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMucG9seW5vbWlhbHNba2V5XSA9IHBvbHlub21pYWw7XG4gICAgfVxuXG4gICAgZ2V0UG9seW5vbWlhbChrZXkpIHtcbiAgICAgICAgaWYgKCEoa2V5IGluIHRoaXMucG9seW5vbWlhbHMpKSB7XG4gICAgICAgICAgICB0aGlzLmxvZ2dlci53YXJuKGBwcm9vZjogcG9seW5vbWlhbCAke2tleX0gZG9lcyBub3QgZXhpc3QgaW4gcHJvb2ZgKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5wb2x5bm9taWFsc1trZXldO1xuICAgIH1cblxuICAgIGFkZEV2YWx1YXRpb24oa2V5LCBldmFsdWF0aW9uKSB7XG4gICAgICAgIGlmIChrZXkgaW4gdGhpcy5ldmFsdWF0aW9ucykge1xuICAgICAgICAgICAgdGhpcy5sb2dnZXIud2FybihgcHJvb2Y6IGV2YWx1YXRpb25zLiR7a2V5fSBhbHJlYWR5IGV4aXN0IGluIHByb29mYCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5ldmFsdWF0aW9uc1trZXldID0gZXZhbHVhdGlvbjtcbiAgICB9XG5cbiAgICBnZXRFdmFsdWF0aW9uKGtleSkge1xuICAgICAgICBpZiAoIShrZXkgaW4gdGhpcy5ldmFsdWF0aW9ucykpIHtcbiAgICAgICAgICAgIHRoaXMubG9nZ2VyLndhcm4oYHByb29mOiBldmFsdWF0aW9uICR7a2V5fSBkb2VzIG5vdCBleGlzdCBpbiBwcm9vZmApO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLmV2YWx1YXRpb25zW2tleV07XG4gICAgfVxuXG4gICAgdG9PYmplY3RQcm9vZihzcGxpdEZpZWxkcyA9IHRydWUpIHtcbiAgICAgICAgbGV0IHJlcyA9IHNwbGl0RmllbGRzID8ge3BvbHlub21pYWxzOiB7fSwgZXZhbHVhdGlvbnM6IHt9fSA6IHt9O1xuXG4gICAgICAgIE9iamVjdC5rZXlzKHRoaXMucG9seW5vbWlhbHMpLmZvckVhY2goa2V5ID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gdGhpcy5jdXJ2ZS5HMS50b09iamVjdCh0aGlzLnBvbHlub21pYWxzW2tleV0pO1xuICAgICAgICAgICAgaWYoc3BsaXRGaWVsZHMpIHtcbiAgICAgICAgICAgICAgICByZXMucG9seW5vbWlhbHNba2V5XSA9IHZhbHVlO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXNba2V5XSA9IHZhbHVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICBPYmplY3Qua2V5cyh0aGlzLmV2YWx1YXRpb25zKS5mb3JFYWNoKGtleSA9PiB7XG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IHRoaXMuY3VydmUuRnIudG9PYmplY3QodGhpcy5ldmFsdWF0aW9uc1trZXldKTtcbiAgICAgICAgICAgIGlmKHNwbGl0RmllbGRzKSB7XG4gICAgICAgICAgICAgICAgcmVzLmV2YWx1YXRpb25zW2tleV0gPSB2YWx1ZTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmVzW2tleV0gPSB2YWx1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG5cbiAgICBmcm9tT2JqZWN0UHJvb2Yob2JqZWN0UHJvb2YpIHtcbiAgICAgICAgdGhpcy5yZXNldFByb29mKCk7XG5cbiAgICAgICAgT2JqZWN0LmtleXMob2JqZWN0UHJvb2YucG9seW5vbWlhbHMpLmZvckVhY2goa2V5ID0+IHtcbiAgICAgICAgICAgIHRoaXMucG9seW5vbWlhbHNba2V5XSA9IHRoaXMuY3VydmUuRzEuZnJvbU9iamVjdChvYmplY3RQcm9vZi5wb2x5bm9taWFsc1trZXldKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgT2JqZWN0LmtleXMob2JqZWN0UHJvb2YuZXZhbHVhdGlvbnMpLmZvckVhY2goa2V5ID0+IHtcbiAgICAgICAgICAgIHRoaXMuZXZhbHVhdGlvbnNba2V5XSA9IHRoaXMuY3VydmUuRnIuZnJvbU9iamVjdChvYmplY3RQcm9vZi5ldmFsdWF0aW9uc1trZXldKTtcbiAgICAgICAgfSk7XG4gICAgfVxufSIsIi8qKlxuICogW2pzLXNoYTNde0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9lbW4xNzgvanMtc2hhM31cbiAqXG4gKiBAdmVyc2lvbiAwLjguMFxuICogQGF1dGhvciBDaGVuLCBZaS1DeXVhbiBbZW1uMTc4QGdtYWlsLmNvbV1cbiAqIEBjb3B5cmlnaHQgQ2hlbiwgWWktQ3l1YW4gMjAxNS0yMDE4XG4gKiBAbGljZW5zZSBNSVRcbiAqL1xuLypqc2xpbnQgYml0d2lzZTogdHJ1ZSAqL1xuKGZ1bmN0aW9uICgpIHtcbiAgJ3VzZSBzdHJpY3QnO1xuXG4gIHZhciBJTlBVVF9FUlJPUiA9ICdpbnB1dCBpcyBpbnZhbGlkIHR5cGUnO1xuICB2YXIgRklOQUxJWkVfRVJST1IgPSAnZmluYWxpemUgYWxyZWFkeSBjYWxsZWQnO1xuICB2YXIgV0lORE9XID0gdHlwZW9mIHdpbmRvdyA9PT0gJ29iamVjdCc7XG4gIHZhciByb290ID0gV0lORE9XID8gd2luZG93IDoge307XG4gIGlmIChyb290LkpTX1NIQTNfTk9fV0lORE9XKSB7XG4gICAgV0lORE9XID0gZmFsc2U7XG4gIH1cbiAgdmFyIFdFQl9XT1JLRVIgPSAhV0lORE9XICYmIHR5cGVvZiBzZWxmID09PSAnb2JqZWN0JztcbiAgdmFyIE5PREVfSlMgPSAhcm9vdC5KU19TSEEzX05PX05PREVfSlMgJiYgdHlwZW9mIHByb2Nlc3MgPT09ICdvYmplY3QnICYmIHByb2Nlc3MudmVyc2lvbnMgJiYgcHJvY2Vzcy52ZXJzaW9ucy5ub2RlO1xuICBpZiAoTk9ERV9KUykge1xuICAgIHJvb3QgPSBnbG9iYWw7XG4gIH0gZWxzZSBpZiAoV0VCX1dPUktFUikge1xuICAgIHJvb3QgPSBzZWxmO1xuICB9XG4gIHZhciBDT01NT05fSlMgPSAhcm9vdC5KU19TSEEzX05PX0NPTU1PTl9KUyAmJiB0eXBlb2YgbW9kdWxlID09PSAnb2JqZWN0JyAmJiBtb2R1bGUuZXhwb3J0cztcbiAgdmFyIEFNRCA9IHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZDtcbiAgdmFyIEFSUkFZX0JVRkZFUiA9ICFyb290LkpTX1NIQTNfTk9fQVJSQVlfQlVGRkVSICYmIHR5cGVvZiBBcnJheUJ1ZmZlciAhPT0gJ3VuZGVmaW5lZCc7XG4gIHZhciBIRVhfQ0hBUlMgPSAnMDEyMzQ1Njc4OWFiY2RlZicuc3BsaXQoJycpO1xuICB2YXIgU0hBS0VfUEFERElORyA9IFszMSwgNzkzNiwgMjAzMTYxNiwgNTIwMDkzNjk2XTtcbiAgdmFyIENTSEFLRV9QQURESU5HID0gWzQsIDEwMjQsIDI2MjE0NCwgNjcxMDg4NjRdO1xuICB2YXIgS0VDQ0FLX1BBRERJTkcgPSBbMSwgMjU2LCA2NTUzNiwgMTY3NzcyMTZdO1xuICB2YXIgUEFERElORyA9IFs2LCAxNTM2LCAzOTMyMTYsIDEwMDY2MzI5Nl07XG4gIHZhciBTSElGVCA9IFswLCA4LCAxNiwgMjRdO1xuICB2YXIgUkMgPSBbMSwgMCwgMzI4OTgsIDAsIDMyOTA2LCAyMTQ3NDgzNjQ4LCAyMTQ3NTE2NDE2LCAyMTQ3NDgzNjQ4LCAzMjkwNywgMCwgMjE0NzQ4MzY0OSxcbiAgICAwLCAyMTQ3NTE2NTQ1LCAyMTQ3NDgzNjQ4LCAzMjc3NywgMjE0NzQ4MzY0OCwgMTM4LCAwLCAxMzYsIDAsIDIxNDc1MTY0MjUsIDAsXG4gICAgMjE0NzQ4MzY1OCwgMCwgMjE0NzUxNjU1NSwgMCwgMTM5LCAyMTQ3NDgzNjQ4LCAzMjkwNSwgMjE0NzQ4MzY0OCwgMzI3NzEsXG4gICAgMjE0NzQ4MzY0OCwgMzI3NzAsIDIxNDc0ODM2NDgsIDEyOCwgMjE0NzQ4MzY0OCwgMzI3NzgsIDAsIDIxNDc0ODM2NTgsIDIxNDc0ODM2NDgsXG4gICAgMjE0NzUxNjU0NSwgMjE0NzQ4MzY0OCwgMzI4OTYsIDIxNDc0ODM2NDgsIDIxNDc0ODM2NDksIDAsIDIxNDc1MTY0MjQsIDIxNDc0ODM2NDhdO1xuICB2YXIgQklUUyA9IFsyMjQsIDI1NiwgMzg0LCA1MTJdO1xuICB2YXIgU0hBS0VfQklUUyA9IFsxMjgsIDI1Nl07XG4gIHZhciBPVVRQVVRfVFlQRVMgPSBbJ2hleCcsICdidWZmZXInLCAnYXJyYXlCdWZmZXInLCAnYXJyYXknLCAnZGlnZXN0J107XG4gIHZhciBDU0hBS0VfQllURVBBRCA9IHtcbiAgICAnMTI4JzogMTY4LFxuICAgICcyNTYnOiAxMzZcbiAgfTtcblxuICBpZiAocm9vdC5KU19TSEEzX05PX05PREVfSlMgfHwgIUFycmF5LmlzQXJyYXkpIHtcbiAgICBBcnJheS5pc0FycmF5ID0gZnVuY3Rpb24gKG9iaikge1xuICAgICAgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChvYmopID09PSAnW29iamVjdCBBcnJheV0nO1xuICAgIH07XG4gIH1cblxuICBpZiAoQVJSQVlfQlVGRkVSICYmIChyb290LkpTX1NIQTNfTk9fQVJSQVlfQlVGRkVSX0lTX1ZJRVcgfHwgIUFycmF5QnVmZmVyLmlzVmlldykpIHtcbiAgICBBcnJheUJ1ZmZlci5pc1ZpZXcgPSBmdW5jdGlvbiAob2JqKSB7XG4gICAgICByZXR1cm4gdHlwZW9mIG9iaiA9PT0gJ29iamVjdCcgJiYgb2JqLmJ1ZmZlciAmJiBvYmouYnVmZmVyLmNvbnN0cnVjdG9yID09PSBBcnJheUJ1ZmZlcjtcbiAgICB9O1xuICB9XG5cbiAgdmFyIGNyZWF0ZU91dHB1dE1ldGhvZCA9IGZ1bmN0aW9uIChiaXRzLCBwYWRkaW5nLCBvdXRwdXRUeXBlKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIChtZXNzYWdlKSB7XG4gICAgICByZXR1cm4gbmV3IEtlY2NhayhiaXRzLCBwYWRkaW5nLCBiaXRzKS51cGRhdGUobWVzc2FnZSlbb3V0cHV0VHlwZV0oKTtcbiAgICB9O1xuICB9O1xuXG4gIHZhciBjcmVhdGVTaGFrZU91dHB1dE1ldGhvZCA9IGZ1bmN0aW9uIChiaXRzLCBwYWRkaW5nLCBvdXRwdXRUeXBlKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIChtZXNzYWdlLCBvdXRwdXRCaXRzKSB7XG4gICAgICByZXR1cm4gbmV3IEtlY2NhayhiaXRzLCBwYWRkaW5nLCBvdXRwdXRCaXRzKS51cGRhdGUobWVzc2FnZSlbb3V0cHV0VHlwZV0oKTtcbiAgICB9O1xuICB9O1xuXG4gIHZhciBjcmVhdGVDc2hha2VPdXRwdXRNZXRob2QgPSBmdW5jdGlvbiAoYml0cywgcGFkZGluZywgb3V0cHV0VHlwZSkge1xuICAgIHJldHVybiBmdW5jdGlvbiAobWVzc2FnZSwgb3V0cHV0Qml0cywgbiwgcykge1xuICAgICAgcmV0dXJuIG1ldGhvZHNbJ2NzaGFrZScgKyBiaXRzXS51cGRhdGUobWVzc2FnZSwgb3V0cHV0Qml0cywgbiwgcylbb3V0cHV0VHlwZV0oKTtcbiAgICB9O1xuICB9O1xuXG4gIHZhciBjcmVhdGVLbWFjT3V0cHV0TWV0aG9kID0gZnVuY3Rpb24gKGJpdHMsIHBhZGRpbmcsIG91dHB1dFR5cGUpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKGtleSwgbWVzc2FnZSwgb3V0cHV0Qml0cywgcykge1xuICAgICAgcmV0dXJuIG1ldGhvZHNbJ2ttYWMnICsgYml0c10udXBkYXRlKGtleSwgbWVzc2FnZSwgb3V0cHV0Qml0cywgcylbb3V0cHV0VHlwZV0oKTtcbiAgICB9O1xuICB9O1xuXG4gIHZhciBjcmVhdGVPdXRwdXRNZXRob2RzID0gZnVuY3Rpb24gKG1ldGhvZCwgY3JlYXRlTWV0aG9kLCBiaXRzLCBwYWRkaW5nKSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBPVVRQVVRfVFlQRVMubGVuZ3RoOyArK2kpIHtcbiAgICAgIHZhciB0eXBlID0gT1VUUFVUX1RZUEVTW2ldO1xuICAgICAgbWV0aG9kW3R5cGVdID0gY3JlYXRlTWV0aG9kKGJpdHMsIHBhZGRpbmcsIHR5cGUpO1xuICAgIH1cbiAgICByZXR1cm4gbWV0aG9kO1xuICB9O1xuXG4gIHZhciBjcmVhdGVNZXRob2QgPSBmdW5jdGlvbiAoYml0cywgcGFkZGluZykge1xuICAgIHZhciBtZXRob2QgPSBjcmVhdGVPdXRwdXRNZXRob2QoYml0cywgcGFkZGluZywgJ2hleCcpO1xuICAgIG1ldGhvZC5jcmVhdGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gbmV3IEtlY2NhayhiaXRzLCBwYWRkaW5nLCBiaXRzKTtcbiAgICB9O1xuICAgIG1ldGhvZC51cGRhdGUgPSBmdW5jdGlvbiAobWVzc2FnZSkge1xuICAgICAgcmV0dXJuIG1ldGhvZC5jcmVhdGUoKS51cGRhdGUobWVzc2FnZSk7XG4gICAgfTtcbiAgICByZXR1cm4gY3JlYXRlT3V0cHV0TWV0aG9kcyhtZXRob2QsIGNyZWF0ZU91dHB1dE1ldGhvZCwgYml0cywgcGFkZGluZyk7XG4gIH07XG5cbiAgdmFyIGNyZWF0ZVNoYWtlTWV0aG9kID0gZnVuY3Rpb24gKGJpdHMsIHBhZGRpbmcpIHtcbiAgICB2YXIgbWV0aG9kID0gY3JlYXRlU2hha2VPdXRwdXRNZXRob2QoYml0cywgcGFkZGluZywgJ2hleCcpO1xuICAgIG1ldGhvZC5jcmVhdGUgPSBmdW5jdGlvbiAob3V0cHV0Qml0cykge1xuICAgICAgcmV0dXJuIG5ldyBLZWNjYWsoYml0cywgcGFkZGluZywgb3V0cHV0Qml0cyk7XG4gICAgfTtcbiAgICBtZXRob2QudXBkYXRlID0gZnVuY3Rpb24gKG1lc3NhZ2UsIG91dHB1dEJpdHMpIHtcbiAgICAgIHJldHVybiBtZXRob2QuY3JlYXRlKG91dHB1dEJpdHMpLnVwZGF0ZShtZXNzYWdlKTtcbiAgICB9O1xuICAgIHJldHVybiBjcmVhdGVPdXRwdXRNZXRob2RzKG1ldGhvZCwgY3JlYXRlU2hha2VPdXRwdXRNZXRob2QsIGJpdHMsIHBhZGRpbmcpO1xuICB9O1xuXG4gIHZhciBjcmVhdGVDc2hha2VNZXRob2QgPSBmdW5jdGlvbiAoYml0cywgcGFkZGluZykge1xuICAgIHZhciB3ID0gQ1NIQUtFX0JZVEVQQURbYml0c107XG4gICAgdmFyIG1ldGhvZCA9IGNyZWF0ZUNzaGFrZU91dHB1dE1ldGhvZChiaXRzLCBwYWRkaW5nLCAnaGV4Jyk7XG4gICAgbWV0aG9kLmNyZWF0ZSA9IGZ1bmN0aW9uIChvdXRwdXRCaXRzLCBuLCBzKSB7XG4gICAgICBpZiAoIW4gJiYgIXMpIHtcbiAgICAgICAgcmV0dXJuIG1ldGhvZHNbJ3NoYWtlJyArIGJpdHNdLmNyZWF0ZShvdXRwdXRCaXRzKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBuZXcgS2VjY2FrKGJpdHMsIHBhZGRpbmcsIG91dHB1dEJpdHMpLmJ5dGVwYWQoW24sIHNdLCB3KTtcbiAgICAgIH1cbiAgICB9O1xuICAgIG1ldGhvZC51cGRhdGUgPSBmdW5jdGlvbiAobWVzc2FnZSwgb3V0cHV0Qml0cywgbiwgcykge1xuICAgICAgcmV0dXJuIG1ldGhvZC5jcmVhdGUob3V0cHV0Qml0cywgbiwgcykudXBkYXRlKG1lc3NhZ2UpO1xuICAgIH07XG4gICAgcmV0dXJuIGNyZWF0ZU91dHB1dE1ldGhvZHMobWV0aG9kLCBjcmVhdGVDc2hha2VPdXRwdXRNZXRob2QsIGJpdHMsIHBhZGRpbmcpO1xuICB9O1xuXG4gIHZhciBjcmVhdGVLbWFjTWV0aG9kID0gZnVuY3Rpb24gKGJpdHMsIHBhZGRpbmcpIHtcbiAgICB2YXIgdyA9IENTSEFLRV9CWVRFUEFEW2JpdHNdO1xuICAgIHZhciBtZXRob2QgPSBjcmVhdGVLbWFjT3V0cHV0TWV0aG9kKGJpdHMsIHBhZGRpbmcsICdoZXgnKTtcbiAgICBtZXRob2QuY3JlYXRlID0gZnVuY3Rpb24gKGtleSwgb3V0cHV0Qml0cywgcykge1xuICAgICAgcmV0dXJuIG5ldyBLbWFjKGJpdHMsIHBhZGRpbmcsIG91dHB1dEJpdHMpLmJ5dGVwYWQoWydLTUFDJywgc10sIHcpLmJ5dGVwYWQoW2tleV0sIHcpO1xuICAgIH07XG4gICAgbWV0aG9kLnVwZGF0ZSA9IGZ1bmN0aW9uIChrZXksIG1lc3NhZ2UsIG91dHB1dEJpdHMsIHMpIHtcbiAgICAgIHJldHVybiBtZXRob2QuY3JlYXRlKGtleSwgb3V0cHV0Qml0cywgcykudXBkYXRlKG1lc3NhZ2UpO1xuICAgIH07XG4gICAgcmV0dXJuIGNyZWF0ZU91dHB1dE1ldGhvZHMobWV0aG9kLCBjcmVhdGVLbWFjT3V0cHV0TWV0aG9kLCBiaXRzLCBwYWRkaW5nKTtcbiAgfTtcblxuICB2YXIgYWxnb3JpdGhtcyA9IFtcbiAgICB7IG5hbWU6ICdrZWNjYWsnLCBwYWRkaW5nOiBLRUNDQUtfUEFERElORywgYml0czogQklUUywgY3JlYXRlTWV0aG9kOiBjcmVhdGVNZXRob2QgfSxcbiAgICB7IG5hbWU6ICdzaGEzJywgcGFkZGluZzogUEFERElORywgYml0czogQklUUywgY3JlYXRlTWV0aG9kOiBjcmVhdGVNZXRob2QgfSxcbiAgICB7IG5hbWU6ICdzaGFrZScsIHBhZGRpbmc6IFNIQUtFX1BBRERJTkcsIGJpdHM6IFNIQUtFX0JJVFMsIGNyZWF0ZU1ldGhvZDogY3JlYXRlU2hha2VNZXRob2QgfSxcbiAgICB7IG5hbWU6ICdjc2hha2UnLCBwYWRkaW5nOiBDU0hBS0VfUEFERElORywgYml0czogU0hBS0VfQklUUywgY3JlYXRlTWV0aG9kOiBjcmVhdGVDc2hha2VNZXRob2QgfSxcbiAgICB7IG5hbWU6ICdrbWFjJywgcGFkZGluZzogQ1NIQUtFX1BBRERJTkcsIGJpdHM6IFNIQUtFX0JJVFMsIGNyZWF0ZU1ldGhvZDogY3JlYXRlS21hY01ldGhvZCB9XG4gIF07XG5cbiAgdmFyIG1ldGhvZHMgPSB7fSwgbWV0aG9kTmFtZXMgPSBbXTtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IGFsZ29yaXRobXMubGVuZ3RoOyArK2kpIHtcbiAgICB2YXIgYWxnb3JpdGhtID0gYWxnb3JpdGhtc1tpXTtcbiAgICB2YXIgYml0cyA9IGFsZ29yaXRobS5iaXRzO1xuICAgIGZvciAodmFyIGogPSAwOyBqIDwgYml0cy5sZW5ndGg7ICsraikge1xuICAgICAgdmFyIG1ldGhvZE5hbWUgPSBhbGdvcml0aG0ubmFtZSArICdfJyArIGJpdHNbal07XG4gICAgICBtZXRob2ROYW1lcy5wdXNoKG1ldGhvZE5hbWUpO1xuICAgICAgbWV0aG9kc1ttZXRob2ROYW1lXSA9IGFsZ29yaXRobS5jcmVhdGVNZXRob2QoYml0c1tqXSwgYWxnb3JpdGhtLnBhZGRpbmcpO1xuICAgICAgaWYgKGFsZ29yaXRobS5uYW1lICE9PSAnc2hhMycpIHtcbiAgICAgICAgdmFyIG5ld01ldGhvZE5hbWUgPSBhbGdvcml0aG0ubmFtZSArIGJpdHNbal07XG4gICAgICAgIG1ldGhvZE5hbWVzLnB1c2gobmV3TWV0aG9kTmFtZSk7XG4gICAgICAgIG1ldGhvZHNbbmV3TWV0aG9kTmFtZV0gPSBtZXRob2RzW21ldGhvZE5hbWVdO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIEtlY2NhayhiaXRzLCBwYWRkaW5nLCBvdXRwdXRCaXRzKSB7XG4gICAgdGhpcy5ibG9ja3MgPSBbXTtcbiAgICB0aGlzLnMgPSBbXTtcbiAgICB0aGlzLnBhZGRpbmcgPSBwYWRkaW5nO1xuICAgIHRoaXMub3V0cHV0Qml0cyA9IG91dHB1dEJpdHM7XG4gICAgdGhpcy5yZXNldCA9IHRydWU7XG4gICAgdGhpcy5maW5hbGl6ZWQgPSBmYWxzZTtcbiAgICB0aGlzLmJsb2NrID0gMDtcbiAgICB0aGlzLnN0YXJ0ID0gMDtcbiAgICB0aGlzLmJsb2NrQ291bnQgPSAoMTYwMCAtIChiaXRzIDw8IDEpKSA+PiA1O1xuICAgIHRoaXMuYnl0ZUNvdW50ID0gdGhpcy5ibG9ja0NvdW50IDw8IDI7XG4gICAgdGhpcy5vdXRwdXRCbG9ja3MgPSBvdXRwdXRCaXRzID4+IDU7XG4gICAgdGhpcy5leHRyYUJ5dGVzID0gKG91dHB1dEJpdHMgJiAzMSkgPj4gMztcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgNTA7ICsraSkge1xuICAgICAgdGhpcy5zW2ldID0gMDtcbiAgICB9XG4gIH1cblxuICBLZWNjYWsucHJvdG90eXBlLnVwZGF0ZSA9IGZ1bmN0aW9uIChtZXNzYWdlKSB7XG4gICAgaWYgKHRoaXMuZmluYWxpemVkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoRklOQUxJWkVfRVJST1IpO1xuICAgIH1cbiAgICB2YXIgbm90U3RyaW5nLCB0eXBlID0gdHlwZW9mIG1lc3NhZ2U7XG4gICAgaWYgKHR5cGUgIT09ICdzdHJpbmcnKSB7XG4gICAgICBpZiAodHlwZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgaWYgKG1lc3NhZ2UgPT09IG51bGwpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoSU5QVVRfRVJST1IpO1xuICAgICAgICB9IGVsc2UgaWYgKEFSUkFZX0JVRkZFUiAmJiBtZXNzYWdlLmNvbnN0cnVjdG9yID09PSBBcnJheUJ1ZmZlcikge1xuICAgICAgICAgIG1lc3NhZ2UgPSBuZXcgVWludDhBcnJheShtZXNzYWdlKTtcbiAgICAgICAgfSBlbHNlIGlmICghQXJyYXkuaXNBcnJheShtZXNzYWdlKSkge1xuICAgICAgICAgIGlmICghQVJSQVlfQlVGRkVSIHx8ICFBcnJheUJ1ZmZlci5pc1ZpZXcobWVzc2FnZSkpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihJTlBVVF9FUlJPUik7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoSU5QVVRfRVJST1IpO1xuICAgICAgfVxuICAgICAgbm90U3RyaW5nID0gdHJ1ZTtcbiAgICB9XG4gICAgdmFyIGJsb2NrcyA9IHRoaXMuYmxvY2tzLCBieXRlQ291bnQgPSB0aGlzLmJ5dGVDb3VudCwgbGVuZ3RoID0gbWVzc2FnZS5sZW5ndGgsXG4gICAgICBibG9ja0NvdW50ID0gdGhpcy5ibG9ja0NvdW50LCBpbmRleCA9IDAsIHMgPSB0aGlzLnMsIGksIGNvZGU7XG5cbiAgICB3aGlsZSAoaW5kZXggPCBsZW5ndGgpIHtcbiAgICAgIGlmICh0aGlzLnJlc2V0KSB7XG4gICAgICAgIHRoaXMucmVzZXQgPSBmYWxzZTtcbiAgICAgICAgYmxvY2tzWzBdID0gdGhpcy5ibG9jaztcbiAgICAgICAgZm9yIChpID0gMTsgaSA8IGJsb2NrQ291bnQgKyAxOyArK2kpIHtcbiAgICAgICAgICBibG9ja3NbaV0gPSAwO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAobm90U3RyaW5nKSB7XG4gICAgICAgIGZvciAoaSA9IHRoaXMuc3RhcnQ7IGluZGV4IDwgbGVuZ3RoICYmIGkgPCBieXRlQ291bnQ7ICsraW5kZXgpIHtcbiAgICAgICAgICBibG9ja3NbaSA+PiAyXSB8PSBtZXNzYWdlW2luZGV4XSA8PCBTSElGVFtpKysgJiAzXTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZm9yIChpID0gdGhpcy5zdGFydDsgaW5kZXggPCBsZW5ndGggJiYgaSA8IGJ5dGVDb3VudDsgKytpbmRleCkge1xuICAgICAgICAgIGNvZGUgPSBtZXNzYWdlLmNoYXJDb2RlQXQoaW5kZXgpO1xuICAgICAgICAgIGlmIChjb2RlIDwgMHg4MCkge1xuICAgICAgICAgICAgYmxvY2tzW2kgPj4gMl0gfD0gY29kZSA8PCBTSElGVFtpKysgJiAzXTtcbiAgICAgICAgICB9IGVsc2UgaWYgKGNvZGUgPCAweDgwMCkge1xuICAgICAgICAgICAgYmxvY2tzW2kgPj4gMl0gfD0gKDB4YzAgfCAoY29kZSA+PiA2KSkgPDwgU0hJRlRbaSsrICYgM107XG4gICAgICAgICAgICBibG9ja3NbaSA+PiAyXSB8PSAoMHg4MCB8IChjb2RlICYgMHgzZikpIDw8IFNISUZUW2krKyAmIDNdO1xuICAgICAgICAgIH0gZWxzZSBpZiAoY29kZSA8IDB4ZDgwMCB8fCBjb2RlID49IDB4ZTAwMCkge1xuICAgICAgICAgICAgYmxvY2tzW2kgPj4gMl0gfD0gKDB4ZTAgfCAoY29kZSA+PiAxMikpIDw8IFNISUZUW2krKyAmIDNdO1xuICAgICAgICAgICAgYmxvY2tzW2kgPj4gMl0gfD0gKDB4ODAgfCAoKGNvZGUgPj4gNikgJiAweDNmKSkgPDwgU0hJRlRbaSsrICYgM107XG4gICAgICAgICAgICBibG9ja3NbaSA+PiAyXSB8PSAoMHg4MCB8IChjb2RlICYgMHgzZikpIDw8IFNISUZUW2krKyAmIDNdO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb2RlID0gMHgxMDAwMCArICgoKGNvZGUgJiAweDNmZikgPDwgMTApIHwgKG1lc3NhZ2UuY2hhckNvZGVBdCgrK2luZGV4KSAmIDB4M2ZmKSk7XG4gICAgICAgICAgICBibG9ja3NbaSA+PiAyXSB8PSAoMHhmMCB8IChjb2RlID4+IDE4KSkgPDwgU0hJRlRbaSsrICYgM107XG4gICAgICAgICAgICBibG9ja3NbaSA+PiAyXSB8PSAoMHg4MCB8ICgoY29kZSA+PiAxMikgJiAweDNmKSkgPDwgU0hJRlRbaSsrICYgM107XG4gICAgICAgICAgICBibG9ja3NbaSA+PiAyXSB8PSAoMHg4MCB8ICgoY29kZSA+PiA2KSAmIDB4M2YpKSA8PCBTSElGVFtpKysgJiAzXTtcbiAgICAgICAgICAgIGJsb2Nrc1tpID4+IDJdIHw9ICgweDgwIHwgKGNvZGUgJiAweDNmKSkgPDwgU0hJRlRbaSsrICYgM107XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICB0aGlzLmxhc3RCeXRlSW5kZXggPSBpO1xuICAgICAgaWYgKGkgPj0gYnl0ZUNvdW50KSB7XG4gICAgICAgIHRoaXMuc3RhcnQgPSBpIC0gYnl0ZUNvdW50O1xuICAgICAgICB0aGlzLmJsb2NrID0gYmxvY2tzW2Jsb2NrQ291bnRdO1xuICAgICAgICBmb3IgKGkgPSAwOyBpIDwgYmxvY2tDb3VudDsgKytpKSB7XG4gICAgICAgICAgc1tpXSBePSBibG9ja3NbaV07XG4gICAgICAgIH1cbiAgICAgICAgZihzKTtcbiAgICAgICAgdGhpcy5yZXNldCA9IHRydWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnN0YXJ0ID0gaTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgS2VjY2FrLnByb3RvdHlwZS5lbmNvZGUgPSBmdW5jdGlvbiAoeCwgcmlnaHQpIHtcbiAgICB2YXIgbyA9IHggJiAyNTUsIG4gPSAxO1xuICAgIHZhciBieXRlcyA9IFtvXTtcbiAgICB4ID0geCA+PiA4O1xuICAgIG8gPSB4ICYgMjU1O1xuICAgIHdoaWxlIChvID4gMCkge1xuICAgICAgYnl0ZXMudW5zaGlmdChvKTtcbiAgICAgIHggPSB4ID4+IDg7XG4gICAgICBvID0geCAmIDI1NTtcbiAgICAgICsrbjtcbiAgICB9XG4gICAgaWYgKHJpZ2h0KSB7XG4gICAgICBieXRlcy5wdXNoKG4pO1xuICAgIH0gZWxzZSB7XG4gICAgICBieXRlcy51bnNoaWZ0KG4pO1xuICAgIH1cbiAgICB0aGlzLnVwZGF0ZShieXRlcyk7XG4gICAgcmV0dXJuIGJ5dGVzLmxlbmd0aDtcbiAgfTtcblxuICBLZWNjYWsucHJvdG90eXBlLmVuY29kZVN0cmluZyA9IGZ1bmN0aW9uIChzdHIpIHtcbiAgICB2YXIgbm90U3RyaW5nLCB0eXBlID0gdHlwZW9mIHN0cjtcbiAgICBpZiAodHlwZSAhPT0gJ3N0cmluZycpIHtcbiAgICAgIGlmICh0eXBlID09PSAnb2JqZWN0Jykge1xuICAgICAgICBpZiAoc3RyID09PSBudWxsKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKElOUFVUX0VSUk9SKTtcbiAgICAgICAgfSBlbHNlIGlmIChBUlJBWV9CVUZGRVIgJiYgc3RyLmNvbnN0cnVjdG9yID09PSBBcnJheUJ1ZmZlcikge1xuICAgICAgICAgIHN0ciA9IG5ldyBVaW50OEFycmF5KHN0cik7XG4gICAgICAgIH0gZWxzZSBpZiAoIUFycmF5LmlzQXJyYXkoc3RyKSkge1xuICAgICAgICAgIGlmICghQVJSQVlfQlVGRkVSIHx8ICFBcnJheUJ1ZmZlci5pc1ZpZXcoc3RyKSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKElOUFVUX0VSUk9SKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihJTlBVVF9FUlJPUik7XG4gICAgICB9XG4gICAgICBub3RTdHJpbmcgPSB0cnVlO1xuICAgIH1cbiAgICB2YXIgYnl0ZXMgPSAwLCBsZW5ndGggPSBzdHIubGVuZ3RoO1xuICAgIGlmIChub3RTdHJpbmcpIHtcbiAgICAgIGJ5dGVzID0gbGVuZ3RoO1xuICAgIH0gZWxzZSB7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHN0ci5sZW5ndGg7ICsraSkge1xuICAgICAgICB2YXIgY29kZSA9IHN0ci5jaGFyQ29kZUF0KGkpO1xuICAgICAgICBpZiAoY29kZSA8IDB4ODApIHtcbiAgICAgICAgICBieXRlcyArPSAxO1xuICAgICAgICB9IGVsc2UgaWYgKGNvZGUgPCAweDgwMCkge1xuICAgICAgICAgIGJ5dGVzICs9IDI7XG4gICAgICAgIH0gZWxzZSBpZiAoY29kZSA8IDB4ZDgwMCB8fCBjb2RlID49IDB4ZTAwMCkge1xuICAgICAgICAgIGJ5dGVzICs9IDM7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29kZSA9IDB4MTAwMDAgKyAoKChjb2RlICYgMHgzZmYpIDw8IDEwKSB8IChzdHIuY2hhckNvZGVBdCgrK2kpICYgMHgzZmYpKTtcbiAgICAgICAgICBieXRlcyArPSA0O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGJ5dGVzICs9IHRoaXMuZW5jb2RlKGJ5dGVzICogOCk7XG4gICAgdGhpcy51cGRhdGUoc3RyKTtcbiAgICByZXR1cm4gYnl0ZXM7XG4gIH07XG5cbiAgS2VjY2FrLnByb3RvdHlwZS5ieXRlcGFkID0gZnVuY3Rpb24gKHN0cnMsIHcpIHtcbiAgICB2YXIgYnl0ZXMgPSB0aGlzLmVuY29kZSh3KTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHN0cnMubGVuZ3RoOyArK2kpIHtcbiAgICAgIGJ5dGVzICs9IHRoaXMuZW5jb2RlU3RyaW5nKHN0cnNbaV0pO1xuICAgIH1cbiAgICB2YXIgcGFkZGluZ0J5dGVzID0gdyAtIGJ5dGVzICUgdztcbiAgICB2YXIgemVyb3MgPSBbXTtcbiAgICB6ZXJvcy5sZW5ndGggPSBwYWRkaW5nQnl0ZXM7XG4gICAgdGhpcy51cGRhdGUoemVyb3MpO1xuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIEtlY2Nhay5wcm90b3R5cGUuZmluYWxpemUgPSBmdW5jdGlvbiAoKSB7XG4gICAgaWYgKHRoaXMuZmluYWxpemVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuZmluYWxpemVkID0gdHJ1ZTtcbiAgICB2YXIgYmxvY2tzID0gdGhpcy5ibG9ja3MsIGkgPSB0aGlzLmxhc3RCeXRlSW5kZXgsIGJsb2NrQ291bnQgPSB0aGlzLmJsb2NrQ291bnQsIHMgPSB0aGlzLnM7XG4gICAgYmxvY2tzW2kgPj4gMl0gfD0gdGhpcy5wYWRkaW5nW2kgJiAzXTtcbiAgICBpZiAodGhpcy5sYXN0Qnl0ZUluZGV4ID09PSB0aGlzLmJ5dGVDb3VudCkge1xuICAgICAgYmxvY2tzWzBdID0gYmxvY2tzW2Jsb2NrQ291bnRdO1xuICAgICAgZm9yIChpID0gMTsgaSA8IGJsb2NrQ291bnQgKyAxOyArK2kpIHtcbiAgICAgICAgYmxvY2tzW2ldID0gMDtcbiAgICAgIH1cbiAgICB9XG4gICAgYmxvY2tzW2Jsb2NrQ291bnQgLSAxXSB8PSAweDgwMDAwMDAwO1xuICAgIGZvciAoaSA9IDA7IGkgPCBibG9ja0NvdW50OyArK2kpIHtcbiAgICAgIHNbaV0gXj0gYmxvY2tzW2ldO1xuICAgIH1cbiAgICBmKHMpO1xuICB9O1xuXG4gIEtlY2Nhay5wcm90b3R5cGUudG9TdHJpbmcgPSBLZWNjYWsucHJvdG90eXBlLmhleCA9IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLmZpbmFsaXplKCk7XG5cbiAgICB2YXIgYmxvY2tDb3VudCA9IHRoaXMuYmxvY2tDb3VudCwgcyA9IHRoaXMucywgb3V0cHV0QmxvY2tzID0gdGhpcy5vdXRwdXRCbG9ja3MsXG4gICAgICBleHRyYUJ5dGVzID0gdGhpcy5leHRyYUJ5dGVzLCBpID0gMCwgaiA9IDA7XG4gICAgdmFyIGhleCA9ICcnLCBibG9jaztcbiAgICB3aGlsZSAoaiA8IG91dHB1dEJsb2Nrcykge1xuICAgICAgZm9yIChpID0gMDsgaSA8IGJsb2NrQ291bnQgJiYgaiA8IG91dHB1dEJsb2NrczsgKytpLCArK2opIHtcbiAgICAgICAgYmxvY2sgPSBzW2ldO1xuICAgICAgICBoZXggKz0gSEVYX0NIQVJTWyhibG9jayA+PiA0KSAmIDB4MEZdICsgSEVYX0NIQVJTW2Jsb2NrICYgMHgwRl0gK1xuICAgICAgICAgIEhFWF9DSEFSU1soYmxvY2sgPj4gMTIpICYgMHgwRl0gKyBIRVhfQ0hBUlNbKGJsb2NrID4+IDgpICYgMHgwRl0gK1xuICAgICAgICAgIEhFWF9DSEFSU1soYmxvY2sgPj4gMjApICYgMHgwRl0gKyBIRVhfQ0hBUlNbKGJsb2NrID4+IDE2KSAmIDB4MEZdICtcbiAgICAgICAgICBIRVhfQ0hBUlNbKGJsb2NrID4+IDI4KSAmIDB4MEZdICsgSEVYX0NIQVJTWyhibG9jayA+PiAyNCkgJiAweDBGXTtcbiAgICAgIH1cbiAgICAgIGlmIChqICUgYmxvY2tDb3VudCA9PT0gMCkge1xuICAgICAgICBmKHMpO1xuICAgICAgICBpID0gMDtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGV4dHJhQnl0ZXMpIHtcbiAgICAgIGJsb2NrID0gc1tpXTtcbiAgICAgIGhleCArPSBIRVhfQ0hBUlNbKGJsb2NrID4+IDQpICYgMHgwRl0gKyBIRVhfQ0hBUlNbYmxvY2sgJiAweDBGXTtcbiAgICAgIGlmIChleHRyYUJ5dGVzID4gMSkge1xuICAgICAgICBoZXggKz0gSEVYX0NIQVJTWyhibG9jayA+PiAxMikgJiAweDBGXSArIEhFWF9DSEFSU1soYmxvY2sgPj4gOCkgJiAweDBGXTtcbiAgICAgIH1cbiAgICAgIGlmIChleHRyYUJ5dGVzID4gMikge1xuICAgICAgICBoZXggKz0gSEVYX0NIQVJTWyhibG9jayA+PiAyMCkgJiAweDBGXSArIEhFWF9DSEFSU1soYmxvY2sgPj4gMTYpICYgMHgwRl07XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBoZXg7XG4gIH07XG5cbiAgS2VjY2FrLnByb3RvdHlwZS5hcnJheUJ1ZmZlciA9IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLmZpbmFsaXplKCk7XG5cbiAgICB2YXIgYmxvY2tDb3VudCA9IHRoaXMuYmxvY2tDb3VudCwgcyA9IHRoaXMucywgb3V0cHV0QmxvY2tzID0gdGhpcy5vdXRwdXRCbG9ja3MsXG4gICAgICBleHRyYUJ5dGVzID0gdGhpcy5leHRyYUJ5dGVzLCBpID0gMCwgaiA9IDA7XG4gICAgdmFyIGJ5dGVzID0gdGhpcy5vdXRwdXRCaXRzID4+IDM7XG4gICAgdmFyIGJ1ZmZlcjtcbiAgICBpZiAoZXh0cmFCeXRlcykge1xuICAgICAgYnVmZmVyID0gbmV3IEFycmF5QnVmZmVyKChvdXRwdXRCbG9ja3MgKyAxKSA8PCAyKTtcbiAgICB9IGVsc2Uge1xuICAgICAgYnVmZmVyID0gbmV3IEFycmF5QnVmZmVyKGJ5dGVzKTtcbiAgICB9XG4gICAgdmFyIGFycmF5ID0gbmV3IFVpbnQzMkFycmF5KGJ1ZmZlcik7XG4gICAgd2hpbGUgKGogPCBvdXRwdXRCbG9ja3MpIHtcbiAgICAgIGZvciAoaSA9IDA7IGkgPCBibG9ja0NvdW50ICYmIGogPCBvdXRwdXRCbG9ja3M7ICsraSwgKytqKSB7XG4gICAgICAgIGFycmF5W2pdID0gc1tpXTtcbiAgICAgIH1cbiAgICAgIGlmIChqICUgYmxvY2tDb3VudCA9PT0gMCkge1xuICAgICAgICBmKHMpO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoZXh0cmFCeXRlcykge1xuICAgICAgYXJyYXlbaV0gPSBzW2ldO1xuICAgICAgYnVmZmVyID0gYnVmZmVyLnNsaWNlKDAsIGJ5dGVzKTtcbiAgICB9XG4gICAgcmV0dXJuIGJ1ZmZlcjtcbiAgfTtcblxuICBLZWNjYWsucHJvdG90eXBlLmJ1ZmZlciA9IEtlY2Nhay5wcm90b3R5cGUuYXJyYXlCdWZmZXI7XG5cbiAgS2VjY2FrLnByb3RvdHlwZS5kaWdlc3QgPSBLZWNjYWsucHJvdG90eXBlLmFycmF5ID0gZnVuY3Rpb24gKCkge1xuICAgIHRoaXMuZmluYWxpemUoKTtcblxuICAgIHZhciBibG9ja0NvdW50ID0gdGhpcy5ibG9ja0NvdW50LCBzID0gdGhpcy5zLCBvdXRwdXRCbG9ja3MgPSB0aGlzLm91dHB1dEJsb2NrcyxcbiAgICAgIGV4dHJhQnl0ZXMgPSB0aGlzLmV4dHJhQnl0ZXMsIGkgPSAwLCBqID0gMDtcbiAgICB2YXIgYXJyYXkgPSBbXSwgb2Zmc2V0LCBibG9jaztcbiAgICB3aGlsZSAoaiA8IG91dHB1dEJsb2Nrcykge1xuICAgICAgZm9yIChpID0gMDsgaSA8IGJsb2NrQ291bnQgJiYgaiA8IG91dHB1dEJsb2NrczsgKytpLCArK2opIHtcbiAgICAgICAgb2Zmc2V0ID0gaiA8PCAyO1xuICAgICAgICBibG9jayA9IHNbaV07XG4gICAgICAgIGFycmF5W29mZnNldF0gPSBibG9jayAmIDB4RkY7XG4gICAgICAgIGFycmF5W29mZnNldCArIDFdID0gKGJsb2NrID4+IDgpICYgMHhGRjtcbiAgICAgICAgYXJyYXlbb2Zmc2V0ICsgMl0gPSAoYmxvY2sgPj4gMTYpICYgMHhGRjtcbiAgICAgICAgYXJyYXlbb2Zmc2V0ICsgM10gPSAoYmxvY2sgPj4gMjQpICYgMHhGRjtcbiAgICAgIH1cbiAgICAgIGlmIChqICUgYmxvY2tDb3VudCA9PT0gMCkge1xuICAgICAgICBmKHMpO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoZXh0cmFCeXRlcykge1xuICAgICAgb2Zmc2V0ID0gaiA8PCAyO1xuICAgICAgYmxvY2sgPSBzW2ldO1xuICAgICAgYXJyYXlbb2Zmc2V0XSA9IGJsb2NrICYgMHhGRjtcbiAgICAgIGlmIChleHRyYUJ5dGVzID4gMSkge1xuICAgICAgICBhcnJheVtvZmZzZXQgKyAxXSA9IChibG9jayA+PiA4KSAmIDB4RkY7XG4gICAgICB9XG4gICAgICBpZiAoZXh0cmFCeXRlcyA+IDIpIHtcbiAgICAgICAgYXJyYXlbb2Zmc2V0ICsgMl0gPSAoYmxvY2sgPj4gMTYpICYgMHhGRjtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGFycmF5O1xuICB9O1xuXG4gIGZ1bmN0aW9uIEttYWMoYml0cywgcGFkZGluZywgb3V0cHV0Qml0cykge1xuICAgIEtlY2Nhay5jYWxsKHRoaXMsIGJpdHMsIHBhZGRpbmcsIG91dHB1dEJpdHMpO1xuICB9XG5cbiAgS21hYy5wcm90b3R5cGUgPSBuZXcgS2VjY2FrKCk7XG5cbiAgS21hYy5wcm90b3R5cGUuZmluYWxpemUgPSBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5lbmNvZGUodGhpcy5vdXRwdXRCaXRzLCB0cnVlKTtcbiAgICByZXR1cm4gS2VjY2FrLnByb3RvdHlwZS5maW5hbGl6ZS5jYWxsKHRoaXMpO1xuICB9O1xuXG4gIHZhciBmID0gZnVuY3Rpb24gKHMpIHtcbiAgICB2YXIgaCwgbCwgbiwgYzAsIGMxLCBjMiwgYzMsIGM0LCBjNSwgYzYsIGM3LCBjOCwgYzksXG4gICAgICBiMCwgYjEsIGIyLCBiMywgYjQsIGI1LCBiNiwgYjcsIGI4LCBiOSwgYjEwLCBiMTEsIGIxMiwgYjEzLCBiMTQsIGIxNSwgYjE2LCBiMTcsXG4gICAgICBiMTgsIGIxOSwgYjIwLCBiMjEsIGIyMiwgYjIzLCBiMjQsIGIyNSwgYjI2LCBiMjcsIGIyOCwgYjI5LCBiMzAsIGIzMSwgYjMyLCBiMzMsXG4gICAgICBiMzQsIGIzNSwgYjM2LCBiMzcsIGIzOCwgYjM5LCBiNDAsIGI0MSwgYjQyLCBiNDMsIGI0NCwgYjQ1LCBiNDYsIGI0NywgYjQ4LCBiNDk7XG4gICAgZm9yIChuID0gMDsgbiA8IDQ4OyBuICs9IDIpIHtcbiAgICAgIGMwID0gc1swXSBeIHNbMTBdIF4gc1syMF0gXiBzWzMwXSBeIHNbNDBdO1xuICAgICAgYzEgPSBzWzFdIF4gc1sxMV0gXiBzWzIxXSBeIHNbMzFdIF4gc1s0MV07XG4gICAgICBjMiA9IHNbMl0gXiBzWzEyXSBeIHNbMjJdIF4gc1szMl0gXiBzWzQyXTtcbiAgICAgIGMzID0gc1szXSBeIHNbMTNdIF4gc1syM10gXiBzWzMzXSBeIHNbNDNdO1xuICAgICAgYzQgPSBzWzRdIF4gc1sxNF0gXiBzWzI0XSBeIHNbMzRdIF4gc1s0NF07XG4gICAgICBjNSA9IHNbNV0gXiBzWzE1XSBeIHNbMjVdIF4gc1szNV0gXiBzWzQ1XTtcbiAgICAgIGM2ID0gc1s2XSBeIHNbMTZdIF4gc1syNl0gXiBzWzM2XSBeIHNbNDZdO1xuICAgICAgYzcgPSBzWzddIF4gc1sxN10gXiBzWzI3XSBeIHNbMzddIF4gc1s0N107XG4gICAgICBjOCA9IHNbOF0gXiBzWzE4XSBeIHNbMjhdIF4gc1szOF0gXiBzWzQ4XTtcbiAgICAgIGM5ID0gc1s5XSBeIHNbMTldIF4gc1syOV0gXiBzWzM5XSBeIHNbNDldO1xuXG4gICAgICBoID0gYzggXiAoKGMyIDw8IDEpIHwgKGMzID4+PiAzMSkpO1xuICAgICAgbCA9IGM5IF4gKChjMyA8PCAxKSB8IChjMiA+Pj4gMzEpKTtcbiAgICAgIHNbMF0gXj0gaDtcbiAgICAgIHNbMV0gXj0gbDtcbiAgICAgIHNbMTBdIF49IGg7XG4gICAgICBzWzExXSBePSBsO1xuICAgICAgc1syMF0gXj0gaDtcbiAgICAgIHNbMjFdIF49IGw7XG4gICAgICBzWzMwXSBePSBoO1xuICAgICAgc1szMV0gXj0gbDtcbiAgICAgIHNbNDBdIF49IGg7XG4gICAgICBzWzQxXSBePSBsO1xuICAgICAgaCA9IGMwIF4gKChjNCA8PCAxKSB8IChjNSA+Pj4gMzEpKTtcbiAgICAgIGwgPSBjMSBeICgoYzUgPDwgMSkgfCAoYzQgPj4+IDMxKSk7XG4gICAgICBzWzJdIF49IGg7XG4gICAgICBzWzNdIF49IGw7XG4gICAgICBzWzEyXSBePSBoO1xuICAgICAgc1sxM10gXj0gbDtcbiAgICAgIHNbMjJdIF49IGg7XG4gICAgICBzWzIzXSBePSBsO1xuICAgICAgc1szMl0gXj0gaDtcbiAgICAgIHNbMzNdIF49IGw7XG4gICAgICBzWzQyXSBePSBoO1xuICAgICAgc1s0M10gXj0gbDtcbiAgICAgIGggPSBjMiBeICgoYzYgPDwgMSkgfCAoYzcgPj4+IDMxKSk7XG4gICAgICBsID0gYzMgXiAoKGM3IDw8IDEpIHwgKGM2ID4+PiAzMSkpO1xuICAgICAgc1s0XSBePSBoO1xuICAgICAgc1s1XSBePSBsO1xuICAgICAgc1sxNF0gXj0gaDtcbiAgICAgIHNbMTVdIF49IGw7XG4gICAgICBzWzI0XSBePSBoO1xuICAgICAgc1syNV0gXj0gbDtcbiAgICAgIHNbMzRdIF49IGg7XG4gICAgICBzWzM1XSBePSBsO1xuICAgICAgc1s0NF0gXj0gaDtcbiAgICAgIHNbNDVdIF49IGw7XG4gICAgICBoID0gYzQgXiAoKGM4IDw8IDEpIHwgKGM5ID4+PiAzMSkpO1xuICAgICAgbCA9IGM1IF4gKChjOSA8PCAxKSB8IChjOCA+Pj4gMzEpKTtcbiAgICAgIHNbNl0gXj0gaDtcbiAgICAgIHNbN10gXj0gbDtcbiAgICAgIHNbMTZdIF49IGg7XG4gICAgICBzWzE3XSBePSBsO1xuICAgICAgc1syNl0gXj0gaDtcbiAgICAgIHNbMjddIF49IGw7XG4gICAgICBzWzM2XSBePSBoO1xuICAgICAgc1szN10gXj0gbDtcbiAgICAgIHNbNDZdIF49IGg7XG4gICAgICBzWzQ3XSBePSBsO1xuICAgICAgaCA9IGM2IF4gKChjMCA8PCAxKSB8IChjMSA+Pj4gMzEpKTtcbiAgICAgIGwgPSBjNyBeICgoYzEgPDwgMSkgfCAoYzAgPj4+IDMxKSk7XG4gICAgICBzWzhdIF49IGg7XG4gICAgICBzWzldIF49IGw7XG4gICAgICBzWzE4XSBePSBoO1xuICAgICAgc1sxOV0gXj0gbDtcbiAgICAgIHNbMjhdIF49IGg7XG4gICAgICBzWzI5XSBePSBsO1xuICAgICAgc1szOF0gXj0gaDtcbiAgICAgIHNbMzldIF49IGw7XG4gICAgICBzWzQ4XSBePSBoO1xuICAgICAgc1s0OV0gXj0gbDtcblxuICAgICAgYjAgPSBzWzBdO1xuICAgICAgYjEgPSBzWzFdO1xuICAgICAgYjMyID0gKHNbMTFdIDw8IDQpIHwgKHNbMTBdID4+PiAyOCk7XG4gICAgICBiMzMgPSAoc1sxMF0gPDwgNCkgfCAoc1sxMV0gPj4+IDI4KTtcbiAgICAgIGIxNCA9IChzWzIwXSA8PCAzKSB8IChzWzIxXSA+Pj4gMjkpO1xuICAgICAgYjE1ID0gKHNbMjFdIDw8IDMpIHwgKHNbMjBdID4+PiAyOSk7XG4gICAgICBiNDYgPSAoc1szMV0gPDwgOSkgfCAoc1szMF0gPj4+IDIzKTtcbiAgICAgIGI0NyA9IChzWzMwXSA8PCA5KSB8IChzWzMxXSA+Pj4gMjMpO1xuICAgICAgYjI4ID0gKHNbNDBdIDw8IDE4KSB8IChzWzQxXSA+Pj4gMTQpO1xuICAgICAgYjI5ID0gKHNbNDFdIDw8IDE4KSB8IChzWzQwXSA+Pj4gMTQpO1xuICAgICAgYjIwID0gKHNbMl0gPDwgMSkgfCAoc1szXSA+Pj4gMzEpO1xuICAgICAgYjIxID0gKHNbM10gPDwgMSkgfCAoc1syXSA+Pj4gMzEpO1xuICAgICAgYjIgPSAoc1sxM10gPDwgMTIpIHwgKHNbMTJdID4+PiAyMCk7XG4gICAgICBiMyA9IChzWzEyXSA8PCAxMikgfCAoc1sxM10gPj4+IDIwKTtcbiAgICAgIGIzNCA9IChzWzIyXSA8PCAxMCkgfCAoc1syM10gPj4+IDIyKTtcbiAgICAgIGIzNSA9IChzWzIzXSA8PCAxMCkgfCAoc1syMl0gPj4+IDIyKTtcbiAgICAgIGIxNiA9IChzWzMzXSA8PCAxMykgfCAoc1szMl0gPj4+IDE5KTtcbiAgICAgIGIxNyA9IChzWzMyXSA8PCAxMykgfCAoc1szM10gPj4+IDE5KTtcbiAgICAgIGI0OCA9IChzWzQyXSA8PCAyKSB8IChzWzQzXSA+Pj4gMzApO1xuICAgICAgYjQ5ID0gKHNbNDNdIDw8IDIpIHwgKHNbNDJdID4+PiAzMCk7XG4gICAgICBiNDAgPSAoc1s1XSA8PCAzMCkgfCAoc1s0XSA+Pj4gMik7XG4gICAgICBiNDEgPSAoc1s0XSA8PCAzMCkgfCAoc1s1XSA+Pj4gMik7XG4gICAgICBiMjIgPSAoc1sxNF0gPDwgNikgfCAoc1sxNV0gPj4+IDI2KTtcbiAgICAgIGIyMyA9IChzWzE1XSA8PCA2KSB8IChzWzE0XSA+Pj4gMjYpO1xuICAgICAgYjQgPSAoc1syNV0gPDwgMTEpIHwgKHNbMjRdID4+PiAyMSk7XG4gICAgICBiNSA9IChzWzI0XSA8PCAxMSkgfCAoc1syNV0gPj4+IDIxKTtcbiAgICAgIGIzNiA9IChzWzM0XSA8PCAxNSkgfCAoc1szNV0gPj4+IDE3KTtcbiAgICAgIGIzNyA9IChzWzM1XSA8PCAxNSkgfCAoc1szNF0gPj4+IDE3KTtcbiAgICAgIGIxOCA9IChzWzQ1XSA8PCAyOSkgfCAoc1s0NF0gPj4+IDMpO1xuICAgICAgYjE5ID0gKHNbNDRdIDw8IDI5KSB8IChzWzQ1XSA+Pj4gMyk7XG4gICAgICBiMTAgPSAoc1s2XSA8PCAyOCkgfCAoc1s3XSA+Pj4gNCk7XG4gICAgICBiMTEgPSAoc1s3XSA8PCAyOCkgfCAoc1s2XSA+Pj4gNCk7XG4gICAgICBiNDIgPSAoc1sxN10gPDwgMjMpIHwgKHNbMTZdID4+PiA5KTtcbiAgICAgIGI0MyA9IChzWzE2XSA8PCAyMykgfCAoc1sxN10gPj4+IDkpO1xuICAgICAgYjI0ID0gKHNbMjZdIDw8IDI1KSB8IChzWzI3XSA+Pj4gNyk7XG4gICAgICBiMjUgPSAoc1syN10gPDwgMjUpIHwgKHNbMjZdID4+PiA3KTtcbiAgICAgIGI2ID0gKHNbMzZdIDw8IDIxKSB8IChzWzM3XSA+Pj4gMTEpO1xuICAgICAgYjcgPSAoc1szN10gPDwgMjEpIHwgKHNbMzZdID4+PiAxMSk7XG4gICAgICBiMzggPSAoc1s0N10gPDwgMjQpIHwgKHNbNDZdID4+PiA4KTtcbiAgICAgIGIzOSA9IChzWzQ2XSA8PCAyNCkgfCAoc1s0N10gPj4+IDgpO1xuICAgICAgYjMwID0gKHNbOF0gPDwgMjcpIHwgKHNbOV0gPj4+IDUpO1xuICAgICAgYjMxID0gKHNbOV0gPDwgMjcpIHwgKHNbOF0gPj4+IDUpO1xuICAgICAgYjEyID0gKHNbMThdIDw8IDIwKSB8IChzWzE5XSA+Pj4gMTIpO1xuICAgICAgYjEzID0gKHNbMTldIDw8IDIwKSB8IChzWzE4XSA+Pj4gMTIpO1xuICAgICAgYjQ0ID0gKHNbMjldIDw8IDcpIHwgKHNbMjhdID4+PiAyNSk7XG4gICAgICBiNDUgPSAoc1syOF0gPDwgNykgfCAoc1syOV0gPj4+IDI1KTtcbiAgICAgIGIyNiA9IChzWzM4XSA8PCA4KSB8IChzWzM5XSA+Pj4gMjQpO1xuICAgICAgYjI3ID0gKHNbMzldIDw8IDgpIHwgKHNbMzhdID4+PiAyNCk7XG4gICAgICBiOCA9IChzWzQ4XSA8PCAxNCkgfCAoc1s0OV0gPj4+IDE4KTtcbiAgICAgIGI5ID0gKHNbNDldIDw8IDE0KSB8IChzWzQ4XSA+Pj4gMTgpO1xuXG4gICAgICBzWzBdID0gYjAgXiAofmIyICYgYjQpO1xuICAgICAgc1sxXSA9IGIxIF4gKH5iMyAmIGI1KTtcbiAgICAgIHNbMTBdID0gYjEwIF4gKH5iMTIgJiBiMTQpO1xuICAgICAgc1sxMV0gPSBiMTEgXiAofmIxMyAmIGIxNSk7XG4gICAgICBzWzIwXSA9IGIyMCBeICh+YjIyICYgYjI0KTtcbiAgICAgIHNbMjFdID0gYjIxIF4gKH5iMjMgJiBiMjUpO1xuICAgICAgc1szMF0gPSBiMzAgXiAofmIzMiAmIGIzNCk7XG4gICAgICBzWzMxXSA9IGIzMSBeICh+YjMzICYgYjM1KTtcbiAgICAgIHNbNDBdID0gYjQwIF4gKH5iNDIgJiBiNDQpO1xuICAgICAgc1s0MV0gPSBiNDEgXiAofmI0MyAmIGI0NSk7XG4gICAgICBzWzJdID0gYjIgXiAofmI0ICYgYjYpO1xuICAgICAgc1szXSA9IGIzIF4gKH5iNSAmIGI3KTtcbiAgICAgIHNbMTJdID0gYjEyIF4gKH5iMTQgJiBiMTYpO1xuICAgICAgc1sxM10gPSBiMTMgXiAofmIxNSAmIGIxNyk7XG4gICAgICBzWzIyXSA9IGIyMiBeICh+YjI0ICYgYjI2KTtcbiAgICAgIHNbMjNdID0gYjIzIF4gKH5iMjUgJiBiMjcpO1xuICAgICAgc1szMl0gPSBiMzIgXiAofmIzNCAmIGIzNik7XG4gICAgICBzWzMzXSA9IGIzMyBeICh+YjM1ICYgYjM3KTtcbiAgICAgIHNbNDJdID0gYjQyIF4gKH5iNDQgJiBiNDYpO1xuICAgICAgc1s0M10gPSBiNDMgXiAofmI0NSAmIGI0Nyk7XG4gICAgICBzWzRdID0gYjQgXiAofmI2ICYgYjgpO1xuICAgICAgc1s1XSA9IGI1IF4gKH5iNyAmIGI5KTtcbiAgICAgIHNbMTRdID0gYjE0IF4gKH5iMTYgJiBiMTgpO1xuICAgICAgc1sxNV0gPSBiMTUgXiAofmIxNyAmIGIxOSk7XG4gICAgICBzWzI0XSA9IGIyNCBeICh+YjI2ICYgYjI4KTtcbiAgICAgIHNbMjVdID0gYjI1IF4gKH5iMjcgJiBiMjkpO1xuICAgICAgc1szNF0gPSBiMzQgXiAofmIzNiAmIGIzOCk7XG4gICAgICBzWzM1XSA9IGIzNSBeICh+YjM3ICYgYjM5KTtcbiAgICAgIHNbNDRdID0gYjQ0IF4gKH5iNDYgJiBiNDgpO1xuICAgICAgc1s0NV0gPSBiNDUgXiAofmI0NyAmIGI0OSk7XG4gICAgICBzWzZdID0gYjYgXiAofmI4ICYgYjApO1xuICAgICAgc1s3XSA9IGI3IF4gKH5iOSAmIGIxKTtcbiAgICAgIHNbMTZdID0gYjE2IF4gKH5iMTggJiBiMTApO1xuICAgICAgc1sxN10gPSBiMTcgXiAofmIxOSAmIGIxMSk7XG4gICAgICBzWzI2XSA9IGIyNiBeICh+YjI4ICYgYjIwKTtcbiAgICAgIHNbMjddID0gYjI3IF4gKH5iMjkgJiBiMjEpO1xuICAgICAgc1szNl0gPSBiMzYgXiAofmIzOCAmIGIzMCk7XG4gICAgICBzWzM3XSA9IGIzNyBeICh+YjM5ICYgYjMxKTtcbiAgICAgIHNbNDZdID0gYjQ2IF4gKH5iNDggJiBiNDApO1xuICAgICAgc1s0N10gPSBiNDcgXiAofmI0OSAmIGI0MSk7XG4gICAgICBzWzhdID0gYjggXiAofmIwICYgYjIpO1xuICAgICAgc1s5XSA9IGI5IF4gKH5iMSAmIGIzKTtcbiAgICAgIHNbMThdID0gYjE4IF4gKH5iMTAgJiBiMTIpO1xuICAgICAgc1sxOV0gPSBiMTkgXiAofmIxMSAmIGIxMyk7XG4gICAgICBzWzI4XSA9IGIyOCBeICh+YjIwICYgYjIyKTtcbiAgICAgIHNbMjldID0gYjI5IF4gKH5iMjEgJiBiMjMpO1xuICAgICAgc1szOF0gPSBiMzggXiAofmIzMCAmIGIzMik7XG4gICAgICBzWzM5XSA9IGIzOSBeICh+YjMxICYgYjMzKTtcbiAgICAgIHNbNDhdID0gYjQ4IF4gKH5iNDAgJiBiNDIpO1xuICAgICAgc1s0OV0gPSBiNDkgXiAofmI0MSAmIGI0Myk7XG5cbiAgICAgIHNbMF0gXj0gUkNbbl07XG4gICAgICBzWzFdIF49IFJDW24gKyAxXTtcbiAgICB9XG4gIH07XG5cbiAgaWYgKENPTU1PTl9KUykge1xuICAgIG1vZHVsZS5leHBvcnRzID0gbWV0aG9kcztcbiAgfSBlbHNlIHtcbiAgICBmb3IgKGkgPSAwOyBpIDwgbWV0aG9kTmFtZXMubGVuZ3RoOyArK2kpIHtcbiAgICAgIHJvb3RbbWV0aG9kTmFtZXNbaV1dID0gbWV0aG9kc1ttZXRob2ROYW1lc1tpXV07XG4gICAgfVxuICAgIGlmIChBTUQpIHtcbiAgICAgIGRlZmluZShmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBtZXRob2RzO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG59KSgpO1xuIiwiLypcbiAgICBDb3B5cmlnaHQgMjAyMiBpZGVuMyBhc3NvY2lhdGlvbi5cblxuICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHNuYXJranMuXG5cbiAgICBzbmFya2pzIGlzIGEgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yXG4gICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZVxuICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKVxuICAgIGFueSBsYXRlciB2ZXJzaW9uLlxuXG4gICAgc25hcmtqcyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWVxuICAgIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvclxuICAgIG1vcmUgZGV0YWlscy5cblxuICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nIHdpdGhcbiAgICBzbmFya2pzLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuKi9cblxuaW1wb3J0IHtTY2FsYXJ9IGZyb20gXCJmZmphdmFzY3JpcHRcIjtcbmltcG9ydCBqc1NoYTMgZnJvbSBcImpzLXNoYTNcIjtcbmNvbnN0IHsga2VjY2FrMjU2IH0gPSBqc1NoYTM7XG5cbmNvbnN0IFBPTFlOT01JQUwgPSAwO1xuY29uc3QgU0NBTEFSID0gMTtcblxuZXhwb3J0IGNsYXNzIEtlY2NhazI1NlRyYW5zY3JpcHQge1xuICAgIGNvbnN0cnVjdG9yKGN1cnZlKSB7XG4gICAgICAgIHRoaXMuRzEgPSBjdXJ2ZS5HMTtcbiAgICAgICAgdGhpcy5GciA9IGN1cnZlLkZyO1xuXG4gICAgICAgIHRoaXMucmVzZXQoKTtcbiAgICB9XG5cbiAgICByZXNldCgpIHtcbiAgICAgICAgdGhpcy5kYXRhID0gW107XG4gICAgfVxuXG4gICAgYWRkUG9sQ29tbWl0bWVudChwb2x5bm9taWFsQ29tbWl0bWVudCkge1xuICAgICAgICB0aGlzLmRhdGEucHVzaCh7dHlwZTogUE9MWU5PTUlBTCwgZGF0YTogcG9seW5vbWlhbENvbW1pdG1lbnR9KTtcbiAgICB9XG5cbiAgICBhZGRTY2FsYXIoc2NhbGFyKSB7XG4gICAgICAgIHRoaXMuZGF0YS5wdXNoKHt0eXBlOiBTQ0FMQVIsIGRhdGE6IHNjYWxhcn0pO1xuICAgIH1cblxuICAgIGdldENoYWxsZW5nZSgpIHtcbiAgICAgICAgaWYoMCA9PT0gdGhpcy5kYXRhLmxlbmd0aCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiS2VjY2FrMjU2VHJhbnNjcmlwdDogTm8gZGF0YSB0byBnZW5lcmF0ZSBhIHRyYW5zY3JpcHRcIik7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgblBvbHlub21pYWxzID0gMDtcbiAgICAgICAgbGV0IG5TY2FsYXJzID0gMDtcblxuICAgICAgICB0aGlzLmRhdGEuZm9yRWFjaChlbGVtZW50ID0+IFBPTFlOT01JQUwgPT09IGVsZW1lbnQudHlwZSA/IG5Qb2x5bm9taWFscysrIDogblNjYWxhcnMrKyk7XG5cbiAgICAgICAgbGV0IGJ1ZmZlciA9IG5ldyBVaW50OEFycmF5KG5TY2FsYXJzICogdGhpcy5Gci5uOCArIG5Qb2x5bm9taWFscyAqIHRoaXMuRzEuRi5uOCAqIDIpO1xuICAgICAgICBsZXQgb2Zmc2V0ID0gMDtcblxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuZGF0YS5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgaWYgKFBPTFlOT01JQUwgPT09IHRoaXMuZGF0YVtpXS50eXBlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5HMS50b1JwclVuY29tcHJlc3NlZChidWZmZXIsIG9mZnNldCwgdGhpcy5kYXRhW2ldLmRhdGEpO1xuICAgICAgICAgICAgICAgIG9mZnNldCArPSB0aGlzLkcxLkYubjggKiAyO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLkZyLnRvUnByQkUoYnVmZmVyLCBvZmZzZXQsIHRoaXMuZGF0YVtpXS5kYXRhKTtcbiAgICAgICAgICAgICAgICBvZmZzZXQgKz0gdGhpcy5Gci5uODtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHZhbHVlID0gU2NhbGFyLmZyb21ScHJCRShuZXcgVWludDhBcnJheShrZWNjYWsyNTYuYXJyYXlCdWZmZXIoYnVmZmVyKSkpO1xuICAgICAgICByZXR1cm4gdGhpcy5Gci5lKHZhbHVlKTtcbiAgICB9XG59IiwiLypcbiAgICBDb3B5cmlnaHQgMjAyMiBpZGVuMyBhc3NvY2lhdGlvbi5cblxuICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHNuYXJranMuXG5cbiAgICBzbmFya2pzIGlzIGEgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yXG4gICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZVxuICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKVxuICAgIGFueSBsYXRlciB2ZXJzaW9uLlxuXG4gICAgc25hcmtqcyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWVxuICAgIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvclxuICAgIG1vcmUgZGV0YWlscy5cblxuICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nIHdpdGhcbiAgICBzbmFya2pzLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuKi9cblxuZXhwb3J0IGNsYXNzIE11bFoge1xuICAgIHN0YXRpYyBnZXRaMShGcikge1xuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgRnIuemVybyxcbiAgICAgICAgICAgIEZyLmFkZChGci5lKC0xKSwgRnIud1syXSksXG4gICAgICAgICAgICBGci5lKC0yKSxcbiAgICAgICAgICAgIEZyLnN1YihGci5lKC0xKSwgRnIud1syXSksXG4gICAgICAgIF07XG4gICAgfVxuXG4gICAgc3RhdGljIGdldFoyKEZyKSB7XG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICBGci56ZXJvLFxuICAgICAgICAgICAgRnIuYWRkKEZyLnplcm8sIEZyLm11bChGci5lKC0yKSwgRnIud1syXSkpLFxuICAgICAgICAgICAgRnIuZSg0KSxcbiAgICAgICAgICAgIEZyLnN1YihGci56ZXJvLCBGci5tdWwoRnIuZSgtMiksIEZyLndbMl0pKSxcbiAgICAgICAgXTtcbiAgICB9XG5cbiAgICBzdGF0aWMgZ2V0WjMoRnIpIHtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIEZyLnplcm8sXG4gICAgICAgICAgICBGci5hZGQoRnIuZSgyKSwgRnIubXVsKEZyLmUoMiksIEZyLndbMl0pKSxcbiAgICAgICAgICAgIEZyLmUoLTgpLFxuICAgICAgICAgICAgRnIuc3ViKEZyLmUoMiksIEZyLm11bChGci5lKDIpLCBGci53WzJdKSksXG4gICAgICAgIF07XG5cbiAgICB9XG5cbiAgICBzdGF0aWMgbXVsMihhLCBiLCBhcCwgYnAsIHAsIEZyKSB7XG4gICAgICAgIGNvbnN0IFoxID0gdGhpcy5nZXRaMShGcik7XG4gICAgICAgIGxldCByLCByejtcblxuICAgICAgICBjb25zdCBhX2IgPSBGci5tdWwoYSwgYik7XG4gICAgICAgIGNvbnN0IGFfYnAgPSBGci5tdWwoYSwgYnApO1xuICAgICAgICBjb25zdCBhcF9iID0gRnIubXVsKGFwLCBiKTtcbiAgICAgICAgY29uc3QgYXBfYnAgPSBGci5tdWwoYXAsIGJwKTtcblxuICAgICAgICByID0gYV9iO1xuXG4gICAgICAgIGxldCBhMCA9IEZyLmFkZChhX2JwLCBhcF9iKTtcblxuICAgICAgICBsZXQgYTEgPSBhcF9icDtcblxuICAgICAgICByeiA9IGEwO1xuICAgICAgICBpZiAocCkge1xuICAgICAgICAgICAgcnogPSBGci5hZGQocnosIEZyLm11bChaMVtwXSwgYTEpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBbciwgcnpdO1xuICAgIH1cblxuICAgIHN0YXRpYyBtdWwzKGEsIGIsIGMsIGFwLCBicCwgY3AsIHAsIEZyKSB7XG4gICAgICAgIGNvbnN0IFoxID0gdGhpcy5nZXRaMShGcik7XG4gICAgICAgIGNvbnN0IFoyID0gdGhpcy5nZXRaMihGcik7XG4gICAgICAgIGxldCByLCByejtcblxuICAgICAgICBjb25zdCBhX2IgPSBGci5tdWwoYSwgYik7XG4gICAgICAgIGNvbnN0IGFfYnAgPSBGci5tdWwoYSwgYnApO1xuICAgICAgICBjb25zdCBhcF9iID0gRnIubXVsKGFwLCBiKTtcbiAgICAgICAgY29uc3QgYXBfYnAgPSBGci5tdWwoYXAsIGJwKTtcblxuICAgICAgICByID0gRnIubXVsKGFfYiwgYyk7XG5cbiAgICAgICAgbGV0IGEwID0gRnIubXVsKGFwX2IsIGMpO1xuICAgICAgICBhMCA9IEZyLmFkZChhMCwgRnIubXVsKGFfYnAsIGMpKTtcbiAgICAgICAgYTAgPSBGci5hZGQoYTAsIEZyLm11bChhX2IsIGNwKSk7XG5cbiAgICAgICAgbGV0IGExID0gRnIubXVsKGFwX2JwLCBjKTtcbiAgICAgICAgYTEgPSBGci5hZGQoYTEsIEZyLm11bChhX2JwLCBjcCkpO1xuICAgICAgICBhMSA9IEZyLmFkZChhMSwgRnIubXVsKGFwX2IsIGNwKSk7XG5cbiAgICAgICAgcnogPSBhMDtcbiAgICAgICAgaWYgKHApIHtcbiAgICAgICAgICAgIGNvbnN0IGEyID0gRnIubXVsKGFwX2JwLCBjcCk7XG4gICAgICAgICAgICByeiA9IEZyLmFkZChyeiwgRnIubXVsKFoxW3BdLCBhMSkpO1xuICAgICAgICAgICAgcnogPSBGci5hZGQocnosIEZyLm11bChaMltwXSwgYTIpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBbciwgcnpdO1xuICAgIH1cblxuICAgIHN0YXRpYyBtdWw0KGEsIGIsIGMsIGQsIGFwLCBicCwgY3AsIGRwLCBwLCBGcikge1xuICAgICAgICBjb25zdCBaMSA9IHRoaXMuZ2V0WjEoRnIpO1xuICAgICAgICBjb25zdCBaMiA9IHRoaXMuZ2V0WjIoRnIpO1xuICAgICAgICBjb25zdCBaMyA9IHRoaXMuZ2V0WjMoRnIpO1xuXG4gICAgICAgIGxldCByLCByejtcblxuICAgICAgICBjb25zdCBhX2IgPSBGci5tdWwoYSwgYik7XG4gICAgICAgIGNvbnN0IGFfYnAgPSBGci5tdWwoYSwgYnApO1xuICAgICAgICBjb25zdCBhcF9iID0gRnIubXVsKGFwLCBiKTtcbiAgICAgICAgY29uc3QgYXBfYnAgPSBGci5tdWwoYXAsIGJwKTtcblxuICAgICAgICBjb25zdCBjX2QgPSBGci5tdWwoYywgZCk7XG4gICAgICAgIGNvbnN0IGNfZHAgPSBGci5tdWwoYywgZHApO1xuICAgICAgICBjb25zdCBjcF9kID0gRnIubXVsKGNwLCBkKTtcbiAgICAgICAgY29uc3QgY3BfZHAgPSBGci5tdWwoY3AsIGRwKTtcblxuICAgICAgICByID0gRnIubXVsKGFfYiwgY19kKTtcblxuICAgICAgICBsZXQgYTAgPSBGci5tdWwoYXBfYiwgY19kKTtcbiAgICAgICAgYTAgPSBGci5hZGQoYTAsIEZyLm11bChhX2JwLCBjX2QpKTtcbiAgICAgICAgYTAgPSBGci5hZGQoYTAsIEZyLm11bChhX2IsIGNwX2QpKTtcbiAgICAgICAgYTAgPSBGci5hZGQoYTAsIEZyLm11bChhX2IsIGNfZHApKTtcblxuICAgICAgICBsZXQgYTEgPSBGci5tdWwoYXBfYnAsIGNfZCk7XG4gICAgICAgIGExID0gRnIuYWRkKGExLCBGci5tdWwoYXBfYiwgY3BfZCkpO1xuICAgICAgICBhMSA9IEZyLmFkZChhMSwgRnIubXVsKGFwX2IsIGNfZHApKTtcbiAgICAgICAgYTEgPSBGci5hZGQoYTEsIEZyLm11bChhX2JwLCBjcF9kKSk7XG4gICAgICAgIGExID0gRnIuYWRkKGExLCBGci5tdWwoYV9icCwgY19kcCkpO1xuICAgICAgICBhMSA9IEZyLmFkZChhMSwgRnIubXVsKGFfYiwgY3BfZHApKTtcblxuICAgICAgICBsZXQgYTIgPSBGci5tdWwoYV9icCwgY3BfZHApO1xuICAgICAgICBhMiA9IEZyLmFkZChhMiwgRnIubXVsKGFwX2IsIGNwX2RwKSk7XG4gICAgICAgIGEyID0gRnIuYWRkKGEyLCBGci5tdWwoYXBfYnAsIGNfZHApKTtcbiAgICAgICAgYTIgPSBGci5hZGQoYTIsIEZyLm11bChhcF9icCwgY3BfZCkpO1xuXG4gICAgICAgIGxldCBhMyA9IEZyLm11bChhcF9icCwgY3BfZHApO1xuXG4gICAgICAgIHJ6ID0gYTA7XG4gICAgICAgIGlmIChwKSB7XG4gICAgICAgICAgICByeiA9IEZyLmFkZChyeiwgRnIubXVsKFoxW3BdLCBhMSkpO1xuICAgICAgICAgICAgcnogPSBGci5hZGQocnosIEZyLm11bChaMltwXSwgYTIpKTtcbiAgICAgICAgICAgIHJ6ID0gRnIuYWRkKHJ6LCBGci5tdWwoWjNbcF0sIGEzKSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gW3IsIHJ6XTtcbiAgICB9XG59IiwiZXhwb3J0IGNvbnN0IFpLRVlfUExfTlNFQ1RJT05TID0gMTM7XG5cbmV4cG9ydCBjb25zdCBaS0VZX1BMX0hFQURFUl9TRUNUSU9OID0gMjtcbmV4cG9ydCBjb25zdCBaS0VZX1BMX0FERElUSU9OU19TRUNUSU9OID0gMztcbmV4cG9ydCBjb25zdCBaS0VZX1BMX0FfTUFQX1NFQ1RJT04gPSA0O1xuZXhwb3J0IGNvbnN0IFpLRVlfUExfQl9NQVBfU0VDVElPTiA9IDU7XG5leHBvcnQgY29uc3QgWktFWV9QTF9DX01BUF9TRUNUSU9OID0gNjtcbmV4cG9ydCBjb25zdCBaS0VZX1BMX1FNX1NFQ1RJT04gPSA3O1xuZXhwb3J0IGNvbnN0IFpLRVlfUExfUUxfU0VDVElPTiA9IDg7XG5leHBvcnQgY29uc3QgWktFWV9QTF9RUl9TRUNUSU9OID0gOTtcbmV4cG9ydCBjb25zdCBaS0VZX1BMX1FPX1NFQ1RJT04gPSAxMDtcbmV4cG9ydCBjb25zdCBaS0VZX1BMX1FDX1NFQ1RJT04gPSAxMTtcbmV4cG9ydCBjb25zdCBaS0VZX1BMX1NJR01BX1NFQ1RJT04gPSAxMjtcbmV4cG9ydCBjb25zdCBaS0VZX1BMX0xBR1JBTkdFX1NFQ1RJT04gPSAxMztcbmV4cG9ydCBjb25zdCBaS0VZX1BMX1BUQVVfU0VDVElPTiA9IDE0O1xuXG4iLCIvKlxuICAgIENvcHlyaWdodCAyMDIyIGlkZW4zIGFzc29jaWF0aW9uLlxuXG4gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2Ygc25hcmtqcy5cblxuICAgIHNuYXJranMgaXMgYSBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3JcbiAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlXG4gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pXG4gICAgYW55IGxhdGVyIHZlcnNpb24uXG5cbiAgICBzbmFya2pzIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZXG4gICAgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yXG4gICAgbW9yZSBkZXRhaWxzLlxuXG4gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcgd2l0aFxuICAgIHNuYXJranMuIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXG4qL1xuXG5pbXBvcnQge0JpZ0J1ZmZlcn0gZnJvbSBcImZmamF2YXNjcmlwdFwiO1xuXG5leHBvcnQgY2xhc3MgUG9seW5vbWlhbCB7XG4gICAgY29uc3RydWN0b3IoY29lZmZpY2llbnRzLCBjdXJ2ZSwgbG9nZ2VyKSB7XG4gICAgICAgIHRoaXMuY29lZiA9IGNvZWZmaWNpZW50cztcbiAgICAgICAgdGhpcy5jdXJ2ZSA9IGN1cnZlO1xuICAgICAgICB0aGlzLkZyID0gY3VydmUuRnI7XG4gICAgICAgIHRoaXMuRzEgPSBjdXJ2ZS5HMTtcbiAgICAgICAgdGhpcy5sb2dnZXIgPSBsb2dnZXI7XG4gICAgfVxuXG4gICAgc3RhdGljIGFzeW5jIGZyb21FdmFsdWF0aW9ucyhidWZmZXIsIGN1cnZlLCBsb2dnZXIpIHtcbiAgICAgICAgbGV0IGNvZWZmaWNpZW50cyA9IGF3YWl0IGN1cnZlLkZyLmlmZnQoYnVmZmVyKTtcblxuICAgICAgICByZXR1cm4gbmV3IFBvbHlub21pYWwoY29lZmZpY2llbnRzLCBjdXJ2ZSwgbG9nZ2VyKTtcbiAgICB9XG5cbiAgICBzdGF0aWMgZnJvbUNvZWZmaWNpZW50c0FycmF5KGFycmF5LCBjdXJ2ZSwgbG9nZ2VyKSB7XG4gICAgICAgIGNvbnN0IEZyID0gY3VydmUuRnI7XG4gICAgICAgIGxldCBidWZmID0gYXJyYXkubGVuZ3RoID4gMiA8PCAxNCA/XG4gICAgICAgICAgICBuZXcgQmlnQnVmZmVyKGFycmF5Lmxlbmd0aCAqIEZyLm44KSA6IG5ldyBVaW50OEFycmF5KGFycmF5Lmxlbmd0aCAqIEZyLm44KTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhcnJheS5sZW5ndGg7IGkrKykgYnVmZi5zZXQoYXJyYXlbaV0sIGkgKiBGci5uOCk7XG5cbiAgICAgICAgcmV0dXJuIG5ldyBQb2x5bm9taWFsKGJ1ZmYsIGN1cnZlLCBsb2dnZXIpO1xuICAgIH1cblxuICAgIHN0YXRpYyBmcm9tUG9seW5vbWlhbChwb2x5bm9taWFsLCBjdXJ2ZSwgbG9nZ2VyKSB7XG4gICAgICAgIGxldCBsZW5ndGggPSBwb2x5bm9taWFsLmxlbmd0aCgpO1xuICAgICAgICBsZXQgRnIgPSBjdXJ2ZS5GcjtcblxuICAgICAgICBsZXQgYnVmZiA9IGxlbmd0aCA+IDIgPDwgMTQgP1xuICAgICAgICAgICAgbmV3IEJpZ0J1ZmZlcihsZW5ndGggKiBGci5uOCkgOiBuZXcgVWludDhBcnJheShsZW5ndGggKiBGci5uOCk7XG4gICAgICAgIGJ1ZmYuc2V0KHBvbHlub21pYWwuY29lZi5zbGljZSgpLCAwKTtcblxuICAgICAgICByZXR1cm4gbmV3IFBvbHlub21pYWwoYnVmZiwgY3VydmUsIGxvZ2dlcik7XG4gICAgfVxuXG4gICAgaXNFcXVhbChwb2x5bm9taWFsKSB7XG4gICAgICAgIGNvbnN0IGRlZ3JlZSA9IHRoaXMuZGVncmVlKCk7XG4gICAgICAgIGlmIChkZWdyZWUgIT09IHBvbHlub21pYWwuZGVncmVlKCkpIHJldHVybiBmYWxzZTtcblxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGRlZ3JlZSArIDE7IGkrKykge1xuICAgICAgICAgICAgaWYgKCF0aGlzLkZyLmVxKHRoaXMuZ2V0Q29lZihpKSwgcG9seW5vbWlhbC5nZXRDb2VmKGkpKSkgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgYmxpbmRDb2VmZmljaWVudHMoYmxpbmRpbmdGYWN0b3JzKSB7XG4gICAgICAgIGJsaW5kaW5nRmFjdG9ycyA9IGJsaW5kaW5nRmFjdG9ycyB8fCBbXTtcblxuICAgICAgICBjb25zdCBibGluZGVkQ29lZmZpY2llbnRzID0gKHRoaXMubGVuZ3RoKCkgKyBibGluZGluZ0ZhY3RvcnMubGVuZ3RoKSA+IDIgPDwgMTQgP1xuICAgICAgICAgICAgbmV3IEJpZ0J1ZmZlcigodGhpcy5sZW5ndGgoKSArIGJsaW5kaW5nRmFjdG9ycy5sZW5ndGgpICogdGhpcy5Gci5uOCkgOlxuICAgICAgICAgICAgbmV3IFVpbnQ4QXJyYXkoKHRoaXMubGVuZ3RoKCkgKyBibGluZGluZ0ZhY3RvcnMubGVuZ3RoKSAqIHRoaXMuRnIubjgpO1xuXG4gICAgICAgIGJsaW5kZWRDb2VmZmljaWVudHMuc2V0KHRoaXMuY29lZiwgMCk7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYmxpbmRpbmdGYWN0b3JzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBibGluZGVkQ29lZmZpY2llbnRzLnNldChcbiAgICAgICAgICAgICAgICB0aGlzLkZyLmFkZChcbiAgICAgICAgICAgICAgICAgICAgYmxpbmRlZENvZWZmaWNpZW50cy5zbGljZSgodGhpcy5sZW5ndGgoKSArIGkpICogdGhpcy5Gci5uOCwgKHRoaXMubGVuZ3RoKCkgKyBpICsgMSkgKiB0aGlzLkZyLm44KSxcbiAgICAgICAgICAgICAgICAgICAgYmxpbmRpbmdGYWN0b3JzW2ldXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAodGhpcy5sZW5ndGgoKSArIGkpICogdGhpcy5Gci5uOFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGJsaW5kZWRDb2VmZmljaWVudHMuc2V0KFxuICAgICAgICAgICAgICAgIHRoaXMuRnIuc3ViKFxuICAgICAgICAgICAgICAgICAgICBibGluZGVkQ29lZmZpY2llbnRzLnNsaWNlKGkgKiB0aGlzLkZyLm44LCAoaSArIDEpICogdGhpcy5Gci5uOCksXG4gICAgICAgICAgICAgICAgICAgIGJsaW5kaW5nRmFjdG9yc1tpXVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgaSAqIHRoaXMuRnIubjhcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jb2VmID0gYmxpbmRlZENvZWZmaWNpZW50cztcbiAgICB9XG5cbiAgICBnZXRDb2VmKGluZGV4KSB7XG4gICAgICAgIGNvbnN0IGlfbjggPSBpbmRleCAqIHRoaXMuRnIubjg7XG5cbiAgICAgICAgaWYgKGlfbjggKyB0aGlzLkZyLm44ID4gdGhpcy5jb2VmLmJ5dGVMZW5ndGgpIHJldHVybiB0aGlzLkZyLnplcm87XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuY29lZi5zbGljZShpX244LCBpX244ICsgdGhpcy5Gci5uOCk7XG4gICAgfVxuXG4gICAgc2V0Q29lZihpbmRleCwgdmFsdWUpIHtcbiAgICAgICAgaWYgKGluZGV4ID4gKHRoaXMubGVuZ3RoKCkgLSAxKSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiQ29lZiBpbmRleCBpcyBub3QgYXZhaWxhYmxlXCIpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5jb2VmLnNldCh2YWx1ZSwgaW5kZXggKiB0aGlzLkZyLm44KTtcbiAgICB9XG5cbiAgICBzdGF0aWMgYXN5bmMgdG80VChidWZmZXIsIGRvbWFpblNpemUsIGJsaW5kaW5nRmFjdG9ycywgRnIpIHtcbiAgICAgICAgYmxpbmRpbmdGYWN0b3JzID0gYmxpbmRpbmdGYWN0b3JzIHx8IFtdO1xuICAgICAgICBsZXQgYSA9IGF3YWl0IEZyLmlmZnQoYnVmZmVyKTtcblxuICAgICAgICBjb25zdCBhNCA9IChkb21haW5TaXplICogNCkgPiAyIDw8IDE0ID9cbiAgICAgICAgICAgIG5ldyBCaWdCdWZmZXIoZG9tYWluU2l6ZSAqIDQgKiBGci5uOCkgOiBuZXcgVWludDhBcnJheShkb21haW5TaXplICogNCAqIEZyLm44KTtcbiAgICAgICAgYTQuc2V0KGEsIDApO1xuXG4gICAgICAgIGNvbnN0IEE0ID0gYXdhaXQgRnIuZmZ0KGE0KTtcblxuICAgICAgICBpZiAoYmxpbmRpbmdGYWN0b3JzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIFthLCBBNF07XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBhMSA9IGRvbWFpblNpemUgKyBibGluZGluZ0ZhY3RvcnMubGVuZ3RoID4gMiA8PCAxNCA/XG4gICAgICAgICAgICBuZXcgQmlnQnVmZmVyKChkb21haW5TaXplICsgYmxpbmRpbmdGYWN0b3JzLmxlbmd0aCkgKiBGci5uOCkgOlxuICAgICAgICAgICAgbmV3IFVpbnQ4QXJyYXkoKGRvbWFpblNpemUgKyBibGluZGluZ0ZhY3RvcnMubGVuZ3RoKSAqIEZyLm44KTtcblxuICAgICAgICBhMS5zZXQoYSwgMCk7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYmxpbmRpbmdGYWN0b3JzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBhMS5zZXQoXG4gICAgICAgICAgICAgICAgRnIuYWRkKFxuICAgICAgICAgICAgICAgICAgICBhMS5zbGljZSgoZG9tYWluU2l6ZSArIGkpICogRnIubjgsIChkb21haW5TaXplICsgaSArIDEpICogRnIubjgpLFxuICAgICAgICAgICAgICAgICAgICBibGluZGluZ0ZhY3RvcnNbaV1cbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIChkb21haW5TaXplICsgaSkgKiBGci5uOFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGExLnNldChcbiAgICAgICAgICAgICAgICBGci5zdWIoXG4gICAgICAgICAgICAgICAgICAgIGExLnNsaWNlKGkgKiBGci5uOCwgKGkgKyAxKSAqIEZyLm44KSxcbiAgICAgICAgICAgICAgICAgICAgYmxpbmRpbmdGYWN0b3JzW2ldXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBpICogRnIubjhcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gW2ExLCBBNF07XG4gICAgfVxuXG4gICAgbGVuZ3RoKCkge1xuICAgICAgICBsZXQgbGVuZ3RoID0gdGhpcy5jb2VmLmJ5dGVMZW5ndGggLyB0aGlzLkZyLm44O1xuICAgICAgICBpZiAobGVuZ3RoICE9PSBNYXRoLmZsb29yKHRoaXMuY29lZi5ieXRlTGVuZ3RoIC8gdGhpcy5Gci5uOCkpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIlBvbHlub21pYWwgY29lZmZpY2llbnRzIGJ1ZmZlciBoYXMgaW5jb3JyZWN0IHNpemVcIik7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKDAgPT09IGxlbmd0aCkge1xuICAgICAgICAgICAgaWYgKHRoaXMubG9nZ2VyKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5sb2dnZXIud2FybihcIlBvbHlub21pYWwgaGFzIGxlbmd0aCB6ZXJvXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBsZW5ndGg7XG4gICAgfVxuXG4gICAgZGVncmVlKCkge1xuICAgICAgICBmb3IgKGxldCBpID0gdGhpcy5sZW5ndGgoKSAtIDE7IGkgPiAwOyBpLS0pIHtcbiAgICAgICAgICAgIGNvbnN0IGlfbjggPSBpICogdGhpcy5Gci5uODtcbiAgICAgICAgICAgIGlmICghdGhpcy5Gci5lcSh0aGlzLkZyLnplcm8sIHRoaXMuY29lZi5zbGljZShpX244LCBpX244ICsgdGhpcy5Gci5uOCkpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gMDtcbiAgICB9XG5cbiAgICBldmFsdWF0ZShwb2ludCkge1xuICAgICAgICBsZXQgcmVzID0gdGhpcy5Gci56ZXJvO1xuXG4gICAgICAgIGZvciAobGV0IGkgPSB0aGlzLmRlZ3JlZSgpICsgMTsgaSA+IDA7IGktLSkge1xuICAgICAgICAgICAgbGV0IGlfbjggPSBpICogdGhpcy5Gci5uODtcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRDb2VmZmljaWVudCA9IHRoaXMuY29lZi5zbGljZShpX244IC0gdGhpcy5Gci5uOCwgaV9uOCk7XG4gICAgICAgICAgICByZXMgPSB0aGlzLkZyLmFkZChjdXJyZW50Q29lZmZpY2llbnQsIHRoaXMuRnIubXVsKHJlcywgcG9pbnQpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiByZXM7XG4gICAgfVxuXG4gICAgZmFzdEV2YWx1YXRlKHBvaW50KSB7XG4gICAgICAgIGNvbnN0IEZyID0gdGhpcy5GcjtcbiAgICAgICAgbGV0IG5UaHJlYWRzID0gMztcblxuICAgICAgICBsZXQgbkNvZWZzID0gdGhpcy5kZWdyZWUoKSArIDE7XG4gICAgICAgIGxldCBjb2Vmc1RocmVhZCA9IHBhcnNlSW50KG5Db2VmcyAvIG5UaHJlYWRzKTtcbiAgICAgICAgbGV0IHJlc2lkdWFsQ29lZnMgPSBuQ29lZnMgLSBjb2Vmc1RocmVhZCAqIG5UaHJlYWRzO1xuXG4gICAgICAgIGxldCByZXMgPSBbXTtcbiAgICAgICAgbGV0IHhOID0gW107XG5cbiAgICAgICAgeE5bMF0gPSBGci5vbmU7XG5cbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBuVGhyZWFkczsgaSsrKSB7XG4gICAgICAgICAgICByZXNbaV0gPSBGci56ZXJvO1xuXG4gICAgICAgICAgICBsZXQgbkNvZWZzID0gaSA9PT0gKG5UaHJlYWRzIC0gMSkgPyBjb2Vmc1RocmVhZCArIHJlc2lkdWFsQ29lZnMgOiBjb2Vmc1RocmVhZDtcbiAgICAgICAgICAgIGZvciAobGV0IGogPSBuQ29lZnM7IGogPiAwOyBqLS0pIHtcbiAgICAgICAgICAgICAgICByZXNbaV0gPSBGci5hZGQodGhpcy5nZXRDb2VmKChpICogY29lZnNUaHJlYWQpICsgaiAtIDEpLCBGci5tdWwocmVzW2ldLCBwb2ludCkpO1xuXG4gICAgICAgICAgICAgICAgaWYgKGkgPT09IDApIHhOWzBdID0gRnIubXVsKHhOWzBdLCBwb2ludCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBmb3IgKGxldCBpID0gMTsgaSA8IG5UaHJlYWRzOyBpKyspIHtcbiAgICAgICAgICAgIHJlc1swXSA9IEZyLmFkZChyZXNbMF0sIEZyLm11bCh4TltpIC0gMV0sIHJlc1tpXSkpO1xuICAgICAgICAgICAgeE5baV0gPSBGci5tdWwoeE5baSAtIDFdLCB4TlswXSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcmVzWzBdO1xuICAgIH1cblxuICAgIGFkZChwb2x5bm9taWFsLCBibGluZGluZ1ZhbHVlKSB7XG4gICAgICAgIGxldCBvdGhlciA9IGZhbHNlO1xuXG4gICAgICAgIGlmIChwb2x5bm9taWFsLmxlbmd0aCgpID4gdGhpcy5sZW5ndGgoKSkge1xuICAgICAgICAgICAgb3RoZXIgPSB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgdGhpc0xlbmd0aCA9IHRoaXMubGVuZ3RoKCk7XG4gICAgICAgIGNvbnN0IHBvbHlMZW5ndGggPSBwb2x5bm9taWFsLmxlbmd0aCgpO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IE1hdGgubWF4KHRoaXNMZW5ndGgsIHBvbHlMZW5ndGgpOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IGlfbjggPSBpICogdGhpcy5Gci5uODtcblxuICAgICAgICAgICAgY29uc3QgYSA9IGkgPCB0aGlzTGVuZ3RoID8gdGhpcy5jb2VmLnNsaWNlKGlfbjgsIGlfbjggKyB0aGlzLkZyLm44KSA6IHRoaXMuRnIuemVybztcbiAgICAgICAgICAgIGxldCBiID0gaSA8IHBvbHlMZW5ndGggPyBwb2x5bm9taWFsLmNvZWYuc2xpY2UoaV9uOCwgaV9uOCArIHRoaXMuRnIubjgpIDogdGhpcy5Gci56ZXJvO1xuXG4gICAgICAgICAgICBpZiAoYmxpbmRpbmdWYWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgYiA9IHRoaXMuRnIubXVsKGIsIGJsaW5kaW5nVmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG90aGVyKSB7XG4gICAgICAgICAgICAgICAgcG9seW5vbWlhbC5jb2VmLnNldCh0aGlzLkZyLmFkZChhLCBiKSwgaV9uOCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuY29lZi5zZXQodGhpcy5Gci5hZGQoYSwgYiksIGlfbjgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChvdGhlcikge1xuICAgICAgICAgICAgZGVsZXRlIHRoaXMuY29lZjtcbiAgICAgICAgICAgIHRoaXMuY29lZiA9IHBvbHlub21pYWwuY29lZjtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHN1Yihwb2x5bm9taWFsLCBibGluZGluZ1ZhbHVlKSB7XG4gICAgICAgIGxldCBvdGhlciA9IGZhbHNlO1xuXG4gICAgICAgIGlmIChwb2x5bm9taWFsLmxlbmd0aCgpID4gdGhpcy5sZW5ndGgoKSkge1xuICAgICAgICAgICAgb3RoZXIgPSB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgdGhpc0xlbmd0aCA9IHRoaXMubGVuZ3RoKCk7XG4gICAgICAgIGNvbnN0IHBvbHlMZW5ndGggPSBwb2x5bm9taWFsLmxlbmd0aCgpO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IE1hdGgubWF4KHRoaXNMZW5ndGgsIHBvbHlMZW5ndGgpOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IGlfbjggPSBpICogdGhpcy5Gci5uODtcblxuICAgICAgICAgICAgY29uc3QgYSA9IGkgPCB0aGlzTGVuZ3RoID8gdGhpcy5jb2VmLnNsaWNlKGlfbjgsIGlfbjggKyB0aGlzLkZyLm44KSA6IHRoaXMuRnIuemVybztcbiAgICAgICAgICAgIGxldCBiID0gaSA8IHBvbHlMZW5ndGggPyBwb2x5bm9taWFsLmNvZWYuc2xpY2UoaV9uOCwgaV9uOCArIHRoaXMuRnIubjgpIDogdGhpcy5Gci56ZXJvO1xuXG4gICAgICAgICAgICBpZiAoYmxpbmRpbmdWYWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgYiA9IHRoaXMuRnIubXVsKGIsIGJsaW5kaW5nVmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG90aGVyKSB7XG4gICAgICAgICAgICAgICAgcG9seW5vbWlhbC5jb2VmLnNldCh0aGlzLkZyLnN1YihhLCBiKSwgaV9uOCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuY29lZi5zZXQodGhpcy5Gci5zdWIoYSwgYiksIGlfbjgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChvdGhlcikge1xuICAgICAgICAgICAgZGVsZXRlIHRoaXMuY29lZjtcbiAgICAgICAgICAgIHRoaXMuY29lZiA9IHBvbHlub21pYWwuY29lZjtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG11bFNjYWxhcih2YWx1ZSkge1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMubGVuZ3RoKCk7IGkrKykge1xuICAgICAgICAgICAgY29uc3QgaV9uOCA9IGkgKiB0aGlzLkZyLm44O1xuXG4gICAgICAgICAgICB0aGlzLmNvZWYuc2V0KHRoaXMuRnIubXVsKHRoaXMuY29lZi5zbGljZShpX244LCBpX244ICsgdGhpcy5Gci5uOCksIHZhbHVlKSwgaV9uOCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBhZGRTY2FsYXIodmFsdWUpIHtcbiAgICAgICAgY29uc3QgY3VycmVudFZhbHVlID0gMCA9PT0gdGhpcy5sZW5ndGgoKSA/IHRoaXMuRnIuemVybyA6IHRoaXMuY29lZi5zbGljZSgwLCB0aGlzLkZyLm44KTtcbiAgICAgICAgdGhpcy5jb2VmLnNldCh0aGlzLkZyLmFkZChjdXJyZW50VmFsdWUsIHZhbHVlKSwgMCk7XG4gICAgfVxuXG4gICAgc3ViU2NhbGFyKHZhbHVlKSB7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRWYWx1ZSA9IDAgPT09IHRoaXMubGVuZ3RoKCkgPyB0aGlzLkZyLnplcm8gOiB0aGlzLmNvZWYuc2xpY2UoMCwgdGhpcy5Gci5uOCk7XG4gICAgICAgIHRoaXMuY29lZi5zZXQodGhpcy5Gci5zdWIoY3VycmVudFZhbHVlLCB2YWx1ZSksIDApO1xuICAgIH1cblxuICAgIC8vIE11bHRpcGx5IGN1cnJlbnQgcG9seW5vbWlhbCBieSB0aGUgcG9seW5vbWlhbCAoWCAtIHZhbHVlKVxuICAgIGJ5WFN1YlZhbHVlKHZhbHVlKSB7XG4gICAgICAgIGNvbnN0IEZyID0gdGhpcy5GcjtcbiAgICAgICAgY29uc3QgcmVzaXplID0gIUZyLmVxKEZyLnplcm8sIHRoaXMuZ2V0Q29lZih0aGlzLmxlbmd0aCgpIC0gMSkpO1xuXG4gICAgICAgIGNvbnN0IGxlbmd0aCA9IHJlc2l6ZSA/IHRoaXMubGVuZ3RoKCkgKyAxIDogdGhpcy5sZW5ndGgoKTtcbiAgICAgICAgY29uc3QgYnVmZiA9IGxlbmd0aCA+IDIgPDwgMTQgPyBuZXcgQmlnQnVmZmVyKGxlbmd0aCAqIEZyLm44KSA6IG5ldyBVaW50OEFycmF5KGxlbmd0aCAqIEZyLm44KTtcbiAgICAgICAgbGV0IHBvbCA9IG5ldyBQb2x5bm9taWFsKGJ1ZmYsIHRoaXMuY3VydmUsIHRoaXMubG9nZ2VyKTtcblxuICAgICAgICAvLyBTdGVwIDA6IFNldCBjdXJyZW50IGNvZWZmaWNpZW50cyB0byB0aGUgbmV3IGJ1ZmZlciBzaGlmdGVkIG9uZSBwb3NpdGlvblxuICAgICAgICBwb2wuY29lZi5zZXQodGhpcy5jb2VmLnNsaWNlKDAsIChsZW5ndGggLSAxKSAqIEZyLm44KSwgMzIpO1xuXG4gICAgICAgIC8vIFN0ZXAgMTogbXVsdGlwbHkgZWFjaCBjb2VmZmljaWVudCBieSAoLXZhbHVlKVxuICAgICAgICB0aGlzLm11bFNjYWxhcihGci5uZWcodmFsdWUpKTtcblxuICAgICAgICAvLyBTdGVwIDI6IEFkZCBjdXJyZW50IHBvbHlub21pYWwgdG8gZGVzdGluYXRpb24gcG9seW5vbWlhbFxuICAgICAgICBwb2wuYWRkKHRoaXMpO1xuXG4gICAgICAgIC8vIFN3YXAgYnVmZmVyc1xuICAgICAgICB0aGlzLmNvZWYgPSBwb2wuY29lZjtcbiAgICB9XG5cbiAgICAvLyBNdWx0aXBseSBjdXJyZW50IHBvbHlub21pYWwgYnkgdGhlIHBvbHlub21pYWwgKFhebiArIHZhbHVlKVxuICAgIGJ5WE5TdWJWYWx1ZShuLCB2YWx1ZSkge1xuICAgICAgICBjb25zdCBGciA9IHRoaXMuRnI7XG4gICAgICAgIGNvbnN0IHJlc2l6ZSA9ICEodGhpcy5sZW5ndGgoKSAtIG4gLSAxID49IHRoaXMuZGVncmVlKCkpO1xuXG4gICAgICAgIGNvbnN0IGxlbmd0aCA9IHJlc2l6ZSA/IHRoaXMubGVuZ3RoKCkgKyBuIDogdGhpcy5sZW5ndGgoKTtcbiAgICAgICAgY29uc3QgYnVmZiA9IGxlbmd0aCA+IDIgPDwgMTQgPyBuZXcgQmlnQnVmZmVyKGxlbmd0aCAqIEZyLm44KSA6IG5ldyBVaW50OEFycmF5KGxlbmd0aCAqIEZyLm44KTtcbiAgICAgICAgbGV0IHBvbCA9IG5ldyBQb2x5bm9taWFsKGJ1ZmYsIHRoaXMuY3VydmUsIHRoaXMubG9nZ2VyKTtcblxuICAgICAgICAvLyBTdGVwIDA6IFNldCBjdXJyZW50IGNvZWZmaWNpZW50cyB0byB0aGUgbmV3IGJ1ZmZlciBzaGlmdGVkIG9uZSBwb3NpdGlvblxuICAgICAgICBwb2wuY29lZi5zZXQodGhpcy5jb2VmLnNsaWNlKDAsICh0aGlzLmRlZ3JlZSgpICsgMSkgKiAzMiwgKSwgbiAqIDMyKTtcblxuICAgICAgICAvLyBTdGVwIDE6IG11bHRpcGx5IGVhY2ggY29lZmZpY2llbnQgYnkgKC0gdmFsdWUpXG4gICAgICAgIHRoaXMubXVsU2NhbGFyKHZhbHVlKTtcblxuICAgICAgICAvLyBTdGVwIDI6IEFkZCBjdXJyZW50IHBvbHlub21pYWwgdG8gZGVzdGluYXRpb24gcG9seW5vbWlhbFxuICAgICAgICBwb2wuYWRkKHRoaXMpO1xuXG4gICAgICAgIC8vIFN3YXAgYnVmZmVyc1xuICAgICAgICB0aGlzLmNvZWYgPSBwb2wuY29lZjtcbiAgICB9XG5cbiAgICAvLyBFdWNsaWRlYW4gZGl2aXNpb25cbiAgICBkaXZCeShwb2x5bm9taWFsKSB7XG4gICAgICAgIGNvbnN0IEZyID0gdGhpcy5GcjtcbiAgICAgICAgY29uc3QgZGVncmVlQSA9IHRoaXMuZGVncmVlKCk7XG4gICAgICAgIGNvbnN0IGRlZ3JlZUIgPSBwb2x5bm9taWFsLmRlZ3JlZSgpO1xuXG4gICAgICAgIGxldCBwb2xSID0gbmV3IFBvbHlub21pYWwodGhpcy5jb2VmLCB0aGlzLmN1cnZlLCB0aGlzLmxvZ2dlcik7XG5cbiAgICAgICAgdGhpcy5jb2VmID0gdGhpcy5sZW5ndGgoKSA+IDIgPDwgMTQgP1xuICAgICAgICAgICAgbmV3IEJpZ0J1ZmZlcih0aGlzLmxlbmd0aCgpICogRnIubjgpIDogbmV3IFVpbnQ4QXJyYXkodGhpcy5sZW5ndGgoKSAqIEZyLm44KTtcblxuICAgICAgICBmb3IgKGxldCBpID0gZGVncmVlQSAtIGRlZ3JlZUI7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgICAgICB0aGlzLnNldENvZWYoaSwgRnIuZGl2KHBvbFIuZ2V0Q29lZihpICsgZGVncmVlQiksIHBvbHlub21pYWwuZ2V0Q29lZihkZWdyZWVCKSkpO1xuICAgICAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPD0gZGVncmVlQjsgaisrKSB7XG4gICAgICAgICAgICAgICAgcG9sUi5zZXRDb2VmKGkgKyBqLCBGci5zdWIocG9sUi5nZXRDb2VmKGkgKyBqKSwgRnIubXVsKHRoaXMuZ2V0Q29lZihpKSwgcG9seW5vbWlhbC5nZXRDb2VmKGopKSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHBvbFI7XG4gICAgfVxuXG4gICAgLy8gRGl2aXNpb24gYnkgYSBQb2x5bm9taWFsIG9mIHRoZSBmb3JtICh4Xm0gLSBiZXRhKVxuICAgIGRpdkJ5TW9uaWMobSwgYmV0YSkge1xuICAgICAgICBjb25zdCBGciA9IHRoaXMuRnI7XG5cbiAgICAgICAgbGV0IGQgPSB0aGlzLmRlZ3JlZSgpO1xuXG4gICAgICAgIGxldCBidWZmZXIgPSB0aGlzLmxlbmd0aCgpID4gMiA8PCAxNCA/XG4gICAgICAgICAgICBuZXcgQmlnQnVmZmVyKHRoaXMubGVuZ3RoKCkgKiBGci5uOCkgOiBuZXcgVWludDhBcnJheSh0aGlzLmxlbmd0aCgpICogRnIubjgpO1xuICAgICAgICBsZXQgcXVvdGllbnQgPSBuZXcgUG9seW5vbWlhbChidWZmZXIsIHRoaXMuY3VydmUsIHRoaXMubG9nZ2VyKTtcblxuICAgICAgICBsZXQgYkFyciA9IFtdO1xuXG4gICAgICAgIC8vIEFkZCB0aGUgbSBsZWFkaW5nIGNvZWZmaWNpZW50cyBvZiB0aGlzIHRvIHF1b3RpZW50XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbTsgaSsrKSB7XG4gICAgICAgICAgICBxdW90aWVudC5zZXRDb2VmKChkIC0gaSkgLSBtLCB0aGlzLmdldENvZWYoZCAtIGkpKTtcbiAgICAgICAgICAgIGJBcnJbaV0gPSB0aGlzLmdldENvZWYoZCAtIGkpO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IG5UaHJlYWRzID0gbTtcblxuICAgICAgICBsZXQgaiA9IDA7XG4gICAgICAgIGZvciAobGV0IGsgPSAwOyBrIDwgblRocmVhZHM7IGsrKykge1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IGQgLSAyICogbSAtIGs7IGkgPj0gMDsgaSA9IGkgLSBuVGhyZWFkcykge1xuICAgICAgICAgICAgICAgIGlmIChpIDwgMCkgYnJlYWs7XG4gICAgICAgICAgICAgICAgbGV0IGlkeCA9IGs7XG4gICAgICAgICAgICAgICAgYkFycltpZHhdID0gRnIuYWRkKHRoaXMuZ2V0Q29lZihpICsgbSksIEZyLm11bChiQXJyW2lkeF0sIGJldGEpKTtcblxuICAgICAgICAgICAgICAgIHF1b3RpZW50LnNldENvZWYoaSwgYkFycltpZHhdKTtcbiAgICAgICAgICAgICAgICBqID0gKGogKyAxKSAlIG07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmNvZWYgPSBxdW90aWVudC5jb2VmO1xuICAgIH1cblxuICAgIGRpdkJ5VmFuaXNoaW5nKG4sIGJldGEpIHtcbiAgICAgICAgaWYgKHRoaXMuZGVncmVlKCkgPCBuKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJkaXZCeVZhbmlzaGluZyBwb2x5bm9taWFsIGRpdmlzb3IgbXVzdCBiZSBvZiBkZWdyZWUgbG93ZXIgdGhhbiB0aGUgZGl2aWRlbmQgcG9seW5vbWlhbFwiKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IEZyID0gdGhpcy5GcjtcblxuICAgICAgICBsZXQgcG9sUiA9IG5ldyBQb2x5bm9taWFsKHRoaXMuY29lZiwgdGhpcy5jdXJ2ZSwgdGhpcy5sb2dnZXIpO1xuXG4gICAgICAgIHRoaXMuY29lZiA9IHRoaXMubGVuZ3RoKCkgPiAyIDw8IDE0ID9cbiAgICAgICAgICAgIG5ldyBCaWdCdWZmZXIodGhpcy5sZW5ndGgoKSAqIEZyLm44KSA6IG5ldyBVaW50OEFycmF5KHRoaXMubGVuZ3RoKCkgKiBGci5uOCk7XG5cbiAgICAgICAgZm9yIChsZXQgaSA9IHRoaXMubGVuZ3RoKCkgLSAxOyBpID49IG47IGktLSkge1xuICAgICAgICAgICAgbGV0IGxlYWRpbmdDb2VmID0gcG9sUi5nZXRDb2VmKGkpO1xuICAgICAgICAgICAgaWYgKEZyLmVxKEZyLnplcm8sIGxlYWRpbmdDb2VmKSkgY29udGludWU7XG5cbiAgICAgICAgICAgIHBvbFIuc2V0Q29lZihpLCBGci56ZXJvKTtcbiAgICAgICAgICAgIHBvbFIuc2V0Q29lZihpIC0gbiwgRnIuYWRkKHBvbFIuZ2V0Q29lZihpIC0gbiksIEZyLm11bChiZXRhLCBsZWFkaW5nQ29lZikpKTtcbiAgICAgICAgICAgIHRoaXMuc2V0Q29lZihpIC0gbiwgRnIuYWRkKHRoaXMuZ2V0Q29lZihpIC0gbiksIGxlYWRpbmdDb2VmKSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcG9sUjtcbiAgICB9XG5cbiAgICBkaXZCeVZhbmlzaGluZzIobSwgYmV0YSkge1xuICAgICAgICBpZiAodGhpcy5kZWdyZWUoKSA8IG0pIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcImRpdkJ5VmFuaXNoaW5nIHBvbHlub21pYWwgZGl2aXNvciBtdXN0IGJlIG9mIGRlZ3JlZSBsb3dlciB0aGFuIHRoZSBkaXZpZGVuZCBwb2x5bm9taWFsXCIpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgRnIgPSB0aGlzLkZyO1xuXG4gICAgICAgIGxldCBwb2xSID0gbmV3IFBvbHlub21pYWwodGhpcy5jb2VmLCB0aGlzLmN1cnZlLCB0aGlzLmxvZ2dlcik7XG5cbiAgICAgICAgdGhpcy5jb2VmID0gdGhpcy5sZW5ndGgoKSA+IDIgPDwgMTQgP1xuICAgICAgICAgICAgbmV3IEJpZ0J1ZmZlcih0aGlzLmxlbmd0aCgpICogRnIubjgpIDogbmV3IFVpbnQ4QXJyYXkodGhpcy5sZW5ndGgoKSAqIEZyLm44KTtcblxuICAgICAgICBsZXQgblRocmVhZHMgPSAzO1xuICAgICAgICBsZXQgblRvdGFsID0gdGhpcy5sZW5ndGgoKSAtIG07XG4gICAgICAgIGxldCBuRWxlbWVudHNDaHVuayA9IE1hdGguZmxvb3IoblRvdGFsIC8gblRocmVhZHMpO1xuICAgICAgICBsZXQgbkVsZW1lbnRzTGFzdCA9IG5Ub3RhbCAtIChuVGhyZWFkcyAtIDEpICogbkVsZW1lbnRzQ2h1bms7XG5cbiAgICAgICAgY29uc29sZS5sb2coblRvdGFsKTtcbiAgICAgICAgY29uc29sZS5sb2cobkVsZW1lbnRzQ2h1bmsgKyBcIiAgXCIgKyBuRWxlbWVudHNMYXN0KTtcbiAgICAgICAgZm9yIChsZXQgayA9IDA7IGsgPCBuVGhyZWFkczsgaysrKSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcIj4gVGhyZWFkIFwiICsgayk7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gKGsgPT09IDAgPyBuRWxlbWVudHNMYXN0IDogbkVsZW1lbnRzQ2h1bmspOyBpID4gMDsgaS0tKSB7XG4gICAgICAgICAgICAgICAgbGV0IGlkeERzdCA9IGkgLSAxO1xuICAgICAgICAgICAgICAgIGlmIChrICE9PSAwKSBpZHhEc3QgKz0gKGsgLSAxKSAqIG5FbGVtZW50c0NodW5rICsgbkVsZW1lbnRzTGFzdDtcbiAgICAgICAgICAgICAgICBsZXQgaWR4U3JjID0gaWR4RHN0ICsgbTtcblxuICAgICAgICAgICAgICAgIGxldCBsZWFkaW5nQ29lZiA9IHBvbFIuZ2V0Q29lZihpZHhTcmMpO1xuICAgICAgICAgICAgICAgIGlmIChGci5lcShGci56ZXJvLCBsZWFkaW5nQ29lZikpIGNvbnRpbnVlO1xuXG4gICAgICAgICAgICAgICAgcG9sUi5zZXRDb2VmKGlkeFNyYywgRnIuemVybyk7XG4gICAgICAgICAgICAgICAgcG9sUi5zZXRDb2VmKGlkeERzdCwgRnIuYWRkKHBvbFIuZ2V0Q29lZihpZHhEc3QpLCBGci5tdWwoYmV0YSwgbGVhZGluZ0NvZWYpKSk7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRDb2VmKGlkeERzdCwgRnIuYWRkKHRoaXMuZ2V0Q29lZihpZHhEc3QpLCBsZWFkaW5nQ29lZikpO1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGlkeERzdCArIFwiIDwtLSBcIiArIGlkeFNyYyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnByaW50KCk7XG4gICAgICAgIHJldHVybiBwb2xSO1xuICAgIH1cblxuICAgIGZhc3REaXZCeVZhbmlzaGluZyhkYXRhKSB7XG4gICAgICAgIGNvbnN0IEZyID0gdGhpcy5GcjtcblxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGRhdGEubGVuZ3RoOyBpKyspIHtcblxuICAgICAgICAgICAgbGV0IG0gPSBkYXRhW2ldWzBdO1xuICAgICAgICAgICAgbGV0IGJldGEgPSBkYXRhW2ldWzFdO1xuXG4gICAgICAgICAgICBpZiAodGhpcy5kZWdyZWUoKSA8IG0pIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJkaXZCeVZhbmlzaGluZyBwb2x5bm9taWFsIGRpdmlzb3IgbXVzdCBiZSBvZiBkZWdyZWUgbG93ZXIgdGhhbiB0aGUgZGl2aWRlbmQgcG9seW5vbWlhbFwiKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgbGV0IG5UaHJlYWRzID0gNTtcbiAgICAgICAgICAgIGxldCBuRWxlbWVudHMgPSB0aGlzLmxlbmd0aCgpIC0gbTtcbiAgICAgICAgICAgIGxldCBuRWxlbWVudHNCdWNrZXQgPSBNYXRoLmZsb29yKG5FbGVtZW50cyAvIG5UaHJlYWRzIC8gbSk7XG4gICAgICAgICAgICBsZXQgbkVsZW1lbnRzQ2h1bmsgPSBuRWxlbWVudHNCdWNrZXQgKiBtO1xuICAgICAgICAgICAgbGV0IG5FbGVtZW50c0xhc3QgPSBuRWxlbWVudHMgLSBuVGhyZWFkcyAqIG5FbGVtZW50c0NodW5rO1xuXG4gICAgICAgICAgICAvL0luIEMrKyBpbXBsZW1lbnRhdGlvbiB0aGlzIGJ1ZmZlciB3aWxsIGJlIGFsbG9jYXRlZCBvbmx5IG9uY2Ugb3V0c2lkZSB0aGUgbG9vcFxuICAgICAgICAgICAgbGV0IHBvbFRtcCA9IG5ldyBQb2x5bm9taWFsKHRoaXMubGVuZ3RoKCkgPiAyIDw8IDE0ID9cbiAgICAgICAgICAgICAgICBuZXcgQmlnQnVmZmVyKHRoaXMubGVuZ3RoKCkgKiBGci5uOCkgOiBuZXcgVWludDhBcnJheSh0aGlzLmxlbmd0aCgpICogRnIubjgpLCB0aGlzLmN1cnZlLCB0aGlzLmxvZ2dlcik7XG5cbiAgICAgICAgICAgIGxldCBwdHIgPSB0aGlzLmNvZWY7XG4gICAgICAgICAgICB0aGlzLmNvZWYgPSBwb2xUbXAuY29lZjtcbiAgICAgICAgICAgIHBvbFRtcC5jb2VmID0gcHRyO1xuXG4gICAgICAgICAgICAvLyBTVEVQIDE6IFNldGVqYXIgZWxzIG0gdmFsb3JzIGRlbCBzZWfDvGVudCBidWNrZXQgYWwgY2h1bmsgYWN0dWFsLCBQQVJBTEVMwrdMSVRaQVJcbiAgICAgICAgICAgIGZvciAobGV0IGsgPSAwOyBrIDwgblRocmVhZHM7IGsrKykge1xuICAgICAgICAgICAgICAgIGxldCBpZHgwID0gKGsgKyAxKSAqIG5FbGVtZW50c0NodW5rICsgbkVsZW1lbnRzTGFzdDtcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG07IGkrKykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNldENvZWYoaWR4MCArIGkgLSBtLCBwb2xUbXAuZ2V0Q29lZihpZHgwICsgaSkpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbkVsZW1lbnRzQ2h1bmsgLSBtOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IG9mZnNldCA9IGlkeDAgLSBpIC0gMTtcbiAgICAgICAgICAgICAgICAgICAgbGV0IHZhbCA9IEZyLmFkZChwb2xUbXAuZ2V0Q29lZihvZmZzZXQpLCBGci5tdWwoYmV0YSwgdGhpcy5nZXRDb2VmKG9mZnNldCkpKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRDb2VmKG9mZnNldCAtIG0sIHZhbCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvL1NURVAgMjogU2V0ZWphciBlbHMgdmFsb3JzIGRlbCBlbGVtZW50cyBsYXN0IE5PIFBBUkFMwrdMRUxJVFpBUlxuICAgICAgICAgICAgbGV0IGlkeDAgPSBuRWxlbWVudHNMYXN0O1xuICAgICAgICAgICAgbGV0IHBlbmRpbmcgPSBuRWxlbWVudHNMYXN0O1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBtICYmIHBlbmRpbmc7IGkrKykge1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0Q29lZihpZHgwIC0gaSAtIDEsIHBvbFRtcC5nZXRDb2VmKGlkeDAgKyBtIC0gaSAtIDEpKTtcbiAgICAgICAgICAgICAgICBwZW5kaW5nLS07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcGVuZGluZzsgaSsrKSB7XG4gICAgICAgICAgICAgICAgbGV0IG9mZnNldCA9IGlkeDAgLSBpIC0gMTtcbiAgICAgICAgICAgICAgICBsZXQgdmFsID0gRnIuYWRkKHBvbFRtcC5nZXRDb2VmKG9mZnNldCksIEZyLm11bChiZXRhLCB0aGlzLmdldENvZWYob2Zmc2V0KSkpO1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0Q29lZihvZmZzZXQgLSBtLCB2YWwpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvL1N0ZXAgMzogY2FsY3VsYXIgYWN1bXVsYXRzIE5PICBQQVJBTEVMwrdMSVRaQVJcblxuICAgICAgICAgICAgbGV0IGFjYyA9IFtdO1xuICAgICAgICAgICAgbGV0IGJldGFQb3cgPSBGci5vbmU7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5FbGVtZW50c0J1Y2tldDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgYmV0YVBvdyA9IEZyLm11bChiZXRhUG93LCBiZXRhKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxldCBjdXJyZW50QmV0YSA9IEZyLm9uZTtcblxuICAgICAgICAgICAgZm9yIChsZXQgayA9IG5UaHJlYWRzOyBrID4gMDsgay0tKSB7XG4gICAgICAgICAgICAgICAgbGV0IGlkVGhyZWFkID0gayAtIDE7XG4gICAgICAgICAgICAgICAgbGV0IGlkeDAgPSBpZFRocmVhZCAqIG5FbGVtZW50c0NodW5rICsgbkVsZW1lbnRzTGFzdDtcbiAgICAgICAgICAgICAgICBhY2NbaWRUaHJlYWRdID0gW107XG5cbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG07IGkrKykge1xuICAgICAgICAgICAgICAgICAgICBhY2NbaWRUaHJlYWRdW2ldID0gdGhpcy5nZXRDb2VmKGlkeDAgKyBpKTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoayAhPT0gblRocmVhZHMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFjY1tpZFRocmVhZF1baV0gPSBGci5hZGQoYWNjW2lkVGhyZWFkXVtpXSwgRnIubXVsKGJldGFQb3csIGFjY1tpZFRocmVhZCArIDFdW2ldKSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY3VycmVudEJldGEgPSBGci5tdWwoY3VycmVudEJldGEsIGJldGFQb3cpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvL1NURVAgNCByZWNhbGN1bGFyICBQQVJBTEVMwrdMSVRaQVJcbiAgICAgICAgICAgIGZvciAobGV0IGsgPSAwOyBrIDwgblRocmVhZHM7IGsrKykge1xuXG4gICAgICAgICAgICAgICAgbGV0IGlkeDAgPSBrICogbkVsZW1lbnRzQ2h1bmsgKyBuRWxlbWVudHNMYXN0O1xuICAgICAgICAgICAgICAgIGxldCBjdXJyZW50QmV0YSA9IGJldGE7IC8vUXVhbiBob3Bhc3NlbSBhIEMrKyBpIGhvIHBhcmFsZWxpdHplbSBhcXVlc3RhIHZhcmlhYmxlIGhhIGRlIHNlciBwcml2YWRhXG4gICAgICAgICAgICAgICAgbGV0IGN1cnJlbnRNID0gbSAtIDE7XG5cbiAgICAgICAgICAgICAgICBsZXQgbGltaXQgPSBrID09PSAwID8gbkVsZW1lbnRzTGFzdCA6IG5FbGVtZW50c0NodW5rO1xuICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGltaXQ7IGkrKykge1xuICAgICAgICAgICAgICAgICAgICBsZXQgb2Zmc2V0ID0gaWR4MCAtIGkgLSAxO1xuICAgICAgICAgICAgICAgICAgICBsZXQgdmFsID0gRnIuYWRkKHRoaXMuZ2V0Q29lZihvZmZzZXQpLCBGci5tdWwoY3VycmVudEJldGEsIGFjY1trXVtjdXJyZW50TV0pKTtcblxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNldENvZWYob2Zmc2V0LCB2YWwpO1xuXG4gICAgICAgICAgICAgICAgICAgIC8vIFRvIGF2b2lkIG1vZHVsYXIgb3BlcmF0aW9ucyBpbiBlYWNoIGxvb3AuLi5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRNID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50TSA9IG0gLSAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudEJldGEgPSBGci5tdWwoY3VycmVudEJldGEsIGJldGEpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudE0tLTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuXG4gICAgLy8gRGl2aWRlIHBvbHlub21pYWwgYnkgWCAtIHZhbHVlXG4gICAgZGl2QnlYU3ViVmFsdWUodmFsdWUpIHtcbiAgICAgICAgY29uc3QgY29lZnMgPSB0aGlzLmxlbmd0aCgpID4gMiA8PCAxNCA/XG4gICAgICAgICAgICBuZXcgQmlnQnVmZmVyKHRoaXMubGVuZ3RoKCkgKiB0aGlzLkZyLm44KSA6IG5ldyBVaW50OEFycmF5KHRoaXMubGVuZ3RoKCkgKiB0aGlzLkZyLm44KTtcblxuICAgICAgICBjb2Vmcy5zZXQodGhpcy5Gci56ZXJvLCAodGhpcy5sZW5ndGgoKSAtIDEpICogdGhpcy5Gci5uOCk7XG4gICAgICAgIGNvZWZzLnNldCh0aGlzLmNvZWYuc2xpY2UoKHRoaXMubGVuZ3RoKCkgLSAxKSAqIHRoaXMuRnIubjgsIHRoaXMubGVuZ3RoKCkgKiB0aGlzLkZyLm44KSwgKHRoaXMubGVuZ3RoKCkgLSAyKSAqIHRoaXMuRnIubjgpO1xuICAgICAgICBmb3IgKGxldCBpID0gdGhpcy5sZW5ndGgoKSAtIDM7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgICAgICBsZXQgaV9uOCA9IGkgKiB0aGlzLkZyLm44O1xuICAgICAgICAgICAgY29lZnMuc2V0KFxuICAgICAgICAgICAgICAgIHRoaXMuRnIuYWRkKFxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvZWYuc2xpY2UoaV9uOCArIHRoaXMuRnIubjgsIGlfbjggKyAyICogdGhpcy5Gci5uOCksXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuRnIubXVsKHZhbHVlLCBjb2Vmcy5zbGljZShpX244ICsgdGhpcy5Gci5uOCwgaV9uOCArIDIgKiB0aGlzLkZyLm44KSlcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGkgKiB0aGlzLkZyLm44XG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIGlmICghdGhpcy5Gci5lcShcbiAgICAgICAgICAgIHRoaXMuY29lZi5zbGljZSgwLCB0aGlzLkZyLm44KSxcbiAgICAgICAgICAgIHRoaXMuRnIubXVsKHRoaXMuRnIubmVnKHZhbHVlKSwgY29lZnMuc2xpY2UoMCwgdGhpcy5Gci5uOCkpXG4gICAgICAgICkpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIlBvbHlub21pYWwgZG9lcyBub3QgZGl2aWRlXCIpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5jb2VmID0gY29lZnM7XG4gICAgfVxuXG4gICAgZGl2WmgoZG9tYWluU2l6ZSwgZXh0ZW5zaW9ucyA9IDQpIHtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBkb21haW5TaXplOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IGlfbjggPSBpICogdGhpcy5Gci5uODtcbiAgICAgICAgICAgIHRoaXMuY29lZi5zZXQodGhpcy5Gci5uZWcodGhpcy5jb2VmLnNsaWNlKGlfbjgsIGlfbjggKyB0aGlzLkZyLm44KSksIGlfbjgpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgdXBwZXJCb3VuZCA9IHRoaXMuY29lZi5ieXRlTGVuZ3RoIC8gdGhpcy5Gci5uODtcbiAgICAgICAgZm9yIChsZXQgaSA9IGRvbWFpblNpemU7IGkgPCB1cHBlckJvdW5kOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IGlfbjggPSBpICogdGhpcy5Gci5uODtcblxuICAgICAgICAgICAgY29uc3QgYSA9IHRoaXMuRnIuc3ViKFxuICAgICAgICAgICAgICAgIHRoaXMuY29lZi5zbGljZSgoaSAtIGRvbWFpblNpemUpICogdGhpcy5Gci5uOCwgKGkgLSBkb21haW5TaXplKSAqIHRoaXMuRnIubjggKyB0aGlzLkZyLm44KSxcbiAgICAgICAgICAgICAgICB0aGlzLmNvZWYuc2xpY2UoaV9uOCwgaV9uOCArIHRoaXMuRnIubjgpXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgdGhpcy5jb2VmLnNldChhLCBpX244KTtcbiAgICAgICAgICAgIGlmIChpID4gKGRvbWFpblNpemUgKiAoZXh0ZW5zaW9ucy0xKSAtIGV4dGVuc2lvbnMpKSB7XG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLkZyLmlzWmVybyhhKSkge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJQb2x5bm9taWFsIGlzIG5vdCBkaXZpc2libGVcIik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgZGl2QnlaZXJvZmllcihuLCBiZXRhKSB7XG4gICAgICAgIGxldCBGciA9IHRoaXMuRnI7XG4gICAgICAgIGNvbnN0IGludkJldGEgPSBGci5pbnYoYmV0YSk7XG4gICAgICAgIGNvbnN0IGludkJldGFOZWcgPSBGci5uZWcoaW52QmV0YSk7XG5cbiAgICAgICAgbGV0IGlzT25lID0gRnIuZXEoRnIub25lLCBpbnZCZXRhTmVnKTtcbiAgICAgICAgbGV0IGlzTmVnT25lID0gRnIuZXEoRnIubmVnb25lLCBpbnZCZXRhTmVnKTtcblxuICAgICAgICBpZiAoIWlzT25lKSB7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG47IGkrKykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGlfbjggPSBpICogdGhpcy5Gci5uODtcbiAgICAgICAgICAgICAgICBsZXQgZWxlbWVudDtcblxuICAgICAgICAgICAgICAgIC8vIElmIGludkJldGFOZWcgPT09IC0xIHdlJ2xsIHNhdmUgYSBtdWx0aXBsaWNhdGlvbiBjaGFuZ2luZyBpdCBieSBhIG5lZyBmdW5jdGlvbiBjYWxsXG4gICAgICAgICAgICAgICAgaWYgKGlzTmVnT25lKSB7XG4gICAgICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBGci5uZWcodGhpcy5jb2VmLnNsaWNlKGlfbjgsIGlfbjggKyB0aGlzLkZyLm44KSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgZWxlbWVudCA9IEZyLm11bChpbnZCZXRhTmVnLCB0aGlzLmNvZWYuc2xpY2UoaV9uOCwgaV9uOCArIHRoaXMuRnIubjgpKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0aGlzLmNvZWYuc2V0KGVsZW1lbnQsIGlfbjgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaXNPbmUgPSBGci5lcShGci5vbmUsIGludkJldGEpO1xuICAgICAgICBpc05lZ09uZSA9IEZyLmVxKEZyLm5lZ29uZSwgaW52QmV0YSk7XG5cbiAgICAgICAgZm9yIChsZXQgaSA9IG47IGkgPCB0aGlzLmxlbmd0aCgpOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IGlfbjggPSBpICogdGhpcy5Gci5uODtcbiAgICAgICAgICAgIGNvbnN0IGlfcHJldl9uOCA9IChpIC0gbikgKiB0aGlzLkZyLm44O1xuXG4gICAgICAgICAgICBsZXQgZWxlbWVudCA9IHRoaXMuRnIuc3ViKFxuICAgICAgICAgICAgICAgIHRoaXMuY29lZi5zbGljZShpX3ByZXZfbjgsIGlfcHJldl9uOCArIHRoaXMuRnIubjgpLFxuICAgICAgICAgICAgICAgIHRoaXMuY29lZi5zbGljZShpX244LCBpX244ICsgdGhpcy5Gci5uOClcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIC8vIElmIGludkJldGEgPT09IDEgd2UnbGwgbm90IGRvIGFueXRoaW5nXG4gICAgICAgICAgICBpZighaXNPbmUpIHtcbiAgICAgICAgICAgICAgICAvLyBJZiBpbnZCZXRhID09PSAtMSB3ZSdsbCBzYXZlIGEgbXVsdGlwbGljYXRpb24gY2hhbmdpbmcgaXQgYnkgYSBuZWcgZnVuY3Rpb24gY2FsbFxuICAgICAgICAgICAgICAgIGlmKGlzTmVnT25lKSB7XG4gICAgICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBGci5uZWcoZWxlbWVudCk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgZWxlbWVudCA9IEZyLm11bChpbnZCZXRhLCBlbGVtZW50KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuY29lZi5zZXQoZWxlbWVudCwgaV9uOCk7XG5cbiAgICAgICAgICAgIC8vIENoZWNrIGlmIHBvbHlub21pYWwgaXMgZGl2aXNpYmxlIGJ5IGNoZWNraW5nIGlmIG4gaGlnaCBjb2VmZmljaWVudHMgYXJlIHplcm9cbiAgICAgICAgICAgIGlmIChpID4gdGhpcy5sZW5ndGgoKSAtIG4gLSAxKSB7XG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLkZyLmlzWmVybyhlbGVtZW50KSkge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJQb2x5bm9taWFsIGlzIG5vdCBkaXZpc2libGVcIik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4vLyBmdW5jdGlvbiBkaXZpZGVCeVZhbmlzaGluZyhmLCBuLCBwKSB7XG4vLyAgICAgLy8gcG9seW5vbWlhbCBkaXZpc2lvbiBmKFgpIC8gKFhebiAtIDEpIHdpdGggcmVtYWluZGVyXG4vLyAgICAgLy8gdmVyeSBjaGVhcCwgMCBtdWx0aXBsaWNhdGlvbnNcbi8vICAgICAvLyBzdHJhdGVneTpcbi8vICAgICAvLyBzdGFydCB3aXRoIHEoWCkgPSAwLCByKFgpID0gZihYKVxuLy8gICAgIC8vIHRoZW4gc3RhcnQgY2hhbmdpbmcgcSwgciB3aGlsZSBwcmVzZXJ2aW5nIHRoZSBpZGVudGl0eTpcbi8vICAgICAvLyBmKFgpID0gcShYKSAqIChYXm4gLSAxKSArIHIoWClcbi8vICAgICAvLyBpbiBldmVyeSBzdGVwLCBtb3ZlIGhpZ2hlc3QtZGVncmVlIHRlcm0gb2YgciBpbnRvIHRoZSBwcm9kdWN0XG4vLyAgICAgLy8gPT4gciBldmVudHVhbGx5IGhhcyBkZWdyZWUgPCBuIGFuZCB3ZSdyZSBkb25lXG4vLyAgICAgbGV0IHEgPSBBcnJheShmLmxlbmd0aCkuZmlsbCgwbik7XG4vLyAgICAgbGV0IHIgPSBbLi4uZl07XG4vLyAgICAgZm9yIChsZXQgaSA9IGYubGVuZ3RoIC0gMTsgaSA+PSBuOyBpLS0pIHtcbi8vICAgICAgICAgbGV0IGxlYWRpbmdDb2VmZiA9IHJbaV07XG4vLyAgICAgICAgIGlmIChsZWFkaW5nQ29lZmYgPT09IDBuKSBjb250aW51ZTtcbi8vICAgICAgICAgcltpXSA9IDBuO1xuLy8gICAgICAgICByW2kgLSBuXSA9IG1vZChyW2kgLSBuXSArIGxlYWRpbmdDb2VmZiwgcCk7XG4vLyAgICAgICAgIHFbaSAtIG5dID0gbW9kKHFbaSAtIG5dICsgbGVhZGluZ0NvZWZmLCBwKTtcbi8vICAgICB9XG4vLyAgICAgcmV0dXJuIFtxLCByXTtcbi8vIH1cblxuICAgIGJ5WCgpIHtcbiAgICAgICAgY29uc3QgY29lZnMgPSAodGhpcy5sZW5ndGgoKSArIDEpID4gMiA8PCAxNCA/XG4gICAgICAgICAgICBuZXcgQmlnQnVmZmVyKHRoaXMuY29lZi5ieXRlTGVuZ3RoICsgdGhpcy5Gci5uOCkgOiBuZXcgVWludDhBcnJheSh0aGlzLmNvZWYuYnl0ZUxlbmd0aCArIHRoaXMuRnIubjgpO1xuICAgICAgICBjb2Vmcy5zZXQodGhpcy5Gci56ZXJvLCAwKTtcbiAgICAgICAgY29lZnMuc2V0KHRoaXMuY29lZiwgdGhpcy5Gci5uOCk7XG5cbiAgICAgICAgdGhpcy5jb2VmID0gY29lZnM7XG4gICAgfVxuXG4vLyBDb21wdXRlIGEgbmV3IHBvbHlub21pYWwgZih4Xm4pIGZyb20gZih4KVxuLy8gZih4KSAgID0gYV8wICsgYV8xwrd4ICsgYV8ywrd4XjIgKyAuLi4gKyBhX2rCt3healxuLy8gZih4Xm4pID0gYV8wICsgYV8xwrd4Xm4gKyBhXzLCt3heMm4gKyAuLi4gKyBhX2rCt3heam5cbiAgICBzdGF0aWNcbiAgICBhc3luYyBleHBYKHBvbHlub21pYWwsIG4sIHRydW5jYXRlID0gZmFsc2UpIHtcbiAgICAgICAgY29uc3QgRnIgPSBwb2x5bm9taWFsLkZyO1xuXG4gICAgICAgIGlmIChuIDwgMSkge1xuICAgICAgICAgICAgLy8gbiA9PSAwIG5vdCBhbGxvd2VkIGJlY2F1c2UgaXQgaGFzIG5vIHNlbnNlLCBidXQgaWYgaXQncyBuZWNlc3Nhcnkgd2UgaGF2ZSB0byByZXR1cm5cbiAgICAgICAgICAgIC8vIGEgemVybyBkZWdyZWUgcG9seW5vbWlhbCB3aXRoIGEgY29uc3RhbnQgY29lZmZpY2llbnQgZXF1YWxzIHRvIHRoZSBzdW0gb2YgYWxsIHRoZSBvcmlnaW5hbCBjb2VmZmljaWVudHNcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkNvbXB1dGUgYSBuZXcgcG9seW5vbWlhbCB0byBhIHplcm8gb3IgbmVnYXRpdmUgbnVtYmVyIGlzIG5vdCBhbGxvd2VkXCIpO1xuICAgICAgICB9IGVsc2UgaWYgKDEgPT09IG4pIHtcbiAgICAgICAgICAgIHJldHVybiBhd2FpdCBQb2x5bm9taWFsLmZyb21FdmFsdWF0aW9ucyhwb2x5bm9taWFsLmNvZWYsIGN1cnZlLCBwb2x5bm9taWFsLmxvZ2dlcik7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBsZW5ndGggaXMgdGhlIGxlbmd0aCBvZiBub24tY29uc3RhbnQgY29lZmZpY2llbnRzXG4gICAgICAgIC8vIGlmIHRydW5jYXRlID09PSB0cnVlLCB0aGUgaGlnaGVzdCB6ZXJvIGNvZWZmaWNpZW50cyAoaWYgZXhpc3QpIHdpbGwgYmUgcmVtb3ZlZFxuICAgICAgICBjb25zdCBsZW5ndGggPSB0cnVuY2F0ZSA/IHBvbHlub21pYWwuZGVncmVlKCkgOiAocG9seW5vbWlhbC5sZW5ndGgoKSAtIDEpO1xuICAgICAgICBjb25zdCBidWZmZXJEc3QgPSAobGVuZ3RoICogbiArIDEpID4gMiA8PCAxNCA/XG4gICAgICAgICAgICBuZXcgQmlnQnVmZmVyKChsZW5ndGggKiBuICsgMSkgKiBGci5uOCkgOiBuZXcgVWludDhBcnJheSgobGVuZ3RoICogbiArIDEpICogRnIubjgpO1xuXG4gICAgICAgIC8vIENvcHkgY29uc3RhbnQgY29lZmZpY2llbnQgYXMgaXMgYmVjYXVzZSBpcyBub3QgcmVsYXRlZCB0byB4XG4gICAgICAgIGJ1ZmZlckRzdC5zZXQocG9seW5vbWlhbC5nZXRDb2VmKDApLCAwKTtcblxuICAgICAgICBmb3IgKGxldCBpID0gMTsgaSA8PSBsZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgY29uc3QgaV9zRnIgPSBpICogRnIubjg7XG5cbiAgICAgICAgICAgIGNvbnN0IGNvZWYgPSBwb2x5bm9taWFsLmdldENvZWYoaSk7XG4gICAgICAgICAgICBidWZmZXJEc3Quc2V0KGNvZWYsIGlfc0ZyICogbik7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbmV3IFBvbHlub21pYWwoYnVmZmVyRHN0LCBwb2x5bm9taWFsLmN1cnZlLCBwb2x5bm9taWFsLmxvZ2dlcik7XG4gICAgfVxuXG4gICAgc3BsaXQobnVtUG9scywgZGVnUG9scywgYmxpbmRpbmdGYWN0b3JzKSB7XG4gICAgICAgIGlmIChudW1Qb2xzIDwgMSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBQb2x5bm9taWFscyBjYW4ndCBiZSBzcGxpdCBpbiAke251bVBvbHN9IHBhcnRzYCk7XG4gICAgICAgIH0gZWxzZSBpZiAoMSA9PT0gbnVtUG9scykge1xuICAgICAgICAgICAgcmV0dXJuIFt0aGlzXTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vYmxpbmRpbmcgZmFjdG9ycyBjYW4gYmUgdm9pZCBvciBtdXN0IGhhdmUgYSBsZW5ndGggb2YgbnVtUG9scyAtIDFcbiAgICAgICAgaWYgKDAgIT09IGJsaW5kaW5nRmFjdG9ycy5sZW5ndGggJiYgYmxpbmRpbmdGYWN0b3JzLmxlbmd0aCA8IG51bVBvbHMgLSAxKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEJsaW5kaW5nIGZhY3RvcnMgbGVuZ3RoIG11c3QgYmUgJHtudW1Qb2xzIC0gMX1gKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGNodW5rQnl0ZUxlbmd0aCA9IChkZWdQb2xzICsgMSkgKiB0aGlzLkZyLm44O1xuICAgICAgICBsZXQgcmVzID0gW107XG5cbiAgICAgICAgLy8gQ2hlY2sgcG9seW5vbWlhbCBjYW4gYmUgc3BsaXQgaW4gbnVtQ2h1bmtzIHBhcnRzIG9mIGNodW5rU2l6ZSBieXRlcy4uLlxuICAgICAgICBjb25zdCBudW1SZWFsUG9scyA9IE1hdGguY2VpbCgodGhpcy5kZWdyZWUoKSArIDEpICogdGhpcy5Gci5uOCAvIGNodW5rQnl0ZUxlbmd0aCk7XG4gICAgICAgIGlmIChudW1SZWFsUG9scyA8IG51bVBvbHMpIHtcbiAgICAgICAgICAgIC8vdGhyb3cgbmV3IEVycm9yKGBQb2x5bm9taWFsIGlzIHNob3J0IHRvIGJlIHNwbGl0IGluICR7bnVtUG9sc30gcGFydHMgb2YgJHtkZWdQb2xzfSBjb2VmZmljaWVudHMgZWFjaC5gKTtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSBudW1SZWFsUG9sczsgaSA8IG51bVBvbHM7IGkrKykge1xuICAgICAgICAgICAgICAgIHJlc1tpXSA9IG5ldyBQb2x5bm9taWFsKG5ldyBVaW50OEFycmF5KHRoaXMuRnIubjgpLCB0aGlzLmN1cnZlLCB0aGlzLmxvZ2dlcik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBudW1Qb2xzID0gTWF0aC5taW4obnVtUG9scywgbnVtUmVhbFBvbHMpO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG51bVBvbHM7IGkrKykge1xuICAgICAgICAgICAgY29uc3QgaXNMYXN0ID0gKG51bVBvbHMgLSAxKSA9PT0gaTtcbiAgICAgICAgICAgIGNvbnN0IGJ5dGVMZW5ndGggPSBpc0xhc3QgPyB0aGlzLmNvZWYuYnl0ZUxlbmd0aCAtICgobnVtUG9scyAtIDEpICogY2h1bmtCeXRlTGVuZ3RoKSA6IGNodW5rQnl0ZUxlbmd0aCArIHRoaXMuRnIubjg7XG5cbiAgICAgICAgICAgIGxldCBidWZmID0gKGJ5dGVMZW5ndGggLyB0aGlzLkZyLm44KSA+IDIgPDwgMTQgPyBuZXcgQmlnQnVmZmVyKGJ5dGVMZW5ndGgpIDogbmV3IFVpbnQ4QXJyYXkoYnl0ZUxlbmd0aCk7XG4gICAgICAgICAgICByZXNbaV0gPSBuZXcgUG9seW5vbWlhbChidWZmLCB0aGlzLmN1cnZlLCB0aGlzLmxvZ2dlcik7XG5cbiAgICAgICAgICAgIGNvbnN0IGZyID0gaSAqIGNodW5rQnl0ZUxlbmd0aDtcbiAgICAgICAgICAgIGNvbnN0IHRvID0gaXNMYXN0ID8gdGhpcy5jb2VmLmJ5dGVMZW5ndGggOiAoaSArIDEpICogY2h1bmtCeXRlTGVuZ3RoO1xuICAgICAgICAgICAgcmVzW2ldLmNvZWYuc2V0KHRoaXMuY29lZi5zbGljZShmciwgdG8pLCAwKTtcblxuICAgICAgICAgICAgLy8gQWRkIGEgYmxpbmRpbmcgZmFjdG9yIGFzIGhpZ2hlciBkZWdyZWVcbiAgICAgICAgICAgIGlmICghaXNMYXN0KSB7XG4gICAgICAgICAgICAgICAgcmVzW2ldLmNvZWYuc2V0KGJsaW5kaW5nRmFjdG9yc1tpXSwgY2h1bmtCeXRlTGVuZ3RoKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gU3ViIGJsaW5kaW5nIGZhY3RvciB0byB0aGUgbG93ZXN0IGRlZ3JlZVxuICAgICAgICAgICAgaWYgKDAgIT09IGkpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBsb3dlc3REZWdyZWUgPSB0aGlzLkZyLnN1YihyZXNbaV0uY29lZi5zbGljZSgwLCB0aGlzLkZyLm44KSwgYmxpbmRpbmdGYWN0b3JzW2kgLSAxXSk7XG4gICAgICAgICAgICAgICAgcmVzW2ldLmNvZWYuc2V0KGxvd2VzdERlZ3JlZSwgMCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChpc0xhc3QpIHtcbiAgICAgICAgICAgICAgICByZXNbaV0udHJ1bmNhdGUoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiByZXM7XG5cbiAgICAgICAgLy8gLy8gY29tcHV0ZSB0X2xvdyhYKVxuICAgICAgICAvLyBsZXQgcG9sVExvdyA9IG5ldyBCaWdCdWZmZXIoKGNodW5rU2l6ZSArIDEpICogbjhyKTtcbiAgICAgICAgLy8gcG9sVExvdy5zZXQodC5zbGljZSgwLCB6a2V5LmRvbWFpblNpemUgKiBuOHIpLCAwKTtcbiAgICAgICAgLy8gLy8gQWRkIGJsaW5kaW5nIHNjYWxhciBiXzEwIGFzIGEgbmV3IGNvZWZmaWNpZW50IG5cbiAgICAgICAgLy8gcG9sVExvdy5zZXQoY2guYlsxMF0sIHprZXkuZG9tYWluU2l6ZSAqIG44cik7XG4gICAgICAgIC8vXG4gICAgICAgIC8vIC8vIGNvbXB1dGUgdF9taWQoWClcbiAgICAgICAgLy8gbGV0IHBvbFRNaWQgPSBuZXcgQmlnQnVmZmVyKCh6a2V5LmRvbWFpblNpemUgKyAxKSAqIG44cik7XG4gICAgICAgIC8vIHBvbFRNaWQuc2V0KHQuc2xpY2UoemtleS5kb21haW5TaXplICogbjhyLCB6a2V5LmRvbWFpblNpemUgKiAyICogbjhyKSwgMCk7XG4gICAgICAgIC8vIC8vIFN1YnRyYWN0IGJsaW5kaW5nIHNjYWxhciBiXzEwIHRvIHRoZSBsb3dlc3QgY29lZmZpY2llbnQgb2YgdF9taWRcbiAgICAgICAgLy8gY29uc3QgbG93ZXN0TWlkID0gRnIuc3ViKHBvbFRNaWQuc2xpY2UoMCwgbjhyKSwgY2guYlsxMF0pO1xuICAgICAgICAvLyBwb2xUTWlkLnNldChsb3dlc3RNaWQsIDApO1xuICAgICAgICAvLyAvLyBBZGQgYmxpbmRpbmcgc2NhbGFyIGJfMTEgYXMgYSBuZXcgY29lZmZpY2llbnQgblxuICAgICAgICAvLyBwb2xUTWlkLnNldChjaC5iWzExXSwgemtleS5kb21haW5TaXplICogbjhyKTtcbiAgICAgICAgLy9cbiAgICAgICAgLy8gLy8gY29tcHV0ZSB0X2hpZ2goWClcbiAgICAgICAgLy8gbGV0IHBvbFRIaWdoID0gbmV3IEJpZ0J1ZmZlcigoemtleS5kb21haW5TaXplICsgNikgKiBuOHIpO1xuICAgICAgICAvLyBwb2xUSGlnaC5zZXQodC5zbGljZSh6a2V5LmRvbWFpblNpemUgKiAyICogbjhyLCAoemtleS5kb21haW5TaXplICogMyArIDYpICogbjhyKSwgMCk7XG4gICAgICAgIC8vIC8vU3VidHJhY3QgYmxpbmRpbmcgc2NhbGFyIGJfMTEgdG8gdGhlIGxvd2VzdCBjb2VmZmljaWVudCBvZiB0X2hpZ2hcbiAgICAgICAgLy8gY29uc3QgbG93ZXN0SGlnaCA9IEZyLnN1Yihwb2xUSGlnaC5zbGljZSgwLCBuOHIpLCBjaC5iWzExXSk7XG4gICAgICAgIC8vIHBvbFRIaWdoLnNldChsb3dlc3RIaWdoLCAwKTtcbiAgICAgICAgLy9cbiAgICAgICAgLy8gcHJvb2YuVDEgPSBhd2FpdCBleHBUYXUocG9sVExvdywgXCJtdWx0aWV4cCBUMVwiKTtcbiAgICAgICAgLy8gcHJvb2YuVDIgPSBhd2FpdCBleHBUYXUocG9sVE1pZCwgXCJtdWx0aWV4cCBUMlwiKTtcbiAgICAgICAgLy8gcHJvb2YuVDMgPSBhd2FpdCBleHBUYXUocG9sVEhpZ2gsIFwibXVsdGlleHAgVDNcIik7XG4gICAgfVxuXG4vLyBzcGxpdDIoZGVnUG9scywgYmxpbmRpbmdGYWN0b3JzKSB7XG4vLyAgICAgbGV0IGN1cnJlbnREZWdyZWUgPSB0aGlzLmRlZ3JlZSgpO1xuLy8gICAgIGNvbnN0IG51bUZpbGxlZFBvbHMgPSBNYXRoLmNlaWwoKGN1cnJlbnREZWdyZWUgKyAxKSAvIChkZWdQb2xzICsgMSkpO1xuLy9cbi8vICAgICAvL2JsaW5kaW5nIGZhY3RvcnMgY2FuIGJlIHZvaWQgb3IgbXVzdCBoYXZlIGEgbGVuZ3RoIG9mIG51bVBvbHMgLSAxXG4vLyAgICAgaWYgKDAgIT09IGJsaW5kaW5nRmFjdG9ycy5sZW5ndGggJiYgYmxpbmRpbmdGYWN0b3JzLmxlbmd0aCA8IG51bUZpbGxlZFBvbHMgLSAxKSB7XG4vLyAgICAgICAgIHRocm93IG5ldyBFcnJvcihgQmxpbmRpbmcgZmFjdG9ycyBsZW5ndGggbXVzdCBiZSAke251bUZpbGxlZFBvbHMgLSAxfWApO1xuLy8gICAgIH1cbi8vXG4vLyAgICAgY29uc3QgY2h1bmtCeXRlTGVuZ3RoID0gKGRlZ1BvbHMgKyAxKSAqIHRoaXMuRnIubjg7XG4vL1xuLy8gICAgIC8vIENoZWNrIHBvbHlub21pYWwgY2FuIGJlIHNwbGl0IGluIG51bUNodW5rcyBwYXJ0cyBvZiBjaHVua1NpemUgYnl0ZXMuLi5cbi8vICAgICBpZiAodGhpcy5jb2VmLmJ5dGVMZW5ndGggLyBjaHVua0J5dGVMZW5ndGggPD0gbnVtRmlsbGVkUG9scyAtIDEpIHtcbi8vICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBQb2x5bm9taWFsIGlzIHNob3J0IHRvIGJlIHNwbGl0IGluICR7bnVtRmlsbGVkUG9sc30gcGFydHMgb2YgJHtkZWdQb2xzfSBjb2VmZmljaWVudHMgZWFjaC5gKTtcbi8vICAgICB9XG4vL1xuLy8gICAgIGxldCByZXMgPSBbXTtcbi8vICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG51bUZpbGxlZFBvbHM7IGkrKykge1xuLy8gICAgICAgICBjb25zdCBpc0xhc3QgPSAobnVtRmlsbGVkUG9scyAtIDEpID09PSBpO1xuLy8gICAgICAgICBjb25zdCBieXRlTGVuZ3RoID0gaXNMYXN0ID8gKGN1cnJlbnREZWdyZWUgKyAxKSAqIHRoaXMuRnIubjggLSAoKG51bUZpbGxlZFBvbHMgLSAxKSAqIGNodW5rQnl0ZUxlbmd0aCkgOiBjaHVua0J5dGVMZW5ndGggKyB0aGlzLkZyLm44O1xuLy9cbi8vICAgICAgICAgcmVzW2ldID0gbmV3IFBvbHlub21pYWwobmV3IEJpZ0J1ZmZlcihieXRlTGVuZ3RoKSwgdGhpcy5GciwgdGhpcy5sb2dnZXIpO1xuLy8gICAgICAgICBjb25zdCBmciA9IGkgKiBjaHVua0J5dGVMZW5ndGg7XG4vLyAgICAgICAgIGNvbnN0IHRvID0gaXNMYXN0ID8gKGN1cnJlbnREZWdyZWUgKyAxKSAqIHRoaXMuRnIubjggOiAoaSArIDEpICogY2h1bmtCeXRlTGVuZ3RoO1xuLy8gICAgICAgICByZXNbaV0uY29lZi5zZXQodGhpcy5jb2VmLnNsaWNlKGZyLCB0byksIDApO1xuLy9cbi8vICAgICAgICAgLy8gQWRkIGEgYmxpbmRpbmcgZmFjdG9yIGFzIGhpZ2hlciBkZWdyZWVcbi8vICAgICAgICAgaWYgKCFpc0xhc3QpIHtcbi8vICAgICAgICAgICAgIHJlc1tpXS5jb2VmLnNldChibGluZGluZ0ZhY3RvcnNbaV0sIGNodW5rQnl0ZUxlbmd0aCk7XG4vLyAgICAgICAgIH1cbi8vXG4vLyAgICAgICAgIC8vIFN1YiBibGluZGluZyBmYWN0b3IgdG8gdGhlIGxvd2VzdCBkZWdyZWVcbi8vICAgICAgICAgaWYgKDAgIT09IGkpIHtcbi8vICAgICAgICAgICAgIGNvbnN0IGxvd2VzdERlZ3JlZSA9IHRoaXMuRnIuc3ViKHJlc1tpXS5jb2VmLnNsaWNlKDAsIHRoaXMuRnIubjgpLCBibGluZGluZ0ZhY3RvcnNbaSAtIDFdKTtcbi8vICAgICAgICAgICAgIHJlc1tpXS5jb2VmLnNldChsb3dlc3REZWdyZWUsIDApO1xuLy8gICAgICAgICB9XG4vLyAgICAgfVxuLy9cbi8vICAgICByZXR1cm4gcmVzO1xuLy8gfVxuXG4vLyBtZXJnZShwb2xzLCBvdmVybGFwID0gdHJ1ZSkge1xuLy8gICAgIGxldCBsZW5ndGggPSAwO1xuLy8gICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcG9scy5sZW5ndGg7IGkrKykge1xuLy8gICAgICAgICBsZW5ndGggKz0gcG9sc1tpXS5sZW5ndGgoKTtcbi8vICAgICB9XG4vL1xuLy8gICAgIGlmIChvdmVybGFwKSB7XG4vLyAgICAgICAgIGxlbmd0aCAtPSBwb2xzLmxlbmd0aCAtIDE7XG4vLyAgICAgfVxuLy9cbi8vICAgICBsZXQgcmVzID0gbmV3IFBvbHlub21pYWwobmV3IEJpZ0J1ZmZlcihsZW5ndGggKiB0aGlzLkZyLm44KSk7XG4vLyAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwb2xzLmxlbmd0aDsgaSsrKSB7XG4vLyAgICAgICAgIGNvbnN0IGJ5dGVMZW5ndGggPSBwb2xzW2ldLmNvZWYuYnl0ZUxlbmd0aDtcbi8vICAgICAgICAgaWYgKDAgPT09IGkpIHtcbi8vICAgICAgICAgICAgIHJlcy5jb2VmLnNldChwb2xzW2ldLmNvZWYsIDApO1xuLy8gICAgICAgICB9IGVsc2Uge1xuLy9cbi8vICAgICAgICAgfVxuLy8gICAgIH1cbi8vXG4vLyAgICAgcmV0dXJuIHJlcztcbi8vIH1cblxuICAgIHRydW5jYXRlKCkge1xuICAgICAgICBjb25zdCBkZWcgPSB0aGlzLmRlZ3JlZSgpO1xuICAgICAgICBpZiAoZGVnICsgMSA8IHRoaXMuY29lZi5ieXRlTGVuZ3RoIC8gdGhpcy5Gci5uOCkge1xuICAgICAgICAgICAgY29uc3QgbmV3Q29lZnMgPSAoZGVnICsgMSkgPiAyIDw8IDE0ID9cbiAgICAgICAgICAgICAgICBuZXcgQmlnQnVmZmVyKChkZWcgKyAxKSAqIHRoaXMuRnIubjgpIDogbmV3IFVpbnQ4QXJyYXkoKGRlZyArIDEpICogdGhpcy5Gci5uOCk7XG5cbiAgICAgICAgICAgIG5ld0NvZWZzLnNldCh0aGlzLmNvZWYuc2xpY2UoMCwgKGRlZyArIDEpICogdGhpcy5Gci5uOCksIDApO1xuICAgICAgICAgICAgdGhpcy5jb2VmID0gbmV3Q29lZnM7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzdGF0aWMgbGFncmFuZ2VQb2x5bm9taWFsSW50ZXJwb2xhdGlvbih4QXJyLCB5QXJyLCBjdXJ2ZSkge1xuICAgICAgICBjb25zdCBGciA9IGN1cnZlLkZyO1xuICAgICAgICBsZXQgcG9seW5vbWlhbCA9IGNvbXB1dGVMYWdyYW5nZVBvbHlub21pYWwoMCk7XG4gICAgICAgIGZvciAobGV0IGkgPSAxOyBpIDwgeEFyci5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgcG9seW5vbWlhbC5hZGQoY29tcHV0ZUxhZ3JhbmdlUG9seW5vbWlhbChpKSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcG9seW5vbWlhbDtcblxuICAgICAgICBmdW5jdGlvbiBjb21wdXRlTGFncmFuZ2VQb2x5bm9taWFsKGkpIHtcbiAgICAgICAgICAgIGxldCBwb2x5bm9taWFsO1xuXG4gICAgICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHhBcnIubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgICAgICAgICBpZiAoaiA9PT0gaSkgY29udGludWU7XG5cbiAgICAgICAgICAgICAgICBpZiAocG9seW5vbWlhbCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBidWZmID0gKHhBcnIubGVuZ3RoKSA+IDIgPDwgMTQgP1xuICAgICAgICAgICAgICAgICAgICAgICAgbmV3IEJpZ0J1ZmZlcigoeEFyci5sZW5ndGgpICogRnIubjgpIDogbmV3IFVpbnQ4QXJyYXkoKHhBcnIubGVuZ3RoKSAqIEZyLm44KTtcbiAgICAgICAgICAgICAgICAgICAgcG9seW5vbWlhbCA9IG5ldyBQb2x5bm9taWFsKGJ1ZmYsIGN1cnZlKTtcbiAgICAgICAgICAgICAgICAgICAgcG9seW5vbWlhbC5zZXRDb2VmKDAsIEZyLm5lZyh4QXJyW2pdKSk7XG4gICAgICAgICAgICAgICAgICAgIHBvbHlub21pYWwuc2V0Q29lZigxLCBGci5vbmUpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHBvbHlub21pYWwuYnlYU3ViVmFsdWUoeEFycltqXSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBsZXQgZGVub21pbmF0b3IgPSBwb2x5bm9taWFsLmV2YWx1YXRlKHhBcnJbaV0pO1xuICAgICAgICAgICAgZGVub21pbmF0b3IgPSBGci5pbnYoZGVub21pbmF0b3IpO1xuICAgICAgICAgICAgY29uc3QgbXVsRmFjdG9yID0gRnIubXVsKHlBcnJbaV0sIGRlbm9taW5hdG9yKTtcblxuICAgICAgICAgICAgcG9seW5vbWlhbC5tdWxTY2FsYXIobXVsRmFjdG9yKTtcblxuICAgICAgICAgICAgcmV0dXJuIHBvbHlub21pYWw7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzdGF0aWMgemVyb2ZpZXJQb2x5bm9taWFsKHhBcnIsIGN1cnZlKSB7XG4gICAgICAgIGNvbnN0IEZyID0gY3VydmUuRnI7XG4gICAgICAgIGxldCBidWZmID0gKHhBcnIubGVuZ3RoICsgMSkgPiAyIDw8IDE0ID9cbiAgICAgICAgICAgIG5ldyBCaWdCdWZmZXIoKHhBcnIubGVuZ3RoICsgMSkgKiBGci5uOCkgOiBuZXcgVWludDhBcnJheSgoeEFyci5sZW5ndGggKyAxKSAqIEZyLm44KTtcbiAgICAgICAgbGV0IHBvbHlub21pYWwgPSBuZXcgUG9seW5vbWlhbChidWZmLCBjdXJ2ZSk7XG5cbiAgICAgICAgLy8gQnVpbGQgYSB6ZXJvZmllciBwb2x5bm9taWFsIHdpdGggdGhlIGZvbGxvd2luZyBmb3JtOlxuICAgICAgICAvLyB6ZXJvZmllcihYKSA9IChYLXhBcnJbMF0pKFgteEFyclsxXSkuLi4oWC14QXJyW25dKVxuICAgICAgICBwb2x5bm9taWFsLnNldENvZWYoMCwgRnIubmVnKHhBcnJbMF0pKTtcbiAgICAgICAgcG9seW5vbWlhbC5zZXRDb2VmKDEsIEZyLm9uZSk7XG5cbiAgICAgICAgZm9yIChsZXQgaSA9IDE7IGkgPCB4QXJyLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBwb2x5bm9taWFsLmJ5WFN1YlZhbHVlKHhBcnJbaV0pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHBvbHlub21pYWw7XG4gICAgfVxuXG4gICAgcHJpbnQoKSB7XG4gICAgICAgIGNvbnN0IEZyID0gdGhpcy5GcjtcbiAgICAgICAgbGV0IHJlcyA9IFwiXCI7XG4gICAgICAgIGZvciAobGV0IGkgPSB0aGlzLmRlZ3JlZSgpOyBpID49IDA7IGktLSkge1xuICAgICAgICAgICAgY29uc3QgY29lZiA9IHRoaXMuZ2V0Q29lZihpKTtcbiAgICAgICAgICAgIGlmICghRnIuZXEoRnIuemVybywgY29lZikpIHtcbiAgICAgICAgICAgICAgICBpZiAoRnIuaXNOZWdhdGl2ZShjb2VmKSkge1xuICAgICAgICAgICAgICAgICAgICByZXMgKz0gXCIgLSBcIjtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGkgIT09IHRoaXMuZGVncmVlKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzICs9IFwiICsgXCI7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJlcyArPSBGci50b1N0cmluZyhjb2VmKTtcbiAgICAgICAgICAgICAgICBpZiAoaSA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzICs9IGkgPiAxID8gXCJ4XlwiICsgaSA6IFwieFwiO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBjb25zb2xlLmxvZyhyZXMpO1xuICAgIH1cblxuICAgIGFzeW5jIG11bHRpRXhwb25lbnRpYXRpb24oUFRhdSwgbmFtZSkge1xuICAgICAgICBjb25zdCBuID0gdGhpcy5jb2VmLmJ5dGVMZW5ndGggLyB0aGlzLkZyLm44O1xuICAgICAgICBjb25zdCBQVGF1TiA9IFBUYXUuc2xpY2UoMCwgbiAqIHRoaXMuRzEuRi5uOCAqIDIpO1xuICAgICAgICBjb25zdCBibSA9IGF3YWl0IHRoaXMuRnIuYmF0Y2hGcm9tTW9udGdvbWVyeSh0aGlzLmNvZWYpO1xuICAgICAgICBsZXQgcmVzID0gYXdhaXQgdGhpcy5HMS5tdWx0aUV4cEFmZmluZShQVGF1TiwgYm0sIHRoaXMubG9nZ2VyLCBuYW1lKTtcbiAgICAgICAgcmVzID0gdGhpcy5HMS50b0FmZmluZShyZXMpO1xuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH1cbn0iLCIvKlxuICAgIENvcHlyaWdodCAyMDIyIGlkZW4zIGFzc29jaWF0aW9uLlxuXG4gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2Ygc25hcmtqcy5cblxuICAgIHNuYXJranMgaXMgYSBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3JcbiAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlXG4gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pXG4gICAgYW55IGxhdGVyIHZlcnNpb24uXG5cbiAgICBzbmFya2pzIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZXG4gICAgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yXG4gICAgbW9yZSBkZXRhaWxzLlxuXG4gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcgd2l0aFxuICAgIHNuYXJranMuIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXG4qL1xuXG5pbXBvcnQge0JpZ0J1ZmZlcn0gZnJvbSBcImZmamF2YXNjcmlwdFwiO1xuXG5leHBvcnQgY2xhc3MgRXZhbHVhdGlvbnMge1xuICAgIGNvbnN0cnVjdG9yKGV2YWx1YXRpb25zLCBjdXJ2ZSwgbG9nZ2VyKSB7XG4gICAgICAgIHRoaXMuZXZhbCA9IGV2YWx1YXRpb25zO1xuICAgICAgICB0aGlzLmN1cnZlID0gY3VydmU7XG4gICAgICAgIHRoaXMuRnIgPSBjdXJ2ZS5GcjtcbiAgICAgICAgdGhpcy5sb2dnZXIgPSBsb2dnZXI7XG4gICAgfVxuXG4gICAgc3RhdGljIGFzeW5jIGZyb21Qb2x5bm9taWFsKHBvbHlub21pYWwsIGV4dGVuc2lvbiwgY3VydmUsIGxvZ2dlcikge1xuICAgICAgICBjb25zdCBjb2VmZmljaWVudHNOID0gbmV3IEJpZ0J1ZmZlcihwb2x5bm9taWFsLmxlbmd0aCgpICogZXh0ZW5zaW9uICogY3VydmUuRnIubjgpO1xuICAgICAgICBjb2VmZmljaWVudHNOLnNldChwb2x5bm9taWFsLmNvZWYsIDApO1xuXG4gICAgICAgIGNvbnN0IGV2YWx1YXRpb25zID0gYXdhaXQgY3VydmUuRnIuZmZ0KGNvZWZmaWNpZW50c04pO1xuXG4gICAgICAgIHJldHVybiBuZXcgRXZhbHVhdGlvbnMoZXZhbHVhdGlvbnMsIGN1cnZlLCBsb2dnZXIpO1xuICAgIH1cblxuICAgIGdldEV2YWx1YXRpb24oaW5kZXgpIHtcbiAgICAgICAgY29uc3QgaV9uOCA9IGluZGV4ICogdGhpcy5Gci5uODtcblxuICAgICAgICBpZiAoaV9uOCArIHRoaXMuRnIubjggPiB0aGlzLmV2YWwuYnl0ZUxlbmd0aCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiRXZhbHVhdGlvbnMuZ2V0RXZhbHVhdGlvbigpIG91dCBvZiBib3VuZHNcIik7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5ldmFsLnNsaWNlKGlfbjgsIGlfbjggKyB0aGlzLkZyLm44KTtcbiAgICB9XG5cbiAgICBsZW5ndGgoKSB7XG4gICAgICAgIGxldCBsZW5ndGggPSB0aGlzLmV2YWwuYnl0ZUxlbmd0aCAvIHRoaXMuRnIubjg7XG4gICAgICAgIGlmIChsZW5ndGggIT09IE1hdGguZmxvb3IodGhpcy5ldmFsLmJ5dGVMZW5ndGggLyB0aGlzLkZyLm44KSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiUG9seW5vbWlhbCBldmFsdWF0aW9ucyBidWZmZXIgaGFzIGluY29ycmVjdCBzaXplXCIpO1xuICAgICAgICB9XG4gICAgICAgIGlmICgwID09PSBsZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMubG9nZ2VyLndhcm4oXCJQb2x5bm9taWFsIGhhcyBsZW5ndGggemVyb1wiKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbGVuZ3RoO1xuICAgIH1cbn0iLCIvKlxuICAgIENvcHlyaWdodCAyMDIxIDBraW1zIGFzc29jaWF0aW9uLlxuXG4gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2Ygc25hcmtqcy5cblxuICAgIHNuYXJranMgaXMgYSBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3JcbiAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlXG4gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pXG4gICAgYW55IGxhdGVyIHZlcnNpb24uXG5cbiAgICBzbmFya2pzIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZXG4gICAgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yXG4gICAgbW9yZSBkZXRhaWxzLlxuXG4gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcgd2l0aFxuICAgIHNuYXJranMuIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXG4qL1xuXG4vKiBJbXBsZW1lbnRhdGlvbiBvZiB0aGlzIHBhcGVyOiBodHRwczovL2VwcmludC5pYWNyLm9yZy8yMDE5Lzk1My5wZGYgc2VjdGlvbiA4LjQgKi9cblxuaW1wb3J0ICogYXMgYmluRmlsZVV0aWxzIGZyb20gXCJAaWRlbjMvYmluZmlsZXV0aWxzXCI7XG5pbXBvcnQgKiBhcyB6a2V5VXRpbHMgZnJvbSBcIi4vemtleV91dGlscy5qc1wiO1xuaW1wb3J0ICogYXMgd3Ruc1V0aWxzIGZyb20gXCIuL3d0bnNfdXRpbHMuanNcIjtcbmltcG9ydCB7IFNjYWxhciwgdXRpbHMsIEJpZ0J1ZmZlciB9IGZyb20gXCJmZmphdmFzY3JpcHRcIjtcbmNvbnN0IHtzdHJpbmdpZnlCaWdJbnRzfSA9IHV0aWxzO1xuaW1wb3J0IHsgUHJvb2YgfSBmcm9tIFwiLi9wcm9vZi5qc1wiO1xuaW1wb3J0IHsgS2VjY2FrMjU2VHJhbnNjcmlwdCB9IGZyb20gXCIuL0tlY2NhazI1NlRyYW5zY3JpcHQuanNcIjtcbmltcG9ydCB7IE11bFogfSBmcm9tIFwiLi9tdWxfei5qc1wiO1xuaW1wb3J0IHsgIFpLRVlfUExfSEVBREVSX1NFQ1RJT04sXG4gICAgWktFWV9QTF9BRERJVElPTlNfU0VDVElPTixcbiAgICBaS0VZX1BMX0FfTUFQX1NFQ1RJT04sXG4gICAgWktFWV9QTF9CX01BUF9TRUNUSU9OLFxuICAgIFpLRVlfUExfQ19NQVBfU0VDVElPTixcbiAgICBaS0VZX1BMX1FNX1NFQ1RJT04sXG4gICAgWktFWV9QTF9RTF9TRUNUSU9OLFxuICAgIFpLRVlfUExfUVJfU0VDVElPTixcbiAgICBaS0VZX1BMX1FPX1NFQ1RJT04sXG4gICAgWktFWV9QTF9RQ19TRUNUSU9OLFxuICAgIFpLRVlfUExfU0lHTUFfU0VDVElPTixcbiAgICBaS0VZX1BMX0xBR1JBTkdFX1NFQ1RJT04sXG4gICAgWktFWV9QTF9QVEFVX1NFQ1RJT04sXG59IGZyb20gXCIuL3Bsb25rX2NvbnN0YW50cy5qc1wiO1xuaW1wb3J0IHsgUG9seW5vbWlhbCB9IGZyb20gXCIuL3BvbHlub21pYWwvcG9seW5vbWlhbC5qc1wiO1xuaW1wb3J0IHsgRXZhbHVhdGlvbnMgfSBmcm9tIFwiLi9wb2x5bm9taWFsL2V2YWx1YXRpb25zLmpzXCI7XG4gICAgXG5leHBvcnQgZGVmYXVsdCBhc3luYyBmdW5jdGlvbiBwbG9uazE2UHJvdmUoemtleUZpbGVOYW1lLCB3aXRuZXNzRmlsZU5hbWUsIGxvZ2dlcikge1xuICAgIGNvbnN0IHtmZDogZmRXdG5zLCBzZWN0aW9uczogc2VjdGlvbnNXdG5zfSA9IGF3YWl0IGJpbkZpbGVVdGlscy5yZWFkQmluRmlsZSh3aXRuZXNzRmlsZU5hbWUsIFwid3Ruc1wiLCAyLCAxPDwyNSwgMTw8MjMpO1xuXG4gICAgLy8gUmVhZCB3aXRuZXNzIGZpbGVcbiAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZGVidWcoXCI+IFJlYWRpbmcgd2l0bmVzcyBmaWxlXCIpO1xuICAgIGNvbnN0IHd0bnMgPSBhd2FpdCB3dG5zVXRpbHMucmVhZEhlYWRlcihmZFd0bnMsIHNlY3Rpb25zV3Rucyk7XG5cbiAgICAvLyBSZWFkIHprZXkgZmlsZVxuICAgIGlmIChsb2dnZXIpIGxvZ2dlci5kZWJ1ZyhcIj4gUmVhZGluZyB6a2V5IGZpbGVcIik7XG4gICAgY29uc3Qge2ZkOiBmZFpLZXksIHNlY3Rpb25zOiB6a2V5U2VjdGlvbnN9ID0gYXdhaXQgYmluRmlsZVV0aWxzLnJlYWRCaW5GaWxlKHprZXlGaWxlTmFtZSwgXCJ6a2V5XCIsIDIsIDE8PDI1LCAxPDwyMyk7XG5cbiAgICBjb25zdCB6a2V5ID0gYXdhaXQgemtleVV0aWxzLnJlYWRIZWFkZXIoZmRaS2V5LCB6a2V5U2VjdGlvbnMpO1xuICAgIGlmICh6a2V5LnByb3RvY29sICE9IFwicGxvbmtcIikge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJ6a2V5IGZpbGUgaXMgbm90IHBsb25rXCIpO1xuICAgIH1cblxuICAgIGlmICghU2NhbGFyLmVxKHprZXkuciwgIHd0bnMucSkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiQ3VydmUgb2YgdGhlIHdpdG5lc3MgZG9lcyBub3QgbWF0Y2ggdGhlIGN1cnZlIG9mIHRoZSBwcm92aW5nIGtleVwiKTtcbiAgICB9XG5cbiAgICBpZiAod3Rucy5uV2l0bmVzcyAhPSB6a2V5Lm5WYXJzIC16a2V5Lm5BZGRpdGlvbnMpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIHdpdG5lc3MgbGVuZ3RoLiBDaXJjdWl0OiAke3prZXkublZhcnN9LCB3aXRuZXNzOiAke3d0bnMubldpdG5lc3N9LCAke3prZXkubkFkZGl0aW9uc31gKTtcbiAgICB9XG5cbiAgICBjb25zdCBjdXJ2ZSA9IHprZXkuY3VydmU7XG5cbiAgICBjb25zdCBGciA9IGN1cnZlLkZyO1xuICAgIGNvbnN0IG44ciA9IGN1cnZlLkZyLm44O1xuICAgIGNvbnN0IHNEb21haW4gPSB6a2V5LmRvbWFpblNpemUgKiBuOHI7XG5cbiAgICBpZiAobG9nZ2VyKSB7XG4gICAgICAgIGxvZ2dlci5kZWJ1ZyhcIi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cIik7XG4gICAgICAgIGxvZ2dlci5kZWJ1ZyhcIiAgUExPTksgUFJPVkUgU0VUVElOR1NcIik7XG4gICAgICAgIGxvZ2dlci5kZWJ1ZyhgICBDdXJ2ZTogICAgICAgICAke2N1cnZlLm5hbWV9YCk7XG4gICAgICAgIGxvZ2dlci5kZWJ1ZyhgICBDaXJjdWl0IHBvd2VyOiAke3prZXkucG93ZXJ9YCk7XG4gICAgICAgIGxvZ2dlci5kZWJ1ZyhgICBEb21haW4gc2l6ZTogICAke3prZXkuZG9tYWluU2l6ZX1gKTtcbiAgICAgICAgbG9nZ2VyLmRlYnVnKGAgIFZhcnM6ICAgICAgICAgICR7emtleS5uVmFyc31gKTtcbiAgICAgICAgbG9nZ2VyLmRlYnVnKGAgIFB1YmxpYyB2YXJzOiAgICR7emtleS5uUHVibGljfWApO1xuICAgICAgICBsb2dnZXIuZGVidWcoYCAgQ29uc3RyYWludHM6ICAgJHt6a2V5Lm5Db25zdHJhaW50c31gKTtcbiAgICAgICAgbG9nZ2VyLmRlYnVnKGAgIEFkZGl0aW9uczogICAgICR7emtleS5uQWRkaXRpb25zfWApO1xuICAgICAgICBsb2dnZXIuZGVidWcoXCItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXCIpO1xuICAgIH1cblxuICAgIC8vUmVhZCB3aXRuZXNzIGRhdGFcbiAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZGVidWcoXCI+IFJlYWRpbmcgd2l0bmVzcyBmaWxlIGRhdGFcIik7XG4gICAgY29uc3QgYnVmZldpdG5lc3MgPSBhd2FpdCBiaW5GaWxlVXRpbHMucmVhZFNlY3Rpb24oZmRXdG5zLCBzZWN0aW9uc1d0bnMsIDIpO1xuXG4gICAgLy8gRmlyc3QgZWxlbWVudCBpbiBwbG9uayBpcyBub3QgdXNlZCBhbmQgY2FuIGJlIGFueSB2YWx1ZS4gKEJ1dCBhbHdheXMgdGhlIHNhbWUpLlxuICAgIC8vIFdlIHNldCBpdCB0byB6ZXJvIHRvIGdvIGZhc3RlciBpbiB0aGUgZXhwb25lbnRpYXRpb25zLlxuICAgIGJ1ZmZXaXRuZXNzLnNldChGci56ZXJvLCAwKTtcbiAgICBjb25zdCBidWZmSW50ZXJuYWxXaXRuZXNzID0gbmV3IEJpZ0J1ZmZlcihuOHIqemtleS5uQWRkaXRpb25zKTtcblxuICAgIGxldCBidWZmZXJzID0ge307XG4gICAgbGV0IHBvbHlub21pYWxzID0ge307XG4gICAgbGV0IGV2YWx1YXRpb25zID0ge307XG5cbiAgICBsZXQgY2hhbGxlbmdlcyA9IHt9O1xuICAgIGxldCBwcm9vZiA9IG5ldyBQcm9vZihjdXJ2ZSwgbG9nZ2VyKTtcbiAgICBjb25zdCB0cmFuc2NyaXB0ID0gbmV3IEtlY2NhazI1NlRyYW5zY3JpcHQoY3VydmUpO1xuXG4gICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmRlYnVnKGA+IFJlYWRpbmcgU2VjdGlvbiAke1pLRVlfUExfQURESVRJT05TX1NFQ1RJT059LiBBZGRpdGlvbnNgKTtcbiAgICBhd2FpdCBjYWxjdWxhdGVBZGRpdGlvbnMoKTtcblxuICAgIGlmIChsb2dnZXIpIGxvZ2dlci5kZWJ1ZyhgPiBSZWFkaW5nIFNlY3Rpb24gJHtaS0VZX1BMX1NJR01BX1NFQ1RJT059LiBTaWdtYTEsIFNpZ21hMiAmIFNpZ21hIDNgKTtcbiAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZGVidWcoXCLCt8K3wrcgUmVhZGluZyBTaWdtYSBwb2x5bm9taWFscyBcIik7XG4gICAgcG9seW5vbWlhbHMuU2lnbWExID0gbmV3IFBvbHlub21pYWwobmV3IEJpZ0J1ZmZlcihzRG9tYWluKSwgY3VydmUsIGxvZ2dlcik7XG4gICAgcG9seW5vbWlhbHMuU2lnbWEyID0gbmV3IFBvbHlub21pYWwobmV3IEJpZ0J1ZmZlcihzRG9tYWluKSwgY3VydmUsIGxvZ2dlcik7XG4gICAgcG9seW5vbWlhbHMuU2lnbWEzID0gbmV3IFBvbHlub21pYWwobmV3IEJpZ0J1ZmZlcihzRG9tYWluKSwgY3VydmUsIGxvZ2dlcik7XG5cbiAgICBhd2FpdCBmZFpLZXkucmVhZFRvQnVmZmVyKHBvbHlub21pYWxzLlNpZ21hMS5jb2VmLCAwLCBzRG9tYWluLCB6a2V5U2VjdGlvbnNbWktFWV9QTF9TSUdNQV9TRUNUSU9OXVswXS5wKTtcbiAgICBhd2FpdCBmZFpLZXkucmVhZFRvQnVmZmVyKHBvbHlub21pYWxzLlNpZ21hMi5jb2VmLCAwLCBzRG9tYWluLCB6a2V5U2VjdGlvbnNbWktFWV9QTF9TSUdNQV9TRUNUSU9OXVswXS5wICsgNSAqIHNEb21haW4pO1xuICAgIGF3YWl0IGZkWktleS5yZWFkVG9CdWZmZXIocG9seW5vbWlhbHMuU2lnbWEzLmNvZWYsIDAsIHNEb21haW4sIHprZXlTZWN0aW9uc1taS0VZX1BMX1NJR01BX1NFQ1RJT05dWzBdLnAgKyAxMCAqIHNEb21haW4pO1xuXG4gICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmRlYnVnKFwiwrfCt8K3IFJlYWRpbmcgU2lnbWEgZXZhbHVhdGlvbnNcIik7XG4gICAgZXZhbHVhdGlvbnMuU2lnbWExID0gbmV3IEV2YWx1YXRpb25zKG5ldyBCaWdCdWZmZXIoc0RvbWFpbiAqIDQpLCBjdXJ2ZSwgbG9nZ2VyKTtcbiAgICBldmFsdWF0aW9ucy5TaWdtYTIgPSBuZXcgRXZhbHVhdGlvbnMobmV3IEJpZ0J1ZmZlcihzRG9tYWluICogNCksIGN1cnZlLCBsb2dnZXIpO1xuICAgIGV2YWx1YXRpb25zLlNpZ21hMyA9IG5ldyBFdmFsdWF0aW9ucyhuZXcgQmlnQnVmZmVyKHNEb21haW4gKiA0KSwgY3VydmUsIGxvZ2dlcik7XG5cbiAgICBhd2FpdCBmZFpLZXkucmVhZFRvQnVmZmVyKGV2YWx1YXRpb25zLlNpZ21hMS5ldmFsLCAwLCBzRG9tYWluICogNCwgemtleVNlY3Rpb25zW1pLRVlfUExfU0lHTUFfU0VDVElPTl1bMF0ucCArIHNEb21haW4pO1xuICAgIGF3YWl0IGZkWktleS5yZWFkVG9CdWZmZXIoZXZhbHVhdGlvbnMuU2lnbWEyLmV2YWwsIDAsIHNEb21haW4gKiA0LCB6a2V5U2VjdGlvbnNbWktFWV9QTF9TSUdNQV9TRUNUSU9OXVswXS5wICsgNiAqIHNEb21haW4pO1xuICAgIGF3YWl0IGZkWktleS5yZWFkVG9CdWZmZXIoZXZhbHVhdGlvbnMuU2lnbWEzLmV2YWwsIDAsIHNEb21haW4gKiA0LCB6a2V5U2VjdGlvbnNbWktFWV9QTF9TSUdNQV9TRUNUSU9OXVswXS5wICsgMTEgKiBzRG9tYWluKTtcblxuICAgIGlmIChsb2dnZXIpIGxvZ2dlci5kZWJ1ZyhgPiBSZWFkaW5nIFNlY3Rpb24gJHtaS0VZX1BMX1BUQVVfU0VDVElPTn0uIFBvd2VycyBvZiBUYXVgKTtcbiAgICBjb25zdCBQVGF1ID0gYXdhaXQgYmluRmlsZVV0aWxzLnJlYWRTZWN0aW9uKGZkWktleSwgemtleVNlY3Rpb25zLCBaS0VZX1BMX1BUQVVfU0VDVElPTik7XG5cbiAgICBsZXQgcHVibGljU2lnbmFscyA9IFtdO1xuXG4gICAgZm9yIChsZXQgaT0xOyBpPD0gemtleS5uUHVibGljOyBpKyspIHtcbiAgICAgICAgY29uc3QgcHViID0gYnVmZldpdG5lc3Muc2xpY2UoaSpGci5uOCwgaSpGci5uOCtGci5uOCk7XG4gICAgICAgIHB1YmxpY1NpZ25hbHMucHVzaChTY2FsYXIuZnJvbVJwckxFKHB1YikpO1xuICAgIH1cblxuICAgIGlmIChsb2dnZXIpIGxvZ2dlci5kZWJ1ZyhcIlwiKTtcbiAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZGVidWcoXCI+IFJPVU5EIDFcIik7XG4gICAgYXdhaXQgcm91bmQxKCk7XG5cbiAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZGVidWcoXCI+IFJPVU5EIDJcIik7XG4gICAgYXdhaXQgcm91bmQyKCk7XG5cbiAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZGVidWcoXCI+IFJPVU5EIDNcIik7XG4gICAgYXdhaXQgcm91bmQzKCk7XG5cbiAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZGVidWcoXCI+IFJPVU5EIDRcIik7XG4gICAgYXdhaXQgcm91bmQ0KCk7XG5cbiAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZGVidWcoXCI+IFJPVU5EIDVcIik7XG4gICAgYXdhaXQgcm91bmQ1KCk7XG5cbiAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuICAgIC8vIEZpbmFsIGFkanVzdG1lbnRzIC8vXG4gICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cblxuICAgIGF3YWl0IGZkWktleS5jbG9zZSgpO1xuICAgIGF3YWl0IGZkV3Rucy5jbG9zZSgpO1xuXG4gICAgLy8gUHJlcGFyZSBwcm9vZlxuICAgIGxldCBfcHJvb2YgPSBwcm9vZi50b09iamVjdFByb29mKGZhbHNlKTtcbiAgICBfcHJvb2YucHJvdG9jb2wgPSBcInBsb25rXCI7XG4gICAgX3Byb29mLmN1cnZlID0gY3VydmUubmFtZTtcbiAgICBcbiAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZGVidWcoXCJQTE9OSyBQUk9WRVIgRklOSVNIRURcIik7XG5cbiAgICByZXR1cm4ge1xuICAgICAgICBwcm9vZjogc3RyaW5naWZ5QmlnSW50cyhfcHJvb2YpLFxuICAgICAgICBwdWJsaWNTaWduYWxzOiBzdHJpbmdpZnlCaWdJbnRzKHB1YmxpY1NpZ25hbHMpXG4gICAgfTtcblxuICAgIGFzeW5jIGZ1bmN0aW9uIGNhbGN1bGF0ZUFkZGl0aW9ucygpIHtcbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmRlYnVnKFwiwrfCt8K3IENvbXB1dGluZyBhZGRpdGlvbnNcIik7XG4gICAgICAgIGNvbnN0IGFkZGl0aW9uc0J1ZmYgPSBhd2FpdCBiaW5GaWxlVXRpbHMucmVhZFNlY3Rpb24oZmRaS2V5LCB6a2V5U2VjdGlvbnMsIFpLRVlfUExfQURESVRJT05TX1NFQ1RJT04pO1xuXG4gICAgICAgIC8vIHNpemVzOiB3aXJlSWRfeCA9IDQgYnl0ZXMgKDMyIGJpdHMpLCBmYWN0b3JfeCA9IGZpZWxkIHNpemUgYml0c1xuICAgICAgICAvLyBBZGRpdGlvbiBmb3JtOiB3aXJlSWRfYSB3aXJlSWRfYiBmYWN0b3JfYSBmYWN0b3JfYiAoc2l6ZSBpcyA0ICsgNCArIHNGciArIHNGcilcbiAgICAgICAgY29uc3Qgc1N1bSA9IDggKyBuOHIgKiAyO1xuXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgemtleS5uQWRkaXRpb25zOyBpKyspIHtcbiAgICAgICAgICAgIGlmIChsb2dnZXIgJiYgKDAgIT09IGkpICYmIChpICUgMTAwMDAwID09PSAwKSkgbG9nZ2VyLmRlYnVnKGAgICAgYWRkaXRpb24gJHtpfS8ke3prZXkubkFkZGl0aW9uc31gKTtcblxuICAgICAgICAgICAgLy8gUmVhZCBhZGRpdGlvbiB2YWx1ZXNcbiAgICAgICAgICAgIGxldCBvZmZzZXQgPSBpICogc1N1bTtcbiAgICAgICAgICAgIGNvbnN0IHNpZ25hbElkMSA9IHJlYWRVSW50MzIoYWRkaXRpb25zQnVmZiwgb2Zmc2V0KTtcbiAgICAgICAgICAgIG9mZnNldCArPSA0O1xuICAgICAgICAgICAgY29uc3Qgc2lnbmFsSWQyID0gcmVhZFVJbnQzMihhZGRpdGlvbnNCdWZmLCBvZmZzZXQpO1xuICAgICAgICAgICAgb2Zmc2V0ICs9IDQ7XG4gICAgICAgICAgICBjb25zdCBmYWN0b3IxID0gYWRkaXRpb25zQnVmZi5zbGljZShvZmZzZXQsIG9mZnNldCArIG44cik7XG4gICAgICAgICAgICBvZmZzZXQgKz0gbjhyO1xuICAgICAgICAgICAgY29uc3QgZmFjdG9yMiA9IGFkZGl0aW9uc0J1ZmYuc2xpY2Uob2Zmc2V0LCBvZmZzZXQgKyBuOHIpO1xuXG4gICAgICAgICAgICAvLyBHZXQgd2l0bmVzcyB2YWx1ZVxuICAgICAgICAgICAgY29uc3Qgd2l0bmVzczEgPSBnZXRXaXRuZXNzKHNpZ25hbElkMSk7XG4gICAgICAgICAgICBjb25zdCB3aXRuZXNzMiA9IGdldFdpdG5lc3Moc2lnbmFsSWQyKTtcblxuICAgICAgICAgICAgLy9DYWxjdWxhdGUgZmluYWwgcmVzdWx0XG4gICAgICAgICAgICBjb25zdCByZXN1bHQgPSBGci5hZGQoRnIubXVsKGZhY3RvcjEsIHdpdG5lc3MxKSwgRnIubXVsKGZhY3RvcjIsIHdpdG5lc3MyKSk7XG5cbiAgICAgICAgICAgIGJ1ZmZJbnRlcm5hbFdpdG5lc3Muc2V0KHJlc3VsdCwgbjhyICogaSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiByZWFkVUludDMyKGIsIG8pIHtcbiAgICAgICAgY29uc3QgYnVmZiA9IGIuc2xpY2Uobywgbys0KTtcbiAgICAgICAgY29uc3QgYnVmZlYgPSBuZXcgRGF0YVZpZXcoYnVmZi5idWZmZXIsIGJ1ZmYuYnl0ZU9mZnNldCwgYnVmZi5ieXRlTGVuZ3RoKTtcbiAgICAgICAgcmV0dXJuIGJ1ZmZWLmdldFVpbnQzMigwLCB0cnVlKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRXaXRuZXNzKGlkeCkge1xuICAgICAgICBpZiAoaWR4IDwgemtleS5uVmFycy16a2V5Lm5BZGRpdGlvbnMpIHtcbiAgICAgICAgICAgIHJldHVybiBidWZmV2l0bmVzcy5zbGljZShpZHgqbjhyLCBpZHgqbjhyK244cik7XG4gICAgICAgIH0gZWxzZSBpZiAoaWR4IDwgemtleS5uVmFycykge1xuICAgICAgICAgICAgcmV0dXJuIGJ1ZmZJbnRlcm5hbFdpdG5lc3Muc2xpY2UoKGlkeCAtICh6a2V5Lm5WYXJzLXprZXkubkFkZGl0aW9ucykpKm44ciwgKGlkeC0oemtleS5uVmFycy16a2V5Lm5BZGRpdGlvbnMpKSpuOHIgKyBuOHIpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIGN1cnZlLkZyLnplcm87XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBhc3luYyBmdW5jdGlvbiByb3VuZDEoKSB7XG4gICAgICAgIC8vIFNURVAgMS4xIC0gR2VuZXJhdGUgcmFuZG9tIGJsaW5kaW5nIHNjYWxhcnMgKGIxLCAuLi4sIGIxMSkg4oiIIEZcbiAgICAgICAgY2hhbGxlbmdlcy5iID0gW107XG4gICAgICAgIGZvciAobGV0IGk9MTsgaTw9MTE7IGkrKykge1xuICAgICAgICAgICAgY2hhbGxlbmdlcy5iW2ldID0gY3VydmUuRnIucmFuZG9tKCk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBTVEVQIDEuMiAtIENvbXB1dGUgd2lyZSBwb2x5bm9taWFscyBhKFgpLCBiKFgpIGFuZCBjKFgpXG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5kZWJ1ZyhcIj4gQ29tcHV0aW5nIEEsIEIsIEMgd2lyZSBwb2x5bm9taWFsc1wiKTtcbiAgICAgICAgYXdhaXQgY29tcHV0ZVdpcmVQb2x5bm9taWFscygpO1xuXG4gICAgICAgIC8vIFNURVAgMS4zIC0gQ29tcHV0ZSBbYV1fMSwgW2JdXzEsIFtjXV8xXG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5kZWJ1ZyhcIj4gQ29tcHV0aW5nIEEsIEIsIEMgTVNNXCIpO1xuICAgICAgICBsZXQgY29tbWl0QSA9IGF3YWl0IHBvbHlub21pYWxzLkEubXVsdGlFeHBvbmVudGlhdGlvbihQVGF1LCBcIkFcIik7XG4gICAgICAgIGxldCBjb21taXRCID0gYXdhaXQgcG9seW5vbWlhbHMuQi5tdWx0aUV4cG9uZW50aWF0aW9uKFBUYXUsIFwiQlwiKTtcbiAgICAgICAgbGV0IGNvbW1pdEMgPSBhd2FpdCBwb2x5bm9taWFscy5DLm11bHRpRXhwb25lbnRpYXRpb24oUFRhdSwgXCJDXCIpO1xuXG4gICAgICAgIC8vIEZpcnN0IG91dHB1dCBvZiB0aGUgcHJvdmVyIGlzIChbQV1fMSwgW0JdXzEsIFtDXV8xKVxuICAgICAgICBwcm9vZi5hZGRQb2x5bm9taWFsKFwiQVwiLCBjb21taXRBKTtcbiAgICAgICAgcHJvb2YuYWRkUG9seW5vbWlhbChcIkJcIiwgY29tbWl0Qik7XG4gICAgICAgIHByb29mLmFkZFBvbHlub21pYWwoXCJDXCIsIGNvbW1pdEMpO1xuXG4gICAgICAgIHJldHVybiAwO1xuICAgIH1cblxuICAgIGFzeW5jIGZ1bmN0aW9uIGNvbXB1dGVXaXJlUG9seW5vbWlhbHMoKSB7XG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5kZWJ1ZyhcIsK3wrfCtyBSZWFkaW5nIGRhdGEgZnJvbSB6a2V5IGZpbGVcIik7XG5cbiAgICAgICAgLy8gQnVpbGQgQSwgQiBhbmQgQyBldmFsdWF0aW9ucyBidWZmZXIgZnJvbSB6a2V5IGFuZCB3aXRuZXNzIGZpbGVzXG4gICAgICAgIGJ1ZmZlcnMuQSA9IG5ldyBCaWdCdWZmZXIoc0RvbWFpbik7XG4gICAgICAgIGJ1ZmZlcnMuQiA9IG5ldyBCaWdCdWZmZXIoc0RvbWFpbik7XG4gICAgICAgIGJ1ZmZlcnMuQyA9IG5ldyBCaWdCdWZmZXIoc0RvbWFpbik7XG5cbiAgICAgICAgLy8gUmVhZCB6a2V5IGZpbGUgdG8gdGhlIGJ1ZmZlcnNcbiAgICAgICAgY29uc3QgYU1hcEJ1ZmYgPSBhd2FpdCBiaW5GaWxlVXRpbHMucmVhZFNlY3Rpb24oZmRaS2V5LCB6a2V5U2VjdGlvbnMsIFpLRVlfUExfQV9NQVBfU0VDVElPTik7XG4gICAgICAgIGNvbnN0IGJNYXBCdWZmID0gYXdhaXQgYmluRmlsZVV0aWxzLnJlYWRTZWN0aW9uKGZkWktleSwgemtleVNlY3Rpb25zLCBaS0VZX1BMX0JfTUFQX1NFQ1RJT04pO1xuICAgICAgICBjb25zdCBjTWFwQnVmZiA9IGF3YWl0IGJpbkZpbGVVdGlscy5yZWFkU2VjdGlvbihmZFpLZXksIHprZXlTZWN0aW9ucywgWktFWV9QTF9DX01BUF9TRUNUSU9OKTtcblxuICAgICAgICAvLyBDb21wdXRlIGFsbCB3aXRuZXNzIGZyb20gc2lnbmFsIGlkcyBhbmQgc2V0IHRoZW0gdG8gQSxCICYgQyBidWZmZXJzXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgemtleS5uQ29uc3RyYWludHM7IGkrKykge1xuICAgICAgICAgICAgY29uc3QgaV9zRnIgPSBpICogbjhyO1xuICAgICAgICAgICAgY29uc3Qgb2Zmc2V0ID0gaSAqIDQ7XG5cbiAgICAgICAgICAgIC8vIENvbXB1dGUgQSB2YWx1ZSBmcm9tIGEgc2lnbmFsIGlkXG4gICAgICAgICAgICBjb25zdCBzaWduYWxJZEEgPSByZWFkVUludDMyKGFNYXBCdWZmLCBvZmZzZXQpO1xuICAgICAgICAgICAgYnVmZmVycy5BLnNldChnZXRXaXRuZXNzKHNpZ25hbElkQSksIGlfc0ZyKTtcblxuICAgICAgICAgICAgLy8gQ29tcHV0ZSBCIHZhbHVlIGZyb20gYSBzaWduYWwgaWRcbiAgICAgICAgICAgIGNvbnN0IHNpZ25hbElkQiA9IHJlYWRVSW50MzIoYk1hcEJ1ZmYsIG9mZnNldCk7XG4gICAgICAgICAgICBidWZmZXJzLkIuc2V0KGdldFdpdG5lc3Moc2lnbmFsSWRCKSwgaV9zRnIpO1xuXG4gICAgICAgICAgICAvLyBDb21wdXRlIEMgdmFsdWUgZnJvbSBhIHNpZ25hbCBpZFxuICAgICAgICAgICAgY29uc3Qgc2lnbmFsSWRDID0gcmVhZFVJbnQzMihjTWFwQnVmZiwgb2Zmc2V0KTtcbiAgICAgICAgICAgIGJ1ZmZlcnMuQy5zZXQoZ2V0V2l0bmVzcyhzaWduYWxJZEMpLCBpX3NGcik7XG4gICAgICAgIH1cblxuICAgICAgICBidWZmZXJzLkEgPSBhd2FpdCBGci5iYXRjaFRvTW9udGdvbWVyeShidWZmZXJzLkEpO1xuICAgICAgICBidWZmZXJzLkIgPSBhd2FpdCBGci5iYXRjaFRvTW9udGdvbWVyeShidWZmZXJzLkIpO1xuICAgICAgICBidWZmZXJzLkMgPSBhd2FpdCBGci5iYXRjaFRvTW9udGdvbWVyeShidWZmZXJzLkMpO1xuXG4gICAgICAgIC8vIENvbXB1dGUgdGhlIGNvZWZmaWNpZW50cyBvZiB0aGUgd2lyZSBwb2x5bm9taWFscyBhKFgpLCBiKFgpIGFuZCBjKFgpIGZyb20gQSxCICYgQyBidWZmZXJzXG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5kZWJ1ZyhcIsK3wrfCtyBDb21wdXRpbmcgQSBpZmZ0XCIpO1xuICAgICAgICBwb2x5bm9taWFscy5BID0gYXdhaXQgUG9seW5vbWlhbC5mcm9tRXZhbHVhdGlvbnMoYnVmZmVycy5BLCBjdXJ2ZSwgbG9nZ2VyKTtcbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmRlYnVnKFwiwrfCt8K3IENvbXB1dGluZyBCIGlmZnRcIik7XG4gICAgICAgIHBvbHlub21pYWxzLkIgPSBhd2FpdCBQb2x5bm9taWFsLmZyb21FdmFsdWF0aW9ucyhidWZmZXJzLkIsIGN1cnZlLCBsb2dnZXIpO1xuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZGVidWcoXCLCt8K3wrcgQ29tcHV0aW5nIEMgaWZmdFwiKTtcbiAgICAgICAgcG9seW5vbWlhbHMuQyA9IGF3YWl0IFBvbHlub21pYWwuZnJvbUV2YWx1YXRpb25zKGJ1ZmZlcnMuQywgY3VydmUsIGxvZ2dlcik7XG5cbiAgICAgICAgLy8gQ29tcHV0ZSBleHRlbmRlZCBldmFsdWF0aW9ucyBvZiBhKFgpLCBiKFgpIGFuZCBjKFgpIHBvbHlub21pYWxzXG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5kZWJ1ZyhcIsK3wrfCtyBDb21wdXRpbmcgQSBmZnRcIik7XG4gICAgICAgIGV2YWx1YXRpb25zLkEgPSBhd2FpdCBFdmFsdWF0aW9ucy5mcm9tUG9seW5vbWlhbChwb2x5bm9taWFscy5BLCA0LCBjdXJ2ZSwgbG9nZ2VyKTtcbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmRlYnVnKFwiwrfCt8K3IENvbXB1dGluZyBCIGZmdFwiKTtcbiAgICAgICAgZXZhbHVhdGlvbnMuQiA9IGF3YWl0IEV2YWx1YXRpb25zLmZyb21Qb2x5bm9taWFsKHBvbHlub21pYWxzLkIsIDQsIGN1cnZlLCBsb2dnZXIpO1xuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZGVidWcoXCLCt8K3wrcgQ29tcHV0aW5nIEMgZmZ0XCIpO1xuICAgICAgICBldmFsdWF0aW9ucy5DID0gYXdhaXQgRXZhbHVhdGlvbnMuZnJvbVBvbHlub21pYWwocG9seW5vbWlhbHMuQywgNCwgY3VydmUsIGxvZ2dlcik7XG5cbiAgICAgICAgLy8gQmxpbmQgYShYKSwgYihYKSBhbmQgYyhYKSBwb2x5bm9taWFscyBjb2VmZmljaWVudHMgd2l0aCBibGluZGluZyBzY2FsYXJzIGJcbiAgICAgICAgcG9seW5vbWlhbHMuQS5ibGluZENvZWZmaWNpZW50cyhbY2hhbGxlbmdlcy5iWzJdLCBjaGFsbGVuZ2VzLmJbMV1dKTtcbiAgICAgICAgcG9seW5vbWlhbHMuQi5ibGluZENvZWZmaWNpZW50cyhbY2hhbGxlbmdlcy5iWzRdLCBjaGFsbGVuZ2VzLmJbM11dKTtcbiAgICAgICAgcG9seW5vbWlhbHMuQy5ibGluZENvZWZmaWNpZW50cyhbY2hhbGxlbmdlcy5iWzZdLCBjaGFsbGVuZ2VzLmJbNV1dKTtcblxuICAgICAgICAvLyBDaGVjayBkZWdyZWVzXG4gICAgICAgIGlmIChwb2x5bm9taWFscy5BLmRlZ3JlZSgpID49IHprZXkuZG9tYWluU2l6ZSArIDIpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkEgUG9seW5vbWlhbCBpcyBub3Qgd2VsbCBjYWxjdWxhdGVkXCIpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChwb2x5bm9taWFscy5CLmRlZ3JlZSgpID49IHprZXkuZG9tYWluU2l6ZSArIDIpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkIgUG9seW5vbWlhbCBpcyBub3Qgd2VsbCBjYWxjdWxhdGVkXCIpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChwb2x5bm9taWFscy5DLmRlZ3JlZSgpID49IHprZXkuZG9tYWluU2l6ZSArIDIpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkMgUG9seW5vbWlhbCBpcyBub3Qgd2VsbCBjYWxjdWxhdGVkXCIpO1xuICAgICAgICB9ICAgICAgICBcbiAgICB9XG5cbiAgICBhc3luYyBmdW5jdGlvbiByb3VuZDIoKSB7XG4gICAgICAgIC8vIFNURVAgMi4xIC0gQ29tcHV0ZSBwZXJtdXRhdGlvbiBjaGFsbGVuZ2UgYmV0YSBhbmQgZ2FtbWEg4oiIIEZcbiAgICAgICAgLy8gQ29tcHV0ZSBwZXJtdXRhdGlvbiBjaGFsbGVuZ2UgYmV0YVxuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZGVidWcoXCI+IENvbXB1dGluZyBjaGFsbGVuZ2VzIGJldGEgYW5kIGdhbW1hXCIpO1xuICAgICAgICB0cmFuc2NyaXB0LnJlc2V0KCk7XG5cbiAgICAgICAgdHJhbnNjcmlwdC5hZGRQb2xDb21taXRtZW50KHprZXkuUW0pO1xuICAgICAgICB0cmFuc2NyaXB0LmFkZFBvbENvbW1pdG1lbnQoemtleS5RbCk7XG4gICAgICAgIHRyYW5zY3JpcHQuYWRkUG9sQ29tbWl0bWVudCh6a2V5LlFyKTtcbiAgICAgICAgdHJhbnNjcmlwdC5hZGRQb2xDb21taXRtZW50KHprZXkuUW8pO1xuICAgICAgICB0cmFuc2NyaXB0LmFkZFBvbENvbW1pdG1lbnQoemtleS5RYyk7XG4gICAgICAgIHRyYW5zY3JpcHQuYWRkUG9sQ29tbWl0bWVudCh6a2V5LlMxKTtcbiAgICAgICAgdHJhbnNjcmlwdC5hZGRQb2xDb21taXRtZW50KHprZXkuUzIpO1xuICAgICAgICB0cmFuc2NyaXB0LmFkZFBvbENvbW1pdG1lbnQoemtleS5TMyk7XG5cbiAgICAgICAgLy8gQWRkIEEgdG8gdGhlIHRyYW5zY3JpcHRcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB6a2V5Lm5QdWJsaWM7IGkrKykge1xuICAgICAgICAgICAgdHJhbnNjcmlwdC5hZGRTY2FsYXIoYnVmZmVycy5BLnNsaWNlKGkgKiBuOHIsIGkgKiBuOHIgKyBuOHIpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEFkZCBBLCBCLCBDIHRvIHRoZSB0cmFuc2NyaXB0XG4gICAgICAgIHRyYW5zY3JpcHQuYWRkUG9sQ29tbWl0bWVudChwcm9vZi5nZXRQb2x5bm9taWFsKFwiQVwiKSk7XG4gICAgICAgIHRyYW5zY3JpcHQuYWRkUG9sQ29tbWl0bWVudChwcm9vZi5nZXRQb2x5bm9taWFsKFwiQlwiKSk7XG4gICAgICAgIHRyYW5zY3JpcHQuYWRkUG9sQ29tbWl0bWVudChwcm9vZi5nZXRQb2x5bm9taWFsKFwiQ1wiKSk7XG5cbiAgICAgICAgY2hhbGxlbmdlcy5iZXRhID0gdHJhbnNjcmlwdC5nZXRDaGFsbGVuZ2UoKTtcbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmRlYnVnKFwiwrfCt8K3IGNoYWxsZW5nZXMuYmV0YTogXCIgKyBGci50b1N0cmluZyhjaGFsbGVuZ2VzLmJldGEsIDE2KSk7XG5cbiAgICAgICAgLy8gQ29tcHV0ZSBwZXJtdXRhdGlvbiBjaGFsbGVuZ2UgZ2FtbWFcbiAgICAgICAgdHJhbnNjcmlwdC5yZXNldCgpO1xuICAgICAgICB0cmFuc2NyaXB0LmFkZFNjYWxhcihjaGFsbGVuZ2VzLmJldGEpO1xuICAgICAgICBjaGFsbGVuZ2VzLmdhbW1hID0gdHJhbnNjcmlwdC5nZXRDaGFsbGVuZ2UoKTtcbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmRlYnVnKFwiwrfCt8K3IGNoYWxsZW5nZXMuZ2FtbWE6IFwiICsgRnIudG9TdHJpbmcoY2hhbGxlbmdlcy5nYW1tYSwgMTYpKTtcbiAgICBcbiAgICAgICAgLy8gU1RFUCAyLjIgLSBDb21wdXRlIHBlcm11dGF0aW9uIHBvbHlub21pYWwgeihYKVxuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZGVidWcoXCI+IENvbXB1dGluZyBaIHBvbHlub21pYWxcIik7XG4gICAgICAgIGF3YWl0IGNvbXB1dGVaKCk7XG5cbiAgICAgICAgLy8gU1RFUCAyLjMgLSBDb21wdXRlIHBlcm11dGF0aW9uIFt6XV8xXG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5kZWJ1ZyhcIj4gQ29tcHV0aW5nIFogTVNNXCIpO1xuICAgICAgICBsZXQgY29tbWl0WiA9IGF3YWl0IHBvbHlub21pYWxzLloubXVsdGlFeHBvbmVudGlhdGlvbihQVGF1LCBcIlpcIik7XG5cbiAgICAgICAgLy8gU2Vjb25kIG91dHB1dCBvZiB0aGUgcHJvdmVyIGlzIChbWl1fMSlcbiAgICAgICAgcHJvb2YuYWRkUG9seW5vbWlhbChcIlpcIiwgY29tbWl0Wik7XG4gICAgfVxuXG4gICAgYXN5bmMgZnVuY3Rpb24gY29tcHV0ZVooKSB7XG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5kZWJ1ZyhcIsK3wrfCtyBDb21wdXRpbmcgWiBldmFsdWF0aW9uc1wiKTtcblxuICAgICAgICBsZXQgbnVtQXJyID0gbmV3IEJpZ0J1ZmZlcihzRG9tYWluKTtcbiAgICAgICAgbGV0IGRlbkFyciA9IG5ldyBCaWdCdWZmZXIoc0RvbWFpbik7XG5cbiAgICAgICAgLy8gU2V0IHRoZSBmaXJzdCB2YWx1ZXMgdG8gMVxuICAgICAgICBudW1BcnIuc2V0KEZyLm9uZSwgMCk7XG4gICAgICAgIGRlbkFyci5zZXQoRnIub25lLCAwKTtcblxuICAgICAgICAvLyBTZXQgaW5pdGlhbCBvbWVnYVxuICAgICAgICBsZXQgdyA9IEZyLm9uZTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB6a2V5LmRvbWFpblNpemU7IGkrKykge1xuICAgICAgICAgICAgY29uc3QgaV9uOHIgPSBpICogbjhyO1xuICAgICAgICAgICAgXG4gICAgICAgICAgICBjb25zdCBhID0gYnVmZmVycy5BLnNsaWNlKGlfbjhyLCBpX244ciArIG44cik7XG4gICAgICAgICAgICBjb25zdCBiID0gYnVmZmVycy5CLnNsaWNlKGlfbjhyLCBpX244ciArIG44cik7XG4gICAgICAgICAgICBjb25zdCBjID0gYnVmZmVycy5DLnNsaWNlKGlfbjhyLCBpX244ciArIG44cik7XG5cbiAgICAgICAgICAgIC8vIFooWCkgOj0gbnVtQXJyIC8gZGVuQXJyXG4gICAgICAgICAgICAvLyBudW1BcnIgOj0gKGEgKyBiZXRhwrfPiSArIGdhbW1hKShiICsgYmV0YcK3z4nCt2sxICsgZ2FtbWEpKGMgKyBiZXRhwrfPicK3azIgKyBnYW1tYSlcbiAgICAgICAgICAgIGNvbnN0IGJldGF3ID0gRnIubXVsKGNoYWxsZW5nZXMuYmV0YSwgdyk7XG5cbiAgICAgICAgICAgIGxldCBuMSA9IEZyLmFkZChhLCBiZXRhdyk7XG4gICAgICAgICAgICBuMSA9IEZyLmFkZChuMSwgY2hhbGxlbmdlcy5nYW1tYSk7XG5cbiAgICAgICAgICAgIGxldCBuMiA9IEZyLmFkZChiLCBGci5tdWwoemtleS5rMSwgYmV0YXcpKTtcbiAgICAgICAgICAgIG4yID0gRnIuYWRkKG4yLCBjaGFsbGVuZ2VzLmdhbW1hKTtcblxuICAgICAgICAgICAgbGV0IG4zID0gRnIuYWRkKGMsIEZyLm11bCh6a2V5LmsyLCBiZXRhdykpO1xuICAgICAgICAgICAgbjMgPSBGci5hZGQobjMsIGNoYWxsZW5nZXMuZ2FtbWEpO1xuXG4gICAgICAgICAgICBsZXQgbnVtID0gRnIubXVsKG4xLCBGci5tdWwobjIsIG4zKSk7XG5cbiAgICAgICAgICAgIC8vIGRlbkFyciA6PSAoYSArIGJldGHCt3NpZ21hMSArIGdhbW1hKShiICsgYmV0YcK3c2lnbWEyICsgZ2FtbWEpKGMgKyBiZXRhwrdzaWdtYTMgKyBnYW1tYSlcbiAgICAgICAgICAgIGxldCBkMSA9IEZyLmFkZChhLCBGci5tdWwoZXZhbHVhdGlvbnMuU2lnbWExLmdldEV2YWx1YXRpb24oaSAqIDQpLCBjaGFsbGVuZ2VzLmJldGEpKTtcbiAgICAgICAgICAgIGQxID0gRnIuYWRkKGQxLCBjaGFsbGVuZ2VzLmdhbW1hKTtcblxuICAgICAgICAgICAgbGV0IGQyID0gRnIuYWRkKGIsIEZyLm11bChldmFsdWF0aW9ucy5TaWdtYTIuZ2V0RXZhbHVhdGlvbihpICogNCksIGNoYWxsZW5nZXMuYmV0YSkpO1xuICAgICAgICAgICAgZDIgPSBGci5hZGQoZDIsIGNoYWxsZW5nZXMuZ2FtbWEpO1xuXG4gICAgICAgICAgICBsZXQgZDMgPSBGci5hZGQoYywgRnIubXVsKGV2YWx1YXRpb25zLlNpZ21hMy5nZXRFdmFsdWF0aW9uKGkgKiA0KSwgY2hhbGxlbmdlcy5iZXRhKSk7XG4gICAgICAgICAgICBkMyA9IEZyLmFkZChkMywgY2hhbGxlbmdlcy5nYW1tYSk7XG5cbiAgICAgICAgICAgIGxldCBkZW4gPSBGci5tdWwoZDEsIEZyLm11bChkMiwgZDMpKTtcblxuICAgICAgICAgICAgLy8gTXVsdGlwbHkgY3VycmVudCBudW0gdmFsdWUgd2l0aCB0aGUgcHJldmlvdXMgb25lIHNhdmVkIGluIG51bUFyclxuICAgICAgICAgICAgbnVtID0gRnIubXVsKG51bUFyci5zbGljZShpX244ciwgaV9uOHIgKyBuOHIpLCBudW0pO1xuICAgICAgICAgICAgbnVtQXJyLnNldChudW0sICgoaSArIDEpICUgemtleS5kb21haW5TaXplKSAqIG44cik7XG5cbiAgICAgICAgICAgIC8vIE11bHRpcGx5IGN1cnJlbnQgZGVuIHZhbHVlIHdpdGggdGhlIHByZXZpb3VzIG9uZSBzYXZlZCBpbiBkZW5BcnJcbiAgICAgICAgICAgIGRlbiA9IEZyLm11bChkZW5BcnIuc2xpY2UoaV9uOHIsIGlfbjhyICsgbjhyKSwgZGVuKTtcbiAgICAgICAgICAgIGRlbkFyci5zZXQoZGVuLCAoKGkgKyAxKSAlIHprZXkuZG9tYWluU2l6ZSkgKiBuOHIpO1xuXG4gICAgICAgICAgICB3ID0gRnIubXVsKHcsIEZyLndbemtleS5wb3dlcl0pO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gQ29tcHV0ZSB0aGUgaW52ZXJzZSBvZiBkZW5BcnIgdG8gY29tcHV0ZSBpbiB0aGUgbmV4dCBjb21tYW5kIHRoZVxuICAgICAgICAvLyBkaXZpc2lvbiBudW1BcnIvZGVuQXJyIGJ5IG11bHRpcGx5aW5nIG51bSDCtyAxL2RlbkFyclxuICAgICAgICBkZW5BcnIgPSBhd2FpdCBGci5iYXRjaEludmVyc2UoZGVuQXJyKTtcblxuICAgICAgICAvLyBUT0RPOiBEbyBpdCBpbiBhc3NlbWJseSBhbmQgaW4gcGFyYWxsZWxcbiAgICAgICAgLy8gTXVsdGlwbHkgbnVtQXJyIMK3IGRlbkFyciB3aGVyZSBkZW5BcnIgd2FzIGludmVydGVkIGluIHRoZSBwcmV2aW91cyBjb21tYW5kXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgemtleS5kb21haW5TaXplOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IGlfc0ZyID0gaSAqIG44cjtcblxuICAgICAgICAgICAgY29uc3QgeiA9IEZyLm11bChudW1BcnIuc2xpY2UoaV9zRnIsIGlfc0ZyICsgbjhyKSwgZGVuQXJyLnNsaWNlKGlfc0ZyLCBpX3NGciArIG44cikpO1xuICAgICAgICAgICAgbnVtQXJyLnNldCh6LCBpX3NGcik7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBGcm9tIG5vdyBvbiB0aGUgdmFsdWVzIHNhdmVkIG9uIG51bUFyciB3aWxsIGJlIFooWCkgYnVmZmVyXG4gICAgICAgIGJ1ZmZlcnMuWiA9IG51bUFycjtcblxuICAgICAgICBpZiAoIUZyLmVxKG51bUFyci5zbGljZSgwLCBuOHIpLCBGci5vbmUpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJDb3B5IGNvbnN0cmFpbnRzIGRvZXMgbm90IG1hdGNoXCIpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gQ29tcHV0ZSBwb2x5bm9taWFsIGNvZWZmaWNpZW50cyB6KFgpIGZyb20gYnVmZmVycy5aXG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5kZWJ1ZyhcIsK3wrfCtyBDb21wdXRpbmcgWiBpZmZ0XCIpO1xuICAgICAgICBwb2x5bm9taWFscy5aID0gYXdhaXQgUG9seW5vbWlhbC5mcm9tRXZhbHVhdGlvbnMoYnVmZmVycy5aLCBjdXJ2ZSwgbG9nZ2VyKTtcblxuICAgICAgICAvLyBDb21wdXRlIGV4dGVuZGVkIGV2YWx1YXRpb25zIG9mIHooWCkgcG9seW5vbWlhbFxuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZGVidWcoXCLCt8K3wrcgQ29tcHV0aW5nIFogZmZ0XCIpO1xuICAgICAgICBldmFsdWF0aW9ucy5aID0gYXdhaXQgRXZhbHVhdGlvbnMuZnJvbVBvbHlub21pYWwocG9seW5vbWlhbHMuWiwgNCwgY3VydmUsIGxvZ2dlcik7XG5cbiAgICAgICAgLy8gQmxpbmQgeihYKSBwb2x5bm9taWFsIGNvZWZmaWNpZW50cyB3aXRoIGJsaW5kaW5nIHNjYWxhcnMgYlxuICAgICAgICBwb2x5bm9taWFscy5aLmJsaW5kQ29lZmZpY2llbnRzKFtjaGFsbGVuZ2VzLmJbOV0sIGNoYWxsZW5nZXMuYls4XSwgY2hhbGxlbmdlcy5iWzddXSk7XG5cbiAgICAgICAgLy8gQ2hlY2sgZGVncmVlXG4gICAgICAgIGlmIChwb2x5bm9taWFscy5aLmRlZ3JlZSgpID49IHprZXkuZG9tYWluU2l6ZSArIDMpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIlogUG9seW5vbWlhbCBpcyBub3Qgd2VsbCBjYWxjdWxhdGVkXCIpO1xuICAgICAgICB9XG5cbiAgICAgICAgZGVsZXRlIGJ1ZmZlcnMuWjtcbiAgICB9XG5cbiAgICBhc3luYyBmdW5jdGlvbiByb3VuZDMoKSB7XG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5kZWJ1ZyhcIj4gQ29tcHV0aW5nIGNoYWxsZW5nZSBhbHBoYVwiKTtcblxuICAgICAgICAvLyBTVEVQIDMuMSAtIENvbXB1dGUgZXZhbHVhdGlvbiBjaGFsbGVuZ2UgYWxwaGEg4oiIIEZcbiAgICAgICAgdHJhbnNjcmlwdC5yZXNldCgpO1xuICAgICAgICB0cmFuc2NyaXB0LmFkZFNjYWxhcihjaGFsbGVuZ2VzLmJldGEpO1xuICAgICAgICB0cmFuc2NyaXB0LmFkZFNjYWxhcihjaGFsbGVuZ2VzLmdhbW1hKTtcbiAgICAgICAgdHJhbnNjcmlwdC5hZGRQb2xDb21taXRtZW50KHByb29mLmdldFBvbHlub21pYWwoXCJaXCIpKTtcblxuICAgICAgICBjaGFsbGVuZ2VzLmFscGhhID0gdHJhbnNjcmlwdC5nZXRDaGFsbGVuZ2UoKTtcbiAgICAgICAgY2hhbGxlbmdlcy5hbHBoYTIgPSBGci5zcXVhcmUoY2hhbGxlbmdlcy5hbHBoYSk7XG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5kZWJ1ZyhcIsK3wrfCtyBjaGFsbGVuZ2VzLmFscGhhOiBcIiArIEZyLnRvU3RyaW5nKGNoYWxsZW5nZXMuYWxwaGEsIDE2KSk7XG5cbiAgICAgICAgLy8gQ29tcHV0ZSBxdW90aWVudCBwb2x5bm9taWFsIFQoWClcbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmRlYnVnKFwiPiBDb21wdXRpbmcgVCBwb2x5bm9taWFsXCIpO1xuICAgICAgICBhd2FpdCBjb21wdXRlVCgpO1xuXG4gICAgICAgIC8vIENvbXB1dGUgW1QxXV8xLCBbVDJdXzEsIFtUM11fMVxuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZGVidWcoXCI+IENvbXB1dGluZyBUIE1TTVwiKTtcbiAgICAgICAgbGV0IGNvbW1pdFQxID0gYXdhaXQgcG9seW5vbWlhbHMuVDEubXVsdGlFeHBvbmVudGlhdGlvbihQVGF1LCBcIlQxXCIpO1xuICAgICAgICBsZXQgY29tbWl0VDIgPSBhd2FpdCBwb2x5bm9taWFscy5UMi5tdWx0aUV4cG9uZW50aWF0aW9uKFBUYXUsIFwiVDJcIik7XG4gICAgICAgIGxldCBjb21taXRUMyA9IGF3YWl0IHBvbHlub21pYWxzLlQzLm11bHRpRXhwb25lbnRpYXRpb24oUFRhdSwgXCJUM1wiKTtcblxuICAgICAgICAvLyBUaGlyZCBvdXRwdXQgb2YgdGhlIHByb3ZlciBpcyAoW1QxXV8xLCBbVDJdXzEsIFtUM11fMSlcbiAgICAgICAgcHJvb2YuYWRkUG9seW5vbWlhbChcIlQxXCIsIGNvbW1pdFQxKTtcbiAgICAgICAgcHJvb2YuYWRkUG9seW5vbWlhbChcIlQyXCIsIGNvbW1pdFQyKTtcbiAgICAgICAgcHJvb2YuYWRkUG9seW5vbWlhbChcIlQzXCIsIGNvbW1pdFQzKTsgICAgICAgIFxuICAgIH1cblxuICAgIGFzeW5jIGZ1bmN0aW9uIGNvbXB1dGVUKCkge1xuICAgICAgICBpZiAobG9nZ2VyKVxuICAgICAgICAgICAgbG9nZ2VyLmRlYnVnKGDCt8K3wrcgUmVhZGluZyBzZWN0aW9ucyAke1pLRVlfUExfUUxfU0VDVElPTn0sICR7WktFWV9QTF9RUl9TRUNUSU9OfWAgK1xuICAgICAgICAgICAgICAgIGAsICR7WktFWV9QTF9RTV9TRUNUSU9OfSwgJHtaS0VZX1BMX1FPX1NFQ1RJT059LCAke1pLRVlfUExfUUNfU0VDVElPTn0uIFEgc2VsZWN0b3JzYCk7XG4gICAgICAgIC8vIFJlc2VydmUgbWVtb3J5IGZvciBRJ3MgZXZhbHVhdGlvbnNcbiAgICAgICAgZXZhbHVhdGlvbnMuUUwgPSBuZXcgRXZhbHVhdGlvbnMobmV3IEJpZ0J1ZmZlcihzRG9tYWluICogNCksIGN1cnZlLCBsb2dnZXIpO1xuICAgICAgICBldmFsdWF0aW9ucy5RUiA9IG5ldyBFdmFsdWF0aW9ucyhuZXcgQmlnQnVmZmVyKHNEb21haW4gKiA0KSwgY3VydmUsIGxvZ2dlcik7XG4gICAgICAgIGV2YWx1YXRpb25zLlFNID0gbmV3IEV2YWx1YXRpb25zKG5ldyBCaWdCdWZmZXIoc0RvbWFpbiAqIDQpLCBjdXJ2ZSwgbG9nZ2VyKTtcbiAgICAgICAgZXZhbHVhdGlvbnMuUU8gPSBuZXcgRXZhbHVhdGlvbnMobmV3IEJpZ0J1ZmZlcihzRG9tYWluICogNCksIGN1cnZlLCBsb2dnZXIpO1xuICAgICAgICBldmFsdWF0aW9ucy5RQyA9IG5ldyBFdmFsdWF0aW9ucyhuZXcgQmlnQnVmZmVyKHNEb21haW4gKiA0KSwgY3VydmUsIGxvZ2dlcik7XG5cbiAgICAgICAgLy8gUmVhZCBRJ3MgZXZhbHVhdGlvbnMgZnJvbSB6a2V5IGZpbGVcbiAgICAgICAgYXdhaXQgZmRaS2V5LnJlYWRUb0J1ZmZlcihldmFsdWF0aW9ucy5RTC5ldmFsLCAwLCBzRG9tYWluICogNCwgemtleVNlY3Rpb25zW1pLRVlfUExfUUxfU0VDVElPTl1bMF0ucCArIHNEb21haW4pO1xuICAgICAgICBhd2FpdCBmZFpLZXkucmVhZFRvQnVmZmVyKGV2YWx1YXRpb25zLlFSLmV2YWwsIDAsIHNEb21haW4gKiA0LCB6a2V5U2VjdGlvbnNbWktFWV9QTF9RUl9TRUNUSU9OXVswXS5wICsgc0RvbWFpbik7XG4gICAgICAgIGF3YWl0IGZkWktleS5yZWFkVG9CdWZmZXIoZXZhbHVhdGlvbnMuUU0uZXZhbCwgMCwgc0RvbWFpbiAqIDQsIHprZXlTZWN0aW9uc1taS0VZX1BMX1FNX1NFQ1RJT05dWzBdLnAgKyBzRG9tYWluKTtcbiAgICAgICAgYXdhaXQgZmRaS2V5LnJlYWRUb0J1ZmZlcihldmFsdWF0aW9ucy5RTy5ldmFsLCAwLCBzRG9tYWluICogNCwgemtleVNlY3Rpb25zW1pLRVlfUExfUU9fU0VDVElPTl1bMF0ucCArIHNEb21haW4pO1xuICAgICAgICBhd2FpdCBmZFpLZXkucmVhZFRvQnVmZmVyKGV2YWx1YXRpb25zLlFDLmV2YWwsIDAsIHNEb21haW4gKiA0LCB6a2V5U2VjdGlvbnNbWktFWV9QTF9RQ19TRUNUSU9OXVswXS5wICsgc0RvbWFpbik7XG5cbiAgICAgICAgLy8gUmVhZCBMYWdyYW5nZSBwb2x5bm9taWFscyAmIGV2YWx1YXRpb25zIGZyb20gemtleSBmaWxlXG4gICAgICAgIGV2YWx1YXRpb25zLkxhZ3JhbmdlID0gbmV3IEV2YWx1YXRpb25zKG5ldyBCaWdCdWZmZXIoc0RvbWFpbiAqIDQgKiB6a2V5Lm5QdWJsaWMpLCBjdXJ2ZSwgbG9nZ2VyKTtcblxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHprZXkublB1YmxpYzsgaSsrKSB7XG4gICAgICAgICAgICBhd2FpdCBmZFpLZXkucmVhZFRvQnVmZmVyKGV2YWx1YXRpb25zLkxhZ3JhbmdlLmV2YWwsIGkgKiBzRG9tYWluICogNCwgc0RvbWFpbiAqIDQsIHprZXlTZWN0aW9uc1taS0VZX1BMX0xBR1JBTkdFX1NFQ1RJT05dWzBdLnAgKyBpICogNSAqIHNEb21haW4gKyBzRG9tYWluKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGJ1ZmZlcnMuVCA9IG5ldyBCaWdCdWZmZXIoc0RvbWFpbiAqIDQpO1xuICAgICAgICBidWZmZXJzLlR6ID0gbmV3IEJpZ0J1ZmZlcihzRG9tYWluICogNCk7XG5cbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmRlYnVnKFwiwrfCt8K3IENvbXB1dGluZyBUIGV2YWx1YXRpb25zXCIpO1xuXG4gICAgICAgIGxldCB3ID0gRnIub25lO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHprZXkuZG9tYWluU2l6ZSAqIDQ7IGkrKykge1xuICAgICAgICAgICAgaWYgKGxvZ2dlciAmJiAoMCAhPT0gaSkgJiYgKGkgJSAxMDAwMDAgPT09IDApKVxuICAgICAgICAgICAgICAgIGxvZ2dlci5kZWJ1ZyhgICAgICAgVCBldmFsdWF0aW9uICR7aX0vJHt6a2V5LmRvbWFpblNpemUgKiA0fWApO1xuXG4gICAgICAgICAgICBjb25zdCBhID0gZXZhbHVhdGlvbnMuQS5nZXRFdmFsdWF0aW9uKGkpO1xuICAgICAgICAgICAgY29uc3QgYiA9IGV2YWx1YXRpb25zLkIuZ2V0RXZhbHVhdGlvbihpKTtcbiAgICAgICAgICAgIGNvbnN0IGMgPSBldmFsdWF0aW9ucy5DLmdldEV2YWx1YXRpb24oaSk7XG4gICAgICAgICAgICBjb25zdCB6ID0gZXZhbHVhdGlvbnMuWi5nZXRFdmFsdWF0aW9uKGkpO1xuICAgICAgICAgICAgY29uc3QgencgPSBldmFsdWF0aW9ucy5aLmdldEV2YWx1YXRpb24oKHprZXkuZG9tYWluU2l6ZSAqIDQgKyA0ICsgaSkgJSAoemtleS5kb21haW5TaXplICogNCkpO1xuXG4gICAgICAgICAgICBjb25zdCBxbSA9IGV2YWx1YXRpb25zLlFNLmdldEV2YWx1YXRpb24oaSk7XG4gICAgICAgICAgICBjb25zdCBxbCA9IGV2YWx1YXRpb25zLlFMLmdldEV2YWx1YXRpb24oaSk7XG4gICAgICAgICAgICBjb25zdCBxciA9IGV2YWx1YXRpb25zLlFSLmdldEV2YWx1YXRpb24oaSk7XG4gICAgICAgICAgICBjb25zdCBxbyA9IGV2YWx1YXRpb25zLlFPLmdldEV2YWx1YXRpb24oaSk7XG4gICAgICAgICAgICBjb25zdCBxYyA9IGV2YWx1YXRpb25zLlFDLmdldEV2YWx1YXRpb24oaSk7XG4gICAgICAgICAgICBjb25zdCBzMSA9IGV2YWx1YXRpb25zLlNpZ21hMS5nZXRFdmFsdWF0aW9uKGkpO1xuICAgICAgICAgICAgY29uc3QgczIgPSBldmFsdWF0aW9ucy5TaWdtYTIuZ2V0RXZhbHVhdGlvbihpKTtcbiAgICAgICAgICAgIGNvbnN0IHMzID0gZXZhbHVhdGlvbnMuU2lnbWEzLmdldEV2YWx1YXRpb24oaSk7XG5cbiAgICAgICAgICAgIGNvbnN0IGFwID0gRnIuYWRkKGNoYWxsZW5nZXMuYlsyXSwgRnIubXVsKGNoYWxsZW5nZXMuYlsxXSwgdykpO1xuICAgICAgICAgICAgY29uc3QgYnAgPSBGci5hZGQoY2hhbGxlbmdlcy5iWzRdLCBGci5tdWwoY2hhbGxlbmdlcy5iWzNdLCB3KSk7XG4gICAgICAgICAgICBjb25zdCBjcCA9IEZyLmFkZChjaGFsbGVuZ2VzLmJbNl0sIEZyLm11bChjaGFsbGVuZ2VzLmJbNV0sIHcpKTtcblxuICAgICAgICAgICAgY29uc3QgdzIgPSBGci5zcXVhcmUodyk7XG4gICAgICAgICAgICBjb25zdCB6cCA9IEZyLmFkZChGci5hZGQoRnIubXVsKGNoYWxsZW5nZXMuYls3XSwgdzIpLCBGci5tdWwoY2hhbGxlbmdlcy5iWzhdLCB3KSksIGNoYWxsZW5nZXMuYls5XSk7XG4gICAgICAgICAgICBjb25zdCB3VyA9IEZyLm11bCh3LCBGci53W3prZXkucG93ZXJdKTtcbiAgICAgICAgICAgIGNvbnN0IHdXMiA9IEZyLnNxdWFyZSh3Vyk7XG4gICAgICAgICAgICBjb25zdCB6V3AgPSBGci5hZGQoRnIuYWRkKEZyLm11bChjaGFsbGVuZ2VzLmJbN10sIHdXMiksIEZyLm11bChjaGFsbGVuZ2VzLmJbOF0sIHdXKSksIGNoYWxsZW5nZXMuYls5XSk7XG5cbiAgICAgICAgICAgIGxldCBwaSA9IEZyLnplcm87XG4gICAgICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHprZXkublB1YmxpYzsgaisrKSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgb2Zmc2V0ID0gKGogKiA0ICogemtleS5kb21haW5TaXplKSArIGk7XG5cbiAgICAgICAgICAgICAgICBjb25zdCBsUG9sID0gZXZhbHVhdGlvbnMuTGFncmFuZ2UuZ2V0RXZhbHVhdGlvbihvZmZzZXQpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGFWYWwgPSBidWZmZXJzLkEuc2xpY2UoaiAqIG44ciwgKGogKyAxKSAqIG44cik7XG5cbiAgICAgICAgICAgICAgICBwaSA9IEZyLnN1YihwaSwgRnIubXVsKGxQb2wsIGFWYWwpKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gZTEgOj0gYShYKWIoWClxTShYKSArIGEoWClxTChYKSArIGIoWClxUihYKSArIGMoWClxTyhYKSArIFBJKFgpICsgcUMoWClcbiAgICAgICAgICAgIGxldCBbZTEsIGUxel0gPSBNdWxaLm11bDIoYSwgYiwgYXAsIGJwLCBpICUgNCwgRnIpO1xuICAgICAgICAgICAgZTEgPSBGci5tdWwoZTEsIHFtKTtcbiAgICAgICAgICAgIGUxeiA9IEZyLm11bChlMXosIHFtKTtcblxuICAgICAgICAgICAgZTEgPSBGci5hZGQoZTEsIEZyLm11bChhLCBxbCkpO1xuICAgICAgICAgICAgZTF6ID0gRnIuYWRkKGUxeiwgRnIubXVsKGFwLCBxbCkpO1xuXG4gICAgICAgICAgICBlMSA9IEZyLmFkZChlMSwgRnIubXVsKGIsIHFyKSk7XG4gICAgICAgICAgICBlMXogPSBGci5hZGQoZTF6LCBGci5tdWwoYnAsIHFyKSk7XG5cbiAgICAgICAgICAgIGUxID0gRnIuYWRkKGUxLCBGci5tdWwoYywgcW8pKTtcbiAgICAgICAgICAgIGUxeiA9IEZyLmFkZChlMXosIEZyLm11bChjcCwgcW8pKTtcblxuICAgICAgICAgICAgZTEgPSBGci5hZGQoZTEsIHBpKTtcbiAgICAgICAgICAgIGUxID0gRnIuYWRkKGUxLCBxYyk7XG5cbiAgICAgICAgICAgIC8vIGUyIDo9IM6xWyhhKFgpICsgzrJYICsgzrMpKGIoWCkgKyDOsmsxWCArIM6zKShjKFgpICsgzrJrMlggKyDOsyl6KFgpXVxuICAgICAgICAgICAgY29uc3QgYmV0YXcgPSBGci5tdWwoY2hhbGxlbmdlcy5iZXRhLCB3KTtcbiAgICAgICAgICAgIGxldCBlMmEgPSBhO1xuICAgICAgICAgICAgZTJhID0gRnIuYWRkKGUyYSwgYmV0YXcpO1xuICAgICAgICAgICAgZTJhID0gRnIuYWRkKGUyYSwgY2hhbGxlbmdlcy5nYW1tYSk7XG5cbiAgICAgICAgICAgIGxldCBlMmIgPSBiO1xuICAgICAgICAgICAgZTJiID0gRnIuYWRkKGUyYiwgRnIubXVsKGJldGF3LCB6a2V5LmsxKSk7XG4gICAgICAgICAgICBlMmIgPSBGci5hZGQoZTJiLCBjaGFsbGVuZ2VzLmdhbW1hKTtcblxuICAgICAgICAgICAgbGV0IGUyYyA9IGM7XG4gICAgICAgICAgICBlMmMgPSBGci5hZGQoZTJjLCBGci5tdWwoYmV0YXcsIHprZXkuazIpKTtcbiAgICAgICAgICAgIGUyYyA9IEZyLmFkZChlMmMsIGNoYWxsZW5nZXMuZ2FtbWEpO1xuXG4gICAgICAgICAgICBsZXQgZTJkID0gejtcblxuICAgICAgICAgICAgbGV0IFtlMiwgZTJ6XSA9IE11bFoubXVsNChlMmEsIGUyYiwgZTJjLCBlMmQsIGFwLCBicCwgY3AsIHpwLCBpICUgNCwgRnIpO1xuICAgICAgICAgICAgZTIgPSBGci5tdWwoZTIsIGNoYWxsZW5nZXMuYWxwaGEpO1xuICAgICAgICAgICAgZTJ6ID0gRnIubXVsKGUyeiwgY2hhbGxlbmdlcy5hbHBoYSk7XG5cbiAgICAgICAgICAgIC8vIGUzIDo9IM6xWyhhKFgpICsgzrJTz4MxKFgpICsgzrMpKGIoWCkgKyDOslPPgzIoWCkgKyDOsykoYyhYKSArIM6yU8+DMyhYKSArIM6zKXooWM+JKV1cbiAgICAgICAgICAgIGxldCBlM2EgPSBhO1xuICAgICAgICAgICAgZTNhID0gRnIuYWRkKGUzYSwgRnIubXVsKGNoYWxsZW5nZXMuYmV0YSwgczEpKTtcbiAgICAgICAgICAgIGUzYSA9IEZyLmFkZChlM2EsIGNoYWxsZW5nZXMuZ2FtbWEpO1xuXG4gICAgICAgICAgICBsZXQgZTNiID0gYjtcbiAgICAgICAgICAgIGUzYiA9IEZyLmFkZChlM2IsIEZyLm11bChjaGFsbGVuZ2VzLmJldGEsIHMyKSk7XG4gICAgICAgICAgICBlM2IgPSBGci5hZGQoZTNiLCBjaGFsbGVuZ2VzLmdhbW1hKTtcblxuICAgICAgICAgICAgbGV0IGUzYyA9IGM7XG4gICAgICAgICAgICBlM2MgPSBGci5hZGQoZTNjLCBGci5tdWwoY2hhbGxlbmdlcy5iZXRhLCBzMykpO1xuICAgICAgICAgICAgZTNjID0gRnIuYWRkKGUzYywgY2hhbGxlbmdlcy5nYW1tYSk7XG5cbiAgICAgICAgICAgIGxldCBlM2QgPSB6dztcbiAgICAgICAgICAgIGxldCBbZTMsIGUzel0gPSBNdWxaLm11bDQoZTNhLCBlM2IsIGUzYywgZTNkLCBhcCwgYnAsIGNwLCB6V3AsIGkgJSA0LCBGcik7XG5cbiAgICAgICAgICAgIGUzID0gRnIubXVsKGUzLCBjaGFsbGVuZ2VzLmFscGhhKTtcbiAgICAgICAgICAgIGUzeiA9IEZyLm11bChlM3osIGNoYWxsZW5nZXMuYWxwaGEpO1xuXG4gICAgICAgICAgICAvLyBlNCA6PSDOsV4yKHooWCniiJIxKUwxKFgpXG4gICAgICAgICAgICBsZXQgZTQgPSBGci5zdWIoeiwgRnIub25lKTtcbiAgICAgICAgICAgIGU0ID0gRnIubXVsKGU0LCBldmFsdWF0aW9ucy5MYWdyYW5nZS5nZXRFdmFsdWF0aW9uKGkpKTtcbiAgICAgICAgICAgIGU0ID0gRnIubXVsKGU0LCBjaGFsbGVuZ2VzLmFscGhhMik7XG5cbiAgICAgICAgICAgIGxldCBlNHogPSBGci5tdWwoenAsIGV2YWx1YXRpb25zLkxhZ3JhbmdlLmdldEV2YWx1YXRpb24oaSkpO1xuICAgICAgICAgICAgZTR6ID0gRnIubXVsKGU0eiwgY2hhbGxlbmdlcy5hbHBoYTIpO1xuXG5cbiAgICAgICAgICAgIGxldCB0ID0gRnIuYWRkKEZyLnN1YihGci5hZGQoZTEsIGUyKSwgZTMpLCBlNCk7XG4gICAgICAgICAgICBsZXQgdHogPSBGci5hZGQoRnIuc3ViKEZyLmFkZChlMXosIGUyeiksIGUzeiksIGU0eik7XG5cbiAgICAgICAgICAgIGJ1ZmZlcnMuVC5zZXQodCwgaSAqIG44cik7XG4gICAgICAgICAgICBidWZmZXJzLlR6LnNldCh0eiwgaSAqIG44cik7XG5cbiAgICAgICAgICAgIHcgPSBGci5tdWwodywgRnIud1t6a2V5LnBvd2VyICsgMl0pO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gQ29tcHV0ZSB0aGUgY29lZmZpY2llbnRzIG9mIHRoZSBwb2x5bm9taWFsIFQwKFgpIGZyb20gYnVmZmVycy5UMFxuICAgICAgICBpZiAobG9nZ2VyKVxuICAgICAgICAgICAgbG9nZ2VyLmRlYnVnKFwiwrfCt8K3IENvbXB1dGluZyBUIGlmZnRcIik7XG4gICAgICAgIHBvbHlub21pYWxzLlQgPSBhd2FpdCBQb2x5bm9taWFsLmZyb21FdmFsdWF0aW9ucyhidWZmZXJzLlQsIGN1cnZlLCBsb2dnZXIpO1xuXG4gICAgICAgIC8vIERpdmlkZSB0aGUgcG9seW5vbWlhbCBUMCBieSBaX0goWClcbiAgICAgICAgaWYgKGxvZ2dlcilcbiAgICAgICAgICAgIGxvZ2dlci5kZWJ1ZyhcIsK3wrfCtyBDb21wdXRpbmcgVCAvIFpIXCIpO1xuICAgICAgICBwb2x5bm9taWFscy5ULmRpdlpoKHprZXkuZG9tYWluU2l6ZSwgNCk7XG5cbiAgICAgICAgLy8gQ29tcHV0ZSB0aGUgY29lZmZpY2llbnRzIG9mIHRoZSBwb2x5bm9taWFsIFR6KFgpIGZyb20gYnVmZmVycy5UelxuICAgICAgICBpZiAobG9nZ2VyKVxuICAgICAgICAgICAgbG9nZ2VyLmRlYnVnKFwiwrfCt8K3IENvbXB1dGluZyBUeiBpZmZ0XCIpO1xuICAgICAgICBwb2x5bm9taWFscy5UeiA9IGF3YWl0IFBvbHlub21pYWwuZnJvbUV2YWx1YXRpb25zKGJ1ZmZlcnMuVHosIGN1cnZlLCBsb2dnZXIpO1xuXG4gICAgICAgIC8vIEFkZCB0aGUgcG9seW5vbWlhbCBUMXogdG8gVDEgdG8gZ2V0IHRoZSBmaW5hbCBwb2x5bm9taWFsIFQxXG4gICAgICAgIHBvbHlub21pYWxzLlQuYWRkKHBvbHlub21pYWxzLlR6KTtcblxuICAgICAgICAvLyBDaGVjayBkZWdyZWVcbiAgICAgICAgaWYgKHBvbHlub21pYWxzLlQuZGVncmVlKCkgPj0gemtleS5kb21haW5TaXplICogMyArIDYpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIlQgUG9seW5vbWlhbCBpcyBub3Qgd2VsbCBjYWxjdWxhdGVkXCIpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gdCh4KSBoYXMgZGVncmVlIDNuICsgNSwgd2UgYXJlIGdvaW5nIHRvIHNwbGl0IHQoeCkgaW50byB0aHJlZSBzbWFsbGVyIHBvbHlub21pYWxzOlxuICAgICAgICAvLyBUMScgYW5kIFQyJyAgd2l0aCBhIGRlZ3JlZSA8IG4gYW5kIFQzJyB3aXRoIGEgZGVncmVlIG4rNVxuICAgICAgICAvLyBzdWNoIHRoYXQgdCh4KSA9IFQxJyhYKSArIFhebiBUMicoWCkgKyBYXnsybn0gVDMnKFgpXG4gICAgICAgIC8vIFRvIHJhbmRvbWl6ZSB0aGUgcGFydHMgd2UgdXNlIGJsaW5kaW5nIHNjYWxhcnMgYl8xMCBhbmQgYl8xMSBpbiBhIHdheSB0aGF0IGRvZXNuJ3QgY2hhbmdlIHQoWCk6XG4gICAgICAgIC8vIFQxKFgpID0gVDEnKFgpICsgYl8xMCBYXm5cbiAgICAgICAgLy8gVDIoWCkgPSBUMicoWCkgLSBiXzEwICsgYl8xMSBYXm5cbiAgICAgICAgLy8gVDMoWCkgPSBUMycoWCkgLSBiXzExXG4gICAgICAgIC8vIHN1Y2ggdGhhdFxuICAgICAgICAvLyB0KFgpID0gVDEoWCkgKyBYXm4gVDIoWCkgKyBYXjJuIFQzKFgpXG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5kZWJ1ZyhcIsK3wrfCtyBDb21wdXRpbmcgVDEsIFQyLCBUMyBwb2x5bm9taWFsc1wiKTtcbiAgICAgICAgcG9seW5vbWlhbHMuVDEgPSBuZXcgUG9seW5vbWlhbChuZXcgQmlnQnVmZmVyKCh6a2V5LmRvbWFpblNpemUgKyAxKSAqIG44ciksIGN1cnZlLCBsb2dnZXIpO1xuICAgICAgICBwb2x5bm9taWFscy5UMiA9IG5ldyBQb2x5bm9taWFsKG5ldyBCaWdCdWZmZXIoKHprZXkuZG9tYWluU2l6ZSArIDEpICogbjhyKSwgY3VydmUsIGxvZ2dlcik7XG4gICAgICAgIHBvbHlub21pYWxzLlQzID0gbmV3IFBvbHlub21pYWwobmV3IEJpZ0J1ZmZlcigoemtleS5kb21haW5TaXplICsgNikgKiBuOHIpLCBjdXJ2ZSwgbG9nZ2VyKTtcblxuICAgICAgICBwb2x5bm9taWFscy5UMS5jb2VmLnNldChwb2x5bm9taWFscy5ULmNvZWYuc2xpY2UoMCwgc0RvbWFpbiksIDApO1xuICAgICAgICBwb2x5bm9taWFscy5UMi5jb2VmLnNldChwb2x5bm9taWFscy5ULmNvZWYuc2xpY2Uoc0RvbWFpbiwgc0RvbWFpbiAqIDIpLCAwKTtcbiAgICAgICAgcG9seW5vbWlhbHMuVDMuY29lZi5zZXQocG9seW5vbWlhbHMuVC5jb2VmLnNsaWNlKHNEb21haW4gKiAyLCBzRG9tYWluICogMyArIDYgKiBuOHIpLCAwKTtcblxuICAgICAgICAvLyBBZGQgYmxpbmRpbmcgc2NhbGFyIGJfMTAgYXMgYSBuZXcgY29lZmZpY2llbnQgblxuICAgICAgICBwb2x5bm9taWFscy5UMS5zZXRDb2VmKHprZXkuZG9tYWluU2l6ZSwgY2hhbGxlbmdlcy5iWzEwXSk7XG5cbiAgICAgICAgLy8gY29tcHV0ZSB0X21pZChYKVxuICAgICAgICAvLyBTdWJ0cmFjdCBibGluZGluZyBzY2FsYXIgYl8xMCB0byB0aGUgbG93ZXN0IGNvZWZmaWNpZW50IG9mIHRfbWlkXG4gICAgICAgIGNvbnN0IGxvd2VzdE1pZCA9IEZyLnN1Yihwb2x5bm9taWFscy5UMi5nZXRDb2VmKDApLCBjaGFsbGVuZ2VzLmJbMTBdKTtcbiAgICAgICAgcG9seW5vbWlhbHMuVDIuc2V0Q29lZigwLCBsb3dlc3RNaWQpO1xuICAgICAgICBwb2x5bm9taWFscy5UMi5zZXRDb2VmKHprZXkuZG9tYWluU2l6ZSwgY2hhbGxlbmdlcy5iWzExXSk7XG5cbiAgICAgICAgLy8gY29tcHV0ZSB0X2hpZ2goWClcbiAgICAgICAgLy9TdWJ0cmFjdCBibGluZGluZyBzY2FsYXIgYl8xMSB0byB0aGUgbG93ZXN0IGNvZWZmaWNpZW50IG9mIHRfaGlnaFxuICAgICAgICBjb25zdCBsb3dlc3RIaWdoID0gRnIuc3ViKHBvbHlub21pYWxzLlQzLmdldENvZWYoMCksIGNoYWxsZW5nZXMuYlsxMV0pO1xuICAgICAgICBwb2x5bm9taWFscy5UMy5zZXRDb2VmKDAsIGxvd2VzdEhpZ2gpO1xuICAgIH1cblxuICAgIGFzeW5jIGZ1bmN0aW9uIHJvdW5kNCgpIHtcbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmRlYnVnKFwiPiBDb21wdXRpbmcgY2hhbGxlbmdlIHhpXCIpO1xuXG4gICAgICAgIC8vIFNURVAgNC4xIC0gQ29tcHV0ZSBldmFsdWF0aW9uIGNoYWxsZW5nZSB4aSDiiIggRlxuICAgICAgICB0cmFuc2NyaXB0LnJlc2V0KCk7XG4gICAgICAgIHRyYW5zY3JpcHQuYWRkU2NhbGFyKGNoYWxsZW5nZXMuYWxwaGEpO1xuICAgICAgICB0cmFuc2NyaXB0LmFkZFBvbENvbW1pdG1lbnQocHJvb2YuZ2V0UG9seW5vbWlhbChcIlQxXCIpKTtcbiAgICAgICAgdHJhbnNjcmlwdC5hZGRQb2xDb21taXRtZW50KHByb29mLmdldFBvbHlub21pYWwoXCJUMlwiKSk7XG4gICAgICAgIHRyYW5zY3JpcHQuYWRkUG9sQ29tbWl0bWVudChwcm9vZi5nZXRQb2x5bm9taWFsKFwiVDNcIikpO1xuXG4gICAgICAgIGNoYWxsZW5nZXMueGkgPSB0cmFuc2NyaXB0LmdldENoYWxsZW5nZSgpO1xuICAgICAgICBjaGFsbGVuZ2VzLnhpdyA9IEZyLm11bChjaGFsbGVuZ2VzLnhpLCBGci53W3prZXkucG93ZXJdKTtcbiAgICAgICAgXG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5kZWJ1ZyhcIsK3wrfCtyBjaGFsbGVuZ2VzLnhpOiBcIiArIEZyLnRvU3RyaW5nKGNoYWxsZW5nZXMueGksIDE2KSk7ICBcblxuICAgICAgICAvLyBGb3VydGggb3V0cHV0IG9mIHRoZSBwcm92ZXIgaXMgKCBhKHhpKSwgYih4aSksIGMoeGkpLCBzMSh4aSksIHMyKHhpKSwgeih4aXcpIClcbiAgICAgICAgcHJvb2YuYWRkRXZhbHVhdGlvbihcImV2YWxfYVwiLCBwb2x5bm9taWFscy5BLmV2YWx1YXRlKGNoYWxsZW5nZXMueGkpKTtcbiAgICAgICAgcHJvb2YuYWRkRXZhbHVhdGlvbihcImV2YWxfYlwiLCBwb2x5bm9taWFscy5CLmV2YWx1YXRlKGNoYWxsZW5nZXMueGkpKTtcbiAgICAgICAgcHJvb2YuYWRkRXZhbHVhdGlvbihcImV2YWxfY1wiLCBwb2x5bm9taWFscy5DLmV2YWx1YXRlKGNoYWxsZW5nZXMueGkpKTtcbiAgICAgICAgcHJvb2YuYWRkRXZhbHVhdGlvbihcImV2YWxfczFcIiwgcG9seW5vbWlhbHMuU2lnbWExLmV2YWx1YXRlKGNoYWxsZW5nZXMueGkpKTtcbiAgICAgICAgcHJvb2YuYWRkRXZhbHVhdGlvbihcImV2YWxfczJcIiwgcG9seW5vbWlhbHMuU2lnbWEyLmV2YWx1YXRlKGNoYWxsZW5nZXMueGkpKTtcbiAgICAgICAgcHJvb2YuYWRkRXZhbHVhdGlvbihcImV2YWxfendcIiwgcG9seW5vbWlhbHMuWi5ldmFsdWF0ZShjaGFsbGVuZ2VzLnhpdykpO1xuICAgIH1cblxuICAgIGFzeW5jIGZ1bmN0aW9uIHJvdW5kNSgpIHtcbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmRlYnVnKFwiPiBDb21wdXRpbmcgY2hhbGxlbmdlIHZcIik7XG4gICAgICAgIFxuICAgICAgICAvLyBTVEVQIDUuMSAtIENvbXB1dGUgZXZhbHVhdGlvbiBjaGFsbGVuZ2UgdiDiiIggRlxuICAgICAgICB0cmFuc2NyaXB0LnJlc2V0KCk7XG4gICAgICAgIHRyYW5zY3JpcHQuYWRkU2NhbGFyKGNoYWxsZW5nZXMueGkpO1xuICAgICAgICB0cmFuc2NyaXB0LmFkZFNjYWxhcihwcm9vZi5nZXRFdmFsdWF0aW9uKFwiZXZhbF9hXCIpKTtcbiAgICAgICAgdHJhbnNjcmlwdC5hZGRTY2FsYXIocHJvb2YuZ2V0RXZhbHVhdGlvbihcImV2YWxfYlwiKSk7XG4gICAgICAgIHRyYW5zY3JpcHQuYWRkU2NhbGFyKHByb29mLmdldEV2YWx1YXRpb24oXCJldmFsX2NcIikpO1xuICAgICAgICB0cmFuc2NyaXB0LmFkZFNjYWxhcihwcm9vZi5nZXRFdmFsdWF0aW9uKFwiZXZhbF9zMVwiKSk7XG4gICAgICAgIHRyYW5zY3JpcHQuYWRkU2NhbGFyKHByb29mLmdldEV2YWx1YXRpb24oXCJldmFsX3MyXCIpKTtcbiAgICAgICAgdHJhbnNjcmlwdC5hZGRTY2FsYXIocHJvb2YuZ2V0RXZhbHVhdGlvbihcImV2YWxfendcIikpO1xuXG4gICAgICAgIGNoYWxsZW5nZXMudiA9IFtdO1xuICAgICAgICBjaGFsbGVuZ2VzLnZbMV0gPSB0cmFuc2NyaXB0LmdldENoYWxsZW5nZSgpO1xuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZGVidWcoXCLCt8K3wrcgY2hhbGxlbmdlcy52OiBcIiArIEZyLnRvU3RyaW5nKGNoYWxsZW5nZXMudlsxXSwgMTYpKTtcblxuICAgICAgICBmb3IgKGxldCBpID0gMjsgaSA8IDY7IGkrKykge1xuICAgICAgICAgICAgY2hhbGxlbmdlcy52W2ldID0gRnIubXVsKGNoYWxsZW5nZXMudltpIC0gMV0sIGNoYWxsZW5nZXMudlsxXSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBTVEVQIDUuMiBDb21wdXRlIGxpbmVhcmlzYXRpb24gcG9seW5vbWlhbCByKFgpXG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5kZWJ1ZyhcIj4gQ29tcHV0aW5nIGxpbmVhcmlzYXRpb24gcG9seW5vbWlhbCBSKFgpXCIpO1xuICAgICAgICBhd2FpdCBjb21wdXRlUigpO1xuXG4gICAgICAgIC8vU1RFUCA1LjMgQ29tcHV0ZSBvcGVuaW5nIHByb29mIHBvbHlub21pYWwgV3hpKFgpXG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5kZWJ1ZyhcIj4gQ29tcHV0aW5nIG9wZW5pbmcgcHJvb2YgcG9seW5vbWlhbCBXeGkoWCkgcG9seW5vbWlhbFwiKTtcbiAgICAgICAgY29tcHV0ZVd4aSgpO1xuXG4gICAgICAgIC8vU1RFUCA1LjQgQ29tcHV0ZSBvcGVuaW5nIHByb29mIHBvbHlub21pYWwgV3hpdyhYKVxuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZGVidWcoXCI+IENvbXB1dGluZyBvcGVuaW5nIHByb29mIHBvbHlub21pYWwgV3hpdyhYKSBwb2x5bm9taWFsXCIpO1xuICAgICAgICBjb21wdXRlV3hpdygpO1xuXG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5kZWJ1ZyhcIj4gQ29tcHV0aW5nIFd4aSwgV3hpdyBNU01cIik7XG4gICAgICAgIGxldCBjb21taXRXeGkgPSBhd2FpdCBwb2x5bm9taWFscy5XeGkubXVsdGlFeHBvbmVudGlhdGlvbihQVGF1LCBcIld4aVwiKTtcbiAgICAgICAgbGV0IGNvbW1pdFd4aXcgPSBhd2FpdCBwb2x5bm9taWFscy5XeGl3Lm11bHRpRXhwb25lbnRpYXRpb24oUFRhdSwgXCJXeGl3XCIpO1xuXG4gICAgICAgIC8vIEZpZnRoIG91dHB1dCBvZiB0aGUgcHJvdmVyIGlzIChbV3hpXV8xLCBbV3hpd11fMSlcbiAgICAgICAgcHJvb2YuYWRkUG9seW5vbWlhbChcIld4aVwiLCBjb21taXRXeGkpO1xuICAgICAgICBwcm9vZi5hZGRQb2x5bm9taWFsKFwiV3hpd1wiLCBjb21taXRXeGl3KTtcbiAgICB9XG5cbiAgICBhc3luYyBmdW5jdGlvbiBjb21wdXRlUigpIHtcbiAgICAgICAgY29uc3QgRnIgPSBjdXJ2ZS5GcjtcbiAgICBcbiAgICAgICAgLy8gUmVzZXJ2ZSBtZW1vcnkgZm9yIFEncyBwb2x5bm9taWFsc1xuICAgICAgICBwb2x5bm9taWFscy5RTCA9IG5ldyBQb2x5bm9taWFsKG5ldyBCaWdCdWZmZXIoc0RvbWFpbiksIGN1cnZlLCBsb2dnZXIpO1xuICAgICAgICBwb2x5bm9taWFscy5RUiA9IG5ldyBQb2x5bm9taWFsKG5ldyBCaWdCdWZmZXIoc0RvbWFpbiksIGN1cnZlLCBsb2dnZXIpO1xuICAgICAgICBwb2x5bm9taWFscy5RTSA9IG5ldyBQb2x5bm9taWFsKG5ldyBCaWdCdWZmZXIoc0RvbWFpbiksIGN1cnZlLCBsb2dnZXIpO1xuICAgICAgICBwb2x5bm9taWFscy5RTyA9IG5ldyBQb2x5bm9taWFsKG5ldyBCaWdCdWZmZXIoc0RvbWFpbiksIGN1cnZlLCBsb2dnZXIpO1xuICAgICAgICBwb2x5bm9taWFscy5RQyA9IG5ldyBQb2x5bm9taWFsKG5ldyBCaWdCdWZmZXIoc0RvbWFpbiksIGN1cnZlLCBsb2dnZXIpO1xuXG4gICAgICAgIC8vIFJlYWQgUSdzIGV2YWx1YXRpb25zIGZyb20gemtleSBmaWxlXG4gICAgICAgIGF3YWl0IGZkWktleS5yZWFkVG9CdWZmZXIocG9seW5vbWlhbHMuUUwuY29lZiwgMCwgc0RvbWFpbiwgemtleVNlY3Rpb25zW1pLRVlfUExfUUxfU0VDVElPTl1bMF0ucCk7XG4gICAgICAgIGF3YWl0IGZkWktleS5yZWFkVG9CdWZmZXIocG9seW5vbWlhbHMuUVIuY29lZiwgMCwgc0RvbWFpbiwgemtleVNlY3Rpb25zW1pLRVlfUExfUVJfU0VDVElPTl1bMF0ucCk7XG4gICAgICAgIGF3YWl0IGZkWktleS5yZWFkVG9CdWZmZXIocG9seW5vbWlhbHMuUU0uY29lZiwgMCwgc0RvbWFpbiwgemtleVNlY3Rpb25zW1pLRVlfUExfUU1fU0VDVElPTl1bMF0ucCk7XG4gICAgICAgIGF3YWl0IGZkWktleS5yZWFkVG9CdWZmZXIocG9seW5vbWlhbHMuUU8uY29lZiwgMCwgc0RvbWFpbiwgemtleVNlY3Rpb25zW1pLRVlfUExfUU9fU0VDVElPTl1bMF0ucCk7XG4gICAgICAgIGF3YWl0IGZkWktleS5yZWFkVG9CdWZmZXIocG9seW5vbWlhbHMuUUMuY29lZiwgMCwgc0RvbWFpbiwgemtleVNlY3Rpb25zW1pLRVlfUExfUUNfU0VDVElPTl1bMF0ucCk7ICAgXG4gICAgICAgIFxuICAgICAgICBjaGFsbGVuZ2VzLnhpbiA9IGNoYWxsZW5nZXMueGk7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgemtleS5wb3dlcjsgaSsrKSB7XG4gICAgICAgICAgICBjaGFsbGVuZ2VzLnhpbiA9IEZyLnNxdWFyZShjaGFsbGVuZ2VzLnhpbik7XG4gICAgICAgIH1cblxuICAgICAgICBjaGFsbGVuZ2VzLnpoID0gRnIuc3ViKGNoYWxsZW5nZXMueGluLCBGci5vbmUpO1xuXG4gICAgICAgIGNvbnN0IEwgPSBbXTtcblxuICAgICAgICBjb25zdCBuID0gRnIuZSh6a2V5LmRvbWFpblNpemUpO1xuICAgICAgICBsZXQgdyA9IEZyLm9uZTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDE7IGkgPD0gTWF0aC5tYXgoMSwgemtleS5uUHVibGljKTsgaSsrKSB7XG4gICAgICAgICAgICBMW2ldID0gRnIuZGl2KEZyLm11bCh3LCBjaGFsbGVuZ2VzLnpoKSwgRnIubXVsKG4sIEZyLnN1YihjaGFsbGVuZ2VzLnhpLCB3KSkpO1xuICAgICAgICAgICAgdyA9IEZyLm11bCh3LCBGci53W3prZXkucG93ZXJdKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGV2YWxfbDEgPSBGci5kaXYoXG4gICAgICAgICAgICBGci5zdWIoY2hhbGxlbmdlcy54aW4sIEZyLm9uZSksXG4gICAgICAgICAgICBGci5tdWwobiwgRnIuc3ViKGNoYWxsZW5nZXMueGksIEZyLm9uZSkpXG4gICAgICAgICk7XG5cbiAgICAgICAgaWYgKGxvZ2dlcikge1xuICAgICAgICAgICAgbG9nZ2VyLmRlYnVnKFwiTGFncmFuZ2UgRXZhbHVhdGlvbnM6IFwiKTtcbiAgICAgICAgICAgIGZvciAobGV0IGk9MTsgaTxMLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgbG9nZ2VyLmRlYnVnKGBMJHtpfSh4aSk9YCArIEZyLnRvU3RyaW5nKExbaV0sIDE2KSk7ICAgIFxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGV2YWxfcGkgPSBGci56ZXJvO1xuICAgICAgICBmb3IgKGxldCBpPTA7IGk8cHVibGljU2lnbmFscy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgY29uc3QgdyA9IEZyLmUocHVibGljU2lnbmFsc1tpXSk7XG4gICAgICAgICAgICBldmFsX3BpID0gRnIuc3ViKGV2YWxfcGksIEZyLm11bCh3LCBMW2krMV0pKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5kZWJ1ZyhcIlBJOiBcIiArIEZyLnRvU3RyaW5nKGV2YWxfcGksIDE2KSk7XG5cbiAgICAgICAgLy8gQ29tcHV0ZSBjb25zdGFudCBwYXJ0cyBvZiBSKFgpXG4gICAgICAgIGNvbnN0IGNvZWZfYWIgPSBGci5tdWwocHJvb2YuZXZhbHVhdGlvbnMuZXZhbF9hLCBwcm9vZi5ldmFsdWF0aW9ucy5ldmFsX2IpO1xuXG4gICAgICAgIGxldCBlMmEgPSBwcm9vZi5ldmFsdWF0aW9ucy5ldmFsX2E7XG4gICAgICAgIGNvbnN0IGJldGF4aSA9IEZyLm11bChjaGFsbGVuZ2VzLmJldGEsIGNoYWxsZW5nZXMueGkpO1xuICAgICAgICBlMmEgPSBGci5hZGQoZTJhLCBiZXRheGkpO1xuICAgICAgICBlMmEgPSBGci5hZGQoZTJhLCBjaGFsbGVuZ2VzLmdhbW1hKTtcblxuICAgICAgICBsZXQgZTJiID0gcHJvb2YuZXZhbHVhdGlvbnMuZXZhbF9iO1xuICAgICAgICBlMmIgPSBGci5hZGQoZTJiLCBGci5tdWwoYmV0YXhpLCB6a2V5LmsxKSk7XG4gICAgICAgIGUyYiA9IEZyLmFkZChlMmIsIGNoYWxsZW5nZXMuZ2FtbWEpO1xuXG4gICAgICAgIGxldCBlMmMgPSBwcm9vZi5ldmFsdWF0aW9ucy5ldmFsX2M7XG4gICAgICAgIGUyYyA9IEZyLmFkZChlMmMsIEZyLm11bChiZXRheGksIHprZXkuazIpKTtcbiAgICAgICAgZTJjID0gRnIuYWRkKGUyYywgY2hhbGxlbmdlcy5nYW1tYSk7XG5cbiAgICAgICAgY29uc3QgZTIgPSBGci5tdWwoRnIubXVsKEZyLm11bChlMmEsIGUyYiksIGUyYyksIGNoYWxsZW5nZXMuYWxwaGEpO1xuXG4gICAgICAgIGxldCBlM2EgPSBwcm9vZi5ldmFsdWF0aW9ucy5ldmFsX2E7XG4gICAgICAgIGUzYSA9IEZyLmFkZChlM2EsIEZyLm11bChjaGFsbGVuZ2VzLmJldGEsIHByb29mLmV2YWx1YXRpb25zLmV2YWxfczEpKTtcbiAgICAgICAgZTNhID0gRnIuYWRkKGUzYSwgY2hhbGxlbmdlcy5nYW1tYSk7XG5cbiAgICAgICAgbGV0IGUzYiA9IHByb29mLmV2YWx1YXRpb25zLmV2YWxfYjtcbiAgICAgICAgZTNiID0gRnIuYWRkKGUzYiwgRnIubXVsKGNoYWxsZW5nZXMuYmV0YSwgcHJvb2YuZXZhbHVhdGlvbnMuZXZhbF9zMikpO1xuICAgICAgICBlM2IgPSBGci5hZGQoZTNiLCBjaGFsbGVuZ2VzLmdhbW1hKTtcblxuICAgICAgICBsZXQgZTMgPSBGci5tdWwoZTNhLCBlM2IpO1xuICAgICAgICBlMyA9IEZyLm11bChlMywgcHJvb2YuZXZhbHVhdGlvbnMuZXZhbF96dyk7XG4gICAgICAgIGUzID0gRnIubXVsKGUzLCBjaGFsbGVuZ2VzLmFscGhhKTtcblxuICAgICAgICBjb25zdCBlNCA9IEZyLm11bChldmFsX2wxLCBjaGFsbGVuZ2VzLmFscGhhMik7XG5cbiAgICAgICAgcG9seW5vbWlhbHMuUiA9IG5ldyBQb2x5bm9taWFsKG5ldyBCaWdCdWZmZXIoKHprZXkuZG9tYWluU2l6ZSArIDYpICogbjhyKSwgY3VydmUsIGxvZ2dlcik7XG5cbiAgICAgICAgcG9seW5vbWlhbHMuUi5hZGQocG9seW5vbWlhbHMuUU0sIGNvZWZfYWIpO1xuICAgICAgICBwb2x5bm9taWFscy5SLmFkZChwb2x5bm9taWFscy5RTCwgcHJvb2YuZXZhbHVhdGlvbnMuZXZhbF9hKTtcbiAgICAgICAgcG9seW5vbWlhbHMuUi5hZGQocG9seW5vbWlhbHMuUVIsIHByb29mLmV2YWx1YXRpb25zLmV2YWxfYik7XG4gICAgICAgIHBvbHlub21pYWxzLlIuYWRkKHBvbHlub21pYWxzLlFPLCBwcm9vZi5ldmFsdWF0aW9ucy5ldmFsX2MpO1xuICAgICAgICBwb2x5bm9taWFscy5SLmFkZChwb2x5bm9taWFscy5RQyk7XG4gICAgICAgIHBvbHlub21pYWxzLlIuYWRkKHBvbHlub21pYWxzLlosIGUyKTtcbiAgICAgICAgcG9seW5vbWlhbHMuUi5zdWIocG9seW5vbWlhbHMuU2lnbWEzLCBGci5tdWwoZTMsIGNoYWxsZW5nZXMuYmV0YSkpO1xuICAgICAgICBwb2x5bm9taWFscy5SLmFkZChwb2x5bm9taWFscy5aLCBlNCk7XG5cbiAgICAgICAgbGV0IHRtcCA9IFBvbHlub21pYWwuZnJvbVBvbHlub21pYWwocG9seW5vbWlhbHMuVDMsIGN1cnZlLCBsb2dnZXIpO1xuICAgICAgICB0bXAubXVsU2NhbGFyKEZyLnNxdWFyZShjaGFsbGVuZ2VzLnhpbikpO1xuICAgICAgICB0bXAuYWRkKHBvbHlub21pYWxzLlQyLCBjaGFsbGVuZ2VzLnhpbik7XG4gICAgICAgIHRtcC5hZGQocG9seW5vbWlhbHMuVDEpO1xuICAgICAgICB0bXAubXVsU2NhbGFyKGNoYWxsZW5nZXMuemgpO1xuXG4gICAgICAgIHBvbHlub21pYWxzLlIuc3ViKHRtcCk7XG5cbiAgICAgICAgbGV0IHIwID0gRnIuc3ViKGV2YWxfcGksIEZyLm11bChlMywgRnIuYWRkKHByb29mLmV2YWx1YXRpb25zLmV2YWxfYywgY2hhbGxlbmdlcy5nYW1tYSkpKTtcbiAgICAgICAgcjAgPSBGci5zdWIocjAsIGU0KTtcblxuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZGVidWcoXCJyMDogXCIgKyBGci50b1N0cmluZyhyMCwgMTYpKTtcblxuICAgICAgICBwb2x5bm9taWFscy5SLmFkZFNjYWxhcihyMCk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY29tcHV0ZVd4aSgpIHtcbiAgICAgICAgcG9seW5vbWlhbHMuV3hpID0gbmV3IFBvbHlub21pYWwobmV3IEJpZ0J1ZmZlcihzRG9tYWluICsgNiAqIG44ciksIGN1cnZlLCBsb2dnZXIpO1xuXG4gICAgICAgIHBvbHlub21pYWxzLld4aS5hZGQocG9seW5vbWlhbHMuUik7XG4gICAgICAgIHBvbHlub21pYWxzLld4aS5hZGQocG9seW5vbWlhbHMuQSwgY2hhbGxlbmdlcy52WzFdKTtcbiAgICAgICAgcG9seW5vbWlhbHMuV3hpLmFkZChwb2x5bm9taWFscy5CLCBjaGFsbGVuZ2VzLnZbMl0pO1xuICAgICAgICBwb2x5bm9taWFscy5XeGkuYWRkKHBvbHlub21pYWxzLkMsIGNoYWxsZW5nZXMudlszXSk7XG4gICAgICAgIHBvbHlub21pYWxzLld4aS5hZGQocG9seW5vbWlhbHMuU2lnbWExLCBjaGFsbGVuZ2VzLnZbNF0pO1xuICAgICAgICBwb2x5bm9taWFscy5XeGkuYWRkKHBvbHlub21pYWxzLlNpZ21hMiwgY2hhbGxlbmdlcy52WzVdKTtcblxuICAgICAgICBwb2x5bm9taWFscy5XeGkuc3ViU2NhbGFyKEZyLm11bChjaGFsbGVuZ2VzLnZbMV0sIHByb29mLmV2YWx1YXRpb25zLmV2YWxfYSkpO1xuICAgICAgICBwb2x5bm9taWFscy5XeGkuc3ViU2NhbGFyKEZyLm11bChjaGFsbGVuZ2VzLnZbMl0sIHByb29mLmV2YWx1YXRpb25zLmV2YWxfYikpO1xuICAgICAgICBwb2x5bm9taWFscy5XeGkuc3ViU2NhbGFyKEZyLm11bChjaGFsbGVuZ2VzLnZbM10sIHByb29mLmV2YWx1YXRpb25zLmV2YWxfYykpO1xuICAgICAgICBwb2x5bm9taWFscy5XeGkuc3ViU2NhbGFyKEZyLm11bChjaGFsbGVuZ2VzLnZbNF0sIHByb29mLmV2YWx1YXRpb25zLmV2YWxfczEpKTtcbiAgICAgICAgcG9seW5vbWlhbHMuV3hpLnN1YlNjYWxhcihGci5tdWwoY2hhbGxlbmdlcy52WzVdLCBwcm9vZi5ldmFsdWF0aW9ucy5ldmFsX3MyKSk7XG5cbiAgICAgICAgcG9seW5vbWlhbHMuV3hpLmRpdkJ5WmVyb2ZpZXIoMSwgY2hhbGxlbmdlcy54aSk7XG4gICAgfVxuXG4gICAgYXN5bmMgZnVuY3Rpb24gY29tcHV0ZVd4aXcoKSB7XG4gICAgICAgIHBvbHlub21pYWxzLld4aXcgPSBQb2x5bm9taWFsLmZyb21Qb2x5bm9taWFsKHBvbHlub21pYWxzLlosIGN1cnZlLCBsb2dnZXIpO1xuICAgICAgICBwb2x5bm9taWFscy5XeGl3LnN1YlNjYWxhcihwcm9vZi5ldmFsdWF0aW9ucy5ldmFsX3p3KTtcblxuICAgICAgICBwb2x5bm9taWFscy5XeGl3LmRpdkJ5WmVyb2ZpZXIoMSwgY2hhbGxlbmdlcy54aXcpO1xuICAgIH1cbn1cbiIsIi8qXG4gICAgQ29weXJpZ2h0IDIwMjEgMEtJTVMgYXNzb2NpYXRpb24uXG5cbiAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBzbmFya0pTLlxuXG4gICAgc25hcmtKUyBpcyBhIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXRcbiAgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yXG4gICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cblxuICAgIHNuYXJrSlMgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVRcbiAgICBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFlcbiAgICBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWNcbiAgICBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG5cbiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICAgIGFsb25nIHdpdGggc25hcmtKUy4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cbiovXG5cbmltcG9ydCBwbG9ua19wcm92ZSBmcm9tIFwiLi9wbG9ua19wcm92ZS5qc1wiO1xuaW1wb3J0IHd0bnNfY2FsY3VsYXRlIGZyb20gXCIuL3d0bnNfY2FsY3VsYXRlLmpzXCI7XG5pbXBvcnQge3V0aWxzfSBmcm9tIFwiZmZqYXZhc2NyaXB0XCI7XG5jb25zdCB7dW5zdHJpbmdpZnlCaWdJbnRzfSA9IHV0aWxzO1xuXG5leHBvcnQgZGVmYXVsdCBhc3luYyBmdW5jdGlvbiBwbG9ua0Z1bGxQcm92ZShfaW5wdXQsIHdhc21GaWxlLCB6a2V5RmlsZU5hbWUsIGxvZ2dlciwgd3Ruc0NhbGNPcHRpb25zKSB7XG4gICAgY29uc3QgaW5wdXQgPSB1bnN0cmluZ2lmeUJpZ0ludHMoX2lucHV0KTtcblxuICAgIGNvbnN0IHd0bnM9IHtcbiAgICAgICAgdHlwZTogXCJtZW1cIlxuICAgIH07XG4gICAgYXdhaXQgd3Ruc19jYWxjdWxhdGUoaW5wdXQsIHdhc21GaWxlLCB3dG5zLCB3dG5zQ2FsY09wdGlvbnMpO1xuICAgIHJldHVybiBhd2FpdCBwbG9ua19wcm92ZSh6a2V5RmlsZU5hbWUsIHd0bnMsIGxvZ2dlcik7XG59XG4iLCIvKlxuICAgIENvcHlyaWdodCAyMDIxIDBraW1zIGFzc29jaWF0aW9uLlxuXG4gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2Ygc25hcmtqcy5cblxuICAgIHNuYXJranMgaXMgYSBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3JcbiAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlXG4gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pXG4gICAgYW55IGxhdGVyIHZlcnNpb24uXG5cbiAgICBzbmFya2pzIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZXG4gICAgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yXG4gICAgbW9yZSBkZXRhaWxzLlxuXG4gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcgd2l0aFxuICAgIHNuYXJranMuIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXG4qL1xuXG4vKiBJbXBsZW1lbnRhdGlvbiBvZiB0aGlzIHBhcGVyOiBodHRwczovL2VwcmludC5pYWNyLm9yZy8yMDE5Lzk1My5wZGYgKi9cbmltcG9ydCAqIGFzIGN1cnZlcyBmcm9tIFwiLi9jdXJ2ZXMuanNcIjtcbmltcG9ydCB7ICB1dGlscyB9ICAgZnJvbSBcImZmamF2YXNjcmlwdFwiO1xuY29uc3Qge3Vuc3RyaW5naWZ5QmlnSW50c30gPSB1dGlscztcbmltcG9ydCB7IEtlY2NhazI1NlRyYW5zY3JpcHQgfSBmcm9tIFwiLi9LZWNjYWsyNTZUcmFuc2NyaXB0LmpzXCI7XG5cblxuXG5leHBvcnQgZGVmYXVsdCBhc3luYyBmdW5jdGlvbiBwbG9ua1ZlcmlmeShfdmtfdmVyaWZpZXIsIF9wdWJsaWNTaWduYWxzLCBfcHJvb2YsIGxvZ2dlcikge1xuICAgIGxldCB2a192ZXJpZmllciA9IHVuc3RyaW5naWZ5QmlnSW50cyhfdmtfdmVyaWZpZXIpO1xuICAgIF9wcm9vZiA9IHVuc3RyaW5naWZ5QmlnSW50cyhfcHJvb2YpO1xuICAgIGxldCBwdWJsaWNTaWduYWxzID0gdW5zdHJpbmdpZnlCaWdJbnRzKF9wdWJsaWNTaWduYWxzKTtcblxuICAgIGNvbnN0IGN1cnZlID0gYXdhaXQgY3VydmVzLmdldEN1cnZlRnJvbU5hbWUodmtfdmVyaWZpZXIuY3VydmUpO1xuXG4gICAgY29uc3QgRnIgPSBjdXJ2ZS5GcjtcbiAgICBjb25zdCBHMSA9IGN1cnZlLkcxO1xuXG4gICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oXCJQTE9OSyBWRVJJRklFUiBTVEFSVEVEXCIpO1xuXG4gICAgbGV0IHByb29mID0gZnJvbU9iamVjdFByb29mKGN1cnZlLF9wcm9vZik7XG4gICAgdmtfdmVyaWZpZXIgPSBmcm9tT2JqZWN0VmsoY3VydmUsIHZrX3ZlcmlmaWVyKTtcblxuICAgIGlmICghaXNXZWxsQ29uc3RydWN0ZWQoY3VydmUsIHByb29mKSkge1xuICAgICAgICBsb2dnZXIuZXJyb3IoXCJQcm9vZiBpcyBub3Qgd2VsbCBjb25zdHJ1Y3RlZFwiKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGlmIChwdWJsaWNTaWduYWxzLmxlbmd0aCAhPSB2a192ZXJpZmllci5uUHVibGljKSB7XG4gICAgICAgIGxvZ2dlci5lcnJvcihcIkludmFsaWQgbnVtYmVyIG9mIHB1YmxpYyBpbnB1dHNcIik7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgY29uc3QgY2hhbGxlbmdlcyA9IGNhbGN1bGF0ZWNoYWxsZW5nZXMoY3VydmUsIHByb29mLCBwdWJsaWNTaWduYWxzLCB2a192ZXJpZmllcik7XG4gICAgXG4gICAgaWYgKGxvZ2dlcikge1xuICAgICAgICBsb2dnZXIuZGVidWcoXCJiZXRhOiBcIiArIEZyLnRvU3RyaW5nKGNoYWxsZW5nZXMuYmV0YSwgMTYpKTsgICAgXG4gICAgICAgIGxvZ2dlci5kZWJ1ZyhcImdhbW1hOiBcIiArIEZyLnRvU3RyaW5nKGNoYWxsZW5nZXMuZ2FtbWEsIDE2KSk7ICAgIFxuICAgICAgICBsb2dnZXIuZGVidWcoXCJhbHBoYTogXCIgKyBGci50b1N0cmluZyhjaGFsbGVuZ2VzLmFscGhhLCAxNikpOyAgICBcbiAgICAgICAgbG9nZ2VyLmRlYnVnKFwieGk6IFwiICsgRnIudG9TdHJpbmcoY2hhbGxlbmdlcy54aSwgMTYpKTtcbiAgICAgICAgZm9yKGxldCBpPTE7aTw2O2krKykge1xuICAgICAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmRlYnVnKFwidjogXCIgKyBGci50b1N0cmluZyhjaGFsbGVuZ2VzLnZbaV0sIDE2KSk7XG4gICAgICAgIH1cbiAgICAgICAgbG9nZ2VyLmRlYnVnKFwidTogXCIgKyBGci50b1N0cmluZyhjaGFsbGVuZ2VzLnUsIDE2KSk7ICAgIFxuICAgIH1cbiAgICBjb25zdCBMID0gY2FsY3VsYXRlTGFncmFuZ2VFdmFsdWF0aW9ucyhjdXJ2ZSwgY2hhbGxlbmdlcywgdmtfdmVyaWZpZXIpO1xuICAgIGlmIChsb2dnZXIpIHtcbiAgICAgICAgZm9yIChsZXQgaT0xOyBpPEwubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGxvZ2dlci5kZWJ1ZyhgTCR7aX0oeGkpPWAgKyBGci50b1N0cmluZyhMW2ldLCAxNikpO1xuICAgICAgICB9XG4gICAgfVxuICAgIFxuICAgIGlmIChwdWJsaWNTaWduYWxzLmxlbmd0aCAhPSB2a192ZXJpZmllci5uUHVibGljKSB7XG4gICAgICAgIGxvZ2dlci5lcnJvcihcIk51bWJlciBvZiBwdWJsaWMgc2lnbmFscyBkb2VzIG5vdCBtYXRjaCB3aXRoIHZrXCIpO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgY29uc3QgcGkgPSBjYWxjdWxhdGVQSShjdXJ2ZSwgcHVibGljU2lnbmFscywgTCk7XG4gICAgaWYgKGxvZ2dlcikge1xuICAgICAgICBsb2dnZXIuZGVidWcoXCJQSSh4aSk6IFwiICsgRnIudG9TdHJpbmcocGksIDE2KSk7XG4gICAgfVxuICAgIFxuICAgIGNvbnN0IHIwID0gY2FsY3VsYXRlUjAoY3VydmUsIHByb29mLCBjaGFsbGVuZ2VzLCBwaSwgTFsxXSk7XG4gICAgaWYgKGxvZ2dlcikge1xuICAgICAgICBsb2dnZXIuZGVidWcoXCJyMDogXCIgKyBGci50b1N0cmluZyhyMCwgMTYpKTtcbiAgICB9XG5cbiAgICBjb25zdCBEID0gY2FsY3VsYXRlRChjdXJ2ZSwgcHJvb2YsIGNoYWxsZW5nZXMsIHZrX3ZlcmlmaWVyLCBMWzFdKTtcbiAgICBpZiAobG9nZ2VyKSB7XG4gICAgICAgIGxvZ2dlci5kZWJ1ZyhcIkQ6IFwiICsgRzEudG9TdHJpbmcoRzEudG9BZmZpbmUoRCksIDE2KSk7XG4gICAgfVxuXG4gICAgY29uc3QgRiA9IGNhbGN1bGF0ZUYoY3VydmUsIHByb29mLCBjaGFsbGVuZ2VzLCB2a192ZXJpZmllciwgRCk7XG4gICAgaWYgKGxvZ2dlcikge1xuICAgICAgICBsb2dnZXIuZGVidWcoXCJGOiBcIiArIEcxLnRvU3RyaW5nKEcxLnRvQWZmaW5lKEYpLCAxNikpO1xuICAgIH1cblxuICAgIGNvbnN0IEUgPSBjYWxjdWxhdGVFKGN1cnZlLCBwcm9vZiwgY2hhbGxlbmdlcywgcjApO1xuICAgIGlmIChsb2dnZXIpIHtcbiAgICAgICAgbG9nZ2VyLmRlYnVnKFwiRTogXCIgKyBHMS50b1N0cmluZyhHMS50b0FmZmluZShFKSwgMTYpKTtcbiAgICB9XG5cbiAgICBjb25zdCByZXMgPSBhd2FpdCBpc1ZhbGlkUGFpcmluZyhjdXJ2ZSwgcHJvb2YsIGNoYWxsZW5nZXMsIHZrX3ZlcmlmaWVyLCBFLCBGKTtcblxuICAgIGlmIChsb2dnZXIpIHtcbiAgICAgICAgaWYgKHJlcykge1xuICAgICAgICAgICAgbG9nZ2VyLmluZm8oXCJPSyFcIik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBsb2dnZXIud2FybihcIkludmFsaWQgUHJvb2ZcIik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcmVzO1xufVxuXG5cbmZ1bmN0aW9uIGZyb21PYmplY3RQcm9vZihjdXJ2ZSwgcHJvb2YpIHtcbiAgICBjb25zdCBHMSA9IGN1cnZlLkcxO1xuICAgIGNvbnN0IEZyID0gY3VydmUuRnI7XG4gICAgY29uc3QgcmVzID0ge307XG4gICAgcmVzLkEgPSBHMS5mcm9tT2JqZWN0KHByb29mLkEpO1xuICAgIHJlcy5CID0gRzEuZnJvbU9iamVjdChwcm9vZi5CKTtcbiAgICByZXMuQyA9IEcxLmZyb21PYmplY3QocHJvb2YuQyk7XG4gICAgcmVzLlogPSBHMS5mcm9tT2JqZWN0KHByb29mLlopO1xuICAgIHJlcy5UMSA9IEcxLmZyb21PYmplY3QocHJvb2YuVDEpO1xuICAgIHJlcy5UMiA9IEcxLmZyb21PYmplY3QocHJvb2YuVDIpO1xuICAgIHJlcy5UMyA9IEcxLmZyb21PYmplY3QocHJvb2YuVDMpO1xuICAgIHJlcy5ldmFsX2EgPSBGci5mcm9tT2JqZWN0KHByb29mLmV2YWxfYSk7XG4gICAgcmVzLmV2YWxfYiA9IEZyLmZyb21PYmplY3QocHJvb2YuZXZhbF9iKTtcbiAgICByZXMuZXZhbF9jID0gRnIuZnJvbU9iamVjdChwcm9vZi5ldmFsX2MpO1xuICAgIHJlcy5ldmFsX3p3ID0gRnIuZnJvbU9iamVjdChwcm9vZi5ldmFsX3p3KTtcbiAgICByZXMuZXZhbF9zMSA9IEZyLmZyb21PYmplY3QocHJvb2YuZXZhbF9zMSk7XG4gICAgcmVzLmV2YWxfczIgPSBGci5mcm9tT2JqZWN0KHByb29mLmV2YWxfczIpO1xuICAgIHJlcy5XeGkgPSBHMS5mcm9tT2JqZWN0KHByb29mLld4aSk7XG4gICAgcmVzLld4aXcgPSBHMS5mcm9tT2JqZWN0KHByb29mLld4aXcpO1xuICAgIHJldHVybiByZXM7XG59XG5cbmZ1bmN0aW9uIGZyb21PYmplY3RWayhjdXJ2ZSwgdmspIHtcbiAgICBjb25zdCBHMSA9IGN1cnZlLkcxO1xuICAgIGNvbnN0IEcyID0gY3VydmUuRzI7XG4gICAgY29uc3QgRnIgPSBjdXJ2ZS5GcjtcbiAgICBjb25zdCByZXMgPSB2aztcbiAgICByZXMuUW0gPSBHMS5mcm9tT2JqZWN0KHZrLlFtKTtcbiAgICByZXMuUWwgPSBHMS5mcm9tT2JqZWN0KHZrLlFsKTtcbiAgICByZXMuUXIgPSBHMS5mcm9tT2JqZWN0KHZrLlFyKTtcbiAgICByZXMuUW8gPSBHMS5mcm9tT2JqZWN0KHZrLlFvKTtcbiAgICByZXMuUWMgPSBHMS5mcm9tT2JqZWN0KHZrLlFjKTtcbiAgICByZXMuUzEgPSBHMS5mcm9tT2JqZWN0KHZrLlMxKTtcbiAgICByZXMuUzIgPSBHMS5mcm9tT2JqZWN0KHZrLlMyKTtcbiAgICByZXMuUzMgPSBHMS5mcm9tT2JqZWN0KHZrLlMzKTtcbiAgICByZXMuazEgPSBGci5mcm9tT2JqZWN0KHZrLmsxKTtcbiAgICByZXMuazIgPSBGci5mcm9tT2JqZWN0KHZrLmsyKTtcbiAgICByZXMuWF8yID0gRzIuZnJvbU9iamVjdCh2ay5YXzIpO1xuXG4gICAgcmV0dXJuIHJlcztcbn1cblxuZnVuY3Rpb24gaXNXZWxsQ29uc3RydWN0ZWQoY3VydmUsIHByb29mKSB7XG4gICAgY29uc3QgRzEgPSBjdXJ2ZS5HMTtcbiAgICBpZiAoIUcxLmlzVmFsaWQocHJvb2YuQSkpIHJldHVybiBmYWxzZTtcbiAgICBpZiAoIUcxLmlzVmFsaWQocHJvb2YuQikpIHJldHVybiBmYWxzZTtcbiAgICBpZiAoIUcxLmlzVmFsaWQocHJvb2YuQykpIHJldHVybiBmYWxzZTtcbiAgICBpZiAoIUcxLmlzVmFsaWQocHJvb2YuWikpIHJldHVybiBmYWxzZTtcbiAgICBpZiAoIUcxLmlzVmFsaWQocHJvb2YuVDEpKSByZXR1cm4gZmFsc2U7XG4gICAgaWYgKCFHMS5pc1ZhbGlkKHByb29mLlQyKSkgcmV0dXJuIGZhbHNlO1xuICAgIGlmICghRzEuaXNWYWxpZChwcm9vZi5UMykpIHJldHVybiBmYWxzZTtcbiAgICBpZiAoIUcxLmlzVmFsaWQocHJvb2YuV3hpKSkgcmV0dXJuIGZhbHNlO1xuICAgIGlmICghRzEuaXNWYWxpZChwcm9vZi5XeGl3KSkgcmV0dXJuIGZhbHNlO1xuICAgIHJldHVybiB0cnVlO1xufVxuXG5mdW5jdGlvbiBjYWxjdWxhdGVjaGFsbGVuZ2VzKGN1cnZlLCBwcm9vZiwgcHVibGljU2lnbmFscywgdmspIHtcbiAgICBjb25zdCBGciA9IGN1cnZlLkZyO1xuICAgIGNvbnN0IHJlcyA9IHt9O1xuICAgIGNvbnN0IHRyYW5zY3JpcHQgPSBuZXcgS2VjY2FrMjU2VHJhbnNjcmlwdChjdXJ2ZSk7XG5cbiAgICAvLyBDaGFsbGVuZ2Ugcm91bmQgMjogYmV0YSBhbmQgZ2FtbWFcbiAgICB0cmFuc2NyaXB0LmFkZFBvbENvbW1pdG1lbnQodmsuUW0pO1xuICAgIHRyYW5zY3JpcHQuYWRkUG9sQ29tbWl0bWVudCh2ay5RbCk7XG4gICAgdHJhbnNjcmlwdC5hZGRQb2xDb21taXRtZW50KHZrLlFyKTtcbiAgICB0cmFuc2NyaXB0LmFkZFBvbENvbW1pdG1lbnQodmsuUW8pO1xuICAgIHRyYW5zY3JpcHQuYWRkUG9sQ29tbWl0bWVudCh2ay5RYyk7XG4gICAgdHJhbnNjcmlwdC5hZGRQb2xDb21taXRtZW50KHZrLlMxKTtcbiAgICB0cmFuc2NyaXB0LmFkZFBvbENvbW1pdG1lbnQodmsuUzIpO1xuICAgIHRyYW5zY3JpcHQuYWRkUG9sQ29tbWl0bWVudCh2ay5TMyk7XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHB1YmxpY1NpZ25hbHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdHJhbnNjcmlwdC5hZGRTY2FsYXIoRnIuZShwdWJsaWNTaWduYWxzW2ldKSk7XG4gICAgfVxuXG4gICAgdHJhbnNjcmlwdC5hZGRQb2xDb21taXRtZW50KHByb29mLkEpO1xuICAgIHRyYW5zY3JpcHQuYWRkUG9sQ29tbWl0bWVudChwcm9vZi5CKTtcbiAgICB0cmFuc2NyaXB0LmFkZFBvbENvbW1pdG1lbnQocHJvb2YuQyk7XG5cbiAgICByZXMuYmV0YSA9IHRyYW5zY3JpcHQuZ2V0Q2hhbGxlbmdlKCk7XG5cbiAgICB0cmFuc2NyaXB0LnJlc2V0KCk7XG4gICAgdHJhbnNjcmlwdC5hZGRTY2FsYXIocmVzLmJldGEpO1xuICAgIHJlcy5nYW1tYSA9IHRyYW5zY3JpcHQuZ2V0Q2hhbGxlbmdlKCk7XG5cbiAgICAvLyBDaGFsbGVuZ2Ugcm91bmQgMzogYWxwaGFcbiAgICB0cmFuc2NyaXB0LnJlc2V0KCk7XG4gICAgdHJhbnNjcmlwdC5hZGRTY2FsYXIocmVzLmJldGEpO1xuICAgIHRyYW5zY3JpcHQuYWRkU2NhbGFyKHJlcy5nYW1tYSk7XG4gICAgdHJhbnNjcmlwdC5hZGRQb2xDb21taXRtZW50KHByb29mLlopO1xuICAgIHJlcy5hbHBoYSA9IHRyYW5zY3JpcHQuZ2V0Q2hhbGxlbmdlKCk7XG5cbiAgICAvLyBDaGFsbGVuZ2Ugcm91bmQgNDogeGlcbiAgICB0cmFuc2NyaXB0LnJlc2V0KCk7XG4gICAgdHJhbnNjcmlwdC5hZGRTY2FsYXIocmVzLmFscGhhKTtcbiAgICB0cmFuc2NyaXB0LmFkZFBvbENvbW1pdG1lbnQocHJvb2YuVDEpO1xuICAgIHRyYW5zY3JpcHQuYWRkUG9sQ29tbWl0bWVudChwcm9vZi5UMik7XG4gICAgdHJhbnNjcmlwdC5hZGRQb2xDb21taXRtZW50KHByb29mLlQzKTtcbiAgICByZXMueGkgPSB0cmFuc2NyaXB0LmdldENoYWxsZW5nZSgpO1xuICAgIFxuICAgIC8vIENoYWxsZW5nZSByb3VuZCA1OiB2XG4gICAgdHJhbnNjcmlwdC5yZXNldCgpO1xuICAgIHRyYW5zY3JpcHQuYWRkU2NhbGFyKHJlcy54aSk7XG4gICAgdHJhbnNjcmlwdC5hZGRTY2FsYXIocHJvb2YuZXZhbF9hKTtcbiAgICB0cmFuc2NyaXB0LmFkZFNjYWxhcihwcm9vZi5ldmFsX2IpO1xuICAgIHRyYW5zY3JpcHQuYWRkU2NhbGFyKHByb29mLmV2YWxfYyk7XG4gICAgdHJhbnNjcmlwdC5hZGRTY2FsYXIocHJvb2YuZXZhbF9zMSk7XG4gICAgdHJhbnNjcmlwdC5hZGRTY2FsYXIocHJvb2YuZXZhbF9zMik7XG4gICAgdHJhbnNjcmlwdC5hZGRTY2FsYXIocHJvb2YuZXZhbF96dyk7XG4gICAgcmVzLnYgPSBbXTtcbiAgICByZXMudlsxXSA9IHRyYW5zY3JpcHQuZ2V0Q2hhbGxlbmdlKCk7XG5cbiAgICBmb3IgKGxldCBpPTI7IGk8NjsgaSsrICkgcmVzLnZbaV0gPSBGci5tdWwocmVzLnZbaS0xXSwgcmVzLnZbMV0pO1xuXG4gICAgLy8gQ2hhbGxlbmdlOiB1XG4gICAgdHJhbnNjcmlwdC5yZXNldCgpO1xuICAgIHRyYW5zY3JpcHQuYWRkUG9sQ29tbWl0bWVudChwcm9vZi5XeGkpO1xuICAgIHRyYW5zY3JpcHQuYWRkUG9sQ29tbWl0bWVudChwcm9vZi5XeGl3KTtcbiAgICByZXMudSA9IHRyYW5zY3JpcHQuZ2V0Q2hhbGxlbmdlKCk7XG5cbiAgICByZXR1cm4gcmVzO1xufVxuXG5mdW5jdGlvbiBjYWxjdWxhdGVMYWdyYW5nZUV2YWx1YXRpb25zKGN1cnZlLCBjaGFsbGVuZ2VzLCB2aykge1xuICAgIGNvbnN0IEZyID0gY3VydmUuRnI7XG5cbiAgICBsZXQgeGluID0gY2hhbGxlbmdlcy54aTtcbiAgICBsZXQgZG9tYWluU2l6ZSA9IDE7XG4gICAgZm9yIChsZXQgaT0wOyBpPHZrLnBvd2VyOyBpKyspIHtcbiAgICAgICAgeGluID0gRnIuc3F1YXJlKHhpbik7XG4gICAgICAgIGRvbWFpblNpemUgKj0gMjtcbiAgICB9XG4gICAgY2hhbGxlbmdlcy54aW4gPSB4aW47XG5cbiAgICBjaGFsbGVuZ2VzLnpoID0gRnIuc3ViKHhpbiwgRnIub25lKTtcblxuICAgIGNvbnN0IEwgPSBbXTtcblxuICAgIGNvbnN0IG4gPSBGci5lKGRvbWFpblNpemUpO1xuICAgIGxldCB3ID0gRnIub25lO1xuICAgIGZvciAobGV0IGk9MTsgaTw9TWF0aC5tYXgoMSwgdmsublB1YmxpYyk7IGkrKykge1xuICAgICAgICBMW2ldID0gRnIuZGl2KEZyLm11bCh3LCBjaGFsbGVuZ2VzLnpoKSwgRnIubXVsKG4sIEZyLnN1YihjaGFsbGVuZ2VzLnhpLCB3KSkpO1xuICAgICAgICB3ID0gRnIubXVsKHcsIEZyLndbdmsucG93ZXJdKTtcbiAgICB9XG5cbiAgICByZXR1cm4gTDtcbn1cblxuZnVuY3Rpb24gY2FsY3VsYXRlUEkoY3VydmUsIHB1YmxpY1NpZ25hbHMsIEwpIHtcbiAgICBjb25zdCBGciA9IGN1cnZlLkZyO1xuXG4gICAgbGV0IHBpID0gRnIuemVybztcbiAgICBmb3IgKGxldCBpPTA7IGk8cHVibGljU2lnbmFscy5sZW5ndGg7IGkrKykgeyAgICAgICAgXG4gICAgICAgIGNvbnN0IHcgPSBGci5lKHB1YmxpY1NpZ25hbHNbaV0pO1xuICAgICAgICBwaSA9IEZyLnN1YihwaSwgRnIubXVsKHcsIExbaSsxXSkpO1xuICAgIH1cbiAgICByZXR1cm4gcGk7XG59XG5cbmZ1bmN0aW9uIGNhbGN1bGF0ZVIwKGN1cnZlLCBwcm9vZiwgY2hhbGxlbmdlcywgcGksIGwxKSB7XG4gICAgY29uc3QgRnIgPSBjdXJ2ZS5GcjtcblxuICAgIGNvbnN0IGUxID0gcGk7XG5cbiAgICBjb25zdCBlMiA9IEZyLm11bChsMSwgRnIuc3F1YXJlKGNoYWxsZW5nZXMuYWxwaGEpKTtcblxuICAgIGxldCBlM2EgPSBGci5hZGQocHJvb2YuZXZhbF9hLCBGci5tdWwoY2hhbGxlbmdlcy5iZXRhLCBwcm9vZi5ldmFsX3MxKSk7XG4gICAgZTNhID0gRnIuYWRkKGUzYSwgY2hhbGxlbmdlcy5nYW1tYSk7XG5cbiAgICBsZXQgZTNiID0gRnIuYWRkKHByb29mLmV2YWxfYiwgRnIubXVsKGNoYWxsZW5nZXMuYmV0YSwgcHJvb2YuZXZhbF9zMikpO1xuICAgIGUzYiA9IEZyLmFkZChlM2IsIGNoYWxsZW5nZXMuZ2FtbWEpO1xuXG4gICAgbGV0IGUzYyA9IEZyLmFkZChwcm9vZi5ldmFsX2MsIGNoYWxsZW5nZXMuZ2FtbWEpO1xuXG4gICAgbGV0IGUzID0gRnIubXVsKEZyLm11bChlM2EsIGUzYiksIGUzYyk7XG4gICAgZTMgPSBGci5tdWwoZTMsIHByb29mLmV2YWxfencpO1xuICAgIGUzID0gRnIubXVsKGUzLCBjaGFsbGVuZ2VzLmFscGhhKTtcblxuICAgIGNvbnN0IHIwID0gRnIuc3ViKEZyLnN1YihlMSwgZTIpLCBlMyk7XG5cbiAgICByZXR1cm4gcjA7XG59XG5cbmZ1bmN0aW9uIGNhbGN1bGF0ZUQoY3VydmUsIHByb29mLCBjaGFsbGVuZ2VzLCB2aywgbDEpIHtcbiAgICBjb25zdCBHMSA9IGN1cnZlLkcxO1xuICAgIGNvbnN0IEZyID0gY3VydmUuRnI7XG4gICAgXG4gICAgbGV0IGQxID0gRzEudGltZXNGcih2ay5RbSwgRnIubXVsKHByb29mLmV2YWxfYSwgcHJvb2YuZXZhbF9iKSk7XG4gICAgZDEgPSBHMS5hZGQoZDEsIEcxLnRpbWVzRnIodmsuUWwsIHByb29mLmV2YWxfYSkpO1xuICAgIGQxID0gRzEuYWRkKGQxLCBHMS50aW1lc0ZyKHZrLlFyLCBwcm9vZi5ldmFsX2IpKTtcbiAgICBkMSA9IEcxLmFkZChkMSwgRzEudGltZXNGcih2ay5RbywgcHJvb2YuZXZhbF9jKSk7XG4gICAgZDEgPSBHMS5hZGQoZDEsIHZrLlFjKTtcblxuICAgIGNvbnN0IGJldGF4aSA9IEZyLm11bChjaGFsbGVuZ2VzLmJldGEsIGNoYWxsZW5nZXMueGkpO1xuXG4gICAgY29uc3QgZDJhMSA9IEZyLmFkZChGci5hZGQocHJvb2YuZXZhbF9hLCBiZXRheGkpLCBjaGFsbGVuZ2VzLmdhbW1hKTtcbiAgICBjb25zdCBkMmEyID0gRnIuYWRkKEZyLmFkZChwcm9vZi5ldmFsX2IsIEZyLm11bChiZXRheGksIHZrLmsxKSksIGNoYWxsZW5nZXMuZ2FtbWEpO1xuICAgIGNvbnN0IGQyYTMgPSBGci5hZGQoRnIuYWRkKHByb29mLmV2YWxfYywgRnIubXVsKGJldGF4aSwgdmsuazIpKSwgY2hhbGxlbmdlcy5nYW1tYSk7XG5cbiAgICBjb25zdCBkMmEgPSBGci5tdWwoRnIubXVsKEZyLm11bChkMmExLCBkMmEyKSwgZDJhMyksIGNoYWxsZW5nZXMuYWxwaGEpO1xuXG4gICAgY29uc3QgZDJiID0gRnIubXVsKGwxLCBGci5zcXVhcmUoY2hhbGxlbmdlcy5hbHBoYSkpO1xuXG4gICAgY29uc3QgZDIgPSBHMS50aW1lc0ZyKHByb29mLlosIEZyLmFkZChGci5hZGQoZDJhLCBkMmIpLCBjaGFsbGVuZ2VzLnUpKTtcblxuICAgIGNvbnN0IGQzYSA9IEZyLmFkZChGci5hZGQocHJvb2YuZXZhbF9hLCBGci5tdWwoY2hhbGxlbmdlcy5iZXRhLCBwcm9vZi5ldmFsX3MxKSksIGNoYWxsZW5nZXMuZ2FtbWEpO1xuICAgIGNvbnN0IGQzYiA9IEZyLmFkZChGci5hZGQocHJvb2YuZXZhbF9iLCBGci5tdWwoY2hhbGxlbmdlcy5iZXRhLCBwcm9vZi5ldmFsX3MyKSksIGNoYWxsZW5nZXMuZ2FtbWEpO1xuICAgIGNvbnN0IGQzYyA9IEZyLm11bChGci5tdWwoY2hhbGxlbmdlcy5hbHBoYSwgY2hhbGxlbmdlcy5iZXRhKSwgcHJvb2YuZXZhbF96dyk7XG5cbiAgICBjb25zdCBkMyA9IEcxLnRpbWVzRnIodmsuUzMsIEZyLm11bChGci5tdWwoZDNhLCBkM2IpLCBkM2MpKTtcbiAgICBcbiAgICBjb25zdCBkNGxvdyA9IHByb29mLlQxO1xuICAgIGNvbnN0IGQ0bWlkID0gRzEudGltZXNGcihwcm9vZi5UMiwgY2hhbGxlbmdlcy54aW4pO1xuICAgIGNvbnN0IGQ0aGlnaCA9IEcxLnRpbWVzRnIocHJvb2YuVDMsIEZyLnNxdWFyZShjaGFsbGVuZ2VzLnhpbikpO1xuICAgIGxldCBkNCA9IEcxLmFkZChkNGxvdywgRzEuYWRkKGQ0bWlkLCBkNGhpZ2gpKTtcbiAgICBkNCA9IEcxLnRpbWVzRnIoZDQsIGNoYWxsZW5nZXMuemgpO1xuXG4gICAgY29uc3QgZCA9IEcxLnN1YihHMS5zdWIoRzEuYWRkKGQxLCBkMiksIGQzKSwgZDQpO1xuXG4gICAgcmV0dXJuIGQ7XG59XG5cbmZ1bmN0aW9uIGNhbGN1bGF0ZUYoY3VydmUsIHByb29mLCBjaGFsbGVuZ2VzLCB2aywgRCkge1xuICAgIGNvbnN0IEcxID0gY3VydmUuRzE7XG5cbiAgICBsZXQgcmVzID0gRzEuYWRkKEQsIEcxLnRpbWVzRnIocHJvb2YuQSwgY2hhbGxlbmdlcy52WzFdKSk7XG4gICAgcmVzID0gRzEuYWRkKHJlcywgRzEudGltZXNGcihwcm9vZi5CLCBjaGFsbGVuZ2VzLnZbMl0pKTtcbiAgICByZXMgPSBHMS5hZGQocmVzLCBHMS50aW1lc0ZyKHByb29mLkMsIGNoYWxsZW5nZXMudlszXSkpO1xuICAgIHJlcyA9IEcxLmFkZChyZXMsIEcxLnRpbWVzRnIodmsuUzEsIGNoYWxsZW5nZXMudls0XSkpO1xuICAgIHJlcyA9IEcxLmFkZChyZXMsIEcxLnRpbWVzRnIodmsuUzIsIGNoYWxsZW5nZXMudls1XSkpO1xuXG4gICAgcmV0dXJuIHJlcztcbn1cblxuZnVuY3Rpb24gY2FsY3VsYXRlRShjdXJ2ZSwgcHJvb2YsIGNoYWxsZW5nZXMsIHIwKSB7XG4gICAgY29uc3QgRzEgPSBjdXJ2ZS5HMTtcbiAgICBjb25zdCBGciA9IGN1cnZlLkZyO1xuXG4gICAgbGV0IGUgPSBGci5hZGQoRnIubmVnKHIwKSwgRnIubXVsKGNoYWxsZW5nZXMudlsxXSwgcHJvb2YuZXZhbF9hKSk7XG4gICAgZSA9IEZyLmFkZChlLCBGci5tdWwoY2hhbGxlbmdlcy52WzJdLCBwcm9vZi5ldmFsX2IpKTtcbiAgICBlID0gRnIuYWRkKGUsIEZyLm11bChjaGFsbGVuZ2VzLnZbM10sIHByb29mLmV2YWxfYykpO1xuICAgIGUgPSBGci5hZGQoZSwgRnIubXVsKGNoYWxsZW5nZXMudls0XSwgcHJvb2YuZXZhbF9zMSkpO1xuICAgIGUgPSBGci5hZGQoZSwgRnIubXVsKGNoYWxsZW5nZXMudls1XSwgcHJvb2YuZXZhbF9zMikpO1xuICAgIGUgPSBGci5hZGQoZSwgRnIubXVsKGNoYWxsZW5nZXMudSwgcHJvb2YuZXZhbF96dykpO1xuXG4gICAgY29uc3QgcmVzID0gRzEudGltZXNGcihHMS5vbmUsIGUpO1xuXG4gICAgcmV0dXJuIHJlcztcbn1cblxuYXN5bmMgZnVuY3Rpb24gaXNWYWxpZFBhaXJpbmcoY3VydmUsIHByb29mLCBjaGFsbGVuZ2VzLCB2aywgRSwgRikge1xuICAgIGNvbnN0IEcxID0gY3VydmUuRzE7XG4gICAgY29uc3QgRnIgPSBjdXJ2ZS5GcjtcblxuICAgIGxldCBBMSA9IHByb29mLld4aTtcbiAgICBBMSA9IEcxLmFkZChBMSwgRzEudGltZXNGcihwcm9vZi5XeGl3LCBjaGFsbGVuZ2VzLnUpKTtcblxuICAgIGxldCBCMSA9IEcxLnRpbWVzRnIocHJvb2YuV3hpLCBjaGFsbGVuZ2VzLnhpKTtcbiAgICBjb25zdCBzID0gRnIubXVsKEZyLm11bChjaGFsbGVuZ2VzLnUsIGNoYWxsZW5nZXMueGkpLCBGci53W3ZrLnBvd2VyXSk7XG4gICAgQjEgPSBHMS5hZGQoQjEsIEcxLnRpbWVzRnIocHJvb2YuV3hpdywgcykpO1xuICAgIEIxID0gRzEuYWRkKEIxLCBGKTtcbiAgICBCMSA9IEcxLnN1YihCMSwgRSk7XG5cbiAgICBjb25zdCByZXMgPSBhd2FpdCBjdXJ2ZS5wYWlyaW5nRXEoXG4gICAgICAgIEcxLm5lZyhBMSkgLCB2ay5YXzIsXG4gICAgICAgIEIxICwgY3VydmUuRzIub25lXG4gICAgKTtcblxuICAgIHJldHVybiByZXM7XG59XG4iLCIvKlxuICAgIENvcHlyaWdodCAyMDIxIDBLSU1TIGFzc29jaWF0aW9uLlxuXG4gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2Ygc25hcmtKUy5cblxuICAgIHNuYXJrSlMgaXMgYSBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0XG4gICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxuICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG5cbiAgICBzbmFya0pTIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUXG4gICAgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZXG4gICAgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljXG4gICAgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuXG4gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAgICBhbG9uZyB3aXRoIHNuYXJrSlMuIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXG4qL1xuXG5pbXBvcnQgeyBnZXRDdXJ2ZUZyb21OYW1lIH0gZnJvbSBcIi4vY3VydmVzLmpzXCI7XG5pbXBvcnQgeyAgdXRpbHMgfSAgIGZyb20gXCJmZmphdmFzY3JpcHRcIjtcbmNvbnN0IHsgdW5zdHJpbmdpZnlCaWdJbnRzfSA9IHV0aWxzO1xuXG5mdW5jdGlvbiBpMmhleChpKSB7XG4gICAgcmV0dXJuIChcIjBcIiArIGkudG9TdHJpbmcoMTYpKS5zbGljZSgtMik7XG59XG5cbmZ1bmN0aW9uIHAyNTYobikge1xuICAgIGxldCBuc3RyID0gbi50b1N0cmluZygxNik7XG4gICAgd2hpbGUgKG5zdHIubGVuZ3RoIDwgNjQpIG5zdHIgPSBcIjBcIituc3RyO1xuICAgIG5zdHIgPSBgXCIweCR7bnN0cn1cImA7XG4gICAgcmV0dXJuIG5zdHI7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGFzeW5jIGZ1bmN0aW9uIHBsb25rRXhwb3J0U29saWRpdHlDYWxsRGF0YShfcHJvb2YsIF9wdWIpIHtcbiAgICBjb25zdCBwcm9vZiA9IHVuc3RyaW5naWZ5QmlnSW50cyhfcHJvb2YpO1xuICAgIGNvbnN0IHB1YiA9IHVuc3RyaW5naWZ5QmlnSW50cyhfcHViKTtcblxuICAgIGNvbnN0IGN1cnZlID0gYXdhaXQgZ2V0Q3VydmVGcm9tTmFtZShwcm9vZi5jdXJ2ZSk7XG4gICAgY29uc3QgRzEgPSBjdXJ2ZS5HMTtcbiAgICBjb25zdCBGciA9IGN1cnZlLkZyO1xuXG4gICAgbGV0IGlucHV0cyA9IFwiXCI7XG4gICAgZm9yIChsZXQgaT0wOyBpPHB1Yi5sZW5ndGg7IGkrKykge1xuICAgICAgICBpZiAoaW5wdXRzICE9IFwiXCIpIGlucHV0cyA9IGlucHV0cyArIFwiLFwiO1xuICAgICAgICBpbnB1dHMgPSBpbnB1dHMgKyBwMjU2KHB1YltpXSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGBbJHtwMjU2KHByb29mLkFbMF0pfSwgJHtwMjU2KHByb29mLkFbMV0pfSxgICtcbiAgICBgJHtwMjU2KHByb29mLkJbMF0pfSwke3AyNTYocHJvb2YuQlsxXSl9LGAgK1xuICAgIGAke3AyNTYocHJvb2YuQ1swXSl9LCR7cDI1Nihwcm9vZi5DWzFdKX0sYCArXG4gICAgYCR7cDI1Nihwcm9vZi5aWzBdKX0sJHtwMjU2KHByb29mLlpbMV0pfSxgICtcbiAgICBgJHtwMjU2KHByb29mLlQxWzBdKX0sJHtwMjU2KHByb29mLlQxWzFdKX0sYCArXG4gICAgYCR7cDI1Nihwcm9vZi5UMlswXSl9LCR7cDI1Nihwcm9vZi5UMlsxXSl9LGAgK1xuICAgIGAke3AyNTYocHJvb2YuVDNbMF0pfSwke3AyNTYocHJvb2YuVDNbMV0pfSxgICtcbiAgICBgJHtwMjU2KHByb29mLld4aVswXSl9LCR7cDI1Nihwcm9vZi5XeGlbMV0pfSxgICtcbiAgICBgJHtwMjU2KHByb29mLld4aXdbMF0pfSwke3AyNTYocHJvb2YuV3hpd1sxXSl9LGAgK1xuICAgIGAke3AyNTYocHJvb2YuZXZhbF9hKX0sYCArIFxuICAgIGAke3AyNTYocHJvb2YuZXZhbF9iKX0sYCArIFxuICAgIGAke3AyNTYocHJvb2YuZXZhbF9jKX0sYCArIFxuICAgIGAke3AyNTYocHJvb2YuZXZhbF9zMSl9LGAgKyBcbiAgICBgJHtwMjU2KHByb29mLmV2YWxfczIpfSxgICsgXG4gICAgYCR7cDI1Nihwcm9vZi5ldmFsX3p3KX1dYCArIFxuICAgIGBbJHtpbnB1dHN9XWA7XG59XG4iLCIvKlxuICAgIENvcHlyaWdodCAyMDE4IDBLSU1TIGFzc29jaWF0aW9uLlxuXG4gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2Ygc25hcmtKUy5cblxuICAgIHNuYXJrSlMgaXMgYSBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0XG4gICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxuICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG5cbiAgICBzbmFya0pTIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUXG4gICAgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZXG4gICAgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljXG4gICAgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuXG4gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAgICBhbG9uZyB3aXRoIHNuYXJrSlMuIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXG4qL1xuXG4vLyBaS0VZIGNvbnN0YW50c1xuZXhwb3J0IHtkZWZhdWx0IGFzIHNldHVwfSBmcm9tIFwiLi9wbG9ua19zZXR1cC5qc1wiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIGZ1bGxQcm92ZX0gZnJvbSBcIi4vcGxvbmtfZnVsbHByb3ZlLmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgcHJvdmV9IGZyb20gXCIuL3Bsb25rX3Byb3ZlLmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgdmVyaWZ5fSBmcm9tIFwiLi9wbG9ua192ZXJpZnkuanNcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBleHBvcnRTb2xpZGl0eUNhbGxEYXRhfSBmcm9tIFwiLi9wbG9ua19leHBvcnRzb2xpZGl0eWNhbGxkYXRhLmpzXCI7XG4iLCIvKlxuICAgIENvcHlyaWdodCAyMDIyIGlkZW4zIGFzc29jaWF0aW9uLlxuXG4gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2Ygc25hcmtqcy5cblxuICAgIHNuYXJranMgaXMgYSBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3JcbiAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlXG4gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pXG4gICAgYW55IGxhdGVyIHZlcnNpb24uXG5cbiAgICBzbmFya2pzIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZXG4gICAgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yXG4gICAgbW9yZSBkZXRhaWxzLlxuXG4gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcgd2l0aFxuICAgIHNuYXJranMuIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXG4qL1xuXG4vLyBXZSBleHBvcnQgdG8gemtleSB0aGUgc2lnbmFscyBhbmQgdmFsdWVzIG9mIHRoZSBhLCBiLCBjLCBxbCwgcXIsIHFtLCBxbyBhbmQgcWNcblxuLy8gYSwgYiBhbmQgYyBhcmUgc2lnbmFscyBpZCAoMzItYml0IGludGVnZXJzKVxuLy8gcWwsIHFyLCBxbSwgcW8gYW5kIHFjIGFyZSBmaWVsZCB2YWx1ZXNcblxuZXhwb3J0IGZ1bmN0aW9uIGdldEZGbG9ua0NvbnN0YW50Q29uc3RyYWludChzaWduYWwxLCBGcikge1xuICAgIHJldHVybiBbc2lnbmFsMSwgMCwgMCwgRnIub25lLCBGci56ZXJvLCBGci56ZXJvLCBGci56ZXJvLCBGci56ZXJvXTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEZGbG9ua0FkZGl0aW9uQ29uc3RyYWludChzaWduYWwxLCBzaWduYWwyLCBzaWduYWxPdXQsIHFsLCBxciwgcW0sIHFvLCBxYykge1xuICAgIHJldHVybiBbc2lnbmFsMSwgc2lnbmFsMiwgc2lnbmFsT3V0LCBxbCwgcXIsIHFtLCBxbywgcWNdO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0RkZsb25rTXVsdGlwbGljYXRpb25Db25zdHJhaW50KHNpZ25hbDEsIHNpZ25hbDIsIHNpZ25hbE91dCwgcWwsIHFyLCBxbSwgcW8sIHFjLCBGcikge1xuICAgIHJldHVybiBbc2lnbmFsMSwgc2lnbmFsMiwgc2lnbmFsT3V0LCBxbCwgcXIsIHFtLCBxbywgcWNdO1xufVxuIiwiLypcbiAgICBDb3B5cmlnaHQgMjAyMiBpZGVuMyBhc3NvY2lhdGlvbi5cblxuICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHNuYXJranMuXG5cbiAgICBzbmFya2pzIGlzIGEgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yXG4gICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZVxuICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKVxuICAgIGFueSBsYXRlciB2ZXJzaW9uLlxuXG4gICAgc25hcmtqcyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWVxuICAgIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvclxuICAgIG1vcmUgZGV0YWlscy5cblxuICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nIHdpdGhcbiAgICBzbmFya2pzLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuKi9cblxuY29uc3QgTElORUFSX0NPTUJJTkFUSU9OX05VTExBQkxFID0gMDtcbmNvbnN0IExJTkVBUl9DT01CSU5BVElPTl9DT05TVEFOVCA9IDE7XG5jb25zdCBMSU5FQVJfQ09NQklOQVRJT05fVkFSSUFCTEUgPSAyO1xuXG5leHBvcnQgY2xhc3MgcjFjc0NvbnN0cmFpbnRQcm9jZXNzb3Ige1xuICAgIGNvbnN0cnVjdG9yKEZyLCBmbkdldENvbnN0YW50Q29uc3RyYWludCwgZm5HZXRBZGRpdGlvbkNvbnN0cmFpbnQsIGZuR2V0TXVsdGlwbGljYXRpb25Db25zdHJhaW50LCBsb2dnZXIpIHtcbiAgICAgICAgdGhpcy5GciA9IEZyO1xuICAgICAgICB0aGlzLmxvZ2dlciA9IGxvZ2dlcjtcbiAgICAgICAgdGhpcy5mbkdldEFkZGl0aW9uQ29uc3RyYWludCA9IGZuR2V0QWRkaXRpb25Db25zdHJhaW50O1xuICAgICAgICB0aGlzLmZuR2V0TXVsdGlwbGljYXRpb25Db25zdHJhaW50ID0gZm5HZXRNdWx0aXBsaWNhdGlvbkNvbnN0cmFpbnQ7XG4gICAgfVxuXG4gICAgcHJvY2Vzc1IxY3NDb25zdHJhaW50KHNldHRpbmdzLCBsY0EsIGxjQiwgbGNDKSB7XG4gICAgICAgIHRoaXMubm9ybWFsaXplTGluZWFyQ29tYmluYXRpb24obGNBKTtcbiAgICAgICAgdGhpcy5ub3JtYWxpemVMaW5lYXJDb21iaW5hdGlvbihsY0IpO1xuICAgICAgICB0aGlzLm5vcm1hbGl6ZUxpbmVhckNvbWJpbmF0aW9uKGxjQyk7XG5cbiAgICAgICAgY29uc3QgbGN0QSA9IHRoaXMuZ2V0TGluZWFyQ29tYmluYXRpb25UeXBlKGxjQSk7XG4gICAgICAgIGNvbnN0IGxjdEIgPSB0aGlzLmdldExpbmVhckNvbWJpbmF0aW9uVHlwZShsY0IpO1xuXG4gICAgICAgIGlmICgobGN0QSA9PT0gTElORUFSX0NPTUJJTkFUSU9OX05VTExBQkxFKSB8fCAobGN0QiA9PT0gTElORUFSX0NPTUJJTkFUSU9OX05VTExBQkxFKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMucHJvY2Vzc1IxY3NBZGRpdGlvbkNvbnN0cmFpbnQoc2V0dGluZ3MsIGxjQyk7XG4gICAgICAgIH0gZWxzZSBpZiAobGN0QSA9PT0gTElORUFSX0NPTUJJTkFUSU9OX0NPTlNUQU5UKSB7XG4gICAgICAgICAgICBjb25zdCBsY0NDID0gdGhpcy5qb2luTGluZWFyQ29tYmluYXRpb25zKGxjQiwgbGNDLCBsY0FbMF0pO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMucHJvY2Vzc1IxY3NBZGRpdGlvbkNvbnN0cmFpbnQoc2V0dGluZ3MsIGxjQ0MpO1xuICAgICAgICB9IGVsc2UgaWYgKGxjdEIgPT09IExJTkVBUl9DT01CSU5BVElPTl9DT05TVEFOVCkge1xuICAgICAgICAgICAgY29uc3QgbGNDQyA9IHRoaXMuam9pbkxpbmVhckNvbWJpbmF0aW9ucyhsY0EsIGxjQywgbGNCWzBdKTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnByb2Nlc3NSMWNzQWRkaXRpb25Db25zdHJhaW50KHNldHRpbmdzLCBsY0NDKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnByb2Nlc3NSMWNzTXVsdGlwbGljYXRpb25Db25zdHJhaW50KHNldHRpbmdzLCBsY0EsIGxjQiwgbGNDKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGdldExpbmVhckNvbWJpbmF0aW9uVHlwZShsaW5Db20pIHtcbiAgICAgICAgLy8gbGV0IGsgPSB0aGlzLkZyLnplcm87XG4gICAgICAgIC8vXG4gICAgICAgIC8vIGNvbnN0IHNpZ25hbElkcyA9IE9iamVjdC5rZXlzKGxpbkNvbSk7XG4gICAgICAgIC8vIGZvciAobGV0IGkgPSAwOyBpIDwgc2lnbmFsSWRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIC8vICAgICBpZiAoc2lnbmFsSWRzW2ldID09PSBcIjBcIikge1xuICAgICAgICAvLyAgICAgICAgIGsgPSB0aGlzLkZyLmFkZChrLCBsaW5Db21bc2lnbmFsSWRzW2ldXSk7XG4gICAgICAgIC8vICAgICB9IGVsc2Uge1xuICAgICAgICAvLyAgICAgICAgIHJldHVybiBMSU5FQVJfQ09NQklOQVRJT05fVkFSSUFCTEU7XG4gICAgICAgIC8vICAgICB9XG4gICAgICAgIC8vIH1cbiAgICAgICAgLy9cbiAgICAgICAgLy8gaWYgKCF0aGlzLkZyLmVxKGssIHRoaXMuRnIuemVybykpIHJldHVybiBMSU5FQVJfQ09NQklOQVRJT05fQ09OU1RBTlQ7XG4gICAgICAgIC8vXG4gICAgICAgIC8vIHJldHVybiBMSU5FQVJfQ09NQklOQVRJT05fTlVMTEFCTEU7XG5cbiAgICAgICAgbGV0IGsgPSB0aGlzLkZyLnplcm87XG4gICAgICAgIGxldCBuID0gMDtcbiAgICAgICAgY29uc3Qgc3MgPSBPYmplY3Qua2V5cyhsaW5Db20pO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBpZiAobGluQ29tW3NzW2ldXSA9PSAwbikge1xuICAgICAgICAgICAgICAgIGRlbGV0ZSBsaW5Db21bc3NbaV1dO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChzc1tpXSA9PSAwKSB7XG4gICAgICAgICAgICAgICAgayA9IHRoaXMuRnIuYWRkKGssIGxpbkNvbVtzc1tpXV0pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBuKys7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG4gPiAwKSByZXR1cm4gTElORUFSX0NPTUJJTkFUSU9OX1ZBUklBQkxFO1xuICAgICAgICBpZiAoIXRoaXMuRnIuaXNaZXJvKGspKSByZXR1cm4gTElORUFSX0NPTUJJTkFUSU9OX0NPTlNUQU5UO1xuICAgICAgICByZXR1cm4gTElORUFSX0NPTUJJTkFUSU9OX05VTExBQkxFO1xuICAgIH1cblxuICAgIG5vcm1hbGl6ZUxpbmVhckNvbWJpbmF0aW9uKGxpbkNvbSkge1xuICAgICAgICBjb25zdCBzaWduYWxJZHMgPSBPYmplY3Qua2V5cyhsaW5Db20pO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNpZ25hbElkcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgaWYgKHRoaXMuRnIuaXNaZXJvKGxpbkNvbVtzaWduYWxJZHNbaV1dKSkgZGVsZXRlIGxpbkNvbVtzaWduYWxJZHNbaV1dO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGxpbkNvbTtcbiAgICB9XG5cbiAgICBqb2luTGluZWFyQ29tYmluYXRpb25zKGxpbkNvbTEsIGxpbkNvbTIsIGspIHtcbiAgICAgICAgY29uc3QgcmVzID0ge307XG5cbiAgICAgICAgLy8gZm9yIChsZXQgcyBpbiBsaW5Db20xKSB7XG4gICAgICAgIC8vICAgICBjb25zdCB2YWwgPSB0aGlzLkZyLm11bChrLCBsaW5Db20xW3NdKTtcbiAgICAgICAgLy8gICAgIHJlc1tzXSA9ICEocyBpbiByZXMpID8gdmFsIDogdGhpcy5Gci5hZGQodmFsLCByZXNbc10pO1xuICAgICAgICAvLyB9XG4gICAgICAgIC8vXG4gICAgICAgIC8vIGZvciAobGV0IHMgaW4gbGluQ29tMikge1xuICAgICAgICAvLyAgICAgY29uc3QgdmFsID0gdGhpcy5Gci5tdWwoaywgbGluQ29tMltzXSk7XG4gICAgICAgIC8vICAgICByZXNbc10gPSAhKHMgaW4gcmVzKSA/IHZhbCA6IHRoaXMuRnIuYWRkKHZhbCwgcmVzW3NdKTtcbiAgICAgICAgLy8gfVxuXG4gICAgICAgIGZvciAobGV0IHMgaW4gbGluQ29tMSkge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiByZXNbc10gPT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgICAgICAgICAgIHJlc1tzXSA9IHRoaXMuRnIubXVsKGssIGxpbkNvbTFbc10pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXNbc10gPSB0aGlzLkZyLmFkZChyZXNbc10sIHRoaXMuRnIubXVsKGssIGxpbkNvbTFbc10pKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGZvciAobGV0IHMgaW4gbGluQ29tMikge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiByZXNbc10gPT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgICAgICAgICAgIHJlc1tzXSA9IGxpbkNvbTJbc107XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJlc1tzXSA9IHRoaXMuRnIuYWRkKHJlc1tzXSwgbGluQ29tMltzXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5ub3JtYWxpemVMaW5lYXJDb21iaW5hdGlvbihyZXMpO1xuICAgIH1cblxuICAgIHJlZHVjZUNvZWZzKHNldHRpbmdzLCBjb25zdHJhaW50c0FyciwgYWRkaXRpb25zQXJyLCBsaW5Db20sIG1heEMpIHtcbiAgICAgICAgY29uc3QgcmVzID0ge1xuICAgICAgICAgICAgazogdGhpcy5Gci56ZXJvLFxuICAgICAgICAgICAgc2lnbmFsczogW10sXG4gICAgICAgICAgICBjb2VmczogW11cbiAgICAgICAgfTtcbiAgICAgICAgY29uc3QgY3MgPSBbXTtcblxuICAgICAgICBmb3IgKGxldCBzaWduYWxJZCBpbiBsaW5Db20pIHtcbiAgICAgICAgICAgIGlmIChzaWduYWxJZCA9PSAwKSB7XG4gICAgICAgICAgICAgICAgcmVzLmsgPSB0aGlzLkZyLmFkZChyZXMuaywgbGluQ29tW3NpZ25hbElkXSk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGxpbkNvbVtzaWduYWxJZF0gIT0gMG4pIHtcbiAgICAgICAgICAgICAgICBjcy5wdXNoKFtOdW1iZXIoc2lnbmFsSWQpLCBsaW5Db21bc2lnbmFsSWRdXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB3aGlsZSAoY3MubGVuZ3RoID4gbWF4Qykge1xuICAgICAgICAgICAgY29uc3QgYzEgPSBjcy5zaGlmdCgpO1xuICAgICAgICAgICAgY29uc3QgYzIgPSBjcy5zaGlmdCgpO1xuICAgICAgICAgICAgY29uc3Qgc28gPSBzZXR0aW5ncy5uVmFycysrO1xuXG4gICAgICAgICAgICBjb25zdCBjb25zdHJhaW50cyA9IHRoaXMuZm5HZXRBZGRpdGlvbkNvbnN0cmFpbnQoXG4gICAgICAgICAgICAgICAgYzFbMF0sIGMyWzBdLCBzbyxcbiAgICAgICAgICAgICAgICB0aGlzLkZyLm5lZyhjMVsxXSksIHRoaXMuRnIubmVnKGMyWzFdKSwgdGhpcy5Gci56ZXJvLCB0aGlzLkZyLm9uZSwgdGhpcy5Gci56ZXJvKTtcblxuICAgICAgICAgICAgY29uc3RyYWludHNBcnIucHVzaChjb25zdHJhaW50cyk7XG4gICAgICAgICAgICBhZGRpdGlvbnNBcnIucHVzaChbYzFbMF0sIGMyWzBdLCBjMVsxXSwgYzJbMV1dKTtcblxuICAgICAgICAgICAgY3MucHVzaChbc28sIHRoaXMuRnIub25lXSk7XG4gICAgICAgIH1cblxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICByZXMuc2lnbmFsc1tpXSA9IGNzW2ldWzBdO1xuICAgICAgICAgICAgcmVzLmNvZWZzW2ldID0gY3NbaV1bMV07XG4gICAgICAgIH1cblxuICAgICAgICB3aGlsZSAocmVzLmNvZWZzLmxlbmd0aCA8IG1heEMpIHtcbiAgICAgICAgICAgIHJlcy5zaWduYWxzLnB1c2goMCk7XG4gICAgICAgICAgICByZXMuY29lZnMucHVzaCh0aGlzLkZyLnplcm8pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG5cbiAgICBwcm9jZXNzUjFjc0FkZGl0aW9uQ29uc3RyYWludChzZXR0aW5ncywgbGluQ29tKSB7XG4gICAgICAgIGNvbnN0IGNvbnN0cmFpbnRzQXJyID0gW107XG4gICAgICAgIGNvbnN0IGFkZGl0aW9uc0FyciA9IFtdO1xuXG4gICAgICAgIGNvbnN0IEMgPSB0aGlzLnJlZHVjZUNvZWZzKHNldHRpbmdzLCBjb25zdHJhaW50c0FyciwgYWRkaXRpb25zQXJyLCBsaW5Db20sIDMpO1xuXG4gICAgICAgIGNvbnN0IGNvbnN0cmFpbnRzID0gdGhpcy5mbkdldEFkZGl0aW9uQ29uc3RyYWludChcbiAgICAgICAgICAgIEMuc2lnbmFsc1swXSwgQy5zaWduYWxzWzFdLCBDLnNpZ25hbHNbMl0sXG4gICAgICAgICAgICBDLmNvZWZzWzBdLCBDLmNvZWZzWzFdLCB0aGlzLkZyLnplcm8sIEMuY29lZnNbMl0sIEMuayk7XG5cbiAgICAgICAgY29uc3RyYWludHNBcnIucHVzaChjb25zdHJhaW50cyk7XG5cbiAgICAgICAgcmV0dXJuIFtjb25zdHJhaW50c0FyciwgYWRkaXRpb25zQXJyXTtcbiAgICB9XG5cbiAgICBwcm9jZXNzUjFjc011bHRpcGxpY2F0aW9uQ29uc3RyYWludChzZXR0aW5ncywgbGNBLCBsY0IsIGxjQykge1xuICAgICAgICBjb25zdCBjb25zdHJhaW50c0FyciA9IFtdO1xuICAgICAgICBjb25zdCBhZGRpdGlvbnNBcnIgPSBbXTtcblxuICAgICAgICBjb25zdCBBID0gdGhpcy5yZWR1Y2VDb2VmcyhzZXR0aW5ncywgY29uc3RyYWludHNBcnIsIGFkZGl0aW9uc0FyciwgbGNBLCAxKTtcbiAgICAgICAgY29uc3QgQiA9IHRoaXMucmVkdWNlQ29lZnMoc2V0dGluZ3MsIGNvbnN0cmFpbnRzQXJyLCBhZGRpdGlvbnNBcnIsIGxjQiwgMSk7XG4gICAgICAgIGNvbnN0IEMgPSB0aGlzLnJlZHVjZUNvZWZzKHNldHRpbmdzLCBjb25zdHJhaW50c0FyciwgYWRkaXRpb25zQXJyLCBsY0MsIDEpO1xuXG4gICAgICAgIGNvbnN0IGNvbnN0cmFpbnRzID0gdGhpcy5mbkdldE11bHRpcGxpY2F0aW9uQ29uc3RyYWludChcbiAgICAgICAgICAgIEEuc2lnbmFsc1swXSwgQi5zaWduYWxzWzBdLCBDLnNpZ25hbHNbMF0sXG4gICAgICAgICAgICB0aGlzLkZyLm11bChBLmNvZWZzWzBdLCBCLmspLFxuICAgICAgICAgICAgdGhpcy5Gci5tdWwoQS5rLCBCLmNvZWZzWzBdKSxcbiAgICAgICAgICAgIHRoaXMuRnIubXVsKEEuY29lZnNbMF0sIEIuY29lZnNbMF0pLFxuICAgICAgICAgICAgdGhpcy5Gci5uZWcoQy5jb2Vmc1swXSksXG4gICAgICAgICAgICB0aGlzLkZyLnN1Yih0aGlzLkZyLm11bChBLmssIEIuayksIEMuaykpO1xuXG4gICAgICAgIGNvbnN0cmFpbnRzQXJyLnB1c2goY29uc3RyYWludHMpO1xuXG4gICAgICAgIHJldHVybiBbY29uc3RyYWludHNBcnIsIGFkZGl0aW9uc0Fycl07XG4gICAgfVxufSIsIi8qXG4gICAgQ29weXJpZ2h0IDIwMjIgaWRlbjMgYXNzb2NpYXRpb24uXG5cbiAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBzbmFya2pzLlxuXG4gICAgc25hcmtqcyBpcyBhIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vclxuICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGVcbiAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbilcbiAgICBhbnkgbGF0ZXIgdmVyc2lvbi5cblxuICAgIHNuYXJranMgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFlcbiAgICBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3JcbiAgICBtb3JlIGRldGFpbHMuXG5cbiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZyB3aXRoXG4gICAgc25hcmtqcy4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cbiovXG5cbi8vIENQb2x5bm9taWFsIGlzIGEgQ29tYmluZWQgUG9seW5vbWlhbCBvZiB0aGUgdHlwZSA6XG4vLyBDUG9seW5vbWlhbChYKSA6PSBQXzAoWF5uKSArIFjCt1BfMShYXm4pICsgLi4uICsgWF57bi0xfcK3UF97bi0xfShYXm4pXG4vLyBXZSBjYW4gdXNlIHRoaXMgY2xhc3MgdG8gYXZvaWQgdGhlIGFsbG9jYXRpb24gb2YgYSBiaWcgbWVtb3J5IGJ1ZmZlclxuLy8gZm9yIHRoZSBjb2VmZmljaWVudHMgYmVjYXVzZSBpbiBzb21lIGNhc2VzIGEgYmlnIG51bWJlciBvZiB0aGUgY29lZmZpY2llbnRzIGFyZSB6ZXJvXG5cbmltcG9ydCB7QmlnQnVmZmVyfSBmcm9tIFwiZmZqYXZhc2NyaXB0XCI7XG5pbXBvcnQge2xvZzJ9IGZyb20gXCIuLi9taXNjLmpzXCI7XG5pbXBvcnQge1BvbHlub21pYWx9IGZyb20gXCIuL3BvbHlub21pYWwuanNcIjtcblxuZXhwb3J0IGNsYXNzIENQb2x5bm9taWFsIHtcbiAgICBjb25zdHJ1Y3RvcihuLCBjdXJ2ZSwgbG9nZ2VyKSB7XG4gICAgICAgIHRoaXMubiA9IG47XG4gICAgICAgIHRoaXMucG9seW5vbWlhbHMgPSBBcnJheShuKS5maWxsKHVuZGVmaW5lZCk7XG4gICAgICAgIHRoaXMuY3VydmUgPSBjdXJ2ZTtcbiAgICAgICAgdGhpcy5GciA9IGN1cnZlLkZyO1xuICAgICAgICB0aGlzLkcxID0gY3VydmUuRzE7XG4gICAgICAgIHRoaXMubG9nZ2VyID0gbG9nZ2VyO1xuICAgIH1cblxuICAgIGFkZFBvbHlub21pYWwocG9zaXRpb24sIHBvbHlub21pYWwpIHtcbiAgICAgICAgaWYgKHBvc2l0aW9uID4gdGhpcy5uIC0gMSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiQ1BvbHlub21pYWw6YWRkUG9seW5vbWlhbCwgY2Fubm90IGFkZCBhIHBvbHlub21pYWwgdG8gYSBwb3NpdGlvbiBncmVhdGVyIHRoYW4gbi0xXCIpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5wb2x5bm9taWFsc1twb3NpdGlvbl0gPSBwb2x5bm9taWFsO1xuICAgIH1cblxuICAgIGRlZ3JlZSgpIHtcbiAgICAgICAgbGV0IGRlZ3JlZXMgPSB0aGlzLnBvbHlub21pYWxzLm1hcChcbiAgICAgICAgICAgIChwb2x5bm9taWFsLCBpbmRleCkgPT4gcG9seW5vbWlhbCA9PT0gdW5kZWZpbmVkID8gMCA6IHBvbHlub21pYWwuZGVncmVlKCkgKiB0aGlzLm4gKyBpbmRleCk7XG4gICAgICAgIHJldHVybiBNYXRoLm1heCguLi5kZWdyZWVzKTtcbiAgICB9XG5cbiAgICBnZXRQb2x5bm9taWFsKCkge1xuICAgICAgICBsZXQgZGVncmVlcyA9IHRoaXMucG9seW5vbWlhbHMubWFwKHBvbHlub21pYWwgPT4gcG9seW5vbWlhbCA9PT0gdW5kZWZpbmVkID8gMCA6IHBvbHlub21pYWwuZGVncmVlKCkpO1xuICAgICAgICBjb25zdCBtYXhEZWdyZWUgPSB0aGlzLmRlZ3JlZSgpO1xuICAgICAgICBjb25zdCBsZW5ndGhCdWZmZXIgPSAyICoqIChsb2cyKG1heERlZ3JlZSAtIDEpICsgMSk7XG4gICAgICAgIGNvbnN0IHNGciA9IHRoaXMuRnIubjg7XG5cbiAgICAgICAgbGV0IHBvbHlub21pYWwgPSBuZXcgUG9seW5vbWlhbChuZXcgQmlnQnVmZmVyKGxlbmd0aEJ1ZmZlciAqIHNGciksIHRoaXMuY3VydmUsIHRoaXMubG9nZ2VyKTtcblxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG1heERlZ3JlZTsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCBpX244ID0gaSAqIHNGcjtcbiAgICAgICAgICAgIGNvbnN0IGlfc0ZyID0gaV9uOCAqIHRoaXMubjtcblxuICAgICAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLm47IGorKykge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLnBvbHlub21pYWxzW2pdICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGkgPD0gZGVncmVlc1tqXSkgcG9seW5vbWlhbC5jb2VmLnNldCh0aGlzLnBvbHlub21pYWxzW2pdLmNvZWYuc2xpY2UoaV9uOCwgaV9uOCArIHNGciksIGlfc0ZyICsgaiAqIHNGcik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHBvbHlub21pYWw7XG4gICAgfVxuXG4gICAgYXN5bmMgbXVsdGlFeHBvbmVudGlhdGlvbihQVGF1LCBuYW1lKSB7XG4gICAgICAgIGxldCBwb2x5bm9taWFsID0gdGhpcy5nZXRQb2x5bm9taWFsKCk7XG4gICAgICAgIGNvbnN0IG4gPSBwb2x5bm9taWFsLmNvZWYuYnl0ZUxlbmd0aCAvIHRoaXMuRnIubjg7XG4gICAgICAgIGNvbnN0IFBUYXVOID0gUFRhdS5zbGljZSgwLCBuICogdGhpcy5HMS5GLm44ICogMik7XG4gICAgICAgIGNvbnN0IGJtID0gYXdhaXQgdGhpcy5Gci5iYXRjaEZyb21Nb250Z29tZXJ5KHBvbHlub21pYWwuY29lZik7XG4gICAgICAgIGxldCByZXMgPSBhd2FpdCB0aGlzLkcxLm11bHRpRXhwQWZmaW5lKFBUYXVOLCBibSwgdGhpcy5sb2dnZXIsIG5hbWUpO1xuICAgICAgICByZXMgPSB0aGlzLkcxLnRvQWZmaW5lKHJlcyk7XG4gICAgICAgIHJldHVybiByZXM7XG4gICAgfVxufSIsIi8qXG4gICAgQ29weXJpZ2h0IDIwMjIgaWRlbjMgYXNzb2NpYXRpb24uXG5cbiAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBzbmFya2pzLlxuXG4gICAgc25hcmtqcyBpcyBhIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vclxuICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGVcbiAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbilcbiAgICBhbnkgbGF0ZXIgdmVyc2lvbi5cblxuICAgIHNuYXJranMgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFlcbiAgICBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3JcbiAgICBtb3JlIGRldGFpbHMuXG5cbiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZyB3aXRoXG4gICAgc25hcmtqcy4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cbiovXG5cbmltcG9ydCB7cmVhZFIxY3NGZH0gZnJvbSBcInIxY3NmaWxlXCI7XG5pbXBvcnQgKiBhcyB1dGlscyBmcm9tIFwiLi9wb3dlcnNvZnRhdV91dGlscy5qc1wiO1xuaW1wb3J0IHtjcmVhdGVCaW5GaWxlLCBlbmRXcml0ZVNlY3Rpb24sIHJlYWRCaW5GaWxlLCBzdGFydFdyaXRlU2VjdGlvbiwgd3JpdGVCaWdJbnQsfSBmcm9tIFwiQGlkZW4zL2JpbmZpbGV1dGlsc1wiO1xuaW1wb3J0IHtsb2cyfSBmcm9tIFwiLi9taXNjLmpzXCI7XG5pbXBvcnQge0JpZ0J1ZmZlciwgU2NhbGFyfSBmcm9tIFwiZmZqYXZhc2NyaXB0XCI7XG5pbXBvcnQgQmlnQXJyYXkgZnJvbSBcIi4vYmlnYXJyYXkuanNcIjtcbmltcG9ydCB7XG4gICAgWktFWV9GRl9IRUFERVJfU0VDVElPTixcbiAgICBaS0VZX0ZGX0FERElUSU9OU19TRUNUSU9OLFxuICAgIFpLRVlfRkZfQV9NQVBfU0VDVElPTixcbiAgICBaS0VZX0ZGX0JfTUFQX1NFQ1RJT04sXG4gICAgWktFWV9GRl9DX01BUF9TRUNUSU9OLFxuICAgIFpLRVlfRkZfUUxfU0VDVElPTixcbiAgICBaS0VZX0ZGX1FSX1NFQ1RJT04sXG4gICAgWktFWV9GRl9RTV9TRUNUSU9OLFxuICAgIFpLRVlfRkZfUU9fU0VDVElPTixcbiAgICBaS0VZX0ZGX1FDX1NFQ1RJT04sXG4gICAgWktFWV9GRl9TSUdNQTFfU0VDVElPTixcbiAgICBaS0VZX0ZGX1NJR01BMl9TRUNUSU9OLFxuICAgIFpLRVlfRkZfU0lHTUEzX1NFQ1RJT04sXG4gICAgWktFWV9GRl9MQUdSQU5HRV9TRUNUSU9OLFxuICAgIFpLRVlfRkZfUFRBVV9TRUNUSU9OLFxuICAgIEZGX1RfUE9MX0RFR19NSU4sXG4gICAgWktFWV9GRl9OU0VDVElPTlMsXG4gICAgWktFWV9GRl9DMF9TRUNUSU9OLFxufSBmcm9tIFwiLi9mZmxvbmtfY29uc3RhbnRzLmpzXCI7XG5pbXBvcnQge0ZGTE9OS19QUk9UT0NPTF9JRCwgSEVBREVSX1pLRVlfU0VDVElPTn0gZnJvbSBcIi4vemtleV9jb25zdGFudHMuanNcIjtcbmltcG9ydCB7XG4gICAgZ2V0RkZsb25rQWRkaXRpb25Db25zdHJhaW50LFxuICAgIGdldEZGbG9ua0NvbnN0YW50Q29uc3RyYWludCxcbiAgICBnZXRGRmxvbmtNdWx0aXBsaWNhdGlvbkNvbnN0cmFpbnRcbn0gZnJvbSBcIi4vcGxvbmtfZXF1YXRpb24uanNcIjtcbmltcG9ydCB7cjFjc0NvbnN0cmFpbnRQcm9jZXNzb3J9IGZyb20gXCIuL3IxY3NfY29uc3RyYWludF9wcm9jZXNzb3IuanNcIjtcbmltcG9ydCB7UG9seW5vbWlhbH0gZnJvbSBcIi4vcG9seW5vbWlhbC9wb2x5bm9taWFsLmpzXCI7XG5pbXBvcnQgKiBhcyBiaW5GaWxlVXRpbHMgZnJvbSBcIkBpZGVuMy9iaW5maWxldXRpbHNcIjtcbmltcG9ydCB7RXZhbHVhdGlvbnN9IGZyb20gXCIuL3BvbHlub21pYWwvZXZhbHVhdGlvbnMuanNcIjtcbmltcG9ydCB7Q1BvbHlub21pYWx9IGZyb20gXCIuL3BvbHlub21pYWwvY3BvbHlub21pYWwuanNcIjtcblxuXG5leHBvcnQgZGVmYXVsdCBhc3luYyBmdW5jdGlvbiBmZmxvbmtTZXR1cChyMWNzRmlsZW5hbWUsIHB0YXVGaWxlbmFtZSwgemtleUZpbGVuYW1lLCBsb2dnZXIpIHtcbiAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhcIkZGTE9OSyBTRVRVUCBTVEFSVEVEXCIpO1xuXG4gICAgaWYgKGdsb2JhbFRoaXMuZ2MpIGdsb2JhbFRoaXMuZ2MoKTtcblxuICAgIC8vIFJlYWQgUFRhdSBmaWxlXG4gICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oXCI+IFJlYWRpbmcgUFRhdSBmaWxlXCIpO1xuICAgIGNvbnN0IHtmZDogZmRQVGF1LCBzZWN0aW9uczogcFRhdVNlY3Rpb25zfSA9IGF3YWl0IHJlYWRCaW5GaWxlKHB0YXVGaWxlbmFtZSwgXCJwdGF1XCIsIDEsIDEgPDwgMjIsIDEgPDwgMjQpO1xuICAgIGlmICghcFRhdVNlY3Rpb25zWzEyXSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJQb3dlcnMgb2YgVGF1IGlzIG5vdCB3ZWxsIHByZXBhcmVkLiBTZWN0aW9uIDEyIG1pc3NpbmcuXCIpO1xuICAgIH1cblxuICAgIC8vIEdldCBjdXJ2ZSBkZWZpbmVkIGluIFBUYXVcbiAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhcIj4gR2V0dGluZyBjdXJ2ZSBmcm9tIFBUYXUgc2V0dGluZ3NcIik7XG4gICAgY29uc3Qge2N1cnZlfSA9IGF3YWl0IHV0aWxzLnJlYWRQVGF1SGVhZGVyKGZkUFRhdSwgcFRhdVNlY3Rpb25zKTtcblxuICAgIC8vIFJlYWQgcjFjcyBmaWxlXG4gICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oXCI+IFJlYWRpbmcgcjFjcyBmaWxlXCIpO1xuICAgIGNvbnN0IHtmZDogZmRSMWNzLCBzZWN0aW9uczogc2VjdGlvbnNSMWNzfSA9IGF3YWl0IHJlYWRCaW5GaWxlKHIxY3NGaWxlbmFtZSwgXCJyMWNzXCIsIDEsIDEgPDwgMjIsIDEgPDwgMjQpO1xuICAgIGNvbnN0IHIxY3MgPSBhd2FpdCByZWFkUjFjc0ZkKGZkUjFjcywgc2VjdGlvbnNSMWNzLCB7bG9hZENvbnN0cmFpbnRzOiBmYWxzZSwgbG9hZEN1c3RvbUdhdGVzOiB0cnVlfSk7XG5cbiAgICAvLyBQb3RlbnRpYWwgZXJyb3IgY2hlY2tzXG4gICAgaWYgKHIxY3MucHJpbWUgIT09IGN1cnZlLnIpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwicjFjcyBjdXJ2ZSBkb2VzIG5vdCBtYXRjaCBwb3dlcnMgb2YgdGF1IGNlcmVtb255IGN1cnZlXCIpO1xuICAgIH1cblxuICAgIC8vIEluaXRpYWxpemF0aW9uc1xuICAgIGNvbnN0IEZyID0gY3VydmUuRnI7XG5cbiAgICBjb25zdCBzRnIgPSBjdXJ2ZS5Gci5uODtcbiAgICBjb25zdCBzRzEgPSBjdXJ2ZS5HMS5GLm44ICogMjtcbiAgICBjb25zdCBzRzIgPSBjdXJ2ZS5HMi5GLm44ICogMjtcblxuICAgIGxldCBwb2x5bm9taWFscyA9IHt9O1xuICAgIGxldCBldmFsdWF0aW9ucyA9IHt9O1xuICAgIGxldCBQVGF1O1xuXG4gICAgbGV0IHNldHRpbmdzID0ge1xuICAgICAgICBuVmFyczogcjFjcy5uVmFycyxcbiAgICAgICAgblB1YmxpYzogcjFjcy5uT3V0cHV0cyArIHIxY3MublB1YklucHV0c1xuICAgIH07XG5cbiAgICBjb25zdCBwbG9ua0NvbnN0cmFpbnRzID0gbmV3IEJpZ0FycmF5KCk7XG4gICAgbGV0IHBsb25rQWRkaXRpb25zID0gbmV3IEJpZ0FycmF5KCk7XG5cbiAgICAvLyBQcm9jZXNzIGNvbnN0cmFpbnRzIGluc2lkZSByMWNzXG4gICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oXCI+IFByb2Nlc3NpbmcgRkZsb25rIGNvbnN0cmFpbnRzXCIpO1xuICAgIGF3YWl0IGNvbXB1dGVGRkNvbnN0cmFpbnRzKGN1cnZlLkZyLCByMWNzLCBsb2dnZXIpO1xuICAgIGlmIChnbG9iYWxUaGlzLmdjKSBnbG9iYWxUaGlzLmdjKCk7XG5cbiAgICAvLyBBcyB0aGUgdCBwb2x5bm9taWFsIGlzIG4rNSB3ZSBuZWVkIGF0IGxlYXN0IGEgcG93ZXIgb2YgNFxuICAgIC8vVE9ETyBjaGVjayEhISFcbiAgICAvLyBOT1RFIDogcGxvbmtDb25zdHJhaW50cyArIDIgPSAjY29uc3RyYWludHMgKyBibGluZGluZyBjb2VmZmljaWVudHMgZm9yIGVhY2ggd2lyZSBwb2x5bm9taWFsXG4gICAgc2V0dGluZ3MuY2lyUG93ZXIgPSBNYXRoLm1heChGRl9UX1BPTF9ERUdfTUlOLCBsb2cyKChwbG9ua0NvbnN0cmFpbnRzLmxlbmd0aCArIDIpIC0gMSkgKyAxKTtcbiAgICBzZXR0aW5ncy5kb21haW5TaXplID0gMiAqKiBzZXR0aW5ncy5jaXJQb3dlcjtcblxuICAgIGlmIChwVGF1U2VjdGlvbnNbMl1bMF0uc2l6ZSA8IChzZXR0aW5ncy5kb21haW5TaXplICogOSArIDE4KSAqIHNHMSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJQb3dlcnMgb2YgVGF1IGlzIG5vdCBiaWcgZW5vdWdoIGZvciB0aGlzIGNpcmN1aXQgc2l6ZS4gU2VjdGlvbiAyIHRvbyBzbWFsbC5cIik7XG4gICAgfVxuICAgIGlmIChwVGF1U2VjdGlvbnNbM11bMF0uc2l6ZSA8IHNHMikge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJQb3dlcnMgb2YgVGF1IGlzIG5vdCB3ZWxsIHByZXBhcmVkLiBTZWN0aW9uIDMgdG9vIHNtYWxsLlwiKTtcbiAgICB9XG5cbiAgICBpZiAobG9nZ2VyKSB7XG4gICAgICAgIGxvZ2dlci5pbmZvKFwiLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVwiKTtcbiAgICAgICAgbG9nZ2VyLmluZm8oXCIgIEZGTE9OSyBTRVRVUCBTRVRUSU5HU1wiKTtcbiAgICAgICAgbG9nZ2VyLmluZm8oYCAgQ3VydmU6ICAgICAgICAgJHtjdXJ2ZS5uYW1lfWApO1xuICAgICAgICBsb2dnZXIuaW5mbyhgICBDaXJjdWl0IHBvd2VyOiAke3NldHRpbmdzLmNpclBvd2VyfWApO1xuICAgICAgICBsb2dnZXIuaW5mbyhgICBEb21haW4gc2l6ZTogICAke3NldHRpbmdzLmRvbWFpblNpemV9YCk7XG4gICAgICAgIGxvZ2dlci5pbmZvKGAgIFZhcnM6ICAgICAgICAgICR7c2V0dGluZ3MublZhcnN9YCk7XG4gICAgICAgIGxvZ2dlci5pbmZvKGAgIFB1YmxpYyB2YXJzOiAgICR7c2V0dGluZ3MublB1YmxpY31gKTtcbiAgICAgICAgbG9nZ2VyLmluZm8oYCAgQ29uc3RyYWludHM6ICAgJHtwbG9ua0NvbnN0cmFpbnRzLmxlbmd0aH1gKTtcbiAgICAgICAgbG9nZ2VyLmluZm8oYCAgQWRkaXRpb25zOiAgICAgJHtwbG9ua0FkZGl0aW9ucy5sZW5ndGh9YCk7XG4gICAgICAgIGxvZ2dlci5pbmZvKFwiLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVwiKTtcbiAgICB9XG5cbiAgICAvLyBDb21wdXRlIGsxIGFuZCBrMiB0byBiZSB1c2VkIGluIHRoZSBwZXJtdXRhdGlvbiBjaGVja3NcbiAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhcIj4gY29tcHV0aW5nIGsxIGFuZCBrMlwiKTtcbiAgICBjb25zdCBbazEsIGsyXSA9IGNvbXB1dGVLMUsyKCk7XG5cbiAgICAvLyBDb21wdXRlIG9tZWdhIDMgKHczKSBhbmQgb21lZ2EgNCAodzQpIHRvIGJlIHVzZWQgaW4gdGhlIHByb3ZlciBhbmQgdGhlIHZlcmlmaWVyXG4gICAgLy8gdzNeMyA9IDEgYW5kICB3NF40ID0gMVxuICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKFwiPiBjb21wdXRpbmcgdzNcIik7XG4gICAgY29uc3QgdzMgPSBjb21wdXRlVzMoKTtcbiAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhcIj4gY29tcHV0aW5nIHc0XCIpO1xuICAgIGNvbnN0IHc0ID0gY29tcHV0ZVc0KCk7XG4gICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oXCI+IGNvbXB1dGluZyB3OFwiKTtcbiAgICBjb25zdCB3OCA9IGNvbXB1dGVXOCgpO1xuICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKFwiPiBjb21wdXRpbmcgd3JcIik7XG4gICAgY29uc3Qgd3IgPSBnZXRPbWVnYUN1YmljUm9vdChzZXR0aW5ncy5jaXJQb3dlciwgY3VydmUuRnIpO1xuXG4gICAgLy8gV3JpdGUgb3V0cHV0IHprZXkgZmlsZVxuICAgIGF3YWl0IHdyaXRlWmtleUZpbGUoKTtcblxuICAgIGF3YWl0IGZkUjFjcy5jbG9zZSgpO1xuICAgIGF3YWl0IGZkUFRhdS5jbG9zZSgpO1xuXG4gICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oXCJGRkxPTksgU0VUVVAgRklOSVNIRURcIik7XG5cbiAgICByZXR1cm4gMDtcblxuICAgIGFzeW5jIGZ1bmN0aW9uIGNvbXB1dGVGRkNvbnN0cmFpbnRzKEZyLCByMWNzLCBsb2dnZXIpIHtcbiAgICAgICAgLy8gQWRkIHB1YmxpYyBpbnB1dHMgYW5kIG91dHB1dHNcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzZXR0aW5ncy5uUHVibGljOyBpKyspIHtcbiAgICAgICAgICAgIHBsb25rQ29uc3RyYWludHMucHVzaChnZXRGRmxvbmtDb25zdGFudENvbnN0cmFpbnQoaSArIDEsIEZyKSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBBZGQgYWxsIGNvbnN0cmFpbnRzIGZyb20gcjFjcyBmaWxlXG4gICAgICAgIGNvbnN0IHIxY3NQcm9jZXNzb3IgPSBuZXcgcjFjc0NvbnN0cmFpbnRQcm9jZXNzb3IoRnIsIGdldEZGbG9ua0NvbnN0YW50Q29uc3RyYWludCwgZ2V0RkZsb25rQWRkaXRpb25Db25zdHJhaW50LCBnZXRGRmxvbmtNdWx0aXBsaWNhdGlvbkNvbnN0cmFpbnQsIGxvZ2dlcik7XG5cbiAgICAgICAgY29uc3QgYlIxY3MgPSBhd2FpdCBiaW5GaWxlVXRpbHMucmVhZFNlY3Rpb24oZmRSMWNzLCBzZWN0aW9uc1IxY3MsIDIpO1xuICAgICAgICBsZXQgYlIxY3NQb3MgPSAwO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHIxY3MubkNvbnN0cmFpbnRzOyBpKyspIHtcbiAgICAgICAgICAgIGlmICgobG9nZ2VyKSAmJiAoaSAhPT0gMCkgJiYgKGkgJSA1MDAwMDAgPT09IDApKSB7XG4gICAgICAgICAgICAgICAgbG9nZ2VyLmluZm8oYCAgICBwcm9jZXNzaW5nIHIxY3MgY29uc3RyYWludHMgJHtpfS8ke3IxY3MubkNvbnN0cmFpbnRzfWApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgW2NvbnN0cmFpbnRzLCBhZGRpdGlvbnNdID0gcjFjc1Byb2Nlc3Nvci5wcm9jZXNzUjFjc0NvbnN0cmFpbnQoc2V0dGluZ3MsIC4uLnJlYWRDb25zdHJhaW50KCkpO1xuXG4gICAgICAgICAgICBwbG9ua0NvbnN0cmFpbnRzLnB1c2goLi4uY29uc3RyYWludHMpO1xuICAgICAgICAgICAgcGxvbmtBZGRpdGlvbnMucHVzaCguLi5hZGRpdGlvbnMpO1xuICAgICAgICB9XG5cbiAgICAgICAgZnVuY3Rpb24gcmVhZENvbnN0cmFpbnQoKSB7XG4gICAgICAgICAgICBjb25zdCBjID0gW107XG4gICAgICAgICAgICBjWzBdID0gcmVhZExDKCk7XG4gICAgICAgICAgICBjWzFdID0gcmVhZExDKCk7XG4gICAgICAgICAgICBjWzJdID0gcmVhZExDKCk7XG4gICAgICAgICAgICByZXR1cm4gYztcbiAgICAgICAgfVxuXG4gICAgICAgIGZ1bmN0aW9uIHJlYWRMQygpIHtcbiAgICAgICAgICAgIGNvbnN0IGxjID0ge307XG5cbiAgICAgICAgICAgIGNvbnN0IGJ1ZmZVTDMyID0gYlIxY3Muc2xpY2UoYlIxY3NQb3MsIGJSMWNzUG9zICsgNCk7XG4gICAgICAgICAgICBiUjFjc1BvcyArPSA0O1xuICAgICAgICAgICAgY29uc3QgYnVmZlVMMzJWID0gbmV3IERhdGFWaWV3KGJ1ZmZVTDMyLmJ1ZmZlcik7XG4gICAgICAgICAgICBjb25zdCBuSWR4ID0gYnVmZlVMMzJWLmdldFVpbnQzMigwLCB0cnVlKTtcblxuICAgICAgICAgICAgY29uc3QgYnVmZiA9IGJSMWNzLnNsaWNlKGJSMWNzUG9zLCBiUjFjc1BvcyArICg0ICsgcjFjcy5uOCkgKiBuSWR4KTtcbiAgICAgICAgICAgIGJSMWNzUG9zICs9ICg0ICsgcjFjcy5uOCkgKiBuSWR4O1xuICAgICAgICAgICAgY29uc3QgYnVmZlYgPSBuZXcgRGF0YVZpZXcoYnVmZi5idWZmZXIpO1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBuSWR4OyBpKyspIHtcbiAgICAgICAgICAgICAgICBjb25zdCBpZHggPSBidWZmVi5nZXRVaW50MzIoaSAqICg0ICsgcjFjcy5uOCksIHRydWUpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHZhbCA9IHIxY3MuRi5mcm9tUnByTEUoYnVmZiwgaSAqICg0ICsgcjFjcy5uOCkgKyA0KTtcbiAgICAgICAgICAgICAgICBsY1tpZHhdID0gdmFsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGxjO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIDA7XG4gICAgfVxuXG4gICAgYXN5bmMgZnVuY3Rpb24gd3JpdGVaa2V5RmlsZSgpIHtcbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oXCI+IFdyaXRpbmcgdGhlIHprZXkgZmlsZVwiKTtcbiAgICAgICAgY29uc3QgZmRaS2V5ID0gYXdhaXQgY3JlYXRlQmluRmlsZSh6a2V5RmlsZW5hbWUsIFwiemtleVwiLCAxLCBaS0VZX0ZGX05TRUNUSU9OUywgMSA8PCAyMiwgMSA8PCAyNCk7XG5cbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oYMK3wrfCtyBXcml0aW5nIFNlY3Rpb24gJHtIRUFERVJfWktFWV9TRUNUSU9OfS4gWmtleSBIZWFkZXJgKTtcbiAgICAgICAgYXdhaXQgd3JpdGVaa2V5SGVhZGVyKGZkWktleSk7XG5cbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oYMK3wrfCtyBXcml0aW5nIFNlY3Rpb24gJHtaS0VZX0ZGX0FERElUSU9OU19TRUNUSU9OfS4gQWRkaXRpb25zYCk7XG4gICAgICAgIGF3YWl0IHdyaXRlQWRkaXRpb25zKGZkWktleSk7XG4gICAgICAgIGlmIChnbG9iYWxUaGlzLmdjKSBnbG9iYWxUaGlzLmdjKCk7XG5cbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oYMK3wrfCtyBXcml0aW5nIFNlY3Rpb24gJHtaS0VZX0ZGX0FfTUFQX1NFQ1RJT059LiBBIE1hcGApO1xuICAgICAgICBhd2FpdCB3cml0ZVdpdG5lc3NNYXAoZmRaS2V5LCBaS0VZX0ZGX0FfTUFQX1NFQ1RJT04sIDAsIFwiQSBtYXBcIik7XG4gICAgICAgIGlmIChnbG9iYWxUaGlzLmdjKSBnbG9iYWxUaGlzLmdjKCk7XG5cbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oYMK3wrfCtyBXcml0aW5nIFNlY3Rpb24gJHtaS0VZX0ZGX0JfTUFQX1NFQ1RJT059LiBCIE1hcGApO1xuICAgICAgICBhd2FpdCB3cml0ZVdpdG5lc3NNYXAoZmRaS2V5LCBaS0VZX0ZGX0JfTUFQX1NFQ1RJT04sIDEsIFwiQiBtYXBcIik7XG4gICAgICAgIGlmIChnbG9iYWxUaGlzLmdjKSBnbG9iYWxUaGlzLmdjKCk7XG5cbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oYMK3wrfCtyBXcml0aW5nIFNlY3Rpb24gJHtaS0VZX0ZGX0NfTUFQX1NFQ1RJT059LiBDIE1hcGApO1xuICAgICAgICBhd2FpdCB3cml0ZVdpdG5lc3NNYXAoZmRaS2V5LCBaS0VZX0ZGX0NfTUFQX1NFQ1RJT04sIDIsIFwiQyBtYXBcIik7XG4gICAgICAgIGlmIChnbG9iYWxUaGlzLmdjKSBnbG9iYWxUaGlzLmdjKCk7XG5cbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oYMK3wrfCtyBXcml0aW5nIFNlY3Rpb24gJHtaS0VZX0ZGX1FMX1NFQ1RJT059LiBRTGApO1xuICAgICAgICBhd2FpdCB3cml0ZVFNYXAoZmRaS2V5LCBaS0VZX0ZGX1FMX1NFQ1RJT04sIDMsIFwiUUxcIik7XG4gICAgICAgIGlmIChnbG9iYWxUaGlzLmdjKSBnbG9iYWxUaGlzLmdjKCk7XG5cbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oYMK3wrfCtyBXcml0aW5nIFNlY3Rpb24gJHtaS0VZX0ZGX1FSX1NFQ1RJT059LiBRUmApO1xuICAgICAgICBhd2FpdCB3cml0ZVFNYXAoZmRaS2V5LCBaS0VZX0ZGX1FSX1NFQ1RJT04sIDQsIFwiUVJcIik7XG4gICAgICAgIGlmIChnbG9iYWxUaGlzLmdjKSBnbG9iYWxUaGlzLmdjKCk7XG5cbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oYMK3wrfCtyBXcml0aW5nIFNlY3Rpb24gJHtaS0VZX0ZGX1FNX1NFQ1RJT059LiBRTWApO1xuICAgICAgICBhd2FpdCB3cml0ZVFNYXAoZmRaS2V5LCBaS0VZX0ZGX1FNX1NFQ1RJT04sIDUsIFwiUU1cIik7XG4gICAgICAgIGlmIChnbG9iYWxUaGlzLmdjKSBnbG9iYWxUaGlzLmdjKCk7XG5cbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oYMK3wrfCtyBXcml0aW5nIFNlY3Rpb24gJHtaS0VZX0ZGX1FPX1NFQ1RJT059LiBRT2ApO1xuICAgICAgICBhd2FpdCB3cml0ZVFNYXAoZmRaS2V5LCBaS0VZX0ZGX1FPX1NFQ1RJT04sIDYsIFwiUU9cIik7XG4gICAgICAgIGlmIChnbG9iYWxUaGlzLmdjKSBnbG9iYWxUaGlzLmdjKCk7XG5cbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oYMK3wrfCtyBXcml0aW5nIFNlY3Rpb24gJHtaS0VZX0ZGX1FDX1NFQ1RJT059LiBRQ2ApO1xuICAgICAgICBhd2FpdCB3cml0ZVFNYXAoZmRaS2V5LCBaS0VZX0ZGX1FDX1NFQ1RJT04sIDcsIFwiUUNcIik7XG4gICAgICAgIGlmIChnbG9iYWxUaGlzLmdjKSBnbG9iYWxUaGlzLmdjKCk7XG5cbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oYMK3wrfCtyBXcml0aW5nIFNlY3Rpb25zICR7WktFWV9GRl9TSUdNQTFfU0VDVElPTn0sJHtaS0VZX0ZGX1NJR01BMl9TRUNUSU9OfSwke1pLRVlfRkZfU0lHTUEzX1NFQ1RJT059LiBTaWdtYTEsIFNpZ21hMiAmIFNpZ21hIDNgKTtcbiAgICAgICAgYXdhaXQgd3JpdGVTaWdtYShmZFpLZXkpO1xuICAgICAgICBpZiAoZ2xvYmFsVGhpcy5nYykgZ2xvYmFsVGhpcy5nYygpO1xuXG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKGDCt8K3wrcgV3JpdGluZyBTZWN0aW9uICR7WktFWV9GRl9MQUdSQU5HRV9TRUNUSU9OfS4gTGFncmFuZ2UgUG9seW5vbWlhbHNgKTtcbiAgICAgICAgYXdhaXQgd3JpdGVMYWdyYW5nZVBvbHlub21pYWxzKGZkWktleSk7XG4gICAgICAgIGlmIChnbG9iYWxUaGlzLmdjKSBnbG9iYWxUaGlzLmdjKCk7XG5cbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oYMK3wrfCtyBXcml0aW5nIFNlY3Rpb24gJHtaS0VZX0ZGX1BUQVVfU0VDVElPTn0uIFBvd2VycyBvZiBUYXVgKTtcbiAgICAgICAgYXdhaXQgd3JpdGVQdGF1KGZkWktleSk7XG4gICAgICAgIGlmIChnbG9iYWxUaGlzLmdjKSBnbG9iYWxUaGlzLmdjKCk7XG5cbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oYMK3wrfCtyBXcml0aW5nIFNlY3Rpb24gJHtaS0VZX0ZGX0MwX1NFQ1RJT059LiBDMGApO1xuICAgICAgICBhd2FpdCB3cml0ZUMwKGZkWktleSk7XG4gICAgICAgIGlmIChnbG9iYWxUaGlzLmdjKSBnbG9iYWxUaGlzLmdjKCk7XG5cbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oYMK3wrfCtyBXcml0aW5nIFNlY3Rpb24gJHtaS0VZX0ZGX0hFQURFUl9TRUNUSU9OfS4gRkZsb25rIEhlYWRlcmApO1xuICAgICAgICBhd2FpdCB3cml0ZUZGbG9ua0hlYWRlcihmZFpLZXkpO1xuICAgICAgICBpZiAoZ2xvYmFsVGhpcy5nYykgZ2xvYmFsVGhpcy5nYygpO1xuXG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKFwiPiBXcml0aW5nIHRoZSB6a2V5IGZpbGUgZmluaXNoZWRcIik7XG5cbiAgICAgICAgYXdhaXQgZmRaS2V5LmNsb3NlKCk7XG4gICAgfVxuXG4gICAgYXN5bmMgZnVuY3Rpb24gd3JpdGVaa2V5SGVhZGVyKGZkWktleSkge1xuICAgICAgICBhd2FpdCBzdGFydFdyaXRlU2VjdGlvbihmZFpLZXksIEhFQURFUl9aS0VZX1NFQ1RJT04pO1xuICAgICAgICBhd2FpdCBmZFpLZXkud3JpdGVVTEUzMihGRkxPTktfUFJPVE9DT0xfSUQpO1xuICAgICAgICBhd2FpdCBlbmRXcml0ZVNlY3Rpb24oZmRaS2V5KTtcbiAgICB9XG5cbiAgICBhc3luYyBmdW5jdGlvbiB3cml0ZUFkZGl0aW9ucyhmZFpLZXkpIHtcbiAgICAgICAgYXdhaXQgc3RhcnRXcml0ZVNlY3Rpb24oZmRaS2V5LCBaS0VZX0ZGX0FERElUSU9OU19TRUNUSU9OKTtcblxuICAgICAgICAvLyBXcml0dGVuIHZhbHVlcyBhcmUgMiAqIDMyIGJpdCBpbnRlZ2VycyAoMiAqIDQgYnl0ZXMpICsgMiBmaWVsZCBzaXplIHZhbHVlcyAoIDIgKiBzRnIgYnl0ZXMpXG4gICAgICAgIGNvbnN0IGJ1ZmZPdXQgPSBuZXcgVWludDhBcnJheSg4ICsgMiAqIHNGcik7XG4gICAgICAgIGNvbnN0IGJ1ZmZPdXRWID0gbmV3IERhdGFWaWV3KGJ1ZmZPdXQuYnVmZmVyKTtcblxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHBsb25rQWRkaXRpb25zLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBpZiAoKGxvZ2dlcikgJiYgKGkgIT09IDApICYmIChpICUgNTAwMDAwID09PSAwKSkgbG9nZ2VyLmluZm8oYCAgICAgIHdyaXRpbmcgQWRkaXRpb25zOiAke2l9LyR7cGxvbmtBZGRpdGlvbnMubGVuZ3RofWApO1xuXG4gICAgICAgICAgICBjb25zdCBhZGRpdGlvbiA9IHBsb25rQWRkaXRpb25zW2ldO1xuXG4gICAgICAgICAgICBidWZmT3V0Vi5zZXRVaW50MzIoMCwgYWRkaXRpb25bMF0sIHRydWUpO1xuICAgICAgICAgICAgYnVmZk91dFYuc2V0VWludDMyKDQsIGFkZGl0aW9uWzFdLCB0cnVlKTtcbiAgICAgICAgICAgIGJ1ZmZPdXQuc2V0KGFkZGl0aW9uWzJdLCA4KTtcbiAgICAgICAgICAgIGJ1ZmZPdXQuc2V0KGFkZGl0aW9uWzNdLCA4ICsgc0ZyKTtcblxuICAgICAgICAgICAgYXdhaXQgZmRaS2V5LndyaXRlKGJ1ZmZPdXQpO1xuICAgICAgICB9XG4gICAgICAgIGF3YWl0IGVuZFdyaXRlU2VjdGlvbihmZFpLZXkpO1xuICAgIH1cblxuICAgIGFzeW5jIGZ1bmN0aW9uIHdyaXRlV2l0bmVzc01hcChmZFpLZXksIHNlY3Rpb25OdW0sIHBvc0NvbnN0cmFpbnQsIG5hbWUpIHtcbiAgICAgICAgYXdhaXQgc3RhcnRXcml0ZVNlY3Rpb24oZmRaS2V5LCBzZWN0aW9uTnVtKTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwbG9ua0NvbnN0cmFpbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBpZiAobG9nZ2VyICYmIChpICE9PSAwKSAmJiAoaSAlIDUwMDAwMCA9PT0gMCkpIHtcbiAgICAgICAgICAgICAgICBsb2dnZXIuaW5mbyhgICAgICAgd3JpdGluZyB3aXRuZXNzICR7bmFtZX06ICR7aX0vJHtwbG9ua0NvbnN0cmFpbnRzLmxlbmd0aH1gKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgYXdhaXQgZmRaS2V5LndyaXRlVUxFMzIocGxvbmtDb25zdHJhaW50c1tpXVtwb3NDb25zdHJhaW50XSk7XG4gICAgICAgIH1cbiAgICAgICAgYXdhaXQgZW5kV3JpdGVTZWN0aW9uKGZkWktleSk7XG4gICAgfVxuXG4gICAgYXN5bmMgZnVuY3Rpb24gd3JpdGVRTWFwKGZkWktleSwgc2VjdGlvbk51bSwgcG9zQ29uc3RyYWludCwgbmFtZSkge1xuICAgICAgICAvLyBDb21wdXRlIFEgZnJvbSBxIGV2YWx1YXRpb25zXG4gICAgICAgIGxldCBRID0gbmV3IEJpZ0J1ZmZlcihzZXR0aW5ncy5kb21haW5TaXplICogc0ZyKTtcblxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHBsb25rQ29uc3RyYWludHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIFEuc2V0KHBsb25rQ29uc3RyYWludHNbaV1bcG9zQ29uc3RyYWludF0sIGkgKiBzRnIpO1xuICAgICAgICAgICAgaWYgKChsb2dnZXIpICYmIChpICE9PSAwKSAmJiAoaSAlIDUwMDAwMCA9PT0gMCkpIHtcbiAgICAgICAgICAgICAgICBsb2dnZXIuaW5mbyhgICAgICAgd3JpdGluZyAke25hbWV9OiAke2l9LyR7cGxvbmtDb25zdHJhaW50cy5sZW5ndGh9YCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBwb2x5bm9taWFsc1tuYW1lXSA9IGF3YWl0IFBvbHlub21pYWwuZnJvbUV2YWx1YXRpb25zKFEsIGN1cnZlLCBsb2dnZXIpO1xuICAgICAgICBldmFsdWF0aW9uc1tuYW1lXSA9IGF3YWl0IEV2YWx1YXRpb25zLmZyb21Qb2x5bm9taWFsKHBvbHlub21pYWxzW25hbWVdLCA0LCBjdXJ2ZSwgbG9nZ2VyKTtcblxuICAgICAgICAvLyBXcml0ZSBRIGNvZWZmaWNpZW50cyBhbmQgZXZhbHVhdGlvbnNcbiAgICAgICAgYXdhaXQgc3RhcnRXcml0ZVNlY3Rpb24oZmRaS2V5LCBzZWN0aW9uTnVtKTtcbiAgICAgICAgYXdhaXQgZmRaS2V5LndyaXRlKHBvbHlub21pYWxzW25hbWVdLmNvZWYpO1xuICAgICAgICBhd2FpdCBmZFpLZXkud3JpdGUoZXZhbHVhdGlvbnNbbmFtZV0uZXZhbCk7XG4gICAgICAgIGF3YWl0IGVuZFdyaXRlU2VjdGlvbihmZFpLZXkpO1xuICAgIH1cblxuICAgIGFzeW5jIGZ1bmN0aW9uIHdyaXRlU2lnbWEoZmRaS2V5KSB7XG4gICAgICAgIC8vIENvbXB1dGUgc2lnbWFcbiAgICAgICAgY29uc3Qgc2lnbWEgPSBuZXcgQmlnQnVmZmVyKHNGciAqIHNldHRpbmdzLmRvbWFpblNpemUgKiAzKTtcbiAgICAgICAgY29uc3QgbGFzdFNlZW4gPSBuZXcgQmlnQXJyYXkoc2V0dGluZ3MublZhcnMpO1xuICAgICAgICBjb25zdCBmaXJzdFBvcyA9IG5ldyBCaWdBcnJheShzZXR0aW5ncy5uVmFycyk7XG5cbiAgICAgICAgbGV0IHcgPSBGci5vbmU7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc2V0dGluZ3MuZG9tYWluU2l6ZTsgaSsrKSB7XG4gICAgICAgICAgICBpZiAoaSA8IHBsb25rQ29uc3RyYWludHMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgYnVpbGRTaWdtYShwbG9ua0NvbnN0cmFpbnRzW2ldWzBdLCBpKTtcbiAgICAgICAgICAgICAgICBidWlsZFNpZ21hKHBsb25rQ29uc3RyYWludHNbaV1bMV0sIHNldHRpbmdzLmRvbWFpblNpemUgKyBpKTtcbiAgICAgICAgICAgICAgICBidWlsZFNpZ21hKHBsb25rQ29uc3RyYWludHNbaV1bMl0sIHNldHRpbmdzLmRvbWFpblNpemUgKiAyICsgaSk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGkgPCBzZXR0aW5ncy5kb21haW5TaXplIC0gMikge1xuICAgICAgICAgICAgICAgIGJ1aWxkU2lnbWEoMCwgaSk7XG4gICAgICAgICAgICAgICAgYnVpbGRTaWdtYSgwLCBzZXR0aW5ncy5kb21haW5TaXplICsgaSk7XG4gICAgICAgICAgICAgICAgYnVpbGRTaWdtYSgwLCBzZXR0aW5ncy5kb21haW5TaXplICogMiArIGkpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBzaWdtYS5zZXQodywgaSAqIHNGcik7XG4gICAgICAgICAgICAgICAgc2lnbWEuc2V0KEZyLm11bCh3LCBrMSksIChzZXR0aW5ncy5kb21haW5TaXplICsgaSkgKiBzRnIpO1xuICAgICAgICAgICAgICAgIHNpZ21hLnNldChGci5tdWwodywgazIpLCAoc2V0dGluZ3MuZG9tYWluU2l6ZSAqIDIgKyBpKSAqIHNGcik7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHcgPSBGci5tdWwodywgRnIud1tzZXR0aW5ncy5jaXJQb3dlcl0pO1xuXG4gICAgICAgICAgICBpZiAoKGxvZ2dlcikgJiYgKGkgIT09IDApICYmIChpICUgNTAwMDAwID09PSAwKSkge1xuICAgICAgICAgICAgICAgIGxvZ2dlci5pbmZvKGAgICAgICB3cml0aW5nIHNpZ21hIHBoYXNlMTogJHtpfS8ke3Bsb25rQ29uc3RyYWludHMubGVuZ3RofWApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzZXR0aW5ncy5uVmFyczsgaSsrKSB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIGZpcnN0UG9zW2ldICE9PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgICAgICAgICAgICAgc2lnbWEuc2V0KGxhc3RTZWVuW2ldLCBmaXJzdFBvc1tpXSAqIHNGcik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIC8vIHRocm93IG5ldyBFcnJvcihcIlZhcmlhYmxlIG5vdCB1c2VkXCIpO1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiVmFyaWFibGUgbm90IHVzZWRcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoKGxvZ2dlcikgJiYgKGkgIT09IDApICYmIChpICUgNTAwMDAwID09PSAwKSkgbG9nZ2VyLmluZm8oYCAgICAgIHdyaXRpbmcgc2lnbWEgcGhhc2UyOiAke2l9LyR7c2V0dGluZ3MublZhcnN9YCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZ2xvYmFsVGhpcy5nYykgZ2xvYmFsVGhpcy5nYygpO1xuXG4gICAgICAgIC8vIFdyaXRlIHNpZ21hIGNvZWZmaWNpZW50cyBhbmQgZXZhbHVhdGlvbnNcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAzOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IHNlY3Rpb25JZCA9IDAgPT09IGkgPyBaS0VZX0ZGX1NJR01BMV9TRUNUSU9OIDogMSA9PT0gaSA/IFpLRVlfRkZfU0lHTUEyX1NFQ1RJT04gOiBaS0VZX0ZGX1NJR01BM19TRUNUSU9OO1xuXG4gICAgICAgICAgICBsZXQgbmFtZSA9IFwiU1wiICsgKGkgKyAxKTtcbiAgICAgICAgICAgIHBvbHlub21pYWxzW25hbWVdID0gYXdhaXQgUG9seW5vbWlhbC5mcm9tRXZhbHVhdGlvbnMoc2lnbWEuc2xpY2Uoc2V0dGluZ3MuZG9tYWluU2l6ZSAqIHNGciAqIGksIHNldHRpbmdzLmRvbWFpblNpemUgKiBzRnIgKiAoaSArIDEpKSwgY3VydmUsIGxvZ2dlcik7XG4gICAgICAgICAgICBldmFsdWF0aW9uc1tuYW1lXSA9IGF3YWl0IEV2YWx1YXRpb25zLmZyb21Qb2x5bm9taWFsKHBvbHlub21pYWxzW25hbWVdLCA0LCBjdXJ2ZSwgbG9nZ2VyKTtcbiAgICAgICAgICAgIGF3YWl0IHN0YXJ0V3JpdGVTZWN0aW9uKGZkWktleSwgc2VjdGlvbklkKTtcbiAgICAgICAgICAgIGF3YWl0IGZkWktleS53cml0ZShwb2x5bm9taWFsc1tuYW1lXS5jb2VmKTtcbiAgICAgICAgICAgIGF3YWl0IGZkWktleS53cml0ZShldmFsdWF0aW9uc1tuYW1lXS5ldmFsKTtcbiAgICAgICAgICAgIGF3YWl0IGVuZFdyaXRlU2VjdGlvbihmZFpLZXkpO1xuXG4gICAgICAgICAgICBpZiAoZ2xvYmFsVGhpcy5nYykgZ2xvYmFsVGhpcy5nYygpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIDA7XG5cbiAgICAgICAgZnVuY3Rpb24gYnVpbGRTaWdtYShzaWduYWxJZCwgaWR4KSB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIGxhc3RTZWVuW3NpZ25hbElkXSA9PT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgICAgICAgICAgIGZpcnN0UG9zW3NpZ25hbElkXSA9IGlkeDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgc2lnbWEuc2V0KGxhc3RTZWVuW3NpZ25hbElkXSwgaWR4ICogc0ZyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxldCB2O1xuICAgICAgICAgICAgaWYgKGlkeCA8IHNldHRpbmdzLmRvbWFpblNpemUpIHtcbiAgICAgICAgICAgICAgICB2ID0gdztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaWR4IDwgMiAqIHNldHRpbmdzLmRvbWFpblNpemUpIHtcbiAgICAgICAgICAgICAgICB2ID0gRnIubXVsKHcsIGsxKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdiA9IEZyLm11bCh3LCBrMik7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGxhc3RTZWVuW3NpZ25hbElkXSA9IHY7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBhc3luYyBmdW5jdGlvbiB3cml0ZUxhZ3JhbmdlUG9seW5vbWlhbHMoZmRaS2V5KSB7XG4gICAgICAgIGF3YWl0IHN0YXJ0V3JpdGVTZWN0aW9uKGZkWktleSwgWktFWV9GRl9MQUdSQU5HRV9TRUNUSU9OKTtcblxuICAgICAgICBjb25zdCBsID0gTWF0aC5tYXgoc2V0dGluZ3MublB1YmxpYywgMSk7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbDsgaSsrKSB7XG4gICAgICAgICAgICBsZXQgYnVmZiA9IG5ldyBCaWdCdWZmZXIoc2V0dGluZ3MuZG9tYWluU2l6ZSAqIHNGcik7XG4gICAgICAgICAgICBidWZmLnNldChGci5vbmUsIGkgKiBzRnIpO1xuXG4gICAgICAgICAgICBhd2FpdCB3cml0ZVA0KGZkWktleSwgYnVmZik7XG4gICAgICAgIH1cbiAgICAgICAgYXdhaXQgZW5kV3JpdGVTZWN0aW9uKGZkWktleSk7XG4gICAgfVxuXG4gICAgYXN5bmMgZnVuY3Rpb24gd3JpdGVQdGF1KGZkWktleSkge1xuICAgICAgICBhd2FpdCBzdGFydFdyaXRlU2VjdGlvbihmZFpLZXksIFpLRVlfRkZfUFRBVV9TRUNUSU9OKTtcblxuICAgICAgICAvLyBkb21haW5TaXplICogOSArIDE4ID0gbWF4aW11bSBTUlMgbGVuZ3RoIG5lZWRlZCwgc3BlY2lmaWNhbGx5IHRvIGNvbW1pdCBDMlxuICAgICAgICBQVGF1ID0gbmV3IEJpZ0J1ZmZlcigoc2V0dGluZ3MuZG9tYWluU2l6ZSAqIDkgKyAxOCkgKiBzRzEpO1xuICAgICAgICBhd2FpdCBmZFBUYXUucmVhZFRvQnVmZmVyKFBUYXUsIDAsIChzZXR0aW5ncy5kb21haW5TaXplICogOSArIDE4KSAqIHNHMSwgcFRhdVNlY3Rpb25zWzJdWzBdLnApO1xuXG4gICAgICAgIGF3YWl0IGZkWktleS53cml0ZShQVGF1KTtcbiAgICAgICAgYXdhaXQgZW5kV3JpdGVTZWN0aW9uKGZkWktleSk7XG4gICAgfVxuXG4gICAgYXN5bmMgZnVuY3Rpb24gd3JpdGVDMChmZFpLZXkpIHtcbiAgICAgICAgLy8gQzAoWCkgOj0gUUwoWF44KSArIFggwrcgUVIoWF44KSArIFheMiDCtyBRTyhYXjgpICsgWF4zIMK3IFFNKFheOCkgKyBYXjQgwrcgUUMoWF44KVxuICAgICAgICAvLyAgICAgICAgICAgICsgWF41IMK3IFNJR01BMShYXjgpICsgWF42IMK3IFNJR01BMihYXjgpICsgWF43IMK3IFNJR01BMyhYXjgpXG4gICAgICAgIGxldCBDMCA9IG5ldyBDUG9seW5vbWlhbCg4LCBjdXJ2ZSwgbG9nZ2VyKTtcbiAgICAgICAgQzAuYWRkUG9seW5vbWlhbCgwLCBwb2x5bm9taWFscy5RTCk7XG4gICAgICAgIEMwLmFkZFBvbHlub21pYWwoMSwgcG9seW5vbWlhbHMuUVIpO1xuICAgICAgICBDMC5hZGRQb2x5bm9taWFsKDIsIHBvbHlub21pYWxzLlFPKTtcbiAgICAgICAgQzAuYWRkUG9seW5vbWlhbCgzLCBwb2x5bm9taWFscy5RTSk7XG4gICAgICAgIEMwLmFkZFBvbHlub21pYWwoNCwgcG9seW5vbWlhbHMuUUMpO1xuICAgICAgICBDMC5hZGRQb2x5bm9taWFsKDUsIHBvbHlub21pYWxzLlMxKTtcbiAgICAgICAgQzAuYWRkUG9seW5vbWlhbCg2LCBwb2x5bm9taWFscy5TMik7XG4gICAgICAgIEMwLmFkZFBvbHlub21pYWwoNywgcG9seW5vbWlhbHMuUzMpO1xuXG4gICAgICAgIHBvbHlub21pYWxzLkMwID0gQzAuZ2V0UG9seW5vbWlhbCgpO1xuXG4gICAgICAgIC8vIENoZWNrIGRlZ3JlZVxuICAgICAgICBpZiAocG9seW5vbWlhbHMuQzAuZGVncmVlKCkgPj0gOCAqIHNldHRpbmdzLmRvbWFpblNpemUpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkMwIFBvbHlub21pYWwgaXMgbm90IHdlbGwgY2FsY3VsYXRlZFwiKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGF3YWl0IHN0YXJ0V3JpdGVTZWN0aW9uKGZkWktleSwgWktFWV9GRl9DMF9TRUNUSU9OKTtcbiAgICAgICAgYXdhaXQgZmRaS2V5LndyaXRlKHBvbHlub21pYWxzLkMwLmNvZWYpO1xuICAgICAgICBhd2FpdCBlbmRXcml0ZVNlY3Rpb24oZmRaS2V5KTtcbiAgICB9XG5cbiAgICBhc3luYyBmdW5jdGlvbiB3cml0ZUZGbG9ua0hlYWRlcihmZFpLZXkpIHtcbiAgICAgICAgYXdhaXQgc3RhcnRXcml0ZVNlY3Rpb24oZmRaS2V5LCBaS0VZX0ZGX0hFQURFUl9TRUNUSU9OKTtcblxuICAgICAgICBjb25zdCBwcmltZVEgPSBjdXJ2ZS5xO1xuICAgICAgICBjb25zdCBuOHEgPSAoTWF0aC5mbG9vcigoU2NhbGFyLmJpdExlbmd0aChwcmltZVEpIC0gMSkgLyA2NCkgKyAxKSAqIDg7XG4gICAgICAgIGF3YWl0IGZkWktleS53cml0ZVVMRTMyKG44cSk7XG4gICAgICAgIGF3YWl0IHdyaXRlQmlnSW50KGZkWktleSwgcHJpbWVRLCBuOHEpO1xuXG4gICAgICAgIGNvbnN0IHByaW1lUiA9IGN1cnZlLnI7XG4gICAgICAgIGNvbnN0IG44ciA9IChNYXRoLmZsb29yKChTY2FsYXIuYml0TGVuZ3RoKHByaW1lUikgLSAxKSAvIDY0KSArIDEpICogODtcbiAgICAgICAgYXdhaXQgZmRaS2V5LndyaXRlVUxFMzIobjhyKTtcbiAgICAgICAgYXdhaXQgd3JpdGVCaWdJbnQoZmRaS2V5LCBwcmltZVIsIG44cik7XG5cbiAgICAgICAgLy8gVG90YWwgbnVtYmVyIG9mIHIxY3MgdmFyc1xuICAgICAgICBhd2FpdCBmZFpLZXkud3JpdGVVTEUzMihzZXR0aW5ncy5uVmFycyk7XG4gICAgICAgIC8vIFRvdGFsIG51bWJlciBvZiByMWNzIHB1YmxpYyB2YXJzID0gb3V0cHV0cyArIHB1YmxpYyBpbnB1dHNcbiAgICAgICAgYXdhaXQgZmRaS2V5LndyaXRlVUxFMzIoc2V0dGluZ3MublB1YmxpYyk7XG4gICAgICAgIGF3YWl0IGZkWktleS53cml0ZVVMRTMyKHNldHRpbmdzLmRvbWFpblNpemUpO1xuICAgICAgICBhd2FpdCBmZFpLZXkud3JpdGVVTEUzMihwbG9ua0FkZGl0aW9ucy5sZW5ndGgpO1xuICAgICAgICBhd2FpdCBmZFpLZXkud3JpdGVVTEUzMihwbG9ua0NvbnN0cmFpbnRzLmxlbmd0aCk7XG5cbiAgICAgICAgYXdhaXQgZmRaS2V5LndyaXRlKGsxKTtcbiAgICAgICAgYXdhaXQgZmRaS2V5LndyaXRlKGsyKTtcblxuICAgICAgICBhd2FpdCBmZFpLZXkud3JpdGUodzMpO1xuICAgICAgICBhd2FpdCBmZFpLZXkud3JpdGUodzQpO1xuICAgICAgICBhd2FpdCBmZFpLZXkud3JpdGUodzgpO1xuICAgICAgICBhd2FpdCBmZFpLZXkud3JpdGUod3IpO1xuXG4gICAgICAgIGxldCBiWF8yO1xuICAgICAgICBiWF8yID0gYXdhaXQgZmRQVGF1LnJlYWQoc0cyLCBwVGF1U2VjdGlvbnNbM11bMF0ucCArIHNHMik7XG4gICAgICAgIGF3YWl0IGZkWktleS53cml0ZShiWF8yKTtcblxuICAgICAgICBsZXQgY29tbWl0QzAgPSBhd2FpdCBwb2x5bm9taWFscy5DMC5tdWx0aUV4cG9uZW50aWF0aW9uKFBUYXUsIFwiQzBcIik7XG4gICAgICAgIGF3YWl0IGZkWktleS53cml0ZShjb21taXRDMCk7XG5cbiAgICAgICAgYXdhaXQgZW5kV3JpdGVTZWN0aW9uKGZkWktleSk7XG4gICAgfVxuXG4gICAgYXN5bmMgZnVuY3Rpb24gd3JpdGVQNChmZFpLZXksIGJ1ZmYpIHtcbiAgICAgICAgY29uc3QgW2NvZWZmaWNpZW50cywgZXZhbHVhdGlvbnM0XSA9IGF3YWl0IFBvbHlub21pYWwudG80VChidWZmLCBzZXR0aW5ncy5kb21haW5TaXplLCBbXSwgRnIpO1xuICAgICAgICBhd2FpdCBmZFpLZXkud3JpdGUoY29lZmZpY2llbnRzKTtcbiAgICAgICAgYXdhaXQgZmRaS2V5LndyaXRlKGV2YWx1YXRpb25zNCk7XG5cbiAgICAgICAgcmV0dXJuIFtjb2VmZmljaWVudHMsIGV2YWx1YXRpb25zNF07XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY29tcHV0ZUsxSzIoKSB7XG4gICAgICAgIGxldCBrMSA9IEZyLnR3bztcbiAgICAgICAgd2hpbGUgKGlzSW5jbHVkZWQoazEsIFtdLCBzZXR0aW5ncy5jaXJQb3dlcikpIEZyLmFkZChrMSwgRnIub25lKTtcbiAgICAgICAgbGV0IGsyID0gRnIuYWRkKGsxLCBGci5vbmUpO1xuICAgICAgICB3aGlsZSAoaXNJbmNsdWRlZChrMiwgW2sxXSwgc2V0dGluZ3MuY2lyUG93ZXIpKSBGci5hZGQoazIsIEZyLm9uZSk7XG4gICAgICAgIHJldHVybiBbazEsIGsyXTtcblxuICAgICAgICBmdW5jdGlvbiBpc0luY2x1ZGVkKGssIGtBcnIsIHBvdykge1xuICAgICAgICAgICAgY29uc3QgZG9tYWluU2l6ZSA9IDIgKiogcG93O1xuICAgICAgICAgICAgbGV0IHcgPSBGci5vbmU7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGRvbWFpblNpemU7IGkrKykge1xuICAgICAgICAgICAgICAgIGlmIChGci5lcShrLCB3KSkgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBrQXJyLmxlbmd0aDsgaisrKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChGci5lcShrLCBGci5tdWwoa0FycltqXSwgdykpKSByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdyA9IEZyLm11bCh3LCBGci53W3Bvd10pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY29tcHV0ZVczKCkge1xuICAgICAgICBsZXQgZ2VuZXJhdG9yID0gRnIuZSgzMTYyNCk7XG5cbiAgICAgICAgLy8gRXhwb25lbnQgaXMgb3JkZXIociAtIDEpIC8gM1xuICAgICAgICBsZXQgb3JkZXJSc3ViMSA9IDM2NDgwNDA0Nzg2Mzk4NzkyMDM3MDc3MzQyOTA4NzYyMTI1MTQ3NTgwNjA3MzM0MDI2NzIzOTA2MTYzNjczNjQ0MjkzMDE0MTU5MzZuO1xuICAgICAgICBsZXQgZXhwb25lbnQgPSBTY2FsYXIuZGl2KG9yZGVyUnN1YjEsIFNjYWxhci5lKDMpKTtcblxuICAgICAgICByZXR1cm4gRnIuZXhwKGdlbmVyYXRvciwgZXhwb25lbnQpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGNvbXB1dGVXNCgpIHtcbiAgICAgICAgcmV0dXJuIEZyLndbMl07XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY29tcHV0ZVc4KCkge1xuICAgICAgICByZXR1cm4gRnIud1szXTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRPbWVnYUN1YmljUm9vdChwb3dlciwgRnIpIHtcbiAgICAgICAgLy8gSGFyZGNvcmRlZCAzdGgtcm9vdCBvZiBGci53WzI4XVxuICAgICAgICBjb25zdCBmaXJzdFJvb3QgPSBGci5lKDQ2Nzc5OTE2NTg4NjA2OTYxMDAzNjA0Njg2Njc5OTI2NDAyNjQ4MTM0NDI5OTA3OTAxMTc2MjAyNjc3NDUzMzc3NDM0NTk4ODA4MG4pO1xuXG4gICAgICAgIHJldHVybiBGci5leHAoZmlyc3RSb290LCAyICoqICgyOCAtIHBvd2VyKSk7XG4gICAgfVxufVxuXG5cbiIsIi8qXG4gICAgQ29weXJpZ2h0IDIwMjIgaWRlbjMgYXNzb2NpYXRpb24uXG5cbiAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBzbmFya2pzLlxuXG4gICAgc25hcmtqcyBpcyBhIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vclxuICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGVcbiAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbilcbiAgICBhbnkgbGF0ZXIgdmVyc2lvbi5cblxuICAgIHNuYXJranMgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFlcbiAgICBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3JcbiAgICBtb3JlIGRldGFpbHMuXG5cbiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZyB3aXRoXG4gICAgc25hcmtqcy4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cbiovXG5cbmltcG9ydCAqIGFzIGJpbkZpbGVVdGlscyBmcm9tIFwiQGlkZW4zL2JpbmZpbGV1dGlsc1wiO1xuaW1wb3J0ICogYXMgemtleVV0aWxzIGZyb20gXCIuL3prZXlfdXRpbHMuanNcIjtcbmltcG9ydCAqIGFzIHd0bnNVdGlscyBmcm9tIFwiLi93dG5zX3V0aWxzLmpzXCI7XG5pbXBvcnQgeyBCaWdCdWZmZXIsIFNjYWxhciwgdXRpbHMgfSBmcm9tIFwiZmZqYXZhc2NyaXB0XCI7XG5pbXBvcnQgeyBGRkxPTktfUFJPVE9DT0xfSUQgfSBmcm9tIFwiLi96a2V5X2NvbnN0YW50cy5qc1wiO1xuaW1wb3J0IHtcbiAgICBaS0VZX0ZGX0FfTUFQX1NFQ1RJT04sXG4gICAgWktFWV9GRl9BRERJVElPTlNfU0VDVElPTixcbiAgICBaS0VZX0ZGX0JfTUFQX1NFQ1RJT04sXG4gICAgWktFWV9GRl9DMF9TRUNUSU9OLFxuICAgIFpLRVlfRkZfQ19NQVBfU0VDVElPTixcbiAgICBaS0VZX0ZGX0xBR1JBTkdFX1NFQ1RJT04sXG4gICAgWktFWV9GRl9QVEFVX1NFQ1RJT04sXG4gICAgWktFWV9GRl9RQ19TRUNUSU9OLFxuICAgIFpLRVlfRkZfUUxfU0VDVElPTixcbiAgICBaS0VZX0ZGX1FNX1NFQ1RJT04sXG4gICAgWktFWV9GRl9RT19TRUNUSU9OLFxuICAgIFpLRVlfRkZfUVJfU0VDVElPTixcbiAgICBaS0VZX0ZGX1NJR01BMV9TRUNUSU9OLFxuICAgIFpLRVlfRkZfU0lHTUEyX1NFQ1RJT04sXG4gICAgWktFWV9GRl9TSUdNQTNfU0VDVElPTixcbn0gZnJvbSBcIi4vZmZsb25rX2NvbnN0YW50cy5qc1wiO1xuaW1wb3J0IHsgS2VjY2FrMjU2VHJhbnNjcmlwdCB9IGZyb20gXCIuL0tlY2NhazI1NlRyYW5zY3JpcHQuanNcIjtcbmltcG9ydCB7IFByb29mIH0gZnJvbSBcIi4vcHJvb2YuanNcIjtcbmltcG9ydCB7IFBvbHlub21pYWwgfSBmcm9tIFwiLi9wb2x5bm9taWFsL3BvbHlub21pYWwuanNcIjtcbmltcG9ydCB7IEV2YWx1YXRpb25zIH0gZnJvbSBcIi4vcG9seW5vbWlhbC9ldmFsdWF0aW9ucy5qc1wiO1xuaW1wb3J0IHsgQ1BvbHlub21pYWwgfSBmcm9tIFwiLi9wb2x5bm9taWFsL2Nwb2x5bm9taWFsLmpzXCI7XG5cbmNvbnN0IHsgc3RyaW5naWZ5QmlnSW50cyB9ID0gdXRpbHM7XG5cblxuZXhwb3J0IGRlZmF1bHQgYXN5bmMgZnVuY3Rpb24gZmZsb25rUHJvdmUoemtleUZpbGVOYW1lLCB3aXRuZXNzRmlsZU5hbWUsIGxvZ2dlcikge1xuICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKFwiRkZMT05LIFBST1ZFUiBTVEFSVEVEXCIpO1xuXG4gICAgLy8gUmVhZCB3aXRuZXNzIGZpbGVcbiAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhcIj4gUmVhZGluZyB3aXRuZXNzIGZpbGVcIik7XG4gICAgY29uc3Qge1xuICAgICAgICBmZDogZmRXdG5zLFxuICAgICAgICBzZWN0aW9uczogd3Ruc1NlY3Rpb25zXG4gICAgfSA9IGF3YWl0IGJpbkZpbGVVdGlscy5yZWFkQmluRmlsZSh3aXRuZXNzRmlsZU5hbWUsIFwid3Ruc1wiLCAyLCAxIDw8IDI1LCAxIDw8IDIzKTtcbiAgICBjb25zdCB3dG5zID0gYXdhaXQgd3Ruc1V0aWxzLnJlYWRIZWFkZXIoZmRXdG5zLCB3dG5zU2VjdGlvbnMpO1xuXG4gICAgLy9SZWFkIHprZXkgZmlsZVxuICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKFwiPiBSZWFkaW5nIHprZXkgZmlsZVwiKTtcbiAgICBjb25zdCB7XG4gICAgICAgIGZkOiBmZFpLZXksXG4gICAgICAgIHNlY3Rpb25zOiB6a2V5U2VjdGlvbnNcbiAgICB9ID0gYXdhaXQgYmluRmlsZVV0aWxzLnJlYWRCaW5GaWxlKHprZXlGaWxlTmFtZSwgXCJ6a2V5XCIsIDIsIDEgPDwgMjUsIDEgPDwgMjMpO1xuICAgIGNvbnN0IHprZXkgPSBhd2FpdCB6a2V5VXRpbHMucmVhZEhlYWRlcihmZFpLZXksIHprZXlTZWN0aW9ucyk7XG5cbiAgICBpZiAoemtleS5wcm90b2NvbElkICE9PSBGRkxPTktfUFJPVE9DT0xfSUQpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiemtleSBmaWxlIGlzIG5vdCBmZmxvbmtcIik7XG4gICAgfVxuXG4gICAgaWYgKCFTY2FsYXIuZXEoemtleS5yLCB3dG5zLnEpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIkN1cnZlIG9mIHRoZSB3aXRuZXNzIGRvZXMgbm90IG1hdGNoIHRoZSBjdXJ2ZSBvZiB0aGUgcHJvdmluZyBrZXlcIik7XG4gICAgfVxuXG4gICAgaWYgKHd0bnMubldpdG5lc3MgIT09IHprZXkublZhcnMgLSB6a2V5Lm5BZGRpdGlvbnMpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIHdpdG5lc3MgbGVuZ3RoLiBDaXJjdWl0OiAke3prZXkublZhcnN9LCB3aXRuZXNzOiAke3d0bnMubldpdG5lc3N9LCAke3prZXkubkFkZGl0aW9uc31gKTtcbiAgICB9XG5cbiAgICBjb25zdCBjdXJ2ZSA9IHprZXkuY3VydmU7XG5cbiAgICBjb25zdCBGciA9IGN1cnZlLkZyO1xuXG4gICAgY29uc3Qgc0ZyID0gY3VydmUuRnIubjg7XG4gICAgY29uc3Qgc0cxID0gY3VydmUuRzEuRi5uOCAqIDI7XG4gICAgY29uc3Qgc0RvbWFpbiA9IHprZXkuZG9tYWluU2l6ZSAqIHNGcjtcblxuICAgIGlmIChsb2dnZXIpIHtcbiAgICAgICAgbG9nZ2VyLmluZm8oXCItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXCIpO1xuICAgICAgICBsb2dnZXIuaW5mbyhcIiAgRkZMT05LIFBST1ZFIFNFVFRJTkdTXCIpO1xuICAgICAgICBsb2dnZXIuaW5mbyhgICBDdXJ2ZTogICAgICAgICAke2N1cnZlLm5hbWV9YCk7XG4gICAgICAgIGxvZ2dlci5pbmZvKGAgIENpcmN1aXQgcG93ZXI6ICR7emtleS5wb3dlcn1gKTtcbiAgICAgICAgbG9nZ2VyLmluZm8oYCAgRG9tYWluIHNpemU6ICAgJHt6a2V5LmRvbWFpblNpemV9YCk7XG4gICAgICAgIGxvZ2dlci5pbmZvKGAgIFZhcnM6ICAgICAgICAgICR7emtleS5uVmFyc31gKTtcbiAgICAgICAgbG9nZ2VyLmluZm8oYCAgUHVibGljIHZhcnM6ICAgJHt6a2V5Lm5QdWJsaWN9YCk7XG4gICAgICAgIGxvZ2dlci5pbmZvKGAgIENvbnN0cmFpbnRzOiAgICR7emtleS5uQ29uc3RyYWludHN9YCk7XG4gICAgICAgIGxvZ2dlci5pbmZvKGAgIEFkZGl0aW9uczogICAgICR7emtleS5uQWRkaXRpb25zfWApO1xuICAgICAgICBsb2dnZXIuaW5mbyhcIi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cIik7XG4gICAgfVxuXG4gICAgLy9SZWFkIHdpdG5lc3MgZGF0YVxuICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKFwiPiBSZWFkaW5nIHdpdG5lc3MgZmlsZSBkYXRhXCIpO1xuICAgIGNvbnN0IGJ1ZmZXaXRuZXNzID0gYXdhaXQgYmluRmlsZVV0aWxzLnJlYWRTZWN0aW9uKGZkV3Rucywgd3Ruc1NlY3Rpb25zLCAyKTtcbiAgICBhd2FpdCBmZFd0bnMuY2xvc2UoKTtcblxuICAgIC8vIEZpcnN0IGVsZW1lbnQgaW4gcGxvbmsgaXMgbm90IHVzZWQgYW5kIGNhbiBiZSBhbnkgdmFsdWUuIChCdXQgYWx3YXlzIHRoZSBzYW1lKS5cbiAgICAvLyBXZSBzZXQgaXQgdG8gemVybyB0byBnbyBmYXN0ZXIgaW4gdGhlIGV4cG9uZW50aWF0aW9ucy5cbiAgICBidWZmV2l0bmVzcy5zZXQoRnIuemVybywgMCk7XG4gICAgY29uc3QgYnVmZkludGVybmFsV2l0bmVzcyA9IG5ldyBCaWdCdWZmZXIoemtleS5uQWRkaXRpb25zICogc0ZyKTtcblxuICAgIGxldCBidWZmZXJzID0ge307XG4gICAgbGV0IHBvbHlub21pYWxzID0ge307XG4gICAgbGV0IGV2YWx1YXRpb25zID0ge307XG5cbiAgICAvLyBUbyBkaXZpZGUgcHJpbWUgZmllbGRzIHRoZSBFeHRlbmRlZCBFdWNsaWRlYW4gQWxnb3JpdGhtIGZvciBjb21wdXRpbmcgbW9kdWxhciBpbnZlcnNlcyBpcyBuZWVkZWQuXG4gICAgLy8gTk9URTogVGhpcyBpcyB0aGUgZXF1aXZhbGVudCBvZiBjb21wdXRlIDEvZGVub21pbmF0b3IgYW5kIHRoZW4gbXVsdGlwbHkgaXQgYnkgdGhlIG51bWVyYXRvci5cbiAgICAvLyBUaGUgRXh0ZW5kZWQgRXVjbGlkZWFuIEFsZ29yaXRobSBpcyBleHBlbnNpdmUgaW4gdGVybXMgb2YgY29tcHV0YXRpb24uXG4gICAgLy8gRm9yIHRoZSBzcGVjaWFsIGNhc2Ugd2hlcmUgd2UgbmVlZCB0byBkbyBtYW55IG1vZHVsYXIgaW52ZXJzZXMsIHRoZXJlJ3MgYSBzaW1wbGUgbWF0aGVtYXRpY2FsIHRyaWNrXG4gICAgLy8gdGhhdCBhbGxvd3MgdXMgdG8gY29tcHV0ZSBtYW55IGludmVyc2VzLCBjYWxsZWQgTW9udGdvbWVyeSBiYXRjaCBpbnZlcnNpb24uXG4gICAgLy8gTW9yZSBpbmZvOiBodHRwczovL3ZpdGFsaWsuY2EvZ2VuZXJhbC8yMDE4LzA3LzIxL3N0YXJrc19wYXJ0XzMuaHRtbFxuICAgIC8vIE1vbnRnb21lcnkgYmF0Y2ggaW52ZXJzaW9uIHJlZHVjZXMgdGhlIG4gaW52ZXJzZSBjb21wdXRhdGlvbnMgdG8gYSBzaW5nbGUgb25lXG4gICAgLy8gVG8gc2F2ZSB0aGlzIChzaW5nbGUpIGludmVyc2UgY29tcHV0YXRpb24gb24tY2hhaW4sIHdpbGwgY29tcHV0ZSBpdCBpbiBwcm92aW5nIHRpbWUgYW5kIHNlbmQgaXQgdG8gdGhlIHZlcmlmaWVyLlxuICAgIC8vIFRoZSB2ZXJpZmllciB3aWxsIGhhdmUgdG8gY2hlY2s6XG4gICAgLy8gMSkgdGhlIGRlbm9taW5hdG9yIGlzIGNvcnJlY3QgbXVsdGlwbHlpbmcgYnkgaGltc2VsZiBub24taW52ZXJ0ZWQgLT4gYSAqIDEvYSA9PSAxXG4gICAgLy8gMikgY29tcHV0ZSB0aGUgcmVzdCBvZiB0aGUgZGVub21pbmF0b3JzIHVzaW5nIHRoZSBNb250Z29tZXJ5IGJhdGNoIGludmVyc2lvblxuICAgIC8vIFRoZSBpbnZlcnNpb25zIGFyZTpcbiAgICAvLyAgIMK3IGRlbm9taW5hdG9yIG5lZWRlZCBpbiBzdGVwIDggYW5kIDkgb2YgdGhlIHZlcmlmaWVyIHRvIG11bHRpcGx5IGJ5IDEvWl9IKHhpKVxuICAgIC8vICAgwrcgZGVub21pbmF0b3IgbmVlZGVkIGluIHN0ZXAgMTAgYW5kIDExIG9mIHRoZSB2ZXJpZmllclxuICAgIC8vICAgwrcgZGVub21pbmF0b3IgbmVlZGVkIGluIHRoZSB2ZXJpZmllciB3aGVuIGNvbXB1dGluZyBMX2lee1MxfShYKSBhbmQgTF9pXntTMn0oWClcbiAgICAvLyAgIMK3IExfaSBpPTEgdG8gbnVtIHB1YmxpYyBpbnB1dHMsIG5lZWRlZCBpbiBzdGVwIDYgYW5kIDcgb2YgdGhlIHZlcmlmaWVyIHRvIGNvbXB1dGUgTF8xKHhpKSBhbmQgUEkoeGkpXG4gICAgbGV0IHRvSW52ZXJzZSA9IHt9O1xuXG4gICAgbGV0IGNoYWxsZW5nZXMgPSB7fTtcbiAgICBsZXQgcm9vdHMgPSB7fTtcblxuICAgIGxldCBwcm9vZiA9IG5ldyBQcm9vZihjdXJ2ZSwgbG9nZ2VyKTtcblxuICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKGA+IFJlYWRpbmcgU2VjdGlvbiAke1pLRVlfRkZfQURESVRJT05TX1NFQ1RJT059LiBBZGRpdGlvbnNgKTtcbiAgICBhd2FpdCBjYWxjdWxhdGVBZGRpdGlvbnMoKTtcblxuICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKGA+IFJlYWRpbmcgU2VjdGlvbnMgJHtaS0VZX0ZGX1NJR01BMV9TRUNUSU9OfSwke1pLRVlfRkZfU0lHTUEyX1NFQ1RJT059LCR7WktFWV9GRl9TSUdNQTNfU0VDVElPTn0uIFNpZ21hMSwgU2lnbWEyICYgU2lnbWEgM2ApO1xuICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKFwiwrfCt8K3IFJlYWRpbmcgU2lnbWEgcG9seW5vbWlhbHMgXCIpO1xuICAgIHBvbHlub21pYWxzLlNpZ21hMSA9IG5ldyBQb2x5bm9taWFsKG5ldyBCaWdCdWZmZXIoc0RvbWFpbiksIGN1cnZlLCBsb2dnZXIpO1xuICAgIHBvbHlub21pYWxzLlNpZ21hMiA9IG5ldyBQb2x5bm9taWFsKG5ldyBCaWdCdWZmZXIoc0RvbWFpbiksIGN1cnZlLCBsb2dnZXIpO1xuICAgIHBvbHlub21pYWxzLlNpZ21hMyA9IG5ldyBQb2x5bm9taWFsKG5ldyBCaWdCdWZmZXIoc0RvbWFpbiksIGN1cnZlLCBsb2dnZXIpO1xuXG4gICAgYXdhaXQgZmRaS2V5LnJlYWRUb0J1ZmZlcihwb2x5bm9taWFscy5TaWdtYTEuY29lZiwgMCwgc0RvbWFpbiwgemtleVNlY3Rpb25zW1pLRVlfRkZfU0lHTUExX1NFQ1RJT05dWzBdLnApO1xuICAgIGF3YWl0IGZkWktleS5yZWFkVG9CdWZmZXIocG9seW5vbWlhbHMuU2lnbWEyLmNvZWYsIDAsIHNEb21haW4sIHprZXlTZWN0aW9uc1taS0VZX0ZGX1NJR01BMl9TRUNUSU9OXVswXS5wKTtcbiAgICBhd2FpdCBmZFpLZXkucmVhZFRvQnVmZmVyKHBvbHlub21pYWxzLlNpZ21hMy5jb2VmLCAwLCBzRG9tYWluLCB6a2V5U2VjdGlvbnNbWktFWV9GRl9TSUdNQTNfU0VDVElPTl1bMF0ucCk7XG5cbiAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhcIsK3wrfCtyBSZWFkaW5nIFNpZ21hIGV2YWx1YXRpb25zXCIpO1xuICAgIGV2YWx1YXRpb25zLlNpZ21hMSA9IG5ldyBFdmFsdWF0aW9ucyhuZXcgQmlnQnVmZmVyKHNEb21haW4gKiA0KSwgY3VydmUsIGxvZ2dlcik7XG4gICAgZXZhbHVhdGlvbnMuU2lnbWEyID0gbmV3IEV2YWx1YXRpb25zKG5ldyBCaWdCdWZmZXIoc0RvbWFpbiAqIDQpLCBjdXJ2ZSwgbG9nZ2VyKTtcbiAgICBldmFsdWF0aW9ucy5TaWdtYTMgPSBuZXcgRXZhbHVhdGlvbnMobmV3IEJpZ0J1ZmZlcihzRG9tYWluICogNCksIGN1cnZlLCBsb2dnZXIpO1xuXG4gICAgYXdhaXQgZmRaS2V5LnJlYWRUb0J1ZmZlcihldmFsdWF0aW9ucy5TaWdtYTEuZXZhbCwgMCwgc0RvbWFpbiAqIDQsIHprZXlTZWN0aW9uc1taS0VZX0ZGX1NJR01BMV9TRUNUSU9OXVswXS5wICsgc0RvbWFpbik7XG4gICAgYXdhaXQgZmRaS2V5LnJlYWRUb0J1ZmZlcihldmFsdWF0aW9ucy5TaWdtYTIuZXZhbCwgMCwgc0RvbWFpbiAqIDQsIHprZXlTZWN0aW9uc1taS0VZX0ZGX1NJR01BMl9TRUNUSU9OXVswXS5wICsgc0RvbWFpbik7XG4gICAgYXdhaXQgZmRaS2V5LnJlYWRUb0J1ZmZlcihldmFsdWF0aW9ucy5TaWdtYTMuZXZhbCwgMCwgc0RvbWFpbiAqIDQsIHprZXlTZWN0aW9uc1taS0VZX0ZGX1NJR01BM19TRUNUSU9OXVswXS5wICsgc0RvbWFpbik7XG5cbiAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhgPiBSZWFkaW5nIFNlY3Rpb24gJHtaS0VZX0ZGX1BUQVVfU0VDVElPTn0uIFBvd2VycyBvZiBUYXVgKTtcbiAgICBjb25zdCBQVGF1ID0gbmV3IEJpZ0J1ZmZlcih6a2V5LmRvbWFpblNpemUgKiAxNiAqIHNHMSk7XG4gICAgLy8gZG9tYWluU2l6ZSAqIDkgKyAxOCA9IFNSUyBsZW5ndGggaW4gdGhlIHprZXkgc2F2ZWQgaW4gc2V0dXAgcHJvY2Vzcy5cbiAgICAvLyBpdCBjb3JyZXNwb25kcyB0byB0aGUgbWF4aW11bSBTUlMgbGVuZ3RoIG5lZWRlZCwgc3BlY2lmaWNhbGx5IHRvIGNvbW1pdCBDMlxuICAgIC8vIG5vdGljZSB0aGF0IHRoZSByZXNlcnZlZCBidWZmZXJzIHNpemUgaXMgemtleS5kb21haW5TaXplICogMTYgKiBzRzEgYmVjYXVzZSBhIHBvd2VyIG9mIHR3byBidWZmZXIgc2l6ZSBpcyBuZWVkZWRcbiAgICAvLyB0aGUgcmVtYWluaW5nIGJ1ZmZlciBub3QgZmlsbGVkIGZyb20gU1JTIGFyZSBzZXQgdG8gMFxuICAgIGF3YWl0IGZkWktleS5yZWFkVG9CdWZmZXIoUFRhdSwgMCwgKHprZXkuZG9tYWluU2l6ZSAqIDkgKyAxOCkgKiBzRzEsIHprZXlTZWN0aW9uc1taS0VZX0ZGX1BUQVVfU0VDVElPTl1bMF0ucCk7XG5cbiAgICAvLyBTVEFSVCBGRkxPTksgUFJPVkVSIFBST1RPQ09MXG4gICAgaWYgKGdsb2JhbFRoaXMuZ2MpIGdsb2JhbFRoaXMuZ2MoKTtcblxuICAgIC8vIFJPVU5EIDEuIENvbXB1dGUgQzEoWCkgcG9seW5vbWlhbFxuICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKFwiXCIpO1xuICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKFwiPiBST1VORCAxXCIpO1xuICAgIGF3YWl0IHJvdW5kMSgpO1xuXG4gICAgZGVsZXRlIHBvbHlub21pYWxzLlQwO1xuICAgIGRlbGV0ZSBldmFsdWF0aW9ucy5RTDtcbiAgICBkZWxldGUgZXZhbHVhdGlvbnMuUVI7XG4gICAgZGVsZXRlIGV2YWx1YXRpb25zLlFNO1xuICAgIGRlbGV0ZSBldmFsdWF0aW9ucy5RTztcbiAgICBkZWxldGUgZXZhbHVhdGlvbnMuUUM7XG4gICAgaWYgKGdsb2JhbFRoaXMuZ2MpIGdsb2JhbFRoaXMuZ2MoKTtcblxuICAgIC8vIFJPVU5EIDIuIENvbXB1dGUgQzIoWCkgcG9seW5vbWlhbFxuICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKFwiPiBST1VORCAyXCIpO1xuICAgIGF3YWl0IHJvdW5kMigpO1xuXG4gICAgZGVsZXRlIGJ1ZmZlcnMuQTtcbiAgICBkZWxldGUgYnVmZmVycy5CO1xuICAgIGRlbGV0ZSBidWZmZXJzLkM7XG4gICAgZGVsZXRlIGV2YWx1YXRpb25zLkE7XG4gICAgZGVsZXRlIGV2YWx1YXRpb25zLkI7XG4gICAgZGVsZXRlIGV2YWx1YXRpb25zLkM7XG4gICAgZGVsZXRlIGV2YWx1YXRpb25zLlNpZ21hMTtcbiAgICBkZWxldGUgZXZhbHVhdGlvbnMuU2lnbWEyO1xuICAgIGRlbGV0ZSBldmFsdWF0aW9ucy5TaWdtYTM7XG4gICAgZGVsZXRlIGV2YWx1YXRpb25zLmxhZ3JhbmdlMTtcbiAgICBkZWxldGUgZXZhbHVhdGlvbnMuWjtcbiAgICBpZiAoZ2xvYmFsVGhpcy5nYykgZ2xvYmFsVGhpcy5nYygpO1xuXG4gICAgLy8gUk9VTkQgMy4gQ29tcHV0ZSBvcGVuaW5nIGV2YWx1YXRpb25zXG4gICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oXCI+IFJPVU5EIDNcIik7XG4gICAgYXdhaXQgcm91bmQzKCk7XG5cbiAgICBkZWxldGUgcG9seW5vbWlhbHMuQTtcbiAgICBkZWxldGUgcG9seW5vbWlhbHMuQjtcbiAgICBkZWxldGUgcG9seW5vbWlhbHMuQztcbiAgICBkZWxldGUgcG9seW5vbWlhbHMuWjtcbiAgICBkZWxldGUgcG9seW5vbWlhbHMuVDE7XG4gICAgZGVsZXRlIHBvbHlub21pYWxzLlQyO1xuICAgIGRlbGV0ZSBwb2x5bm9taWFscy5TaWdtYTE7XG4gICAgZGVsZXRlIHBvbHlub21pYWxzLlNpZ21hMjtcbiAgICBkZWxldGUgcG9seW5vbWlhbHMuU2lnbWEzO1xuICAgIGRlbGV0ZSBwb2x5bm9taWFscy5RTDtcbiAgICBkZWxldGUgcG9seW5vbWlhbHMuUVI7XG4gICAgZGVsZXRlIHBvbHlub21pYWxzLlFNO1xuICAgIGRlbGV0ZSBwb2x5bm9taWFscy5RQztcbiAgICBkZWxldGUgcG9seW5vbWlhbHMuUU87XG4gICAgaWYgKGdsb2JhbFRoaXMuZ2MpIGdsb2JhbFRoaXMuZ2MoKTtcblxuICAgIC8vIFJPVU5EIDQuIENvbXB1dGUgVyhYKSBwb2x5bm9taWFsXG4gICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oXCI+IFJPVU5EIDRcIik7XG4gICAgYXdhaXQgcm91bmQ0KCk7XG4gICAgaWYgKGdsb2JhbFRoaXMuZ2MpIGdsb2JhbFRoaXMuZ2MoKTtcblxuICAgIC8vIFJPVU5EIDUuIENvbXB1dGUgVycoWCkgcG9seW5vbWlhbFxuICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKFwiPiBST1VORCA1XCIpO1xuICAgIGF3YWl0IHJvdW5kNSgpO1xuXG4gICAgZGVsZXRlIHBvbHlub21pYWxzLkMwO1xuICAgIGRlbGV0ZSBwb2x5bm9taWFscy5DMTtcbiAgICBkZWxldGUgcG9seW5vbWlhbHMuQzI7XG4gICAgZGVsZXRlIHBvbHlub21pYWxzLlIxO1xuICAgIGRlbGV0ZSBwb2x5bm9taWFscy5SMjtcbiAgICBkZWxldGUgcG9seW5vbWlhbHMuRjtcbiAgICBkZWxldGUgcG9seW5vbWlhbHMuTDtcbiAgICBkZWxldGUgcG9seW5vbWlhbHMuWlQ7XG4gICAgZGVsZXRlIHBvbHlub21pYWxzLlpUUzI7XG4gICAgYXdhaXQgZmRaS2V5LmNsb3NlKCk7XG4gICAgaWYgKGdsb2JhbFRoaXMuZ2MpIGdsb2JhbFRoaXMuZ2MoKTtcblxuICAgIHByb29mLmFkZEV2YWx1YXRpb24oXCJpbnZcIiwgZ2V0TW9udGdvbWVyeUJhdGNoZWRJbnZlcnNlKCkpO1xuXG4gICAgLy8gUHJlcGFyZSBwcm9vZlxuICAgIGxldCBfcHJvb2YgPSBwcm9vZi50b09iamVjdFByb29mKCk7XG4gICAgX3Byb29mLnByb3RvY29sID0gXCJmZmxvbmtcIjtcbiAgICBfcHJvb2YuY3VydmUgPSBjdXJ2ZS5uYW1lO1xuXG4gICAgLy8gUHJlcGFyZSBwdWJsaWMgaW5wdXRzXG4gICAgbGV0IHB1YmxpY1NpZ25hbHMgPSBbXTtcblxuICAgIGZvciAobGV0IGkgPSAxOyBpIDw9IHprZXkublB1YmxpYzsgaSsrKSB7XG4gICAgICAgIGNvbnN0IGlfc0ZyID0gaSAqIHNGcjtcblxuICAgICAgICBjb25zdCBwdWIgPSBidWZmV2l0bmVzcy5zbGljZShpX3NGciwgaV9zRnIgKyBzRnIpO1xuICAgICAgICBwdWJsaWNTaWduYWxzLnB1c2goU2NhbGFyLmZyb21ScHJMRShwdWIpKTtcbiAgICB9XG5cbiAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhcIkZGTE9OSyBQUk9WRVIgRklOSVNIRURcIik7XG5cbiAgICByZXR1cm4ge1xuICAgICAgICBwcm9vZjogc3RyaW5naWZ5QmlnSW50cyhfcHJvb2YpLFxuICAgICAgICBwdWJsaWNTaWduYWxzOiBzdHJpbmdpZnlCaWdJbnRzKHB1YmxpY1NpZ25hbHMpXG4gICAgfTtcblxuICAgIGFzeW5jIGZ1bmN0aW9uIGNhbGN1bGF0ZUFkZGl0aW9ucygpIHtcbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oXCLCt8K3wrcgQ29tcHV0aW5nIGFkZGl0aW9uc1wiKTtcbiAgICAgICAgY29uc3QgYWRkaXRpb25zQnVmZiA9IGF3YWl0IGJpbkZpbGVVdGlscy5yZWFkU2VjdGlvbihmZFpLZXksIHprZXlTZWN0aW9ucywgWktFWV9GRl9BRERJVElPTlNfU0VDVElPTik7XG5cbiAgICAgICAgLy8gc2l6ZXM6IHdpcmVJZF94ID0gNCBieXRlcyAoMzIgYml0cyksIGZhY3Rvcl94ID0gZmllbGQgc2l6ZSBiaXRzXG4gICAgICAgIC8vIEFkZGl0aW9uIGZvcm06IHdpcmVJZF9hIHdpcmVJZF9iIGZhY3Rvcl9hIGZhY3Rvcl9iIChzaXplIGlzIDQgKyA0ICsgc0ZyICsgc0ZyKVxuICAgICAgICBjb25zdCBzU3VtID0gOCArIHNGciAqIDI7XG5cbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB6a2V5Lm5BZGRpdGlvbnM7IGkrKykge1xuICAgICAgICAgICAgaWYgKGxvZ2dlciAmJiAoMCAhPT0gaSkgJiYgKGkgJSAxMDAwMDAgPT09IDApKSBsb2dnZXIuaW5mbyhgICAgIGFkZGl0aW9uICR7aX0vJHt6a2V5Lm5BZGRpdGlvbnN9YCk7XG5cbiAgICAgICAgICAgIC8vIFJlYWQgYWRkaXRpb24gdmFsdWVzXG4gICAgICAgICAgICBsZXQgb2Zmc2V0ID0gaSAqIHNTdW07XG4gICAgICAgICAgICBjb25zdCBzaWduYWxJZDEgPSByZWFkVUludDMyKGFkZGl0aW9uc0J1ZmYsIG9mZnNldCk7XG4gICAgICAgICAgICBvZmZzZXQgKz0gNDtcbiAgICAgICAgICAgIGNvbnN0IHNpZ25hbElkMiA9IHJlYWRVSW50MzIoYWRkaXRpb25zQnVmZiwgb2Zmc2V0KTtcbiAgICAgICAgICAgIG9mZnNldCArPSA0O1xuICAgICAgICAgICAgY29uc3QgZmFjdG9yMSA9IGFkZGl0aW9uc0J1ZmYuc2xpY2Uob2Zmc2V0LCBvZmZzZXQgKyBzRnIpO1xuICAgICAgICAgICAgb2Zmc2V0ICs9IHNGcjtcbiAgICAgICAgICAgIGNvbnN0IGZhY3RvcjIgPSBhZGRpdGlvbnNCdWZmLnNsaWNlKG9mZnNldCwgb2Zmc2V0ICsgc0ZyKTtcblxuICAgICAgICAgICAgLy8gR2V0IHdpdG5lc3MgdmFsdWVcbiAgICAgICAgICAgIGNvbnN0IHdpdG5lc3MxID0gZ2V0V2l0bmVzcyhzaWduYWxJZDEpO1xuICAgICAgICAgICAgY29uc3Qgd2l0bmVzczIgPSBnZXRXaXRuZXNzKHNpZ25hbElkMik7XG5cbiAgICAgICAgICAgIC8vQ2FsY3VsYXRlIGZpbmFsIHJlc3VsdFxuICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gRnIuYWRkKEZyLm11bChmYWN0b3IxLCB3aXRuZXNzMSksIEZyLm11bChmYWN0b3IyLCB3aXRuZXNzMikpO1xuXG4gICAgICAgICAgICBidWZmSW50ZXJuYWxXaXRuZXNzLnNldChyZXN1bHQsIHNGciAqIGkpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcmVhZFVJbnQzMihiLCBvKSB7XG4gICAgICAgIGNvbnN0IGJ1ZmYgPSBiLnNsaWNlKG8sIG8gKyA0KTtcbiAgICAgICAgY29uc3QgYnVmZlYgPSBuZXcgRGF0YVZpZXcoYnVmZi5idWZmZXIsIGJ1ZmYuYnl0ZU9mZnNldCwgYnVmZi5ieXRlTGVuZ3RoKTtcbiAgICAgICAgcmV0dXJuIGJ1ZmZWLmdldFVpbnQzMigwLCB0cnVlKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRXaXRuZXNzKGlkeCkge1xuICAgICAgICBsZXQgZGlmZiA9IHprZXkublZhcnMgLSB6a2V5Lm5BZGRpdGlvbnM7XG4gICAgICAgIGlmIChpZHggPCBkaWZmKSB7XG4gICAgICAgICAgICByZXR1cm4gYnVmZldpdG5lc3Muc2xpY2UoaWR4ICogc0ZyLCBpZHggKiBzRnIgKyBzRnIpO1xuICAgICAgICB9IGVsc2UgaWYgKGlkeCA8IHprZXkublZhcnMpIHtcbiAgICAgICAgICAgIGNvbnN0IG9mZnNldCA9IChpZHggLSBkaWZmKSAqIHNGcjtcbiAgICAgICAgICAgIHJldHVybiBidWZmSW50ZXJuYWxXaXRuZXNzLnNsaWNlKG9mZnNldCwgb2Zmc2V0ICsgc0ZyKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBGci56ZXJvO1xuICAgIH1cblxuICAgIGFzeW5jIGZ1bmN0aW9uIHJvdW5kMSgpIHtcbiAgICAgICAgLy8gU1RFUCAxLjEgLSBHZW5lcmF0ZSByYW5kb20gYmxpbmRpbmcgc2NhbGFycyAoYl8xLCAuLi4sIGI5KSDiiIggRlxuICAgICAgICBjaGFsbGVuZ2VzLmIgPSBbXTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDE7IGkgPD0gOTsgaSsrKSB7XG4gICAgICAgICAgICBjaGFsbGVuZ2VzLmJbaV0gPSBGci5yYW5kb20oKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFNURVAgMS4yIC0gQ29tcHV0ZSB3aXJlIHBvbHlub21pYWxzIGEoWCksIGIoWCkgYW5kIGMoWClcbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oXCI+IENvbXB1dGluZyBBLCBCLCBDIHdpcmUgcG9seW5vbWlhbHNcIik7XG4gICAgICAgIGF3YWl0IGNvbXB1dGVXaXJlUG9seW5vbWlhbHMoKTtcblxuICAgICAgICAvLyBTVEVQIDEuMyAtIENvbXB1dGUgdGhlIHF1b3RpZW50IHBvbHlub21pYWwgVDAoWClcbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oXCI+IENvbXB1dGluZyBUMCBwb2x5bm9taWFsXCIpO1xuICAgICAgICBhd2FpdCBjb21wdXRlVDAoKTtcblxuICAgICAgICAvLyBTVEVQIDEuNCAtIENvbXB1dGUgdGhlIEZGVC1zdHlsZSBjb21iaW5hdGlvbiBwb2x5bm9taWFsIEMxKFgpXG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKFwiPiBDb21wdXRpbmcgQzEgcG9seW5vbWlhbFwiKTtcbiAgICAgICAgYXdhaXQgY29tcHV0ZUMxKCk7XG5cbiAgICAgICAgLy8gVGhlIGZpcnN0IG91dHB1dCBvZiB0aGUgcHJvdmVyIGlzIChbQzFdXzEpXG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKFwiPiBDb21wdXRpbmcgQzEgbXVsdGkgZXhwb25lbnRpYXRpb25cIik7XG4gICAgICAgIGxldCBjb21taXRDMSA9IGF3YWl0IHBvbHlub21pYWxzLkMxLm11bHRpRXhwb25lbnRpYXRpb24oUFRhdSwgXCJDMVwiKTtcbiAgICAgICAgcHJvb2YuYWRkUG9seW5vbWlhbChcIkMxXCIsIGNvbW1pdEMxKTtcblxuICAgICAgICByZXR1cm4gMDtcblxuICAgICAgICBhc3luYyBmdW5jdGlvbiBjb21wdXRlV2lyZVBvbHlub21pYWxzKCkge1xuICAgICAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oXCLCt8K3wrcgUmVhZGluZyBkYXRhIGZyb20gemtleSBmaWxlXCIpO1xuICAgICAgICAgICAgLy8gQnVpbGQgQSwgQiBhbmQgQyBldmFsdWF0aW9ucyBidWZmZXIgZnJvbSB6a2V5IGFuZCB3aXRuZXNzIGZpbGVzXG4gICAgICAgICAgICBidWZmZXJzLkEgPSBuZXcgQmlnQnVmZmVyKHNEb21haW4pO1xuICAgICAgICAgICAgYnVmZmVycy5CID0gbmV3IEJpZ0J1ZmZlcihzRG9tYWluKTtcbiAgICAgICAgICAgIGJ1ZmZlcnMuQyA9IG5ldyBCaWdCdWZmZXIoc0RvbWFpbik7XG5cbiAgICAgICAgICAgIC8vIFJlYWQgemtleSBzZWN0aW9ucyBhbmQgZmlsbCB0aGUgYnVmZmVyc1xuICAgICAgICAgICAgY29uc3QgYU1hcEJ1ZmYgPSBhd2FpdCBiaW5GaWxlVXRpbHMucmVhZFNlY3Rpb24oZmRaS2V5LCB6a2V5U2VjdGlvbnMsIFpLRVlfRkZfQV9NQVBfU0VDVElPTik7XG4gICAgICAgICAgICBjb25zdCBiTWFwQnVmZiA9IGF3YWl0IGJpbkZpbGVVdGlscy5yZWFkU2VjdGlvbihmZFpLZXksIHprZXlTZWN0aW9ucywgWktFWV9GRl9CX01BUF9TRUNUSU9OKTtcbiAgICAgICAgICAgIGNvbnN0IGNNYXBCdWZmID0gYXdhaXQgYmluRmlsZVV0aWxzLnJlYWRTZWN0aW9uKGZkWktleSwgemtleVNlY3Rpb25zLCBaS0VZX0ZGX0NfTUFQX1NFQ1RJT04pO1xuXG4gICAgICAgICAgICAvLyBDb21wdXRlIGFsbCB3aXRuZXNzIGZyb20gc2lnbmFsIGlkcyBhbmQgc2V0IHRoZW0gdG8gQSxCICYgQyBidWZmZXJzXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHprZXkubkNvbnN0cmFpbnRzOyBpKyspIHtcbiAgICAgICAgICAgICAgICBjb25zdCBpX3NGciA9IGkgKiBzRnI7XG4gICAgICAgICAgICAgICAgY29uc3Qgb2Zmc2V0ID0gaSAqIDQ7XG5cbiAgICAgICAgICAgICAgICAvLyBDb21wdXRlIEEgdmFsdWUgZnJvbSBhIHNpZ25hbCBpZFxuICAgICAgICAgICAgICAgIGNvbnN0IHNpZ25hbElkQSA9IHJlYWRVSW50MzIoYU1hcEJ1ZmYsIG9mZnNldCk7XG4gICAgICAgICAgICAgICAgYnVmZmVycy5BLnNldChnZXRXaXRuZXNzKHNpZ25hbElkQSksIGlfc0ZyKTtcblxuICAgICAgICAgICAgICAgIC8vIENvbXB1dGUgQiB2YWx1ZSBmcm9tIGEgc2lnbmFsIGlkXG4gICAgICAgICAgICAgICAgY29uc3Qgc2lnbmFsSWRCID0gcmVhZFVJbnQzMihiTWFwQnVmZiwgb2Zmc2V0KTtcbiAgICAgICAgICAgICAgICBidWZmZXJzLkIuc2V0KGdldFdpdG5lc3Moc2lnbmFsSWRCKSwgaV9zRnIpO1xuXG4gICAgICAgICAgICAgICAgLy8gQ29tcHV0ZSBDIHZhbHVlIGZyb20gYSBzaWduYWwgaWRcbiAgICAgICAgICAgICAgICBjb25zdCBzaWduYWxJZEMgPSByZWFkVUludDMyKGNNYXBCdWZmLCBvZmZzZXQpO1xuICAgICAgICAgICAgICAgIGJ1ZmZlcnMuQy5zZXQoZ2V0V2l0bmVzcyhzaWduYWxJZEMpLCBpX3NGcik7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIEJsaW5kIGEoWCksIGIoWCkgYW5kIGMoWCkgcG9seW5vbWlhbHMgY29lZmZpY2llbnRzIHdpdGggYmxpbmRpbmcgc2NhbGFycyBiXG4gICAgICAgICAgICBidWZmZXJzLkEuc2V0KGNoYWxsZW5nZXMuYlsxXSwgc0RvbWFpbiAtIDY0KTtcbiAgICAgICAgICAgIGJ1ZmZlcnMuQS5zZXQoY2hhbGxlbmdlcy5iWzJdLCBzRG9tYWluIC0gMzIpO1xuICAgICAgICAgICAgYnVmZmVycy5CLnNldChjaGFsbGVuZ2VzLmJbM10sIHNEb21haW4gLSA2NCk7XG4gICAgICAgICAgICBidWZmZXJzLkIuc2V0KGNoYWxsZW5nZXMuYls0XSwgc0RvbWFpbiAtIDMyKTtcbiAgICAgICAgICAgIGJ1ZmZlcnMuQy5zZXQoY2hhbGxlbmdlcy5iWzVdLCBzRG9tYWluIC0gNjQpO1xuICAgICAgICAgICAgYnVmZmVycy5DLnNldChjaGFsbGVuZ2VzLmJbNl0sIHNEb21haW4gLSAzMik7XG5cbiAgICAgICAgICAgIGJ1ZmZlcnMuQSA9IGF3YWl0IEZyLmJhdGNoVG9Nb250Z29tZXJ5KGJ1ZmZlcnMuQSk7XG4gICAgICAgICAgICBidWZmZXJzLkIgPSBhd2FpdCBGci5iYXRjaFRvTW9udGdvbWVyeShidWZmZXJzLkIpO1xuICAgICAgICAgICAgYnVmZmVycy5DID0gYXdhaXQgRnIuYmF0Y2hUb01vbnRnb21lcnkoYnVmZmVycy5DKTtcblxuICAgICAgICAgICAgLy8gQ29tcHV0ZSB0aGUgY29lZmZpY2llbnRzIG9mIHRoZSB3aXJlIHBvbHlub21pYWxzIGEoWCksIGIoWCkgYW5kIGMoWCkgZnJvbSBBLEIgJiBDIGJ1ZmZlcnNcbiAgICAgICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKFwiwrfCt8K3IENvbXB1dGluZyBBIGlmZnRcIik7XG4gICAgICAgICAgICBwb2x5bm9taWFscy5BID0gYXdhaXQgUG9seW5vbWlhbC5mcm9tRXZhbHVhdGlvbnMoYnVmZmVycy5BLCBjdXJ2ZSwgbG9nZ2VyKTtcbiAgICAgICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKFwiwrfCt8K3IENvbXB1dGluZyBCIGlmZnRcIik7XG4gICAgICAgICAgICBwb2x5bm9taWFscy5CID0gYXdhaXQgUG9seW5vbWlhbC5mcm9tRXZhbHVhdGlvbnMoYnVmZmVycy5CLCBjdXJ2ZSwgbG9nZ2VyKTtcbiAgICAgICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKFwiwrfCt8K3IENvbXB1dGluZyBDIGlmZnRcIik7XG4gICAgICAgICAgICBwb2x5bm9taWFscy5DID0gYXdhaXQgUG9seW5vbWlhbC5mcm9tRXZhbHVhdGlvbnMoYnVmZmVycy5DLCBjdXJ2ZSwgbG9nZ2VyKTtcblxuICAgICAgICAgICAgLy8gQ29tcHV0ZSBleHRlbmRlZCBldmFsdWF0aW9ucyBvZiBhKFgpLCBiKFgpIGFuZCBjKFgpIHBvbHlub21pYWxzXG4gICAgICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhcIsK3wrfCtyBDb21wdXRpbmcgQSBmZnRcIik7XG4gICAgICAgICAgICBldmFsdWF0aW9ucy5BID0gYXdhaXQgRXZhbHVhdGlvbnMuZnJvbVBvbHlub21pYWwocG9seW5vbWlhbHMuQSwgNCwgY3VydmUsIGxvZ2dlcik7XG4gICAgICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhcIsK3wrfCtyBDb21wdXRpbmcgQiBmZnRcIik7XG4gICAgICAgICAgICBldmFsdWF0aW9ucy5CID0gYXdhaXQgRXZhbHVhdGlvbnMuZnJvbVBvbHlub21pYWwocG9seW5vbWlhbHMuQiwgNCwgY3VydmUsIGxvZ2dlcik7XG4gICAgICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhcIsK3wrfCtyBDb21wdXRpbmcgQyBmZnRcIik7XG4gICAgICAgICAgICBldmFsdWF0aW9ucy5DID0gYXdhaXQgRXZhbHVhdGlvbnMuZnJvbVBvbHlub21pYWwocG9seW5vbWlhbHMuQywgNCwgY3VydmUsIGxvZ2dlcik7XG5cbiAgICAgICAgICAgIC8vIENoZWNrIGRlZ3JlZXNcbiAgICAgICAgICAgIGlmIChwb2x5bm9taWFscy5BLmRlZ3JlZSgpID49IHprZXkuZG9tYWluU2l6ZSkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkEgUG9seW5vbWlhbCBpcyBub3Qgd2VsbCBjYWxjdWxhdGVkXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHBvbHlub21pYWxzLkIuZGVncmVlKCkgPj0gemtleS5kb21haW5TaXplKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiQiBQb2x5bm9taWFsIGlzIG5vdCB3ZWxsIGNhbGN1bGF0ZWRcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAocG9seW5vbWlhbHMuQy5kZWdyZWUoKSA+PSB6a2V5LmRvbWFpblNpemUpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJDIFBvbHlub21pYWwgaXMgbm90IHdlbGwgY2FsY3VsYXRlZFwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGFzeW5jIGZ1bmN0aW9uIGNvbXB1dGVUMCgpIHtcbiAgICAgICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKGDCt8K3wrcgUmVhZGluZyBzZWN0aW9ucyAke1pLRVlfRkZfUUxfU0VDVElPTn0sICR7WktFWV9GRl9RUl9TRUNUSU9OfWAgK1xuICAgICAgICAgICAgICAgIGAsICR7WktFWV9GRl9RTV9TRUNUSU9OfSwgJHtaS0VZX0ZGX1FPX1NFQ1RJT059LCAke1pLRVlfRkZfUUNfU0VDVElPTn0uIFEgc2VsZWN0b3JzYCk7XG4gICAgICAgICAgICAvLyBSZXNlcnZlIG1lbW9yeSBmb3IgUSdzIGV2YWx1YXRpb25zXG4gICAgICAgICAgICBldmFsdWF0aW9ucy5RTCA9IG5ldyBFdmFsdWF0aW9ucyhuZXcgQmlnQnVmZmVyKHNEb21haW4gKiA0KSwgY3VydmUsIGxvZ2dlcik7XG4gICAgICAgICAgICBldmFsdWF0aW9ucy5RUiA9IG5ldyBFdmFsdWF0aW9ucyhuZXcgQmlnQnVmZmVyKHNEb21haW4gKiA0KSwgY3VydmUsIGxvZ2dlcik7XG4gICAgICAgICAgICBldmFsdWF0aW9ucy5RTSA9IG5ldyBFdmFsdWF0aW9ucyhuZXcgQmlnQnVmZmVyKHNEb21haW4gKiA0KSwgY3VydmUsIGxvZ2dlcik7XG4gICAgICAgICAgICBldmFsdWF0aW9ucy5RTyA9IG5ldyBFdmFsdWF0aW9ucyhuZXcgQmlnQnVmZmVyKHNEb21haW4gKiA0KSwgY3VydmUsIGxvZ2dlcik7XG4gICAgICAgICAgICBldmFsdWF0aW9ucy5RQyA9IG5ldyBFdmFsdWF0aW9ucyhuZXcgQmlnQnVmZmVyKHNEb21haW4gKiA0KSwgY3VydmUsIGxvZ2dlcik7XG5cbiAgICAgICAgICAgIC8vIFJlYWQgUSdzIGV2YWx1YXRpb25zIGZyb20gemtleSBmaWxlXG4gICAgICAgICAgICBhd2FpdCBmZFpLZXkucmVhZFRvQnVmZmVyKGV2YWx1YXRpb25zLlFMLmV2YWwsIDAsIHNEb21haW4gKiA0LCB6a2V5U2VjdGlvbnNbWktFWV9GRl9RTF9TRUNUSU9OXVswXS5wICsgc0RvbWFpbik7XG4gICAgICAgICAgICBhd2FpdCBmZFpLZXkucmVhZFRvQnVmZmVyKGV2YWx1YXRpb25zLlFSLmV2YWwsIDAsIHNEb21haW4gKiA0LCB6a2V5U2VjdGlvbnNbWktFWV9GRl9RUl9TRUNUSU9OXVswXS5wICsgc0RvbWFpbik7XG4gICAgICAgICAgICBhd2FpdCBmZFpLZXkucmVhZFRvQnVmZmVyKGV2YWx1YXRpb25zLlFNLmV2YWwsIDAsIHNEb21haW4gKiA0LCB6a2V5U2VjdGlvbnNbWktFWV9GRl9RTV9TRUNUSU9OXVswXS5wICsgc0RvbWFpbik7XG4gICAgICAgICAgICBhd2FpdCBmZFpLZXkucmVhZFRvQnVmZmVyKGV2YWx1YXRpb25zLlFPLmV2YWwsIDAsIHNEb21haW4gKiA0LCB6a2V5U2VjdGlvbnNbWktFWV9GRl9RT19TRUNUSU9OXVswXS5wICsgc0RvbWFpbik7XG4gICAgICAgICAgICBhd2FpdCBmZFpLZXkucmVhZFRvQnVmZmVyKGV2YWx1YXRpb25zLlFDLmV2YWwsIDAsIHNEb21haW4gKiA0LCB6a2V5U2VjdGlvbnNbWktFWV9GRl9RQ19TRUNUSU9OXVswXS5wICsgc0RvbWFpbik7XG5cbiAgICAgICAgICAgIC8vIFJlYWQgTGFncmFuZ2UgcG9seW5vbWlhbHMgJiBldmFsdWF0aW9ucyBmcm9tIHprZXkgZmlsZVxuICAgICAgICAgICAgY29uc3QgbGFncmFuZ2VQb2x5bm9taWFscyA9IGF3YWl0IGJpbkZpbGVVdGlscy5yZWFkU2VjdGlvbihmZFpLZXksIHprZXlTZWN0aW9ucywgWktFWV9GRl9MQUdSQU5HRV9TRUNUSU9OKTtcbiAgICAgICAgICAgIGV2YWx1YXRpb25zLmxhZ3JhbmdlMSA9IG5ldyBFdmFsdWF0aW9ucyhsYWdyYW5nZVBvbHlub21pYWxzLCBjdXJ2ZSwgbG9nZ2VyKTtcblxuICAgICAgICAgICAgLy8gUmVzZXJ2ZSBtZW1vcnkgZm9yIGJ1ZmZlcnMgVDBcbiAgICAgICAgICAgIGJ1ZmZlcnMuVDAgPSBuZXcgQmlnQnVmZmVyKHNEb21haW4gKiA0KTtcblxuICAgICAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oXCLCt8K3wrcgQ29tcHV0aW5nIFQwIGV2YWx1YXRpb25zXCIpO1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB6a2V5LmRvbWFpblNpemUgKiA0OyBpKyspIHtcbiAgICAgICAgICAgICAgICBpZiAobG9nZ2VyICYmICgwICE9PSBpKSAmJiAoaSAlIDEwMDAwMCA9PT0gMCkpIGxvZ2dlci5pbmZvKGAgICAgICBUMCBldmFsdWF0aW9uICR7aX0vJHt6a2V5LmRvbWFpblNpemUgKiA0fWApO1xuXG4gICAgICAgICAgICAgICAgLy8gR2V0IHJlbGF0ZWQgZXZhbHVhdGlvbnMgdG8gY29tcHV0ZSBjdXJyZW50IFQwIGV2YWx1YXRpb25cbiAgICAgICAgICAgICAgICBjb25zdCBhID0gZXZhbHVhdGlvbnMuQS5nZXRFdmFsdWF0aW9uKGkpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGIgPSBldmFsdWF0aW9ucy5CLmdldEV2YWx1YXRpb24oaSk7XG4gICAgICAgICAgICAgICAgY29uc3QgYyA9IGV2YWx1YXRpb25zLkMuZ2V0RXZhbHVhdGlvbihpKTtcblxuICAgICAgICAgICAgICAgIGNvbnN0IHFsID0gZXZhbHVhdGlvbnMuUUwuZ2V0RXZhbHVhdGlvbihpKTtcbiAgICAgICAgICAgICAgICBjb25zdCBxciA9IGV2YWx1YXRpb25zLlFSLmdldEV2YWx1YXRpb24oaSk7XG4gICAgICAgICAgICAgICAgY29uc3QgcW0gPSBldmFsdWF0aW9ucy5RTS5nZXRFdmFsdWF0aW9uKGkpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHFvID0gZXZhbHVhdGlvbnMuUU8uZ2V0RXZhbHVhdGlvbihpKTtcbiAgICAgICAgICAgICAgICBjb25zdCBxYyA9IGV2YWx1YXRpb25zLlFDLmdldEV2YWx1YXRpb24oaSk7XG5cbiAgICAgICAgICAgICAgICAvLyBDb21wdXRlIGN1cnJlbnQgcHVibGljIGlucHV0XG4gICAgICAgICAgICAgICAgbGV0IHBpID0gRnIuemVybztcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHprZXkublB1YmxpYzsgaisrKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG9mZnNldCA9IChqICogNSAqIHprZXkuZG9tYWluU2l6ZSkgKyB6a2V5LmRvbWFpblNpemUgKyBpO1xuXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGxQb2wgPSBldmFsdWF0aW9ucy5sYWdyYW5nZTEuZ2V0RXZhbHVhdGlvbihvZmZzZXQpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBhVmFsID0gYnVmZmVycy5BLnNsaWNlKGogKiBzRnIsIChqICsgMSkgKiBzRnIpO1xuXG4gICAgICAgICAgICAgICAgICAgIHBpID0gRnIuc3ViKHBpLCBGci5tdWwobFBvbCwgYVZhbCkpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIC8vVDAoWCkgPSBbcV9MKFgpwrdhKFgpICsgcV9SKFgpwrdiKFgpICsgcV9NKFgpwrdhKFgpwrdiKFgpICsgcV9PKFgpwrdjKFgpICsgcV9DKFgpICsgUEkoWCldIMK3IDEvWl9IKFgpXG4gICAgICAgICAgICAgICAgLy8gQ29tcHV0ZSBmaXJzdCBUMChYKcK3Wl9IKFgpLCBzbyBkaXZpZGUgbGF0ZXIgdGhlIHJlc3VsdGluZyBwb2x5bm9taWFsIGJ5IFpfSChYKVxuICAgICAgICAgICAgICAgIC8vIGV4cHJlc3Npb24gMSAtPiBxX0woWCnCt2EoWClcbiAgICAgICAgICAgICAgICBjb25zdCBlMSA9IEZyLm11bChhLCBxbCk7XG5cbiAgICAgICAgICAgICAgICAvLyBleHByZXNzaW9uIDIgLT4gcV9SKFgpwrdiKFgpXG4gICAgICAgICAgICAgICAgY29uc3QgZTIgPSBGci5tdWwoYiwgcXIpO1xuXG4gICAgICAgICAgICAgICAgLy8gZXhwcmVzc2lvbiAzIC0+IHFfTShYKcK3YShYKcK3YihYKVxuICAgICAgICAgICAgICAgIGNvbnN0IGUzID0gRnIubXVsKEZyLm11bChhLCBiKSwgcW0pO1xuXG4gICAgICAgICAgICAgICAgLy8gZXhwcmVzc2lvbiA0IC0+IHFfTyhYKcK3YyhYKVxuICAgICAgICAgICAgICAgIGNvbnN0IGU0ID0gRnIubXVsKGMsIHFvKTtcblxuICAgICAgICAgICAgICAgIC8vIHQwID0gZXhwcmVzc2lvbnMgMSArIGV4cHJlc3Npb24gMiArIGV4cHJlc3Npb24gMyArIGV4cHJlc3Npb24gNCArIHFjICsgcGlcbiAgICAgICAgICAgICAgICBjb25zdCB0MCA9IEZyLmFkZChlMSwgRnIuYWRkKGUyLCBGci5hZGQoZTMsIEZyLmFkZChlNCwgRnIuYWRkKHFjLCBwaSkpKSkpO1xuXG4gICAgICAgICAgICAgICAgYnVmZmVycy5UMC5zZXQodDAsIGkgKiBzRnIpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhcImJ1ZmZlciBUMDogXCIgKyBidWZmZXJzLlQwLmJ5dGVMZW5ndGggLyBzRnIpO1xuXG4gICAgICAgICAgICAvLyBDb21wdXRlIHRoZSBjb2VmZmljaWVudHMgb2YgdGhlIHBvbHlub21pYWwgVDAoWCkgZnJvbSBidWZmZXJzLlQwXG4gICAgICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhcIsK3wrfCtyBDb21wdXRpbmcgVDAgaWZmdFwiKTtcbiAgICAgICAgICAgIHBvbHlub21pYWxzLlQwID0gYXdhaXQgUG9seW5vbWlhbC5mcm9tRXZhbHVhdGlvbnMoYnVmZmVycy5UMCwgY3VydmUsIGxvZ2dlcik7XG5cbiAgICAgICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKFwiVDAgbGVuZ3RoOiBcIiArIHBvbHlub21pYWxzLlQwLmxlbmd0aCgpKTtcbiAgICAgICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKFwiVDAgZGVncmVlOiBcIiArIHBvbHlub21pYWxzLlQwLmRlZ3JlZSgpKTtcblxuICAgICAgICAgICAgLy8gRGl2aWRlIHRoZSBwb2x5bm9taWFsIFQwIGJ5IFpfSChYKVxuICAgICAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oXCLCt8K3wrcgQ29tcHV0aW5nIFQwIC8gWkhcIik7XG4gICAgICAgICAgICBwb2x5bm9taWFscy5UMC5kaXZCeVplcm9maWVyKHprZXkuZG9tYWluU2l6ZSwgRnIub25lKTtcblxuICAgICAgICAgICAgLy8gQ2hlY2sgZGVncmVlXG4gICAgICAgICAgICBpZiAocG9seW5vbWlhbHMuVDAuZGVncmVlKCkgPj0gMiAqIHprZXkuZG9tYWluU2l6ZSAtIDIpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFQwIFBvbHlub21pYWwgaXMgbm90IHdlbGwgY2FsY3VsYXRlZCAoZGVncmVlIGlzICR7cG9seW5vbWlhbHMuVDAuZGVncmVlKCl9IGFuZCBtdXN0IGJlIGxlc3MgdGhhbiAkezIgKiB6a2V5LmRvbWFpblNpemUgKyAyfWApO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBkZWxldGUgYnVmZmVycy5UMDtcbiAgICAgICAgfVxuXG4gICAgICAgIGFzeW5jIGZ1bmN0aW9uIGNvbXB1dGVDMSgpIHtcbiAgICAgICAgICAgIGxldCBDMSA9IG5ldyBDUG9seW5vbWlhbCg0LCBjdXJ2ZSwgbG9nZ2VyKTtcbiAgICAgICAgICAgIEMxLmFkZFBvbHlub21pYWwoMCwgcG9seW5vbWlhbHMuQSk7XG4gICAgICAgICAgICBDMS5hZGRQb2x5bm9taWFsKDEsIHBvbHlub21pYWxzLkIpO1xuICAgICAgICAgICAgQzEuYWRkUG9seW5vbWlhbCgyLCBwb2x5bm9taWFscy5DKTtcbiAgICAgICAgICAgIEMxLmFkZFBvbHlub21pYWwoMywgcG9seW5vbWlhbHMuVDApO1xuXG4gICAgICAgICAgICBwb2x5bm9taWFscy5DMSA9IEMxLmdldFBvbHlub21pYWwoKTtcblxuICAgICAgICAgICAgLy8gQ2hlY2sgZGVncmVlXG4gICAgICAgICAgICBpZiAocG9seW5vbWlhbHMuQzEuZGVncmVlKCkgPj0gOCAqIHprZXkuZG9tYWluU2l6ZSAtIDgpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJDMSBQb2x5bm9taWFsIGlzIG5vdCB3ZWxsIGNhbGN1bGF0ZWRcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBhc3luYyBmdW5jdGlvbiByb3VuZDIoKSB7XG4gICAgICAgIC8vIFNURVAgMi4xIC0gQ29tcHV0ZSBwZXJtdXRhdGlvbiBjaGFsbGVuZ2UgYmV0YSBhbmQgZ2FtbWEg4oiIIEZcbiAgICAgICAgLy8gQ29tcHV0ZSBwZXJtdXRhdGlvbiBjaGFsbGVuZ2UgYmV0YVxuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhcIj4gQ29tcHV0aW5nIGNoYWxsZW5nZXMgYmV0YSBhbmQgZ2FtbWFcIik7XG4gICAgICAgIGNvbnN0IHRyYW5zY3JpcHQgPSBuZXcgS2VjY2FrMjU2VHJhbnNjcmlwdChjdXJ2ZSk7XG5cbiAgICAgICAgLy8gQWRkIEMwIHRvIHRoZSB0cmFuc2NyaXB0XG4gICAgICAgIHRyYW5zY3JpcHQuYWRkUG9sQ29tbWl0bWVudCh6a2V5LkMwKTtcblxuICAgICAgICAvLyBBZGQgQSB0byB0aGUgdHJhbnNjcmlwdFxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHprZXkublB1YmxpYzsgaSsrKSB7XG4gICAgICAgICAgICB0cmFuc2NyaXB0LmFkZFNjYWxhcihidWZmZXJzLkEuc2xpY2UoaSAqIHNGciwgaSAqIHNGciArIHNGcikpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gQWRkIEMxIHRvIHRoZSB0cmFuc2NyaXB0XG4gICAgICAgIHRyYW5zY3JpcHQuYWRkUG9sQ29tbWl0bWVudChwcm9vZi5nZXRQb2x5bm9taWFsKFwiQzFcIikpO1xuXG4gICAgICAgIGNoYWxsZW5nZXMuYmV0YSA9IHRyYW5zY3JpcHQuZ2V0Q2hhbGxlbmdlKCk7XG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKFwiwrfCt8K3IGNoYWxsZW5nZXMuYmV0YTogXCIgKyBGci50b1N0cmluZyhjaGFsbGVuZ2VzLmJldGEpKTtcblxuICAgICAgICAvLyBDb21wdXRlIHBlcm11dGF0aW9uIGNoYWxsZW5nZSBnYW1tYVxuICAgICAgICB0cmFuc2NyaXB0LnJlc2V0KCk7XG4gICAgICAgIHRyYW5zY3JpcHQuYWRkU2NhbGFyKGNoYWxsZW5nZXMuYmV0YSk7XG4gICAgICAgIGNoYWxsZW5nZXMuZ2FtbWEgPSB0cmFuc2NyaXB0LmdldENoYWxsZW5nZSgpO1xuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhcIsK3wrfCtyBjaGFsbGVuZ2VzLmdhbW1hOiBcIiArIEZyLnRvU3RyaW5nKGNoYWxsZW5nZXMuZ2FtbWEpKTtcblxuICAgICAgICAvLyBTVEVQIDIuMiAtIENvbXB1dGUgcGVybXV0YXRpb24gcG9seW5vbWlhbCB6KFgpXG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKFwiPiBDb21wdXRpbmcgWiBwb2x5bm9taWFsXCIpO1xuICAgICAgICBhd2FpdCBjb21wdXRlWigpO1xuXG4gICAgICAgIC8vIFNURVAgMi4zIC0gQ29tcHV0ZSBxdW90aWVudCBwb2x5bm9taWFsIFQxKFgpIGFuZCBUMihYKVxuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhcIj4gQ29tcHV0aW5nIFQxIHBvbHlub21pYWxcIik7XG4gICAgICAgIGF3YWl0IGNvbXB1dGVUMSgpO1xuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhcIj4gQ29tcHV0aW5nIFQyIHBvbHlub21pYWxcIik7XG4gICAgICAgIGF3YWl0IGNvbXB1dGVUMigpO1xuXG4gICAgICAgIC8vIFNURVAgMi40IC0gQ29tcHV0ZSB0aGUgRkZULXN0eWxlIGNvbWJpbmF0aW9uIHBvbHlub21pYWwgQzIoWClcbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oXCI+IENvbXB1dGluZyBDMiBwb2x5bm9taWFsXCIpO1xuICAgICAgICBhd2FpdCBjb21wdXRlQzIoKTtcblxuICAgICAgICAvLyBUaGUgc2Vjb25kIG91dHB1dCBvZiB0aGUgcHJvdmVyIGlzIChbQzJdXzEpXG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKFwiPiBDb21wdXRpbmcgQzIgbXVsdGkgZXhwb25lbnRpYXRpb25cIik7XG4gICAgICAgIGxldCBjb21taXRDMiA9IGF3YWl0IHBvbHlub21pYWxzLkMyLm11bHRpRXhwb25lbnRpYXRpb24oUFRhdSwgXCJDMlwiKTtcbiAgICAgICAgcHJvb2YuYWRkUG9seW5vbWlhbChcIkMyXCIsIGNvbW1pdEMyKTtcblxuICAgICAgICByZXR1cm4gMDtcblxuICAgICAgICBhc3luYyBmdW5jdGlvbiBjb21wdXRlWigpIHtcbiAgICAgICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKFwiwrfCt8K3IENvbXB1dGluZyBaIGV2YWx1YXRpb25zXCIpO1xuXG4gICAgICAgICAgICBsZXQgbnVtQXJyID0gbmV3IEJpZ0J1ZmZlcihzRG9tYWluKTtcbiAgICAgICAgICAgIGxldCBkZW5BcnIgPSBuZXcgQmlnQnVmZmVyKHNEb21haW4pO1xuXG4gICAgICAgICAgICAvLyBTZXQgdGhlIGZpcnN0IHZhbHVlcyB0byAxXG4gICAgICAgICAgICBudW1BcnIuc2V0KEZyLm9uZSwgMCk7XG4gICAgICAgICAgICBkZW5BcnIuc2V0KEZyLm9uZSwgMCk7XG5cbiAgICAgICAgICAgIC8vIFNldCBpbml0aWFsIG9tZWdhXG4gICAgICAgICAgICBsZXQgdyA9IEZyLm9uZTtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgemtleS5kb21haW5TaXplOyBpKyspIHtcbiAgICAgICAgICAgICAgICBpZiAobG9nZ2VyICYmICgwICE9PSBpKSAmJiAoaSAlIDEwMDAwMCA9PT0gMCkpIGxvZ2dlci5pbmZvKGAgICAgWiBldmFsdWF0aW9uICR7aX0vJHt6a2V5LmRvbWFpblNpemV9YCk7XG4gICAgICAgICAgICAgICAgY29uc3QgaV9zRnIgPSBpICogc0ZyO1xuXG4gICAgICAgICAgICAgICAgLy8gWihYKSA6PSBudW1BcnIgLyBkZW5BcnJcbiAgICAgICAgICAgICAgICAvLyBudW1BcnIgOj0gKGEgKyBiZXRhwrfPiSArIGdhbW1hKShiICsgYmV0YcK3z4nCt2sxICsgZ2FtbWEpKGMgKyBiZXRhwrfPicK3azIgKyBnYW1tYSlcbiAgICAgICAgICAgICAgICBjb25zdCBiZXRhdyA9IEZyLm11bChjaGFsbGVuZ2VzLmJldGEsIHcpO1xuXG4gICAgICAgICAgICAgICAgbGV0IG51bTEgPSBidWZmZXJzLkEuc2xpY2UoaV9zRnIsIGlfc0ZyICsgc0ZyKTtcbiAgICAgICAgICAgICAgICBudW0xID0gRnIuYWRkKG51bTEsIGJldGF3KTtcbiAgICAgICAgICAgICAgICBudW0xID0gRnIuYWRkKG51bTEsIGNoYWxsZW5nZXMuZ2FtbWEpO1xuXG4gICAgICAgICAgICAgICAgbGV0IG51bTIgPSBidWZmZXJzLkIuc2xpY2UoaV9zRnIsIGlfc0ZyICsgc0ZyKTtcbiAgICAgICAgICAgICAgICBudW0yID0gRnIuYWRkKG51bTIsIEZyLm11bCh6a2V5LmsxLCBiZXRhdykpO1xuICAgICAgICAgICAgICAgIG51bTIgPSBGci5hZGQobnVtMiwgY2hhbGxlbmdlcy5nYW1tYSk7XG5cbiAgICAgICAgICAgICAgICBsZXQgbnVtMyA9IGJ1ZmZlcnMuQy5zbGljZShpX3NGciwgaV9zRnIgKyBzRnIpO1xuICAgICAgICAgICAgICAgIG51bTMgPSBGci5hZGQobnVtMywgRnIubXVsKHprZXkuazIsIGJldGF3KSk7XG4gICAgICAgICAgICAgICAgbnVtMyA9IEZyLmFkZChudW0zLCBjaGFsbGVuZ2VzLmdhbW1hKTtcblxuICAgICAgICAgICAgICAgIGxldCBudW0gPSBGci5tdWwobnVtMSwgRnIubXVsKG51bTIsIG51bTMpKTtcblxuICAgICAgICAgICAgICAgIC8vIGRlbkFyciA6PSAoYSArIGJldGHCt3NpZ21hMSArIGdhbW1hKShiICsgYmV0YcK3c2lnbWEyICsgZ2FtbWEpKGMgKyBiZXRhwrdzaWdtYTMgKyBnYW1tYSlcbiAgICAgICAgICAgICAgICBsZXQgZGVuMSA9IGJ1ZmZlcnMuQS5zbGljZShpX3NGciwgaV9zRnIgKyBzRnIpO1xuICAgICAgICAgICAgICAgIGRlbjEgPSBGci5hZGQoZGVuMSwgRnIubXVsKGNoYWxsZW5nZXMuYmV0YSwgZXZhbHVhdGlvbnMuU2lnbWExLmdldEV2YWx1YXRpb24oaSAqIDQpKSk7XG4gICAgICAgICAgICAgICAgZGVuMSA9IEZyLmFkZChkZW4xLCBjaGFsbGVuZ2VzLmdhbW1hKTtcblxuICAgICAgICAgICAgICAgIGxldCBkZW4yID0gYnVmZmVycy5CLnNsaWNlKGlfc0ZyLCBpX3NGciArIHNGcik7XG4gICAgICAgICAgICAgICAgZGVuMiA9IEZyLmFkZChkZW4yLCBGci5tdWwoY2hhbGxlbmdlcy5iZXRhLCBldmFsdWF0aW9ucy5TaWdtYTIuZ2V0RXZhbHVhdGlvbihpICogNCkpKTtcbiAgICAgICAgICAgICAgICBkZW4yID0gRnIuYWRkKGRlbjIsIGNoYWxsZW5nZXMuZ2FtbWEpO1xuXG4gICAgICAgICAgICAgICAgbGV0IGRlbjMgPSBidWZmZXJzLkMuc2xpY2UoaV9zRnIsIGlfc0ZyICsgc0ZyKTtcbiAgICAgICAgICAgICAgICBkZW4zID0gRnIuYWRkKGRlbjMsIEZyLm11bChjaGFsbGVuZ2VzLmJldGEsIGV2YWx1YXRpb25zLlNpZ21hMy5nZXRFdmFsdWF0aW9uKGkgKiA0KSkpO1xuICAgICAgICAgICAgICAgIGRlbjMgPSBGci5hZGQoZGVuMywgY2hhbGxlbmdlcy5nYW1tYSk7XG5cbiAgICAgICAgICAgICAgICBsZXQgZGVuID0gRnIubXVsKGRlbjEsIEZyLm11bChkZW4yLCBkZW4zKSk7XG5cbiAgICAgICAgICAgICAgICAvLyBNdWx0aXBseSBjdXJyZW50IG51bSB2YWx1ZSB3aXRoIHRoZSBwcmV2aW91cyBvbmUgc2F2ZWQgaW4gbnVtQXJyXG4gICAgICAgICAgICAgICAgbnVtID0gRnIubXVsKG51bUFyci5zbGljZShpX3NGciwgaV9zRnIgKyBzRnIpLCBudW0pO1xuICAgICAgICAgICAgICAgIG51bUFyci5zZXQobnVtLCAoKGkgKyAxKSAlIHprZXkuZG9tYWluU2l6ZSkgKiBzRnIpO1xuXG4gICAgICAgICAgICAgICAgLy8gTXVsdGlwbHkgY3VycmVudCBkZW4gdmFsdWUgd2l0aCB0aGUgcHJldmlvdXMgb25lIHNhdmVkIGluIGRlbkFyclxuICAgICAgICAgICAgICAgIGRlbiA9IEZyLm11bChkZW5BcnIuc2xpY2UoaV9zRnIsIGlfc0ZyICsgc0ZyKSwgZGVuKTtcbiAgICAgICAgICAgICAgICBkZW5BcnIuc2V0KGRlbiwgKChpICsgMSkgJSB6a2V5LmRvbWFpblNpemUpICogc0ZyKTtcblxuICAgICAgICAgICAgICAgIC8vIE5leHQgb21lZ2FcbiAgICAgICAgICAgICAgICB3ID0gRnIubXVsKHcsIEZyLndbemtleS5wb3dlcl0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gQ29tcHV0ZSB0aGUgaW52ZXJzZSBvZiBkZW5BcnIgdG8gY29tcHV0ZSBpbiB0aGUgbmV4dCBjb21tYW5kIHRoZVxuICAgICAgICAgICAgLy8gZGl2aXNpb24gbnVtQXJyL2RlbkFyciBieSBtdWx0aXBseWluZyBudW0gwrcgMS9kZW5BcnJcbiAgICAgICAgICAgIGRlbkFyciA9IGF3YWl0IEZyLmJhdGNoSW52ZXJzZShkZW5BcnIpO1xuXG4gICAgICAgICAgICAvLyBUT0RPOiBEbyBpdCBpbiBhc3NlbWJseSBhbmQgaW4gcGFyYWxsZWxcbiAgICAgICAgICAgIC8vIE11bHRpcGx5IG51bUFyciDCtyBkZW5BcnIgd2hlcmUgZGVuQXJyIHdhcyBpbnZlcnRlZCBpbiB0aGUgcHJldmlvdXMgY29tbWFuZFxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB6a2V5LmRvbWFpblNpemU7IGkrKykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGlfc0ZyID0gaSAqIHNGcjtcblxuICAgICAgICAgICAgICAgIGNvbnN0IHogPSBGci5tdWwobnVtQXJyLnNsaWNlKGlfc0ZyLCBpX3NGciArIHNGciksIGRlbkFyci5zbGljZShpX3NGciwgaV9zRnIgKyBzRnIpKTtcbiAgICAgICAgICAgICAgICBudW1BcnIuc2V0KHosIGlfc0ZyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIEZyb20gbm93IG9uIHRoZSB2YWx1ZXMgc2F2ZWQgb24gbnVtQXJyIHdpbGwgYmUgWihYKSBidWZmZXJcbiAgICAgICAgICAgIGJ1ZmZlcnMuWiA9IG51bUFycjtcblxuICAgICAgICAgICAgaWYgKCFGci5lcShudW1BcnIuc2xpY2UoMCwgc0ZyKSwgRnIub25lKSkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkNvcHkgY29uc3RyYWludHMgZG9lcyBub3QgbWF0Y2hcIik7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIENvbXB1dGUgcG9seW5vbWlhbCBjb2VmZmljaWVudHMgeihYKSBmcm9tIGJ1ZmZlcnMuWlxuICAgICAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oXCLCt8K3wrcgQ29tcHV0aW5nIFogaWZmdFwiKTtcbiAgICAgICAgICAgIHBvbHlub21pYWxzLlogPSBhd2FpdCBQb2x5bm9taWFsLmZyb21FdmFsdWF0aW9ucyhidWZmZXJzLlosIGN1cnZlLCBsb2dnZXIpO1xuXG4gICAgICAgICAgICAvLyBDb21wdXRlIGV4dGVuZGVkIGV2YWx1YXRpb25zIG9mIHooWCkgcG9seW5vbWlhbFxuICAgICAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oXCLCt8K3wrcgQ29tcHV0aW5nIFogZmZ0XCIpO1xuICAgICAgICAgICAgZXZhbHVhdGlvbnMuWiA9IGF3YWl0IEV2YWx1YXRpb25zLmZyb21Qb2x5bm9taWFsKHBvbHlub21pYWxzLlosIDQsIGN1cnZlLCBsb2dnZXIpO1xuXG4gICAgICAgICAgICAvLyBCbGluZCB6KFgpIHBvbHlub21pYWwgY29lZmZpY2llbnRzIHdpdGggYmxpbmRpbmcgc2NhbGFycyBiXG4gICAgICAgICAgICBwb2x5bm9taWFscy5aLmJsaW5kQ29lZmZpY2llbnRzKFtjaGFsbGVuZ2VzLmJbOV0sIGNoYWxsZW5nZXMuYls4XSwgY2hhbGxlbmdlcy5iWzddXSk7XG5cbiAgICAgICAgICAgIC8vIENoZWNrIGRlZ3JlZVxuICAgICAgICAgICAgaWYgKHBvbHlub21pYWxzLlouZGVncmVlKCkgPj0gemtleS5kb21haW5TaXplICsgMykge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIlogUG9seW5vbWlhbCBpcyBub3Qgd2VsbCBjYWxjdWxhdGVkXCIpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBkZWxldGUgYnVmZmVycy5aO1xuICAgICAgICB9XG5cbiAgICAgICAgYXN5bmMgZnVuY3Rpb24gY29tcHV0ZVQxKCkge1xuICAgICAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oXCLCt8K3wrcgQ29tcHV0aW5nIFQxIGV2YWx1YXRpb25zXCIpO1xuXG4gICAgICAgICAgICBidWZmZXJzLlQxID0gbmV3IEJpZ0J1ZmZlcihzRG9tYWluICogMik7XG4gICAgICAgICAgICBidWZmZXJzLlQxeiA9IG5ldyBCaWdCdWZmZXIoc0RvbWFpbiAqIDIpO1xuXG4gICAgICAgICAgICAvLyBTZXQgaW5pdGlhbCBvbWVnYVxuICAgICAgICAgICAgbGV0IG9tZWdhID0gRnIub25lO1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB6a2V5LmRvbWFpblNpemUgKiAyOyBpKyspIHtcbiAgICAgICAgICAgICAgICBpZiAobG9nZ2VyICYmICgwICE9PSBpKSAmJiAoaSAlIDEwMDAwMCA9PT0gMCkpIGxvZ2dlci5pbmZvKGAgICAgVDEgZXZhbHVhdGlvbiAke2l9LyR7emtleS5kb21haW5TaXplICogNH1gKTtcblxuICAgICAgICAgICAgICAgIGNvbnN0IG9tZWdhMiA9IEZyLnNxdWFyZShvbWVnYSk7XG5cbiAgICAgICAgICAgICAgICBjb25zdCB6ID0gZXZhbHVhdGlvbnMuWi5nZXRFdmFsdWF0aW9uKGkgKiAyKTtcbiAgICAgICAgICAgICAgICBjb25zdCB6cCA9IEZyLmFkZChGci5hZGQoRnIubXVsKGNoYWxsZW5nZXMuYls3XSwgb21lZ2EyKSwgRnIubXVsKGNoYWxsZW5nZXMuYls4XSwgb21lZ2EpKSwgY2hhbGxlbmdlcy5iWzldKTtcblxuICAgICAgICAgICAgICAgIC8vIFQxKFgpIDo9ICh6KFgpIC0gMSkgwrcgTF8xKFgpXG4gICAgICAgICAgICAgICAgLy8gQ29tcHV0ZSBmaXJzdCBUMShYKcK3Wl9IKFgpLCBzbyBkaXZpZGUgbGF0ZXIgdGhlIHJlc3VsdGluZyBwb2x5bm9taWFsIGJ5IFpfSChYKVxuICAgICAgICAgICAgICAgIGNvbnN0IGxhZ3JhbmdlMSA9IGV2YWx1YXRpb25zLmxhZ3JhbmdlMS5nZXRFdmFsdWF0aW9uKHprZXkuZG9tYWluU2l6ZSArIGkgKiAyKTtcbiAgICAgICAgICAgICAgICBsZXQgdDEgPSBGci5tdWwoRnIuc3ViKHosIEZyLm9uZSksIGxhZ3JhbmdlMSk7XG4gICAgICAgICAgICAgICAgbGV0IHQxeiA9IEZyLm11bCh6cCwgbGFncmFuZ2UxKTtcblxuICAgICAgICAgICAgICAgIGJ1ZmZlcnMuVDEuc2V0KHQxLCBpICogc0ZyKTtcbiAgICAgICAgICAgICAgICBidWZmZXJzLlQxei5zZXQodDF6LCBpICogc0ZyKTtcblxuICAgICAgICAgICAgICAgIC8vIENvbXB1dGUgbmV4dCBvbWVnYVxuICAgICAgICAgICAgICAgIG9tZWdhID0gRnIubXVsKG9tZWdhLCBGci53W3prZXkucG93ZXIgKyAxXSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIENvbXB1dGUgdGhlIGNvZWZmaWNpZW50cyBvZiB0aGUgcG9seW5vbWlhbCBUMShYKSBmcm9tIGJ1ZmZlcnMuVDFcbiAgICAgICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKFwiwrfCt8K3IENvbXB1dGluZyBUMSBpZmZ0XCIpO1xuICAgICAgICAgICAgcG9seW5vbWlhbHMuVDEgPSBhd2FpdCBQb2x5bm9taWFsLmZyb21FdmFsdWF0aW9ucyhidWZmZXJzLlQxLCBjdXJ2ZSwgbG9nZ2VyKTtcblxuICAgICAgICAgICAgLy8gRGl2aWRlIHRoZSBwb2x5bm9taWFsIFQxIGJ5IFpfSChYKVxuICAgICAgICAgICAgcG9seW5vbWlhbHMuVDEuZGl2QnlaZXJvZmllcih6a2V5LmRvbWFpblNpemUsIEZyLm9uZSk7XG5cbiAgICAgICAgICAgIC8vIENvbXB1dGUgdGhlIGNvZWZmaWNpZW50cyBvZiB0aGUgcG9seW5vbWlhbCBUMXooWCkgZnJvbSBidWZmZXJzLlQxelxuICAgICAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oXCLCt8K3wrcgQ29tcHV0aW5nIFQxeiBpZmZ0XCIpO1xuICAgICAgICAgICAgcG9seW5vbWlhbHMuVDF6ID0gYXdhaXQgUG9seW5vbWlhbC5mcm9tRXZhbHVhdGlvbnMoYnVmZmVycy5UMXosIGN1cnZlLCBsb2dnZXIpO1xuXG4gICAgICAgICAgICAvLyBBZGQgdGhlIHBvbHlub21pYWwgVDF6IHRvIFQxIHRvIGdldCB0aGUgZmluYWwgcG9seW5vbWlhbCBUMVxuICAgICAgICAgICAgcG9seW5vbWlhbHMuVDEuYWRkKHBvbHlub21pYWxzLlQxeik7XG5cbiAgICAgICAgICAgIC8vIENoZWNrIGRlZ3JlZVxuICAgICAgICAgICAgaWYgKHBvbHlub21pYWxzLlQxLmRlZ3JlZSgpID49IHprZXkuZG9tYWluU2l6ZSArIDIpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJUMSBQb2x5bm9taWFsIGlzIG5vdCB3ZWxsIGNhbGN1bGF0ZWRcIik7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGRlbGV0ZSBidWZmZXJzLlQxO1xuICAgICAgICAgICAgZGVsZXRlIGJ1ZmZlcnMuVDF6O1xuICAgICAgICAgICAgZGVsZXRlIHBvbHlub21pYWxzLlQxejtcbiAgICAgICAgfVxuXG4gICAgICAgIGFzeW5jIGZ1bmN0aW9uIGNvbXB1dGVUMigpIHtcbiAgICAgICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKFwiwrfCt8K3IENvbXB1dGluZyBUMiBldmFsdWF0aW9uc1wiKTtcblxuICAgICAgICAgICAgYnVmZmVycy5UMiA9IG5ldyBCaWdCdWZmZXIoc0RvbWFpbiAqIDQpO1xuICAgICAgICAgICAgYnVmZmVycy5UMnogPSBuZXcgQmlnQnVmZmVyKHNEb21haW4gKiA0KTtcblxuICAgICAgICAgICAgLy8gU2V0IGluaXRpYWwgb21lZ2FcbiAgICAgICAgICAgIGxldCBvbWVnYSA9IEZyLm9uZTtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgemtleS5kb21haW5TaXplICogNDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgaWYgKGxvZ2dlciAmJiAoMCAhPT0gaSkgJiYgKGkgJSAxMDAwMDAgPT09IDApKSBsb2dnZXIuaW5mbyhgICAgIFQyIGV2YWx1YXRpb24gJHtpfS8ke3prZXkuZG9tYWluU2l6ZSAqIDR9YCk7XG5cbiAgICAgICAgICAgICAgICBjb25zdCBvbWVnYTIgPSBGci5zcXVhcmUob21lZ2EpO1xuICAgICAgICAgICAgICAgIGNvbnN0IG9tZWdhVyA9IEZyLm11bChvbWVnYSwgRnIud1t6a2V5LnBvd2VyXSk7XG4gICAgICAgICAgICAgICAgY29uc3Qgb21lZ2FXMiA9IEZyLnNxdWFyZShvbWVnYVcpO1xuXG4gICAgICAgICAgICAgICAgY29uc3QgYSA9IGV2YWx1YXRpb25zLkEuZ2V0RXZhbHVhdGlvbihpKTtcbiAgICAgICAgICAgICAgICBjb25zdCBiID0gZXZhbHVhdGlvbnMuQi5nZXRFdmFsdWF0aW9uKGkpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGMgPSBldmFsdWF0aW9ucy5DLmdldEV2YWx1YXRpb24oaSk7XG4gICAgICAgICAgICAgICAgY29uc3QgeiA9IGV2YWx1YXRpb25zLlouZ2V0RXZhbHVhdGlvbihpKTtcbiAgICAgICAgICAgICAgICBjb25zdCB6VyA9IGV2YWx1YXRpb25zLlouZ2V0RXZhbHVhdGlvbigoemtleS5kb21haW5TaXplICogNCArIDQgKyBpKSAlICh6a2V5LmRvbWFpblNpemUgKiA0KSk7XG5cbiAgICAgICAgICAgICAgICBjb25zdCB6cCA9IEZyLmFkZChGci5hZGQoRnIubXVsKGNoYWxsZW5nZXMuYls3XSwgb21lZ2EyKSwgRnIubXVsKGNoYWxsZW5nZXMuYls4XSwgb21lZ2EpKSwgY2hhbGxlbmdlcy5iWzldKTtcbiAgICAgICAgICAgICAgICBjb25zdCB6V3AgPSBGci5hZGQoRnIuYWRkKEZyLm11bChjaGFsbGVuZ2VzLmJbN10sIG9tZWdhVzIpLCBGci5tdWwoY2hhbGxlbmdlcy5iWzhdLCBvbWVnYVcpKSwgY2hhbGxlbmdlcy5iWzldKTtcblxuICAgICAgICAgICAgICAgIGNvbnN0IHNpZ21hMSA9IGV2YWx1YXRpb25zLlNpZ21hMS5nZXRFdmFsdWF0aW9uKGkpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHNpZ21hMiA9IGV2YWx1YXRpb25zLlNpZ21hMi5nZXRFdmFsdWF0aW9uKGkpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHNpZ21hMyA9IGV2YWx1YXRpb25zLlNpZ21hMy5nZXRFdmFsdWF0aW9uKGkpO1xuXG4gICAgICAgICAgICAgICAgLy8gVDIoWCkgOj0gWyAoYShYKSArIGJldGHCt1ggKyBnYW1tYSkoYihYKSArIGJldGHCt2sxwrdYICsgZ2FtbWEpKGMoWCkgKyBiZXRhwrdrMsK3WCArIGdhbW1hKXooWClcbiAgICAgICAgICAgICAgICAvLyAgICAgICAgICAgLShhKFgpICsgYmV0YcK3c2lnbWExKFgpICsgZ2FtbWEpKGIoWCkgKyBiZXRhwrdzaWdtYTIoWCkgKyBnYW1tYSkoYyhYKSArIGJldGHCt3NpZ21hMyhYKSArIGdhbW1hKXooWM+JKV0gwrcgMS9aX0goWClcbiAgICAgICAgICAgICAgICAvLyBDb21wdXRlIGZpcnN0IFQyKFgpwrdaX0goWCksIHNvIGRpdmlkZSBsYXRlciB0aGUgcmVzdWx0aW5nIHBvbHlub21pYWwgYnkgWl9IKFgpXG5cbiAgICAgICAgICAgICAgICAvLyBleHByZXNzaW9uIDEgLT4gKGEoWCkgKyBiZXRhwrdYICsgZ2FtbWEpKGIoWCkgKyBiZXRhwrdrMcK3WCArIGdhbW1hKShjKFgpICsgYmV0YcK3azLCt1ggKyBnYW1tYSl6KFgpXG4gICAgICAgICAgICAgICAgY29uc3QgYmV0YVggPSBGci5tdWwoY2hhbGxlbmdlcy5iZXRhLCBvbWVnYSk7XG5cbiAgICAgICAgICAgICAgICBsZXQgZTExID0gRnIuYWRkKGEsIGJldGFYKTtcbiAgICAgICAgICAgICAgICBlMTEgPSBGci5hZGQoZTExLCBjaGFsbGVuZ2VzLmdhbW1hKTtcblxuICAgICAgICAgICAgICAgIGxldCBlMTIgPSBGci5hZGQoYiwgRnIubXVsKGJldGFYLCB6a2V5LmsxKSk7XG4gICAgICAgICAgICAgICAgZTEyID0gRnIuYWRkKGUxMiwgY2hhbGxlbmdlcy5nYW1tYSk7XG5cbiAgICAgICAgICAgICAgICBsZXQgZTEzID0gRnIuYWRkKGMsIEZyLm11bChiZXRhWCwgemtleS5rMikpO1xuICAgICAgICAgICAgICAgIGUxMyA9IEZyLmFkZChlMTMsIGNoYWxsZW5nZXMuZ2FtbWEpO1xuXG4gICAgICAgICAgICAgICAgbGV0IGUxID0gRnIubXVsKEZyLm11bChGci5tdWwoZTExLCBlMTIpLCBlMTMpLCB6KTtcbiAgICAgICAgICAgICAgICBsZXQgZTF6ID0gRnIubXVsKEZyLm11bChGci5tdWwoZTExLCBlMTIpLCBlMTMpLCB6cCk7XG4gICAgICAgICAgICAgICAgLy8gY29uc3QgW2UxLCBlMXpdID0gTXVsWi5tdWw0KGUxMSwgZTEyLCBlMTMsIHosIGFwLCBicCwgY3AsIHpwLCBpICUgNCwgRnIpO1xuXG4gICAgICAgICAgICAgICAgLy8gZXhwcmVzc2lvbiAyIC0+IChhKFgpICsgYmV0YcK3c2lnbWExKFgpICsgZ2FtbWEpKGIoWCkgKyBiZXRhwrdzaWdtYTIoWCkgKyBnYW1tYSkoYyhYKSArIGJldGHCt3NpZ21hMyhYKSArIGdhbW1hKXooWM+JKVxuICAgICAgICAgICAgICAgIGxldCBlMjEgPSBGci5hZGQoYSwgRnIubXVsKGNoYWxsZW5nZXMuYmV0YSwgc2lnbWExKSk7XG4gICAgICAgICAgICAgICAgZTIxID0gRnIuYWRkKGUyMSwgY2hhbGxlbmdlcy5nYW1tYSk7XG5cbiAgICAgICAgICAgICAgICBsZXQgZTIyID0gRnIuYWRkKGIsIEZyLm11bChjaGFsbGVuZ2VzLmJldGEsIHNpZ21hMikpO1xuICAgICAgICAgICAgICAgIGUyMiA9IEZyLmFkZChlMjIsIGNoYWxsZW5nZXMuZ2FtbWEpO1xuXG4gICAgICAgICAgICAgICAgbGV0IGUyMyA9IEZyLmFkZChjLCBGci5tdWwoY2hhbGxlbmdlcy5iZXRhLCBzaWdtYTMpKTtcbiAgICAgICAgICAgICAgICBlMjMgPSBGci5hZGQoZTIzLCBjaGFsbGVuZ2VzLmdhbW1hKTtcblxuICAgICAgICAgICAgICAgIGxldCBlMiA9IEZyLm11bChGci5tdWwoRnIubXVsKGUyMSwgZTIyKSwgZTIzKSwgelcpO1xuICAgICAgICAgICAgICAgIGxldCBlMnogPSBGci5tdWwoRnIubXVsKEZyLm11bChlMjEsIGUyMiksIGUyMyksIHpXcCk7XG4gICAgICAgICAgICAgICAgLy8gY29uc3QgW2UyLCBlMnpdID0gTXVsWi5tdWw0KGUyMSwgZTIyLCBlMjMsIHpXLCBhcCwgYnAsIGNwLCB6V3AsIGkgJSA0LCBGcik7XG5cbiAgICAgICAgICAgICAgICBsZXQgdDIgPSBGci5zdWIoZTEsIGUyKTtcbiAgICAgICAgICAgICAgICBsZXQgdDJ6ID0gRnIuc3ViKGUxeiwgZTJ6KTtcblxuICAgICAgICAgICAgICAgIGJ1ZmZlcnMuVDIuc2V0KHQyLCBpICogc0ZyKTtcbiAgICAgICAgICAgICAgICBidWZmZXJzLlQyei5zZXQodDJ6LCBpICogc0ZyKTtcblxuICAgICAgICAgICAgICAgIC8vIENvbXB1dGUgbmV4dCBvbWVnYVxuICAgICAgICAgICAgICAgIG9tZWdhID0gRnIubXVsKG9tZWdhLCBGci53W3prZXkucG93ZXIgKyAyXSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIENvbXB1dGUgdGhlIGNvZWZmaWNpZW50cyBvZiB0aGUgcG9seW5vbWlhbCBUMihYKSBmcm9tIGJ1ZmZlcnMuVDJcbiAgICAgICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKFwiwrfCt8K3IENvbXB1dGluZyBUMiBpZmZ0XCIpO1xuICAgICAgICAgICAgcG9seW5vbWlhbHMuVDIgPSBhd2FpdCBQb2x5bm9taWFsLmZyb21FdmFsdWF0aW9ucyhidWZmZXJzLlQyLCBjdXJ2ZSwgbG9nZ2VyKTtcblxuICAgICAgICAgICAgLy8gRGl2aWRlIHRoZSBwb2x5bm9taWFsIFQyIGJ5IFpfSChYKVxuICAgICAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oXCLCt8K3wrcgQ29tcHV0aW5nIFQyIC8gWkhcIik7XG4gICAgICAgICAgICBwb2x5bm9taWFscy5UMi5kaXZCeVplcm9maWVyKHprZXkuZG9tYWluU2l6ZSwgRnIub25lKTtcblxuICAgICAgICAgICAgLy8gQ29tcHV0ZSB0aGUgY29lZmZpY2llbnRzIG9mIHRoZSBwb2x5bm9taWFsIFQyeihYKSBmcm9tIGJ1ZmZlcnMuVDJ6XG4gICAgICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhcIsK3wrfCtyBDb21wdXRpbmcgVDJ6IGlmZnRcIik7XG4gICAgICAgICAgICBwb2x5bm9taWFscy5UMnogPSBhd2FpdCBQb2x5bm9taWFsLmZyb21FdmFsdWF0aW9ucyhidWZmZXJzLlQyeiwgY3VydmUsIGxvZ2dlcik7XG5cbiAgICAgICAgICAgIC8vIEFkZCB0aGUgcG9seW5vbWlhbCBUMnogdG8gVDIgdG8gZ2V0IHRoZSBmaW5hbCBwb2x5bm9taWFsIFQyXG4gICAgICAgICAgICBwb2x5bm9taWFscy5UMi5hZGQocG9seW5vbWlhbHMuVDJ6KTtcblxuICAgICAgICAgICAgLy8gQ2hlY2sgZGVncmVlXG4gICAgICAgICAgICBpZiAocG9seW5vbWlhbHMuVDIuZGVncmVlKCkgPj0gMyAqIHprZXkuZG9tYWluU2l6ZSkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIlQyIFBvbHlub21pYWwgaXMgbm90IHdlbGwgY2FsY3VsYXRlZFwiKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZGVsZXRlIGJ1ZmZlcnMuVDI7XG4gICAgICAgICAgICBkZWxldGUgYnVmZmVycy5UMno7XG4gICAgICAgICAgICBkZWxldGUgcG9seW5vbWlhbHMuVDJ6O1xuICAgICAgICB9XG5cbiAgICAgICAgYXN5bmMgZnVuY3Rpb24gY29tcHV0ZUMyKCkge1xuICAgICAgICAgICAgbGV0IEMyID0gbmV3IENQb2x5bm9taWFsKDMsIGN1cnZlLCBsb2dnZXIpO1xuICAgICAgICAgICAgQzIuYWRkUG9seW5vbWlhbCgwLCBwb2x5bm9taWFscy5aKTtcbiAgICAgICAgICAgIEMyLmFkZFBvbHlub21pYWwoMSwgcG9seW5vbWlhbHMuVDEpO1xuICAgICAgICAgICAgQzIuYWRkUG9seW5vbWlhbCgyLCBwb2x5bm9taWFscy5UMik7XG5cbiAgICAgICAgICAgIHBvbHlub21pYWxzLkMyID0gQzIuZ2V0UG9seW5vbWlhbCgpO1xuXG4gICAgICAgICAgICAvLyBDaGVjayBkZWdyZWVcbiAgICAgICAgICAgIGlmIChwb2x5bm9taWFscy5DMi5kZWdyZWUoKSA+PSA5ICogemtleS5kb21haW5TaXplKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiQzIgUG9seW5vbWlhbCBpcyBub3Qgd2VsbCBjYWxjdWxhdGVkXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgYXN5bmMgZnVuY3Rpb24gcm91bmQzKCkge1xuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhcIj4gQ29tcHV0aW5nIGNoYWxsZW5nZSB4aVwiKTtcbiAgICAgICAgLy8gU1RFUCAzLjEgLSBDb21wdXRlIGV2YWx1YXRpb24gY2hhbGxlbmdlIHhpIOKIiCBTXG4gICAgICAgIGNvbnN0IHRyYW5zY3JpcHQgPSBuZXcgS2VjY2FrMjU2VHJhbnNjcmlwdChjdXJ2ZSk7XG4gICAgICAgIHRyYW5zY3JpcHQuYWRkU2NhbGFyKGNoYWxsZW5nZXMuZ2FtbWEpO1xuICAgICAgICB0cmFuc2NyaXB0LmFkZFBvbENvbW1pdG1lbnQocHJvb2YuZ2V0UG9seW5vbWlhbChcIkMyXCIpKTtcblxuICAgICAgICAvLyBPYnRhaW4gYSB4aV9zZWVkZXIgZnJvbSB0aGUgdHJhbnNjcmlwdFxuICAgICAgICAvLyBUbyBmb3JjZSBoMV40ID0geGksIGgyXjMgPSB4aSBhbmQgaF8zXjIgPSB4ac+JXG4gICAgICAgIC8vIHdlIGNvbXB1dGUgeGkgPSB4aV9zZWVkZXJeMTIsIGgxID0geGlfc2VlZGVyXjMsIGgyID0geGlfc2VlZGVyXjQgYW5kIGgzID0geGlfc2VlZGVyXjZcbiAgICAgICAgY2hhbGxlbmdlcy54aVNlZWQgPSB0cmFuc2NyaXB0LmdldENoYWxsZW5nZSgpO1xuICAgICAgICBjb25zdCB4aVNlZWQyID0gRnIuc3F1YXJlKGNoYWxsZW5nZXMueGlTZWVkKTtcblxuICAgICAgICAvLyBDb21wdXRlIG9tZWdhOCwgb21lZ2E0IGFuZCBvbWVnYTNcbiAgICAgICAgcm9vdHMudzggPSBbXTtcbiAgICAgICAgcm9vdHMudzhbMF0gPSBGci5vbmU7XG4gICAgICAgIGZvciAobGV0IGkgPSAxOyBpIDwgODsgaSsrKSB7XG4gICAgICAgICAgICByb290cy53OFtpXSA9IEZyLm11bChyb290cy53OFtpIC0gMV0sIHprZXkudzgpO1xuICAgICAgICB9XG5cbiAgICAgICAgcm9vdHMudzQgPSBbXTtcbiAgICAgICAgcm9vdHMudzRbMF0gPSBGci5vbmU7XG4gICAgICAgIGZvciAobGV0IGkgPSAxOyBpIDwgNDsgaSsrKSB7XG4gICAgICAgICAgICByb290cy53NFtpXSA9IEZyLm11bChyb290cy53NFtpIC0gMV0sIHprZXkudzQpO1xuICAgICAgICB9XG5cbiAgICAgICAgcm9vdHMudzMgPSBbXTtcbiAgICAgICAgcm9vdHMudzNbMF0gPSBGci5vbmU7XG4gICAgICAgIHJvb3RzLnczWzFdID0gemtleS53MztcbiAgICAgICAgcm9vdHMudzNbMl0gPSBGci5zcXVhcmUoemtleS53Myk7XG5cbiAgICAgICAgLy8gQ29tcHV0ZSBoMCA9IHhpU2VlZGVyXjNcbiAgICAgICAgcm9vdHMuUzAgPSB7fTtcbiAgICAgICAgcm9vdHMuUzAuaDB3OCA9IFtdO1xuICAgICAgICByb290cy5TMC5oMHc4WzBdID0gRnIubXVsKHhpU2VlZDIsIGNoYWxsZW5nZXMueGlTZWVkKTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDE7IGkgPCA4OyBpKyspIHtcbiAgICAgICAgICAgIHJvb3RzLlMwLmgwdzhbaV0gPSBGci5tdWwocm9vdHMuUzAuaDB3OFswXSwgcm9vdHMudzhbaV0pO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gQ29tcHV0ZSBoMSA9IHhpX3NlZWRlcl42XG4gICAgICAgIHJvb3RzLlMxID0ge307XG4gICAgICAgIHJvb3RzLlMxLmgxdzQgPSBbXTtcbiAgICAgICAgcm9vdHMuUzEuaDF3NFswXSA9IEZyLnNxdWFyZShyb290cy5TMC5oMHc4WzBdKTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDE7IGkgPCA0OyBpKyspIHtcbiAgICAgICAgICAgIHJvb3RzLlMxLmgxdzRbaV0gPSBGci5tdWwocm9vdHMuUzEuaDF3NFswXSwgcm9vdHMudzRbaV0pO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gQ29tcHV0ZSBoMiA9IHhpX3NlZWRlcl44XG4gICAgICAgIHJvb3RzLlMyID0ge307XG4gICAgICAgIHJvb3RzLlMyLmgydzMgPSBbXTtcbiAgICAgICAgcm9vdHMuUzIuaDJ3M1swXSA9IEZyLm11bChyb290cy5TMS5oMXc0WzBdLCB4aVNlZWQyKTtcbiAgICAgICAgcm9vdHMuUzIuaDJ3M1sxXSA9IEZyLm11bChyb290cy5TMi5oMnczWzBdLCByb290cy53M1sxXSk7XG4gICAgICAgIHJvb3RzLlMyLmgydzNbMl0gPSBGci5tdWwocm9vdHMuUzIuaDJ3M1swXSwgcm9vdHMudzNbMl0pO1xuXG4gICAgICAgIHJvb3RzLlMyLmgzdzMgPSBbXTtcbiAgICAgICAgLy8gTXVsdGlwbHkgaDMgYnkgdGhpcmQtcm9vdC1vbWVnYSB0byBvYnRhaW4gaF8zXjMgPSB4ac+JXG4gICAgICAgIC8vIFNvLCBoMyA9IHhpX3NlZWRlcl44IM+JXnsxLzN9XG4gICAgICAgIHJvb3RzLlMyLmgzdzNbMF0gPSBGci5tdWwocm9vdHMuUzIuaDJ3M1swXSwgemtleS53cik7XG4gICAgICAgIHJvb3RzLlMyLmgzdzNbMV0gPSBGci5tdWwocm9vdHMuUzIuaDN3M1swXSwgcm9vdHMudzNbMV0pO1xuICAgICAgICByb290cy5TMi5oM3czWzJdID0gRnIubXVsKHJvb3RzLlMyLmgzdzNbMF0sIHJvb3RzLnczWzJdKTtcblxuICAgICAgICAvLyBDb21wdXRlIHhpID0geGlfc2VlZGVyXjI0XG4gICAgICAgIGNoYWxsZW5nZXMueGkgPSBGci5tdWwoRnIuc3F1YXJlKHJvb3RzLlMyLmgydzNbMF0pLCByb290cy5TMi5oMnczWzBdKTtcblxuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhcIsK3wrfCtyBjaGFsbGVuZ2VzLnhpOiBcIiArIEZyLnRvU3RyaW5nKGNoYWxsZW5nZXMueGkpKTtcblxuICAgICAgICAvLyBSZXNlcnZlIG1lbW9yeSBmb3IgUSdzIHBvbHlub21pYWxzXG4gICAgICAgIHBvbHlub21pYWxzLlFMID0gbmV3IFBvbHlub21pYWwobmV3IEJpZ0J1ZmZlcihzRG9tYWluKSwgY3VydmUsIGxvZ2dlcik7XG4gICAgICAgIHBvbHlub21pYWxzLlFSID0gbmV3IFBvbHlub21pYWwobmV3IEJpZ0J1ZmZlcihzRG9tYWluKSwgY3VydmUsIGxvZ2dlcik7XG4gICAgICAgIHBvbHlub21pYWxzLlFNID0gbmV3IFBvbHlub21pYWwobmV3IEJpZ0J1ZmZlcihzRG9tYWluKSwgY3VydmUsIGxvZ2dlcik7XG4gICAgICAgIHBvbHlub21pYWxzLlFPID0gbmV3IFBvbHlub21pYWwobmV3IEJpZ0J1ZmZlcihzRG9tYWluKSwgY3VydmUsIGxvZ2dlcik7XG4gICAgICAgIHBvbHlub21pYWxzLlFDID0gbmV3IFBvbHlub21pYWwobmV3IEJpZ0J1ZmZlcihzRG9tYWluKSwgY3VydmUsIGxvZ2dlcik7XG5cbiAgICAgICAgLy8gUmVhZCBRJ3MgZXZhbHVhdGlvbnMgZnJvbSB6a2V5IGZpbGVcbiAgICAgICAgYXdhaXQgZmRaS2V5LnJlYWRUb0J1ZmZlcihwb2x5bm9taWFscy5RTC5jb2VmLCAwLCBzRG9tYWluLCB6a2V5U2VjdGlvbnNbWktFWV9GRl9RTF9TRUNUSU9OXVswXS5wKTtcbiAgICAgICAgYXdhaXQgZmRaS2V5LnJlYWRUb0J1ZmZlcihwb2x5bm9taWFscy5RUi5jb2VmLCAwLCBzRG9tYWluLCB6a2V5U2VjdGlvbnNbWktFWV9GRl9RUl9TRUNUSU9OXVswXS5wKTtcbiAgICAgICAgYXdhaXQgZmRaS2V5LnJlYWRUb0J1ZmZlcihwb2x5bm9taWFscy5RTS5jb2VmLCAwLCBzRG9tYWluLCB6a2V5U2VjdGlvbnNbWktFWV9GRl9RTV9TRUNUSU9OXVswXS5wKTtcbiAgICAgICAgYXdhaXQgZmRaS2V5LnJlYWRUb0J1ZmZlcihwb2x5bm9taWFscy5RTy5jb2VmLCAwLCBzRG9tYWluLCB6a2V5U2VjdGlvbnNbWktFWV9GRl9RT19TRUNUSU9OXVswXS5wKTtcbiAgICAgICAgYXdhaXQgZmRaS2V5LnJlYWRUb0J1ZmZlcihwb2x5bm9taWFscy5RQy5jb2VmLCAwLCBzRG9tYWluLCB6a2V5U2VjdGlvbnNbWktFWV9GRl9RQ19TRUNUSU9OXVswXS5wKTtcblxuICAgICAgICAvLyBTVEVQIDMuMiAtIENvbXB1dGUgb3BlbmluZyBldmFsdWF0aW9ucyBhbmQgYWRkIHRoZW0gdG8gdGhlIHByb29mICh0aGlyZCBvdXRwdXQgb2YgdGhlIHByb3ZlcilcbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oXCLCt8K3wrcgQ29tcHV0aW5nIGV2YWx1YXRpb25zXCIpO1xuICAgICAgICBwcm9vZi5hZGRFdmFsdWF0aW9uKFwicWxcIiwgcG9seW5vbWlhbHMuUUwuZXZhbHVhdGUoY2hhbGxlbmdlcy54aSkpO1xuICAgICAgICBwcm9vZi5hZGRFdmFsdWF0aW9uKFwicXJcIiwgcG9seW5vbWlhbHMuUVIuZXZhbHVhdGUoY2hhbGxlbmdlcy54aSkpO1xuICAgICAgICBwcm9vZi5hZGRFdmFsdWF0aW9uKFwicW1cIiwgcG9seW5vbWlhbHMuUU0uZXZhbHVhdGUoY2hhbGxlbmdlcy54aSkpO1xuICAgICAgICBwcm9vZi5hZGRFdmFsdWF0aW9uKFwicW9cIiwgcG9seW5vbWlhbHMuUU8uZXZhbHVhdGUoY2hhbGxlbmdlcy54aSkpO1xuICAgICAgICBwcm9vZi5hZGRFdmFsdWF0aW9uKFwicWNcIiwgcG9seW5vbWlhbHMuUUMuZXZhbHVhdGUoY2hhbGxlbmdlcy54aSkpO1xuICAgICAgICBwcm9vZi5hZGRFdmFsdWF0aW9uKFwiczFcIiwgcG9seW5vbWlhbHMuU2lnbWExLmV2YWx1YXRlKGNoYWxsZW5nZXMueGkpKTtcbiAgICAgICAgcHJvb2YuYWRkRXZhbHVhdGlvbihcInMyXCIsIHBvbHlub21pYWxzLlNpZ21hMi5ldmFsdWF0ZShjaGFsbGVuZ2VzLnhpKSk7XG4gICAgICAgIHByb29mLmFkZEV2YWx1YXRpb24oXCJzM1wiLCBwb2x5bm9taWFscy5TaWdtYTMuZXZhbHVhdGUoY2hhbGxlbmdlcy54aSkpO1xuICAgICAgICBwcm9vZi5hZGRFdmFsdWF0aW9uKFwiYVwiLCBwb2x5bm9taWFscy5BLmV2YWx1YXRlKGNoYWxsZW5nZXMueGkpKTtcbiAgICAgICAgcHJvb2YuYWRkRXZhbHVhdGlvbihcImJcIiwgcG9seW5vbWlhbHMuQi5ldmFsdWF0ZShjaGFsbGVuZ2VzLnhpKSk7XG4gICAgICAgIHByb29mLmFkZEV2YWx1YXRpb24oXCJjXCIsIHBvbHlub21pYWxzLkMuZXZhbHVhdGUoY2hhbGxlbmdlcy54aSkpO1xuICAgICAgICBwcm9vZi5hZGRFdmFsdWF0aW9uKFwielwiLCBwb2x5bm9taWFscy5aLmV2YWx1YXRlKGNoYWxsZW5nZXMueGkpKTtcblxuICAgICAgICBjaGFsbGVuZ2VzLnhpdyA9IEZyLm11bChjaGFsbGVuZ2VzLnhpLCBGci53W3prZXkucG93ZXJdKTtcbiAgICAgICAgcHJvb2YuYWRkRXZhbHVhdGlvbihcInp3XCIsIHBvbHlub21pYWxzLlouZXZhbHVhdGUoY2hhbGxlbmdlcy54aXcpKTtcbiAgICAgICAgcHJvb2YuYWRkRXZhbHVhdGlvbihcInQxd1wiLCBwb2x5bm9taWFscy5UMS5ldmFsdWF0ZShjaGFsbGVuZ2VzLnhpdykpO1xuICAgICAgICBwcm9vZi5hZGRFdmFsdWF0aW9uKFwidDJ3XCIsIHBvbHlub21pYWxzLlQyLmV2YWx1YXRlKGNoYWxsZW5nZXMueGl3KSk7XG4gICAgfVxuXG4gICAgYXN5bmMgZnVuY3Rpb24gcm91bmQ0KCkge1xuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhcIj4gQ29tcHV0aW5nIGNoYWxsZW5nZSBhbHBoYVwiKTtcbiAgICAgICAgLy8gU1RFUCA0LjEgLSBDb21wdXRlIGNoYWxsZW5nZSBhbHBoYSDiiIggRlxuICAgICAgICBjb25zdCB0cmFuc2NyaXB0ID0gbmV3IEtlY2NhazI1NlRyYW5zY3JpcHQoY3VydmUpO1xuICAgICAgICB0cmFuc2NyaXB0LmFkZFNjYWxhcihjaGFsbGVuZ2VzLnhpU2VlZCk7XG4gICAgICAgIHRyYW5zY3JpcHQuYWRkU2NhbGFyKHByb29mLmdldEV2YWx1YXRpb24oXCJxbFwiKSk7XG4gICAgICAgIHRyYW5zY3JpcHQuYWRkU2NhbGFyKHByb29mLmdldEV2YWx1YXRpb24oXCJxclwiKSk7XG4gICAgICAgIHRyYW5zY3JpcHQuYWRkU2NhbGFyKHByb29mLmdldEV2YWx1YXRpb24oXCJxbVwiKSk7XG4gICAgICAgIHRyYW5zY3JpcHQuYWRkU2NhbGFyKHByb29mLmdldEV2YWx1YXRpb24oXCJxb1wiKSk7XG4gICAgICAgIHRyYW5zY3JpcHQuYWRkU2NhbGFyKHByb29mLmdldEV2YWx1YXRpb24oXCJxY1wiKSk7XG4gICAgICAgIHRyYW5zY3JpcHQuYWRkU2NhbGFyKHByb29mLmdldEV2YWx1YXRpb24oXCJzMVwiKSk7XG4gICAgICAgIHRyYW5zY3JpcHQuYWRkU2NhbGFyKHByb29mLmdldEV2YWx1YXRpb24oXCJzMlwiKSk7XG4gICAgICAgIHRyYW5zY3JpcHQuYWRkU2NhbGFyKHByb29mLmdldEV2YWx1YXRpb24oXCJzM1wiKSk7XG4gICAgICAgIHRyYW5zY3JpcHQuYWRkU2NhbGFyKHByb29mLmdldEV2YWx1YXRpb24oXCJhXCIpKTtcbiAgICAgICAgdHJhbnNjcmlwdC5hZGRTY2FsYXIocHJvb2YuZ2V0RXZhbHVhdGlvbihcImJcIikpO1xuICAgICAgICB0cmFuc2NyaXB0LmFkZFNjYWxhcihwcm9vZi5nZXRFdmFsdWF0aW9uKFwiY1wiKSk7XG4gICAgICAgIHRyYW5zY3JpcHQuYWRkU2NhbGFyKHByb29mLmdldEV2YWx1YXRpb24oXCJ6XCIpKTtcbiAgICAgICAgdHJhbnNjcmlwdC5hZGRTY2FsYXIocHJvb2YuZ2V0RXZhbHVhdGlvbihcInp3XCIpKTtcbiAgICAgICAgdHJhbnNjcmlwdC5hZGRTY2FsYXIocHJvb2YuZ2V0RXZhbHVhdGlvbihcInQxd1wiKSk7XG4gICAgICAgIHRyYW5zY3JpcHQuYWRkU2NhbGFyKHByb29mLmdldEV2YWx1YXRpb24oXCJ0MndcIikpO1xuICAgICAgICBjaGFsbGVuZ2VzLmFscGhhID0gdHJhbnNjcmlwdC5nZXRDaGFsbGVuZ2UoKTtcbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oXCLCt8K3wrcgY2hhbGxlbmdlcy5hbHBoYTogXCIgKyBGci50b1N0cmluZyhjaGFsbGVuZ2VzLmFscGhhKSk7XG5cbiAgICAgICAgLy8gU1RFUCA0LjIgLSBDb21wdXRlIEYoWClcbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oXCI+IFJlYWRpbmcgQzAgcG9seW5vbWlhbFwiKTtcbiAgICAgICAgcG9seW5vbWlhbHMuQzAgPSBuZXcgUG9seW5vbWlhbChuZXcgQmlnQnVmZmVyKHNEb21haW4gKiA4KSwgY3VydmUsIGxvZ2dlcik7XG4gICAgICAgIGF3YWl0IGZkWktleS5yZWFkVG9CdWZmZXIocG9seW5vbWlhbHMuQzAuY29lZiwgMCwgc0RvbWFpbiAqIDgsIHprZXlTZWN0aW9uc1taS0VZX0ZGX0MwX1NFQ1RJT05dWzBdLnApO1xuXG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKFwiPiBDb21wdXRpbmcgUjAgcG9seW5vbWlhbFwiKTtcbiAgICAgICAgY29tcHV0ZVIwKCk7XG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKFwiPiBDb21wdXRpbmcgUjEgcG9seW5vbWlhbFwiKTtcbiAgICAgICAgY29tcHV0ZVIxKCk7XG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKFwiPiBDb21wdXRpbmcgUjIgcG9seW5vbWlhbFwiKTtcbiAgICAgICAgY29tcHV0ZVIyKCk7XG5cbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oXCI+IENvbXB1dGluZyBGIHBvbHlub21pYWxcIik7XG4gICAgICAgIGF3YWl0IGNvbXB1dGVGKCk7XG5cbiAgICAgICAgLy8gVGhlIGZvdXJ0aCBvdXRwdXQgb2YgdGhlIHByb3ZlciBpcyAoW1cxXV8xKSwgd2hlcmUgVzE6PShmL1pfdCkoeClcbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oXCI+IENvbXB1dGluZyBXMSBtdWx0aSBleHBvbmVudGlhdGlvblwiKTtcbiAgICAgICAgbGV0IGNvbW1pdFcxID0gYXdhaXQgcG9seW5vbWlhbHMuRi5tdWx0aUV4cG9uZW50aWF0aW9uKFBUYXUsIFwiVzFcIik7XG4gICAgICAgIHByb29mLmFkZFBvbHlub21pYWwoXCJXMVwiLCBjb21taXRXMSk7XG5cbiAgICAgICAgcmV0dXJuIDA7XG5cbiAgICAgICAgZnVuY3Rpb24gY29tcHV0ZVIwKCkge1xuICAgICAgICAgICAgLy8gQ09NUFVURSBSMFxuICAgICAgICAgICAgLy8gQ29tcHV0ZSB0aGUgY29lZmZpY2llbnRzIG9mIFIwKFgpIGZyb20gOCBldmFsdWF0aW9ucyB1c2luZyBsYWdyYW5nZSBpbnRlcnBvbGF0aW9uLiBSMChYKSDiiIggRl97PDh9W1hdXG4gICAgICAgICAgICAvLyBXZSBkZWNpZGUgdG8gdXNlIExhZ3JhbmdlIGludGVycG9sYXRpb25zIGJlY2F1c2UgdGhlIFIwIGRlZ3JlZSBpcyB2ZXJ5IHNtYWxsIChkZWcoUjApPT09NyksXG4gICAgICAgICAgICAvLyBhbmQgd2Ugd2VyZSBub3QgYWJsZSB0byBjb21wdXRlIGl0IHVzaW5nIGN1cnJlbnQgaWZmdCBpbXBsZW1lbnRhdGlvbiBiZWNhdXNlIHRoZSBvbWVnYSBhcmUgZGlmZmVyZW50XG4gICAgICAgICAgICBwb2x5bm9taWFscy5SMCA9IFBvbHlub21pYWwubGFncmFuZ2VQb2x5bm9taWFsSW50ZXJwb2xhdGlvbihcbiAgICAgICAgICAgICAgICBbcm9vdHMuUzAuaDB3OFswXSwgcm9vdHMuUzAuaDB3OFsxXSwgcm9vdHMuUzAuaDB3OFsyXSwgcm9vdHMuUzAuaDB3OFszXSxcbiAgICAgICAgICAgICAgICAgICAgcm9vdHMuUzAuaDB3OFs0XSwgcm9vdHMuUzAuaDB3OFs1XSwgcm9vdHMuUzAuaDB3OFs2XSwgcm9vdHMuUzAuaDB3OFs3XV0sXG4gICAgICAgICAgICAgICAgW3BvbHlub21pYWxzLkMwLmV2YWx1YXRlKHJvb3RzLlMwLmgwdzhbMF0pLCBwb2x5bm9taWFscy5DMC5ldmFsdWF0ZShyb290cy5TMC5oMHc4WzFdKSxcbiAgICAgICAgICAgICAgICAgICAgcG9seW5vbWlhbHMuQzAuZXZhbHVhdGUocm9vdHMuUzAuaDB3OFsyXSksIHBvbHlub21pYWxzLkMwLmV2YWx1YXRlKHJvb3RzLlMwLmgwdzhbM10pLFxuICAgICAgICAgICAgICAgICAgICBwb2x5bm9taWFscy5DMC5ldmFsdWF0ZShyb290cy5TMC5oMHc4WzRdKSwgcG9seW5vbWlhbHMuQzAuZXZhbHVhdGUocm9vdHMuUzAuaDB3OFs1XSksXG4gICAgICAgICAgICAgICAgICAgIHBvbHlub21pYWxzLkMwLmV2YWx1YXRlKHJvb3RzLlMwLmgwdzhbNl0pLCBwb2x5bm9taWFscy5DMC5ldmFsdWF0ZShyb290cy5TMC5oMHc4WzddKV0sIGN1cnZlKTtcblxuICAgICAgICAgICAgLy8gQ2hlY2sgdGhlIGRlZ3JlZSBvZiByMChYKSA8IDhcbiAgICAgICAgICAgIGlmIChwb2x5bm9taWFscy5SMC5kZWdyZWUoKSA+IDcpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJSMCBQb2x5bm9taWFsIGlzIG5vdCB3ZWxsIGNhbGN1bGF0ZWRcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBmdW5jdGlvbiBjb21wdXRlUjEoKSB7XG4gICAgICAgICAgICAvLyBDT01QVVRFIFIxXG4gICAgICAgICAgICAvLyBDb21wdXRlIHRoZSBjb2VmZmljaWVudHMgb2YgUjEoWCkgZnJvbSA0IGV2YWx1YXRpb25zIHVzaW5nIGxhZ3JhbmdlIGludGVycG9sYXRpb24uIFIxKFgpIOKIiCBGX3s8NH1bWF1cbiAgICAgICAgICAgIC8vIFdlIGRlY2lkZSB0byB1c2UgTGFncmFuZ2UgaW50ZXJwb2xhdGlvbnMgYmVjYXVzZSB0aGUgUjEgZGVncmVlIGlzIHZlcnkgc21hbGwgKGRlZyhSMSk9PT0zKSxcbiAgICAgICAgICAgIC8vIGFuZCB3ZSB3ZXJlIG5vdCBhYmxlIHRvIGNvbXB1dGUgaXQgdXNpbmcgY3VycmVudCBpZmZ0IGltcGxlbWVudGF0aW9uIGJlY2F1c2UgdGhlIG9tZWdhIGFyZSBkaWZmZXJlbnRcbiAgICAgICAgICAgIHBvbHlub21pYWxzLlIxID0gUG9seW5vbWlhbC5sYWdyYW5nZVBvbHlub21pYWxJbnRlcnBvbGF0aW9uKFxuICAgICAgICAgICAgICAgIFtyb290cy5TMS5oMXc0WzBdLCByb290cy5TMS5oMXc0WzFdLCByb290cy5TMS5oMXc0WzJdLCByb290cy5TMS5oMXc0WzNdXSxcbiAgICAgICAgICAgICAgICBbcG9seW5vbWlhbHMuQzEuZXZhbHVhdGUocm9vdHMuUzEuaDF3NFswXSksIHBvbHlub21pYWxzLkMxLmV2YWx1YXRlKHJvb3RzLlMxLmgxdzRbMV0pLFxuICAgICAgICAgICAgICAgICAgICBwb2x5bm9taWFscy5DMS5ldmFsdWF0ZShyb290cy5TMS5oMXc0WzJdKSwgcG9seW5vbWlhbHMuQzEuZXZhbHVhdGUocm9vdHMuUzEuaDF3NFszXSldLCBjdXJ2ZSk7XG5cbiAgICAgICAgICAgIC8vIENoZWNrIHRoZSBkZWdyZWUgb2YgcjEoWCkgPCA0XG4gICAgICAgICAgICBpZiAocG9seW5vbWlhbHMuUjEuZGVncmVlKCkgPiAzKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiUjEgUG9seW5vbWlhbCBpcyBub3Qgd2VsbCBjYWxjdWxhdGVkXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgZnVuY3Rpb24gY29tcHV0ZVIyKCkge1xuICAgICAgICAgICAgLy8gQ09NUFVURSBSMlxuICAgICAgICAgICAgLy8gQ29tcHV0ZSB0aGUgY29lZmZpY2llbnRzIG9mIHIyKFgpIGZyb20gNiBldmFsdWF0aW9ucyB1c2luZyBsYWdyYW5nZSBpbnRlcnBvbGF0aW9uLiByMihYKSDiiIggRl97PDZ9W1hdXG4gICAgICAgICAgICAvLyBXZSBkZWNpZGUgdG8gdXNlIExhZ3JhbmdlIGludGVycG9sYXRpb25zIGJlY2F1c2UgdGhlIFIyLmRlZ3JlZSBpcyB2ZXJ5IHNtYWxsIChkZWcoUjIpPT09NSksXG4gICAgICAgICAgICAvLyBhbmQgd2Ugd2VyZSBub3QgYWJsZSB0byBjb21wdXRlIGl0IHVzaW5nIGN1cnJlbnQgaWZmdCBpbXBsZW1lbnRhdGlvbiBiZWNhdXNlIHRoZSBvbWVnYSBhcmUgZGlmZmVyZW50XG4gICAgICAgICAgICBwb2x5bm9taWFscy5SMiA9IFBvbHlub21pYWwubGFncmFuZ2VQb2x5bm9taWFsSW50ZXJwb2xhdGlvbihcbiAgICAgICAgICAgICAgICBbcm9vdHMuUzIuaDJ3M1swXSwgcm9vdHMuUzIuaDJ3M1sxXSwgcm9vdHMuUzIuaDJ3M1syXSxcbiAgICAgICAgICAgICAgICAgICAgcm9vdHMuUzIuaDN3M1swXSwgcm9vdHMuUzIuaDN3M1sxXSwgcm9vdHMuUzIuaDN3M1syXV0sXG4gICAgICAgICAgICAgICAgW3BvbHlub21pYWxzLkMyLmV2YWx1YXRlKHJvb3RzLlMyLmgydzNbMF0pLCBwb2x5bm9taWFscy5DMi5ldmFsdWF0ZShyb290cy5TMi5oMnczWzFdKSxcbiAgICAgICAgICAgICAgICAgICAgcG9seW5vbWlhbHMuQzIuZXZhbHVhdGUocm9vdHMuUzIuaDJ3M1syXSksIHBvbHlub21pYWxzLkMyLmV2YWx1YXRlKHJvb3RzLlMyLmgzdzNbMF0pLFxuICAgICAgICAgICAgICAgICAgICBwb2x5bm9taWFscy5DMi5ldmFsdWF0ZShyb290cy5TMi5oM3czWzFdKSwgcG9seW5vbWlhbHMuQzIuZXZhbHVhdGUocm9vdHMuUzIuaDN3M1syXSldLCBjdXJ2ZSk7XG5cbiAgICAgICAgICAgIC8vIENoZWNrIHRoZSBkZWdyZWUgb2YgcjIoWCkgPCA2XG4gICAgICAgICAgICBpZiAocG9seW5vbWlhbHMuUjIuZGVncmVlKCkgPiA1KSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiUjIgUG9seW5vbWlhbCBpcyBub3Qgd2VsbCBjYWxjdWxhdGVkXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgYXN5bmMgZnVuY3Rpb24gY29tcHV0ZUYoKSB7XG4gICAgICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhcIsK3wrfCtyBDb21wdXRpbmcgRiBwb2x5bm9taWFsXCIpO1xuXG4gICAgICAgICAgICAvLyBDT01QVVRFIEYoWClcbiAgICAgICAgICAgIHBvbHlub21pYWxzLkYgPSBQb2x5bm9taWFsLmZyb21Qb2x5bm9taWFsKHBvbHlub21pYWxzLkMwLCBjdXJ2ZSwgbG9nZ2VyKTtcbiAgICAgICAgICAgIHBvbHlub21pYWxzLkYuc3ViKHBvbHlub21pYWxzLlIwKTtcbiAgICAgICAgICAgIHBvbHlub21pYWxzLkYuZGl2QnlaZXJvZmllcig4LCBjaGFsbGVuZ2VzLnhpKTtcblxuICAgICAgICAgICAgbGV0IGYyID0gUG9seW5vbWlhbC5mcm9tUG9seW5vbWlhbChwb2x5bm9taWFscy5DMSwgY3VydmUsIGxvZ2dlcik7XG4gICAgICAgICAgICBmMi5zdWIocG9seW5vbWlhbHMuUjEpO1xuICAgICAgICAgICAgZjIubXVsU2NhbGFyKGNoYWxsZW5nZXMuYWxwaGEpO1xuICAgICAgICAgICAgZjIuZGl2QnlaZXJvZmllcig0LCBjaGFsbGVuZ2VzLnhpKTtcblxuICAgICAgICAgICAgbGV0IGYzID0gUG9seW5vbWlhbC5mcm9tUG9seW5vbWlhbChwb2x5bm9taWFscy5DMiwgY3VydmUsIGxvZ2dlcik7XG4gICAgICAgICAgICBmMy5zdWIocG9seW5vbWlhbHMuUjIpO1xuICAgICAgICAgICAgZjMubXVsU2NhbGFyKEZyLnNxdWFyZShjaGFsbGVuZ2VzLmFscGhhKSk7XG4gICAgICAgICAgICBmMy5kaXZCeVplcm9maWVyKDMsIGNoYWxsZW5nZXMueGkpO1xuICAgICAgICAgICAgZjMuZGl2QnlaZXJvZmllcigzLCBjaGFsbGVuZ2VzLnhpdyk7XG5cbiAgICAgICAgICAgIHBvbHlub21pYWxzLkYuYWRkKGYyKTtcbiAgICAgICAgICAgIHBvbHlub21pYWxzLkYuYWRkKGYzKTtcblxuICAgICAgICAgICAgaWYgKHBvbHlub21pYWxzLkYuZGVncmVlKCkgPj0gOSAqIHprZXkuZG9tYWluU2l6ZSAtIDYpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJGIFBvbHlub21pYWwgaXMgbm90IHdlbGwgY2FsY3VsYXRlZFwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIGFzeW5jIGZ1bmN0aW9uIHJvdW5kNSgpIHtcbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oXCI+IENvbXB1dGluZyBjaGFsbGVuZ2UgeVwiKTtcblxuICAgICAgICAvLyBTVEVQIDUuMSAtIENvbXB1dGUgcmFuZG9tIGV2YWx1YXRpb24gcG9pbnQgeSDiiIggRlxuICAgICAgICBjb25zdCB0cmFuc2NyaXB0ID0gbmV3IEtlY2NhazI1NlRyYW5zY3JpcHQoY3VydmUpO1xuICAgICAgICB0cmFuc2NyaXB0LmFkZFNjYWxhcihjaGFsbGVuZ2VzLmFscGhhKTtcbiAgICAgICAgdHJhbnNjcmlwdC5hZGRQb2xDb21taXRtZW50KHByb29mLmdldFBvbHlub21pYWwoXCJXMVwiKSk7XG5cbiAgICAgICAgY2hhbGxlbmdlcy55ID0gdHJhbnNjcmlwdC5nZXRDaGFsbGVuZ2UoKTtcbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oXCLCt8K3wrcgY2hhbGxlbmdlcy55OiBcIiArIEZyLnRvU3RyaW5nKGNoYWxsZW5nZXMueSkpO1xuXG4gICAgICAgIC8vIFNURVAgNS4yIC0gQ29tcHV0ZSBMKFgpXG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKFwiPiBDb21wdXRpbmcgTCBwb2x5bm9taWFsXCIpO1xuICAgICAgICBhd2FpdCBjb21wdXRlTCgpO1xuXG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKFwiPiBDb21wdXRpbmcgWlRTMiBwb2x5bm9taWFsXCIpO1xuICAgICAgICBhd2FpdCBjb21wdXRlWlRTMigpO1xuXG4gICAgICAgIGxldCBaVFMyWSA9IHBvbHlub21pYWxzLlpUUzIuZXZhbHVhdGUoY2hhbGxlbmdlcy55KTtcbiAgICAgICAgWlRTMlkgPSBGci5pbnYoWlRTMlkpO1xuICAgICAgICBwb2x5bm9taWFscy5MLm11bFNjYWxhcihaVFMyWSk7XG5cbiAgICAgICAgY29uc3QgcG9sRGl2aWRlbmQgPSBQb2x5bm9taWFsLmZyb21Db2VmZmljaWVudHNBcnJheShbRnIubmVnKGNoYWxsZW5nZXMueSksIEZyLm9uZV0sIGN1cnZlKTtcbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oXCI+IENvbXB1dGluZyBXJyA9IEwgLyBaVFMyIHBvbHlub21pYWxcIik7XG4gICAgICAgIGNvbnN0IHBvbFJlbWFpbmRlciA9IHBvbHlub21pYWxzLkwuZGl2QnkocG9sRGl2aWRlbmQpO1xuXG4gICAgICAgIC8vQ2hlY2sgcG9sUmVtaW5kZXIgZGVncmVlIGlzIGVxdWFsIHRvIHplcm9cbiAgICAgICAgaWYgKHBvbFJlbWFpbmRlci5kZWdyZWUoKSA+IDApIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgRGVncmVlIG9mIEwoWCkvKFpUUzIoeSkoWC15KSkgcmVtYWluZGVyIGlzICR7cG9sUmVtYWluZGVyLmRlZ3JlZSgpfSBhbmQgc2hvdWxkIGJlIDBgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChwb2x5bm9taWFscy5MLmRlZ3JlZSgpID49IDkgKiB6a2V5LmRvbWFpblNpemUgLSAxKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJEZWdyZWUgb2YgTChYKS8oWlRTMih5KShYLXkpKSBpcyBub3QgY29ycmVjdFwiKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFRoZSBmaWZ0aCBvdXRwdXQgb2YgdGhlIHByb3ZlciBpcyAoW1cyXV8xKSwgd2hlcmUgVzI6PShmL1pfdCkoeClcbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oXCI+IENvbXB1dGluZyBXJyBtdWx0aSBleHBvbmVudGlhdGlvblwiKTtcbiAgICAgICAgbGV0IGNvbW1pdFcyID0gYXdhaXQgcG9seW5vbWlhbHMuTC5tdWx0aUV4cG9uZW50aWF0aW9uKFBUYXUsIFwiVzJcIik7XG4gICAgICAgIHByb29mLmFkZFBvbHlub21pYWwoXCJXMlwiLCBjb21taXRXMik7XG5cbiAgICAgICAgcmV0dXJuIDA7XG5cbiAgICAgICAgYXN5bmMgZnVuY3Rpb24gY29tcHV0ZUwoKSB7XG4gICAgICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhcIsK3wrfCtyBDb21wdXRpbmcgTCBwb2x5bm9taWFsXCIpO1xuXG4gICAgICAgICAgICBjb25zdCBldmFsUjBZID0gcG9seW5vbWlhbHMuUjAuZXZhbHVhdGUoY2hhbGxlbmdlcy55KTtcbiAgICAgICAgICAgIGNvbnN0IGV2YWxSMVkgPSBwb2x5bm9taWFscy5SMS5ldmFsdWF0ZShjaGFsbGVuZ2VzLnkpO1xuICAgICAgICAgICAgY29uc3QgZXZhbFIyWSA9IHBvbHlub21pYWxzLlIyLmV2YWx1YXRlKGNoYWxsZW5nZXMueSk7XG5cbiAgICAgICAgICAgIGxldCBtdWxMMCA9IEZyLnN1YihjaGFsbGVuZ2VzLnksIHJvb3RzLlMwLmgwdzhbMF0pO1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDE7IGkgPCA4OyBpKyspIHtcbiAgICAgICAgICAgICAgICBtdWxMMCA9IEZyLm11bChtdWxMMCwgRnIuc3ViKGNoYWxsZW5nZXMueSwgcm9vdHMuUzAuaDB3OFtpXSkpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBsZXQgbXVsTDEgPSBGci5zdWIoY2hhbGxlbmdlcy55LCByb290cy5TMS5oMXc0WzBdKTtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAxOyBpIDwgNDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgbXVsTDEgPSBGci5tdWwobXVsTDEsIEZyLnN1YihjaGFsbGVuZ2VzLnksIHJvb3RzLlMxLmgxdzRbaV0pKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgbGV0IG11bEwyID0gRnIuc3ViKGNoYWxsZW5nZXMueSwgcm9vdHMuUzIuaDJ3M1swXSk7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMTsgaSA8IDM7IGkrKykge1xuICAgICAgICAgICAgICAgIG11bEwyID0gRnIubXVsKG11bEwyLCBGci5zdWIoY2hhbGxlbmdlcy55LCByb290cy5TMi5oMnczW2ldKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IDM7IGkrKykge1xuICAgICAgICAgICAgICAgIG11bEwyID0gRnIubXVsKG11bEwyLCBGci5zdWIoY2hhbGxlbmdlcy55LCByb290cy5TMi5oM3czW2ldKSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGxldCBwcmVMMCA9IEZyLm11bChtdWxMMSwgbXVsTDIpO1xuICAgICAgICAgICAgbGV0IHByZUwxID0gRnIubXVsKGNoYWxsZW5nZXMuYWxwaGEsIEZyLm11bChtdWxMMCwgbXVsTDIpKTtcbiAgICAgICAgICAgIGxldCBwcmVMMiA9IEZyLm11bChGci5zcXVhcmUoY2hhbGxlbmdlcy5hbHBoYSksIEZyLm11bChtdWxMMCwgbXVsTDEpKTtcblxuICAgICAgICAgICAgdG9JbnZlcnNlW1wiZGVuSDFcIl0gPSBtdWxMMTtcbiAgICAgICAgICAgIHRvSW52ZXJzZVtcImRlbkgyXCJdID0gbXVsTDI7XG5cbiAgICAgICAgICAgIC8vIENPTVBVVEUgTChYKVxuICAgICAgICAgICAgcG9seW5vbWlhbHMuTCA9IFBvbHlub21pYWwuZnJvbVBvbHlub21pYWwocG9seW5vbWlhbHMuQzAsIGN1cnZlLCBsb2dnZXIpO1xuICAgICAgICAgICAgcG9seW5vbWlhbHMuTC5zdWJTY2FsYXIoZXZhbFIwWSk7XG4gICAgICAgICAgICBwb2x5bm9taWFscy5MLm11bFNjYWxhcihwcmVMMCk7XG5cbiAgICAgICAgICAgIGxldCBsMiA9IFBvbHlub21pYWwuZnJvbVBvbHlub21pYWwocG9seW5vbWlhbHMuQzEsIGN1cnZlLCBsb2dnZXIpO1xuICAgICAgICAgICAgbDIuc3ViU2NhbGFyKGV2YWxSMVkpO1xuICAgICAgICAgICAgbDIubXVsU2NhbGFyKHByZUwxKTtcblxuICAgICAgICAgICAgbGV0IGwzID0gUG9seW5vbWlhbC5mcm9tUG9seW5vbWlhbChwb2x5bm9taWFscy5DMiwgY3VydmUsIGxvZ2dlcik7XG4gICAgICAgICAgICBsMy5zdWJTY2FsYXIoZXZhbFIyWSk7XG4gICAgICAgICAgICBsMy5tdWxTY2FsYXIocHJlTDIpO1xuXG4gICAgICAgICAgICBwb2x5bm9taWFscy5MLmFkZChsMik7XG4gICAgICAgICAgICBwb2x5bm9taWFscy5MLmFkZChsMyk7XG5cbiAgICAgICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKFwiPiBDb21wdXRpbmcgWlQgcG9seW5vbWlhbFwiKTtcbiAgICAgICAgICAgIGF3YWl0IGNvbXB1dGVaVCgpO1xuXG4gICAgICAgICAgICBjb25zdCBldmFsWlRZID0gcG9seW5vbWlhbHMuWlQuZXZhbHVhdGUoY2hhbGxlbmdlcy55KTtcbiAgICAgICAgICAgIHBvbHlub21pYWxzLkYubXVsU2NhbGFyKGV2YWxaVFkpO1xuICAgICAgICAgICAgcG9seW5vbWlhbHMuTC5zdWIocG9seW5vbWlhbHMuRik7XG5cbiAgICAgICAgICAgIC8vIENoZWNrIGRlZ3JlZVxuICAgICAgICAgICAgaWYgKHBvbHlub21pYWxzLkwuZGVncmVlKCkgPj0gOSAqIHprZXkuZG9tYWluU2l6ZSkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkwgUG9seW5vbWlhbCBpcyBub3Qgd2VsbCBjYWxjdWxhdGVkXCIpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBkZWxldGUgYnVmZmVycy5MO1xuICAgICAgICB9XG5cbiAgICAgICAgYXN5bmMgZnVuY3Rpb24gY29tcHV0ZVpUKCkge1xuICAgICAgICAgICAgcG9seW5vbWlhbHMuWlQgPSBQb2x5bm9taWFsLnplcm9maWVyUG9seW5vbWlhbChcbiAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgIHJvb3RzLlMwLmgwdzhbMF0sIHJvb3RzLlMwLmgwdzhbMV0sIHJvb3RzLlMwLmgwdzhbMl0sIHJvb3RzLlMwLmgwdzhbM10sXG4gICAgICAgICAgICAgICAgICAgIHJvb3RzLlMwLmgwdzhbNF0sIHJvb3RzLlMwLmgwdzhbNV0sIHJvb3RzLlMwLmgwdzhbNl0sIHJvb3RzLlMwLmgwdzhbN10sXG4gICAgICAgICAgICAgICAgICAgIHJvb3RzLlMxLmgxdzRbMF0sIHJvb3RzLlMxLmgxdzRbMV0sIHJvb3RzLlMxLmgxdzRbMl0sIHJvb3RzLlMxLmgxdzRbM10sXG4gICAgICAgICAgICAgICAgICAgIHJvb3RzLlMyLmgydzNbMF0sIHJvb3RzLlMyLmgydzNbMV0sIHJvb3RzLlMyLmgydzNbMl0sXG4gICAgICAgICAgICAgICAgICAgIHJvb3RzLlMyLmgzdzNbMF0sIHJvb3RzLlMyLmgzdzNbMV0sIHJvb3RzLlMyLmgzdzNbMl1dLCBjdXJ2ZSk7XG4gICAgICAgIH1cblxuICAgICAgICBhc3luYyBmdW5jdGlvbiBjb21wdXRlWlRTMigpIHtcbiAgICAgICAgICAgIHBvbHlub21pYWxzLlpUUzIgPSBQb2x5bm9taWFsLnplcm9maWVyUG9seW5vbWlhbChcbiAgICAgICAgICAgICAgICBbcm9vdHMuUzEuaDF3NFswXSwgcm9vdHMuUzEuaDF3NFsxXSwgcm9vdHMuUzEuaDF3NFsyXSwgcm9vdHMuUzEuaDF3NFszXSxcbiAgICAgICAgICAgICAgICAgICAgcm9vdHMuUzIuaDJ3M1swXSwgcm9vdHMuUzIuaDJ3M1sxXSwgcm9vdHMuUzIuaDJ3M1syXSxcbiAgICAgICAgICAgICAgICAgICAgcm9vdHMuUzIuaDN3M1swXSwgcm9vdHMuUzIuaDN3M1sxXSwgcm9vdHMuUzIuaDN3M1syXV0sIGN1cnZlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldE1vbnRnb21lcnlCYXRjaGVkSW52ZXJzZSgpIHtcbiAgICAgICAgLy8gICDCtyBkZW5vbWluYXRvciBuZWVkZWQgaW4gc3RlcCA4IGFuZCA5IG9mIHRoZSB2ZXJpZmllciB0byBtdWx0aXBseSBieSAxL1pfSCh4aSlcbiAgICAgICAgbGV0IHhpTiA9IGNoYWxsZW5nZXMueGk7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgemtleS5wb3dlcjsgaSsrKSB7XG4gICAgICAgICAgICB4aU4gPSBGci5zcXVhcmUoeGlOKTtcbiAgICAgICAgfVxuICAgICAgICB0b0ludmVyc2VbXCJ6aFwiXSA9IEZyLnN1Yih4aU4sIEZyLm9uZSk7XG5cbiAgICAgICAgLy8gICDCtyBkZW5vbWluYXRvciBuZWVkZWQgaW4gc3RlcCAxMCBhbmQgMTEgb2YgdGhlIHZlcmlmaWVyXG4gICAgICAgIC8vICAgICB0b0ludmVyc2UuZGVuSDEgJiB0b0ludmVyc2UuZGVuSDIgIC0+IENvbXB1dGVkIGluIHJvdW5kNSwgY29tcHV0ZUwoKVxuXG4gICAgICAgIC8vICAgwrcgZGVub21pbmF0b3IgbmVlZGVkIGluIHRoZSB2ZXJpZmllciB3aGVuIGNvbXB1dGluZyBMX2lee1MwfShYKSwgTF9pXntTMX0oWCkgYW5kIExfaV57UzJ9KFgpXG4gICAgICAgIGNvbXB1dGVMaVMwKHRvSW52ZXJzZSwgcm9vdHMuUzAuaDB3OCwgY2hhbGxlbmdlcy55LCBjdXJ2ZSk7XG5cbiAgICAgICAgY29tcHV0ZUxpUzEodG9JbnZlcnNlLCByb290cy5TMS5oMXc0LCBjaGFsbGVuZ2VzLnksIGN1cnZlKTtcblxuICAgICAgICBjb21wdXRlTGlTMih0b0ludmVyc2UsIHJvb3RzLlMyLmgydzMsIHJvb3RzLlMyLmgzdzMsIGNoYWxsZW5nZXMueSwgY2hhbGxlbmdlcy54aSwgY2hhbGxlbmdlcy54aXcsIGN1cnZlKTtcblxuICAgICAgICAvLyAgIMK3IExfaSBpPTEgdG8gbnVtIHB1YmxpYyBpbnB1dHMsIG5lZWRlZCBpbiBzdGVwIDYgYW5kIDcgb2YgdGhlIHZlcmlmaWVyIHRvIGNvbXB1dGUgTF8xKHhpKSBhbmQgUEkoeGkpXG4gICAgICAgIGNvbnN0IHNpemUgPSBNYXRoLm1heCgxLCB6a2V5Lm5QdWJsaWMpO1xuXG4gICAgICAgIGxldCB3ID0gRnIub25lO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNpemU7IGkrKykge1xuICAgICAgICAgICAgdG9JbnZlcnNlW1wiTGlfXCIgKyAoaSArIDEpXSA9IEZyLm11bChGci5lKHprZXkuZG9tYWluU2l6ZSksIEZyLnN1YihjaGFsbGVuZ2VzLnhpLCB3KSk7XG4gICAgICAgICAgICB3ID0gRnIubXVsKHcsIEZyLndbemtleS5wb3dlcl0pO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IG11bEFjY3VtdWxhdG9yID0gRnIub25lO1xuICAgICAgICBmb3IgKGNvbnN0IGVsZW1lbnQgb2YgT2JqZWN0LnZhbHVlcyh0b0ludmVyc2UpKSB7XG4gICAgICAgICAgICBpZihBcnJheS5pc0FycmF5KGVsZW1lbnQpKSB7XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBzdWJFbGVtZW50IG9mIGVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgbXVsQWNjdW11bGF0b3IgPSBGci5tdWwobXVsQWNjdW11bGF0b3IsIHN1YkVsZW1lbnQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgbXVsQWNjdW11bGF0b3IgPSBGci5tdWwobXVsQWNjdW11bGF0b3IsIGVsZW1lbnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBGci5pbnYobXVsQWNjdW11bGF0b3IpO1xuXG4gICAgICAgIFxuICAgICAgICBmdW5jdGlvbiBjb21wdXRlTGlTMCh0b0ludmVyc2UsIHJvb3RzLCB4LCBjdXJ2ZSkge1xuICAgICAgICAgICAgY29uc3QgRnIgPSBjdXJ2ZS5GcjtcbiAgICAgICAgICAgIGNvbnN0IGxlbiA9IHJvb3RzLmxlbmd0aDtcbiAgICAgICAgXG4gICAgICAgICAgICBjb25zdCBkZW4xID0gRnIubXVsKEZyLmUobGVuKSwgRnIuZXhwKHJvb3RzWzBdLCBsZW4gLSAyKSk7XG4gICAgICAgIFxuICAgICAgICAgICAgY29uc3QgTGkgPSBbXTtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgICAgICAgICAgICBjb25zdCBkZW4yID0gcm9vdHNbKChsZW4gLSAxKSAqIGkpICUgbGVuXTtcbiAgICAgICAgICAgICAgICBjb25zdCBkZW4zID0gRnIuc3ViKHgsIHJvb3RzW2ldKTtcbiAgICAgICAgXG4gICAgICAgICAgICAgICAgdG9JbnZlcnNlW1tcIkxpUzBfXCIgKyAoaSArIDEpXV0gPSBGci5tdWwoRnIubXVsKGRlbjEsIGRlbjIpLCBkZW4zKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgXG4gICAgICAgICAgICByZXR1cm4gTGk7XG4gICAgICAgIH1cblxuICAgICAgICBmdW5jdGlvbiBjb21wdXRlTGlTMSh0b0ludmVyc2UsIHJvb3RzLCB4LCBjdXJ2ZSkge1xuICAgICAgICAgICAgY29uc3QgRnIgPSBjdXJ2ZS5GcjtcbiAgICAgICAgICAgIGNvbnN0IGxlbiA9IHJvb3RzLmxlbmd0aDtcbiAgICAgICAgXG4gICAgICAgICAgICBjb25zdCBkZW4xID0gRnIubXVsKEZyLmUobGVuKSwgRnIuZXhwKHJvb3RzWzBdLCBsZW4gLSAyKSk7XG4gICAgICAgIFxuICAgICAgICAgICAgY29uc3QgTGkgPSBbXTtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgICAgICAgICAgICBjb25zdCBkZW4yID0gcm9vdHNbKChsZW4gLSAxKSAqIGkpICUgbGVuXTtcbiAgICAgICAgICAgICAgICBjb25zdCBkZW4zID0gRnIuc3ViKHgsIHJvb3RzW2ldKTtcbiAgICAgICAgXG4gICAgICAgICAgICAgICAgdG9JbnZlcnNlW1tcIkxpUzFfXCIgKyAoaSArIDEpXV0gPSBGci5tdWwoRnIubXVsKGRlbjEsIGRlbjIpLCBkZW4zKTtcblxuICAgICAgICAgICAgfVxuICAgICAgICBcbiAgICAgICAgICAgIHJldHVybiBMaTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZ1bmN0aW9uIGNvbXB1dGVMaVMyKHRvSW52ZXJzZSwgUzIsIFMycCwgdmFsdWUsIHhpLCB4aXcsIGN1cnZlKSB7XG4gICAgICAgICAgICBjb25zdCBGciA9IGN1cnZlLkZyO1xuICAgICAgICBcbiAgICAgICAgICAgIGNvbnN0IExpID0gW107XG4gICAgICAgIFxuICAgICAgICAgICAgY29uc3QgXzNoMiA9IEZyLm11bChGci5lKDMpLCBTMlswXSk7XG4gICAgICAgICAgICBjb25zdCB4aXN1YnhpdyA9IEZyLnN1Yih4aSwgeGl3KTtcbiAgICAgICAgICAgIGxldCBkZW4xID0gRnIubXVsKF8zaDIsIHhpc3VieGl3KTtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMzsgaSsrKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZGVuMiA9IFMyWzIgKiBpICUgM107XG4gICAgICAgICAgICAgICAgY29uc3QgZGVuMyA9IEZyLnN1Yih2YWx1ZSwgUzJbaV0pO1xuICAgICAgICBcbiAgICAgICAgICAgICAgICB0b0ludmVyc2VbW1wiTGlTMl9cIiArIChpICsgMSldXSA9IEZyLm11bChkZW4xLEZyLm11bChkZW4yLCBkZW4zKSk7XG4gICAgICAgICAgICAgICAgXG4gICAgICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICAgICAgY29uc3QgXzNoMyA9IEZyLm11bChGci5lKDMpLCBTMnBbMF0pO1xuICAgICAgICAgICAgY29uc3QgeGl3c3VieGkgPSBGci5zdWIoeGl3LCB4aSk7XG4gICAgICAgICAgICBkZW4xID0gRnIubXVsKF8zaDMsIHhpd3N1YnhpKTtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMzsgaSsrKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZGVuMiA9IFMycFsyICogaSAlIDNdO1xuICAgICAgICAgICAgICAgIGNvbnN0IGRlbjMgPSBGci5zdWIodmFsdWUsIFMycFtpXSk7XG4gICAgICAgIFxuICAgICAgICAgICAgICAgIHRvSW52ZXJzZVtbXCJMaVMyX1wiICsgKGkgKyAxICsgMyldXSA9IEZyLm11bChkZW4xLEZyLm11bChkZW4yLCBkZW4zKSk7ICAgIFxuICAgICAgICAgICAgfVxuICAgICAgICBcbiAgICAgICAgICAgIHJldHVybiBMaTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIi8qXG4gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2Ygc25hcmtqcy5cblxuICAgIHNuYXJranMgaXMgYSBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3JcbiAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlXG4gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pXG4gICAgYW55IGxhdGVyIHZlcnNpb24uXG5cbiAgICBzbmFya2pzIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZXG4gICAgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yXG4gICAgbW9yZSBkZXRhaWxzLlxuXG4gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcgd2l0aFxuICAgIHNuYXJranMuIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXG4qL1xuXG5pbXBvcnQgZmZsb25rUHJvdmUgZnJvbSBcIi4vZmZsb25rX3Byb3ZlLmpzXCI7XG5pbXBvcnQgd3Ruc19jYWxjdWxhdGUgZnJvbSBcIi4vd3Ruc19jYWxjdWxhdGUuanNcIjtcbmltcG9ydCB7dXRpbHN9IGZyb20gXCJmZmphdmFzY3JpcHRcIjtcbmNvbnN0IHt1bnN0cmluZ2lmeUJpZ0ludHN9ID0gdXRpbHM7XG5cbmV4cG9ydCBkZWZhdWx0IGFzeW5jIGZ1bmN0aW9uIGZmbG9ua0Z1bGxQcm92ZShfaW5wdXQsIHdhc21GaWxlbmFtZSwgemtleUZpbGVuYW1lLCBsb2dnZXIsIHd0bnNDYWxjT3B0aW9ucykge1xuICAgIGNvbnN0IGlucHV0ID0gdW5zdHJpbmdpZnlCaWdJbnRzKF9pbnB1dCk7XG5cbiAgICBjb25zdCB3dG5zPSB7dHlwZTogXCJtZW1cIn07XG5cbiAgICAvLyBDb21wdXRlIHRoZSB3aXRuZXNzXG4gICAgYXdhaXQgd3Ruc19jYWxjdWxhdGUoaW5wdXQsIHdhc21GaWxlbmFtZSwgd3Rucywgd3Ruc0NhbGNPcHRpb25zKTtcblxuICAgIC8vIENvbXB1dGUgdGhlIHByb29mXG4gICAgcmV0dXJuIGF3YWl0IGZmbG9ua1Byb3ZlKHprZXlGaWxlbmFtZSwgd3RucywgbG9nZ2VyKTtcbn0iLCIvKlxuICAgIENvcHlyaWdodCAyMDIyIGlkZW4zIGFzc29jaWF0aW9uLlxuXG4gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2Ygc25hcmtqcy5cblxuICAgIHNuYXJranMgaXMgYSBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3JcbiAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlXG4gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pXG4gICAgYW55IGxhdGVyIHZlcnNpb24uXG5cbiAgICBzbmFya2pzIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZXG4gICAgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yXG4gICAgbW9yZSBkZXRhaWxzLlxuXG4gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcgd2l0aFxuICAgIHNuYXJranMuIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXG4qL1xuXG5pbXBvcnQgKiBhcyBjdXJ2ZXMgZnJvbSBcIi4vY3VydmVzLmpzXCI7XG5pbXBvcnQgeyBCaWdCdWZmZXIsIHV0aWxzIH0gZnJvbSBcImZmamF2YXNjcmlwdFwiO1xuaW1wb3J0IHsgUHJvb2YgfSBmcm9tIFwiLi9wcm9vZi5qc1wiO1xuaW1wb3J0IHsgS2VjY2FrMjU2VHJhbnNjcmlwdCB9IGZyb20gXCIuL0tlY2NhazI1NlRyYW5zY3JpcHQuanNcIjtcbmltcG9ydCB7IFNjYWxhciB9IGZyb20gXCJmZmphdmFzY3JpcHRcIjtcblxuY29uc3QgeyB1bnN0cmluZ2lmeUJpZ0ludHMgfSA9IHV0aWxzO1xuXG5leHBvcnQgZGVmYXVsdCBhc3luYyBmdW5jdGlvbiBmZmxvbmtWZXJpZnkoX3ZrX3ZlcmlmaWVyLCBfcHVibGljU2lnbmFscywgX3Byb29mLCBsb2dnZXIpIHtcbiAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhcIkZGTE9OSyBWRVJJRklFUiBTVEFSVEVEXCIpO1xuXG4gICAgX3ZrX3ZlcmlmaWVyID0gdW5zdHJpbmdpZnlCaWdJbnRzKF92a192ZXJpZmllcik7XG4gICAgX3Byb29mID0gdW5zdHJpbmdpZnlCaWdJbnRzKF9wcm9vZik7XG5cbiAgICBjb25zdCBjdXJ2ZSA9IGF3YWl0IGN1cnZlcy5nZXRDdXJ2ZUZyb21OYW1lKF92a192ZXJpZmllci5jdXJ2ZSk7XG5cbiAgICBjb25zdCB2ayA9IGZyb21PYmplY3RWayhjdXJ2ZSwgX3ZrX3ZlcmlmaWVyKTtcblxuICAgIC8vIFRPRE8gPz8/IENvbXB1dGUgd3JeMyBhbmQgY2hlY2sgaWYgaXQgbWF0Y2hlcyB3aXRoIHdcblxuICAgIGNvbnN0IHByb29mID0gbmV3IFByb29mKGN1cnZlLCBsb2dnZXIpO1xuICAgIHByb29mLmZyb21PYmplY3RQcm9vZihfcHJvb2YpO1xuXG4gICAgY29uc3QgcHVibGljU2lnbmFscyA9IHVuc3RyaW5naWZ5QmlnSW50cyhfcHVibGljU2lnbmFscyk7XG5cbiAgICBpZiAocHVibGljU2lnbmFscy5sZW5ndGggIT09IHZrLm5QdWJsaWMpIHtcbiAgICAgICAgbG9nZ2VyLmVycm9yKFwiTnVtYmVyIG9mIHB1YmxpYyBzaWduYWxzIGRvZXMgbm90IG1hdGNoIHdpdGggdmtcIik7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBjb25zdCBGciA9IGN1cnZlLkZyO1xuXG4gICAgaWYgKGxvZ2dlcikge1xuICAgICAgICBsb2dnZXIuaW5mbyhcIi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cIik7XG4gICAgICAgIGxvZ2dlci5pbmZvKFwiICBGRkxPTksgVkVSSUZZIFNFVFRJTkdTXCIpO1xuICAgICAgICBsb2dnZXIuaW5mbyhgICBDdXJ2ZTogICAgICAgICAke2N1cnZlLm5hbWV9YCk7XG4gICAgICAgIGxvZ2dlci5pbmZvKGAgIENpcmN1aXQgcG93ZXI6ICR7dmsucG93ZXJ9YCk7XG4gICAgICAgIGxvZ2dlci5pbmZvKGAgIERvbWFpbiBzaXplOiAgICR7MiAqKiB2ay5wb3dlcn1gKTtcbiAgICAgICAgbG9nZ2VyLmluZm8oYCAgUHVibGljIHZhcnM6ICAgJHt2ay5uUHVibGljfWApO1xuICAgICAgICBsb2dnZXIuaW5mbyhcIi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cIik7XG4gICAgfVxuXG4gICAgLy8gU1RFUCAxIC0gVmFsaWRhdGUgdGhhdCBhbGwgcG9seW5vbWlhbCBjb21taXRtZW50cyDiiIggR18xXG4gICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oXCI+IENoZWNraW5nIGNvbW1pdG1lbnRzIGJlbG9uZyB0byBHMVwiKTtcbiAgICBpZiAoIWNvbW1pdG1lbnRzQmVsb25nVG9HMShjdXJ2ZSwgcHJvb2YsIHZrKSkge1xuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZXJyb3IoXCJQcm9vZiBjb21taXRtZW50cyBhcmUgbm90IHZhbGlkXCIpO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgLy8gU1RFUCAyIC0gVmFsaWRhdGUgdGhhdCBhbGwgZXZhbHVhdGlvbnMg4oiIIEZcbiAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhcIj4gQ2hlY2tpbmcgZXZhbHVhdGlvbnMgYmVsb25nIHRvIEZcIik7XG4gICAgaWYgKCFldmFsdWF0aW9uc0FyZVZhbGlkKGN1cnZlLCBwcm9vZikpIHtcbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmVycm9yKFwiUHJvb2YgZXZhbHVhdGlvbnMgYXJlIG5vdCB2YWxpZC5cIik7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvLyBTVEVQIDMgLSBWYWxpZGF0ZSB0aGF0IHdfaSDiiIggRiBmb3IgaSDiiIggW2xdXG4gICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oXCI+IENoZWNraW5nIHB1YmxpYyBpbnB1dHMgYmVsb25nIHRvIEZcIik7XG4gICAgaWYgKCFwdWJsaWNJbnB1dHNBcmVWYWxpZChjdXJ2ZSwgcHVibGljU2lnbmFscykpIHtcbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmVycm9yKFwiUHVibGljIGlucHV0cyBhcmUgbm90IHZhbGlkLlwiKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIC8vIFNURVAgNCAtIENvbXB1dGUgdGhlIGNoYWxsZW5nZXM6IGJldGEsIGdhbW1hLCB4aSwgYWxwaGEgYW5kIHkg4oiIIEZcbiAgICAvLyBhcyBpbiBwcm92ZXIgZGVzY3JpcHRpb24sIGZyb20gdGhlIGNvbW1vbiBwcmVwcm9jZXNzZWQgaW5wdXRzLCBwdWJsaWMgaW5wdXRzIGFuZCBlbGVtZW50cyBvZiDPgF9TTkFSS1xuICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKFwiPiBDb21wdXRpbmcgY2hhbGxlbmdlc1wiKTtcbiAgICBjb25zdCB7IGNoYWxsZW5nZXMsIHJvb3RzIH0gPSBjb21wdXRlQ2hhbGxlbmdlcyhjdXJ2ZSwgcHJvb2YsIHZrLCBwdWJsaWNTaWduYWxzLCBsb2dnZXIpO1xuXG4gICAgLy8gU1RFUCA1IC0gQ29tcHV0ZSB0aGUgemVybyBwb2x5bm9taWFsIGV2YWx1YXRpb24gWl9IKHhpKSA9IHhpXm4gLSAxXG4gICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oXCI+IENvbXB1dGluZyBaZXJvIHBvbHlub21pYWwgZXZhbHVhdGlvbiBaX0goeGkpXCIpO1xuICAgIGNoYWxsZW5nZXMuemggPSBGci5zdWIoY2hhbGxlbmdlcy54aU4sIEZyLm9uZSk7XG4gICAgY2hhbGxlbmdlcy5pbnZ6aCA9IEZyLmludihjaGFsbGVuZ2VzLnpoKTtcblxuICAgIC8vIFNURVAgNiAtIENvbXB1dGUgdGhlIGxhZ3JhbmdlIHBvbHlub21pYWwgZXZhbHVhdGlvbiBMXzEoeGkpXG4gICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oXCI+IENvbXB1dGluZyBMYWdyYW5nZSBldmFsdWF0aW9uc1wiKTtcbiAgICBjb25zdCBsYWdyYW5nZUV2YWxzID0gYXdhaXQgY29tcHV0ZUxhZ3JhbmdlRXZhbHVhdGlvbnMoY3VydmUsIGNoYWxsZW5nZXMsIHZrKTtcblxuICAgIC8vIFNURVAgNyAtIENvbXB1dGUgcHVibGljIGlucHV0IGV2YWx1YXRpb24gUEkoeGkpXG4gICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oXCI+IENvbXB1dGluZyBwb2x5bm9taWFsIGlkZW50aXRpZXMgUEkoWClcIik7XG4gICAgY29uc3QgcGkgPSBjYWxjdWxhdGVQSShjdXJ2ZSwgcHVibGljU2lnbmFscywgbGFncmFuZ2VFdmFscyk7XG5cbiAgICAvLyBTVEVQIDggLSBDb21wdXRlIHBvbHlub21pYWwgcjAg4oiIIEZfezw0fVtYXVxuICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKFwiPiBDb21wdXRpbmcgcjAoeSlcIik7XG4gICAgY29uc3QgcjAgPSBjb21wdXRlUjAocHJvb2YsIGNoYWxsZW5nZXMsIHJvb3RzLCBjdXJ2ZSwgbG9nZ2VyKTtcblxuICAgIC8vIFNURVAgOSAtIENvbXB1dGUgcG9seW5vbWlhbCByMSDiiIggRl97PDR9W1hdXG4gICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oXCI+IENvbXB1dGluZyByMSh5KVwiKTtcbiAgICBjb25zdCByMSA9IGNvbXB1dGVSMShwcm9vZiwgY2hhbGxlbmdlcywgcm9vdHMsIHBpLCBjdXJ2ZSwgbG9nZ2VyKTtcblxuICAgIC8vIFNURVAgOSAtIENvbXB1dGUgcG9seW5vbWlhbCByMiDiiIggRl97PDZ9W1hdXG4gICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oXCI+IENvbXB1dGluZyByMih5KVwiKTtcbiAgICBjb25zdCByMiA9IGNvbXB1dGVSMihwcm9vZiwgY2hhbGxlbmdlcywgcm9vdHMsIGxhZ3JhbmdlRXZhbHNbMV0sIHZrLCBjdXJ2ZSwgbG9nZ2VyKTtcblxuICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKFwiPiBDb21wdXRpbmcgRlwiKTtcbiAgICBjb25zdCBGID0gY29tcHV0ZUYoY3VydmUsIHByb29mLCB2aywgY2hhbGxlbmdlcywgcm9vdHMpO1xuXG4gICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oXCI+IENvbXB1dGluZyBFXCIpO1xuICAgIGNvbnN0IEUgPSBjb21wdXRlRShjdXJ2ZSwgcHJvb2YsIGNoYWxsZW5nZXMsIHZrLCByMCwgcjEsIHIyKTtcblxuICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKFwiPiBDb21wdXRpbmcgSlwiKTtcbiAgICBjb25zdCBKID0gY29tcHV0ZUooY3VydmUsIHByb29mLCBjaGFsbGVuZ2VzKTtcblxuICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKFwiPiBWYWxpZGF0ZSBhbGwgZXZhbHVhdGlvbnMgd2l0aCBhIHBhaXJpbmdcIik7XG4gICAgY29uc3QgcmVzID0gYXdhaXQgaXNWYWxpZFBhaXJpbmcoY3VydmUsIHByb29mLCBjaGFsbGVuZ2VzLCB2aywgRiwgRSwgSik7XG5cbiAgICBpZiAobG9nZ2VyKSB7XG4gICAgICAgIGlmIChyZXMpIHtcbiAgICAgICAgICAgIGxvZ2dlci5pbmZvKFwiUFJPT0YgVkVSSUZJRUQgU1VDQ0VTU0ZVTExZXCIpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbG9nZ2VyLndhcm4oXCJJbnZhbGlkIFByb29mXCIpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oXCJGRkxPTksgVkVSSUZJRVIgRklOSVNIRURcIik7XG5cbiAgICByZXR1cm4gcmVzO1xuXG59XG5cbmZ1bmN0aW9uIGZyb21PYmplY3RWayhjdXJ2ZSwgdmspIHtcbiAgICBjb25zdCByZXMgPSB2aztcbiAgICByZXMuazEgPSBjdXJ2ZS5Gci5mcm9tT2JqZWN0KHZrLmsxKTtcbiAgICByZXMuazIgPSBjdXJ2ZS5Gci5mcm9tT2JqZWN0KHZrLmsyKTtcbiAgICByZXMudyA9IGN1cnZlLkZyLmZyb21PYmplY3Qodmsudyk7XG4gICAgLy8gcmVzLndXID0gY3VydmUuRnIuZnJvbU9iamVjdCh2ay53Vyk7XG4gICAgcmVzLnczID0gY3VydmUuRnIuZnJvbU9iamVjdCh2ay53Myk7XG4gICAgcmVzLnc0ID0gY3VydmUuRnIuZnJvbU9iamVjdCh2ay53NCk7XG4gICAgcmVzLnc4ID0gY3VydmUuRnIuZnJvbU9iamVjdCh2ay53OCk7XG4gICAgcmVzLndyID0gY3VydmUuRnIuZnJvbU9iamVjdCh2ay53cik7XG4gICAgcmVzLlhfMiA9IGN1cnZlLkcyLmZyb21PYmplY3QodmsuWF8yKTtcbiAgICByZXMuQzAgPSBjdXJ2ZS5HMS5mcm9tT2JqZWN0KHZrLkMwKTtcbiAgICByZXR1cm4gcmVzO1xufVxuXG5mdW5jdGlvbiBjb21taXRtZW50c0JlbG9uZ1RvRzEoY3VydmUsIHByb29mLCB2aykge1xuICAgIGNvbnN0IEcxID0gY3VydmUuRzE7XG4gICAgcmV0dXJuIEcxLmlzVmFsaWQocHJvb2YucG9seW5vbWlhbHMuQzEpXG4gICAgICAgICYmIEcxLmlzVmFsaWQocHJvb2YucG9seW5vbWlhbHMuQzIpXG4gICAgICAgICYmIEcxLmlzVmFsaWQocHJvb2YucG9seW5vbWlhbHMuVzEpXG4gICAgICAgICYmIEcxLmlzVmFsaWQocHJvb2YucG9seW5vbWlhbHMuVzIpXG4gICAgICAgICYmIEcxLmlzVmFsaWQodmsuQzApO1xufVxuXG5mdW5jdGlvbiBjaGVja1ZhbHVlQmVsb25nVG9GaWVsZChjdXJ2ZSwgdmFsdWUpIHtcbiAgICByZXR1cm4gU2NhbGFyLmx0KHZhbHVlLCBjdXJ2ZS5yKTtcbn1cblxuZnVuY3Rpb24gY2hlY2tFdmFsdWF0aW9uSXNWYWxpZChjdXJ2ZSwgZXZhbHVhdGlvbikge1xuICAgIHJldHVybiBjaGVja1ZhbHVlQmVsb25nVG9GaWVsZChjdXJ2ZSwgU2NhbGFyLmZyb21ScHJMRShldmFsdWF0aW9uKSk7XG59XG5cbmZ1bmN0aW9uIGV2YWx1YXRpb25zQXJlVmFsaWQoY3VydmUsIHByb29mKSB7XG4gICAgcmV0dXJuIGNoZWNrRXZhbHVhdGlvbklzVmFsaWQoY3VydmUsIHByb29mLmV2YWx1YXRpb25zLnFsKVxuICAgICAgICAmJiBjaGVja0V2YWx1YXRpb25Jc1ZhbGlkKGN1cnZlLCBwcm9vZi5ldmFsdWF0aW9ucy5xcilcbiAgICAgICAgJiYgY2hlY2tFdmFsdWF0aW9uSXNWYWxpZChjdXJ2ZSwgcHJvb2YuZXZhbHVhdGlvbnMucW0pXG4gICAgICAgICYmIGNoZWNrRXZhbHVhdGlvbklzVmFsaWQoY3VydmUsIHByb29mLmV2YWx1YXRpb25zLnFvKVxuICAgICAgICAmJiBjaGVja0V2YWx1YXRpb25Jc1ZhbGlkKGN1cnZlLCBwcm9vZi5ldmFsdWF0aW9ucy5xYylcbiAgICAgICAgJiYgY2hlY2tFdmFsdWF0aW9uSXNWYWxpZChjdXJ2ZSwgcHJvb2YuZXZhbHVhdGlvbnMuczEpXG4gICAgICAgICYmIGNoZWNrRXZhbHVhdGlvbklzVmFsaWQoY3VydmUsIHByb29mLmV2YWx1YXRpb25zLnMyKVxuICAgICAgICAmJiBjaGVja0V2YWx1YXRpb25Jc1ZhbGlkKGN1cnZlLCBwcm9vZi5ldmFsdWF0aW9ucy5zMylcbiAgICAgICAgJiYgY2hlY2tFdmFsdWF0aW9uSXNWYWxpZChjdXJ2ZSwgcHJvb2YuZXZhbHVhdGlvbnMuYSlcbiAgICAgICAgJiYgY2hlY2tFdmFsdWF0aW9uSXNWYWxpZChjdXJ2ZSwgcHJvb2YuZXZhbHVhdGlvbnMuYilcbiAgICAgICAgJiYgY2hlY2tFdmFsdWF0aW9uSXNWYWxpZChjdXJ2ZSwgcHJvb2YuZXZhbHVhdGlvbnMuYylcbiAgICAgICAgJiYgY2hlY2tFdmFsdWF0aW9uSXNWYWxpZChjdXJ2ZSwgcHJvb2YuZXZhbHVhdGlvbnMueilcbiAgICAgICAgJiYgY2hlY2tFdmFsdWF0aW9uSXNWYWxpZChjdXJ2ZSwgcHJvb2YuZXZhbHVhdGlvbnMuencpXG4gICAgICAgICYmIGNoZWNrRXZhbHVhdGlvbklzVmFsaWQoY3VydmUsIHByb29mLmV2YWx1YXRpb25zLnQxdylcbiAgICAgICAgJiYgY2hlY2tFdmFsdWF0aW9uSXNWYWxpZChjdXJ2ZSwgcHJvb2YuZXZhbHVhdGlvbnMudDJ3KTtcbn1cblxuZnVuY3Rpb24gcHVibGljSW5wdXRzQXJlVmFsaWQoY3VydmUsIHB1YmxpY0lucHV0cykge1xuICAgIGZvcihsZXQgaSA9IDA7IGkgPCBwdWJsaWNJbnB1dHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgaWYoIWNoZWNrVmFsdWVCZWxvbmdUb0ZpZWxkKGN1cnZlLCBwdWJsaWNJbnB1dHNbaV0pKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG59XG5cbmZ1bmN0aW9uIGNvbXB1dGVDaGFsbGVuZ2VzKGN1cnZlLCBwcm9vZiwgdmssIHB1YmxpY1NpZ25hbHMsIGxvZ2dlcikge1xuICAgIGNvbnN0IEZyID0gY3VydmUuRnI7XG5cbiAgICBjb25zdCBjaGFsbGVuZ2VzID0ge307XG4gICAgY29uc3Qgcm9vdHMgPSB7fTtcbiAgICBjb25zdCB0cmFuc2NyaXB0ID0gbmV3IEtlY2NhazI1NlRyYW5zY3JpcHQoY3VydmUpO1xuXG4gICAgLy8gQWRkIEMwIHRvIHRoZSB0cmFuc2NyaXB0XG4gICAgdHJhbnNjcmlwdC5hZGRQb2xDb21taXRtZW50KHZrLkMwKTtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcHVibGljU2lnbmFscy5sZW5ndGg7IGkrKykge1xuICAgICAgICB0cmFuc2NyaXB0LmFkZFNjYWxhcihGci5lKHB1YmxpY1NpZ25hbHNbaV0pKTtcbiAgICB9XG5cbiAgICB0cmFuc2NyaXB0LmFkZFBvbENvbW1pdG1lbnQocHJvb2YucG9seW5vbWlhbHMuQzEpO1xuICAgIGNoYWxsZW5nZXMuYmV0YSA9IHRyYW5zY3JpcHQuZ2V0Q2hhbGxlbmdlKCk7XG4gICAgdHJhbnNjcmlwdC5yZXNldCgpO1xuXG4gICAgdHJhbnNjcmlwdC5hZGRTY2FsYXIoY2hhbGxlbmdlcy5iZXRhKTtcbiAgICBjaGFsbGVuZ2VzLmdhbW1hID0gdHJhbnNjcmlwdC5nZXRDaGFsbGVuZ2UoKTtcblxuICAgIHRyYW5zY3JpcHQucmVzZXQoKTtcbiAgICB0cmFuc2NyaXB0LmFkZFNjYWxhcihjaGFsbGVuZ2VzLmdhbW1hKTtcbiAgICB0cmFuc2NyaXB0LmFkZFBvbENvbW1pdG1lbnQocHJvb2YucG9seW5vbWlhbHMuQzIpO1xuICAgIGNvbnN0IHhpU2VlZCA9IHRyYW5zY3JpcHQuZ2V0Q2hhbGxlbmdlKCk7XG4gICAgY29uc3QgeGlTZWVkMiA9IEZyLnNxdWFyZSh4aVNlZWQpO1xuXG4gICAgbGV0IHc4ID0gW107XG4gICAgdzhbMV0gPSB2ay53ODtcbiAgICB3OFsyXSA9IEZyLnNxdWFyZSh2ay53OCk7XG4gICAgdzhbM10gPSBGci5tdWwodzhbMl0sIHZrLnc4KTtcbiAgICB3OFs0XSA9IEZyLm11bCh3OFszXSwgdmsudzgpO1xuICAgIHc4WzVdID0gRnIubXVsKHc4WzRdLCB2ay53OCk7XG4gICAgdzhbNl0gPSBGci5tdWwodzhbNV0sIHZrLnc4KTtcbiAgICB3OFs3XSA9IEZyLm11bCh3OFs2XSwgdmsudzgpO1xuICAgIGxldCB3NCA9IFtdO1xuICAgIHc0WzFdID0gdmsudzQ7XG4gICAgdzRbMl0gPSBGci5zcXVhcmUodmsudzQpO1xuICAgIHc0WzNdID0gRnIubXVsKHc0WzJdLCB2ay53NCk7XG4gICAgbGV0IHczID0gW107XG4gICAgdzNbMV0gPSB2ay53MztcbiAgICB3M1syXSA9IEZyLnNxdWFyZSh2ay53Myk7XG5cbiAgICAvLyBjb25zdCB3NF8yID0gRnIuc3F1YXJlKHZrLnc0KTtcbiAgICAvLyBjb25zdCB3NF8zID0gRnIubXVsKHc0XzIsIHZrLnc0KTtcbiAgICAvLyBjb25zdCB3M18yID0gRnIuc3F1YXJlKHZrLnczKTtcblxuICAgIC8vIENvbXB1dGUgaDAgPSB4aVNlZWRlcl4zXG4gICAgcm9vdHMuUzAgPSB7fTtcbiAgICByb290cy5TMC5oMHc4ID0gW107XG4gICAgcm9vdHMuUzAuaDB3OFswXSA9IEZyLm11bCh4aVNlZWQyLCB4aVNlZWQpO1xuICAgIGZvciAobGV0IGkgPSAxOyBpIDwgODsgaSsrKSB7XG4gICAgICAgIHJvb3RzLlMwLmgwdzhbaV0gPSBGci5tdWwocm9vdHMuUzAuaDB3OFswXSwgdzhbaV0pO1xuICAgIH1cblxuICAgIC8vIENvbXB1dGUgaDEgPSB4aV9zZWVkZXJeNlxuICAgIHJvb3RzLlMxID0ge307XG4gICAgcm9vdHMuUzEuaDF3NCA9IFtdO1xuICAgIHJvb3RzLlMxLmgxdzRbMF0gPSBGci5zcXVhcmUocm9vdHMuUzAuaDB3OFswXSk7XG4gICAgZm9yIChsZXQgaSA9IDE7IGkgPCA0OyBpKyspIHtcbiAgICAgICAgcm9vdHMuUzEuaDF3NFtpXSA9IEZyLm11bChyb290cy5TMS5oMXc0WzBdLCB3NFtpXSk7XG4gICAgfVxuXG4gICAgLy8gQ29tcHV0ZSBoMiA9IHhpX3NlZWRlcl44XG4gICAgcm9vdHMuUzIgPSB7fTtcbiAgICByb290cy5TMi5oMnczID0gW107XG4gICAgcm9vdHMuUzIuaDJ3M1swXSA9IEZyLm11bChyb290cy5TMS5oMXc0WzBdLCB4aVNlZWQyKTtcbiAgICByb290cy5TMi5oMnczWzFdID0gRnIubXVsKHJvb3RzLlMyLmgydzNbMF0sIHczWzFdKTtcbiAgICByb290cy5TMi5oMnczWzJdID0gRnIubXVsKHJvb3RzLlMyLmgydzNbMF0sIHczWzJdKTtcblxuICAgIHJvb3RzLlMyLmgzdzMgPSBbXTtcbiAgICAvLyBNdWx0aXBseSBoMyBieSB0aGlyZC1yb290LW9tZWdhIHRvIG9idGFpbiBoXzNeMyA9IHhpz4lcbiAgICAvLyBTbywgaDMgPSB4aV9zZWVkZXJeOCDPiV57MS8zfVxuICAgIHJvb3RzLlMyLmgzdzNbMF0gPSBGci5tdWwocm9vdHMuUzIuaDJ3M1swXSwgdmsud3IpO1xuICAgIHJvb3RzLlMyLmgzdzNbMV0gPSBGci5tdWwocm9vdHMuUzIuaDN3M1swXSwgdzNbMV0pO1xuICAgIHJvb3RzLlMyLmgzdzNbMl0gPSBGci5tdWwocm9vdHMuUzIuaDN3M1swXSwgdzNbMl0pO1xuXG4gICAgLy8gQ29tcHV0ZSB4aSA9IHhpX3NlZWRlcl4xMlxuICAgIGNoYWxsZW5nZXMueGkgPSBGci5tdWwoRnIuc3F1YXJlKHJvb3RzLlMyLmgydzNbMF0pLCByb290cy5TMi5oMnczWzBdKTtcbiAgICBjaGFsbGVuZ2VzLnhpdyA9IEZyLm11bChjaGFsbGVuZ2VzLnhpLCBGci53W3ZrLnBvd2VyXSk7XG5cbiAgICBjaGFsbGVuZ2VzLnhpTiA9IGNoYWxsZW5nZXMueGk7XG4gICAgdmsuZG9tYWluU2l6ZSA9IDE7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB2ay5wb3dlcjsgaSsrKSB7XG4gICAgICAgIGNoYWxsZW5nZXMueGlOID0gRnIuc3F1YXJlKGNoYWxsZW5nZXMueGlOKTtcbiAgICAgICAgdmsuZG9tYWluU2l6ZSAqPSAyO1xuICAgIH1cblxuICAgIHRyYW5zY3JpcHQucmVzZXQoKTtcbiAgICB0cmFuc2NyaXB0LmFkZFNjYWxhcih4aVNlZWQpO1xuICAgIHRyYW5zY3JpcHQuYWRkU2NhbGFyKHByb29mLmV2YWx1YXRpb25zLnFsKTtcbiAgICB0cmFuc2NyaXB0LmFkZFNjYWxhcihwcm9vZi5ldmFsdWF0aW9ucy5xcik7XG4gICAgdHJhbnNjcmlwdC5hZGRTY2FsYXIocHJvb2YuZXZhbHVhdGlvbnMucW0pO1xuICAgIHRyYW5zY3JpcHQuYWRkU2NhbGFyKHByb29mLmV2YWx1YXRpb25zLnFvKTtcbiAgICB0cmFuc2NyaXB0LmFkZFNjYWxhcihwcm9vZi5ldmFsdWF0aW9ucy5xYyk7XG4gICAgdHJhbnNjcmlwdC5hZGRTY2FsYXIocHJvb2YuZXZhbHVhdGlvbnMuczEpO1xuICAgIHRyYW5zY3JpcHQuYWRkU2NhbGFyKHByb29mLmV2YWx1YXRpb25zLnMyKTtcbiAgICB0cmFuc2NyaXB0LmFkZFNjYWxhcihwcm9vZi5ldmFsdWF0aW9ucy5zMyk7XG4gICAgdHJhbnNjcmlwdC5hZGRTY2FsYXIocHJvb2YuZXZhbHVhdGlvbnMuYSk7XG4gICAgdHJhbnNjcmlwdC5hZGRTY2FsYXIocHJvb2YuZXZhbHVhdGlvbnMuYik7XG4gICAgdHJhbnNjcmlwdC5hZGRTY2FsYXIocHJvb2YuZXZhbHVhdGlvbnMuYyk7XG4gICAgdHJhbnNjcmlwdC5hZGRTY2FsYXIocHJvb2YuZXZhbHVhdGlvbnMueik7XG4gICAgdHJhbnNjcmlwdC5hZGRTY2FsYXIocHJvb2YuZXZhbHVhdGlvbnMuencpO1xuICAgIHRyYW5zY3JpcHQuYWRkU2NhbGFyKHByb29mLmV2YWx1YXRpb25zLnQxdyk7XG4gICAgdHJhbnNjcmlwdC5hZGRTY2FsYXIocHJvb2YuZXZhbHVhdGlvbnMudDJ3KTtcbiAgICBjaGFsbGVuZ2VzLmFscGhhID0gdHJhbnNjcmlwdC5nZXRDaGFsbGVuZ2UoKTtcblxuICAgIHRyYW5zY3JpcHQucmVzZXQoKTtcbiAgICB0cmFuc2NyaXB0LmFkZFNjYWxhcihjaGFsbGVuZ2VzLmFscGhhKTtcbiAgICB0cmFuc2NyaXB0LmFkZFBvbENvbW1pdG1lbnQocHJvb2YucG9seW5vbWlhbHMuVzEpO1xuICAgIGNoYWxsZW5nZXMueSA9IHRyYW5zY3JpcHQuZ2V0Q2hhbGxlbmdlKCk7XG5cbiAgICBpZiAobG9nZ2VyKSB7XG4gICAgICAgIGxvZ2dlci5pbmZvKFwiwrfCt8K3IGNoYWxsZW5nZXMuYmV0YTogIFwiICsgRnIudG9TdHJpbmcoY2hhbGxlbmdlcy5iZXRhKSk7XG4gICAgICAgIGxvZ2dlci5pbmZvKFwiwrfCt8K3IGNoYWxsZW5nZXMuZ2FtbWE6IFwiICsgRnIudG9TdHJpbmcoY2hhbGxlbmdlcy5nYW1tYSkpO1xuICAgICAgICBsb2dnZXIuaW5mbyhcIsK3wrfCtyBjaGFsbGVuZ2VzLnhpOiAgICBcIiArIEZyLnRvU3RyaW5nKGNoYWxsZW5nZXMueGkpKTtcbiAgICAgICAgbG9nZ2VyLmluZm8oXCLCt8K3wrcgY2hhbGxlbmdlcy5hbHBoYTogXCIgKyBGci50b1N0cmluZyhjaGFsbGVuZ2VzLmFscGhhKSk7XG4gICAgICAgIGxvZ2dlci5pbmZvKFwiwrfCt8K3IGNoYWxsZW5nZXMueTogICAgIFwiICsgRnIudG9TdHJpbmcoY2hhbGxlbmdlcy55KSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHsgY2hhbGxlbmdlczogY2hhbGxlbmdlcywgcm9vdHM6IHJvb3RzIH07XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGNvbXB1dGVMYWdyYW5nZUV2YWx1YXRpb25zKGN1cnZlLCBjaGFsbGVuZ2VzLCB2aykge1xuICAgIGNvbnN0IEZyID0gY3VydmUuRnI7XG5cbiAgICBjb25zdCBzaXplID0gTWF0aC5tYXgoMSwgdmsublB1YmxpYyk7XG4gICAgY29uc3QgbnVtQXJyID0gbmV3IEJpZ0J1ZmZlcihzaXplICogRnIubjgpO1xuICAgIGxldCBkZW5BcnIgPSBuZXcgQmlnQnVmZmVyKHNpemUgKiBGci5uOCk7XG5cbiAgICBsZXQgdyA9IEZyLm9uZTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNpemU7IGkrKykge1xuICAgICAgICBjb25zdCBpX3NGciA9IGkgKiBGci5uODtcbiAgICAgICAgbnVtQXJyLnNldChGci5tdWwodywgY2hhbGxlbmdlcy56aCksIGlfc0ZyKTtcbiAgICAgICAgZGVuQXJyLnNldChGci5tdWwoRnIuZSh2ay5kb21haW5TaXplKSwgRnIuc3ViKGNoYWxsZW5nZXMueGksIHcpKSwgaV9zRnIpO1xuICAgICAgICB3ID0gRnIubXVsKHcsIHZrLncpO1xuICAgIH1cblxuICAgIGRlbkFyciA9IGF3YWl0IEZyLmJhdGNoSW52ZXJzZShkZW5BcnIpO1xuXG4gICAgbGV0IEwgPSBbXTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNpemU7IGkrKykge1xuICAgICAgICBjb25zdCBpX3NGciA9IGkgKiBGci5uODtcbiAgICAgICAgTFtpICsgMV0gPSBGci5tdWwobnVtQXJyLnNsaWNlKGlfc0ZyLCBpX3NGciArIEZyLm44KSwgZGVuQXJyLnNsaWNlKGlfc0ZyLCBpX3NGciArIEZyLm44KSk7XG4gICAgfVxuICAgIHJldHVybiBMO1xufVxuXG5mdW5jdGlvbiBjYWxjdWxhdGVQSShjdXJ2ZSwgcHVibGljU2lnbmFscywgbGFncmFuZ2VFdmFscykge1xuICAgIGNvbnN0IEZyID0gY3VydmUuRnI7XG5cbiAgICBsZXQgcGkgPSBGci56ZXJvO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcHVibGljU2lnbmFscy5sZW5ndGg7IGkrKykge1xuICAgICAgICBjb25zdCB3ID0gRnIuZShwdWJsaWNTaWduYWxzW2ldKTtcbiAgICAgICAgcGkgPSBGci5zdWIocGksIEZyLm11bCh3LCBsYWdyYW5nZUV2YWxzW2kgKyAxXSkpO1xuICAgIH1cbiAgICByZXR1cm4gcGk7XG59XG5cbmZ1bmN0aW9uIGNvbXB1dGVSMChwcm9vZiwgY2hhbGxlbmdlcywgcm9vdHMsIGN1cnZlLCBsb2dnZXIpIHtcbiAgICBjb25zdCBGciA9IGN1cnZlLkZyO1xuXG4gICAgY29uc3QgTGkgPSBjb21wdXRlTGFncmFuZ2VMaVNpKHJvb3RzLlMwLmgwdzgsIGNoYWxsZW5nZXMueSwgY2hhbGxlbmdlcy54aSwgY3VydmUpO1xuXG4gICAgLy8gcjAoeSkgPSDiiJFfMV44IENfMChoXzAgz4lfOF57aS0xfSkgTF9pKHkpLiBUbyB0aGlzIGVuZCB3ZSBuZWVkIHRvIGNvbXB1dGVcblxuICAgIC8vIENvbXB1dGUgdGhlIDggQzAgdmFsdWVzXG4gICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oXCLCt8K3wrcgQ29tcHV0aW5nIHIwKHkpXCIpO1xuXG4gICAgbGV0IHJlcyA9IEZyLnplcm87XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCA4OyBpKyspIHtcbiAgICAgICAgbGV0IGNvZWZWYWx1ZXMgPSBbXTtcbiAgICAgICAgY29lZlZhbHVlc1sxXSA9IHJvb3RzLlMwLmgwdzhbaV07XG4gICAgICAgIGZvciAobGV0IGogPSAyOyBqIDwgODsgaisrKSB7XG4gICAgICAgICAgICBjb2VmVmFsdWVzW2pdID0gRnIubXVsKGNvZWZWYWx1ZXNbaiAtIDFdLCByb290cy5TMC5oMHc4W2ldKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBjMCA9IEZyLmFkZChwcm9vZi5ldmFsdWF0aW9ucy5xbCwgRnIubXVsKHByb29mLmV2YWx1YXRpb25zLnFyLCBjb2VmVmFsdWVzWzFdKSk7XG4gICAgICAgIGMwID0gRnIuYWRkKGMwLCBGci5tdWwocHJvb2YuZXZhbHVhdGlvbnMucW8sIGNvZWZWYWx1ZXNbMl0pKTtcbiAgICAgICAgYzAgPSBGci5hZGQoYzAsIEZyLm11bChwcm9vZi5ldmFsdWF0aW9ucy5xbSwgY29lZlZhbHVlc1szXSkpO1xuICAgICAgICBjMCA9IEZyLmFkZChjMCwgRnIubXVsKHByb29mLmV2YWx1YXRpb25zLnFjLCBjb2VmVmFsdWVzWzRdKSk7XG4gICAgICAgIGMwID0gRnIuYWRkKGMwLCBGci5tdWwocHJvb2YuZXZhbHVhdGlvbnMuczEsIGNvZWZWYWx1ZXNbNV0pKTtcbiAgICAgICAgYzAgPSBGci5hZGQoYzAsIEZyLm11bChwcm9vZi5ldmFsdWF0aW9ucy5zMiwgY29lZlZhbHVlc1s2XSkpO1xuICAgICAgICBjMCA9IEZyLmFkZChjMCwgRnIubXVsKHByb29mLmV2YWx1YXRpb25zLnMzLCBjb2VmVmFsdWVzWzddKSk7XG5cbiAgICAgICAgcmVzID0gRnIuYWRkKHJlcywgRnIubXVsKGMwLCBMaVtpXSkpO1xuICAgIH1cblxuICAgIHJldHVybiByZXM7XG59XG5cbmZ1bmN0aW9uIGNvbXB1dGVSMShwcm9vZiwgY2hhbGxlbmdlcywgcm9vdHMsIHBpLCBjdXJ2ZSwgbG9nZ2VyKSB7XG4gICAgY29uc3QgRnIgPSBjdXJ2ZS5GcjtcblxuICAgIGNvbnN0IExpID0gY29tcHV0ZUxhZ3JhbmdlTGlTaShyb290cy5TMS5oMXc0LCBjaGFsbGVuZ2VzLnksIGNoYWxsZW5nZXMueGksIGN1cnZlKTtcblxuICAgIC8vIHIxKHkpID0g4oiRXzFeNCBDXzEoaF8xIM+JXzRee2ktMX0pIExfaSh5KS4gVG8gdGhpcyBlbmQgd2UgbmVlZCB0byBjb21wdXRlXG4gICAgLy8gWjEgPSB7QzEoaF8xfSwgQzEoaF8xIM+JXzQpLCBDMShoXzEgz4lfNF4yKSwgQzEoaF8xIM+JXzReMyl9XG4gICAgLy8gd2hlcmUgQ18xKGhfMSDPiV80XntpLTF9KSA9IGV2YWwuYSArIGhfMSDPiV80XmkgZXZhbC5iICsgKGhfMSDPiV80XmkpXjIgZXZhbC5jICsgKGhfMSDPiV80XmkpXjMgVDAoeGkpLFxuICAgIC8vIHdoZXJlIFQwKHhpKSA9IFsgcUzCt2EgKyBxUsK3YiArIHFNwrdhwrdiICsgcU/Ct2MgKyBxQyArIFBJKHhpKSBdIC8gWl9IKHhpKVxuXG4gICAgLy8gQ29tcHV0ZSBUMCh4aSlcbiAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhcIsK3wrfCtyBDb21wdXRpbmcgVDAoeGkpXCIpO1xuICAgIGxldCB0MCA9IEZyLm11bChwcm9vZi5ldmFsdWF0aW9ucy5xbCwgcHJvb2YuZXZhbHVhdGlvbnMuYSk7XG4gICAgdDAgPSBGci5hZGQodDAsIEZyLm11bChwcm9vZi5ldmFsdWF0aW9ucy5xciwgcHJvb2YuZXZhbHVhdGlvbnMuYikpO1xuICAgIHQwID0gRnIuYWRkKHQwLCBGci5tdWwocHJvb2YuZXZhbHVhdGlvbnMucW0sIEZyLm11bChwcm9vZi5ldmFsdWF0aW9ucy5hLCBwcm9vZi5ldmFsdWF0aW9ucy5iKSkpO1xuICAgIHQwID0gRnIuYWRkKHQwLCBGci5tdWwocHJvb2YuZXZhbHVhdGlvbnMucW8sIHByb29mLmV2YWx1YXRpb25zLmMpKTtcbiAgICB0MCA9IEZyLmFkZCh0MCwgcHJvb2YuZXZhbHVhdGlvbnMucWMpO1xuICAgIHQwID0gRnIuYWRkKHQwLCBwaSk7XG4gICAgdDAgPSBGci5tdWwodDAsIGNoYWxsZW5nZXMuaW52emgpO1xuXG4gICAgLy8gQ29tcHV0ZSB0aGUgNCBDMSB2YWx1ZXNcbiAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhcIsK3wrfCtyBDb21wdXRpbmcgQzEoaF8xz4lfNF5pKSB2YWx1ZXNcIik7XG5cbiAgICBsZXQgcmVzID0gRnIuemVybztcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IDQ7IGkrKykge1xuICAgICAgICBsZXQgYzEgPSBwcm9vZi5ldmFsdWF0aW9ucy5hO1xuICAgICAgICBjMSA9IEZyLmFkZChjMSwgRnIubXVsKHJvb3RzLlMxLmgxdzRbaV0sIHByb29mLmV2YWx1YXRpb25zLmIpKTtcbiAgICAgICAgY29uc3QgaDF3NFNxdWFyZWQgPSBGci5zcXVhcmUocm9vdHMuUzEuaDF3NFtpXSk7XG4gICAgICAgIGMxID0gRnIuYWRkKGMxLCBGci5tdWwoaDF3NFNxdWFyZWQsIHByb29mLmV2YWx1YXRpb25zLmMpKTtcbiAgICAgICAgYzEgPSBGci5hZGQoYzEsIEZyLm11bChGci5tdWwoaDF3NFNxdWFyZWQsIHJvb3RzLlMxLmgxdzRbaV0pLCB0MCkpO1xuXG4gICAgICAgIHJlcyA9IEZyLmFkZChyZXMsIEZyLm11bChjMSwgTGlbaV0pKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzO1xufVxuXG5mdW5jdGlvbiBjb21wdXRlUjIocHJvb2YsIGNoYWxsZW5nZXMsIHJvb3RzLCBsYWdyYW5nZTEsIHZrLCBjdXJ2ZSwgbG9nZ2VyKSB7XG4gICAgY29uc3QgRnIgPSBjdXJ2ZS5GcjtcblxuICAgIGNvbnN0IExpUzIgPSBjb21wdXRlTGFncmFuZ2VMaVMyKFtyb290cy5TMi5oMnczLCByb290cy5TMi5oM3czXSwgY2hhbGxlbmdlcy55LCBjaGFsbGVuZ2VzLnhpLCBjaGFsbGVuZ2VzLnhpdywgY3VydmUpO1xuXG4gICAgLy8gcjIoeSkgPSDiiJFfMV4zIENfMihoXzIgz4lfM157aS0xfSkgTF9pKHkpICsg4oiRXzFeMyBDXzIoaF8zIM+JXzNee2ktMX0pIExfe2krM30oeSkuIFRvIHRoaXMgZW5kIHdlIG5lZWQgdG8gY29tcHV0ZVxuICAgIC8vIFoyID0ge1tDMihoXzJ9LCBDMihoXzIgz4lfMyksIEMyKGhfMiDPiV8zXjIpXSwgW0MyKGhfM30sIEMyKGhfMyDPiV8zKSwgQzIoaF8zIM+JXzNeMildfVxuICAgIC8vIHdoZXJlIENfMihoXzIgz4lfM157aS0xfSkgPSBldmFsLnogKyBoXzIgz4lfMl5pIFQxKHhpKSArIChoXzIgz4lfM15pKV4yIFQyKHhpKSxcbiAgICAvLyB3aGVyZSBDXzIoaF8zIM+JXzNee2ktMX0pID0gZXZhbC56ICsgaF8zIM+JXzJeaSBUMSh4aSkgKyAoaF8zIM+JXzNeaSleMiBUMih4aSksXG4gICAgLy8gd2hlcmUgVDEoeGkpID0gWyBMXzEoeGkpKHotMSldIC8gWl9IKHhpKVxuICAgIC8vIGFuZCBUMih4aSkgPSBbICAoYSArIGJldGHCt3hpICsgZ2FtbWEpKGIgKyBiZXRhwrd4acK3azEgKyBnYW1tYSkoYyArIGJldGHCt3hpwrdrMiArIGdhbW1hKXpcbiAgICAvLyAgICAgICAgICAgICAgIC0gKGEgKyBiZXRhwrdzaWdtYTEgKyBnYW1tYSkoYiArIGJldGHCt3NpZ21hMiArIGdhbW1hKShjICsgYmV0YcK3c2lnbWEzICsgZ2FtbWEpes+JICBdIC8gWl9IKHhpKVxuXG4gICAgLy8gQ29tcHV0ZSBUMSh4aSlcbiAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhcIsK3wrfCtyBDb21wdXRpbmcgVDEoeGkpXCIpO1xuICAgIGxldCB0MSA9IEZyLnN1Yihwcm9vZi5ldmFsdWF0aW9ucy56LCBGci5vbmUpO1xuICAgIHQxID0gRnIubXVsKHQxLCBsYWdyYW5nZTEpO1xuICAgIHQxID0gRnIubXVsKHQxLCBjaGFsbGVuZ2VzLmludnpoKTtcblxuICAgIC8vIENvbXB1dGUgVDIoeGkpXG4gICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oXCLCt8K3wrcgQ29tcHV0aW5nIFQyKHhpKVwiKTtcbiAgICBjb25zdCBiZXRheGkgPSBGci5tdWwoY2hhbGxlbmdlcy5iZXRhLCBjaGFsbGVuZ2VzLnhpKTtcbiAgICBjb25zdCB0MjExID0gRnIuYWRkKHByb29mLmV2YWx1YXRpb25zLmEsIEZyLmFkZChiZXRheGksIGNoYWxsZW5nZXMuZ2FtbWEpKTtcbiAgICBjb25zdCB0MjEyID0gRnIuYWRkKHByb29mLmV2YWx1YXRpb25zLmIsIEZyLmFkZChGci5tdWwoYmV0YXhpLCB2ay5rMSksIGNoYWxsZW5nZXMuZ2FtbWEpKTtcbiAgICBjb25zdCB0MjEzID0gRnIuYWRkKHByb29mLmV2YWx1YXRpb25zLmMsIEZyLmFkZChGci5tdWwoYmV0YXhpLCB2ay5rMiksIGNoYWxsZW5nZXMuZ2FtbWEpKTtcbiAgICBjb25zdCB0MjEgPSBGci5tdWwodDIxMSwgRnIubXVsKHQyMTIsIEZyLm11bCh0MjEzLCBwcm9vZi5ldmFsdWF0aW9ucy56KSkpO1xuXG4gICAgY29uc3QgdDIyMSA9IEZyLmFkZChwcm9vZi5ldmFsdWF0aW9ucy5hLCBGci5hZGQoRnIubXVsKGNoYWxsZW5nZXMuYmV0YSwgcHJvb2YuZXZhbHVhdGlvbnMuczEpLCBjaGFsbGVuZ2VzLmdhbW1hKSk7XG4gICAgY29uc3QgdDIyMiA9IEZyLmFkZChwcm9vZi5ldmFsdWF0aW9ucy5iLCBGci5hZGQoRnIubXVsKGNoYWxsZW5nZXMuYmV0YSwgcHJvb2YuZXZhbHVhdGlvbnMuczIpLCBjaGFsbGVuZ2VzLmdhbW1hKSk7XG4gICAgY29uc3QgdDIyMyA9IEZyLmFkZChwcm9vZi5ldmFsdWF0aW9ucy5jLCBGci5hZGQoRnIubXVsKGNoYWxsZW5nZXMuYmV0YSwgcHJvb2YuZXZhbHVhdGlvbnMuczMpLCBjaGFsbGVuZ2VzLmdhbW1hKSk7XG4gICAgY29uc3QgdDIyID0gRnIubXVsKHQyMjEsIEZyLm11bCh0MjIyLCBGci5tdWwodDIyMywgcHJvb2YuZXZhbHVhdGlvbnMuencpKSk7XG5cbiAgICBsZXQgdDIgPSBGci5zdWIodDIxLCB0MjIpO1xuICAgIHQyID0gRnIubXVsKHQyLCBjaGFsbGVuZ2VzLmludnpoKTtcblxuICAgIC8vIENvbXB1dGUgdGhlIDYgQzIgdmFsdWVzXG4gICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oXCLCt8K3wrcgQ29tcHV0aW5nIEMyKGhfMs+JXzNeaSkgdmFsdWVzXCIpO1xuICAgIGxldCByZXMgPSBGci56ZXJvO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMzsgaSsrKSB7XG4gICAgICAgIGxldCBjMiA9IEZyLmFkZChwcm9vZi5ldmFsdWF0aW9ucy56LCBGci5tdWwocm9vdHMuUzIuaDJ3M1tpXSwgdDEpKTtcbiAgICAgICAgYzIgPSBGci5hZGQoYzIsIEZyLm11bChGci5zcXVhcmUocm9vdHMuUzIuaDJ3M1tpXSksIHQyKSk7XG5cbiAgICAgICAgcmVzID0gRnIuYWRkKHJlcywgRnIubXVsKGMyLCBMaVMyW2ldKSk7XG4gICAgfVxuXG4gICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oXCLCt8K3wrcgQ29tcHV0aW5nIEMyKGhfM8+JXzNeaSkgdmFsdWVzXCIpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMzsgaSsrKSB7XG4gICAgICAgIGxldCBjMiA9IEZyLmFkZChwcm9vZi5ldmFsdWF0aW9ucy56dywgRnIubXVsKHJvb3RzLlMyLmgzdzNbaV0sIHByb29mLmV2YWx1YXRpb25zLnQxdykpO1xuICAgICAgICBjMiA9IEZyLmFkZChjMiwgRnIubXVsKEZyLnNxdWFyZShyb290cy5TMi5oM3czW2ldKSwgcHJvb2YuZXZhbHVhdGlvbnMudDJ3KSk7XG5cbiAgICAgICAgcmVzID0gRnIuYWRkKHJlcywgRnIubXVsKGMyLCBMaVMyW2kgKyAzXSkpO1xuICAgIH1cblxuICAgIHJldHVybiByZXM7XG59XG5cbmZ1bmN0aW9uIGNvbXB1dGVGKGN1cnZlLCBwcm9vZiwgdmssIGNoYWxsZW5nZXMsIHJvb3RzKSB7XG4gICAgY29uc3QgRzEgPSBjdXJ2ZS5HMTtcbiAgICBjb25zdCBGciA9IGN1cnZlLkZyO1xuXG4gICAgbGV0IG11bEgwID0gRnIuc3ViKGNoYWxsZW5nZXMueSwgcm9vdHMuUzAuaDB3OFswXSk7XG4gICAgZm9yIChsZXQgaSA9IDE7IGkgPCA4OyBpKyspIHtcbiAgICAgICAgbXVsSDAgPSBGci5tdWwobXVsSDAsIEZyLnN1YihjaGFsbGVuZ2VzLnksIHJvb3RzLlMwLmgwdzhbaV0pKTtcbiAgICB9XG5cbiAgICBjaGFsbGVuZ2VzLnRlbXAgPSBtdWxIMDtcblxuICAgIGxldCBtdWxIMSA9IEZyLnN1YihjaGFsbGVuZ2VzLnksIHJvb3RzLlMxLmgxdzRbMF0pO1xuICAgIGZvciAobGV0IGkgPSAxOyBpIDwgNDsgaSsrKSB7XG4gICAgICAgIG11bEgxID0gRnIubXVsKG11bEgxLCBGci5zdWIoY2hhbGxlbmdlcy55LCByb290cy5TMS5oMXc0W2ldKSk7XG4gICAgfVxuXG4gICAgbGV0IG11bEgyID0gRnIuc3ViKGNoYWxsZW5nZXMueSwgcm9vdHMuUzIuaDJ3M1swXSk7XG4gICAgZm9yIChsZXQgaSA9IDE7IGkgPCAzOyBpKyspIHtcbiAgICAgICAgbXVsSDIgPSBGci5tdWwobXVsSDIsIEZyLnN1YihjaGFsbGVuZ2VzLnksIHJvb3RzLlMyLmgydzNbaV0pKTtcbiAgICB9XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCAzOyBpKyspIHtcbiAgICAgICAgbXVsSDIgPSBGci5tdWwobXVsSDIsIEZyLnN1YihjaGFsbGVuZ2VzLnksIHJvb3RzLlMyLmgzdzNbaV0pKTtcbiAgICB9XG5cbiAgICBjaGFsbGVuZ2VzLnF1b3RpZW50MSA9IEZyLm11bChjaGFsbGVuZ2VzLmFscGhhLCBGci5kaXYobXVsSDAsIG11bEgxKSk7XG4gICAgY2hhbGxlbmdlcy5xdW90aWVudDIgPSBGci5tdWwoRnIuc3F1YXJlKGNoYWxsZW5nZXMuYWxwaGEpLCBGci5kaXYobXVsSDAsIG11bEgyKSk7XG5cbiAgICBsZXQgRjIgPSBHMS50aW1lc0ZyKHByb29mLnBvbHlub21pYWxzLkMxLCBjaGFsbGVuZ2VzLnF1b3RpZW50MSk7XG4gICAgbGV0IEYzID0gRzEudGltZXNGcihwcm9vZi5wb2x5bm9taWFscy5DMiwgY2hhbGxlbmdlcy5xdW90aWVudDIpO1xuXG4gICAgcmV0dXJuIEcxLmFkZCh2ay5DMCwgRzEuYWRkKEYyLCBGMykpO1xufVxuXG5mdW5jdGlvbiBjb21wdXRlRShjdXJ2ZSwgcHJvb2YsIGNoYWxsZW5nZXMsIHZrLCByMCwgcjEsIHIyKSB7XG4gICAgY29uc3QgRzEgPSBjdXJ2ZS5HMTtcbiAgICBjb25zdCBGciA9IGN1cnZlLkZyO1xuXG4gICAgbGV0IEUyID0gRnIubXVsKHIxLCBjaGFsbGVuZ2VzLnF1b3RpZW50MSk7XG4gICAgbGV0IEUzID0gRnIubXVsKHIyLCBjaGFsbGVuZ2VzLnF1b3RpZW50Mik7XG5cbiAgICByZXR1cm4gRzEudGltZXNGcihHMS5vbmUsIEZyLmFkZChyMCwgRnIuYWRkKEUyLCBFMykpKTtcbn1cblxuZnVuY3Rpb24gY29tcHV0ZUooY3VydmUsIHByb29mLCBjaGFsbGVuZ2VzKSB7XG4gICAgY29uc3QgRzEgPSBjdXJ2ZS5HMTtcblxuICAgIHJldHVybiBHMS50aW1lc0ZyKHByb29mLnBvbHlub21pYWxzLlcxLCBjaGFsbGVuZ2VzLnRlbXApO1xufVxuXG5hc3luYyBmdW5jdGlvbiBpc1ZhbGlkUGFpcmluZyhjdXJ2ZSwgcHJvb2YsIGNoYWxsZW5nZXMsIHZrLCBGLCBFLCBKKSB7XG4gICAgY29uc3QgRzEgPSBjdXJ2ZS5HMTtcblxuICAgIGxldCBBMSA9IEcxLnRpbWVzRnIocHJvb2YucG9seW5vbWlhbHMuVzIsIGNoYWxsZW5nZXMueSk7XG4gICAgQTEgPSBHMS5hZGQoRzEuc3ViKEcxLnN1YihGLCBFKSwgSiksIEExKTtcbiAgICBjb25zdCBBMiA9IGN1cnZlLkcyLm9uZTtcblxuICAgIGNvbnN0IEIxID0gcHJvb2YucG9seW5vbWlhbHMuVzI7XG4gICAgY29uc3QgQjIgPSB2ay5YXzI7XG5cbiAgICByZXR1cm4gYXdhaXQgY3VydmUucGFpcmluZ0VxKEcxLm5lZyhBMSksIEEyLCBCMSwgQjIpO1xufVxuXG5cbmV4cG9ydCBmdW5jdGlvbiBjb21wdXRlTGFncmFuZ2VMaVNpKHJvb3RzLCB4LCB4aSwgY3VydmUpIHtcbiAgICBjb25zdCBGciA9IGN1cnZlLkZyO1xuICAgIGNvbnN0IGxlbiA9IHJvb3RzLmxlbmd0aDtcblxuICAgIGNvbnN0IG51bSA9IEZyLnN1YihGci5leHAoeCwgbGVuKSwgeGkpO1xuICAgIGNvbnN0IGRlbjEgPSBGci5tdWwoRnIuZShsZW4pLCBGci5leHAocm9vdHNbMF0sIGxlbiAtIDIpKTtcblxuICAgIGNvbnN0IExpID0gW107XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgICAgICBjb25zdCBkZW4yID0gcm9vdHNbKChsZW4gLSAxKSAqIGkpICUgbGVuXTtcbiAgICAgICAgY29uc3QgZGVuMyA9IEZyLnN1Yih4LCByb290c1tpXSk7XG5cbiAgICAgICAgTGlbaV0gPSBGci5kaXYobnVtLCBGci5tdWwoRnIubXVsKGRlbjEsIGRlbjIpLCBkZW4zKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIExpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY29tcHV0ZUxhZ3JhbmdlTGlTMihyb290cywgdmFsdWUsIHhpMCwgeGkxLCBjdXJ2ZSkge1xuICAgIGNvbnN0IEZyID0gY3VydmUuRnI7XG5cbiAgICBjb25zdCBMaSA9IFtdO1xuXG4gICAgY29uc3QgbGVuID0gcm9vdHNbMF0ubGVuZ3RoO1xuICAgIGNvbnN0IG4gPSBsZW4gKiByb290cy5sZW5ndGg7XG5cbiAgICBjb25zdCBudW0xID0gRnIuZXhwKHZhbHVlLCBuKTtcbiAgICBjb25zdCBudW0yID0gRnIubXVsKEZyLmFkZCh4aTAsIHhpMSksIEZyLmV4cCh2YWx1ZSwgbGVuKSk7XG4gICAgY29uc3QgbnVtMyA9IEZyLm11bCh4aTAsIHhpMSk7XG4gICAgY29uc3QgbnVtID0gRnIuYWRkKEZyLnN1YihudW0xLCBudW0yKSwgbnVtMyk7XG5cbiAgICBsZXQgZGVuMSA9IEZyLm11bChGci5tdWwoRnIuZShsZW4pLCByb290c1swXVswXSksIEZyLnN1Yih4aTAsIHhpMSkpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgICAgY29uc3QgZGVuMiA9IHJvb3RzWzBdWyhsZW4gLSAxKSAqIGkgJSBsZW5dO1xuICAgICAgICBjb25zdCBkZW4zID0gRnIuc3ViKHZhbHVlLCByb290c1swXVtpXSk7XG5cbiAgICAgICAgY29uc3QgZGVuID0gRnIubXVsKGRlbjEsRnIubXVsKGRlbjIsIGRlbjMpKTtcblxuICAgICAgICBMaVtpXSA9IEZyLmRpdihudW0sIGRlbik7XG4gICAgfVxuXG4gICAgZGVuMSA9IEZyLm11bChGci5tdWwoRnIuZShsZW4pLCByb290c1sxXVswXSksIEZyLnN1Yih4aTEsIHhpMCkpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgICAgY29uc3QgZGVuMiA9IHJvb3RzWzFdWyhsZW4gLSAxKSAqIGkgJSBsZW5dO1xuICAgICAgICBjb25zdCBkZW4zID0gRnIuc3ViKHZhbHVlLCByb290c1sxXVtpXSk7XG5cbiAgICAgICAgY29uc3QgZGVuID0gRnIubXVsKGRlbjEsRnIubXVsKGRlbjIsIGRlbjMpKTtcblxuICAgICAgICBMaVtpICsgbGVuXSA9IEZyLmRpdihudW0sIGRlbik7XG4gICAgfVxuXG4gICAgcmV0dXJuIExpO1xufVxuIiwiLypcbiAgICBDb3B5cmlnaHQgMjAyMSAwS0lNUyBhc3NvY2lhdGlvbi5cblxuICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHNuYXJrSlMuXG5cbiAgICBzbmFya0pTIGlzIGEgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdFxuICAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3JcbiAgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuXG4gICAgc25hcmtKUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVFxuICAgIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWVxuICAgIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpY1xuICAgIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cblxuICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gICAgYWxvbmcgd2l0aCBzbmFya0pTLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuKi9cblxuaW1wb3J0IHtnZXRDdXJ2ZUZyb21OYW1lfSBmcm9tIFwiLi9jdXJ2ZXMuanNcIjtcbmltcG9ydCB7dXRpbHN9IGZyb20gXCJmZmphdmFzY3JpcHRcIjtcblxuY29uc3Qge3Vuc3RyaW5naWZ5QmlnSW50c30gPSB1dGlscztcblxuZnVuY3Rpb24gaTJoZXgoaSkge1xuICAgIHJldHVybiAoXCIwXCIgKyBpLnRvU3RyaW5nKDE2KSkuc2xpY2UoLTIpO1xufVxuXG5mdW5jdGlvbiBwMjU2KG4pIHtcbiAgICBsZXQgbnN0ciA9IG4udG9TdHJpbmcoMTYpO1xuICAgIHdoaWxlIChuc3RyLmxlbmd0aCA8IDY0KSBuc3RyID0gXCIwXCIgKyBuc3RyO1xuICAgIG5zdHIgPSBgMHgke25zdHJ9YDtcbiAgICByZXR1cm4gbnN0cjtcbn1cblxuZXhwb3J0IGRlZmF1bHQgYXN5bmMgZnVuY3Rpb24gZmZsb25rRXhwb3J0Q2FsbERhdGEoX3B1YiwgX3Byb29mKSB7XG4gICAgY29uc3QgcHJvb2YgPSB1bnN0cmluZ2lmeUJpZ0ludHMoX3Byb29mKTtcbiAgICBjb25zdCBwdWIgPSB1bnN0cmluZ2lmeUJpZ0ludHMoX3B1Yik7XG5cbiAgICBjb25zdCBjdXJ2ZSA9IGF3YWl0IGdldEN1cnZlRnJvbU5hbWUocHJvb2YuY3VydmUpO1xuICAgIGNvbnN0IEcxID0gY3VydmUuRzE7XG4gICAgY29uc3QgRnIgPSBjdXJ2ZS5GcjtcblxuICAgIGxldCBpbnB1dHMgPSBcIlwiO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcHViLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGlmIChpbnB1dHMgIT09IFwiXCIpIGlucHV0cyA9IGlucHV0cyArIFwiLFwiO1xuICAgICAgICBpbnB1dHMgPSBpbnB1dHMgKyBwMjU2KHB1YltpXSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGBbJHtwMjU2KHByb29mLnBvbHlub21pYWxzLkMxWzBdKX0sICR7cDI1Nihwcm9vZi5wb2x5bm9taWFscy5DMVsxXSl9LGAgK1xuICAgIGAke3AyNTYocHJvb2YucG9seW5vbWlhbHMuQzJbMF0pfSwke3AyNTYocHJvb2YucG9seW5vbWlhbHMuQzJbMV0pfSxgICtcbiAgICBgJHtwMjU2KHByb29mLnBvbHlub21pYWxzLlcxWzBdKX0sJHtwMjU2KHByb29mLnBvbHlub21pYWxzLlcxWzFdKX0sYCArXG4gICAgYCR7cDI1Nihwcm9vZi5wb2x5bm9taWFscy5XMlswXSl9LCR7cDI1Nihwcm9vZi5wb2x5bm9taWFscy5XMlsxXSl9LGAgK1xuICAgIGAke3AyNTYocHJvb2YuZXZhbHVhdGlvbnMucWwpfSwke3AyNTYocHJvb2YuZXZhbHVhdGlvbnMucXIpfSwke3AyNTYocHJvb2YuZXZhbHVhdGlvbnMucW0pfSxgICtcbiAgICBgJHtwMjU2KHByb29mLmV2YWx1YXRpb25zLnFvKX0sJHtwMjU2KHByb29mLmV2YWx1YXRpb25zLnFjKX0sJHtwMjU2KHByb29mLmV2YWx1YXRpb25zLnMxKX0sYCArXG4gICAgYCR7cDI1Nihwcm9vZi5ldmFsdWF0aW9ucy5zMil9LCR7cDI1Nihwcm9vZi5ldmFsdWF0aW9ucy5zMyl9LCR7cDI1Nihwcm9vZi5ldmFsdWF0aW9ucy5hKX0sYCArXG4gICAgYCR7cDI1Nihwcm9vZi5ldmFsdWF0aW9ucy5iKX0sJHtwMjU2KHByb29mLmV2YWx1YXRpb25zLmMpfSwke3AyNTYocHJvb2YuZXZhbHVhdGlvbnMueil9LGAgK1xuICAgIGAke3AyNTYocHJvb2YuZXZhbHVhdGlvbnMuencpfSwke3AyNTYocHJvb2YuZXZhbHVhdGlvbnMudDF3KX0sJHtwMjU2KHByb29mLmV2YWx1YXRpb25zLnQydyl9LGAgK1xuICAgIGAke3AyNTYocHJvb2YuZXZhbHVhdGlvbnMuaW52KX1dLGAgK1xuICAgIGBbJHtpbnB1dHN9XWA7XG59XG4iLCIvKlxuICAgIENvcHlyaWdodCAyMDIyIGlkZW4zIGFzc29jaWF0aW9uLlxuXG4gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2Ygc25hcmtqcy5cblxuICAgIHNuYXJranMgaXMgYSBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3JcbiAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlXG4gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pXG4gICAgYW55IGxhdGVyIHZlcnNpb24uXG5cbiAgICBzbmFya2pzIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZXG4gICAgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yXG4gICAgbW9yZSBkZXRhaWxzLlxuXG4gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcgd2l0aFxuICAgIHNuYXJranMuIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXG4qL1xuXG5leHBvcnQgeyBkZWZhdWx0IGFzIHNldHVwIH0gZnJvbSBcIi4vZmZsb25rX3NldHVwLmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHByb3ZlIH0gZnJvbSBcIi4vZmZsb25rX3Byb3ZlLmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGZ1bGxQcm92ZSB9IGZyb20gXCIuL2ZmbG9ua19mdWxsX3Byb3ZlLmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHZlcmlmeSB9IGZyb20gXCIuL2ZmbG9ua192ZXJpZnkuanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgZXhwb3J0U29saWRpdHlWZXJpZmllciB9IGZyb20gXCIuL2ZmbG9ua19leHBvcnRfc29saWRpdHlfdmVyaWZpZXIuanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgZXhwb3J0U29saWRpdHlDYWxsRGF0YSB9IGZyb20gXCIuL2ZmbG9ua19leHBvcnRfY2FsbGRhdGEuanNcIjtcbiJdLCJuYW1lcyI6WyJ0b1N0cmluZyIsImdldFJhbmRvbUJ5dGVzIiwic3RyaW5naWZ5QmlnSW50cyIsInVuc3RyaW5naWZ5QmlnSW50cyIsImxvZzIiLCJQQUdFX1NJWkUiLCJibHMxMjM4MXIiLCJibjEyOHIiLCJnZXRDdXJ2ZUZyb21SIiwiY3JlYXRlTmV3IiwicmVhZEV4aXN0aW5nIiwidG1wQnVmZjMyIiwidG1wQnVmZjMydiIsInRtcEJ1ZmY2NCIsInRtcEJ1ZmY2NHYiLCJtZW1GaWxlLmNyZWF0ZU5ldyIsImJpZ01lbUZpbGUuY3JlYXRlTmV3IiwibWVtRmlsZS5yZWFkRXhpc3RpbmciLCJiaWdNZW1GaWxlLnJlYWRFeGlzdGluZyIsImZhc3RGaWxlLnJlYWRFeGlzdGluZyIsImZhc3RGaWxlLmNyZWF0ZU92ZXJyaWRlIiwiYXNzZXJ0IiwiYnl0ZUxlbmd0aCIsIndyaXRlIiwiYXNjaWkiLCJyZXF1aXJlJCQwIiwiYmFzZTY0IiwicmVxdWlyZSQkMSIsImhleCIsInJlcXVpcmUkJDIiLCJ1dGY4IiwicmVxdWlyZSQkMyIsInV0ZjE2bGUiLCJyZXF1aXJlJCQ0IiwiYmxha2UyYldhc21Nb2R1bGUiLCJibGFrZTJiV2FzbSIsIkJsYWtlMmIiLCJzYW1lUmF0aW8iLCJiaW5GaWxlVXRpbHMuc3RhcnRXcml0ZVNlY3Rpb24iLCJiaW5GaWxlVXRpbHMuZW5kV3JpdGVTZWN0aW9uIiwiZ2V0Q3VydmUiLCJiaW5GaWxlVXRpbHMud3JpdGVCaWdJbnQiLCJyZWFkSGVhZGVyIiwiYmluRmlsZVV0aWxzLnN0YXJ0UmVhZFVuaXF1ZVNlY3Rpb24iLCJiaW5GaWxlVXRpbHMuZW5kUmVhZFNlY3Rpb24iLCJiaW5GaWxlVXRpbHMucmVhZEJpZ0ludCIsImJpbkZpbGVVdGlscy5yZWFkQmluRmlsZSIsIkYxRmllbGQiLCJyZWFkQ29udHJpYnV0aW9uIiwid3JpdGVDb250cmlidXRpb24iLCJ3dG5zVXRpbHMucmVhZEhlYWRlciIsInprZXlVdGlscy5yZWFkSGVhZGVyIiwiYmluRmlsZVV0aWxzLnJlYWRTZWN0aW9uIiwiV2l0bmVzc0NhbGN1bGF0b3JCdWlsZGVyIiwiYmluRmlsZVV0aWxzLmNyZWF0ZUJpbkZpbGUiLCJ3dG5zVXRpbHMud3JpdGVCaW4iLCJ3dG5zX2NhbGN1bGF0ZSIsImdyb3RoMTZfcHJvdmUiLCJjdXJ2ZXMuZ2V0Q3VydmVGcm9tTmFtZSIsInB1YmxpY0lucHV0c0FyZVZhbGlkIiwiaXNXZWxsQ29uc3RydWN0ZWQiLCJwMjU2IiwiYmxha2UyYiIsIm1pc2Mucm5nRnJvbUJlYWNvblBhcmFtcyIsImtleVBhaXIuY3JlYXRlUFRhdUtleSIsInB0YXVVdGlscy53cml0ZVBUYXVIZWFkZXIiLCJwdGF1VXRpbHMuY2FsY3VsYXRlRmlyc3RDaGFsbGVuZ2VIYXNoIiwibWlzYy5mb3JtYXRIYXNoIiwidXRpbHMucmVhZFBUYXVIZWFkZXIiLCJ1dGlscy5yZWFkQ29udHJpYnV0aW9ucyIsInV0aWxzLmNhbGN1bGF0ZUZpcnN0Q2hhbGxlbmdlSGFzaCIsIm1pc2MuaGFzaElzRXF1YWwiLCJ1dGlscy53cml0ZVBUYXVIZWFkZXIiLCJ1dGlscy5mcm9tUHRhdVB1YktleVJwciIsInV0aWxzLndyaXRlQ29udHJpYnV0aW9ucyIsIm1pc2Muc2FtZVJhdGlvIiwidXRpbHMua2V5RnJvbUJlYWNvbiIsImtleVBhaXIuZ2V0RzJzcCIsInV0aWxzLnRvUHRhdVB1YktleVJwciIsIm1pc2MuYnl0ZUFycmF5MmhleCIsIm1pc2MuZ2V0UmFuZG9tQnl0ZXMiLCJtaXNjLnJlYWRVSW50MzJCRSIsIm1pc2MuZ2V0UmFuZG9tUm5nIiwiYmVhY29uIiwibWlzYy5oZXgyQnl0ZUFycmF5IiwiYmluRmlsZVV0aWxzLmNvcHlTZWN0aW9uIiwiU1VCQVJSQVlfU0laRSIsIkJpZ0FycmF5SGFuZGxlciIsIl9CaWdBcnJheSIsIkJpZ0FycmF5IiwibG9hZFN5bXMiLCJ3dG5zVXRpbHMud3JpdGUiLCJjdXJ2ZXMuZ2V0Q3VydmVGcm9tUiIsInprZXlVdGlscy5yZWFkTVBDUGFyYW1zIiwiemtleVV0aWxzLndyaXRlSGVhZGVyIiwiemtleVV0aWxzLndyaXRlTVBDUGFyYW1zIiwibWlzYy5jbG9uZUhhc2hlciIsImJpbkZpbGVVdGlscy5zZWN0aW9uSXNFcXVhbCIsInV0aWxzLmhhc2hQdWJLZXkiLCJ1dGlscy5oYXNoRzEiLCJleHBvcnRWZXJpZmljYXRpb25LZXkiLCJmZmxvbmtFeHBvcnRTb2xpZGl0eVZlcmlmaWVyQ21kIiwiZ2xvYmFsIiwicGxvbmtfcHJvdmUiLCJmcm9tT2JqZWN0VmsiLCJjYWxjdWxhdGVQSSIsImlzVmFsaWRQYWlyaW5nIl0sIm1hcHBpbmdzIjoiOzs7SUFBQTtJQUNBLE1BQU0sTUFBTSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDakU7SUFDQSxTQUFTLFVBQVUsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFO0lBQzlCLElBQUksSUFBSSxDQUFDLENBQUMsS0FBSyxJQUFJLEtBQUssRUFBRSxFQUFFLENBQUMsRUFBRTtJQUMvQixRQUFRLE9BQU8sTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3pCLEtBQUssTUFBTSxJQUFJLEtBQUssRUFBRSxFQUFFLEVBQUU7SUFDMUIsUUFBUSxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksRUFBRTtJQUNsQyxZQUFZLE9BQU8sTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzdCLFNBQVMsTUFBTTtJQUNmLFlBQVksT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2xDLFNBQVM7SUFDVCxLQUFLO0lBQ0wsQ0FBQztBQUNEO0lBQ0EsTUFBTSxDQUFDLEdBQUcsVUFBVSxDQUFDO0FBQ3JCO0lBQ0EsU0FBUyxTQUFTLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRTtJQUM3QixJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN2QixJQUFJLEtBQUssR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDMUIsSUFBSSxLQUFLLElBQUksQ0FBQyxDQUFDLENB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SUFDekMsSUFBSSxNQUFNLENBQUMsR0FBRyxJQUFJLFdBQVcsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxVQUFVLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN0RSxJQUFJLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUM1QyxJQUFJLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDM0YsSUFBSSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzVDLElBQUksS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxVQUFVLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDM0YsQ0FBQztBQUNEO0lBQ0E7SUFDQSxTQUFTLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUU7SUFDakMsSUFBSSxNQUFNLENBQUMsR0FBRyxTQUFTLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUN6QyxJQUFJLE1BQU0sQ0FBQyxHQUFHLElBQUksUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLFVBQVUsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDakUsSUFBSSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDNUMsSUFBSSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDbkgsSUFBSSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUMxQyxDQUFDO0FBQ0Q7SUFDQTtJQUNBLFNBQVMsU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFO0lBQ2hDLElBQUksRUFBRSxHQUFHLEVBQUUsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDO0lBQy9CLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDZixJQUFJLE1BQU0sQ0FBQyxHQUFHLElBQUksV0FBVyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLFVBQVUsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3RFLElBQUksTUFBTSxDQUFDLEdBQUcsSUFBSSxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzlCLElBQUksQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO0lBQzdFLElBQUksT0FBTyxVQUFVLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUN0QyxDQUFDO0FBQ0Q7SUFDQTtJQUNBLFNBQVMsU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFO0lBQ2hDLElBQUksRUFBRSxHQUFHLEVBQUUsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDO0lBQy9CLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDZixJQUFJLE1BQU0sQ0FBQyxHQUFHLElBQUksUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLFVBQVUsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDakUsSUFBSSxNQUFNLENBQUMsR0FBRyxJQUFJLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDOUIsSUFBSSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtJQUMvQixRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENB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QUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFO0lBQzVCLFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQzdCLFFBQVEsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDdEMsUUFBUSxFQUFFLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDakQsS0FBSztBQUNMO0lBQ0EsSUFBSSxDQUFDLENBQUMsVUFBVSxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMzQztJQUNBLElBQUksQ0FBQyxDQUFDLElBQUksR0FBRyxTQUFTLENBQUMsRUFBRTtJQUN6QixRQUFRLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQztJQUNyQixRQUFRLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDdkMsUUFBUSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDdkMsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQ3JFLFFBQVEsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsT0FBTyxJQUFJLENBQUM7QUFDNUM7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QUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsRUFBRTtJQUNsQyxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUMvQyxTQUFTLE1BQU07SUFDZixZQUFZLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUM1RCxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUM3QixTQUFTO0lBQ1QsUUFBUSxPQUFPLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMvQyxLQUFLLENBQUM7SUFDTixDQUFDO0FBQ0Q7QUFDQTtJQUNBLFNBQVMsWUFBWSxDQUFDLENBQUMsRUFBRTtJQUN6QixJQUFJLENBQUMsQ0FBQyxJQUFJLEdBQUcsV0FBVztJQUN4QixRQUFRLE1BQU0sSUFBSSxLQUFLLENBQUMsNEJBQTRCLENBQUMsQ0FBQztJQUN0RCxLQUFLLENBQUM7SUFDTixDQUFDO0FBQ0Q7SUFDQSxTQUFTLFlBQVksQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFO0FBQ3RDO0lBQ0EsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNsQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2xDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDNUQ7SUFDQSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2xDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDbEMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxJQUFJLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUMzRDtJQUNBLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDbEMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNsQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ3pEO0lBQ0EsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNsQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2xDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDekQsQ0FBQztBQUNEO0lBQ0EsU0FBUyxXQUFXLENBQUMsRUFBRSxFQUFFO0lBQ3pCLElBQUksWUFBWSxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNqQyxJQUFJLFlBQVksQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDakMsSUFBSSxZQUFZLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2pDLElBQUksWUFBWSxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUNqQztJQUNBLElBQUksWUFBWSxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNqQyxJQUFJLFlBQVksQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDakMsSUFBSSxZQUFZLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2pDLElBQUksWUFBWSxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNqQyxDQUFDO0FBQ0Q7SUFDQSxNQUFNLE1BQU0sQ0FBQztBQUNiO0lBQ0EsSUFBSSxXQUFXLENBQUMsSUFBSSxFQUFFO0lBQ3RCLFFBQVEsSUFBSSxHQUFHLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN6QyxRQUFRLElBQUksQ0FBQyxLQUFLLEdBQUc7SUFDckIsWUFBWSxVQUFVO0lBQ3RCLFlBQVksVUFBVTtJQUN0QixZQUFZLFVBQVU7SUFDdEIsWUFBWSxVQUFVO0lBQ3RCLFlBQVksSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNuQixZQUFZLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDbkIsWUFBWSxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ25CLFlBQVksSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNuQixZQUFZLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDbkIsWUFBWSxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ25CLFlBQVksSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNuQixZQUFZLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDbkIsWUFBWSxDQUFDO0lBQ2IsWUFBWSxDQUFDO0lBQ2IsWUFBWSxDQUFDO0lBQ2IsWUFBWSxDQUFDO0lBQ2IsU0FBUyxDQUFDO0lBQ1YsUUFBUSxJQUFJLENBQUMsR0FBRyxHQUFHLEVBQUUsQ0FBQztJQUN0QixRQUFRLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDbEMsS0FBSztBQUNMO0lBQ0EsSUFBSSxPQUFPLEdBQUc7SUFDZCxRQUFRLElBQUksSUFBSSxDQUFDLEdBQUcsSUFBSSxFQUFFLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQzFDLFFBQVEsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBQ3JDLEtBQUs7QUFDTDtJQUNBLElBQUksT0FBTyxHQUFHO0lBQ2QsUUFBUSxPQUFPLEdBQUcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxFQUFFLFdBQVcsQ0FBQyxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO0lBQ3JFLEtBQUs7QUFDTDtJQUNBLElBQUksUUFBUSxHQUFHO0lBQ2YsUUFBUSxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDekMsS0FBSztBQUNMO0lBQ0EsSUFBSSxNQUFNLEdBQUc7SUFDYjtJQUNBLFFBQVEsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDOUQ7SUFDQTtJQUNBLFFBQVEsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3hEO0lBQ0E7SUFDQSxRQUFRLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDckY7SUFDQSxRQUFRLElBQUksQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDO0FBQ3JC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SUFBSSxDQUFDLENBQUMsTUFBTSxJQUFJLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUNwQyxRQUFRLE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMxQyxRQUFRLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDN0IsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDO0lBQzVCLFFBQVEsSUFBSSxDQUFDLENBQUMsTUFBTSxJQUFJLENBQUMsRUFBRTtJQUMzQixZQUFZLE1BQU0sSUFBSSxLQUFLLENBQUMsNEJBQTRCLENBQUMsQ0FBQztJQUMxRCxTQUFTO0lBQ1QsUUFBUSxNQUFNLEdBQUcsSUFBSSxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2hELFFBQVEsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUN0RSxRQUFRLE1BQU0sSUFBSSxHQUFHLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2xDLFFBQVEsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtJQUNoQyxZQUFZLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDMUQsU0FBUztBQUNUO0lBQ0EsUUFBUSxPQUFPLElBQUksQ0FBQztJQUNwQixLQUFLO0FBQ0w7QUFDQTtJQUNBLENBQUM7QUFDRDtJQUNBLFNBQVMsTUFBTSxFQUFFLENBQUM7SUFDbEI7SUFDQSxJQUFJLFFBQVEsRUFBRSxFQUFFLENBQUMsR0FBRyxVQUFVLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxVQUFVLEVBQUUsRUFBRSxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUMsR0FBRyxVQUFVLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxVQUFVLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxHQUFHLFVBQVUsT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLFVBQVUsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLEdBQUcsVUFBVSxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksVUFBVSxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsR0FBRyxVQUFVLE9BQU8sQ0FBQyxFQUFFLEdBQUc7SUFDNVIsQ0FBQztBQUNEO0FBQ0E7SUFDQSxTQUFTLEtBQUssQ0FBQyxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO0FBQzdDO0lBQ0EsSUFBSSxNQUFNLENBQUMsR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDO0lBQ3hCLElBQUksSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFO0lBQ2QsUUFBUSxPQUFPLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7SUFDaEMsS0FBSyxNQUFNLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRTtJQUNyQixRQUFRLE9BQU87SUFDZixZQUFZLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxDQUFDO0lBQ3ZELFlBQVksRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3pELEtBQUs7QUFDTDtJQUNBLElBQUksTUFBTSxLQUFLLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN6QixJQUFJLE1BQU0sRUFBRSxHQUFHLEtBQUssQ0FBQyxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN2RCxJQUFJLE1BQU0sRUFBRSxHQUFHLEtBQUssQ0FBQyxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDNUQ7SUFDQSxJQUFJLE1BQU0sR0FBRyxHQUFHLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzdCO0lBQ0EsSUFBSSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsRUFBRSxFQUFFO0lBQ2hDLFFBQVEsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN2RSxRQUFRLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzdFLEtBQUs7QUFDTDtJQUNBLElBQUksT0FBTyxHQUFHLENBQUM7SUFDZixDQUFDO0FBQ0Q7SUFDQTtBQUNBO0lBQ0EsTUFBTSxPQUFPLENBQUM7SUFDZCxJQUFJLFdBQVcsQ0FBQyxDQUFDLEVBQUU7SUFDbkIsUUFBUSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztJQUN2QixRQUFRLElBQUksQ0FBQyxHQUFHLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzdCLFFBQVEsSUFBSSxDQUFDLElBQUksR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDOUIsUUFBUSxJQUFJLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMzQixRQUFRLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ25CLFFBQVEsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUM7SUFDdEMsUUFBUSxJQUFJLENBQUMsR0FBRyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM3QixRQUFRLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDO0lBQ3ZDLFFBQVEsSUFBSSxDQUFDLFNBQVMsR0FBRyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzdDLFFBQVEsSUFBSSxDQUFDLElBQUksR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDO0FBQ3BFO0lBQ0EsUUFBUSxJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDM0QsUUFBUSxJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQzlCLFFBQVEsSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUM3QixRQUFRLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDekQsUUFBUSxJQUFJLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ25DO0lBQ0EsUUFBUSxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUM7SUFDMUMsUUFBUSxJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUM7SUFDNUIsUUFBUSxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDdEMsUUFBUSxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFO0lBQ3pDLFlBQVksSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUM7SUFDM0MsWUFBWSxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3RDLFNBQVM7QUFDVDtBQUNBO0lBQ0EsUUFBUSxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNuQixRQUFRLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztBQUM3QjtJQUNBLFFBQVEsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsS0FBSyxJQUFJLENBQUMsSUFBSSxFQUFFO0lBQ2pELFlBQVksSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNoQyxZQUFZLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDO0lBQ3hDLFNBQVM7QUFDVDtJQUNBLFFBQVEsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ25EO0lBQ0EsUUFBUSxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDeEI7SUFDQSxRQUFRLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxHQUFHLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0FBQzVEO0lBQ0EsUUFBUSxJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDL0MsUUFBUSxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDakQsUUFBUSxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQzVCLFFBQVEsSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztJQUM5QjtJQUNBLFFBQVEsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUMzQyxRQUFRLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDL0MsS0FBSztBQUNMO0lBQ0EsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRTtJQUNYLFFBQVEs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QVksT0FBTyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUMvQyxTQUFTO0lBQ1QsS0FBSztBQUNMO0lBQ0EsSUFBSSxNQUFNLEdBQUc7SUFDYixRQUFRLE1BQU0sTUFBTSxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQzlDLFFBQVEsSUFBSSxHQUFHLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQztJQUMzQixRQUFRLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7SUFDckMsWUFBWSxHQUFHLEdBQUcsQ0FBQyxHQUFHLElBQUksTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLE1BQU0sQ0FBQ0EsZ0JBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3BFLFNBQVM7SUFDVCxRQUFRLE9BQU8sR0FBRyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDNUIsS0FBSztBQUNMO0lBQ0EsSUFBSSxRQUFRLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRTtJQUN0QixRQUFRLElBQUksR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDO0lBQzFCLFFBQVEsSUFBSSxFQUFFLENBQUM7SUFDZixRQUFRLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLElBQUksRUFBRSxDQUFDLEVBQUU7SUFDM0MsWUFBWSxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMvQixZQUFZLEVBQUUsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN0QyxTQUFTLE1BQU07SUFDZixZQUFZLEVBQUUsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2xDLFNBQVM7SUFD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QUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNwRCxRQUFRLE1BQU0sSUFBSSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ3JELFFBQVEsTUFBTSxNQUFNLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7QUFDdkQ7QUFDQTtJQUNBLFFBQVEsQ0FBQyxDQUFDLE9BQU87SUFDakI7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztBQUNsRDtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxHQUFHLENBQUM7QUFDbkQ7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsRUFBRSxFQUFFLElBQUksQ0FBQztJQUM3QyxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQztBQUN0RDtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxFQUFFLEVBQUUsTUFBTSxDQUFDO0lBQy9DLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsTUFBTSxDQUFDO0FBQzFEO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQztJQUNyRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLEVBQUUsQ0FBQztBQUN0RDtJQUNBO0lBQ0Es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QU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDekc7SUFDQSxRQUFRLE1BQU0sR0FBRyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztBQUN6RztJQUNBLFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNsQyxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNyRCxRQUFRLE1BQU0sS0FBSyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN4RCxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNyRCxRQUFRLE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3pDLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNwQyxRQUFRLE1BQU0sR0FBRyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDckMsUUFBUSxNQUFNLEdBQUcsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMxQyxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNyRCxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNwRDtJQUNBLFFBQVEsQ0FBQyxDQUFDLE9BQU87QUFDakI7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sRUFBRSxFQUFFLENBQUM7SUFDdkMsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztBQUMzQztJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQztBQUNsRTtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxTQUFTLEVBQUUsRUFBRSxFQUFFLEtBQUssQ0FBQztJQUNqRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQztBQUNwRDtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxZQUFZLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQztJQUNwRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQztBQUNsRDtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFdB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QztJQUM1RCxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQy9CLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDcEMsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLFdBQVcsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUN2QyxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQy9CO0lBQ0EsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsY0FBYyxFQUFFLENBQUM7QUFDckM7SUFDQSxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDbkMsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ2pFLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDbkUsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ25DLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNqRSxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0FBQ25FO0lBQ0EsUUFBUSxDQUFDLENBQUMsT0FBTztJQUNqQixZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLGNBQWMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxFQUFFLEVBQUUsQ0FBQztJQUNuRyxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLGNBQWMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxFQUFFLEVBQUUsQ0FBQztJQUNuRyxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLGNBQWMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxFQUFFLEVBQUUsQ0FBQztJQUNuRyxTQUFTLENBQUM7SUFDVixLQUFLO0FBQ0w7QUFDQTtJQUNBLElBQUksU0FBUyxRQUFRLEdBQUc7SUFDeEIsUUFBUSxNQUFNLENBQUMsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNwRCxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQy9CLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDL0IsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztBQUMvQjtJQUNBLFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLGNBQWMsRUFBRSxDQUFDO0FBQ3JDO0lBQ0EsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ25DLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNqRSxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ25FLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNuQyxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDakUsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNuRSxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDbkMsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ2pFLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7QUFDbkU7SUFDQSxRQUFRLENBQUMsQ0FBQyxPQUFPO0lB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QUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ3BFLFFBQVEsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7QUFDdEU7SUFDQSxRQUFRLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ3BELFFBQVEsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDcEQsUUFBUSxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNwRCxRQUFRLE1BQU0sR0FBRyxHQUFHLEVBQUUsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ3JELFFBQVEsTUFBTSxHQUFHLEdBQUcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDckQsUUFBUSxNQUFNLEdBQUcsR0FBRyxFQUFFLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNyRCxRQUFRLE1BQU0sR0FBRyxHQUFHLEVBQUUsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ3JELFFBQVEsTUFBTSxHQUFHLEdBQUcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDckQsUUFBUSxNQUFNLEdBQUcsR0FBRyxFQUFFLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNyRCxRQUFRLE1BQU0sS0FBSyxHQUFHLEVBQUUsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ3ZELFFBQVEsTUFBTSxLQUFLLEdBQUcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDdkQsUUFBUSxNQUFNLEtBQUssR0FBRyxFQUFFLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUN2RCxRQUFRLE1BQU0sR0FBRyxHQUFHLEVBQUUsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0FBQ3JEO0FBQ0E7SUFDQSxRQUFRLENBQUMsQ0FBQyxPQUFPO0lBQ2pCLFlBQVksRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO0lBQ2pELFlBQVksRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO0lBQ2pELFlBQVksRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO0FBQ2pEO0lBQ0EsWUFBWSxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUM7SUFDbEQsWUFBWSxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUM7SUFDbEQsWUFBWSxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUM7SUFDbEQsWUFBWSxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUM7SUFDbEQsWUFBWSxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUM7SUFDbEQsWUFBWSxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUM7QUFDbEQ7SUFDQSxZQUFZLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEtBQUssQ0FBQztJQUN0RCxZQUFZLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEtBQUssQ0FBQztJQUN0RCxZQUFZLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEtBQUssQ0FBQztBQUN0RDtJQUNBLFlBQVksRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDO0lBQ3JELFlBQVksRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDO0lBQ3RELFlBQVksRUFBRSxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUM1QyxZQUFZLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztBQUNuRDtJQUNBLFlBQVksRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDO0lBQ3JELFlBQVksRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDO0lBQ3RELFlBQVksRUFBRSxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsRUFBRSxFQUFFLEdBQUcsQ0FBQztJQUM3QyxZQUFZLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQztBQUNwRDtJQUNBLFlBQVksRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDO0lBQ3JELFlBQVksRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDO0lBQ3RELFlBQVksRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ25ELFNBQVMsQ0FBQztBQUNWO0lBQ0EsS0FBSztBQUNMO0lBQ0EsSUFBSSxTQUFTLFdBQVcsR0FBRztJQUMzQixRQUFRLE1BQU0sQ0FBQyxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3ZELFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDL0IsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztBQUMvQjtJQUNBLFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLGNBQWMsRUFBRSxDQUFDO0FBQ3JDO0lBQ0EsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2xDLFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNoRSxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ2xFLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNuQyxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDakUsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztBQUNuRTtJQUNBLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDbkQsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNuRCxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ25ELFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDbkQsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNuRCxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ25ELFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7QUFDbkQ7QUFDQTtJQUNBLFFBQVEsQ0FBQyxDQUFDLE9BQU87QUFDakI7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO0lBQ2hELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO0lBQ2hELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0FBQ2xEO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7SUFDaEQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7SUFDakQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztBQUNqRDtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO0lBQ2hELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0FBQ2xEO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztBQUNoRDtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUMzQyxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztBQUNsRDtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUMzQyxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztBQUNsRDtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2xELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2xELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2xELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2xELFNBQVMsQ0FBQztBQUNWO0lBQ0EsS0FBSztBQUNMO0FBQ0E7SUFDQSxJQUFJLFNBQVMsaUJBQWlCLEdBQUc7SUFDakMsUUFBUSxNQUFNLENBQUMsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUM3RCxRQUFRLENBQUMsQ0FBQyxRQUFRLENB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QUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNuRCxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ25ELFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDbkQsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNuRCxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ25ELFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDbkQsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNuRCxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ25ELFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDbkQsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNuRCxRQUFRLE1BQU0sR0FBRyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0FBQ3BEO0lBQ0EsUUFBUSxDQUFDLENBQUMsT0FBTztJQUNqQixZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQy9DLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDL0MsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUMvQyxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNoRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNoRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztBQUNoRDtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUMzQyxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztBQUNoRDtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUMzQyxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztBQUNoRDtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0FBQ2hEO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFN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QztJQUM3QyxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3BDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxVQUFVLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDdEMsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLFlBQVksRUFBRSxLQUFLLENBQUMsQ0FBQztJQUN4QyxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQy9CLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDaEMsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLFdBQVcsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUN2QyxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsU0FBUyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3JDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxVQUFVLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDdEMsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLFdBQVcsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUN2QyxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3BDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDbkMsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUMvQixRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQy9CLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDcEMsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNwQyxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ2pDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxXQUFXLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDdkM7SUFDQSxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxjQUFjLEVBQUUsQ0FBQztBQUNyQztJQUNBLFFBQVEsTUFBTSxHQUFHLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDbkQ7SUFDQSxRQUFRLE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUM7SUFDckMsWUFBWSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRTtJQUM1QyxZQUFZLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFO0lBQzVDLFlBQVksRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUM7SUFDNUMsWUFBWSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQztJQUM1QyxTQUFTLENBQUMsQ0FBQztBQUNYO0lBQ0EsUUFBUSxDQUFDLENBQUMsT0FBTztJQUNqQixZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLE9BQU8sRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3RELFlBQVksQ0FBQyxDQUFDLEVBQUU7SUFDaEIsZ0JBQWdCLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUMxQyxnQkFBZ0IsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7SUFDekIsYUFBYTtJQUNiLFlBQVksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxPQUFPLEVBQUUsQ0FBQztJQUMxRixZQUFZLENBQUMsQ0FBQyxRQUFRO0lBQ3RCLGdCQUFnQixTQUFTO0lBQ3pCLGdCQUFnQixDQUFDLENBQUMsT0FBTztJQUN6QixvQkFBb0IsQ0FBQyxDQUFDLFNBQVM7SUFDL0Isd0JBQXdCLENBQUMsQ0FBQyxPQUFPO0lBQ2pDLDRCQUE0QixDQUFDLENBQUMsT0FBTztJQUNyQyxnQ0FBZ0MsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUM7SUFDeEQsZ0NBQWdDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO0lBQzlDLDZCQUE2QjtJQUM3Qiw0QkFBNEIsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7SUFDMUMseUJBQXlCO0lBQ3pCLHdCQUF3QixDQUFDLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQztJQUMvQyxxQkFBcUI7SUFDckIsb0JBQW9CLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO0lBQ2xDLGlCQUFpQjtJQUNqQixhQUFhO0FBQ2I7QUFDQTtJQUNBO0FBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxRQUFRO0lBQ3RCLGdCQUFnQixPQUFPO0lBQ3ZCLGdCQUFnQixDQUFDLENBQUMsT0FBTztJQUN6QixvQkFBb0IsQ0FBQyxDQUFDLE9BQU87SUFDN0Isd0JBQXdCLENBQUMsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDO0lBQzdDLHdCQUF3QixDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztJQUN0QyxxQkFBcUI7SUFDckIsb0JBQW9CLENBQUMsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDO0lBQzNDLGlCQUFpQjtJQUNqQixhQUFhO0lBQ2IsWUFBWSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJO0lBQzFCLGdCQUFnQixDQUFDLENBQUMsS0FBSztJQUN2QixvQkFBb0IsQ0FBQztJQUNyQixvQkFBb0IsQ0FBQyxDQUFDLFFBQVE7SUFDOUIsd0JBQXdCLENBQUMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDO0lBQzNDLHdCQUF3QixDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztJQUN0QyxxQkFBcUI7SUFDckIsaUJBQWlCO0FBQ2pCO0lBQ0E7SUFDQSxnQkFBZ0IsQ0FBQyxDQUFDLEVBQUU7SUFDcEIsb0JBQW9CLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsU0FBUyxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUMzRSxvQkFBb0I7SUFDcEIsd0JBQXdCLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMxRCx3QkFBd0IsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJO0lBQ3pDLDRCQUE0QixDQUFDLENBQUMsS0FBSztJQUNuQyxnQ0FBZ0MsQ0FBQztJQUNqQyxnQ0FBZ0MsQ0FBQyxDQUFDLE1BQU07SUFDeEMsb0NBQW9DLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDO0lBQ25ELG9DQUFvQyxDQUFDLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQztJQUMzRCxpQ0FBaUM7SUFDakMsNkJBQTZCO0FBQzdCO0lBQ0EsNEJBQTRCLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLFNBQVMsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDMUY7SUFDQSw0QkFBNEIsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN2Riw0QkFBNEIsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDbkMseUJBQXlCLENBQUM7SUFDMUIscUJBQXFCO0lBQ3JCLGlCQUFpQjtBQUNqQjtJQUNBLGdCQUFnQixDQUFDLENBQUMsSUFBSTtJQUN0QixvQkFBb0IsTUFBTSxHQUFHLFFBQVE7SUFDckMsb0JBQW9CLENBQUMsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDO0lBQ3hDLG9CQUFvQixDQUFDLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQztJQUMxQyxvQkFBb0IsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUM7SUFDNUMsb0JBQW9CLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDO0lBQ25DLG9CQUFvQixDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQztJQUN2QyxvQkFBb0IsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUM7SUFDM0Msb0JBQW9CLEdBQUc7SUFDdkIsaUJBQWlCO0FBQ2pCO0lBQ0EsZ0JBQWdCLENBQUMsQ0FBQyxJQUFJO0lBQ3RCLG9CQUFvQixNQUFNLEdBQUcsTUFBTTtJQUNuQyxvQkFBb0IsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUM7SUFDcEMsb0JBQW9CLEdBQUc7SUFDdkIsb0JBQW9CLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDO0lBQ3BDLGlCQUFpQjtJQUNqQixnQkFBZ0IsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztJQUM1RixnQkFBZ0IsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDdkIsYUFBYSxDQUFDO0lBQ2QsU0FBUyxDQUFDO0lBQ1YsS0FBSztBQUNMO0lBQ0EsSUFBSSxTQUFTLGdCQUFnQixHQUFHO0lBQ2hDLFFBQVEsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEdBQUcsY0FBYyxDQUFDLENBQUM7SUFDOUQsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNwQyxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQy9CLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDbEMsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNqQyxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ2pDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDbEM7SUFDQSxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxjQUFjLEVBQUUsQ0FBQztBQUNyQztJQUNBLFFBQVEsQ0FBQyxDQUFDLE9BQU87SUFDakIsWUFBWSxDQUFDLENBQUMsRUFBRTtJQUNoQixnQkFBZ0IsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDekQsZ0JBQWdCLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO0lBQ3pCLGFBQWE7SUFDYixZQUFZLENBQUMsQ0FBQyxRQUFRO0lBQ3RCLGdCQUFnQixNQUFNO0lBQ3RCLGdCQUFnQixDQUFDLENBQUMsT0FBTztJQUN6QixvQkFBb0IsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7SUFDbEMsb0JBQW9CLENBQUMsQ0FBQyxPQUFPO0lBQzdCLHdCQUF3QixDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQztJQUN2Qyx3QkFBd0IsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7SUFDdEMscUJBQXFCO0lBQ3JCLGlCQUFpQjtJQUNqQixhQUFhO0FBQ2I7SUFDQSxZQUFZLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDbkQsWUFBWSxDQUFDLENBQUMsUUFBUTtJQUN0QixnQkFBZ0IsS0FBSztJQUNyQixnQkFBZ0IsQ0FBQyxDQUFDLE9BQU87SUFDekIsb0JBQW9CLENBQUMsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDO0lBQ3hDLG9CQUFvQixDQUFDLENBQUMsT0FBTztJQUM3Qix3QkFBd0IsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUM7SUFDMUMsd0JBQXdCLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDO0lBQ3hDLHFCQUFxQjtJQUNyQixpQkFBaUI7SUFDakIsYUFBYTtJQUNiLFlBQVksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxNQUFNO0lBQzdCLGdCQUFnQixDQUFDLENBQUMsT0FBTztJQUN6QixvQkFBb0IsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUM7SUFDckMsb0JBQW9CLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDO0lBQ3BDLGlCQUFpQjtJQUNqQixhQUFhO0lBQ2IsWUFBWSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJO0lBQzFCLGdCQUFnQixDQUFDLENBQUMsS0FBSztJQUN2QixvQkFBb0IsQ0FBQztJQUNyQixvQkFBb0IsQ0FBQyxDQUFDLE1BQU07SUFDNUIsd0JBQXdCLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDO0lBQ3pDLHdCQUF3QixDQUFDLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQztJQUMxQyxxQkFBcUI7SUFDckIsaUJBQWlCO0lBQ2pCLGdCQUFnQixDQUFDLENBQUMsSUFBSTtJQUN0QixvQkFBb0IsTUFBTSxHQUFHLE1BQU07SUFDbkMsb0JBQW9CLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDO0lBQ3JDLG9CQUFvQixDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQztJQUNyQyxvQkFBb0IsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUM7SUFDckMsaUJBQWlCO0lBQ2pCLGdCQUFnQixDQUFDLENBQUMsSUFBSTtJQUN0QixvQkFBb0IsTUFBTSxHQUFHLE1BQU07SUFDbkMsb0JBQW9CLENBQUMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDO0lBQ3RDLG9CQUFvQixDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQztJQUNyQyxvQkFBb0IsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUM7SUFDdEMsaUJBQWlCO0lBQ2pCLGdCQUFnQixDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ2pGLGdCQUFnQixDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ2pGLGdCQUFnQixDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN2QixhQUFhLENBQUM7QUFDZDtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUk7SUFDbEIsZ0JBQWdCLE1BQU0sR0FBRyxjQUFjO0lBQ3ZDLGdCQUFnQixDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQztJQUNwQyxnQkFBZ0IsQ0FBQyxDQUFDLE9BQU87SUFDekIsb0JBQW9CLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDO0lBQ25DLG9CQUFvQixDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztJQUNsQyxpQkFBaUI7SUFDakIsYUFBYTtBQUNiO0lBQ0EsWUFBWSxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3ZFLFlBQVksQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSTtJQUMxQixnQkFBZ0IsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDdEQsZ0JBQWdCLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLFNBQVMsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDbEYsZ0JBQWdCLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDM0UsZ0JBQWdCLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3ZCLGFBQWEsQ0FBQztBQUNkO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDbkcsU0FBUyxDQUFDO0lBQ1YsS0FBSztBQUNMO0lBQ0EsSUFBSSxhQUFhLEVBQUUsQ0FBQztJQUNwQixJQUFJLGdCQUFnQixFQUFFLENBQUM7SUFDdkIsSUFBSSxpQkFBaUIsRUFBRSxDQUFDO0lBQ3hCLElBQUksYUFBYSxFQUFFLENBQUM7QUFDcEI7SUFDQSxJQUFJLE1BQU0sQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDbEMsSUFBSSxNQUFNLENBQUMsY0FBYyxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsQ0FBQztBQUM1QztBQUNBO0lBQ0EsQ0FBQyxDQUFDO0FBQ0Y7SUFDQTtJQUNBO0FBQ0E7SUFDQTtBQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7QUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0FBQ0E7SUFDQTtJQUNBO0lBQ0E7QUFDQTtJQUNBLE1BQU0sbUJBQW1CLEdBQUcsb0JBQW9CLENBQUM7SUFDakQ7SUFDQSxNQUFNLG9CQUFvQixHQUFHLHFCQUFxQixDQUFDO0lBQ25ELE1BQU0sZUFBZSxHQUFHLGNBQWMsQ0FBQztBQUN2QztJQUNBLElBQUksdUJBQXVCLEdBQUcsU0FBUyxVQUFVLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsRUFBRSxFQUFFO0FBQ25GO0FBQ0E7SUFDQSxJQUFJLE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUMsR0FBRyxDQUFDO0lBQ2hELElBQUksTUFBTSxFQUFFLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUNyQjtJQUNBLElBQUksSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFLE9BQU8sTUFBTSxDQUFDO0lBQzlDLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsR0FBRztJQUM3QixRQUFRLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUNsQixLQUFLLENBQUM7QUFDTjtJQUNBLElBQUksU0FBUyxXQUFXLEdBQUc7SUFDM0IsUUFBUSxNQUFNLENBQUMsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLE1BQU0sR0FBRyxTQUFTLENBQUMsQ0FBQztJQUN6RCxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ2hDLFFBQVEsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUMvQjtJQUNBLFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLGNBQWMsRUFBRSxDQUFDO0FBQ3JDO0lBQ0EsUUFBUSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJO0lBQ3hCLFlBQVksV0FBVyxHQUFHLFNBQVM7SUFDbkMsWUFBWSxDQUFDLENBQUMsT0FBTztJQUNyQixnQkFBZ0IsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUM7SUFDaEMsZ0JBQWdCLENBQUMsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNqQyxhQUFhO0lBQ2IsU0FBUyxDQUFDLENBQUM7SUFDWCxLQUFLO0lBQ0wsSUFBSSxTQUFTLGlCQUFpQixHQUFHO0lBQ2pDLFFBQVEsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEdBQUcsZUFBZSxDQUFDLENBQUM7SUFDL0QsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNoQyxRQUFRLENBQUMsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDL0I7SUFDQSxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxjQUFjLEVBQUUsQ0FBQztBQUNyQztJQUNBLFFBQVEsQ0FBQyxDQUFDLE9BQU87SUFDakIsWUFBWSxDQUFDLENBQUMsT0FBTztJQUNyQixnQkFBZ0IsQ0FBQyxDQUFDLElBQUk7SUFDdEIsb0JBQW9CLFdBQVcsR0FBRyxTQUFTO0lBQzNDLG9CQUFvQixDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQztJQUNwQyxpQkFBaUI7SUFDakIsZ0JBQWdCLENBQUMsQ0FBQyxJQUFJO0lBQ3RCLG9CQUFvQixXQUFXLEdBQUcsU0FBUztJQUMzQyxvQkFBb0IsQ0FBQyxDQUFDLE9BQU87SUFDN0Isd0JBQXdCLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDO0lBQ3hDLHdCQUF3QixDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztJQUN2QyxxQkFBcUI7SUFDckIsaUJBQWlCO0lBQ2pCLGFBQWE7SUFDYixTQUFTLENBQUM7SUFDVixLQUFLO0FBQ0w7SUFDQSxJQUFJLFNBQVMsU0FBUyxHQUFHO0lBQ3pCLFFBQVEsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEdBQUcsT0FBTyxDQUFDLENBQUM7SUFDdkQsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNoQyxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQ2hDO0lBQ0EsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsY0FBYyxFQUFFLENBQUM7QUFDckM7SUFDQSxRQUFRLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO0lBQ3BDLFlBQVksQ0FBQyxDQUFDLE9BQU87SUFDckIsZ0JBQWdCLENBQUMsQ0FBQyxTQUFTO0lBQzNCLG9CQUFvQixDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQztJQUNwQyxvQkFBb0IsQ0FBQyxDQUFDLENBQUM7SUFDdkIsb0JBQW9CLENBQUMsQ0FBQyxRQUFRO0lBQzlCLHdCQUF3QixDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQztJQUN4Qyx3QkFBd0IsQ0FBQyxDQUFDLENBQUM7SUFDM0IscUJBQXFCO0lBQ3JCLGlCQUFpQjtJQUNqQixhQUFhLENBQUM7SUFDZCxTQUFTO0lBQ1QsS0FBSztBQUNMO0FBQ0E7SUFDQSxJQUFJLFNBQVMsZUFBZSxHQUFHO0lBQy9CLFFBQVEsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEdBQUcsYUFBYSxDQUFDLENBQUM7SUFDN0QsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNoQyxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQ2hDO0lBQ0EsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsY0FBYyxFQUFFLENBQUM7QUFDckM7SUFDQSxRQUFRLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO0lBQ3BDLFlBQVksQ0FBQyxDQUFDLE9BQU87SUFDckIsZ0JBQWdCLENBQUMsQ0FBQyxTQUFTO0lBQzNCLG9CQUFvQixDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQztJQUNwQyxvQkFBb0IsQ0FBQyxDQUFDLENBQUM7SUFDdkIsb0JBQW9CLENBQUMsQ0FBQyxRQUFRO0lBQzlCLHdCQUF3QixDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQztJQUN4Qyx3QkFBd0IsQ0FBQyxDQUFDLENBQUM7SUFDM0IscUJBQXFCO0lBQ3JCLGlCQUFpQjtJQUNqQixhQUFhLENBQUM7SUFDZCxTQUFTO0FBQ1Q7SUFDQSxLQUFLO0FBQ0w7QUFDQTtJQUNBLElBQUksU0FBUyxTQUFTLEdBQUc7SUFDekIsUUFBUSxNQUFNLENBQUMsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLE1BQU0sR0FBRyxPQUFPLENBQUMsQ0FBQztJQUN2RCxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQ2hDO0lBQ0EsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsY0FBYyxFQUFFLENBQUM7QUFDckM7SUFDQSxRQUFRLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUk7SUFDeEIsWUFBWSxXQUFXLEdBQUcsT0FBTztJQUNqQyxZQUFZLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDO0lBQzVCLFNBQVMsQ0FBQyxDQUFDO0FBQ1g7SUFDQSxRQUFRLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUk7SUFDeEIsWUFBWSxXQUFXLEdBQUcsTUFBTTtJQUNoQyxZQUFZLENBQUMsQ0FBQyxPQUFPO0lBQ3JCLGdCQUFnQixDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQztJQUNoQyxnQkFBZ0IsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUM7SUFDL0IsYUFBYTtJQUNiLFNBQVMsQ0FBQyxDQUFDO0FBQ1g7SUFDQSxRQUFRLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUk7SUFDeEIsWUFBWSxXQUFXLEdBQUcsT0FBTztJQUNqQyxZQUFZLENBQUMsQ0FBQyxPQUFPO0lBQ3JCLGdCQUFnQixDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQztJQUNoQyxnQkFBZ0IsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2pDLGFBQWE7SUFDYixTQUFTLENBQUMsQ0FBQztJQUNYLEtBQUs7QUFDTDtBQUNBO0lBQ0EsSUFBSSxTQUFTLGVBQWUsR0FBRztJQUMvQixRQUFRLE1BQU0sQ0FBQyxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsTUFBTSxHQUFHLGFBQWEsQ0FBQyxDQUFDO0lBQzdELFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDaEM7SUFDQSxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxjQUFjLEVBQUUsQ0FBQztBQUNyQztJQUNBLFFBQVEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSTtJQUN4QixZQUFZLFdBQVcsR0FBRyxPQUFPO0lBQ2pDLFlBQVksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUM7SUFDNUIsU0FBUyxDQUFDLENBQUM7QUFDWDtJQUNBLFFBQVEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSTtJQUN4QixZQUFZLFdBQVcsR0FBRyxPQUFPO0lBQ2pDLFlBQVksQ0FBQyxDQUFDLE9BQU87SUFDckIsZ0JBQWdCLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDO0lBQ2hDLGdCQUFnQixDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztJQUMvQixhQUFhO0lBQ2IsU0FBUyxDQUFDLENBQUM7SUFDWCxLQUFLO0FBQ0w7SUFDQSxJQUFJLFNBQVMsT0FBTyxHQUFHO0lBQ3ZCLFFBQVEsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDLENBQUM7SUFDckQsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNoQyxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ2hDLFFBQVEsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMvQixRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ2hDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDaEM7SUFDQSxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxjQUFjLEVBQUUsQ0FBQztBQUNyQztJQUNBLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNwQyxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDaEUsUUFBUSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNwRixRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDcEMsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3BDLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNoRSxRQUFRLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3BGLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNwQztJQUNBLFFBQVEsTUFBTSxJQUFJLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDbkQsUUFBUSxNQUFNLElBQUksR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNuRCxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2pELFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDakQsUUFBUSxNQUFNLFFBQVEsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN2RCxRQUFRLE1BQU0sUUFBUSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3ZELFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDakQsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUNqRDtBQUNBO0lBQ0EsUUFBUSxDQUFDLENBQUMsT0FBTztJQUNqQixZQUFZLENBQUMsQ0FBQyxFQUFFO0lBQ2hCLGdCQUFnQixDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxTQUFTLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM1RCxnQkFBZ0IsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxTQUFTLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ3BFLGFBQWE7SUFDYixZQUFZLENBQUMsQ0FBQyxFQUFFO0lBQ2hCLGdCQUFnQixDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxTQUFTLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM1RCxnQkFBZ0IsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3JDLGFBQWE7SUFDYixZQUFZLENBQUMsQ0FBQyxFQUFFO0lBQ2hCLGdCQUFnQixDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxRQUFRLEVBQUUsRUFBRSxDQUFDO0lBQ2xELGdCQUFnQixDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLFVBQVUsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUN0RixhQUFhO0lBQ2IsWUFBWSxDQUFDLENBQUMsRUFBRTtJQUNoQixnQkFBZ0IsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsUUFBUSxFQUFFLEVBQUUsQ0FBQztJQUNsRCxnQkFBZ0IsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxVQUFVLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDdEYsYUFBYTtBQUNiO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxTQUFTLEVBQUUsRUFBRSxFQUFFLElBQUksQ0FBQztJQUNyRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLFNBQVMsRUFBRSxFQUFFLEVBQUUsSUFBSSxDQUFDO0lBQ3JELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUFDO0lBQ3RELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUFDO0lBQ3RELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsUUFBUSxDQUFDO0lBQzVELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsUUFBUSxDQUFDO0lBQzVELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsRUFBRSxDQUFDO0lBQzFELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsRUFBRSxDQUFDO0FBQzFEO0lBQ0EsWUFBWSxDQUFDLENBQUMsRUFBRTtJQUNoQixnQkFBZ0IsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDbkQsZ0JBQWdCLENBQUMsQ0FBQyxFQUFFO0lBQ3BCLG9CQUFvQixDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUN2RCxvQkFBb0IsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3pDLGlCQUFpQjtJQUNqQixhQUFhO0lBQ2IsWUFBWSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDakMsU0FBUyxDQUFDO0lBQ1YsS0FBSztBQUNMO0FBQ0E7SUFDQSxJQUFJLFNBQVMsWUFBWSxHQUFHO0lBQzVCLFFBQVEsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEdBQUcsVUFBVSxDQUFDLENBQUM7SUFDMUQsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNoQyxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ2hDLFFBQVEsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMvQixRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQ2hDO0lBQ0EsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsY0FBYyxFQUFFLENBQUM7QUFDckM7SUFDQSxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDcEMsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2hFLFFBQVEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDcEYsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3BDLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNwQyxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDaEU7SUFDQSxRQUFRLE1BQU0sSUFBSSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ25ELFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDakQsUUFBUSxNQUFNLFFBQVEsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN2RCxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ2pEO0lBQ0EsUUFBUSxDQUFDLENBQUMsT0FBTztJQUNqQixZQUFZLENBQUMsQ0FBQyxFQUFFO0lBQ2hCLGdCQUFnQixDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxTQUFTLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM1RCxnQkFBZ0IsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxlQUFlLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQzFFLGFBQWE7SUFDYixZQUFZLENBQUMsQ0FBQyxFQUFFO0lBQ2hCLGdCQUFnQixDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxlQUFlLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNsRSxnQkFBZ0IsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3JDLGFBQWE7SUFDYixZQUFZLENBQUMsQ0FBQyxFQUFFO0lBQ2hCLGdCQUFnQixDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxRQUFRLEVBQUUsRUFBRSxDQUFDO0lBQ2xELGdCQUFnQixDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLFdBQVcsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUN2RixhQUFhO0lBQ2IsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxTQUFTLEVBQUUsRUFBRSxFQUFFLElBQUksQ0FBQztJQUNyRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQztJQUN0RCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLFFBQVEsQ0FBQztJQUM1RCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsUUFBUSxFQUFFLEVBQUUsQ0FBQztBQUMxRDtJQUNBLFlBQVksQ0FBQyxDQUFDLEVBQUU7SUFDaEIsZ0JBQWdCLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ25ELGdCQUFnQixDQUFDLENBQUMsRUFBRTtJQUNwQixvQkFBb0IsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDdkQsb0JBQW9CLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN6QyxpQkFBaUI7SUFDakIsYUFBYTtJQUNiLFlBQVksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2pDLFNBQVMsQ0FBQztJQUNWLEtBQUs7QUFDTDtJQUNBLElBQUksU0FBUyxXQUFXLEdBQUc7SUFDM0IsUUFBUSxNQUFNLENBQUMsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLE1BQU0sR0FBRyxTQUFTLENBQUMsQ0FBQztJQUN6RCxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ2hDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDaEM7SUFDQSxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxjQUFjLEVBQUUsQ0FBQztBQUNyQztJQUNBLFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNuQyxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDL0QsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNqRSxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDcEMsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2hFLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDbEU7SUFDQSxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2hELFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDaEQsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNoRCxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2hELFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDaEQsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNoRCxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2hELFFBQVEsTUFBTSxNQUFNLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDckQ7SUFDQSxRQUFRLENBQUMsQ0FBQyxPQUFPO0lBQ2pCLFlBQVksQ0FBQyxDQUFDLEVBQUU7SUFDaEIsZ0JBQWdCLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLFNBQVMsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzVELGdCQUFnQjtJQUNoQixvQkFBb0IsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxPQUFPLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ25GLG9CQUFvQixHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO0lBQ2hDLGlCQUFpQjtJQUNqQixhQUFhO0lBQ2IsWUFBWSxDQUFDLENBQUMsRUFBRTtJQUNoQixnQkFBZ0IsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsUUFBUSxFQUFFLENBQUMsQ0FBQztJQUNqRCxnQkFBZ0I7SUFDaEIsb0JBQW9CLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxlQUFlLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDbEcsb0JBQW9CLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7SUFDaEMsaUJBQWlCO0lBQ2pCLGFBQWE7QUFDYjtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsU0FBUyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDakQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxTQUFTLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNqRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLFNBQVMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ2pEO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDakQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxTQUFTLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNqRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNqRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNqRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUNqRDtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2pELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2pELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsU0FBUyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDakQ7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLE1B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SUFBSSxDQUFDO0FBQ3JEO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNsRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLFNBQVMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2pELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ2xELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsTUFBTSxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ3BELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ2pEO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNuRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztBQUNsRDtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7QUFDbEQ7SUFDQTtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxTQUFTLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztJQUNsRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztJQUNuRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztBQUNuRDtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxTQUFTLENBQUM7SUFDL0QsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLENBQUM7SUFDekUsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLENBQUM7SUFDekUsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDbkQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7SUFDbkQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLFNBQVMsRUFBRSxFQUFFLENBQUM7SUFDM0QsU0FBUyxDQUFDO0lBQ1YsS0FBSztBQUNMO0FBQ0E7SUFDQSxJQUFJLFNBQVMsYUFBYSxHQUFHO0lBQzdCLFFBQVEsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEdBQUcsV0FBVyxDQUFDLENBQUM7SUFDM0QsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNoQyxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ2hDLFFBQVEsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMvQixRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQ2hDO0lBQ0EsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsY0FBYyxFQUFFLENBQUM7QUFDckM7SUFDQSxRQUFRLENBQUMsQ0FBQyxPQUFPO0lBQ2pCLFlBQVksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsT0FBTztJQUMzQixnQkFBZ0IsQ0FBQyxDQUFDLElBQUk7SUFDdEIsb0JBQW9CLFdBQVcsR0FBRyxLQUFLO0lBQ3ZDLG9CQUFvQixDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQztJQUNwQyxvQkFBb0IsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUM7SUFDcEMsaUJBQWlCO0lBQ2pCLGdCQUFnQixDQUFDLENBQUMsSUFBSTtJQUN0QixvQkFBb0IsV0FBVyxHQUFHLEtBQUs7SUFDdkMsb0JBQW9CLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2hFLG9CQUFvQixDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNoRSxpQkFBaUI7SUFDakIsYUFBYSxDQUFDO0lBQ2QsU0FBUyxDQUFDO0lBQ1YsS0FBSztBQUNMO0lBQ0EsSUFBSSxTQUFTLGlCQUFpQixHQUFHO0lBQ2pDLFFBQVEsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEdBQUcsZUFBZSxDQUFDLENBQUM7SUFDL0QsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNoQyxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQ2hDO0lBQ0EsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsY0FBYyxFQUFFLENBQUM7QUFDckM7SUFDQSxRQUFRLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUk7SUFDeEIsWUFBWSxXQUFXLEdBQUcsZUFBZTtJQUN6QyxZQUFZLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDO0lBQzVCLFlBQVksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUM7SUFDNUIsU0FBUyxDQUFDLENBQUM7SUFDWCxRQUFRLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7SUFDaEMsWUFBWSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJO0lBQzVCLGdCQUFnQixXQUFXLEdBQUcsZUFBZTtJQUM3QyxnQkFBZ0IsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzlELGdCQUFnQixDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDOUQsYUFBYSxDQUFDLENBQUM7SUFDZixTQUFTO0lBQ1QsS0FBSztBQUNMO0lBQ0EsSUFBSSxTQUFTLHVCQUF1QixHQUFHO0lBQ3ZDLFFBQVEsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEdBQUcscUJBQXFCLENBQUMsQ0FBQztJQUNyRSxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ2hDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDaEM7SUFDQSxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxjQUFjLEVBQUUsQ0FBQztBQUNyQztJQUNBLFFBQVEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSTtJQUN4QixZQUFZLFdBQVcsR0FBRyxlQUFlO0lBQ3pDLFlBQVksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUM7SUFDNUIsWUFBWSxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQztJQUM1QixTQUFTLENBQUMsQ0FBQztJQUNYLFFBQVEsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtJQUNoQyxZQUFZLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUk7SUFDNUIsZ0JBQWdCLFdBQVcsR0FBRyxlQUFlO0lBQzdDLGdCQUFnQixDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDOUQsZ0JBQWdCLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUM5RCxhQUFhLENBQUMsQ0FBQztJQUNmLFNBQVM7SUFDVCxLQUFLO0FBQ0w7SUFDQSxJQUFJLFNBQVMsbUJBQW1CLEdBQUc7SUFDbkMsUUFBUSxNQUFNLENBQUMsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLE1BQU0sR0FBRyxpQkFBaUIsQ0FBQyxDQUFDO0lBQ2pFLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDaEMsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztBQUNoQztJQUNBLFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLGNBQWMsRUFBRSxDQUFDO0FBQ3JDO0lBQ0EsUUFBUSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJO0lBQ3hCLFlBQVksV0FBVyxHQUFHLGlCQUFpQjtJQUMzQyxZQUFZLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDO0lBQzVCLFlBQVksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUM7SUFDNUIsU0FBUyxDQUFDLENBQUM7SUFDWCxRQUFRLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7SUFDaEMsWUFBWSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJO0lBQzVCLGdCQUFnQixXQUFXLEdBQUcsaUJBQWlCO0lBQy9DLGdCQUFnQixDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDOUQsZ0JBQWdCLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUM5RCxhQUFhLENBQUMsQ0FBQztJQUNmLFNBQVM7SUFDVCxLQUFLO0FBQ0w7QUFDQTtJQUNBLElBQUksU0FBUyx5QkFBeUIsR0FBRztJQUN6QyxRQUFRLE1BQU0sQ0FBQyxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsTUFBTSxHQUFHLHVCQUF1QixDQUFDLENBQUM7SUFDdkUsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNoQyxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQ2hDO0lBQ0EsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsY0FBYyxFQUFFLENBQUM7QUFDckM7SUFDQSxRQUFRLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUk7SUFDeEIsWUFBWSxXQUFXLEdBQUcsaUJBQWlCO0lBQzNDLFlBQVksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUM7SUFDNUIsWUFBWSxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQztJQUM1QixTQUFTLENBQUMsQ0FBQztJQUNYLFFBQVEsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtJQUNoQyxZQUFZLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUk7SUFDNUIsZ0JBQWdCLFdBQVcsR0FBRyxpQkFBaUI7SUFDL0MsZ0JBQWdCLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUM5RCxnQkFBZ0IsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzlELGFBQWEsQ0FBQyxDQUFDO0lBQ2YsU0FBUztJQUNULEtBQUs7QUFDTDtJQUNBLElBQUksU0FBUyxRQUFRLEdBQUc7QUFDeEI7SUFDQSxRQUFRLE1BQU0sQ0FBQyxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxDQUFDO0lBQ3RELFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDaEMsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNoQyxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ2hDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDaEMsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztBQUNoQztJQUNBLFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLGNBQWMsRUFBRSxDQUFDO0FBQ3JDO0lBQ0EsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3BDLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNoRSxRQUFRLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3BGLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNwQyxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDcEMsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2hFLFFBQVEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDcEYsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3BDLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNwQyxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDaEUsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNsRTtJQUNBLFFBQVEsTUFBTSxJQUFJLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDbkQsUUFBUSxNQUFNLElBQUksR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNuRCxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2pELFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDakQsUUFBUSxNQUFNLFFBQVEsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN2RCxRQUFRLE1BQU0sUUFBUSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3ZELFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDakQsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMs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QUFXLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2xELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsU0FBUyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7SUFDbEQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7QUFDbEQ7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztJQUNuRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztBQUNwRDtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDO0lBQ3RELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsTUFBTSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDO0FBQzdEO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDbkQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7SUFDbkQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUM7QUFDdkQ7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNwRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLFNBQVMsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ25ELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUFDO0lBQ3RELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUFDO0lBQ3RELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO0lBQ25ELFNBQVMsQ0FBQztBQUNWO0lBQ0EsS0FBSztBQUNMO0FBQ0E7SUFDQSxJQUFJLFNBQVMsYUFBYSxHQUFHO0FBQzdCO0lBQ0EsUUFBUSxNQUFNLENBQUMsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLE1BQU0sR0FBRyxXQUFXLENBQUMsQ0FBQztJQUMzRCxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ2hDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDaEMsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNoQyxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQ2hDO0lBQ0EsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsY0FBYyxFQUFFLENBQUM7QUFDckM7SUFDQSxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDcEMsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2hFLFFBQVEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDcEYsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3BDLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNwQyxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDaEUsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3BDLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNoRSxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2xFO0lBQ0EsUUFBUSxNQUFNLElBQUksR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNuRCxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2pELFFBQVEsTUFBTSxRQUFRLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDdkQsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNqRCxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2hELFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDakQsUUFBUSxNQUFNLFdBQVcsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUMxRCxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2hELFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDaEQsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNoRCxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2pELFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDaEQsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsU0FB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Q2xELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO0FBQ2xEO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7SUFDbkQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7QUFDcEQ7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQztJQUN0RCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQztBQUM3RDtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ25ELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO0lBQ25ELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDO0FBQ3ZEO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7SUFDbkQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxTQUFTLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNuRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQztJQUN0RCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNwRCxTQUFTLENBQUM7SUFDVixLQUFLO0FBQ0w7QUFDQTtJQUNBLElBQUksU0FBUyxjQUFjLEdBQUc7QUFDOUI7SUFDQSxRQUFRLE1BQU0sQ0FBQyxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsTUFBTSxHQUFHLFlBQVksQ0FBQyxDQUFDO0lBQzVELFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDaEMsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNoQyxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ2hDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDaEM7SUFDQSxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxjQUFjLEVBQUUsQ0FBQztBQUNyQztJQUNBLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNwQyxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDaEUsUUFBUSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNwRixRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDcEMsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2hFLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNwQyxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDaEUsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNsRTtJQUNBLFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDaEQsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNqRCxRQUFRLE1BQU0sV0FBVyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzFELFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDaEQsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNoRCxRQUFR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LENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDcEQ7SUFDQSxRQUFRLENBQUMsQ0FBQyxPQUFPO0lBQ2pCLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsWUFBWSxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsR0FBRyxDQUFDO0lBQ2hFLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsWUFBWSxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbEYsU0FBUyxDQUFDO0lBQ1YsS0FBSztBQUNMO0lBQ0E7SUFDQSxJQUFJLFNBQVMsY0FBYyxHQUFHO0lBQzlCLFFBQVEsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEdBQUcsWUFBWSxDQUFDLENBQUM7SUFDNUQsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNoQyxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQ2hDO0lBQ0EsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsY0FBYyxFQUFFLENBQUM7QUFDckM7SUFDQSxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbkMsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQy9ELFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFD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QUksTUFBTSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDLENBQUM7SUFDMUMsSUFBSSxNQUFNLENBQUMsY0FBYyxDQUFDLE1BQU0sR0FBRyxVQUFVLENBQUMsQ0FBQztJQUMvQyxJQUFJLE1BQU0sQ0FBQyxjQUFjLENBQUMsTUFBTSxHQUFHLFdBQVcsQ0FBQyxDQUFDO0FBQ2hEO0lBQ0EsSUFBSSxNQUFNLENBQUMsY0FBYyxDQUFDLE1BQU0sR0FBRyxPQUFPLENBQUMsQ0FBQztJQUM1QyxJQUFJLE1BQU0sQ0FBQyxjQUFjLENBQUMsTUFBTSxHQUFHLGFBQWEsQ0FBQyxDQUFDO0FBQ2xEO0lBQ0EsSUFBSSxNQUFNLENBQUMsY0FBYyxDQUFDLE1BQU0sR0FBRyxPQUFPLENBQUMsQ0FBQztJQUM1QyxJQUFJLE1BQU0sQ0FBQyxjQUFjLENBQUMsTUFBTSxHQUFHLGFBQWEsQ0FBQyxDQUFDO0FBQ2xEO0lBQ0EsSUFBSSxNQUFNLENBQUMsY0FBYyxDQUFDLE1BQU0sR0FBRyxTQUFTLENBQUMsQ0FBQztJQUM5QyxJQUFJLE1BQU0sQ0FBQyxjQUFjLENBQUMsTUFBTSxHQUFHLGVBQWUsQ0FBQyxDQUFDO0FBQ3BEO0lBQ0EsSUFBSSxNQUFNLENBQUMsY0FBYyxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsQ0FBQztJQUMzQyxJQUFJLE1BQU0sQ0FBQyxjQUFjLENBQUMsTUFBTSxHQUFHLFdBQVcsQ0FBQyxDQUFDO0lBQ2hELElBQUksTUFBTSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEdBQUcsWUFBWSxDQUFDLENBQUM7QUFDakQ7SUFDQSxJQUFJLE1BQU0sQ0FBQyxjQUFjLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxDQUFDO0lBQzNDLElBQUksTUFBTSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEdBQUcsWUFBWSxDQUFDLENBQUM7QUFDakQ7SUFDQSxJQUFJLE1BQU0sQ0FBQyxjQUFjLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxDQUFDO0lBQzNDLElBQUksTUFBTSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEdB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SUFDM0UsWUFBWSxHQUFHLE9BQU8sQ0FBQyxjQUFjLEVBQUUsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRTtJQUMzRSxTQUFTO0lBQ1QsS0FBSyxDQUFDO0FBQ047SUFDQSxJQUFJLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUM7SUFDL0IsUUFBUSxHQUFHLE9BQU8sQ0FBQyxjQUFjLEVBQUUsWUFBWSxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRTtJQUM1RCxRQUFRLEdBQUcsT0FBTyxDQUFDLGNBQWMsRUFBRSxZQUFZLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxFQUFFO0lBQzVELFFBQVEsR0FBRyxPQUFPLENBQUMsY0FBYyxFQUFFLFlBQVksQ0FBQyxDQUFDLENBQUMsRUFBRSxNQUFNLEVBQUU7SUFDNUQsUUFBUSxHQUFHLE9BQU8sQ0FBQyxjQUFjLEVBQUUsWUFBWSxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRTtJQUM1RCxRQUFRLEdBQUcsT0FBTyxDQUFDLGNBQWMsRUFBRSxZQUFZLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxFQUFFO0lBQzVELFFBQVEsR0FBRyxPQUFPLENBQUMsY0FBYyxFQUFFLFlBQVksQ0FBQyxDQUFDLENBQUMsRUFBRSxNQUFNLEVBQUU7SUFDNUQsUUFBUSxHQUFHLE9BQU8sQ0FBQyxjQUFjLEVBQUUsWUFBWSxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRTtJQUM1RCxRQUFRLEdBQUcsT0FBTyxDQUFDLGNBQWMsRUFBRSxZQUFZLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxFQUFFO0lBQzVELFFBQVEsR0FBRyxPQUFPLENBQUMsY0FBYyxFQUFFLFlBQVksQ0FBQyxDQUFDLENBQUMsRUFBRSxNQUFNLEVBQUU7SUFDNUQsUUFBUSxHQUFHLE9BQU8sQ0FBQyxjQUFjLEVBQUUsWUFBWSxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRTtJQUM1RCxRQUFRLEdB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QyxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ2hDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDbkM7SUFDQSxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxjQUFjLEVBQUUsQ0FBQztBQUNyQztJQUNBLFFBQVEsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNyQyxRQUFRLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7QUFDckU7SUFDQSxRQUFRLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDckMsUUFBUSxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3JFLFFBQVEsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7QUFDdkU7SUFDQSxRQUFRLE1BQU0sS0FBSyxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDM0MsUUFBUSxNQUFNLE1BQU0sR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQzNFLFFBQVEsTUFBTSxNQUFNLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7QUFDOUU7SUFDQSxRQUFRLE1BQU0sQ0FBQyxHQUFHLE1BQU0sQ0FBQztJQUN6QixRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3BELFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDcEQsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNwRCxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3BELFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDcEQsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNwRCxRQUFRLE1BQU0sR0FBRyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0FBQ3REO0lBQ0EsUUFBUSxDQUFDLENBQUMsT0FBTztJQUNqQjtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ2pELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ2hEO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNqRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUNoRDtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUMvQztJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUMvQztJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDL0M7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ2hEO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEdBQUcsQ0FBQztJQUNqRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNoRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUMvQyxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztBQUNqRDtBQUNBO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztBQUNoRDtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDakQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUM7SUFDakQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7SUFDbkQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7QUFDbkQ7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO0FBQ2pEO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsQ0FBQztJQUNsRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEtBQUssQ0FBQztJQUNwRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLEtBQUssQ0FBQztJQUN6RCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsRUFBRSxLQUFLLENBQUM7QUFDakY7QUFDQTtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsQ0FBQyxFQUFFLE1BQU0sQ0FBQztBQUNqRDtJQUNBO0lBQ0E7QUFDQTtJQUNBLFNBQVMsQ0FBQztJQUNWLEtBQUs7QUFDTDtBQUNBO0FBQ0E7SUFDQSxJQUFJLFNBQVMsbUJBQW1CLEdBQUc7SUFDbkMsUUFBUSxNQUFNLENBQUMsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRSxjQUFjLENBQUMsQ0FBQztJQUM3RCxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ2hDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDbkM7SUFDQSxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxjQUFjLEVBQUUsQ0FBQztBQUNyQztJQUNBLFFBQVEsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNyQyxRQUFRLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDckUsUUFBUSxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztBQUN2RTtJQUNBLFFBQVEsTUFBTSxLQUFLLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUMzQyxRQUFRLE1BQU0sTUFBTSxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDM0UsUUFBUSxNQUFNLE1BQU0sSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztBQUM5RTtJQUNBLFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDcEQsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNwRCxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3BELFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDcEQsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNwRCxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3BELFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDcEQsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNwRCxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3BELFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDcEQsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNyRCxRQUFRLE1BQU0sR0FBRyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0FBQ3REO0lBQ0EsUUFBUSxDQUFDLENBQUMsT0FBTztBQUNqQjtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ25FLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ2hEO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQ2hEO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQ2hEO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUMvQyxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUMvQztJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ3RFO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUMvQyxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUMvQztJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDL0MsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ2xFO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEdBQUcsQ0FBQztJQUNqRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNqRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQy9DLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO0FBQ2pEO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUMvQztJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztBQUNoRDtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztBQUNoRDtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUM7SUFDakQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxFQUFFLENBQUM7QUFDbEQ7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsR0FBRyxDQUFDO0lBQ25ELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0lBQ3BELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7SUFDaEQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLENBQUM7QUFDbkQ7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO0FBQ2hEO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUM7QUFDN0U7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLENBQUMsRUFBRSxNQUFNLENBQUM7QUFDakQ7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdB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QUMsUUFBUSxDQUFDLENBQUM7SUFDekMsUUFBUSxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQ3pDO0lBQ0EsUUFBUSxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3JDO0lBQ0EsUUFBUSxNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzVDLFFBQVEsTUFBTSxLQUFLLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMxQyxRQUFRLE1BQU0sT0FBTyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDNUMsUUFBUSxNQUFNLE9BQU8sR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNuRCxRQUFRLE1BQU0sT0FBTyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNyRCxRQUFRLE1BQU0sT0FBTyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNyRCxRQUFRLE1BQU0sT0FBTyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNyRCxRQUFRLE1BQU0sUUFBUSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN0RDtJQUNBLFFBQVEsQ0FBQyxDQUFDLE9BQU87QUFDakI7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE9BQU8sRUFBRSxFQUFFLEVBQUUsT0FBTyxDQUFDO0lBQ3BELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsT0FBTyxFQUFFLE9BQU8sQ0FBQztJQUNoRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE9BQU8sRUFBRSxFQUFFLEVBQUUsT0FBTyxDQUFDO0lBQ3BELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsT0FBTyxFQUFFLE9BQU8sQ0FBQztJQUNoRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE9BQU8sRUFBRSxFQUFFLEVBQUUsT0FBTyxDQUFDO0lBQ3BELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsT0FBTyxFQUFFLFFBQVEsQ0FBQztJQUNqRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNyRCxTQUFTLENBQUM7SUFDVixLQUFLO0FBQ0w7SUFDQSxJQUFJLFNBQVMsYUFBYSxHQUFHO0lBQzdCLFFBQVEsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsWUFBWSxDQUFDLENBQUM7SUFDM0QsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNuQyxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3BDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDcEMsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztBQUNoQztJQUNBLFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLGNBQWMsRUFBRSxDQUFDO0FBQ3JDO0lBQ0EsUUFBUSxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3hDLFFBQVEsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUN6QyxRQUFRLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDekM7SUFDQSxRQUFRLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDckMsUUFBUSxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNuRSxRQUFRLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ25FLFFBQVEsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDbkUsUUFBUSxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNuRSxRQUFRLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ3BFO0lBQ0EsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNyRCxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3JELFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDckQsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNyRCxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3JELFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDckQsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNyRCxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3JELFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDckQsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNyRCxRQUFRLE1BQU0sR0FBRyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0FBQ3REO0lBQ0EsUUFBUSxDQUFDLENBQUMsT0FBTztBQUNqQjtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDbEQ7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNsRDtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2xEO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDbEQ7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNsRDtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2xELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0FBQ2xEO0FBQ0E7SUFDQTtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDbEQ7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNsRDtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUMxRSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNsRDtBQUNBO0lBQ0E7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2xEO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDbEQ7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNsRDtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUMxRTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2xEO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDbEQ7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNsRDtBQUNBO0FBQ0E7QUFDQTtJQUNBO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNsRDtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2xELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsR0FBRyxDQUFDO0lBQ25ELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDO0lBQ25EO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDbEQ7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztBQUNsRDtBQUNBO0lBQ0E7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2xEO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNsRDtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2xEO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDbEQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxHQUFHLENBQUM7SUFDbkQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLENBQUM7SUFDbkQ7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDMUU7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNsRDtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2xEO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDbEQ7QUFDQTtJQUNBO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNsRDtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2xEO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQzFFO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDbEQ7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNsRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsQ0FBQztJQUNuRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQztJQUNuRDtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2xEO0FBQ0E7SUFDQTtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDbEQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDbEQ7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNsRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNsRDtBQUNBO0lBQ0EsU0FBUyxDQUFDO0lBQ1YsS0FBSztBQUNMO0FBQ0E7SUFDQSxJQUFJLFNBQVMsZUFBZSxHQUFHO0lBQy9CLFFBQVEsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsYUFBYSxDQUFDLENBQUM7SUFDNUQsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNuQyxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ25DLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDL0IsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNuQyxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQy9CO0lBQ0EsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsY0FBYyxFQUFFLENBQUM7QUFDckM7SUFDQSxRQUFRLE1BQU0sT0FBTyxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDNUMsUUFBUSxNQUFNLE9BQU8sR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0FBQzVFO0lBQ0EsUUFBUSxNQUFNLEtBQUssSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzNDLFFBQVEsTUFBTSxNQUFNLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUMzRSxRQUFRLE1BQU0sTUFBTSxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0FBQzlFO0FBQ0E7SUFDQSxRQUFRLE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDekMsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3BDLFFBQVEsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN6QyxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDcEM7SUFDQSxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDbEM7QUFDQTtJQUNBLFFBQVEsQ0FBQyxDQUFDLE9BQU87SUFDakIs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R0FBRyxDQUFDLENBQUMsY0FBYyxFQUFFLENBQUM7QUFDckM7SUFDQSxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDbkMsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ25FLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDckUsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNyRSxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3JFLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7QUFDckU7SUFDQSxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDbkMsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ25FLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDckUsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNyRSxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3JFLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7QUFDckU7SUFDQSxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3JELFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDckQsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNyRCxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3JELFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDckQsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNyRCxRQUFRLE1BQU0sR0FBRyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3RELFFBQVEsTUFBTSxHQUFHLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7QUFDdEQ7QUFDQTtJQUNBLFFBQVEsQ0FBQyxDQUFDLE9BQU87SUFDakI7SUFDQTtJQUNBO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsQ0FBQztJQUNuRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsRUFBRSxFQUFFLENBQUM7SUFDMUUsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDbEQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxHQUFHLENBQUM7SUFDbkQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDbkQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0lBQzVFLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0lBQ3JELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDO0lBQ25ELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDO0FBQ3BEO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsQ0FBQztJQUNuRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsRUFBRSxFQUFFLENBQUM7SUFDMUUsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDbEQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxHQUFHLENBQUM7SUFDbkQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDbkQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0lBQzVFLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0lBQ3JELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDO0lBQ25ELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDO0FBQ3BEO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsQ0FBQztJQUNuRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsRUFBRSxFQUFFLENBQUM7SUFDMUUsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDbEQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxHQUFHLENBQUM7SUFDbkQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDbkQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0lBQzVFLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0lBQ3JELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDO0lBQ25ELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDO0FBQ3BEO0lBQ0E7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2xELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2xELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2xEO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDbEQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDbEQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7QUFDbEQ7SUFDQTtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLEVBQUUsR0FBRyxDQUFDO0lBQzVFLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ25ELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2xELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ25EO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDbEQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDbEQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7QUFDbEQ7SUFDQTtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDbEQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDbEQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDbEQ7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNsRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNsRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztBQUNsRDtJQUNBLFNBQVMsQ0FBQztJQUNWLEtBQUs7QUFDTDtBQUNBO0lBQ0EsSUFBSSxTQUFTLGtCQUFrQixDQUFDLFFBQVEsRUFBRSxNQUFNLEVBQUU7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QUFDO0lBQy9FLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDL0IsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztBQUMvQjtJQUNBLFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLGNBQWMsRUFBRSxDQUFDO0FBQ3JDO0lBQ0EsUUFBUSxNQUFNLEdBQUcsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3BDLFFBQVEsTUFBTSxNQUFNLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN2QyxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3BELFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDcEQsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNwRCxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3BELFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDcEQsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNwRCxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3BELFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDcEQsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNwRCxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3BELFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDcEQsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNwRCxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3BELFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDcEQsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNwRCxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3BELFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDcEQsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNwRCxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3BELFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDcEQsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztBQUNwRDtJQUNBLFFBQVEsQ0FBQyxDQUFDLE9BQU87QUFDakI7QUFDQTtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxvQkFBb0IsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBQ3pELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsWUFBWSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDbEQ7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLG9CQUFvQixFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDdkQ7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLG9CQUFvQixFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDdkQ7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUMvQztJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsb0JBQW9CLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUN2RCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLFlBQVksRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2xEO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxvQkFBb0IsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3ZEO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxvQkFBb0IsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3ZELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsWUFBWSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDbEQ7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLFlBQVksRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2xEO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxZQUFZLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNsRDtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQy9DO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDL0M7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUMvQztJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQy9DO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztBQUNqRDtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxpQkFBaUIsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3BEO0lBQ0EsWUFBWSxD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Q0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3ZELFFBQVEsTUFBTSxJQUFJLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7QUFDdkQ7SUFDQSxRQUFRLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7QUFDckQ7SUFDQSxRQUFRLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxFQUFFLEVBQUU7QUFDeEM7SUFDQSxZQUFZLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsWUFBWSxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzlGLFlBQVksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxZQUFZLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDOUYsWUFBWSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLGFBQWEsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztBQUNyRztJQUNBLFlBQVksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksRUFB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QUM7SUFDbkUsUUFBUSxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUNuRTtJQUNBLFFBQVEsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNwQyxRQUFRLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ25FLFFBQVEsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDbkU7QUFDQTtJQUNBLFFBQVEsTUFBTSxRQUFRLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDM0QsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNyRCxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3JELFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDckQsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztBQUNyRDtJQUNBLFFBQVEsQ0FBQyxDQUFDLE9BQU87QUFDakI7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7QUFDakQ7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7QUFDakQ7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7QUFDakQ7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2xELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDakQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDbEQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7QUFDbEQ7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0FBQ2xEO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNsRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztBQUNsRDtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7QUFDbEQ7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7QUFDakQ7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxFQUFFLEVBQUUsRUFBRSxRQUFRLENBQUM7QUFDdkQ7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2xELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0FBQ2xEO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNsRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2pELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2xELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsRUFBRSxDQUFDO0FBQ3hEO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNsRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztBQUNsRDtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7QUFDbEQ7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0FBQ2xEO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztBQUNsRDtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7QUFDbEQ7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsRUFBRSxDQUFDO0FBQ3hEO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztBQUNsRDtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztBQUM5QztJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNqRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNsRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztBQUNsRDtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7QUFDbEQ7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0FBQ2xEO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztBQUNsRDtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLFFBQVEsRUFBRSxFQUFFLENBQUM7QUFDeEQ7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0FBQ2xEO0lBQ0EsU0FBUyxDQUFDO0lBQ1YsS0FBSztBQUNMO0lBQ0EsSUFBSSxTQUFTLGdCQUFnQixHQUFHO0lBQ2hDLFFBQVEsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsY0FBYyxDQUFDLENBQUM7SUFDN0QsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUMvQixRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQy9CLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDL0I7SUFDQSxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxjQUFjLEVBQUUsQ0FBQztBQUNyQztJQUNBLFFBQVEsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNwQyxRQUFRLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ25FLFFBQVEsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDbkU7SUFDQSxRQUFRLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDcEMsUUFBUSxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUNuRTtJQUNBLFFBQVEsTUFBTSxHQUFHLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNyQyxRQUFRLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ25FLFFBQVEsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDbkU7SUFDQSxRQUFRLE1BQU0sUUFBUSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQzNELFFBQVEsTUFBTSxRQUFRLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDM0QsUUFBUSxNQUFNLFNBQVMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUM1RCxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3JELFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDckQsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNyRCxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3JELFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDckQsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNyRCxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3JELFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7QUFDckQ7SUFDQSxRQUFRLENBQUMsQ0FBQyxPQUFPO0FBQ2pCO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsRUFBRSxFQUFFLEVBQUUsUUFBUSxDQUFDO0FBQ3ZEO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsRUFBRSxFQUFFLEVBQUUsUUFBUSxDQUFDO0FBQ3ZEO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztBQUN4RDtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDbEQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNqRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsUUFBUSxFQUFFLEVBQUUsQ0FBQztJQUN4RCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsUUFBUSxFQUFFLEVBQUUsQ0FBQztJQUN4RCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsUUFBUSxFQUFFLEVBQUUsQ0FBQztBQUN4RDtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7QUFDbEQ7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7QUFDakQ7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0FBQ2xEO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztBQUNsRDtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7QUFDbEQ7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2xELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0FBQ2xEO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztBQUNsRDtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7QUFDbEQ7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDakQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDbEQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDbEQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7QUFDbEQ7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2xELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDakQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLFFBQVEsRUFBRSxFQUFFLENBQUM7SUFDeEQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7QUFDbEQ7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsR0FBRyxDQUFDO0FBQ25EO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNsRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztBQUNsRDtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7QUFDbEQ7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0FBQ2xEO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztBQUNsRDtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztJQUNuRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLEdBQUcsQ0FBQztBQUMxRDtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLEVBQUUsRUFBRSxFQUFFLFNBQVMsQ0FBQztBQUN4RDtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxHQUFHLENBQUM7QUFDM0Q7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2xELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDO0FBQ25EO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsQ0FBQztBQUNuRDtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztBQUM5QztJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDbEQsU0FBUyxDQUFDO0lBQ1YsS0FBSztBQUNMO0FBQ0E7SUFDQSxJQUFJLFNBQVMsY0FBYyxHQUFHO0lBQzlCLFFBQVEsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsWUFBWSxDQUFDLENBQUM7SUFDM0QsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNoQyxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ25DLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDbkMsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztBQUMvQjtJQUNBLFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLGNBQWMsRUFBRSxDQUFDO0FBQ3JDO0FBQ0E7SUFDQSxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDbkM7SUFDQSxRQUFRLE1BQU0sRUFBRSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzFDLFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUNsQztJQUNBLFFBQVEsTUFBTSxJQUFJLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUN6QztJQUNBLFFBQVEsQ0FBQyxDQUFDLE9BQU87SUFDakIsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxZQUFZLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQztJQUNyRCxZQUFZLENBQUMsQ0FBQyxFQUFFO0lBQ2hCLGdCQUFnQixDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLEVBQUUsSUFBSSxDQUFDO0lBQ25ELGdCQUFnQixDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztJQUN6QixhQUFhO0lBQ2IsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUNoRCxZQUFZLENBQUMsQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3RGLFNBQVMsQ0FBQztBQUNWO0lBQ0EsUUFBUSxDQUFDLENBQUMsT0FBTztJQUNqQixZQUFZLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNsRSxZQUFZLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUk7QUFDMUI7SUFDQSxnQkFBZ0IsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsY0FBYyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3ZFLGdCQUFnQixDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO0FBQzdGO0lBQ0EsZ0JBQWdCLENBQUMsQ0FBQyxFQUFFO0lBQ3BCLG9CQUFvQixDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsZ0JBQWdCLENBQUM7SUFDcEUsb0JBQW9CO0lBQ3BCLHdCQUF3QixHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLGNBQWMsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDeEYsd0JBQXdCLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztJQUN4RyxxQkFBcUI7SUFDckIsaUJBQWlCO0lBQ2pCLGdCQUFnQixDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztJQUN6RCxnQkFBZ0IsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMzRSxnQkFBZ0IsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDdkIsYUFBYSxDQUFDO0lBQ2QsU0FBUyxDQUFDO0lBQ1YsS0FBSztBQUNMO0FBQ0E7SUFDQSxJQUFJLFNBQVMsV0FBVyxHQUFHO0lBQzNCLFFBQVEsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDekQsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNoQyxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ2pDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDaEM7SUFDQSxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxjQUFjLEVBQUUsQ0FBQztBQUNyQztJQUNBLFFBQVEsTUFBTSxJQUFJLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN0QyxRQUFRLE1BQU0sSUFBSSxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3hFLFFBQVEsTUFBTSxJQUFJLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDeEU7SUFDQSxRQUFRLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDdEM7SUFDQSxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDcEMsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN0RSxRQUFRLE1BQU0sR0FBRyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3ZFO0lBQ0EsUUFBUSxNQUFNLE9BQU8sR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDNUQsUUFBUSxNQUFNLE9BQU8sR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDNUQ7SUFDQSxRQUFRLENBQUMsQ0FBQyxPQUFPO0FBQ2pCO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxPQUFPLENBQUM7SUFDM0QsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxPQUFPLENBQUM7QUFDM0Q7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsR0FBRyxDQUFDO0FBQ3JEO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUN2RCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQztBQUNuRDtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxRQUFRLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztBQUNoRDtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDdkQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLENBQUM7SUFDbkQsU0FBUyxDQUFDO0lBQ1YsS0FBSztJQUNMLElBQUksV0FBVyxFQUFFLENBQUM7QUFDbEI7SUFDQSxJQUFJLFNBQVMsWUFBWSxHQUFHO0lBQzVCLFFBQVEsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxTQUFTLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDMUQsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNoQyxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ2pDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDakMsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztBQUNoQztJQUNBLFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLGNBQWMsRUFBRSxDQUFDO0FBQ3JDO0lBQ0EsUUFBUSxNQUFNLElBQUksR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3RDLFFBQVEsTUFBTSxJQUFJLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDeEUsUUFBUSxNQUFNLElBQUksR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN4RTtJQUNBLFFBQVEsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN0QyxRQUFRLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDdEM7SUFDQSxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDcEMsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN0RSxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3RFO0lBQ0EsUUFBUSxNQUFNLEdBQUcsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDeEQsUUFBUSxNQUFNLEdBQUcsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDeEQsUUFBUSxNQUFNLE9BQU8sR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDNUQsUUFBUSxNQUFNLE9BQU8sR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDNUQ7SUFDQSxRQUFRLENBQUMsQ0FBQyxPQUFPO0lBQ2pCO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxHQUFHLENBQUM7QUFDckQ7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsR0FBRyxDQUFDO0FBQ3JEO0FBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLE9BQU8sQ0FBQztJQUMzRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLE9BQU8sQ0FBQztBQUMzRDtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxFQUFFLENBQUM7SUFDdEQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDbEQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLENBQUM7QUFDbkQ7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsUUFBUSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDaEQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLENBQUM7QUFDbkQ7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2xELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxPQUFPLEVBQUUsRUFBRSxDQUFDO0lBQ3ZELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDO0lBQ25ELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDO0FBQ25EO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUN2RCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQztJQUNuRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQztBQUNuRDtBQUNBO0lBQ0EsU0FBUyxDQUFDO0lBQ1YsS0FBSztJQUNMLElBQUksWUFBWSxFQUFFLENBQUM7QUFDbkI7QUFDQTtJQUNBLElBQUksU0FBUyxjQUFjLEdBQUc7QUFDOUI7SUFDQSxRQUFRLE1BQU0sQ0FBQyxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsU0FBUyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQzNELFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDaEMsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNqQyxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ2pDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDakMsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztBQUNoQztJQUNBLFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLGNBQWMsRUFBRSxDQUFDO0FBQ3JDO0FBQ0E7SUFDQSxRQUFRLE1BQU0sSUFBSSxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdEMsUUFBUSxNQUFNLElBQUksR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN4RTtJQUNBLFFBQVEsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN0QyxRQUFRLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDdEMsUUFBUSxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3RDO0lBQ0EsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdkQsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdkQsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDdEQ7SUFDQSxRQUFRLE1BQU0sSUFBSSxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdEMsUUFBUSxNQUFNLElBQUksR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN4RTtJQUNBLFFBQVEsQ0FBQyxDQUFDLE9BQU87SUFDakI7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLFFBQVEsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7QUFDMUQ7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsT0FBTyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0FBQ3JEO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztBQUNqRDtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUM7QUFDeEQ7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsUUFBUSxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQztBQUMzRDtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxJQUFJLENBQUM7SUFDdEQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxJQUFJLENBQUM7QUFDdEQ7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsT0FBTyxFQUFFLEVBQUUsRUFBRSxJQUFJLENBQUM7QUFDakQ7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsUUFBUSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUM7QUFDcEQ7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsSUFBSSxDQUFDO0lBQ3RELFNBQVMsQ0FBQztJQUNWLEtBQUs7SUFDTCxJQUFJLGNBQWMsRUFBRSxDQUFDO0FBQ3JCO0FBQ0E7SUFDQSxJQUFJLFNBQVMsUUFBUSxHQUFHO0lBQ3hCLFFBQVEsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDckQsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNoQyxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3BDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDaEM7SUFDQSxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxjQUFjLEVBQUUsQ0FBQztBQUNyQztJQUNBLFFBQVEsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNyQyxRQUFRLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDbEU7SUFDQSxRQUFRLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDcEM7SUFDQSxRQUFRLE1BQU0sT0FBTyxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDOUMsUUFBUSxNQUFNLE9BQU8sSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQzlFLFFBQVEsTUFBTSxPQUFPLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDaEYsUUFBUSxNQUFNLE9BQU8sSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNoRixRQUFRLE1BQU0sS0FBSyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzlFO0lBQ0EsUUFBUSxNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMzQyxRQUFRLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDckMsUUFBUSxNQUFNLEtBQUssR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3ZDLFFBQVEsTUFBTSxLQUFLLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDOUM7SUFDQSxRQUFRLE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzNDLFFBQVEsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNyQyxRQUFRLE1BQU0sS0FBSyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDdkMsUUFBUSxNQUFNLEtBQUssR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUM5QyxRQUFRLENBQUMsQ0FBQyxPQUFPO0lBQ2pCO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0FBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFLEtBQUssQ0FBQztJQUMxRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFLEtBQUssQ0FBQztJQUMxRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFLEtBQUssQ0FBQztJQUMxRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFLEtBQUssQ0FBQztBQUMxRDtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDOUQ7SUFDQSxTQUFTLENBQUM7QUFDVjtJQUNBLEtBQUs7SUFDTCxJQUFJLFFBQVEsRUFBRSxDQUFDO0FBQ2Y7SUFDQSxJQUFJLFNBQVMsZUFBZSxHQUFHO0lBQy9CLFFBQVEsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsYUFB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QUMvQixRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQy9CO0lBQ0EsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsY0FBYyxFQUFFLENBQUM7QUFDckM7SUFDQSxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDbkMsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ25FLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDckUsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNyRSxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3JFLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7QUFDckU7SUFDQSxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDbkMsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ25FLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDckUsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNyRSxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3JFLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7QUFDckU7SUFDQSxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3JELFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDckQsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNyRCxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3JELFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDckQsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNyRCxRQUFRLE1BQU0sR0FBRyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3RELFFBQVEsTUFBTSxHQUFHLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7QUFDdEQ7QUFDQTtJQUNBLFFBQVEsQ0FBQyxDQUFDLE9BQU87SUFDakI7SUFDQTtJQUNBO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsQ0FBQztJQUNuRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLFFBQVEsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2hELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2xELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsR0FBRyxDQUFDO0lBQ25ELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ25ELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsUUFBUSxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7SUFDbEQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7SUFDckQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLENBQUM7SUFDbkQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxFQUFFLENBQUM7QUFDcEQ7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsR0FBRyxDQUFDO0lBQ25ELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsUUFBUSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDaEQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDbEQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxHQUFHLENBQUM7SUFDbkQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDbkQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxRQUFRLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztJQUNsRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztJQUNyRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQztJQUNuRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQztBQUNwRDtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxHQUFHLENBQUM7SUFDbkQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxRQUFRLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNoRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNsRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsQ0FBQztJQUNuRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNuRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLFFBQVEsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0lBQ2xELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0lBQ3JELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDO0lBQ25ELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDO0FBQ3BEO0lBQ0E7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2xELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2xELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2xEO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDbEQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDbEQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7QUFDbEQ7SUFDQTtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLEVBQUUsR0FBRyxDQUFDO0lBQzVFLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ25ELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2xELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ25EO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDbEQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDbEQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7QUFDbEQ7SUFDQTtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDbEQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDbEQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDbEQ7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNsRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNsRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztBQUNsRDtJQUNBLFNBQVMsQ0FBQztJQUNWLEtBQUs7QUFDTDtBQUNBO0lBQ0EsSUFBSSxTQUFTLGtCQUFrQixDQUFDLFFBQVEsRUFBRSxhQUFhLEVBQUUsTUFBTSxFQUFFO0lBQ2pFLFFBQVEsTUFBTSxnQkFBZ0IsR0FBRyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxJQUFJLEVBQUUsQ0FBQyxD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R0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRSxzQkFBc0IsQ0FBQyxDQUFDO0lBQ3JFLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDL0IsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztBQUMvQjtJQUNBLFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLGNBQWMsRUFBRSxDQUFDO0FBQ3JDO0lBQ0EsUUFBUSxNQUFNLEdBQUcsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3BDLFFBQVEsTUFBTSxHQUFHLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNwQyxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3JELFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDckQsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNyRCxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3JELFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDckQsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNyRCxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxT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QUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7QUFDbEQ7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsZ0JBQWdCLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztBQUN4RDtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7QUFDbEQ7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsZ0JBQWdCLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztBQUN4RDtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7QUFDbEQ7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsZ0JBQWdCLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztBQUN4RDtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7QUFDbEQ7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0FBQ2xEO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsQ0FBQztBQUNuRDtJQUNBLFNBQVMsQ0FBQztJQUNWLEtBQUs7QUFDTDtBQUNBO0lBQ0EsSUFBSSxTQUFTLDJCQUEyQixHQUFHO0lBQzNDLFFBQVEsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUseUJBQXlCLENBQUMsQ0FBQztJ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LENBQUMsQ0FBQztBQUNuRTtJQUNBLFFBQVEsTUFBTSxHQUFHLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7QUFDdEQ7SUFDQSxRQUFRLE1BQU0sTUFBTSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3pELFFBQVEsTUFBTSxNQUFNLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDekQsUUFBUSxNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMzQyxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDcEMsUUFBUSxNQUFNLEdBQUcsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3JDLFFBQVEsTUFBTSxNQUFNLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN4QyxRQUFRLE1BQU0sTUFBTSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQy9DLFFBQVEsTUFBTSxHQUFHLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDNUMsUUFBUSxNQUFNLE1BQU0sR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMvQyxRQUFRLE1BQU0sTUFBTSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN0RCxRQUFRLE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lB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QUM7SUFDM0QsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLENBQUM7SUFDOUQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sQ0FBQztBQUNwRDtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDO0lBQzNELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxDQUFDO0lBQzlELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLENBQUM7QUFDcEQ7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQztJQUMzRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sQ0FBQztJQUM5RCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxDQUFDO0FBQ3BEO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsR0FBRyxDQUFDO0FBQzNDO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxjQUFjLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQztJQUN6RSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLFdBQVcsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztB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QUU7SUFDakIsSUFBSTtJQUNKLFFBQVEsQ0FBQyxDQUFDLENBQUMsR0FBRyxVQUFVLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLFVBQVUsR0FBRyxFQUFFLElBQUksQ0FBQztJQUM3RCxTQUFTLENBQUMsQ0FBQyxHQUFHLFVBQVUsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksVUFBVSxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDN0QsU0FBUyxDQUFDLENBQUMsR0FBRyxVQUFVLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLFVBQVUsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzdELFNBQVMsQ0FBQyxDQUFDLEdBQUcsVUFBVSxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxVQUFVLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM3RCxTQUFTLENBQUMsQ0FBQyxHQUFHLFVBQVUsTUFBTSxDQUFDLENBQUM7SUFDaEMsTUFBTTtJQUNOLENBQUM7QUFDRDtJQUNBLFNBQVMsZUFBZSxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUU7SUFDdEMsSUFBSSxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQztJQUN0QyxJQUFJLE1BQU0sSUFBSSxHQUFHQSxNQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDekIsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxFQUFFO0lBQ3hCLFFBQVEsTUFBTSxJQUFJLEtBQUssQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDO0lBQ3RELEtBQUs7SUFDTCxJQUFJLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7SUFDaEMsUUFBUSxNQUFNLENBQUMsR0FBRyxVQUFVLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ3RDLFFBQVEsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFO0lBQ25CLFlBQVksTUFBTSxHQUFHLEdBQUcs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Q0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM3RCxRQUFRLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDdkQ7SUFDQSxRQUFRLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDekMsUUFBUSxJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDaEQ7SUFDQSxRQUFRLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDcEMsUUFBUSxJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3BDO0lBQ0EsUUFBUSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxFQUFFLEVBQUU7SUFDbEMsWUFBWSxNQUFNLElBQUksS0FBSyxDQUFDLDRCQUE0QixDQUFDLENBQUM7SUFDMUQsU0FBUztBQUNUO0lBQ0EsUUFBUSxJQUFJLENBQUMsSUFBSSxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQzVDLFFBQVEsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDO0lBQzVCLFFBQVEsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM5QyxRQUFRLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLEVB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QUMsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN4RixRQUFRLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDbkQsS0FBSztBQUNMO0lBQ0EsSUFBSSxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUU7SUFDMUIsUUFBUSxJQUFJLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3RDLFFBQVEsSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN0QyxRQUFRLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3RGLEtBQUs7QUFDTDtJQUNBLElBQUksR0FBRyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUU7SUFDbkIsUUFBUSxJQUFJLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3RDLFFBQVEsSUFBSSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDN0UsUUFBUSxPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ25ELEtBQUs7QUFDTDtJQUNBLElBQUksT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVB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LElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUNoQztJQUNBLFFBQVEsSUFBSSxDQUFDLElBQUksR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDckMsUUFBUSxJQUFJLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNyQyxRQUFRLElBQUksQ0FBQyxJQUFJLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3JDLFFBQVEsSUFBSSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLE1BQU0sR0FBRyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDOUQsUUFBUSxJQUFJLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDbkQsUUFBUSxJQUFJLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM3RCxRQUFRLElBQUksQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUNsRDtJQUNBLFFBQVEsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN6QyxRQUFRLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNoRDtJQUNBLEtBQUs7QUFDTDtJQUNBLElBQUksR0FBRyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFO0lBQ3RCLFFBQVEsSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN0QyxRQUFRLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDdEMsUUFBUSxJQUFJLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3hGLFFBQVEsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNuRCxLQUFLO0FBQ0w7SUFDQSxJQUFJLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRTtJQUMxQixRQUFRLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDdEMsUUFBUSxJQUFJLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3RDLFFBQVEsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdEYsS0FBSztBQUNMO0lBQ0EsSUFBSSxHQUFHLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRTtJQUNuQixRQUFRLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFD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LENBQUM7SUFDcEMsS0FBSztBQUNMO0lBQ0EsSUFBSSxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRTtJQUNkLFFBQVEsSUFBSSxFQUFFLENBQUMsWUFBWSxVQUFVLENBQUMsRUFBRTtJQUN4QyxZQUFZLENBQUMsR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDL0IsU0FBUztJQUNULFFBQVEsSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN0QyxRQUFRLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDdEMsUUFBUSxJQUFJLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdEcsUUFBUSxPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ25ELEtBQUs7QUFDTDtJQUNBLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUU7SUFDWixRQUFRLElBQUksQ0FBQyxZQUFZLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUM5QyxRQUFRLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLElBQUksQ0FBQyxDQUFDLEVBQUU7SUFDbkQsWUFBWSxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDekMsWUFBWSxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDekMsWUFBWSxNQUFNLEdBQUcsR0FBRyxJQUFJLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNwRCxZQUFZLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDeEIsWUFBWSxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNyQyxZQUFZLE9BQU8sR0FBRyxDQUFDO0lBQ3ZCLFNBQVMsTUFBTTtJQUNmLFlBQVksTUFBTSxJQUFJLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUMxQyxTQUFTO0lBQ1QsS0FBSztBQUNMO0lBQ0EsSUFBSSxRQUFRLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRTtJQUN2QixRQUFRLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDakUsUUFBUSxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDOUQsUUFBUSxPQUFPLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2hDLEtBQUs7QUFDTDtJQUNBLElBQUksT0FBTyxDQUFDLEdBQUcsRUFBRTtJQUNqQixRQUFRLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3ZDLFFBQVEsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDdkMsUUFBUSxNQUFNLEdBQUcsR0FBRyxJQUFJLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNoRCxRQUFRLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDcEIsUUFBUSxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQy9CLFFBQVEsT0FBTyxHQUFHLENBQUM7SUFDbkIsS0FBSztBQUNMO0lBQ0EsSUFBSSxNQUFNLEdBQUc7SUFDYixRQUFRLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDO0lBQzVDLEtBQUs7QUFDTDtJQUNBLElBQUksUUFBUSxDQUFDLENBQUMsRUFBRTtJQUNoQixRQUFRLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUMxRCxRQUFRLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNwRSxRQUFRLE9BQU8sQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDeEIsS0FBSztBQUNMO0lBQ0EsSUFBSSxVQUFVLENBQUMsQ0FBQyxFQUFFO0lBQ2xCLFFBQVEsTUFBTSxJQUFJLEdBQUcsSUFBSSxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDakQsUUFBUSxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMzQyxRQUFRLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzNDLFFBQVEsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNyQixRQUFRLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDaEMsUUFBUSxPQUFPLElBQUksQ0FBQztJQUNwQixLQUFLO0FBQ0w7SUFDQSxJQUFJLEVBQUUsQ0FBQyxDQUFDLEVBQUU7SUFDVixRQUFRLE9BQU8sQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNyQyxLQUFLO0FBQ0w7SUFDQSxJQUFJLEVBQUUsQ0FBQyxDQUFDLEVBQUU7SUFDVixRQUFRLE9BQU8sQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2xDLEtBQUs7QUFDTDtJQUNBLENBQUM7QUFDRDtJQUNBLE1BQU0sVUFBVSxDQUFDO0FBQ2pCO0lBQ0EsSUFBSSxXQUFXLENBQUMsRUFBRSxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUU7SUFDL0IsUUFBUSxJQUFJLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQztJQUNyQixRQUFRLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO0FBQzdCO0lBQ0EsUUFBUSxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNuQixRQUFRLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO0lBQ3pCLFFBQVEsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN6QixRQUFRLElBQUksQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzlCLFFBQVEsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDaEMsUUFBUSxJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUNoQztJQUNBLFFBQVEsSUFBSSxDQUFDLElBQUksR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDckMsUUFBUSxJQUFJLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNyQyxRQUFRLElBQUksQ0FBQyxJQUFJLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3JDLFFBQVEsSUFBSSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLE1BQU0sR0FBRyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDOUQsUUFBUSxJQUFJLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDbkQsUUFBUSxJQUFJLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM3RCxRQUFRLElBQUksQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUNsRDtJQUNBLFFBQVEsSUFBSSxD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LFFBQVEsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDdEMsS0FBSztBQUNMO0lBQ0EsSUFBSSxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRTtJQUNkLFFBQVEsSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN0QyxRQUFRLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDdEMsUUFBUSxJQUFJLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxVQUFVLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNqRixRQUFRLElBQUksQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDeEYsUUFBUSxPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ25ELEtBQUs7QUFDTDtJQUNBLElBQUksTUFBTSxDQUFDLENBQUMsRUFBRTtJQUNkLFFBQVEsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN0QyxLQUFLO0FBQ0w7SUFDQSxJQUFJLFFBQVEsQ0FBQyxDQUFDLEVBQUU7SUFDaEIsUUFBUSxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzVDLEtBQUs7QUFDTDtJQUNBLElBQUksSUFBSSxDQUFDLENBQUMs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TDtJQUNBLElBQUksTUFBTSxHQUFHO0lBQ2IsUUFBUSxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQztJQUM1QyxLQUFLO0FBQ0w7SUFDQSxJQUFJLFFBQVEsQ0FBQyxDQUFDLEVBQUU7SUFDaEIsUUFBUSxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDMUQsUUFBUSxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDcEUsUUFBUSxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3RFLFFBQVEsT0FBTyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDNUIsS0FBSztBQUNMO0lBQ0EsSUFBSSxVQUFVLENBQUMsQ0FBQyxFQUFFO0lBQ2xCLFFBQVEsTUFBTSxJQUFJLEdBQUcsSUFBSSxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDakQsUUFBUSxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMzQyxRQUFRLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzNDLFFBQVEsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDM0MsUUFBUSxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3JCLFFBQVEsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNoQyxRQUFRLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2xDLFFBQVEsT0FBTyxJQUFJLENBQUM7SUFDcEIsS0FBSztBQUNMO0lBQ0EsSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUFFO0lBQ1YsUUFBUSxPQUFPLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDckMsS0FBSztBQUNMO0lBQ0EsSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUFFO0lBQ1YsUUFBUSxPQUFPLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDL0MsS0FBSztBQUNMO0lBQ0EsSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUFFO0lBQ1YsUUFBUSxPQUFPLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDcEMsS0FBSztBQUNMO0lBQ0EsQ0FBQztBQUNEO0lBQ0EsTUFBTSxTQUFTLENBQUM7QUFDaEI7SUFDQSxJQUFJLFdBQVcsQ0FBQyxFQUFFLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRTtJQUNwRCxRQUFRLElBQUksQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDO0lBQ3JCLFFBQVEsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7SUFDN0IsUUFBUSxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNuQjtJQUNBLFFBQVEsSUFBSSxDQUFDLElBQUksR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDckMsUUFBUSxJQUFJLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNyQyxRQUFRLElBQUksQ0FBQyxJQUFJLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3JDLFFBQVEsSUFBSSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLE1BQU0sR0FBRyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDOUQsUUFBUSxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN2RCxRQUFRLElBQUksQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEdBQUcsYUFBYSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3BFLFFBQVEsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDN0QsUUFBUSxJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsRUFB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TyxJQUFJLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3ZELEtBQUs7QUFDTDtJQUNBLElBQUksT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFO0lBQzFCLFFBQVEsSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN0QyxRQUFRLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDdEMsUUFBUSxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2pHLEtBQUs7QUFDTDtJQUNBLElBQUksR0FBRyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUU7SUFDbkIsUUFBUSxJQUFJLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3RDLFFBQVEsSUFBSSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDN0UsUUFBUSxPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdkQsS0FBSztBQUNMO0lBQ0EsSUFBSSxTQUFTLENBQUMsTUFBTSxFQUFF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LFlBQVksSUFBSSxHQUFHLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzVDLFNBQVMsTUFBTTtJQUNmLFlBQVksTUFBTSxHQUFHLEtBQUssQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDO0lBQ2xDLFlBQVksSUFBSSxHQUFHLFNBQVMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBQ3ZDLFNBQVM7QUFDVDtJQUNBLFFBQVEsTUFBTSxVQUFVLEdBQUcsRUFBRSxDQUFDO0lBQzlCLFFBQVEsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUNuQztJQUNBLFlBQVksTUFBTSxJQUFJLEdBQUcsRUFBRSxDQUFDO0FBQzVCO0lBQ0EsWUFBWSxNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDL0QsWUFBWSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQy9ELFlBQVksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7QUFDbkU7SUFDQSxZQUFZLE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbEUsWUFBWSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQy9ELFlBQVksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7QUFDbkU7SUFDQSxZQUFZLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUNoRTtJQUNBLFlBQVksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLEtBQUssQ0FBQyxJQUFJLEdBQUcsWUFBWSxFQUFFLE1BQU0sRUFBRTtJQUMvRSxnQkFBZ0IsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBQ3hCLGdCQUFnQixDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDeEIsYUFBYSxDQUFDLENBQUMsQ0FBQztBQUNoQjtJQUNBLFlBQVksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLEtBQUssQ0FBQyxJQUFJLEdBQUcsWUFBWSxFQUFFLE1BQU0sRUFBRTtJQUMvRSxnQkFBZ0IsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBQ3hCLGdCQUFnQixDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDeEIsYUFBYSxDQUFDLENBQUMsQ0FBQztBQUNoQjtJQUNBLFlBQVksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLEtBQUssQ0FBQyxJQUFJLEdBQUcsYUFBYSxFQUFFLE1BQU0sRUFBRTtJQUNoRixnQkFBZ0IsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBQ3hCLGdCQUFnQixDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDeEIsZ0JBQWdCLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztJQUN4QixhQUFhLENBQUMsQ0FBQyxDQUFDO0FBQ2hCO0lBQ0EsWUFBWSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUN0RTtJQUNBLFlBQVksVUFBVSxDQUFDLElBQUk7SUFDM0IsZ0JBQWdCLEVBQUUsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDO0lBQ3BDLGFBQWEsQ0FBQztJQUNkLFNBQVM7QUFDVDtBQUNBO0lBQ0EsUUFBUSxNQUFNLE1BQU0sR0FBRyxNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUM7QUFDckQ7SUFDQSxRQUFRLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUN6QixRQUFRLE1BQU0sSUFBSSxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUMzQyxRQUFRLEVBQUUsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUMxQztJQUNBLFFBQVEsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7SUFDNUMsWUFBWSxNQUFNLEdBQUcsR0FBRyxFQUFFLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ25ELFlBQVksRUFBRSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDekQsU0FBUztJQUNULFFBQVEsRUFBRSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksR0FBRyxzQkFBc0IsQ0FBQyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztBQUM3RTtJQUNBLFFBQVEsTUFBTSxHQUFHLEdBQUcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUN6QztJQUNBLFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFDMUQ7SUFDQSxRQUFRLEVBQUUsQ0FBQyxTQUFTLEVBQUUsQ0FBQztBQUN2QjtJQUNBLFFBQVEsT0FBTyxDQUFDLENBQUM7SUFDakIsS0FBSyxDQUFDO0FBQ047SUFDQSxJQUFJLEtBQUssQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDLEVBQUU7SUFDbEMsUUFBUSxJQUFJLENBQUMsRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQzlCLFFBQVEsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDeEMsUUFBUSxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDcEQsUUFBUSxJQUFJLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksR0FBRyxZQUFZLENBQUMsQ0FBQyxFQUFFLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDdkUsUUFBUSxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzNELFFBQVEsSUFBSSxDQUFDLEVBQUUsQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUM1QixRQUFRLE9BQU8sR0FBRyxDQUFDO0lBQ25CLEtBQUssQ0FBQztBQUNOO0lBQ0EsSUFBSSxLQUFLLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQyxFQUFFO0lBQ2xDLFFBQVEsSUFBSSxDQUFDLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUM5QixRQUFRLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3hDLFFBQVEsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3BELFFBQVEsSUFBSSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLEdBQUcsWUFBWSxDQUFDLENBQUMsRUFBRSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ3ZFLFFBQVEsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUMzRCxRQUFRLElBQUksQ0FBQyxFQUFFLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDNUIsUUFBUSxPQUFPLEdBQUcsQ0FBQztJQUNuQixLQUFLLENBQUM7QUFDTjtJQUNBLElBQUksS0FBSyxDQUFDLFVBQVUsR0FBRyxTQUFTLElBQUksRUFBRSxJQUFJLEVBQUU7SUFDNUMsUUFBUSxJQUFJLENBQUMsRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQzlCLFFBQVEsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDOUMsUUFBUSxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM5QyxRQUFRLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDL0MsUUFBUSxJQUFJLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksR0FBRyxhQUFhLENBQUMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFD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QyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFDckQ7SUFDQSxZQUFZLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzNELFlBQVksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN0RCxZQUFZLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzNELFlBQVksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN0RCxZQUFZLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUM7SUFDbkUsWUFBWSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQzVELFlBQVksSUFBSSxRQUFRLEVBQUU7SUFDMUIsZ0JBQWdCLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsTUFBTSxFQUFFLE1BQU0sQ0FBQyxRQUFRLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FB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QUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzdDLFlBQVksQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUM7SUFDdkMsU0FBUztBQUNUO0lBQ0EsUUFBUSxPQUFPLFdBQVcsQ0FBQztJQUMzQixLQUFLLENBQUM7SUFDTixDQUFDO0FBQ0Q7SUFDQSxlQUFlLFdBQVcsQ0FBQyxNQUFNLEVBQUU7QUFDbkM7SUFDQSxJQUFJLE1BQU0sRUFBRSxHQUFHLE1BQU0sa0JBQWtCLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7QUFDMUU7QUFDQTtJQUNBLElBQUksTUFBTSxLQUFLLEdBQUcsRUFBRSxDQUFDO0FBQ3JCO0lBQ0EsSUFBSSxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO0lBQzFDLElBQUksS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztJQUMxQyxJQUFJLEtBQUssQ0FBQyxJQUFJLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQztJQUM3QixJQUFJLEtBQUssQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDO0lBQ2xCLElBQUksS0FBSyxDQUFDLFFBQVEsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUMxQyxJQUFJLEtBQUssQ0FBQyxRQUFRLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDMUMsSUFBSSxLQUFLLENBQUMsRUFBRSxHQUFHLElBQUksVUFBVSxDQUFDLEVBQUUsRUFBRSxLQUFLLEVBQUUsTUFBTSxDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDL0QsSUFBSSxLQUFLLENBQUMsRUFBRSxHQUFHLElBQUksVUFBVSxDQUFDLEVBQUUsRUFBRSxLQUFLLEVBQUUsTUFBTSxDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDL0QsSUFBSSxLQUFLLENBQUMsRUFBRSxHQUFHLElBQUksVUFBVSxDQUFDLEVBQUUsRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ25ELElBQUksS0FBSyxDQUFDLEVBQUUsR0FBRyxJQUFJLFNBQVMsQ0FBQyxFQUFFLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxFQUFFLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQzNHLElBQUksS0FBSyxDQUFDLEVBQUUsR0FBRyxJQUFJLFNBQVMsQ0FBQyxFQUFFLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxFQUFFLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQzNHLElBQUksS0FBSyxDQUFDLEVBQUUsR0FBRyxJQUFJLFVBQVUsQ0FBQyxFQUFFLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNuRCxJQUFJLEtBQUssQ0FBQyxHQUFHLEdBQUcsSUFBSSxVQUFVLENBQUMsRUFBRSxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDcEQ7SUFDQSxJQUFJLEtBQUssQ0FBQyxFQUFFLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQztBQUN6QjtJQUNBLElBQUksa0JBQWtCLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ3BDLElBQUksa0JBQWtCLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ3BDLElBQUksa0JBQWtCLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO0FB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QUUsSUFBSSxFQUFFLEdBQUcsU0FBUyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDdkQsS0FBSztBQUNMO0lBQ0EsSUFBSSxRQUFRLENBQUMsU0FBUyxFQUFFO0lBQ3hCLFFBQVEsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDeEQsUUFBUSxJQUFJLEdBQUcsS0FBSyxTQUFTO0lBQzdCLFlBQVksTUFBTSxJQUFJLEtBQUssQ0FBQyxDQUFDLHNDQUFzQyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQy9HLFFBQVEsT0FBTyxDQUFDLElBQUksRUFBRSxHQUFHLFNBQVMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBQzNDLEtBQUs7QUFDTDtJQUNBLElBQUksV0FBVyxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFO0lBQzFDLFFBQVEsTUFBTSxNQUFNLEdBQUcsT0FBTyxJQUFJLENBQUMsQ0FBQztJQUNwQyxRQUFRLE1BQU0sS0FBSyxHQUFHLENBQUMsTUFBTSxLQUFLLFNBQVMsSUFBSSxDQUFDLEdBQUcsTUFBTSxDQUFDO0lBQzFELFFBQVEsT0FBTyxDQUFDLEdBQUcsT0FBTyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsR0FBRyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUMvRCxLQUFLO0FBQ0w7SUFDQSxJQUFJLFdBQVcsQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRTtJQUMxQyxRQUFRLE1BQU0sTUFBTSxHQUFHLE9BQU8sSUFBSSxDQUFDLENBQUM7SUFDcEMsUUFBUSxNQUFNLEtBQUssR0FBRyxDQUFDLE1BQU0sS0FBSyxTQUFTLElBQUksQ0FBQyxHQUFHLE1BQU0sQ0FBQztJQUMxRCxRQUFRLE9BQU8sQ0FBQyxHQUFHLE9BQU8sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEdBQUcsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDL0QsS0FBSztBQUNMO0lBQ0EsSUFBSSxZQUFZLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUU7SUFDM0MsUUFBUSxNQUFNLE1BQU0sR0FBRyxPQUFPLElBQUksQ0FBQyxDQUFDO0lBQ3BDLFFBQVEsTUFBTSxLQUFLLEdBQUcsQ0FBQyxNQUFNLEtBQUssU0FBUyxJQUFJLENBQUMsR0FBRyxNQUFNLENBQUM7SUFDMUQsUUFBUSxPQUFPLENBQUMsR0FBRyxPQUFPLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxHQUFHLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQy9ELEtBQUs7QUFDTDtJQUNBLElBQUksWUFBWSxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFO0lBQzNDLFFBQVEsTUFBTSxNQUFNLEdBQUcsT0FBTyxJQUFJLENBQUMsQ0FBQztJQUNwQyxRQUFRLE1BQU0sS0FBSyxHQUFHLENBQUMsTUFBTSxLQUFLLFNBQVMsSUFBSSxDQUFDLEdBQUcsTUFBTSxDQUFDO0lBQzFELFFBQVEsT0FBTyxDQUFDLEdBQUcsT0FBTyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsR0FBRyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUMvRCxLQUFLO0FBQ0w7SUFDQSxJQUFJLFlBQVksQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRTtJQUMzQyxRQUFRLE1BQU0sTUFBTSxHQUFHLE9BQU8sSUFBSSxDQUFDLENBQUM7SUFDcEMsUUFBUSxNQUFNLEtBQUssR0FBRyxDQUFDLE1BQU0sS0FBSyxTQUFTLElBQUksQ0FBQyxHQUFHLE1BQU0sQ0FBQztJQUMxRCxRQUFRLE9BQU8sQ0FBQyxHQUFHLE9BQU8sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEdBQUcsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDL0QsS0FBSztBQUNMO0lBQ0EsSUFBSSxZQUFZLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFN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QUFDLENBQUM7SUFDcEMsUUFBUSxNQUFNLEtBQUssR0FBRyxDQUFDLE1BQU0sS0FBSyxTQUFTLElBQUksQ0FBQyxHQUFHLE1BQU0sQ0FBQztJQUMxRCxRQUFRLE9BQU8sQ0FBQyxHQUFHLE9BQU8sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEdBQUcsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDL0QsS0FBSztBQUNMO0lBQ0EsSUFBSSxZQUFZLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUU7SUFDM0MsUUFBUSxNQUFNLE1BQU0sR0FBRyxPQUFPLElBQUksQ0FBQyxDQUFDO0lBQ3BDLFFBQVEsTUFBTSxLQUFLLEdBQUcsQ0FBQyxNQUFNLEtBQUssU0FBUyxJQUFJLENBQUMsR0FBRyxNQUFNLENBQUM7SUFDMUQsUUFBUSxPQUFPLENBQUMsR0FBRyxPQUFPLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxHQUFHLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQy9ELEtBQUs7QUFDTDtJQUNBLElBQUksWUFBWSxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFO0lBQzNDLFFBQVEsTUFBTSxNQUFNLEdBQUcsT0FBTyxJQUFJLENBQUMsQ0FBQztJQUNwQyxRQUFRLE1BQU0sS0FBSyxHQUFHLENBQUMsTUFBTSxLQUFLLFNBQVMsSUFBSSxDQUFDLEdBQUcsTUFBTSxDQUFDO0lBQzFELFFBQVEsT0FBTyxDQUFDLEdBQUcsT0FBTyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsR0FBRyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUMvRCxLQUFLO0FBQ0w7SUFDQSxJQUFJLFFBQVEsQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRTtJQUN2QyxRQUFRLE1BQU0sTUFBTSxHQUFHLE9BQU8sSUFBSSxDQUFDLENBQUM7SUFDcEMsUUFBUSxNQUFNLEtBQUssR0FBRyxDQUFDLE1BQU0sS0FBSyxTQUFTLElBQUksQ0FBQyxHQUFHLE1BQU0sQ0FBQztJQUMxRCxRQUFRLE9BQU8sQ0FBQyxHQUFHLE9BQU8sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEdBQUcsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDL0QsS0FBSztBQUNMO0lBQ0EsSUFBSSxTQUFTLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFO0lBQ2xELFFBQVEsSUFBSSxNQUFNLEVBQUUsS0FBSyxFQUFFLE9BQU8sQ0FBQztJQUNuQyxRQUFRLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRTtJQUNwQyxZQUFZLE1BQU0sR0FBRyxDQUFDLENBQUM7SUFDdkIsWUFBWSxLQUFLLEdBQUcsQ0FBQyxDQUFDO0lBQ3RCLFlBQVksT0FBTyxHQUFHLE9BQU8sQ0FBQztJQUM5QixTQUFTLE1BQU0sSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFO0lBQzFDLFlBQVksTUFBTSxHQUFHLE9BQU8sQ0FBQztJQUM3QixZQUFZLEtBQUssR0FBRyxDQUFDLENBQUM7SUFDdEIsWUFBWSxPQUFPLEdBQUcsTUFBTSxDQUFDO0lBQzdCLFNBQVMsTUFBTSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEVBQUU7SUFDNUMsWUFBWSxNQUFNLEdBQUcsT0FBTyxDQUFDO0lBQzdCLFlBQVksS0FBSyxHQUFHLE1BQU0sQ0FBQztJQUMzQixZQUFZLE9BQU8sR0FBRyxRQUFRLENBQUM7SUFDL0IsU0FBUztJQUNULFFBQVEsT0FBTyxDQUFDLEdBQUcsT0FBTyxFQUFFLEdBQUcsT0FBTyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsR0FBRyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUMzRSxLQUFLO0FBQ0w7QUFDQTtJQUNBLElBQUksV0FBVyxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRTtJQUNwRCxRQUFRLElBQUksTUFBTSxFQUFFLEtBQUssRUFBRSxPQUFPLENBQUM7SUFDbkMsUUFBUSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUU7SUFDcEMsWUFBWSxNQUFNLEdBQUcsQ0FBQyxDQUFDO0lBQ3ZCLFlBQVksS0FBSyxHQUFHLENBQUMsQ0FBQztJQUN0QixZQUFZLE9BQU8sR0FBRyxPQUFPLENBQUM7SUFDOUIsU0FBUyxNQUFNLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRTtJQUMxQyxZQUFZLE1BQU0sR0FBRyxPQUFPLENBQUM7SUFDN0IsWUFBWSxLQUFLLEdBQUcsQ0FBQyxDQUFDO0lBQ3RCLFlBQVksT0FBTyxHQUFHLE1BQU0sQ0FBQztJQUM3QixTQUFTLE1BQU0sSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxFQUFFO0lBQzVDLFlBQVksTUFBTSxHQUFHLE9BQU8sQ0FBQztJQUM3QixZQUFZLEtBQUssR0FBRyxNQUFNLENBQUM7SUFDM0IsWUFBWSxPQUFPLEdBQUcsUUFBUSxDQUFDO0lBQy9CLFNBQVM7SUFDVCxRQUFRLE9BQU8sQ0FBQyxHQUFHLE9BQU8sRUFBRSxHQUFHLE9BQU8sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEdBQUcsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDM0UsS0FBSztBQUNMO0lBQ0EsSUFBSSxVQUFVLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFO0lBQ25ELFFBQVEsSUFBSSxNQUFNLEVBQUUsS0FBSyxFQUFFLE9BQU8sQ0FBQztJQUNuQyxRQUFRLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRTtJQUNwQyxZQUFZLE1BQU0sR0FBRyxDQUFDLENBQUM7SUFDdkIsWUFBWSxLQUFLLEdBQUcsQ0FBQyxDQUFDO0lBQ3RCLFlBQVksT0FBTyxHQUFHLE9BQU8sQ0FBQztJQUM5QixTQUFTLE1BQU0sSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFO0lBQzFDLFlBQVksTUFBTSxHQUFHLE9BQU8sQ0FBQztJQUM3QixZQUFZLEtBQUssR0FBRyxDQUFDLENBQUM7SUFDdEIsWUFBWSxPQUFPLEdBQUcsTUFBTSxDQUFDO0lBQzdCLFNBQVMsTUFBTSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEVBQUU7SUFDNUMsWUFBWSxNQUFNLEdBQUcsT0FBTyxDQUFDO0lBQzdCLFlBQVksS0FBSyxHQUFHLE1BQU0sQ0FBQztJQUMzQixZQUFZLE9BQU8sR0FBRyxRQUFRLENBQUM7SUFDL0IsU0FBUztJQUNULFFBQVEsT0FBTyxDQUFDLEdBQUcsT0FBTyxFQUFFLEdBQUcsT0FBTyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsR0FBRyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUMzRSxLQUFLO0FBQ0w7SUFDQSxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxJQUFJLEVBQUU7SUFDMUIsUUFBUSxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzFELFFBQVEsSUFBSSxHQUFHLEtBQUssU0FBUztJQUM3QixZQUFZLE1BQU0sSUFBSSxLQUFLLENBQUMsQ0FBQyxnQ0FBZ0MsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDekUsUUFBUSxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLEdBQUcsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDaEUsS0FBSztBQUNMO0lBQ0EsSUFBSSxhQUFhLENBQUMsS0FBSyxFQUFFLEdBQUcsSUFBSSxFQUFFO0lBQ2xDLFFBQVEsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxFQUFFLEdBQUcsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDN0QsS0FBSztBQUNMO0lBQ0EsSUFBSSxFQUFFLENBQUMsUUFBUSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUU7SUFDckMsUUFBUSxJQUFJLFFBQVEsRUFBRTtJQUN0QixZQUFZLE9BQU8sQ0FBQyxHQUFHLFFBQVEsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsUUFBUSxFQUFFLElBQUksRUFBRSxHQUFHLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNuRixTQUFTLE1BQU07SUFDZixZQUFZLE9BQU8sQ0FBQyxHQUFHLFFBQVEsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ2hFLFNBQVM7SUFDVCxLQUFLO0FBQ0w7SUFDQSxJQUFJLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxPQUFPLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUFFO0lBQ3pELElBQUksSUFBSSxDQUFDLEdBQUcsSUFBSSxFQUFFO0lBQ2xCLFFBQVEsT0FBTyxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDOUQsS0FBSztJQUNMLElBQUksS0FBSyxDQUFDLE9BQU8sRUFBRSxRQUFRLEVBQUUsRUFBRSxPQUFPLENBQUMsR0FBRyxRQUFRLEVBQUUsSUFBSSxFQUFFLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRTtJQUNuRixJQUFJLEVBQUUsQ0FBQyxPQUFPLEVBQUUsRUFBRSxPQUFPLENBQUMsSUFBSSxFQUFFLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRTtJQUN6RCxJQUFJLEdBQUcsQ0FBQyxLQUFLLEVBQUUsRUFBRSxPQUFPLENBQUMsR0FBRyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUMsRUFBRTtJQUMzQyxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsRUFBRSxPQUFPLENBQUMsR0FBRyxLQUFLLEdBQUcsSUFBSSxDQUFDLENBQUMsRUFBRTtBQUM3QztJQUNBLElBQUksU0FBUyxDQUFDLEdBQUcsRUFBRSxFQUFFLE9BQU8sQ0FBQyxJQUFJLEVBQUUsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFO0lBQ3ZELElBQUksU0FBUyxDQUFDLEdBQUcsRUFBRSxFQUFFLE9BQU8sQ0FBQyxJQUFJLEVBQUUsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFO0FBQ3ZEO0FBQ0E7SUFDQSxJQUFJLE9BQU8sQ0FBQyxNQUFNLEVBQUUsRUFBRSxPQUFPLENBQUMsR0FBRyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUMsRUFBRTtJQUNqRCxJQUFJLE1BQU0sQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLEVBQUUsT0FBTyxDQUFDLEdBQUcsT0FBTyxFQUFFLEdBQUcsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQUU7SUFDdkUsSUFBSSxNQUFNLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxFQUFFLE9BQU8sQ0FBQyxHQUFHLE9BQU8sRUFBRSxHQUFHLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUFFO0lBQ3ZFLElBQUksUUFBUSxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsRUFBRSxPQUFPLENBQUMsR0FBRyxPQUFPLEVBQUUsR0FBRyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUMsRUFBRTtJQUN6RSxJQUFJLFFBQVEsQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLEVBQUUsT0FBTyxDQUFDLEdBQUcsT0FBTyxFQUFFLEdBQUcsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQUU7SUFDekUsSUFBSSxRQUFRLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxFQUFFLE9BQU8sQ0FBQyxHQUFHLE9BQU8sRUFBRSxHQUFHLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUFFO0lBQ3pFLElBQUksUUFBUSxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsRUFBRSxPQUFPLENBQUMsR0FBRyxPQUFPLEVBQUUsR0FBRyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUMsRUFBRTtJQUN6RSxJQUFJLFFBQVEsQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLEVBQUUsT0FBTyxDQUFDLEdBQUcsT0FBTyxFQUFFLEdBQUcsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQUU7SUFDekUsSUFBSSxRQUFRLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxFQUFFLE9BQU8sQ0FBQyxHQUFHLE9BQU8sRUFBRSxHQUFHLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUFFO0lBQ3pFLElBQUksUUFBUSxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsRUFBRSxPQUFPLENBQUMsR0FBRyxPQUFPLEVBQUUsR0FBRyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUMsRUFBRTtJQUN6RSxJQUFJLFFBQVEsQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLEVBQUUsT0FBTyxDQUFDLEdBQUcsT0FBTyxFQUFFLEdBQUcsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQUU7SUFDekUsSUFBSSxPQUFPLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxFQUFFLE9BQU8sQ0FBQyxHQUFHLE9BQU8sRUFBRSxHQUFHLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUFFO0lBQ3hFLElBQUksT0FBTyxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsRUFBRSxPQUFPLENBQUMsR0FBRyxPQUFPLEVBQUUsR0FBRyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUMsRUFBRTtJQUN4RSxJQUFJLE9BQU8sQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLEVBQUUsT0FBTyxDQUFDLEdBQUcsT0FBTyxFQUFFLEdBQUcsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQUU7SUFDeEUsSUFBSSxTQUFTLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxFQUFFLE9BQU8sQ0FBQyxHQUFHLE9BQU8sRUFBRSxHQUFHLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUFFO0lBQzFFLElBQUksU0FBUyxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsRUFBRSxPQUFPLENBQUMsR0FBRyxPQUFPLEVBQUUsR0FBRyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUMsRUFBRTtJQUMxRSxJQUFJLFNBQVMsQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLEVBQUUsT0FBTyxDQUFDLEdBQUcsT0FBTyxFQUFFLEdBQUcsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQUU7SUFDMUUsSUFBSSxTQUFTLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxFQUFFLE9BQU8sQ0FBQyxHQUFHLE9BQU8sRUFBRSxHQUFHLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUFFO0lBQzFFLElBQUksT0FBTyxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsRUFBRSxPQUFPLENBQUMsR0FBRyxPQUFPLEVBQUUsR0FBRyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUMsRUFBRTtJQUN4RSxJQUFJLE1BQU0sQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLEVBQUUsT0FBTyxDQUFDLEdBQUcsT0FBTyxFQUFFLEdBQUcsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQUU7SUFDdkUsSUFBSSxPQUFPLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxFQUFFLE9BQU8sQ0FBQyxHQUFHLE9BQU8sRUFBRSxHQUFHLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUFFO0lBQ3hFLElBQUksT0FBTyxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsRUFBRSxPQUFPLENBQUMsR0FBRyxPQUFPLEVBQUUsR0FBRyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUMsRUFBRTtJQUN4RSxJQUFJLFNBQVMsQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLEVBQUUsT0FBTyxDQUFDLEdBQUcsT0FBTyxFQUFFLEdBQUcsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQUU7SUFDMUUsSUFBSSxTQUFTLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxFQUFFLE9BQU8sQ0FBQyxHQUFHLE9BQU8sRUFBRSxHQUFHLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUFFO0lBQzFFLElBQUksZ0JBQWdCLENBQUMsT0FBTyxFQUFFLEVBQUUsT0FBTyxDQUFDLEdBQUcsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQUU7SUFDNUQsSUFBSSxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsRUFBRSxPQUFPLENBQUMsR0FBRyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUMsRUFBRTtJQUM1RCxJQUFJLE9BQU8sQ0FBQyxPQUFPLEVBQUUsRUFBRSxPQUFPLENBQUMsR0FBRyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUMsRUFBRTtJQUNuRCxJQUFJLE9BQU8sQ0FBQyxPQUFPLEVBQUUsRUFBRSxPQUFPLENBQUMsR0FBRyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUMsRUFBRTtBQUNuRDtJQUNBLElBQUksT0FBTyxDQUFDLE9BQU8sRUFBRSxFQUFFLE9BQU8sQ0FBQyxHQUFHLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUFFO0lBQ25ELElBQUksTUFBTSxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsRUFBRSxPQUFPLENBQUMsR0FBRyxPQUFPLEVBQUUsR0FBRyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUMsRUFBRTtJQUN2RSxJQUFJLE1BQU0sQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLEVBQUUsT0FBTyxDQUFDLEdBQUcsT0FBTyxFQUFFLEdBQUcsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQUU7SUFDdkUsSUFBSSxRQUFRLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxFQUFFLE9BQU8sQ0FBQyxHQUFHLE9BQU8sRUFBRSxHQUFHLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUFFO0lBQ3pFLElBQUksUUFBUSxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsRUFBRSxPQUFPLENBQUMsR0FBRyxPQUFPLEVBQUUsR0FBRyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUMsRUFBRTtJQUN6RSxJQUFJLFFBQVEsQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLEVBQUUsT0FBTyxDQUFDLEdBQUcsT0FBTyxFQUFFLEdBQUcsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQUU7SUFDekUsSUFBSSxRQUFRLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxFQUFFLE9BQU8sQ0FBQyxHQUFHLE9BQU8sRUFBRSxHQUFHLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUFFO0lBQ3pFLElBQUksUUFBUSxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsRUFBRSxPQUFPLENBQUMsR0FBRyxPQUFPLEVBQUUsR0FBRyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUMsRUFBRTtJQUN6RSxJQUFJLFFBQVEsQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLEVBQUUsT0FBTyxDQUFDLEdBQUcsT0FBTyxFQUFFLEdBQUcsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQUU7SUFDekUsSUFBSSxRQUFRLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxFQUFFLE9BQU8sQ0FBQyxHQUFHLE9BQU8sRUFBRSxHQUFHLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUFFO0lBQ3pFLElBQUksUUFBUSxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsRUFBRSxPQUFPLENBQUMsR0FBRyxPQUFPLEVBQUUsR0FBRyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUMsRUFBRTtJQUN6RSxJQUFJLE9BQU8sQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLEVBQUUsT0FBTyxDQUFDLEdBQUcsT0FBTyxFQUFFLEdBQUcsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQUU7SUFDeEUsSUFBSSxPQUFPLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxFQUFFLE9BQU8sQ0FBQyxHQUFHLE9BQU8sRUFBRSxHQUFHLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUFFO0lBQ3hFLElBQUksT0FBTyxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsRUFBRSxPQUFPLENBQUMsR0FBRyxPQUFPLEVBQUUsR0FBRyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUMsRUFBRTtJQUN4RSxJQUFJLFNBQVMsQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLEVBQUUsT0FBTyxDQUFDLEdBQUcsT0FBTyxFQUFFLEdBQUcsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQUU7SUFDMUUsSUFBSSxTQUFTLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxFQUFFLE9BQU8sQ0FBQyxHQUFHLE9BQU8sRUFBRSxHQUFHLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUFFO0lBQzFFLElBQUksU0FBUyxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsRUFBRSxPQUFPLENBQUMsR0FBRyxPQUFPLEVBQUUsR0FBRyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUMsRUFBRTtJQUMxRSxJQUFJLFNBQVMsQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLEVBQUUsT0FBTyxDQUFDLEdBQUcsT0FBTyxFQUFFLEdBQUcsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQUU7SUFDMUUsSUFBSSxPQUFPLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxFQUFFLE9BQU8sQ0FBQyxHQUFHLE9BQU8sRUFBRSxHQUFHLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUFFO0lBQ3hFLElBQUksTUFBTSxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsRUFBRSxPQUFPLENBQUMsR0FBRyxPQUFPLEVBQUUsR0FBRyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUMsRUFBRTtJQUN2RSxJQUFJLE9BQU8sQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLEVBQUUsT0FBTyxDQUFDLEdBQUcsT0FBTyxFQUFFLEdBQUcsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQUU7SUFDeEUsSUFBSSxPQUFPLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxFQUFFLE9BQU8sQ0FBQyxHQUFHLE9BQU8sRUFBRSxHQUFHLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUFF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RSxJQUFJLENBQUMsQ0FBQztBQUN6QztJQUNBLFFBQVEsTUFBTSxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUN6QyxLQUFLO0FBQ0w7SUFDQSxJQUFJLE1BQU0sVUFBVSxDQUFDLENBQUMsRUFBRSxHQUFHLEVBQUU7SUFDN0IsUUFBUSxNQUFNLElBQUksR0FBRyxJQUFJLENBQUM7QUFDMUI7SUFDQSxRQUFRLE1BQU0sU0FBUyxHQUFHLElBQUksVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzVDLFFBQVEsTUFBTSxVQUFVLEdBQUcsSUFBSSxRQUFRLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQzFEO0lBQ0EsUUFBUSxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDMUM7SUFDQSxRQUFRLE1BQU0sSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDekMsS0FBSztBQUNMO0FBQ0E7SUFDQSxJQUFJLE1BQU0sVUFBVSxDQUFDLENBQUMsRUFBRSxHQUFHLEVBQUU7SUFDN0IsUUFBUSxNQUFNLElBQUksR0FBRyxJQUFJLENBQUM7QUFDMUI7SUFDQSxRQUFRLE1BQU0sU0FBUyxHQUFHLElBQUksVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzVDLFFBQVEsTUFBTSxVQUFVLEdBQUcsSUFBSSxRQUFRLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQzFEO0lBQ0EsUUFBUSxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsVUFBVSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ3RELFFBQVEsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsV0FBVyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUM7QUFDcEU7SUFDQSxRQUFRLE1BQU0sSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDekMsS0FBSztBQUNMO0lBQ0EsSUFBSSxNQUFNLFNBQVMsQ0FBQyxHQUFHLEVBQUU7SUFDekIsUUFBUSxNQUFNLElBQUksR0FBRyxJQUFJLENBQUM7SUFDMUIsUUFBUSxNQUFNLENBQUMsR0FBRyxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBQzFDO0lBQ0EsUUFBUSxNQUFNLElBQUksR0FBRyxJQUFJLFdBQVcsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDL0M7SUFDQSxRQUFRLE9BQU8sSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3ZCLEtBQUs7QUFDTDtJQUNBLElBQUksTUFBTSxTQUFTLENBQUMsR0FBRyxFQUFFO0lBQ3pCLFFBQVEsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDO0lBQzFCLFFBQVEsTUFBTSxDQUFDLEdBQUcsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztBQUMxQztJQUNBLFFBQVEsTUFBTSxJQUFJLEdBQUcsSUFBSSxRQUFRLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQzVDO0lBQ0EsUUFBUSxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3hDLEtBQUs7QUFDTDtJQUNBLElBQUksTUFBTSxTQUFTLENBQUMsR0FBRyxFQUFFO0lBQ3pCLFFBQVEsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDO0lBQzFCLFFBQVEsTUFBTSxDQUFDLEdBQUcsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztBQUMxQztJQUNBLFFBQVEsTUFBTSxJQUFJLEdBQUcsSUFBSSxXQUFXLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQy9DO0lBQ0EsUUFBUSxPQUFPLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxXQUFXLEdBQUcsSUFBSSxDQUFD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QUFFLEdBQUcsRUFBRTtJQUMzQixRQUFRLE1BQU0sSUFBSSxFQUFFLElBQUksQ0FBQztJQUN6QixRQUFRLElBQUksT0FBTyxHQUFHLElBQUksV0FBVyxFQUFFLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDO0lBQ3RELFFBQVEsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsMEJBQTBCLENBQUMsQ0FBQztBQUN2RTtJQUNBLFFBQVEsSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0FBQ3BEO0lBQ0EsUUFBUSxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBQzNDO0lBQ0EsUUFBUSxJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVMsR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQztBQUMzRjtJQUNBLFFBQVEsSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUN6QyxLQUFLO0FBQ0w7SUFDQSxJQUFJLE1BQU0sWUFBWSxDQUFDLFFBQVEsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRTtJQUNuRCxRQUFRLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQztJQUMxQixRQUFRLElBQUksT0FBTyxHQUFHLElBQUksV0FBVyxFQUFFLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDO0lBQ3RELFFBQVEsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO0lBQzNCLFlBQVksSUFBSSxHQUFHLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO0lBQ3JGLFNBQVM7SUFDVCxRQUFRLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxDQUFDO0FBQ3hDO0lBQ0EsUUFBUSxNQUFNLE9BQU8sR0FBRyxJQUFJLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxHQUFHLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztBQUM5RjtJQUNBLFFBQVEsUUFBUSxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDdEM7SUFDQSxRQUFRLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsQ0FBQztJQUM3QixLQUFLO0FBQ0w7SUFDQSxJQUFJLE1BQU0sSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUU7SUFDekIsUUFBUSxNQUFNLElBQUksR0FBRyxJQUFJLENBQUM7QUFDMUI7SUFDQSxRQUFRLE1BQU0sSUFBSSxHQUFHLElBQUksVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3pDLFFBQVEsTUFBTSxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBQ25EO0lBQ0EsUUFBUSxPQUFPLElBQUksQ0FBQztJQUNwQixLQUFLO0FBQ0w7SUFDQSxJQUFJLEtBQUssR0FBRztJQUNaLFFBQVEsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRTtJQUN0RCxZQUFZLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQy9ELFNBQVM7SUFDVCxLQUFLO0FBQ0w7SUFDQSxJQUFJLE1BQU0sT0FBTyxHQUFHO0lBQ3BCLEtBQUs7QUFDTDtBQUNBO0lBQ0EsSUFBSSxNQUFNLFVBQVUsQ0FBQyxDQUFDLEVBQUUsR0FBRyxFQUFFO0lBQzdCLFFBQVEsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDO0FBQzFCO0lBQ0EsUUFBUUQsWUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ3pDO0lBQ0EsUUFBUSxNQUFNLElBQUksQ0FBQyxLQUFLLENBQUNELFdBQVMsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUN6QyxLQUFLO0FBQ0w7SUFDQSxJQUFJLE1BQU0sVUFBVSxDQUFDLENBQUMsRUFBRSxHQUFHLEVBQUU7SUFDN0IsUUFBUSxNQUFNLElBQUksR0FBRyxJQUFJLENBQUM7QUFDMUI7SUFDQSxRQUFRQyxZQUFVLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDMUM7SUFDQSxRQUFRLE1BQU0sSUFBSSxDQUFDLEtBQUssQ0FBQ0QsV0FBUyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ3pDLEtBQUs7QUFDTDtBQUNBO0lBQ0EsSUFBSSxNQUFNLFVBQVUsQ0FBQyxDQUFDLEVBQUUsR0FBRyxFQUFFO0lBQzdCLFFBQVEsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDO0FBQzFCO0lBQ0EsUUFBUUcsWUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFVBQVUsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUN0RCxRQUFRQSxZQUFVLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxXQUFXLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQztBQUNwRTtJQUNBLFFBQVEsTUFBTSxJQUFJLENBQUMsS0FBSyxDQUFDRCxXQUFTLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDekMsS0FBSztBQUNMO0FBQ0E7SUFDQSxJQUFJLE1BQU0sU0FBUyxDQUFDLEdBQUcsRUFBRTtJQUN6QixRQUFRLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQztJQUMxQixRQUFRLE1BQU0sQ0FBQyxHQUFHLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFDMUM7SUFDQSxRQUFRLE1BQU0sSUFBSSxHQUFHLElBQUksV0FBVyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUMvQztJQUNBLFFBQVEsT0FBTyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdkIsS0FBSztBQUNMO0lBQ0EsSUFBSSxNQUFNLFNBQVMsQ0FBQyxHQUFHLEVBQUU7SUFDekIsUUFBUSxNQUFNLElBQUksR0FBRyxJQUFJLENBQUM7SUFDMUIsUUFBUSxNQUFNLENBQUMsR0FBRyxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBQzFDO0lBQ0EsUUFBUSxNQUFNLElBQUksR0FBRyxJQUFJLFFBQVEsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDNUM7SUFDQSxRQUFRLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDeEMsS0FBSztBQUNMO0lBQ0EsSUFBSSxNQUFNLFNBQVMsQ0FBQyxHQUFHLEVBQUU7SUFDekIsUUFBUSxNQUFNLElBQUksR0FBRyxJQUFJLENBQUM7SUFDMUIsUUFBUSxNQUFNLENBQUMsR0FBRyxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBQzFDO0lBQ0EsUUFBUSxNQUFNLElBQUksR0FBRyxJQUFJLFdBQVcsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDL0M7SUFDQSxRQUFRLE9BQU8sSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLFdBQVcsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDL0MsS0FBSztBQUNMO0lBQ0EsSUFBSSxNQUFNLFVBQVUsQ0FBQyxHQUFHLEVBQUU7SUFDMUIsUUFBUSxNQUFNLElBQUksR0FBRyxJQUFJLENBQUM7QUFDMUI7SUFDQSxRQUFRLElBQUksZUFBZSxHQUFHLE9BQU8s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QSxJQUFJLElBQUksQ0FBQyxDQUFDLFVBQVUsRUFBRSxNQUFNLElBQUksS0FBSyxDQUFDLHVCQUF1QixDQUFDLENBQUM7QUFDL0Q7SUFDQSxJQUFJLE1BQU0sU0FBUyxHQUFHLE1BQU0sRUFBRSxDQUFDLFNBQVMsRUFBRSxDQUFDO0FBQzNDO0lBQ0E7SUFDQSxJQUFJLElBQUksUUFBUSxHQUFHLEVBQUUsQ0FBQztJQUN0QixJQUFJLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxFQUFFLEVBQUU7SUFDcEMsUUFBUSxJQUFJLEVBQUUsR0FBRyxNQUFNLEVBQUUsQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUN0QyxRQUFRLElBQUksRUFBRSxHQUFHLE1BQU0sRUFBRSxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQ3RDLFFBQVEsSUFBSSxPQUFPLFFBQVEsQ0FBQyxFQUFFLENBQUMsSUFBSSxXQUFXLEVBQUUsUUFBUSxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQztJQUNsRSxRQUFRLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDMUIsWUFBWSxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUc7SUFDckIsWUFBWSxJQUFJLEVBQUUsRUFBRTtJQUNwQixTQUFTLENBQUMsQ0FBQztJQUNYLFFBQVEsRUFBRSxDQUFDLEdBQUcsSUFBSSxFQUFFLENBQUM7SUFDckIsS0FBSztBQUNMO0lBQ0EsSUFBSSxPQUFPLENBQUMsRUFBRSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQzFCLENBQUM7QUFDRDtJQUNPLGVBQWUsYUFBYSxDQUFDLFFBQVEsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFO0FBQzdGO0lBQ0EsSUFBSSxNQUFNLEVBQUUsR0FBRyxNQUFNQyxjQUF1QixDQUFDLFFBQVEsRUFBRSxTQUFTLEVBQUUsUUFBUSxDQUFDLENBQUM7QUFDNUU7SUFDQSxJQUFJLE1BQU0sSUFBSSxHQUFHLElBQUks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RyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFO0lBQ25DLElBQUksTUFBTTtJQUNWLE1BQU0sUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDOUIsTUFBTSxRQUFRLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxLQUFLLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDN0QsTUFBTSxRQUFRLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsS0FBSyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ2xFLE1BQU0sUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDO0lBQ2xDLE1BQUs7SUFDTCxHQUFHO0FBQ0g7SUFDQSxFQUFFLElBQUksR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUU7SUFDckIsSUFBSSxNQUFNLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsR0FBRyxJQUFHO0lBQ3pELEdBQUcsTUFBTSxJQUFJLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFO0lBQzVCLElBQUksTUFBTSxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLEdBQUcsS0FBSTtJQUMxRCxHQUFHO0FBQ0g7SUFDQSxFQUFFLE9BQU8sTUFBTTtJQUNmLENBQ0E7SUFDQSxTQUFTdUIsT0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxHQUFHLENBQUMsRUFBRSxNQUFNLEdBQUdELFlBQVUsQ0FBQyxNQUFNLENBQUMsRUFBRTtJQUN6RSxFQUFFLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxVQUFVLEdBQUcsTUFBTSxFQUFDO0FBQzFEO0lBQ0EsRUFBRSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRTtJQUMxQyxJQUFJLE1BQU0sQ0FBQyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxFQUFDO0lBQ3pDLElBQUksTUFBTSxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFDO0lBQzdDLElBQUksTUFBTSxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFDO0lBQzdDLElBQUksTUFBTSxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFDO0FBQzdDO0lBQ0EsSUFBSSxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBQztJQUNyQyxJQUFJLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFDO0lBQzVDLElBQUksTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEVBQUM7SUFDM0MsR0FBRztBQUNIO0lBQ0EsRUFBRSxPQUFPLEdBQUc7SUFDWixDQUNBO0lBQ0EsSUFBQSxNQUFjLEdBQUc7SUFDakIsY0FBRUEsWUFBVTtJQUNaLFlBQUV0QixVQUFRO0lB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QUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxDQUFDO01BQ2hFO0FBQ0Q7SUFDQSxDQUFBLFNBQVMsYUFBYSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFO0lBQy9DLEdBQUUsSUFBSSxNQUFNLEtBQUssU0FBUyxFQUFFLE1BQU0sR0FBRyxFQUFDO0FBQ3RDO0lBQ0EsR0FBRSxNQUFNLElBQUksR0FBRyxJQUFJLFFBQVEsQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxVQUFVLEVBQUUsTUFBTSxDQUFDLFVBQVUsRUFBQztPQUM5RSxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFDO0FBQ3RDO09BQ0UsT0FBTyxNQUFNLEdBQUcsQ0FBQztNQUNsQjtBQUNEO0lBQ0EsQ0FBQSxTQUFTLFlBQVksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRTtJQUM5QyxHQUFFLElBQUksTUFBTSxLQUFLLFNBQVMsRUFBRSxNQUFNLEdBQUcsRUFBQztBQUN0QztJQUNBLEdBQUUsTUFBTSxJQUFJLEdBQUcsSUFBSSxRQUFRLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsVUFBVSxFQUFFLE1BQU0sQ0FBQyxVQUFVLEVBQUM7T0FDOUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBQztBQUN0QztPQUNFLE9BQU8sTUFBTSxHQUFHLENBQUM7TUFDbEI7QUFDRDtJQUNBLENBQUEsU0FBUyxhQUFhLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUU7SUFDL0MsR0FBRSxJQUFJLE1BQU0sS0FBSyxTQUFTLEVBQUUsTUFBTSxHQUFHLEVBQUM7QUFDdEM7SUFDQSxHQUFFLE1BQU0sSUFBSSxHQUFHLElBQUksUUFBUSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLFVBQVUsRUFBRSxNQUFNLENBQUMsVUFBVSxFQUFDO09BQzlFLElBQUksQ0FBQyxTQUFTLENB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O0lBQ3BDLElBQUksTUFBTSxFQUFFLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN0QyxJQUFJLE1BQU0sRUFBRSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDekMsSUFBSSxNQUFNLE9BQU8sQ0FBQyxFQUFFLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUM5QyxJQUFJLE1BQU0sT0FBTyxDQUFDLEVBQUUsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzdDLElBQUksTUFBTSxPQUFPLENBQUMsRUFBRSxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDN0MsSUFBSSxNQUFNLE9BQU8sQ0FBQyxFQUFFLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUM5QyxJQUFJLE1BQU0sT0FBTyxDQUFDLEVBQUUsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQzlDLElBQUksTUFBTSxPQUFPLENBQUMsRUFBRSxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7QUFDOUM7SUFDQSxJQUFJLE1BQU1GLGVBQTRCLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDM0M7QUFDQTtJQUNBLENBQUM7QUEwRkQ7SUFDQSxlQUFlLE9BQU8sQ0FBQyxFQUFFLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRTtJQUNyQyxJQUFJLE1BQU0sSUFBSSxHQUFHLElBQUksVUFBVSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNqRCxJQUFJLEtBQUssQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDbEMsSUFBSSxNQUFNLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7SUFD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QWlCLENBQUMsRUFBRSxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUU7SUFDL0MsSUFBSSxNQUFNLE9BQU8sQ0FBQyxFQUFFLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUMzQyxJQUFJLE1BQU0sT0FBTyxDQUFDLEVBQUUsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMzQyxJQUFJLE1BQU0sT0FBTyxDQUFDLEVBQUUsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM1QyxJQUFJLE1BQU0sT0FBTyxDQUFDLEVBQUUsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUM3QyxJQUFJLE1BQU0sRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDakMsSUFBSSxNQUFNLEVBQUUsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQztBQUNyQztJQUNBLElBQUksTUFBTSxNQUFNLEdBQUcsRUFBRSxDQUFDO0lBQ3RCLElBQUksSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFO0lBQ2hCLFFBQVEsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN2QixRQUFRLE1BQU0sUUFBUSxHQUFHLElBQUksV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNqRixRQUFRLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ3pDLFFBQVEsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxFQUFFLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFR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TUFBTSxFQUFFLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxVQUFVLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDcEQsSUFBSSxNQUFNRixlQUE0QixDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQzNDO0FBQ0E7SUFDQSxJQUFJLE1BQU1ELGlCQUE4QixDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNoRCxJQUFJLE1BQU0sRUFBRSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUMvQixJQUFJLE1BQU1DLGVBQTRCLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDM0M7SUFDQSxDQUFDO0FBQ0Q7SUFDTyxlQUFlLFVBQVUsQ0FBQyxFQUFFLEVBQUUsUUFBUSxFQUFFO0FBQy9DO0lBQ0EsSUFBSSxNQUFNSSxzQkFBbUMsQ0FBQyxFQUFFLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQy9ELElBQUksTUFBTSxFQUFFLEdBQUcsTUFBTSxFQUFFLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDcEMsSUFBSSxNQUFNLENBQUMsR0FBRyxNQUFNRSxVQUF1QixDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNwRCxJQUFJLE1BQU0sUUFBUSxHQUFHLE1BQU0sRUFBRSxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQzFDLElBQUksTUFBTUQsY0FBMkIsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUMxQztJQUNBLElBQUksT0FBTyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsUUFBUSxDQUFDLENBQUM7QUFDN0I7SUFDQSxDQUFDO0FBQ0Q7SUFDTyxlQUFlLElBQUksQ0FBQyxRQUFRLEVBQUU7QUFDckM7SUFDQSxJQUFJLE1BQU0sQ0FBQyxFQUFFLEVBQUUsUUFBUSxDQUFDLEdBQUcsTUFBTUUsV0FBd0IsQ0FBQyxRQUFRLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQy9FO0lBQ0EsSUFBSSxNQUFNLENBQUMsRUFBRSxFQUFFLFFBQVEsQ0FBQyxHQUFHLE1BQU0sVUFBVSxDQUFDLEVBQUUs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QUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ3hFO0lBQ0EsSUFBSSxJQUFJLEdBQUcsRUFBRSxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQzFDLElBQUksSUFBSSxHQUFHLEVBQUUsQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQzNEO0lBQ0EsSUFBSSxLQUFLLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztBQUMxQztBQUNBO0lBQ0EsSUFBSSxLQUFLLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNuRSxJQUFJLEtBQUssQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDN0QsSUFBSSxLQUFLLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUMxRjtBQUNBO0lBQ0EsSUFBSSxJQUFJLGFBQWEsR0FBRyxFQUFFLENBQUM7QUFDM0I7SUFDQSxJQUFJLEtBQUssSUFB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QVEsTUFBTSxNQUFNLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNsRCxRQUFRLE1BQU0sTUFBTSxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDbEQsUUFBUSxNQUFNLE1BQU0sR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDO0FBQ2xEO0lBQ0EsUUFBUSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQzNELFFBQVEsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUMzRCxRQUFRLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDM0QsUUFBUSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNyRCxRQUFRLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxhQUFhLEVBQUUsTUFBTSxDQUFDO0lBQzlELFlBQVksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBQ3BCLFlBQVksQ0FBQyxHQUFHLEVBQUUsQ0FB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QUFRLENBQUMsT0FBTyxDQUFDLFlBQVksRUFBRSxDQUFDO0FBQy9EO0lBQ0EsUUFBUSxNQUFNLEdBQUcsR0FBRyxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDeEMsUUFBUSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRTtJQUMzQyxZQUFZLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNuRSxTQUFTO0FBQ1Q7SUFDQSxRQUFRLElBQUksQ0FBQyxLQUFLLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsV0FBVyxDQUFDLENBQUM7QUFDeEQ7SUFDQSxRQUFRLElBQUksQ0FBQyxFQUFFLEdBQUcsSUFBSTZDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDMUM7SUFDQSxRQUFRLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDeEQsUUFBUSxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ3RELFFBQVEsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxTQUFTLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNoRSxRQUFRLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLEdBQUcsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQy9ELFFBQVEsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDeEMsUUFBUSxJQUFJLENBQUMsV0FBVyxHQUFHLFdBQVcsQ0FBQztJQUN2QyxLQUFLO0FBQ0w7SUFDQSxJQUFJLGNBQWMsR0FBRztJQUNyQixRQUFRLE9BQU8sQ0FBQyxDQUFDO0lBQ2pCLEtBQUs7QUFDTDtJQUNBLElBQUksTUFBTSxtQkFBbUIsQ0FBQyxLQUFLLEVBQUUsV0FBVyxFQUFFO0lBQ2xELFFBQVEsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsSUFBSSxXQUFXLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQzlFLFFBQVEsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzNDLFFBQVEsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ25DLFFBQVEsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN4QyxRQUFRLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUs7SUFDNUIsWUFBWSxNQUFNLENBQUMsR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDakMsWUFBWSxNQUFNLElBQUksR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDckQsWUFBWSxNQUFNLElBQUksR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDdEQsWUFBWSxJQUFJO0lBQ2hCLGdCQUFnQixJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNuRixhQUFhLENBQUMsT0FBTyxHQUFHLEVBQUU7SUFDMUIsZ0JBQWdCLE1BQU0sSUFBSSxLQUFLLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLGdDQUFnQyxDQUFDLENBQUMsQ0FBQztJQUMvRSxhQUFhO0lBQ2IsWUFBWSxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ3RELFlBQVksTUFBTSxJQUFJLEdBQUcsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzdDLFlBQVksS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7SUFDbEQsZ0JBQWdCLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3pDLGdCQUFnQixJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxTQUFTLEdBQUcsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQzFFLGFBQWE7SUFDYixTQUFTLENBQUMsQ0FBQztJQUNYLEtBQUs7QUFDTDtJQUNBLElBQUksTUFBTSxnQkFBZ0IsQ0FBQyxLQUFLLEVBQUUsV0FBVyxFQUFFO0lBQy9DLFFBQVEsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDO0FBQzFCO0lBQ0EsUUFBUSxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2pDLFFBQVEsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDO0FBQ3JCO0lBQ0EsUUFBUSxNQUFNLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLEVBQUUsV0FBVyxDQUFDLENBQUM7QUFDM0Q7SUFDQSxRQUFRLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsRUFBRSxFQUFFO0lBQzdDLFlBQVksTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2xFLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7SUFDekMsU0FBUztBQUNUO0lBQ0EsUUFBUSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQztJQUMzQixRQUFRLE9BQU8sQ0FBQyxDQUFDO0lBQ2pCLEtBQUs7QUFDTDtJQUNBLElBQUksTUFBTSxtQkFBbUIsQ0FBQyxLQUFLLEVBQUUsV0FBVyxFQUFFO0lBQ2xELFFBQVEsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDO0FBQzFCO0lBQ0EsUUFBUSxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2pDO0lBQ0EsUUFBUSxNQUFNLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLEVBQUUsV0FBVyxDQUFDLENBQUM7QUFDM0Q7SUFDQSxRQUFRLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLGdCQUFnQixFQUFFLENBQUM7QUFDeEU7SUFDQSxRQUFRLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDO0FBQzNCO0lBQ0EsUUFBUSxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsY0FBYyxFQUFFLGNBQWMsSUFBSSxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM1RyxRQUFRLE9BQU8sSUFBSSxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDcEMsS0FBSztBQUNMO0lBQ0EsSUFBSSxRQUFRLEdBQUc7SUFDZixRQUFRLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDOUIsUUFBUSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDNUIsUUFBUSxPQUFPLENBQUMsQ0FBQztJQUNqQixLQUFLO0FBQ0w7SUFDQSxJQUFJLE9BQU8sR0FBRztJQUNkLFFBQVEsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM5QixRQUFRLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUMzQyxRQUFRLE9BQU8sQ0FBQyxDQUFDO0lBQ2pCLEtBQUs7QUFDTDtJQUNBLElBQUksTUFBTSxDQUFDLENBQUMsRUFBRTtJQUNkLFFBQVEsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNoQyxLQUFLO0FBQ0w7SUFDQSxJQUFJLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFO0lBQ2pCLFFBQVEsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzdCLEtBQUs7QUFDTDtJQUNBLElBQUksS0FBSyxDQUFDLENBQUMsRUFBRTtJQUNiLFFBQVEsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDO0lBQzFCLFFBQVEsTUFBTSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0FBQzdCO0lBQ0EsUUFBUSxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxHQUFHLFVBQVUsRUFBRTtJQUM1QyxZQUFZLE1BQU0sR0FBRyxHQUFHLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUM1QyxZQUFZLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFO0lBQy9DLGdCQUFnQixHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQzlELGFBQWE7SUFDYixZQUFZLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUM7SUFDdEUsWUFBWSxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxHQUFHLFVBQVUsRUFBRTtJQUNoRCxnQkFBZ0IsT0FBTyxjQUFjLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDM0MsYUFBYSxNQUFNO0lBQ25CLGdCQUFnQixPQUFPLEdBQUcsQ0FBQztJQUMzQixhQUFhO0FBQ2I7SUFDQSxTQUFTLE1BQU07SUFDZixZQUFZLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxVQUFVLEVBQUU7SUFDNUMsZ0JBQWdCLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxXQUFXLENBQUMsQ0FBQztJQUM5RCxhQUFhLE1BQU07SUFDbkIsZ0JBQWdCLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ2hELGFBQWE7SUFDYixTQUFTO0FBQ1Q7SUFDQSxRQUFRLFNBQVMsY0FBYyxDQUFDLENBQUMsRUFBRTtJQUNuQyxZQUFZLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztJQUM3QyxTQUFTO0FBQ1Q7SUFDQSxLQUFLO0FBQ0w7QUFDQTtJQUNBLElBQUksS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUU7SUFDaEIsUUFBUSxNQUFNLElBQUksR0FBRyxJQUFJLENBQUM7QUFDMUI7SUFDQSxRQUFRLENBQUMsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN6QjtJQUNBLFFBQVEsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDaEUsUUFBUSxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDbkQ7SUFDQSxRQUFRLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsUUFBUSxDQUFDO0lBQ3JDLGdCQUFnQixJQUFJLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsUUFBUSxDQUFDLENBQUMsRUFBRTtJQUMzQyxZQUFZLElBQUksQ0FBQyxDQUFDO0lBQ2xCLFlBQVksSUFBSSxJQUFJLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRTtJQUM5QyxnQkFBZ0IsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdkMsYUFBYSxNQUFNO0lBQ25CLGdCQUFnQixDQUFDLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQztJQUM5RCxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsR0FBRyxVQUFVLENBQUM7SUFDbkMsZ0JBQWdCLENBQUMsR0FBRyxXQUFXLEdBQUcsQ0FBQyxDQUFDO0lBQ3BDLGFBQWE7SUFDYixZQUFZLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUNuQyxZQUFZLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN2QyxZQUFZLE9BQU87SUFDbkIsU0FBUztBQUNUO0lBQ0EsUUFBUSxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDL0IsUUFBUSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxVQUFVLENBQUM7SUFDNUMsUUFBUSxNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxXQUFXLENBQUMsQ0FBQztJQUNuRCxRQUFRLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFO0lBQzNDLFlBQVksTUFBTSxHQUFHLEdBQUcsR0FBRyxDQUFDLE1BQU0sR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQzNDO0lBQ0EsWUFBWSxJQUFJLEdBQUcsSUFBSSxDQUFDLEVBQUU7SUFDMUIsZ0JBQWdCLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDdEQsYUFBYSxNQUFNO0lBQ25CLGdCQUFnQixJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQy9DLGFBQWE7SUFDYixTQUFTO0lBQ1QsS0FBSztJQUNMLENBQUM7QUFDRDtJQUNBLE1BQU0sd0JBQXdCLENBQUM7SUFDL0IsSUFBSSxXQUFXLENBQUMsUUFBUSxFQUFFLFdBQVcsRUFBRTtJQUN2QyxRQUFRLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO0FBQ2pDO0lBQ0EsUUFBUSxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBQzFELFFBQVEsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO0FBQzVEO0lBQ0EsUUFBUSxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUM1QyxRQUFRLE1BQU0sR0FBRyxHQUFHLElBQUksV0FBVyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUM5QyxRQUFRLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFO0lBQzNDLFlBQVksR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2hGLFNBQVM7SUFDVCxRQUFRLElBQUksQ0FBQyxLQUFLLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsV0FBVyxDQUFDLENBQUM7QUFDeEQ7SUFDQSxRQUFRLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsY0FBYyxFQUFFLENBQUM7QUFDbEU7SUFDQSxRQUFRLElBQUksQ0FBQyxXQUFXLEdBQUcsV0FBVyxDQUFDO0lBQ3ZDLEtBQUs7QUFDTDtJQUNBLElBQUksY0FBYyxHQUFHO0lBQ3JCLFFBQVEsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUNsRCxLQUFLO0FBQ0w7SUFDQSxJQUFJLE1BQU0sbUJBQW1CLENBQUMsS0FBSyxFQUFFLFdBQVcsRUFBRTtJQUNsRDtJQUNBLFFBQVEsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsSUFBSSxXQUFXLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQzlFLFFBQVEsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN4QyxRQUFRLElBQUksYUFBYSxHQUFHLENBQUMsQ0FBQztJQUM5QixRQUFRLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUs7SUFDNUIsWUFBWSxNQUFNLENBQUMsR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDakMsWUFBWSxNQUFNLElBQUksR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDckQsWUFBWSxNQUFNLElBQUksR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDdEQsWUFBWSxNQUFNLElBQUksR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDN0M7SUFDQTtJQUNBLFlBQVksSUFBSSxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLGtCQUFrQixLQUFLLFVBQVUsRUFBRTtJQUNoRixnQkFBZ0IsSUFBSSxVQUFVLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsa0JBQWtCLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ3RGLGdCQUFnQixJQUFJLFVBQVUsR0FBRyxDQUFDLEVBQUU7SUFDcEMsb0JBQW9CLE1BQU0sSUFBSSxLQUFLLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUM7SUFDL0QsaUJBQWlCO0lBQ2pCLGdCQUFnQixJQUFJLElBQUksQ0FBQyxNQUFNLEdBQUcsVUFBVSxFQUFFO0lBQzlDLG9CQUFvQixNQUFNLElBQUksS0FBSyxDQUFDLENBQUMsbUNBQW1DLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDakYsaUJBQWlCO0lBQ2pCLGdCQUFnQixJQUFJLElBQUksQ0FBQyxNQUFNLEdBQUcsVUFBVSxFQUFFO0lBQzlDLG9CQUFvQixNQUFNLElBQUksS0FBSyxDQUFDLENBQUMsaUNBQWlDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDL0UsaUJBQWlCO0lBQ2pCLGFBQWE7SUFDYixZQUFZLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO0lBQ2xELGdCQUFnQixNQUFNLEtBQUssR0FBRyxTQUFTLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2xGLGdCQUFnQixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRTtJQUNuRCxvQkFBb0IsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzFGLGlCQUFpQjtJQUNqQixnQkFBZ0IsSUFBSTtJQUNwQixvQkFBb0IsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDeEUsb0JBQW9CLGFBQWEsRUFBRSxDQUFDO0lBQ3BDLGlCQUFpQixDQUFDLE9BQU8sR0FBRyxFQUFFO0lBQzlCO0lBQ0Esb0JBQW9CLE1BQU0sSUFBSSxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDekMsaUJBQWlCO0lBQ2pCLGFBQWE7QUFDYjtJQUNBLFNBQVMsQ0FBQyxDQUFDO0lBQ1gsUUFBUSxJQUFJLGFBQWEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxZQUFZLEVBQUUsRUFBRTtJQUNsRSxZQUFZLE1BQU0sSUFBSSxLQUFLLENBQUMsQ0FBQyxtQ0FBbUMsRUFBRSxhQUFhLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2xJLFNBQVM7SUFDVCxLQUFLO0FBQ0w7SUFDQSxJQUFJLE1BQU0sZ0JBQWdCLENBQUMsS0FBSyxFQUFFLFdBQVcsRUFBRTtJQUMvQyxRQUFRLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQztBQUNyQjtJQUNBLFFBQVEsTUFBTSxJQUFJLENBQUMsbUJBQW1CLENBQUMsS0FBSyxFQUFFLFdBQVcsQ0FBQyxDQUFDO0FBQzNEO0lBQ0EsUUFBUSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLEVBQUUsRUFBRTtJQUNuRCxZQUFZLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNoRCxZQUFZLE1BQU0sR0FBRyxHQUFHLElBQUksV0FBVyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNsRCxZQUFZLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFO0lBQy9DLGdCQUFnQixHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDcEYsYUFBYTtJQUNiLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxXQUFXLENBQUMsQ0FBQyxDQUFDO0lBQ3ZELFNBQVM7QUFDVDtJQUNBLFFBQVEsT0FBTyxDQUFDLENBQUM7SUFDakIsS0FBSztBQUNMO0lBQ0EsSUFBSSxNQUFNLGdCQUFnQixDQUFDLEtBQUssRUFBRSxXQUFXLEVBQUU7SUFDL0MsUUFBUSxNQUFNLE1BQU0sR0FBRyxJQUFJLFdBQVcsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsR0FBRyxFQUFFLENBQUMsQ0FBQztJQUNwRixRQUFRLE1BQU0sSUFBSSxHQUFHLElBQUksVUFBVSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNuRCxRQUFRLE1BQU0sSUFBSSxDQUFDLG1CQUFtQixDQUFDLEtBQUssRUFBRSxXQUFXLENBQUMsQ0FBQztBQUMzRDtJQUNBO0lBQ0EsUUFBUSxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNwQyxRQUFRLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3BDLFFBQVEsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDcEMsUUFBUSxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNwQztJQUNBO0lBQ0EsUUFBUSxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3RCO0lBQ0E7SUFDQSxRQUFRLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDdEI7SUFDQTtJQUNBLFFBQVEsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUN0QjtJQUNBLFFBQVEsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUM7SUFDaEM7SUFDQSxRQUFRLE1BQU0sZ0JBQWdCLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQztJQUN4QyxRQUFRLE1BQU0sbUJBQW1CLEdBQUcsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2xFLFFBQVEsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ2xFLFFBQVEsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQ25FO0lBQ0E7SUFDQSxRQUFRLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUM7QUFDdkI7SUFDQTtJQUNBLFFBQVEsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsV0FBVyxFQUFFLENBQUM7QUFDNUM7SUFDQSxRQUFRLElBQUksR0FBRyxHQUFHLENBQUMsQ0FBQztJQUNwQixRQUFRLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFO0lBQzNDLFlBQVksTUFBTSxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMxRSxTQUFTO0lBQ1QsUUFBUSxHQUFHLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQztBQUN4QjtJQUNBO0lBQ0EsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUN2QyxRQUFRLEdBQUcsRUFBRSxDQUFDO0FBQ2Q7SUFDQTtJQUNBLFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN4QixRQUFRLEdBQUcsRUFBRSxDQUFDO0FBQ2Q7SUFDQTtJQUNBLFFBQVEsTUFBTSxnQkFBZ0IsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUN2RCxRQUFRLE1BQU0sbUJBQW1CLEdBQUcsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2xFLFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3BFLFFBQVEsTUFBTSxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsR0FBRyxRQUFRLENBQUMsbUJBQW1CLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztBQUN6RTtJQUNBLFFBQVEsR0FBRyxJQUFJLENBQUMsQ0FBQztJQUNqQixRQUFRLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsRUFBRSxFQUFFO0lBQ25ELFlBQVksSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2hELFlBQVksS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUU7SUFDL0MsZ0JBQWdCLE1BQU0sQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDOUUsYUFBYTtJQUNiLFlBQVksR0FBRyxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUM7SUFDNUIsU0FBUztBQUNUO0lBQ0EsUUFBUSxPQUFPLElBQUksQ0FBQztJQUNwQixLQUFLO0FBQ0w7SUFDQTs7SUM3aUJBO0lBQ0E7QUFDQTtJQUNBO0FBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtBQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7QUFDQTtJQUNBO0lBQ0E7SUFDQTtJQU9BLE1BQU0sc0JBQUU1QyxvQkFBa0IsQ0FBQyxHQUFHLEtBQUssQ0FBQztBQUNwQztJQUNlLGVBQWUsYUFBYSxDQUFDLE1BQU0sRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLE9BQU8sRUFBRTtJQUN6RixJQUFJLE1BQU0sS0FBSyxHQUFHQSxvQkFBa0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUM3QztJQUNBLElBQUksTUFBTSxNQUFNLEdBQUcsTUFBTWdCLFlBQXFCLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDN0QsSUFBSSxNQUFNLElBQUksR0FBRyxNQUFNLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3JELElBQUksTUFBTSxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUM7QUFDekI7SUFDQSxJQUFJLE1BQU0sRUFBRSxHQUFHLE1BQU1rQyxPQUF3QixDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztJQUM3RCxJQUFJLElBQUksRUFBRSxDQUFDLGNBQWMsRUFBRSxLQUFLLENBQUMsRUFBRTtJQUNuQyxRQUFRLE1BQU0sQ0FBQyxHQUFHLE1BQU0sRUFBRSxDQUFDLG1CQUFtQixDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3REO0lBQ0EsUUFBUSxNQUFNLE1BQU0sR0FBRyxNQUFNQyxhQUEwQixDQUFDLFlBQVksRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ3BGO0lBQ0EsUUFBUSxNQUFNQyxRQUFrQixDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3RELFFBQVEsTUFBTSxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDN0IsS0FBSyxNQUFNO0lBQ1gsUUFBUSxNQUFNLE1BQU0sR0FBRyxNQUFNbkMsY0FBdUIsQ0FBQyxZQUFZLENBQUMsQ0FBQztBQUNuRTtJQUNBLFFBQVEsTUFBTSxDQUFDLEdBQUcsTUFBTSxFQUFFLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDbkQ7SUFDQSxRQUFRLE1BQU0sTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM5QixRQUFRLE1BQU0sTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQzdCLEtBQUs7SUFDTDs7SUNqREE7SUFDQTtBQUNBO0lBQ0E7QUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0FBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtBQUNBO0lBQ0E7SUFDQTtJQUNBO0lBS0EsTUFBTSxxQkFBQ2pCLG9CQUFrQixDQUFDLEdBQUcsS0FBSyxDQUFDO0FBQ25DO0lBQ2UsZUFBZSxnQkFBZ0IsQ0FBQyxNQUFNLEVBQUUsUUFBUSxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsZUFBZSxFQUFFO0lBQ3hHLElBQUksTUFBTSxLQUFLLEdBQUdBLG9CQUFrQixDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQzdDO0lBQ0EsSUFBSSxNQUFNLElBQUksRUFBRTtJQUNoQixRQUFRLElBQUksRUFBRSxLQUFLO0lBQ25CLEtBQUssQ0FBQztJQUNOLElBQUksTUFBTXFELGFBQWMsQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxlQUFlLENBQUMsQ0FBQztJQUNqRSxJQUFJLE9BQU8sTUFBTUMsWUFBYSxDQUFDLFlBQVksRUFBRSxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDM0Q7O0lDaENBO0lBQ0E7QUFDQTtJQUNBO0FBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtBQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7QUFDQTtJQUNBO0lBQ0E7SUFDQTtJQU1BLE1BQU0scUJBQUN0RCxvQkFBa0IsQ0FBQyxHQUFHLEtBQUssQ0FBQztBQUNuQztJQUNlLGVBQWUsYUFBYSxDQUFDLFlBQVksRUFBRSxjQUFjLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRTtJQUMxRjtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7QUFDQTtJQUNBLElBQUksTUFBTSxXQUFXLEdBQUdBLG9CQUFrQixDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ3pELElBQUksTUFBTSxLQUFLLEdBQUdBLG9CQUFrQixDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzdDLElBQUksTUFBTSxhQUFhLEdBQUdBLG9CQUFrQixDQUFDLGNBQWMsQ0FBQyxDQUFDO0FBQzdEO0lBQ0EsSUFBSSxNQUFNLEtBQUssR0FBRyxNQUFNdUQsZ0JBQXVCLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ25FO0lBQ0EsSUFBSSxNQUFNLEdBQUcsR0FBRyxLQUFLLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdkQsSUFBSSxNQUFNLEVBQUUsR0FBRyxJQUFJLFVBQVUsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN0RSxJQUFJLE1BQU0sQ0FBQyxHQUFHLElBQUksVUFBVSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsRUFBRSxHQUFHLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUNqRTtJQUNBLElBQUksSUFBSSxDQUFDQyxzQkFBb0IsQ0FBQyxLQUFLLEVBQUUsYUFBYSxDQUFDLEVBQUU7SUFDckQsUUFBUSxJQUFJLE1BQU0sRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLDhCQUE4QixDQUFDLENBQUM7SUFDakUsUUFBUSxPQUFPLEtBQUssQ0FBQztJQUNyQixLQUFLO0FBQ0w7SUFDQSxJQUFJLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxhQUFhLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO0lBQy9DLFFBQVEsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMvRCxRQUFRLEVBQUUsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDekMsUUFBUSxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsYUFBYSxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDeEUsS0FBSztBQUNMO0lBQ0EsSUFBSSxJQUFJLElBQUksR0FBRyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUMsY0FBYyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNwRCxJQUFJLElBQUksR0FBRyxLQUFLLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFDbkM7SUFDQSxJQUFJLE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNqRCxJQUFJLE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNqRCxJQUFJLE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNqRDtJQUNBLElBQUksSUFBSSxDQUFDQyxtQkFBaUIsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQUU7SUFDdkQsUUFBUSxHQUFHLE1BQU0sRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLGtDQUFrQyxDQUFDLENBQUM7SUFDcEUs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RUFBRSxFQUFFQSxNQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQztJQUMxSCxRQUFRLENBQUMsQ0FBQyxFQUFFQSxNQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRUEsTUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDM0QsUUFBUSxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDdEI7SUFDQSxJQUFJLE9BQU8sQ0FBQyxDQUFDO0lBQ2I7O0lDN0NBO0lBQ0E7QUFDQTtJQUNBO0FBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtBQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7QUFDQTtJQUNBO0lBQ0E7SUFDQTs7Ozs7Ozs7OztJQ2pCQTtJQUNBO0FBQ0E7SUFDQTtBQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7QUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0FBQ0E7SUFDQTtJQUNBO0lBQ0E7QUFLQTtJQUNPLFNBQVMsUUFBUSxDQUFDLEtBQUssRUFBRSxJQUFJLEVBQUU7SUFDdEMsSUFBSSxNQUFNLEtBQUssR0FBRyxJQUFJLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQzlFLElBQUksTUFBTSxJQUFJLEdBQUcsRUFBRSxDQUFDO0lBQ3BCLElBQUksS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtJQUM1QixRQUFRLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN2QyxLQUFLO0FBQ0w7SUFDQSxJQUFJLE1BQU0sR0FBRyxHQUFHLElB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TSxNQUFNLElBQUksQ0FBQyxJQUFJLEtBQUssQ0FBQyxDQUFDO0lBQ2hDLElBQUksS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtJQUNsQyxRQUFRLE1BQU0sRUFBRSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMvQixRQUFRLElBQUksQ0FBQyxNQUFNLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUN0RSxLQUFLO0lBQ0wsSUFBSSxNQUFNQyxlQUE0QixDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQzNDO0lBQ0E7SUFDQTtJQUNBLElBQUksTUFBTUQsaUJBQThCLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2hELElBQUksTUFBTSxVQUFVLElBQUksQ0FBQyxJQUFJLEtBQUssQ0FBQyxDQUFDO0lBQ3BDLElBQUksS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLFVBQVUsRUFBRSxDQUFDLEVBQUUsRUFBRTtJQUN0QyxRQUFRLE1BQU0sRUFBRSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMvQixRQUFRLElBQUksQ0FBQyxNQUFNLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLGNBQWMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUMzRSxLQUFLO0lBQ0wsSUFBSSxNQUFNQyxlQUE0QixDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQzNDO0lBQ0E7SUFDQTtJQUNBLElBQUksTUFBTUQsaUJBQThCLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2hELElBQUksTUFBTSxVQUFVLElBQUksQ0FBQyxJQUFJLEtBQUssQ0FBQyxDQUFDO0lBQ3BDLElBQUks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QUNySSxZQUFZLE9BQU8sS0FBSyxDQUFDO0lBQ3pCLFNBQVM7SUFDVCxRQUFRLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsU0FBUyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRTtJQUNwRSxZQUFZLElBQUksTUFBTSxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxnRUFBZ0UsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxHQUFHLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUN0SSxZQUFZLE9BQU8sS0FBSyxDQUFDO0lBQ3pCLFNBQVM7QUFDVDtJQUNBLFFBQVEsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxTQUFTLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFO0lBQ3BFLFlBQVksSUFBSSxNQUFNLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLGdFQUFnRSxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLEdBQUcsQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQ3RJLFlBQVksT0FBTyxLQUFLLENBQUM7SUFDekIsU0FBUztJQUNULFFBQVEsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxTQUFTLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxFQUFFO0lBQ3RFLFlBQVksSUFBSSxNQUFNLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLGlFQUFpRSxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLEdBQUcsQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQ3ZJLFlBQVksT0FBTyxLQUFLLENBQUM7SUFDekIsU0FBUztJQUNULFFBQVEsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxTQUFTLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxFQUFFO0lBQ3hFLFlBQVksSUFBSSxNQUFNLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLGtFQUFrRSxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLEdBQUcsQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQ3hJLFlBQVksT0FBTyxLQUFLLENBQUM7SUFDekIsU0FBUztBQUNUO0lBQ0EsUUFBUSxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUU7SUFDbEUsWUFBWSxJQUFJLE1BQU0sRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsK0RBQStELEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsR0FBRyxDQUFDLElBQUksSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDckksWUFBWSxPQUFPLEtBQUssQ0FBQztJQUN6QixTQUFTO0lBQ1QsUUFBUSxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUU7SUFDcEUsWUFBWSxJQUFJLE1BQU0sRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsZ0VBQWdFLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsR0FBRyxDQUFDLElBQUksSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDdEksWUFBWSxPQUFPLEtBQUssQ0FBQztJQUN6QixTQUFTO0lBQ1QsUUFBUSxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLFNBQVMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUU7SUFDdEUsWUFBWSxJQUFJLE1BQU0sRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsaUVBQWlFLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsR0FBRyxDQUFDLElBQUksSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDdkksWUFBWSxPQUFPLEtBQUssQ0FBQztJQUN6QixTQUFTO0lBQ1QsS0FBSztBQUNMO0lBQ0EsSUFBSSxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUNDLE9BQWUsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQyxhQUFhLEVBQUUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDOUgsSUFBSSxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUNBLE9BQWUsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQyxhQUFhLEVBQUUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDcEksSUFBSSxHQUFHLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUNBLE9BQWUsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQyxhQUFhLEVBQUUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7QUFDakk7SUFDQSxJQUFJLEVBQUUsR0FBRyxNQUFNeEMsV0FBUyxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUM1RyxJQUFJLElBQUksRUFBRSxLQUFLLElBQUksRUFBRTtJQUNyQixRQUFRLElBQUksTUFBTSxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsa0NBQWtDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzVFLFFBQVEsT0FBTyxLQUFLLENBQUM7SUFDckIsS0FBSztBQUNMO0lBQ0EsSUFBSSxFQUFFLEdBQUcsTUFBTUEsV0FBUyxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNwSCxJQUFJLElBQUksRUFBRSxLQUFLLElBQUksRUFBRTtJQUNyQixRQUFRLElBQUksTUFBTSxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsb0NBQW9DLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzlFLFFBQVEsT0FBTyxLQUFLLENBQUM7SUFDckIsS0FBSztBQUNMO0lBQ0EsSUFBSSxFQUFFLEdBQUcsTUFB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LENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQztJQUNsRixRQUFRLE1BQU1BLFdBQXdCLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQztJQUNsRixRQUFRLE1BQU1BLFdBQXdCLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQztJQUNsRixRQUFRLE1BQU1BLFdBQXdCLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDO0lBQ3hFLFFBQVEsTUFBTUEsV0FBd0IsQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNsRSxRQUFRLE1BQU1BLFdBQXdCLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLElBQUksR0FBRyxDQUFDLENBQUM7SUFDOUYsUUFBUSxNQUFNQSxXQUF3QixDQUFDLEtBQUssRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDO0lBQzFGLFFBQVEsTUFBTUEsV0FBd0IsQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQztJQUMxRixRQUFRLE1BQU1BLFdBQXdCLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLElBQUksR0FBRyxDQUFDLENBQUM7QUFDMUY7SUFDQSxRQUFRLE1BQU0sS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQzVCLEtBQUs7QUFDTDtBQUNBO0lBQ0E7O0lDL0RBO0lBQ0E7QUFDQTtJQUNBO0FBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtBQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7QUFDQTtJQUNBO0lBQ0E7SUFDQTtBQU1BO0lBQ2UsZUFBZSxPQUFPLENBQUMsZUFBZSxFQUFFLGVBQWUsRUFBRSxNQUFNLEVBQUU7QUFDaEY7SUFDQSxJQUFJLE1BQU0sQ0FBQyxFQUFFLEVBQUUsS0FBSyxFQUFFLFFBQVEsQ0FBQyxHQUFHLE1BQU12QyxXQUF3QixDQUFDLGVBQWUsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDN0YsSUFBSSxNQUFNLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxHQUFHLE1BQU1zQixjQUFvQixDQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsQ0FBQztBQUN2RTtJQUNBLElBQUksTUFBTSxLQUFLLEdBQUcsTUFBTWQsYUFBMEIsQ0FBQyxlQUFlLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNuRixJQUFJLE1BQU1rQixlQUFxQixDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDckQ7SUFDQTtBQUNBO0lBQ0EsSUFBSSxNQUFNYSxXQUF3QixDQUFDLEtBQUssRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzlELElBQUksTUFBTUEsV0FBd0IsQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztJQUM5RCxJQUFJLE1BQU1BLFdBQXdCLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDOUQsSUFBSSxNQUFNQSxXQUF3QixDQUFDLEtBQUssRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzlELElBQUksTUFBTUEsV0FBd0IsQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztJQUM5RCxJQUFJLE1BQU1BLFdBQXdCLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDOUQ7SUFDQSxJQUFJLE1BQU0sY0FBYyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxDQUFDO0lBQ2hELElBQUksTUFBTUEsV0FBd0IsQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztJQUMvRCxJQUFJLE1BQU1BLFdBQXdCLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDL0QsSUFBSSxNQUFNQSxXQUF3QixDQUFDLEtBQUssRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQy9EO0lBQ0EsSUFBSSxNQUFNLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUN4QixJQUFJLE1BQU0sS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDO0FBQ3hCO0lBQ0E7QUFDQTtJQUNBLElBQUksT0FBTztBQUNYO0lBQ0EsSUFBSSxlQUFlLGNBQWMsQ0FBQyxZQUFZLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUU7SUFDakYsUUFBUSxJQUFJLE1BQU0sRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLG9CQUFvQixDQUFDLFdBQVcsQ0FBQyxDQUFDO0FBQ25FO0lBQ0EsUUFBUSxNQUFNL0MsaUJBQThCLENBQUMsS0FBSyxFQUFFLFlBQVksQ0FBQyxDQUFDO0FBQ2xFO0lBQ0EsUUFBUSxNQUFNLElBQUksR0FBRyxRQUFRLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQ3BELFFBQVEsTUFBTSxTQUFTLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQztJQUN6QyxRQUFRLE1BQU1LLHNCQUFtQyxDQUFDLEtBQUssRUFBRSxRQUFRLEVBQUUsWUFBWSxDQUFDLENBQUM7SUFDakYsUUFBUSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxTQUFTLEVBQUU7SUFDNUMsWUFBWSxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFDbkQsWUFBWSxNQUFNLElBQUksR0FBRyxNQUFNLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDN0MsWUFBWSxNQUFNLEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDcEMsU0FBUztJQUNULFFBQVEsTUFBTUMsY0FBMkIsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUNqRDtJQUNBLFFBQVEsSUFBSSxZQUFZLElBQUksQ0FBQyxFQUFFO0lBQy9CLFlBQVksTUFBTSxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDL0MsU0FBUztBQUNUO0lBQ0EsUUFBUSxNQUFNTCxlQUE0QixDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ2xEO0lBQ0EsUUFBUSxlQUFlLG1CQUFtQixDQUFDLENBQUMsRUFBRTtJQUM5QyxZQUFZLE1BQU0sT0FBTyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbkMsWUFBWSxNQUFNLENBQUMsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbEMsWUFBWSxNQUFNLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDbEM7SUFDQSxZQUFZLElBQUksSUFBSSxDQUFDO0lBQ3JCLFlBQVksSUFBSSxHQUFHLElBQUksU0FBUyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUMvQztJQUNBLFlBQVksTUFBTUksc0JBQW1DLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxZQUFZLENBQUMsQ0FBQztJQUNyRixZQUFZLElBQUksQ0FBQyxZQUFZLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUU7SUFDbkQsZ0JBQWdCLE1BQU0sS0FBSyxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQztJQUNwRSxnQkFBZ0IsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLFVBQVUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUM7SUFDakUsYUFBYSxNQUFNO0lBQ25CLGdCQUFnQixNQUFNLEtBQUssQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDaEUsYUFBYTtJQUNiLFlBQVksTUFBTUMsY0FBMkIsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDM0Q7SUFDQSxZQUFZLElBQUksR0FBRyxNQUFNLENBQUMsQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFDOUYsWUFBWSxNQUFNLEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDcEM7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0FBQ0E7SUFDQTtJQUNBO0FBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0FBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0FBQ0E7QUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0FBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0EsU0FBUztBQUNUO0FBQ0E7SUFDQSxLQUFLO0lBQ0w7O0lDcEpBO0lBQ0E7QUFDQTtJQUNBO0FBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtBQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7QUFDQTtJQUNBO0lBQ0E7SUFDQTtBQUtBO0lBQ2UsZUFBZSxVQUFVLENBQUMsWUFBWSxFQUFFLE9BQU8sRUFBRTtJQUNoRSxJQUFJLE1BQU0sQ0FBQyxFQUFFLEVBQUUsUUFBUSxDQUFDLEdBQUcsTUFBTUUsV0FBd0IsQ0FBQyxZQUFZLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ25GO0lBQ0EsSUFBSSxNQUFNLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxHQUFHLE1BQU1zQixjQUFvQixDQUFDLEVBQUUsRUFBRSxRQUFRLENBQUMsQ0FBQztBQUNwRTtJQUNBLElBQUksTUFBTSxJQUFJLEdBQUcsRUFBRSxDQUFDO0lBQ3BCLElBQUksSUFBSSxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ3JCLElBQUksSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7SUFDdkIsSUFBSSxJQUFJLENBQUMsYUFBYSxHQUFHLE1BQU1DLGlCQUF1QixDQUFDLEVBQUUsRUFBRSxLQUFLLEVBQUUsUUFBUSxDQUFDLENBQUM7QUFDNUU7SUFDQSxJQUFJLElBQUksQ0FBQyxLQUFLLEdBQUcsTUFBTSxhQUFhLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxLQUFLLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUMxRSxJQUFJLElBQUksQ0FBQyxLQUFLLEdBQUcsTUFBTSxhQUFhLENBQUMsQ0FBQyxFQUFFLElBQUksR0FBRyxDQUFDLElBQUksS0FBSyxHQUFHLE9BQU8sQ0FBQyxDQUFDO0lBQ3JFLElBQUksSUFBSSxDQUFDLFVBQVUsR0FBRyxNQUFNLGFBQWEsQ0FBQyxDQUFDLEVBQUUsSUFBSSxHQUFHLENBQUMsSUFBSSxLQUFLLEdBQUcsWUFBWSxDQUFDLENBQUM7SUFDL0UsSUFBSSxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sYUFBYSxDQUFDLENBQUMsRUFBRSxJQUFJLEdBQUcsQ0FBQyxJQUFJLEtBQUssR0FBRyxXQUFXLENBQUMsQ0FBQztJQUM3RSxJQUFJLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxhQUFhLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsUUFBUSxDQUFDLENBQUM7QUFDNUQ7SUFDQSxJQUFJLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxjQUFjLENBQUMsRUFBRSxFQUFFLElBQUksRUFBRSxRQUFRLENBQUMsQ0FBQztJQUMzRCxJQUFJLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxjQUFjLENBQUMsRUFBRSxFQUFFLElBQUksRUFBRSxRQUFRLENBQUMsQ0FBQztJQUMzRCxJQUFJLElBQUksQ0FBQyxXQUFXLEdBQUcsTUFBTSxjQUFjLENBQUMsRUFBRSxFQUFFLElBQUksRUFBRSxhQUFhLENBQUMsQ0FBQztJQUNyRSxJQUFJLElBQUksQ0FBQyxVQUFVLEdBQUcsTUFBTSxjQUFjLENBQUMsRUFBRSxFQUFFLElBQUksRUFBRSxZQUFZLENBQUMsQ0FBQztBQUNuRTtJQUNBLElBQUksTUFBTSxFQUFFLENBQUMsS0FBSyxFQUFFLENBQUM7QUFDckI7SUFDQSxJQUFJLE9BQU8seUJBQXlCLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUNyRDtBQUNBO0FBQ0E7SUFDQSxJQUFJLGVBQWUsYUFBYSxDQUFDLFNBQVMsRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRTtJQUM3RSxRQUFRLE1BQU0sQ0FBQyxHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNuQyxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUM1QjtJQUNBLFFBQVEsTUFBTSxHQUFHLEdBQUcsRUFBRSxDQUFDO0lBQ3ZCLFFBQVEsTUFBTTFCLHNCQUFtQyxDQUFDLEVBQUUsRUFBRSxRQUFRLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFDM0UsUUFBUSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxFQUFFO0lBQ3ZDLFlBQVksSUFBSSxDQUFDLE9BQU8sR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssSUFBSSxDQUFDLENBQUMsRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxXQUFXLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDbEYsWUFBWSxNQUFNLElBQUksR0FBRyxNQUFNLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDM0MsWUFBWSxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDNUMsU0FBUztJQUNULFFBQVEsTUFBTUMsY0FBMkIsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUM5QztJQUNBLFFBQVEsT0FBTyxHQUFHLENBQUM7SUFDbkIsS0FBSztBQUNMO0lBQ0EsSUFBSSxlQUFlLGNBQWMsQ0FBQyxTQUFTLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRTtJQUNyRSxRQUFRLE1BQU0sQ0FBQyxHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNuQyxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUM1QjtJQUNBLFFBQVEsTUFBTSxHQUFHLEdBQUcsRUFBRSxDQUFDO0lBQ3ZCLFFBQVEsTUFBTUQsc0JBQW1DLENBQUMsRUFBRSxFQUFFLFFBQVEsRUFBRSxTQUFTLENBQUMsQ0FBQztJQUMzRSxRQUFRLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLEVBQUU7SUFDckMsWUFBWSxJQUFJLE9BQU8sRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxXQUFXLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNwRSxZQUFZLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUM7SUFDeEIsWUFBWSxNQUFNLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDckMsWUFBWSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsRUFBRSxFQUFFO0lBQzFDLGdCQUFnQixJQUFJLENBQUMsT0FBTyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLFdBQVcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDakcsZ0JBQWdCLE1BQU0sSUFBSSxHQUFHLE1BQU0sRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUMvQyxnQkFBZ0IsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ25ELGFBQWE7SUFDYixTQUFTO0lBQ1QsUUFBUSxNQUFNQyxjQUEyQixDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNwRCxRQUFRLE9BQU8sR0FBRyxDQUFDO0lBQ25CLEtBQUs7QUFDTDtBQUNBO0lBQ0E7O0lDdkZBO0lBQ0E7QUFDQTtJQUNBO0FBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtBQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7QUFDQTtJQUNBO0lBQ0E7SUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7SUNqQkE7SUFDQTtBQUNBO0lBQ0E7QUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0FBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtBQUNBO0lBQ0E7SUFDQTtJQUNBO0FBQ0E7SUFDZSxTQUFTLFNBQVMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRTtJQUN0RCxJQUFJLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtJQUNsRCxRQUFRLGNBQWMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDNUMsS0FBSztJQUNMLElBQUksU0FBUyxjQUFjLENBQUMsQ0FBQyxFQUFFO0lBQy9CLFFBQVEsTUFBTSxNQUFNLEdBQUcsQ0FBQyxFQUFFLEtBQUs7SUFDL0IsWUFBWSxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7SUFDdkIsWUFBWSxNQUFNLElBQUksR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3pDLFlBQVksSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsS0FBSztJQUNqQyxnQkFBZ0IsSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMvQyxnQkFBZ0IsSUFBSSxJQUFJLElBQUksS0FBSyxFQUFFLElBQUksR0FBRyxHQUFHLENBQUM7QUFDOUM7SUFDQSxnQkFBZ0IsSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3ZELGdCQUFnQixJQUFJLEVBQUUsSUFBSSxHQUFHLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQztJQUN2QyxnQkFBZ0IsSUFBSSxFQUFFLElBQUksSUFBSSxFQUFFLEVBQUUsR0FBRyxHQUFHLENBQUM7SUFDekMsZ0JBQWdCLElBQUksQ0FBQyxDQUFDLEVBQUUsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxFQUFFLEdBQUcsR0FBRyxDQUFDLEVBQUUsQ0FBQztJQUN2RCxnQkFBZ0IsSUFBSSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsR0FBRyxHQUFHLENBQUMsRUFBRSxDQUFDO0lBQ3ZDLGdCQUFnQixDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsS0FBSyxJQUFJLENBQUM7SUFDbkMsYUFBYSxDQUFDLENBQUM7SUFDZixZQUFZLE9BQU8sQ0FBQyxDQUFDO0lBQ3JCLFNBQVMsQ0FBQztJQUNWLFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN4RixRQUFRLElBQUksTUFBTSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbkMsS0FBSztBQUNMO0lBQ0E7O0lDNUNBLE1BQU0wQyxlQUFhLEdBQUcsT0FBTyxDQUFDO0FBQzlCO0lBQ0EsTUFBTUMsaUJBQWUsR0FBRztJQUN4QixJQUFJLEdBQUcsRUFBRSxTQUFTLEdBQUcsRUFBRSxJQUFJLEVBQUU7SUFDN0IsUUFBUSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFO0lBQzFCLFlBQVksT0FBTyxHQUFHLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3hDLFNBQVMsTUFBTSxPQUFPLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNoQyxLQUFLO0lBQ0wsSUFBSSxHQUFHLEVBQUUsU0FBUyxHQUFHLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRTtJQUNwQyxRQUFRLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUU7SUFDMUIsWUFBWSxPQUFPLEdBQUcsQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQy9DLFNBQVMsTUFBTTtJQUNmLFlBQVksR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLEtBQUssQ0FBQztJQUM5QixZQUFZLE9BQU8sSUFBSSxDQUFDO0lBQ3hCLFNBQVM7SUFDVCxLQUFLO0lBQ0wsQ0FBQyxDQUFDO0FBQ0Y7SUFDQSxNQUFNQyxXQUFTLENBQUM7SUFDaEIsSUFBSSxXQUFXLENBQUMsQ0FBQyxRQUFRLEVBQUU7SUFDM0IsUUFBUSxJQUFJLENBQUMsTUFBTSxHQUFHLFFBQVEsSUFBSSxDQUFDLENBQUM7SUFDcEMsUUFBUSxJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksS0FBSyxDQUFDRixlQUFhLENBQUMsQ0FBQztBQUM1QztJQUNBLFFBQVEsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLEVBQUVBLGVBQWEsRUFBRTtJQUNwRCxZQUFZLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDQSxlQUFhLENBQUMsR0FBRyxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDQSxlQUFhLEVBQUUsUUFBUSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDekYsU0FBUztJQUNULFFBQVEsT0FBTyxJQUFJLENBQUM7SUFDcEIsS0FBSztJQUNMLElBQUksSUFBSSxDQUFDLEdBQUc7SUFDWixRQUFRLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO0lBQy9DLFlBQVksSUFBSSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3hELFNBQVM7SUFDVCxLQUFLO0FBQ0w7SUFDQSxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUU7SUFDakIsUUFBUSxNQUFNLEdBQUcsR0FBRyxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbkMsUUFBUSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMvRCxRQUFRLE9BQU8sR0FBRyxDQUFDO0lBQ25CLEtBQUs7SUFDTCxJQUFJLFVBQVUsQ0FBQyxHQUFHLEVBQUU7SUFDcEIsUUFBUSxHQUFHLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzVCLFFBQVEsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLEdBQUdBLGVBQWEsQ0FBQyxDQUFDO0lBQ3JELFFBQVEsTUFBTSxJQUFJLEdBQUcsR0FBRyxHQUFHQSxlQUFhLENBQUM7SUFDekMsUUFBUSxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxTQUFTLENBQUM7SUFDakUsS0FBSztJQUNMLElBQUksVUFBVSxDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUU7SUFDM0IsUUFBUSxHQUFHLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzVCLFFBQVEsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLEdBQUdBLGVBQWEsQ0FBQyxDQUFDO0lBQ3JELFFBQVEsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUU7SUFDN0IsWUFBWSxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksS0FBSyxDQUFDQSxlQUFhLENBQUMsQ0FBQztJQUN0RCxTQUFTO0lBQ1QsUUFBUSxNQUFNLElBQUksR0FBRyxHQUFHLEdBQUdBLGVBQWEsQ0FBQztJQUN6QyxRQUFRLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsS0FBSyxDQUFDO0lBQ3JDLFFBQVEsSUFBSSxHQUFHLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTSxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDcEQsUUFBUSxPQUFPLElBQUksQ0FBQztJQUNwQixLQUFLO0lBQ0wsSUFBSSxPQUFPLEdBQUc7SUFDZCxRQUFRLE1BQU0sSUFBSSxHQUFHLElBQUlHLFVBQVEsRUFBRSxDQUFDO0lBQ3BDLFFBQVEsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO0lBQzlDLFlBQVksSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFO0lBQzdCLGdCQUFnQixLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7SUFDekQsb0JBQW9CLElBQUksT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLFdBQVcsRUFBRTtJQUMvRCx3QkFBd0IsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUNILGVBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNyRCxxQkFBcUI7SUFDckIsaUJBQWlCO0lBQ2pCLGFBQWE7SUFDYixTQUFTO0lBQ1QsUUFBUSxPQUFPLElBQUksQ0FBQztJQUNwQixLQUFLO0lBQ0wsQ0FBQztBQUNEO0lBQ0EsTUFBTUcsVUFBUSxDQUFDO0lBQ2YsSUFBSSxXQUFXLEVBQUUsUUFBUSxHQUFHO0lBQzVCLFFBQVEsTUFBTSxHQUFHLEdBQUcsSUFBSUQsV0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzVDLFFBQVEsTUFBTSxNQUFNLEdBQUcsSUFBSSxLQUFLLENBQUMsR0FBRyxFQUFFRCxpQkFBZSxDQUFDLENBQUM7SUFDdkQsUUFBUSxPQUFPLE1BQU0sQ0FBQztJQUN0QixLQUFLO0lBQ0w7O0lDdEVPLE1BQU0sbUNBQW1DLEdBQUcsQ0FBQyxDQUFDO0lBQzlDLE1BQU0sbUNBQW1DLEdBQUcsQ0FBQyxDQUFDO0FBQ3JEO0lBQ08sZUFBZSxjQUFjLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxZQUFZLEVBQUU7SUFDL0QsSUFBSSxJQUFJLE9BQU8sQ0FBQztJQUNoQixJQUFJLElBQUksT0FBTyxZQUFZLEtBQUssUUFBUSxFQUFFO0lBQzFDLFFBQVEsT0FBTyxHQUFHLFlBQVksQ0FBQztJQUMvQixLQUFLLE1BQU0sSUFBSSxPQUFPLFlBQVksS0FBSyxXQUFXLEVBQUU7SUFDcEQsUUFBUSxPQUFPLEVBQUU7SUFDakIsWUFBWSxZQUFZLEVBQUUsS0FBSztJQUMvQixTQUFTLENBQUM7SUFDVixLQUFLLE1BQU07SUFDWCxRQUFRLE9BQU8sR0FBRztJQUNsQixZQUFZLFlBQVksRUFBRSxZQUFZO0lBQ3RDLFNBQVMsQ0FBQztJQUNWLEtBQUs7QUFDTDtJQUNBLElBQUksTUFBTSxHQUFHLEdBQUcsRUFBRSxDQUFDO0lBQ25CLElBQUksTUFBTTVDLHNCQUFtQyxDQUFDLEVBQUUsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDL0Q7SUFDQSxJQUFJLEdBQUcsQ0FBQyxFQUFFLEdBQUcsTUFBTSxFQUFFLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDbEMsSUFBSSxHQUFHLENBQUMsS0FBSyxHQUFHLE1BQU1FLFVBQXVCLENBQUMsRUFBRSxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUMxRDtJQUNBLElBQUksSUFBSSxPQUFPLENBQUMsQ0FBQyxFQUFFO0lBQ25CLFFBQVEsSUFBSSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxHQUFHLENBQUMsS0FBSyxFQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUN6RSxRQUFRLEdBQUcsQ0FBQyxDQUFDLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUMxQixLQUFLLE1BQU0sSUFBSSxPQUFPLENBQUMsaUJBQWlCLEVBQUU7SUFDMUMsUUFBUSxHQUFHLENBQUMsQ0FBQyxHQUFHLE1BQU0sT0FBTyxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ2pGLEtBQUssTUFBTSxJQUFJLE9BQU8sQ0FBQyxpQkFBaUIsRUFBRTtJQUMxQyxRQUFRLEdBQUcsQ0FBQyxLQUFLLEdBQUcsTUFBTSxPQUFPLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDckYsUUFBUSxHQUFHLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO0lBQzdCLEtBQUssTUFBTTtJQUNYLFFBQVEsSUFBSTtJQUNaLFlBQVksR0FBRyxDQUFDLEtBQUssR0FBRyxNQUFNckMsZUFBYSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQzdFLFlBQVksR0FBRyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztJQUNqQyxTQUFTLENBQUMsT0FBTyxHQUFHLEVBQUU7SUFDdEIsWUFBWSxHQUFHLENBQUMsQ0FBQyxHQUFHLElBQUl1QyxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzNDLFNBQVM7SUFDVCxLQUFLO0FBQ0w7SUFDQSxJQUFJLEdBQUcsQ0FBQyxLQUFLLEdBQUcsTUFBTSxFQUFFLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDckMsSUFBSSxHQUFHLENBQUMsUUFBUSxHQUFHLE1BQU0sRUFBRSxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQ3hDLElBQUksR0FBRyxDQUFDLFVBQVUsR0FBRyxNQUFNLEVBQUUsQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUMxQyxJQUFJLEdBQUcsQ0FBQyxVQUFVLEdBQUcsTUFBTSxFQUFFLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDMUMsSUFBSSxHQUFHLENBQUMsT0FBTyxHQUFHLE1BQU0sRUFBRSxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQ3ZDLElBQUksR0FBRyxDQUFDLFlBQVksR0FBRyxNQUFNLEVBQUUsQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUM1QyxJQUFJLEdBQUcsQ0FBQyxjQUFjLEdBQUcsT0FBTyxRQUFRLENBQUMsbUNBQW1DLENBQUMsS0FBSyxXQUFXLElBQUksUUFBUSxDQUFDLG1DQUFtQyxDQUFDLEtBQUssSUFBSTtJQUN2SixXQUFXLE9BQU8sUUFBUSxDQUFDLG1DQUFtQyxDQUFDLEtBQUssV0FBVyxJQUFJLFFBQVEsQ0FBQyxtQ0FBbUMsQ0FBQyxLQUFLLElBQUksQ0FBQztBQUMxSTtJQUNBLElBQUksTUFBTUgsY0FBMkIsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUMxQztJQUNBLElBQUksT0FBTyxHQUFHLENBQUM7SUFDZixDQUFDO0FBQ0Q7SUFDTyxlQUFlLGVBQWUsQ0FBQyxFQUFFLENBQUMsUUFBUSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFO0lBQzVFLElBQUksSUFBSSxPQUFPLENBQUM7SUFDaEIsSUFBSSxJQUFJLE9BQU8sTUFBTSxLQUFLLFFBQVEsRUFBRTtJQUNwQyxRQUFRLE9BQU8sR0FBRyxNQUFNLENBQUM7SUFDekIsS0FBSyxNQUFNLElBQUksT0FBTyxNQUFNLEtBQUssV0FBVyxFQUFFO0lBQzlDLFFBQVEsT0FBTyxFQUFFLEVBQUUsQ0FBQztJQUNwQixLQUFLLE1BQU07SUFDWCxRQUFRLE9BQU8sR0FBRztJQUNsQixZQUFZLE1BQU0sRUFBRSxNQUFNO0lBQzFCLFlBQVksU0FBUyxFQUFFLFNBQVM7SUFDaEMsU0FBUyxDQUFDO0lBQ1YsS0FBSztBQUNMO0lBQ0EsSUFBSSxNQUFNLEtBQUssR0FBRyxNQUFNUSxXQUF3QixDQUFDLEVBQUUsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDbEUsSUFBSSxJQUFJLFFBQVEsR0FBRyxDQUFDLENBQUM7SUFDckIsSUFBSSxJQUFJLFdBQVcsQ0FBQztJQUNwQixJQUFJLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFO0lBQ2pDLFFBQVEsV0FBVyxHQUFHLElBQUlxQyxVQUFRLEVBQUUsQ0FBQztJQUNyQyxLQUFLLE1BQU07SUFDWCxRQUFRLFdBQVcsR0FBRyxFQUFFLENBQUM7SUFDekIsS0FBSztJQUNMLElBQUksS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQyxFQUFFLEVBQUU7SUFDNUMsUUFBUSxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sSUFBSSxDQUFDLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxPQUFPLENBQUMsU0FBUyxDQUFDLHVCQUF1QixFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMzSSxRQUFRLE1BQU0sQ0FBQyxHQUFHLGNBQWMsRUFBRSxDQUFDO0lBQ25DLFFBQVEsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM1QixLQUFLO0lBQ0wsSUFBSSxPQUFPLFdBQVcsQ0FBQztBQUN2QjtBQUNBO0lBQ0EsSUFBSSxTQUFTLGNBQWMsR0FBRztJQUM5QixRQUFRLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQztJQUNyQixRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxNQUFNLEVBQUUsQ0FBQztJQUN4QixRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxNQUFNLEVBQUUsQ0FBQztJQUN4QixRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxNQUFNLEVBQUUsQ0FBQztJQUN4QixRQUFRLE9BQU8sQ0FBQyxDQUFDO0lBQ2pCLEtBQUs7QUFDTDtJQUNBLElBQUksU0FBUyxNQUFNLEdBQUc7SUFDdEIsUUFBUSxNQUFNLEVBQUUsRUFBRSxFQUFFLENBQUM7QUFDckI7SUFDQSxRQUFRLE1BQU0sUUFBUSxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMzRCxRQUFRLFFBQVEsSUFBSSxDQUFDLENBQUM7SUFDdEIsUUFBUSxNQUFNLFNBQVMsR0FBRyxJQUFJLFFBQVEsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDeEQsUUFBUSxNQUFNLElBQUksR0FBRyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUNsRDtJQUNBLFFBQVEsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsUUFBUSxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsSUFBSSxFQUFFLENBQUM7SUFDekUsUUFBUSxRQUFRLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUM7SUFDckMsUUFBUSxNQUFNLEtBQUssR0FBRyxJQUFJLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDaEQsUUFBUSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxFQUFFO0lBQ25DLFlBQVksTUFBTSxHQUFHLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUM3RCxZQUFZLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNoRSxZQUFZLEVBQUUsQ0FBQyxHQUFHLENBQUMs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TUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDeEU7SUFDQSxJQUFJLE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDM0IsSUFBSSxNQUFNLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3hFLElBQUksTUFBTSxFQUFFLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDeEQsSUFBSSxNQUFNLEdBQUcsR0FBRyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUM7QUFDbEU7SUFDQSxJQUFJLE1BQU0sTUFBTSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNqQyxJQUFJLE1BQU0sV0FBVyxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDM0MsSUFBSSxNQUFNLE1BQU0sQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDakMsSUFBSSxNQUFNLFdBQVcsQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQzNDLElBQUksTUFBTSxNQUFNLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN4QyxJQUFJLE1BQU0sTUFBTSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNyQyxJQUFJLE1BQU0sTUFBTSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsQ0FBQztBQUN4QztJQUNBLElBQUksSUFBSSxPQUFPLENBQUM7SUFDaEIsSUFBSSxPQUFPLEdBQUcsTUFBTSxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDM0QsSUFBSSxNQUFNLE1BQU0sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDaEMsSUFBSSxPQUFPLEdBQUcsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNsRCxJQUFJLFFBQVEsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDN0I7SUFDQSxJQUFJLElBQUksTUFBTSxDQUFDO0lBQ2YsSUFBSSxNQUFNLEdBQUcsTUFBTSxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDMUQsSUFBSSxNQUFNLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDL0IsSUFBSSxNQUFNLEdBQUcsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNoRCxJQUFJLFFBQVEsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDNUI7SUFDQSxJQUFJLElBQUksTUFBTSxDQUFDO0lBQ2YsSUFBSSxNQUFNLEdBQUcsTUFBTSxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDMUQsSUFBSSxNQUFNLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDL0IsSUFBSSxNQUFNLEdBQUcsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNoRCxJQUFJLFFBQVEsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDNUI7SUFDQSxJQUFJLE1BQU0sR0FBRyxHQUFHLElBQUksVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3BDLElBQUksS0FBSyxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzFDLElBQUksTUFBTSxHQUFHLEdBQUcsSUFBSSxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDcEMsSUFBSSxLQUFLLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDMUMsSUFBSSxNQUFNLElBQUksR0FBRyxJQUFJLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNyQyxJQUFJLEtBQUssQ0FBQyxFQUFFLENBQUMsaUJBQWlCLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3BELElBQUksTUFBTSxJQUFJLEdBQUcsSUFBSSxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDckMsSUFBSSxLQUFLLENBQUMsRUFBRSxDQUFDLGlCQUFpQixDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNwRDtJQUNBLElBQUksTUFBTSxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzVCLElBQUksTUFBTSxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzVCLElBQUksTUFBTSxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzVCLElBQUksUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMxQixJQUFJLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDMUIsSUFBSSxRQUFRLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzFCLElBQUksTUFBTSxlQUFlLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDbEM7SUFDQSxJQUFJLElBQUksTUFBTSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDNUMsSUFBSSxJQUFJLEtBQUssR0FBRyxNQUFNLFdBQVcsQ0FBQyxNQUFNLEVBQUUsWUFBWSxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQzNEO0lBQ0EsSUFBSSxNQUFNLENBQUMsR0FBRyxJQUFJLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDdkMsSUFBSSxNQUFNLEVBQUUsR0FBRyxJQUFJLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDeEMsSUFBSSxNQUFNLEVBQUUsR0FBRyxJQUFJLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDeEMsSUFBSSxNQUFNLENBQUMsR0FBRyxJQUFJLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNuRCxJQUFJLE1BQU0sRUFBRSxHQUFHLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNwQztJQUNBLElBQUksSUFBSSxNQUFNLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUM3QyxJQUFJLElBQUksTUFBTSxHQUFHLE1BQU0sV0FBVyxDQUFDLE1BQU0sRUFBRSxZQUFZLEVBQUUsRUFBRSxFQUFFLENBQUMsVUFBVSxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2xHLElBQUksSUFBSSxNQUFNLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUM3QyxJQUFJLElBQUksTUFBTSxHQUFHLE1BQU0sV0FBVyxDQUFDLE1BQU0sRUFBRSxZQUFZLEVBQUUsRUFBRSxFQUFFLENBQUMsVUFBVSxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2xHLElBQUksSUFBSSxNQUFNLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO0lBQ2xELElBQUksSUFBSSxXQUFXLEdBQUcsTUFBTSxXQUFXLENBQUMsTUFBTSxFQUFFLFlBQVksRUFBRSxFQUFFLEVBQUUsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDdkcsSUFBSSxJQUFJLE1BQU0sRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLENBQUM7SUFDakQsSUFBSSxJQUFJLFVBQVUsR0FBRyxNQUFNLFdBQVcsQ0FBQyxNQUFNLEVBQUUsWUFBWSxFQUFFLEVBQUUsRUFBRSxDQUFDLFVBQVUsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUN0RztJQUNBLElBQUksTUFBTSxrQkFBa0IsRUFBRSxDQUFDO0FBQy9CO0lBQ0EsSUFBSSxNQUFNLHFCQUFxQixDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ25EO0lBQ0EsSUFBSSxNQUFNLE9BQU8sRUFBRSxDQUFDO0FBQ3BCO0lBQ0EsSUFBSSxNQUFNLFdBQVcsRUFBRSxDQUFDO0FBQ3hCO0lBQ0EsSUFBSSxNQUFNLHFCQUFxQixDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ2pELElBQUksTUFBTSxxQkFBcUIsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUNqRCxJQUFJLE1BQU0scUJBQXFCLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDbkQsSUFBSSxNQUFNLHFCQUFxQixDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ25EO0lBQ0EsSUFBSSxNQUFNLE1BQU0sR0FBRyxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDckM7SUFDQSxJQUFJLE1BQU0saUJBQWlCLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3hDLElBQUksTUFBTSxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQy9CLElBQUksTUFBTSxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQy9CLElBQUksTUFBTSxlQUFlLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDbEM7SUFDQSxJQUFJLElBQUksTUFBTSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDLENBQUM7QUFDbEU7QUFDQTtJQUNBLElBQUksTUFBTSxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDekIsSUFBSSxNQUFNLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUN6QixJQUFJLE1BQU0sTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDO0FBQ3pCO0lBQ0EsSUFBSSxPQUFPLE1BQU0sQ0FBQztBQUNsQjtJQUNBLElBQUksZUFBZSxPQUFPLEdBQUc7SUFDN0IsUUFBUSxNQUFNLGlCQUFpQixDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQztJQUMzQyxRQUFRLE1BQU0sT0FBTyxHQUFHLElBQUksU0FBUyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN0RCxRQUFRLElBQUksUUFBUSxHQUFHLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFO0lBQ25DLFlBQVksSUFBSSxNQUFNLEdBQUcsTUFBTSxXQUFXLENBQUMsTUFBTSxFQUFFLFlBQVksRUFBRSxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUM3RyxZQUFZLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxVQUFVLEVBQUUsQ0FBQyxFQUFFLEVBQUU7SUFDOUMsZ0JBQWdCLElBQUksQ0FBQyxNQUFNLElBQUksQ0FBQyxDQUFDLEtBQUssSUFBSSxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbkcsZ0JBQWdCLE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLEdBQUcsR0FBRyxFQUFFLENBQUM7SUFDNUUsZ0JBQWdCLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN6QyxhQUFhO0lBQ2IsU0FBUyxNQUFNLElBQUksUUFBUSxJQUFJLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFO0lBQzNDLFlBQVksTUFBTSxDQUFDLEdBQUcsWUFBWSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxDQUFDO0lBQzNFLFlBQVksTUFBTSxNQUFNLENBQUMsWUFBWSxDQUFDLE9BQU8sRUFBRSxDQUFDLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3RGLFNBQVMsTUFBTTtJQUNmLFlBQVksSUFBSSxNQUFNLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBQ3hELFlBQVksTUFBTSxJQUFJLEtBQUssQ0FBQyxnQ0FBZ0MsQ0FBQyxDQUFDO0lBQzlELFNBQVM7SUFDVCxRQUFRLE1BQU0sTUFBTSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNwQyxRQUFRLE1BQU0sZUFBZSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3RDLEtBQUs7QUFDTDtJQUNBLElBQUksZUFBZSxrQkFBa0IsR0FBRztJQUN4QyxRQUFRLE1BQU0sU0FBUyxHQUFHLElBQUksVUFBVSxDQUFDLEVBQUUsR0FBRyxLQUFLLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzNELFFBQVEsTUFBTSxVQUFVLEdBQUcsSUFBSSxRQUFRLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzFELFFBQVEsTUFBTSxJQUFJLEdBQUcsSUFBSSxVQUFVLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNqRCxRQUFRLEtBQUssQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNqRDtJQUNBLFFBQVEsSUFBSSxPQUFPLEdBQUcsQ0FBQyxDQUFDO0FBQ3hCO0lBQ0EsUUFBUSxTQUFTLGNBQWMsR0FBRztJQUNsQyxZQUFZLE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN6RCxZQUFZLE9BQU8sSUFBSSxDQUFDLENBQUM7SUFDekIsWUFBWSxNQUFNLEtBQUssR0FBRyxJQUFJLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDcEQsWUFBWSxPQUFPLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQzVDLFNBQVM7QUFDVDtJQUNBLFFBQVEsTUFBTSxLQUFLLEdBQUcsSUFBSSxRQUFRLEVBQUUsQ0FBQztJQUNyQyxRQUFRLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUMsRUFBRSxFQUFFO0lBQ2hELFlBQVksSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyx3QkFBd0IsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDNUcsWUFBWSxNQUFNLEVBQUUsR0FBRyxjQUFjLEVBQUUsQ0FBQztJQUN4QyxZQUFZLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUU7SUFDckMsZ0JBQWdCLE1BQU0sQ0FBQyxHQUFHLGNBQWMsRUFBRSxDQUFDO0lBQzNDLGdCQUFnQixNQUFNLEtBQUssR0FBRyxPQUFPLENBQUM7SUFDdEMsZ0JBQWdCLE9BQU8sSUFBSSxLQUFLLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQztBQUN2QztJQUNBLGdCQUFnQixNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUM7SUFDbkMsZ0JBQWdCLE1BQU0sRUFBRSxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDakMsZ0JBQWdCLE1BQU0sR0FBRyxHQUFHLFVBQVUsQ0FBQztJQUN2QyxnQkFBZ0IsTUFBTSxFQUFFLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUNqQyxnQkFBZ0IsSUFBSSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztJQUMzRCxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztBQUM1QztJQUNBLGdCQUFnQixJQUFJLENBQUMsSUFBSSxPQUFPLEVBQUU7SUFDbEMsb0JBQW9CLElBQUksT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssV0FBVyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUM7SUFDakUsb0JBQW9CLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDakQsaUJBQWlCLE1BQU07SUFDdkIsb0JBQW9CLElBQUksT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUMsS0FBSyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDO0lBQ3ZGLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxHQUFHLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDN0QsaUJBQWlCO0lBQ2pCLGdCQUFnQixLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUM3QyxhQUFhO0FBQ2I7SUFDQSxZQUFZLE1BQU0sRUFBRSxHQUFHLGNBQWMsRUFBRSxDQUFDO0lBQ3hDLFlBQVksS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRTtJQUNyQyxnQkFBZ0IsTUFBTSxDQUFDLEdBQUcsY0FBYyxFQUFFLENBQUM7SUFDM0MsZ0JBQWdCLE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQztJQUN0QyxnQkFBZ0IsT0FBTyxJQUFJLEtBQUssQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDO0FBQ3ZDO0lBQ0EsZ0JBQWdCLE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQztJQUNuQyxnQkFBZ0IsTUFBTSxFQUFFLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUNqQyxnQkFBZ0IsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDO0lBQ25DLGdCQUFnQixNQUFNLEVBQUUsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ2pDLGdCQUFnQixNQUFNLEdBQUcsR0FBRyxXQUFXLENBQUM7SUFDeEMsZ0JBQWdCLE1BQU0sRUFBRSxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDakMsZ0JBQWdCLElBQUksT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssV0FBVyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUM7SUFDN0QsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDN0MsZ0JBQWdCLElBQUksT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssV0FBVyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUM7SUFDN0QsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7QUFDN0M7SUFDQSxnQkFBZ0IsSUFBSSxDQUFDLElBQUksT0FBTyxFQUFFO0lBQ2xDLG9CQUFvQixJQUFJLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLFdBQVcsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDO0lBQ2pFLG9CQUFvQixFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ2pELGlCQUFpQixNQUFNO0lBQ3ZCLG9CQUFvQixJQUFJLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDLEtBQUssV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztJQUN2RixvQkFBb0IsQ0FBQyxDQUFDLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQzVELGlCQUFpQjtBQUNqQjtJQUNBLGdCQUFnQixLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUM3QyxhQUFhO0FBQ2I7SUFDQSxZQUFZLE1BQU0sRUFBRSxHQUFHLGNBQWMsRUFBRSxDQUFDO0lBQ3hDLFlBQVksS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRTtJQUNyQyxnQkFBZ0IsTUFBTSxDQUFDLEdBQUcsY0FBYyxFQUFFLENBQUM7SUFDM0MsZ0JBQWdCLE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQztJQUN0QyxnQkFBZ0IsT0FBTyxJQUFJLEtBQUssQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDO0FBQ3ZDO0lBQ0EsZ0JBQWdCLE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQztJQUNuQyxnQkFBZ0IsTUFBTSxFQUFFLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUNqQyxnQkFBZ0IsSUFBSSxDQUFDLElBQUksT0FBTyxFQUFFO0lBQ2xDLG9CQUFvQixJQUFJLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLFdBQVcsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDO0lBQ2pFLG9CQUFvQixFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ2pELGlCQUFpQixNQUFNO0lBQ3ZCLG9CQUFvQixJQUFJLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDLEtBQUssV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztJQUN2RixvQkFBb0IsQ0FBQyxDQUFDLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQzVELGlCQUFpQjtJQUNqQixhQUFhO0lBQ2IsU0FBUztBQUNUO0lBQ0EsUUFBUSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLElBQUksT0FBTyxHQUFHLENBQUMsRUFBRSxFQUFFO0lBQzVDLFlBQVksTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDO0lBQy9CLFlBQVksTUFBTSxFQUFFLEdBQUcsR0FBRyxFQUFFLElBQUksQ0FBQyxZQUFZLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDbkQsWUFBWSxNQUFNLEdBQUcsR0FBRyxVQUFVLENBQUM7SUFDbkMsWUFBWSxNQUFNLEVBQUUsR0FBRyxHQUFHLEVBQUUsSUFBSSxDQUFDLFlBQVksR0FBRyxDQUFDLENBQUMsQ0FBQztJQUNuRCxZQUFZLElBQUksT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUM7SUFDdkQsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDckMsWUFBWSxJQUFJLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLFdBQVcsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDO0lBQ3pELFlBQVksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3RDLFlBQVksS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsWUFBWSxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzFELFNBQVM7QUFDVDtBQUNBO0lBQ0EsUUFBUSxNQUFNLGlCQUFpQixDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQztBQUMzQztJQUNBLFFBQVEsTUFBTSxXQUFXLEdBQUcsSUFBSSxTQUFTLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUM3RTtJQUNBLFFBQVEsTUFBTSxLQUFLLEdBQUcsSUFBSSxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDeEMsUUFBUSxNQUFNLE1BQU0sR0FBRyxJQUFJLFFBQVEsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDbEQsUUFBUSxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ2hELFFBQVEsV0FBVyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMvQixRQUFRLElBQUksUUFBUSxHQUFHLENBQUMsQ0FBQztJQUN6QixRQUFRLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO0lBQzNDLFlBQVksSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDaEcsWUFBWSxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDaEMsU0FBUztBQUNUO0lBQ0EsUUFBUSxNQUFNLE1BQU0sQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDeEMsUUFBUSxNQUFNLGVBQWUsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUN0QztJQUNBLFFBQVEsU0FBUyxTQUFTLENBQUMsQ0FBQyxFQUFFO0lBQzlCLFlBQVksVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ2hELFlBQVksVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ2hELFlBQVksVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ2hELFlBQVksSUFBSSxDQUFDLENBQUM7SUFDbEIsWUFBWSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUU7SUFDekIsZ0JBQWdCLENBQUMsR0FBRyxLQUFLLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNqRixhQUFhLE1BQU07SUFDbkIsZ0JBQWdCLENBQUMsR0FBRyxLQUFLLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDaEQsYUFBYTtJQUNiLFlBQVksTUFBTSxHQUFHLEdBQUcsS0FBSyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQzdDLFlBQVksS0FBSyxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUNqRCxZQUFZLFdBQVcsQ0FBQyxHQUFHLENBQUMsU0FBUyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQ2pELFlBQVksUUFBUSxJQUFJLFNBQVMsQ0FBQyxNQUFNLENBQUM7SUFDekMsU0FBUztBQUNUO0lBQ0EsS0FBSztBQUNMO0lBQ0EsSUFBSSxlQUFlLHFCQUFxQixDQUFDLFNBQVMsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLFdBQVcsRUFBRTtJQUNqRixRQUFRLE1BQU0sVUFBVSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7SUFDaEMsUUFBUSxNQUFNLENBQUMsR0FBRyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUM7QUFDbkM7SUFDQSxRQUFRLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDNUIsUUFBUSxNQUFNLGlCQUFpQixDQUFDLE1BQU0sRUFBRSxTQUFTLENBQUMsQ0FBQztBQUNuRDtJQUNBLFFBQVEsSUFBSSxVQUFVLEdBQUcsRUFBRSxDQUFDO0FBQzVCO0lBQ0EsUUFBUSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDaEIsUUFBUSxPQUFPLENBQUMsQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFO0FBQzdCO0lBQ0EsWUFBWSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDcEIsWUFBWSxPQUFPLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsV0FBVyxDQUFDLEVBQUU7SUFDN0QsZ0JBQWdCLElBQUksTUFBTSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxxQkFBcUIsRUFBRSxXQUFXLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNyRyxnQkFBZ0IsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzFCLGdCQUFnQixJQUFJLEVBQUUsSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztJQUN0RCxnQkFBZ0IsT0FBTyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDLE1BQU0sTUFBTSxFQUFFLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsR0FBRyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsVUFBVSxDQUFDLEVBQUU7SUFDdkgsb0JBQW9CLEVBQUUsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQzNELG9CQUFvQixDQUFDLEdBQUcsQ0FBQztJQUN6QixpQkFBaUI7SUFDakIsZ0JBQWdCLE1BQU0sTUFBTSxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUNuRCxnQkFBZ0IsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQzdCLGdCQUFnQixVQUFVLENBQUMsSUFBSSxDQUFDLDJCQUEyQixDQUFDLFNBQVMsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLFdBQVcsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsS0FBSztJQUNqSCxvQkFBb0IsSUFBSSxNQUFNLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLG1CQUFtQixFQUFFLFdBQVcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3hHLG9CQUFvQixPQUFPLENBQUMsQ0FBQztJQUM3QixpQkFBaUIsQ0FBQyxDQUFDLENBQUM7SUFDcEIsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdkIsZ0JBQWdCLENBQUMsRUFBRSxDQUFDO0lBQ3BCLGFBQWE7QUFDYjtJQUNBLFlBQVksTUFBTSxNQUFNLEdBQUcsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0FBQ3pEO0lBQ0EsWUFBWSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtJQUNoRCxnQkFBZ0IsTUFBTSxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2pELGdCQUFnQixNQUFNLElBQUksR0FBRyxNQUFNLENBQUMsQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDL0QsZ0JBQWdCLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdEMsYUFBYTtJQUNiLFlBQVksVUFBVSxHQUFHLEVBQUUsQ0FBQztBQUM1QjtJQUNBLFNBQVM7SUFDVCxRQUFRLE1BQU0sZUFBZSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ3RDO0lBQ0EsS0FBSztBQUNMO0lBQ0EsSUFBSSxlQUFlLDJCQUEyQixDQUFDLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRTtJQUNwRixRQUFRLE1BQU0sQ0FBQyxHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNuQyxRQUFRLE1BQU0sSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUM5QixRQUFRLE1BQU0sS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUMvQixRQUFRLE1BQU0sS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUMvQixRQUFRLElBQUksS0FBSyxFQUFFLFVBQVUsRUFBRSxlQUFlLEVBQUUsTUFBTSxDQUFDO0lBQ3ZELFFBQVEsSUFBSSxTQUFTLElBQUksSUFBSSxFQUFFO0lBQy9CLFlBQVksS0FBSyxHQUFHLHVCQUF1QixDQUFDO0lBQzVDLFlBQVksVUFBVSxHQUFHLG9CQUFvQixDQUFDO0lBQzlDLFlBQVksZUFBZSxHQUFHLG1CQUFtQixDQUFDO0lBQ2xELFlBQVksTUFBTSxHQUFHLFVBQVUsQ0FBQztJQUNoQyxTQUFTLE1BQU0sSUFBSSxTQUFTLElBQUksSUFBSSxFQUFFO0lBQ3RDLFlBQVksS0FBSyxHQUFHLHVCQUF1QixDQUFDO0lBQzVDLFlBQVksVUFBVSxHQUFHLG9CQUFvQixDQUFDO0lBQzlDLFlBQVksZUFBZSxHQUFHLG1CQUFtQixDQUFDO0lBQ2xELFlBQVksTUFBTSxHQUFHLFVBQVUsQ0FBQztJQUNoQyxTQUFTLE1BQU07SUFDZixZQUFZLE1BQU0sSUFBSSxLQUFLLENBQUMsZUFBZSxDQUFDLENBQUM7SUFDN0MsU0FBUztJQUNULFFBQVEsSUFBSSxHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBQ25CLFFBQVEsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsR0FBRyxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztJQUMzRSxRQUFRLElBQUksTUFBTSxFQUFFLFFBQVEsQ0FBQztJQUM3QixRQUFRLElBQUksR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUU7SUFDeEIsWUFBWSxNQUFNLEdBQUcsSUFBSSxTQUFTLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzdDLFlBQVksUUFBUSxHQUFHLElBQUksU0FBUyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3RELFNBQVMsTUFBTTtJQUNmLFlBQVksTUFBTSxHQUFHLElBQUksVUFBVSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM5QyxZQUFZLFFBQVEsR0FBRyxJQUFJLFVBQVUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUN2RCxTQUFTO0lBQ1QsUUFBUSxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDbEIsUUFBUSxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDbEI7SUFDQSxRQUFRLE1BQU0sTUFBTSxHQUFHO0lBQ3ZCLFlBQVksTUFBTTtJQUNsQixZQUFZLE1BQU07SUFDbEIsWUFBWSxXQUFXO0lBQ3ZCLFlBQVksVUFBVTtJQUN0QixTQUFTLENBQUM7QUFDVjtJQUNBLFFBQVEsTUFBTSxJQUFJLEdBQUcsSUFBSSxVQUFVLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNqRCxRQUFRLEtBQUssQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNqRDtJQUNBLFFBQVEsSUFBSSxNQUFNLEdBQUcsQ0FBQyxDQUFDO0lBQ3ZCLFFBQVEsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7SUFDekMsWUFBWSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLFNBQVM7SUFDbEMsWUFBWSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtJQUNoRCxnQkFBZ0IsSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxzQkFBc0IsRUFBRSxXQUFXLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNoSSxnQkFBZ0IsTUFBTSxDQUFDLEdBQUc7SUFDMUIsb0JBQW9CLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLO0lBQzlDLHdCQUF3QixHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3BDLHdCQUF3QixHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSTtJQUMzQyxxQkFBcUIsRUFBRSxNQUFNLENBQUMsSUFBSTtJQUNsQyxpQkFBaUIsQ0FBQztJQUNsQixnQkFBZ0IsSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFO0lBQ3JDLG9CQUFvQixRQUFRLENBQUMsR0FBRztJQUNoQyx3QkFBd0IsS0FBSyxDQUFDLEtBQUs7SUFDbkMsNEJBQTRCLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDeEMsNEJBQTRCLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsRUFBRSxDQUFDLEVBQUU7SUFDdEQseUJBQXlCO0lBQ3pCLHdCQUF3QixNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxFQUFFO0lBQzFDLHFCQUFxQixDQUFDO0lBQ3RCLGlCQUFpQixNQUFNO0lBQ3ZCLG9CQUFvQixRQUFRLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUMzRCxpQkFBaUI7SUFDakIsZ0JBQWdCLE1BQU0sR0FBRyxDQUFDO0lBQzFCLGFBQWE7SUFDYixTQUFTO0FBQ1Q7SUFDQSxRQUFRLElBQUksR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUU7SUFDMUIsWUFBWSxNQUFNLElBQUksR0FBRyxFQUFFLENBQUM7SUFDNUIsWUFBWSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQy9ELFlBQVksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQztJQUNqRSxZQUFZLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUNyRSxZQUFZLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDbkIsWUFBWSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ25CLFlBQVksSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3RCLFlBQVksS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7SUFDN0MsZ0JBQWdCLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUU7SUFDN0Isb0JBQW9CLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFO0lBQ3BFLHdCQUF3QixDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsTUFBTSxFQUFFLEVBQUUsQ0FBQztJQUM1QyxxQkFBcUIsQ0FBQyxDQUFDLENBQUM7SUFDeEIsb0JBQW9CLEVBQUUsSUFBSSxLQUFLLENBQUM7SUFDaEMsb0JBQW9CLFNBQVM7SUFDN0IsaUJBQWlCO0lBQ2pCLGdCQUFnQixJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLElBQUksQ0FBQyxFQUFFO0lBQ3hDLG9CQUFvQixJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRTtJQUNuRSx3QkFBd0IsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxFQUFFLENBQUM7SUFDNUMsd0JBQXdCLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsRUFBRSxDQUFDO0lBQzVDLHdCQUF3QixDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUMxQyx3QkFBd0IsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxFQUFFLENBQUM7SUFDNUMscUJBQXFCLENBQUMsQ0FBQyxDQUFDO0lBQ3hCLGlCQUFpQixNQUFNO0lBQ3ZCLG9CQUFvQixJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRTtJQUN4RSx3QkFBd0IsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxFQUFFLENBQUM7SUFDNUMsd0JBQXdCLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsRUFBRSxDQUFDO0lBQzVDLHdCQUF3QixDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUMxQyx3QkFBd0IsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQztJQUM1Qyx3QkFBd0IsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxFQUFFLENBQUM7SUFDNUMscUJBQXFCLENBQUMsQ0FBQyxDQUFDO0lBQ3hCLGlCQUFpQjtJQUNqQixnQkFBZ0IsRUFBRSxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDO0lBQ3pDLGdCQUFnQixFQUFFLElBQUksS0FBSyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQztJQUNoRCxnQkFBZ0IsRUFBRSxJQUFJLEtBQUssQ0FBQztJQUM1QixhQUFhO0lBQ2IsWUFBWSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsZUFBZSxFQUFFLE1BQU0sRUFBRTtJQUNyRSxnQkFBZ0IsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBQ3hCLGdCQUFnQixDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsTUFBTSxDQUFDO0lBQ2pDLGdCQUFnQixDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDeEIsYUFBYSxDQUFDLENBQUMsQ0FBQztJQUNoQixZQUFZLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0FBQzNFO0lBQ0EsWUFBWSxNQUFNLEdBQUcsR0FBRyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3pELFlBQVksT0FBTyxHQUFHLENBQUM7SUFDdkIsU0FBUyxNQUFNO0lBQ2YsWUFBWSxJQUFJLEdBQUcsR0FBRyxNQUFNLENBQUMsQ0FBQyxjQUFjLENBQUMsTUFBTSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFDcEYsWUFBWSxHQUFHLEdBQUcsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7SUFDdEMsWUFBWSxPQUFPLEdBQUcsQ0FBQztJQUN2QixTQUFTO0lBQ1QsS0FBSztBQUNMO0FBQ0E7SUFDQSxJQUFJLGVBQWUsV0FBVyxHQUFHO0lBQ2pDLFFBQVEsTUFBTSxVQUFVLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQztBQUNqQztJQUNBLFFBQVEsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUM5QjtJQUNBLFFBQVEsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFVBQVUsRUFBRTtJQUN0RCxZQUFZLElBQUksTUFBTSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM1RSxZQUFZLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsQ0FBQztJQUN6RCxZQUFZLE1BQU0sZ0JBQWdCLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3pDLFNBQVM7SUFDVCxLQUFLO0FBQ0w7SUFDQSxJQUFJLGVBQWUsZ0JBQWdCLENBQUMsTUFBTSxFQUFFLE9BQU8sRUFBRTtJQUNyRCxRQUFRLE1BQU0sS0FBSyxHQUFHLE1BQU0sTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsR0FBRyxFQUFFLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEdBQUcsVUFBVSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ3hHLFFBQVEsTUFBTSxLQUFLLEdBQUcsTUFBTSxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxHQUFHLEVBQUUsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDekYsUUFBUSxNQUFNLFdBQVcsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLFdBQVcsQ0FBQztJQUNoRCxRQUFRLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLEdBQUcsV0FBVyxDQUFDLENBQUM7SUFDbkUsUUFBUSxNQUFNLFVBQVUsR0FBRyxFQUFFLENBQUM7SUFDOUIsUUFBUSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsRUFBRSxFQUFFO0lBQzFDLFlBQVksSUFBSSxDQUFDLENBQUM7SUFDbEIsWUFBWSxJQUFJLENBQUMsRUFBRSxXQUFXLENBQUMsQ0FBQyxFQUFFO0lBQ2xDLGdCQUFnQixDQUFDLEdBQUcsZ0JBQWdCLENBQUM7SUFDckMsYUFBYSxNQUFNO0lBQ25CLGdCQUFnQixDQUFDLEdBQUcsT0FBTyxHQUFHLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQztJQUNqRCxhQUFhO0lBQ2IsWUFBWSxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUUsU0FBUztBQUMvQjtJQUNBLFlBQVksTUFBTSxRQUFRLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUM3RixZQUFZLE1BQU0sUUFBUSxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDN0YsWUFBWSxVQUFVLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDO0lBQ25FLFNBQVM7QUFDVDtBQUNBO0lBQ0EsUUFBUSxNQUFNLE1BQU0sR0FBRyxNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUM7QUFDckQ7SUFDQSxRQUFRLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO0lBQzVDLFlBQVksUUFBUSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMxQyxTQUFTO0lBQ1QsS0FBSztBQUNMO0lBQ0EsSUFBSSxlQUFlLGlCQUFpQixDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUU7SUFDbkQsUUFBUSxNQUFNLE9BQU8sR0FBRyxLQUFLLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQztJQUM3QyxRQUFRLE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDdEMsUUFBUSxNQUFNLElBQUksR0FBRyxFQUFFLENBQUM7SUFDeEIsUUFBUSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQzFELFFBQVEsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUMxRCxRQUFRLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQzlELFFBQVEsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLEVBQUUsRUFBRTtJQUN0QyxZQUFZLElBQUksQ0FBQyxJQUFJLENBQUM7SUFDdEIsZ0JBQWdCLEdBQUcsRUFBRSxNQUFNO0lBQzNCLGdCQUFnQixNQUFNLEVBQUUsZUFBZTtJQUN2QyxnQkFBZ0IsTUFBTSxFQUFFO0lBQ3hCLG9CQUFvQixDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUM7SUFDM0Msb0JBQW9CLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQztJQUMzQyxvQkFBb0IsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDO0lBQzdDLGlCQUFpQjtJQUNqQixhQUFhLENBQUMsQ0FBQztJQUNmLFNBQVM7SUFDVCxRQUFRLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLEVBQUU7SUFDckUsWUFBWSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDcEIsWUFBWSxDQUFDLEdBQUcsRUFBRSxPQUFPLENBQUM7SUFDMUIsWUFBWSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDcEIsU0FBUyxDQUFDLENBQUMsQ0FBQztJQUNaLFFBQVEsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sRUFBRTtJQUNuRSxZQUFZLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztJQUNwQixZQUFZLENBQUMsR0FBRyxFQUFFLE9BQU8sQ0FBQztJQUMxQixZQUFZLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztJQUNwQixTQUFTLENBQUMsQ0FBQyxDQUFDO0lBQ1osUUFBUSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ2xFO0lBQ0EsUUFBUSxNQUFNLEdBQUcsR0FBRyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3JEO0lBQ0EsUUFBUSxPQUFPLEdBQUcsQ0FBQztJQUNuQixLQUFLO0FBQ0w7SUFDQSxJQUFJLFNBQVMsT0FBTyxDQUFDLENBQUMsRUFBRTtJQUN4QixRQUFRLE1BQU0sSUFBSSxHQUFHLElBQUksVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3ZDLFFBQVEsTUFBTSxLQUFLLEdBQUcsSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNsRixRQUFRLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNyQyxRQUFRLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDOUIsS0FBSztBQUNMO0lBQ0E7O0lDcGtCZSxlQUFlLHFCQUFxQixDQUFDLFFBQVEsRUFBRSxhQUFhLEVBQUUsTUFBTSxFQUFFO0FBQ3JGO0lBQ0EsSUFBSSxNQUFNLENBQUMsRUFBRSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsWUFBWSxDQUFDLEdBQUcsTUFBTXRCLFdBQXdCLENBQUMsUUFBUSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNyRyxJQUFJLE1BQU0sSUFBSSxHQUFHLE1BQU1LLFlBQW9CLENBQUMsTUFBTSxFQUFFLFlBQVksQ0FBQyxDQUFDO0lBQ2xFLElBQUksSUFBSSxJQUFJLENBQUMsUUFBUSxJQUFJLFNBQVMsRUFBRTtJQUNwQyxRQUFRLE1BQU0sSUFBSSxLQUFLLENBQUMsMEJBQTBCLENBQUMsQ0FBQztJQUNwRCxLQUFLO0FBQ0w7SUFDQSxJQUFJLE1BQU0sS0FBSyxHQUFHLE1BQU1YLGFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDekMsSUFBSSxNQUFNLEdBQUcsR0FBRyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2hDLElBQUksTUFBTSxHQUFHLEdBQUcsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUNoQztJQUNBLElBQUksTUFBTSxTQUFTLEdBQUcsTUFBTXFELGFBQXVCLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxZQUFZLENBQUMsQ0FBQztBQUNqRjtJQUNBLElBQUksTUFBTSxXQUFXLEdBQUcsTUFBTXpFLGNBQXVCLENBQUMsYUFBYSxDQUFDLENBQUM7QUFDckU7SUFDQTtJQUNBO0lBQ0E7SUFDQSxJQUFJLE1BQU0sT0FBTyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNuQyxJQUFJLE1BQU0sT0FBTyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNsQyxJQUFJLE1BQU0sT0FBTyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNsQyxJQUFJLE1BQU0sT0FBTyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNuQyxJQUFJLE1BQU0sT0FBTyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNuQyxJQUFJLE1BQU0sT0FBTyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztBQUNuQztJQUNBO0lBQ0EsSUFBSSxJQUFJLFdBQVcsQ0FBQztJQUNwQixJQUFJLFdBQVcsR0FBRyxNQUFNZ0MsV0FBd0IsQ0FBQyxNQUFNLEVBQUUsWUFBWSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzFFLElBQUksV0FBVyxHQUFHLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDLENBQUM7QUFDMUQ7SUFDQSxJQUFJLE1BQU0sZUFBZSxDQUFDLElBQUksRUFBRSxXQUFXLENBQUMsQ0FBQztBQUM3QztJQUNBO0lBQ0E7SUFDQTtJQUNBLElBQUksTUFBTSxlQUFlLEdBQUcsTUFBTUEsV0FBd0IsQ0FBQyxNQUFNLEVBQUUsWUFBWSxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ3BGO0lBQ0EsSUFBSSxJQUFJLGNBQWMsQ0FBQztJQUN2QixJQUFJLGNBQWMsR0FBRyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLGVBQWUsRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ3ZGLElBQUksY0FBYyxHQUFHLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsY0FBYyxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBQ3ZKO0lBQ0E7SUFDQSxJQUFJLGNBQWMsR0FBRyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxjQUFjLENBQUMsVUFBVSxHQUFHLEdBQUcsQ0FBQyxDQUFDO0lBQzlFLElBQUksY0FBYyxHQUFHLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQyxXQUFXLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDaEUsSUFBSSxNQUFNLGVBQWUsQ0FBQyxJQUFJLEVBQUUsY0FBYyxDQUFDLENBQUM7QUFDaEQ7SUFDQTtJQUNBO0lBQ0E7SUFDQSxJQUFJLElBQUksVUFBVSxDQUFDO0lBQ25CLElBQUksVUFBVSxHQUFHLE1BQU1BLFdBQXdCLENBQUMsTUFBTSxFQUFFLFlBQVksRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN6RSxJQUFJLFVBQVUsR0FBRyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ3hELElBQUksTUFBTSxlQUFlLENBQUMsSUFBSSxFQUFFLFVBQVUsQ0FBQyxDQUFDO0FBQzVDO0lBQ0E7SUFDQTtJQUNBO0lBQ0EsSUFBSSxJQUFJLFVBQVUsQ0FBQztJQUNuQixJQUFJLFVBQVUsR0FBRyxNQUFNQSxXQUF3QixDQUFDLE1BQU0sRUFBRSxZQUFZLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDekUsSUFBSSxVQUFVLEdBQUcsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUN4RCxJQUFJLE1BQU0sZUFBZSxDQUFDLElBQUksRUFBRSxVQUFVLENBQUMsQ0FBQztBQUM1QztJQUNBO0lBQ0E7SUFDQTtJQUNBLElBQUksSUFBSSxXQUFXLENBQUM7SUFDcEIsSUFBSSxXQUFXLEdBQUcsTUFBTUEsV0FBd0IsQ0FBQyxNQUFNLEVBQUUsWUFBWSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzFFLElBQUksV0FBVyxHQUFHLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDMUQsSUFBSSxNQUFNLGVBQWUsQ0FBQyxJQUFJLEVBQUUsV0FBVyxDQUFDLENBQUM7QUFDN0M7SUFDQTtJQUNBO0lBQ0E7SUFDQSxJQUFJLElBQUksV0FBVyxDQUFDO0lBQ3BCLElBQUksV0FBVyxHQUFHLE1BQU1BLFdBQXdCLENBQUMsTUFBTSxFQUFFLFlBQVksRUFBRSxDQUFDLENBQUMsQ0FBQztJQUMxRSxJQUFJLFdBQVcsR0FBRyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQzFELElBQUksTUFBTSxlQUFlLENBQUMsSUFBSSxFQUFFLFdBQVcsQ0FBQyxDQUFDO0FBQzdDO0lBQ0EsSUFBSSxNQUFNLFdBQVcsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzlDLElBQUksTUFBTSxRQUFRLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUNuRDtJQUNBLElBQUksS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO0lBQ3pELFFBQVEsTUFBTSxDQUFDLEdBQUcsU0FBUyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM3QyxRQUFRLE1BQU0sT0FBTyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNwQyxRQUFRLE1BQU0sT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDcEMsUUFBUSxNQUFNLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3JDLFFBQVEsTUFBTSxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN0QyxRQUFRLE1BQU0sV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDOUMsS0FBSztBQUNMO0lBQ0EsSUFBSSxNQUFNLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUN6QixJQUFJLE1BQU0sV0FBVyxDQUFDLEtBQUssRUFBRSxDQUFDO0FBQzlCO0lBQ0EsSUFBSSxlQUFlLE9BQU8sQ0FBQyxDQUFDLEVBQUU7SUFDOUIsUUFBUSxNQUFNLElBQUksR0FBRyxJQUFJLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN6QyxRQUFRLEtBQUssQ0FBQyxFQUFFLENBQUMsaUJBQWlCLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUMvQyxRQUFRLE1BQU0sV0FBVyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN0QyxLQUFLO0FBQ0w7SUFDQSxJQUFJLGVBQWUsT0FBTyxDQUFDLENBQUMsRUFBRTtJQUM5QixRQUFRLE1BQU0sSUFBSSxHQUFHLElBQUksVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3pDLFFBQVEsS0FBSyxDQUFDLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQy9DLFFBQVEsTUFBTSxXQUFXLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3RDLEtBQUs7QUFDTDtJQUNBLElBQUksZUFBZSxlQUFlLENBQUMsU0FBUyxFQUFFLElBQUksRUFBRTtJQUNwRCxRQUFRLElBQUksRUFBRSxDQUFDO0lBQ2YsUUFBUSxJQUFJLFNBQVMsSUFBSSxJQUFJLEVBQUU7SUFDL0IsWUFBWSxFQUFFLEdBQUcsR0FBRyxDQUFDO0lBQ3JCLFNBQVMsTUFBTTtJQUNmLFlBQVksRUFBRSxHQUFHLEdBQUcsQ0FBQztJQUNyQixTQUFTO0FBQ1Q7SUFDQSxRQUFRLE1BQU0sUUFBUSxHQUFHLElBQUksVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzNDLFFBQVEsTUFBTSxTQUFTLEdBQUcsSUFBSSxRQUFRLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsVUFBVSxFQUFFLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNsRyxRQUFRLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxVQUFVLEdBQUcsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQzVEO0lBQ0EsUUFBUSxNQUFNLFdBQVcsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDMUMsUUFBUSxNQUFNLFdBQVcsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdEMsS0FBSztBQUNMO0lBQ0EsSUFBSSxlQUFlLFFBQVEsQ0FBQyxDQUFDLEVBQUU7SUFDL0IsUUFBUSxNQUFNLFFBQVEsR0FBRyxJQUFJLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMzQyxRQUFRLE1BQU0sU0FBUyxHQUFHLElBQUksUUFBUSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLFVBQVUsRUFBRSxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDbEcsUUFBUSxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDekM7SUFDQSxRQUFRLE1BQU0sV0FBVyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUMxQyxLQUFLO0FBQ0w7QUFDQTtBQUNBO0lBQ0E7O0lDMUlBO0lBQ0E7QUFDQTtJQUNBO0FBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtBQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7QUFDQTtJQUNBO0lBQ0E7SUFDQTtBQU9BO0lBQ2UsZUFBZSxxQkFBcUIsQ0FB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QUFLLENBQUM7SUFDckIsS0FBSztJQUNMLElBQUksSUFBSSxLQUFLLENBQUM7SUFDZCxJQUFJLE1BQU0sUUFBUSxHQUFHLE1BQU0sV0FBVyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsVUFBVSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzNFLElBQUksTUFBTSxVQUFVLEdBQUcsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUM1RCxJQUFJLEtBQUssR0FBRyxJQUFJLFVBQVUsQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3RELElBQUksS0FBSyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUMxQixJQUFJLEtBQUssQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxHQUFHLEVBQUUsVUFBVSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ2pGLElBQUksTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzVELElBQUksTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzlELElBQUksS0FBSyxHQUFHLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUMzRixJQUFJLEtBQUssR0FBRyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ3JFLElBQUksTUFBTS9DLGlCQUE4QixDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN2RCxJQUFJLE1BQU0sU0FBUyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNqQyxJQUFJLE1BQU1DLGVBQTRCLENBQUMsU0FBUyxDQUFDLENBQUM7QUFDbEQ7SUFDQTtJQUNBLElBQUksTUFBTSxFQUFFLEdBQUcsTUFBTSxXQUFXLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDN0MsSUFBSSxJQUFJLEVBQUUsS0FBSyxVQUFVLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUU7SUFDdkQsUUFBUSxJQUFJLE1BQU0sRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLCtCQUErQixDQUFDLENBQUM7SUFDbEUsUUFBUSxNQUFNLFNBQVMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUNsQyxRQUFRLE9BQU8sS0FBSyxDQUFDO0lBQ3JCLEtBQUs7SUFDTCxJQUFJLElBQUksS0FBSyxDQUFDO0lBQ2QsSUFBSSxLQUFLLEdBQUcsTUFBTSxXQUFXLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxVQUFVLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNoRixJQUFJLEtBQUssR0FBRyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzlDLElBQUksTUFBTUQsaUJBQThCLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3ZELElBQUksTUFBTSxTQUFTLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2pDLElBQUksTUFBTUMsZUFBNEIsQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUNsRDtJQUNBO0lBQ0EsSUFBSSxNQUFNLEVBQUUsR0FBRyxNQUFNLFdBQVcsQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUM3QyxJQUFJLElBQUksRUFBRSxJQUFJLFVBQVUsQ0FBQyxLQUFLLEVBQUU7SUFDaEMsUUFBUSxJQUFJLE1BQU0sRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLCtCQUErQixDQUFDLENBQUM7SUFDbEUsUUFBUSxNQUFNLFNBQVMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUNsQyxRQUFRLE9BQU8sS0FBSyxDQUFDO0lBQ3JCLEtBQUs7SUFDTCxJQUFJLFdBQVcsQ0FBQyxHQUFHLElBQUksR0FBRyxFQUFFLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM5QyxJQUFJLE1BQU04QyxXQUF3QixDQUFDLFNBQVMsRUFBRSxlQUFlLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQzdFO0lBQ0E7SUFDQSxJQUFJLE1BQU0sR0FBRyxHQUFHLE1BQU0sV0FBVyxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQzlDLElBQUksSUFBSSxHQUFHLElBQUksVUFBVSxDQUFDLEtBQUssRUFBRTtJQUNqQyxRQUFRLElBQUksTUFBTSxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsZ0NBQWdDLENBQUMsQ0FBQztJQUNuRSxRQUFRLE1BQU0sU0FBUyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ2xDLFFBQVEsT0FBTyxLQUFLLENBQUM7SUFDckIsS0FBSztJQUNMLElBQUksV0FBVyxDQUFDLEdBQUcsSUFBSSxHQUFHLEVBQUUsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzlDLElBQUksTUFBTUEsV0FBd0IsQ0FBQyxTQUFTLEVBQUUsZUFBZSxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUM3RTtJQUNBO0lBQ0EsSUFBSSxNQUFNLEdBQUcsR0FBRyxNQUFNLFdBQVcsQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUM5QyxJQUFJLElBQUksR0FBRyxJQUFJLFVBQVUsQ0FBQyxLQUFLLEVBQUU7SUFDakMsUUFBUSxJQUFJLE1BQU0sRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLGdDQUFnQyxDQUFDLENBQUM7SUFDbkUsUUFBUSxNQUFNLFNBQVMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUNsQyxRQUFRLE9BQU8sS0FBSyxDQUFDO0lBQ3JCLEtBQUs7SUFDTCxJQUFJLFdBQVcsQ0FBQyxHQUFHLElBQUksR0FBRyxFQUFFLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM5QyxJQUFJLE1BQU1BLFdBQXdCLENBQUMsU0FBUyxFQUFFLGVBQWUsRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDN0U7SUFDQSxJQUFJLE1BQU1VLGNBQXdCLENBQUMsU0FBUyxFQUFFLEtBQUssRUFBRSxZQUFZLENBQUMsQ0FBQztBQUNuRTtJQUNBLElBQUksTUFBTSxXQUFXLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDOUIsSUFBSSxNQUFNLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUM1QixJQUFJLE1BQU0sU0FBUyxDQUFDLEtBQUssRUFBRSxDQUFDO0FBQzVCO0lBQ0EsSUFBSSxPQUFPLElBQUksQ0FBQztBQUNoQjtJQUNBLElBQUksZUFBZSxNQUFNLENBQUMsRUFBRSxFQUFFO0lBQzlCLFFBQVEsTUFBTSxJQUFJLEdBQUcsTUFBTSxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNwRCxRQUFRLE9BQU8sS0FBSyxDQUFDLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDckQsS0FBSztBQUNMO0lBQ0EsSUFBSSxlQUFlLE1BQU0sQ0FBQyxFQUFFLEVBQUU7SUFDOUIsUUFBUSxNQUFNLElBQUksR0FBRyxNQUFNLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3BELFFBQVEsT0FBTyxLQUFLLENBQUMsRUFBRSxDQUFDLG1CQUFtQixDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNyRCxLQUFLO0FBQ0w7QUFDQTtJQUNBLElBQUksU0FBUyxtQkFBbUIsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFO0lBQ3pDLFFBQVEsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxVQUFVLEtBQUssRUFBRSxDQUFDLFVBQVUsQ0FBQyxFQUFFLE9BQU8sS0FBSyxDQUFDO0lBQ3hFLFFBQVEsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsT0FBTyxLQUFLLENBQUM7SUFDeEUsUUFBUSxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsRUFBRSxPQUFPLEtBQUssQ0FBQztJQUN6RSxRQUFRLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxFQUFFLE9BQU8sS0FBSyxDQUFDO0lBQzFFLFFBQVEsSUFBSSxDQUFDeEIsV0FBZ0IsQ0FBQyxFQUFFLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsRUFBRSxPQUFPLEtBQUssQ0FBQztJQUMxRSxRQUFRLE9BQU8sSUFBSSxDQUFDO0lBQ3BCLEtBQUs7QUFDTDtBQUNBO0lBQ0E7O0lDM05BO0lBQ0E7QUFDQTtJQUNBO0FBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtBQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7QUFDQTtJQUNBO0lBQ0E7SUFDQTtJQVFBLE1BQU0sU0FBUyxHQUFHSSxXQUFjLENBQUM7QUFHakM7QUFDQTtBQUNBO0lBQ2UsZUFBZSxvQkFBb0IsQ0FBQyxZQUFZLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUU7QUFDckc7SUFDQSxJQUFJLElBQUksRUFBRSxDQUFDO0lBQ1gsSUFBSSxNQUFNdkMsbUJBQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQztBQUMxQjtJQUNBLElBQUksTUFBTSxDQUFDLEVBQUUsRUFBRSxRQUFRLENBQUMsR0FBRyxNQUFNVSxXQUF3QixDQUFDLFlBQVksRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDbkYsSUFBSSxNQUFNLElBQUksR0FBRyxNQUFNSyxZQUFvQixDQUFDLEVBQUUsRUFBRSxRQUFRLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDakUsSUFBSSxJQUFJLElBQUksQ0FBQyxRQUFRLElBQUksU0FBUyxFQUFFO0lBQ3BDLFFBQVEsTUFBTSxJQUFJLEtBQUssQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO0lBQ3BELEtBQUs7QUFDTDtJQUNBLElBQUksTUFBTSxLQUFLLEdBQUcsTUFBTVgsYUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN6QyxJQUFJLE1BQU0sR0FBRyxHQUFHLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDaEM7SUFDQSxJQUFJLE1BQU0sU0FBUyxHQUFHLE1BQU1xRCxhQUF1QixDQUFDLEVBQUUsRUFBRSxLQUFLLEVBQUUsUUFBUSxDQUFDLENBQUM7QUFDekU7SUFDQSxJQUFJLE1BQU0saUJBQWlCLEdBQUd6RCxtQkFBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzFDLElBQUksaUJBQWlCLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMvQyxJQUFJLElBQUksUUFBUSxHQUFHLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzlCLElBQUksS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO0lBQ3pELFFBQVEsTUFBTSxDQUFDLEdBQUcsU0FBUyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM3QyxRQUFRLE1BQU0sU0FBUyxHQUFHNEQsV0FBZ0IsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0FBQzlEO0lBQ0EsUUFBUSxNQUFNLENBQUMsU0FBUyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQy9DLFFBQVEsTUFBTSxDQUFDLFNBQVMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUNoRDtJQUNBLFFBQVEsSUFBSSxDQUFDekIsV0FBZ0IsQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxFQUFFO0lBQ2pFLFlBQVksT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsMkJBQTJCLENBQUMsQ0FBQyxDQUFDO0lBQ25FLFlBQVksT0FBTyxLQUFLLENBQUM7SUFDekIsU0FBUztBQUNUO0lBQ0EsUUFBUSxNQUFNLFdBQVcsR0FBRyxRQUFRLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQztBQUMxRDtJQUNBLFFBQVEsRUFBRSxHQUFHLE1BQU0sU0FBUyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxXQUFXLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUM5RixRQUFRLElBQUksRUFBRSxLQUFLLElBQUksRUFBRTtJQUN6QixZQUFZLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLG9EQUFvRCxDQUFDLENBQUMsQ0FBQztJQUM1RixZQUFZLE9BQU8sS0FBSyxDQUFDO0lBQ3pCLFNBQVM7QUFDVDtJQUNBLFFBQVEsRUFBRSxHQUFHLE1BQU0sU0FBUyxDQUFDLEtBQUssRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDLFVBQVUsRUFBRSxXQUFXLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN6RixRQUFRLElBQUksRUFBRSxLQUFLLElBQUksRUFBRTtJQUN6QixZQUFZLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLDZDQUE2QyxDQUFDLENBQUMsQ0FBQztJQUNyRixZQUFZLE9BQU8sS0FBSyxDQUFDO0lBQ3pCLFNBQVM7QUFDVDtJQUNBLFFBQVEsSUFBSSxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsRUFBRTtJQUN6QixZQUFZLE1BQU0sR0FBRyxHQUFHLE1BQU1SLG1CQUF3QixDQUFDLENBQUMsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFDekYsWUFBWSxNQUFNLGVBQWUsR0FBRyxLQUFLLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUMxRCxZQUFZLE1BQU0sYUFBYSxHQUFHLEtBQUssQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDM0UsWUFBWSxNQUFNLGNBQWMsR0FBRyxLQUFLLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxhQUFhLEVBQUUsZUFBZSxDQUFDLENBQUMsQ0FBQztJQUN2RyxZQUFZLElBQUksS0FBSyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssSUFBSSxFQUFFO0lBQ25FLGdCQUFnQixPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQywwQ0FBMEMsQ0FBQyxDQUFDLENBQUM7SUFDdEYsZ0JBQWdCLE9BQU8sS0FBSyxDQUFDO0lBQzdCLGFBQWE7SUFDYixZQUFZLElBQUksS0FBSyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEtBQUssSUFBSSxFQUFFO0lBQ3JFLGdCQUFnQixPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQywyQ0FBMkMsQ0FBQyxDQUFDLENBQUM7SUFDdkYsZ0JBQWdCLE9BQU8sS0FBSyxDQUFDO0lBQzdCLGFBQWE7SUFDYixTQUFTO0FBQ1Q7SUFDQSxRQUFRLFVBQVUsQ0FBQyxpQkFBaUIsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDaEQ7SUFDQSxRQUFRLE1BQU0sa0JBQWtCLEdBQUczQixtQkFBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQy9DLFFBQVEsVUFBVSxDQUFDLGtCQUFrQixFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztBQUNqRDtJQUNBLFFBQVEsQ0FBQyxDQUFDLGdCQUFnQixHQUFHLGtCQUFrQixDQUFDLE1BQU0sRUFBRSxDQUFDO0FBQ3pEO0lBQ0EsUUFBUSxRQUFRLEdBQUcsQ0FBQyxDQUFDLFVBQVUsQ0FBQztJQUNoQyxLQUFLO0FBQ0w7QUFDQTtJQUNBLElBQUksTUFBTSxDQUFDLEVBQUUsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLFlBQVksQ0FBQyxHQUFHLE1BQU1VLFdBQXdCLENBQUMsWUFBWSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN6RyxJQUFJLE1BQU0sUUFBUSxHQUFHLE1BQU1LLFlBQW9CLENBQUMsTUFBTSxFQUFFLFlBQVksRUFBRSxLQUFLLENBQUMsQ0FBQztBQUM3RTtJQUNBLElBQUksSUFBSSxRQUFRLENBQUMsUUFBUSxJQUFJLFNBQVMsRUFBRTtJQUN4QyxRQUFRLE1BQU0sSUFBSSxLQUFLLENBQUMsOEJBQThCLENBQUMsQ0FBQztJQUN4RCxLQUFLO0FBQ0w7SUFDQSxJQUFJLE1BQU0sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ3pDLFdBQVcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzFDLFdBQVcsUUFBUSxDQUFDLEdBQUcsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDO0lBQ3BDLFdBQVcsUUFBUSxDQUFDLEdBQUcsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDO0lBQ3BDLElBQUk7SUFDSixRQUFRLElBQUksTUFBTSxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsNEJBQTRCLENBQUMsQ0FBQztJQUMvRCxRQUFRLE9BQU8sS0FBSyxDQUFDO0lBQ3JCLEtBQUs7QUFDTDtJQUNBLElBQUksTUFBTSxDQUFDLFFBQVEsQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLEtBQUs7SUFDdkMsV0FBVyxRQUFRLENBQUMsT0FBTyxLQUFLLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDN0MsV0FBVyxRQUFRLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUM7SUFDbEQsSUFBSTtJQUNKLFFBQVEsSUFBSSxNQUFNLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyx3Q0FBd0MsQ0FBQyxDQUFDO0lBQzNFLFFBQVEsT0FBTyxLQUFLLENBQUM7SUFDckIsS0FBSztBQUNMO0lBQ0EsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxRQUFRLENBQUMsVUFBVSxDQUFDLEVBQUU7SUFDNUQsUUFBUSxJQUFJLE1BQU0sRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLDBCQUEwQixDQUFDLENBQUM7SUFDN0QsUUFBUSxPQUFPLEtBQUssQ0FBQztJQUNyQixLQUFLO0lBQ0wsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxRQUFRLENBQUMsU0FBUyxDQUFDLEVBQUU7SUFDMUQsUUFBUSxJQUFJLE1BQU0sRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLHlCQUF5QixDQUFDLENBQUM7SUFDNUQsUUFBUSxPQUFPLEtBQUssQ0FBQztJQUNyQixLQUFLO0lBQ0wsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxRQUFRLENBQUMsU0FBUyxDQUFDLEVBQUU7SUFDMUQsUUFBUSxJQUFJLE1BQU0sRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLHlCQUF5QixDQUFDLENBQUM7SUFDNUQsUUFBUSxPQUFPLEtBQUssQ0FBQztJQUNyQixLQUFLO0lBQ0wsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxRQUFRLENBQUMsVUFBVSxDQUFDLEVBQUU7SUFDNUQsUUFBUSxJQUFJLE1BQU0sRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLDBCQUEwQixDQUFDLENBQUM7SUFDN0QsUUFBUSxPQUFPLEtBQUssQ0FBQztJQUNyQixLQUFLO0lBQ0wsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxRQUFRLENBQUMsRUFBRTtJQUNqRCxRQUFRLElBQUksTUFBTSxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsMEJBQTBCLENBQUMsQ0FBQztJQUM3RCxRQUFRLE9BQU8sS0FBSyxDQUFDO0lBQ3JCLEtBQUs7SUFDTCxJQUFJLEVBQUUsR0FBRyxNQUFNLFNBQVMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsUUFBUSxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNuRixJQUFJLElBQUksRUFBRSxLQUFLLElBQUksRUFBRTtJQUNyQixRQUFRLElBQUksTUFBTSxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsMEJBQTBCLENBQUMsQ0FBQztJQUM3RCxRQUFRLE9B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QUMsSUFBSSxDQUFDLENBQUM7QUFDbEU7SUFDQSxRQUFRLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDeEIsUUFBUSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLElBQUksY0FBYyxFQUFFO0lBQzlELFlBQVksSUFBSSxNQUFNLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLHNCQUFzQixFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN0RixZQUFZLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFVBQVUsR0FBRyxDQUFDLEVBQUUsY0FBYyxDQUFDLENBQUM7QUFDcEU7SUFDQSxZQUFZLE1BQU0sS0FBSyxHQUFHLE1BQU0sTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3BHLFlBQVksTUFBTSxLQUFLLEdBQUcsTUFBTSxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDL0U7SUFDQSxZQUFZLE1BQU0sS0FBSyxHQUFHLE1BQU0sYUFBYSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztJQUM1RCxZQUFZLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNuRSxZ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QUUsUUFBUSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztBQUM5RDtJQUNBO0lBQ0EsSUFBSSxNQUFNQSxXQUF3QixDQUFDLEtBQUssRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQzlEO0lBQ0E7SUFDQSxJQUFJLE1BQU1BLFdBQXdCLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDOUQ7SUFDQTtJQUNBLElBQUksTUFBTUEsV0FBd0IsQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztBQUM5RDtJQUNBO0lBQ0EsSUFBSSxNQUFNQSxXQUF3QixDQUFDLEtBQUssRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQzlEO0lBQ0EsSUFBSSxNQUFNLFFBQVEsR0FBRyxLQUFLLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2hFLElBQUksTUFBTSxpQkFBaUIsQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsV0FBVyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ2xILElBQUksTUFBTSxpQkFBaUIsQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsV0FBVyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBQ2xIO0lBQ0EsSUFBSSxNQUFNVSxjQUF3QixDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsU0FBUyxDQUFDLENBQUM7QUFDNUQ7SUFDQSxJQUFJLE1BQU0sS0FBSyxDQUFD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RyxNQUFNLE1BQU0sRUFBRSxDQUFDO0lBQ3JDLElBQUksTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3RELElBQUksTUFBTSxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDMUIsSUFBSSxNQUFNLFNBQVMsR0FBRyxNQUFNLE1BQU0sRUFBRSxDQUFDO0lBQ3JDLElBQUksTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3RELElBQUksTUFBTSxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDMUI7SUFDQTtJQUNBLElBQUksTUFBTSxHQUFHLEdBQUcsTUFBTSxNQUFNLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDekMsSUFBSSxNQUFNLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDL0IsSUFBSSxNQUFNLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDeEI7SUFDQTtJQUNBLElBQUksTUFBTSxFQUFFLEdBQUcsTUFBTSxNQUFNLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDeEMsSUFBSSxNQUFNLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDOUIsSUFBSSxNQUFNLDBCQUEwQixDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLFFBQVEsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxjQUFjLEVBQUUsR0FBRyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBQ2hJO0lBQ0E7SUFDQSxJQUFJLE1BQU0sRUFBRSxHQUFHLE1BQU0sTUFBTSxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQ3hDLElBQUksTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzlCLElB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QyxLQUFLO0FBQ3pCO0lBQ0EsUUFBUSxFQUFFLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztJQUN0QyxRQUFRLEVBQUUsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO0FBQ3RDO0lBQ0EsUUFBUSxDQUFDLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3BEO0lBQ0EsUUFBUSxFQUFFLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztJQUN0QyxRQUFRLEVBQUUsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO0lBQ3RDLFFBQVEsRUFBRSxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7SUFDdEMsUUFBUSxFQUFFLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztBQUN0QztJQUNBLFFBQVEsR0FBRyxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUM7QUFDeEM7SUFDQSxRQUFRLEVBQUUsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO0lBQ3RDLEtBQUssQ0FBQztBQUNOO0lBQ0EsSUFBSSxPQUFPdEMsa0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbEM7Ozs7SUNuSkE7SUFDQTtBQUNBO0lBQ0E7QUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0FBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtBQUNBO0lBQ0E7SUFDQTtJQUNBO0FBS0E7SUFDQSxNQUFNLHFCQUFDQyxvQkFBa0Is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QUMsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUN4QyxJQUFJLElBQUksVUFBVSxDQUFDLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3pDLElBQUksTUFBTSxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNoQyxJQUFJLElBQUksVUFBVSxDQUFDLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3pDLElBQUksTUFBTSxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNoQyxJQUFJLElBQUksVUFBVSxDQUFDLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3pDLElBQUksTUFBTSxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNoQyxJQUFJLElBQUksVUFBVSxDQUFDLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3pDLElBQUksTUFBTSxTQUFTLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNqQyxJQUFJLElBQUksVUFBVSxDQUFDLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3pDLElBQUksTUFBTSxTQUFTLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNqQyxJQUFJLElBQUksVUFBVSxDQUFDLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3pDLElBQUksTUFBTSxVQUFVLENBQUMsRUFBRSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ2xDLElBQUksSUFBSSxVQUFVLENBQUMsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDekMsSUFBSSxNQUFNLE9BQU8sQ0FB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QU0sTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQy9DLFFBQVEsTUFBTSxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDL0MsUUFBUSxNQUFNLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUMvQyxRQUFRLE1BQU0sTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQy9DO0lBQ0EsUUFBUSxNQUFNLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUMvQyxRQUFRLE1BQU0sTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQy9DLFFBQVEsTUFBTSxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDL0M7SUFDQSxRQUFRLElBQUksSUFBSSxDQUFDO0lBQ2pCLFFBQVEsSUFBSSxHQUFHLE1BQU0sTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQztJQUNsRSxRQUFRLE1BQU0sTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNqQztJQUNBLFFBQVEsTUFBTSxlQUFlLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDdEMsS0FBSztBQUNMO0lBQ0EsSUFBSSxTQUFTLE9BQU8sR0FBRztJQUN2QixRQUFRLElBQUks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TSxFQUFFO2lCQUMxQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksSUFBSSxFQUFFLENBQUMsS0FBSyxLQUFLLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7aUJBQzFELE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxLQUFLLEtBQUssQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztpQkFDbEUsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssS0FBSyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ3ZFLFlBQVcsTUFBTTtpQkFDTCxJQUFJLEdBQUcsT0FBTyxJQUFJLENBQUMsQ0FBQyxJQUFJLEdBQUcsS0FBSyxLQUFLLEVBQUUsS0FBSyxPQUFPLENBQUMsVUFBVSxDQUFDLEVBQUUsS0FBSyxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQztpQkFDbEYsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLElBQUksRUFBRSxDQUFDLEtBQUssS0FBSyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO2lCQUMxRCxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxJQUFJLEVBQUUsSUFBSSxJQUFJLENBQUMsS0FBSyxLQUFLLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7aUJBQ25FLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxLQUFLLEtBQUssQ0FBQyxDQUFD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QUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRztJQUNwRixPQUFNLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztJQUNyRixLQUFJLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUU7V0FDMUIsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7V0FDMUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7V0FDMUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7V0FDMUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7V0FDMUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7V0FDMUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7V0FDMUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7V0FDMUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7V0FDMUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7V0FDMUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDaEQ7SUFDQSxPQUFNLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3pDLE9BQU0sQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDekMsT0FBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2hCLE9BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNoQixPQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDakIsT0FBTSxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2pCLE9BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNqQixPQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDakIsT0FBTSxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2pCLE9BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNqQixPQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDakIsT0FBTSxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2pCLE9BQU0sQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDekMsT0FBTSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN6QyxPQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDaEIsT0FBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2hCLE9BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNqQixPQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDakIsT0FBTSxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2pCLE9BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNqQixPQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDakIsT0FBTSxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2pCLE9BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNqQixPQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDakIsT0FBTSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN6QyxPQUFNLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3pDLE9BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNoQixPQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDaEIsT0FBTSxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2pCLE9BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNqQixPQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDakIsT0FBTSxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2pCLE9BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNqQixPQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDakIsT0FBTSxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2pCLE9BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNqQixPQUFNLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3pDLE9BQU0sQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDekMsT0FBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2hCLE9BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNoQixPQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDakIsT0FBTSxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2pCLE9BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNqQixPQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDakIsT0FBTSxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2pCLE9BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNqQixPQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDakIsT0FBTSxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2pCLE9BQU0sQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDekMsT0FBTSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN6QyxPQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDaEIsT0FBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2hCLE9BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNqQixPQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDakIsT0FBTSxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2pCLE9BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNqQixPQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDakIsT0FBTSxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2pCLE9BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNqQixPQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDakI7SUFDQSxPQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDaEIsT0FBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2hCLE9BQU0sR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDMUMsT0FBTSxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUMxQyxPQUFNLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQzFDLE9BQU0sR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDMUMsT0FBTSxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUMxQyxPQUFNLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQzFDLE9BQU0sR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDM0MsT0FBTSxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUMzQyxPQUFNLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQ3hDLE9BQU0sR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDeEMsT0FBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUMxQyxPQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQzFDLE9BQU0sR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDM0MsT0FBTSxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUMzQyxPQUFNLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQzNDLE9BQU0sR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDM0MsT0FBTSxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUMxQyxPQUFNLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQzFDLE9BQU0sR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDeEMsT0FBTSxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUN4QyxPQUFNLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQzFDLE9BQU0sR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDMUMsT0FBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUMxQyxPQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQzFDLE9BQU0sR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDM0MsT0FBTSxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUMzQyxPQUFNLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQzFDLE9BQU0sR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDMUMsT0FBTSxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUN4QyxPQUFNLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ3hDLE9BQU0sR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDMUMsT0FBTSxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUMxQyxPQUFNLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQzFDLE9BQU0sR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDMUMsT0FBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUMxQyxPQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQzFDLE9BQU0sR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDMUMsT0FBTSxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUMxQyxPQUFNLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ3hDLE9BQU0sR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDeEMsT0FBTSxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUMzQyxPQUFNLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQzNDLE9BQU0sR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDMUMsT0FBTSxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUMxQyxPQUFNLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQzFDLE9BQU0sR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDMUMsT0FBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUMxQyxPQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO0FBQzFDO0lBQ0EsT0FBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBQzdCLE9BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztJQUM3QixPQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLENBQUM7SUFDakMsT0FBTSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxDQUFDO0lBQ2pDLE9BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQztJQUNqQyxPQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLENBQUM7SUFDakMsT0FBTSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxDQUFDO0lBQ2pDLE9BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQztJQUNqQyxPQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLENBQUM7SUFDakMsT0FBTSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxDQUFDO0lBQ2pDLE9BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztJQUM3QixPQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDN0IsT0FBTSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxDQUFDO0lBQ2pDLE9BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQztJQUNqQyxPQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLENBQUM7SUFDakMsT0FBTSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxDQUFDO0lBQ2pDLE9BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQztJQUNqQyxPQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLENBQUM7SUFDakMsT0FBTSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxDQUFDO0lBQ2pDLE9BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQztJQUNqQyxPQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDN0IsT0FBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBQzdCLE9BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQztJQUNqQyxPQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLENBQUM7SUFDakMsT0FBTSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxDQUFDO0lBQ2pDLE9BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQztJQUNqQyxPQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLENBQUM7SUFDakMsT0FBTSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxDQUFDO0lBQ2pDLE9BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQztJQUNqQyxPQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLENBQUM7SUFDakMsT0FBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBQzdCLE9BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztJQUM3QixPQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLENBQUM7SUFDakMsT0FBTSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxDQUFDO0lBQ2pDLE9BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQztJQUNqQyxPQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLENBQUM7SUFDakMsT0FBTSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxDQUFDO0lBQ2pDLE9BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQztJQUNqQyxPQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLENBQUM7SUFDakMsT0FBTSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxDQUFDO0lBQ2pDLE9BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztJQUM3QixPQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDN0IsT0FBTSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxDQUFDO0lBQ2pDLE9BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQztJQUNqQyxPQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLENBQUM7SUFDakMsT0FBTSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxDQUFDO0lBQ2pDLE9BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQztJQUNqQyxPQUFNLENB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Q0FBQyxDQUFDO0lBQ25DLFFBQVEsTUFBTSxLQUFLLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDckM7SUFDQSxRQUFRLENBQUMsR0FBRyxHQUFHLENBQUM7QUFDaEI7SUFDQSxRQUFRLElBQUksRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ3BDO0lBQ0EsUUFBUSxJQUFJLEVBQUUsR0FBRyxLQUFLLENBQUM7QUFDdkI7SUFDQSxRQUFRLEVBQUUsR0FBRyxFQUFFLENBQUM7SUFDaEIsUUFBUSxJQUFJLENBQUMsRUFBRTtJQUNmLFlBQVksRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDL0MsU0FBUztBQUNUO0lBQ0EsUUFBUSxPQUFPLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3ZCLEtBQUs7QUFDTDtJQUNBLElBQUksT0FBTyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRTtJQUM1QyxRQUFRLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDbEMsUUFBUSxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2xDLFFBQVEsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDO0FBQ2xCO0lBQ0EsUUFBUSxNQUFNLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNqQyxRQUFRLE1BQU0sSUFBSSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ25DLFFBQVEsTUFBTSxJQUFJLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDbkMsUUFBUSxNQUFNLEtBQUssR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztBQUNyQztJQUNBLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQzNCO0lBQ0EsUUFBUSxJQUFJLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNqQyxRQUFRLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3pDLFFBQVEsRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDekM7SUFDQSxRQUFRLElBQUksRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2xDLFFBQVEsRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDMUMsUUFBUSxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUMxQztJQUNBLFFBQVEsRUFBRSxHQUFHLEVBQUUsQ0FBQztJQUNoQixRQUFRLElBQUksQ0FBQyxFQUFFO0lBQ2YsWUFBWSxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztJQUN6QyxZQUFZLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQy9DLFlBQVksRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDL0MsU0FBUztBQUNUO0lBQ0EsUUFBUSxPQUFPLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3ZCLEtBQUs7QUFDTDtJQUNBLElBQUksT0FBTyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFO0lBQ25ELFFBQVEsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNsQyxRQUFRLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDbEMsUUFBUSxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ2xDO0lBQ0EsUUFBUSxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUM7QUFDbEI7SUFDQSxRQUFRLE1BQU0sR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2pDLFFBQVEsTUFBTSxJQUFJLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDbkMsUUFBUSxNQUFNLElBQUksR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNuQyxRQUFRLE1BQU0sS0FBSyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQ3JDO0lBQ0EsUUFBUSxNQUFNLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNqQyxRQUFRLE1BQU0sSUFBSSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ25DLFFBQVEsTUFBTSxJQUFJLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDbkMsUUFBUSxNQUFNLEtBQUssR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztBQUNyQztJQUNBLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBQzdCO0lBQ0EsUUFBUSxJQUFJLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQztJQUNuQyxRQUFRLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQzNDLFFBQVEsRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDM0MsUUFBUSxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztBQUMzQztJQUNBLFFBQVEsSUFBSSxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDcEMsUUFBUSxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUM1QyxRQUFRLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQzVDLFFBQVEsRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDNUMsUUFBUSxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUM1QyxRQUFRLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO0FBQzVDO0lBQ0EsUUFBUSxJQUFJLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNyQyxRQUFRLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQzdDLFFBQVEsRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDN0MsUUFBUSxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztBQUM3QztJQUNBLFFBQVEsSUFBSSxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDdEM7SUFDQSxRQUFRLEVBQUUsR0FBRyxFQUFFLENBQUM7SUFDaEIsUUFBUSxJQUFJLENBQUMsRUFBRTtJQUNmLFlBQVksRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDL0MsWUFBWSxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUMvQyxZQUFZLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQy9DLFNBQVM7QUFDVDtJQUNBLFFBQVEsT0FBTyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUN2QixLQUFLO0lBQ0w7O0lDakpPLE1BQU0seUJBQXlCLEdBQUcsQ0FBQyxDQUFDO0lBQ3BDLE1BQU0scUJBQXFCLEdBQUcsQ0FBQyxDQUFDO0lBQ2hDLE1BQU0scUJBQXFCLEdBQUcsQ0FBQyxDQUFDO0lBQ2hDLE1BQU0scUJBQXFCLEdBQUcsQ0FBQyxDQUFDO0lBQ2hDLE1BQU0sa0JBQWtCLEdBQUcsQ0FBQyxDQUFDO0lBQzdCLE1BQU0sa0JBQWtCLEdBQUcsQ0FBQyxDQUFDO0lBQzdCLE1BQU0sa0JBQWtCLEdBQUcsQ0FBQyxDQUFDO0lBQzdCLE1BQU0sa0JBQWtCLEdBQUcsRUFBRSxDQUFDO0lBQzlCLE1BQU0sa0JBQWtCLEdBQUcsRUFBRSxDQUFDO0lBQzlCLE1BQU0scUJBQXFCLEdBQUcsRUFBRSxDQUFDO0lBQ2pDLE1BQU0sd0JBQXdCLEdBQUcsRUFBRSxDQUFDO0lBQ3BDLE1BQU0sb0JBQW9CLEdBQUcsRUFBRTs7SUNkdEM7SUFDQTtBQUNBO0lBQ0E7QUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0FBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtBQUNBO0lBQ0E7SUFDQTtJQUNBO0FBR0E7SUFDTyxNQUFNLFVBQVUsQ0FBQztJQUN4QixJQUFJLFdBQVcsQ0FBQyxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRTtJQUM3QyxRQUFRLElBQUksQ0FBQyxJQUFJLEdBQUcsWUFBWSxDQUFDO0lBQ2pDLFFBQVEsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7SUFDM0IsUUFBUSxJQUFJLENBQUMsRUFBRSxHQUFHLEtBQUssQ0FBQyxFQUFFLENBQUM7SUFDM0IsUUFBUSxJQUFJLENBQUMsRUFBRSxHQUFHLEtBQUssQ0FBQyxFQUFFLENBQUM7SUFDM0IsUUFBUSxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztJQUM3QixLQUFLO0FBQ0w7SUFDQSxJQUFJLGFBQWEsZUFBZSxDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFO0lBQ3hELFFBQVEsSUFBSSxZQUFZLEdBQUcsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUN2RDtJQUNBLFFBQVEsT0FBTyxJQUFJLFVBQVUsQ0FBQyxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQzNELEtBQUs7QUFDTDtJQUNBLElBQUksT0FBTyxxQkFBcUIsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRTtJQUN2RCxRQUFRLE1BQU0sRUFBRSxHQUFHLEtBQUssQ0FBQyxFQUFFLENBQUM7SUFDNUIsUUFBUSxJQUFJLElBQUksR0FBRyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxFQUFFO0lBQ3pDLFlBQVksSUFBSSxTQUFTLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxVQUFVLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDdkYsUUFBUSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQzdFO0lBQ0EsUUFBUSxPQUFPLElBQUksVUFBVSxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDbkQsS0FBSztBQUNMO0lBQ0EsSUFBSSxPQUFPLGNBQWMsQ0FBQyxVQUFVLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRTtJQUNyRCxRQUFRLElBQUksTUFBTSxHQUFHLFVBQVUsQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUN6QyxRQUFRLElBQUksRUFBRSxHQUFHLEtBQUssQ0FBQyxFQUFFLENBQUM7QUFDMUI7SUFDQSxRQUFRLElBQUksSUFBSSxHQUFHLE1BQU0sR0FBRyxDQUFDLElBQUksRUFBRTtJQUNuQyxZQUFZLElBQUksU0FBUyxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxVQUFVLENBQUMsTUFBTSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUMzRSxRQUFRLElBQUksQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUM3QztJQUNBLFFBQVEsT0FBTyxJQUFJLFVBQVUsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ25ELEtBQUs7QUFDTDtJQUNBLElBQUksT0FBTyxDQUFDLFVBQVUsRUFBRTtJQUN4QixRQUFRLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUNyQyxRQUFRLElBQUksTUFBTSxLQUFLLFVBQVUsQ0FBQyxNQUFNLEVBQUUsRUFBRSxPQUFPLEtBQUssQ0FBQztBQUN6RDtJQUNBLFFBQVEsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7SUFDN0MsWUFBWSxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsT0FBTyxLQUFLLENBQUM7SUFDbEYsU0FBUztBQUNUO0lBQ0EsUUFBUSxPQUFPLElBQUksQ0FBQztJQUNwQixLQUFLO0FBQ0w7SUFDQSxJQUFJLGlCQUFpQixDQUFDLGVBQWUsRUFBRTtJQUN2QyxRQUFRLGVBQWUsR0FBRyxlQUFlLElBQUksRUFBRSxDQUFDO0FBQ2hEO0lBQ0EsUUFBUSxNQUFNLG1CQUFtQixHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLGVBQWUsQ0FBQyxNQUFNLElBQUksQ0FBQyxJQUFJLEVBQUU7SUFDdEYsWUFBWSxJQUFJLFNBQVMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxlQUFlLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDO0lBQ2hGLFlBQVksSUFBSSxVQUFVLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsZUFBZSxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ2xGO0lBQ0EsUUFBUSxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztJQUM5QyxRQUFRLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxlQUFlLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO0lBQ3pELFlBQVksbUJBQW1CLENBQUMsR0FBRztJQUNuQyxnQkFBZ0IsSUFBSSxDQUFDLEVBQUUsQ0FBQyxHQUFHO0lBQzNCLG9CQUFvQixtQkFBbUIsQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxJQUFJLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUM7SUFDckgsb0JBQW9CLGVBQWUsQ0FBQyxDQUFDLENBQUM7SUFDdEMsaUJBQWlCO0lBQ2pCLGdCQUFnQixDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFO0lBQ2hELGFBQWEsQ0FBQztJQUNkLFlBQVksbUJBQW1CLENBQUMsR0FBRztJQUNuQyxnQkFBZ0IsSUFBSSxDQUFDLEVBQUUsQ0FBQyxHQUFHO0lBQzNCLG9CQUFvQixtQkFBbUIsQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUNuRixvQkFBb0IsZUFBZSxDQUFDLENBQUMsQ0FBQztJQUN0QyxpQkFBaUI7SUFDakIsZ0JBQWdCLENBQUMsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUU7SUFDOUIsYUFBYSxDQUFDO0lBQ2QsU0FBUztJQUNULFFBQVEsSUFBSSxDQUFDLElBQUksR0FBRyxtQkFBbUIsQ0FBQztJQUN4QyxLQUFLO0FBQ0w7SUFDQSxJQUFJLE9BQU8sQ0FBQyxLQUFLLEVBQUU7SUFDbkIsUUFBUSxNQUFNLElBQUksR0FBRyxLQUFLLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUM7QUFDeEM7SUFDQSxRQUFRLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUM7QUFDMUU7SUFDQSxRQUFRLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLElBQUksR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3hELEtBQUs7QUFDTDtJQUNBLElBQUksT0FBTyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUU7SUFDMUIsUUFBUSxJQUFJLEtBQUssSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLEVBQUU7SUFDekMsWUFBWSxNQUFNLElBQUksS0FBSyxDQUFDLDZCQUE2QixDQUFDLENBQUM7SUFDM0QsU0FBUztBQUNUO0lBQ0EsUUFBUSxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsS0FBSyxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDakQsS0FBSztBQUNMO0lBQ0EsSUFBSSxhQUFhLElBQUksQ0FBQyxNQUFNLEVBQUUsVUFBVSxFQUFFLGVBQWUsRUFBRSxFQUFFLEVBQUU7SUFDL0QsUUFBUSxlQUFlLEdBQUcsZUFBZSxJQUFJLEVBQUUsQ0FBQztJQUNoRCxRQUFRLElBQUksQ0FBQyxHQUFHLE1BQU0sRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUN0QztJQUNBLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxVQUFVLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFO0lBQzdDLFlBQVksSUFBSSxTQUFTLENBQUMsVUFBVSxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxVQUFVLENBQUMsVUFBVSxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDM0YsUUFBUSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUNyQjtJQUNBLFFBQVEsTUFBTSxFQUFFLEdBQUcsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ3BDO0lBQ0EsUUFBUSxJQUFJLGVBQWUsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO0lBQzFDLFlBQVksT0FBTyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUMzQixTQUFTO0FBQ1Q7SUFDQSxRQUFRLE1BQU0sRUFBRSxHQUFHLFVBQVUsR0FBRyxlQUFlLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxFQUFFO0lBQ2hFLFlBQVksSUFBSSxTQUFTLENBQUMsQ0FBQyxVQUFVLEdBQUcsZUFBZSxDQUFDLE1BQU0sSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDO0lBQ3hFLFlBQVksSUFBSSxVQUFVLENBQUMsQ0FBQyxVQUFVLEdBQUcsZUFBZSxDQUFDLE1BQU0sSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDMUU7SUFDQSxRQUFRLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3JCLFFBQVEsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLGVBQWUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7SUFDekQsWUFBWSxFQUFFLENBQUMsR0FBRztJQUNsQixnQkFBZ0IsRUFBRSxDQUFDLEdBQUc7SUFDdEIsb0JBQW9CLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxVQUFVLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxVQUFVLEdBQUcsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDO0lBQ3BGLG9CQUFvQixlQUFlLENBQUMsQ0FBQyxDQUFDO0lBQ3RDLGlCQUFpQjtJQUNqQixnQkFBZ0IsQ0FBQyxVQUFVLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFO0lBQ3hDLGFBQWEsQ0FBQztJQUNkLFlBQVksRUFBRSxDQUFDLEdBQUc7SUFDbEIsZ0JBQWdCLEVBQUUsQ0FBQyxHQUFHO0lBQ3RCLG9CQUFvQixFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDO0lBQ3hELG9CQUFvQixlQUFlLENBQUMsQ0FBQyxDQUFDO0lBQ3RDLGlCQUFpQjtJQUNqQixnQkFBZ0IsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFO0lBQ3pCLGFBQWEsQ0FBQztJQUNkLFNBQVM7QUFDVDtJQUNBLFFBQVEsT0FBTyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUN4QixLQUFLO0FBQ0w7SUFDQSxJQUFJLE1BQU0sR0FBRztJQUNiLFFBQVEsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUM7SUFDdkQsUUFBUSxJQUFJLE1BQU0sS0FBSyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUU7SUFDdEUsWUFBWSxNQUFNLElBQUksS0FBSyxDQUFDLG1EQUFtRCxDQUFDLENBQUM7SUFDakYsU0FBUztJQUNULFFBQVEsSUFBSSxDQUFDLEtBQUssTUFBTSxFQUFFO0lBQzFCLFlBQVksSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFO0lBQzdCLGdCQUFnQixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDO0lBQy9ELGFBQWE7SUFDYixTQUFTO0lBQ1QsUUFBUSxPQUFPLE1BQU0sQ0FBQztJQUN0QixLQUFLO0FBQ0w7SUFDQSxJQUFJLE1BQU0sR0FBRztJQUNiLFFBQVEsS0FBSyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7SUFDcEQsWUFBWSxNQUFNLElBQUksR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUM7SUFDeEMsWUFBWSxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLElBQUksR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUU7SUFDckYsZ0JBQWdCLE9BQU8sQ0FBQyxDQUFDO0lBQ3pCLGFBQWE7SUFDYixTQUFTO0FBQ1Q7SUFDQSxRQUFRLE9BQU8sQ0FBQyxDQUFDO0lBQ2pCLEtBQUs7QUFDTDtJQUNBLElBQUksUUFBUSxDQUFDLEtBQUssRUFBRTtJQUNwQixRQUFRLElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDO0FBQy9CO0lBQ0EsUUFBUSxLQUFLLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtJQUNwRCxZQUFZLElBQUksSUFBSSxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUN0QyxZQUFZLE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ2hGLFlBQVksR0FBRyxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLGtCQUFrQixFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQzNFLFNBQVM7QUFDVDtJQUNBLFFBQVEsT0FBTyxHQUFHLENBQUM7SUFDbkIsS0FBSztBQUNMO0lBQ0EsSUFBSSxZQUFZLENBQUMsS0FBSyxFQUFFO0lBQ3hCLFFBQVEsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQztJQUMzQixRQUFRLElBQUksUUFBUSxHQUFHLENBQUMsQ0FBQztBQUN6QjtJQUNBLFFBQVEsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQztJQUN2QyxRQUFRLElBQUksV0FBVyxHQUFHLFFBQVEsQ0FBQyxNQUFNLEdBQUcsUUFBUSxDQUFDLENBQUM7SUFDdEQsUUFBUSxJQUFJLGFBQWEsR0FBRyxNQUFNLEdBQUcsV0FBVyxHQUFHLFFBQVEsQ0FBQztBQUM1RDtJQUNBLFFBQVEsSUFBSSxHQUFHLEdBQUcsRUFBRSxDQUFDO0lBQ3JCLFFBQVEsSUFBSSxFQUFFLEdBQUcsRUFBRSxDQUFDO0FBQ3BCO0lBQ0EsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQztBQUN2QjtJQUNBLFFBQVEsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFFBQVEsRUFBRSxDQUFDLEVBQUUsRUFBRTtJQUMzQyxZQUFZLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDO0FBQzdCO0lBQ0EsWUFBWSxJQUFJLE1BQU0sR0FBRyxDQUFDLE1BQU0sUUFBUSxHQUFHLENBQUMsQ0FBQyxHQUFHLFdBQVcsR0FBRyxhQUFhLEdBQUcsV0FBVyxDQUFDO0lBQzFGLFlBQVksS0FBSyxJQUFJLENBQUMsR0FBRyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtJQUM3QyxnQkFBZ0IsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxXQUFXLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7QUFDaEc7SUFDQSxnQkFBZ0IsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUMxRCxhQUFhO0lBQ2IsU0FBUztBQUNUO0lBQ0EsUUFBUSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsUUFBUSxFQUFFLENBQUMsRUFBRSxFQUFFO0lBQzNDLFlBQVksR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQy9ELFlBQVksRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM3QyxTQUFTO0FBQ1Q7SUFDQSxRQUFRLE9BQU8sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3RCLEtBQUs7QUFDTDtJQUNBLElBQUksR0FBRyxDQUFDLFVBQVUsRUFBRSxhQUFhLEVBQUU7SUFDbkMsUUFBUSxJQUFJLEtBQUssR0FBRyxLQUFLLENBQUM7QUFDMUI7SUFDQSxRQUFRLElBQUksVUFBVSxDQUFDLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsRUFBRTtJQUNqRCxZQUFZLEtBQUssR0FBRyxJQUFJLENBQUM7SUFDekIsU0FBUztBQUNUO0lBQ0EsUUFBUSxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDekMsUUFBUSxNQUFNLFVBQVUsR0FBRyxVQUFVLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDL0MsUUFBUSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMs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QyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDOUYsU0FBUztJQUNULEtBQUs7QUFDTDtJQUNBLElBQUksU0FBUyxDQUFDLEtBQUssRUFBRTtJQUNyQixRQUFRLE1BQU0sWUFBWSxHQUFHLENBQUMsS0FBSyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDakcsUUFBUSxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDM0QsS0FBSztBQUNMO0lBQ0EsSUFBSSxTQUFTLENBQUMsS0FBSyxFQUFFO0lBQ3JCLFFBQVEsTUFBTSxZQUFZLEdBQUcsQ0FBQyxLQUFLLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNqRyxRQUFRLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUMzRCxLQUFLO0FBQ0w7SUFDQTtJQUNBLElBQUksV0FBVyxDQUFDLEtBQUssRUFBRTtJQUN2QixRQUFRLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUM7SUFDM0IsUUFBUSxNQUFNLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3hFO0lBQ0EsUUFBUSxNQUFNLE1BQU0sR0FBRyxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDbEUsUUFBUSxNQUFNLElBQUksR0FBRyxNQUFNLEdBQUcsQ0FBQyxJQUFJLEVBQUUsR0FBRyxJQUFJLFNBQVMsQ0FBQyxNQUFNLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksVUFBVSxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDdkcsUUFBUSxJQUFJLEdBQUcsR0FBRyxJQUFJLFVBQVUsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDaEU7SUFDQTtJQUNBLFFBQVEsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDbkU7SUFDQTtJQUNBLFFBQVEsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7QUFDdEM7SUFDQTtJQUNBLFFBQVEsR0FBRyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUN0QjtJQUNBO0lBQ0EsUUFBUSxJQUFJLENBQUMsSUFBSSxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUM7SUFDN0IsS0FBSztBQUNMO0lBQ0E7SUFDQSxJQUFJLFlBQVksQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFO0lBQzNCLFFBQVEsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQztJQUMzQixRQUFRLE1BQU0sTUFBTSxHQUFHLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7QUFDakU7SUFDQSxRQUFRLE1BQU0sTUFBTSxHQUFHLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUNsRSxRQUFRLE1BQU0sSUFBSSxHQUFHLE1BQU0sR0FBRyxDQUFDLElBQUksRUFBRSxHQUFHLElBQUksU0FBUyxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxVQUFVLENBQUMsTUFBTSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUN2RyxRQUFRLElBQUksR0FBRyxHQUFHLElBQUksVUFBVSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUNoRTtJQUNBO0lBQ0EsUUFBUSxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxJQUFJLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztBQUM3RTtJQUNBO0lBQ0EsUUFBUSxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQzlCO0lBQ0E7SUFDQSxRQUFRLEdBQUcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDdEI7SUFDQTtJQUNBLFFBQVEsSUFBSSxDQUFDLElBQUksR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDO0lBQzdCLEtBQUs7QUFDTDtJQUNBO0lBQ0EsSUFBSSxLQUFLLENBQUMsVUFBVSxFQUFFO0lBQ3RCLFFBQVEsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQztJQUMzQixRQUFRLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUN0QyxRQUFRLE1BQU0sT0FBTyxHQUFHLFVBQVUsQ0FBQyxNQUFNLEVBQUUsQ0FBQztBQUM1QztJQUNBLFFBQVEsSUFBSSxJQUFJLEdBQUcsSUFBSSxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUN0RTtJQUNBLFFBQVEsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxJQUFJLEVBQUU7SUFDM0MsWUFBWSxJQUFJLFNBQVMsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksVUFBVSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDekY7SUFDQSxRQUFRLEtBQUssSUFBSSxDQUFDLEdBQUcsT0FBTyxHQUFHLE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO0lBQ3JELFlBQVksSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxPQUFPLENBQUMsRUFBRSxVQUFVLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM1RixZQUFZLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxPQUFPLEVBQUUsQ0FBQyxFQUFFLEVBQUU7SUFDL0MsZ0JBQWdCLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsT0FBTyxDQUFD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SUFBSSxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ3RFO0lBQ0EsUUFBUSxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLElBQUksRUFBRTtJQUMzQyxZQUFZLElBQUksU0FBUyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxVQUFVLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUN6RjtJQUNBLFFBQVEsS0FBSyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7SUFDckQsWUFBWSxJQUFJLFdBQVcsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzlDLFlBQVksSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsV0FBVyxDQUFDLEVBQUUsU0FBUztBQUN0RDtJQUNBLFlBQVksSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3JDLFlBQVksSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3hGLFlBQVksSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQztJQUMxRSxT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QUksQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDdkUsU0FBUyxFQUFFO0lBQ1gsWUFBWSxNQUFNLElBQUksS0FBSyxDQUFDLDRCQUE0QixDQUFDLENBQUM7SUFDMUQsU0FBUztBQUNUO0lBQ0EsUUFBUSxJQUFJLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQztJQUMxQixLQUFLO0FBQ0w7SUFDQSxJQUFJLEtBQUssQ0FBQyxVQUFVLEVBQUUsVUFBVSxHQUFHLENBQUMsRUFBRTtJQUN0QyxRQUFRLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxVQUFVLEVBQUUsQ0FBQyxFQUFFLEVBQUU7SUFDN0MsWUFBWSxNQUFNLElBQUksR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUM7SUFDeEMsWUFBWSxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsSUFBSSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUN2RixTQUFTO0FBQ1Q7SUFDQSxRQUFRLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDO0lBQzdELFFBQVEsS0FBSyxJQUFJLENBQUMsR0FBRyxVQUFVLEVBQUUsQ0FBQyxHQUFHLFVBQVUsRUFBRSxDQUFDLEVBQUUsRUFBRTtJQUN0RCxZQUFZLE1BQU0sSUFBSSxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQztBQUN4QztJQUNBLFlBQVksTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLEVBQUUs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R0FBRyxDQUFDO0FBQ25CO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQSxLQUFLO0FBQ0w7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtBQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7QUFDQTtJQUNBLElBQUksUUFBUSxHQUFHO0lBQ2YsUUFBUSxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDbEMsUUFBUSxJQUFJLEdBQUcsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7SUFDekQsWUFBWSxNQUFNLFFBQVEsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUU7SUFDaEQsZ0JBQWdCLElBQUksU0FBUyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsSUFBSSxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksVUFBVSxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsSUFBSSxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQy9GO0lBQ0EsWUFBWSxRQUFRLENBQUMsR0FB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Q0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFO0lBQzlDLFlBQVksSUFBSSxTQUFTLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxVQUFVLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDakcsUUFBUSxJQUFJLFVBQVUsR0FBRyxJQUFJLFVBQVUsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDckQ7SUFDQTtJQUNBO0lBQ0EsUUFBUSxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDL0MsUUFBUSxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDdEM7SUFDQSxRQUFRLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO0lBQzlDLFlBQVksVUFBVSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM1QyxTQUFTO0FBQ1Q7SUFDQSxRQUFRLE9BQU8sVUFBVSxDQUFDO0lBQzFCLEtBQUs7QUFDTDtJQUNBLElBQUksS0FBSyxHQUFHO0lBQ1osUUFBUSxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDO0lBQzNCLFFBQVEsSUFBSSxHQUFHLEdBQUcsRUFBRSxDQUFDO0lBQ3JCLFFBQVEsS0FBSyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtJQUNqRCxZQUFZLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDekMsWUFB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QU0sS0FBSyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztBQUNyRDtJQUNBLFlBQVksSUFBSSxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDdEMsWUFBWSxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQzlDO0lBQ0EsWUFBWSxJQUFJLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUN2RCxZQUFZLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDOUM7SUFDQSxZQUFZLElBQUksRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ3ZELFlBQVksRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUM5QztJQUNBLFlBQVksSUFBSSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUNqRDtJQUNBO0lBQ0EsWUFBWSxJQUFJLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNqRyxZQUFZLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDOUM7SUFDQSxZQUFZLElBQUksRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ2pHLFlBQVksRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUM5QztJQUNBLFlBQVksSUFBSSxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDakcsWUFBWSxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQzlDO0lBQ0EsWUFBWSxJQUFJLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ2pEO0lBQ0E7SUFDQSxZQUFZLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLEtBQUssR0FBRyxHQUFHLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUNoRSxZQUFZLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLElBQUksQ0FBQyxVQUFVLElBQUksR0FBRyxDQUFDLENBQUM7QUFDL0Q7SUFDQTtJQUNBLFlBQVksR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsS0FBSyxHQUFHLEdBQUcsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ2hFLFlBQVksTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDLFVBQVUsSUFBSSxHQUFHLENBQUMsQ0FBQztBQUMvRDtJQUNBLFlBQVksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDNUMsU0FBUztBQUNUO0lBQ0E7SUFDQTtJQUNBLFFBQVEsTUFBTSxHQUFHLE1BQU0sRUFBRSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUMvQztJQUNBO0lBQ0E7SUFDQSxRQUFRLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsRUFBRSxFQUFFO0lBQ2xELFlBQVksTUFBTSxLQUFLLEdBQUcsQ0FBQyxHQUFHLEdBQUcsQ0FBQztBQUNsQztJQUNBLFlBQVksTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxLQUFLLEdBQUcsR0FBRyxDQUFDLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsS0FBSyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDakcsWUFBWSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNqQyxTQUFTO0FBQ1Q7SUFDQTtJQUNBLFFBQVEsT0FBTyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUM7QUFDM0I7SUFDQSxRQUFRLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxL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QyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdkQsWUFBWSxNQUFNLEVBQUUsR0FBRyxXQUFXLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN2RCxZQUFZLE1BQU0sRUFBRSxHQUFHLFdBQVcsQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzNELFlBQVksTUFBTSxFQUFFLEdBQUcsV0FBVyxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDM0QsWUFBWSxNQUFNLEVBQUUsR0FBRyxXQUFXLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMzRDtJQUNBLFlBQVksTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzNFLFlBQVksTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzNFLFlBQVksTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzNFO0lBQ0EsWUFBWSxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3BDLFlBQVksTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDaEgsWUFBWSxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ25ELFlBQVksTUFBTSxHQUFHLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUN0QyxZQUFZLE1BQU0sR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ25IO0lBQ0EsWUFBWSxJQUFJLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDO0lBQzdCLFlBQVksS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxFQUFFLEVBQUU7SUFDbkQsZ0JBQWdCLE1BQU0sTUFBTSxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsVUFBVSxJQUFJLENBQUMsQ0FBQztBQUM3RDtJQUNBLGdCQUFnQixNQUFNLElBQUksR0FBRyxXQUFXLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN4RSxnQkFBZ0IsTUFBTSxJQUFJLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksR0FBRyxDQUFDLENBQUM7QUFDckU7SUFDQSxnQkFBZ0IsRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDcEQsYUFBYTtBQUNiO0lBQ0E7SUFDQSxZQUFZLElBQUksQ0FBQyxFQUFFLEVBQUUsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUMvRCxZQUFZLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNoQyxZQUFZLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQztBQUNsQztJQUNBLFlBQVksRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDM0MsWUFBWSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUM5QztJQUNBLFlBQVksRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDM0MsWUFBWSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUM5QztJQUNBLFlBQVksRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDM0MsWUFBWSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUM5QztJQUNBLFlBQVksRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ2hDLFlBQVksRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQ2hDO0lBQ0E7SUFDQSxZQUFZLE1BQU0sS0FBSyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNyRCxZQUFZLElBQUksR0FBRyxHQUFHLENBQUMsQ0FBQztJQUN4QixZQUFZLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNyQyxZQUFZLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDaEQ7SUFDQSxZQUFZLElBQUksR0FBRyxHQUFHLENBQUMsQ0FBQztJQUN4QixZQUFZLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN0RCxZQUFZLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDaEQ7SUFDQSxZQUFZLElBQUksR0FBRyxHQUFHLENBQUMsQ0FBQztJQUN4QixZQUFZLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN0RCxZQUFZLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDaEQ7SUFDQSxZQUFZLElBQUksR0FBRyxHQUFHLENBQUMsQ0FBQztBQUN4QjtJQUNBLFlBQVksSUFBSSxDQUFDLEVBQUUsRUFBRSxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNyRixZQUFZLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDOUMsWUFBWSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ2hEO0lBQ0E7SUFDQSxZQUFZLElBQUksR0FBRyxHQUFHLENBQUMsQ0FBQztJQUN4QixZQUFZLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUMzRCxZQUFZLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDaEQ7SUFDQSxZQUFZLElBQUksR0FBRyxHQUFHLENBQUMsQ0FBQztJQUN4QixZQUFZLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUMzRCxZQUFZLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDaEQ7SUFDQSxZQUFZLElBQUksR0FBRyxHQUFHLENBQUMsQ0FBQztJQUN4QixZQUFZLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUMzRCxZQUFZLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDaEQ7SUFDQSxZQUFZLElBQUksR0FBRyxHQUFHLEVBQUUsQ0FBQztJQUN6QixZQUFZLElBQUksQ0FBQyxFQUFFLEVBQUUsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDdEY7SUFDQSxZQUFZLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDOUMsWUFBWSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ2hEO0lBQ0E7SUFDQSxZQUFZLElBQUksRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN2QyxZQUFZLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxXQUFXLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ25FLFlBQVksRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUMvQztJQUNBLFlBQVksSUFBSSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsV0FBVyxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN4RSxZQUFZLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDakQ7QUFDQTtJQUNBLFlBQVksSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQzNELFlBQVksSUFBSSxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBQ2hFO0lBQ0EsWUFBWSxPQUFPLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDO0lBQ3RDLFlBQVksT0FBTyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQztBQUN4QztJQUNBLFlBQVksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2hELFNBQVM7QUFDVDtJQUNBO0lBQ0EsUUFBUSxJQUFJLE1BQU07SUFDbEIsWUFBWSxNQUFNLENBQUMsS0FBSyxDQUFDLHNCQUFzQixDQUFDLENBQUM7SUFDakQsUUFBUSxXQUFXLENBQUMsQ0FBQyxHQUFHLE1BQU0sVUFBVSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQztBQUNuRjtJQUNBO0lBQ0EsUUFBUSxJQUFJLE1BQU07SUFDbEIsWUFBWSxNQUFNLENBQUMsS0FBSyxDQUFDLHNCQUFzQixDQUFDLENBQUM7SUFDakQsUUFBUSxXQUFXLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ2hEO0lBQ0E7SUFDQSxRQUFRLElBQUksTUFBTTtJQUNsQixZQUFZLE1BQU0sQ0FBQyxLQUFLLENBQUMsdUJBQXVCLENBQUMsQ0FBQztJQUNsRCxRQUFRLFdBQVcsQ0FBQyxFQUFFLEdBQUcsTUFBTSxVQUFVLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBQ3JGO0lBQ0E7SUFDQSxRQUFRLFdBQVcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUMxQztJQUNBO0lBQ0EsUUFBUSxJQUFJLFdBQVcsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLElBQUksSUFBSSxDQUFDLFVBQVUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFO0lBQy9ELFlBQVksTUFBTSxJQUFJLEtBQUssQ0FBQyxxQ0FBcUMsQ0FBQyxDQUFDO0lBQ25FLFNBQVM7QUFDVDtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBLFFBQVEsSUFBSSxNQUFNLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxzQ0FBc0MsQ0FBQyxDQUFDO0lBQ3pFLFFBQVEsV0FBVyxDQUFDLEVBQUUsR0FBRyxJQUFJLFVBQVUsQ0FBQyxJQUFJLFNBQVMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLEdBQUcsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxFQUFFLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQztJQUNuRyxRQUFRLFdBQVcsQ0FBQyxFQUFFLEdBQUcsSUFBSSxVQUFVLENBQUMsSUFBSSxTQUFTLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxHQUFHLENBQUMsSUFBSSxHQUFHLENBQUMsRUFBRSxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDbkcsUUFBUSxXQUFXLENBQUMsRUFBRSxHQUFHLElBQUksVUFBVSxDQUFDLElBQUksU0FBUyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsR0FBRyxDQUFDLElBQUksR0FBRyxDQUFDLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBQ25HO0lBQ0EsUUFBUSxXQUFXLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN6RSxRQUFRLFdBQVcsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLE9BQU8sR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNuRixRQUFRLFdBQVcsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxHQUFHLENBQUMsRUFBRSxPQUFPLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUNqRztJQUNBO0lBQ0EsUUFBUSxXQUFXLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLFVBQVUsQ0FBQyxDQUFD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Q0FBQyxJQUFJLEVBQUUsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzlELFFBQVEsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ2xDLFFBQVEsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUM1QztJQUNBLFFBQVEsSUFBSSxHQUFHLEdBQUcsS0FBSyxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUM7SUFDM0MsUUFBUSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDbkQsUUFBUSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQzVDO0lBQ0EsUUFBUSxJQUFJLEdBQUcsR0FBRyxLQUFLLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQztJQUMzQyxRQUFRLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNuRCxRQUFRLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDNUM7SUFDQSxRQUFRLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDM0U7SUFDQSxRQUFRLElBQUksR0FBRyxHQUFHLEtBQUssQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDO0lBQzNDLFFBQVEsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFDOUUsUUFBUSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQzVDO0lBQ0EsUUFBUSxJQUFJLEdBQUcsR0FBRyxLQUFLLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQztJQUMzQyxRQUFRLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBQzlFLFFBQVEsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUM1QztJQUNBLFFBQVEsSUFBSSxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDbEMsUUFBUSxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsS0FBSyxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNuRCxRQUFRLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDMUM7SUFDQSxRQUFRLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUN0RDtJQUNBLFFBQVEsV0FBVyxDQUFDLENBQUMsR0FBRyxJQUFJLFVBQVUsQ0FBQyxJQUFJLFNBQVMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLEdBQUcsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxFQUFFLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQztBQUNsRztJQUNBLFFBQVEsV0FBVyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLEVBQUUsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUNuRCxRQUFRLFdBQVcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxFQUFFLEVBQUUsS0FBSyxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNwRSxRQUFRLFdBQVcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxFQUFFLEVBQUUsS0FBSyxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNwRSxRQUFRLFdBQVcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxFQUFFLEVBQUUsS0FBSyxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNwRSxRQUFRLFdBQVcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUMxQyxRQUFRLFdBQVcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDN0MsUUFBUSxXQUFXLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQzNFLFFBQVEsV0FBVyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztBQUM3QztJQUNBLFFBQVEsSUFBSSxHQUFHLEdBQUcsVUFBVSxDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUMsRUFBRSxFQUFFLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQztJQUMzRSxRQUFRLEdBQUcsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUNqRCxRQUFRLEdBQUcsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLEVBQUUsRUFBRSxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDaEQsUUFBUSxHQUFHLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNoQyxRQUFRLEdBQUcsQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ3JDO0lBQ0EsUUFBUSxXQUFXLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUMvQjtJQUNBLFFBQVEsSUFBSSxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRSxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2pHLFFBQVEsRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQzVCO0lBQ0EsUUFBUSxJQUFJLE1BQU0sRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUMsUUFBUSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQy9EO0lBQ0EsUUFBUSxXQUFXLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNwQyxLQUFLO0FBQ0w7SUFDQSxJQUFJLFNBQVMsVUFBVSxHQUFHO0lBQzFCLFFBQVEsV0FBVyxDQUFDLEdBQUcsR0FBRyxJQUFJLFVBQVUsQ0FBQyxJQUFJLFNBQVMsQ0FBQyxPQUFPLEdBQUcsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxFQUFFLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQztBQUMxRjtJQUNBLFFBQVEsV0FBVyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzNDLFFBQVEsV0FBVyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDNUQsUUFBUSxXQUFXLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM1RCxRQUFRLFdBQVcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzVELFFBQVEsV0FBVyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDakUsUUFBUSxXQUFXLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNqRTtJQUNBLFFBQVEsV0FBVyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNyRixRQUFRLFdBQVcsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDckYsUUFBUSxXQUFXLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxD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O0lBQ25DLElBQUksR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNuQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbkMsSUFBSSxHQUFHLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3JDLElBQUksR0FBRyxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNyQyxJQUFJLEdBQUcsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDckMsSUFBSSxHQUFHLENBQUMsTUFBTSxHQUFHLEVBQUUsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzdDLElBQUksR0FBRyxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUM3QyxJQUFJLEdBQUcsQ0FBQyxNQUFNLEdBQUcsRUFBRSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDN0MsSUFBSSxHQUFHLENBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQy9DLElBQUksR0FBRyxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUMvQyxJQUFJLEdBQUcsQ0FBQyxPQUFPLEdBQUcsRUFBRSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDL0MsSUFBSSxHQUFHLENBQUMsR0FBRyxHQUFHLEVBQUUsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLEdB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S0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFDM0UsSUFBSSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3hDO0lBQ0EsSUFBSSxJQUFJLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3JEO0lBQ0EsSUFBSSxJQUFJLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQzNDLElBQUksRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNuQyxJQUFJLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDdEM7SUFDQSxJQUFJLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDMUM7SUFDQSxJQUFJLE9BQU8sRUFBRSxDQUFDO0lBQ2QsQ0FBQztBQUNEO0lBQ0EsU0FBUyxVQUFVLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRTtJQUN0RCxJQUFJLE1BQU0sRUFBRSxHQUFHLEtBQUssQ0FBQyxFQUFFLENBQUM7SUFDeEIsSUFBSSxNQUFNLEVBQUUsR0FBRyxLQUFLLENBQUMsRUFBRSxDQUFDO0lBQ3hCO0lBQ0EsSUFBSSxJQUFJLEVBQUUsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ25FLElBQUksRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNyRCxJQUFJLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDckQsSUFBSSxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3JELElBQUksRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUMzQjtJQUNBLElBQUksTUFBTSxNQUFNLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUMxRDtJQUNBLElBQUksTUFBTSxJQUFJLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLEVBQUUsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3hFLElBQUksTUFBTSxJQUFJLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3ZGLElBQUksTUFBTSxJQUFJLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3ZGO0lBQ0EsSUFBSSxNQUFNLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEVBQUUsSUFBSSxDQUFDLEVBQUUsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQzNFO0lBQ0EsSUFBSSxNQUFNLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0FBQ3hEO0lBQ0EsSUFBSSxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMzRTtJQUNBLElBQUksTUFBTSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN2RyxJQUFJLE1BQU0sR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDdkcsSUFBSSxNQUFNLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxVQUFVLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQ2pGO0lBQ0EsSUFBSSxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ2hFO0lBQ0EsSUFBSSxNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsRUFBRSxDQUFDO0lBQzNCLElBQUksTUFBTSxLQUFLLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN2RCxJQUFJLE1BQU0sTUFBTSxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ25FLElBQUksSUFBSSxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNsRCxJQUFJLEVBQUUsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDdkM7SUFDQSxJQUFJLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztBQUNyRDtJQUNBLElBQUksT0FBTyxDQUFDLENBQUM7SUFDYixDQUFDO0FBQ0Q7SUFDQSxTQUFTLFVBQVUsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFO0lBQ3JELElBQUksTUFBTSxFQUFFLEdBQUcsS0FBSyxDQUFDLEVBQUUsQ0FBQztBQUN4QjtJQUNBLElBQUksSUFBSSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzlELElBQUksR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM1RCxJQUFJLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDNUQsSUFBSSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzFELElBQUksR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMxRDtJQUNBLElBQUksT0FBTyxHQUFHLENBQUM7SUFDZixDQUFDO0FBQ0Q7SUFDQSxTQUFTLFVBQVUsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxFQUFFLEVBQUU7SUFDbEQsSUFBSSxNQUFNLEVBQUUsR0FBRyxLQUFLLENBQUMsRUFBRSxDQUFDO0lBQ3hCLElBQUksTUFBTSxFQUFFLEdBQUcsS0FBSyxDQUFDLEVBQUUsQ0FBQztBQUN4QjtJQUNBLElBQUksSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUN0RSxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDekQsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3pELElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUMxRCxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFDMUQsSUFBSSxDQUFDLEdBQUcsRUFB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LElBQUksQ0FBQyxFQUFFQSxNQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRUEsTUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDOUMsSUFBSSxDQUFDLEVBQUVBLE1BQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFQSxNQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNoRCxJQUFJLENBQUMsRUFBRUEsTUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUVBLE1BQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2hELElBQUksQ0FBQyxFQUFFQSxNQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRUEsTUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDaEQsSUFBSSxDQUFDLEVBQUVBLE1BQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFQSxNQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNsRCxJQUFJLENBQUMsRUFBRUEsTUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUVBLE1BQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3BELElBQUksQ0FBQyxFQUFFQSxNQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM1QixJQUFJLENBQUMsRUFBRUEsTUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDNUIsSUFBSSxDQUFDLEVBQUVBLE1BQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzVCLElBQUksQ0FBQyxFQUFFQSxNQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM3QixJQUFJLENBQUMsRUFBRUEsTUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDN0IsSUFBSSxDQUFDLEVBQUVBLE1BQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzdCLElBQUksQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2xCOztJQ2hFQTtJQUNBO0FBQ0E7SUFDQTtBQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7QUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0FBQ0E7SUFDQTtJQUNBO0lBQ0E7Ozs7Ozs7Ozs7O0lDakJBO0lBQ0E7QUFDQTtJQUNBO0FBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtBQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7QUFDQTtJQUNBO0lBQ0E7SUFDQTtBQUNBO0lBQ0E7QUFDQTtJQUNBO0lBQ0E7QUFDQTtJQUNPLFNBQVMsMkJBQTJCLENBQUMsT0FBTyxFQUFFLEVBQUUsRUFBRTtJQUN6RCxJQUFJLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN2RSxDQUFDO0FBQ0Q7SUFDTyxTQUFTLDJCQUEyQixDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUU7SUFDN0YsSUFBSSxPQUFPLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQzdELENBQUM7QUFDRDtJQUNPLFNBQVMsaUNBQWlDLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUU7SUFDdkcsSUFBSSxPQUFPLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQzdEOztJQ2xDQTtJQUNBO0FBQ0E7SUFDQTtBQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7QUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0FBQ0E7SUFDQTtJQUNBO0lBQ0E7QUFDQTtJQUNBLE1BQU0sMkJBQTJCLEdBQUcsQ0FBQyxDQUFDO0lBQ3RDLE1BQU0sMkJBQTJCLEdBQUcsQ0FBQyxDQUFDO0lBQ3RDLE1BQU0sMkJBQTJCLEdBQUcsQ0FBQyxDQUFDO0FBQ3RDO0lBQ08sTUFBTSx1QkFBdUIsQ0FBQztJQUNyQyxJQUFJLFdBQVcsQ0FBQyxFQUFFLEVBQUUsdUJBQXVCLEVBQUUsdUJBQXVCLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSxFQUFFO0lBQzdHLFFBQVEsSUFBSSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUM7SUFDckIsUUFBUSxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztJQUM3QixRQUFRLElBQUksQ0FBQyx1QkFBdUIsR0FBRyx1QkFBdUIsQ0FBQztJQUMvRCxRQUFRLElBQUksQ0FBQyw2QkFBNkIsR0FBRyw2QkFBNkIsQ0FBQztJQUMzRSxLQUFLO0FBQ0w7SUFDQSxJQUFJLHFCQUFxQixDQUFDLFFBQVEsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRTtJQUNuRCxRQUFRLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUM3QyxRQUFRLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUM3QyxRQUFRLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUM3QztJQUNBLFFBQVEsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLHdCQUF3QixDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3hELFFBQVEsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLHdCQUF3QixDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3hEO0lBQ0EsUUFBUSxJQUFJLENBQUMsSUFBSSxLQUFLLDJCQUEyQixNQUFNLElBQUksS0FBSywyQkFBMkIsQ0FBQyxFQUFFO0lBQzlGLFlBQVksT0FBTyxJQUFJLENBQUMsNkJBQTZCLENBQUMsUUFBUSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ3JFLFNBQVMsTUFBTSxJQUFJLElBQUksS0FBSywyQkFBMkIsRUFBRTtJQUN6RCxZQUFZLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3ZFLFlBQVksT0FBTyxJQUFJLENBQUMsNkJBQTZCLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ3RFLFNBQVMsTUFBTSxJQUFJLElBQUksS0FBSywyQkFBMkIsRUFBRTtJQUN6RCxZQUFZLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3ZFLFlBQVksT0FBTyxJQUFJLENBQUMsNkJBQTZCLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ3RFLFNBQVMsTUFBTTtJQUNmLFlBQVksT0FBTyxJ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LE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyw2QkFBNkI7SUFDOUQsWUFBWSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFDcEQsWUFBWSxJQUFJLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDeEMsWUFBWSxJQUFJLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDeEMsWUFBWSxJQUFJLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDL0MsWUFBWSxJQUFJLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ25DLFlBQVksSUFBSSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDckQ7SUFDQSxRQUFRLGNBQWMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7QUFDekM7SUFDQSxRQUFRLE9BQU8sQ0FBQyxjQUFjLEVBQUUsWUFBWSxDQUFDLENBQUM7SUFDOUMsS0FBSztJQUNMOztJQzdNQTtJQUNBO0FBQ0E7SUFDQTtBQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7QUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0FBQ0E7SUFDQTtJQUNBO0lBQ0E7QUFVQTtJQUNPLE1BQU0sV0FBVyxD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LE9BQU8sT0FBTyxDQUFDLENBQUMsQ0FBQztJQUNyQixJQUFJLE9BQU8sV0FBVyxDQUFDLENBQUMsQ0FBQztJQUN6QixJQUFJLE9BQU8sV0FBVyxDQUFDLENBQUMsQ0FBQztJQUN6QixJQUFJLE9BQU8sV0FBVyxDQUFDLENBQUMsQ0FBQztJQUN6QixJQUFJLE9BQU8sV0FBVyxDQUFDLE1BQU0sQ0FBQztJQUM5QixJQUFJLE9BQU8sV0FBVyxDQUFDLE1BQU0sQ0FBQztJQUM5QixJQUFJLE9BQU8sV0FBVyxDQUFDLE1BQU0sQ0FBQztJQUM5QixJQUFJLE9BQU8sV0FBVyxDQUFDLFNBQVMsQ0FBQztJQUNqQyxJQUFJLE9BQU8sV0FBVyxDQUFDLENBQUMsQ0FBQztJQUN6QixJQUFJLElBQUksVUFBVSxDQUFDLEVBQUUsRUFBRSxVQUFVLENBQUMsRUFBRSxFQUFFLENBQUM7QUFDdkM7SUFDQTtJQUNBLElBQUksSUFBSSxNQUFNLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUN6QyxJQUFJLE1BQU0sTUFBTSxFQUFFLENBQUM7QUFDbkI7SUFDQSxJQUFJLE9BQU8sV0FBVyxDQUFDLENBQUMsQ0FBQztJQUN6QixJQUFJLE9BQU8sV0FBVyxDQUFDLENBQUMsQ0FBQztJQUN6QixJQUFJLE9BQU8sV0FBVyxDQUFDLENBQUMsQ0FBQztJQUN6QixJQUFJLE9BQU8sV0FBVyxDQUFDLENBQUMsQ0FBQztJQUN6QixJQUFJLE9BQU8sV0FBVyxDQUFDLEVBQUUsQ0FBQztJQUMxQixJQUFJLE9BQU8sV0FBVyxDQUFDLEVBQUUsQ0FBQztJQUMxQixJQUFJLE9BQU8sV0FBVyxDQUFDLE1BQU0sQ0FBQztJQUM5QixJQUFJLE9BQU8sV0FBVyxDQUFDLE1BQU0sQ0FBQztJQUM5QixJQUFJLE9BQU8sV0FBVyxDQUFDLE1BQU0sQ0FBQztJQUM5QixJQUFJLE9BQU8sV0FBVyxDQUFDLEVBQUUsQ0FBQztJQUMxQixJQUFJLE9BQU8sV0FBVyxDQUFDLEVBQUUsQ0FBQztJQUMxQixJQUFJLE9BQU8sV0FBVyxD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QUcsQ0FBQyxDQUFDO0lBQy9ELGdCQUFnQixJQUFJLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDM0MsZ0JBQWdCLElBQUksR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDdEQ7SUFDQSxnQkFBZ0IsSUFBSSxJQUFJLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLEtBQUssR0FBRyxHQUFHLENBQUMsQ0FBQztJQUMvRCxnQkFBZ0IsSUFBSSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQzVELGdCQUFnQixJQUFJLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3REO0lBQ0EsZ0JBQWdCLElBQUksSUFBSSxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxLQUFLLEdBQUcsR0FBRyxDQUFDLENBQUM7SUFDL0QsZ0JBQWdCLElBQUksR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUM1RCxnQkFBZ0IsSUFBSSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUN0RDtJQUNBLGdCQUFnQixJQUFJLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO0FBQzNEO0lBQ0E7SUFDQSxnQkFBZ0IsSUFBSSxJQUFJLEdBQUcsT0FBTyxDQUFDLENB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QUcsRUFBRSxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDcEQ7SUFDQSxnQkFBZ0IsSUFBSSxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2xFLGdCQUFnQixJQUFJLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDcEU7QUFDQTtJQUNBO0lBQ0EsZ0JBQWdCLElBQUksR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3JFLGdCQUFnQixHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3BEO0lBQ0EsZ0JBQWdCLElBQUksR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3JFLGdCQUFnQixHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3BEO0lBQ0EsZ0JBQWdCLElBQUksR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3JFLGdCQUFnQixHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FB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RyxFQUFFLENBQUMsR0FBRyxDQUFDO0lBQzdCLFFBQVEsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtJQUNwQyxZQUFZLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDM0QsU0FBUztBQUNUO0lBQ0EsUUFBUSxLQUFLLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQztJQUN0QixRQUFRLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQztJQUM3QixRQUFRLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7SUFDcEMsWUFBWSxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzNELFNBQVM7QUFDVDtJQUNBLFFBQVEsS0FBSyxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUM7SUFDdEIsUUFBUSxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUM7SUFDN0IsUUFBUSxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUM7SUFDOUIsUUFBUSxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ3pDO0lBQ0E7SUFDQSxRQUFRLEtBQUssQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDO0lBQ3RCLFFBQVEsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLEdBQUcsRUFBRSxDQUFDO0lBQzNCLFFBQVEsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzlELFFBQVEsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtJQUNwQyxZQUFZLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3JFLFNBQVM7QUFDVDtJQUNBO0lBQ0EsUUFBUSxLQUFLLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQztJQUN0QixRQUFRLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQztJQUMzQixRQUFRLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN2RCxRQUFRLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7SUFDcEMsWUFBWSxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNyRSxTQUFTO0FBQ1Q7SUFDQTtJQUNBLFFBQVEsS0FBSyxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUM7SUFDdEIsUUFBUSxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksR0FBRyxFQUFFLENBQUM7SUFDM0IsUUFBUSxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQzdELFFBQVEsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDakUsUUFBUSxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNqRTtJQUNBLFFBQVEsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLEdBQUcsRUFBRSxDQUFDO0lBQzNCO0lBQ0E7SUFDQSxRQUFRLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzdELFFBQVEsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDakUsUUFBUSxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNqRTtJQUNBO0lBQ0EsUUFBUSxVQUFVLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDOUU7SUFDQSxRQUFRLElBQUksTUFBTSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMscUJBQXFCLEdBQUcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUNwRjtJQUNBO0lBQ0EsUUFBUSxXQUFXLENBQUMsRUFBRSxHQUFHLElBQUksVUFBVSxDQUFDLElBQUksU0FBUyxDQUFDLE9BQU8sQ0FBQyxFQUFFLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQztJQUMvRSxRQUFRLFdBQVcsQ0FBQyxFQUFFLEdBQUcsSUFBSSxVQUFVLENBQUMsSUFBSSxTQUFTLENBQUMsT0FBTyxDQUFDLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQy9FLFFBQVEsV0FBVyxDQUFDLEVBQUUsR0FBRyxJQUFJLFVBQVUsQ0FBQyxJQUFJLFNBQVMsQ0FBQyxPQUFPLENBQUMsRUFBRSxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDL0UsUUFBUSxXQUFXLENBQUMsRUFBRSxHQUFHLElBQUksVUFBVSxDQUFDLElBQUksU0FBUyxDQUFDLE9BQU8sQ0FBQyxFQUFFLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQztJQUMvRSxRQUFRLFdBQVcsQ0FBQyxFQUFFLEdBQUcsSUFBSSxVQUFVLENBQUMsSUFBSSxTQUFTLENBQUMsT0FBTyxDQUFDLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBQy9FO0lBQ0E7SUFDQSxRQUFRLE1BQU0sTUFBTSxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLFlBQVksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzFHLFFBQVEsTUFBTSxNQUFNLENBQUMsWUFBWSxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUsWUFBWSxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDMUcsUUFBUSxNQUFNLE1BQU0sQ0FBQyxZQUFZLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxZQUFZLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMxRyxRQUFRLE1BQU0sTUFBTSxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLFlBQVksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzFHLFFBQVEsTUFBTSxNQUFNLENBQUMsWUFBWSxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUsWUFBWSxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDMUc7SUFDQTtJQUNBLFFBQVEsSUFBSSxNQUFNLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxDQUFDO0lBQzdELFFBQVEsS0FBSyxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsV0FBVyxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDMUUsUUFBUSxLQUFLLENBQUMsYUFBYSxDQUFDLElBQUksRUFBRSxXQUFXLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUMxRSxRQUFRLEtBQUssQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLFdBQVcsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzFFLFFBQVEsS0FBSyxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsV0FBVyxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDMUUsUUFBUSxLQUFLLENBQUMsYUFBYSxDQUFDLElBQUksRUFBRSxXQUFXLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUMxRSxRQUFRLEtBQUssQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLFdBQVcsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzlFLFFBQVEsS0FBSyxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsV0FBVyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDOUUsUUFBUSxLQUFLLENBQUMsYUFBYSxDQUFDLElBQUksRUFBRSxXQUFXLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUM5RSxRQUFRLEtBQUssQ0FBQyxhQUFhLENBQUMsR0FBRyxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3hFLFFBQVEsS0FBSyxDQUFDLGFBQWEsQ0FBQyxHQUFHLEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDeEUsUUFBUSxLQUFLLENBQUMsYUFBYSxDQUFDLEdBQUcsRUFBRSxXQUFXLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN4RSxRQUFRLEtBQUssQ0FBQyxhQUFhLENBQUMsR0FBRyxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ3hFO0lBQ0EsUUFBUSxVQUFVLENBQUMsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ2pFLFFBQVEsS0FBSyxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDMUUsUUFBUSxLQUFLLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxXQUFXLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUM1RSxRQUFRLEtBQUssQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLFdBQVcsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQzVFLEtBQUs7QUFDTDtJQUNBLElBQUksZUFBZSxNQUFNLEdBQUc7SUFDNUIsUUFBUSxJQUFJLE1BQU0sRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLDZCQUE2QixDQUFDLENBQUM7SUFDL0Q7SUFDQSxRQUFRLE1BQU0sVUFBVSxHQUFHLElBQUksbUJBQW1CLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDMUQsUUFBUSxVQUFVLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNoRCxRQUFRLFVBQVUsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ3hELFFBQVEsVUFBVSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDeEQsUUFBUSxVQUFVLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUN4RCxRQUFRLFVBQVUsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ3hELFFBQVEsVUFBVSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDeEQsUUFBUSxVQUFVLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUN4RCxRQUFRLFVBQVUsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ3hELFFBQVEsVUFBVSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDeEQsUUFBUSxVQUFVLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUN2RCxRQUFRLFVBQVUsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ3ZELFFBQVEsVUFBVSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDdkQsUUFBUSxVQUFVLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJ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LElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDckUsb0JBQW9CLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3pFLGdCQUFnQixDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsV0FBVyxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDckcsb0JBQW9CLFdBQVcsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsV0FBVyxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDeEcsb0JBQW9CLFdBQVcsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsV0FBVyxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQ2xIO0lBQ0E7SUFDQSxZQUFZLElBQUksV0FBVyxDQUFDLEVBQUUsQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLEVBQUU7SUFDN0MsZ0JBQWdCLE1BQU0sSUFBSSxLQUFLLENBQUMsc0NB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QUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsMEJBQTBCLENBQUMsQ0FBQztJQUM1RCxRQUFRLE1BQU0sUUFBUSxFQUFFLENBQUM7QUFDekI7SUFDQSxRQUFRLElBQUksTUFBTSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsNkJBQTZCLENBQUMsQ0FBQztJQUMvRCxRQUFRLE1BQU0sV0FBVyxFQUFFLENBQUM7QUFDNUI7SUFDQSxRQUFRLElBQUksS0FBSyxHQUFHLFdBQVcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM1RCxRQUFRLEtBQUssR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzlCLFFBQVEsV0FBVyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDdkM7SUFDQSxRQUFRLE1BQU0sV0FBVyxHQUFHLFVBQVUsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNwRyxRQUFRLElBQUksTUFBTSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsc0NBQXNDLENBQUMsQ0FBQztJQUN4RSxRQUFRLE1BQU0sWUFBWSxHQUFHLFdBQVcsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0FBQzlEO0lBQ0E7SUFDQSxRQUFRLElBQUksWUFBWSxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsRUFBRTtJQUN2QyxZQUFZLE1BQU0sSUFBSSxLQUFLLENBQUMsQ0FBQywyQ0FBMkMsRUFBRSxZQUFZLENBQUMsTUFBTSxFQUFFLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDO0lBQ25ILFNBQVM7QUFDVDtJQUNBLFFBQVEsSUFBSSxXQUFXLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsVUFBVSxHQUFHLENB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LENBQUMsQ0FBQztJQUNqQyxTQUFTO0lBQ1QsUUFBUSxTQUFTLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQzlDO0lBQ0E7SUFDQTtBQUNBO0lBQ0E7SUFDQSxRQUFRLFdBQVcsQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsVUFBVSxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztBQUNuRTtJQUNBLFFBQVEsV0FBVyxDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSxVQUFVLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQ25FO0lBQ0EsUUFBUSxXQUFXLENBQUMsU0FBUyxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLFVBQVUsQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDLEVBQUUsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQ2pIO0lBQ0E7SUFDQSxRQUFRLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUMvQztJQUNBLFFBQVEsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQztJQUN2QixRQUFRLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLEVBQUUsQ0FBQyxFQUFFLEVBQUU7SUFDdkMsWUFBWSxTQUFTLENBQUMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxD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LENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLENBQUM7SUFDakQsSUFBSSxNQUFNLEVBQUUsR0FBRyxTQUFTLENBQUMsS0FBSyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBQ2xFO0lBQ0E7SUFDQSxJQUFJLElBQUksTUFBTSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsQ0FBQztJQUNqRCxJQUFJLE1BQU0sRUFBRSxHQUFHLFNBQVMsQ0FBQyxLQUFLLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBQ3RFO0lBQ0E7SUFDQSxJQUFJLElBQUksTUFBTSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsQ0FBQztJQUNqRCxJQUFJLE1BQU0sRUFBRSxHQUFHLFNBQVMsQ0FBQyxLQUFLLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxhQUFhLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQztBQUN4RjtJQUNBLElBQUksSUFBSSxNQUFNLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUM3QyxJQUFJLE1BQU0sQ0FBQyxHQUFHLFFBQVEsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxVQUFVLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDNUQ7SUFDQSxJQUFJLElBQUksTUFBTSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7SUFDN0MsSUFBSSxNQUFNLENBQUMsR0FBRyxRQUFRLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDakU7SUFDQSxJQUFJLElBQUksTUFBTSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7SUFD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SUFDM0MsV0FBVyxFQUFFLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUM3QixDQUFDO0FBQ0Q7SUFDQSxTQUFTLHVCQUF1QixDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUU7SUFDL0MsSUFBSSxPQUFPLE1BQU0sQ0FBQyxFQUFFLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNyQyxDQUFDO0FBQ0Q7SUFDQSxTQUFTLHNCQUFzQixDQUFDLEtBQUssRUFBRSxVQUFVLEVBQUU7SUFDbkQsSUFBSSxPQUFPLHVCQUF1QixDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7SUFDeEUsQ0FBQztBQUNEO0lBQ0EsU0FBUyxtQkFBbUIsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFO0lBQzNDLElBQUksT0FBTyxzQkFBc0IsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUM7SUFDOUQsV0FBVyxzQkFBc0IsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUM7SUFDOUQsV0FBVyxzQkFBc0IsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUM7SUFDOUQsV0FBVyxzQkFBc0IsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUM7SUFDOUQsV0FBVyxzQkFBc0IsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUM7SUFDOUQsV0FBVyxzQkFBc0IsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUM7SUFDOUQsV0FBVyxzQkFBc0IsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUM7SUFDOUQsV0FBVyxzQkFBc0IsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUM7SUFDOUQsV0FBVyxz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LENBQUM7QUFDdEM7SUFDQSxJQUFJLElBQUksRUFBRSxHQUFHLEVBQUUsQ0FBQztJQUNoQixJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDO0lBQ2xCLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzdCLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNqQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDakMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2pDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNqQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDakMsSUFBSSxJQUFJLEVBQUUsR0FBRyxFQUFFLENBQUM7SUFDaEIsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUNsQixJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUM3QixJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDakMsSUFBSSxJQUFJLEVBQUUsR0FBRyxFQUFFLENBQUM7SUFDaEIsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUNsQixJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUM3QjtJQUNBO0lBQ0E7SUFDQTtBQUNBO0lBQ0E7SUFDQSxJQUFJLEtBQUssQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDO0lBQ2xCLElBQUksS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLEdBQUcsRUFBRSxDQUFDO0lBQ3ZCLElBQUksS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDL0MsSUFBSSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO0lBQ2hDLFFBQVEsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMzRCxLQUFLO0FBQ0w7SUFDQTtJQUNBLElBQUksS0FBSyxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUM7SUFDbEIsSUFBSSxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksR0FBRyxFQUFFLENBQUM7SUFDdkIsSUFBSSxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbkQsSUFBSSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO0lBQ2hDLFFBQVEsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMzRCxLQUFLO0FBQ0w7SUFDQTtJQUNBLElBQUksS0FBSyxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUM7SUFDbEIsSUFBSSxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksR0FBRyxFQUFFLENBQUM7SUFDdkIsSUFBSSxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3pELElBQUksS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN2RCxJQUFJLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDdkQ7SUFDQSxJQUFJLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQztJQUN2QjtJQUNBO0lBQ0EsSUFBSSxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUN2RCxJQUFJLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdkQsSUFBSSxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3ZEO0lBQ0E7SUFDQSxJQUFJLFVBQVUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMxRSxJQUFJLFVBQVUsQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7QUFDM0Q7SUFDQSxJQUFJLFVBQVUsQ0FBQyxHQUFHLEdBQUcsVUFBVSxDQUFDLEVBQUUsQ0FBQztJQUNuQyxJQUFJLEVBQUUsQ0FBQyxVQUFVLEdBQUcsQ0FBQyxDQUFDO0lBQ3RCLElBQUksS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxFQUFFLEVBQUU7SUFDdkMsUUFBUSxVQUFVLENBQUMsR0FBRyxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ25ELFFBQVEsRUFBRSxDQUFDLFVBQVUsSUFBSSxDQUFDLENBQUM7SUFDM0IsS0FBSztBQUNMO0lBQ0EsSUFBSSxVQUFVLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDdkIsSUFBSSxVQUFVLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2pDLElBQUksVUFBVSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQy9DLElBQUksVUFBVSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQy9DLElBQUksVUFBVSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQy9DLElBQUksVUFBVSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQy9DLElBQUksVUFBVSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQy9DLElBQUksVUFBVSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQy9DLElBQUksVUFBVSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQy9DLElBQUksVUFBVSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQy9DLElBQUksVUFBVSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzlDLElBQUksVUFBVSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzlDLElBQUksVUFBVSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzlDLElBQUksVUFBVSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzlDLElBQUksVUFBVSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQy9DLElBQUksVUFBVSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2hELElBQUksVUFBVSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2hELElBQUksVUFBVSxDQUFDLEtBQUssR0FBRyxVQUFVLENBQUMsWUFBWSxFQUFFLENBQUM7QUFDakQ7SUFDQSxJQUFJLFVBQVUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUN2QixJQUFJLFVBQVUsQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzNDLElBQUksVUFBVSxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDdEQsSUFBSSxVQUFVLENBQUMsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxZQUFZLEVBQUUsQ0FBQztBQUM3QztJQUNBLElBQUksSUFBSSxNQUFNLEVBQUU7SUFDaEIsUUFBUSxNQUFNLENBQUMsSUFBSSxDQUFDLHdCQUF3QixHQUFHLEVBQUUsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDN0UsUUFBUSxNQUFNLENBQUMsSUFBSSxDQUFDLHdCQUF3QixHQUFHLEVBQUUsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDOUUsUUFBUSxNQUFNLENBQUMsSUFBSSxDQUFDLHdCQUF3QixHQUFHLEVBQUUsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDM0UsUUFBUSxNQUFNLENBQUMsSUFBSSxDQUFDLHdCQUF3QixHQUFHLEVBQUUsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDOUUsUUFBUSxNQUFNLENBQUMsSUFBSSxDQUFDLHdCQUF3QixHQUFHLEVBQUUsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDMUUsS0FBSztBQUNMO0lBQ0EsSUFBSSxPQUFPLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLENBQUM7SUFDcEQsQ0FBQztBQUNEO0lBQ0EsZUFBZSwwQkFBMEIsQ0FBQyxLQUFLLEVBQUUsVUFBVSxFQUFFLEVBQUUsRUFBRTtJQUNqRSxJQUFJLE1BQU0sRUFBRSxHQUFHLEtBQUssQ0FBQyxFQUFFLENBQUM7QUFDeEI7SUFDQSxJQUFJLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN6QyxJQUFJLE1BQU0sTUFBTSxHQUFHLElBQUksU0FBUyxDQUFDLElBQUksR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDL0MsSUFBSSxJQUFJLE1BQU0sR0FBRyxJQUFJLFNBQVMsQ0FBQyxJQUFJLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQzdDO0lBQ0EsSUFBSSxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDO0lBQ25CLElBQUksS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksRUFBRSxDQUFDLEVBQUUsRUFBRTtJQUNuQyxRQUFRLE1BQU0sS0FBSyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDO0lBQ2hDLFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDcEQsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDakYsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzVCLEtBQUs7QUFDTDtJQUNBLElBQUksTUFBTSxHQUFHLE1BQU0sRUFBRSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUMzQztJQUNBLElBQUksSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO0lBQ2YsSUFBSSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxFQUFFLENBQUMsRUFBRSxFQUFFO0lBQ25DLFFBQVEsTUFBTSxLQUFLLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUM7SUFDaEMsUUFBUSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsS0FBSyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxLQUFLLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDbEcsS0FBSztJQUNMLElBQUksT0FBTyxDQUFDLENBQUM7SUFDYixDQUFDO0FBQ0Q7SUFDQSxTQUFTLFdBQVcsQ0FBQyxLQUFLLEVBQUUsYUFBYSxFQUFFLGFBQWEsRUFBRTtJQUMxRCxJQUFJLE1BQU0sRUFBRSxHQUFHLEtBQUssQ0FBQyxFQUFFLENBQUM7QUFDeEI7SUFDQSxJQUFJLElBQUksRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUM7SUFDckIsSUFBSSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsYUFBYSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtJQUNuRCxRQUFRLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDekMsUUFBUSxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsYUFBYSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDekQsS0FBSztJQUNMLElBQUksT0FBTyxFQUFFLENBQUM7SUFDZCxDQUFDO0FBQ0Q7SUFDQSxTQUFTLFNBQVMsQ0FBQyxLQUFLLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFO0lBQzVELElBQUksTUFBTSxFQUFFLEdBQUcsS0FBSyxDQUFDLEVBQUUsQ0FBQztBQUN4QjtJQUNBLElBQUksTUFBTSxFQUFFLEdBQUcsbUJBQW1CLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsVUFBVSxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQ3RGO0lBQ0E7QUFDQTtJQUNBO0lBQ0EsSUFBSSxJQUFJLE1BQU0sRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLENBQUM7QUFDbkQ7SUFDQSxJQUFJLElBQUksR0FBRyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUM7SUFDdEIsSUFBSSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO0lBQ2hDLFFBQVEsSUFBSSxVQUFVLEdBQUcsRUFBRSxDQUFDO0lBQzVCLFFBQVEsVUFBVSxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3pDLFFBQVEsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtJQUNwQyxZQUFZLFVBQVUsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN4RSxTQUFTO0FBQ1Q7SUFDQSxRQUFRLElBQUksRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLEVBQUUsRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzNGLFFBQVEsRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxFQUFFLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNyRSxRQUFRLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsRUFBRSxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDckUsUUFBUSxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLEVBQUUsRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3JFLFFBQVEsRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxFQUFFLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNyRSxRQUFRLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsRUFBRSxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDckUsUUFBUSxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLEVBQUUsRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3JFO0lBQ0EsUUFBUSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM3QyxLQUFLO0FBQ0w7SUFDQSxJQUFJLE9BQU8sR0FBRyxDQUFDO0lBQ2YsQ0FBQztBQUNEO0lBQ0EsU0FBUyxTQUFTLENBQUMsS0FBSyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUU7SUFDaEUsSUFBSSxNQUFNLEVBQUUsR0FBRyxLQUFLLENBQUMsRUFBRSxDQUFDO0FBQ3hCO0lBQ0EsSUFBSSxNQUFNLEVBQUUsR0FBRyxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSxVQUFVLENBQUMsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDdEY7SUFDQTtJQUNBO0lBQ0E7SUFDQTtBQUNBO0lBQ0E7SUFDQSxJQUFJLElBQUksTUFBTSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsQ0FBQztJQUNwRCxJQUFJLElBQUksRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxFQUFFLEVBQUUsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMvRCxJQUFJLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsRUFBRSxFQUFFLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN2RSxJQUFJLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDcEcsSUFBSSxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLEVBQUUsRUFBRSxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdkUsSUFBSSxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsS0FBSyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUMxQyxJQUFJLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUN4QixJQUFJLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDdEM7SUFDQTtJQUNBLElBQUksSUFBSSxNQUFNLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxtQ0FBbUMsQ0FBQyxDQUFDO0FBQ2pFO0lBQ0EsSUFBSSxJQUFJLEdBQUcsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDO0lBQ3RCLElBQUksS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtJQUNoQyxRQUFRLElBQUksRUFBRSxHQUFHLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO0lBQ3JDLFFBQVEsRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3ZFLFFBQVEsTUFBTSxXQUFXLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3hELFFBQVEsRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsV0FBVyxFQUFFLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNsRSxRQUFRLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsV0FBVyxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUMzRTtJQUNBLFFBQVEsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDN0MsS0FBSztBQUNMO0lBQ0EsSUFBSSxPQUFPLEdBQUcsQ0FBQztJQUNmLENBQUM7QUFDRDtJQUNBLFNBQVMsU0FBUyxDQUFDLEtBQUssRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRTtJQUMzRSxJQUFJLE1BQU0sRUFBRSxHQUFHLEtBQUssQ0FBQyxFQUFFLENBQUM7QUFDeEI7SUFDQSxJQUFJLE1BQU0sSUFBSSxHQUFHLG1CQUFtQixDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxVQUFVLENBQUMsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxFQUFFLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztBQUN6SDtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0FBQ0E7SUFDQTtJQUNBLElBQUksSUFBSSxNQUFNLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO0lBQ3BELElBQUksSUFBSSxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDakQsSUFBSSxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFDL0IsSUFBSSxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3RDO0lBQ0E7SUFDQSxJQUFJLElBQUksTUFBTSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsQ0FBQztJQUNwRCxJQUFJLE1BQU0sTUFBTSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDMUQsSUFBSSxNQUFNLElBQUksR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQy9FLElBQUksTUFBTSxJQUFJLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUM5RixJQUFJLE1BQU0sSUFBSSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDOUYsSUFBSSxNQUFNLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUM5RTtJQUNBLElBQUksTUFBTSxJQUFJLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ3RILElBQUksTUFBTSxJQUFJLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ3RILElBQUksTUFBTSxJQUFJLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ3RILElBQUksTUFBTSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDL0U7SUFDQSxJQUFJLElBQUksRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQzlCLElBQUksRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUN0QztJQUNBO0lBQ0EsSUFBSSxJQUFJLE1BQU0sRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLG1DQUFtQyxDQUFDLENBQUM7SUFDakUsSUFBSSxJQUFJLEdBQUcsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDO0lBQ3RCLElBQUksS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtJQUNoQyxRQUFRLElBQUksRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzNFLFFBQVEsRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDakU7SUFDQSxRQUFRLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQy9DLEtBQUs7QUFDTDtJQUNBLElBQUksSUFBSSxNQUFNLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxtQ0FBbUMsQ0FBQyxDQUFDO0lBQ2pFLElBQUksS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtJQUNoQyxRQUFRLElBQUksRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDL0YsUUFBUSxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ3BGO0lBQ0EsUUFBUSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbkQsS0FBSztBQUNMO0lBQ0EsSUFBSSxPQUFPLEdBQUcsQ0FBQztJQUNmLENBQUM7QUFDRDtJQUNBLFNBQVMsUUFBUSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUU7SUFDdkQsSUFBSSxNQUFNLEVBQUUsR0FBRyxLQUFLLENBQUMsRUFBRSxDQUFDO0lBQ3hCLElBQUksTUFBTSxFQUFFLEdBQUcsS0FBSyxDQUFDLEVBQUUsQ0FBQztBQUN4QjtJQUNBLElBQUksSUFBSSxLQUFLLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdkQsSUFBSSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO0lBQ2hDLFFBQVEsS0FBSyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdEUsS0FBSztBQUNMO0lBQ0EsSUFBSSxVQUFVLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQztBQUM1QjtJQUNBLElBQUksSUFBSSxLQUFLLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdkQsSUFBSSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO0lBQ2hDLFFBQVEsS0FBSyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdEUsS0FBSztBQUNMO0lBQ0EsSUFBSSxJQUFJLEtBQUssR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN2RCxJQUFJLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7SUFDaEMsUUFBUSxLQUFLLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN0RSxLQUFLO0lBQ0wsSUFBSSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO0lBQ2hDLFFBQVEsS0FBSyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdEUsS0FBSztBQUNMO0lBQ0EsSUFBSSxVQUFVLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQzFFLElBQUksVUFBVSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7QUFDckY7SUFDQSxJQUFJLElBQUksRUFBRSxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxFQUFFLEVBQUUsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3BFLElBQUksSUFBSSxFQUFFLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLEVBQUUsRUFBRSxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUM7QUFDcEU7SUFDQSxJQUFJLE9BQU8sRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDekMsQ0FBQztBQUNEO0lBQ0EsU0FBUyxRQUFRLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFO0lBQzVELElBQUksTUFBTSxFQUFFLEdBQUcsS0FBSyxDQUFDLEVBQUUsQ0FBQztJQUN4QixJQUFJLE1BQU0sRUFBRSxHQUFHLEtBQUssQ0FBQyxFQUFFLENBQUM7QUFDeEI7SUFDQSxJQUFJLElBQUksRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUM5QyxJQUFJLElBQUksRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUM5QztJQUNBLElBQUksT0FBTyxFQUFFLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzFELENBQUM7QUFDRDtJQUNBLFNBQVMsUUFBUSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFO0lBQzVDLElBQUksTUFBTSxFQUFFLEdBQUcsS0FBSyxDQUFDLEVBQUUsQ0FBQztBQUN4QjtJQUNBLElBQUksT0FBTyxFQUFFLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsRUFBRSxFQUFFLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM3RCxDQUFDO0FBQ0Q7SUFDQSxlQUFlLGNBQWMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUU7SUFDckUsSUFBSSxNQUFNLEVBQUUsR0FBRyxLQUFLLENBQUMsRUFBRSxDQUFDO0FBQ3hCO0lBQ0EsSUFBSSxJQUFJLEVBQUUsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsRUFBRSxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM1RCxJQUFJLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDN0MsSUFBSSxNQUFNLEVBQUUsR0FBRyxLQUFLLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQztBQUM1QjtJQUNBLElBQUksTUFBTSxFQUFFLEdBQUcsS0FBSyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUM7SUFDcEMsSUFBSSxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDO0FBQ3RCO0lBQ0EsSUFBSSxPQUFPLE1BQU0sS0FBSyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDekQsQ0FBQztBQUNEO0FBQ0E7SUFDTyxTQUFTLG1CQUFtQixDQUFDLEtBQUssRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRTtJQUN6RCxJQUFJLE1BQU0sRUFBRSxHQUFHLEtBQUssQ0FBQyxFQUFFLENBQUM7SUFDeEIsSUFBSSxNQUFNLEdBQUcsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDO0FBQzdCO0lBQ0EsSUFBSSxNQUFNLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQzNDLElBQUksTUFBTSxJQUFJLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzlEO0lBQ0EsSUFBSSxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUM7SUFDbEIsSUFBSSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFO0lBQ2xDLFFBQVEsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQztJQUNsRCxRQUFRLE1BQU0sSUFBSSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3pDO0lBQ0EsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQzlELEtBQUs7QUFDTDtJQUNBLElBQUksT0FBTyxFQUFFLENBQUM7SUFDZCxDQUFDO0FBQ0Q7SUFDTyxTQUFTLG1CQUFtQixDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUU7SUFDbkUsSUFBSSxNQUFNLEVBQUUsR0FBRyxLQUFLLENBQUMsRUFBRSxDQUFDO0FBQ3hCO0lBQ0EsSUFBSSxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUM7QUFDbEI7SUFDQSxJQUFJLE1BQU0sR0FBRyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUM7SUFDaEMsSUFBSSxNQUFNLENBQUMsR0FBRyxHQUFHLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQztBQUNqQztJQUNBLElBQUksTUFBTSxJQUFJLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDbEMsSUFBSSxNQUFNLElBQUksR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDOUQsSUFBSSxNQUFNLElBQUksR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUNsQyxJQUFJLE1BQU0sR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDakQ7SUFDQSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDeEUsSUFBSSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFO0lBQ2xDLFFBQVEsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUM7SUFDbkQsUUFBUSxNQUFNLElBQUksR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNoRDtJQUNBLFFBQVEsTUFBTSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztBQUNwRDtJQUNBLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ2pDLEtBQUs7QUFDTDtJQUNBLElBQUksSUFBSSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDcEUsSUFBSSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFO0lBQ2xDLFFBQVEsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUM7SUFDbkQsUUFBUSxNQUFNLElBQUksR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNoRDtJQUNBLFFBQVEsTUFBTSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztBQUNwRDtJQUNBLFFBQVEsRUFBRSxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUN2QyxLQUFLO0FBQ0w7SUFDQSxJQUFJLE9BQU8sRUFBRSxDQUFDO0lBQ2Q7O0lDcGxCQTtJQUNBO0FBQ0E7SUFDQTtBQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7QUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0FBQ0E7SUFDQTtJQUNBO0lBQ0E7QUFJQTtJQUNBLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLEtBQUssQ0FBQztBQUtuQztJQUNBLFNBQVMsSUFBSSxDQUFDLENBQUMsRUFBRTtJQUNqQixJQUFJLElBQUksSUFBSSxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDOUIsSUFBSSxPQUFPLElBQUksQ0FBQyxNQUFNLEdBQUcsRUFBRSxFQUFFLElBQUksR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDO0lBQy9DLElBQUksSUFBSSxHQUFHLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDdkIsSUFBSSxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0FBQ0Q7SUFDZSxlQUFlLG9CQUFvQixDQUFDLElBQUksRUFBRSxNQUFNLEVBQUU7SUFDakUsSUFBSSxNQUFNLEtBQUssR0FBRyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUM3QyxJQUFJLE1BQU0sR0FBRyxHQUFHLGtCQUFrQixDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3pDO0lBQ0EsSUFBSSxNQUFNLEtBQUssR0FBRyxNQUFNLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN0RCxJQUFlLEtBQUssQ0FBQyxHQUFHO0lBQ3hCLElBQWUsS0FBSyxDQUFDLEdBQUc7QUFDeEI7SUFDQSxJQUFJLElBQUksTUFBTSxHQUFHLEVBQUUsQ0FBQztJQUNwQixJQUFJLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxHQUFHLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO0lBQ3pDLFFBQVEsSUFBSSxNQUFNLEtBQUssRUFBRSxFQUFFLE1BQU0sR0FBRyxNQUFNLEdBQUcsR0FBRyxDQUFDO0lBQ2pELFFBQVEsTUFBTSxHQUFHLE1BQU0sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdkMsS0FBSztBQUNMO0lBQ0EsSUFBSSxPQUFPLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDakYsSUFBSSxDQUFDLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN4RSxJQUFJLENBQUMsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3hFLElBQUksQ0FBQyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDeEUsSUFBSSxDQUFDLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDaEcsSUFBSSxDQUFDLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDaEcsSUFBSSxDQUFDLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDL0YsSUFBSSxDQUFDLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDN0YsSUFBSSxDQUFDLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbEcsSUFBSSxDQUFDLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQ3RDLElBQUksQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2xCOztJQzVEQTtJQUNBO0FBQ0E7SUFDQTtBQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7QUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0FBQ0E7SUFDQTtJQUNBO0lBQ0E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OyJ9 +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic25hcmtqcy5qcyIsInNvdXJjZXMiOlsiLi4vbm9kZV9tb2R1bGVzL2ZmamF2YXNjcmlwdC9idWlsZC9icm93c2VyLmVzbS5qcyIsIi4uL25vZGVfbW9kdWxlcy9mYXN0ZmlsZS9zcmMvb3NmaWxlLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2Zhc3RmaWxlL3NyYy9tZW1maWxlLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2Zhc3RmaWxlL3NyYy9iaWdtZW1maWxlLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2Zhc3RmaWxlL3NyYy9mYXN0ZmlsZS5qcyIsIi4uL25vZGVfbW9kdWxlcy9AaWRlbjMvYmluZmlsZXV0aWxzL3NyYy9iaW5maWxldXRpbHMuanMiLCIuLi9zcmMvY3VydmVzLmpzIiwiLi4vbm9kZV9tb2R1bGVzL25hbm9hc3NlcnQvaW5kZXguanMiLCIuLi9ub2RlX21vZHVsZXMvYjRhL2xpYi9hc2NpaS5qcyIsIi4uL25vZGVfbW9kdWxlcy9iNGEvbGliL2Jhc2U2NC5qcyIsIi4uL25vZGVfbW9kdWxlcy9iNGEvbGliL2hleC5qcyIsIi4uL25vZGVfbW9kdWxlcy9iNGEvbGliL3V0ZjguanMiLCIuLi9ub2RlX21vZHVsZXMvYjRhL2xpYi91dGYxNmxlLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2I0YS9icm93c2VyLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2JsYWtlMmItd2FzbS9ibGFrZTJiLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2JsYWtlMmItd2FzbS9pbmRleC5qcyIsIi4uL3NyYy9taXNjLmpzIiwiLi4vc3JjL3prZXlfY29uc3RhbnRzLmpzIiwiLi4vc3JjL2ZmbG9ua19jb25zdGFudHMuanMiLCIuLi9zcmMvemtleV91dGlscy5qcyIsIi4uL3NyYy93dG5zX3V0aWxzLmpzIiwiLi4vc3JjL2dyb3RoMTZfcHJvdmUuanMiLCIuLi9ub2RlX21vZHVsZXMvY2lyY29tX3J1bnRpbWUvanMvdXRpbHMuanMiLCIuLi9ub2RlX21vZHVsZXMvY2lyY29tX3J1bnRpbWUvanMvd2l0bmVzc19jYWxjdWxhdG9yLmpzIiwiLi4vc3JjL3d0bnNfY2FsY3VsYXRlLmpzIiwiLi4vc3JjL2dyb3RoMTZfZnVsbHByb3ZlLmpzIiwiLi4vc3JjL2dyb3RoMTZfdmVyaWZ5LmpzIiwiLi4vc3JjL2dyb3RoMTZfZXhwb3J0c29saWRpdHljYWxsZGF0YS5qcyIsIi4uL3NyYy9ncm90aDE2LmpzIiwiLi4vc3JjL2tleXBhaXIuanMiLCIuLi9zcmMvcG93ZXJzb2Z0YXVfdXRpbHMuanMiLCIuLi9zcmMvcG93ZXJzb2Z0YXVfbmV3LmpzIiwiLi4vc3JjL3Bvd2Vyc29mdGF1X2V4cG9ydF9jaGFsbGVuZ2UuanMiLCIuLi9zcmMvcG93ZXJzb2Z0YXVfaW1wb3J0LmpzIiwiLi4vc3JjL3Bvd2Vyc29mdGF1X3ZlcmlmeS5qcyIsIi4uL3NyYy9tcGNfYXBwbHlrZXkuanMiLCIuLi9zcmMvcG93ZXJzb2Z0YXVfY2hhbGxlbmdlX2NvbnRyaWJ1dGUuanMiLCIuLi9zcmMvcG93ZXJzb2Z0YXVfYmVhY29uLmpzIiwiLi4vc3JjL3Bvd2Vyc29mdGF1X2NvbnRyaWJ1dGUuanMiLCIuLi9zcmMvcG93ZXJzb2Z0YXVfcHJlcGFyZXBoYXNlMi5qcyIsIi4uL3NyYy9wb3dlcnNvZnRhdV90cnVuY2F0ZS5qcyIsIi4uL3NyYy9wb3dlcnNvZnRhdV9jb252ZXJ0LmpzIiwiLi4vc3JjL3Bvd2Vyc29mdGF1X2V4cG9ydF9qc29uLmpzIiwiLi4vc3JjL3Bvd2Vyc29mdGF1LmpzIiwiLi4vc3JjL3IxY3NfcHJpbnQuanMiLCIuLi9ub2RlX21vZHVsZXMvQGlkZW4zL2JpZ2FycmF5L3NyYy9iaWdhcnJheS5qcyIsIi4uL25vZGVfbW9kdWxlcy9yMWNzZmlsZS9zcmMvcjFjc2ZpbGUuanMiLCIuLi9zcmMvcjFjc19pbmZvLmpzIiwiLi4vc3JjL3IxY3NfZXhwb3J0X2pzb24uanMiLCIuLi9zcmMvcjFjcy5qcyIsIi4uL3NyYy9sb2Fkc3ltcy5qcyIsIi4uL3NyYy93dG5zX2RlYnVnLmpzIiwiLi4vc3JjL3d0bnNfZXhwb3J0X2pzb24uanMiLCIuLi9zcmMvd3Ruc19jaGVjay5qcyIsIi4uL3NyYy93dG5zLmpzIiwiLi4vc3JjL2JpZ2FycmF5LmpzIiwiLi4vc3JjL3prZXlfbmV3LmpzIiwiLi4vc3JjL3prZXlfZXhwb3J0X2JlbGxtYW4uanMiLCIuLi9zcmMvemtleV9pbXBvcnRfYmVsbG1hbi5qcyIsIi4uL3NyYy96a2V5X3ZlcmlmeV9mcm9taW5pdC5qcyIsIi4uL3NyYy96a2V5X3ZlcmlmeV9mcm9tcjFjcy5qcyIsIi4uL3NyYy96a2V5X2NvbnRyaWJ1dGUuanMiLCIuLi9zcmMvemtleV9iZWFjb24uanMiLCIuLi9zcmMvemtleV9leHBvcnRfanNvbi5qcyIsIi4uL3NyYy96a2V5X2JlbGxtYW5fY29udHJpYnV0ZS5qcyIsIi4uL3NyYy96a2V5X2V4cG9ydF92ZXJpZmljYXRpb25rZXkuanMiLCIuLi9zcmMvZmZsb25rX2V4cG9ydF9zb2xpZGl0eV92ZXJpZmllci5qcyIsIi4uL3NyYy96a2V5X2V4cG9ydF9zb2xpZGl0eXZlcmlmaWVyLmpzIiwiLi4vc3JjL3prZXkuanMiLCIuLi9zcmMvcGxvbmtfc2V0dXAuanMiLCIuLi9zcmMvcHJvb2YuanMiLCIuLi9ub2RlX21vZHVsZXMvanMtc2hhMy9zcmMvc2hhMy5qcyIsIi4uL3NyYy9LZWNjYWsyNTZUcmFuc2NyaXB0LmpzIiwiLi4vc3JjL211bF96LmpzIiwiLi4vc3JjL3Bsb25rX2NvbnN0YW50cy5qcyIsIi4uL3NyYy9wb2x5bm9taWFsL3BvbHlub21pYWwuanMiLCIuLi9zcmMvcG9seW5vbWlhbC9ldmFsdWF0aW9ucy5qcyIsIi4uL3NyYy9wbG9ua19wcm92ZS5qcyIsIi4uL3NyYy9wbG9ua19mdWxscHJvdmUuanMiLCIuLi9zcmMvcGxvbmtfdmVyaWZ5LmpzIiwiLi4vc3JjL3Bsb25rX2V4cG9ydHNvbGlkaXR5Y2FsbGRhdGEuanMiLCIuLi9zcmMvcGxvbmsuanMiLCIuLi9zcmMvcGxvbmtfZXF1YXRpb24uanMiLCIuLi9zcmMvcjFjc19jb25zdHJhaW50X3Byb2Nlc3Nvci5qcyIsIi4uL3NyYy9wb2x5bm9taWFsL2Nwb2x5bm9taWFsLmpzIiwiLi4vc3JjL2ZmbG9ua19zZXR1cC5qcyIsIi4uL3NyYy9mZmxvbmtfcHJvdmUuanMiLCIuLi9zcmMvZmZsb25rX2Z1bGxfcHJvdmUuanMiLCIuLi9zcmMvZmZsb25rX3ZlcmlmeS5qcyIsIi4uL3NyYy9mZmxvbmtfZXhwb3J0X2NhbGxkYXRhLmpzIiwiLi4vc3JjL2ZmbG9uay5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiBnbG9iYWwgQmlnSW50ICovXG5jb25zdCBoZXhMZW4gPSBbIDAsIDEsIDIsIDIsIDMsIDMsIDMsIDMsIDQgLDQgLDQgLDQgLDQgLDQgLDQgLDRdO1xuXG5mdW5jdGlvbiBmcm9tU3RyaW5nKHMsIHJhZGl4KSB7XG4gICAgaWYgKCghcmFkaXgpfHwocmFkaXg9PTEwKSkge1xuICAgICAgICByZXR1cm4gQmlnSW50KHMpO1xuICAgIH0gZWxzZSBpZiAocmFkaXg9PTE2KSB7XG4gICAgICAgIGlmIChzLnNsaWNlKDAsMikgPT0gXCIweFwiKSB7XG4gICAgICAgICAgICByZXR1cm4gQmlnSW50KHMpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIEJpZ0ludChcIjB4XCIrcyk7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbmNvbnN0IGUgPSBmcm9tU3RyaW5nO1xuXG5mdW5jdGlvbiBmcm9tQXJyYXkoYSwgcmFkaXgpIHtcbiAgICBsZXQgYWNjID1CaWdJbnQoMCk7XG4gICAgcmFkaXggPSBCaWdJbnQocmFkaXgpO1xuICAgIGZvciAobGV0IGk9MDsgaTxhLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGFjYyA9IGFjYypyYWRpeCArIEJpZ0ludChhW2ldKTtcbiAgICB9XG4gICAgcmV0dXJuIGFjYztcbn1cblxuZnVuY3Rpb24gYml0TGVuZ3RoJDYoYSkge1xuICAgIGNvbnN0IGFTID1hLnRvU3RyaW5nKDE2KTtcbiAgICByZXR1cm4gKGFTLmxlbmd0aC0xKSo0ICtoZXhMZW5bcGFyc2VJbnQoYVNbMF0sIDE2KV07XG59XG5cbmZ1bmN0aW9uIGlzTmVnYXRpdmUkNChhKSB7XG4gICAgcmV0dXJuIEJpZ0ludChhKSA8IEJpZ0ludCgwKTtcbn1cblxuZnVuY3Rpb24gaXNaZXJvJDEoYSkge1xuICAgIHJldHVybiAhYTtcbn1cblxuZnVuY3Rpb24gc2hpZnRMZWZ0KGEsIG4pIHtcbiAgICByZXR1cm4gQmlnSW50KGEpIDw8IEJpZ0ludChuKTtcbn1cblxuZnVuY3Rpb24gc2hpZnRSaWdodChhLCBuKSB7XG4gICAgcmV0dXJuIEJpZ0ludChhKSA+PiBCaWdJbnQobik7XG59XG5cbmNvbnN0IHNobCA9IHNoaWZ0TGVmdDtcbmNvbnN0IHNociA9IHNoaWZ0UmlnaHQ7XG5cbmZ1bmN0aW9uIGlzT2RkJDUoYSkge1xuICAgIHJldHVybiAoQmlnSW50KGEpICYgQmlnSW50KDEpKSA9PSBCaWdJbnQoMSk7XG59XG5cblxuZnVuY3Rpb24gbmFmKG4pIHtcbiAgICBsZXQgRSA9IEJpZ0ludChuKTtcbiAgICBjb25zdCByZXMgPSBbXTtcbiAgICB3aGlsZSAoRSkge1xuICAgICAgICBpZiAoRSAmIEJpZ0ludCgxKSkge1xuICAgICAgICAgICAgY29uc3QgeiA9IDIgLSBOdW1iZXIoRSAlIEJpZ0ludCg0KSk7XG4gICAgICAgICAgICByZXMucHVzaCggeiApO1xuICAgICAgICAgICAgRSA9IEUgLSBCaWdJbnQoeik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXMucHVzaCggMCApO1xuICAgICAgICB9XG4gICAgICAgIEUgPSBFID4+IEJpZ0ludCgxKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlcztcbn1cblxuXG5mdW5jdGlvbiBiaXRzKG4pIHtcbiAgICBsZXQgRSA9IEJpZ0ludChuKTtcbiAgICBjb25zdCByZXMgPSBbXTtcbiAgICB3aGlsZSAoRSkge1xuICAgICAgICBpZiAoRSAmIEJpZ0ludCgxKSkge1xuICAgICAgICAgICAgcmVzLnB1c2goMSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXMucHVzaCggMCApO1xuICAgICAgICB9XG4gICAgICAgIEUgPSBFID4+IEJpZ0ludCgxKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlcztcbn1cblxuZnVuY3Rpb24gdG9OdW1iZXIkMShzKSB7XG4gICAgaWYgKHM+QmlnSW50KE51bWJlci5NQVhfU0FGRV9JTlRFR0VSICkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTnVtYmVyIHRvbyBiaWdcIik7XG4gICAgfVxuICAgIHJldHVybiBOdW1iZXIocyk7XG59XG5cbmZ1bmN0aW9uIHRvQXJyYXkocywgcmFkaXgpIHtcbiAgICBjb25zdCByZXMgPSBbXTtcbiAgICBsZXQgcmVtID0gQmlnSW50KHMpO1xuICAgIHJhZGl4ID0gQmlnSW50KHJhZGl4KTtcbiAgICB3aGlsZSAocmVtKSB7XG4gICAgICAgIHJlcy51bnNoaWZ0KCBOdW1iZXIocmVtICUgcmFkaXgpKTtcbiAgICAgICAgcmVtID0gcmVtIC8gcmFkaXg7XG4gICAgfVxuICAgIHJldHVybiByZXM7XG59XG5cblxuZnVuY3Rpb24gYWRkKGEsIGIpIHtcbiAgICByZXR1cm4gQmlnSW50KGEpICsgQmlnSW50KGIpO1xufVxuXG5mdW5jdGlvbiBzdWIoYSwgYikge1xuICAgIHJldHVybiBCaWdJbnQoYSkgLSBCaWdJbnQoYik7XG59XG5cbmZ1bmN0aW9uIG5lZyhhKSB7XG4gICAgcmV0dXJuIC1CaWdJbnQoYSk7XG59XG5cbmZ1bmN0aW9uIG11bChhLCBiKSB7XG4gICAgcmV0dXJuIEJpZ0ludChhKSAqIEJpZ0ludChiKTtcbn1cblxuZnVuY3Rpb24gc3F1YXJlJDIoYSkge1xuICAgIHJldHVybiBCaWdJbnQoYSkgKiBCaWdJbnQoYSk7XG59XG5cbmZ1bmN0aW9uIHBvdyhhLCBiKSB7XG4gICAgcmV0dXJuIEJpZ0ludChhKSAqKiBCaWdJbnQoYik7XG59XG5cbmZ1bmN0aW9uIGV4cCQxKGEsIGIpIHtcbiAgICByZXR1cm4gQmlnSW50KGEpICoqIEJpZ0ludChiKTtcbn1cblxuZnVuY3Rpb24gYWJzJDEoYSkge1xuICAgIHJldHVybiBCaWdJbnQoYSkgPj0gMCA/IEJpZ0ludChhKSA6IC1CaWdJbnQoYSk7XG59XG5cbmZ1bmN0aW9uIGRpdihhLCBiKSB7XG4gICAgcmV0dXJuIEJpZ0ludChhKSAvIEJpZ0ludChiKTtcbn1cblxuZnVuY3Rpb24gbW9kKGEsIGIpIHtcbiAgICByZXR1cm4gQmlnSW50KGEpICUgQmlnSW50KGIpO1xufVxuXG5mdW5jdGlvbiBlcShhLCBiKSB7XG4gICAgcmV0dXJuIEJpZ0ludChhKSA9PSBCaWdJbnQoYik7XG59XG5cbmZ1bmN0aW9uIG5lcShhLCBiKSB7XG4gICAgcmV0dXJuIEJpZ0ludChhKSAhPSBCaWdJbnQoYik7XG59XG5cbmZ1bmN0aW9uIGx0KGEsIGIpIHtcbiAgICByZXR1cm4gQmlnSW50KGEpIDwgQmlnSW50KGIpO1xufVxuXG5mdW5jdGlvbiBndChhLCBiKSB7XG4gICAgcmV0dXJuIEJpZ0ludChhKSA+IEJpZ0ludChiKTtcbn1cblxuZnVuY3Rpb24gbGVxKGEsIGIpIHtcbiAgICByZXR1cm4gQmlnSW50KGEpIDw9IEJpZ0ludChiKTtcbn1cblxuZnVuY3Rpb24gZ2VxKGEsIGIpIHtcbiAgICByZXR1cm4gQmlnSW50KGEpID49IEJpZ0ludChiKTtcbn1cblxuZnVuY3Rpb24gYmFuZChhLCBiKSB7XG4gICAgcmV0dXJuIEJpZ0ludChhKSAmIEJpZ0ludChiKTtcbn1cblxuZnVuY3Rpb24gYm9yKGEsIGIpIHtcbiAgICByZXR1cm4gQmlnSW50KGEpIHwgQmlnSW50KGIpO1xufVxuXG5mdW5jdGlvbiBieG9yKGEsIGIpIHtcbiAgICByZXR1cm4gQmlnSW50KGEpIF4gQmlnSW50KGIpO1xufVxuXG5mdW5jdGlvbiBsYW5kKGEsIGIpIHtcbiAgICByZXR1cm4gQmlnSW50KGEpICYmIEJpZ0ludChiKTtcbn1cblxuZnVuY3Rpb24gbG9yKGEsIGIpIHtcbiAgICByZXR1cm4gQmlnSW50KGEpIHx8IEJpZ0ludChiKTtcbn1cblxuZnVuY3Rpb24gbG5vdChhKSB7XG4gICAgcmV0dXJuICFCaWdJbnQoYSk7XG59XG5cbi8vIFJldHVybnMgYSBidWZmZXIgd2l0aCBMaXR0bGUgRW5kaWFuIFJlcHJlc2VudGF0aW9uXG5mdW5jdGlvbiB0b1JwckxFKGJ1ZmYsIG8sIGUsIG44KSB7XG4gICAgY29uc3QgcyA9IFwiMDAwMDAwMFwiICsgZS50b1N0cmluZygxNik7XG4gICAgY29uc3QgdiA9IG5ldyBVaW50MzJBcnJheShidWZmLmJ1ZmZlciwgYnVmZi5ieXRlT2Zmc2V0ICsgbywgbjgvNCk7XG4gICAgY29uc3QgbCA9ICgoKHMubGVuZ3RoLTcpKjQgLSAxKSA+PiA1KSsxOyAgICAvLyBOdW1iZXIgb2YgMzJiaXQgd29yZHM7XG4gICAgZm9yIChsZXQgaT0wOyBpPGw7IGkrKykgdltpXSA9IHBhcnNlSW50KHMuc3Vic3RyaW5nKHMubGVuZ3RoLTgqaS04LCBzLmxlbmd0aC04KmkpLCAxNik7XG4gICAgZm9yIChsZXQgaT1sOyBpPHYubGVuZ3RoOyBpKyspIHZbaV0gPSAwO1xuICAgIGZvciAobGV0IGk9di5sZW5ndGgqNDsgaTxuODsgaSsrKSBidWZmW2ldID0gdG9OdW1iZXIkMShiYW5kKHNoaWZ0UmlnaHQoZSwgaSo4KSwgMHhGRikpO1xufVxuXG4vLyBSZXR1cm5zIGEgYnVmZmVyIHdpdGggQmlnIEVuZGlhbiBSZXByZXNlbnRhdGlvblxuZnVuY3Rpb24gdG9ScHJCRShidWZmLCBvLCBlLCBuOCkge1xuICAgIGNvbnN0IHMgPSBcIjAwMDAwMDBcIiArIGUudG9TdHJpbmcoMTYpO1xuICAgIGNvbnN0IHYgPSBuZXcgRGF0YVZpZXcoYnVmZi5idWZmZXIsIGJ1ZmYuYnl0ZU9mZnNldCArIG8sIG44KTtcbiAgICBjb25zdCBsID0gKCgocy5sZW5ndGgtNykqNCAtIDEpID4+IDUpKzE7ICAgIC8vIE51bWJlciBvZiAzMmJpdCB3b3JkcztcbiAgICBmb3IgKGxldCBpPTA7IGk8bDsgaSsrKSB2LnNldFVpbnQzMihuOC1pKjQgLTQsIHBhcnNlSW50KHMuc3Vic3RyaW5nKHMubGVuZ3RoLTgqaS04LCBzLmxlbmd0aC04KmkpLCAxNiksIGZhbHNlKTtcbiAgICBmb3IgKGxldCBpPTA7IGk8bjgvNC1sOyBpKyspIHZbaV0gPSAwO1xufVxuXG4vLyBQYXNlcyBhIGJ1ZmZlciB3aXRoIExpdHRsZSBFbmRpYW4gUmVwcmVzZW50YXRpb25cbmZ1bmN0aW9uIGZyb21ScHJMRShidWZmLCBvLCBuOCkge1xuICAgIG44ID0gbjggfHwgYnVmZi5ieXRlTGVuZ3RoO1xuICAgIG8gPSBvIHx8IDA7XG4gICAgY29uc3QgdiA9IG5ldyBVaW50MzJBcnJheShidWZmLmJ1ZmZlciwgYnVmZi5ieXRlT2Zmc2V0ICsgbywgbjgvNCk7XG4gICAgY29uc3QgYSA9IG5ldyBBcnJheShuOC80KTtcbiAgICB2LmZvckVhY2goIChjaCxpKSA9PiBhW2EubGVuZ3RoLWktMV0gPSBjaC50b1N0cmluZygxNikucGFkU3RhcnQoOCxcIjBcIikgKTtcbiAgICByZXR1cm4gZnJvbVN0cmluZyhhLmpvaW4oXCJcIiksIDE2KTtcbn1cblxuLy8gUGFzZXMgYSBidWZmZXIgd2l0aCBCaWcgRW5kaWFuIFJlcHJlc2VudGF0aW9uXG5mdW5jdGlvbiBmcm9tUnByQkUoYnVmZiwgbywgbjgpIHtcbiAgICBuOCA9IG44IHx8IGJ1ZmYuYnl0ZUxlbmd0aDtcbiAgICBvID0gbyB8fCAwO1xuICAgIGNvbnN0IHYgPSBuZXcgRGF0YVZpZXcoYnVmZi5idWZmZXIsIGJ1ZmYuYnl0ZU9mZnNldCArIG8sIG44KTtcbiAgICBjb25zdCBhID0gbmV3IEFycmF5KG44LzQpO1xuICAgIGZvciAobGV0IGk9MDsgaTxuOC80OyBpKyspIHtcbiAgICAgICAgYVtpXSA9IHYuZ2V0VWludDMyKGkqNCwgZmFsc2UpLnRvU3RyaW5nKDE2KS5wYWRTdGFydCg4LCBcIjBcIik7XG4gICAgfVxuICAgIHJldHVybiBmcm9tU3RyaW5nKGEuam9pbihcIlwiKSwgMTYpO1xufVxuXG5mdW5jdGlvbiB0b1N0cmluZyhhLCByYWRpeCkge1xuICAgIHJldHVybiBhLnRvU3RyaW5nKHJhZGl4KTtcbn1cblxuZnVuY3Rpb24gdG9MRUJ1ZmYoYSkge1xuICAgIGNvbnN0IGJ1ZmYgPSBuZXcgVWludDhBcnJheShNYXRoLmZsb29yKChiaXRMZW5ndGgkNihhKSAtIDEpIC8gOCkgKzEpO1xuICAgIHRvUnByTEUoYnVmZiwgMCwgYSwgYnVmZi5ieXRlTGVuZ3RoKTtcbiAgICByZXR1cm4gYnVmZjtcbn1cblxuY29uc3QgemVybyA9IGUoMCk7XG5jb25zdCBvbmUgPSBlKDEpO1xuXG52YXIgX1NjYWxhciA9IC8qI19fUFVSRV9fKi9PYmplY3QuZnJlZXplKHtcbiAgICBfX3Byb3RvX186IG51bGwsXG4gICAgYWJzOiBhYnMkMSxcbiAgICBhZGQ6IGFkZCxcbiAgICBiYW5kOiBiYW5kLFxuICAgIGJpdExlbmd0aDogYml0TGVuZ3RoJDYsXG4gICAgYml0czogYml0cyxcbiAgICBib3I6IGJvcixcbiAgICBieG9yOiBieG9yLFxuICAgIGRpdjogZGl2LFxuICAgIGU6IGUsXG4gICAgZXE6IGVxLFxuICAgIGV4cDogZXhwJDEsXG4gICAgZnJvbUFycmF5OiBmcm9tQXJyYXksXG4gICAgZnJvbVJwckJFOiBmcm9tUnByQkUsXG4gICAgZnJvbVJwckxFOiBmcm9tUnByTEUsXG4gICAgZnJvbVN0cmluZzogZnJvbVN0cmluZyxcbiAgICBnZXE6IGdlcSxcbiAgICBndDogZ3QsXG4gICAgaXNOZWdhdGl2ZTogaXNOZWdhdGl2ZSQ0LFxuICAgIGlzT2RkOiBpc09kZCQ1LFxuICAgIGlzWmVybzogaXNaZXJvJDEsXG4gICAgbGFuZDogbGFuZCxcbiAgICBsZXE6IGxlcSxcbiAgICBsbm90OiBsbm90LFxuICAgIGxvcjogbG9yLFxuICAgIGx0OiBsdCxcbiAgICBtb2Q6IG1vZCxcbiAgICBtdWw6IG11bCxcbiAgICBuYWY6IG5hZixcbiAgICBuZWc6IG5lZyxcbiAgICBuZXE6IG5lcSxcbiAgICBvbmU6IG9uZSxcbiAgICBwb3c6IHBvdyxcbiAgICBzaGlmdExlZnQ6IHNoaWZ0TGVmdCxcbiAgICBzaGlmdFJpZ2h0OiBzaGlmdFJpZ2h0LFxuICAgIHNobDogc2hsLFxuICAgIHNocjogc2hyLFxuICAgIHNxdWFyZTogc3F1YXJlJDIsXG4gICAgc3ViOiBzdWIsXG4gICAgdG9BcnJheTogdG9BcnJheSxcbiAgICB0b0xFQnVmZjogdG9MRUJ1ZmYsXG4gICAgdG9OdW1iZXI6IHRvTnVtYmVyJDEsXG4gICAgdG9ScHJCRTogdG9ScHJCRSxcbiAgICB0b1JwckxFOiB0b1JwckxFLFxuICAgIHRvU3RyaW5nOiB0b1N0cmluZyxcbiAgICB6ZXJvOiB6ZXJvXG59KTtcblxuLypcbiAgICBDb3B5cmlnaHQgMjAxOCAwa2ltcyBhc3NvY2lhdGlvbi5cblxuICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHNuYXJranMuXG5cbiAgICBzbmFya2pzIGlzIGEgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yXG4gICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZVxuICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKVxuICAgIGFueSBsYXRlciB2ZXJzaW9uLlxuXG4gICAgc25hcmtqcyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWVxuICAgIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvclxuICAgIG1vcmUgZGV0YWlscy5cblxuICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nIHdpdGhcbiAgICBzbmFya2pzLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuKi9cblxuLypcbiAgICBUaGlzIGxpYnJhcnkgZG9lcyBvcGVyYXRpb25zIG9uIHBvbHlub21pYWxzIHdpdGggY29lZmZpY2llbnRzIGluIGEgZmllbGQgRi5cblxuICAgIEEgcG9seW5vbWlhbCBQKHgpID0gcDAgKyBwMSAqIHggKyBwMiAqIHheMiArIC4uLiArIHBuICogeF5uICBpcyByZXByZXNlbnRlZFxuICAgIGJ5IHRoZSBhcnJheSBbIHAwLCBwMSwgcDIsIC4uLiAsIHBuIF0uXG4gKi9cblxuY2xhc3MgUG9sRmllbGQge1xuICAgIGNvbnN0cnVjdG9yIChGKSB7XG4gICAgICAgIHRoaXMuRiA9IEY7XG5cbiAgICAgICAgbGV0IHJlbSA9IEYuc3FydF90O1xuICAgICAgICBsZXQgcyA9IEYuc3FydF9zO1xuXG4gICAgICAgIGNvbnN0IGZpdmUgPSB0aGlzLkYuYWRkKHRoaXMuRi5hZGQodGhpcy5GLnR3bywgdGhpcy5GLnR3byksIHRoaXMuRi5vbmUpO1xuXG4gICAgICAgIHRoaXMudyA9IG5ldyBBcnJheShzKzEpO1xuICAgICAgICB0aGlzLndpID0gbmV3IEFycmF5KHMrMSk7XG4gICAgICAgIHRoaXMud1tzXSA9IHRoaXMuRi5wb3coZml2ZSwgcmVtKTtcbiAgICAgICAgdGhpcy53aVtzXSA9IHRoaXMuRi5pbnYodGhpcy53W3NdKTtcblxuICAgICAgICBsZXQgbj1zLTE7XG4gICAgICAgIHdoaWxlIChuPj0wKSB7XG4gICAgICAgICAgICB0aGlzLndbbl0gPSB0aGlzLkYuc3F1YXJlKHRoaXMud1tuKzFdKTtcbiAgICAgICAgICAgIHRoaXMud2lbbl0gPSB0aGlzLkYuc3F1YXJlKHRoaXMud2lbbisxXSk7XG4gICAgICAgICAgICBuLS07XG4gICAgICAgIH1cblxuXG4gICAgICAgIHRoaXMucm9vdHMgPSBbXTtcbi8qICAgICAgICBmb3IgKGxldCBpPTA7IGk8MTY7IGkrKykge1xuICAgICAgICAgICAgbGV0IHIgPSB0aGlzLkYub25lO1xuICAgICAgICAgICAgbiA9IDEgPDwgaTtcbiAgICAgICAgICAgIGNvbnN0IHJvb3RzaSA9IG5ldyBBcnJheShuKTtcbiAgICAgICAgICAgIGZvciAobGV0IGo9MDsgajxuOyBqKyspIHtcbiAgICAgICAgICAgICAgICByb290c2lbal0gPSByO1xuICAgICAgICAgICAgICAgIHIgPSB0aGlzLkYubXVsKHIsIHRoaXMud1tpXSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMucm9vdHMucHVzaChyb290c2kpO1xuICAgICAgICB9XG4gICAgKi9cbiAgICAgICAgdGhpcy5fc2V0Um9vdHMoMTUpO1xuICAgIH1cblxuICAgIF9zZXRSb290cyhuKSB7XG4gICAgICAgIGlmIChuID4gdGhpcy5GLnNxcnRfcykgbiA9IHRoaXMucztcbiAgICAgICAgZm9yIChsZXQgaT1uOyAoaT49MCkgJiYgKCF0aGlzLnJvb3RzW2ldKTsgaS0tKSB7XG4gICAgICAgICAgICBsZXQgciA9IHRoaXMuRi5vbmU7XG4gICAgICAgICAgICBjb25zdCBucm9vdHMgPSAxIDw8IGk7XG4gICAgICAgICAgICBjb25zdCByb290c2kgPSBuZXcgQXJyYXkobnJvb3RzKTtcbiAgICAgICAgICAgIGZvciAobGV0IGo9MDsgajxucm9vdHM7IGorKykge1xuICAgICAgICAgICAgICAgIHJvb3RzaVtqXSA9IHI7XG4gICAgICAgICAgICAgICAgciA9IHRoaXMuRi5tdWwociwgdGhpcy53W2ldKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMucm9vdHNbaV0gPSByb290c2k7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBhZGQoYSwgYikge1xuICAgICAgICBjb25zdCBtID0gTWF0aC5tYXgoYS5sZW5ndGgsIGIubGVuZ3RoKTtcbiAgICAgICAgY29uc3QgcmVzID0gbmV3IEFycmF5KG0pO1xuICAgICAgICBmb3IgKGxldCBpPTA7IGk8bTsgaSsrKSB7XG4gICAgICAgICAgICByZXNbaV0gPSB0aGlzLkYuYWRkKGFbaV0gfHwgdGhpcy5GLnplcm8sIGJbaV0gfHwgdGhpcy5GLnplcm8pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLnJlZHVjZShyZXMpO1xuICAgIH1cblxuICAgIGRvdWJsZShhKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmFkZChhLGEpO1xuICAgIH1cblxuICAgIHN1YihhLCBiKSB7XG4gICAgICAgIGNvbnN0IG0gPSBNYXRoLm1heChhLmxlbmd0aCwgYi5sZW5ndGgpO1xuICAgICAgICBjb25zdCByZXMgPSBuZXcgQXJyYXkobSk7XG4gICAgICAgIGZvciAobGV0IGk9MDsgaTxtOyBpKyspIHtcbiAgICAgICAgICAgIHJlc1tpXSA9IHRoaXMuRi5zdWIoYVtpXSB8fCB0aGlzLkYuemVybywgYltpXSB8fCB0aGlzLkYuemVybyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMucmVkdWNlKHJlcyk7XG4gICAgfVxuXG4gICAgbXVsU2NhbGFyKHAsIGIpIHtcbiAgICAgICAgaWYgKHRoaXMuRi5lcShiLCB0aGlzLkYuemVybykpIHJldHVybiBbXTtcbiAgICAgICAgaWYgKHRoaXMuRi5lcShiLCB0aGlzLkYub25lKSkgcmV0dXJuIHA7XG4gICAgICAgIGNvbnN0IHJlcyA9IG5ldyBBcnJheShwLmxlbmd0aCk7XG4gICAgICAgIGZvciAobGV0IGk9MDsgaTxwLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICByZXNbaV0gPSB0aGlzLkYubXVsKHBbaV0sIGIpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXM7XG4gICAgfVxuXG5cblxuICAgIG11bChhLCBiKSB7XG4gICAgICAgIGlmIChhLmxlbmd0aCA9PSAwKSByZXR1cm4gW107XG4gICAgICAgIGlmIChiLmxlbmd0aCA9PSAwKSByZXR1cm4gW107XG4gICAgICAgIGlmIChhLmxlbmd0aCA9PSAxKSByZXR1cm4gdGhpcy5tdWxTY2FsYXIoYiwgYVswXSk7XG4gICAgICAgIGlmIChiLmxlbmd0aCA9PSAxKSByZXR1cm4gdGhpcy5tdWxTY2FsYXIoYSwgYlswXSk7XG5cbiAgICAgICAgaWYgKGIubGVuZ3RoID4gYS5sZW5ndGgpIHtcbiAgICAgICAgICAgIFtiLCBhXSA9IFthLCBiXTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICgoYi5sZW5ndGggPD0gMikgfHwgKGIubGVuZ3RoIDwgbG9nMiQyKGEubGVuZ3RoKSkpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLm11bE5vcm1hbChhLGIpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMubXVsRkZUKGEsYik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBtdWxOb3JtYWwoYSwgYikge1xuICAgICAgICBsZXQgcmVzID0gW107XG4gICAgICAgIGZvciAobGV0IGk9MDsgaTxiLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICByZXMgPSB0aGlzLmFkZChyZXMsIHRoaXMuc2NhbGVYKHRoaXMubXVsU2NhbGFyKGEsIGJbaV0pLCBpKSApO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXM7XG4gICAgfVxuXG4gICAgbXVsRkZUKGEsYikge1xuICAgICAgICBjb25zdCBsb25nZXN0TiA9IE1hdGgubWF4KGEubGVuZ3RoLCBiLmxlbmd0aCk7XG4gICAgICAgIGNvbnN0IGJpdHNSZXN1bHQgPSBsb2cyJDIobG9uZ2VzdE4tMSkrMjtcbiAgICAgICAgdGhpcy5fc2V0Um9vdHMoYml0c1Jlc3VsdCk7XG5cbiAgICAgICAgY29uc3QgbSA9IDEgPDwgYml0c1Jlc3VsdDtcbiAgICAgICAgY29uc3QgZWEgPSB0aGlzLmV4dGVuZChhLG0pO1xuICAgICAgICBjb25zdCBlYiA9IHRoaXMuZXh0ZW5kKGIsbSk7XG5cbiAgICAgICAgY29uc3QgdGEgPSBfX2ZmdCQxKHRoaXMsIGVhLCBiaXRzUmVzdWx0LCAwLCAxKTtcbiAgICAgICAgY29uc3QgdGIgPSBfX2ZmdCQxKHRoaXMsIGViLCBiaXRzUmVzdWx0LCAwLCAxKTtcblxuICAgICAgICBjb25zdCB0cmVzID0gbmV3IEFycmF5KG0pO1xuXG4gICAgICAgIGZvciAobGV0IGk9MDsgaTxtOyBpKyspIHtcbiAgICAgICAgICAgIHRyZXNbaV0gPSB0aGlzLkYubXVsKHRhW2ldLCB0YltpXSk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCByZXMgPSBfX2ZmdCQxKHRoaXMsIHRyZXMsIGJpdHNSZXN1bHQsIDAsIDEpO1xuXG4gICAgICAgIGNvbnN0IHR3b2ludm0gPSB0aGlzLkYuaW52KCB0aGlzLkYubXVsU2NhbGFyKHRoaXMuRi5vbmUsIG0pICk7XG4gICAgICAgIGNvbnN0IHJlc24gPSBuZXcgQXJyYXkobSk7XG4gICAgICAgIGZvciAobGV0IGk9MDsgaTxtOyBpKyspIHtcbiAgICAgICAgICAgIHJlc25baV0gPSB0aGlzLkYubXVsKHJlc1sobS1pKSVtXSwgdHdvaW52bSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5yZWR1Y2UocmVzbik7XG4gICAgfVxuXG5cblxuICAgIHNxdWFyZShhKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm11bChhLGEpO1xuICAgIH1cblxuICAgIHNjYWxlWChwLCBuKSB7XG4gICAgICAgIGlmIChuPT0wKSB7XG4gICAgICAgICAgICByZXR1cm4gcDtcbiAgICAgICAgfSBlbHNlIGlmIChuPjApIHtcbiAgICAgICAgICAgIGNvbnN0IHogPSBuZXcgQXJyYXkobikuZmlsbCh0aGlzLkYuemVybyk7XG4gICAgICAgICAgICByZXR1cm4gei5jb25jYXQocCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoLW4gPj0gcC5sZW5ndGgpIHJldHVybiBbXTtcbiAgICAgICAgICAgIHJldHVybiBwLnNsaWNlKC1uKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGV2YWwyKHAsIHgpIHtcbiAgICAgICAgbGV0IHYgPSB0aGlzLkYuemVybztcbiAgICAgICAgbGV0IGl4ID0gdGhpcy5GLm9uZTtcbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPHAubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIHYgPSB0aGlzLkYuYWRkKHYsIHRoaXMuRi5tdWwocFtpXSwgaXgpKTtcbiAgICAgICAgICAgIGl4ID0gdGhpcy5GLm11bChpeCwgeCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHY7XG4gICAgfVxuXG4gICAgZXZhbHVhdGUocCx4KSB7XG4gICAgICAgIGNvbnN0IEYgPSB0aGlzLkY7XG4gICAgICAgIGlmIChwLmxlbmd0aCA9PSAwKSByZXR1cm4gRi56ZXJvO1xuICAgICAgICBjb25zdCBtID0gdGhpcy5fbmV4dDJQb3dlcihwLmxlbmd0aCk7XG4gICAgICAgIGNvbnN0IGVwID0gdGhpcy5leHRlbmQocCwgbSk7XG5cbiAgICAgICAgcmV0dXJuIF9ldmFsKGVwLCB4LCAwLCAxLCBtKTtcblxuICAgICAgICBmdW5jdGlvbiBfZXZhbChwLCB4LCBvZmZzZXQsIHN0ZXAsIG4pIHtcbiAgICAgICAgICAgIGlmIChuPT0xKSByZXR1cm4gcFtvZmZzZXRdO1xuICAgICAgICAgICAgY29uc3QgbmV3WCA9IEYuc3F1YXJlKHgpO1xuICAgICAgICAgICAgY29uc3QgcmVzPSBGLmFkZChcbiAgICAgICAgICAgICAgICBfZXZhbChwLCBuZXdYLCBvZmZzZXQsIHN0ZXAgPDwgMSwgbiA+PiAxKSxcbiAgICAgICAgICAgICAgICBGLm11bChcbiAgICAgICAgICAgICAgICAgICAgeCxcbiAgICAgICAgICAgICAgICAgICAgX2V2YWwocCwgbmV3WCwgb2Zmc2V0K3N0ZXAgLCBzdGVwIDw8IDEsIG4gPj4gMSkpKTtcbiAgICAgICAgICAgIHJldHVybiByZXM7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBsYWdyYW5nZShwb2ludHMpIHtcbiAgICAgICAgbGV0IHJvb3RzID0gW3RoaXMuRi5vbmVdO1xuICAgICAgICBmb3IgKGxldCBpPTA7IGk8cG9pbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICByb290cyA9IHRoaXMubXVsKHJvb3RzLCBbdGhpcy5GLm5lZyhwb2ludHNbaV1bMF0pLCB0aGlzLkYub25lXSk7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgc3VtID0gW107XG4gICAgICAgIGZvciAobGV0IGk9MDsgaTxwb2ludHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGxldCBtcG9sID0gdGhpcy5ydWZmaW5pKHJvb3RzLCBwb2ludHNbaV1bMF0pO1xuICAgICAgICAgICAgY29uc3QgZmFjdG9yID1cbiAgICAgICAgICAgICAgICB0aGlzLkYubXVsKFxuICAgICAgICAgICAgICAgICAgICB0aGlzLkYuaW52KHRoaXMuZXZhbHVhdGUobXBvbCwgcG9pbnRzW2ldWzBdKSksXG4gICAgICAgICAgICAgICAgICAgIHBvaW50c1tpXVsxXSk7XG4gICAgICAgICAgICBtcG9sID0gdGhpcy5tdWxTY2FsYXIobXBvbCwgZmFjdG9yKTtcbiAgICAgICAgICAgIHN1bSA9IHRoaXMuYWRkKHN1bSwgbXBvbCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHN1bTtcbiAgICB9XG5cblxuICAgIGZmdChwKSB7XG4gICAgICAgIGlmIChwLmxlbmd0aCA8PSAxKSByZXR1cm4gcDtcbiAgICAgICAgY29uc3QgYml0cyA9IGxvZzIkMihwLmxlbmd0aC0xKSsxO1xuICAgICAgICB0aGlzLl9zZXRSb290cyhiaXRzKTtcblxuICAgICAgICBjb25zdCBtID0gMSA8PCBiaXRzO1xuICAgICAgICBjb25zdCBlcCA9IHRoaXMuZXh0ZW5kKHAsIG0pO1xuICAgICAgICBjb25zdCByZXMgPSBfX2ZmdCQxKHRoaXMsIGVwLCBiaXRzLCAwLCAxKTtcbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG5cbiAgICBmZnQyKHApIHtcbiAgICAgICAgaWYgKHAubGVuZ3RoIDw9IDEpIHJldHVybiBwO1xuICAgICAgICBjb25zdCBiaXRzID0gbG9nMiQyKHAubGVuZ3RoLTEpKzE7XG4gICAgICAgIHRoaXMuX3NldFJvb3RzKGJpdHMpO1xuXG4gICAgICAgIGNvbnN0IG0gPSAxIDw8IGJpdHM7XG4gICAgICAgIGNvbnN0IGVwID0gdGhpcy5leHRlbmQocCwgbSk7XG4gICAgICAgIF9fYml0UmV2ZXJzZShlcCwgYml0cyk7XG4gICAgICAgIGNvbnN0IHJlcyA9IF9fZmZ0Mih0aGlzLCBlcCwgYml0cyk7XG4gICAgICAgIHJldHVybiByZXM7XG4gICAgfVxuXG5cbiAgICBpZmZ0KHApIHtcblxuICAgICAgICBpZiAocC5sZW5ndGggPD0gMSkgcmV0dXJuIHA7XG4gICAgICAgIGNvbnN0IGJpdHMgPSBsb2cyJDIocC5sZW5ndGgtMSkrMTtcbiAgICAgICAgdGhpcy5fc2V0Um9vdHMoYml0cyk7XG4gICAgICAgIGNvbnN0IG0gPSAxIDw8IGJpdHM7XG4gICAgICAgIGNvbnN0IGVwID0gdGhpcy5leHRlbmQocCwgbSk7XG4gICAgICAgIGNvbnN0IHJlcyA9ICBfX2ZmdCQxKHRoaXMsIGVwLCBiaXRzLCAwLCAxKTtcblxuICAgICAgICBjb25zdCB0d29pbnZtID0gdGhpcy5GLmludiggdGhpcy5GLm11bFNjYWxhcih0aGlzLkYub25lLCBtKSApO1xuICAgICAgICBjb25zdCByZXNuID0gbmV3IEFycmF5KG0pO1xuICAgICAgICBmb3IgKGxldCBpPTA7IGk8bTsgaSsrKSB7XG4gICAgICAgICAgICByZXNuW2ldID0gdGhpcy5GLm11bChyZXNbKG0taSklbV0sIHR3b2ludm0pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJlc247XG5cbiAgICB9XG5cblxuICAgIGlmZnQyKHApIHtcblxuICAgICAgICBpZiAocC5sZW5ndGggPD0gMSkgcmV0dXJuIHA7XG4gICAgICAgIGNvbnN0IGJpdHMgPSBsb2cyJDIocC5sZW5ndGgtMSkrMTtcbiAgICAgICAgdGhpcy5fc2V0Um9vdHMoYml0cyk7XG4gICAgICAgIGNvbnN0IG0gPSAxIDw8IGJpdHM7XG4gICAgICAgIGNvbnN0IGVwID0gdGhpcy5leHRlbmQocCwgbSk7XG4gICAgICAgIF9fYml0UmV2ZXJzZShlcCwgYml0cyk7XG4gICAgICAgIGNvbnN0IHJlcyA9ICBfX2ZmdDIodGhpcywgZXAsIGJpdHMpO1xuXG4gICAgICAgIGNvbnN0IHR3b2ludm0gPSB0aGlzLkYuaW52KCB0aGlzLkYubXVsU2NhbGFyKHRoaXMuRi5vbmUsIG0pICk7XG4gICAgICAgIGNvbnN0IHJlc24gPSBuZXcgQXJyYXkobSk7XG4gICAgICAgIGZvciAobGV0IGk9MDsgaTxtOyBpKyspIHtcbiAgICAgICAgICAgIHJlc25baV0gPSB0aGlzLkYubXVsKHJlc1sobS1pKSVtXSwgdHdvaW52bSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcmVzbjtcblxuICAgIH1cblxuICAgIF9mZnQocGFsbCwgYml0cywgb2Zmc2V0LCBzdGVwKSB7XG5cbiAgICAgICAgY29uc3QgbiA9IDEgPDwgYml0cztcbiAgICAgICAgaWYgKG49PTEpIHtcbiAgICAgICAgICAgIHJldHVybiBbIHBhbGxbb2Zmc2V0XSBdO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgbmRpdjIgPSBuID4+IDE7XG4gICAgICAgIGNvbnN0IHAxID0gdGhpcy5fZmZ0KHBhbGwsIGJpdHMtMSwgb2Zmc2V0LCBzdGVwKjIpO1xuICAgICAgICBjb25zdCBwMiA9IHRoaXMuX2ZmdChwYWxsLCBiaXRzLTEsIG9mZnNldCtzdGVwLCBzdGVwKjIpO1xuXG4gICAgICAgIGNvbnN0IG91dCA9IG5ldyBBcnJheShuKTtcblxuICAgICAgICBsZXQgbT0gdGhpcy5GLm9uZTtcbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPG5kaXYyOyBpKyspIHtcbiAgICAgICAgICAgIG91dFtpXSA9IHRoaXMuRi5hZGQocDFbaV0sIHRoaXMuRi5tdWwobSwgcDJbaV0pKTtcbiAgICAgICAgICAgIG91dFtpK25kaXYyXSA9IHRoaXMuRi5zdWIocDFbaV0sIHRoaXMuRi5tdWwobSwgcDJbaV0pKTtcbiAgICAgICAgICAgIG0gPSB0aGlzLkYubXVsKG0sIHRoaXMud1tiaXRzXSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gb3V0O1xuICAgIH1cblxuICAgIGV4dGVuZChwLCBlKSB7XG4gICAgICAgIGlmIChlID09IHAubGVuZ3RoKSByZXR1cm4gcDtcbiAgICAgICAgY29uc3QgeiA9IG5ldyBBcnJheShlLXAubGVuZ3RoKS5maWxsKHRoaXMuRi56ZXJvKTtcblxuICAgICAgICByZXR1cm4gcC5jb25jYXQoeik7XG4gICAgfVxuXG4gICAgcmVkdWNlKHApIHtcbiAgICAgICAgaWYgKHAubGVuZ3RoID09IDApIHJldHVybiBwO1xuICAgICAgICBpZiAoISB0aGlzLkYuZXEocFtwLmxlbmd0aC0xXSwgdGhpcy5GLnplcm8pICkgcmV0dXJuIHA7XG4gICAgICAgIGxldCBpPXAubGVuZ3RoLTE7XG4gICAgICAgIHdoaWxlKCBpPjAgJiYgdGhpcy5GLmVxKHBbaV0sIHRoaXMuRi56ZXJvKSApIGktLTtcbiAgICAgICAgcmV0dXJuIHAuc2xpY2UoMCwgaSsxKTtcbiAgICB9XG5cbiAgICBlcShhLCBiKSB7XG4gICAgICAgIGNvbnN0IHBhID0gdGhpcy5yZWR1Y2UoYSk7XG4gICAgICAgIGNvbnN0IHBiID0gdGhpcy5yZWR1Y2UoYik7XG5cbiAgICAgICAgaWYgKHBhLmxlbmd0aCAhPSBwYi5sZW5ndGgpIHJldHVybiBmYWxzZTtcbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPHBiLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBpZiAoIXRoaXMuRi5lcShwYVtpXSwgcGJbaV0pKSByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBydWZmaW5pKHAsIHIpIHtcbiAgICAgICAgY29uc3QgcmVzID0gbmV3IEFycmF5KHAubGVuZ3RoLTEpO1xuICAgICAgICByZXNbcmVzLmxlbmd0aC0xXSA9IHBbcC5sZW5ndGgtMV07XG4gICAgICAgIGZvciAobGV0IGkgPSByZXMubGVuZ3RoLTI7IGk+PTA7IGktLSkge1xuICAgICAgICAgICAgcmVzW2ldID0gdGhpcy5GLmFkZCh0aGlzLkYubXVsKHJlc1tpKzFdLCByKSwgcFtpKzFdKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH1cblxuICAgIF9uZXh0MlBvd2VyKHYpIHtcbiAgICAgICAgdi0tO1xuICAgICAgICB2IHw9IHYgPj4gMTtcbiAgICAgICAgdiB8PSB2ID4+IDI7XG4gICAgICAgIHYgfD0gdiA+PiA0O1xuICAgICAgICB2IHw9IHYgPj4gODtcbiAgICAgICAgdiB8PSB2ID4+IDE2O1xuICAgICAgICB2Kys7XG4gICAgICAgIHJldHVybiB2O1xuICAgIH1cblxuICAgIHRvU3RyaW5nKHApIHtcbiAgICAgICAgY29uc3QgYXAgPSB0aGlzLm5vcm1hbGl6ZShwKTtcbiAgICAgICAgbGV0IFMgPSBcIlwiO1xuICAgICAgICBmb3IgKGxldCBpPWFwLmxlbmd0aC0xOyBpPj0wOyBpLS0pIHtcbiAgICAgICAgICAgIGlmICghdGhpcy5GLmVxKHBbaV0sIHRoaXMuRi56ZXJvKSkge1xuICAgICAgICAgICAgICAgIGlmIChTIT1cIlwiKSBTICs9IFwiICsgXCI7XG4gICAgICAgICAgICAgICAgUyA9IFMgKyBwW2ldLnRvU3RyaW5nKDEwKTtcbiAgICAgICAgICAgICAgICBpZiAoaT4wKSB7XG4gICAgICAgICAgICAgICAgICAgIFMgPSBTICsgXCJ4XCI7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpPjEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIFMgPSBTICsgXCJeXCIgK2k7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFM7XG4gICAgfVxuXG4gICAgbm9ybWFsaXplKHApIHtcbiAgICAgICAgY29uc3QgcmVzICA9IG5ldyBBcnJheShwLmxlbmd0aCk7XG4gICAgICAgIGZvciAobGV0IGk9MDsgaTxwLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICByZXNbaV0gPSB0aGlzLkYubm9ybWFsaXplKHBbaV0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXM7XG4gICAgfVxuXG5cbiAgICBfcmVjaXByb2NhbChwLCBiaXRzKSB7XG4gICAgICAgIGNvbnN0IGsgPSAxIDw8IGJpdHM7XG4gICAgICAgIGlmIChrPT0xKSB7XG4gICAgICAgICAgICByZXR1cm4gWyB0aGlzLkYuaW52KHBbMF0pIF07XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgbnAgPSB0aGlzLnNjYWxlWChwLCAtay8yKTtcbiAgICAgICAgY29uc3QgcSA9IHRoaXMuX3JlY2lwcm9jYWwobnAsIGJpdHMtMSk7XG4gICAgICAgIGNvbnN0IGEgPSB0aGlzLnNjYWxlWCh0aGlzLmRvdWJsZShxKSwgMyprLzItMik7XG4gICAgICAgIGNvbnN0IGIgPSB0aGlzLm11bCggdGhpcy5zcXVhcmUocSksIHApO1xuXG4gICAgICAgIHJldHVybiB0aGlzLnNjYWxlWCh0aGlzLnN1YihhLGIpLCAgIC0oay0yKSk7XG4gICAgfVxuXG4gICAgLy8gZGl2aWRlcyB4Xm0gLyB2XG4gICAgX2RpdjIobSwgdikge1xuICAgICAgICBjb25zdCBrYml0cyA9IGxvZzIkMih2Lmxlbmd0aC0xKSsxO1xuICAgICAgICBjb25zdCBrID0gMSA8PCBrYml0cztcblxuICAgICAgICBjb25zdCBzY2FsZVYgPSBrIC0gdi5sZW5ndGg7XG5cbiAgICAgICAgLy8gcmVjID0geF4oayAtIDIpIC8gdiogeF5zY2FsZVYgPT5cbiAgICAgICAgLy8gcmVjID0geF4oay0yLXNjYWxlVikvIHZcbiAgICAgICAgLy9cbiAgICAgICAgLy8gcmVzID0geF5tL3YgPSB4XihtICsgKDIqay0yIC0gc2NhbGVWKSAtICgyKmstMiAtIHNjYWxlVikpIC92ID0+XG4gICAgICAgIC8vIHJlcyA9IHJlYyAqIHheKG0gLSAoMiprLTIgLSBzY2FsZVYpKSA9PlxuICAgICAgICAvLyByZXMgPSByZWMgKiB4XihtIC0gMiprICsgMiArIHNjYWxlVilcblxuICAgICAgICBjb25zdCByZWMgPSB0aGlzLl9yZWNpcHJvY2FsKHRoaXMuc2NhbGVYKHYsIHNjYWxlViksIGtiaXRzKTtcbiAgICAgICAgY29uc3QgcmVzID0gdGhpcy5zY2FsZVgocmVjLCBtIC0gMiprICsgMiArIHNjYWxlVik7XG5cbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG5cbiAgICBkaXYoX3UsIF92KSB7XG4gICAgICAgIGlmIChfdS5sZW5ndGggPCBfdi5sZW5ndGgpIHJldHVybiBbXTtcbiAgICAgICAgY29uc3Qga2JpdHMgPSBsb2cyJDIoX3YubGVuZ3RoLTEpKzE7XG4gICAgICAgIGNvbnN0IGsgPSAxIDw8IGtiaXRzO1xuXG4gICAgICAgIGNvbnN0IHUgPSB0aGlzLnNjYWxlWChfdSwgay1fdi5sZW5ndGgpO1xuICAgICAgICBjb25zdCB2ID0gdGhpcy5zY2FsZVgoX3YsIGstX3YubGVuZ3RoKTtcblxuICAgICAgICBjb25zdCBuID0gdi5sZW5ndGgtMTtcbiAgICAgICAgbGV0IG0gPSB1Lmxlbmd0aC0xO1xuXG4gICAgICAgIGNvbnN0IHMgPSB0aGlzLl9yZWNpcHJvY2FsKHYsIGtiaXRzKTtcbiAgICAgICAgbGV0IHQ7XG4gICAgICAgIGlmIChtPjIqbikge1xuICAgICAgICAgICAgdCA9IHRoaXMuc3ViKHRoaXMuc2NhbGVYKFt0aGlzLkYub25lXSwgMipuKSwgdGhpcy5tdWwocywgdikpO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IHEgPSBbXTtcbiAgICAgICAgbGV0IHJlbSA9IHU7XG4gICAgICAgIGxldCB1cywgdXQ7XG4gICAgICAgIGxldCBmaW5pc2ggPSBmYWxzZTtcblxuICAgICAgICB3aGlsZSAoIWZpbmlzaCkge1xuICAgICAgICAgICAgdXMgPSB0aGlzLm11bChyZW0sIHMpO1xuICAgICAgICAgICAgcSA9IHRoaXMuYWRkKHEsIHRoaXMuc2NhbGVYKHVzLCAtMipuKSk7XG5cbiAgICAgICAgICAgIGlmICggbSA+IDIqbiApIHtcbiAgICAgICAgICAgICAgICB1dCA9IHRoaXMubXVsKHJlbSwgdCk7XG4gICAgICAgICAgICAgICAgcmVtID0gdGhpcy5zY2FsZVgodXQsIC0yKm4pO1xuICAgICAgICAgICAgICAgIG0gPSByZW0ubGVuZ3RoLTE7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGZpbmlzaCA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcTtcbiAgICB9XG5cblxuICAgIC8vIHJldHVybnMgdGhlIGl0aCBudGgtcm9vdCBvZiBvbmVcbiAgICBvbmVSb290KG4sIGkpIHtcbiAgICAgICAgbGV0IG5iaXRzID0gbG9nMiQyKG4tMSkrMTtcbiAgICAgICAgbGV0IHJlcyA9IHRoaXMuRi5vbmU7XG4gICAgICAgIGxldCByID0gaTtcblxuICAgICAgICBpZihpPj1uKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJHaXZlbiAnaScgc2hvdWxkIGJlIGxvd2VyIHRoYW4gJ24nXCIpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKDE8PG5iaXRzICE9PSBuKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEludGVybmFsIGVycmxyOiAke259IHNob3VsZCBlcXVhbCAkezE8PG5iaXRzfWApO1xuICAgICAgICB9XG5cbiAgICAgICAgd2hpbGUgKHI+MCkge1xuICAgICAgICAgICAgaWYgKHIgJiAxID09IDEpIHtcbiAgICAgICAgICAgICAgICByZXMgPSB0aGlzLkYubXVsKHJlcywgdGhpcy53W25iaXRzXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByID0gciA+PiAxO1xuICAgICAgICAgICAgbmJpdHMgLS07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG5cbiAgICBjb21wdXRlVmFuaXNoaW5nUG9saW5vbWlhbChiaXRzLCB0KSB7XG4gICAgICAgIGNvbnN0IG0gPSAxIDw8IGJpdHM7XG4gICAgICAgIHJldHVybiB0aGlzLkYuc3ViKHRoaXMuRi5wb3codCwgbSksIHRoaXMuRi5vbmUpO1xuICAgIH1cblxuICAgIGV2YWx1YXRlTGFncmFuZ2VQb2x5bm9taWFscyhiaXRzLCB0KSB7XG4gICAgICAgIGNvbnN0IG09IDEgPDwgYml0cztcbiAgICAgICAgY29uc3QgdG0gPSB0aGlzLkYucG93KHQsIG0pO1xuICAgICAgICBjb25zdCB1PSBuZXcgQXJyYXkobSkuZmlsbCh0aGlzLkYuemVybyk7XG4gICAgICAgIHRoaXMuX3NldFJvb3RzKGJpdHMpO1xuICAgICAgICBjb25zdCBvbWVnYSA9IHRoaXMud1tiaXRzXTtcblxuICAgICAgICBpZiAodGhpcy5GLmVxKHRtLCB0aGlzLkYub25lKSkge1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBtOyBpKyspIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5GLmVxKHRoaXMucm9vdHNbYml0c11bMF0sdCkpIHsgLy8gaS5lLiwgdCBlcXVhbHMgb21lZ2FeaVxuICAgICAgICAgICAgICAgICAgICB1W2ldID0gdGhpcy5GLm9uZTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgeiA9IHRoaXMuRi5zdWIodG0sIHRoaXMuRi5vbmUpO1xuICAgICAgICAvLyAgICAgICAgbGV0IGwgPSB0aGlzLkYubXVsKHosICB0aGlzLkYucG93KHRoaXMuRi50d29pbnYsIG0pKTtcbiAgICAgICAgbGV0IGwgPSB0aGlzLkYubXVsKHosICB0aGlzLkYuaW52KHRoaXMuRi5lKG0pKSk7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbTsgaSsrKSB7XG4gICAgICAgICAgICB1W2ldID0gdGhpcy5GLm11bChsLCB0aGlzLkYuaW52KHRoaXMuRi5zdWIodCx0aGlzLnJvb3RzW2JpdHNdW2ldKSkpO1xuICAgICAgICAgICAgbCA9IHRoaXMuRi5tdWwobCwgb21lZ2EpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHU7XG4gICAgfVxuXG4gICAgbG9nMihWKSB7XG4gICAgICAgIHJldHVybiBsb2cyJDIoVik7XG4gICAgfVxufVxuXG5mdW5jdGlvbiBsb2cyJDIoIFYgKVxue1xuICAgIHJldHVybiggKCAoIFYgJiAweEZGRkYwMDAwICkgIT09IDAgPyAoIFYgJj0gMHhGRkZGMDAwMCwgMTYgKSA6IDAgKSB8ICggKCBWICYgMHhGRjAwRkYwMCApICE9PSAwID8gKCBWICY9IDB4RkYwMEZGMDAsIDggKSA6IDAgKSB8ICggKCBWICYgMHhGMEYwRjBGMCApICE9PSAwID8gKCBWICY9IDB4RjBGMEYwRjAsIDQgKSA6IDAgKSB8ICggKCBWICYgMHhDQ0NDQ0NDQyApICE9PSAwID8gKCBWICY9IDB4Q0NDQ0NDQ0MsIDIgKSA6IDAgKSB8ICggKCBWICYgMHhBQUFBQUFBQSApICE9PSAwICkgKTtcbn1cblxuXG5mdW5jdGlvbiBfX2ZmdCQxKFBGLCBwYWxsLCBiaXRzLCBvZmZzZXQsIHN0ZXApIHtcblxuICAgIGNvbnN0IG4gPSAxIDw8IGJpdHM7XG4gICAgaWYgKG49PTEpIHtcbiAgICAgICAgcmV0dXJuIFsgcGFsbFtvZmZzZXRdIF07XG4gICAgfSBlbHNlIGlmIChuPT0yKSB7XG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICBQRi5GLmFkZChwYWxsW29mZnNldF0sIHBhbGxbb2Zmc2V0ICsgc3RlcF0pLFxuICAgICAgICAgICAgUEYuRi5zdWIocGFsbFtvZmZzZXRdLCBwYWxsW29mZnNldCArIHN0ZXBdKV07XG4gICAgfVxuXG4gICAgY29uc3QgbmRpdjIgPSBuID4+IDE7XG4gICAgY29uc3QgcDEgPSBfX2ZmdCQxKFBGLCBwYWxsLCBiaXRzLTEsIG9mZnNldCwgc3RlcCoyKTtcbiAgICBjb25zdCBwMiA9IF9fZmZ0JDEoUEYsIHBhbGwsIGJpdHMtMSwgb2Zmc2V0K3N0ZXAsIHN0ZXAqMik7XG5cbiAgICBjb25zdCBvdXQgPSBuZXcgQXJyYXkobik7XG5cbiAgICBmb3IgKGxldCBpPTA7IGk8bmRpdjI7IGkrKykge1xuICAgICAgICBvdXRbaV0gPSBQRi5GLmFkZChwMVtpXSwgUEYuRi5tdWwoUEYucm9vdHNbYml0c11baV0sIHAyW2ldKSk7XG4gICAgICAgIG91dFtpK25kaXYyXSA9IFBGLkYuc3ViKHAxW2ldLCBQRi5GLm11bChQRi5yb290c1tiaXRzXVtpXSwgcDJbaV0pKTtcbiAgICB9XG5cbiAgICByZXR1cm4gb3V0O1xufVxuXG5cbmZ1bmN0aW9uIF9fZmZ0MihQRiwgcGFsbCwgYml0cykge1xuXG4gICAgY29uc3QgbiA9IDEgPDwgYml0cztcbiAgICBpZiAobj09MSkge1xuICAgICAgICByZXR1cm4gWyBwYWxsWzBdIF07XG4gICAgfVxuXG4gICAgY29uc3QgbmRpdjIgPSBuID4+IDE7XG4gICAgY29uc3QgcDEgPSBfX2ZmdDIoUEYsIHBhbGwuc2xpY2UoMCwgbmRpdjIpLCBiaXRzLTEpO1xuICAgIGNvbnN0IHAyID0gX19mZnQyKFBGLCBwYWxsLnNsaWNlKG5kaXYyKSwgYml0cy0xKTtcblxuICAgIGNvbnN0IG91dCA9IG5ldyBBcnJheShuKTtcblxuICAgIGZvciAobGV0IGk9MDsgaTxuZGl2MjsgaSsrKSB7XG4gICAgICAgIG91dFtpXSA9IFBGLkYuYWRkKHAxW2ldLCBQRi5GLm11bChQRi5yb290c1tiaXRzXVtpXSwgcDJbaV0pKTtcbiAgICAgICAgb3V0W2krbmRpdjJdID0gUEYuRi5zdWIocDFbaV0sIFBGLkYubXVsKFBGLnJvb3RzW2JpdHNdW2ldLCBwMltpXSkpO1xuICAgIH1cblxuICAgIHJldHVybiBvdXQ7XG59XG5cbmNvbnN0IF9yZXZUYWJsZSQxID0gW107XG5mb3IgKGxldCBpPTA7IGk8MjU2OyBpKyspIHtcbiAgICBfcmV2VGFibGUkMVtpXSA9IF9yZXZTbG93JDEoaSwgOCk7XG59XG5cbmZ1bmN0aW9uIF9yZXZTbG93JDEoaWR4LCBiaXRzKSB7XG4gICAgbGV0IHJlcyA9MDtcbiAgICBsZXQgYSA9IGlkeDtcbiAgICBmb3IgKGxldCBpPTA7IGk8Yml0czsgaSsrKSB7XG4gICAgICAgIHJlcyA8PD0gMTtcbiAgICAgICAgcmVzID0gcmVzIHwgKGEgJjEpO1xuICAgICAgICBhID4+PTE7XG4gICAgfVxuICAgIHJldHVybiByZXM7XG59XG5cbmZ1bmN0aW9uIHJldihpZHgsIGJpdHMpIHtcbiAgICByZXR1cm4gKFxuICAgICAgICBfcmV2VGFibGUkMVtpZHggPj4+IDI0XSB8XG4gICAgICAgIChfcmV2VGFibGUkMVsoaWR4ID4+PiAxNikgJiAweEZGXSA8PCA4KSB8XG4gICAgICAgIChfcmV2VGFibGUkMVsoaWR4ID4+PiA4KSAmIDB4RkZdIDw8IDE2KSB8XG4gICAgICAgIChfcmV2VGFibGUkMVtpZHggJiAweEZGXSA8PCAyNClcbiAgICApID4+PiAoMzItYml0cyk7XG59XG5cbmZ1bmN0aW9uIF9fYml0UmV2ZXJzZShwLCBiaXRzKSB7XG4gICAgZm9yIChsZXQgaz0wOyBrPHAubGVuZ3RoOyBrKyspIHtcbiAgICAgICAgY29uc3QgciA9IHJldihrLCBiaXRzKTtcbiAgICAgICAgaWYgKHI+aykge1xuICAgICAgICAgICAgY29uc3QgdG1wPSBwW2tdO1xuICAgICAgICAgICAgcFtrXSA9IHBbcl07XG4gICAgICAgICAgICBwW3JdID0gdG1wO1xuICAgICAgICB9XG4gICAgfVxuXG59XG5cbi8qXG4gICAgQ29weXJpZ2h0IDIwMTggMGtpbXMgYXNzb2NpYXRpb24uXG5cbiAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBzbmFya2pzLlxuXG4gICAgc25hcmtqcyBpcyBhIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vclxuICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGVcbiAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbilcbiAgICBhbnkgbGF0ZXIgdmVyc2lvbi5cblxuICAgIHNuYXJranMgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFlcbiAgICBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3JcbiAgICBtb3JlIGRldGFpbHMuXG5cbiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZyB3aXRoXG4gICAgc25hcmtqcy4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cbiovXG5cblxuXG5mdW5jdGlvbiBtdWxTY2FsYXIoRiwgYmFzZSwgZSkge1xuICAgIGxldCByZXM7XG5cbiAgICBpZiAoaXNaZXJvJDEoZSkpIHJldHVybiBGLnplcm87XG5cbiAgICBjb25zdCBuID0gbmFmKGUpO1xuXG4gICAgaWYgKG5bbi5sZW5ndGgtMV0gPT0gMSkge1xuICAgICAgICByZXMgPSBiYXNlO1xuICAgIH0gZWxzZSBpZiAobltuLmxlbmd0aC0xXSA9PSAtMSkge1xuICAgICAgICByZXMgPSBGLm5lZyhiYXNlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJpbnZsYXVkIE5BRlwiKTtcbiAgICB9XG5cbiAgICBmb3IgKGxldCBpPW4ubGVuZ3RoLTI7IGk+PTA7IGktLSkge1xuXG4gICAgICAgIHJlcyA9IEYuZG91YmxlKHJlcyk7XG5cbiAgICAgICAgaWYgKG5baV0gPT0gMSkge1xuICAgICAgICAgICAgcmVzID0gRi5hZGQocmVzLCBiYXNlKTtcbiAgICAgICAgfSBlbHNlIGlmIChuW2ldID09IC0xKSB7XG4gICAgICAgICAgICByZXMgPSBGLnN1YihyZXMsIGJhc2UpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlcztcbn1cblxuXG4vKlxuZXhwb3J0cy5tdWxTY2FsYXIgPSAoRiwgYmFzZSwgZSkgPT57XG4gICAgbGV0IHJlcyA9IEYuemVybztcbiAgICBsZXQgcmVtID0gYmlnSW50KGUpO1xuICAgIGxldCBleHAgPSBiYXNlO1xuXG4gICAgd2hpbGUgKCEgcmVtLmVxKGJpZ0ludC56ZXJvKSkge1xuICAgICAgICBpZiAocmVtLmFuZChiaWdJbnQub25lKS5lcShiaWdJbnQub25lKSkge1xuICAgICAgICAgICAgcmVzID0gRi5hZGQocmVzLCBleHApO1xuICAgICAgICB9XG4gICAgICAgIGV4cCA9IEYuZG91YmxlKGV4cCk7XG4gICAgICAgIHJlbSA9IHJlbS5zaGlmdFJpZ2h0KDEpO1xuICAgIH1cblxuICAgIHJldHVybiByZXM7XG59O1xuKi9cblxuXG5mdW5jdGlvbiBleHAoRiwgYmFzZSwgZSkge1xuXG4gICAgaWYgKGlzWmVybyQxKGUpKSByZXR1cm4gRi5vbmU7XG5cbiAgICBjb25zdCBuID0gYml0cyhlKTtcblxuICAgIGlmIChuLmxlbmd0aD09MCkgcmV0dXJuIEYub25lO1xuXG4gICAgbGV0IHJlcyA9IGJhc2U7XG5cbiAgICBmb3IgKGxldCBpPW4ubGVuZ3RoLTI7IGk+PTA7IGktLSkge1xuXG4gICAgICAgIHJlcyA9IEYuc3F1YXJlKHJlcyk7XG5cbiAgICAgICAgaWYgKG5baV0pIHtcbiAgICAgICAgICAgIHJlcyA9IEYubXVsKHJlcywgYmFzZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcmVzO1xufVxuXG4vLyBDaGVjayBoZXJlOiBodHRwczovL2VwcmludC5pYWNyLm9yZy8yMDEyLzY4NS5wZGZcblxuZnVuY3Rpb24gYnVpbGRTcXJ0IChGKSB7XG4gICAgaWYgKChGLm0gJSAyKSA9PSAxKSB7XG4gICAgICAgIGlmIChlcShtb2QoRi5wLCA0KSwgMSApKSB7XG4gICAgICAgICAgICBpZiAoZXEobW9kKEYucCwgOCksIDEgKSkge1xuICAgICAgICAgICAgICAgIGlmIChlcShtb2QoRi5wLCAxNiksIDEgKSkge1xuICAgICAgICAgICAgICAgICAgICAvLyBhbGc3X211bGxlcihGKTtcbiAgICAgICAgICAgICAgICAgICAgYWxnNV90b25lbGxpU2hhbmtzKEYpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZXEobW9kKEYucCwgMTYpLCA5ICkpIHtcbiAgICAgICAgICAgICAgICAgICAgYWxnNF9rb25nKEYpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkZpZWxkIHdpdGhvdCBzcXJ0XCIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSBpZiAoZXEobW9kKEYucCwgOCksIDUgKSkge1xuICAgICAgICAgICAgICAgIGFsZzNfYXRraW4oRik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkZpZWxkIHdpdGhvdCBzcXJ0XCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKGVxKG1vZChGLnAsIDQpLCAzICkpIHtcbiAgICAgICAgICAgIGFsZzJfc2hhbmtzKEYpO1xuICAgICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgcG0ybW9kNCA9IG1vZChwb3coRi5wLCBGLm0vMiksIDQpO1xuICAgICAgICBpZiAocG0ybW9kNCA9PSAxKSB7XG4gICAgICAgICAgICBhbGcxMF9hZGooRik7XG4gICAgICAgIH0gZWxzZSBpZiAocG0ybW9kNCA9PSAzKSB7XG4gICAgICAgICAgICBhbGc5X2FkaihGKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGFsZzhfY29tcGxleChGKTtcbiAgICAgICAgfVxuXG4gICAgfVxufVxuXG5cbmZ1bmN0aW9uIGFsZzVfdG9uZWxsaVNoYW5rcyhGKSB7XG4gICAgRi5zcXJ0X3EgPSBwb3coRi5wLCBGLm0pO1xuXG4gICAgRi5zcXJ0X3MgPSAwO1xuICAgIEYuc3FydF90ID0gc3ViKEYuc3FydF9xLCAxKTtcblxuICAgIHdoaWxlICghaXNPZGQkNShGLnNxcnRfdCkpIHtcbiAgICAgICAgRi5zcXJ0X3MgPSBGLnNxcnRfcyArIDE7XG4gICAgICAgIEYuc3FydF90ID0gZGl2KEYuc3FydF90LCAyKTtcbiAgICB9XG5cbiAgICBsZXQgYzAgPSBGLm9uZTtcblxuICAgIHdoaWxlIChGLmVxKGMwLCBGLm9uZSkpIHtcbiAgICAgICAgY29uc3QgYyA9IEYucmFuZG9tKCk7XG4gICAgICAgIEYuc3FydF96ID0gRi5wb3coYywgRi5zcXJ0X3QpO1xuICAgICAgICBjMCA9IEYucG93KEYuc3FydF96LCAyICoqIChGLnNxcnRfcy0xKSApO1xuICAgIH1cblxuICAgIEYuc3FydF90bTFkMiA9IGRpdihzdWIoRi5zcXJ0X3QsIDEpLDIpO1xuXG4gICAgRi5zcXJ0ID0gZnVuY3Rpb24oYSkge1xuICAgICAgICBjb25zdCBGPXRoaXM7XG4gICAgICAgIGlmIChGLmlzWmVybyhhKSkgcmV0dXJuIEYuemVybztcbiAgICAgICAgbGV0IHcgPSBGLnBvdyhhLCBGLnNxcnRfdG0xZDIpO1xuICAgICAgICBjb25zdCBhMCA9IEYucG93KCBGLm11bChGLnNxdWFyZSh3KSwgYSksIDIgKiogKEYuc3FydF9zLTEpICk7XG4gICAgICAgIGlmIChGLmVxKGEwLCBGLm5lZ29uZSkpIHJldHVybiBudWxsO1xuXG4gICAgICAgIGxldCB2ID0gRi5zcXJ0X3M7XG4gICAgICAgIGxldCB4ID0gRi5tdWwoYSwgdyk7XG4gICAgICAgIGxldCBiID0gRi5tdWwoeCwgdyk7XG4gICAgICAgIGxldCB6ID0gRi5zcXJ0X3o7XG4gICAgICAgIHdoaWxlICghRi5lcShiLCBGLm9uZSkpIHtcbiAgICAgICAgICAgIGxldCBiMmsgPSBGLnNxdWFyZShiKTtcbiAgICAgICAgICAgIGxldCBrPTE7XG4gICAgICAgICAgICB3aGlsZSAoIUYuZXEoYjJrLCBGLm9uZSkpIHtcbiAgICAgICAgICAgICAgICBiMmsgPSBGLnNxdWFyZShiMmspO1xuICAgICAgICAgICAgICAgIGsrKztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdyA9IHo7XG4gICAgICAgICAgICBmb3IgKGxldCBpPTA7IGk8di1rLTE7IGkrKykge1xuICAgICAgICAgICAgICAgIHcgPSBGLnNxdWFyZSh3KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHogPSBGLnNxdWFyZSh3KTtcbiAgICAgICAgICAgIGIgPSBGLm11bChiLCB6KTtcbiAgICAgICAgICAgIHggPSBGLm11bCh4LCB3KTtcbiAgICAgICAgICAgIHYgPSBrO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBGLmdlcSh4LCBGLnplcm8pID8geCA6IEYubmVnKHgpO1xuICAgIH07XG59XG5cbmZ1bmN0aW9uIGFsZzRfa29uZyhGKSB7XG4gICAgRi5zcXJ0ID0gZnVuY3Rpb24oKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIlNxcnQgYWxnIDQgbm90IGltcGxlbWVudGVkXCIpO1xuICAgIH07XG59XG5cbmZ1bmN0aW9uIGFsZzNfYXRraW4oRikge1xuICAgIEYuc3FydCA9IGZ1bmN0aW9uKCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJTcXJ0IGFsZyAzIG5vdCBpbXBsZW1lbnRlZFwiKTtcbiAgICB9O1xufVxuXG5mdW5jdGlvbiBhbGcyX3NoYW5rcyhGKSB7XG5cbiAgICBGLnNxcnRfcSA9IHBvdyhGLnAsIEYubSk7XG4gICAgRi5zcXJ0X2UxID0gZGl2KCBzdWIoRi5zcXJ0X3EsIDMpICwgNCk7XG5cbiAgICBGLnNxcnQgPSBmdW5jdGlvbihhKSB7XG4gICAgICAgIGlmICh0aGlzLmlzWmVybyhhKSkgcmV0dXJuIHRoaXMuemVybztcblxuICAgICAgICAvLyBUZXN0IHRoYXQgaGF2ZSBzb2x1dGlvblxuICAgICAgICBjb25zdCBhMSA9IHRoaXMucG93KGEsIHRoaXMuc3FydF9lMSk7XG5cbiAgICAgICAgY29uc3QgYTAgPSB0aGlzLm11bCh0aGlzLnNxdWFyZShhMSksIGEpO1xuXG4gICAgICAgIGlmICggdGhpcy5lcShhMCwgdGhpcy5uZWdvbmUpICkgcmV0dXJuIG51bGw7XG5cbiAgICAgICAgY29uc3QgeCA9IHRoaXMubXVsKGExLCBhKTtcblxuICAgICAgICByZXR1cm4gRi5nZXEoeCwgRi56ZXJvKSA/IHggOiBGLm5lZyh4KTtcbiAgICB9O1xufVxuXG5mdW5jdGlvbiBhbGcxMF9hZGooRikge1xuICAgIEYuc3FydCA9IGZ1bmN0aW9uKCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJTcXJ0IGFsZyAxMCBub3QgaW1wbGVtZW50ZWRcIik7XG4gICAgfTtcbn1cblxuZnVuY3Rpb24gYWxnOV9hZGooRikge1xuICAgIEYuc3FydF9xID0gcG93KEYucCwgRi5tLzIpO1xuICAgIEYuc3FydF9lMzQgPSBkaXYoIHN1YihGLnNxcnRfcSwgMykgLCA0KTtcbiAgICBGLnNxcnRfZTEyID0gZGl2KCBzdWIoRi5zcXJ0X3EsIDEpICwgMik7XG5cbiAgICBGLmZyb2Jlbml1cyA9IGZ1bmN0aW9uKG4sIHgpIHtcbiAgICAgICAgaWYgKChuJTIpID09IDEpIHtcbiAgICAgICAgICAgIHJldHVybiBGLmNvbmp1Z2F0ZSh4KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB4O1xuICAgICAgICB9XG4gICAgfTtcblxuICAgIEYuc3FydCA9IGZ1bmN0aW9uKGEpIHtcbiAgICAgICAgY29uc3QgRiA9IHRoaXM7XG4gICAgICAgIGNvbnN0IGExID0gRi5wb3coYSwgRi5zcXJ0X2UzNCk7XG4gICAgICAgIGNvbnN0IGFsZmEgPSBGLm11bChGLnNxdWFyZShhMSksIGEpO1xuICAgICAgICBjb25zdCBhMCA9IEYubXVsKEYuZnJvYmVuaXVzKDEsIGFsZmEpLCBhbGZhKTtcbiAgICAgICAgaWYgKEYuZXEoYTAsIEYubmVnb25lKSkgcmV0dXJuIG51bGw7XG4gICAgICAgIGNvbnN0IHgwID0gRi5tdWwoYTEsIGEpO1xuICAgICAgICBsZXQgeDtcbiAgICAgICAgaWYgKEYuZXEoYWxmYSwgRi5uZWdvbmUpKSB7XG4gICAgICAgICAgICB4ID0gRi5tdWwoeDAsIFtGLkYuemVybywgRi5GLm9uZV0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgYiA9IEYucG93KEYuYWRkKEYub25lLCBhbGZhKSwgRi5zcXJ0X2UxMik7XG4gICAgICAgICAgICB4ID0gRi5tdWwoYiwgeDApO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBGLmdlcSh4LCBGLnplcm8pID8geCA6IEYubmVnKHgpO1xuICAgIH07XG59XG5cblxuZnVuY3Rpb24gYWxnOF9jb21wbGV4KEYpIHtcbiAgICBGLnNxcnQgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiU3FydCBhbGcgOCBub3QgaW1wbGVtZW50ZWRcIik7XG4gICAgfTtcbn1cblxuZnVuY3Rpb24gcXVhcnRlclJvdW5kKHN0LCBhLCBiLCBjLCBkKSB7XG5cbiAgICBzdFthXSA9IChzdFthXSArIHN0W2JdKSA+Pj4gMDtcbiAgICBzdFtkXSA9IChzdFtkXSBeIHN0W2FdKSA+Pj4gMDtcbiAgICBzdFtkXSA9ICgoc3RbZF0gPDwgMTYpIHwgKChzdFtkXT4+PjE2KSAmIDB4RkZGRikpID4+PiAwO1xuXG4gICAgc3RbY10gPSAoc3RbY10gKyBzdFtkXSkgPj4+IDA7XG4gICAgc3RbYl0gPSAoc3RbYl0gXiBzdFtjXSkgPj4+IDA7XG4gICAgc3RbYl0gPSAoKHN0W2JdIDw8IDEyKSB8ICgoc3RbYl0+Pj4yMCkgJiAweEZGRikpID4+PiAwO1xuXG4gICAgc3RbYV0gPSAoc3RbYV0gKyBzdFtiXSkgPj4+IDA7XG4gICAgc3RbZF0gPSAoc3RbZF0gXiBzdFthXSkgPj4+IDA7XG4gICAgc3RbZF0gPSAoKHN0W2RdIDw8IDgpIHwgKChzdFtkXT4+PjI0KSAmIDB4RkYpKSA+Pj4gMDtcblxuICAgIHN0W2NdID0gKHN0W2NdICsgc3RbZF0pID4+PiAwO1xuICAgIHN0W2JdID0gKHN0W2JdIF4gc3RbY10pID4+PiAwO1xuICAgIHN0W2JdID0gKChzdFtiXSA8PCA3KSB8ICgoc3RbYl0+Pj4yNSkgJiAweDdGKSkgPj4+IDA7XG59XG5cbmZ1bmN0aW9uIGRvdWJsZVJvdW5kKHN0KSB7XG4gICAgcXVhcnRlclJvdW5kKHN0LCAwLCA0LCA4LDEyKTtcbiAgICBxdWFydGVyUm91bmQoc3QsIDEsIDUsIDksMTMpO1xuICAgIHF1YXJ0ZXJSb3VuZChzdCwgMiwgNiwxMCwxNCk7XG4gICAgcXVhcnRlclJvdW5kKHN0LCAzLCA3LDExLDE1KTtcblxuICAgIHF1YXJ0ZXJSb3VuZChzdCwgMCwgNSwxMCwxNSk7XG4gICAgcXVhcnRlclJvdW5kKHN0LCAxLCA2LDExLDEyKTtcbiAgICBxdWFydGVyUm91bmQoc3QsIDIsIDcsIDgsMTMpO1xuICAgIHF1YXJ0ZXJSb3VuZChzdCwgMywgNCwgOSwxNCk7XG59XG5cbmNsYXNzIENoYUNoYSB7XG5cbiAgICBjb25zdHJ1Y3RvcihzZWVkKSB7XG4gICAgICAgIHNlZWQgPSBzZWVkIHx8IFswLDAsMCwwLDAsMCwwLDBdO1xuICAgICAgICB0aGlzLnN0YXRlID0gW1xuICAgICAgICAgICAgMHg2MTcwNzg2NSxcbiAgICAgICAgICAgIDB4MzMyMDY0NkUsXG4gICAgICAgICAgICAweDc5NjIyRDMyLFxuICAgICAgICAgICAgMHg2QjIwNjU3NCxcbiAgICAgICAgICAgIHNlZWRbMF0sXG4gICAgICAgICAgICBzZWVkWzFdLFxuICAgICAgICAgICAgc2VlZFsyXSxcbiAgICAgICAgICAgIHNlZWRbM10sXG4gICAgICAgICAgICBzZWVkWzRdLFxuICAgICAgICAgICAgc2VlZFs1XSxcbiAgICAgICAgICAgIHNlZWRbNl0sXG4gICAgICAgICAgICBzZWVkWzddLFxuICAgICAgICAgICAgMCxcbiAgICAgICAgICAgIDAsXG4gICAgICAgICAgICAwLFxuICAgICAgICAgICAgMFxuICAgICAgICBdO1xuICAgICAgICB0aGlzLmlkeCA9IDE2O1xuICAgICAgICB0aGlzLmJ1ZmYgPSBuZXcgQXJyYXkoMTYpO1xuICAgIH1cblxuICAgIG5leHRVMzIoKSB7XG4gICAgICAgIGlmICh0aGlzLmlkeCA9PSAxNikgdGhpcy51cGRhdGUoKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuYnVmZlt0aGlzLmlkeCsrXTtcbiAgICB9XG5cbiAgICBuZXh0VTY0KCkge1xuICAgICAgICByZXR1cm4gYWRkKG11bCh0aGlzLm5leHRVMzIoKSwgMHgxMDAwMDAwMDApLCB0aGlzLm5leHRVMzIoKSk7XG4gICAgfVxuXG4gICAgbmV4dEJvb2woKSB7XG4gICAgICAgIHJldHVybiAodGhpcy5uZXh0VTMyKCkgJiAxKSA9PSAxO1xuICAgIH1cblxuICAgIHVwZGF0ZSgpIHtcbiAgICAgICAgLy8gQ29weSB0aGUgc3RhdGVcbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPDE2OyBpKyspIHRoaXMuYnVmZltpXSA9IHRoaXMuc3RhdGVbaV07XG5cbiAgICAgICAgLy8gQXBwbHkgdGhlIHJvdW5kc1xuICAgICAgICBmb3IgKGxldCBpPTA7IGk8MTA7IGkrKykgZG91YmxlUm91bmQodGhpcy5idWZmKTtcblxuICAgICAgICAvLyBBZGQgdG8gdGhlIGluaXRpYWxcbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPDE2OyBpKyspIHRoaXMuYnVmZltpXSA9ICh0aGlzLmJ1ZmZbaV0gKyB0aGlzLnN0YXRlW2ldKSA+Pj4gMDtcblxuICAgICAgICB0aGlzLmlkeCA9IDA7XG5cbiAgICAgICAgdGhpcy5zdGF0ZVsxMl0gPSAodGhpcy5zdGF0ZVsxMl0gKyAxKSA+Pj4gMDtcbiAgICAgICAgaWYgKHRoaXMuc3RhdGVbMTJdICE9IDApIHJldHVybjtcbiAgICAgICAgdGhpcy5zdGF0ZVsxM10gPSAodGhpcy5zdGF0ZVsxM10gKyAxKSA+Pj4gMDtcbiAgICAgICAgaWYgKHRoaXMuc3RhdGVbMTNdICE9IDApIHJldHVybjtcbiAgICAgICAgdGhpcy5zdGF0ZVsxNF0gPSAodGhpcy5zdGF0ZVsxNF0gKyAxKSA+Pj4gMDtcbiAgICAgICAgaWYgKHRoaXMuc3RhdGVbMTRdICE9IDApIHJldHVybjtcbiAgICAgICAgdGhpcy5zdGF0ZVsxNV0gPSAodGhpcy5zdGF0ZVsxNV0gKyAxKSA+Pj4gMDtcbiAgICB9XG59XG5cbmZ1bmN0aW9uIGdldFJhbmRvbUJ5dGVzKG4pIHtcbiAgICBsZXQgYXJyYXkgPSBuZXcgVWludDhBcnJheShuKTtcbiAgICB7IC8vIEJyb3dzZXJcbiAgICAgICAgaWYgKHR5cGVvZiBnbG9iYWxUaGlzLmNyeXB0byAhPT0gXCJ1bmRlZmluZWRcIikgeyAvLyBTdXBwb3J0ZWRcbiAgICAgICAgICAgIGdsb2JhbFRoaXMuY3J5cHRvLmdldFJhbmRvbVZhbHVlcyhhcnJheSk7XG4gICAgICAgIH0gZWxzZSB7IC8vIGZhbGxiYWNrXG4gICAgICAgICAgICBmb3IgKGxldCBpPTA7IGk8bjsgaSsrKSB7XG4gICAgICAgICAgICAgICAgYXJyYXlbaV0gPSAoTWF0aC5yYW5kb20oKSo0Mjk0OTY3Mjk2KT4+PjA7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGFycmF5O1xufVxuXG5mdW5jdGlvbiBnZXRSYW5kb21TZWVkKCkge1xuICAgIGNvbnN0IGFyciA9IGdldFJhbmRvbUJ5dGVzKDMyKTtcbiAgICBjb25zdCBhcnJWID0gbmV3IFVpbnQzMkFycmF5KGFyci5idWZmZXIpO1xuICAgIGNvbnN0IHNlZWQgPSBbXTtcbiAgICBmb3IgKGxldCBpPTA7IGk8ODsgaSsrKSB7XG4gICAgICAgIHNlZWQucHVzaChhcnJWW2ldKTtcbiAgICB9XG4gICAgcmV0dXJuIHNlZWQ7XG59XG5cbmxldCB0aHJlYWRSbmcgPSBudWxsO1xuXG5mdW5jdGlvbiBnZXRUaHJlYWRSbmcoKSB7XG4gICAgaWYgKHRocmVhZFJuZykgcmV0dXJuIHRocmVhZFJuZztcbiAgICB0aHJlYWRSbmcgPSBuZXcgQ2hhQ2hhKGdldFJhbmRvbVNlZWQoKSk7XG4gICAgcmV0dXJuIHRocmVhZFJuZztcbn1cblxuLypcbiAgICBDb3B5cmlnaHQgMjAxOCAwa2ltcyBhc3NvY2lhdGlvbi5cblxuICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHNuYXJranMuXG5cbiAgICBzbmFya2pzIGlzIGEgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yXG4gICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZVxuICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKVxuICAgIGFueSBsYXRlciB2ZXJzaW9uLlxuXG4gICAgc25hcmtqcyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWVxuICAgIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvclxuICAgIG1vcmUgZGV0YWlscy5cblxuICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nIHdpdGhcbiAgICBzbmFya2pzLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuKi9cblxuLypcbiAgICBUaGlzIGxpYnJhcnkgZG9lcyBvcGVyYXRpb25zIG9uIHBvbHlub21pYWxzIHdpdGggY29lZmZpY2llbnRzIGluIGEgZmllbGQgRi5cblxuICAgIEEgcG9seW5vbWlhbCBQKHgpID0gcDAgKyBwMSAqIHggKyBwMiAqIHheMiArIC4uLiArIHBuICogeF5uICBpcyByZXByZXNlbnRlZFxuICAgIGJ5IHRoZSBhcnJheSBbIHAwLCBwMSwgcDIsIC4uLiAsIHBuIF0uXG4gKi9cblxuY2xhc3MgRkZUIHtcbiAgICBjb25zdHJ1Y3RvciAoRywgRiwgb3BNdWxHRikge1xuICAgICAgICB0aGlzLkYgPSBGO1xuICAgICAgICB0aGlzLkcgPSBHO1xuICAgICAgICB0aGlzLm9wTXVsR0YgPSBvcE11bEdGO1xuXG4gICAgICAgIGxldCByZW0gPSBGLnNxcnRfdCB8fCBGLnQ7XG4gICAgICAgIGxldCBzID0gRi5zcXJ0X3MgfHwgRi5zO1xuXG4gICAgICAgIGxldCBucXIgPSBGLm9uZTtcbiAgICAgICAgd2hpbGUgKEYuZXEoRi5wb3cobnFyLCBGLmhhbGYpLCBGLm9uZSkpIG5xciA9IEYuYWRkKG5xciwgRi5vbmUpO1xuXG4gICAgICAgIHRoaXMudyA9IG5ldyBBcnJheShzKzEpO1xuICAgICAgICB0aGlzLndpID0gbmV3IEFycmF5KHMrMSk7XG4gICAgICAgIHRoaXMud1tzXSA9IHRoaXMuRi5wb3cobnFyLCByZW0pO1xuICAgICAgICB0aGlzLndpW3NdID0gdGhpcy5GLmludih0aGlzLndbc10pO1xuXG4gICAgICAgIGxldCBuPXMtMTtcbiAgICAgICAgd2hpbGUgKG4+PTApIHtcbiAgICAgICAgICAgIHRoaXMud1tuXSA9IHRoaXMuRi5zcXVhcmUodGhpcy53W24rMV0pO1xuICAgICAgICAgICAgdGhpcy53aVtuXSA9IHRoaXMuRi5zcXVhcmUodGhpcy53aVtuKzFdKTtcbiAgICAgICAgICAgIG4tLTtcbiAgICAgICAgfVxuXG5cbiAgICAgICAgdGhpcy5yb290cyA9IFtdO1xuICAgICAgICAvKlxuICAgICAgICBmb3IgKGxldCBpPTA7IGk8MTY7IGkrKykge1xuICAgICAgICAgICAgbGV0IHIgPSB0aGlzLkYub25lO1xuICAgICAgICAgICAgbiA9IDEgPDwgaTtcbiAgICAgICAgICAgIGNvbnN0IHJvb3RzaSA9IG5ldyBBcnJheShuKTtcbiAgICAgICAgICAgIGZvciAobGV0IGo9MDsgajxuOyBqKyspIHtcbiAgICAgICAgICAgICAgICByb290c2lbal0gPSByO1xuICAgICAgICAgICAgICAgIHIgPSB0aGlzLkYubXVsKHIsIHRoaXMud1tpXSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMucm9vdHMucHVzaChyb290c2kpO1xuICAgICAgICB9XG4gICAgICAgICovXG4gICAgICAgIHRoaXMuX3NldFJvb3RzKE1hdGgubWluKHMsIDE1KSk7XG4gICAgfVxuXG4gICAgX3NldFJvb3RzKG4pIHtcbiAgICAgICAgZm9yIChsZXQgaT1uOyAoaT49MCkgJiYgKCF0aGlzLnJvb3RzW2ldKTsgaS0tKSB7XG4gICAgICAgICAgICBsZXQgciA9IHRoaXMuRi5vbmU7XG4gICAgICAgICAgICBjb25zdCBucm9vdHMgPSAxIDw8IGk7XG4gICAgICAgICAgICBjb25zdCByb290c2kgPSBuZXcgQXJyYXkobnJvb3RzKTtcbiAgICAgICAgICAgIGZvciAobGV0IGo9MDsgajxucm9vdHM7IGorKykge1xuICAgICAgICAgICAgICAgIHJvb3RzaVtqXSA9IHI7XG4gICAgICAgICAgICAgICAgciA9IHRoaXMuRi5tdWwociwgdGhpcy53W2ldKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5yb290c1tpXSA9IHJvb3RzaTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZmdChwKSB7XG4gICAgICAgIGlmIChwLmxlbmd0aCA8PSAxKSByZXR1cm4gcDtcbiAgICAgICAgY29uc3QgYml0cyA9IGxvZzIkMShwLmxlbmd0aC0xKSsxO1xuICAgICAgICB0aGlzLl9zZXRSb290cyhiaXRzKTtcblxuICAgICAgICBjb25zdCBtID0gMSA8PCBiaXRzO1xuICAgICAgICBpZiAocC5sZW5ndGggIT0gbSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiU2l6ZSBtdXN0IGJlIG11bHRpcGxlIG9mIDJcIik7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcmVzID0gX19mZnQodGhpcywgcCwgYml0cywgMCwgMSk7XG4gICAgICAgIHJldHVybiByZXM7XG4gICAgfVxuXG4gICAgaWZmdChwKSB7XG5cbiAgICAgICAgaWYgKHAubGVuZ3RoIDw9IDEpIHJldHVybiBwO1xuICAgICAgICBjb25zdCBiaXRzID0gbG9nMiQxKHAubGVuZ3RoLTEpKzE7XG4gICAgICAgIHRoaXMuX3NldFJvb3RzKGJpdHMpO1xuICAgICAgICBjb25zdCBtID0gMSA8PCBiaXRzO1xuICAgICAgICBpZiAocC5sZW5ndGggIT0gbSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiU2l6ZSBtdXN0IGJlIG11bHRpcGxlIG9mIDJcIik7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcmVzID0gIF9fZmZ0KHRoaXMsIHAsIGJpdHMsIDAsIDEpO1xuICAgICAgICBjb25zdCB0d29pbnZtID0gdGhpcy5GLmludiggdGhpcy5GLm11bFNjYWxhcih0aGlzLkYub25lLCBtKSApO1xuICAgICAgICBjb25zdCByZXNuID0gbmV3IEFycmF5KG0pO1xuICAgICAgICBmb3IgKGxldCBpPTA7IGk8bTsgaSsrKSB7XG4gICAgICAgICAgICByZXNuW2ldID0gdGhpcy5vcE11bEdGKHJlc1sobS1pKSVtXSwgdHdvaW52bSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcmVzbjtcbiAgICB9XG5cblxufVxuXG5mdW5jdGlvbiBsb2cyJDEoIFYgKVxue1xuICAgIHJldHVybiggKCAoIFYgJiAweEZGRkYwMDAwICkgIT09IDAgPyAoIFYgJj0gMHhGRkZGMDAwMCwgMTYgKSA6IDAgKSB8ICggKCBWICYgMHhGRjAwRkYwMCApICE9PSAwID8gKCBWICY9IDB4RkYwMEZGMDAsIDggKSA6IDAgKSB8ICggKCBWICYgMHhGMEYwRjBGMCApICE9PSAwID8gKCBWICY9IDB4RjBGMEYwRjAsIDQgKSA6IDAgKSB8ICggKCBWICYgMHhDQ0NDQ0NDQyApICE9PSAwID8gKCBWICY9IDB4Q0NDQ0NDQ0MsIDIgKSA6IDAgKSB8ICggKCBWICYgMHhBQUFBQUFBQSApICE9PSAwICkgKTtcbn1cblxuXG5mdW5jdGlvbiBfX2ZmdChQRiwgcGFsbCwgYml0cywgb2Zmc2V0LCBzdGVwKSB7XG5cbiAgICBjb25zdCBuID0gMSA8PCBiaXRzO1xuICAgIGlmIChuPT0xKSB7XG4gICAgICAgIHJldHVybiBbIHBhbGxbb2Zmc2V0XSBdO1xuICAgIH0gZWxzZSBpZiAobj09Mikge1xuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgUEYuRy5hZGQocGFsbFtvZmZzZXRdLCBwYWxsW29mZnNldCArIHN0ZXBdKSxcbiAgICAgICAgICAgIFBGLkcuc3ViKHBhbGxbb2Zmc2V0XSwgcGFsbFtvZmZzZXQgKyBzdGVwXSldO1xuICAgIH1cblxuICAgIGNvbnN0IG5kaXYyID0gbiA+PiAxO1xuICAgIGNvbnN0IHAxID0gX19mZnQoUEYsIHBhbGwsIGJpdHMtMSwgb2Zmc2V0LCBzdGVwKjIpO1xuICAgIGNvbnN0IHAyID0gX19mZnQoUEYsIHBhbGwsIGJpdHMtMSwgb2Zmc2V0K3N0ZXAsIHN0ZXAqMik7XG5cbiAgICBjb25zdCBvdXQgPSBuZXcgQXJyYXkobik7XG5cbiAgICBmb3IgKGxldCBpPTA7IGk8bmRpdjI7IGkrKykge1xuICAgICAgICBvdXRbaV0gPSBQRi5HLmFkZChwMVtpXSwgUEYub3BNdWxHRihwMltpXSwgUEYucm9vdHNbYml0c11baV0pKTtcbiAgICAgICAgb3V0W2krbmRpdjJdID0gUEYuRy5zdWIocDFbaV0sIFBGLm9wTXVsR0YocDJbaV0sIFBGLnJvb3RzW2JpdHNdW2ldKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG91dDtcbn1cblxuLyogZ2xvYmFsIEJpZ0ludCAqL1xuXG5jbGFzcyBacUZpZWxkIHtcbiAgICBjb25zdHJ1Y3RvcihwKSB7XG4gICAgICAgIHRoaXMudHlwZT1cIkYxXCI7XG4gICAgICAgIHRoaXMub25lID0gQmlnSW50KDEpO1xuICAgICAgICB0aGlzLnplcm8gPSBCaWdJbnQoMCk7XG4gICAgICAgIHRoaXMucCA9IEJpZ0ludChwKTtcbiAgICAgICAgdGhpcy5tID0gMTtcbiAgICAgICAgdGhpcy5uZWdvbmUgPSB0aGlzLnAtdGhpcy5vbmU7XG4gICAgICAgIHRoaXMudHdvID0gQmlnSW50KDIpO1xuICAgICAgICB0aGlzLmhhbGYgPSB0aGlzLnAgPj4gdGhpcy5vbmU7XG4gICAgICAgIHRoaXMuYml0TGVuZ3RoID0gYml0TGVuZ3RoJDYodGhpcy5wKTtcbiAgICAgICAgdGhpcy5tYXNrID0gKHRoaXMub25lIDw8IEJpZ0ludCh0aGlzLmJpdExlbmd0aCkpIC0gdGhpcy5vbmU7XG5cbiAgICAgICAgdGhpcy5uNjQgPSBNYXRoLmZsb29yKCh0aGlzLmJpdExlbmd0aCAtIDEpIC8gNjQpKzE7XG4gICAgICAgIHRoaXMubjMyID0gdGhpcy5uNjQqMjtcbiAgICAgICAgdGhpcy5uOCA9IHRoaXMubjY0Kjg7XG4gICAgICAgIHRoaXMuUiA9IHRoaXMuZSh0aGlzLm9uZSA8PCBCaWdJbnQodGhpcy5uNjQqNjQpKTtcbiAgICAgICAgdGhpcy5SaSA9IHRoaXMuaW52KHRoaXMuUik7XG5cbiAgICAgICAgY29uc3QgZSA9IHRoaXMubmVnb25lID4+IHRoaXMub25lO1xuICAgICAgICB0aGlzLm5xciA9IHRoaXMudHdvO1xuICAgICAgICBsZXQgciA9IHRoaXMucG93KHRoaXMubnFyLCBlKTtcbiAgICAgICAgd2hpbGUgKCF0aGlzLmVxKHIsIHRoaXMubmVnb25lKSkge1xuICAgICAgICAgICAgdGhpcy5ucXIgPSB0aGlzLm5xciArIHRoaXMub25lO1xuICAgICAgICAgICAgciA9IHRoaXMucG93KHRoaXMubnFyLCBlKTtcbiAgICAgICAgfVxuXG5cbiAgICAgICAgdGhpcy5zID0gMDtcbiAgICAgICAgdGhpcy50ID0gdGhpcy5uZWdvbmU7XG5cbiAgICAgICAgd2hpbGUgKCh0aGlzLnQgJiB0aGlzLm9uZSkgPT0gdGhpcy56ZXJvKSB7XG4gICAgICAgICAgICB0aGlzLnMgPSB0aGlzLnMgKyAxO1xuICAgICAgICAgICAgdGhpcy50ID0gdGhpcy50ID4+IHRoaXMub25lO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5ucXJfdG9fdCA9IHRoaXMucG93KHRoaXMubnFyLCB0aGlzLnQpO1xuXG4gICAgICAgIGJ1aWxkU3FydCh0aGlzKTtcblxuICAgICAgICB0aGlzLkZGVCA9IG5ldyBGRlQodGhpcywgdGhpcywgdGhpcy5tdWwuYmluZCh0aGlzKSk7XG5cbiAgICAgICAgdGhpcy5mZnQgPSB0aGlzLkZGVC5mZnQuYmluZCh0aGlzLkZGVCk7XG4gICAgICAgIHRoaXMuaWZmdCA9IHRoaXMuRkZULmlmZnQuYmluZCh0aGlzLkZGVCk7XG4gICAgICAgIHRoaXMudyA9IHRoaXMuRkZULnc7XG4gICAgICAgIHRoaXMud2kgPSB0aGlzLkZGVC53aTsgXG4gICAgXG4gICAgICAgIHRoaXMuc2hpZnQgPSB0aGlzLnNxdWFyZSh0aGlzLm5xcik7XG4gICAgICAgIHRoaXMuayA9IHRoaXMuZXhwKHRoaXMubnFyLCAyKip0aGlzLnMpO1xuICAgIH1cblxuICAgIGUoYSxiKSB7XG4gICAgICAgIGxldCByZXM7XG4gICAgICAgIGlmICghYikge1xuICAgICAgICAgICAgcmVzID0gQmlnSW50KGEpO1xuICAgICAgICB9IGVsc2UgaWYgKGI9PTE2KSB7XG4gICAgICAgICAgICByZXMgPSBCaWdJbnQoXCIweFwiK2EpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChyZXMgPCAwKSB7XG4gICAgICAgICAgICBsZXQgbnJlcyA9IC1yZXM7XG4gICAgICAgICAgICBpZiAobnJlcyA+PSB0aGlzLnApIG5yZXMgPSBucmVzICUgdGhpcy5wO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMucCAtIG5yZXM7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gKHJlcz49IHRoaXMucCkgPyByZXMldGhpcy5wIDogcmVzO1xuICAgICAgICB9XG5cbiAgICB9XG5cbiAgICBhZGQoYSwgYikge1xuICAgICAgICBjb25zdCByZXMgPSBhICsgYjtcbiAgICAgICAgcmV0dXJuIHJlcyA+PSB0aGlzLnAgPyByZXMtdGhpcy5wIDogcmVzO1xuICAgIH1cblxuICAgIHN1YihhLCBiKSB7XG4gICAgICAgIHJldHVybiAoYSA+PSBiKSA/IGEtYiA6IHRoaXMucC1iK2E7XG4gICAgfVxuXG4gICAgbmVnKGEpIHtcbiAgICAgICAgcmV0dXJuIGEgPyB0aGlzLnAtYSA6IGE7XG4gICAgfVxuXG4gICAgbXVsKGEsIGIpIHtcbiAgICAgICAgcmV0dXJuIChhKmIpJXRoaXMucDtcbiAgICB9XG5cbiAgICBtdWxTY2FsYXIoYmFzZSwgcykge1xuICAgICAgICByZXR1cm4gKGJhc2UgKiB0aGlzLmUocykpICUgdGhpcy5wO1xuICAgIH1cblxuICAgIHNxdWFyZShhKSB7XG4gICAgICAgIHJldHVybiAoYSphKSAlIHRoaXMucDtcbiAgICB9XG5cbiAgICBlcShhLCBiKSB7XG4gICAgICAgIHJldHVybiBhPT1iO1xuICAgIH1cblxuICAgIG5lcShhLCBiKSB7XG4gICAgICAgIHJldHVybiBhIT1iO1xuICAgIH1cblxuICAgIGx0KGEsIGIpIHtcbiAgICAgICAgY29uc3QgYWEgPSAoYSA+IHRoaXMuaGFsZikgPyBhIC0gdGhpcy5wIDogYTtcbiAgICAgICAgY29uc3QgYmIgPSAoYiA+IHRoaXMuaGFsZikgPyBiIC0gdGhpcy5wIDogYjtcbiAgICAgICAgcmV0dXJuIGFhIDwgYmI7XG4gICAgfVxuXG4gICAgZ3QoYSwgYikge1xuICAgICAgICBjb25zdCBhYSA9IChhID4gdGhpcy5oYWxmKSA/IGEgLSB0aGlzLnAgOiBhO1xuICAgICAgICBjb25zdCBiYiA9IChiID4gdGhpcy5oYWxmKSA/IGIgLSB0aGlzLnAgOiBiO1xuICAgICAgICByZXR1cm4gYWEgPiBiYjtcbiAgICB9XG5cbiAgICBsZXEoYSwgYikge1xuICAgICAgICBjb25zdCBhYSA9IChhID4gdGhpcy5oYWxmKSA/IGEgLSB0aGlzLnAgOiBhO1xuICAgICAgICBjb25zdCBiYiA9IChiID4gdGhpcy5oYWxmKSA/IGIgLSB0aGlzLnAgOiBiO1xuICAgICAgICByZXR1cm4gYWEgPD0gYmI7XG4gICAgfVxuXG4gICAgZ2VxKGEsIGIpIHtcbiAgICAgICAgY29uc3QgYWEgPSAoYSA+IHRoaXMuaGFsZikgPyBhIC0gdGhpcy5wIDogYTtcbiAgICAgICAgY29uc3QgYmIgPSAoYiA+IHRoaXMuaGFsZikgPyBiIC0gdGhpcy5wIDogYjtcbiAgICAgICAgcmV0dXJuIGFhID49IGJiO1xuICAgIH1cblxuICAgIGRpdihhLCBiKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm11bChhLCB0aGlzLmludihiKSk7XG4gICAgfVxuXG4gICAgaWRpdihhLCBiKSB7XG4gICAgICAgIGlmICghYikgdGhyb3cgbmV3IEVycm9yKFwiRGl2aXNpb24gYnkgemVyb1wiKTtcbiAgICAgICAgcmV0dXJuIGEgLyBiO1xuICAgIH1cblxuICAgIGludihhKSB7XG4gICAgICAgIGlmICghYSkgdGhyb3cgbmV3IEVycm9yKFwiRGl2aXNpb24gYnkgemVyb1wiKTtcblxuICAgICAgICBsZXQgdCA9IHRoaXMuemVybztcbiAgICAgICAgbGV0IHIgPSB0aGlzLnA7XG4gICAgICAgIGxldCBuZXd0ID0gdGhpcy5vbmU7XG4gICAgICAgIGxldCBuZXdyID0gYSAlIHRoaXMucDtcbiAgICAgICAgd2hpbGUgKG5ld3IpIHtcbiAgICAgICAgICAgIGxldCBxID0gci9uZXdyO1xuICAgICAgICAgICAgW3QsIG5ld3RdID0gW25ld3QsIHQtcSpuZXd0XTtcbiAgICAgICAgICAgIFtyLCBuZXdyXSA9IFtuZXdyLCByLXEqbmV3cl07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHQ8dGhpcy56ZXJvKSB0ICs9IHRoaXMucDtcbiAgICAgICAgcmV0dXJuIHQ7XG4gICAgfVxuXG4gICAgbW9kKGEsIGIpIHtcbiAgICAgICAgcmV0dXJuIGEgJSBiO1xuICAgIH1cblxuICAgIHBvdyhiLCBlKSB7XG4gICAgICAgIHJldHVybiBleHAodGhpcywgYiwgZSk7XG4gICAgfVxuXG4gICAgZXhwKGIsIGUpIHtcbiAgICAgICAgcmV0dXJuIGV4cCh0aGlzLCBiLCBlKTtcbiAgICB9XG5cbiAgICBiYW5kKGEsIGIpIHtcbiAgICAgICAgY29uc3QgcmVzID0gICgoYSAmIGIpICYgdGhpcy5tYXNrKTtcbiAgICAgICAgcmV0dXJuIHJlcyA+PSB0aGlzLnAgPyByZXMtdGhpcy5wIDogcmVzO1xuICAgIH1cblxuICAgIGJvcihhLCBiKSB7XG4gICAgICAgIGNvbnN0IHJlcyA9ICAoKGEgfCBiKSAmIHRoaXMubWFzayk7XG4gICAgICAgIHJldHVybiByZXMgPj0gdGhpcy5wID8gcmVzLXRoaXMucCA6IHJlcztcbiAgICB9XG5cbiAgICBieG9yKGEsIGIpIHtcbiAgICAgICAgY29uc3QgcmVzID0gICgoYSBeIGIpICYgdGhpcy5tYXNrKTtcbiAgICAgICAgcmV0dXJuIHJlcyA+PSB0aGlzLnAgPyByZXMtdGhpcy5wIDogcmVzO1xuICAgIH1cblxuICAgIGJub3QoYSkge1xuICAgICAgICBjb25zdCByZXMgPSBhIF4gdGhpcy5tYXNrO1xuICAgICAgICByZXR1cm4gcmVzID49IHRoaXMucCA/IHJlcy10aGlzLnAgOiByZXM7XG4gICAgfVxuXG4gICAgc2hsKGEsIGIpIHtcbiAgICAgICAgaWYgKE51bWJlcihiKSA8IHRoaXMuYml0TGVuZ3RoKSB7XG4gICAgICAgICAgICBjb25zdCByZXMgPSAoYSA8PCBiKSAmIHRoaXMubWFzaztcbiAgICAgICAgICAgIHJldHVybiByZXMgPj0gdGhpcy5wID8gcmVzLXRoaXMucCA6IHJlcztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IG5iID0gdGhpcy5wIC0gYjtcbiAgICAgICAgICAgIGlmIChOdW1iZXIobmIpIDwgdGhpcy5iaXRMZW5ndGgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gYSA+PiBuYjtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuemVybztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHNocihhLCBiKSB7XG4gICAgICAgIGlmIChOdW1iZXIoYikgPCB0aGlzLmJpdExlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuIGEgPj4gYjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IG5iID0gdGhpcy5wIC0gYjtcbiAgICAgICAgICAgIGlmIChOdW1iZXIobmIpIDwgdGhpcy5iaXRMZW5ndGgpIHtcbiAgICAgICAgICAgICAgICBjb25zdCByZXMgPSAoYSA8PCBuYikgJiB0aGlzLm1hc2s7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlcyA+PSB0aGlzLnAgPyByZXMtdGhpcy5wIDogcmVzO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIGxhbmQoYSwgYikge1xuICAgICAgICByZXR1cm4gKGEgJiYgYikgPyB0aGlzLm9uZSA6IHRoaXMuemVybztcbiAgICB9XG5cbiAgICBsb3IoYSwgYikge1xuICAgICAgICByZXR1cm4gKGEgfHwgYikgPyB0aGlzLm9uZSA6IHRoaXMuemVybztcbiAgICB9XG5cbiAgICBsbm90KGEpIHtcbiAgICAgICAgcmV0dXJuIChhKSA/IHRoaXMuemVybyA6IHRoaXMub25lO1xuICAgIH1cblxuICAgIHNxcnRfb2xkKG4pIHtcblxuICAgICAgICBpZiAobiA9PSB0aGlzLnplcm8pIHJldHVybiB0aGlzLnplcm87XG5cbiAgICAgICAgLy8gVGVzdCB0aGF0IGhhdmUgc29sdXRpb25cbiAgICAgICAgY29uc3QgcmVzID0gdGhpcy5wb3cobiwgdGhpcy5uZWdvbmUgPj4gdGhpcy5vbmUpO1xuICAgICAgICBpZiAoIHJlcyAhPSB0aGlzLm9uZSApIHJldHVybiBudWxsO1xuXG4gICAgICAgIGxldCBtID0gdGhpcy5zO1xuICAgICAgICBsZXQgYyA9IHRoaXMubnFyX3RvX3Q7XG4gICAgICAgIGxldCB0ID0gdGhpcy5wb3cobiwgdGhpcy50KTtcbiAgICAgICAgbGV0IHIgPSB0aGlzLnBvdyhuLCB0aGlzLmFkZCh0aGlzLnQsIHRoaXMub25lKSA+PiB0aGlzLm9uZSApO1xuXG4gICAgICAgIHdoaWxlICggdCAhPSB0aGlzLm9uZSApIHtcbiAgICAgICAgICAgIGxldCBzcSA9IHRoaXMuc3F1YXJlKHQpO1xuICAgICAgICAgICAgbGV0IGkgPSAxO1xuICAgICAgICAgICAgd2hpbGUgKHNxICE9IHRoaXMub25lICkge1xuICAgICAgICAgICAgICAgIGkrKztcbiAgICAgICAgICAgICAgICBzcSA9IHRoaXMuc3F1YXJlKHNxKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gYiA9IGMgXiBtLWktMVxuICAgICAgICAgICAgbGV0IGIgPSBjO1xuICAgICAgICAgICAgZm9yIChsZXQgaj0wOyBqPCBtLWktMTsgaiArKykgYiA9IHRoaXMuc3F1YXJlKGIpO1xuXG4gICAgICAgICAgICBtID0gaTtcbiAgICAgICAgICAgIGMgPSB0aGlzLnNxdWFyZShiKTtcbiAgICAgICAgICAgIHQgPSB0aGlzLm11bCh0LCBjKTtcbiAgICAgICAgICAgIHIgPSB0aGlzLm11bChyLCBiKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChyID4gKHRoaXMucCA+PiB0aGlzLm9uZSkpIHtcbiAgICAgICAgICAgIHIgPSB0aGlzLm5lZyhyKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiByO1xuICAgIH1cblxuICAgIG5vcm1hbGl6ZShhLCBiKSB7XG4gICAgICAgIGEgPSBCaWdJbnQoYSxiKTtcbiAgICAgICAgaWYgKGEgPCAwKSB7XG4gICAgICAgICAgICBsZXQgbmEgPSAtYTtcbiAgICAgICAgICAgIGlmIChuYSA+PSB0aGlzLnApIG5hID0gbmEgJSB0aGlzLnA7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5wIC0gbmE7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gKGE+PSB0aGlzLnApID8gYSV0aGlzLnAgOiBhO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmFuZG9tKCkge1xuICAgICAgICBjb25zdCBuQnl0ZXMgPSAodGhpcy5iaXRMZW5ndGgqMiAvIDgpO1xuICAgICAgICBsZXQgcmVzID10aGlzLnplcm87XG4gICAgICAgIGZvciAobGV0IGk9MDsgaTxuQnl0ZXM7IGkrKykge1xuICAgICAgICAgICAgcmVzID0gKHJlcyA8PCBCaWdJbnQoOCkpICsgQmlnSW50KGdldFJhbmRvbUJ5dGVzKDEpWzBdKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzICUgdGhpcy5wO1xuICAgIH1cblxuICAgIHRvU3RyaW5nKGEsIGJhc2UpIHtcbiAgICAgICAgYmFzZSA9IGJhc2UgfHwgMTA7XG4gICAgICAgIGxldCB2cztcbiAgICAgICAgaWYgKChhID4gdGhpcy5oYWxmKSYmKGJhc2UgPT0gMTApKSB7XG4gICAgICAgICAgICBjb25zdCB2ID0gdGhpcy5wLWE7XG4gICAgICAgICAgICB2cyA9IFwiLVwiK3YudG9TdHJpbmcoYmFzZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB2cyA9IGEudG9TdHJpbmcoYmFzZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHZzO1xuICAgIH1cblxuICAgIGlzWmVybyhhKSB7XG4gICAgICAgIHJldHVybiBhID09IHRoaXMuemVybztcbiAgICB9XG5cbiAgICBmcm9tUm5nKHJuZykge1xuICAgICAgICBsZXQgdjtcbiAgICAgICAgZG8ge1xuICAgICAgICAgICAgdj10aGlzLnplcm87XG4gICAgICAgICAgICBmb3IgKGxldCBpPTA7IGk8dGhpcy5uNjQ7IGkrKykge1xuICAgICAgICAgICAgICAgIHYgKz0gcm5nLm5leHRVNjQoKSA8PCBCaWdJbnQoNjQgKmkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdiAmPSB0aGlzLm1hc2s7XG4gICAgICAgIH0gd2hpbGUgKHYgPj0gdGhpcy5wKTtcbiAgICAgICAgdiA9ICh2ICogdGhpcy5SaSkgJSB0aGlzLnA7ICAgLy8gQ29udmVydCBmcm9tIG1vbnRnb21lcnlcbiAgICAgICAgcmV0dXJuIHY7XG4gICAgfVxuXG4gICAgZmZ0KGEpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuRkZULmZmdChhKTtcbiAgICB9XG5cbiAgICBpZmZ0KGEpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuRkZULmlmZnQoYSk7XG4gICAgfVxuXG4gICAgLy8gUmV0dXJucyBhIGJ1ZmZlciB3aXRoIExpdHRsZSBFbmRpYW4gUmVwcmVzZW50YXRpb25cbiAgICB0b1JwckxFKGJ1ZmYsIG8sIGUpIHtcbiAgICAgICAgdG9ScHJMRShidWZmLCBvLCBlLCB0aGlzLm42NCo4KTtcbiAgICB9XG5cbiAgICAvLyBSZXR1cm5zIGEgYnVmZmVyIHdpdGggQmlnIEVuZGlhbiBSZXByZXNlbnRhdGlvblxuICAgIHRvUnByQkUoYnVmZiwgbywgZSkge1xuICAgICAgICB0b1JwckJFKGJ1ZmYsIG8sIGUsIHRoaXMubjY0KjgpO1xuICAgIH1cblxuICAgIC8vIFJldHVybnMgYSBidWZmZXIgd2l0aCBCaWcgRW5kaWFuIE1vbnRnb21lcnkgUmVwcmVzZW50YXRpb25cbiAgICB0b1JwckJFTShidWZmLCBvLCBlKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnRvUnByQkUoYnVmZiwgbywgdGhpcy5tdWwodGhpcy5SLCBlKSk7XG4gICAgfVxuXG4gICAgdG9ScHJMRU0oYnVmZiwgbywgZSkge1xuICAgICAgICByZXR1cm4gdGhpcy50b1JwckxFKGJ1ZmYsIG8sIHRoaXMubXVsKHRoaXMuUiwgZSkpO1xuICAgIH1cblxuXG4gICAgLy8gUGFzZXMgYSBidWZmZXIgd2l0aCBMaXR0bGUgRW5kaWFuIFJlcHJlc2VudGF0aW9uXG4gICAgZnJvbVJwckxFKGJ1ZmYsIG8pIHtcbiAgICAgICAgcmV0dXJuIGZyb21ScHJMRShidWZmLCBvLCB0aGlzLm44KTtcbiAgICB9XG5cbiAgICAvLyBQYXNlcyBhIGJ1ZmZlciB3aXRoIEJpZyBFbmRpYW4gUmVwcmVzZW50YXRpb25cbiAgICBmcm9tUnByQkUoYnVmZiwgbykge1xuICAgICAgICByZXR1cm4gZnJvbVJwckJFKGJ1ZmYsIG8sIHRoaXMubjgpO1xuICAgIH1cblxuICAgIGZyb21ScHJMRU0oYnVmZiwgbykge1xuICAgICAgICByZXR1cm4gdGhpcy5tdWwodGhpcy5mcm9tUnByTEUoYnVmZiwgbyksIHRoaXMuUmkpO1xuICAgIH1cblxuICAgIGZyb21ScHJCRU0oYnVmZiwgbykge1xuICAgICAgICByZXR1cm4gdGhpcy5tdWwodGhpcy5mcm9tUnByQkUoYnVmZiwgbyksIHRoaXMuUmkpO1xuICAgIH1cblxuICAgIHRvT2JqZWN0KGEpIHtcbiAgICAgICAgcmV0dXJuIGE7XG4gICAgfVxufVxuXG4vKlxuICAgIENvcHlyaWdodCAyMDE4IDBraW1zIGFzc29jaWF0aW9uLlxuXG4gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2Ygc25hcmtqcy5cblxuICAgIHNuYXJranMgaXMgYSBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3JcbiAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlXG4gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pXG4gICAgYW55IGxhdGVyIHZlcnNpb24uXG5cbiAgICBzbmFya2pzIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZXG4gICAgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yXG4gICAgbW9yZSBkZXRhaWxzLlxuXG4gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcgd2l0aFxuICAgIHNuYXJranMuIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXG4qL1xuXG5cbmNsYXNzIEYyRmllbGQge1xuICAgIGNvbnN0cnVjdG9yKEYsIG5vblJlc2lkdWUpIHtcbiAgICAgICAgdGhpcy50eXBlPVwiRjJcIjtcbiAgICAgICAgdGhpcy5GID0gRjtcbiAgICAgICAgdGhpcy56ZXJvID0gW3RoaXMuRi56ZXJvLCB0aGlzLkYuemVyb107XG4gICAgICAgIHRoaXMub25lID0gW3RoaXMuRi5vbmUsIHRoaXMuRi56ZXJvXTtcbiAgICAgICAgdGhpcy5uZWdvbmUgPSB0aGlzLm5lZyh0aGlzLm9uZSk7XG4gICAgICAgIHRoaXMubm9uUmVzaWR1ZSA9IG5vblJlc2lkdWU7XG4gICAgICAgIHRoaXMubSA9IEYubSoyO1xuICAgICAgICB0aGlzLnAgPSBGLnA7XG4gICAgICAgIHRoaXMubjY0ID0gRi5uNjQqMjtcbiAgICAgICAgdGhpcy5uMzIgPSB0aGlzLm42NCoyO1xuICAgICAgICB0aGlzLm44ID0gdGhpcy5uNjQqODtcblxuICAgICAgICBidWlsZFNxcnQodGhpcyk7XG4gICAgfVxuXG4gICAgX211bEJ5Tm9uUmVzaWR1ZShhKSB7XG4gICAgICAgIHJldHVybiB0aGlzLkYubXVsKHRoaXMubm9uUmVzaWR1ZSwgYSk7XG4gICAgfVxuXG4gICAgY29weShhKSB7XG4gICAgICAgIHJldHVybiBbdGhpcy5GLmNvcHkoYVswXSksIHRoaXMuRi5jb3B5KGFbMV0pXTtcbiAgICB9XG5cbiAgICBhZGQoYSwgYikge1xuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgdGhpcy5GLmFkZChhWzBdLCBiWzBdKSxcbiAgICAgICAgICAgIHRoaXMuRi5hZGQoYVsxXSwgYlsxXSlcbiAgICAgICAgXTtcbiAgICB9XG5cbiAgICBkb3VibGUoYSkge1xuICAgICAgICByZXR1cm4gdGhpcy5hZGQoYSxhKTtcbiAgICB9XG5cbiAgICBzdWIoYSwgYikge1xuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgdGhpcy5GLnN1YihhWzBdLCBiWzBdKSxcbiAgICAgICAgICAgIHRoaXMuRi5zdWIoYVsxXSwgYlsxXSlcbiAgICAgICAgXTtcbiAgICB9XG5cbiAgICBuZWcoYSkge1xuICAgICAgICByZXR1cm4gdGhpcy5zdWIodGhpcy56ZXJvLCBhKTtcbiAgICB9XG5cbiAgICBjb25qdWdhdGUoYSkge1xuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgYVswXSxcbiAgICAgICAgICAgIHRoaXMuRi5uZWcoYVsxXSlcbiAgICAgICAgXTtcbiAgICB9XG5cbiAgICBtdWwoYSwgYikge1xuICAgICAgICBjb25zdCBhQSA9IHRoaXMuRi5tdWwoYVswXSAsIGJbMF0pO1xuICAgICAgICBjb25zdCBiQiA9IHRoaXMuRi5tdWwoYVsxXSAsIGJbMV0pO1xuXG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICB0aGlzLkYuYWRkKCBhQSAsIHRoaXMuX211bEJ5Tm9uUmVzaWR1ZShiQikpLFxuICAgICAgICAgICAgdGhpcy5GLnN1YihcbiAgICAgICAgICAgICAgICB0aGlzLkYubXVsKFxuICAgICAgICAgICAgICAgICAgICB0aGlzLkYuYWRkKGFbMF0sIGFbMV0pLFxuICAgICAgICAgICAgICAgICAgICB0aGlzLkYuYWRkKGJbMF0sIGJbMV0pKSxcbiAgICAgICAgICAgICAgICB0aGlzLkYuYWRkKGFBLCBiQikpXTtcbiAgICB9XG5cbiAgICBpbnYoYSkge1xuICAgICAgICBjb25zdCB0MCA9IHRoaXMuRi5zcXVhcmUoYVswXSk7XG4gICAgICAgIGNvbnN0IHQxID0gdGhpcy5GLnNxdWFyZShhWzFdKTtcbiAgICAgICAgY29uc3QgdDIgPSB0aGlzLkYuc3ViKHQwLCB0aGlzLl9tdWxCeU5vblJlc2lkdWUodDEpKTtcbiAgICAgICAgY29uc3QgdDMgPSB0aGlzLkYuaW52KHQyKTtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIHRoaXMuRi5tdWwoYVswXSwgdDMpLFxuICAgICAgICAgICAgdGhpcy5GLm5lZyh0aGlzLkYubXVsKCBhWzFdLCB0MykpIF07XG4gICAgfVxuXG4gICAgZGl2KGEsIGIpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubXVsKGEsIHRoaXMuaW52KGIpKTtcbiAgICB9XG5cbiAgICBzcXVhcmUoYSkge1xuICAgICAgICBjb25zdCBhYiA9IHRoaXMuRi5tdWwoYVswXSAsIGFbMV0pO1xuXG4gICAgICAgIC8qXG4gICAgICAgIFtcbiAgICAgICAgICAgIChhICsgYikgKiAoYSArIG5vbl9yZXNpZHVlICogYikgLSBhYiAtIG5vbl9yZXNpZHVlICogYWIsXG4gICAgICAgICAgICBhYiArIGFiXG4gICAgICAgIF07XG4gICAgICAgICovXG5cbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIHRoaXMuRi5zdWIoXG4gICAgICAgICAgICAgICAgdGhpcy5GLm11bChcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5GLmFkZChhWzBdLCBhWzFdKSAsXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuRi5hZGQoXG4gICAgICAgICAgICAgICAgICAgICAgICBhWzBdICxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX211bEJ5Tm9uUmVzaWR1ZShhWzFdKSkpLFxuICAgICAgICAgICAgICAgIHRoaXMuRi5hZGQoXG4gICAgICAgICAgICAgICAgICAgIGFiLFxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9tdWxCeU5vblJlc2lkdWUoYWIpKSksXG4gICAgICAgICAgICB0aGlzLkYuYWRkKGFiLCBhYilcbiAgICAgICAgXTtcbiAgICB9XG5cbiAgICBpc1plcm8oYSkge1xuICAgICAgICByZXR1cm4gdGhpcy5GLmlzWmVybyhhWzBdKSAmJiB0aGlzLkYuaXNaZXJvKGFbMV0pO1xuICAgIH1cblxuICAgIGVxKGEsIGIpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuRi5lcShhWzBdLCBiWzBdKSAmJiB0aGlzLkYuZXEoYVsxXSwgYlsxXSk7XG4gICAgfVxuXG4gICAgbXVsU2NhbGFyKGJhc2UsIGUpIHtcbiAgICAgICAgcmV0dXJuIG11bFNjYWxhcih0aGlzLCBiYXNlLCBlKTtcbiAgICB9XG5cbiAgICBwb3coYmFzZSwgZSkge1xuICAgICAgICByZXR1cm4gZXhwKHRoaXMsIGJhc2UsIGUpO1xuICAgIH1cblxuICAgIGV4cChiYXNlLCBlKSB7XG4gICAgICAgIHJldHVybiBleHAodGhpcywgYmFzZSwgZSk7XG4gICAgfVxuXG4gICAgdG9TdHJpbmcoYSkge1xuICAgICAgICByZXR1cm4gYFsgJHt0aGlzLkYudG9TdHJpbmcoYVswXSl9ICwgJHt0aGlzLkYudG9TdHJpbmcoYVsxXSl9IF1gO1xuICAgIH1cblxuICAgIGZyb21Sbmcocm5nKSB7XG4gICAgICAgIGNvbnN0IGMwID0gdGhpcy5GLmZyb21Sbmcocm5nKTtcbiAgICAgICAgY29uc3QgYzEgPSB0aGlzLkYuZnJvbVJuZyhybmcpO1xuICAgICAgICByZXR1cm4gW2MwLCBjMV07XG4gICAgfVxuXG4gICAgZ3QoYSwgYikge1xuICAgICAgICBpZiAodGhpcy5GLmd0KGFbMF0sIGJbMF0pKSByZXR1cm4gdHJ1ZTtcbiAgICAgICAgaWYgKHRoaXMuRi5ndChiWzBdLCBhWzBdKSkgcmV0dXJuIGZhbHNlO1xuICAgICAgICBpZiAodGhpcy5GLmd0KGFbMV0sIGJbMV0pKSByZXR1cm4gdHJ1ZTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGdlcShhLCBiKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmd0KGEsIGIpIHx8IHRoaXMuZXEoYSwgYik7XG4gICAgfVxuXG4gICAgbHQoYSwgYikge1xuICAgICAgICByZXR1cm4gIXRoaXMuZ2VxKGEsYik7XG4gICAgfVxuXG4gICAgbGVxKGEsIGIpIHtcbiAgICAgICAgcmV0dXJuICF0aGlzLmd0KGEsYik7XG4gICAgfVxuXG4gICAgbmVxKGEsIGIpIHtcbiAgICAgICAgcmV0dXJuICF0aGlzLmVxKGEsYik7XG4gICAgfVxuXG4gICAgcmFuZG9tKCkge1xuICAgICAgICByZXR1cm4gW3RoaXMuRi5yYW5kb20oKSwgdGhpcy5GLnJhbmRvbSgpXTtcbiAgICB9XG5cblxuICAgIHRvUnByTEUoYnVmZiwgbywgZSkge1xuICAgICAgICB0aGlzLkYudG9ScHJMRShidWZmLCBvLCBlWzBdKTtcbiAgICAgICAgdGhpcy5GLnRvUnByTEUoYnVmZiwgbyt0aGlzLkYubjgsIGVbMV0pO1xuICAgIH1cblxuICAgIHRvUnByQkUoYnVmZiwgbywgZSkge1xuICAgICAgICB0aGlzLkYudG9ScHJCRShidWZmLCBvLCBlWzFdKTtcbiAgICAgICAgdGhpcy5GLnRvUnByQkUoYnVmZiwgbyt0aGlzLkYubjgsIGVbMF0pO1xuICAgIH1cblxuICAgIHRvUnByTEVNKGJ1ZmYsIG8sIGUpIHtcbiAgICAgICAgdGhpcy5GLnRvUnByTEVNKGJ1ZmYsIG8sIGVbMF0pO1xuICAgICAgICB0aGlzLkYudG9ScHJMRU0oYnVmZiwgbyt0aGlzLkYubjgsIGVbMV0pO1xuICAgIH1cblxuXG4gICAgdG9ScHJCRU0oYnVmZiwgbywgZSkge1xuICAgICAgICB0aGlzLkYudG9ScHJCRU0oYnVmZiwgbywgZVsxXSk7XG4gICAgICAgIHRoaXMuRi50b1JwckJFTShidWZmLCBvK3RoaXMuRi5uOCwgZVswXSk7XG4gICAgfVxuXG4gICAgZnJvbVJwckxFKGJ1ZmYsIG8pIHtcbiAgICAgICAgbyA9IG8gfHwgMDtcbiAgICAgICAgY29uc3QgYzAgPSB0aGlzLkYuZnJvbVJwckxFKGJ1ZmYsIG8pO1xuICAgICAgICBjb25zdCBjMSA9IHRoaXMuRi5mcm9tUnByTEUoYnVmZiwgbyt0aGlzLkYubjgpO1xuICAgICAgICByZXR1cm4gW2MwLCBjMV07XG4gICAgfVxuXG4gICAgZnJvbVJwckJFKGJ1ZmYsIG8pIHtcbiAgICAgICAgbyA9IG8gfHwgMDtcbiAgICAgICAgY29uc3QgYzEgPSB0aGlzLkYuZnJvbVJwckJFKGJ1ZmYsIG8pO1xuICAgICAgICBjb25zdCBjMCA9IHRoaXMuRi5mcm9tUnByQkUoYnVmZiwgbyt0aGlzLkYubjgpO1xuICAgICAgICByZXR1cm4gW2MwLCBjMV07XG4gICAgfVxuXG4gICAgZnJvbVJwckxFTShidWZmLCBvKSB7XG4gICAgICAgIG8gPSBvIHx8IDA7XG4gICAgICAgIGNvbnN0IGMwID0gdGhpcy5GLmZyb21ScHJMRU0oYnVmZiwgbyk7XG4gICAgICAgIGNvbnN0IGMxID0gdGhpcy5GLmZyb21ScHJMRU0oYnVmZiwgbyt0aGlzLkYubjgpO1xuICAgICAgICByZXR1cm4gW2MwLCBjMV07XG4gICAgfVxuXG4gICAgZnJvbVJwckJFTShidWZmLCBvKSB7XG4gICAgICAgIG8gPSBvIHx8IDA7XG4gICAgICAgIGNvbnN0IGMxID0gdGhpcy5GLmZyb21ScHJCRU0oYnVmZiwgbyk7XG4gICAgICAgIGNvbnN0IGMwID0gdGhpcy5GLmZyb21ScHJCRU0oYnVmZiwgbyt0aGlzLkYubjgpO1xuICAgICAgICByZXR1cm4gW2MwLCBjMV07XG4gICAgfVxuXG4gICAgdG9PYmplY3QoYSkge1xuICAgICAgICByZXR1cm4gYTtcbiAgICB9XG5cbn1cblxuLypcbiAgICBDb3B5cmlnaHQgMjAxOCAwa2ltcyBhc3NvY2lhdGlvbi5cblxuICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHNuYXJranMuXG5cbiAgICBzbmFya2pzIGlzIGEgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yXG4gICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZVxuICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKVxuICAgIGFueSBsYXRlciB2ZXJzaW9uLlxuXG4gICAgc25hcmtqcyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWVxuICAgIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvclxuICAgIG1vcmUgZGV0YWlscy5cblxuICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nIHdpdGhcbiAgICBzbmFya2pzLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuKi9cblxuXG5jbGFzcyBGM0ZpZWxkIHtcbiAgICBjb25zdHJ1Y3RvcihGLCBub25SZXNpZHVlKSB7XG4gICAgICAgIHRoaXMudHlwZT1cIkYzXCI7XG4gICAgICAgIHRoaXMuRiA9IEY7XG4gICAgICAgIHRoaXMuemVybyA9IFt0aGlzLkYuemVybywgdGhpcy5GLnplcm8sIHRoaXMuRi56ZXJvXTtcbiAgICAgICAgdGhpcy5vbmUgPSBbdGhpcy5GLm9uZSwgdGhpcy5GLnplcm8sIHRoaXMuRi56ZXJvXTtcbiAgICAgICAgdGhpcy5uZWdvbmUgPSB0aGlzLm5lZyh0aGlzLm9uZSk7XG4gICAgICAgIHRoaXMubm9uUmVzaWR1ZSA9IG5vblJlc2lkdWU7XG4gICAgICAgIHRoaXMubSA9IEYubSozO1xuICAgICAgICB0aGlzLnAgPSBGLnA7XG4gICAgICAgIHRoaXMubjY0ID0gRi5uNjQqMztcbiAgICAgICAgdGhpcy5uMzIgPSB0aGlzLm42NCoyO1xuICAgICAgICB0aGlzLm44ID0gdGhpcy5uNjQqODtcbiAgICB9XG5cbiAgICBfbXVsQnlOb25SZXNpZHVlKGEpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuRi5tdWwodGhpcy5ub25SZXNpZHVlLCBhKTtcbiAgICB9XG5cbiAgICBjb3B5KGEpIHtcbiAgICAgICAgcmV0dXJuIFt0aGlzLkYuY29weShhWzBdKSwgdGhpcy5GLmNvcHkoYVsxXSksIHRoaXMuRi5jb3B5KGFbMl0pXTtcbiAgICB9XG5cbiAgICBhZGQoYSwgYikge1xuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgdGhpcy5GLmFkZChhWzBdLCBiWzBdKSxcbiAgICAgICAgICAgIHRoaXMuRi5hZGQoYVsxXSwgYlsxXSksXG4gICAgICAgICAgICB0aGlzLkYuYWRkKGFbMl0sIGJbMl0pXG4gICAgICAgIF07XG4gICAgfVxuXG4gICAgZG91YmxlKGEpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYWRkKGEsYSk7XG4gICAgfVxuXG4gICAgc3ViKGEsIGIpIHtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIHRoaXMuRi5zdWIoYVswXSwgYlswXSksXG4gICAgICAgICAgICB0aGlzLkYuc3ViKGFbMV0sIGJbMV0pLFxuICAgICAgICAgICAgdGhpcy5GLnN1YihhWzJdLCBiWzJdKVxuICAgICAgICBdO1xuICAgIH1cblxuICAgIG5lZyhhKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnN1Yih0aGlzLnplcm8sIGEpO1xuICAgIH1cblxuICAgIG11bChhLCBiKSB7XG5cbiAgICAgICAgY29uc3QgYUEgPSB0aGlzLkYubXVsKGFbMF0gLCBiWzBdKTtcbiAgICAgICAgY29uc3QgYkIgPSB0aGlzLkYubXVsKGFbMV0gLCBiWzFdKTtcbiAgICAgICAgY29uc3QgY0MgPSB0aGlzLkYubXVsKGFbMl0gLCBiWzJdKTtcblxuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgdGhpcy5GLmFkZChcbiAgICAgICAgICAgICAgICBhQSxcbiAgICAgICAgICAgICAgICB0aGlzLl9tdWxCeU5vblJlc2lkdWUoXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuRi5zdWIoXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLkYubXVsKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuRi5hZGQoYVsxXSwgYVsyXSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5GLmFkZChiWzFdLCBiWzJdKSksXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLkYuYWRkKGJCLCBjQykpKSksICAgIC8vIGFBICsgbm9uX3Jlc2lkdWUqKChiK2MpKihCK0MpLWJCLWNDKSxcblxuICAgICAgICAgICAgdGhpcy5GLmFkZChcbiAgICAgICAgICAgICAgICB0aGlzLkYuc3ViKFxuICAgICAgICAgICAgICAgICAgICB0aGlzLkYubXVsKFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5GLmFkZChhWzBdLCBhWzFdKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuRi5hZGQoYlswXSwgYlsxXSkpLFxuICAgICAgICAgICAgICAgICAgICB0aGlzLkYuYWRkKGFBLCBiQikpLFxuICAgICAgICAgICAgICAgIHRoaXMuX211bEJ5Tm9uUmVzaWR1ZSggY0MpKSwgICAvLyAoYStiKSooQStCKS1hQS1iQitub25fcmVzaWR1ZSpjQ1xuXG4gICAgICAgICAgICB0aGlzLkYuYWRkKFxuICAgICAgICAgICAgICAgIHRoaXMuRi5zdWIoXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuRi5tdWwoXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLkYuYWRkKGFbMF0sIGFbMl0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5GLmFkZChiWzBdLCBiWzJdKSksXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuRi5hZGQoYUEsIGNDKSksXG4gICAgICAgICAgICAgICAgYkIpXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAoYStjKSooQStDKS1hQStiQi1jQylcbiAgICB9XG5cbiAgICBpbnYoYSkge1xuICAgICAgICBjb25zdCB0MCA9IHRoaXMuRi5zcXVhcmUoYVswXSk7ICAgICAgICAgICAgIC8vIHQwID0gYV4yIDtcbiAgICAgICAgY29uc3QgdDEgPSB0aGlzLkYuc3F1YXJlKGFbMV0pOyAgICAgICAgICAgICAvLyB0MSA9IGJeMiA7XG4gICAgICAgIGNvbnN0IHQyID0gdGhpcy5GLnNxdWFyZShhWzJdKTsgICAgICAgICAgICAgLy8gdDIgPSBjXjI7XG4gICAgICAgIGNvbnN0IHQzID0gdGhpcy5GLm11bChhWzBdLGFbMV0pOyAgICAgICAgICAgLy8gdDMgPSBhYlxuICAgICAgICBjb25zdCB0NCA9IHRoaXMuRi5tdWwoYVswXSxhWzJdKTsgICAgICAgICAgIC8vIHQ0ID0gYWNcbiAgICAgICAgY29uc3QgdDUgPSB0aGlzLkYubXVsKGFbMV0sYVsyXSk7ICAgICAgICAgICAvLyB0NSA9IGJjO1xuICAgICAgICAvLyBjMCA9IHQwIC0gbm9uX3Jlc2lkdWUgKiB0NTtcbiAgICAgICAgY29uc3QgYzAgPSB0aGlzLkYuc3ViKHQwLCB0aGlzLl9tdWxCeU5vblJlc2lkdWUodDUpKTtcbiAgICAgICAgLy8gYzEgPSBub25fcmVzaWR1ZSAqIHQyIC0gdDM7XG4gICAgICAgIGNvbnN0IGMxID0gdGhpcy5GLnN1Yih0aGlzLl9tdWxCeU5vblJlc2lkdWUodDIpLCB0Myk7XG4gICAgICAgIGNvbnN0IGMyID0gdGhpcy5GLnN1Yih0MSwgdDQpOyAgICAgICAgICAgICAgLy8gYzIgPSB0MS10NFxuXG4gICAgICAgIC8vIHQ2ID0gKGEgKiBjMCArIG5vbl9yZXNpZHVlICogKGMgKiBjMSArIGIgKiBjMikpLmludigpO1xuICAgICAgICBjb25zdCB0NiA9XG4gICAgICAgICAgICB0aGlzLkYuaW52KFxuICAgICAgICAgICAgICAgIHRoaXMuRi5hZGQoXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuRi5tdWwoYVswXSwgYzApLFxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9tdWxCeU5vblJlc2lkdWUoXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLkYuYWRkKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuRi5tdWwoYVsyXSwgYzEpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuRi5tdWwoYVsxXSwgYzIpKSkpKTtcblxuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgdGhpcy5GLm11bCh0NiwgYzApLCAgICAgICAgIC8vIHQ2KmMwXG4gICAgICAgICAgICB0aGlzLkYubXVsKHQ2LCBjMSksICAgICAgICAgLy8gdDYqYzFcbiAgICAgICAgICAgIHRoaXMuRi5tdWwodDYsIGMyKV07ICAgICAgICAvLyB0NipjMlxuICAgIH1cblxuICAgIGRpdihhLCBiKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm11bChhLCB0aGlzLmludihiKSk7XG4gICAgfVxuXG4gICAgc3F1YXJlKGEpIHtcbiAgICAgICAgY29uc3QgczAgPSB0aGlzLkYuc3F1YXJlKGFbMF0pOyAgICAgICAgICAgICAgICAgICAvLyBzMCA9IGFeMlxuICAgICAgICBjb25zdCBhYiA9IHRoaXMuRi5tdWwoYVswXSwgYVsxXSk7ICAgICAgICAgICAgICAgIC8vIGFiID0gYSpiXG4gICAgICAgIGNvbnN0IHMxID0gdGhpcy5GLmFkZChhYiwgYWIpOyAgICAgICAgICAgICAgICAgICAgLy8gczEgPSAyYWI7XG4gICAgICAgIGNvbnN0IHMyID0gdGhpcy5GLnNxdWFyZShcbiAgICAgICAgICAgIHRoaXMuRi5hZGQodGhpcy5GLnN1YihhWzBdLGFbMV0pLCBhWzJdKSk7ICAgICAvLyBzMiA9IChhIC0gYiArIGMpXjI7XG4gICAgICAgIGNvbnN0IGJjID0gdGhpcy5GLm11bChhWzFdLGFbMl0pOyAgICAgICAgICAgICAgICAgLy8gYmMgPSBiKmNcbiAgICAgICAgY29uc3QgczMgPSB0aGlzLkYuYWRkKGJjLCBiYyk7ICAgICAgICAgICAgICAgICAgICAvLyBzMyA9IDIqYmNcbiAgICAgICAgY29uc3QgczQgPSB0aGlzLkYuc3F1YXJlKGFbMl0pOyAgICAgICAgICAgICAgICAgICAvLyBzNCA9IGNeMlxuXG5cbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIHRoaXMuRi5hZGQoXG4gICAgICAgICAgICAgICAgczAsXG4gICAgICAgICAgICAgICAgdGhpcy5fbXVsQnlOb25SZXNpZHVlKHMzKSksICAgICAgICAgICAvLyBzMCArIG5vbl9yZXNpZHVlICogczMsXG4gICAgICAgICAgICB0aGlzLkYuYWRkKFxuICAgICAgICAgICAgICAgIHMxLFxuICAgICAgICAgICAgICAgIHRoaXMuX211bEJ5Tm9uUmVzaWR1ZShzNCkpLCAgICAgICAgICAgLy8gczEgKyBub25fcmVzaWR1ZSAqIHM0LFxuICAgICAgICAgICAgdGhpcy5GLnN1YihcbiAgICAgICAgICAgICAgICB0aGlzLkYuYWRkKCB0aGlzLkYuYWRkKHMxLCBzMikgLCBzMyApLFxuICAgICAgICAgICAgICAgIHRoaXMuRi5hZGQoczAsIHM0KSldOyAgICAgICAgICAgICAgICAgICAgICAvLyBzMSArIHMyICsgczMgLSBzMCAtIHM0XG4gICAgfVxuXG4gICAgaXNaZXJvKGEpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuRi5pc1plcm8oYVswXSkgJiYgdGhpcy5GLmlzWmVybyhhWzFdKSAmJiB0aGlzLkYuaXNaZXJvKGFbMl0pO1xuICAgIH1cblxuICAgIGVxKGEsIGIpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuRi5lcShhWzBdLCBiWzBdKSAmJiB0aGlzLkYuZXEoYVsxXSwgYlsxXSkgJiYgdGhpcy5GLmVxKGFbMl0sIGJbMl0pO1xuICAgIH1cblxuICAgIGFmZmluZShhKSB7XG4gICAgICAgIHJldHVybiBbdGhpcy5GLmFmZmluZShhWzBdKSwgdGhpcy5GLmFmZmluZShhWzFdKSwgdGhpcy5GLmFmZmluZShhWzJdKV07XG4gICAgfVxuXG4gICAgbXVsU2NhbGFyKGJhc2UsIGUpIHtcbiAgICAgICAgcmV0dXJuIG11bFNjYWxhcih0aGlzLCBiYXNlLCBlKTtcbiAgICB9XG5cbiAgICBwb3coYmFzZSwgZSkge1xuICAgICAgICByZXR1cm4gZXhwKHRoaXMsIGJhc2UsIGUpO1xuICAgIH1cblxuICAgIGV4cChiYXNlLCBlKSB7XG4gICAgICAgIHJldHVybiBleHAodGhpcywgYmFzZSwgZSk7XG4gICAgfVxuXG4gICAgdG9TdHJpbmcoYSkge1xuICAgICAgICByZXR1cm4gYFsgJHt0aGlzLkYudG9TdHJpbmcoYVswXSl9ICwgJHt0aGlzLkYudG9TdHJpbmcoYVsxXSl9LCAke3RoaXMuRi50b1N0cmluZyhhWzJdKX0gXWA7XG4gICAgfVxuXG4gICAgZnJvbVJuZyhybmcpIHtcbiAgICAgICAgY29uc3QgYzAgPSB0aGlzLkYuZnJvbVJuZyhybmcpO1xuICAgICAgICBjb25zdCBjMSA9IHRoaXMuRi5mcm9tUm5nKHJuZyk7XG4gICAgICAgIGNvbnN0IGMyID0gdGhpcy5GLmZyb21Sbmcocm5nKTtcbiAgICAgICAgcmV0dXJuIFtjMCwgYzEsIGMyXTtcbiAgICB9XG5cbiAgICBndChhLCBiKSB7XG4gICAgICAgIGlmICh0aGlzLkYuZ3QoYVswXSwgYlswXSkpIHJldHVybiB0cnVlO1xuICAgICAgICBpZiAodGhpcy5GLmd0KGJbMF0sIGFbMF0pKSByZXR1cm4gZmFsc2U7XG4gICAgICAgIGlmICh0aGlzLkYuZ3QoYVsxXSwgYlsxXSkpIHJldHVybiB0cnVlO1xuICAgICAgICBpZiAodGhpcy5GLmd0KGJbMV0sIGFbMV0pKSByZXR1cm4gZmFsc2U7XG4gICAgICAgIGlmICh0aGlzLkYuZ3QoYVsyXSwgYlsyXSkpIHJldHVybiB0cnVlO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG5cbiAgICBnZXEoYSwgYikge1xuICAgICAgICByZXR1cm4gdGhpcy5ndChhLCBiKSB8fCB0aGlzLmVxKGEsIGIpO1xuICAgIH1cblxuICAgIGx0KGEsIGIpIHtcbiAgICAgICAgcmV0dXJuICF0aGlzLmdlcShhLGIpO1xuICAgIH1cblxuICAgIGxlcShhLCBiKSB7XG4gICAgICAgIHJldHVybiAhdGhpcy5ndChhLGIpO1xuICAgIH1cblxuICAgIG5lcShhLCBiKSB7XG4gICAgICAgIHJldHVybiAhdGhpcy5lcShhLGIpO1xuICAgIH1cblxuICAgIHJhbmRvbSgpIHtcbiAgICAgICAgcmV0dXJuIFt0aGlzLkYucmFuZG9tKCksIHRoaXMuRi5yYW5kb20oKSwgdGhpcy5GLnJhbmRvbSgpXTtcbiAgICB9XG5cblxuICAgIHRvUnByTEUoYnVmZiwgbywgZSkge1xuICAgICAgICB0aGlzLkYudG9ScHJMRShidWZmLCBvLCBlWzBdKTtcbiAgICAgICAgdGhpcy5GLnRvUnByTEUoYnVmZiwgbyt0aGlzLkYubjgsIGVbMV0pO1xuICAgICAgICB0aGlzLkYudG9ScHJMRShidWZmLCBvK3RoaXMuRi5uOCoyLCBlWzJdKTtcbiAgICB9XG5cbiAgICB0b1JwckJFKGJ1ZmYsIG8sIGUpIHtcbiAgICAgICAgdGhpcy5GLnRvUnByQkUoYnVmZiwgbywgZVsyXSk7XG4gICAgICAgIHRoaXMuRi50b1JwckJFKGJ1ZmYsIG8rdGhpcy5GLm44LCBlWzFdKTtcbiAgICAgICAgdGhpcy5GLnRvUnByQkUoYnVmZiwgbyt0aGlzLkYubjgqMiwgZVswXSk7XG4gICAgfVxuXG4gICAgdG9ScHJMRU0oYnVmZiwgbywgZSkge1xuICAgICAgICB0aGlzLkYudG9ScHJMRU0oYnVmZiwgbywgZVswXSk7XG4gICAgICAgIHRoaXMuRi50b1JwckxFTShidWZmLCBvK3RoaXMuRi5uOCwgZVsxXSk7XG4gICAgICAgIHRoaXMuRi50b1JwckxFTShidWZmLCBvK3RoaXMuRi5uOCoyLCBlWzJdKTtcbiAgICB9XG5cblxuICAgIHRvUnByQkVNKGJ1ZmYsIG8sIGUpIHtcbiAgICAgICAgdGhpcy5GLnRvUnByQkVNKGJ1ZmYsIG8sIGVbMl0pO1xuICAgICAgICB0aGlzLkYudG9ScHJCRU0oYnVmZiwgbyt0aGlzLkYubjgsIGVbMV0pO1xuICAgICAgICB0aGlzLkYudG9ScHJCRU0oYnVmZiwgbyt0aGlzLkYubjgqMiwgZVswXSk7XG4gICAgfVxuXG4gICAgZnJvbVJwckxFKGJ1ZmYsIG8pIHtcbiAgICAgICAgbyA9IG8gfHwgMDtcbiAgICAgICAgY29uc3QgYzAgPSB0aGlzLkYuZnJvbVJwckxFKGJ1ZmYsIG8pO1xuICAgICAgICBjb25zdCBjMSA9IHRoaXMuRi5mcm9tUnByTEUoYnVmZiwgbyt0aGlzLm44KTtcbiAgICAgICAgY29uc3QgYzIgPSB0aGlzLkYuZnJvbVJwckxFKGJ1ZmYsIG8rdGhpcy5uOCoyKTtcbiAgICAgICAgcmV0dXJuIFtjMCwgYzEsIGMyXTtcbiAgICB9XG5cbiAgICBmcm9tUnByQkUoYnVmZiwgbykge1xuICAgICAgICBvID0gbyB8fCAwO1xuICAgICAgICBjb25zdCBjMiA9IHRoaXMuRi5mcm9tUnByQkUoYnVmZiwgbyk7XG4gICAgICAgIGNvbnN0IGMxID0gdGhpcy5GLmZyb21ScHJCRShidWZmLCBvK3RoaXMubjgpO1xuICAgICAgICBjb25zdCBjMCA9IHRoaXMuRi5mcm9tUnByQkUoYnVmZiwgbyt0aGlzLm44KjIpO1xuICAgICAgICByZXR1cm4gW2MwLCBjMSwgYzJdO1xuICAgIH1cblxuICAgIGZyb21ScHJMRU0oYnVmZiwgbykge1xuICAgICAgICBvID0gbyB8fCAwO1xuICAgICAgICBjb25zdCBjMCA9IHRoaXMuRi5mcm9tUnByTEVNKGJ1ZmYsIG8pO1xuICAgICAgICBjb25zdCBjMSA9IHRoaXMuRi5mcm9tUnByTEVNKGJ1ZmYsIG8rdGhpcy5uOCk7XG4gICAgICAgIGNvbnN0IGMyID0gdGhpcy5GLmZyb21ScHJMRU0oYnVmZiwgbyt0aGlzLm44KjIpO1xuICAgICAgICByZXR1cm4gW2MwLCBjMSwgYzJdO1xuICAgIH1cblxuICAgIGZyb21ScHJCRU0oYnVmZiwgbykge1xuICAgICAgICBvID0gbyB8fCAwO1xuICAgICAgICBjb25zdCBjMiA9IHRoaXMuRi5mcm9tUnByQkVNKGJ1ZmYsIG8pO1xuICAgICAgICBjb25zdCBjMSA9IHRoaXMuRi5mcm9tUnByQkVNKGJ1ZmYsIG8rdGhpcy5uOCk7XG4gICAgICAgIGNvbnN0IGMwID0gdGhpcy5GLmZyb21ScHJCRU0oYnVmZiwgbyt0aGlzLm44KjIpO1xuICAgICAgICByZXR1cm4gW2MwLCBjMSwgYzJdO1xuICAgIH1cblxuICAgIHRvT2JqZWN0KGEpIHtcbiAgICAgICAgcmV0dXJuIGE7XG4gICAgfVxufVxuXG4vKlxuICAgIENvcHlyaWdodCAyMDE4IDBraW1zIGFzc29jaWF0aW9uLlxuXG4gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2Ygc25hcmtqcy5cblxuICAgIHNuYXJranMgaXMgYSBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3JcbiAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlXG4gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pXG4gICAgYW55IGxhdGVyIHZlcnNpb24uXG5cbiAgICBzbmFya2pzIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZXG4gICAgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yXG4gICAgbW9yZSBkZXRhaWxzLlxuXG4gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcgd2l0aFxuICAgIHNuYXJranMuIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXG4qL1xuXG5cblxuZnVuY3Rpb24gaXNHcmVhdGVzdChGLCBhKSB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoYSkpIHtcbiAgICAgICAgZm9yIChsZXQgaT1hLmxlbmd0aC0xOyBpPj0wOyBpLS0pIHtcbiAgICAgICAgICAgIGlmICghRi5GLmlzWmVybyhhW2ldKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBpc0dyZWF0ZXN0KEYuRiwgYVtpXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIDA7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgbmEgPSBGLm5lZyhhKTtcbiAgICAgICAgcmV0dXJuIGd0KGEsIG5hKTtcbiAgICB9XG59XG5cblxuY2xhc3MgRUMge1xuXG4gICAgY29uc3RydWN0b3IoRiwgZykge1xuICAgICAgICB0aGlzLkYgPSBGO1xuICAgICAgICB0aGlzLmcgPSBnO1xuICAgICAgICBpZiAodGhpcy5nLmxlbmd0aCA9PSAyKSB0aGlzLmdbMl0gPSB0aGlzLkYub25lO1xuICAgICAgICB0aGlzLnplcm8gPSBbdGhpcy5GLnplcm8sIHRoaXMuRi5vbmUsIHRoaXMuRi56ZXJvXTtcbiAgICB9XG5cbiAgICBhZGQocDEsIHAyKSB7XG5cbiAgICAgICAgY29uc3QgRiA9IHRoaXMuRjtcblxuICAgICAgICBpZiAodGhpcy5lcShwMSwgdGhpcy56ZXJvKSkgcmV0dXJuIHAyO1xuICAgICAgICBpZiAodGhpcy5lcShwMiwgdGhpcy56ZXJvKSkgcmV0dXJuIHAxO1xuXG4gICAgICAgIGNvbnN0IHJlcyA9IG5ldyBBcnJheSgzKTtcblxuICAgICAgICBjb25zdCBaMVoxID0gRi5zcXVhcmUoIHAxWzJdICk7XG4gICAgICAgIGNvbnN0IFoyWjIgPSBGLnNxdWFyZSggcDJbMl0gKTtcblxuICAgICAgICBjb25zdCBVMSA9IEYubXVsKCBwMVswXSAsIFoyWjIgKTsgICAgIC8vIFUxID0gWDEgICogWjJaMlxuICAgICAgICBjb25zdCBVMiA9IEYubXVsKCBwMlswXSAsIFoxWjEgKTsgICAgIC8vIFUyID0gWDIgICogWjFaMVxuXG4gICAgICAgIGNvbnN0IFoxX2N1YmVkID0gRi5tdWwoIHAxWzJdICwgWjFaMSk7XG4gICAgICAgIGNvbnN0IFoyX2N1YmVkID0gRi5tdWwoIHAyWzJdICwgWjJaMik7XG5cbiAgICAgICAgY29uc3QgUzEgPSBGLm11bCggcDFbMV0gLCBaMl9jdWJlZCk7ICAvLyBTMSA9IFkxICogWjIgKiBaMloyXG4gICAgICAgIGNvbnN0IFMyID0gRi5tdWwoIHAyWzFdICwgWjFfY3ViZWQpOyAgLy8gUzIgPSBZMiAqIFoxICogWjFaMVxuXG4gICAgICAgIGlmIChGLmVxKFUxLFUyKSAmJiBGLmVxKFMxLFMyKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZG91YmxlKHAxKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IEggPSBGLnN1YiggVTIgLCBVMSApOyAgICAgICAgICAgICAgICAgICAgLy8gSCA9IFUyLVUxXG5cbiAgICAgICAgY29uc3QgUzJfbWludXNfUzEgPSBGLnN1YiggUzIgLCBTMSApO1xuXG4gICAgICAgIGNvbnN0IEkgPSBGLnNxdWFyZSggRi5hZGQoSCxIKSApOyAgICAgICAgIC8vIEkgPSAoMiAqIEgpXjJcbiAgICAgICAgY29uc3QgSiA9IEYubXVsKCBIICwgSSApOyAgICAgICAgICAgICAgICAgICAgICAvLyBKID0gSCAqIElcblxuICAgICAgICBjb25zdCByID0gRi5hZGQoIFMyX21pbnVzX1MxICwgUzJfbWludXNfUzEgKTsgIC8vIHIgPSAyICogKFMyLVMxKVxuICAgICAgICBjb25zdCBWID0gRi5tdWwoIFUxICwgSSApOyAgICAgICAgICAgICAgICAgICAgIC8vIFYgPSBVMSAqIElcblxuICAgICAgICByZXNbMF0gPVxuICAgICAgICAgICAgRi5zdWIoXG4gICAgICAgICAgICAgICAgRi5zdWIoIEYuc3F1YXJlKHIpICwgSiApLFxuICAgICAgICAgICAgICAgIEYuYWRkKCBWICwgViApKTsgICAgICAgICAgICAgICAgICAgICAgIC8vIFgzID0gcl4yIC0gSiAtIDIgKiBWXG5cbiAgICAgICAgY29uc3QgUzFfSiA9IEYubXVsKCBTMSAsIEogKTtcblxuICAgICAgICByZXNbMV0gPVxuICAgICAgICAgICAgRi5zdWIoXG4gICAgICAgICAgICAgICAgRi5tdWwoIHIgLCBGLnN1YihWLHJlc1swXSkpLFxuICAgICAgICAgICAgICAgIEYuYWRkKCBTMV9KLFMxX0ogKSk7ICAgICAgICAgICAgICAgICAgIC8vIFkzID0gciAqIChWLVgzKS0yIFMxIEpcblxuICAgICAgICByZXNbMl0gPVxuICAgICAgICAgICAgRi5tdWwoXG4gICAgICAgICAgICAgICAgSCxcbiAgICAgICAgICAgICAgICBGLnN1YihcbiAgICAgICAgICAgICAgICAgICAgRi5zcXVhcmUoIEYuYWRkKHAxWzJdLHAyWzJdKSApLFxuICAgICAgICAgICAgICAgICAgICBGLmFkZCggWjFaMSAsIFoyWjIgKSkpOyAgICAgICAgICAgIC8vIFozID0gKChaMStaMileMi1aMVoxLVoyWjIpICogSFxuXG4gICAgICAgIHJldHVybiByZXM7XG4gICAgfVxuXG4gICAgbmVnKHApIHtcbiAgICAgICAgcmV0dXJuIFtwWzBdLCB0aGlzLkYubmVnKHBbMV0pLCBwWzJdXTtcbiAgICB9XG5cbiAgICBzdWIoYSwgYikge1xuICAgICAgICByZXR1cm4gdGhpcy5hZGQoYSwgdGhpcy5uZWcoYikpO1xuICAgIH1cblxuICAgIGRvdWJsZShwKSB7XG4gICAgICAgIGNvbnN0IEYgPSB0aGlzLkY7XG5cbiAgICAgICAgY29uc3QgcmVzID0gbmV3IEFycmF5KDMpO1xuXG4gICAgICAgIGlmICh0aGlzLmVxKHAsIHRoaXMuemVybykpIHJldHVybiBwO1xuXG4gICAgICAgIGNvbnN0IEEgPSBGLnNxdWFyZSggcFswXSApOyAgICAgICAgICAgICAgICAgICAgLy8gQSA9IFgxXjJcbiAgICAgICAgY29uc3QgQiA9IEYuc3F1YXJlKCBwWzFdICk7ICAgICAgICAgICAgICAgICAgICAvLyBCID0gWTFeMlxuICAgICAgICBjb25zdCBDID0gRi5zcXVhcmUoIEIgKTsgICAgICAgICAgICAgICAgICAgICAgIC8vIEMgPSBCXjJcblxuICAgICAgICBsZXQgRCA9XG4gICAgICAgICAgICBGLnN1YihcbiAgICAgICAgICAgICAgICBGLnNxdWFyZSggRi5hZGQocFswXSAsIEIgKSksXG4gICAgICAgICAgICAgICAgRi5hZGQoIEEgLCBDKSk7XG4gICAgICAgIEQgPSBGLmFkZChELEQpOyAgICAgICAgICAgICAgICAgICAgLy8gRCA9IDIgKiAoKFgxICsgQileMiAtIEEgLSBDKVxuXG4gICAgICAgIGNvbnN0IEUgPSBGLmFkZCggRi5hZGQoQSxBKSwgQSk7ICAgICAgICAgIC8vIEUgPSAzICogQVxuICAgICAgICBjb25zdCBGRiA9Ri5zcXVhcmUoIEUgKTsgICAgICAgICAgICAgICAgICAgICAgIC8vIEYgPSBFXjJcblxuICAgICAgICByZXNbMF0gPSBGLnN1YiggRkYgLCBGLmFkZChELEQpICk7ICAgICAgICAgLy8gWDMgPSBGIC0gMiBEXG5cbiAgICAgICAgbGV0IGVpZ2h0QyA9IEYuYWRkKCBDICwgQyApO1xuICAgICAgICBlaWdodEMgPSBGLmFkZCggZWlnaHRDICwgZWlnaHRDICk7XG4gICAgICAgIGVpZ2h0QyA9IEYuYWRkKCBlaWdodEMgLCBlaWdodEMgKTtcblxuICAgICAgICByZXNbMV0gPVxuICAgICAgICAgICAgRi5zdWIoXG4gICAgICAgICAgICAgICAgRi5tdWwoXG4gICAgICAgICAgICAgICAgICAgIEUsXG4gICAgICAgICAgICAgICAgICAgIEYuc3ViKCBELCByZXNbMF0gKSksXG4gICAgICAgICAgICAgICAgZWlnaHRDKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBZMyA9IEUgKiAoRCAtIFgzKSAtIDggKiBDXG5cbiAgICAgICAgY29uc3QgWTFaMSA9IEYubXVsKCBwWzFdICwgcFsyXSApO1xuICAgICAgICByZXNbMl0gPSBGLmFkZCggWTFaMSAsIFkxWjEgKTsgICAgICAgICAgICAgICAgIC8vIFozID0gMiAqIFkxICogWjFcblxuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH1cblxuICAgIHRpbWVzU2NhbGFyKGJhc2UsIGUpIHtcbiAgICAgICAgcmV0dXJuIG11bFNjYWxhcih0aGlzLCBiYXNlLCBlKTtcbiAgICB9XG5cbiAgICBtdWxTY2FsYXIoYmFzZSwgZSkge1xuICAgICAgICByZXR1cm4gbXVsU2NhbGFyKHRoaXMsIGJhc2UsIGUpO1xuICAgIH1cblxuICAgIGFmZmluZShwKSB7XG4gICAgICAgIGNvbnN0IEYgPSB0aGlzLkY7XG4gICAgICAgIGlmICh0aGlzLmlzWmVybyhwKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuemVybztcbiAgICAgICAgfSBlbHNlIGlmIChGLmVxKHBbMl0sIEYub25lKSkge1xuICAgICAgICAgICAgcmV0dXJuIHA7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBaX2ludiA9IEYuaW52KHBbMl0pO1xuICAgICAgICAgICAgY29uc3QgWjJfaW52ID0gRi5zcXVhcmUoWl9pbnYpO1xuICAgICAgICAgICAgY29uc3QgWjNfaW52ID0gRi5tdWwoWjJfaW52LCBaX2ludik7XG5cbiAgICAgICAgICAgIGNvbnN0IHJlcyA9IG5ldyBBcnJheSgzKTtcbiAgICAgICAgICAgIHJlc1swXSA9IEYubXVsKHBbMF0sWjJfaW52KTtcbiAgICAgICAgICAgIHJlc1sxXSA9IEYubXVsKHBbMV0sWjNfaW52KTtcbiAgICAgICAgICAgIHJlc1syXSA9IEYub25lO1xuXG4gICAgICAgICAgICByZXR1cm4gcmVzO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbXVsdGlBZmZpbmUoYXJyKSB7XG4gICAgICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhhcnIpO1xuICAgICAgICBjb25zdCBGID0gdGhpcy5GO1xuICAgICAgICBjb25zdCBhY2NNdWwgPSBuZXcgQXJyYXkoa2V5cy5sZW5ndGgrMSk7XG4gICAgICAgIGFjY011bFswXSA9IEYub25lO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaTwga2V5cy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgaWYgKEYuZXEoYXJyW2tleXNbaV1dWzJdLCBGLnplcm8pKSB7XG4gICAgICAgICAgICAgICAgYWNjTXVsW2krMV0gPSBhY2NNdWxbaV07XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGFjY011bFtpKzFdID0gRi5tdWwoYWNjTXVsW2ldLCBhcnJba2V5c1tpXV1bMl0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgYWNjTXVsW2tleXMubGVuZ3RoXSA9IEYuaW52KGFjY011bFtrZXlzLmxlbmd0aF0pO1xuXG4gICAgICAgIGZvciAobGV0IGkgPSBrZXlzLmxlbmd0aC0xOyBpPj0wOyBpLS0pIHtcbiAgICAgICAgICAgIGlmIChGLmVxKGFycltrZXlzW2ldXVsyXSwgRi56ZXJvKSkge1xuICAgICAgICAgICAgICAgIGFjY011bFtpXSA9IGFjY011bFtpKzFdO1xuICAgICAgICAgICAgICAgIGFycltrZXlzW2ldXSA9IHRoaXMuemVybztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgY29uc3QgWl9pbnYgPSBGLm11bChhY2NNdWxbaV0sIGFjY011bFtpKzFdKTtcbiAgICAgICAgICAgICAgICBhY2NNdWxbaV0gPSBGLm11bChhcnJba2V5c1tpXV1bMl0sIGFjY011bFtpKzFdKTtcblxuICAgICAgICAgICAgICAgIGNvbnN0IFoyX2ludiA9IEYuc3F1YXJlKFpfaW52KTtcbiAgICAgICAgICAgICAgICBjb25zdCBaM19pbnYgPSBGLm11bChaMl9pbnYsIFpfaW52KTtcblxuICAgICAgICAgICAgICAgIGFycltrZXlzW2ldXVswXSA9IEYubXVsKGFycltrZXlzW2ldXVswXSxaMl9pbnYpO1xuICAgICAgICAgICAgICAgIGFycltrZXlzW2ldXVsxXSA9IEYubXVsKGFycltrZXlzW2ldXVsxXSxaM19pbnYpO1xuICAgICAgICAgICAgICAgIGFycltrZXlzW2ldXVsyXSA9IEYub25lO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICB9XG5cbiAgICBlcShwMSwgcDIpIHtcbiAgICAgICAgY29uc3QgRiA9IHRoaXMuRjtcblxuICAgICAgICBpZiAodGhpcy5GLmVxKHAxWzJdLCB0aGlzLkYuemVybykpIHJldHVybiB0aGlzLkYuZXEocDJbMl0sIHRoaXMuRi56ZXJvKTtcbiAgICAgICAgaWYgKHRoaXMuRi5lcShwMlsyXSwgdGhpcy5GLnplcm8pKSByZXR1cm4gZmFsc2U7XG5cbiAgICAgICAgY29uc3QgWjFaMSA9IEYuc3F1YXJlKCBwMVsyXSApO1xuICAgICAgICBjb25zdCBaMloyID0gRi5zcXVhcmUoIHAyWzJdICk7XG5cbiAgICAgICAgY29uc3QgVTEgPSBGLm11bCggcDFbMF0gLCBaMloyICk7XG4gICAgICAgIGNvbnN0IFUyID0gRi5tdWwoIHAyWzBdICwgWjFaMSApO1xuXG4gICAgICAgIGNvbnN0IFoxX2N1YmVkID0gRi5tdWwoIHAxWzJdICwgWjFaMSk7XG4gICAgICAgIGNvbnN0IFoyX2N1YmVkID0gRi5tdWwoIHAyWzJdICwgWjJaMik7XG5cbiAgICAgICAgY29uc3QgUzEgPSBGLm11bCggcDFbMV0gLCBaMl9jdWJlZCk7XG4gICAgICAgIGNvbnN0IFMyID0gRi5tdWwoIHAyWzFdICwgWjFfY3ViZWQpO1xuXG4gICAgICAgIHJldHVybiAoRi5lcShVMSxVMikgJiYgRi5lcShTMSxTMikpO1xuICAgIH1cblxuICAgIGlzWmVybyhwKSB7XG4gICAgICAgIHJldHVybiB0aGlzLkYuaXNaZXJvKHBbMl0pO1xuICAgIH1cblxuICAgIHRvU3RyaW5nKHApIHtcbiAgICAgICAgY29uc3QgY3AgPSB0aGlzLmFmZmluZShwKTtcbiAgICAgICAgcmV0dXJuIGBbICR7dGhpcy5GLnRvU3RyaW5nKGNwWzBdKX0gLCAke3RoaXMuRi50b1N0cmluZyhjcFsxXSl9IF1gO1xuICAgIH1cblxuICAgIGZyb21Sbmcocm5nKSB7XG4gICAgICAgIGNvbnN0IEYgPSB0aGlzLkY7XG4gICAgICAgIGxldCBQID0gW107XG4gICAgICAgIGxldCBncmVhdGVzdDtcbiAgICAgICAgZG8ge1xuICAgICAgICAgICAgUFswXSA9IEYuZnJvbVJuZyhybmcpO1xuICAgICAgICAgICAgZ3JlYXRlc3QgPSBybmcubmV4dEJvb2woKTtcbiAgICAgICAgICAgIGNvbnN0IHgzYiA9IEYuYWRkKEYubXVsKEYuc3F1YXJlKFBbMF0pLCBQWzBdKSwgdGhpcy5iKTtcbiAgICAgICAgICAgIFBbMV0gPSBGLnNxcnQoeDNiKTtcbiAgICAgICAgfSB3aGlsZSAoKFBbMV0gPT0gbnVsbCl8fChGLmlzWmVyb1tQXSkpO1xuXG4gICAgICAgIGNvbnN0IHMgPSBpc0dyZWF0ZXN0KEYsIFBbMV0pO1xuICAgICAgICBpZiAoZ3JlYXRlc3QgXiBzKSBQWzFdID0gRi5uZWcoUFsxXSk7XG4gICAgICAgIFBbMl0gPSBGLm9uZTtcblxuICAgICAgICBpZiAodGhpcy5jb2ZhY3Rvcikge1xuICAgICAgICAgICAgUCA9IHRoaXMubXVsU2NhbGFyKFAsIHRoaXMuY29mYWN0b3IpO1xuICAgICAgICB9XG5cbiAgICAgICAgUCA9IHRoaXMuYWZmaW5lKFApO1xuXG4gICAgICAgIHJldHVybiBQO1xuXG4gICAgfVxuXG4gICAgdG9ScHJMRShidWZmLCBvLCBwKSB7XG4gICAgICAgIHAgPSB0aGlzLmFmZmluZShwKTtcbiAgICAgICAgaWYgKHRoaXMuaXNaZXJvKHApKSB7XG4gICAgICAgICAgICBjb25zdCBCdWZmViA9IG5ldyBVaW50OEFycmF5KGJ1ZmYsIG8sIHRoaXMuRi5uOCoyKTtcbiAgICAgICAgICAgIEJ1ZmZWLmZpbGwoMCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5GLnRvUnByTEUoYnVmZiwgbywgcFswXSk7XG4gICAgICAgIHRoaXMuRi50b1JwckxFKGJ1ZmYsIG8rdGhpcy5GLm44LCBwWzFdKTtcbiAgICB9XG5cbiAgICB0b1JwckJFKGJ1ZmYsIG8sIHApIHtcbiAgICAgICAgcCA9IHRoaXMuYWZmaW5lKHApO1xuICAgICAgICBpZiAodGhpcy5pc1plcm8ocCkpIHtcbiAgICAgICAgICAgIGNvbnN0IEJ1ZmZWID0gbmV3IFVpbnQ4QXJyYXkoYnVmZiwgbywgdGhpcy5GLm44KjIpO1xuICAgICAgICAgICAgQnVmZlYuZmlsbCgwKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLkYudG9ScHJCRShidWZmLCBvLCBwWzBdKTtcbiAgICAgICAgdGhpcy5GLnRvUnByQkUoYnVmZiwgbyt0aGlzLkYubjgsIHBbMV0pO1xuICAgIH1cblxuICAgIHRvUnByTEVNKGJ1ZmYsIG8sIHApIHtcbiAgICAgICAgcCA9IHRoaXMuYWZmaW5lKHApO1xuICAgICAgICBpZiAodGhpcy5pc1plcm8ocCkpIHtcbiAgICAgICAgICAgIGNvbnN0IEJ1ZmZWID0gbmV3IFVpbnQ4QXJyYXkoYnVmZiwgbywgdGhpcy5GLm44KjIpO1xuICAgICAgICAgICAgQnVmZlYuZmlsbCgwKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLkYudG9ScHJMRU0oYnVmZiwgbywgcFswXSk7XG4gICAgICAgIHRoaXMuRi50b1JwckxFTShidWZmLCBvK3RoaXMuRi5uOCwgcFsxXSk7XG4gICAgfVxuXG4gICAgdG9ScHJMRUpNKGJ1ZmYsIG8sIHApIHtcbiAgICAgICAgcCA9IHRoaXMuYWZmaW5lKHApO1xuICAgICAgICBpZiAodGhpcy5pc1plcm8ocCkpIHtcbiAgICAgICAgICAgIGNvbnN0IEJ1ZmZWID0gbmV3IFVpbnQ4QXJyYXkoYnVmZiwgbywgdGhpcy5GLm44KjIpO1xuICAgICAgICAgICAgQnVmZlYuZmlsbCgwKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLkYudG9ScHJMRU0oYnVmZiwgbywgcFswXSk7XG4gICAgICAgIHRoaXMuRi50b1JwckxFTShidWZmLCBvK3RoaXMuRi5uOCwgcFsxXSk7XG4gICAgICAgIHRoaXMuRi50b1JwckxFTShidWZmLCBvKzIqdGhpcy5GLm44LCBwWzJdKTtcbiAgICB9XG5cblxuICAgIHRvUnByQkVNKGJ1ZmYsIG8sIHApIHtcbiAgICAgICAgcCA9IHRoaXMuYWZmaW5lKHApO1xuICAgICAgICBpZiAodGhpcy5pc1plcm8ocCkpIHtcbiAgICAgICAgICAgIGNvbnN0IEJ1ZmZWID0gbmV3IFVpbnQ4QXJyYXkoYnVmZiwgbywgdGhpcy5GLm44KjIpO1xuICAgICAgICAgICAgQnVmZlYuZmlsbCgwKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLkYudG9ScHJCRU0oYnVmZiwgbywgcFswXSk7XG4gICAgICAgIHRoaXMuRi50b1JwckJFTShidWZmLCBvK3RoaXMuRi5uOCwgcFsxXSk7XG4gICAgfVxuXG4gICAgZnJvbVJwckxFKGJ1ZmYsIG8pIHtcbiAgICAgICAgbyA9IG8gfHwgMDtcbiAgICAgICAgY29uc3QgeCA9IHRoaXMuRi5mcm9tUnByTEUoYnVmZiwgbyk7XG4gICAgICAgIGNvbnN0IHkgPSB0aGlzLkYuZnJvbVJwckxFKGJ1ZmYsIG8rdGhpcy5GLm44KTtcbiAgICAgICAgaWYgKHRoaXMuRi5pc1plcm8oeCkgJiYgdGhpcy5GLmlzWmVybyh5KSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuemVybztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gW3gsIHksIHRoaXMuRi5vbmVdO1xuICAgIH1cblxuICAgIGZyb21ScHJCRShidWZmLCBvKSB7XG4gICAgICAgIG8gPSBvIHx8IDA7XG4gICAgICAgIGNvbnN0IHggPSB0aGlzLkYuZnJvbVJwckJFKGJ1ZmYsIG8pO1xuICAgICAgICBjb25zdCB5ID0gdGhpcy5GLmZyb21ScHJCRShidWZmLCBvK3RoaXMuRi5uOCk7XG4gICAgICAgIGlmICh0aGlzLkYuaXNaZXJvKHgpICYmIHRoaXMuRi5pc1plcm8oeSkpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnplcm87XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFt4LCB5LCB0aGlzLkYub25lXTtcbiAgICB9XG5cbiAgICBmcm9tUnByTEVNKGJ1ZmYsIG8pIHtcbiAgICAgICAgbyA9IG8gfHwgMDtcbiAgICAgICAgY29uc3QgeCA9IHRoaXMuRi5mcm9tUnByTEVNKGJ1ZmYsIG8pO1xuICAgICAgICBjb25zdCB5ID0gdGhpcy5GLmZyb21ScHJMRU0oYnVmZiwgbyt0aGlzLkYubjgpO1xuICAgICAgICBpZiAodGhpcy5GLmlzWmVybyh4KSAmJiB0aGlzLkYuaXNaZXJvKHkpKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy56ZXJvO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBbeCwgeSwgdGhpcy5GLm9uZV07XG4gICAgfVxuXG4gICAgZnJvbVJwckxFSk0oYnVmZiwgbykge1xuICAgICAgICBvID0gbyB8fCAwO1xuICAgICAgICBjb25zdCB4ID0gdGhpcy5GLmZyb21ScHJMRU0oYnVmZiwgbyk7XG4gICAgICAgIGNvbnN0IHkgPSB0aGlzLkYuZnJvbVJwckxFTShidWZmLCBvK3RoaXMuRi5uOCk7XG4gICAgICAgIGNvbnN0IHogPSB0aGlzLkYuZnJvbVJwckxFTShidWZmLCBvK3RoaXMuRi5uOCoyKTtcbiAgICAgICAgaWYgKHRoaXMuRi5pc1plcm8oeCkgJiYgdGhpcy5GLmlzWmVybyh5KSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuemVybztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gW3gsIHksIHpdO1xuICAgIH1cblxuICAgIGZyb21ScHJCRU0oYnVmZiwgbykge1xuICAgICAgICBvID0gbyB8fCAwO1xuICAgICAgICBjb25zdCB4ID0gdGhpcy5GLmZyb21ScHJCRU0oYnVmZiwgbyk7XG4gICAgICAgIGNvbnN0IHkgPSB0aGlzLkYuZnJvbVJwckJFTShidWZmLCBvK3RoaXMuRi5uOCk7XG4gICAgICAgIGlmICh0aGlzLkYuaXNaZXJvKHgpICYmIHRoaXMuRi5pc1plcm8oeSkpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnplcm87XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFt4LCB5LCB0aGlzLkYub25lXTtcbiAgICB9XG5cbiAgICBmcm9tUnByQ29tcHJlc3NlZChidWZmLCBvKSB7XG4gICAgICAgIGNvbnN0IEYgPSB0aGlzLkY7XG4gICAgICAgIGNvbnN0IHYgPSBuZXcgVWludDhBcnJheShidWZmLmJ1ZmZlciwgbywgRi5uOCk7XG4gICAgICAgIGlmICh2WzBdICYgMHg0MCkgcmV0dXJuIHRoaXMuemVybztcbiAgICAgICAgY29uc3QgUCA9IG5ldyBBcnJheSgzKTtcblxuICAgICAgICBjb25zdCBncmVhdGVzdCA9ICgodlswXSAmIDB4ODApICE9IDApO1xuICAgICAgICB2WzBdID0gdlswXSAmIDB4N0Y7XG4gICAgICAgIFBbMF0gPSBGLmZyb21ScHJCRShidWZmLCBvKTtcbiAgICAgICAgaWYgKGdyZWF0ZXN0KSB2WzBdID0gdlswXSB8IDB4ODA7ICAvLyBzZXQgYmFjayBhZ2FpbiB0aGUgb2xkIHZhbHVlXG5cbiAgICAgICAgY29uc3QgeDNiID0gRi5hZGQoRi5tdWwoRi5zcXVhcmUoUFswXSksIFBbMF0pLCB0aGlzLmIpO1xuICAgICAgICBQWzFdID0gRi5zcXJ0KHgzYik7XG5cbiAgICAgICAgaWYgKFBbMV0gPT09IG51bGwpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgUG9pbnQhXCIpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcyA9IGlzR3JlYXRlc3QoRiwgUFsxXSk7XG4gICAgICAgIGlmIChncmVhdGVzdCBeIHMpIFBbMV0gPSBGLm5lZyhQWzFdKTtcbiAgICAgICAgUFsyXSA9IEYub25lO1xuXG4gICAgICAgIHJldHVybiBQO1xuICAgIH1cblxuICAgIHRvUnByQ29tcHJlc3NlZChidWZmLCBvLCBwKSB7XG4gICAgICAgIHAgPSB0aGlzLmFmZmluZShwKTtcbiAgICAgICAgY29uc3QgdiA9IG5ldyBVaW50OEFycmF5KGJ1ZmYuYnVmZmVyLCBvLCB0aGlzLkYubjgpO1xuICAgICAgICBpZiAodGhpcy5pc1plcm8ocCkpIHtcbiAgICAgICAgICAgIHYuZmlsbCgwKTtcbiAgICAgICAgICAgIHZbMF0gPSAweDQwO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuRi50b1JwckJFKGJ1ZmYsIG8sIHBbMF0pO1xuXG4gICAgICAgIGlmIChpc0dyZWF0ZXN0KHRoaXMuRiwgcFsxXSkpIHtcbiAgICAgICAgICAgIHZbMF0gPSB2WzBdIHwgMHg4MDtcbiAgICAgICAgfVxuICAgIH1cblxuXG4gICAgZnJvbVJwclVuY29tcHJlc3NlZChidWZmLCBvKSB7XG4gICAgICAgIGlmIChidWZmWzBdICYgMHg0MCkgcmV0dXJuIHRoaXMuemVybztcblxuICAgICAgICByZXR1cm4gdGhpcy5mcm9tUnByQkUoYnVmZiwgbyk7XG4gICAgfVxuXG4gICAgdG9ScHJVbmNvbXByZXNzZWQoYnVmZiwgbywgcCkge1xuICAgICAgICB0aGlzLnRvUnByQkUoYnVmZiwgbywgcCk7XG5cbiAgICAgICAgaWYgKHRoaXMuaXNaZXJvKHApKSB7XG4gICAgICAgICAgICBidWZmW29dID0gYnVmZltvXSB8IDB4NDA7XG4gICAgICAgIH1cbiAgICB9XG5cblxufVxuXG52YXIgdXRpbHMkNiA9IHt9O1xuXG4vKlxuICAgIENvcHlyaWdodCAyMDE5IDBLSU1TIGFzc29jaWF0aW9uLlxuXG4gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2Ygd2FzbXNuYXJrIChXZWIgQXNzZW1ibHkgemtTbmFyayBQcm92ZXIpLlxuXG4gICAgd2FzbXNuYXJrIGlzIGEgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdFxuICAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3JcbiAgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuXG4gICAgd2FzbXNuYXJrIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUXG4gICAgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZXG4gICAgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljXG4gICAgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuXG4gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAgICBhbG9uZyB3aXRoIHdhc21zbmFyay4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cbiovXG5cbnV0aWxzJDYuYmlnSW50MkJ5dGVzTEUgPSBmdW5jdGlvbiBiaWdJbnQyQnl0ZXNMRShfYSwgbGVuKSB7XG4gICAgY29uc3QgYiA9IEFycmF5KGxlbik7XG4gICAgbGV0IHYgPSBCaWdJbnQoX2EpO1xuICAgIGZvciAobGV0IGk9MDsgaTxsZW47IGkrKykge1xuICAgICAgICBiW2ldID0gTnVtYmVyKHYgJiAweEZGbik7XG4gICAgICAgIHYgPSB2ID4+IDhuO1xuICAgIH1cbiAgICByZXR1cm4gYjtcbn07XG5cbnV0aWxzJDYuYmlnSW50MlUzMkxFID0gZnVuY3Rpb24gYmlnSW50MkJ5dGVzTEUoX2EsIGxlbikge1xuICAgIGNvbnN0IGIgPSBBcnJheShsZW4pO1xuICAgIGxldCB2ID0gQmlnSW50KF9hKTtcbiAgICBmb3IgKGxldCBpPTA7IGk8bGVuOyBpKyspIHtcbiAgICAgICAgYltpXSA9IE51bWJlcih2ICYgMHhGRkZGRkZGRm4pO1xuICAgICAgICB2ID0gdiA+PiAzMm47XG4gICAgfVxuICAgIHJldHVybiBiO1xufTtcblxudXRpbHMkNi5pc09jYW1OdW0gPSBmdW5jdGlvbihhKSB7XG4gICAgaWYgKCFBcnJheS5pc0FycmF5KGEpKSByZXR1cm4gZmFsc2U7XG4gICAgaWYgKGEubGVuZ3RoICE9IDMpIHJldHVybiBmYWxzZTtcbiAgICBpZiAodHlwZW9mIGFbMF0gIT09IFwibnVtYmVyXCIpIHJldHVybiBmYWxzZTtcbiAgICBpZiAodHlwZW9mIGFbMV0gIT09IFwibnVtYmVyXCIpIHJldHVybiBmYWxzZTtcbiAgICBpZiAoIUFycmF5LmlzQXJyYXkoYVsyXSkpIHJldHVybiBmYWxzZTtcbiAgICByZXR1cm4gdHJ1ZTtcbn07XG5cbi8qXG4gICAgQ29weXJpZ2h0IDIwMTkgMEtJTVMgYXNzb2NpYXRpb24uXG5cbiAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB3YXNtc25hcmsgKFdlYiBBc3NlbWJseSB6a1NuYXJrIFByb3ZlcikuXG5cbiAgICB3YXNtc25hcmsgaXMgYSBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0XG4gICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxuICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG5cbiAgICB3YXNtc25hcmsgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVRcbiAgICBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFlcbiAgICBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWNcbiAgICBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG5cbiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICAgIGFsb25nIHdpdGggd2FzbXNuYXJrLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuKi9cblxudmFyIGJ1aWxkX2ludCA9IGZ1bmN0aW9uIGJ1aWxkSW50KG1vZHVsZSwgbjY0LCBfcHJlZml4KSB7XG5cbiAgICBjb25zdCBwcmVmaXggPSBfcHJlZml4IHx8IFwiaW50XCI7XG4gICAgaWYgKG1vZHVsZS5tb2R1bGVzW3ByZWZpeF0pIHJldHVybiBwcmVmaXg7ICAvLyBhbHJlYWR5IGJ1aWxkZWRcbiAgICBtb2R1bGUubW9kdWxlc1twcmVmaXhdID0ge307XG5cbiAgICBjb25zdCBuMzIgPSBuNjQqMjtcbiAgICBjb25zdCBuOCA9IG42NCo4O1xuXG4gICAgZnVuY3Rpb24gYnVpbGRDb3B5KCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCtcIl9jb3B5XCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicHhcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwclwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGZvciAobGV0IGk9MDsgaTxuNjQ7IGkrKykge1xuICAgICAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgICAgIGMuaTY0X3N0b3JlKFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicHJcIiksXG4gICAgICAgICAgICAgICAgICAgIGkqOCxcbiAgICAgICAgICAgICAgICAgICAgYy5pNjRfbG9hZChcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJweFwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGkqOFxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGJ1aWxkWmVybygpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrXCJfemVyb1wiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInByXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPG42NDsgaSsrKSB7XG4gICAgICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICAgICAgYy5pNjRfc3RvcmUoXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwclwiKSxcbiAgICAgICAgICAgICAgICAgICAgaSo4LFxuICAgICAgICAgICAgICAgICAgICBjLmk2NF9jb25zdCgwKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBidWlsZE9uZSgpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrXCJfb25lXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicHJcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLmk2NF9zdG9yZShcbiAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicHJcIiksXG4gICAgICAgICAgICAgICAgMCxcbiAgICAgICAgICAgICAgICBjLmk2NF9jb25zdCgxKVxuICAgICAgICAgICAgKVxuICAgICAgICApO1xuICAgICAgICBmb3IgKGxldCBpPTE7IGk8bjY0OyBpKyspIHtcbiAgICAgICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgICAgICBjLmk2NF9zdG9yZShcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInByXCIpLFxuICAgICAgICAgICAgICAgICAgICBpKjgsXG4gICAgICAgICAgICAgICAgICAgIGMuaTY0X2NvbnN0KDApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGJ1aWxkSXNaZXJvKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCtcIl9pc1plcm9cIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJweFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5zZXRSZXR1cm5UeXBlKFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgZnVuY3Rpb24gZ2V0Q29tcENvZGUobikge1xuICAgICAgICAgICAgaWYgKG49PTApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gIGMucmV0KGMuaTY0X2VxeihcbiAgICAgICAgICAgICAgICAgICAgYy5pNjRfbG9hZChjLmdldExvY2FsKFwicHhcIikpXG4gICAgICAgICAgICAgICAgKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gYy5pZihcbiAgICAgICAgICAgICAgICBjLmk2NF9lcXooXG4gICAgICAgICAgICAgICAgICAgIGMuaTY0X2xvYWQoYy5nZXRMb2NhbChcInB4XCIpLCBuKjggKVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgZ2V0Q29tcENvZGUobi0xKSxcbiAgICAgICAgICAgICAgICBjLnJldChjLmkzMl9jb25zdCgwKSlcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICBmLmFkZENvZGUoZ2V0Q29tcENvZGUobjY0LTEpKTtcbiAgICAgICAgZi5hZGRDb2RlKGMucmV0KGMuaTMyX2NvbnN0KDApKSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYnVpbGRFcSgpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrXCJfZXFcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJweFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInB5XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLnNldFJldHVyblR5cGUoXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBmdW5jdGlvbiBnZXRDb21wQ29kZShuKSB7XG4gICAgICAgICAgICBpZiAobj09MCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAgYy5yZXQoYy5pNjRfZXEoXG4gICAgICAgICAgICAgICAgICAgIGMuaTY0X2xvYWQoYy5nZXRMb2NhbChcInB4XCIpKSxcbiAgICAgICAgICAgICAgICAgICAgYy5pNjRfbG9hZChjLmdldExvY2FsKFwicHlcIikpXG4gICAgICAgICAgICAgICAgKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gYy5pZihcbiAgICAgICAgICAgICAgICBjLmk2NF9lcShcbiAgICAgICAgICAgICAgICAgICAgYy5pNjRfbG9hZChjLmdldExvY2FsKFwicHhcIiksIG4qOCApLFxuICAgICAgICAgICAgICAgICAgICBjLmk2NF9sb2FkKGMuZ2V0TG9jYWwoXCJweVwiKSwgbio4IClcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGdldENvbXBDb2RlKG4tMSksXG4gICAgICAgICAgICAgICAgYy5yZXQoYy5pMzJfY29uc3QoMCkpXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgZi5hZGRDb2RlKGdldENvbXBDb2RlKG42NC0xKSk7XG4gICAgICAgIGYuYWRkQ29kZShjLnJldChjLmkzMl9jb25zdCgwKSkpO1xuICAgIH1cblxuXG5cbiAgICBmdW5jdGlvbiBidWlsZEd0ZSgpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrXCJfZ3RlXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicHhcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJweVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5zZXRSZXR1cm5UeXBlKFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgZnVuY3Rpb24gZ2V0Q29tcENvZGUobikge1xuICAgICAgICAgICAgaWYgKG49PTApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gIGMucmV0KGMuaTY0X2dlX3UoXG4gICAgICAgICAgICAgICAgICAgIGMuaTY0X2xvYWQoYy5nZXRMb2NhbChcInB4XCIpKSxcbiAgICAgICAgICAgICAgICAgICAgYy5pNjRfbG9hZChjLmdldExvY2FsKFwicHlcIikpXG4gICAgICAgICAgICAgICAgKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gYy5pZihcbiAgICAgICAgICAgICAgICBjLmk2NF9sdF91KFxuICAgICAgICAgICAgICAgICAgICBjLmk2NF9sb2FkKGMuZ2V0TG9jYWwoXCJweFwiKSwgbio4ICksXG4gICAgICAgICAgICAgICAgICAgIGMuaTY0X2xvYWQoYy5nZXRMb2NhbChcInB5XCIpLCBuKjggKVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgYy5yZXQoYy5pMzJfY29uc3QoMCkpLFxuICAgICAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgICAgIGMuaTY0X2d0X3UoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9sb2FkKGMuZ2V0TG9jYWwoXCJweFwiKSwgbio4ICksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9sb2FkKGMuZ2V0TG9jYWwoXCJweVwiKSwgbio4IClcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgYy5yZXQoYy5pMzJfY29uc3QoMSkpLFxuICAgICAgICAgICAgICAgICAgICBnZXRDb21wQ29kZShuLTEpXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGYuYWRkQ29kZShnZXRDb21wQ29kZShuNjQtMSkpO1xuICAgICAgICBmLmFkZENvZGUoYy5yZXQoYy5pMzJfY29uc3QoMCkpKTtcbiAgICB9XG5cblxuXG4gICAgZnVuY3Rpb24gYnVpbGRBZGQoKSB7XG5cbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrXCJfYWRkXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInlcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJyXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLnNldFJldHVyblR5cGUoXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJjXCIsIFwiaTY0XCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgZi5hZGRDb2RlKGMuc2V0TG9jYWwoXG4gICAgICAgICAgICBcImNcIixcbiAgICAgICAgICAgIGMuaTY0X2FkZChcbiAgICAgICAgICAgICAgICBjLmk2NF9sb2FkMzJfdShjLmdldExvY2FsKFwieFwiKSksXG4gICAgICAgICAgICAgICAgYy5pNjRfbG9hZDMyX3UoYy5nZXRMb2NhbChcInlcIikpXG4gICAgICAgICAgICApXG4gICAgICAgICkpO1xuXG4gICAgICAgIGYuYWRkQ29kZShjLmk2NF9zdG9yZTMyKFxuICAgICAgICAgICAgYy5nZXRMb2NhbChcInJcIiksXG4gICAgICAgICAgICBjLmdldExvY2FsKFwiY1wiKSxcbiAgICAgICAgKSk7XG5cbiAgICAgICAgZm9yIChsZXQgaT0xOyBpPG4zMjsgaSsrKSB7XG4gICAgICAgICAgICBmLmFkZENvZGUoYy5zZXRMb2NhbCggXCJjXCIsXG4gICAgICAgICAgICAgICAgYy5pNjRfYWRkKFxuICAgICAgICAgICAgICAgICAgICBjLmk2NF9hZGQoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9sb2FkMzJfdShjLmdldExvY2FsKFwieFwiKSwgNCppKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2xvYWQzMl91KGMuZ2V0TG9jYWwoXCJ5XCIpLCA0KmkpXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgIGMuaTY0X3Nocl91IChjLmdldExvY2FsKFwiY1wiKSwgYy5pNjRfY29uc3QoMzIpKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICkpO1xuXG4gICAgICAgICAgICBmLmFkZENvZGUoYy5pNjRfc3RvcmUzMihcbiAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiclwiKSxcbiAgICAgICAgICAgICAgICBpKjQsXG4gICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImNcIilcbiAgICAgICAgICAgICkpO1xuICAgICAgICB9XG5cbiAgICAgICAgZi5hZGRDb2RlKGMuaTMyX3dyYXBfaTY0KGMuaTY0X3Nocl91IChjLmdldExvY2FsKFwiY1wiKSwgYy5pNjRfY29uc3QoMzIpKSkpO1xuICAgIH1cblxuXG4gICAgZnVuY3Rpb24gYnVpbGRTdWIoKSB7XG5cbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrXCJfc3ViXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInlcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJyXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLnNldFJldHVyblR5cGUoXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJjXCIsIFwiaTY0XCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgZi5hZGRDb2RlKGMuc2V0TG9jYWwoXG4gICAgICAgICAgICBcImNcIixcbiAgICAgICAgICAgIGMuaTY0X3N1YihcbiAgICAgICAgICAgICAgICBjLmk2NF9sb2FkMzJfdShjLmdldExvY2FsKFwieFwiKSksXG4gICAgICAgICAgICAgICAgYy5pNjRfbG9hZDMyX3UoYy5nZXRMb2NhbChcInlcIikpXG4gICAgICAgICAgICApXG4gICAgICAgICkpO1xuXG4gICAgICAgIGYuYWRkQ29kZShjLmk2NF9zdG9yZTMyKFxuICAgICAgICAgICAgYy5nZXRMb2NhbChcInJcIiksXG4gICAgICAgICAgICBjLmk2NF9hbmQoXG4gICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImNcIiksXG4gICAgICAgICAgICAgICAgYy5pNjRfY29uc3QoXCIweEZGRkZGRkZGXCIpXG4gICAgICAgICAgICApXG4gICAgICAgICkpO1xuXG4gICAgICAgIGZvciAobGV0IGk9MTsgaTxuMzI7IGkrKykge1xuICAgICAgICAgICAgZi5hZGRDb2RlKGMuc2V0TG9jYWwoIFwiY1wiLFxuICAgICAgICAgICAgICAgIGMuaTY0X2FkZChcbiAgICAgICAgICAgICAgICAgICAgYy5pNjRfc3ViKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfbG9hZDMyX3UoYy5nZXRMb2NhbChcInhcIiksIDQqaSksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9sb2FkMzJfdShjLmdldExvY2FsKFwieVwiKSwgNCppKVxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICBjLmk2NF9zaHJfcyAoYy5nZXRMb2NhbChcImNcIiksIGMuaTY0X2NvbnN0KDMyKSlcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApKTtcblxuICAgICAgICAgICAgZi5hZGRDb2RlKGMuaTY0X3N0b3JlMzIoXG4gICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInJcIiksXG4gICAgICAgICAgICAgICAgaSo0LFxuICAgICAgICAgICAgICAgIGMuaTY0X2FuZCggYy5nZXRMb2NhbChcImNcIiksIGMuaTY0X2NvbnN0KFwiMHhGRkZGRkZGRlwiKSlcbiAgICAgICAgICAgICkpO1xuICAgICAgICB9XG5cbiAgICAgICAgZi5hZGRDb2RlKGMuaTMyX3dyYXBfaTY0ICggYy5pNjRfc2hyX3MgKGMuZ2V0TG9jYWwoXCJjXCIpLCBjLmk2NF9jb25zdCgzMikpKSk7XG4gICAgfVxuXG5cbiAgICBmdW5jdGlvbiBidWlsZE11bCgpIHtcblxuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCtcIl9tdWxcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInJcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJjMFwiLCBcImk2NFwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcImMxXCIsIFwiaTY0XCIpO1xuXG5cbiAgICAgICAgZm9yIChsZXQgaT0wO2k8bjMyOyBpKyspIHtcbiAgICAgICAgICAgIGYuYWRkTG9jYWwoXCJ4XCIraSwgXCJpNjRcIik7XG4gICAgICAgICAgICBmLmFkZExvY2FsKFwieVwiK2ksIFwiaTY0XCIpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCBsb2FkWCA9IFtdO1xuICAgICAgICBjb25zdCBsb2FkWSA9IFtdO1xuICAgICAgICBmdW5jdGlvbiBtdWxpaihpLCBqKSB7XG4gICAgICAgICAgICBsZXQgWCxZO1xuICAgICAgICAgICAgaWYgKCFsb2FkWFtpXSkge1xuICAgICAgICAgICAgICAgIFggPSBjLnRlZUxvY2FsKFwieFwiK2ksIGMuaTY0X2xvYWQzMl91KCBjLmdldExvY2FsKFwieFwiKSwgaSo0KSk7XG4gICAgICAgICAgICAgICAgbG9hZFhbaV0gPSB0cnVlO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBYID0gYy5nZXRMb2NhbChcInhcIitpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghbG9hZFlbal0pIHtcbiAgICAgICAgICAgICAgICBZID0gYy50ZWVMb2NhbChcInlcIitqLCBjLmk2NF9sb2FkMzJfdSggYy5nZXRMb2NhbChcInlcIiksIGoqNCkpO1xuICAgICAgICAgICAgICAgIGxvYWRZW2pdID0gdHJ1ZTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgWSA9IGMuZ2V0TG9jYWwoXCJ5XCIraik7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBjLmk2NF9tdWwoIFgsIFkgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBjMCA9IFwiYzBcIjtcbiAgICAgICAgbGV0IGMxID0gXCJjMVwiO1xuXG4gICAgICAgIGZvciAobGV0IGs9MDsgazxuMzIqMi0xOyBrKyspIHtcbiAgICAgICAgICAgIGZvciAobGV0IGk9TWF0aC5tYXgoMCwgay1uMzIrMSk7IChpPD1rKSYmKGk8bjMyKTsgaSsrKSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgaj0gay1pO1xuXG4gICAgICAgICAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgICAgICAgICBjLnNldExvY2FsKGMwLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfYWRkKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2FuZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChjMCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2NvbnN0KDB4RkZGRkZGRkYpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdWxpaihpLGopXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgICAgICAgICBjLnNldExvY2FsKGMxLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfYWRkKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoYzEpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X3Nocl91KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKGMwKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfY29uc3QoMzIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICAgICAgYy5pNjRfc3RvcmUzMihcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInJcIiksXG4gICAgICAgICAgICAgICAgICAgIGsqNCxcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChjMClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgW2MwLCBjMV0gPSBbYzEsIGMwXTtcbiAgICAgICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKGMxLFxuICAgICAgICAgICAgICAgICAgICBjLmk2NF9zaHJfdShcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoYzApLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfY29uc3QoMzIpXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuaTY0X3N0b3JlMzIoXG4gICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInJcIiksXG4gICAgICAgICAgICAgICAgbjMyKjQqMi00LFxuICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoYzApXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG5cbiAgICB9XG5cblxuXG4gICAgZnVuY3Rpb24gYnVpbGRTcXVhcmUoKSB7XG5cbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrXCJfc3F1YXJlXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInJcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJjMFwiLCBcImk2NFwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcImMxXCIsIFwiaTY0XCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiYzBfb2xkXCIsIFwiaTY0XCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiYzFfb2xkXCIsIFwiaTY0XCIpO1xuXG5cbiAgICAgICAgZm9yIChsZXQgaT0wO2k8bjMyOyBpKyspIHtcbiAgICAgICAgICAgIGYuYWRkTG9jYWwoXCJ4XCIraSwgXCJpNjRcIik7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IGxvYWRYID0gW107XG4gICAgICAgIGZ1bmN0aW9uIG11bGlqKGksIGopIHtcbiAgICAgICAgICAgIGxldCBYLFk7XG4gICAgICAgICAgICBpZiAoIWxvYWRYW2ldKSB7XG4gICAgICAgICAgICAgICAgWCA9IGMudGVlTG9jYWwoXCJ4XCIraSwgYy5pNjRfbG9hZDMyX3UoIGMuZ2V0TG9jYWwoXCJ4XCIpLCBpKjQpKTtcbiAgICAgICAgICAgICAgICBsb2FkWFtpXSA9IHRydWU7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIFggPSBjLmdldExvY2FsKFwieFwiK2kpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCFsb2FkWFtqXSkge1xuICAgICAgICAgICAgICAgIFkgPSBjLnRlZUxvY2FsKFwieFwiK2osIGMuaTY0X2xvYWQzMl91KCBjLmdldExvY2FsKFwieFwiKSwgaio0KSk7XG4gICAgICAgICAgICAgICAgbG9hZFhbal0gPSB0cnVlO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBZID0gYy5nZXRMb2NhbChcInhcIitqKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIGMuaTY0X211bCggWCwgWSApO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGMwID0gXCJjMFwiO1xuICAgICAgICBsZXQgYzEgPSBcImMxXCI7XG4gICAgICAgIGxldCBjMF9vbGQgPSBcImMwX29sZFwiO1xuICAgICAgICBsZXQgYzFfb2xkID0gXCJjMV9vbGRcIjtcblxuICAgICAgICBmb3IgKGxldCBrPTA7IGs8bjMyKjItMTsgaysrKSB7XG4gICAgICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChjMCwgYy5pNjRfY29uc3QoMCkpLFxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoYzEsIGMuaTY0X2NvbnN0KDApKSxcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIGZvciAobGV0IGk9TWF0aC5tYXgoMCwgay1uMzIrMSk7IChpPCgoaysxKT4+MSkgKSYmKGk8bjMyKTsgaSsrKSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgaj0gay1pO1xuXG4gICAgICAgICAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgICAgICAgICBjLnNldExvY2FsKGMwLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfYWRkKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2FuZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChjMCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2NvbnN0KDB4RkZGRkZGRkYpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdWxpaihpLGopXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgICAgICAgICBjLnNldExvY2FsKGMxLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfYWRkKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoYzEpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X3Nocl91KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKGMwKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfY29uc3QoMzIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gTXVsdGlwbHkgYnkgMlxuICAgICAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoYzAsXG4gICAgICAgICAgICAgICAgICAgIGMuaTY0X3NobChcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2FuZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKGMwKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9jb25zdCgweEZGRkZGRkZGKVxuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2NvbnN0KDEpXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChjMSxcbiAgICAgICAgICAgICAgICAgICAgYy5pNjRfYWRkKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfc2hsKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoYzEpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2NvbnN0KDEpXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfc2hyX3UoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChjMCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfY29uc3QoMzIpXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICBpZiAoayUyID09IDApIHtcbiAgICAgICAgICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoYzAsXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9hZGQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfYW5kKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKGMwKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfY29uc3QoMHhGRkZGRkZGRilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG11bGlqKGs+PjEsIGs+PjEpXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgICAgICAgICBjLnNldExvY2FsKGMxLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfYWRkKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoYzEpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X3Nocl91KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKGMwKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfY29uc3QoMzIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gQWRkIHRoZSBvbGQgY2FycnlcblxuICAgICAgICAgICAgaWYgKGs+MCkge1xuICAgICAgICAgICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgICAgICAgICAgYy5zZXRMb2NhbChjMCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2FkZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9hbmQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoYzApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9jb25zdCgweEZGRkZGRkZGKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfYW5kKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKGMwX29sZCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2NvbnN0KDB4RkZGRkZGRkYpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoYzEsXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9hZGQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfYWRkKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKGMxKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfc2hyX3UoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKGMwKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2NvbnN0KDMyKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKGMxX29sZClcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgICAgICBjLmk2NF9zdG9yZTMyKFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiclwiKSxcbiAgICAgICAgICAgICAgICAgICAgayo0LFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKGMwKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFxuICAgICAgICAgICAgICAgICAgICBjMF9vbGQsXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoYzEpXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFxuICAgICAgICAgICAgICAgICAgICBjMV9vbGQsXG4gICAgICAgICAgICAgICAgICAgIGMuaTY0X3Nocl91KFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChjMF9vbGQpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfY29uc3QoMzIpXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuXG4gICAgICAgIH1cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5pNjRfc3RvcmUzMihcbiAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiclwiKSxcbiAgICAgICAgICAgICAgICBuMzIqNCoyLTQsXG4gICAgICAgICAgICAgICAgYy5nZXRMb2NhbChjMF9vbGQpXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG5cbiAgICB9XG5cblxuICAgIGZ1bmN0aW9uIGJ1aWxkU3F1YXJlT2xkKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCtcIl9zcXVhcmVPbGRcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiclwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGYuYWRkQ29kZShjLmNhbGwocHJlZml4ICsgXCJfbXVsXCIsIGMuZ2V0TG9jYWwoXCJ4XCIpLCBjLmdldExvY2FsKFwieFwiKSwgYy5nZXRMb2NhbChcInJcIikpKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBfYnVpbGRNdWwxKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCtcIl9fbXVsMVwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInB4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieVwiLCBcImk2NFwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInByXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiY1wiLCBcImk2NFwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGYuYWRkQ29kZShjLnNldExvY2FsKFxuICAgICAgICAgICAgXCJjXCIsXG4gICAgICAgICAgICBjLmk2NF9tdWwoXG4gICAgICAgICAgICAgICAgYy5pNjRfbG9hZDMyX3UoYy5nZXRMb2NhbChcInB4XCIpLCAwLCAwKSxcbiAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwieVwiKVxuICAgICAgICAgICAgKVxuICAgICAgICApKTtcblxuICAgICAgICBmLmFkZENvZGUoYy5pNjRfc3RvcmUzMihcbiAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwclwiKSxcbiAgICAgICAgICAgIDAsXG4gICAgICAgICAgICAwLFxuICAgICAgICAgICAgYy5nZXRMb2NhbChcImNcIiksXG4gICAgICAgICkpO1xuXG4gICAgICAgIGZvciAobGV0IGk9MTsgaTxuMzI7IGkrKykge1xuICAgICAgICAgICAgZi5hZGRDb2RlKGMuc2V0TG9jYWwoIFwiY1wiLFxuICAgICAgICAgICAgICAgIGMuaTY0X2FkZChcbiAgICAgICAgICAgICAgICAgICAgYy5pNjRfbXVsKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfbG9hZDMyX3UoYy5nZXRMb2NhbChcInB4XCIpLCA0KmksIDApLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInlcIilcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgYy5pNjRfc2hyX3UgKGMuZ2V0TG9jYWwoXCJjXCIpLCBjLmk2NF9jb25zdCgzMikpXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSk7XG5cbiAgICAgICAgICAgIGYuYWRkQ29kZShjLmk2NF9zdG9yZTMyKFxuICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwclwiKSxcbiAgICAgICAgICAgICAgICBpKjQsXG4gICAgICAgICAgICAgICAgMCxcbiAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiY1wiKVxuICAgICAgICAgICAgKSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBfYnVpbGRBZGQxKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCtcIl9fYWRkMVwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInhcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ5XCIsIFwiaTY0XCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiY1wiLCBcImk2NFwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcInB4XCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgZi5hZGRDb2RlKGMuc2V0TG9jYWwoXCJweFwiLCBjLmdldExvY2FsKFwieFwiKSkpO1xuXG4gICAgICAgIGYuYWRkQ29kZShjLnNldExvY2FsKFxuICAgICAgICAgICAgXCJjXCIsXG4gICAgICAgICAgICBjLmk2NF9hZGQoXG4gICAgICAgICAgICAgICAgYy5pNjRfbG9hZDMyX3UoYy5nZXRMb2NhbChcInB4XCIpLCAwLCAwKSxcbiAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwieVwiKVxuICAgICAgICAgICAgKVxuICAgICAgICApKTtcblxuICAgICAgICBmLmFkZENvZGUoYy5pNjRfc3RvcmUzMihcbiAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJweFwiKSxcbiAgICAgICAgICAgIDAsXG4gICAgICAgICAgICAwLFxuICAgICAgICAgICAgYy5nZXRMb2NhbChcImNcIiksXG4gICAgICAgICkpO1xuXG4gICAgICAgIGYuYWRkQ29kZShjLnNldExvY2FsKFxuICAgICAgICAgICAgXCJjXCIsXG4gICAgICAgICAgICBjLmk2NF9zaHJfdShcbiAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiY1wiKSxcbiAgICAgICAgICAgICAgICBjLmk2NF9jb25zdCgzMilcbiAgICAgICAgICAgIClcbiAgICAgICAgKSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKGMuYmxvY2soYy5sb29wKFxuICAgICAgICAgICAgYy5icl9pZihcbiAgICAgICAgICAgICAgICAxLFxuICAgICAgICAgICAgICAgIGMuaTY0X2VxeihjLmdldExvY2FsKFwiY1wiKSlcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjLnNldExvY2FsKFxuICAgICAgICAgICAgICAgIFwicHhcIixcbiAgICAgICAgICAgICAgICBjLmkzMl9hZGQoXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJweFwiKSxcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QoNClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApLFxuXG4gICAgICAgICAgICBjLnNldExvY2FsKFxuICAgICAgICAgICAgICAgIFwiY1wiLFxuICAgICAgICAgICAgICAgIGMuaTY0X2FkZChcbiAgICAgICAgICAgICAgICAgICAgYy5pNjRfbG9hZDMyX3UoYy5nZXRMb2NhbChcInB4XCIpLCAwLCAwKSxcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImNcIilcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApLFxuXG4gICAgICAgICAgICBjLmk2NF9zdG9yZTMyKFxuICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJweFwiKSxcbiAgICAgICAgICAgICAgICAwLFxuICAgICAgICAgICAgICAgIDAsXG4gICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImNcIiksXG4gICAgICAgICAgICApLFxuXG4gICAgICAgICAgICBjLnNldExvY2FsKFxuICAgICAgICAgICAgICAgIFwiY1wiLFxuICAgICAgICAgICAgICAgIGMuaTY0X3Nocl91KFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiY1wiKSxcbiAgICAgICAgICAgICAgICAgICAgYy5pNjRfY29uc3QoMzIpXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgYy5icigwKVxuICAgICAgICApKSk7XG4gICAgfVxuXG5cbiAgICBmdW5jdGlvbiBidWlsZERpdigpIHtcbiAgICAgICAgX2J1aWxkTXVsMSgpO1xuICAgICAgICBfYnVpbGRBZGQxKCk7XG5cbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrXCJfZGl2XCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInlcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJjXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiclwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcInJyXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiY2NcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJlWFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcImVZXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwic3lcIiwgXCJpNjRcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJzeFwiLCBcImk2NFwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcImVjXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgWSA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuICAgICAgICBjb25zdCBDYXV4ID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44KSk7XG4gICAgICAgIGNvbnN0IFJhdXggPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcbiAgICAgICAgY29uc3QgQyA9IGMuZ2V0TG9jYWwoXCJjY1wiKTtcbiAgICAgICAgY29uc3QgUiA9IGMuZ2V0TG9jYWwoXCJyclwiKTtcbiAgICAgICAgY29uc3QgcHIxID0gbW9kdWxlLmFsbG9jKG44KjIpO1xuICAgICAgICBjb25zdCBSMSA9IGMuaTMyX2NvbnN0KHByMSk7XG4gICAgICAgIGNvbnN0IFIyID0gYy5pMzJfY29uc3QocHIxK244KTtcblxuICAgICAgICAvLyBJYyBjIGlzIDAgdGhlbiBzdG9yZSBpdCBpbiBhbiBhdXhpbGlhcnkgYnVmZmVyXG4gICAgICAgIGYuYWRkQ29kZShjLmlmKFxuICAgICAgICAgICAgYy5nZXRMb2NhbChcImNcIiksXG4gICAgICAgICAgICBjLnNldExvY2FsKFwiY2NcIiwgYy5nZXRMb2NhbChcImNcIikpLFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcImNjXCIsIENhdXgpXG4gICAgICAgICkpO1xuXG4gICAgICAgIC8vIEljIHIgaXMgMCB0aGVuIHN0b3JlIGl0IGluIGFuIGF1eGlsaWFyeSBidWZmZXJcbiAgICAgICAgZi5hZGRDb2RlKGMuaWYoXG4gICAgICAgICAgICBjLmdldExvY2FsKFwiclwiKSxcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJyclwiLCBjLmdldExvY2FsKFwiclwiKSksXG4gICAgICAgICAgICBjLnNldExvY2FsKFwicnJcIiwgUmF1eClcbiAgICAgICAgKSk7XG5cbiAgICAgICAgLy8gQ29weVxuICAgICAgICBmLmFkZENvZGUoYy5jYWxsKHByZWZpeCArIFwiX2NvcHlcIiwgYy5nZXRMb2NhbChcInhcIiksIFIpKTtcbiAgICAgICAgZi5hZGRDb2RlKGMuY2FsbChwcmVmaXggKyBcIl9jb3B5XCIsIGMuZ2V0TG9jYWwoXCJ5XCIpLCBZKSk7XG4gICAgICAgIGYuYWRkQ29kZShjLmNhbGwocHJlZml4ICsgXCJfemVyb1wiLCBDKSk7XG4gICAgICAgIGYuYWRkQ29kZShjLmNhbGwocHJlZml4ICsgXCJfemVyb1wiLCBSMSkpO1xuXG5cbiAgICAgICAgZi5hZGRDb2RlKGMuc2V0TG9jYWwoXCJlWFwiLCBjLmkzMl9jb25zdChuOC0xKSkpO1xuICAgICAgICBmLmFkZENvZGUoYy5zZXRMb2NhbChcImVZXCIsIGMuaTMyX2NvbnN0KG44LTEpKSk7XG5cbiAgICAgICAgLy8gd2hpbGUgKGVZPjMpJiYoWVtlWV09PTApIGV5LS07XG4gICAgICAgIGYuYWRkQ29kZShjLmJsb2NrKGMubG9vcChcbiAgICAgICAgICAgIGMuYnJfaWYoXG4gICAgICAgICAgICAgICAgMSxcbiAgICAgICAgICAgICAgICBjLmkzMl9vcihcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfbG9hZDhfdShcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2FkZChZICwgYy5nZXRMb2NhbChcImVZXCIpKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIDAsXG4gICAgICAgICAgICAgICAgICAgICAgICAwXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX2VxKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImVZXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QoMylcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjLnNldExvY2FsKFwiZVlcIiwgYy5pMzJfc3ViKGMuZ2V0TG9jYWwoXCJlWVwiKSwgYy5pMzJfY29uc3QoMSkpKSxcbiAgICAgICAgICAgIGMuYnIoMClcbiAgICAgICAgKSkpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXG4gICAgICAgICAgICAgICAgXCJzeVwiLFxuICAgICAgICAgICAgICAgIGMuaTY0X2FkZChcbiAgICAgICAgICAgICAgICAgICAgYy5pNjRfbG9hZDMyX3UoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9zdWIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfYWRkKCBZLCBjLmdldExvY2FsKFwiZVlcIikpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KDMpXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgMCxcbiAgICAgICAgICAgICAgICAgICAgICAgIDBcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgYy5pNjRfY29uc3QoMSlcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG5cbiAgICAgICAgLy8gRm9yY2UgYSBkaXZpZGUgYnkgMCBpZiBxdW90aWVuIGlzIDBcbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICBjLmk2NF9lcShcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInN5XCIpLFxuICAgICAgICAgICAgICAgICAgICBjLmk2NF9jb25zdCgxKVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgYy5kcm9wKGMuaTY0X2Rpdl91KGMuaTY0X2NvbnN0KDApLCBjLmk2NF9jb25zdCgwKSkpXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG5cbiAgICAgICAgZi5hZGRDb2RlKGMuYmxvY2soYy5sb29wKFxuXG4gICAgICAgICAgICAvLyB3aGlsZSAoZVg+NykmJihZW2VYXT09MCkgZXgtLTtcbiAgICAgICAgICAgIGMuYmxvY2soYy5sb29wKFxuICAgICAgICAgICAgICAgIGMuYnJfaWYoXG4gICAgICAgICAgICAgICAgICAgIDEsXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX29yKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfbG9hZDhfdShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9hZGQoUiAsIGMuZ2V0TG9jYWwoXCJlWFwiKSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgMCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAwXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfZXEoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImVYXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KDcpXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJlWFwiLCBjLmkzMl9zdWIoYy5nZXRMb2NhbChcImVYXCIpLCBjLmkzMl9jb25zdCgxKSkpLFxuICAgICAgICAgICAgICAgIGMuYnIoMClcbiAgICAgICAgICAgICkpLFxuXG4gICAgICAgICAgICBjLnNldExvY2FsKFxuICAgICAgICAgICAgICAgIFwic3hcIixcbiAgICAgICAgICAgICAgICBjLmk2NF9sb2FkKFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9zdWIoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9hZGQoIFIsIGMuZ2V0TG9jYWwoXCJlWFwiKSksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdCg3KVxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAwLFxuICAgICAgICAgICAgICAgICAgICAwXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgYy5zZXRMb2NhbChcbiAgICAgICAgICAgICAgICBcInN4XCIsXG4gICAgICAgICAgICAgICAgYy5pNjRfZGl2X3UoXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJzeFwiKSxcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInN5XCIpXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXG4gICAgICAgICAgICAgICAgXCJlY1wiLFxuICAgICAgICAgICAgICAgIGMuaTMyX3N1YihcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfc3ViKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImVYXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImVZXCIpXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KDQpXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgLy8gV2hpbGUgZ3JlYXRlciB0aGFuIDMyIGJpdHMgb3IgZWMgaXMgbmVnLCBzaHIgYW5kIGluYyBleHBcbiAgICAgICAgICAgIGMuYmxvY2soYy5sb29wKFxuICAgICAgICAgICAgICAgIGMuYnJfaWYoXG4gICAgICAgICAgICAgICAgICAgIDEsXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX2FuZChcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2VxeihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9hbmQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJzeFwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfY29uc3QoXCIweEZGRkZGRkZGMDAwMDAwMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfZ2VfcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiZWNcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QoMClcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFxuICAgICAgICAgICAgICAgICAgICBcInN4XCIsXG4gICAgICAgICAgICAgICAgICAgIGMuaTY0X3Nocl91KFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInN4XCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfY29uc3QoOClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFxuICAgICAgICAgICAgICAgICAgICBcImVjXCIsXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX2FkZChcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJlY1wiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KDEpXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGMuYnIoMClcbiAgICAgICAgICAgICkpLFxuXG4gICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgIGMuaTY0X2VxeihjLmdldExvY2FsKFwic3hcIikpLFxuICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgLi4uYy5icl9pZihcbiAgICAgICAgICAgICAgICAgICAgICAgIDIsXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9lcXooYy5jYWxsKHByZWZpeCArIFwiX2d0ZVwiLCBSLCBZKSlcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgLi4uYy5zZXRMb2NhbChcInN4XCIsIGMuaTY0X2NvbnN0KDEpKSxcbiAgICAgICAgICAgICAgICAgICAgLi4uYy5zZXRMb2NhbChcImVjXCIsIGMuaTMyX2NvbnN0KDApKVxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9fbXVsMVwiLCBZLCBjLmdldExvY2FsKFwic3hcIiksIFIyKSxcbiAgICAgICAgICAgIGMuZHJvcChjLmNhbGwoXG4gICAgICAgICAgICAgICAgcHJlZml4ICsgXCJfc3ViXCIsXG4gICAgICAgICAgICAgICAgUixcbiAgICAgICAgICAgICAgICBjLmkzMl9zdWIoUjIsIGMuZ2V0TG9jYWwoXCJlY1wiKSksXG4gICAgICAgICAgICAgICAgUlxuICAgICAgICAgICAgKSksXG4gICAgICAgICAgICBjLmNhbGwoXG4gICAgICAgICAgICAgICAgcHJlZml4ICsgXCJfX2FkZDFcIixcbiAgICAgICAgICAgICAgICBjLmkzMl9hZGQoQywgYy5nZXRMb2NhbChcImVjXCIpKSxcbiAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwic3hcIilcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjLmJyKDApXG4gICAgICAgICkpKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBidWlsZEludmVyc2VNb2QoKSB7XG5cbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrXCJfaW52ZXJzZU1vZFwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInB4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicG1cIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwclwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcInRcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJuZXd0XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiclwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcInFxXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwicXJcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJuZXdyXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwic3dwXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwieFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcInNpZ250XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwic2lnbm5ld3RcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJzaWdueFwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IGF1eDEgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcbiAgICAgICAgY29uc3QgYXV4MiA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuICAgICAgICBjb25zdCBhdXgzID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44KSk7XG4gICAgICAgIGNvbnN0IGF1eDQgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcbiAgICAgICAgY29uc3QgYXV4NSA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuICAgICAgICBjb25zdCBhdXg2ID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44KSk7XG4gICAgICAgIGNvbnN0IG11bEJ1ZmYgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgqMikpO1xuICAgICAgICBjb25zdCBhdXg3ID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44KSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcInRcIiwgYXV4MSksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfemVyb1wiLCBhdXgxKSxcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJzaWdudFwiLCBjLmkzMl9jb25zdCgwKSksXG4gICAgICAgICk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcInJcIiwgYXV4MiksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfY29weVwiLCBjLmdldExvY2FsKFwicG1cIiksIGF1eDIpXG4gICAgICAgICk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcIm5ld3RcIiwgYXV4MyksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfb25lXCIsIGF1eDMpLFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcInNpZ25uZXd0XCIsIGMuaTMyX2NvbnN0KDApKSxcbiAgICAgICAgKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLnNldExvY2FsKFwibmV3clwiLCBhdXg0KSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9jb3B5XCIsIGMuZ2V0TG9jYWwoXCJweFwiKSwgYXV4NClcbiAgICAgICAgKTtcblxuXG5cblxuICAgICAgICBmLmFkZENvZGUoYy5zZXRMb2NhbChcInFxXCIsIGF1eDUpKTtcbiAgICAgICAgZi5hZGRDb2RlKGMuc2V0TG9jYWwoXCJxclwiLCBhdXg2KSk7XG4gICAgICAgIGYuYWRkQ29kZShjLnNldExvY2FsKFwieFwiLCBhdXg3KSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKGMuYmxvY2soYy5sb29wKFxuICAgICAgICAgICAgYy5icl9pZihcbiAgICAgICAgICAgICAgICAxLFxuICAgICAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9pc1plcm9cIiwgYy5nZXRMb2NhbChcIm5ld3JcIikgKVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9kaXZcIiwgYy5nZXRMb2NhbChcInJcIiksIGMuZ2V0TG9jYWwoXCJuZXdyXCIpLCBjLmdldExvY2FsKFwicXFcIiksIGMuZ2V0TG9jYWwoXCJxclwiKSksXG5cbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9tdWxcIiwgYy5nZXRMb2NhbChcInFxXCIpLCBjLmdldExvY2FsKFwibmV3dFwiKSwgbXVsQnVmZiksXG5cbiAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInNpZ250XCIpLFxuICAgICAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJzaWdubmV3dFwiKSxcbiAgICAgICAgICAgICAgICAgICAgYy5pZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfZ3RlXCIsIG11bEJ1ZmYsIGMuZ2V0TG9jYWwoXCJ0XCIpKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5jLmRyb3AoYy5jYWxsKHByZWZpeCArIFwiX3N1YlwiLCBtdWxCdWZmLCBjLmdldExvY2FsKFwidFwiKSwgYy5nZXRMb2NhbChcInhcIikpKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5jLnNldExvY2FsKFwic2lnbnhcIiwgYy5pMzJfY29uc3QoMCkpXG4gICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLmMuZHJvcChjLmNhbGwocHJlZml4ICsgXCJfc3ViXCIsIGMuZ2V0TG9jYWwoXCJ0XCIpLCBtdWxCdWZmLCBjLmdldExvY2FsKFwieFwiKSkpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLmMuc2V0TG9jYWwoXCJzaWdueFwiLCBjLmkzMl9jb25zdCgxKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLmMuZHJvcChjLmNhbGwocHJlZml4ICsgXCJfYWRkXCIsIG11bEJ1ZmYsIGMuZ2V0TG9jYWwoXCJ0XCIpLCBjLmdldExvY2FsKFwieFwiKSkpLFxuICAgICAgICAgICAgICAgICAgICAgICAgLi4uYy5zZXRMb2NhbChcInNpZ254XCIsIGMuaTMyX2NvbnN0KDEpKVxuICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwic2lnbm5ld3RcIiksXG4gICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLmMuZHJvcChjLmNhbGwocHJlZml4ICsgXCJfYWRkXCIsIG11bEJ1ZmYsIGMuZ2V0TG9jYWwoXCJ0XCIpLCBjLmdldExvY2FsKFwieFwiKSkpLFxuICAgICAgICAgICAgICAgICAgICAgICAgLi4uYy5zZXRMb2NhbChcInNpZ254XCIsIGMuaTMyX2NvbnN0KDApKVxuICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICBjLmlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9ndGVcIiwgYy5nZXRMb2NhbChcInRcIiksIG11bEJ1ZmYpLFxuICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLmMuZHJvcChjLmNhbGwocHJlZml4ICsgXCJfc3ViXCIsIGMuZ2V0TG9jYWwoXCJ0XCIpLCBtdWxCdWZmLCBjLmdldExvY2FsKFwieFwiKSkpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLmMuc2V0TG9jYWwoXCJzaWdueFwiLCBjLmkzMl9jb25zdCgwKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uYy5kcm9wKGMuY2FsbChwcmVmaXggKyBcIl9zdWJcIiwgbXVsQnVmZiwgYy5nZXRMb2NhbChcInRcIiksIGMuZ2V0TG9jYWwoXCJ4XCIpKSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uYy5zZXRMb2NhbChcInNpZ254XCIsIGMuaTMyX2NvbnN0KDEpKVxuICAgICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgYy5zZXRMb2NhbChcInN3cFwiLCBjLmdldExvY2FsKFwidFwiKSksXG4gICAgICAgICAgICBjLnNldExvY2FsKFwidFwiLCBjLmdldExvY2FsKFwibmV3dFwiKSksXG4gICAgICAgICAgICBjLnNldExvY2FsKFwibmV3dFwiLCBjLmdldExvY2FsKFwieFwiKSksXG4gICAgICAgICAgICBjLnNldExvY2FsKFwieFwiLCBjLmdldExvY2FsKFwic3dwXCIpKSxcblxuICAgICAgICAgICAgYy5zZXRMb2NhbChcInNpZ250XCIsIGMuZ2V0TG9jYWwoXCJzaWdubmV3dFwiKSksXG4gICAgICAgICAgICBjLnNldExvY2FsKFwic2lnbm5ld3RcIiwgYy5nZXRMb2NhbChcInNpZ254XCIpKSxcblxuICAgICAgICAgICAgYy5zZXRMb2NhbChcInN3cFwiLCBjLmdldExvY2FsKFwiclwiKSksXG4gICAgICAgICAgICBjLnNldExvY2FsKFwiclwiLCBjLmdldExvY2FsKFwibmV3clwiKSksXG4gICAgICAgICAgICBjLnNldExvY2FsKFwibmV3clwiLCBjLmdldExvY2FsKFwicXJcIikpLFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcInFyXCIsIGMuZ2V0TG9jYWwoXCJzd3BcIikpLFxuXG4gICAgICAgICAgICBjLmJyKDApXG4gICAgICAgICkpKTtcblxuICAgICAgICBmLmFkZENvZGUoYy5pZihcbiAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJzaWdudFwiKSxcbiAgICAgICAgICAgIGMuZHJvcChjLmNhbGwocHJlZml4ICsgXCJfc3ViXCIsIGMuZ2V0TG9jYWwoXCJwbVwiKSwgYy5nZXRMb2NhbChcInRcIiksIGMuZ2V0TG9jYWwoXCJwclwiKSkpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX2NvcHlcIiwgYy5nZXRMb2NhbChcInRcIiksIGMuZ2V0TG9jYWwoXCJwclwiKSlcbiAgICAgICAgKSk7XG4gICAgfVxuXG5cbiAgICBidWlsZENvcHkoKTtcbiAgICBidWlsZFplcm8oKTtcbiAgICBidWlsZElzWmVybygpO1xuICAgIGJ1aWxkT25lKCk7XG4gICAgYnVpbGRFcSgpO1xuICAgIGJ1aWxkR3RlKCk7XG4gICAgYnVpbGRBZGQoKTtcbiAgICBidWlsZFN1YigpO1xuICAgIGJ1aWxkTXVsKCk7XG4gICAgYnVpbGRTcXVhcmUoKTtcbiAgICBidWlsZFNxdWFyZU9sZCgpO1xuICAgIGJ1aWxkRGl2KCk7XG4gICAgYnVpbGRJbnZlcnNlTW9kKCk7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCtcIl9jb3B5XCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXgrXCJfemVyb1wiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4K1wiX29uZVwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4K1wiX2lzWmVyb1wiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4K1wiX2VxXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXgrXCJfZ3RlXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXgrXCJfYWRkXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXgrXCJfc3ViXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXgrXCJfbXVsXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXgrXCJfc3F1YXJlXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXgrXCJfc3F1YXJlT2xkXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXgrXCJfZGl2XCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXgrXCJfaW52ZXJzZU1vZFwiKTtcblxuICAgIHJldHVybiBwcmVmaXg7XG59O1xuXG4vKlxuICAgIENvcHlyaWdodCAyMDE5IDBLSU1TIGFzc29jaWF0aW9uLlxuXG4gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2Ygd2FzbXNuYXJrIChXZWIgQXNzZW1ibHkgemtTbmFyayBQcm92ZXIpLlxuXG4gICAgd2FzbXNuYXJrIGlzIGEgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdFxuICAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3JcbiAgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuXG4gICAgd2FzbXNuYXJrIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUXG4gICAgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZXG4gICAgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljXG4gICAgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuXG4gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAgICBhbG9uZyB3aXRoIHdhc21zbmFyay4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cbiovXG5cbnZhciBidWlsZF90aW1lc3NjYWxhciA9IGZ1bmN0aW9uIGJ1aWxkVGltZXNTY2FsYXIobW9kdWxlLCBmbk5hbWUsIGVsZW1lbnRMZW4sIG9wQUIsIG9wQUEsIG9wQ29weSwgb3BJbml0KSB7XG5cbiAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKGZuTmFtZSk7XG4gICAgZi5hZGRQYXJhbShcImJhc2VcIiwgXCJpMzJcIik7XG4gICAgZi5hZGRQYXJhbShcInNjYWxhclwiLCBcImkzMlwiKTtcbiAgICBmLmFkZFBhcmFtKFwic2NhbGFyTGVuZ3RoXCIsIFwiaTMyXCIpO1xuICAgIGYuYWRkUGFyYW0oXCJyXCIsIFwiaTMyXCIpO1xuICAgIGYuYWRkTG9jYWwoXCJpXCIsIFwiaTMyXCIpO1xuICAgIGYuYWRkTG9jYWwoXCJiXCIsIFwiaTMyXCIpO1xuXG4gICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgIGNvbnN0IGF1eCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhlbGVtZW50TGVuKSk7XG5cbiAgICBmLmFkZENvZGUoXG4gICAgICAgIGMuaWYoXG4gICAgICAgICAgICBjLmkzMl9lcXooYy5nZXRMb2NhbChcInNjYWxhckxlbmd0aFwiKSksXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgLi4uYy5jYWxsKG9wSW5pdCwgYy5nZXRMb2NhbChcInJcIikpLFxuICAgICAgICAgICAgICAgIC4uLmMucmV0KFtdKVxuICAgICAgICAgICAgXVxuICAgICAgICApXG4gICAgKTtcbiAgICBmLmFkZENvZGUoYy5jYWxsKG9wQ29weSwgYy5nZXRMb2NhbChcImJhc2VcIiksIGF1eCkpO1xuICAgIGYuYWRkQ29kZShjLmNhbGwob3BJbml0LCBjLmdldExvY2FsKFwiclwiKSkpO1xuICAgIGYuYWRkQ29kZShjLnNldExvY2FsKFwiaVwiLCBjLmdldExvY2FsKFwic2NhbGFyTGVuZ3RoXCIpKSk7XG4gICAgZi5hZGRDb2RlKGMuYmxvY2soYy5sb29wKFxuICAgICAgICBjLnNldExvY2FsKFwiaVwiLCBjLmkzMl9zdWIoYy5nZXRMb2NhbChcImlcIiksIGMuaTMyX2NvbnN0KDEpKSksXG5cbiAgICAgICAgYy5zZXRMb2NhbChcbiAgICAgICAgICAgIFwiYlwiLFxuICAgICAgICAgICAgYy5pMzJfbG9hZDhfdShcbiAgICAgICAgICAgICAgICBjLmkzMl9hZGQoXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJzY2FsYXJcIiksXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpXCIpXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKVxuICAgICAgICApLFxuICAgICAgICAuLi5pbm5lckxvb3AoKSxcbiAgICAgICAgYy5icl9pZigxLCBjLmkzMl9lcXogKCBjLmdldExvY2FsKFwiaVwiKSApKSxcbiAgICAgICAgYy5icigwKVxuICAgICkpKTtcblxuXG4gICAgZnVuY3Rpb24gaW5uZXJMb29wKCkge1xuICAgICAgICBjb25zdCBjb2RlID0gW107XG4gICAgICAgIGZvciAobGV0IGk9MDsgaTw4OyBpKyspIHtcbiAgICAgICAgICAgIGNvZGUucHVzaChcbiAgICAgICAgICAgICAgICAuLi5jLmNhbGwob3BBQSwgYy5nZXRMb2NhbChcInJcIiksIGMuZ2V0TG9jYWwoXCJyXCIpKSxcbiAgICAgICAgICAgICAgICAuLi5jLmlmKFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9nZV91KCBjLmdldExvY2FsKFwiYlwiKSwgYy5pMzJfY29uc3QoMHg4MCA+PiBpKSksXG4gICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLmMuc2V0TG9jYWwoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJiXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfc3ViKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiYlwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QoMHg4MCA+PiBpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5jLmNhbGwob3BBQiwgYy5nZXRMb2NhbChcInJcIiksYXV4LCBjLmdldExvY2FsKFwiclwiKSlcbiAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGNvZGU7XG4gICAgfVxuXG59O1xuXG52YXIgYnVpbGRfYmF0Y2hpbnZlcnNlID0gYnVpbGRCYXRjaEludmVyc2UkMztcblxuZnVuY3Rpb24gYnVpbGRCYXRjaEludmVyc2UkMyhtb2R1bGUsIHByZWZpeCkge1xuXG5cbiAgICBjb25zdCBuOCA9IG1vZHVsZS5tb2R1bGVzW3ByZWZpeF0ubjY0Kjg7XG5cbiAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCtcIl9iYXRjaEludmVyc2VcIik7XG4gICAgZi5hZGRQYXJhbShcInBJblwiLCBcImkzMlwiKTtcbiAgICBmLmFkZFBhcmFtKFwiaW5TdGVwXCIsIFwiaTMyXCIpO1xuICAgIGYuYWRkUGFyYW0oXCJuXCIsIFwiaTMyXCIpO1xuICAgIGYuYWRkUGFyYW0oXCJwT3V0XCIsIFwiaTMyXCIpO1xuICAgIGYuYWRkUGFyYW0oXCJvdXRTdGVwXCIsIFwiaTMyXCIpO1xuICAgIGYuYWRkTG9jYWwoXCJpdEF1eFwiLCBcImkzMlwiKTtcbiAgICBmLmFkZExvY2FsKFwiaXRJblwiLCBcImkzMlwiKTtcbiAgICBmLmFkZExvY2FsKFwiaXRPdXRcIixcImkzMlwiKTtcbiAgICBmLmFkZExvY2FsKFwiaVwiLFwiaTMyXCIpO1xuXG4gICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgIGNvbnN0IEFVWCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuXG5cbiAgICAvLyBBbGxvYyBXb3JraW5nIHNwYWNlIGZvciBhY2N1bXVsYXRlZCB1bWx0aXBsaWNhdGlvbnNcbiAgICBmLmFkZENvZGUoXG4gICAgICAgIGMuc2V0TG9jYWwoXCJpdEF1eFwiLCBjLmkzMl9sb2FkKCBjLmkzMl9jb25zdCgwKSApKSxcbiAgICAgICAgYy5pMzJfc3RvcmUoXG4gICAgICAgICAgICBjLmkzMl9jb25zdCgwKSxcbiAgICAgICAgICAgIGMuaTMyX2FkZChcbiAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaXRBdXhcIiksXG4gICAgICAgICAgICAgICAgYy5pMzJfbXVsKFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9hZGQoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiblwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KDEpXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KG44KVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgIClcbiAgICAgICAgKVxuICAgICk7XG5cbiAgICBmLmFkZENvZGUoXG5cbiAgICAgICAgLy8gYXV4WzBdID0gYTtcbiAgICAgICAgYy5jYWxsKHByZWZpeCtcIl9vbmVcIiwgYy5nZXRMb2NhbChcIml0QXV4XCIpKSxcbiAgICAgICAgLy8gZm9yIChpPTA7aTxuO2krKykgYXV4W2ldID0gYXV4W2ktMV0qaW5baV1cbiAgICAgICAgYy5zZXRMb2NhbChcIml0SW5cIiwgYy5nZXRMb2NhbChcInBJblwiKSksXG4gICAgICAgIGMuc2V0TG9jYWwoXCJpdEF1eFwiLCBjLmkzMl9hZGQoYy5nZXRMb2NhbChcIml0QXV4XCIpLCBjLmkzMl9jb25zdChuOCkpKSxcbiAgICAgICAgYy5zZXRMb2NhbChcImlcIiwgYy5pMzJfY29uc3QoMCkpLFxuXG4gICAgICAgIGMuYmxvY2soYy5sb29wKFxuICAgICAgICAgICAgYy5icl9pZigxLCBjLmkzMl9lcSAoIGMuZ2V0TG9jYWwoXCJpXCIpLCBjLmdldExvY2FsKFwiblwiKSApKSxcbiAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgYy5jYWxsKHByZWZpeCtcIl9pc1plcm9cIiwgYy5nZXRMb2NhbChcIml0SW5cIikpLFxuICAgICAgICAgICAgICAgIGMuY2FsbChcbiAgICAgICAgICAgICAgICAgICAgcHJlZml4ICsgXCJfY29weVwiLFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9zdWIoYy5nZXRMb2NhbChcIml0QXV4XCIpLCBjLmkzMl9jb25zdChuOCkpLFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaXRBdXhcIilcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGMuY2FsbChcbiAgICAgICAgICAgICAgICAgICAgcHJlZml4K1wiX211bFwiLFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaXRJblwiKSxcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfc3ViKGMuZ2V0TG9jYWwoXCJpdEF1eFwiKSwgYy5pMzJfY29uc3QobjgpKSxcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcIml0QXV4XCIpXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpdEluXCIsIGMuaTMyX2FkZChjLmdldExvY2FsKFwiaXRJblwiKSwgYy5nZXRMb2NhbChcImluU3RlcFwiKSkpLFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcIml0QXV4XCIsIGMuaTMyX2FkZChjLmdldExvY2FsKFwiaXRBdXhcIiksIGMuaTMyX2NvbnN0KG44KSkpLFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcImlcIiwgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJpXCIpLCBjLmkzMl9jb25zdCgxKSkpLFxuICAgICAgICAgICAgYy5icigwKVxuICAgICAgICApKSxcblxuICAgICAgICAvLyBwb2ludCB0byB0aGUgbGFzdFxuICAgICAgICBjLnNldExvY2FsKFwiaXRJblwiLCBjLmkzMl9zdWIoYy5nZXRMb2NhbChcIml0SW5cIiksIGMuZ2V0TG9jYWwoXCJpblN0ZXBcIikpKSxcbiAgICAgICAgYy5zZXRMb2NhbChcIml0QXV4XCIsIGMuaTMyX3N1YihjLmdldExvY2FsKFwiaXRBdXhcIiksIGMuaTMyX2NvbnN0KG44KSkpLFxuICAgICAgICAvLyBpdE91dCA9IHBPdXQgKyAobi0xKSpzdGVwT3V0ICAgLy8gUG9pbnQgdG8gdGhlIGxhc3RcbiAgICAgICAgYy5zZXRMb2NhbChcbiAgICAgICAgICAgIFwiaXRPdXRcIixcbiAgICAgICAgICAgIGMuaTMyX2FkZChcbiAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicE91dFwiKSxcbiAgICAgICAgICAgICAgICBjLmkzMl9tdWwoXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX3N1YihjLmdldExvY2FsKFwiblwiKSwgYy5pMzJfY29uc3QoMSkpLFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwib3V0U3RlcFwiKSxcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApXG4gICAgICAgICksXG5cbiAgICAgICAgLy8gYXV4W24tMV0gPSAxL2F1eFtuLTFdXG4gICAgICAgIGMuY2FsbChwcmVmaXgrXCJfaW52ZXJzZVwiLCBjLmdldExvY2FsKFwiaXRBdXhcIiksIGMuZ2V0TG9jYWwoXCJpdEF1eFwiKSApLFxuXG4gICAgICAgIGMuYmxvY2soYy5sb29wKFxuICAgICAgICAgICAgYy5icl9pZigxLCBjLmkzMl9lcXooIGMuZ2V0TG9jYWwoXCJpXCIpKSksXG4gICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgIGMuY2FsbChwcmVmaXgrXCJfaXNaZXJvXCIsIGMuZ2V0TG9jYWwoXCJpdEluXCIpKSxcbiAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgIC4uLmMuY2FsbChcbiAgICAgICAgICAgICAgICAgICAgICAgIHByZWZpeCArIFwiX2NvcHlcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpdEF1eFwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX3N1YihjLmdldExvY2FsKFwiaXRBdXhcIiksIGMuaTMyX2NvbnN0KG44KSksXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgIC4uLmMuY2FsbChcbiAgICAgICAgICAgICAgICAgICAgICAgIHByZWZpeCArIFwiX3plcm9cIixcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpdE91dFwiKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgXSxbXG4gICAgICAgICAgICAgICAgICAgIC4uLmMuY2FsbChwcmVmaXggKyBcIl9jb3B5XCIsIGMuaTMyX3N1YihjLmdldExvY2FsKFwiaXRBdXhcIiksIGMuaTMyX2NvbnN0KG44KSksIEFVWCksXG4gICAgICAgICAgICAgICAgICAgIC4uLmMuY2FsbChcbiAgICAgICAgICAgICAgICAgICAgICAgIHByZWZpeCtcIl9tdWxcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpdEF1eFwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpdEluXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfc3ViKGMuZ2V0TG9jYWwoXCJpdEF1eFwiKSwgYy5pMzJfY29uc3QobjgpKSxcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgLi4uYy5jYWxsKFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJlZml4K1wiX211bFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcIml0QXV4XCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgQVVYLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcIml0T3V0XCIpXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcIml0SW5cIiwgYy5pMzJfc3ViKGMuZ2V0TG9jYWwoXCJpdEluXCIpLCBjLmdldExvY2FsKFwiaW5TdGVwXCIpKSksXG4gICAgICAgICAgICBjLnNldExvY2FsKFwiaXRPdXRcIiwgYy5pMzJfc3ViKGMuZ2V0TG9jYWwoXCJpdE91dFwiKSwgYy5nZXRMb2NhbChcIm91dFN0ZXBcIikpKSxcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpdEF1eFwiLCBjLmkzMl9zdWIoYy5nZXRMb2NhbChcIml0QXV4XCIpLCBjLmkzMl9jb25zdChuOCkpKSxcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpXCIsIGMuaTMyX3N1YihjLmdldExvY2FsKFwiaVwiKSwgYy5pMzJfY29uc3QoMSkpKSxcbiAgICAgICAgICAgIGMuYnIoMClcbiAgICAgICAgKSlcblxuICAgICk7XG5cblxuICAgIC8vIFJlY292ZXIgT2xkIG1lbW9yeVxuICAgIGYuYWRkQ29kZShcbiAgICAgICAgYy5pMzJfc3RvcmUoXG4gICAgICAgICAgICBjLmkzMl9jb25zdCgwKSxcbiAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpdEF1eFwiKVxuICAgICAgICApXG4gICAgKTtcblxufVxuXG52YXIgYnVpbGRfYmF0Y2hjb252ZXJ0aW9uID0gYnVpbGRCYXRjaENvbnZlcnRpb24kMztcblxuZnVuY3Rpb24gYnVpbGRCYXRjaENvbnZlcnRpb24kMyhtb2R1bGUsIGZuTmFtZSwgaW50ZXJuYWxGbk5hbWUsIHNpemVJbiwgc2l6ZU91dCwgcmV2ZXJzZSkge1xuICAgIGlmICh0eXBlb2YgcmV2ZXJzZSA9PT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgICAvLyBTZXQgdGhlIHJldmVyc2UgaW4gYSB3YXkgdGhhdCBhbGxvd3MgdG8gdXNlIHRoZSBzYW1lIGJ1ZmZlciBhcyBpbi9vdXQuXG4gICAgICAgIGlmIChzaXplSW4gPCBzaXplT3V0KSB7XG4gICAgICAgICAgICByZXZlcnNlID0gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldmVyc2UgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24oZm5OYW1lKTtcbiAgICBmLmFkZFBhcmFtKFwicEluXCIsIFwiaTMyXCIpO1xuICAgIGYuYWRkUGFyYW0oXCJuXCIsIFwiaTMyXCIpO1xuICAgIGYuYWRkUGFyYW0oXCJwT3V0XCIsIFwiaTMyXCIpO1xuICAgIGYuYWRkTG9jYWwoXCJpXCIsIFwiaTMyXCIpO1xuICAgIGYuYWRkTG9jYWwoXCJpdEluXCIsIFwiaTMyXCIpO1xuICAgIGYuYWRkTG9jYWwoXCJpdE91dFwiLCBcImkzMlwiKTtcblxuICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICBpZiAocmV2ZXJzZSkge1xuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLnNldExvY2FsKFwiaXRJblwiLFxuICAgICAgICAgICAgICAgIGMuaTMyX2FkZChcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInBJblwiKSxcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfbXVsKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfc3ViKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJuXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KDEpXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3Qoc2l6ZUluKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpdE91dFwiLFxuICAgICAgICAgICAgICAgIGMuaTMyX2FkZChcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInBPdXRcIiksXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX211bChcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX3N1YihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiblwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdCgxKVxuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KHNpemVPdXQpXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcImlcIiwgYy5pMzJfY29uc3QoMCkpLFxuICAgICAgICAgICAgYy5ibG9jayhjLmxvb3AoXG4gICAgICAgICAgICAgICAgYy5icl9pZigxLCBjLmkzMl9lcSAoIGMuZ2V0TG9jYWwoXCJpXCIpLCBjLmdldExvY2FsKFwiblwiKSApKSxcblxuICAgICAgICAgICAgICAgIGMuY2FsbChpbnRlcm5hbEZuTmFtZSwgYy5nZXRMb2NhbChcIml0SW5cIiksIGMuZ2V0TG9jYWwoXCJpdE91dFwiKSksXG5cbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFwiaXRJblwiLCBjLmkzMl9zdWIoYy5nZXRMb2NhbChcIml0SW5cIiksIGMuaTMyX2NvbnN0KHNpemVJbikpKSxcbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFwiaXRPdXRcIiwgYy5pMzJfc3ViKGMuZ2V0TG9jYWwoXCJpdE91dFwiKSwgYy5pMzJfY29uc3Qoc2l6ZU91dCkpKSxcbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFwiaVwiLCBjLmkzMl9hZGQoYy5nZXRMb2NhbChcImlcIiksIGMuaTMyX2NvbnN0KDEpKSksXG4gICAgICAgICAgICAgICAgYy5icigwKVxuICAgICAgICAgICAgKSksXG4gICAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcIml0SW5cIiwgYy5nZXRMb2NhbChcInBJblwiKSksXG4gICAgICAgICAgICBjLnNldExvY2FsKFwiaXRPdXRcIiwgYy5nZXRMb2NhbChcInBPdXRcIikpLFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcImlcIiwgYy5pMzJfY29uc3QoMCkpLFxuICAgICAgICAgICAgYy5ibG9jayhjLmxvb3AoXG4gICAgICAgICAgICAgICAgYy5icl9pZigxLCBjLmkzMl9lcSAoIGMuZ2V0TG9jYWwoXCJpXCIpLCBjLmdldExvY2FsKFwiblwiKSApKSxcblxuICAgICAgICAgICAgICAgIGMuY2FsbChpbnRlcm5hbEZuTmFtZSwgYy5nZXRMb2NhbChcIml0SW5cIiksIGMuZ2V0TG9jYWwoXCJpdE91dFwiKSksXG5cbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFwiaXRJblwiLCBjLmkzMl9hZGQoYy5nZXRMb2NhbChcIml0SW5cIiksIGMuaTMyX2NvbnN0KHNpemVJbikpKSxcbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFwiaXRPdXRcIiwgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJpdE91dFwiKSwgYy5pMzJfY29uc3Qoc2l6ZU91dCkpKSxcbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFwiaVwiLCBjLmkzMl9hZGQoYy5nZXRMb2NhbChcImlcIiksIGMuaTMyX2NvbnN0KDEpKSksXG4gICAgICAgICAgICAgICAgYy5icigwKVxuICAgICAgICAgICAgKSksXG4gICAgICAgICk7XG4gICAgfVxufVxuXG52YXIgYnVpbGRfYmF0Y2hvcCA9IGJ1aWxkQmF0Y2hDb252ZXJ0aW9uJDI7XG5cbmZ1bmN0aW9uIGJ1aWxkQmF0Y2hDb252ZXJ0aW9uJDIobW9kdWxlLCBmbk5hbWUsIGludGVybmFsRm5OYW1lLCBzaXplSW4sIHNpemVPdXQsIHJldmVyc2UpIHtcbiAgICBpZiAodHlwZW9mIHJldmVyc2UgPT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgICAgLy8gU2V0IHRoZSByZXZlcnNlIGluIGEgd2F5IHRoYXQgYWxsb3dzIHRvIHVzZSB0aGUgc2FtZSBidWZmZXIgYXMgaW4vb3V0LlxuICAgICAgICBpZiAoc2l6ZUluIDwgc2l6ZU91dCkge1xuICAgICAgICAgICAgcmV2ZXJzZSA9IHRydWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXZlcnNlID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKGZuTmFtZSk7XG4gICAgZi5hZGRQYXJhbShcInBJbjFcIiwgXCJpMzJcIik7XG4gICAgZi5hZGRQYXJhbShcInBJbjJcIiwgXCJpMzJcIik7XG4gICAgZi5hZGRQYXJhbShcIm5cIiwgXCJpMzJcIik7XG4gICAgZi5hZGRQYXJhbShcInBPdXRcIiwgXCJpMzJcIik7XG4gICAgZi5hZGRMb2NhbChcImlcIiwgXCJpMzJcIik7XG4gICAgZi5hZGRMb2NhbChcIml0SW4xXCIsIFwiaTMyXCIpO1xuICAgIGYuYWRkTG9jYWwoXCJpdEluMlwiLCBcImkzMlwiKTtcbiAgICBmLmFkZExvY2FsKFwiaXRPdXRcIiwgXCJpMzJcIik7XG5cbiAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgaWYgKHJldmVyc2UpIHtcbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcIml0SW4xXCIsXG4gICAgICAgICAgICAgICAgYy5pMzJfYWRkKFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicEluMVwiKSxcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfbXVsKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfc3ViKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJuXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KDEpXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3Qoc2l6ZUluKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpdEluMlwiLFxuICAgICAgICAgICAgICAgIGMuaTMyX2FkZChcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInBJbjJcIiksXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX211bChcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX3N1YihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiblwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdCgxKVxuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KHNpemVJbilcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjLnNldExvY2FsKFwiaXRPdXRcIixcbiAgICAgICAgICAgICAgICBjLmkzMl9hZGQoXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwT3V0XCIpLFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9tdWwoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9zdWIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcIm5cIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QoMSlcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdChzaXplT3V0KVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpXCIsIGMuaTMyX2NvbnN0KDApKSxcbiAgICAgICAgICAgIGMuYmxvY2soYy5sb29wKFxuICAgICAgICAgICAgICAgIGMuYnJfaWYoMSwgYy5pMzJfZXEgKCBjLmdldExvY2FsKFwiaVwiKSwgYy5nZXRMb2NhbChcIm5cIikgKSksXG5cbiAgICAgICAgICAgICAgICBjLmNhbGwoaW50ZXJuYWxGbk5hbWUsIGMuZ2V0TG9jYWwoXCJpdEluMVwiKSwgYy5nZXRMb2NhbChcIml0SW4yXCIpLCBjLmdldExvY2FsKFwiaXRPdXRcIikpLFxuXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcIml0SW4xXCIsIGMuaTMyX3N1YihjLmdldExvY2FsKFwiaXRJbjFcIiksIGMuaTMyX2NvbnN0KHNpemVJbikpKSxcbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFwiaXRJbjJcIiwgYy5pMzJfc3ViKGMuZ2V0TG9jYWwoXCJpdEluMlwiKSwgYy5pMzJfY29uc3Qoc2l6ZUluKSkpLFxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpdE91dFwiLCBjLmkzMl9zdWIoYy5nZXRMb2NhbChcIml0T3V0XCIpLCBjLmkzMl9jb25zdChzaXplT3V0KSkpLFxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpXCIsIGMuaTMyX2FkZChjLmdldExvY2FsKFwiaVwiKSwgYy5pMzJfY29uc3QoMSkpKSxcbiAgICAgICAgICAgICAgICBjLmJyKDApXG4gICAgICAgICAgICApKSxcbiAgICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLnNldExvY2FsKFwiaXRJbjFcIiwgYy5nZXRMb2NhbChcInBJbjFcIikpLFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcIml0SW4yXCIsIGMuZ2V0TG9jYWwoXCJwSW4yXCIpKSxcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpdE91dFwiLCBjLmdldExvY2FsKFwicE91dFwiKSksXG4gICAgICAgICAgICBjLnNldExvY2FsKFwiaVwiLCBjLmkzMl9jb25zdCgwKSksXG4gICAgICAgICAgICBjLmJsb2NrKGMubG9vcChcbiAgICAgICAgICAgICAgICBjLmJyX2lmKDEsIGMuaTMyX2VxICggYy5nZXRMb2NhbChcImlcIiksIGMuZ2V0TG9jYWwoXCJuXCIpICkpLFxuXG4gICAgICAgICAgICAgICAgYy5jYWxsKGludGVybmFsRm5OYW1lLCBjLmdldExvY2FsKFwiaXRJbjFcIiksIGMuZ2V0TG9jYWwoXCJpdEluMlwiKSwgYy5nZXRMb2NhbChcIml0T3V0XCIpKSxcblxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpdEluMVwiLCBjLmkzMl9hZGQoYy5nZXRMb2NhbChcIml0SW4xXCIpLCBjLmkzMl9jb25zdChzaXplSW4pKSksXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcIml0SW4yXCIsIGMuaTMyX2FkZChjLmdldExvY2FsKFwiaXRJbjJcIiksIGMuaTMyX2NvbnN0KHNpemVJbikpKSxcbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFwiaXRPdXRcIiwgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJpdE91dFwiKSwgYy5pMzJfY29uc3Qoc2l6ZU91dCkpKSxcbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFwiaVwiLCBjLmkzMl9hZGQoYy5nZXRMb2NhbChcImlcIiksIGMuaTMyX2NvbnN0KDEpKSksXG4gICAgICAgICAgICAgICAgYy5icigwKVxuICAgICAgICAgICAgKSksXG4gICAgICAgICk7XG4gICAgfVxufVxuXG52YXIgYmlnaW50ID0ge307XG5cbi8vIE1hbnkgb2YgdGhlc2UgdXRpbGl0aWVzIGFyZSBmcm9tIHRoZSBgYmlnLWludGVnZXJgIGxpYnJhcnksXG4vLyBidXQgYWRqdXN0ZWQgdG8gb25seSB3b3JrIHdpdGggbmF0aXZlIEJpZ0ludCB0eXBlXG4vLyBSZWYgaHR0cHM6Ly9naXRodWIuY29tL3BldGVyb2xzb24vQmlnSW50ZWdlci5qcy9ibG9iL2U1ZDIxNTRkM2M0MTcwNjljNTFlNzExNmJhZmMzYjkxZDBiOWZlNDEvQmlnSW50ZWdlci5qc1xuLy8gT3JpZ2luYWxseSBsaWNlbnNlZCBUaGUgVW5saWNlbnNlXG5cbmZ1bmN0aW9uIGNvbXBhcmUoYSwgYikge1xuICAgIHJldHVybiBhID09PSBiID8gMCA6IGEgPiBiID8gMSA6IC0xO1xufVxuXG5mdW5jdGlvbiBzcXVhcmUkMShuKSB7XG4gICAgcmV0dXJuIG4gKiBuO1xufVxuXG5mdW5jdGlvbiBpc09kZCQ0KG4pIHtcbiAgICByZXR1cm4gbiAlIDJuICE9PSAwbjtcbn1cblxuZnVuY3Rpb24gaXNFdmVuKG4pIHtcbiAgICByZXR1cm4gbiAlIDJuID09PSAwbjtcbn1cblxuZnVuY3Rpb24gaXNOZWdhdGl2ZSQzKG4pIHtcbiAgICByZXR1cm4gbiA8IDBuO1xufVxuXG5mdW5jdGlvbiBpc1Bvc2l0aXZlKG4pIHtcbiAgICByZXR1cm4gbiA+IDBuO1xufVxuXG5mdW5jdGlvbiBiaXRMZW5ndGgkNShuKSB7XG4gICAgaWYgKGlzTmVnYXRpdmUkMyhuKSkge1xuICAgICAgICByZXR1cm4gbi50b1N0cmluZygyKS5sZW5ndGggLSAxOyAvLyBkaXNjYXJkIHRoZSAtIHNpZ25cbiAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gbi50b1N0cmluZygyKS5sZW5ndGg7XG4gICAgfVxufVxuXG5mdW5jdGlvbiBhYnMobikge1xuICAgIHJldHVybiBuIDwgMG4gPyAtbiA6IG47XG59XG5cbmZ1bmN0aW9uIGlzVW5pdChuKSB7XG4gICAgcmV0dXJuIGFicyhuKSA9PT0gMW47XG59XG5cbmZ1bmN0aW9uIG1vZEludiQzKGEsIG4pIHtcbiAgICB2YXIgdCA9IDBuLCBuZXdUID0gMW4sIHIgPSBuLCBuZXdSID0gYWJzKGEpLCBxLCBsYXN0VCwgbGFzdFI7XG4gICAgd2hpbGUgKG5ld1IgIT09IDBuKSB7XG4gICAgICAgIHEgPSByIC8gbmV3UjtcbiAgICAgICAgbGFzdFQgPSB0O1xuICAgICAgICBsYXN0UiA9IHI7XG4gICAgICAgIHQgPSBuZXdUO1xuICAgICAgICByID0gbmV3UjtcbiAgICAgICAgbmV3VCA9IGxhc3RUIC0gKHEgKiBuZXdUKTtcbiAgICAgICAgbmV3UiA9IGxhc3RSIC0gKHEgKiBuZXdSKTtcbiAgICB9XG4gICAgaWYgKCFpc1VuaXQocikpIHRocm93IG5ldyBFcnJvcihhLnRvU3RyaW5nKCkgKyBcIiBhbmQgXCIgKyBuLnRvU3RyaW5nKCkgKyBcIiBhcmUgbm90IGNvLXByaW1lXCIpO1xuICAgIGlmIChjb21wYXJlKHQsIDBuKSA9PT0gLTEpIHtcbiAgICAgICAgdCA9IHQgKyBuO1xuICAgIH1cbiAgICBpZiAoaXNOZWdhdGl2ZSQzKGEpKSB7XG4gICAgICAgIHJldHVybiAtdDtcbiAgICB9XG4gICAgcmV0dXJuIHQ7XG59XG5cbmZ1bmN0aW9uIG1vZFBvdyQyKG4sIGV4cCwgbW9kKSB7XG4gICAgaWYgKG1vZCA9PT0gMG4pIHRocm93IG5ldyBFcnJvcihcIkNhbm5vdCB0YWtlIG1vZFBvdyB3aXRoIG1vZHVsdXMgMFwiKTtcbiAgICB2YXIgciA9IDFuLFxuICAgICAgICBiYXNlID0gbiAlIG1vZDtcbiAgICBpZiAoaXNOZWdhdGl2ZSQzKGV4cCkpIHtcbiAgICAgICAgZXhwID0gZXhwICogLTFuO1xuICAgICAgICBiYXNlID0gbW9kSW52JDMoYmFzZSwgbW9kKTtcbiAgICB9XG4gICAgd2hpbGUgKGlzUG9zaXRpdmUoZXhwKSkge1xuICAgICAgICBpZiAoYmFzZSA9PT0gMG4pIHJldHVybiAwbjtcbiAgICAgICAgaWYgKGlzT2RkJDQoZXhwKSkgciA9IHIgKiBiYXNlICUgbW9kO1xuICAgICAgICBleHAgPSBleHAgLyAybjtcbiAgICAgICAgYmFzZSA9IHNxdWFyZSQxKGJhc2UpICUgbW9kO1xuICAgIH1cbiAgICByZXR1cm4gcjtcbn1cblxuZnVuY3Rpb24gY29tcGFyZUFicyhhLCBiKSB7XG4gICAgYSA9IGEgPj0gMG4gPyBhIDogLWE7XG4gICAgYiA9IGIgPj0gMG4gPyBiIDogLWI7XG4gICAgcmV0dXJuIGEgPT09IGIgPyAwIDogYSA+IGIgPyAxIDogLTE7XG59XG5cbmZ1bmN0aW9uIGlzRGl2aXNpYmxlQnkoYSwgbikge1xuICAgIGlmIChuID09PSAwbikgcmV0dXJuIGZhbHNlO1xuICAgIGlmIChpc1VuaXQobikpIHJldHVybiB0cnVlO1xuICAgIGlmIChjb21wYXJlQWJzKG4sIDJuKSA9PT0gMCkgcmV0dXJuIGlzRXZlbihhKTtcbiAgICByZXR1cm4gYSAlIG4gPT09IDBuO1xufVxuXG5mdW5jdGlvbiBpc0Jhc2ljUHJpbWUodikge1xuICAgIHZhciBuID0gYWJzKHYpO1xuICAgIGlmIChpc1VuaXQobikpIHJldHVybiBmYWxzZTtcbiAgICBpZiAobiA9PT0gMm4gfHwgbiA9PT0gM24gfHwgbiA9PT0gNW4pIHJldHVybiB0cnVlO1xuICAgIGlmIChpc0V2ZW4obikgfHwgaXNEaXZpc2libGVCeShuLCAzbikgfHwgaXNEaXZpc2libGVCeShuLCA1bikpIHJldHVybiBmYWxzZTtcbiAgICBpZiAobiA8IDQ5bikgcmV0dXJuIHRydWU7XG4gICAgLy8gd2UgZG9uJ3Qga25vdyBpZiBpdCdzIHByaW1lOiBsZXQgdGhlIG90aGVyIGZ1bmN0aW9ucyBmaWd1cmUgaXQgb3V0XG59XG5cbmZ1bmN0aW9uIHByZXYobikge1xuICAgIHJldHVybiBuIC0gMW47XG59XG5cbmZ1bmN0aW9uIG1pbGxlclJhYmluVGVzdChuLCBhKSB7XG4gICAgdmFyIG5QcmV2ID0gcHJldihuKSxcbiAgICAgICAgYiA9IG5QcmV2LFxuICAgICAgICByID0gMCxcbiAgICAgICAgZCwgaSwgeDtcbiAgICB3aGlsZSAoaXNFdmVuKGIpKSBiID0gYiAvIDJuLCByKys7XG4gICAgbmV4dDogZm9yIChpID0gMDsgaSA8IGEubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgaWYgKG4gPCBhW2ldKSBjb250aW51ZTtcbiAgICAgICAgeCA9IG1vZFBvdyQyKEJpZ0ludChhW2ldKSwgYiwgbik7XG4gICAgICAgIGlmIChpc1VuaXQoeCkgfHwgeCA9PT0gblByZXYpIGNvbnRpbnVlO1xuICAgICAgICBmb3IgKGQgPSByIC0gMTsgZCAhPSAwOyBkLS0pIHtcbiAgICAgICAgICAgIHggPSBzcXVhcmUkMSh4KSAlIG47XG4gICAgICAgICAgICBpZiAoaXNVbml0KHgpKSByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICBpZiAoeCA9PT0gblByZXYpIGNvbnRpbnVlIG5leHQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbn1cblxuZnVuY3Rpb24gaXNQcmltZSQxKHApIHtcbiAgICB2YXIgaXNQcmltZSA9IGlzQmFzaWNQcmltZShwKTtcbiAgICBpZiAoaXNQcmltZSAhPT0gdW5kZWZpbmVkKSByZXR1cm4gaXNQcmltZTtcbiAgICB2YXIgbiA9IGFicyhwKTtcbiAgICB2YXIgYml0cyA9IGJpdExlbmd0aCQ1KG4pO1xuICAgIGlmIChiaXRzIDw9IDY0KVxuICAgICAgICByZXR1cm4gbWlsbGVyUmFiaW5UZXN0KG4sIFsyLCAzLCA1LCA3LCAxMSwgMTMsIDE3LCAxOSwgMjMsIDI5LCAzMSwgMzddKTtcbiAgICB2YXIgbG9nTiA9IE1hdGgubG9nKDIpICogTnVtYmVyKGJpdHMpO1xuICAgIHZhciB0ID0gTWF0aC5jZWlsKGxvZ04pO1xuICAgIGZvciAodmFyIGEgPSBbXSwgaSA9IDA7IGkgPCB0OyBpKyspIHtcbiAgICAgICAgYS5wdXNoKEJpZ0ludChpICsgMikpO1xuICAgIH1cbiAgICByZXR1cm4gbWlsbGVyUmFiaW5UZXN0KG4sIGEpO1xufVxuXG5iaWdpbnQuYml0TGVuZ3RoID0gYml0TGVuZ3RoJDU7XG5iaWdpbnQuaXNPZGQgPSBpc09kZCQ0O1xuYmlnaW50LmlzTmVnYXRpdmUgPSBpc05lZ2F0aXZlJDM7XG5iaWdpbnQuYWJzID0gYWJzO1xuYmlnaW50LmlzVW5pdCA9IGlzVW5pdDtcbmJpZ2ludC5jb21wYXJlID0gY29tcGFyZTtcbmJpZ2ludC5tb2RJbnYgPSBtb2RJbnYkMztcbmJpZ2ludC5tb2RQb3cgPSBtb2RQb3ckMjtcbmJpZ2ludC5pc1ByaW1lID0gaXNQcmltZSQxO1xuYmlnaW50LnNxdWFyZSA9IHNxdWFyZSQxO1xuXG4vKlxuICAgIENvcHlyaWdodCAyMDE5IDBLSU1TIGFzc29jaWF0aW9uLlxuXG4gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2Ygd2FzbXNuYXJrIChXZWIgQXNzZW1ibHkgemtTbmFyayBQcm92ZXIpLlxuXG4gICAgd2FzbXNuYXJrIGlzIGEgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdFxuICAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3JcbiAgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuXG4gICAgd2FzbXNuYXJrIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUXG4gICAgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZXG4gICAgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljXG4gICAgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuXG4gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAgICBhbG9uZyB3aXRoIHdhc21zbmFyay4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cbiovXG5cbmNvbnN0IGJ1aWxkSW50ID0gYnVpbGRfaW50O1xuY29uc3QgdXRpbHMkNSA9IHV0aWxzJDY7XG5jb25zdCBidWlsZEV4cCQyID0gYnVpbGRfdGltZXNzY2FsYXI7XG5jb25zdCBidWlsZEJhdGNoSW52ZXJzZSQyID0gYnVpbGRfYmF0Y2hpbnZlcnNlO1xuY29uc3QgYnVpbGRCYXRjaENvbnZlcnRpb24kMSA9IGJ1aWxkX2JhdGNoY29udmVydGlvbjtcbmNvbnN0IGJ1aWxkQmF0Y2hPcCA9IGJ1aWxkX2JhdGNob3A7XG5jb25zdCB7IGJpdExlbmd0aDogYml0TGVuZ3RoJDQsIG1vZEludjogbW9kSW52JDIsIG1vZFBvdzogbW9kUG93JDEsIGlzUHJpbWUsIGlzT2RkOiBpc09kZCQzLCBzcXVhcmUgfSA9IGJpZ2ludDtcblxudmFyIGJ1aWxkX2YxbSA9IGZ1bmN0aW9uIGJ1aWxkRjFtKG1vZHVsZSwgX3EsIF9wcmVmaXgsIF9pbnRQcmVmaXgpIHtcbiAgICBjb25zdCBxID0gQmlnSW50KF9xKTtcbiAgICBjb25zdCBuNjQgPSBNYXRoLmZsb29yKChiaXRMZW5ndGgkNChxIC0gMW4pIC0gMSkvNjQpICsxO1xuICAgIGNvbnN0IG4zMiA9IG42NCoyO1xuICAgIGNvbnN0IG44ID0gbjY0Kjg7XG5cbiAgICBjb25zdCBwcmVmaXggPSBfcHJlZml4IHx8IFwiZjFtXCI7XG4gICAgaWYgKG1vZHVsZS5tb2R1bGVzW3ByZWZpeF0pIHJldHVybiBwcmVmaXg7ICAvLyBhbHJlYWR5IGJ1aWxkZWRcblxuICAgIGNvbnN0IGludFByZWZpeCA9IGJ1aWxkSW50KG1vZHVsZSwgbjY0LCBfaW50UHJlZml4KTtcbiAgICBjb25zdCBwcSA9IG1vZHVsZS5hbGxvYyhuOCwgdXRpbHMkNS5iaWdJbnQyQnl0ZXNMRShxLCBuOCkpO1xuXG4gICAgY29uc3QgcFIyID0gbW9kdWxlLmFsbG9jKHV0aWxzJDUuYmlnSW50MkJ5dGVzTEUoc3F1YXJlKDFuIDw8IEJpZ0ludChuNjQqNjQpKSAlIHEsIG44KSk7XG4gICAgY29uc3QgcE9uZSA9IG1vZHVsZS5hbGxvYyh1dGlscyQ1LmJpZ0ludDJCeXRlc0xFKCgxbiA8PCBCaWdJbnQobjY0KjY0KSkgJSBxLCBuOCkpO1xuICAgIGNvbnN0IHBaZXJvID0gbW9kdWxlLmFsbG9jKHV0aWxzJDUuYmlnSW50MkJ5dGVzTEUoMG4sIG44KSk7XG4gICAgY29uc3QgX21pbnVzT25lID0gcSAtIDFuO1xuICAgIGNvbnN0IF9lID0gX21pbnVzT25lID4+IDFuOyAvLyBlID0gKHAtMSkvMlxuICAgIGNvbnN0IHBlID0gbW9kdWxlLmFsbG9jKG44LCB1dGlscyQ1LmJpZ0ludDJCeXRlc0xFKF9lLCBuOCkpO1xuXG4gICAgY29uc3QgX2VQbHVzT25lID0gX2UgKyAxbjsgLy8gZSA9IChwLTEpLzJcbiAgICBjb25zdCBwZVBsdXNPbmUgPSBtb2R1bGUuYWxsb2MobjgsIHV0aWxzJDUuYmlnSW50MkJ5dGVzTEUoX2VQbHVzT25lLCBuOCkpO1xuXG4gICAgbW9kdWxlLm1vZHVsZXNbcHJlZml4XSA9IHtcbiAgICAgICAgcHE6IHBxLFxuICAgICAgICBwUjI6IHBSMixcbiAgICAgICAgbjY0OiBuNjQsXG4gICAgICAgIHE6IHEsXG4gICAgICAgIHBPbmU6IHBPbmUsXG4gICAgICAgIHBaZXJvOiBwWmVybyxcbiAgICAgICAgcGVQbHVzT25lOiBwZVBsdXNPbmVcbiAgICB9O1xuXG4gICAgZnVuY3Rpb24gYnVpbGRPbmUoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4K1wiX29uZVwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInByXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgZi5hZGRDb2RlKGMuY2FsbChpbnRQcmVmaXggKyBcIl9jb3B5XCIsIGMuaTMyX2NvbnN0KHBPbmUpLCBjLmdldExvY2FsKFwicHJcIikpKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBidWlsZEFkZCgpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrXCJfYWRkXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInlcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJyXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICBjLmNhbGwoaW50UHJlZml4K1wiX2FkZFwiLCBjLmdldExvY2FsKFwieFwiKSwgIGMuZ2V0TG9jYWwoXCJ5XCIpLCBjLmdldExvY2FsKFwiclwiKSksXG4gICAgICAgICAgICAgICAgYy5kcm9wKGMuY2FsbChpbnRQcmVmaXgrXCJfc3ViXCIsIGMuZ2V0TG9jYWwoXCJyXCIpLCBjLmkzMl9jb25zdChwcSksIGMuZ2V0TG9jYWwoXCJyXCIpKSksXG4gICAgICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICAgICAgYy5jYWxsKGludFByZWZpeCtcIl9ndGVcIiwgYy5nZXRMb2NhbChcInJcIiksIGMuaTMyX2NvbnN0KHBxKSAgKSxcbiAgICAgICAgICAgICAgICAgICAgYy5kcm9wKGMuY2FsbChpbnRQcmVmaXgrXCJfc3ViXCIsIGMuZ2V0TG9jYWwoXCJyXCIpLCBjLmkzMl9jb25zdChwcSksIGMuZ2V0TG9jYWwoXCJyXCIpKSksXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGJ1aWxkU3ViKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCtcIl9zdWJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInJcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgIGMuY2FsbChpbnRQcmVmaXgrXCJfc3ViXCIsIGMuZ2V0TG9jYWwoXCJ4XCIpLCAgYy5nZXRMb2NhbChcInlcIiksIGMuZ2V0TG9jYWwoXCJyXCIpKSxcbiAgICAgICAgICAgICAgICBjLmRyb3AoYy5jYWxsKGludFByZWZpeCtcIl9hZGRcIiwgYy5nZXRMb2NhbChcInJcIiksICBjLmkzMl9jb25zdChwcSksIGMuZ2V0TG9jYWwoXCJyXCIpKSlcbiAgICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBidWlsZE5lZygpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrXCJfbmVnXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInJcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfc3ViXCIsIGMuaTMyX2NvbnN0KHBaZXJvKSwgYy5nZXRMb2NhbChcInhcIiksIGMuZ2V0TG9jYWwoXCJyXCIpKVxuICAgICAgICApO1xuICAgIH1cblxuXG4gICAgZnVuY3Rpb24gYnVpbGRJc05lZ2F0aXZlKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCtcIl9pc05lZ2F0aXZlXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5zZXRSZXR1cm5UeXBlKFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgQVVYID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44KSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX2Zyb21Nb250Z29tZXJ5XCIsIGMuZ2V0TG9jYWwoXCJ4XCIpLCBBVVgpLFxuICAgICAgICAgICAgYy5jYWxsKGludFByZWZpeCArIFwiX2d0ZVwiLCBBVVgsIGMuaTMyX2NvbnN0KHBlUGx1c09uZSkgKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGJ1aWxkU2lnbigpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrXCJfc2lnblwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInhcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuc2V0UmV0dXJuVHlwZShcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IEFVWCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuaWYgKFxuICAgICAgICAgICAgICAgIGMuY2FsbChpbnRQcmVmaXggKyBcIl9pc1plcm9cIiwgYy5nZXRMb2NhbChcInhcIikpLFxuICAgICAgICAgICAgICAgIGMucmV0KGMuaTMyX2NvbnN0KDApKVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9mcm9tTW9udGdvbWVyeVwiLCBjLmdldExvY2FsKFwieFwiKSwgQVVYKSxcbiAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgYy5jYWxsKGludFByZWZpeCArIFwiX2d0ZVwiLCBBVVgsIGMuaTMyX2NvbnN0KHBlUGx1c09uZSkpLFxuICAgICAgICAgICAgICAgIGMucmV0KGMuaTMyX2NvbnN0KC0xKSlcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjLnJldChjLmkzMl9jb25zdCgxKSlcbiAgICAgICAgKTtcbiAgICB9XG5cblxuICAgIGZ1bmN0aW9uIGJ1aWxkTVJlZHVjdCgpIHtcbiAgICAgICAgY29uc3QgY2FycmllcyA9IG1vZHVsZS5hbGxvYyhuMzIqbjMyKjgpO1xuXG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4K1wiX21SZWR1Y3RcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ0XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiclwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcIm5wMzJcIiwgXCJpNjRcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJjXCIsIFwiaTY0XCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwibVwiLCBcImk2NFwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IG5wMzIgPSBOdW1iZXIoMHgxMDAwMDAwMDBuIC0gbW9kSW52JDIocSwgMHgxMDAwMDAwMDBuKSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKGMuc2V0TG9jYWwoXCJucDMyXCIsIGMuaTY0X2NvbnN0KG5wMzIpKSk7XG5cbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPG4zMjsgaSsrKSB7XG4gICAgICAgICAgICBmLmFkZENvZGUoYy5zZXRMb2NhbChcImNcIiwgYy5pNjRfY29uc3QoMCkpKTtcblxuICAgICAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXG4gICAgICAgICAgICAgICAgICAgIFwibVwiLFxuICAgICAgICAgICAgICAgICAgICBjLmk2NF9hbmQoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9tdWwoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfbG9hZDMyX3UoYy5nZXRMb2NhbChcInRcIiksIGkqNCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcIm5wMzJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9jb25zdChcIjB4RkZGRkZGRkZcIilcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIGZvciAobGV0IGo9MDsgajxuMzI7IGorKykge1xuXG4gICAgICAgICAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgICAgICAgICBjLnNldExvY2FsKFwiY1wiLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfYWRkKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2FkZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfbG9hZDMyX3UoYy5nZXRMb2NhbChcInRcIiksIChpK2opKjQpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9zaHJfdShjLmdldExvY2FsKFwiY1wiKSwgYy5pNjRfY29uc3QoMzIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfbXVsKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9sb2FkMzJfdShjLmkzMl9jb25zdChwcSksIGoqNCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJtXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgICAgICAgICAgYy5pNjRfc3RvcmUzMihcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJ0XCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgKGkraikqNCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJjXCIpXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICAgICAgYy5pNjRfc3RvcmUzMihcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QoY2FycmllcyksXG4gICAgICAgICAgICAgICAgICAgIGkqNCxcbiAgICAgICAgICAgICAgICAgICAgYy5pNjRfc2hyX3UoYy5nZXRMb2NhbChcImNcIiksIGMuaTY0X2NvbnN0KDMyKSlcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5jYWxsKFxuICAgICAgICAgICAgICAgIHByZWZpeCtcIl9hZGRcIixcbiAgICAgICAgICAgICAgICBjLmkzMl9jb25zdChjYXJyaWVzKSxcbiAgICAgICAgICAgICAgICBjLmkzMl9hZGQoXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJ0XCIpLFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdChuMzIqNClcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJyXCIpXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgfVxuXG5cblxuICAgIGZ1bmN0aW9uIGJ1aWxkTXVsKCkge1xuXG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4K1wiX211bFwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInhcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ5XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiclwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcImMwXCIsIFwiaTY0XCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiYzFcIiwgXCJpNjRcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJucDMyXCIsIFwiaTY0XCIpO1xuXG5cbiAgICAgICAgZm9yIChsZXQgaT0wO2k8bjMyOyBpKyspIHtcbiAgICAgICAgICAgIGYuYWRkTG9jYWwoXCJ4XCIraSwgXCJpNjRcIik7XG4gICAgICAgICAgICBmLmFkZExvY2FsKFwieVwiK2ksIFwiaTY0XCIpO1xuICAgICAgICAgICAgZi5hZGRMb2NhbChcIm1cIitpLCBcImk2NFwiKTtcbiAgICAgICAgICAgIGYuYWRkTG9jYWwoXCJxXCIraSwgXCJpNjRcIik7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IG5wMzIgPSBOdW1iZXIoMHgxMDAwMDAwMDBuIC0gbW9kSW52JDIocSwgMHgxMDAwMDAwMDBuKSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKGMuc2V0TG9jYWwoXCJucDMyXCIsIGMuaTY0X2NvbnN0KG5wMzIpKSk7XG5cblxuICAgICAgICBjb25zdCBsb2FkWCA9IFtdO1xuICAgICAgICBjb25zdCBsb2FkWSA9IFtdO1xuICAgICAgICBjb25zdCBsb2FkUSA9IFtdO1xuICAgICAgICBmdW5jdGlvbiBtdWxpaihpLCBqKSB7XG4gICAgICAgICAgICBsZXQgWCxZO1xuICAgICAgICAgICAgaWYgKCFsb2FkWFtpXSkge1xuICAgICAgICAgICAgICAgIFggPSBjLnRlZUxvY2FsKFwieFwiK2ksIGMuaTY0X2xvYWQzMl91KCBjLmdldExvY2FsKFwieFwiKSwgaSo0KSk7XG4gICAgICAgICAgICAgICAgbG9hZFhbaV0gPSB0cnVlO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBYID0gYy5nZXRMb2NhbChcInhcIitpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghbG9hZFlbal0pIHtcbiAgICAgICAgICAgICAgICBZID0gYy50ZWVMb2NhbChcInlcIitqLCBjLmk2NF9sb2FkMzJfdSggYy5nZXRMb2NhbChcInlcIiksIGoqNCkpO1xuICAgICAgICAgICAgICAgIGxvYWRZW2pdID0gdHJ1ZTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgWSA9IGMuZ2V0TG9jYWwoXCJ5XCIraik7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBjLmk2NF9tdWwoIFgsIFkgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZ1bmN0aW9uIG11bHFtKGksIGopIHtcbiAgICAgICAgICAgIGxldCBRLE07XG4gICAgICAgICAgICBpZiAoIWxvYWRRW2ldKSB7XG4gICAgICAgICAgICAgICAgUSA9IGMudGVlTG9jYWwoXCJxXCIraSwgYy5pNjRfbG9hZDMyX3UoYy5pMzJfY29uc3QoMCksIHBxK2kqNCApKTtcbiAgICAgICAgICAgICAgICBsb2FkUVtpXSA9IHRydWU7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIFEgPSBjLmdldExvY2FsKFwicVwiK2kpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgTSA9IGMuZ2V0TG9jYWwoXCJtXCIraik7XG5cbiAgICAgICAgICAgIHJldHVybiBjLmk2NF9tdWwoIFEsIE0gKTtcbiAgICAgICAgfVxuXG5cbiAgICAgICAgbGV0IGMwID0gXCJjMFwiO1xuICAgICAgICBsZXQgYzEgPSBcImMxXCI7XG5cbiAgICAgICAgZm9yIChsZXQgaz0wOyBrPG4zMioyLTE7IGsrKykge1xuICAgICAgICAgICAgZm9yIChsZXQgaT1NYXRoLm1heCgwLCBrLW4zMisxKTsgKGk8PWspJiYoaTxuMzIpOyBpKyspIHtcbiAgICAgICAgICAgICAgICBjb25zdCBqPSBrLWk7XG5cbiAgICAgICAgICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoYzAsXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9hZGQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfYW5kKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKGMwKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfY29uc3QoMHhGRkZGRkZGRilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG11bGlqKGksailcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoYzEsXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9hZGQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChjMSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfc2hyX3UoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoYzApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9jb25zdCgzMilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuXG5cbiAgICAgICAgICAgIGZvciAobGV0IGk9TWF0aC5tYXgoMSwgay1uMzIrMSk7IChpPD1rKSYmKGk8bjMyKTsgaSsrKSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgaj0gay1pO1xuXG4gICAgICAgICAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgICAgICAgICBjLnNldExvY2FsKGMwLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfYWRkKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2FuZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChjMCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2NvbnN0KDB4RkZGRkZGRkYpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdWxxbShpLGopXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgICAgICAgICBjLnNldExvY2FsKGMxLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfYWRkKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoYzEpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X3Nocl91KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKGMwKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfY29uc3QoMzIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChrPG4zMikge1xuICAgICAgICAgICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcbiAgICAgICAgICAgICAgICAgICAgICAgIFwibVwiK2ssXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9hbmQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfbXVsKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9hbmQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKGMwKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2NvbnN0KDB4RkZGRkZGRkYpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJucDMyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9jb25zdChcIjB4RkZGRkZGRkZcIilcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICk7XG5cblxuICAgICAgICAgICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgICAgICAgICAgYy5zZXRMb2NhbChjMCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2FkZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9hbmQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoYzApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9jb25zdCgweEZGRkZGRkZGKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbXVscW0oMCxrKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgICAgICAgICAgYy5zZXRMb2NhbChjMSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2FkZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKGMxKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9zaHJfdShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChjMCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2NvbnN0KDMyKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG5cblxuICAgICAgICAgICAgaWYgKGs+PW4zMikge1xuICAgICAgICAgICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgICAgICAgICAgYy5pNjRfc3RvcmUzMihcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJyXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgKGstbjMyKSo0LFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChjMClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBbYzAsIGMxXSA9IFtjMSwgYzBdO1xuICAgICAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoYzEsXG4gICAgICAgICAgICAgICAgICAgIGMuaTY0X3Nocl91KFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChjMCksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9jb25zdCgzMilcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5pNjRfc3RvcmUzMihcbiAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiclwiKSxcbiAgICAgICAgICAgICAgICBuMzIqNC00LFxuICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoYzApXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICBjLmkzMl93cmFwX2k2NChjLmdldExvY2FsKGMxKSksXG4gICAgICAgICAgICAgICAgYy5kcm9wKGMuY2FsbChpbnRQcmVmaXgrXCJfc3ViXCIsIGMuZ2V0TG9jYWwoXCJyXCIpLCBjLmkzMl9jb25zdChwcSksIGMuZ2V0TG9jYWwoXCJyXCIpKSksXG4gICAgICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICAgICAgYy5jYWxsKGludFByZWZpeCtcIl9ndGVcIiwgYy5nZXRMb2NhbChcInJcIiksIGMuaTMyX2NvbnN0KHBxKSAgKSxcbiAgICAgICAgICAgICAgICAgICAgYy5kcm9wKGMuY2FsbChpbnRQcmVmaXgrXCJfc3ViXCIsIGMuZ2V0TG9jYWwoXCJyXCIpLCBjLmkzMl9jb25zdChwcSksIGMuZ2V0TG9jYWwoXCJyXCIpKSksXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKVxuICAgICAgICApO1xuICAgIH1cblxuXG4gICAgZnVuY3Rpb24gYnVpbGRTcXVhcmUoKSB7XG5cbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrXCJfc3F1YXJlXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInJcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJjMFwiLCBcImk2NFwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcImMxXCIsIFwiaTY0XCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiYzBfb2xkXCIsIFwiaTY0XCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiYzFfb2xkXCIsIFwiaTY0XCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwibnAzMlwiLCBcImk2NFwiKTtcblxuXG4gICAgICAgIGZvciAobGV0IGk9MDtpPG4zMjsgaSsrKSB7XG4gICAgICAgICAgICBmLmFkZExvY2FsKFwieFwiK2ksIFwiaTY0XCIpO1xuICAgICAgICAgICAgZi5hZGRMb2NhbChcIm1cIitpLCBcImk2NFwiKTtcbiAgICAgICAgICAgIGYuYWRkTG9jYWwoXCJxXCIraSwgXCJpNjRcIik7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IG5wMzIgPSBOdW1iZXIoMHgxMDAwMDAwMDBuIC0gbW9kSW52JDIocSwgMHgxMDAwMDAwMDBuKSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKGMuc2V0TG9jYWwoXCJucDMyXCIsIGMuaTY0X2NvbnN0KG5wMzIpKSk7XG5cblxuICAgICAgICBjb25zdCBsb2FkWCA9IFtdO1xuICAgICAgICBjb25zdCBsb2FkUSA9IFtdO1xuICAgICAgICBmdW5jdGlvbiBtdWxpaihpLCBqKSB7XG4gICAgICAgICAgICBsZXQgWCxZO1xuICAgICAgICAgICAgaWYgKCFsb2FkWFtpXSkge1xuICAgICAgICAgICAgICAgIFggPSBjLnRlZUxvY2FsKFwieFwiK2ksIGMuaTY0X2xvYWQzMl91KCBjLmdldExvY2FsKFwieFwiKSwgaSo0KSk7XG4gICAgICAgICAgICAgICAgbG9hZFhbaV0gPSB0cnVlO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBYID0gYy5nZXRMb2NhbChcInhcIitpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghbG9hZFhbal0pIHtcbiAgICAgICAgICAgICAgICBZID0gYy50ZWVMb2NhbChcInhcIitqLCBjLmk2NF9sb2FkMzJfdSggYy5nZXRMb2NhbChcInhcIiksIGoqNCkpO1xuICAgICAgICAgICAgICAgIGxvYWRYW2pdID0gdHJ1ZTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgWSA9IGMuZ2V0TG9jYWwoXCJ4XCIraik7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBjLmk2NF9tdWwoIFgsIFkgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZ1bmN0aW9uIG11bHFtKGksIGopIHtcbiAgICAgICAgICAgIGxldCBRLE07XG4gICAgICAgICAgICBpZiAoIWxvYWRRW2ldKSB7XG4gICAgICAgICAgICAgICAgUSA9IGMudGVlTG9jYWwoXCJxXCIraSwgYy5pNjRfbG9hZDMyX3UoYy5pMzJfY29uc3QoMCksIHBxK2kqNCApKTtcbiAgICAgICAgICAgICAgICBsb2FkUVtpXSA9IHRydWU7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIFEgPSBjLmdldExvY2FsKFwicVwiK2kpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgTSA9IGMuZ2V0TG9jYWwoXCJtXCIraik7XG5cbiAgICAgICAgICAgIHJldHVybiBjLmk2NF9tdWwoIFEsIE0gKTtcbiAgICAgICAgfVxuXG5cbiAgICAgICAgbGV0IGMwID0gXCJjMFwiO1xuICAgICAgICBsZXQgYzEgPSBcImMxXCI7XG4gICAgICAgIGxldCBjMF9vbGQgPSBcImMwX29sZFwiO1xuICAgICAgICBsZXQgYzFfb2xkID0gXCJjMV9vbGRcIjtcblxuICAgICAgICBmb3IgKGxldCBrPTA7IGs8bjMyKjItMTsgaysrKSB7XG4gICAgICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChjMCwgYy5pNjRfY29uc3QoMCkpLFxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoYzEsIGMuaTY0X2NvbnN0KDApKSxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBmb3IgKGxldCBpPU1hdGgubWF4KDAsIGstbjMyKzEpOyAoaTwoKGsrMSk+PjEpICkmJihpPG4zMik7IGkrKykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGo9IGstaTtcblxuICAgICAgICAgICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgICAgICAgICAgYy5zZXRMb2NhbChjMCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2FkZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9hbmQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoYzApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9jb25zdCgweEZGRkZGRkZGKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbXVsaWooaSxqKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgICAgICAgICAgYy5zZXRMb2NhbChjMSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2FkZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKGMxKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9zaHJfdShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChjMCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2NvbnN0KDMyKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIE11bHRpcGx5IGJ5IDJcbiAgICAgICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKGMwLFxuICAgICAgICAgICAgICAgICAgICBjLmk2NF9zaGwoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9hbmQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChjMCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfY29uc3QoMHhGRkZGRkZGRilcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9jb25zdCgxKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoYzEsXG4gICAgICAgICAgICAgICAgICAgIGMuaTY0X2FkZChcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X3NobChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKGMxKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9jb25zdCgxKVxuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X3Nocl91KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoYzApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2NvbnN0KDMyKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgaWYgKGslMiA9PSAwKSB7XG4gICAgICAgICAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgICAgICAgICBjLnNldExvY2FsKGMwLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfYWRkKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2FuZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChjMCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2NvbnN0KDB4RkZGRkZGRkYpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdWxpaihrPj4xLCBrPj4xKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgICAgICAgICAgYy5zZXRMb2NhbChjMSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2FkZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKGMxKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9zaHJfdShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChjMCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2NvbnN0KDMyKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIEFkZCB0aGUgb2xkIGNhcnJ5XG5cbiAgICAgICAgICAgIGlmIChrPjApIHtcbiAgICAgICAgICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoYzAsXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9hZGQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfYW5kKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKGMwKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfY29uc3QoMHhGRkZGRkZGRilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2FuZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChjMF9vbGQpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9jb25zdCgweEZGRkZGRkZGKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgICAgICAgICBjLnNldExvY2FsKGMxLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfYWRkKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2FkZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChjMSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X3Nocl91KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChjMCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9jb25zdCgzMilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChjMV9vbGQpXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuXG5cbiAgICAgICAgICAgIGZvciAobGV0IGk9TWF0aC5tYXgoMSwgay1uMzIrMSk7IChpPD1rKSYmKGk8bjMyKTsgaSsrKSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgaj0gay1pO1xuXG4gICAgICAgICAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgICAgICAgICBjLnNldExvY2FsKGMwLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfYWRkKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2FuZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChjMCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2NvbnN0KDB4RkZGRkZGRkYpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdWxxbShpLGopXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgICAgICAgICBjLnNldExvY2FsKGMxLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfYWRkKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoYzEpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X3Nocl91KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKGMwKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfY29uc3QoMzIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChrPG4zMikge1xuICAgICAgICAgICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcbiAgICAgICAgICAgICAgICAgICAgICAgIFwibVwiK2ssXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9hbmQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfbXVsKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9hbmQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKGMwKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2NvbnN0KDB4RkZGRkZGRkYpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJucDMyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9jb25zdChcIjB4RkZGRkZGRkZcIilcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICk7XG5cblxuICAgICAgICAgICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgICAgICAgICAgYy5zZXRMb2NhbChjMCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2FkZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9hbmQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoYzApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9jb25zdCgweEZGRkZGRkZGKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbXVscW0oMCxrKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgICAgICAgICAgYy5zZXRMb2NhbChjMSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2FkZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKGMxKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9zaHJfdShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChjMCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2NvbnN0KDMyKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChrPj1uMzIpIHtcbiAgICAgICAgICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICAgICAgICAgIGMuaTY0X3N0b3JlMzIoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiclwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIChrLW4zMikqNCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoYzApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXG4gICAgICAgICAgICAgICAgICAgIGMwX29sZCxcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChjMSlcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXG4gICAgICAgICAgICAgICAgICAgIGMxX29sZCxcbiAgICAgICAgICAgICAgICAgICAgYy5pNjRfc2hyX3UoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKGMwX29sZCksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9jb25zdCgzMilcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5pNjRfc3RvcmUzMihcbiAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiclwiKSxcbiAgICAgICAgICAgICAgICBuMzIqNC00LFxuICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoYzBfb2xkKVxuICAgICAgICAgICAgKVxuICAgICAgICApO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgYy5pMzJfd3JhcF9pNjQoYy5nZXRMb2NhbChjMV9vbGQpKSxcbiAgICAgICAgICAgICAgICBjLmRyb3AoYy5jYWxsKGludFByZWZpeCtcIl9zdWJcIiwgYy5nZXRMb2NhbChcInJcIiksIGMuaTMyX2NvbnN0KHBxKSwgYy5nZXRMb2NhbChcInJcIikpKSxcbiAgICAgICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgICAgICBjLmNhbGwoaW50UHJlZml4K1wiX2d0ZVwiLCBjLmdldExvY2FsKFwiclwiKSwgYy5pMzJfY29uc3QocHEpICApLFxuICAgICAgICAgICAgICAgICAgICBjLmRyb3AoYy5jYWxsKGludFByZWZpeCtcIl9zdWJcIiwgYy5nZXRMb2NhbChcInJcIiksIGMuaTMyX2NvbnN0KHBxKSwgYy5nZXRMb2NhbChcInJcIikpKSxcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgfVxuXG5cbiAgICBmdW5jdGlvbiBidWlsZFNxdWFyZU9sZCgpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrXCJfc3F1YXJlT2xkXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInJcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBmLmFkZENvZGUoYy5jYWxsKHByZWZpeCArIFwiX211bFwiLCBjLmdldExvY2FsKFwieFwiKSwgYy5nZXRMb2NhbChcInhcIiksIGMuZ2V0TG9jYWwoXCJyXCIpKSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYnVpbGRUb01vbnRnb21lcnkoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4K1wiX3RvTW9udGdvbWVyeVwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInhcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJyXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG4gICAgICAgIGYuYWRkQ29kZShjLmNhbGwocHJlZml4K1wiX211bFwiLCBjLmdldExvY2FsKFwieFwiKSwgYy5pMzJfY29uc3QocFIyKSwgYy5nZXRMb2NhbChcInJcIikpKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBidWlsZEZyb21Nb250Z29tZXJ5KCkge1xuXG4gICAgICAgIGNvbnN0IHBBdXgyID0gbW9kdWxlLmFsbG9jKG44KjIpO1xuXG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4K1wiX2Zyb21Nb250Z29tZXJ5XCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInJcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcbiAgICAgICAgZi5hZGRDb2RlKGMuY2FsbChpbnRQcmVmaXggKyBcIl9jb3B5XCIsIGMuZ2V0TG9jYWwoXCJ4XCIpLCBjLmkzMl9jb25zdChwQXV4MikgKSk7XG4gICAgICAgIGYuYWRkQ29kZShjLmNhbGwoaW50UHJlZml4ICsgXCJfemVyb1wiLCBjLmkzMl9jb25zdChwQXV4MiArIG44KSApKTtcbiAgICAgICAgZi5hZGRDb2RlKGMuY2FsbChwcmVmaXgrXCJfbVJlZHVjdFwiLCBjLmkzMl9jb25zdChwQXV4MiksIGMuZ2V0TG9jYWwoXCJyXCIpKSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYnVpbGRJbnZlcnNlKCkge1xuXG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4KyBcIl9pbnZlcnNlXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInJcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcbiAgICAgICAgZi5hZGRDb2RlKGMuY2FsbChwcmVmaXggKyBcIl9mcm9tTW9udGdvbWVyeVwiLCBjLmdldExvY2FsKFwieFwiKSwgYy5nZXRMb2NhbChcInJcIikpKTtcbiAgICAgICAgZi5hZGRDb2RlKGMuY2FsbChpbnRQcmVmaXggKyBcIl9pbnZlcnNlTW9kXCIsIGMuZ2V0TG9jYWwoXCJyXCIpLCBjLmkzMl9jb25zdChwcSksIGMuZ2V0TG9jYWwoXCJyXCIpKSk7XG4gICAgICAgIGYuYWRkQ29kZShjLmNhbGwocHJlZml4ICsgXCJfdG9Nb250Z29tZXJ5XCIsIGMuZ2V0TG9jYWwoXCJyXCIpLCBjLmdldExvY2FsKFwiclwiKSkpO1xuICAgIH1cblxuICAgIC8vIENhbGN1bGF0ZSB2YXJpb3VzIHZhbHVzZSBuZWVkZWQgZm9yIHNxcnRcblxuXG4gICAgbGV0IF9ucXIgPSAybjtcbiAgICBpZiAoaXNQcmltZShxKSkge1xuICAgICAgICB3aGlsZSAobW9kUG93JDEoX25xciwgX2UsIHEpICE9PSBfbWludXNPbmUpIF9ucXIgPSBfbnFyICsgMW47XG4gICAgfVxuXG4gICAgbGV0IHMyID0gMDtcbiAgICBsZXQgX3QgPSBfbWludXNPbmU7XG5cbiAgICB3aGlsZSAoKCFpc09kZCQzKF90KSkmJihfdCAhPT0gMG4pKSB7XG4gICAgICAgIHMyKys7XG4gICAgICAgIF90ID0gX3QgPj4gMW47XG4gICAgfVxuICAgIGNvbnN0IHB0ID0gbW9kdWxlLmFsbG9jKG44LCB1dGlscyQ1LmJpZ0ludDJCeXRlc0xFKF90LCBuOCkpO1xuXG4gICAgY29uc3QgX25xclRvVCA9IG1vZFBvdyQxKF9ucXIsIF90LCBxKTtcbiAgICBjb25zdCBwTnFyVG9UID0gbW9kdWxlLmFsbG9jKHV0aWxzJDUuYmlnSW50MkJ5dGVzTEUoKF9ucXJUb1QgPDwgQmlnSW50KG42NCo2NCkpICUgcSwgbjgpKTtcblxuICAgIGNvbnN0IF90UGx1c09uZU92ZXIyID0gKF90ICsgMW4pID4+IDFuO1xuICAgIGNvbnN0IHB0UGx1c09uZU92ZXIyID0gbW9kdWxlLmFsbG9jKG44LCB1dGlscyQ1LmJpZ0ludDJCeXRlc0xFKF90UGx1c09uZU92ZXIyLCBuOCkpO1xuXG4gICAgZnVuY3Rpb24gYnVpbGRTcXJ0KCkge1xuXG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4KyBcIl9zcXJ0XCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiblwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInJcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJtXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiaVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcImpcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCBPTkUgPSBjLmkzMl9jb25zdChwT25lKTtcbiAgICAgICAgY29uc3QgQyA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuICAgICAgICBjb25zdCBUID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44KSk7XG4gICAgICAgIGNvbnN0IFIgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcbiAgICAgICAgY29uc3QgU1EgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcbiAgICAgICAgY29uc3QgQiA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcblxuICAgICAgICAgICAgLy8gSWYgKG49PTApIHJldHVybiAwXG4gICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9pc1plcm9cIiwgYy5nZXRMb2NhbChcIm5cIikpLFxuICAgICAgICAgICAgICAgIGMucmV0KFxuICAgICAgICAgICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfemVyb1wiLCBjLmdldExvY2FsKFwiclwiKSlcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApLFxuXG4gICAgICAgICAgICBjLnNldExvY2FsKFwibVwiLCBjLmkzMl9jb25zdChzMikpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX2NvcHlcIiwgYy5pMzJfY29uc3QocE5xclRvVCksIEMpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX2V4cFwiLCBjLmdldExvY2FsKFwiblwiKSwgYy5pMzJfY29uc3QocHQpLCBjLmkzMl9jb25zdChuOCksIFQpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX2V4cFwiLCBjLmdldExvY2FsKFwiblwiKSwgYy5pMzJfY29uc3QocHRQbHVzT25lT3ZlcjIpLCBjLmkzMl9jb25zdChuOCksIFIpLFxuXG4gICAgICAgICAgICBjLmJsb2NrKGMubG9vcChcbiAgICAgICAgICAgICAgICBjLmJyX2lmKDEsIGMuY2FsbChwcmVmaXggKyBcIl9lcVwiLCBULCBPTkUpKSxcblxuICAgICAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9zcXVhcmVcIiwgVCwgU1EpLFxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpXCIsIGMuaTMyX2NvbnN0KDEpKSxcbiAgICAgICAgICAgICAgICBjLmJsb2NrKGMubG9vcChcbiAgICAgICAgICAgICAgICAgICAgYy5icl9pZigxLCBjLmNhbGwocHJlZml4ICsgXCJfZXFcIiwgU1EsIE9ORSkpLFxuICAgICAgICAgICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfc3F1YXJlXCIsIFNRLCBTUSksXG4gICAgICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpXCIsIGMuaTMyX2FkZChjLmdldExvY2FsKFwiaVwiKSwgYy5pMzJfY29uc3QoMSkpKSxcbiAgICAgICAgICAgICAgICAgICAgYy5icigwKVxuICAgICAgICAgICAgICAgICkpLFxuXG4gICAgICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX2NvcHlcIiwgQywgQiksXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcImpcIiwgYy5pMzJfc3ViKGMuaTMyX3N1YiggYy5nZXRMb2NhbChcIm1cIiksIGMuZ2V0TG9jYWwoXCJpXCIpKSwgYy5pMzJfY29uc3QoMSkpICksXG4gICAgICAgICAgICAgICAgYy5ibG9jayhjLmxvb3AoXG4gICAgICAgICAgICAgICAgICAgIGMuYnJfaWYoMSwgYy5pMzJfZXF6KGMuZ2V0TG9jYWwoXCJqXCIpKSksXG4gICAgICAgICAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9zcXVhcmVcIiwgQiwgQiksXG4gICAgICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJqXCIsIGMuaTMyX3N1YihjLmdldExvY2FsKFwialwiKSwgYy5pMzJfY29uc3QoMSkpKSxcbiAgICAgICAgICAgICAgICAgICAgYy5icigwKVxuICAgICAgICAgICAgICAgICkpLFxuXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcIm1cIiwgYy5nZXRMb2NhbChcImlcIikpLFxuICAgICAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9zcXVhcmVcIiwgQiwgQyksXG4gICAgICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX211bFwiLCBULCBDLCBUKSxcbiAgICAgICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfbXVsXCIsIFIsIEIsIFIpLFxuXG4gICAgICAgICAgICAgICAgYy5icigwKVxuICAgICAgICAgICAgKSksXG5cbiAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX2lzTmVnYXRpdmVcIiwgUiksXG4gICAgICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX25lZ1wiLCBSLCBjLmdldExvY2FsKFwiclwiKSksXG4gICAgICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX2NvcHlcIiwgUiwgYy5nZXRMb2NhbChcInJcIikpLFxuICAgICAgICAgICAgKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGJ1aWxkSXNTcXVhcmUoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4K1wiX2lzU3F1YXJlXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiblwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5zZXRSZXR1cm5UeXBlKFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgT05FID0gYy5pMzJfY29uc3QocE9uZSk7XG4gICAgICAgIGNvbnN0IEFVWCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX2lzWmVyb1wiLCBjLmdldExvY2FsKFwiblwiKSksXG4gICAgICAgICAgICAgICAgYy5yZXQoYy5pMzJfY29uc3QoMSkpXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX2V4cFwiLCBjLmdldExvY2FsKFwiblwiKSwgYy5pMzJfY29uc3QocGUpLCBjLmkzMl9jb25zdChuOCksIEFVWCksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfZXFcIiwgQVVYLCBPTkUpXG4gICAgICAgICk7XG4gICAgfVxuXG5cbiAgICBmdW5jdGlvbiBidWlsZExvYWQoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4K1wiX2xvYWRcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJzY2FsYXJcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJzY2FsYXJMZW5cIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJyXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwicFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcImxcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJpXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwialwiLCBcImkzMlwiKTtcbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCBSID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44KSk7XG4gICAgICAgIGNvbnN0IHBBdXggPSBtb2R1bGUuYWxsb2MobjgpO1xuICAgICAgICBjb25zdCBBVVggPSBjLmkzMl9jb25zdChwQXV4KTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLmNhbGwoaW50UHJlZml4ICsgXCJfemVyb1wiLCBjLmdldExvY2FsKFwiclwiKSksXG4gICAgICAgICAgICBjLnNldExvY2FsKFwiaVwiLCBjLmkzMl9jb25zdChuOCkpLFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcInBcIiwgYy5nZXRMb2NhbChcInNjYWxhclwiKSksXG4gICAgICAgICAgICBjLmJsb2NrKGMubG9vcChcbiAgICAgICAgICAgICAgICBjLmJyX2lmKDEsIGMuaTMyX2d0X3UoYy5nZXRMb2NhbChcImlcIiksIGMuZ2V0TG9jYWwoXCJzY2FsYXJMZW5cIikpKSxcblxuICAgICAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX2VxKGMuZ2V0TG9jYWwoXCJpXCIpLCBjLmkzMl9jb25zdChuOCkpLFxuICAgICAgICAgICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfb25lXCIsIFIpLFxuICAgICAgICAgICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfbXVsXCIsIFIsIGMuaTMyX2NvbnN0KHBSMiksIFIpXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfbXVsXCIsIGMuZ2V0TG9jYWwoXCJwXCIpLCBSLCBBVVgpLFxuICAgICAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9hZGRcIiwgYy5nZXRMb2NhbChcInJcIiksIEFVWCwgYy5nZXRMb2NhbChcInJcIikpLFxuXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcInBcIiwgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwXCIpLCBjLmkzMl9jb25zdChuOCkpKSxcbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFwiaVwiLCBjLmkzMl9hZGQoYy5nZXRMb2NhbChcImlcIiksIGMuaTMyX2NvbnN0KG44KSkpLFxuICAgICAgICAgICAgICAgIGMuYnIoMClcbiAgICAgICAgICAgICkpLFxuXG4gICAgICAgICAgICBjLnNldExvY2FsKFwibFwiLCBjLmkzMl9yZW1fdSggYy5nZXRMb2NhbChcInNjYWxhckxlblwiKSwgYy5pMzJfY29uc3QobjgpKSksXG4gICAgICAgICAgICBjLmlmKGMuaTMyX2VxeihjLmdldExvY2FsKFwibFwiKSksIGMucmV0KFtdKSksXG4gICAgICAgICAgICBjLmNhbGwoaW50UHJlZml4ICsgXCJfemVyb1wiLCBBVVgpLFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcImpcIiwgYy5pMzJfY29uc3QoMCkpLFxuICAgICAgICAgICAgYy5ibG9jayhjLmxvb3AoXG4gICAgICAgICAgICAgICAgYy5icl9pZigxLCBjLmkzMl9lcShjLmdldExvY2FsKFwialwiKSwgYy5nZXRMb2NhbChcImxcIikpKSxcblxuICAgICAgICAgICAgICAgIGMuaTMyX3N0b3JlOChcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImpcIiksXG4gICAgICAgICAgICAgICAgICAgIHBBdXgsXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX2xvYWQ4X3UoYy5nZXRMb2NhbChcInBcIikpLFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcInBcIiwgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwXCIpLCBjLmkzMl9jb25zdCgxKSkpLFxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJqXCIsIGMuaTMyX2FkZChjLmdldExvY2FsKFwialwiKSwgYy5pMzJfY29uc3QoMSkpKSxcbiAgICAgICAgICAgICAgICBjLmJyKDApXG4gICAgICAgICAgICApKSxcblxuICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICBjLmkzMl9lcShjLmdldExvY2FsKFwiaVwiKSwgYy5pMzJfY29uc3QobjgpKSxcbiAgICAgICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfb25lXCIsIFIpLFxuICAgICAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9tdWxcIiwgUiwgYy5pMzJfY29uc3QocFIyKSwgUilcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfbXVsXCIsIEFVWCwgUiwgQVVYKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9hZGRcIiwgYy5nZXRMb2NhbChcInJcIiksIEFVWCwgYy5nZXRMb2NhbChcInJcIikpLFxuICAgICAgICApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGJ1aWxkVGltZXNTY2FsYXIoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4K1wiX3RpbWVzU2NhbGFyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInNjYWxhclwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInNjYWxhckxlblwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInJcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCBBVVggPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfbG9hZFwiLCBjLmdldExvY2FsKFwic2NhbGFyXCIpLCBjLmdldExvY2FsKFwic2NhbGFyTGVuXCIpLCBBVVgpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX3RvTW9udGdvbWVyeVwiLCBBVVgsIEFVWCksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfbXVsXCIsIGMuZ2V0TG9jYWwoXCJ4XCIpLCBBVVgsIGMuZ2V0TG9jYWwoXCJyXCIpKSxcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBidWlsZElzT25lKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCtcIl9pc09uZVwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInhcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuc2V0UmV0dXJuVHlwZShcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLnJldChjLmNhbGwoaW50UHJlZml4ICsgXCJfZXFcIiwgYy5nZXRMb2NhbChcInhcIiksIGMuaTMyX2NvbnN0KHBPbmUpKSlcbiAgICAgICAgKTtcbiAgICB9XG5cblxuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihpbnRQcmVmaXggKyBcIl9jb3B5XCIsIHByZWZpeCtcIl9jb3B5XCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihpbnRQcmVmaXggKyBcIl96ZXJvXCIsIHByZWZpeCtcIl96ZXJvXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihpbnRQcmVmaXggKyBcIl9pc1plcm9cIiwgcHJlZml4K1wiX2lzWmVyb1wiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24oaW50UHJlZml4ICsgXCJfZXFcIiwgcHJlZml4K1wiX2VxXCIpO1xuXG4gICAgYnVpbGRJc09uZSgpO1xuICAgIGJ1aWxkQWRkKCk7XG4gICAgYnVpbGRTdWIoKTtcbiAgICBidWlsZE5lZygpO1xuICAgIGJ1aWxkTVJlZHVjdCgpO1xuICAgIGJ1aWxkTXVsKCk7XG4gICAgYnVpbGRTcXVhcmUoKTtcbiAgICBidWlsZFNxdWFyZU9sZCgpO1xuICAgIGJ1aWxkVG9Nb250Z29tZXJ5KCk7XG4gICAgYnVpbGRGcm9tTW9udGdvbWVyeSgpO1xuICAgIGJ1aWxkSXNOZWdhdGl2ZSgpO1xuICAgIGJ1aWxkU2lnbigpO1xuICAgIGJ1aWxkSW52ZXJzZSgpO1xuICAgIGJ1aWxkT25lKCk7XG4gICAgYnVpbGRMb2FkKCk7XG4gICAgYnVpbGRUaW1lc1NjYWxhcigpO1xuICAgIGJ1aWxkQmF0Y2hJbnZlcnNlJDIobW9kdWxlLCBwcmVmaXgpO1xuICAgIGJ1aWxkQmF0Y2hDb252ZXJ0aW9uJDEobW9kdWxlLCBwcmVmaXggKyBcIl9iYXRjaFRvTW9udGdvbWVyeVwiLCBwcmVmaXggKyBcIl90b01vbnRnb21lcnlcIiwgbjgsIG44KTtcbiAgICBidWlsZEJhdGNoQ29udmVydGlvbiQxKG1vZHVsZSwgcHJlZml4ICsgXCJfYmF0Y2hGcm9tTW9udGdvbWVyeVwiLCBwcmVmaXggKyBcIl9mcm9tTW9udGdvbWVyeVwiLCBuOCwgbjgpO1xuICAgIGJ1aWxkQmF0Y2hDb252ZXJ0aW9uJDEobW9kdWxlLCBwcmVmaXggKyBcIl9iYXRjaE5lZ1wiLCBwcmVmaXggKyBcIl9uZWdcIiwgbjgsIG44KTtcbiAgICBidWlsZEJhdGNoT3AobW9kdWxlLCBwcmVmaXggKyBcIl9iYXRjaEFkZFwiLCBwcmVmaXggKyBcIl9hZGRcIiwgbjgsIG44KTtcbiAgICBidWlsZEJhdGNoT3AobW9kdWxlLCBwcmVmaXggKyBcIl9iYXRjaFN1YlwiLCBwcmVmaXggKyBcIl9zdWJcIiwgbjgsIG44KTtcbiAgICBidWlsZEJhdGNoT3AobW9kdWxlLCBwcmVmaXggKyBcIl9iYXRjaE11bFwiLCBwcmVmaXggKyBcIl9tdWxcIiwgbjgsIG44KTtcblxuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9hZGRcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX3N1YlwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfbmVnXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9pc05lZ2F0aXZlXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9pc09uZVwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfc2lnblwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfbVJlZHVjdFwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfbXVsXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9zcXVhcmVcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX3NxdWFyZU9sZFwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfZnJvbU1vbnRnb21lcnlcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX3RvTW9udGdvbWVyeVwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfaW52ZXJzZVwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfb25lXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9sb2FkXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl90aW1lc1NjYWxhclwiKTtcbiAgICBidWlsZEV4cCQyKFxuICAgICAgICBtb2R1bGUsXG4gICAgICAgIHByZWZpeCArIFwiX2V4cFwiLFxuICAgICAgICBuOCxcbiAgICAgICAgcHJlZml4ICsgXCJfbXVsXCIsXG4gICAgICAgIHByZWZpeCArIFwiX3NxdWFyZVwiLFxuICAgICAgICBpbnRQcmVmaXggKyBcIl9jb3B5XCIsXG4gICAgICAgIHByZWZpeCArIFwiX29uZVwiLFxuICAgICk7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX2V4cFwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfYmF0Y2hJbnZlcnNlXCIpO1xuICAgIGlmIChpc1ByaW1lKHEpKSB7XG4gICAgICAgIGJ1aWxkU3FydCgpO1xuICAgICAgICBidWlsZElzU3F1YXJlKCk7XG4gICAgICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9zcXJ0XCIpO1xuICAgICAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfaXNTcXVhcmVcIik7XG4gICAgfVxuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9iYXRjaFRvTW9udGdvbWVyeVwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfYmF0Y2hGcm9tTW9udGdvbWVyeVwiKTtcbiAgICAvLyBjb25zb2xlLmxvZyhtb2R1bGUuZnVuY3Rpb25JZHhCeU5hbWUpO1xuXG4gICAgcmV0dXJuIHByZWZpeDtcbn07XG5cbi8qXG4gICAgQ29weXJpZ2h0IDIwMTkgMEtJTVMgYXNzb2NpYXRpb24uXG5cbiAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB3YXNtc25hcmsgKFdlYiBBc3NlbWJseSB6a1NuYXJrIFByb3ZlcikuXG5cbiAgICB3YXNtc25hcmsgaXMgYSBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0XG4gICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxuICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG5cbiAgICB3YXNtc25hcmsgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVRcbiAgICBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFlcbiAgICBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWNcbiAgICBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG5cbiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICAgIGFsb25nIHdpdGggd2FzbXNuYXJrLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuKi9cblxuY29uc3QgYnVpbGRGMW0kMiA9YnVpbGRfZjFtO1xuY29uc3QgeyBiaXRMZW5ndGg6IGJpdExlbmd0aCQzIH0gPSBiaWdpbnQ7XG5cbnZhciBidWlsZF9mMSA9IGZ1bmN0aW9uIGJ1aWxkRjEobW9kdWxlLCBfcSwgX3ByZWZpeCwgX2YxbVByZWZpeCwgX2ludFByZWZpeCkge1xuXG4gICAgY29uc3QgcSA9IEJpZ0ludChfcSk7XG4gICAgY29uc3QgbjY0ID0gTWF0aC5mbG9vcigoYml0TGVuZ3RoJDMocSAtIDFuKSAtIDEpLzY0KSArMTtcbiAgICBjb25zdCBuOCA9IG42NCo4O1xuXG4gICAgY29uc3QgcHJlZml4ID0gX3ByZWZpeCB8fCBcImYxXCI7XG4gICAgaWYgKG1vZHVsZS5tb2R1bGVzW3ByZWZpeF0pIHJldHVybiBwcmVmaXg7ICAvLyBhbHJlYWR5IGJ1aWxkZWRcbiAgICBtb2R1bGUubW9kdWxlc1twcmVmaXhdID0ge1xuICAgICAgICBuNjQ6IG42NFxuICAgIH07XG5cbiAgICBjb25zdCBpbnRQcmVmaXggPSBfaW50UHJlZml4IHx8IFwiaW50XCI7XG4gICAgY29uc3QgZjFtUHJlZml4ID0gYnVpbGRGMW0kMihtb2R1bGUsIHEsIF9mMW1QcmVmaXgsIGludFByZWZpeCk7XG5cblxuICAgIGNvbnN0IHBSMiA9ICAgICBtb2R1bGUubW9kdWxlc1tmMW1QcmVmaXhdLnBSMjtcbiAgICBjb25zdCBwcSA9ICAgICBtb2R1bGUubW9kdWxlc1tmMW1QcmVmaXhdLnBxO1xuICAgIGNvbnN0IHBlUGx1c09uZSA9IG1vZHVsZS5tb2R1bGVzW2YxbVByZWZpeF0ucGVQbHVzT25lO1xuXG4gICAgZnVuY3Rpb24gYnVpbGRNdWwoKSB7XG4gICAgICAgIGNvbnN0IHBBdXgxID0gbW9kdWxlLmFsbG9jKG44KTtcblxuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCsgXCJfbXVsXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInlcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJyXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG4gICAgICAgIGYuYWRkQ29kZShjLmNhbGwoZjFtUHJlZml4ICsgXCJfbXVsXCIsIGMuZ2V0TG9jYWwoXCJ4XCIpLCBjLmdldExvY2FsKFwieVwiKSwgYy5pMzJfY29uc3QocEF1eDEpKSk7XG4gICAgICAgIGYuYWRkQ29kZShjLmNhbGwoZjFtUHJlZml4ICsgXCJfbXVsXCIsIGMuaTMyX2NvbnN0KHBBdXgxKSwgYy5pMzJfY29uc3QocFIyKSwgYy5nZXRMb2NhbChcInJcIikpKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBidWlsZFNxdWFyZSgpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrXCJfc3F1YXJlXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInJcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBmLmFkZENvZGUoYy5jYWxsKHByZWZpeCArIFwiX211bFwiLCBjLmdldExvY2FsKFwieFwiKSwgYy5nZXRMb2NhbChcInhcIiksIGMuZ2V0TG9jYWwoXCJyXCIpKSk7XG4gICAgfVxuXG5cbiAgICBmdW5jdGlvbiBidWlsZEludmVyc2UoKSB7XG5cbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrIFwiX2ludmVyc2VcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiclwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuICAgICAgICBmLmFkZENvZGUoYy5jYWxsKGludFByZWZpeCArIFwiX2ludmVyc2VNb2RcIiwgYy5nZXRMb2NhbChcInhcIiksIGMuaTMyX2NvbnN0KHBxKSwgYy5nZXRMb2NhbChcInJcIikpKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBidWlsZElzTmVnYXRpdmUoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4K1wiX2lzTmVnYXRpdmVcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLnNldFJldHVyblR5cGUoXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLmNhbGwoaW50UHJlZml4ICsgXCJfZ3RlXCIsIGMuZ2V0TG9jYWwoXCJ4XCIpLCBjLmkzMl9jb25zdChwZVBsdXNPbmUpIClcbiAgICAgICAgKTtcbiAgICB9XG5cblxuICAgIGJ1aWxkTXVsKCk7XG4gICAgYnVpbGRTcXVhcmUoKTtcbiAgICBidWlsZEludmVyc2UoKTtcbiAgICBidWlsZElzTmVnYXRpdmUoKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24oZjFtUHJlZml4ICsgXCJfYWRkXCIsIHByZWZpeCArIFwiX2FkZFwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24oZjFtUHJlZml4ICsgXCJfc3ViXCIsIHByZWZpeCArIFwiX3N1YlwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24oZjFtUHJlZml4ICsgXCJfbmVnXCIsIHByZWZpeCArIFwiX25lZ1wiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfbXVsXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9zcXVhcmVcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX2ludmVyc2VcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX2lzTmVnYXRpdmVcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKGYxbVByZWZpeCArIFwiX2NvcHlcIiwgcHJlZml4K1wiX2NvcHlcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKGYxbVByZWZpeCArIFwiX3plcm9cIiwgcHJlZml4K1wiX3plcm9cIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKGYxbVByZWZpeCArIFwiX29uZVwiLCBwcmVmaXgrXCJfb25lXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihmMW1QcmVmaXggKyBcIl9pc1plcm9cIiwgcHJlZml4K1wiX2lzWmVyb1wiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24oZjFtUHJlZml4ICsgXCJfZXFcIiwgcHJlZml4K1wiX2VxXCIpO1xuXG4gICAgcmV0dXJuIHByZWZpeDtcbn07XG5cbi8qXG4gICAgQ29weXJpZ2h0IDIwMTkgMEtJTVMgYXNzb2NpYXRpb24uXG5cbiAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB3YXNtc25hcmsgKFdlYiBBc3NlbWJseSB6a1NuYXJrIFByb3ZlcikuXG5cbiAgICB3YXNtc25hcmsgaXMgYSBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0XG4gICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxuICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG5cbiAgICB3YXNtc25hcmsgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVRcbiAgICBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFlcbiAgICBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWNcbiAgICBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG5cbiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICAgIGFsb25nIHdpdGggd2FzbXNuYXJrLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuKi9cblxuY29uc3QgYnVpbGRFeHAkMSA9IGJ1aWxkX3RpbWVzc2NhbGFyO1xuY29uc3QgYnVpbGRCYXRjaEludmVyc2UkMSA9IGJ1aWxkX2JhdGNoaW52ZXJzZTtcbmNvbnN0IHV0aWxzJDQgPSB1dGlscyQ2O1xuXG52YXIgYnVpbGRfZjJtID0gZnVuY3Rpb24gYnVpbGRGMm0obW9kdWxlLCBtdWxOb25SZXNpZHVlRm4sIHByZWZpeCwgZjFtUHJlZml4KSB7XG5cbiAgICBpZiAobW9kdWxlLm1vZHVsZXNbcHJlZml4XSkgcmV0dXJuIHByZWZpeDsgIC8vIGFscmVhZHkgYnVpbGRlZFxuXG4gICAgY29uc3QgZjFuOCA9IG1vZHVsZS5tb2R1bGVzW2YxbVByZWZpeF0ubjY0Kjg7XG4gICAgY29uc3QgcSA9IG1vZHVsZS5tb2R1bGVzW2YxbVByZWZpeF0ucTtcblxuICAgIG1vZHVsZS5tb2R1bGVzW3ByZWZpeF0gPSB7XG4gICAgICAgIG42NDogbW9kdWxlLm1vZHVsZXNbZjFtUHJlZml4XS5uNjQqMlxuICAgIH07XG5cbiAgICBmdW5jdGlvbiBidWlsZEFkZCgpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrXCJfYWRkXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInlcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJyXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgeDAgPSBjLmdldExvY2FsKFwieFwiKTtcbiAgICAgICAgY29uc3QgeDEgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInhcIiksIGMuaTMyX2NvbnN0KGYxbjgpKTtcbiAgICAgICAgY29uc3QgeTAgPSBjLmdldExvY2FsKFwieVwiKTtcbiAgICAgICAgY29uc3QgeTEgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInlcIiksIGMuaTMyX2NvbnN0KGYxbjgpKTtcbiAgICAgICAgY29uc3QgcjAgPSBjLmdldExvY2FsKFwiclwiKTtcbiAgICAgICAgY29uc3QgcjEgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInJcIiksIGMuaTMyX2NvbnN0KGYxbjgpKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4K1wiX2FkZFwiLCB4MCwgeTAsIHIwKSxcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXgrXCJfYWRkXCIsIHgxLCB5MSwgcjEpLFxuICAgICAgICApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGJ1aWxkVGltZXNTY2FsYXIoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4K1wiX3RpbWVzU2NhbGFyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInNjYWxhclwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInNjYWxhckxlblwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInJcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCB4MCA9IGMuZ2V0TG9jYWwoXCJ4XCIpO1xuICAgICAgICBjb25zdCB4MSA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwieFwiKSwgYy5pMzJfY29uc3QoZjFuOCkpO1xuICAgICAgICBjb25zdCByMCA9IGMuZ2V0TG9jYWwoXCJyXCIpO1xuICAgICAgICBjb25zdCByMSA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwiclwiKSwgYy5pMzJfY29uc3QoZjFuOCkpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXgrXCJfdGltZXNTY2FsYXJcIiwgeDAsIGMuZ2V0TG9jYWwoXCJzY2FsYXJcIiksIGMuZ2V0TG9jYWwoXCJzY2FsYXJMZW5cIiksIHIwKSxcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXgrXCJfdGltZXNTY2FsYXJcIiwgeDEsIGMuZ2V0TG9jYWwoXCJzY2FsYXJcIiksIGMuZ2V0TG9jYWwoXCJzY2FsYXJMZW5cIiksIHIxKSxcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBidWlsZFN1YigpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrXCJfc3ViXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInlcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJyXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgeDAgPSBjLmdldExvY2FsKFwieFwiKTtcbiAgICAgICAgY29uc3QgeDEgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInhcIiksIGMuaTMyX2NvbnN0KGYxbjgpKTtcbiAgICAgICAgY29uc3QgeTAgPSBjLmdldExvY2FsKFwieVwiKTtcbiAgICAgICAgY29uc3QgeTEgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInlcIiksIGMuaTMyX2NvbnN0KGYxbjgpKTtcbiAgICAgICAgY29uc3QgcjAgPSBjLmdldExvY2FsKFwiclwiKTtcbiAgICAgICAgY29uc3QgcjEgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInJcIiksIGMuaTMyX2NvbnN0KGYxbjgpKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4K1wiX3N1YlwiLCB4MCwgeTAsIHIwKSxcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXgrXCJfc3ViXCIsIHgxLCB5MSwgcjEpLFxuICAgICAgICApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGJ1aWxkTmVnKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCtcIl9uZWdcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiclwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IHgwID0gYy5nZXRMb2NhbChcInhcIik7XG4gICAgICAgIGNvbnN0IHgxID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJ4XCIpLCBjLmkzMl9jb25zdChmMW44KSk7XG4gICAgICAgIGNvbnN0IHIwID0gYy5nZXRMb2NhbChcInJcIik7XG4gICAgICAgIGNvbnN0IHIxID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJyXCIpLCBjLmkzMl9jb25zdChmMW44KSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCtcIl9uZWdcIiwgeDAsIHIwKSxcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXgrXCJfbmVnXCIsIHgxLCByMSksXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYnVpbGRDb25qdWdhdGUoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4K1wiX2Nvbmp1Z2F0ZVwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInhcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJyXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgeDAgPSBjLmdldExvY2FsKFwieFwiKTtcbiAgICAgICAgY29uc3QgeDEgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInhcIiksIGMuaTMyX2NvbnN0KGYxbjgpKTtcbiAgICAgICAgY29uc3QgcjAgPSBjLmdldExvY2FsKFwiclwiKTtcbiAgICAgICAgY29uc3QgcjEgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInJcIiksIGMuaTMyX2NvbnN0KGYxbjgpKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4K1wiX2NvcHlcIiwgeDAsIHIwKSxcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXgrXCJfbmVnXCIsIHgxLCByMSksXG4gICAgICAgICk7XG4gICAgfVxuXG5cbiAgICBmdW5jdGlvbiBidWlsZElzTmVnYXRpdmUoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4K1wiX2lzTmVnYXRpdmVcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLnNldFJldHVyblR5cGUoXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCB4MCA9IGMuZ2V0TG9jYWwoXCJ4XCIpO1xuICAgICAgICBjb25zdCB4MSA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwieFwiKSwgYy5pMzJfY29uc3QoZjFuOCkpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCtcIl9pc1plcm9cIiwgeDEpLFxuICAgICAgICAgICAgICAgIGMucmV0KGMuY2FsbChmMW1QcmVmaXgrXCJfaXNOZWdhdGl2ZVwiLCB4MCkpXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYy5yZXQoYy5jYWxsKGYxbVByZWZpeCtcIl9pc05lZ2F0aXZlXCIsIHgxKSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBidWlsZE11bCgpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrXCJfbXVsXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInlcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJyXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgeDAgPSBjLmdldExvY2FsKFwieFwiKTtcbiAgICAgICAgY29uc3QgeDEgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInhcIiksIGMuaTMyX2NvbnN0KGYxbjgpKTtcbiAgICAgICAgY29uc3QgeTAgPSBjLmdldExvY2FsKFwieVwiKTtcbiAgICAgICAgY29uc3QgeTEgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInlcIiksIGMuaTMyX2NvbnN0KGYxbjgpKTtcbiAgICAgICAgY29uc3QgcjAgPSBjLmdldExvY2FsKFwiclwiKTtcbiAgICAgICAgY29uc3QgcjEgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInJcIiksIGMuaTMyX2NvbnN0KGYxbjgpKTtcblxuICAgICAgICBjb25zdCBBID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYxbjgpKTtcbiAgICAgICAgY29uc3QgQiA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMW44KSk7XG4gICAgICAgIGNvbnN0IEMgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjFuOCkpO1xuICAgICAgICBjb25zdCBEID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYxbjgpKTtcblxuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXggKyBcIl9tdWxcIiwgeDAsIHkwLCBBKSwgICAgICAgICAgICAgLy8gQSA9IHgwKnkwXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4ICsgXCJfbXVsXCIsIHgxLCB5MSwgQiksICAgICAgICAgICAgIC8vIEIgPSB4MSp5MVxuXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4ICsgXCJfYWRkXCIsIHgwLCB4MSwgQyksICAgICAgICAgICAgIC8vIEMgPSB4MCArIHgxXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4ICsgXCJfYWRkXCIsIHkwLCB5MSwgRCksICAgICAgICAgICAgIC8vIEQgPSB5MCArIHkxXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4ICsgXCJfbXVsXCIsIEMsIEQsIEMpLCAgICAgICAgICAgICAgIC8vIEMgPSAoeDAgKyB4MSkqKHkwICsgeTEpID0geDAqeTAreDAqeTEreDEqeTAreDEqeTFcblxuICAgICAgICAgICAgLy8gIGMuY2FsbChmMW1QcmVmaXggKyBcIl9tdWxcIiwgQiwgYy5pMzJfY29uc3QocE5vblJlc2lkdWUpLCByMCksICAvLyByMCA9IG5yKih4MSp5MSlcbiAgICAgICAgICAgIGMuY2FsbChtdWxOb25SZXNpZHVlRm4sIEIsIHIwKSwgIC8vIHIwID0gbnIqKHgxKnkxKVxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCArIFwiX2FkZFwiLCBBLCByMCwgcjApLCAgICAgICAgICAgICAvLyByMCA9IHgwKnkwICsgbnIqKHgxKnkxKVxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCArIFwiX2FkZFwiLCBBLCBCLCByMSksICAgICAgICAgICAgIC8vIHIxID0geDAqeTAreDEqeTFcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXggKyBcIl9zdWJcIiwgQywgcjEsIHIxKSAgICAgICAgICAgICAgLy8gcjEgPSB4MCp5MCt4MCp5MSt4MSp5MCt4MSp5MSAtIHgwKnkwK3gxKnkxID0geDAqeTEreDEqeTBcbiAgICAgICAgKTtcblxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGJ1aWxkTXVsMSgpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrXCJfbXVsMVwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInhcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ5XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiclwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IHgwID0gYy5nZXRMb2NhbChcInhcIik7XG4gICAgICAgIGNvbnN0IHgxID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJ4XCIpLCBjLmkzMl9jb25zdChmMW44KSk7XG4gICAgICAgIGNvbnN0IHkgPSBjLmdldExvY2FsKFwieVwiKTtcbiAgICAgICAgY29uc3QgcjAgPSBjLmdldExvY2FsKFwiclwiKTtcbiAgICAgICAgY29uc3QgcjEgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInJcIiksIGMuaTMyX2NvbnN0KGYxbjgpKTtcblxuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXggKyBcIl9tdWxcIiwgeDAsIHksIHIwKSwgICAgICAgICAgICAgLy8gQSA9IHgwKnlcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXggKyBcIl9tdWxcIiwgeDEsIHksIHIxKSwgICAgICAgICAgICAgLy8gQiA9IHgxKnlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBidWlsZFNxdWFyZSgpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrXCJfc3F1YXJlXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInJcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCB4MCA9IGMuZ2V0TG9jYWwoXCJ4XCIpO1xuICAgICAgICBjb25zdCB4MSA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwieFwiKSwgYy5pMzJfY29uc3QoZjFuOCkpO1xuICAgICAgICBjb25zdCByMCA9IGMuZ2V0TG9jYWwoXCJyXCIpO1xuICAgICAgICBjb25zdCByMSA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwiclwiKSwgYy5pMzJfY29uc3QoZjFuOCkpO1xuXG4gICAgICAgIGNvbnN0IEFCID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYxbjgpKTtcbiAgICAgICAgY29uc3QgQVBCID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYxbjgpKTtcbiAgICAgICAgY29uc3QgQVBOQiA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMW44KSk7XG4gICAgICAgIGNvbnN0IEFCUE5BQiA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMW44KSk7XG5cblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICAvLyBBQiA9IHgwKnkxXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4ICsgXCJfbXVsXCIsIHgwLCB4MSwgQUIpLFxuXG4gICAgICAgICAgICAvLyBBUEIgPSB4MCt5MVxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCArIFwiX2FkZFwiLCB4MCwgeDEsIEFQQiksXG5cbiAgICAgICAgICAgIC8vIEFQQk4wID0geDAgKyBucip4MVxuICAgICAgICAgICAgYy5jYWxsKG11bE5vblJlc2lkdWVGbiwgeDEsIEFQTkIpLFxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCArIFwiX2FkZFwiLCB4MCwgQVBOQiwgQVBOQiksXG5cbiAgICAgICAgICAgIC8vIEFCUE5BQiA9IGFiICsgbnIqYWJcbiAgICAgICAgICAgIGMuY2FsbChtdWxOb25SZXNpZHVlRm4sIEFCLCBBQlBOQUIpLFxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCArIFwiX2FkZFwiLCBBQlBOQUIsIEFCLCBBQlBOQUIpLFxuXG4gICAgICAgICAgICAvLyByMCA9IEFQQiAqIEFQTkIgLSBBQlBOQUJcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXggKyBcIl9tdWxcIiwgQVBCLCBBUE5CLCByMCksXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4ICsgXCJfc3ViXCIsIHIwLCBBQlBOQUIsIHIwKSxcblxuICAgICAgICAgICAgLy8gcjEgPSBBQiArIEFCXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4ICsgXCJfYWRkXCIsIEFCLCBBQiwgcjEpLFxuICAgICAgICApO1xuXG4gICAgfVxuXG5cbiAgICBmdW5jdGlvbiBidWlsZFRvTW9udGdvbWVyeSgpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrXCJfdG9Nb250Z29tZXJ5XCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInJcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCB4MCA9IGMuZ2V0TG9jYWwoXCJ4XCIpO1xuICAgICAgICBjb25zdCB4MSA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwieFwiKSwgYy5pMzJfY29uc3QoZjFuOCkpO1xuICAgICAgICBjb25zdCByMCA9IGMuZ2V0TG9jYWwoXCJyXCIpO1xuICAgICAgICBjb25zdCByMSA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwiclwiKSwgYy5pMzJfY29uc3QoZjFuOCkpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXgrXCJfdG9Nb250Z29tZXJ5XCIsIHgwLCByMCksXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4K1wiX3RvTW9udGdvbWVyeVwiLCB4MSwgcjEpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYnVpbGRGcm9tTW9udGdvbWVyeSgpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrXCJfZnJvbU1vbnRnb21lcnlcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiclwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IHgwID0gYy5nZXRMb2NhbChcInhcIik7XG4gICAgICAgIGNvbnN0IHgxID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJ4XCIpLCBjLmkzMl9jb25zdChmMW44KSk7XG4gICAgICAgIGNvbnN0IHIwID0gYy5nZXRMb2NhbChcInJcIik7XG4gICAgICAgIGNvbnN0IHIxID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJyXCIpLCBjLmkzMl9jb25zdChmMW44KSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCtcIl9mcm9tTW9udGdvbWVyeVwiLCB4MCwgcjApLFxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCtcIl9mcm9tTW9udGdvbWVyeVwiLCB4MSwgcjEpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYnVpbGRDb3B5KCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCtcIl9jb3B5XCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInJcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCB4MCA9IGMuZ2V0TG9jYWwoXCJ4XCIpO1xuICAgICAgICBjb25zdCB4MSA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwieFwiKSwgYy5pMzJfY29uc3QoZjFuOCkpO1xuICAgICAgICBjb25zdCByMCA9IGMuZ2V0TG9jYWwoXCJyXCIpO1xuICAgICAgICBjb25zdCByMSA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwiclwiKSwgYy5pMzJfY29uc3QoZjFuOCkpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXgrXCJfY29weVwiLCB4MCwgcjApLFxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCtcIl9jb3B5XCIsIHgxLCByMSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBidWlsZFplcm8oKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4K1wiX3plcm9cIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ4XCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgeDAgPSBjLmdldExvY2FsKFwieFwiKTtcbiAgICAgICAgY29uc3QgeDEgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInhcIiksIGMuaTMyX2NvbnN0KGYxbjgpKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4K1wiX3plcm9cIiwgeDApLFxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCtcIl96ZXJvXCIsIHgxKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGJ1aWxkT25lKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCtcIl9vbmVcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ4XCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgeDAgPSBjLmdldExvY2FsKFwieFwiKTtcbiAgICAgICAgY29uc3QgeDEgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInhcIiksIGMuaTMyX2NvbnN0KGYxbjgpKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4K1wiX29uZVwiLCB4MCksXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4K1wiX3plcm9cIiwgeDEpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYnVpbGRFcSgpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrXCJfZXFcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5zZXRSZXR1cm5UeXBlKFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgeDAgPSBjLmdldExvY2FsKFwieFwiKTtcbiAgICAgICAgY29uc3QgeDEgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInhcIiksIGMuaTMyX2NvbnN0KGYxbjgpKTtcbiAgICAgICAgY29uc3QgeTAgPSBjLmdldExvY2FsKFwieVwiKTtcbiAgICAgICAgY29uc3QgeTEgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInlcIiksIGMuaTMyX2NvbnN0KGYxbjgpKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLmkzMl9hbmQoXG4gICAgICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCtcIl9lcVwiLCB4MCwgeTApLFxuICAgICAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXgrXCJfZXFcIiwgeDEsIHkxKVxuICAgICAgICAgICAgKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGJ1aWxkSXNaZXJvKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCtcIl9pc1plcm9cIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLnNldFJldHVyblR5cGUoXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCB4MCA9IGMuZ2V0TG9jYWwoXCJ4XCIpO1xuICAgICAgICBjb25zdCB4MSA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwieFwiKSwgYy5pMzJfY29uc3QoZjFuOCkpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuaTMyX2FuZChcbiAgICAgICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4K1wiX2lzWmVyb1wiLCB4MCksXG4gICAgICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCtcIl9pc1plcm9cIiwgeDEpXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYnVpbGRJbnZlcnNlKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCtcIl9pbnZlcnNlXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInJcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCB4MCA9IGMuZ2V0TG9jYWwoXCJ4XCIpO1xuICAgICAgICBjb25zdCB4MSA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwieFwiKSwgYy5pMzJfY29uc3QoZjFuOCkpO1xuICAgICAgICBjb25zdCByMCA9IGMuZ2V0TG9jYWwoXCJyXCIpO1xuICAgICAgICBjb25zdCByMSA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwiclwiKSwgYy5pMzJfY29uc3QoZjFuOCkpO1xuXG4gICAgICAgIGNvbnN0IHQwID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYxbjgpKTtcbiAgICAgICAgY29uc3QgdDEgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjFuOCkpO1xuICAgICAgICBjb25zdCB0MiA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMW44KSk7XG4gICAgICAgIGNvbnN0IHQzID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYxbjgpKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4K1wiX3NxdWFyZVwiLCB4MCwgdDApLFxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCtcIl9zcXVhcmVcIiwgeDEsIHQxKSxcbiAgICAgICAgICAgIC8vIGMuY2FsbChmMW1QcmVmaXgrXCJfbXVsXCIsIHQxLCBjLmkzMl9jb25zdChwTm9uUmVzaWR1ZSksIHQyKSxcbiAgICAgICAgICAgIGMuY2FsbChtdWxOb25SZXNpZHVlRm4sIHQxLCB0MiksXG5cbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXgrXCJfc3ViXCIsIHQwLCB0MiwgdDIpLFxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCtcIl9pbnZlcnNlXCIsIHQyLCB0MyksXG5cbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXgrXCJfbXVsXCIsIHgwLCB0MywgcjApLFxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCtcIl9tdWxcIiwgeDEsIHQzLCByMSksXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4K1wiX25lZ1wiLCByMSwgcjEpLFxuICAgICAgICApO1xuICAgIH1cblxuXG4gICAgZnVuY3Rpb24gYnVpbGRTaWduKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCtcIl9zaWduXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcInNcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuc2V0UmV0dXJuVHlwZShcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IHgwID0gYy5nZXRMb2NhbChcInhcIik7XG4gICAgICAgIGNvbnN0IHgxID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJ4XCIpLCBjLmkzMl9jb25zdChmMW44KSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcInNcIiAsIGMuY2FsbCggZjFtUHJlZml4ICsgXCJfc2lnblwiLCB4MSkpLFxuICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwic1wiKSxcbiAgICAgICAgICAgICAgICBjLnJldChjLmdldExvY2FsKFwic1wiKSlcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjLnJldChjLmNhbGwoIGYxbVByZWZpeCArIFwiX3NpZ25cIiwgeDApKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGJ1aWxkSXNPbmUoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4K1wiX2lzT25lXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5zZXRSZXR1cm5UeXBlKFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgeDAgPSBjLmdldExvY2FsKFwieFwiKTtcbiAgICAgICAgY29uc3QgeDEgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInhcIiksIGMuaTMyX2NvbnN0KGYxbjgpKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLnJldChjLmkzMl9hbmQoXG4gICAgICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCArIFwiX2lzT25lXCIsIHgwKSxcbiAgICAgICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4ICsgXCJfaXNaZXJvXCIsIHgxKSxcbiAgICAgICAgICAgICkpXG4gICAgICAgICk7XG4gICAgfVxuXG5cbiAgICAvLyBDaGVjayBoZXJlOiBodHRwczovL2VwcmludC5pYWNyLm9yZy8yMDEyLzY4NS5wZGZcbiAgICAvLyBBbGcgOWFkalxuICAgIGZ1bmN0aW9uIGJ1aWxkU3FydCgpIHtcblxuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCtcIl9zcXJ0XCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiYVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInByXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgLy8gQmlnSW50IGNhbid0IHRha2UgYHVuZGVmaW5lZGAgc28gd2UgdXNlIGB8fCAwYFxuICAgICAgICBjb25zdCBlMzQgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2ModXRpbHMkNC5iaWdJbnQyQnl0ZXNMRSgoQmlnSW50KHEgfHwgMCkgLSAzbikgLyA0biwgZjFuOCApKSk7XG4gICAgICAgIC8vIEJpZ0ludCBjYW4ndCB0YWtlIGB1bmRlZmluZWRgIHNvIHdlIHVzZSBgfHwgMGBcbiAgICAgICAgY29uc3QgZTEyID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKHV0aWxzJDQuYmlnSW50MkJ5dGVzTEUoKEJpZ0ludChxIHx8IDApIC0gMW4pIC8gMm4sIGYxbjggKSkpO1xuXG4gICAgICAgIGNvbnN0IGEgPSBjLmdldExvY2FsKFwiYVwiKTtcbiAgICAgICAgY29uc3QgYTEgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjFuOCoyKSk7XG4gICAgICAgIGNvbnN0IGFscGhhID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYxbjgqMikpO1xuICAgICAgICBjb25zdCBhMCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMW44KjIpKTtcbiAgICAgICAgY29uc3QgcG4xID0gbW9kdWxlLmFsbG9jKGYxbjgqMik7XG4gICAgICAgIGNvbnN0IG4xID0gYy5pMzJfY29uc3QocG4xKTtcbiAgICAgICAgY29uc3QgbjFhID0gYy5pMzJfY29uc3QocG4xKTtcbiAgICAgICAgY29uc3QgbjFiID0gYy5pMzJfY29uc3QocG4xK2YxbjgpO1xuICAgICAgICBjb25zdCB4MCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMW44KjIpKTtcbiAgICAgICAgY29uc3QgYiA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMW44KjIpKTtcblxuICAgICAgICBmLmFkZENvZGUoXG5cbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9vbmVcIiwgbjEpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX25lZ1wiLCBuMSwgbjEpLFxuXG4gICAgICAgICAgICAvLyBjb25zdCBhMSA9IEYucG93KGEsIEYuc3FydF9lMzQpO1xuICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX2V4cFwiLCBhLCBlMzQsIGMuaTMyX2NvbnN0KGYxbjgpLCBhMSksXG5cbiAgICAgICAgICAgIC8vIGNvbnN0IGExID0gRi5wb3coYSwgRi5zcXJ0X2UzNCk7XG4gICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfc3F1YXJlXCIsIGExLCBhbHBoYSksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfbXVsXCIsIGEsIGFscGhhLCBhbHBoYSksXG5cbiAgICAgICAgICAgIC8vIGNvbnN0IGEwID0gRi5tdWwoRi5mcm9iZW5pdXMoMSwgYWxmYSksIGFsZmEpO1xuICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX2Nvbmp1Z2F0ZVwiLCBhbHBoYSwgYTApLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX211bFwiLCBhMCwgYWxwaGEsIGEwKSxcblxuICAgICAgICAgICAgLy8gaWYgKEYuZXEoYTAsIEYubmVnb25lKSkgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICBjLmlmKGMuY2FsbChwcmVmaXggKyBcIl9lcVwiLGEwLG4xKSwgYy51bnJlYWNoYWJsZSgpICksXG5cbiAgICAgICAgICAgIC8vIGNvbnN0IHgwID0gRi5tdWwoYTEsIGEpO1xuICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX211bFwiLCBhMSwgYSwgeDApLFxuXG4gICAgICAgICAgICAvLyBpZiAoRi5lcShhbGZhLCBGLm5lZ29uZSkpIHtcbiAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX2VxXCIsIGFscGhhLCBuMSksXG4gICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAvLyB4ID0gRi5tdWwoeDAsIFtGLkYuemVybywgRi5GLm9uZV0pO1xuICAgICAgICAgICAgICAgICAgICAuLi5jLmNhbGwoZjFtUHJlZml4ICsgXCJfemVyb1wiLCBuMWEpLFxuICAgICAgICAgICAgICAgICAgICAuLi5jLmNhbGwoZjFtUHJlZml4ICsgXCJfb25lXCIsIG4xYiksXG4gICAgICAgICAgICAgICAgICAgIC4uLmMuY2FsbChwcmVmaXggKyBcIl9tdWxcIiwgbjEsIHgwLCBjLmdldExvY2FsKFwicHJcIikpLFxuICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAvLyBjb25zdCBiID0gRi5wb3coRi5hZGQoRi5vbmUsIGFsZmEpLCBGLnNxcnRfZTEyKTtcbiAgICAgICAgICAgICAgICAgICAgLi4uYy5jYWxsKHByZWZpeCArIFwiX29uZVwiLCBiKSxcbiAgICAgICAgICAgICAgICAgICAgLi4uYy5jYWxsKHByZWZpeCArIFwiX2FkZFwiLCBiLCBhbHBoYSwgYiksXG4gICAgICAgICAgICAgICAgICAgIC4uLmMuY2FsbChwcmVmaXggKyBcIl9leHBcIiwgYiwgZTEyLCBjLmkzMl9jb25zdChmMW44KSwgYiksXG5cbiAgICAgICAgICAgICAgICAgICAgLy8geCA9IEYubXVsKGIsIHgwKTtcbiAgICAgICAgICAgICAgICAgICAgLi4uYy5jYWxsKHByZWZpeCArIFwiX211bFwiLCBiLCB4MCwgYy5nZXRMb2NhbChcInByXCIpKSxcbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG5cbiAgICB9XG5cblxuICAgIGZ1bmN0aW9uIGJ1aWxkSXNTcXVhcmUoKSB7XG5cbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrXCJfaXNTcXVhcmVcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJhXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLnNldFJldHVyblR5cGUoXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICAvLyBCaWdJbnQgY2FuJ3QgdGFrZSBgdW5kZWZpbmVkYCBzbyB3ZSB1c2UgYHx8IDBgXG4gICAgICAgIGNvbnN0IGUzNCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyh1dGlscyQ0LmJpZ0ludDJCeXRlc0xFKChCaWdJbnQocSB8fCAwKSAtIDNuKSAvIDRuLCBmMW44ICkpKTtcblxuICAgICAgICBjb25zdCBhID0gYy5nZXRMb2NhbChcImFcIik7XG4gICAgICAgIGNvbnN0IGExID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYxbjgqMikpO1xuICAgICAgICBjb25zdCBhbHBoYSA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMW44KjIpKTtcbiAgICAgICAgY29uc3QgYTAgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjFuOCoyKSk7XG4gICAgICAgIGNvbnN0IHBuMSA9IG1vZHVsZS5hbGxvYyhmMW44KjIpO1xuICAgICAgICBjb25zdCBuMSA9IGMuaTMyX2NvbnN0KHBuMSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfb25lXCIsIG4xKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9uZWdcIiwgbjEsIG4xKSxcblxuICAgICAgICAgICAgLy8gY29uc3QgYTEgPSBGLnBvdyhhLCBGLnNxcnRfZTM0KTtcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9leHBcIiwgYSwgZTM0LCBjLmkzMl9jb25zdChmMW44KSwgYTEpLFxuXG4gICAgICAgICAgICAvLyBjb25zdCBhMSA9IEYucG93KGEsIEYuc3FydF9lMzQpO1xuICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX3NxdWFyZVwiLCBhMSwgYWxwaGEpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX211bFwiLCBhLCBhbHBoYSwgYWxwaGEpLFxuXG4gICAgICAgICAgICAvLyBjb25zdCBhMCA9IEYubXVsKEYuZnJvYmVuaXVzKDEsIGFsZmEpLCBhbGZhKTtcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9jb25qdWdhdGVcIiwgYWxwaGEsIGEwKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9tdWxcIiwgYTAsIGFscGhhLCBhMCksXG5cbiAgICAgICAgICAgIC8vIGlmIChGLmVxKGEwLCBGLm5lZ29uZSkpIHJldHVybiBudWxsO1xuICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICBjLmNhbGwoXG4gICAgICAgICAgICAgICAgICAgIHByZWZpeCArIFwiX2VxXCIsXG4gICAgICAgICAgICAgICAgICAgIGEwLFxuICAgICAgICAgICAgICAgICAgICBuMVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgYy5yZXQoYy5pMzJfY29uc3QoMCkpXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYy5yZXQoYy5pMzJfY29uc3QoMSkpXG4gICAgICAgICk7XG5cbiAgICB9XG5cblxuICAgIGJ1aWxkSXNaZXJvKCk7XG4gICAgYnVpbGRJc09uZSgpO1xuICAgIGJ1aWxkWmVybygpO1xuICAgIGJ1aWxkT25lKCk7XG4gICAgYnVpbGRDb3B5KCk7XG4gICAgYnVpbGRNdWwoKTtcbiAgICBidWlsZE11bDEoKTtcbiAgICBidWlsZFNxdWFyZSgpO1xuICAgIGJ1aWxkQWRkKCk7XG4gICAgYnVpbGRTdWIoKTtcbiAgICBidWlsZE5lZygpO1xuICAgIGJ1aWxkQ29uanVnYXRlKCk7XG4gICAgYnVpbGRUb01vbnRnb21lcnkoKTtcbiAgICBidWlsZEZyb21Nb250Z29tZXJ5KCk7XG4gICAgYnVpbGRFcSgpO1xuICAgIGJ1aWxkSW52ZXJzZSgpO1xuICAgIGJ1aWxkVGltZXNTY2FsYXIoKTtcbiAgICBidWlsZFNpZ24oKTtcbiAgICBidWlsZElzTmVnYXRpdmUoKTtcblxuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9pc1plcm9cIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX2lzT25lXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl96ZXJvXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9vbmVcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX2NvcHlcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX211bFwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfbXVsMVwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfc3F1YXJlXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9hZGRcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX3N1YlwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfbmVnXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9zaWduXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9jb25qdWdhdGVcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX2Zyb21Nb250Z29tZXJ5XCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl90b01vbnRnb21lcnlcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX2VxXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9pbnZlcnNlXCIpO1xuICAgIGJ1aWxkQmF0Y2hJbnZlcnNlJDEobW9kdWxlLCBwcmVmaXgpO1xuICAgIGJ1aWxkRXhwJDEoXG4gICAgICAgIG1vZHVsZSxcbiAgICAgICAgcHJlZml4ICsgXCJfZXhwXCIsXG4gICAgICAgIGYxbjgqMixcbiAgICAgICAgcHJlZml4ICsgXCJfbXVsXCIsXG4gICAgICAgIHByZWZpeCArIFwiX3NxdWFyZVwiLFxuICAgICAgICBwcmVmaXggKyBcIl9jb3B5XCIsXG4gICAgICAgIHByZWZpeCArIFwiX29uZVwiLFxuICAgICk7XG4gICAgYnVpbGRTcXJ0KCk7XG4gICAgYnVpbGRJc1NxdWFyZSgpO1xuXG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX2V4cFwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfdGltZXNTY2FsYXJcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX2JhdGNoSW52ZXJzZVwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfc3FydFwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfaXNTcXVhcmVcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX2lzTmVnYXRpdmVcIik7XG5cblxuICAgIHJldHVybiBwcmVmaXg7XG59O1xuXG4vKlxuICAgIENvcHlyaWdodCAyMDE5IDBLSU1TIGFzc29jaWF0aW9uLlxuXG4gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2Ygd2FzbXNuYXJrIChXZWIgQXNzZW1ibHkgemtTbmFyayBQcm92ZXIpLlxuXG4gICAgd2FzbXNuYXJrIGlzIGEgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdFxuICAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3JcbiAgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuXG4gICAgd2FzbXNuYXJrIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUXG4gICAgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZXG4gICAgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljXG4gICAgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuXG4gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAgICBhbG9uZyB3aXRoIHdhc21zbmFyay4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cbiovXG5cbmNvbnN0IGJ1aWxkRXhwID0gYnVpbGRfdGltZXNzY2FsYXI7XG5jb25zdCBidWlsZEJhdGNoSW52ZXJzZSA9IGJ1aWxkX2JhdGNoaW52ZXJzZTtcblxudmFyIGJ1aWxkX2YzbSA9IGZ1bmN0aW9uIGJ1aWxkRjNtKG1vZHVsZSwgbXVsTm9uUmVzaWR1ZUZuLCBwcmVmaXgsIGYxbVByZWZpeCkge1xuXG4gICAgaWYgKG1vZHVsZS5tb2R1bGVzW3ByZWZpeF0pIHJldHVybiBwcmVmaXg7ICAvLyBhbHJlYWR5IGJ1aWxkZWRcblxuICAgIGNvbnN0IGYxbjggPSBtb2R1bGUubW9kdWxlc1tmMW1QcmVmaXhdLm42NCo4O1xuICAgIG1vZHVsZS5tb2R1bGVzW3ByZWZpeF0gPSB7XG4gICAgICAgIG42NDogbW9kdWxlLm1vZHVsZXNbZjFtUHJlZml4XS5uNjQqM1xuICAgIH07XG5cbiAgICBmdW5jdGlvbiBidWlsZEFkZCgpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrXCJfYWRkXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInlcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJyXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgeDAgPSBjLmdldExvY2FsKFwieFwiKTtcbiAgICAgICAgY29uc3QgeDEgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInhcIiksIGMuaTMyX2NvbnN0KGYxbjgpKTtcbiAgICAgICAgY29uc3QgeDIgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInhcIiksIGMuaTMyX2NvbnN0KDIqZjFuOCkpO1xuICAgICAgICBjb25zdCB5MCA9IGMuZ2V0TG9jYWwoXCJ5XCIpO1xuICAgICAgICBjb25zdCB5MSA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwieVwiKSwgYy5pMzJfY29uc3QoZjFuOCkpO1xuICAgICAgICBjb25zdCB5MiA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwieVwiKSwgYy5pMzJfY29uc3QoMipmMW44KSk7XG4gICAgICAgIGNvbnN0IHIwID0gYy5nZXRMb2NhbChcInJcIik7XG4gICAgICAgIGNvbnN0IHIxID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJyXCIpLCBjLmkzMl9jb25zdChmMW44KSk7XG4gICAgICAgIGNvbnN0IHIyID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJyXCIpLCBjLmkzMl9jb25zdCgyKmYxbjgpKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4K1wiX2FkZFwiLCB4MCwgeTAsIHIwKSxcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXgrXCJfYWRkXCIsIHgxLCB5MSwgcjEpLFxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCtcIl9hZGRcIiwgeDIsIHkyLCByMiksXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYnVpbGRUaW1lc1NjYWxhcigpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrXCJfdGltZXNTY2FsYXJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwic2NhbGFyXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwic2NhbGFyTGVuXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiclwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IHgwID0gYy5nZXRMb2NhbChcInhcIik7XG4gICAgICAgIGNvbnN0IHgxID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJ4XCIpLCBjLmkzMl9jb25zdChmMW44KSk7XG4gICAgICAgIGNvbnN0IHgyID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJ4XCIpLCBjLmkzMl9jb25zdCgyKmYxbjgpKTtcbiAgICAgICAgY29uc3QgcjAgPSBjLmdldExvY2FsKFwiclwiKTtcbiAgICAgICAgY29uc3QgcjEgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInJcIiksIGMuaTMyX2NvbnN0KGYxbjgpKTtcbiAgICAgICAgY29uc3QgcjIgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInJcIiksIGMuaTMyX2NvbnN0KDIqZjFuOCkpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXgrXCJfdGltZXNTY2FsYXJcIiwgeDAsIGMuZ2V0TG9jYWwoXCJzY2FsYXJcIiksIGMuZ2V0TG9jYWwoXCJzY2FsYXJMZW5cIiksIHIwKSxcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXgrXCJfdGltZXNTY2FsYXJcIiwgeDEsIGMuZ2V0TG9jYWwoXCJzY2FsYXJcIiksIGMuZ2V0TG9jYWwoXCJzY2FsYXJMZW5cIiksIHIxKSxcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXgrXCJfdGltZXNTY2FsYXJcIiwgeDIsIGMuZ2V0TG9jYWwoXCJzY2FsYXJcIiksIGMuZ2V0TG9jYWwoXCJzY2FsYXJMZW5cIiksIHIyKSxcbiAgICAgICAgKTtcbiAgICB9XG5cblxuICAgIGZ1bmN0aW9uIGJ1aWxkU3ViKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCtcIl9zdWJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInJcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCB4MCA9IGMuZ2V0TG9jYWwoXCJ4XCIpO1xuICAgICAgICBjb25zdCB4MSA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwieFwiKSwgYy5pMzJfY29uc3QoZjFuOCkpO1xuICAgICAgICBjb25zdCB4MiA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwieFwiKSwgYy5pMzJfY29uc3QoMipmMW44KSk7XG4gICAgICAgIGNvbnN0IHkwID0gYy5nZXRMb2NhbChcInlcIik7XG4gICAgICAgIGNvbnN0IHkxID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJ5XCIpLCBjLmkzMl9jb25zdChmMW44KSk7XG4gICAgICAgIGNvbnN0IHkyID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJ5XCIpLCBjLmkzMl9jb25zdCgyKmYxbjgpKTtcbiAgICAgICAgY29uc3QgcjAgPSBjLmdldExvY2FsKFwiclwiKTtcbiAgICAgICAgY29uc3QgcjEgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInJcIiksIGMuaTMyX2NvbnN0KGYxbjgpKTtcbiAgICAgICAgY29uc3QgcjIgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInJcIiksIGMuaTMyX2NvbnN0KDIqZjFuOCkpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXgrXCJfc3ViXCIsIHgwLCB5MCwgcjApLFxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCtcIl9zdWJcIiwgeDEsIHkxLCByMSksXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4K1wiX3N1YlwiLCB4MiwgeTIsIHIyKSxcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBidWlsZE5lZygpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrXCJfbmVnXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInJcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCB4MCA9IGMuZ2V0TG9jYWwoXCJ4XCIpO1xuICAgICAgICBjb25zdCB4MSA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwieFwiKSwgYy5pMzJfY29uc3QoZjFuOCkpO1xuICAgICAgICBjb25zdCB4MiA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwieFwiKSwgYy5pMzJfY29uc3QoMipmMW44KSk7XG4gICAgICAgIGNvbnN0IHIwID0gYy5nZXRMb2NhbChcInJcIik7XG4gICAgICAgIGNvbnN0IHIxID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJyXCIpLCBjLmkzMl9jb25zdChmMW44KSk7XG4gICAgICAgIGNvbnN0IHIyID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJyXCIpLCBjLmkzMl9jb25zdCgyKmYxbjgpKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4K1wiX25lZ1wiLCB4MCwgcjApLFxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCtcIl9uZWdcIiwgeDEsIHIxKSxcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXgrXCJfbmVnXCIsIHgyLCByMiksXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYnVpbGRJc05lZ2F0aXZlKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCtcIl9pc05lZ2F0aXZlXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5zZXRSZXR1cm5UeXBlKFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgeDAgPSBjLmdldExvY2FsKFwieFwiKTtcbiAgICAgICAgY29uc3QgeDEgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInhcIiksIGMuaTMyX2NvbnN0KGYxbjgpKTtcbiAgICAgICAgY29uc3QgeDIgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInhcIiksIGMuaTMyX2NvbnN0KDIqZjFuOCkpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCtcIl9pc1plcm9cIiwgeDIpLFxuICAgICAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXgrXCJfaXNaZXJvXCIsIHgxKSxcbiAgICAgICAgICAgICAgICAgICAgYy5yZXQoYy5jYWxsKGYxbVByZWZpeCtcIl9pc05lZ2F0aXZlXCIsIHgwKSksXG4gICAgICAgICAgICAgICAgICAgIGMucmV0KGMuY2FsbChmMW1QcmVmaXgrXCJfaXNOZWdhdGl2ZVwiLCB4MSkpXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGMucmV0KGMuY2FsbChmMW1QcmVmaXgrXCJfaXNOZWdhdGl2ZVwiLCB4MikpXG4gICAgICAgICk7XG4gICAgfVxuXG5cbiAgICBmdW5jdGlvbiBidWlsZE11bCgpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrXCJfbXVsXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInlcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJyXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGNkID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IGEgPSBjZC5nZXRMb2NhbChcInhcIik7XG4gICAgICAgIGNvbnN0IGIgPSBjZC5pMzJfYWRkKGNkLmdldExvY2FsKFwieFwiKSwgY2QuaTMyX2NvbnN0KGYxbjgpKTtcbiAgICAgICAgY29uc3QgYyA9IGNkLmkzMl9hZGQoY2QuZ2V0TG9jYWwoXCJ4XCIpLCBjZC5pMzJfY29uc3QoMipmMW44KSk7XG4gICAgICAgIGNvbnN0IEEgPSBjZC5nZXRMb2NhbChcInlcIik7XG4gICAgICAgIGNvbnN0IEIgPSBjZC5pMzJfYWRkKGNkLmdldExvY2FsKFwieVwiKSwgY2QuaTMyX2NvbnN0KGYxbjgpKTtcbiAgICAgICAgY29uc3QgQyA9IGNkLmkzMl9hZGQoY2QuZ2V0TG9jYWwoXCJ5XCIpLCBjZC5pMzJfY29uc3QoMipmMW44KSk7XG4gICAgICAgIGNvbnN0IHIwID0gY2QuZ2V0TG9jYWwoXCJyXCIpO1xuICAgICAgICBjb25zdCByMSA9IGNkLmkzMl9hZGQoY2QuZ2V0TG9jYWwoXCJyXCIpLCBjZC5pMzJfY29uc3QoZjFuOCkpO1xuICAgICAgICBjb25zdCByMiA9IGNkLmkzMl9hZGQoY2QuZ2V0TG9jYWwoXCJyXCIpLCBjZC5pMzJfY29uc3QoMipmMW44KSk7XG5cbiAgICAgICAgY29uc3QgYUEgPSBjZC5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYxbjgpKTtcbiAgICAgICAgY29uc3QgYkIgPSBjZC5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYxbjgpKTtcbiAgICAgICAgY29uc3QgY0MgPSBjZC5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYxbjgpKTtcbiAgICAgICAgY29uc3QgYV9iID0gY2QuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMW44KSk7XG4gICAgICAgIGNvbnN0IEFfQiA9IGNkLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjFuOCkpO1xuICAgICAgICBjb25zdCBhX2MgPSBjZC5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYxbjgpKTtcbiAgICAgICAgY29uc3QgQV9DID0gY2QuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMW44KSk7XG4gICAgICAgIGNvbnN0IGJfYyA9IGNkLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjFuOCkpO1xuICAgICAgICBjb25zdCBCX0MgPSBjZC5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYxbjgpKTtcbiAgICAgICAgY29uc3QgYUFfYkIgPSBjZC5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYxbjgpKTtcbiAgICAgICAgY29uc3QgYUFfY0MgPSBjZC5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYxbjgpKTtcbiAgICAgICAgY29uc3QgYkJfY0MgPSBjZC5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYxbjgpKTtcbiAgICAgICAgY29uc3QgQVVYID0gY2QuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMW44KSk7XG5cblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjZC5jYWxsKGYxbVByZWZpeCArIFwiX211bFwiLCBhLCBBLCBhQSksXG4gICAgICAgICAgICBjZC5jYWxsKGYxbVByZWZpeCArIFwiX211bFwiLCBiLCBCLCBiQiksXG4gICAgICAgICAgICBjZC5jYWxsKGYxbVByZWZpeCArIFwiX211bFwiLCBjLCBDLCBjQyksXG5cbiAgICAgICAgICAgIGNkLmNhbGwoZjFtUHJlZml4ICsgXCJfYWRkXCIsIGEsIGIsIGFfYiksXG4gICAgICAgICAgICBjZC5jYWxsKGYxbVByZWZpeCArIFwiX2FkZFwiLCBBLCBCLCBBX0IpLFxuICAgICAgICAgICAgY2QuY2FsbChmMW1QcmVmaXggKyBcIl9hZGRcIiwgYSwgYywgYV9jKSxcbiAgICAgICAgICAgIGNkLmNhbGwoZjFtUHJlZml4ICsgXCJfYWRkXCIsIEEsIEMsIEFfQyksXG4gICAgICAgICAgICBjZC5jYWxsKGYxbVByZWZpeCArIFwiX2FkZFwiLCBiLCBjLCBiX2MpLFxuICAgICAgICAgICAgY2QuY2FsbChmMW1QcmVmaXggKyBcIl9hZGRcIiwgQiwgQywgQl9DKSxcblxuICAgICAgICAgICAgY2QuY2FsbChmMW1QcmVmaXggKyBcIl9hZGRcIiwgYUEsIGJCLCBhQV9iQiksXG4gICAgICAgICAgICBjZC5jYWxsKGYxbVByZWZpeCArIFwiX2FkZFwiLCBhQSwgY0MsIGFBX2NDKSxcbiAgICAgICAgICAgIGNkLmNhbGwoZjFtUHJlZml4ICsgXCJfYWRkXCIsIGJCLCBjQywgYkJfY0MpLFxuXG4gICAgICAgICAgICBjZC5jYWxsKGYxbVByZWZpeCArIFwiX211bFwiLCBiX2MsIEJfQywgcjApLFxuICAgICAgICAgICAgY2QuY2FsbChmMW1QcmVmaXggKyBcIl9zdWJcIiwgcjAsIGJCX2NDLCByMCksXG4gICAgICAgICAgICBjZC5jYWxsKG11bE5vblJlc2lkdWVGbiwgcjAsIHIwKSxcbiAgICAgICAgICAgIGNkLmNhbGwoZjFtUHJlZml4ICsgXCJfYWRkXCIsIGFBLCByMCwgcjApLFxuXG4gICAgICAgICAgICBjZC5jYWxsKGYxbVByZWZpeCArIFwiX211bFwiLCBhX2IsIEFfQiwgcjEpLFxuICAgICAgICAgICAgY2QuY2FsbChmMW1QcmVmaXggKyBcIl9zdWJcIiwgcjEsIGFBX2JCLCByMSksXG4gICAgICAgICAgICBjZC5jYWxsKG11bE5vblJlc2lkdWVGbiwgY0MsIEFVWCksXG4gICAgICAgICAgICBjZC5jYWxsKGYxbVByZWZpeCArIFwiX2FkZFwiLCByMSwgQVVYLCByMSksXG5cbiAgICAgICAgICAgIGNkLmNhbGwoZjFtUHJlZml4ICsgXCJfbXVsXCIsIGFfYywgQV9DLCByMiksXG4gICAgICAgICAgICBjZC5jYWxsKGYxbVByZWZpeCArIFwiX3N1YlwiLCByMiwgYUFfY0MsIHIyKSxcbiAgICAgICAgICAgIGNkLmNhbGwoZjFtUHJlZml4ICsgXCJfYWRkXCIsIHIyLCBiQiwgcjIpLFxuICAgICAgICApO1xuXG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYnVpbGRTcXVhcmUoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4K1wiX3NxdWFyZVwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInhcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJyXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgQSA9IGMuZ2V0TG9jYWwoXCJ4XCIpO1xuICAgICAgICBjb25zdCBCID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJ4XCIpLCBjLmkzMl9jb25zdChmMW44KSk7XG4gICAgICAgIGNvbnN0IEMgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInhcIiksIGMuaTMyX2NvbnN0KDIqZjFuOCkpO1xuICAgICAgICBjb25zdCByMCA9IGMuZ2V0TG9jYWwoXCJyXCIpO1xuICAgICAgICBjb25zdCByMSA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwiclwiKSwgYy5pMzJfY29uc3QoZjFuOCkpO1xuICAgICAgICBjb25zdCByMiA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwiclwiKSwgYy5pMzJfY29uc3QoMipmMW44KSk7XG5cbiAgICAgICAgY29uc3QgczAgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjFuOCkpO1xuICAgICAgICBjb25zdCBhYiA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMW44KSk7XG4gICAgICAgIGNvbnN0IHMxID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYxbjgpKTtcbiAgICAgICAgY29uc3QgczIgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjFuOCkpO1xuICAgICAgICBjb25zdCBiYyA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMW44KSk7XG4gICAgICAgIGNvbnN0IHMzID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYxbjgpKTtcbiAgICAgICAgY29uc3QgczQgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjFuOCkpO1xuXG5cbiAgICAgICAgZi5hZGRDb2RlKFxuXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4ICsgXCJfc3F1YXJlXCIsIEEsIHMwKSxcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXggKyBcIl9tdWxcIiwgQSwgQiwgYWIpLFxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCArIFwiX2FkZFwiLCBhYiwgYWIsIHMxKSxcblxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCArIFwiX3N1YlwiLCBBLCBCLCBzMiksXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4ICsgXCJfYWRkXCIsIHMyLCBDLCBzMiksXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4ICsgXCJfc3F1YXJlXCIsIHMyLCBzMiksXG5cbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXggKyBcIl9tdWxcIiwgQiwgQywgYmMpLFxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCArIFwiX2FkZFwiLCBiYywgYmMsIHMzKSxcblxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCArIFwiX3NxdWFyZVwiLCBDLCBzNCksXG5cbiAgICAgICAgICAgIGMuY2FsbChtdWxOb25SZXNpZHVlRm4sIHMzLCByMCksXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4ICsgXCJfYWRkXCIsIHMwLCByMCwgcjApLFxuXG4gICAgICAgICAgICBjLmNhbGwobXVsTm9uUmVzaWR1ZUZuLCBzNCwgcjEpLFxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCArIFwiX2FkZFwiLCBzMSwgcjEsIHIxKSxcblxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCArIFwiX2FkZFwiLCBzMCwgczQsIHIyKSxcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXggKyBcIl9zdWJcIiwgczMsIHIyLCByMiksXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4ICsgXCJfYWRkXCIsIHMyLCByMiwgcjIpLFxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCArIFwiX2FkZFwiLCBzMSwgcjIsIHIyKSxcbiAgICAgICAgKTtcblxuICAgIH1cblxuXG4gICAgZnVuY3Rpb24gYnVpbGRUb01vbnRnb21lcnkoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4K1wiX3RvTW9udGdvbWVyeVwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInhcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJyXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgeDAgPSBjLmdldExvY2FsKFwieFwiKTtcbiAgICAgICAgY29uc3QgeDEgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInhcIiksIGMuaTMyX2NvbnN0KGYxbjgpKTtcbiAgICAgICAgY29uc3QgeDIgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInhcIiksIGMuaTMyX2NvbnN0KDIqZjFuOCkpO1xuICAgICAgICBjb25zdCByMCA9IGMuZ2V0TG9jYWwoXCJyXCIpO1xuICAgICAgICBjb25zdCByMSA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwiclwiKSwgYy5pMzJfY29uc3QoZjFuOCkpO1xuICAgICAgICBjb25zdCByMiA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwiclwiKSwgYy5pMzJfY29uc3QoMipmMW44KSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCtcIl90b01vbnRnb21lcnlcIiwgeDAsIHIwKSxcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXgrXCJfdG9Nb250Z29tZXJ5XCIsIHgxLCByMSksXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4K1wiX3RvTW9udGdvbWVyeVwiLCB4MiwgcjIpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYnVpbGRGcm9tTW9udGdvbWVyeSgpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrXCJfZnJvbU1vbnRnb21lcnlcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiclwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IHgwID0gYy5nZXRMb2NhbChcInhcIik7XG4gICAgICAgIGNvbnN0IHgxID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJ4XCIpLCBjLmkzMl9jb25zdChmMW44KSk7XG4gICAgICAgIGNvbnN0IHgyID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJ4XCIpLCBjLmkzMl9jb25zdCgyKmYxbjgpKTtcbiAgICAgICAgY29uc3QgcjAgPSBjLmdldExvY2FsKFwiclwiKTtcbiAgICAgICAgY29uc3QgcjEgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInJcIiksIGMuaTMyX2NvbnN0KGYxbjgpKTtcbiAgICAgICAgY29uc3QgcjIgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInJcIiksIGMuaTMyX2NvbnN0KDIqZjFuOCkpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXgrXCJfZnJvbU1vbnRnb21lcnlcIiwgeDAsIHIwKSxcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXgrXCJfZnJvbU1vbnRnb21lcnlcIiwgeDEsIHIxKSxcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXgrXCJfZnJvbU1vbnRnb21lcnlcIiwgeDIsIHIyKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGJ1aWxkQ29weSgpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrXCJfY29weVwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInhcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJyXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgeDAgPSBjLmdldExvY2FsKFwieFwiKTtcbiAgICAgICAgY29uc3QgeDEgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInhcIiksIGMuaTMyX2NvbnN0KGYxbjgpKTtcbiAgICAgICAgY29uc3QgeDIgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInhcIiksIGMuaTMyX2NvbnN0KDIqZjFuOCkpO1xuICAgICAgICBjb25zdCByMCA9IGMuZ2V0TG9jYWwoXCJyXCIpO1xuICAgICAgICBjb25zdCByMSA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwiclwiKSwgYy5pMzJfY29uc3QoZjFuOCkpO1xuICAgICAgICBjb25zdCByMiA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwiclwiKSwgYy5pMzJfY29uc3QoMipmMW44KSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCtcIl9jb3B5XCIsIHgwLCByMCksXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4K1wiX2NvcHlcIiwgeDEsIHIxKSxcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXgrXCJfY29weVwiLCB4MiwgcjIpLFxuICAgICAgICApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGJ1aWxkWmVybygpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrXCJfemVyb1wiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInhcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCB4MCA9IGMuZ2V0TG9jYWwoXCJ4XCIpO1xuICAgICAgICBjb25zdCB4MSA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwieFwiKSwgYy5pMzJfY29uc3QoZjFuOCkpO1xuICAgICAgICBjb25zdCB4MiA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwieFwiKSwgYy5pMzJfY29uc3QoMipmMW44KSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCtcIl96ZXJvXCIsIHgwKSxcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXgrXCJfemVyb1wiLCB4MSksXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4K1wiX3plcm9cIiwgeDIpLFxuICAgICAgICApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGJ1aWxkT25lKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCtcIl9vbmVcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ4XCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgeDAgPSBjLmdldExvY2FsKFwieFwiKTtcbiAgICAgICAgY29uc3QgeDEgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInhcIiksIGMuaTMyX2NvbnN0KGYxbjgpKTtcbiAgICAgICAgY29uc3QgeDIgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInhcIiksIGMuaTMyX2NvbnN0KDIqZjFuOCkpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXgrXCJfb25lXCIsIHgwKSxcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXgrXCJfemVyb1wiLCB4MSksXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4K1wiX3plcm9cIiwgeDIpLFxuICAgICAgICApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGJ1aWxkRXEoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4K1wiX2VxXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInlcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuc2V0UmV0dXJuVHlwZShcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IHgwID0gYy5nZXRMb2NhbChcInhcIik7XG4gICAgICAgIGNvbnN0IHgxID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJ4XCIpLCBjLmkzMl9jb25zdChmMW44KSk7XG4gICAgICAgIGNvbnN0IHgyID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJ4XCIpLCBjLmkzMl9jb25zdCgyKmYxbjgpKTtcbiAgICAgICAgY29uc3QgeTAgPSBjLmdldExvY2FsKFwieVwiKTtcbiAgICAgICAgY29uc3QgeTEgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInlcIiksIGMuaTMyX2NvbnN0KGYxbjgpKTtcbiAgICAgICAgY29uc3QgeTIgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInlcIiksIGMuaTMyX2NvbnN0KDIqZjFuOCkpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuaTMyX2FuZChcbiAgICAgICAgICAgICAgICBjLmkzMl9hbmQoXG4gICAgICAgICAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXgrXCJfZXFcIiwgeDAsIHkwKSxcbiAgICAgICAgICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCtcIl9lcVwiLCB4MSwgeTEpLFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCtcIl9lcVwiLCB4MiwgeTIpXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYnVpbGRJc1plcm8oKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4K1wiX2lzWmVyb1wiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInhcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuc2V0UmV0dXJuVHlwZShcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IHgwID0gYy5nZXRMb2NhbChcInhcIik7XG4gICAgICAgIGNvbnN0IHgxID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJ4XCIpLCBjLmkzMl9jb25zdChmMW44KSk7XG4gICAgICAgIGNvbnN0IHgyID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJ4XCIpLCBjLmkzMl9jb25zdCgyKmYxbjgpKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLmkzMl9hbmQoXG4gICAgICAgICAgICAgICAgYy5pMzJfYW5kKFxuICAgICAgICAgICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4K1wiX2lzWmVyb1wiLCB4MCksXG4gICAgICAgICAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXgrXCJfaXNaZXJvXCIsIHgxKVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCtcIl9pc1plcm9cIiwgeDIpXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYnVpbGRJbnZlcnNlKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCtcIl9pbnZlcnNlXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInJcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCB4MCA9IGMuZ2V0TG9jYWwoXCJ4XCIpO1xuICAgICAgICBjb25zdCB4MSA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwieFwiKSwgYy5pMzJfY29uc3QoZjFuOCkpO1xuICAgICAgICBjb25zdCB4MiA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwieFwiKSwgYy5pMzJfY29uc3QoMipmMW44KSk7XG4gICAgICAgIGNvbnN0IHIwID0gYy5nZXRMb2NhbChcInJcIik7XG4gICAgICAgIGNvbnN0IHIxID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJyXCIpLCBjLmkzMl9jb25zdChmMW44KSk7XG4gICAgICAgIGNvbnN0IHIyID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJyXCIpLCBjLmkzMl9jb25zdCgyKmYxbjgpKTtcblxuICAgICAgICBjb25zdCB0MCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMW44KSk7XG4gICAgICAgIGNvbnN0IHQxID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYxbjgpKTtcbiAgICAgICAgY29uc3QgdDIgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjFuOCkpO1xuICAgICAgICBjb25zdCB0MyA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMW44KSk7XG4gICAgICAgIGNvbnN0IHQ0ID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYxbjgpKTtcbiAgICAgICAgY29uc3QgdDUgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjFuOCkpO1xuICAgICAgICBjb25zdCBjMCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMW44KSk7XG4gICAgICAgIGNvbnN0IGMxID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYxbjgpKTtcbiAgICAgICAgY29uc3QgYzIgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjFuOCkpO1xuICAgICAgICBjb25zdCB0NiA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMW44KSk7XG4gICAgICAgIGNvbnN0IEFVWCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMW44KSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCtcIl9zcXVhcmVcIiwgeDAsIHQwKSxcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXgrXCJfc3F1YXJlXCIsIHgxLCB0MSksXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4K1wiX3NxdWFyZVwiLCB4MiwgdDIpLFxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCtcIl9tdWxcIiwgeDAsIHgxLCB0MyksXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4K1wiX211bFwiLCB4MCwgeDIsIHQ0KSxcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXgrXCJfbXVsXCIsIHgxLCB4MiwgdDUpLFxuXG4gICAgICAgICAgICBjLmNhbGwobXVsTm9uUmVzaWR1ZUZuLCB0NSwgYzApLFxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCtcIl9zdWJcIiwgdDAsIGMwLCBjMCksXG5cbiAgICAgICAgICAgIGMuY2FsbChtdWxOb25SZXNpZHVlRm4sIHQyLCBjMSksXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4K1wiX3N1YlwiLCBjMSwgdDMsIGMxKSxcblxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCtcIl9zdWJcIiwgdDEsIHQ0LCBjMiksXG5cbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXgrXCJfbXVsXCIsIHgyLCBjMSwgdDYpLFxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCtcIl9tdWxcIiwgeDEsIGMyLCBBVVgpLFxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCtcIl9hZGRcIiwgdDYsIEFVWCwgdDYpLFxuICAgICAgICAgICAgYy5jYWxsKG11bE5vblJlc2lkdWVGbiwgdDYsIHQ2KSxcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXgrXCJfbXVsXCIsIHgwLCBjMCwgQVVYKSxcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXgrXCJfYWRkXCIsIEFVWCwgdDYsIHQ2KSxcblxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCtcIl9pbnZlcnNlXCIsIHQ2LCB0NiksXG5cbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXgrXCJfbXVsXCIsIHQ2LCBjMCwgcjApLFxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCtcIl9tdWxcIiwgdDYsIGMxLCByMSksXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4K1wiX211bFwiLCB0NiwgYzIsIHIyKVxuICAgICAgICApO1xuICAgIH1cblxuXG4gICAgZnVuY3Rpb24gYnVpbGRTaWduKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCtcIl9zaWduXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcInNcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuc2V0UmV0dXJuVHlwZShcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IHgwID0gYy5nZXRMb2NhbChcInhcIik7XG4gICAgICAgIGNvbnN0IHgxID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJ4XCIpLCBjLmkzMl9jb25zdChmMW44KSk7XG4gICAgICAgIGNvbnN0IHgyID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJ4XCIpLCBjLmkzMl9jb25zdCgyKmYxbjgpKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLnNldExvY2FsKFwic1wiICwgYy5jYWxsKCBmMW1QcmVmaXggKyBcIl9zaWduXCIsIHgyKSksXG4gICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJzXCIpLFxuICAgICAgICAgICAgICAgIGMucmV0KGMuZ2V0TG9jYWwoXCJzXCIpKVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJzXCIgLCBjLmNhbGwoIGYxbVByZWZpeCArIFwiX3NpZ25cIiwgeDEpKSxcbiAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInNcIiksXG4gICAgICAgICAgICAgICAgYy5yZXQoYy5nZXRMb2NhbChcInNcIikpXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYy5yZXQoYy5jYWxsKCBmMW1QcmVmaXggKyBcIl9zaWduXCIsIHgwKSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBidWlsZElzT25lKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCtcIl9pc09uZVwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInhcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuc2V0UmV0dXJuVHlwZShcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IHgwID0gYy5nZXRMb2NhbChcInhcIik7XG4gICAgICAgIGNvbnN0IHgxID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJ4XCIpLCBjLmkzMl9jb25zdChmMW44KSk7XG4gICAgICAgIGNvbnN0IHgyID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJ4XCIpLCBjLmkzMl9jb25zdChmMW44KjIpKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLnJldChcbiAgICAgICAgICAgICAgICBjLmkzMl9hbmQoXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX2FuZChcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXggKyBcIl9pc09uZVwiLCB4MCksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4ICsgXCJfaXNaZXJvXCIsIHgxKVxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4ICsgXCJfaXNaZXJvXCIsIHgyKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBidWlsZElzWmVybygpO1xuICAgIGJ1aWxkSXNPbmUoKTtcbiAgICBidWlsZFplcm8oKTtcbiAgICBidWlsZE9uZSgpO1xuICAgIGJ1aWxkQ29weSgpO1xuICAgIGJ1aWxkTXVsKCk7XG4gICAgYnVpbGRTcXVhcmUoKTtcbiAgICBidWlsZEFkZCgpO1xuICAgIGJ1aWxkU3ViKCk7XG4gICAgYnVpbGROZWcoKTtcbiAgICBidWlsZFNpZ24oKTtcbiAgICBidWlsZFRvTW9udGdvbWVyeSgpO1xuICAgIGJ1aWxkRnJvbU1vbnRnb21lcnkoKTtcbiAgICBidWlsZEVxKCk7XG4gICAgYnVpbGRJbnZlcnNlKCk7XG4gICAgYnVpbGRUaW1lc1NjYWxhcigpO1xuICAgIGJ1aWxkSXNOZWdhdGl2ZSgpO1xuXG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX2lzWmVyb1wiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfaXNPbmVcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX3plcm9cIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX29uZVwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfY29weVwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfbXVsXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9zcXVhcmVcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX2FkZFwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfc3ViXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9uZWdcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX3NpZ25cIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX2Zyb21Nb250Z29tZXJ5XCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl90b01vbnRnb21lcnlcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX2VxXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9pbnZlcnNlXCIpO1xuICAgIGJ1aWxkQmF0Y2hJbnZlcnNlKG1vZHVsZSwgcHJlZml4KTtcbiAgICBidWlsZEV4cChcbiAgICAgICAgbW9kdWxlLFxuICAgICAgICBwcmVmaXggKyBcIl9leHBcIixcbiAgICAgICAgZjFuOCozLFxuICAgICAgICBwcmVmaXggKyBcIl9tdWxcIixcbiAgICAgICAgcHJlZml4ICsgXCJfc3F1YXJlXCIsXG4gICAgICAgIHByZWZpeCArIFwiX2NvcHlcIixcbiAgICAgICAgcHJlZml4ICsgXCJfb25lXCJcbiAgICApO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9leHBcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX3RpbWVzU2NhbGFyXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9iYXRjaEludmVyc2VcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX2lzTmVnYXRpdmVcIik7XG5cbiAgICByZXR1cm4gcHJlZml4O1xufTtcblxuLypcbiAgICBDb3B5cmlnaHQgMjAxOSAwS0lNUyBhc3NvY2lhdGlvbi5cblxuICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHdhc21zbmFyayAoV2ViIEFzc2VtYmx5IHprU25hcmsgUHJvdmVyKS5cblxuICAgIHdhc21zbmFyayBpcyBhIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXRcbiAgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yXG4gICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cblxuICAgIHdhc21zbmFyayBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVFxuICAgIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWVxuICAgIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpY1xuICAgIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cblxuICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gICAgYWxvbmcgd2l0aCB3YXNtc25hcmsuIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXG4qL1xuXG52YXIgYnVpbGRfdGltZXNzY2FsYXJuYWYgPSBmdW5jdGlvbiBidWlsZFRpbWVzU2NhbGFyTkFGKG1vZHVsZSwgZm5OYW1lLCBlbGVtZW50TGVuLCBvcEFCLCBvcEFBLCBvcEFtQiwgb3BDb3B5LCBvcEluaXQpIHtcblxuICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24oZm5OYW1lKTtcbiAgICBmLmFkZFBhcmFtKFwiYmFzZVwiLCBcImkzMlwiKTtcbiAgICBmLmFkZFBhcmFtKFwic2NhbGFyXCIsIFwiaTMyXCIpO1xuICAgIGYuYWRkUGFyYW0oXCJzY2FsYXJMZW5ndGhcIiwgXCJpMzJcIik7XG4gICAgZi5hZGRQYXJhbShcInJcIiwgXCJpMzJcIik7XG4gICAgZi5hZGRMb2NhbChcIm9sZDBcIiwgXCJpMzJcIik7XG4gICAgZi5hZGRMb2NhbChcIm5iaXRzXCIsIFwiaTMyXCIpO1xuICAgIGYuYWRkTG9jYWwoXCJpXCIsIFwiaTMyXCIpO1xuICAgIGYuYWRkTG9jYWwoXCJsYXN0XCIsIFwiaTMyXCIpO1xuICAgIGYuYWRkTG9jYWwoXCJjdXJcIiwgXCJpMzJcIik7XG4gICAgZi5hZGRMb2NhbChcImNhcnJ5XCIsIFwiaTMyXCIpO1xuICAgIGYuYWRkTG9jYWwoXCJwXCIsIFwiaTMyXCIpO1xuXG4gICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgIGNvbnN0IGF1eCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhlbGVtZW50TGVuKSk7XG5cbiAgICBmdW5jdGlvbiBnZXRCaXQoSURYKSB7XG4gICAgICAgIHJldHVybiBjLmkzMl9hbmQoXG4gICAgICAgICAgICBjLmkzMl9zaHJfdShcbiAgICAgICAgICAgICAgICBjLmkzMl9sb2FkKFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9hZGQoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwic2NhbGFyXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfYW5kKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX3Nocl91KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJRFgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KDMpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdCgweEZGRkZGRkZDKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBjLmkzMl9hbmQoXG4gICAgICAgICAgICAgICAgICAgIElEWCxcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QoMHgxRilcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYy5pMzJfY29uc3QoMSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBwdXNoQml0KGIpIHtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIC4uLmMuaTMyX3N0b3JlOChcbiAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicFwiKSxcbiAgICAgICAgICAgICAgICBjLmkzMl9jb25zdChiKVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIC4uLmMuc2V0TG9jYWwoXG4gICAgICAgICAgICAgICAgXCJwXCIsXG4gICAgICAgICAgICAgICAgYy5pMzJfYWRkKFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicFwiKSxcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QoMSlcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApXG4gICAgICAgIF07XG4gICAgfVxuXG4gICAgZi5hZGRDb2RlKFxuICAgICAgICBjLmlmKFxuICAgICAgICAgICAgYy5pMzJfZXF6KGMuZ2V0TG9jYWwoXCJzY2FsYXJMZW5ndGhcIikpLFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgIC4uLmMuY2FsbChvcEluaXQsIGMuZ2V0TG9jYWwoXCJyXCIpKSxcbiAgICAgICAgICAgICAgICAuLi5jLnJldChbXSlcbiAgICAgICAgICAgIF1cbiAgICAgICAgKSxcbiAgICAgICAgYy5zZXRMb2NhbChcIm5iaXRzXCIsIGMuaTMyX3NobChjLmdldExvY2FsKFwic2NhbGFyTGVuZ3RoXCIpLCBjLmkzMl9jb25zdCgzKSkpLFxuICAgICAgICBjLnNldExvY2FsKFwib2xkMFwiLCBjLmkzMl9sb2FkKGMuaTMyX2NvbnN0KDApKSksXG4gICAgICAgIGMuc2V0TG9jYWwoXCJwXCIsIGMuZ2V0TG9jYWwoXCJvbGQwXCIpKSxcbiAgICAgICAgYy5pMzJfc3RvcmUoXG4gICAgICAgICAgICBjLmkzMl9jb25zdCgwKSxcbiAgICAgICAgICAgIGMuaTMyX2FuZChcbiAgICAgICAgICAgICAgICBjLmkzMl9hZGQoXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX2FkZChcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJvbGQwXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QoMzIpXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJuYml0c1wiKVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgYy5pMzJfY29uc3QoMHhGRkZGRkZGOClcbiAgICAgICAgICAgIClcbiAgICAgICAgKSxcbiAgICAgICAgYy5zZXRMb2NhbChcImlcIiwgYy5pMzJfY29uc3QoMSkpLFxuXG4gICAgICAgIGMuc2V0TG9jYWwoXCJsYXN0XCIsZ2V0Qml0KGMuaTMyX2NvbnN0KDApKSksXG4gICAgICAgIGMuc2V0TG9jYWwoXCJjYXJyeVwiLGMuaTMyX2NvbnN0KDApKSxcblxuICAgICAgICBjLmJsb2NrKGMubG9vcChcbiAgICAgICAgICAgIGMuYnJfaWYoMSwgYy5pMzJfZXEoIGMuZ2V0TG9jYWwoXCJpXCIpLCBjLmdldExvY2FsKFwibmJpdHNcIikpKSxcblxuICAgICAgICAgICAgYy5zZXRMb2NhbChcImN1clwiLCBnZXRCaXQoYy5nZXRMb2NhbChcImlcIikpKSxcbiAgICAgICAgICAgIGMuaWYoIGMuZ2V0TG9jYWwoXCJsYXN0XCIpLFxuICAgICAgICAgICAgICAgIGMuaWYoIGMuZ2V0TG9jYWwoXCJjdXJcIiksXG4gICAgICAgICAgICAgICAgICAgIGMuaWYoYy5nZXRMb2NhbChcImNhcnJ5XCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLmMuc2V0TG9jYWwoXCJsYXN0XCIsIGMuaTMyX2NvbnN0KDApKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5jLnNldExvY2FsKFwiY2FycnlcIiwgYy5pMzJfY29uc3QoMSkpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnB1c2hCaXQoMSlcbiAgICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgICAgICxcbiAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5jLnNldExvY2FsKFwibGFzdFwiLCBjLmkzMl9jb25zdCgwKSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uYy5zZXRMb2NhbChcImNhcnJ5XCIsIGMuaTMyX2NvbnN0KDEpKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5wdXNoQml0KDI1NSlcbiAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgIGMuaWYoYy5nZXRMb2NhbChcImNhcnJ5XCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLmMuc2V0TG9jYWwoXCJsYXN0XCIsIGMuaTMyX2NvbnN0KDApKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5jLnNldExvY2FsKFwiY2FycnlcIiwgYy5pMzJfY29uc3QoMSkpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnB1c2hCaXQoMjU1KVxuICAgICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICAgICAgLFxuICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLmMuc2V0TG9jYWwoXCJsYXN0XCIsIGMuaTMyX2NvbnN0KDApKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5jLnNldExvY2FsKFwiY2FycnlcIiwgYy5pMzJfY29uc3QoMCkpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnB1c2hCaXQoMSlcbiAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBjLmlmKCBjLmdldExvY2FsKFwiY3VyXCIpLFxuICAgICAgICAgICAgICAgICAgICBjLmlmKGMuZ2V0TG9jYWwoXCJjYXJyeVwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5jLnNldExvY2FsKFwibGFzdFwiLCBjLmkzMl9jb25zdCgwKSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uYy5zZXRMb2NhbChcImNhcnJ5XCIsIGMuaTMyX2NvbnN0KDEpKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5wdXNoQml0KDApXG4gICAgICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICAgICAgICAsXG4gICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uYy5zZXRMb2NhbChcImxhc3RcIiwgYy5pMzJfY29uc3QoMSkpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLmMuc2V0TG9jYWwoXCJjYXJyeVwiLCBjLmkzMl9jb25zdCgwKSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4ucHVzaEJpdCgwKVxuICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgYy5pZihjLmdldExvY2FsKFwiY2FycnlcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uYy5zZXRMb2NhbChcImxhc3RcIiwgYy5pMzJfY29uc3QoMSkpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLmMuc2V0TG9jYWwoXCJjYXJyeVwiLCBjLmkzMl9jb25zdCgwKSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4ucHVzaEJpdCgwKVxuICAgICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICAgICAgLFxuICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLmMuc2V0TG9jYWwoXCJsYXN0XCIsIGMuaTMyX2NvbnN0KDApKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5jLnNldExvY2FsKFwiY2FycnlcIiwgYy5pMzJfY29uc3QoMCkpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnB1c2hCaXQoMClcbiAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpXCIsIGMuaTMyX2FkZChjLmdldExvY2FsKFwiaVwiKSwgYy5pMzJfY29uc3QoMSkpKSxcbiAgICAgICAgICAgIGMuYnIoMClcbiAgICAgICAgKSksXG5cbiAgICAgICAgYy5pZiggYy5nZXRMb2NhbChcImxhc3RcIiksXG4gICAgICAgICAgICBjLmlmKGMuZ2V0TG9jYWwoXCJjYXJyeVwiKSxcbiAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgIC4uLnB1c2hCaXQoMjU1KSxcbiAgICAgICAgICAgICAgICAgICAgLi4ucHVzaEJpdCgwKSxcbiAgICAgICAgICAgICAgICAgICAgLi4ucHVzaEJpdCgxKVxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAsXG4gICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAuLi5wdXNoQml0KDEpXG4gICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjLmlmKGMuZ2V0TG9jYWwoXCJjYXJyeVwiKSxcbiAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgIC4uLnB1c2hCaXQoMCksXG4gICAgICAgICAgICAgICAgICAgIC4uLnB1c2hCaXQoMSlcbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICApLFxuICAgICAgICApLFxuXG4gICAgICAgIGMuc2V0TG9jYWwoXCJwXCIsIGMuaTMyX3N1YihjLmdldExvY2FsKFwicFwiKSwgYy5pMzJfY29uc3QoMSkpKSxcblxuICAgICAgICAvLyBwIGFscmVhZHkgcG9pbnRzIHRvIHRoZSBsYXN0IGJpdFxuXG4gICAgICAgIGMuY2FsbChvcENvcHksIGMuZ2V0TG9jYWwoXCJiYXNlXCIpLCBhdXgpLFxuXG4gICAgICAgIGMuY2FsbChvcEluaXQsIGMuZ2V0TG9jYWwoXCJyXCIpKSxcblxuICAgICAgICBjLmJsb2NrKGMubG9vcChcblxuXG4gICAgICAgICAgICBjLmNhbGwob3BBQSwgYy5nZXRMb2NhbChcInJcIiksIGMuZ2V0TG9jYWwoXCJyXCIpKSxcblxuXG4gICAgICAgICAgICBjLnNldExvY2FsKFwiY3VyXCIsXG4gICAgICAgICAgICAgICAgYy5pMzJfbG9hZDhfdShcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInBcIilcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApLFxuXG4gICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJjdXJcIiksXG4gICAgICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfZXEoYy5nZXRMb2NhbChcImN1clwiKSwgYy5pMzJfY29uc3QoMSkpLFxuICAgICAgICAgICAgICAgICAgICBjLmNhbGwob3BBQiwgIGMuZ2V0TG9jYWwoXCJyXCIpLCBhdXgsIGMuZ2V0TG9jYWwoXCJyXCIpKSxcbiAgICAgICAgICAgICAgICAgICAgYy5jYWxsKG9wQW1CLCBjLmdldExvY2FsKFwiclwiKSwgYXV4LCBjLmdldExvY2FsKFwiclwiKSksXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgYy5icl9pZigxLCBjLmkzMl9lcSggYy5nZXRMb2NhbChcIm9sZDBcIiksIGMuZ2V0TG9jYWwoXCJwXCIpKSksXG4gICAgICAgICAgICBjLnNldExvY2FsKFwicFwiLCBjLmkzMl9zdWIoYy5nZXRMb2NhbChcInBcIiksIGMuaTMyX2NvbnN0KDEpKSksXG4gICAgICAgICAgICBjLmJyKDApXG5cbiAgICAgICAgKSksXG5cbiAgICAgICAgYy5pMzJfc3RvcmUoIGMuaTMyX2NvbnN0KDApLCBjLmdldExvY2FsKFwib2xkMFwiKSlcblxuICAgICk7XG5cbn07XG5cbi8qXG4gICAgQ29weXJpZ2h0IDIwMTkgMEtJTVMgYXNzb2NpYXRpb24uXG5cbiAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB3YXNtc25hcmsgKFdlYiBBc3NlbWJseSB6a1NuYXJrIFByb3ZlcikuXG5cbiAgICB3YXNtc25hcmsgaXMgYSBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0XG4gICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxuICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG5cbiAgICB3YXNtc25hcmsgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVRcbiAgICBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFlcbiAgICBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWNcbiAgICBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG5cbiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICAgIGFsb25nIHdpdGggd2FzbXNuYXJrLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuKi9cblxudmFyIGJ1aWxkX211bHRpZXhwID0gZnVuY3Rpb24gYnVpbGRNdWx0aWV4cChtb2R1bGUsIHByZWZpeCwgZm5OYW1lLCBvcEFkZCwgbjhiKSB7XG5cbiAgICBjb25zdCBuNjRnID0gbW9kdWxlLm1vZHVsZXNbcHJlZml4XS5uNjQ7XG4gICAgY29uc3QgbjhnID0gbjY0Zyo4O1xuXG4gICAgZnVuY3Rpb24gYnVpbGRHZXRDaHVuaygpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihmbk5hbWUgKyBcIl9nZXRDaHVua1wiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInBTY2FsYXJcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJzY2FsYXJTaXplXCIsIFwiaTMyXCIpOyAgLy8gTnVtYmVyIG9mIGJ5dGVzIG9mIHRoZSBzY2FsYXJcbiAgICAgICAgZi5hZGRQYXJhbShcInN0YXJ0Qml0XCIsIFwiaTMyXCIpOyAgLy8gQml0IHRvIHN0YXJ0IGV4dHJhY3RcbiAgICAgICAgZi5hZGRQYXJhbShcImNodW5rU2l6ZVwiLCBcImkzMlwiKTsgIC8vIENodW5rIHNpemUgaW4gYml0c1xuICAgICAgICBmLmFkZExvY2FsKFwiYml0c1RvRW5kXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwibWFza1wiLCBcImkzMlwiKTtcbiAgICAgICAgZi5zZXRSZXR1cm5UeXBlKFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcImJpdHNUb0VuZFwiLFxuICAgICAgICAgICAgICAgIGMuaTMyX3N1YihcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfbXVsKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInNjYWxhclNpemVcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdCg4KVxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwic3RhcnRCaXRcIilcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICBjLmkzMl9ndF9zKFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiY2h1bmtTaXplXCIpLFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiYml0c1RvRW5kXCIpXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFxuICAgICAgICAgICAgICAgICAgICBcIm1hc2tcIixcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfc3ViKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfc2hsKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KDEpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJiaXRzVG9FbmRcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdCgxKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFxuICAgICAgICAgICAgICAgICAgICBcIm1hc2tcIixcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfc3ViKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfc2hsKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KDEpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJjaHVua1NpemVcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdCgxKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGMuaTMyX2FuZChcbiAgICAgICAgICAgICAgICBjLmkzMl9zaHJfdShcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfbG9hZChcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2FkZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicFNjYWxhclwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9zaHJfdShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInN0YXJ0Qml0XCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdCgzKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAwLCAgLy8gb2Zmc2V0XG4gICAgICAgICAgICAgICAgICAgICAgICAwICAgLy8gYWxpZ24gdG8gYnl0ZS5cbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfYW5kKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInN0YXJ0Qml0XCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QoMHg3KVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwibWFza1wiKVxuICAgICAgICAgICAgKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGJ1aWxkTXV0aWV4cENodW5rKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKGZuTmFtZSArIFwiX2NodW5rXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicEJhc2VzXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicFNjYWxhcnNcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJzY2FsYXJTaXplXCIsIFwiaTMyXCIpOyAgLy8gTnVtYmVyIG9mIHBvaW50c1xuICAgICAgICBmLmFkZFBhcmFtKFwiblwiLCBcImkzMlwiKTsgIC8vIE51bWJlciBvZiBwb2ludHNcbiAgICAgICAgZi5hZGRQYXJhbShcInN0YXJ0Qml0XCIsIFwiaTMyXCIpOyAgLy8gYml0IHdoZXJlIGl0IHN0YXJ0cyB0aGUgY2h1bmtcbiAgICAgICAgZi5hZGRQYXJhbShcImNodW5rU2l6ZVwiLCBcImkzMlwiKTsgIC8vIGJpdCB3aGVyZSBpdCBzdGFydHMgdGhlIGNodW5rXG4gICAgICAgIGYuYWRkUGFyYW0oXCJwclwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcIm5DaHVua3NcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJpdFNjYWxhclwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcImVuZFNjYWxhclwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcIml0QmFzZVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcImlcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJqXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiblRhYmxlXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwicFRhYmxlXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiaWR4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwicElkeFRhYmxlXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICBjLmkzMl9lcXooYy5nZXRMb2NhbChcIm5cIikpLFxuICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgLi4uYy5jYWxsKHByZWZpeCArIFwiX3plcm9cIiwgYy5nZXRMb2NhbChcInByXCIpKSxcbiAgICAgICAgICAgICAgICAgICAgLi4uYy5yZXQoW10pXG4gICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgLy8gQWxsb2NhdGUgbWVtb3J5XG5cbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXG4gICAgICAgICAgICAgICAgXCJuVGFibGVcIixcbiAgICAgICAgICAgICAgICBjLmkzMl9zaGwoXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KDEpLFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiY2h1bmtTaXplXCIpXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJwVGFibGVcIiwgYy5pMzJfbG9hZCggYy5pMzJfY29uc3QoMCkgKSksXG4gICAgICAgICAgICBjLmkzMl9zdG9yZShcbiAgICAgICAgICAgICAgICBjLmkzMl9jb25zdCgwKSxcbiAgICAgICAgICAgICAgICBjLmkzMl9hZGQoXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwVGFibGVcIiksXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX211bChcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJuVGFibGVcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdChuOGcpXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApLFxuXG4gICAgICAgICAgICAvLyBSZXNldCBUYWJsZVxuICAgICAgICAgICAgYy5zZXRMb2NhbChcImpcIiwgYy5pMzJfY29uc3QoMCkpLFxuICAgICAgICAgICAgYy5ibG9jayhjLmxvb3AoXG4gICAgICAgICAgICAgICAgYy5icl9pZihcbiAgICAgICAgICAgICAgICAgICAgMSxcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfZXEoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwialwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJuVGFibGVcIilcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgICAgICBjLmNhbGwoXG4gICAgICAgICAgICAgICAgICAgIHByZWZpeCArIFwiX3plcm9cIixcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfYWRkKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInBUYWJsZVwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX211bChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwialwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdChuOGcpXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApLFxuXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcImpcIiwgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJqXCIpLCBjLmkzMl9jb25zdCgxKSkpLFxuICAgICAgICAgICAgICAgIGMuYnIoMClcbiAgICAgICAgICAgICkpLFxuXG4gICAgICAgICAgICAvLyBEaXN0cmlidXRlIGVsZW1lbnRzXG4gICAgICAgICAgICBjLnNldExvY2FsKFwiaXRCYXNlXCIsIGMuZ2V0TG9jYWwoXCJwQmFzZXNcIikpLFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcIml0U2NhbGFyXCIsIGMuZ2V0TG9jYWwoXCJwU2NhbGFyc1wiKSksXG4gICAgICAgICAgICBjLnNldExvY2FsKFwiZW5kU2NhbGFyXCIsXG4gICAgICAgICAgICAgICAgYy5pMzJfYWRkKFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicFNjYWxhcnNcIiksXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX211bChcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJuXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInNjYWxhclNpemVcIilcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjLmJsb2NrKGMubG9vcChcbiAgICAgICAgICAgICAgICBjLmJyX2lmKFxuICAgICAgICAgICAgICAgICAgICAxLFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9lcShcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpdFNjYWxhclwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJlbmRTY2FsYXJcIilcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFxuICAgICAgICAgICAgICAgICAgICBcImlkeFwiLFxuICAgICAgICAgICAgICAgICAgICBjLmNhbGwoZm5OYW1lICsgXCJfZ2V0Q2h1bmtcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpdFNjYWxhclwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJzY2FsYXJTaXplXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInN0YXJ0Qml0XCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImNodW5rU2l6ZVwiKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpZHhcIiksXG4gICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLmMuc2V0TG9jYWwoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJwSWR4VGFibGVcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9hZGQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwVGFibGVcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX211bChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX3N1YihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaWR4XCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KDEpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QobjhnKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLmMuY2FsbChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcEFkZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicElkeFRhYmxlXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpdEJhc2VcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInBJZHhUYWJsZVwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFwiaXRTY2FsYXJcIiwgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJpdFNjYWxhclwiKSwgYy5nZXRMb2NhbChcInNjYWxhclNpemVcIikpKSxcbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFwiaXRCYXNlXCIsIGMuaTMyX2FkZChjLmdldExvY2FsKFwiaXRCYXNlXCIpLCBjLmkzMl9jb25zdChuOGIpKSksXG4gICAgICAgICAgICAgICAgYy5icigwKVxuICAgICAgICAgICAgKSksXG5cbiAgICAgICAgICAgIGMuY2FsbChmbk5hbWUgKyBcIl9yZWR1Y2VUYWJsZVwiLCBjLmdldExvY2FsKFwicFRhYmxlXCIpLCBjLmdldExvY2FsKFwiY2h1bmtTaXplXCIpKSxcbiAgICAgICAgICAgIGMuY2FsbChcbiAgICAgICAgICAgICAgICBwcmVmaXggKyBcIl9jb3B5XCIsXG4gICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInBUYWJsZVwiKSxcbiAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicHJcIilcbiAgICAgICAgICAgICksXG5cblxuICAgICAgICAgICAgYy5pMzJfc3RvcmUoXG4gICAgICAgICAgICAgICAgYy5pMzJfY29uc3QoMCksXG4gICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInBUYWJsZVwiKVxuICAgICAgICAgICAgKVxuXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYnVpbGRNdWx0aWV4cCgpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihmbk5hbWUpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicEJhc2VzXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicFNjYWxhcnNcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJzY2FsYXJTaXplXCIsIFwiaTMyXCIpOyAgLy8gTnVtYmVyIG9mIHBvaW50c1xuICAgICAgICBmLmFkZFBhcmFtKFwiblwiLCBcImkzMlwiKTsgIC8vIE51bWJlciBvZiBwb2ludHNcbiAgICAgICAgZi5hZGRQYXJhbShcInByXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiY2h1bmtTaXplXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwibkNodW5rc1wiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcIml0U2NhbGFyXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiZW5kU2NhbGFyXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiaXRCYXNlXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiaXRCaXRcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJpXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwialwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcIm5UYWJsZVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcInBUYWJsZVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcImlkeFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcInBJZHhUYWJsZVwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IGF1eCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOGcpKTtcblxuICAgICAgICBjb25zdCBwVFNpemVzID0gbW9kdWxlLmFsbG9jKFtcbiAgICAgICAgICAgIDE3LCAxNywgMTcsIDE3LCAgIDE3LCAxNywgMTcsIDE3LFxuICAgICAgICAgICAgMTcsIDE3LCAxNiwgMTYsICAgMTUsIDE0LCAxMywgMTMsXG4gICAgICAgICAgICAxMiwgMTEsIDEwLCAgOSwgICAgOCwgIDcsICA3LCAgNixcbiAgICAgICAgICAgIDUgLCAgNCwgIDMsICAyLCAgICAxLCAgMSwgIDEsICAxXG4gICAgICAgIF0pO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl96ZXJvXCIsIGMuZ2V0TG9jYWwoXCJwclwiKSksXG4gICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgIGMuaTMyX2VxeihjLmdldExvY2FsKFwiblwiKSksXG4gICAgICAgICAgICAgICAgYy5yZXQoW10pXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcImNodW5rU2l6ZVwiLCBjLmkzMl9sb2FkOF91KCBjLmkzMl9jbHooYy5nZXRMb2NhbChcIm5cIikpLCAgcFRTaXplcyApKSxcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXG4gICAgICAgICAgICAgICAgXCJuQ2h1bmtzXCIsXG4gICAgICAgICAgICAgICAgYy5pMzJfYWRkKFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9kaXZfdShcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX3N1YihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9zaGwoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJzY2FsYXJTaXplXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdCgzKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QoMSlcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiY2h1bmtTaXplXCIpXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KDEpXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSxcblxuXG4gICAgICAgICAgICAvLyBBbGxvY2F0ZSBtZW1vcnlcblxuICAgICAgICAgICAgYy5zZXRMb2NhbChcbiAgICAgICAgICAgICAgICBcIml0Qml0XCIsXG4gICAgICAgICAgICAgICAgYy5pMzJfbXVsKFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9zdWIoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwibkNodW5rc1wiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KDEpXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJjaHVua1NpemVcIilcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYy5ibG9jayhjLmxvb3AoXG4gICAgICAgICAgICAgICAgYy5icl9pZihcbiAgICAgICAgICAgICAgICAgICAgMSxcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfbHRfcyhcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpdEJpdFwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KDApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApLFxuXG4gICAgICAgICAgICAgICAgLy8gRG91YmxlIG5DaHVuayB0aW1lc1xuICAgICAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX2VxeihjLmNhbGwocHJlZml4ICsgXCJfaXNaZXJvXCIsIGMuZ2V0TG9jYWwoXCJwclwiKSkpLFxuICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5jLnNldExvY2FsKFwialwiLCBjLmkzMl9jb25zdCgwKSksXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5jLmJsb2NrKGMubG9vcChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmJyX2lmKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9lcShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJqXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImNodW5rU2l6ZVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9kb3VibGVcIiwgYy5nZXRMb2NhbChcInByXCIpLCBjLmdldExvY2FsKFwicHJcIikpLFxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcImpcIiwgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJqXCIpLCBjLmkzMl9jb25zdCgxKSkpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuYnIoMClcbiAgICAgICAgICAgICAgICAgICAgICAgICkpXG4gICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICApLFxuXG4gICAgICAgICAgICAgICAgYy5jYWxsKFxuICAgICAgICAgICAgICAgICAgICBmbk5hbWUgKyBcIl9jaHVua1wiLFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicEJhc2VzXCIpLFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicFNjYWxhcnNcIiksXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJzY2FsYXJTaXplXCIpLFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiblwiKSxcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcIml0Qml0XCIpLFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiY2h1bmtTaXplXCIpLFxuICAgICAgICAgICAgICAgICAgICBhdXhcbiAgICAgICAgICAgICAgICApLFxuXG4gICAgICAgICAgICAgICAgYy5jYWxsKFxuICAgICAgICAgICAgICAgICAgICBwcmVmaXggKyBcIl9hZGRcIixcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInByXCIpLFxuICAgICAgICAgICAgICAgICAgICBhdXgsXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwclwiKVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcIml0Qml0XCIsIGMuaTMyX3N1YihjLmdldExvY2FsKFwiaXRCaXRcIiksIGMuZ2V0TG9jYWwoXCJjaHVua1NpemVcIikpKSxcbiAgICAgICAgICAgICAgICBjLmJyKDApXG4gICAgICAgICAgICApKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGJ1aWxkUmVkdWNlVGFibGUoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24oZm5OYW1lICsgXCJfcmVkdWNlVGFibGVcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwVGFibGVcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwXCIsIFwiaTMyXCIpOyAgLy8gTnVtYmVyIG9mIGJpdHMgb2YgdGhlIHRhYmxlXG4gICAgICAgIGYuYWRkTG9jYWwoXCJoYWxmXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiaXQxXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiaXQyXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwicEFjY1wiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgYy5pMzJfZXEoYy5nZXRMb2NhbChcInBcIiksIGMuaTMyX2NvbnN0KDEpKSxcbiAgICAgICAgICAgICAgICBjLnJldChbXSlcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjLnNldExvY2FsKFxuICAgICAgICAgICAgICAgIFwiaGFsZlwiLFxuICAgICAgICAgICAgICAgIGMuaTMyX3NobChcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QoMSksXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX3N1YihcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QoMSlcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpdDFcIiwgYy5nZXRMb2NhbChcInBUYWJsZVwiKSksXG4gICAgICAgICAgICBjLnNldExvY2FsKFxuICAgICAgICAgICAgICAgIFwiaXQyXCIsXG4gICAgICAgICAgICAgICAgYy5pMzJfYWRkKFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicFRhYmxlXCIpLFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9tdWwoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaGFsZlwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KG44ZylcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjLnNldExvY2FsKFwicEFjY1wiLFxuICAgICAgICAgICAgICAgIGMuaTMyX3N1YihcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcIml0MlwiKSxcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QobjhnKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjLmJsb2NrKGMubG9vcChcbiAgICAgICAgICAgICAgICBjLmJyX2lmKFxuICAgICAgICAgICAgICAgICAgICAxLFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9lcShcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpdDFcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicEFjY1wiKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBjLmNhbGwoXG4gICAgICAgICAgICAgICAgICAgIHByZWZpeCArIFwiX2FkZFwiLFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaXQxXCIpLFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaXQyXCIpLFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaXQxXCIpXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBjLmNhbGwoXG4gICAgICAgICAgICAgICAgICAgIHByZWZpeCArIFwiX2FkZFwiLFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicEFjY1wiKSxcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcIml0MlwiKSxcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInBBY2NcIilcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpdDFcIiwgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJpdDFcIiksIGMuaTMyX2NvbnN0KG44ZykpKSxcbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFwiaXQyXCIsIGMuaTMyX2FkZChjLmdldExvY2FsKFwiaXQyXCIpLCBjLmkzMl9jb25zdChuOGcpKSksXG4gICAgICAgICAgICAgICAgYy5icigwKVxuICAgICAgICAgICAgKSksXG5cbiAgICAgICAgICAgIGMuY2FsbChcbiAgICAgICAgICAgICAgICBmbk5hbWUgKyBcIl9yZWR1Y2VUYWJsZVwiLFxuICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwVGFibGVcIiksXG4gICAgICAgICAgICAgICAgYy5pMzJfc3ViKFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicFwiKSxcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QoMSlcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApLFxuXG4gICAgICAgICAgICBjLnNldExvY2FsKFwicFwiLCBjLmkzMl9zdWIoYy5nZXRMb2NhbChcInBcIiksIGMuaTMyX2NvbnN0KDEpKSksXG4gICAgICAgICAgICBjLmJsb2NrKGMubG9vcChcbiAgICAgICAgICAgICAgICBjLmJyX2lmKDEsIGMuaTMyX2VxeihjLmdldExvY2FsKFwicFwiKSkpLFxuICAgICAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9kb3VibGVcIiwgYy5nZXRMb2NhbChcInBBY2NcIiksIGMuZ2V0TG9jYWwoXCJwQWNjXCIpKSxcbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFwicFwiLCBjLmkzMl9zdWIoYy5nZXRMb2NhbChcInBcIiksIGMuaTMyX2NvbnN0KDEpKSksXG4gICAgICAgICAgICAgICAgYy5icigwKVxuICAgICAgICAgICAgKSksXG5cbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9hZGRcIiwgYy5nZXRMb2NhbChcInBUYWJsZVwiKSwgYy5nZXRMb2NhbChcInBBY2NcIiksIGMuZ2V0TG9jYWwoXCJwVGFibGVcIikpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgYnVpbGRHZXRDaHVuaygpO1xuICAgIGJ1aWxkUmVkdWNlVGFibGUoKTtcbiAgICBidWlsZE11dGlleHBDaHVuaygpO1xuICAgIGJ1aWxkTXVsdGlleHAoKTtcblxuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihmbk5hbWUpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihmbk5hbWUgK1wiX2NodW5rXCIpO1xuXG5cbn07XG5cbi8qXG4gICAgQ29weXJpZ2h0IDIwMTkgMEtJTVMgYXNzb2NpYXRpb24uXG5cbiAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB3YXNtc25hcmsgKFdlYiBBc3NlbWJseSB6a1NuYXJrIFByb3ZlcikuXG5cbiAgICB3YXNtc25hcmsgaXMgYSBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0XG4gICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxuICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG5cbiAgICB3YXNtc25hcmsgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVRcbiAgICBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFlcbiAgICBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWNcbiAgICBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG5cbiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICAgIGFsb25nIHdpdGggd2FzbXNuYXJrLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuKi9cblxuY29uc3QgYnVpbGRUaW1lc1NjYWxhck5BRiA9IGJ1aWxkX3RpbWVzc2NhbGFybmFmO1xuLy9jb25zdCBidWlsZFRpbWVzU2NhbGFyID0gcmVxdWlyZShcIi4vYnVpbGRfdGltZXNzY2FsYXJcIik7XG5jb25zdCBidWlsZEJhdGNoQ29udmVydGlvbiA9IGJ1aWxkX2JhdGNoY29udmVydGlvbjtcbmNvbnN0IGJ1aWxkTXVsdGlleHAkMSA9IGJ1aWxkX211bHRpZXhwO1xuXG52YXIgYnVpbGRfY3VydmVfamFjb2JpYW5fYTAgPSBmdW5jdGlvbiBidWlsZEN1cnZlKG1vZHVsZSwgcHJlZml4LCBwcmVmaXhGaWVsZCwgcEIpIHtcblxuXG4gICAgY29uc3QgbjY0ID0gbW9kdWxlLm1vZHVsZXNbcHJlZml4RmllbGRdLm42NDtcbiAgICBjb25zdCBuOCA9IG42NCo4O1xuXG4gICAgaWYgKG1vZHVsZS5tb2R1bGVzW3ByZWZpeF0pIHJldHVybiBwcmVmaXg7ICAvLyBhbHJlYWR5IGJ1aWxkZWRcbiAgICBtb2R1bGUubW9kdWxlc1twcmVmaXhdID0ge1xuICAgICAgICBuNjQ6IG42NCozXG4gICAgfTtcblxuICAgIGZ1bmN0aW9uIGJ1aWxkSXNaZXJvKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCArIFwiX2lzWmVyb1wiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInAxXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLnNldFJldHVyblR5cGUoXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBmLmFkZENvZGUoYy5jYWxsKFxuICAgICAgICAgICAgcHJlZml4RmllbGQgKyBcIl9pc1plcm9cIixcbiAgICAgICAgICAgIGMuaTMyX2FkZChcbiAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicDFcIiksXG4gICAgICAgICAgICAgICAgYy5pMzJfY29uc3QobjgqMilcbiAgICAgICAgICAgIClcbiAgICAgICAgKSk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGJ1aWxkSXNaZXJvQWZmaW5lKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCArIFwiX2lzWmVyb0FmZmluZVwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInAxXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLnNldFJldHVyblR5cGUoXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLmkzMl9hbmQoXG4gICAgICAgICAgICAgICAgYy5jYWxsKFxuICAgICAgICAgICAgICAgICAgICBwcmVmaXhGaWVsZCArIFwiX2lzWmVyb1wiLFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicDFcIilcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGMuY2FsbChcbiAgICAgICAgICAgICAgICAgICAgcHJlZml4RmllbGQgKyBcIl9pc1plcm9cIixcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfYWRkKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInAxXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QobjgpXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYnVpbGRDb3B5KCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCArIFwiX2NvcHlcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwc1wiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInBkXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPG42NCozOyBpKyspIHtcbiAgICAgICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgICAgICBjLmk2NF9zdG9yZShcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInBkXCIpLFxuICAgICAgICAgICAgICAgICAgICBpKjgsXG4gICAgICAgICAgICAgICAgICAgIGMuaTY0X2xvYWQoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicHNcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICBpKjhcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICB9XG5cblxuICAgIGZ1bmN0aW9uIGJ1aWxkQ29weUFmZmluZSgpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXggKyBcIl9jb3B5QWZmaW5lXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicHNcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwZFwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGZvciAobGV0IGk9MDsgaTxuNjQqMjsgaSsrKSB7XG4gICAgICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICAgICAgYy5pNjRfc3RvcmUoXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwZFwiKSxcbiAgICAgICAgICAgICAgICAgICAgaSo4LFxuICAgICAgICAgICAgICAgICAgICBjLmk2NF9sb2FkKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInBzXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgaSo4XG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICB9XG5cblxuICAgIGZ1bmN0aW9uIGJ1aWxkWmVybygpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXggKyBcIl96ZXJvXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicHJcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBmLmFkZENvZGUoYy5jYWxsKFxuICAgICAgICAgICAgcHJlZml4RmllbGQgKyBcIl96ZXJvXCIsXG4gICAgICAgICAgICBjLmdldExvY2FsKFwicHJcIilcbiAgICAgICAgKSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKGMuY2FsbChcbiAgICAgICAgICAgIHByZWZpeEZpZWxkICsgXCJfb25lXCIsXG4gICAgICAgICAgICBjLmkzMl9hZGQoXG4gICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInByXCIpLFxuICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KG44KVxuICAgICAgICAgICAgKVxuICAgICAgICApKTtcblxuICAgICAgICBmLmFkZENvZGUoYy5jYWxsKFxuICAgICAgICAgICAgcHJlZml4RmllbGQgKyBcIl96ZXJvXCIsXG4gICAgICAgICAgICBjLmkzMl9hZGQoXG4gICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInByXCIpLFxuICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KG44KjIpXG4gICAgICAgICAgICApXG4gICAgICAgICkpO1xuICAgIH1cblxuXG4gICAgZnVuY3Rpb24gYnVpbGRaZXJvQWZmaW5lKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCArIFwiX3plcm9BZmZpbmVcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwclwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGYuYWRkQ29kZShjLmNhbGwoXG4gICAgICAgICAgICBwcmVmaXhGaWVsZCArIFwiX3plcm9cIixcbiAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwclwiKVxuICAgICAgICApKTtcblxuICAgICAgICBmLmFkZENvZGUoYy5jYWxsKFxuICAgICAgICAgICAgcHJlZml4RmllbGQgKyBcIl96ZXJvXCIsXG4gICAgICAgICAgICBjLmkzMl9hZGQoXG4gICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInByXCIpLFxuICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KG44KVxuICAgICAgICAgICAgKVxuICAgICAgICApKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBidWlsZEVxKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCArIFwiX2VxXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicDFcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwMlwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5zZXRSZXR1cm5UeXBlKFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiejFcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJ6MlwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IHgxID0gYy5nZXRMb2NhbChcInAxXCIpO1xuICAgICAgICBjb25zdCB5MSA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwicDFcIiksIGMuaTMyX2NvbnN0KG44KSk7XG4gICAgICAgIGYuYWRkQ29kZShjLnNldExvY2FsKFwiejFcIiwgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwMVwiKSwgYy5pMzJfY29uc3QobjgqMikpKSk7XG4gICAgICAgIGNvbnN0IHoxID0gYy5nZXRMb2NhbChcInoxXCIpO1xuICAgICAgICBjb25zdCB4MiA9IGMuZ2V0TG9jYWwoXCJwMlwiKTtcbiAgICAgICAgY29uc3QgeTIgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInAyXCIpLCBjLmkzMl9jb25zdChuOCkpO1xuICAgICAgICBmLmFkZENvZGUoYy5zZXRMb2NhbChcInoyXCIsIGMuaTMyX2FkZChjLmdldExvY2FsKFwicDJcIiksIGMuaTMyX2NvbnN0KG44KjIpKSkpO1xuICAgICAgICBjb25zdCB6MiA9IGMuZ2V0TG9jYWwoXCJ6MlwiKTtcblxuICAgICAgICBjb25zdCBaMVoxID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44KSk7XG4gICAgICAgIGNvbnN0IFoyWjIgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcbiAgICAgICAgY29uc3QgVTEgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcbiAgICAgICAgY29uc3QgVTIgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcbiAgICAgICAgY29uc3QgWjFfY3ViZWQgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcbiAgICAgICAgY29uc3QgWjJfY3ViZWQgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcbiAgICAgICAgY29uc3QgUzEgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcbiAgICAgICAgY29uc3QgUzIgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcblxuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX2lzWmVyb1wiLCBjLmdldExvY2FsKFwicDFcIikpLFxuICAgICAgICAgICAgICAgIGMucmV0KCBjLmNhbGwocHJlZml4ICsgXCJfaXNaZXJvXCIsIGMuZ2V0TG9jYWwoXCJwMlwiKSkpLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX2lzWmVyb1wiLCBjLmdldExvY2FsKFwicDJcIikpLFxuICAgICAgICAgICAgICAgIGMucmV0KGMuaTMyX2NvbnN0KDApKVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfaXNPbmVcIiwgejEpLFxuICAgICAgICAgICAgICAgIGMucmV0KGMuY2FsbChwcmVmaXggKyBcIl9lcU1peGVkXCIsIGMuZ2V0TG9jYWwoXCJwMlwiKSwgYy5nZXRMb2NhbChcInAxXCIpKSlcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX2lzT25lXCIsIHoyKSxcbiAgICAgICAgICAgICAgICBjLnJldChjLmNhbGwocHJlZml4ICsgXCJfZXFNaXhlZFwiLCBjLmdldExvY2FsKFwicDFcIiksIGMuZ2V0TG9jYWwoXCJwMlwiKSkpXG4gICAgICAgICAgICApLFxuXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9zcXVhcmVcIiwgejEsIFoxWjEpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfc3F1YXJlXCIsIHoyLCBaMloyKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX211bFwiLCB4MSwgWjJaMiwgVTEpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfbXVsXCIsIHgyLCBaMVoxLCBVMiksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9tdWxcIiwgejEsIFoxWjEsIFoxX2N1YmVkKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX211bFwiLCB6MiwgWjJaMiwgWjJfY3ViZWQpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfbXVsXCIsIHkxLCBaMl9jdWJlZCwgUzEpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfbXVsXCIsIHkyLCBaMV9jdWJlZCwgUzIpLFxuXG4gICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX2VxXCIsIFUxLCBVMiksXG4gICAgICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfZXFcIiwgUzEsIFMyKSxcbiAgICAgICAgICAgICAgICAgICAgYy5yZXQoYy5pMzJfY29uc3QoMSkpXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGMucmV0KGMuaTMyX2NvbnN0KDApKVxuICAgICAgICApO1xuICAgIH1cblxuXG4gICAgZnVuY3Rpb24gYnVpbGRFcU1peGVkKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCArIFwiX2VxTWl4ZWRcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwMVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInAyXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLnNldFJldHVyblR5cGUoXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJ6MVwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IHgxID0gYy5nZXRMb2NhbChcInAxXCIpO1xuICAgICAgICBjb25zdCB5MSA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwicDFcIiksIGMuaTMyX2NvbnN0KG44KSk7XG4gICAgICAgIGYuYWRkQ29kZShjLnNldExvY2FsKFwiejFcIiwgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwMVwiKSwgYy5pMzJfY29uc3QobjgqMikpKSk7XG4gICAgICAgIGNvbnN0IHoxID0gYy5nZXRMb2NhbChcInoxXCIpO1xuICAgICAgICBjb25zdCB4MiA9IGMuZ2V0TG9jYWwoXCJwMlwiKTtcbiAgICAgICAgY29uc3QgeTIgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInAyXCIpLCBjLmkzMl9jb25zdChuOCkpO1xuXG4gICAgICAgIGNvbnN0IFoxWjEgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcbiAgICAgICAgY29uc3QgVTIgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcbiAgICAgICAgY29uc3QgWjFfY3ViZWQgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcbiAgICAgICAgY29uc3QgUzIgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9pc1plcm9cIiwgYy5nZXRMb2NhbChcInAxXCIpKSxcbiAgICAgICAgICAgICAgICBjLnJldCggYy5jYWxsKHByZWZpeCArIFwiX2lzWmVyb0FmZmluZVwiLCBjLmdldExvY2FsKFwicDJcIikpKSxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9pc1plcm9BZmZpbmVcIiwgYy5nZXRMb2NhbChcInAyXCIpKSxcbiAgICAgICAgICAgICAgICBjLnJldChjLmkzMl9jb25zdCgwKSlcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX2lzT25lXCIsIHoxKSxcbiAgICAgICAgICAgICAgICBjLnJldChjLmNhbGwocHJlZml4ICsgXCJfZXFBZmZpbmVcIiwgYy5nZXRMb2NhbChcInAxXCIpLCBjLmdldExvY2FsKFwicDJcIikpKVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX3NxdWFyZVwiLCB6MSwgWjFaMSksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9tdWxcIiwgeDIsIFoxWjEsIFUyKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX211bFwiLCB6MSwgWjFaMSwgWjFfY3ViZWQpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfbXVsXCIsIHkyLCBaMV9jdWJlZCwgUzIpLFxuXG4gICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX2VxXCIsIHgxLCBVMiksXG4gICAgICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfZXFcIiwgeTEsIFMyKSxcbiAgICAgICAgICAgICAgICAgICAgYy5yZXQoYy5pMzJfY29uc3QoMSkpXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGMucmV0KGMuaTMyX2NvbnN0KDApKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGJ1aWxkRG91YmxlKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCArIFwiX2RvdWJsZVwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInAxXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicHJcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCB4ID0gYy5nZXRMb2NhbChcInAxXCIpO1xuICAgICAgICBjb25zdCB5ID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwMVwiKSwgYy5pMzJfY29uc3QobjgpKTtcbiAgICAgICAgY29uc3QgeiA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwicDFcIiksIGMuaTMyX2NvbnN0KG44KjIpKTtcbiAgICAgICAgY29uc3QgeDMgPSBjLmdldExvY2FsKFwicHJcIik7XG4gICAgICAgIGNvbnN0IHkzID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwclwiKSwgYy5pMzJfY29uc3QobjgpKTtcbiAgICAgICAgY29uc3QgejMgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInByXCIpLCBjLmkzMl9jb25zdChuOCoyKSk7XG5cbiAgICAgICAgY29uc3QgQSA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuICAgICAgICBjb25zdCBCID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44KSk7XG4gICAgICAgIGNvbnN0IEMgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcbiAgICAgICAgY29uc3QgRCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuICAgICAgICBjb25zdCBFID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44KSk7XG4gICAgICAgIGNvbnN0IEYgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcbiAgICAgICAgY29uc3QgRyA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuICAgICAgICBjb25zdCBlaWdodEMgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9pc1plcm9cIiwgYy5nZXRMb2NhbChcInAxXCIpKSxcbiAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgIC4uLmMuY2FsbChwcmVmaXggKyBcIl9jb3B5XCIsIGMuZ2V0TG9jYWwoXCJwMVwiKSwgYy5nZXRMb2NhbChcInByXCIpKSxcbiAgICAgICAgICAgICAgICAgICAgLi4uYy5yZXQoW10pXG4gICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfaXNPbmVcIiwgeiksXG4gICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAuLi5jLnJldChjLmNhbGwocHJlZml4ICsgXCJfZG91YmxlQWZmaW5lXCIsIGMuZ2V0TG9jYWwoXCJwMVwiKSwgYy5nZXRMb2NhbChcInByXCIpKSksXG4gICAgICAgICAgICAgICAgICAgIC4uLmMucmV0KFtdKVxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX3NxdWFyZVwiLCB4LCBBKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX3NxdWFyZVwiLCB5LCBCKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX3NxdWFyZVwiLCBCLCBDKSxcblxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfYWRkXCIsIHgsIEIsIEQpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfc3F1YXJlXCIsIEQsIEQpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfc3ViXCIsIEQsIEEsIEQpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfc3ViXCIsIEQsIEMsIEQpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfYWRkXCIsIEQsIEQsIEQpLFxuXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9hZGRcIiwgQSwgQSwgRSksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9hZGRcIiwgRSwgQSwgRSksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9zcXVhcmVcIiwgRSwgRiksXG5cbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX211bFwiLCB5LCB6LCBHKSxcblxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfYWRkXCIsIEQsIEQsIHgzKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX3N1YlwiLCBGLCB4MywgeDMpLFxuXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9hZGRcIiwgQywgQywgZWlnaHRDKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX2FkZFwiLCBlaWdodEMsIGVpZ2h0QywgZWlnaHRDKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX2FkZFwiLCBlaWdodEMsIGVpZ2h0QywgZWlnaHRDKSxcblxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfc3ViXCIsIEQsIHgzLCB5MyksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9tdWxcIiwgeTMsIEUsIHkzKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX3N1YlwiLCB5MywgZWlnaHRDLCB5MyksXG5cbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX2FkZFwiLCBHLCBHLCB6MyksXG4gICAgICAgICk7XG4gICAgfVxuXG5cbiAgICBmdW5jdGlvbiBidWlsZERvdWJsZUFmZmluZSgpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXggKyBcIl9kb3VibGVBZmZpbmVcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwMVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInByXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgeCA9IGMuZ2V0TG9jYWwoXCJwMVwiKTtcbiAgICAgICAgY29uc3QgeSA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwicDFcIiksIGMuaTMyX2NvbnN0KG44KSk7XG4gICAgICAgIGNvbnN0IHgzID0gYy5nZXRMb2NhbChcInByXCIpO1xuICAgICAgICBjb25zdCB5MyA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwicHJcIiksIGMuaTMyX2NvbnN0KG44KSk7XG4gICAgICAgIGNvbnN0IHozID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwclwiKSwgYy5pMzJfY29uc3QobjgqMikpO1xuXG4gICAgICAgIGNvbnN0IFhYID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44KSk7XG4gICAgICAgIGNvbnN0IFlZID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44KSk7XG4gICAgICAgIGNvbnN0IFlZWVkgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcbiAgICAgICAgY29uc3QgUyA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuICAgICAgICBjb25zdCBNID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44KSk7XG4gICAgICAgIGNvbnN0IGVpZ2h0WVlZWSA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX2lzWmVyb0FmZmluZVwiLCBjLmdldExvY2FsKFwicDFcIikpLFxuICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgLi4uYy5jYWxsKHByZWZpeCArIFwiX3RvSmFjb2JpYW5cIiwgYy5nZXRMb2NhbChcInAxXCIpLCBjLmdldExvY2FsKFwicHJcIikpLFxuICAgICAgICAgICAgICAgICAgICAuLi5jLnJldChbXSlcbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICApLFxuXG4gICAgICAgICAgICAvLyBYWCA9IFgxXjJcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX3NxdWFyZVwiLCB4LCBYWCksXG5cbiAgICAgICAgICAgIC8vIFlZID0gWTFeMlxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfc3F1YXJlXCIsIHksIFlZKSxcblxuICAgICAgICAgICAgLy8gWVlZWSA9IFlZXjJcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX3NxdWFyZVwiLCBZWSwgWVlZWSksXG5cbiAgICAgICAgICAgIC8vIFMgPSAyKigoWDErWVkpXjItWFgtWVlZWSlcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX2FkZFwiLCB4LCBZWSwgUyksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9zcXVhcmVcIiwgUywgUyksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9zdWJcIiwgUywgWFgsIFMpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfc3ViXCIsIFMsIFlZWVksIFMpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfYWRkXCIsIFMsIFMsIFMpLFxuXG4gICAgICAgICAgICAvLyBNID0gMypYWCthICAoSGVyYSBhPTApXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9hZGRcIiwgWFgsIFhYLCBNKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX2FkZFwiLCBNLCBYWCwgTSksXG5cbiAgICAgICAgICAgIC8vIFozID0gMipZMVxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfYWRkXCIsIHksIHksIHozKSxcblxuICAgICAgICAgICAgLy8gVCA9IE1eMi0yKlNcbiAgICAgICAgICAgIC8vIFgzID0gVFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfc3F1YXJlXCIsIE0sIHgzKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX3N1YlwiLCB4MywgUywgeDMpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfc3ViXCIsIHgzLCBTLCB4MyksXG5cbiAgICAgICAgICAgIC8vIFkzID0gTSooUy1UKS04KllZWVlcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX2FkZFwiLCBZWVlZLCBZWVlZLCBlaWdodFlZWVkpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfYWRkXCIsIGVpZ2h0WVlZWSwgZWlnaHRZWVlZLCBlaWdodFlZWVkpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfYWRkXCIsIGVpZ2h0WVlZWSwgZWlnaHRZWVlZLCBlaWdodFlZWVkpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfc3ViXCIsIFMsIHgzLCB5MyksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9tdWxcIiwgeTMsIE0sIHkzKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX3N1YlwiLCB5MywgZWlnaHRZWVlZLCB5MyksXG4gICAgICAgICk7XG4gICAgfVxuXG5cbiAgICBmdW5jdGlvbiBidWlsZEVxQWZmaW5lKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCArIFwiX2VxQWZmaW5lXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicDFcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwMlwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5zZXRSZXR1cm5UeXBlKFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiejFcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLnJldChjLmkzMl9hbmQoXG4gICAgICAgICAgICAgICAgYy5jYWxsKFxuICAgICAgICAgICAgICAgICAgICBwcmVmaXhGaWVsZCArIFwiX2VxXCIsXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwMVwiKSxcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInAyXCIpXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBjLmNhbGwoXG4gICAgICAgICAgICAgICAgICAgIHByZWZpeEZpZWxkICsgXCJfZXFcIixcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwMVwiKSwgYy5pMzJfY29uc3QobjgpKSxcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwMlwiKSwgYy5pMzJfY29uc3QobjgpKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICkpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYnVpbGRUb01vbnRnb21lcnkoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4ICsgXCJfdG9Nb250Z29tZXJ5XCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicDFcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwclwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGYuYWRkQ29kZShjLmNhbGwoXG4gICAgICAgICAgICBwcmVmaXhGaWVsZCArIFwiX3RvTW9udGdvbWVyeVwiLFxuICAgICAgICAgICAgYy5nZXRMb2NhbChcInAxXCIpLFxuICAgICAgICAgICAgYy5nZXRMb2NhbChcInByXCIpXG4gICAgICAgICkpO1xuICAgICAgICBmb3IgKGxldCBpPTE7IGk8MzsgaSsrKSB7XG4gICAgICAgICAgICBmLmFkZENvZGUoYy5jYWxsKFxuICAgICAgICAgICAgICAgIHByZWZpeEZpZWxkICsgXCJfdG9Nb250Z29tZXJ5XCIsXG4gICAgICAgICAgICAgICAgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwMVwiKSwgYy5pMzJfY29uc3QoaSpuOCkpLFxuICAgICAgICAgICAgICAgIGMuaTMyX2FkZChjLmdldExvY2FsKFwicHJcIiksIGMuaTMyX2NvbnN0KGkqbjgpKVxuICAgICAgICAgICAgKSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBidWlsZFRvTW9udGdvbWVyeUFmZmluZSgpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXggKyBcIl90b01vbnRnb21lcnlBZmZpbmVcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwMVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInByXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgZi5hZGRDb2RlKGMuY2FsbChcbiAgICAgICAgICAgIHByZWZpeEZpZWxkICsgXCJfdG9Nb250Z29tZXJ5XCIsXG4gICAgICAgICAgICBjLmdldExvY2FsKFwicDFcIiksXG4gICAgICAgICAgICBjLmdldExvY2FsKFwicHJcIilcbiAgICAgICAgKSk7XG4gICAgICAgIGZvciAobGV0IGk9MTsgaTwyOyBpKyspIHtcbiAgICAgICAgICAgIGYuYWRkQ29kZShjLmNhbGwoXG4gICAgICAgICAgICAgICAgcHJlZml4RmllbGQgKyBcIl90b01vbnRnb21lcnlcIixcbiAgICAgICAgICAgICAgICBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInAxXCIpLCBjLmkzMl9jb25zdChpKm44KSksXG4gICAgICAgICAgICAgICAgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwclwiKSwgYy5pMzJfY29uc3QoaSpuOCkpXG4gICAgICAgICAgICApKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGJ1aWxkRnJvbU1vbnRnb21lcnkoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4ICsgXCJfZnJvbU1vbnRnb21lcnlcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwMVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInByXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgZi5hZGRDb2RlKGMuY2FsbChcbiAgICAgICAgICAgIHByZWZpeEZpZWxkICsgXCJfZnJvbU1vbnRnb21lcnlcIixcbiAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwMVwiKSxcbiAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwclwiKVxuICAgICAgICApKTtcbiAgICAgICAgZm9yIChsZXQgaT0xOyBpPDM7IGkrKykge1xuICAgICAgICAgICAgZi5hZGRDb2RlKGMuY2FsbChcbiAgICAgICAgICAgICAgICBwcmVmaXhGaWVsZCArIFwiX2Zyb21Nb250Z29tZXJ5XCIsXG4gICAgICAgICAgICAgICAgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwMVwiKSwgYy5pMzJfY29uc3QoaSpuOCkpLFxuICAgICAgICAgICAgICAgIGMuaTMyX2FkZChjLmdldExvY2FsKFwicHJcIiksIGMuaTMyX2NvbnN0KGkqbjgpKVxuICAgICAgICAgICAgKSk7XG4gICAgICAgIH1cbiAgICB9XG5cblxuICAgIGZ1bmN0aW9uIGJ1aWxkRnJvbU1vbnRnb21lcnlBZmZpbmUoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4ICsgXCJfZnJvbU1vbnRnb21lcnlBZmZpbmVcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwMVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInByXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgZi5hZGRDb2RlKGMuY2FsbChcbiAgICAgICAgICAgIHByZWZpeEZpZWxkICsgXCJfZnJvbU1vbnRnb21lcnlcIixcbiAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwMVwiKSxcbiAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwclwiKVxuICAgICAgICApKTtcbiAgICAgICAgZm9yIChsZXQgaT0xOyBpPDI7IGkrKykge1xuICAgICAgICAgICAgZi5hZGRDb2RlKGMuY2FsbChcbiAgICAgICAgICAgICAgICBwcmVmaXhGaWVsZCArIFwiX2Zyb21Nb250Z29tZXJ5XCIsXG4gICAgICAgICAgICAgICAgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwMVwiKSwgYy5pMzJfY29uc3QoaSpuOCkpLFxuICAgICAgICAgICAgICAgIGMuaTMyX2FkZChjLmdldExvY2FsKFwicHJcIiksIGMuaTMyX2NvbnN0KGkqbjgpKVxuICAgICAgICAgICAgKSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBidWlsZEFkZCgpIHtcblxuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCArIFwiX2FkZFwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInAxXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicDJcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwclwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcInoxXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiejJcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCB4MSA9IGMuZ2V0TG9jYWwoXCJwMVwiKTtcbiAgICAgICAgY29uc3QgeTEgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInAxXCIpLCBjLmkzMl9jb25zdChuOCkpO1xuICAgICAgICBmLmFkZENvZGUoYy5zZXRMb2NhbChcInoxXCIsIGMuaTMyX2FkZChjLmdldExvY2FsKFwicDFcIiksIGMuaTMyX2NvbnN0KG44KjIpKSkpO1xuICAgICAgICBjb25zdCB6MSA9IGMuZ2V0TG9jYWwoXCJ6MVwiKTtcbiAgICAgICAgY29uc3QgeDIgPSBjLmdldExvY2FsKFwicDJcIik7XG4gICAgICAgIGNvbnN0IHkyID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwMlwiKSwgYy5pMzJfY29uc3QobjgpKTtcbiAgICAgICAgZi5hZGRDb2RlKGMuc2V0TG9jYWwoXCJ6MlwiLCBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInAyXCIpLCBjLmkzMl9jb25zdChuOCoyKSkpKTtcbiAgICAgICAgY29uc3QgejIgPSBjLmdldExvY2FsKFwiejJcIik7XG4gICAgICAgIGNvbnN0IHgzID0gYy5nZXRMb2NhbChcInByXCIpO1xuICAgICAgICBjb25zdCB5MyA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwicHJcIiksIGMuaTMyX2NvbnN0KG44KSk7XG4gICAgICAgIGNvbnN0IHozID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwclwiKSwgYy5pMzJfY29uc3QobjgqMikpO1xuXG4gICAgICAgIGNvbnN0IFoxWjEgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcbiAgICAgICAgY29uc3QgWjJaMiA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuICAgICAgICBjb25zdCBVMSA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuICAgICAgICBjb25zdCBVMiA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuICAgICAgICBjb25zdCBaMV9jdWJlZCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuICAgICAgICBjb25zdCBaMl9jdWJlZCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuICAgICAgICBjb25zdCBTMSA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuICAgICAgICBjb25zdCBTMiA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuICAgICAgICBjb25zdCBIID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44KSk7XG4gICAgICAgIGNvbnN0IFMyX21pbnVzX1MxID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44KSk7XG4gICAgICAgIGNvbnN0IEkgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcbiAgICAgICAgY29uc3QgSiA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuICAgICAgICBjb25zdCByID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44KSk7XG4gICAgICAgIGNvbnN0IHIyID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44KSk7XG4gICAgICAgIGNvbnN0IFYgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcbiAgICAgICAgY29uc3QgVjIgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcbiAgICAgICAgY29uc3QgUzFfSjIgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9pc1plcm9cIiwgYy5nZXRMb2NhbChcInAxXCIpKSxcbiAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgIC4uLmMuY2FsbChwcmVmaXggKyBcIl9jb3B5XCIsIGMuZ2V0TG9jYWwoXCJwMlwiKSwgYy5nZXRMb2NhbChcInByXCIpKSxcbiAgICAgICAgICAgICAgICAgICAgLi4uYy5yZXQoW10pXG4gICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX2lzWmVyb1wiLCBjLmdldExvY2FsKFwicDJcIikpLFxuICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgLi4uYy5jYWxsKHByZWZpeCArIFwiX2NvcHlcIiwgYy5nZXRMb2NhbChcInAxXCIpLCBjLmdldExvY2FsKFwicHJcIikpLFxuICAgICAgICAgICAgICAgICAgICAuLi5jLnJldChbXSlcbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9pc09uZVwiLCB6MSksXG4gICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAuLi5jLmNhbGwocHJlZml4ICsgXCJfYWRkTWl4ZWRcIiwgeDIsIHgxLCB4MyksXG4gICAgICAgICAgICAgICAgICAgIC4uLmMucmV0KFtdKVxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX2lzT25lXCIsIHoyKSxcbiAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgIC4uLmMuY2FsbChwcmVmaXggKyBcIl9hZGRNaXhlZFwiLCB4MSwgeDIsIHgzKSxcbiAgICAgICAgICAgICAgICAgICAgLi4uYy5yZXQoW10pXG4gICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX3NxdWFyZVwiLCB6MSwgWjFaMSksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9zcXVhcmVcIiwgejIsIFoyWjIpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfbXVsXCIsIHgxLCBaMloyLCBVMSksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9tdWxcIiwgeDIsIFoxWjEsIFUyKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX211bFwiLCB6MSwgWjFaMSwgWjFfY3ViZWQpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfbXVsXCIsIHoyLCBaMloyLCBaMl9jdWJlZCksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9tdWxcIiwgeTEsIFoyX2N1YmVkLCBTMSksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9tdWxcIiwgeTIsIFoxX2N1YmVkLCBTMiksXG5cbiAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfZXFcIiwgVTEsIFUyKSxcbiAgICAgICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9lcVwiLCBTMSwgUzIpLFxuICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5jLmNhbGwocHJlZml4ICsgXCJfZG91YmxlXCIsIGMuZ2V0TG9jYWwoXCJwMVwiKSwgYy5nZXRMb2NhbChcInByXCIpKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLmMucmV0KFtdKVxuICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfc3ViXCIsIFUyLCBVMSwgSCksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9zdWJcIiwgUzIsIFMxLCBTMl9taW51c19TMSksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9hZGRcIiwgSCwgSCwgSSksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9zcXVhcmVcIiwgSSwgSSksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9tdWxcIiwgSCwgSSwgSiksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9hZGRcIiwgUzJfbWludXNfUzEsIFMyX21pbnVzX1MxLCByKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX211bFwiLCBVMSwgSSwgViksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9zcXVhcmVcIiwgciwgcjIpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfYWRkXCIsIFYsIFYsIFYyKSxcblxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfc3ViXCIsIHIyLCBKLCB4MyksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9zdWJcIiwgeDMsIFYyLCB4MyksXG5cbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX211bFwiLCBTMSwgSiwgUzFfSjIpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfYWRkXCIsIFMxX0oyLCBTMV9KMiwgUzFfSjIpLFxuXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9zdWJcIiwgViwgeDMsIHkzKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX211bFwiLCB5MywgciwgeTMpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfc3ViXCIsIHkzLCBTMV9KMiwgeTMpLFxuXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9hZGRcIiwgejEsIHoyLCB6MyksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9zcXVhcmVcIiwgejMsIHozKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX3N1YlwiLCB6MywgWjFaMSwgejMpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfc3ViXCIsIHozLCBaMloyLCB6MyksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9tdWxcIiwgejMsIEgsIHozKSxcbiAgICAgICAgKTtcblxuICAgIH1cblxuXG4gICAgZnVuY3Rpb24gYnVpbGRBZGRNaXhlZCgpIHtcblxuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCArIFwiX2FkZE1peGVkXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicDFcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwMlwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInByXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiejFcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCB4MSA9IGMuZ2V0TG9jYWwoXCJwMVwiKTtcbiAgICAgICAgY29uc3QgeTEgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInAxXCIpLCBjLmkzMl9jb25zdChuOCkpO1xuICAgICAgICBmLmFkZENvZGUoYy5zZXRMb2NhbChcInoxXCIsIGMuaTMyX2FkZChjLmdldExvY2FsKFwicDFcIiksIGMuaTMyX2NvbnN0KG44KjIpKSkpO1xuICAgICAgICBjb25zdCB6MSA9IGMuZ2V0TG9jYWwoXCJ6MVwiKTtcbiAgICAgICAgY29uc3QgeDIgPSBjLmdldExvY2FsKFwicDJcIik7XG4gICAgICAgIGNvbnN0IHkyID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwMlwiKSwgYy5pMzJfY29uc3QobjgpKTtcbiAgICAgICAgY29uc3QgeDMgPSBjLmdldExvY2FsKFwicHJcIik7XG4gICAgICAgIGNvbnN0IHkzID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwclwiKSwgYy5pMzJfY29uc3QobjgpKTtcbiAgICAgICAgY29uc3QgejMgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInByXCIpLCBjLmkzMl9jb25zdChuOCoyKSk7XG5cbiAgICAgICAgY29uc3QgWjFaMSA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuICAgICAgICBjb25zdCBVMiA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuICAgICAgICBjb25zdCBaMV9jdWJlZCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuICAgICAgICBjb25zdCBTMiA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuICAgICAgICBjb25zdCBIID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44KSk7XG4gICAgICAgIGNvbnN0IEhIID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44KSk7XG4gICAgICAgIGNvbnN0IFMyX21pbnVzX3kxID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44KSk7XG4gICAgICAgIGNvbnN0IEkgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcbiAgICAgICAgY29uc3QgSiA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuICAgICAgICBjb25zdCByID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44KSk7XG4gICAgICAgIGNvbnN0IHIyID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44KSk7XG4gICAgICAgIGNvbnN0IFYgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcbiAgICAgICAgY29uc3QgVjIgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcbiAgICAgICAgY29uc3QgeTFfSjIgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9pc1plcm9cIiwgYy5nZXRMb2NhbChcInAxXCIpKSxcbiAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgIC4uLmMuY2FsbChwcmVmaXggKyBcIl9jb3B5QWZmaW5lXCIsIGMuZ2V0TG9jYWwoXCJwMlwiKSwgYy5nZXRMb2NhbChcInByXCIpKSxcbiAgICAgICAgICAgICAgICAgICAgLi4uYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfb25lXCIsIGMuaTMyX2FkZChjLmdldExvY2FsKFwicHJcIikgLCBjLmkzMl9jb25zdChuOCoyKSkpLFxuICAgICAgICAgICAgICAgICAgICAuLi5jLnJldChbXSlcbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfaXNaZXJvQWZmaW5lXCIsIGMuZ2V0TG9jYWwoXCJwMlwiKSksXG4gICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAuLi5jLmNhbGwocHJlZml4ICsgXCJfY29weVwiLCBjLmdldExvY2FsKFwicDFcIiksIGMuZ2V0TG9jYWwoXCJwclwiKSksXG4gICAgICAgICAgICAgICAgICAgIC4uLmMucmV0KFtdKVxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX2lzT25lXCIsIHoxKSxcbiAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgIC4uLmMuY2FsbChwcmVmaXggKyBcIl9hZGRBZmZpbmVcIiwgeDEsIHgyLCB4MyksXG4gICAgICAgICAgICAgICAgICAgIC4uLmMucmV0KFtdKVxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9zcXVhcmVcIiwgejEsIFoxWjEpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfbXVsXCIsIHgyLCBaMVoxLCBVMiksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9tdWxcIiwgejEsIFoxWjEsIFoxX2N1YmVkKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX211bFwiLCB5MiwgWjFfY3ViZWQsIFMyKSxcblxuICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9lcVwiLCB4MSwgVTIpLFxuICAgICAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX2VxXCIsIHkxLCBTMiksXG4gICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLmMuY2FsbChwcmVmaXggKyBcIl9kb3VibGVBZmZpbmVcIiwgYy5nZXRMb2NhbChcInAyXCIpLCBjLmdldExvY2FsKFwicHJcIikpLFxuICAgICAgICAgICAgICAgICAgICAgICAgLi4uYy5yZXQoW10pXG4gICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApLFxuXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9zdWJcIiwgVTIsIHgxLCBIKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX3N1YlwiLCBTMiwgeTEsIFMyX21pbnVzX3kxKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX3NxdWFyZVwiLCBILCBISCksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9hZGRcIiwgSEggLCBISCwgSSksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9hZGRcIiwgSSAsIEksIEkpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfbXVsXCIsIEgsIEksIEopLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfYWRkXCIsIFMyX21pbnVzX3kxLCBTMl9taW51c195MSwgciksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9tdWxcIiwgeDEsIEksIFYpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfc3F1YXJlXCIsIHIsIHIyKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX2FkZFwiLCBWLCBWLCBWMiksXG5cbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX3N1YlwiLCByMiwgSiwgeDMpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfc3ViXCIsIHgzLCBWMiwgeDMpLFxuXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9tdWxcIiwgeTEsIEosIHkxX0oyKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX2FkZFwiLCB5MV9KMiwgeTFfSjIsIHkxX0oyKSxcblxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfc3ViXCIsIFYsIHgzLCB5MyksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9tdWxcIiwgeTMsIHIsIHkzKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX3N1YlwiLCB5MywgeTFfSjIsIHkzKSxcblxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfYWRkXCIsIHoxLCBILCB6MyksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9zcXVhcmVcIiwgejMsIHozKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX3N1YlwiLCB6MywgWjFaMSwgejMpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfc3ViXCIsIHozLCBISCwgejMpLFxuICAgICAgICApO1xuICAgIH1cblxuXG4gICAgZnVuY3Rpb24gYnVpbGRBZGRBZmZpbmUoKSB7XG5cbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXggKyBcIl9hZGRBZmZpbmVcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwMVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInAyXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicHJcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJ6MVwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IHgxID0gYy5nZXRMb2NhbChcInAxXCIpO1xuICAgICAgICBjb25zdCB5MSA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwicDFcIiksIGMuaTMyX2NvbnN0KG44KSk7XG4gICAgICAgIGYuYWRkQ29kZShjLnNldExvY2FsKFwiejFcIiwgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwMVwiKSwgYy5pMzJfY29uc3QobjgqMikpKSk7XG4gICAgICAgIGNvbnN0IHgyID0gYy5nZXRMb2NhbChcInAyXCIpO1xuICAgICAgICBjb25zdCB5MiA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwicDJcIiksIGMuaTMyX2NvbnN0KG44KSk7XG4gICAgICAgIGNvbnN0IHgzID0gYy5nZXRMb2NhbChcInByXCIpO1xuICAgICAgICBjb25zdCB5MyA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwicHJcIiksIGMuaTMyX2NvbnN0KG44KSk7XG4gICAgICAgIGNvbnN0IHozID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwclwiKSwgYy5pMzJfY29uc3QobjgqMikpO1xuXG4gICAgICAgIGNvbnN0IEggPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcbiAgICAgICAgY29uc3QgSEggPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcbiAgICAgICAgY29uc3QgeTJfbWludXNfeTEgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcbiAgICAgICAgY29uc3QgSSA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuICAgICAgICBjb25zdCBKID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44KSk7XG4gICAgICAgIGNvbnN0IHIgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcbiAgICAgICAgY29uc3QgcjIgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcbiAgICAgICAgY29uc3QgViA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuICAgICAgICBjb25zdCBWMiA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuICAgICAgICBjb25zdCB5MV9KMiA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX2lzWmVyb0FmZmluZVwiLCBjLmdldExvY2FsKFwicDFcIikpLFxuICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgLi4uYy5jYWxsKHByZWZpeCArIFwiX2NvcHlBZmZpbmVcIiwgYy5nZXRMb2NhbChcInAyXCIpLCBjLmdldExvY2FsKFwicHJcIikpLFxuICAgICAgICAgICAgICAgICAgICAuLi5jLmNhbGwocHJlZml4RmllbGQgKyBcIl9vbmVcIiwgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwclwiKSAsIGMuaTMyX2NvbnN0KG44KjIpKSksXG4gICAgICAgICAgICAgICAgICAgIC4uLmMucmV0KFtdKVxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9pc1plcm9BZmZpbmVcIiwgYy5nZXRMb2NhbChcInAyXCIpKSxcbiAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgIC4uLmMuY2FsbChwcmVmaXggKyBcIl9jb3B5QWZmaW5lXCIsIGMuZ2V0TG9jYWwoXCJwMVwiKSwgYy5nZXRMb2NhbChcInByXCIpKSxcbiAgICAgICAgICAgICAgICAgICAgLi4uYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfb25lXCIsIGMuaTMyX2FkZChjLmdldExvY2FsKFwicHJcIikgLCBjLmkzMl9jb25zdChuOCoyKSkpLFxuICAgICAgICAgICAgICAgICAgICAuLi5jLnJldChbXSlcbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICApLFxuXG5cbiAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfZXFcIiwgeDEsIHgyKSxcbiAgICAgICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9lcVwiLCB5MSwgeTIpLFxuICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5jLmNhbGwocHJlZml4ICsgXCJfZG91YmxlQWZmaW5lXCIsIGMuZ2V0TG9jYWwoXCJwMlwiKSwgYy5nZXRMb2NhbChcInByXCIpKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLmMucmV0KFtdKVxuICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfc3ViXCIsIHgyLCB4MSwgSCksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9zdWJcIiwgeTIsIHkxLCB5Ml9taW51c195MSksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9zcXVhcmVcIiwgSCwgSEgpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfYWRkXCIsIEhIICwgSEgsIEkpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfYWRkXCIsIEkgLCBJLCBJKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX211bFwiLCBILCBJLCBKKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX2FkZFwiLCB5Ml9taW51c195MSwgeTJfbWludXNfeTEsIHIpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfbXVsXCIsIHgxLCBJLCBWKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX3NxdWFyZVwiLCByLCByMiksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9hZGRcIiwgViwgViwgVjIpLFxuXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9zdWJcIiwgcjIsIEosIHgzKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX3N1YlwiLCB4MywgVjIsIHgzKSxcblxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfbXVsXCIsIHkxLCBKLCB5MV9KMiksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9hZGRcIiwgeTFfSjIsIHkxX0oyLCB5MV9KMiksXG5cbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX3N1YlwiLCBWLCB4MywgeTMpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfbXVsXCIsIHkzLCByLCB5MyksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9zdWJcIiwgeTMsIHkxX0oyLCB5MyksXG5cbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX2FkZFwiLCBILCBILCB6MyksXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYnVpbGROZWcoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4ICsgXCJfbmVnXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicDFcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwclwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IHggPSBjLmdldExvY2FsKFwicDFcIik7XG4gICAgICAgIGNvbnN0IHkgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInAxXCIpLCBjLmkzMl9jb25zdChuOCkpO1xuICAgICAgICBjb25zdCB6ID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwMVwiKSwgYy5pMzJfY29uc3QobjgqMikpO1xuICAgICAgICBjb25zdCB4MyA9IGMuZ2V0TG9jYWwoXCJwclwiKTtcbiAgICAgICAgY29uc3QgeTMgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInByXCIpLCBjLmkzMl9jb25zdChuOCkpO1xuICAgICAgICBjb25zdCB6MyA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwicHJcIiksIGMuaTMyX2NvbnN0KG44KjIpKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9jb3B5XCIsIHgsIHgzKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX25lZ1wiLCB5LCB5MyksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9jb3B5XCIsIHosIHozKVxuICAgICAgICApO1xuICAgIH1cblxuXG4gICAgZnVuY3Rpb24gYnVpbGROZWdBZmZpbmUoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4ICsgXCJfbmVnQWZmaW5lXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicDFcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwclwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IHggPSBjLmdldExvY2FsKFwicDFcIik7XG4gICAgICAgIGNvbnN0IHkgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInAxXCIpLCBjLmkzMl9jb25zdChuOCkpO1xuICAgICAgICBjb25zdCB4MyA9IGMuZ2V0TG9jYWwoXCJwclwiKTtcbiAgICAgICAgY29uc3QgeTMgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInByXCIpLCBjLmkzMl9jb25zdChuOCkpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX2NvcHlcIiwgeCwgeDMpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfbmVnXCIsIHksIHkzKSxcbiAgICAgICAgKTtcbiAgICB9XG5cblxuICAgIGZ1bmN0aW9uIGJ1aWxkU3ViKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCArIFwiX3N1YlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInAxXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicDJcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwclwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IEFVWCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCozKSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX25lZ1wiLCBjLmdldExvY2FsKFwicDJcIiksIEFVWCksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfYWRkXCIsIGMuZ2V0TG9jYWwoXCJwMVwiKSwgQVVYLCBjLmdldExvY2FsKFwicHJcIikpLFxuICAgICAgICApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGJ1aWxkU3ViTWl4ZWQoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4ICsgXCJfc3ViTWl4ZWRcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwMVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInAyXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicHJcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCBBVVggPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgqMykpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9uZWdBZmZpbmVcIiwgYy5nZXRMb2NhbChcInAyXCIpLCBBVVgpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX2FkZE1peGVkXCIsIGMuZ2V0TG9jYWwoXCJwMVwiKSwgQVVYLCBjLmdldExvY2FsKFwicHJcIikpLFxuICAgICAgICApO1xuICAgIH1cblxuXG4gICAgZnVuY3Rpb24gYnVpbGRTdWJBZmZpbmUoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4ICsgXCJfc3ViQWZmaW5lXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicDFcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwMlwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInByXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgQVVYID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44KjMpKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfbmVnQWZmaW5lXCIsIGMuZ2V0TG9jYWwoXCJwMlwiKSwgQVVYKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9hZGRBZmZpbmVcIiwgYy5nZXRMb2NhbChcInAxXCIpLCBBVVgsIGMuZ2V0TG9jYWwoXCJwclwiKSksXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLy8gVGhpcyBzZXRzIFogdG8gT25lXG4gICAgZnVuY3Rpb24gYnVpbGROb3JtYWxpemUoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4ICsgXCJfbm9ybWFsaXplXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicDFcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwclwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IHggPSBjLmdldExvY2FsKFwicDFcIik7XG4gICAgICAgIGNvbnN0IHkgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInAxXCIpLCBjLmkzMl9jb25zdChuOCkpO1xuICAgICAgICBjb25zdCB6ID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwMVwiKSwgYy5pMzJfY29uc3QobjgqMikpO1xuICAgICAgICBjb25zdCB4MyA9IGMuZ2V0TG9jYWwoXCJwclwiKTtcbiAgICAgICAgY29uc3QgeTMgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInByXCIpLCBjLmkzMl9jb25zdChuOCkpO1xuICAgICAgICBjb25zdCB6MyA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwicHJcIiksIGMuaTMyX2NvbnN0KG44KjIpKTtcblxuXG4gICAgICAgIGNvbnN0IFpfaW52ID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44KSk7XG4gICAgICAgIGNvbnN0IFoyX2ludiA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuICAgICAgICBjb25zdCBaM19pbnYgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9pc1plcm9cIiwgYy5nZXRMb2NhbChcInAxXCIpKSxcbiAgICAgICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfemVyb1wiLCBjLmdldExvY2FsKFwicHJcIikpLFxuICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgLi4uYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfaW52ZXJzZVwiLCB6LCBaX2ludiksXG4gICAgICAgICAgICAgICAgICAgIC4uLmMuY2FsbChwcmVmaXhGaWVsZCArIFwiX3NxdWFyZVwiLCBaX2ludiwgWjJfaW52KSxcbiAgICAgICAgICAgICAgICAgICAgLi4uYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfbXVsXCIsIFpfaW52LCBaMl9pbnYsIFozX2ludiksXG4gICAgICAgICAgICAgICAgICAgIC4uLmMuY2FsbChwcmVmaXhGaWVsZCArIFwiX211bFwiLCB4LCBaMl9pbnYsIHgzKSxcbiAgICAgICAgICAgICAgICAgICAgLi4uYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfbXVsXCIsIHksIFozX2ludiwgeTMpLFxuICAgICAgICAgICAgICAgICAgICAuLi5jLmNhbGwocHJlZml4RmllbGQgKyBcIl9vbmVcIiwgejMpLFxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICB9XG5cblxuICAgIC8vIERvZXMgbm90IHNldCBaLlxuICAgIGZ1bmN0aW9uIGJ1aWxkVG9BZmZpbmUoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4ICsgXCJfdG9BZmZpbmVcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwMVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInByXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgeCA9IGMuZ2V0TG9jYWwoXCJwMVwiKTtcbiAgICAgICAgY29uc3QgeSA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwicDFcIiksIGMuaTMyX2NvbnN0KG44KSk7XG4gICAgICAgIGNvbnN0IHogPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInAxXCIpLCBjLmkzMl9jb25zdChuOCoyKSk7XG4gICAgICAgIGNvbnN0IHgzID0gYy5nZXRMb2NhbChcInByXCIpO1xuICAgICAgICBjb25zdCB5MyA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwicHJcIiksIGMuaTMyX2NvbnN0KG44KSk7XG5cblxuICAgICAgICBjb25zdCBaX2ludiA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuICAgICAgICBjb25zdCBaMl9pbnYgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcbiAgICAgICAgY29uc3QgWjNfaW52ID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44KSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfaXNaZXJvXCIsIGMuZ2V0TG9jYWwoXCJwMVwiKSksXG4gICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAuLi5jLmNhbGwocHJlZml4RmllbGQgKyBcIl96ZXJvXCIsIHgzKSxcbiAgICAgICAgICAgICAgICAgICAgLi4uYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfemVyb1wiLCB5MyksXG4gICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgIC4uLmMuY2FsbChwcmVmaXhGaWVsZCArIFwiX2ludmVyc2VcIiwgeiwgWl9pbnYpLFxuICAgICAgICAgICAgICAgICAgICAuLi5jLmNhbGwocHJlZml4RmllbGQgKyBcIl9zcXVhcmVcIiwgWl9pbnYsIFoyX2ludiksXG4gICAgICAgICAgICAgICAgICAgIC4uLmMuY2FsbChwcmVmaXhGaWVsZCArIFwiX211bFwiLCBaX2ludiwgWjJfaW52LCBaM19pbnYpLFxuICAgICAgICAgICAgICAgICAgICAuLi5jLmNhbGwocHJlZml4RmllbGQgKyBcIl9tdWxcIiwgeCwgWjJfaW52LCB4MyksXG4gICAgICAgICAgICAgICAgICAgIC4uLmMuY2FsbChwcmVmaXhGaWVsZCArIFwiX211bFwiLCB5LCBaM19pbnYsIHkzKSxcbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgfVxuXG5cbiAgICBmdW5jdGlvbiBidWlsZFRvSmFjb2JpYW4oKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4ICsgXCJfdG9KYWNvYmlhblwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInAxXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicHJcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCB4ID0gYy5nZXRMb2NhbChcInAxXCIpO1xuICAgICAgICBjb25zdCB5ID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwMVwiKSwgYy5pMzJfY29uc3QobjgpKTtcbiAgICAgICAgY29uc3QgeDMgPSBjLmdldExvY2FsKFwicHJcIik7XG4gICAgICAgIGNvbnN0IHkzID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwclwiKSwgYy5pMzJfY29uc3QobjgpKTtcbiAgICAgICAgY29uc3QgejMgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInByXCIpLCBjLmkzMl9jb25zdChuOCoyKSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfaXNaZXJvQWZmaW5lXCIsIGMuZ2V0TG9jYWwoXCJwMVwiKSksXG4gICAgICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX3plcm9cIiwgYy5nZXRMb2NhbChcInByXCIpKSxcbiAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgIC4uLmMuY2FsbChwcmVmaXhGaWVsZCArIFwiX29uZVwiLCB6MyksXG4gICAgICAgICAgICAgICAgICAgIC4uLmMuY2FsbChwcmVmaXhGaWVsZCArIFwiX2NvcHlcIiwgeSwgeTMpLFxuICAgICAgICAgICAgICAgICAgICAuLi5jLmNhbGwocHJlZml4RmllbGQgKyBcIl9jb3B5XCIsIHgsIHgzKVxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBidWlsZEJhdGNoVG9BZmZpbmUoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4ICsgXCJfYmF0Y2hUb0FmZmluZVwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInBJblwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcIm5cIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwT3V0XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwicEF1eFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcIml0SW5cIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJpdEF1eFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcIml0T3V0XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiaVwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IHRtcCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJwQXV4XCIsIGMuaTMyX2xvYWQoIGMuaTMyX2NvbnN0KDApICkpLFxuICAgICAgICAgICAgYy5pMzJfc3RvcmUoXG4gICAgICAgICAgICAgICAgYy5pMzJfY29uc3QoMCksXG4gICAgICAgICAgICAgICAgYy5pMzJfYWRkKFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicEF1eFwiKSxcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfbXVsKGMuZ2V0TG9jYWwoXCJuXCIpLCBjLmkzMl9jb25zdChuOCkpXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgYy5jYWxsKFxuICAgICAgICAgICAgICAgIHByZWZpeEZpZWxkICsgXCJfYmF0Y2hJbnZlcnNlXCIsXG4gICAgICAgICAgICAgICAgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwSW5cIiksIGMuaTMyX2NvbnN0KG44KjIpKSxcbiAgICAgICAgICAgICAgICBjLmkzMl9jb25zdChuOCozKSxcbiAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiblwiKSxcbiAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicEF1eFwiKSxcbiAgICAgICAgICAgICAgICBjLmkzMl9jb25zdChuOClcbiAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpdEluXCIsIGMuZ2V0TG9jYWwoXCJwSW5cIikpLFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcIml0QXV4XCIsIGMuZ2V0TG9jYWwoXCJwQXV4XCIpKSxcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpdE91dFwiLCBjLmdldExvY2FsKFwicE91dFwiKSksXG4gICAgICAgICAgICBjLnNldExvY2FsKFwiaVwiLCBjLmkzMl9jb25zdCgwKSksXG4gICAgICAgICAgICBjLmJsb2NrKGMubG9vcChcbiAgICAgICAgICAgICAgICBjLmJyX2lmKDEsIGMuaTMyX2VxICggYy5nZXRMb2NhbChcImlcIiksIGMuZ2V0TG9jYWwoXCJuXCIpICkpLFxuXG4gICAgICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfaXNaZXJvXCIsIGMuZ2V0TG9jYWwoXCJpdEF1eFwiKSksXG4gICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLmMuY2FsbChwcmVmaXhGaWVsZCArIFwiX3plcm9cIiwgYy5nZXRMb2NhbChcIml0T3V0XCIpKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLmMuY2FsbChwcmVmaXhGaWVsZCArIFwiX3plcm9cIiwgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJpdE91dFwiKSwgYy5pMzJfY29uc3QobjgpKSlcbiAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgLi4uYy5jYWxsKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZWZpeEZpZWxkK1wiX211bFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpdEF1eFwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9hZGQoYy5nZXRMb2NhbChcIml0SW5cIiksIGMuaTMyX2NvbnN0KG44KSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdG1wLFxuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLmMuY2FsbChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVmaXhGaWVsZCtcIl9zcXVhcmVcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaXRBdXhcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcIml0QXV4XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgLi4uYy5jYWxsKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZWZpeEZpZWxkK1wiX211bFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpdEF1eFwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaXRJblwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaXRPdXRcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgLi4uYy5jYWxsKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZWZpeEZpZWxkK1wiX211bFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpdEF1eFwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bXAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJpdE91dFwiKSwgYy5pMzJfY29uc3QobjgpKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICApLFxuXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcIml0SW5cIiwgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJpdEluXCIpLCBjLmkzMl9jb25zdChuOCozKSkpLFxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpdE91dFwiLCBjLmkzMl9hZGQoYy5nZXRMb2NhbChcIml0T3V0XCIpLCBjLmkzMl9jb25zdChuOCoyKSkpLFxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpdEF1eFwiLCBjLmkzMl9hZGQoYy5nZXRMb2NhbChcIml0QXV4XCIpLCBjLmkzMl9jb25zdChuOCkpKSxcbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFwiaVwiLCBjLmkzMl9hZGQoYy5nZXRMb2NhbChcImlcIiksIGMuaTMyX2NvbnN0KDEpKSksXG4gICAgICAgICAgICAgICAgYy5icigwKVxuICAgICAgICAgICAgKSksXG4gICAgICAgICAgICBjLmkzMl9zdG9yZShcbiAgICAgICAgICAgICAgICBjLmkzMl9jb25zdCgwKSxcbiAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicEF1eFwiKVxuICAgICAgICAgICAgKVxuICAgICAgICApO1xuICAgIH1cblxuXG4gICAgLy8gVGhpcyBmdW5jdGlvbiBpcyBwcml2YXRlIGFuZCBkb2VzIG5vdCBhbGxvdyB0byBPVkVSTEFQIGJ1ZmZlcnMuXG4gICAgZnVuY3Rpb24gYnVpbGRSZXZlcnNlQnl0ZXMoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4ICsgXCJfX3JldmVyc2VCeXRlc1wiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInBJblwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcIm5cIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwT3V0XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiaXRPdXRcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJpdEluXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcbiAgICAgICAgICAgICAgICBcIml0T3V0XCIsXG4gICAgICAgICAgICAgICAgYy5pMzJfc3ViKFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9hZGQoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicE91dFwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJuXCIpXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KDEpXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXG4gICAgICAgICAgICAgICAgXCJpdEluXCIsXG4gICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInBJblwiKVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGMuYmxvY2soYy5sb29wKFxuICAgICAgICAgICAgICAgIGMuYnJfaWYoMSwgYy5pMzJfbHRfcyggYy5nZXRMb2NhbChcIml0T3V0XCIpLCBjLmdldExvY2FsKFwicE91dFwiKSApKSxcbiAgICAgICAgICAgICAgICBjLmkzMl9zdG9yZTgoXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpdE91dFwiKSxcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfbG9hZDhfdShjLmdldExvY2FsKFwiaXRJblwiKSksXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFwiaXRPdXRcIiwgYy5pMzJfc3ViKGMuZ2V0TG9jYWwoXCJpdE91dFwiKSwgYy5pMzJfY29uc3QoMSkpKSxcbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFwiaXRJblwiLCBjLmkzMl9hZGQoYy5nZXRMb2NhbChcIml0SW5cIiksIGMuaTMyX2NvbnN0KDEpKSksXG4gICAgICAgICAgICAgICAgYy5icigwKVxuICAgICAgICAgICAgKSksXG4gICAgICAgICk7XG5cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBidWlsZExFTXRvQygpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXggKyBcIl9MRU10b0NcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwSW5cIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwT3V0XCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgdG1wID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44KSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfaXNaZXJvQWZmaW5lXCIsIGMuZ2V0TG9jYWwoXCJwSW5cIikpLFxuICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgLi4uYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfemVyb1wiLCBjLmdldExvY2FsKFwicE91dFwiKSksXG4gICAgICAgICAgICAgICAgICAgIC4uLmMuaTMyX3N0b3JlOChcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwT3V0XCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QoMHg0MClcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgLi4uYy5yZXQoW10pXG4gICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX2Zyb21Nb250Z29tZXJ5XCIsIGMuZ2V0TG9jYWwoXCJwSW5cIiksIHRtcCksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfX3JldmVyc2VCeXRlc1wiLCB0bXAsIGMuaTMyX2NvbnN0KG44KSwgYy5nZXRMb2NhbChcInBPdXRcIikpLFxuICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICBjLmkzMl9lcShcbiAgICAgICAgICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfc2lnblwiLCBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInBJblwiKSwgYy5pMzJfY29uc3QobjgpKSksXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KC0xKVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgYy5pMzJfc3RvcmU4KFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicE91dFwiKSxcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfb3IoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9sb2FkOF91KGMuZ2V0TG9jYWwoXCJwT3V0XCIpKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KDB4ODApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApLFxuICAgICAgICApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGJ1aWxkTEVNdG9VKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCArIFwiX0xFTXRvVVwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInBJblwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInBPdXRcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCBwVG1wID0gbW9kdWxlLmFsbG9jKG44KjIpO1xuICAgICAgICBjb25zdCB0bXAgPSBjLmkzMl9jb25zdChwVG1wKTtcbiAgICAgICAgY29uc3QgdG1wWCA9IGMuaTMyX2NvbnN0KHBUbXApO1xuICAgICAgICBjb25zdCB0bXBZID0gYy5pMzJfY29uc3QocFRtcCArIG44KTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9pc1plcm9BZmZpbmVcIiwgYy5nZXRMb2NhbChcInBJblwiKSksXG4gICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAuLi5jLmNhbGwocHJlZml4ICsgXCJfemVyb0FmZmluZVwiLCBjLmdldExvY2FsKFwicE91dFwiKSksXG4gICAgICAgICAgICAgICAgICAgIC4uLmMucmV0KFtdKVxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9mcm9tTW9udGdvbWVyeUFmZmluZVwiLCBjLmdldExvY2FsKFwicEluXCIpLCB0bXApLFxuXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfX3JldmVyc2VCeXRlc1wiLCB0bXBYLCBjLmkzMl9jb25zdChuOCksIGMuZ2V0TG9jYWwoXCJwT3V0XCIpKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9fcmV2ZXJzZUJ5dGVzXCIsIHRtcFksIGMuaTMyX2NvbnN0KG44KSwgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwT3V0XCIpLCBjLmkzMl9jb25zdChuOCkpKSxcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBidWlsZFV0b0xFTSgpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXggKyBcIl9VdG9MRU1cIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwSW5cIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwT3V0XCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgcFRtcCA9IG1vZHVsZS5hbGxvYyhuOCoyKTtcbiAgICAgICAgY29uc3QgdG1wID0gYy5pMzJfY29uc3QocFRtcCk7XG4gICAgICAgIGNvbnN0IHRtcFggPSBjLmkzMl9jb25zdChwVG1wKTtcbiAgICAgICAgY29uc3QgdG1wWSA9IGMuaTMyX2NvbnN0KHBUbXAgKyBuOCk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICBjLmkzMl9hbmQoYy5pMzJfbG9hZDhfdShjLmdldExvY2FsKFwicEluXCIpKSwgYy5pMzJfY29uc3QoMHg0MCkpLFxuICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgLi4uYy5jYWxsKHByZWZpeCArIFwiX3plcm9BZmZpbmVcIiwgYy5nZXRMb2NhbChcInBPdXRcIikpLFxuICAgICAgICAgICAgICAgICAgICAuLi5jLnJldChbXSlcbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX19yZXZlcnNlQnl0ZXNcIiwgYy5nZXRMb2NhbChcInBJblwiKSwgYy5pMzJfY29uc3QobjgpLCB0bXBYKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9fcmV2ZXJzZUJ5dGVzXCIsIGMuaTMyX2FkZChjLmdldExvY2FsKFwicEluXCIpLCBjLmkzMl9jb25zdChuOCkpLCBjLmkzMl9jb25zdChuOCksIHRtcFkpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX3RvTW9udGdvbWVyeUFmZmluZVwiLCB0bXAsICBjLmdldExvY2FsKFwicE91dFwiKSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBidWlsZEN0b0xFTSgpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXggKyBcIl9DdG9MRU1cIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwSW5cIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwT3V0XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiZmlyc3RCeXRlXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiZ3JlYXRlc3RcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCBwVG1wID0gbW9kdWxlLmFsbG9jKG44KjIpO1xuICAgICAgICBjb25zdCB0bXBYID0gYy5pMzJfY29uc3QocFRtcCk7XG4gICAgICAgIGNvbnN0IHRtcFkgPSBjLmkzMl9jb25zdChwVG1wICsgbjgpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJmaXJzdEJ5dGVcIiwgYy5pMzJfbG9hZDhfdShjLmdldExvY2FsKFwicEluXCIpKSksXG4gICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgIGMuaTMyX2FuZChcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImZpcnN0Qnl0ZVwiKSxcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QoMHg0MClcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgLi4uYy5jYWxsKHByZWZpeCArIFwiX3plcm9BZmZpbmVcIiwgYy5nZXRMb2NhbChcInBPdXRcIikpLFxuICAgICAgICAgICAgICAgICAgICAuLi5jLnJldChbXSlcbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcbiAgICAgICAgICAgICAgICBcImdyZWF0ZXN0XCIsXG4gICAgICAgICAgICAgICAgYy5pMzJfYW5kKFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiZmlyc3RCeXRlXCIpLFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdCgweDgwKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX2NvcHlcIiwgYy5nZXRMb2NhbChcInBJblwiKSwgdG1wWSksXG4gICAgICAgICAgICBjLmkzMl9zdG9yZTgodG1wWSwgYy5pMzJfYW5kKGMuZ2V0TG9jYWwoXCJmaXJzdEJ5dGVcIiksIGMuaTMyX2NvbnN0KDB4M0YpKSksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfX3JldmVyc2VCeXRlc1wiLCB0bXBZLCBjLmkzMl9jb25zdChuOCksIHRtcFgpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfdG9Nb250Z29tZXJ5XCIsIHRtcFgsIGMuZ2V0TG9jYWwoXCJwT3V0XCIpKSxcblxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfc3F1YXJlXCIsIGMuZ2V0TG9jYWwoXCJwT3V0XCIpLCB0bXBZKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX211bFwiLCBjLmdldExvY2FsKFwicE91dFwiKSwgdG1wWSwgIHRtcFkpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfYWRkXCIsIHRtcFksIGMuaTMyX2NvbnN0KHBCKSwgIHRtcFkpLFxuXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9zcXJ0XCIsIHRtcFksIHRtcFkpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfbmVnXCIsIHRtcFksIHRtcFgpLFxuXG4gICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgIGMuaTMyX2VxKFxuICAgICAgICAgICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9zaWduXCIsIHRtcFkpLFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdCgtMSlcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJncmVhdGVzdFwiKSxcbiAgICAgICAgICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfY29weVwiLCB0bXBZLCBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInBPdXRcIiksIGMuaTMyX2NvbnN0KG44KSkpLFxuICAgICAgICAgICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9uZWdcIiwgdG1wWSwgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwT3V0XCIpLCBjLmkzMl9jb25zdChuOCkpKVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImdyZWF0ZXN0XCIpLFxuICAgICAgICAgICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9uZWdcIiwgdG1wWSwgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwT3V0XCIpLCBjLmkzMl9jb25zdChuOCkpKSxcbiAgICAgICAgICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfY29weVwiLCB0bXBZLCBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInBPdXRcIiksIGMuaTMyX2NvbnN0KG44KSkpXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIClcblxuICAgICAgICApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGJ1aWxkSW5DdXJ2ZUFmZmluZSgpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXggKyBcIl9pbkN1cnZlQWZmaW5lXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicEluXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLnNldFJldHVyblR5cGUoXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCB4ID0gYy5nZXRMb2NhbChcInBJblwiKTtcbiAgICAgICAgY29uc3QgeSA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwicEluXCIpLCBjLmkzMl9jb25zdChuOCkpO1xuXG4gICAgICAgIGNvbnN0IHkyID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44KSk7XG4gICAgICAgIGNvbnN0IHgzYiA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX3NxdWFyZVwiLCB5LCB5MiksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9zcXVhcmVcIiwgeCwgeDNiKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX211bFwiLCB4LCB4M2IsIHgzYiksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9hZGRcIiwgeDNiLCBjLmkzMl9jb25zdChwQiksIHgzYiksXG5cbiAgICAgICAgICAgIGMucmV0KFxuICAgICAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX2VxXCIsIHkyLCB4M2IpXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYnVpbGRJbkN1cnZlKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCArIFwiX2luQ3VydmVcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwSW5cIiwgXCJpMzJcIik7XG4gICAgICAgIGYuc2V0UmV0dXJuVHlwZShcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IGF1eCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCoyKSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX3RvQWZmaW5lXCIsIGMuZ2V0TG9jYWwoXCJwSW5cIiksIGF1eCksXG5cbiAgICAgICAgICAgIGMucmV0KFxuICAgICAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9pbkN1cnZlQWZmaW5lXCIsIGF1eCksXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgYnVpbGRJc1plcm9BZmZpbmUoKTtcbiAgICBidWlsZElzWmVybygpO1xuICAgIGJ1aWxkWmVyb0FmZmluZSgpO1xuICAgIGJ1aWxkWmVybygpO1xuICAgIGJ1aWxkQ29weUFmZmluZSgpO1xuICAgIGJ1aWxkQ29weSgpO1xuICAgIGJ1aWxkVG9KYWNvYmlhbigpO1xuICAgIGJ1aWxkRXFBZmZpbmUoKTtcbiAgICBidWlsZEVxTWl4ZWQoKTtcbiAgICBidWlsZEVxKCk7XG4gICAgYnVpbGREb3VibGVBZmZpbmUoKTtcbiAgICBidWlsZERvdWJsZSgpO1xuICAgIGJ1aWxkQWRkQWZmaW5lKCk7XG4gICAgYnVpbGRBZGRNaXhlZCgpO1xuICAgIGJ1aWxkQWRkKCk7XG4gICAgYnVpbGROZWdBZmZpbmUoKTtcbiAgICBidWlsZE5lZygpO1xuICAgIGJ1aWxkU3ViQWZmaW5lKCk7XG4gICAgYnVpbGRTdWJNaXhlZCgpO1xuICAgIGJ1aWxkU3ViKCk7XG4gICAgYnVpbGRGcm9tTW9udGdvbWVyeUFmZmluZSgpO1xuICAgIGJ1aWxkRnJvbU1vbnRnb21lcnkoKTtcbiAgICBidWlsZFRvTW9udGdvbWVyeUFmZmluZSgpO1xuICAgIGJ1aWxkVG9Nb250Z29tZXJ5KCk7XG4gICAgYnVpbGRUb0FmZmluZSgpO1xuICAgIGJ1aWxkSW5DdXJ2ZUFmZmluZSgpO1xuICAgIGJ1aWxkSW5DdXJ2ZSgpO1xuXG4gICAgYnVpbGRCYXRjaFRvQWZmaW5lKCk7XG5cbiAgICBidWlsZE5vcm1hbGl6ZSgpO1xuXG5cbiAgICBidWlsZFJldmVyc2VCeXRlcygpO1xuXG4gICAgYnVpbGRMRU10b1UoKTtcbiAgICBidWlsZExFTXRvQygpO1xuICAgIGJ1aWxkVXRvTEVNKCk7XG4gICAgYnVpbGRDdG9MRU0oKTtcblxuICAgIGJ1aWxkQmF0Y2hDb252ZXJ0aW9uKG1vZHVsZSwgcHJlZml4ICsgXCJfYmF0Y2hMRU10b1VcIiwgcHJlZml4ICsgXCJfTEVNdG9VXCIsIG44KjIsIG44KjIpO1xuICAgIGJ1aWxkQmF0Y2hDb252ZXJ0aW9uKG1vZHVsZSwgcHJlZml4ICsgXCJfYmF0Y2hMRU10b0NcIiwgcHJlZml4ICsgXCJfTEVNdG9DXCIsIG44KjIsIG44KTtcbiAgICBidWlsZEJhdGNoQ29udmVydGlvbihtb2R1bGUsIHByZWZpeCArIFwiX2JhdGNoVXRvTEVNXCIsIHByZWZpeCArIFwiX1V0b0xFTVwiLCBuOCoyLCBuOCoyKTtcbiAgICBidWlsZEJhdGNoQ29udmVydGlvbihtb2R1bGUsIHByZWZpeCArIFwiX2JhdGNoQ3RvTEVNXCIsIHByZWZpeCArIFwiX0N0b0xFTVwiLCBuOCwgbjgqMiwgdHJ1ZSk7XG5cbiAgICBidWlsZEJhdGNoQ29udmVydGlvbihtb2R1bGUsIHByZWZpeCArIFwiX2JhdGNoVG9KYWNvYmlhblwiLCBwcmVmaXggKyBcIl90b0phY29iaWFuXCIsIG44KjIsIG44KjMsIHRydWUpO1xuXG4gICAgYnVpbGRNdWx0aWV4cCQxKG1vZHVsZSwgcHJlZml4LCBwcmVmaXggKyBcIl9tdWx0aWV4cFwiLCBwcmVmaXggKyBcIl9hZGRcIiwgbjgqMyk7XG4gICAgYnVpbGRNdWx0aWV4cCQxKG1vZHVsZSwgcHJlZml4LCBwcmVmaXggKyBcIl9tdWx0aWV4cEFmZmluZVwiLCBwcmVmaXggKyBcIl9hZGRNaXhlZFwiLCBuOCoyKTtcblxuICAgIC8qXG4gICAgYnVpbGRUaW1lc1NjYWxhcihcbiAgICAgICAgbW9kdWxlLFxuICAgICAgICBwcmVmaXggKyBcIl90aW1lc1NjYWxhck9sZFwiLFxuICAgICAgICBuOCozLFxuICAgICAgICBwcmVmaXggKyBcIl9hZGRcIixcbiAgICAgICAgcHJlZml4ICsgXCJfZG91YmxlXCIsXG4gICAgICAgIHByZWZpeCArIFwiX2NvcHlcIixcbiAgICAgICAgcHJlZml4ICsgXCJfemVyb1wiLFxuICAgICk7XG4gICAgKi9cbiAgICBidWlsZFRpbWVzU2NhbGFyTkFGKFxuICAgICAgICBtb2R1bGUsXG4gICAgICAgIHByZWZpeCArIFwiX3RpbWVzU2NhbGFyXCIsXG4gICAgICAgIG44KjMsXG4gICAgICAgIHByZWZpeCArIFwiX2FkZFwiLFxuICAgICAgICBwcmVmaXggKyBcIl9kb3VibGVcIixcbiAgICAgICAgcHJlZml4ICsgXCJfc3ViXCIsXG4gICAgICAgIHByZWZpeCArIFwiX2NvcHlcIixcbiAgICAgICAgcHJlZml4ICsgXCJfemVyb1wiXG4gICAgKTtcblxuICAgIGJ1aWxkVGltZXNTY2FsYXJOQUYoXG4gICAgICAgIG1vZHVsZSxcbiAgICAgICAgcHJlZml4ICsgXCJfdGltZXNTY2FsYXJBZmZpbmVcIixcbiAgICAgICAgbjgqMixcbiAgICAgICAgcHJlZml4ICsgXCJfYWRkTWl4ZWRcIixcbiAgICAgICAgcHJlZml4ICsgXCJfZG91YmxlXCIsXG4gICAgICAgIHByZWZpeCArIFwiX3N1Yk1peGVkXCIsXG4gICAgICAgIHByZWZpeCArIFwiX2NvcHlBZmZpbmVcIixcbiAgICAgICAgcHJlZml4ICsgXCJfemVyb1wiXG4gICAgKTtcblxuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9pc1plcm9cIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX2lzWmVyb0FmZmluZVwiKTtcblxuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9lcVwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfZXFNaXhlZFwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfZXFBZmZpbmVcIik7XG5cbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfY29weVwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfY29weUFmZmluZVwiKTtcblxuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl96ZXJvXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl96ZXJvQWZmaW5lXCIpO1xuXG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX2RvdWJsZVwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfZG91YmxlQWZmaW5lXCIpO1xuXG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX2FkZFwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfYWRkTWl4ZWRcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX2FkZEFmZmluZVwiKTtcblxuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9uZWdcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX25lZ0FmZmluZVwiKTtcblxuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9zdWJcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX3N1Yk1peGVkXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9zdWJBZmZpbmVcIik7XG5cbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfZnJvbU1vbnRnb21lcnlcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX2Zyb21Nb250Z29tZXJ5QWZmaW5lXCIpO1xuXG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX3RvTW9udGdvbWVyeVwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfdG9Nb250Z29tZXJ5QWZmaW5lXCIpO1xuXG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX3RpbWVzU2NhbGFyXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl90aW1lc1NjYWxhckFmZmluZVwiKTtcblxuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9ub3JtYWxpemVcIik7XG5cbiAgICAvLyBDb252ZXJ0aW9uIGZ1bmN0aW9uc1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9MRU10b1VcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX0xFTXRvQ1wiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfVXRvTEVNXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9DdG9MRU1cIik7XG5cbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfYmF0Y2hMRU10b1VcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX2JhdGNoTEVNdG9DXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9iYXRjaFV0b0xFTVwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfYmF0Y2hDdG9MRU1cIik7XG5cbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfdG9BZmZpbmVcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX3RvSmFjb2JpYW5cIik7XG5cbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfYmF0Y2hUb0FmZmluZVwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfYmF0Y2hUb0phY29iaWFuXCIpO1xuXG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX2luQ3VydmVcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX2luQ3VydmVBZmZpbmVcIik7XG5cbiAgICAvKlxuICAgIGJ1aWxkRzFNdWxTY2FsYXIobW9kdWxlLCB6cSk7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKFwiZzFNdWxTY2FsYXJcIik7XG4gICAgKi9cblxuICAgIHJldHVybiBwcmVmaXg7XG59O1xuXG4vKlxuICAgIENvcHlyaWdodCAyMDE5IDBLSU1TIGFzc29jaWF0aW9uLlxuXG4gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2Ygd2FzbXNuYXJrIChXZWIgQXNzZW1ibHkgemtTbmFyayBQcm92ZXIpLlxuXG4gICAgd2FzbXNuYXJrIGlzIGEgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdFxuICAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3JcbiAgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuXG4gICAgd2FzbXNuYXJrIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUXG4gICAgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZXG4gICAgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljXG4gICAgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuXG4gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAgICBhbG9uZyB3aXRoIHdhc21zbmFyay4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cbiovXG5cbmNvbnN0IHsgaXNPZGQ6IGlzT2RkJDIsIG1vZEludjogbW9kSW52JDEsIG1vZFBvdyB9ID0gYmlnaW50O1xuY29uc3QgdXRpbHMkMyA9IHV0aWxzJDY7XG5cbnZhciBidWlsZF9mZnQgPSBmdW5jdGlvbiBidWlsZEZGVChtb2R1bGUsIHByZWZpeCwgZ1ByZWZpeCwgZlByZWZpeCwgb3BHdGltZXNGKSB7XG5cbiAgICBjb25zdCBuNjRmID0gbW9kdWxlLm1vZHVsZXNbZlByZWZpeF0ubjY0O1xuICAgIGNvbnN0IG44ZiA9IG42NGYqODtcblxuICAgIGNvbnN0IG42NGcgPSBtb2R1bGUubW9kdWxlc1tnUHJlZml4XS5uNjQ7XG4gICAgY29uc3QgbjhnID0gbjY0Zyo4O1xuXG4gICAgY29uc3QgcSA9IG1vZHVsZS5tb2R1bGVzW2ZQcmVmaXhdLnE7XG5cbiAgICBsZXQgcmVtID0gcSAtIDFuO1xuICAgIGxldCBtYXhCaXRzID0gMDtcbiAgICB3aGlsZSAoIWlzT2RkJDIocmVtKSkge1xuICAgICAgICBtYXhCaXRzICsrO1xuICAgICAgICByZW0gPSByZW0gPj4gMW47XG4gICAgfVxuXG4gICAgbGV0IG5yID0gMm47XG5cbiAgICB3aGlsZSAoIG1vZFBvdyhuciwgcSA+PiAxbiwgcSkgPT09IDFuICkgbnIgPSBuciArIDFuO1xuXG4gICAgLy8gY29uc29sZS5sb2cobnIpO1xuXG4gICAgY29uc3QgdyA9IG5ldyBBcnJheShtYXhCaXRzKzEpO1xuICAgIHdbbWF4Qml0c10gPSBtb2RQb3cobnIsIHJlbSwgcSk7XG5cbiAgICBsZXQgbj1tYXhCaXRzLTE7XG4gICAgd2hpbGUgKG4+PTApIHtcbiAgICAgICAgd1tuXSA9IG1vZFBvdyh3W24rMV0sIDJuLCBxKTtcbiAgICAgICAgbi0tO1xuICAgIH1cblxuICAgIGNvbnN0IGJ5dGVzID0gW107XG4gICAgY29uc3QgUiA9ICgxbiA8PCBCaWdJbnQobjhmKjgpKSAlIHE7XG5cbiAgICBmb3IgKGxldCBpPTA7IGk8dy5sZW5ndGg7IGkrKykge1xuICAgICAgICBjb25zdCBtID0gd1tpXSAqIFIgJSBxO1xuICAgICAgICBieXRlcy5wdXNoKC4uLnV0aWxzJDMuYmlnSW50MkJ5dGVzTEUobSwgbjhmKSk7XG4gICAgfVxuXG4gICAgY29uc3QgUk9PVHMgPSBtb2R1bGUuYWxsb2MoYnl0ZXMpO1xuXG4gICAgY29uc3QgaTIgPSBuZXcgQXJyYXkobWF4Qml0cysxKTtcbiAgICBpMlswXSA9IDFuO1xuXG4gICAgZm9yIChsZXQgaT0xOyBpPD1tYXhCaXRzOyBpKyspIHtcbiAgICAgICAgaTJbaV0gPSBpMltpLTFdICogMm47XG4gICAgfVxuXG4gICAgY29uc3QgYnl0ZXNpMiA9W107XG4gICAgZm9yIChsZXQgaT0wOyBpPD1tYXhCaXRzOyBpKyspIHtcbiAgICAgICAgY29uc3QgbSA9IG1vZEludiQxKGkyW2ldLCBxKSAqIFIgJSBxO1xuICAgICAgICBieXRlc2kyLnB1c2goLi4udXRpbHMkMy5iaWdJbnQyQnl0ZXNMRShtLCBuOGYpKTtcbiAgICB9XG5cbiAgICBjb25zdCBJTlYyID0gbW9kdWxlLmFsbG9jKGJ5dGVzaTIpO1xuXG4gICAgY29uc3Qgc2hpZnQgPSBtb2RQb3cobnIsIDJuLCBxKTtcbiAgICBjb25zdCBieXRlc1NoaWZ0VG9TbWFsbE0gPVtdO1xuICAgIGNvbnN0IGJ5dGVzU0NvbnN0ID1bXTtcbiAgICBmb3IgKGxldCBpPTA7IGk8PW1heEJpdHM7IGkrKykge1xuICAgICAgICBjb25zdCBzaGlmdFRvU21hbGxNID0gbW9kUG93KHNoaWZ0LCAybiAqKiBCaWdJbnQoaSksIHEpO1xuICAgICAgICBjb25zdCBzQ29uc3QgPSBtb2RJbnYkMShxICsgMW4gLSBzaGlmdFRvU21hbGxNLCBxKTtcbiAgICAgICAgYnl0ZXNTaGlmdFRvU21hbGxNLnB1c2goLi4udXRpbHMkMy5iaWdJbnQyQnl0ZXNMRShzaGlmdFRvU21hbGxNICogUiAlIHEsIG44ZikpO1xuICAgICAgICBieXRlc1NDb25zdC5wdXNoKC4uLnV0aWxzJDMuYmlnSW50MkJ5dGVzTEUoc0NvbnN0ICogUiAlIHEsIG44ZikpO1xuICAgIH1cblxuICAgIGNvbnN0IFNISUZUX1RPX00gPSBtb2R1bGUuYWxsb2MoIGJ5dGVzU2hpZnRUb1NtYWxsTSAgKTtcbiAgICBjb25zdCBTQ09OU1QgPSBtb2R1bGUuYWxsb2MoIGJ5dGVzU0NvbnN0ICApO1xuXG4gICAgZnVuY3Rpb24gcmV2KHgpIHtcbiAgICAgICAgbGV0IHI9MDtcbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPDg7IGkrKykge1xuICAgICAgICAgICAgaWYgKHggJiAoMSA8PCBpKSkge1xuICAgICAgICAgICAgICAgIHIgPSByIHwgKDB4ODAgPj4gaSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHI7XG4gICAgfVxuXG4gICAgY29uc3QgcnRhYmxlID0gQXJyYXkoMjU2KTtcbiAgICBmb3IgKGxldCBpPTA7IGk8MjU2OyBpKyspIHtcbiAgICAgICAgcnRhYmxlW2ldID0gcmV2KGkpO1xuICAgIH1cblxuICAgIGNvbnN0IFJFVlRBQkxFID0gbW9kdWxlLmFsbG9jKHJ0YWJsZSk7XG5cblxuICAgIGZ1bmN0aW9uIGJ1aWxkTG9nMigpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrXCJfX2xvZzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJuXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLnNldFJldHVyblR5cGUoXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJiaXRzXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiYXV4XCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcbiAgICAgICAgICAgICAgICBcImF1eFwiLFxuICAgICAgICAgICAgICAgIGMuaTMyX3Nocl91KFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiblwiKSxcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QoMSlcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgICAgIGYuYWRkQ29kZShjLnNldExvY2FsKFwiYml0c1wiLCBjLmkzMl9jb25zdCgwKSkpO1xuXG4gICAgICAgIGYuYWRkQ29kZShjLmJsb2NrKGMubG9vcChcbiAgICAgICAgICAgIGMuYnJfaWYoXG4gICAgICAgICAgICAgICAgMSxcbiAgICAgICAgICAgICAgICBjLmkzMl9lcXooYy5nZXRMb2NhbChcImF1eFwiKSlcbiAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXG4gICAgICAgICAgICAgICAgXCJhdXhcIixcbiAgICAgICAgICAgICAgICBjLmkzMl9zaHJfdShcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImF1eFwiKSxcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QoMSlcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApLFxuXG4gICAgICAgICAgICBjLnNldExvY2FsKFxuICAgICAgICAgICAgICAgIFwiYml0c1wiLFxuICAgICAgICAgICAgICAgIGMuaTMyX2FkZChcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImJpdHNcIiksXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KDEpXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgYy5icigwKVxuICAgICAgICApKSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKGMuaWYoXG4gICAgICAgICAgICBjLmkzMl9uZShcbiAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiblwiKSxcbiAgICAgICAgICAgICAgICBjLmkzMl9zaGwoXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KDEpLFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiYml0c1wiKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjLnVucmVhY2hhYmxlKClcbiAgICAgICAgKSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKGMuaWYoXG4gICAgICAgICAgICBjLmkzMl9ndF91KFxuICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJiaXRzXCIpLFxuICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KG1heEJpdHMpXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYy51bnJlYWNoYWJsZSgpXG4gICAgICAgICkpO1xuXG4gICAgICAgIGYuYWRkQ29kZShjLmdldExvY2FsKFwiYml0c1wiKSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYnVpbGRGRlQoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4K1wiX2ZmdFwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInB4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiblwiLCBcImkzMlwiKTtcblxuICAgICAgICBmLmFkZExvY2FsKFwiYml0c1wiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IE9uZSA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOGYpKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLnNldExvY2FsKFxuICAgICAgICAgICAgICAgIFwiYml0c1wiLFxuICAgICAgICAgICAgICAgIGMuY2FsbChcbiAgICAgICAgICAgICAgICAgICAgcHJlZml4ICsgXCJfX2xvZzJcIixcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcIm5cIilcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYy5jYWxsKGZQcmVmaXggKyBcIl9vbmVcIiwgT25lKSxcbiAgICAgICAgICAgIGMuY2FsbChcbiAgICAgICAgICAgICAgICBwcmVmaXgrXCJfcmF3ZmZ0XCIsXG4gICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInB4XCIpLFxuICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJiaXRzXCIpLFxuICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KDApLFxuICAgICAgICAgICAgICAgIE9uZVxuICAgICAgICAgICAgKVxuICAgICAgICApO1xuXG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYnVpbGRJRkZUKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCtcIl9pZmZ0XCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicHhcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJuXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiYml0c1wiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcInBJbnYyXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcbiAgICAgICAgICAgICAgICBcImJpdHNcIixcbiAgICAgICAgICAgICAgICBjLmNhbGwoXG4gICAgICAgICAgICAgICAgICAgIHByZWZpeCArIFwiX19sb2cyXCIsXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJuXCIpXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXG4gICAgICAgICAgICAgICAgXCJwSW52MlwiLFxuICAgICAgICAgICAgICAgIGMuaTMyX2FkZChcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QoSU5WMiksXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX211bChcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJiaXRzXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QobjhmKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgYy5jYWxsKFxuICAgICAgICAgICAgICAgIHByZWZpeCtcIl9yYXdmZnRcIixcbiAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicHhcIiksXG4gICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImJpdHNcIiksXG4gICAgICAgICAgICAgICAgYy5pMzJfY29uc3QoMSksXG4gICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInBJbnYyXCIpXG4gICAgICAgICAgICApLFxuICAgICAgICApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGJ1aWxkUmF3RkZUKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCtcIl9yYXdmZnRcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJweFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcImJpdHNcIiwgXCJpMzJcIik7IC8vIDIgcG93ZXJcbiAgICAgICAgZi5hZGRQYXJhbShcInJldmVyc2VcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJtdWxGYWN0b3JcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgZi5hZGRMb2NhbChcInNcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJrXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwialwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcIm1cIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJtZGl2MlwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcIm5cIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJwd21cIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJpZHgxXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiaWR4MlwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IFcgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjhmKSk7XG4gICAgICAgIGNvbnN0IFQgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjhnKSk7XG4gICAgICAgIGNvbnN0IFUgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjhnKSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX19yZXZlcnNlUGVybXV0YXRpb25cIiwgYy5nZXRMb2NhbChcInB4XCIpLCBjLmdldExvY2FsKFwiYml0c1wiKSksXG4gICAgICAgICAgICBjLnNldExvY2FsKFwiblwiLCBjLmkzMl9zaGwoYy5pMzJfY29uc3QoMSksIGMuZ2V0TG9jYWwoXCJiaXRzXCIpKSksXG4gICAgICAgICAgICBjLnNldExvY2FsKFwic1wiLCBjLmkzMl9jb25zdCgxKSksXG4gICAgICAgICAgICBjLmJsb2NrKGMubG9vcChcbiAgICAgICAgICAgICAgICBjLmJyX2lmKFxuICAgICAgICAgICAgICAgICAgICAxLFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9ndF91KFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInNcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiYml0c1wiKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFwibVwiLCBjLmkzMl9zaGwoYy5pMzJfY29uc3QoMSksIGMuZ2V0TG9jYWwoXCJzXCIpKSksXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcInB3bVwiLFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9hZGQoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdChST09UcyksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9tdWwoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInNcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QobjhmKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFwia1wiLCBjLmkzMl9jb25zdCgwKSksXG4gICAgICAgICAgICAgICAgYy5ibG9jayhjLmxvb3AoXG4gICAgICAgICAgICAgICAgICAgIGMuYnJfaWYoXG4gICAgICAgICAgICAgICAgICAgICAgICAxLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfZ2VfdShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwia1wiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiblwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApLFxuXG4gICAgICAgICAgICAgICAgICAgIGMuY2FsbChmUHJlZml4ICsgXCJfb25lXCIsIFcpLFxuXG4gICAgICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJtZGl2MlwiLCBjLmkzMl9zaHJfdShjLmdldExvY2FsKFwibVwiKSwgYy5pMzJfY29uc3QoMSkpICksXG4gICAgICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJqXCIsIGMuaTMyX2NvbnN0KDApKSxcbiAgICAgICAgICAgICAgICAgICAgYy5ibG9jayhjLmxvb3AoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmJyX2lmKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfZ2VfdShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImpcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJtZGl2MlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJpZHgxXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfYWRkKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicHhcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX211bChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2FkZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwia1wiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwialwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KG44ZylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJpZHgyXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfYWRkKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaWR4MVwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfbXVsKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcIm1kaXYyXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QobjhnKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgICAgICAgICAgICAgYy5jYWxsKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wR3RpbWVzRixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaWR4MlwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBXLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGMuY2FsbChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBnUHJlZml4ICsgXCJfY29weVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpZHgxXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGMuY2FsbChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBnUHJlZml4ICsgXCJfYWRkXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgVSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBULFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpZHgxXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgICAgICAgICAgICAgYy5jYWxsKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdQcmVmaXggKyBcIl9zdWJcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBVLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImlkeDJcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmNhbGwoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZlByZWZpeCArIFwiX211bFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInB3bVwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBXLFxuICAgICAgICAgICAgICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcImpcIiwgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJqXCIpLCBjLmkzMl9jb25zdCgxKSkpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5icigwKVxuICAgICAgICAgICAgICAgICAgICApKSxcblxuICAgICAgICAgICAgICAgICAgICBjLnNldExvY2FsKFwia1wiLCBjLmkzMl9hZGQoYy5nZXRMb2NhbChcImtcIiksIGMuZ2V0TG9jYWwoXCJtXCIpKSksXG4gICAgICAgICAgICAgICAgICAgIGMuYnIoMClcbiAgICAgICAgICAgICAgICApKSxcblxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJzXCIsIGMuaTMyX2FkZChjLmdldExvY2FsKFwic1wiKSwgYy5pMzJfY29uc3QoMSkpKSxcbiAgICAgICAgICAgICAgICBjLmJyKDApXG4gICAgICAgICAgICApKSxcbiAgICAgICAgICAgIGMuY2FsbChcbiAgICAgICAgICAgICAgICBwcmVmaXggKyBcIl9fZmZ0RmluYWxcIixcbiAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicHhcIiksXG4gICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImJpdHNcIiksXG4gICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInJldmVyc2VcIiksXG4gICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcIm11bEZhY3RvclwiKVxuICAgICAgICAgICAgKVxuICAgICAgICApO1xuICAgIH1cblxuXG4gICAgZnVuY3Rpb24gYnVpbGRGaW5hbEludmVyc2UoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4K1wiX19mZnRGaW5hbFwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInB4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiYml0c1wiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInJldmVyc2VcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJtdWxGYWN0b3JcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJuXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwibmRpdjJcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJwSW52MlwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcImlcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJtYXNrXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiaWR4MVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcImlkeDJcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCBUID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44ZykpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgYy5pMzJfYW5kKFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9lcXooYy5nZXRMb2NhbChcInJldmVyc2VcIikpLFxuICAgICAgICAgICAgICAgICAgICBjLmNhbGwoZlByZWZpeCArIFwiX2lzT25lXCIsIGMuZ2V0TG9jYWwoXCJtdWxGYWN0b3JcIikpXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBjLnJldChbXSlcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjLnNldExvY2FsKFwiblwiLCBjLmkzMl9zaGwoIGMuaTMyX2NvbnN0KDEpLCBjLmdldExvY2FsKFwiYml0c1wiKSkpLFxuXG4gICAgICAgICAgICBjLnNldExvY2FsKFwibWFza1wiLCBjLmkzMl9zdWIoIGMuZ2V0TG9jYWwoXCJuXCIpICwgYy5pMzJfY29uc3QoMSkpKSxcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpXCIsIGMuaTMyX2NvbnN0KDEpKSxcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXG4gICAgICAgICAgICAgICAgXCJuZGl2MlwiLFxuICAgICAgICAgICAgICAgIGMuaTMyX3Nocl91KFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiblwiKSxcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QoMSlcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYy5ibG9jayhjLmxvb3AoXG4gICAgICAgICAgICAgICAgYy5icl9pZihcbiAgICAgICAgICAgICAgICAgICAgMSxcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfZ2VfdShcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcIm5kaXYyXCIpXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApLFxuXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcImlkeDFcIixcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfYWRkKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInB4XCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfbXVsKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KG44ZylcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFwiaWR4MlwiLFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9hZGQoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicHhcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9tdWwoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfc3ViKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiblwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImlcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KG44ZylcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicmV2ZXJzZVwiKSxcbiAgICAgICAgICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuY2FsbChmUHJlZml4ICsgXCJfaXNPbmVcIiwgYy5nZXRMb2NhbChcIm11bEZhY3RvclwiKSksXG4gICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uYy5jYWxsKGdQcmVmaXggKyBcIl9jb3B5XCIsIGMuZ2V0TG9jYWwoXCJpZHgxXCIpLCBUKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5jLmNhbGwoZ1ByZWZpeCArIFwiX2NvcHlcIiwgYy5nZXRMb2NhbChcImlkeDJcIikgLCBjLmdldExvY2FsKFwiaWR4MVwiKSApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLmMuY2FsbChnUHJlZml4ICsgXCJfY29weVwiLCBUICwgYy5nZXRMb2NhbChcImlkeDJcIikpLFxuICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5jLmNhbGwoZ1ByZWZpeCArIFwiX2NvcHlcIiwgYy5nZXRMb2NhbChcImlkeDFcIiksIFQpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLmMuY2FsbChvcEd0aW1lc0YgLCBjLmdldExvY2FsKFwiaWR4MlwiKSAsIGMuZ2V0TG9jYWwoXCJtdWxGYWN0b3JcIiksIGMuZ2V0TG9jYWwoXCJpZHgxXCIpICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uYy5jYWxsKG9wR3RpbWVzRiAsIFQgLCBjLmdldExvY2FsKFwibXVsRmFjdG9yXCIpLCBjLmdldExvY2FsKFwiaWR4MlwiKSksXG4gICAgICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmNhbGwoZlByZWZpeCArIFwiX2lzT25lXCIsIGMuZ2V0TG9jYWwoXCJtdWxGYWN0b3JcIikpLFxuICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIERvIG5vdGhpbmcgKEl0IHNob3VsZCBub3QgYmUgaGVyZSlcbiAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uYy5jYWxsKG9wR3RpbWVzRiAsIGMuZ2V0TG9jYWwoXCJpZHgxXCIpICwgYy5nZXRMb2NhbChcIm11bEZhY3RvclwiKSwgYy5nZXRMb2NhbChcImlkeDFcIikgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5jLmNhbGwob3BHdGltZXNGICwgYy5nZXRMb2NhbChcImlkeDJcIikgLCBjLmdldExvY2FsKFwibXVsRmFjdG9yXCIpLCBjLmdldExvY2FsKFwiaWR4MlwiKSksXG4gICAgICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpXCIsIGMuaTMyX2FkZChjLmdldExvY2FsKFwiaVwiKSwgYy5pMzJfY29uc3QoMSkpKSxcblxuICAgICAgICAgICAgICAgIGMuYnIoMClcbiAgICAgICAgICAgICkpLFxuXG4gICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgIGMuY2FsbChmUHJlZml4ICsgXCJfaXNPbmVcIiwgYy5nZXRMb2NhbChcIm11bEZhY3RvclwiKSksXG4gICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAvLyBEbyBub3RoaW5nIChJdCBzaG91bGQgbm90IGJlIGhlcmUpXG4gICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgIC4uLmMuY2FsbChvcEd0aW1lc0YsIGMuZ2V0TG9jYWwoXCJweFwiKSAsIGMuZ2V0TG9jYWwoXCJtdWxGYWN0b3JcIiksIGMuZ2V0TG9jYWwoXCJweFwiKSksXG4gICAgICAgICAgICAgICAgICAgIC4uLmMuc2V0TG9jYWwoXCJpZHgyXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9hZGQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInB4XCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX211bChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcIm5kaXYyXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdChuOGcpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAuLi5jLmNhbGwob3BHdGltZXNGLCBjLmdldExvY2FsKFwiaWR4MlwiKSxjLmdldExvY2FsKFwibXVsRmFjdG9yXCIpLCBjLmdldExvY2FsKFwiaWR4MlwiKSlcbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYnVpbGRSZXZlcnNlUGVybXV0YXRpb24oKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4K1wiX19yZXZlcnNlUGVybXV0YXRpb25cIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJweFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcImJpdHNcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJuXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiaVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcInJpXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiaWR4MVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcImlkeDJcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCBUID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44ZykpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJuXCIsIGMuaTMyX3NobCggYy5pMzJfY29uc3QoMSksIGMuZ2V0TG9jYWwoXCJiaXRzXCIpKSksXG4gICAgICAgICAgICBjLnNldExvY2FsKFwiaVwiLCBjLmkzMl9jb25zdCgwKSksXG4gICAgICAgICAgICBjLmJsb2NrKGMubG9vcChcbiAgICAgICAgICAgICAgICBjLmJyX2lmKFxuICAgICAgICAgICAgICAgICAgICAxLFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9lcShcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcIm5cIilcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFwiaWR4MVwiLFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9hZGQoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicHhcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9tdWwoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImlcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QobjhnKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJyaVwiLCBjLmNhbGwocHJlZml4ICsgXCJfX3JldlwiLCBjLmdldExvY2FsKFwiaVwiKSwgYy5nZXRMb2NhbChcImJpdHNcIikpKSxcblxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpZHgyXCIsXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX2FkZChcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJweFwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX211bChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicmlcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QobjhnKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX2x0X3UoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaVwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJyaVwiKVxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5jLmNhbGwoZ1ByZWZpeCArIFwiX2NvcHlcIiwgYy5nZXRMb2NhbChcImlkeDFcIiksIFQpLFxuICAgICAgICAgICAgICAgICAgICAgICAgLi4uYy5jYWxsKGdQcmVmaXggKyBcIl9jb3B5XCIsIGMuZ2V0TG9jYWwoXCJpZHgyXCIpICwgYy5nZXRMb2NhbChcImlkeDFcIikpLFxuICAgICAgICAgICAgICAgICAgICAgICAgLi4uYy5jYWxsKGdQcmVmaXggKyBcIl9jb3B5XCIsIFQgLCBjLmdldExvY2FsKFwiaWR4MlwiKSlcbiAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFwiaVwiLCBjLmkzMl9hZGQoYy5nZXRMb2NhbChcImlcIiksIGMuaTMyX2NvbnN0KDEpKSksXG5cbiAgICAgICAgICAgICAgICBjLmJyKDApXG4gICAgICAgICAgICApKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGJ1aWxkUmV2KCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCtcIl9fcmV2XCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcImJpdHNcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuc2V0UmV0dXJuVHlwZShcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuaTMyX3JvdGwoXG4gICAgICAgICAgICAgICAgYy5pMzJfYWRkKFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9hZGQoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9zaGwoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfbG9hZDhfdShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfYW5kKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInhcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdCgweEZGKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSRVZUQUJMRSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QoMjQpXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfc2hsKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2xvYWQ4X3UoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2FuZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX3Nocl91KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJ4XCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KDgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QoMHhGRilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUkVWVEFCTEUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KDE2KVxuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfYWRkKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfc2hsKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2xvYWQ4X3UoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2FuZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX3Nocl91KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJ4XCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KDE2KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KDB4RkYpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJFVlRBQkxFLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdCg4KVxuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2xvYWQ4X3UoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfYW5kKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9zaHJfdShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJ4XCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QoMjQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KDB4RkYpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBSRVZUQUJMRSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAwXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiYml0c1wiKVxuICAgICAgICAgICAgKVxuICAgICAgICApO1xuICAgIH1cblxuXG4gICAgZnVuY3Rpb24gYnVpbGRGRlRKb2luKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCtcIl9mZnRKb2luXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicEJ1ZmYxXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicEJ1ZmYyXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiblwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcImZpcnN0XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiaW5jXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiaWR4MVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcImlkeDJcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJpXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgVyA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOGYpKTtcbiAgICAgICAgY29uc3QgVCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOGcpKTtcbiAgICAgICAgY29uc3QgVSA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOGcpKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLmNhbGwoIGZQcmVmaXggKyBcIl9jb3B5XCIsIGMuZ2V0TG9jYWwoXCJmaXJzdFwiKSwgVyksXG4gICAgICAgICAgICBjLnNldExvY2FsKFwiaVwiLCBjLmkzMl9jb25zdCgwKSksXG4gICAgICAgICAgICBjLmJsb2NrKGMubG9vcChcbiAgICAgICAgICAgICAgICBjLmJyX2lmKFxuICAgICAgICAgICAgICAgICAgICAxLFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9lcShcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcIm5cIilcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFxuICAgICAgICAgICAgICAgICAgICBcImlkeDFcIixcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfYWRkKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInBCdWZmMVwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX211bChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaVwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdChuOGcpXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApLFxuXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcbiAgICAgICAgICAgICAgICAgICAgXCJpZHgyXCIsXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX2FkZChcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwQnVmZjJcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9tdWwoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImlcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QobjhnKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgICAgIGMuY2FsbChcbiAgICAgICAgICAgICAgICAgICAgb3BHdGltZXNGLFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaWR4MlwiKSxcbiAgICAgICAgICAgICAgICAgICAgVyxcbiAgICAgICAgICAgICAgICAgICAgVFxuICAgICAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgICAgICBjLmNhbGwoXG4gICAgICAgICAgICAgICAgICAgIGdQcmVmaXggKyBcIl9jb3B5XCIsXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpZHgxXCIpLFxuICAgICAgICAgICAgICAgICAgICBVXG4gICAgICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgICAgIGMuY2FsbChcbiAgICAgICAgICAgICAgICAgICAgZ1ByZWZpeCArIFwiX2FkZFwiLFxuICAgICAgICAgICAgICAgICAgICBVLFxuICAgICAgICAgICAgICAgICAgICBULFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaWR4MVwiKSxcbiAgICAgICAgICAgICAgICApLFxuXG4gICAgICAgICAgICAgICAgYy5jYWxsKFxuICAgICAgICAgICAgICAgICAgICBnUHJlZml4ICsgXCJfc3ViXCIsXG4gICAgICAgICAgICAgICAgICAgIFUsXG4gICAgICAgICAgICAgICAgICAgIFQsXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpZHgyXCIpLFxuICAgICAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgICAgICBjLmNhbGwoXG4gICAgICAgICAgICAgICAgICAgIGZQcmVmaXggKyBcIl9tdWxcIixcbiAgICAgICAgICAgICAgICAgICAgVyxcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImluY1wiKSxcbiAgICAgICAgICAgICAgICAgICAgVyxcbiAgICAgICAgICAgICAgICApLFxuXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcImlcIiwgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJpXCIpLCBjLmkzMl9jb25zdCgxKSkpLFxuICAgICAgICAgICAgICAgIGMuYnIoMClcbiAgICAgICAgICAgICkpXG4gICAgICAgICk7XG4gICAgfVxuXG5cbiAgICBmdW5jdGlvbiBidWlsZEZGVEpvaW5FeHQoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4K1wiX2ZmdEpvaW5FeHRcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwQnVmZjFcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwQnVmZjJcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJuXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiZmlyc3RcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJpbmNcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ0b3RhbEJpdHNcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJpZHgxXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiaWR4MlwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcImlcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJwU2hpZnRUb01cIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCBXID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44ZikpO1xuICAgICAgICBjb25zdCBVID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44ZykpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcblxuICAgICAgICAgICAgYy5zZXRMb2NhbChcInBTaGlmdFRvTVwiLFxuICAgICAgICAgICAgICAgIGMuaTMyX2FkZChcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QoU0hJRlRfVE9fTSksXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX211bChcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJ0b3RhbEJpdHNcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdChuOGYpXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApLFxuXG5cbiAgICAgICAgICAgIGMuY2FsbCggZlByZWZpeCArIFwiX2NvcHlcIiwgYy5nZXRMb2NhbChcImZpcnN0XCIpLCBXKSxcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpXCIsIGMuaTMyX2NvbnN0KDApKSxcbiAgICAgICAgICAgIGMuYmxvY2soYy5sb29wKFxuICAgICAgICAgICAgICAgIGMuYnJfaWYoXG4gICAgICAgICAgICAgICAgICAgIDEsXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX2VxKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImlcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiblwiKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXG4gICAgICAgICAgICAgICAgICAgIFwiaWR4MVwiLFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9hZGQoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicEJ1ZmYxXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfbXVsKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KG44ZylcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFxuICAgICAgICAgICAgICAgICAgICBcImlkeDJcIixcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfYWRkKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInBCdWZmMlwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX211bChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaVwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdChuOGcpXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApLFxuXG4gICAgICAgICAgICAgICAgYy5jYWxsKFxuICAgICAgICAgICAgICAgICAgICBnUHJlZml4ICsgXCJfYWRkXCIsXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpZHgxXCIpLFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaWR4MlwiKSxcbiAgICAgICAgICAgICAgICAgICAgVVxuICAgICAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgICAgICBjLmNhbGwoXG4gICAgICAgICAgICAgICAgICAgIG9wR3RpbWVzRixcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImlkeDJcIiksXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwU2hpZnRUb01cIiksXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpZHgyXCIpXG4gICAgICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgICAgIGMuY2FsbChcbiAgICAgICAgICAgICAgICAgICAgZ1ByZWZpeCArIFwiX2FkZFwiLFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaWR4MVwiKSxcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImlkeDJcIiksXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpZHgyXCIpXG4gICAgICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgICAgIGMuY2FsbChcbiAgICAgICAgICAgICAgICAgICAgb3BHdGltZXNGLFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaWR4MlwiKSxcbiAgICAgICAgICAgICAgICAgICAgVyxcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImlkeDJcIiksXG4gICAgICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgICAgIGMuY2FsbChcbiAgICAgICAgICAgICAgICAgICAgZ1ByZWZpeCArIFwiX2NvcHlcIixcbiAgICAgICAgICAgICAgICAgICAgVSxcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImlkeDFcIilcbiAgICAgICAgICAgICAgICApLFxuXG4gICAgICAgICAgICAgICAgYy5jYWxsKFxuICAgICAgICAgICAgICAgICAgICBmUHJlZml4ICsgXCJfbXVsXCIsXG4gICAgICAgICAgICAgICAgICAgIFcsXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpbmNcIiksXG4gICAgICAgICAgICAgICAgICAgIFdcbiAgICAgICAgICAgICAgICApLFxuXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcImlcIiwgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJpXCIpLCBjLmkzMl9jb25zdCgxKSkpLFxuICAgICAgICAgICAgICAgIGMuYnIoMClcbiAgICAgICAgICAgICkpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYnVpbGRGRlRKb2luRXh0SW52KCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCtcIl9mZnRKb2luRXh0SW52XCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicEJ1ZmYxXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicEJ1ZmYyXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiblwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcImZpcnN0XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiaW5jXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwidG90YWxCaXRzXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiaWR4MVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcImlkeDJcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJpXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwicFNoaWZ0VG9NXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwicFNDb25zdFwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IFcgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjhmKSk7XG4gICAgICAgIGNvbnN0IFUgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjhnKSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuXG4gICAgICAgICAgICBjLnNldExvY2FsKFwicFNoaWZ0VG9NXCIsXG4gICAgICAgICAgICAgICAgYy5pMzJfYWRkKFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdChTSElGVF9UT19NKSxcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfbXVsKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInRvdGFsQml0c1wiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KG44ZilcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjLnNldExvY2FsKFwicFNDb25zdFwiLFxuICAgICAgICAgICAgICAgIGMuaTMyX2FkZChcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QoU0NPTlNUKSxcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfbXVsKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInRvdGFsQml0c1wiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KG44ZilcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICksXG5cblxuICAgICAgICAgICAgYy5jYWxsKCBmUHJlZml4ICsgXCJfY29weVwiLCBjLmdldExvY2FsKFwiZmlyc3RcIiksIFcpLFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcImlcIiwgYy5pMzJfY29uc3QoMCkpLFxuICAgICAgICAgICAgYy5ibG9jayhjLmxvb3AoXG4gICAgICAgICAgICAgICAgYy5icl9pZihcbiAgICAgICAgICAgICAgICAgICAgMSxcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfZXEoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaVwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJuXCIpXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApLFxuXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcbiAgICAgICAgICAgICAgICAgICAgXCJpZHgxXCIsXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX2FkZChcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwQnVmZjFcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9tdWwoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImlcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QobjhnKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXG4gICAgICAgICAgICAgICAgICAgIFwiaWR4MlwiLFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9hZGQoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicEJ1ZmYyXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfbXVsKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KG44ZylcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgICAgICBjLmNhbGwoXG4gICAgICAgICAgICAgICAgICAgIG9wR3RpbWVzRixcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImlkeDJcIiksXG4gICAgICAgICAgICAgICAgICAgIFcsXG4gICAgICAgICAgICAgICAgICAgIFVcbiAgICAgICAgICAgICAgICApLFxuXG4gICAgICAgICAgICAgICAgYy5jYWxsKFxuICAgICAgICAgICAgICAgICAgICBnUHJlZml4ICsgXCJfc3ViXCIsXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpZHgxXCIpLFxuICAgICAgICAgICAgICAgICAgICBVLFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaWR4MlwiKSxcbiAgICAgICAgICAgICAgICApLFxuXG4gICAgICAgICAgICAgICAgYy5jYWxsKFxuICAgICAgICAgICAgICAgICAgICBvcEd0aW1lc0YsXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpZHgyXCIpLFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicFNDb25zdFwiKSxcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImlkeDJcIilcbiAgICAgICAgICAgICAgICApLFxuXG4gICAgICAgICAgICAgICAgYy5jYWxsKFxuICAgICAgICAgICAgICAgICAgICBvcEd0aW1lc0YsXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpZHgxXCIpLFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicFNoaWZ0VG9NXCIpLFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaWR4MVwiKVxuICAgICAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgICAgICBjLmNhbGwoXG4gICAgICAgICAgICAgICAgICAgIGdQcmVmaXggKyBcIl9zdWJcIixcbiAgICAgICAgICAgICAgICAgICAgVSxcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImlkeDFcIiksXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpZHgxXCIpXG4gICAgICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgICAgIGMuY2FsbChcbiAgICAgICAgICAgICAgICAgICAgb3BHdGltZXNGLFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaWR4MVwiKSxcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInBTQ29uc3RcIiksXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpZHgxXCIpXG4gICAgICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgICAgIGMuY2FsbChcbiAgICAgICAgICAgICAgICAgICAgZlByZWZpeCArIFwiX211bFwiLFxuICAgICAgICAgICAgICAgICAgICBXLFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaW5jXCIpLFxuICAgICAgICAgICAgICAgICAgICBXXG4gICAgICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpXCIsIGMuaTMyX2FkZChjLmdldExvY2FsKFwiaVwiKSwgYy5pMzJfY29uc3QoMSkpKSxcbiAgICAgICAgICAgICAgICBjLmJyKDApXG4gICAgICAgICAgICApKVxuICAgICAgICApO1xuICAgIH1cblxuXG5cbiAgICBmdW5jdGlvbiBidWlsZFByZXBhcmVMYWdyYW5nZUV2YWx1YXRpb24oKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4K1wiX3ByZXBhcmVMYWdyYW5nZUV2YWx1YXRpb25cIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwQnVmZjFcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwQnVmZjJcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJuXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiZmlyc3RcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJpbmNcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ0b3RhbEJpdHNcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJpZHgxXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiaWR4MlwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcImlcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJwU2hpZnRUb01cIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJwU0NvbnN0XCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgVyA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOGYpKTtcbiAgICAgICAgY29uc3QgVSA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOGcpKTtcblxuICAgICAgICBmLmFkZENvZGUoXG5cbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJwU2hpZnRUb01cIixcbiAgICAgICAgICAgICAgICBjLmkzMl9hZGQoXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KFNISUZUX1RPX00pLFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9tdWwoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwidG90YWxCaXRzXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QobjhmKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJwU0NvbnN0XCIsXG4gICAgICAgICAgICAgICAgYy5pMzJfYWRkKFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdChTQ09OU1QpLFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9tdWwoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwidG90YWxCaXRzXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QobjhmKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSxcblxuXG4gICAgICAgICAgICBjLmNhbGwoIGZQcmVmaXggKyBcIl9jb3B5XCIsIGMuZ2V0TG9jYWwoXCJmaXJzdFwiKSwgVyksXG4gICAgICAgICAgICBjLnNldExvY2FsKFwiaVwiLCBjLmkzMl9jb25zdCgwKSksXG4gICAgICAgICAgICBjLmJsb2NrKGMubG9vcChcbiAgICAgICAgICAgICAgICBjLmJyX2lmKFxuICAgICAgICAgICAgICAgICAgICAxLFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9lcShcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcIm5cIilcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFxuICAgICAgICAgICAgICAgICAgICBcImlkeDFcIixcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfYWRkKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInBCdWZmMVwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX211bChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaVwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdChuOGcpXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApLFxuXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcbiAgICAgICAgICAgICAgICAgICAgXCJpZHgyXCIsXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX2FkZChcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwQnVmZjJcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9tdWwoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImlcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QobjhnKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKSxcblxuXG4gICAgICAgICAgICAgICAgYy5jYWxsKFxuICAgICAgICAgICAgICAgICAgICBvcEd0aW1lc0YsXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpZHgxXCIpLFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicFNoaWZ0VG9NXCIpLFxuICAgICAgICAgICAgICAgICAgICBVXG4gICAgICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgICAgIGMuY2FsbChcbiAgICAgICAgICAgICAgICAgICAgZ1ByZWZpeCArIFwiX3N1YlwiLFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaWR4MlwiKSxcbiAgICAgICAgICAgICAgICAgICAgVSxcbiAgICAgICAgICAgICAgICAgICAgVVxuICAgICAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgICAgICBjLmNhbGwoXG4gICAgICAgICAgICAgICAgICAgIGdQcmVmaXggKyBcIl9zdWJcIixcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImlkeDFcIiksXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpZHgyXCIpLFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaWR4MlwiKSxcbiAgICAgICAgICAgICAgICApLFxuXG4gICAgICAgICAgICAgICAgYy5jYWxsKFxuICAgICAgICAgICAgICAgICAgICBvcEd0aW1lc0YsXG4gICAgICAgICAgICAgICAgICAgIFUsXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwU0NvbnN0XCIpLFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaWR4MVwiKSxcbiAgICAgICAgICAgICAgICApLFxuXG4gICAgICAgICAgICAgICAgYy5jYWxsKFxuICAgICAgICAgICAgICAgICAgICBvcEd0aW1lc0YsXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpZHgyXCIpLFxuICAgICAgICAgICAgICAgICAgICBXLFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaWR4MlwiKSxcbiAgICAgICAgICAgICAgICApLFxuXG4gICAgICAgICAgICAgICAgYy5jYWxsKFxuICAgICAgICAgICAgICAgICAgICBmUHJlZml4ICsgXCJfbXVsXCIsXG4gICAgICAgICAgICAgICAgICAgIFcsXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpbmNcIiksXG4gICAgICAgICAgICAgICAgICAgIFdcbiAgICAgICAgICAgICAgICApLFxuXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcImlcIiwgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJpXCIpLCBjLmkzMl9jb25zdCgxKSkpLFxuICAgICAgICAgICAgICAgIGMuYnIoMClcbiAgICAgICAgICAgICkpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYnVpbGRGRlRNaXgoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4K1wiX2ZmdE1peFwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInBCdWZmXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiblwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcImV4cFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcIm5Hcm91cHNcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJuUGVyR3JvdXBcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJuUGVyR3JvdXBEaXYyXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwicGFpck9mZnNldFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcImlkeDFcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJpZHgyXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiaVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcImpcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJwd21cIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCBXID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44ZikpO1xuICAgICAgICBjb25zdCBUID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44ZykpO1xuICAgICAgICBjb25zdCBVID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44ZykpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJuUGVyR3JvdXBcIiwgYy5pMzJfc2hsKGMuaTMyX2NvbnN0KDEpLCBjLmdldExvY2FsKFwiZXhwXCIpKSksXG4gICAgICAgICAgICBjLnNldExvY2FsKFwiblBlckdyb3VwRGl2MlwiLCBjLmkzMl9zaHJfdShjLmdldExvY2FsKFwiblBlckdyb3VwXCIpLCBjLmkzMl9jb25zdCgxKSkpLFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcIm5Hcm91cHNcIiwgYy5pMzJfc2hyX3UoYy5nZXRMb2NhbChcIm5cIiksIGMuZ2V0TG9jYWwoXCJleHBcIikpKSxcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJwYWlyT2Zmc2V0XCIsIGMuaTMyX211bChjLmdldExvY2FsKFwiblBlckdyb3VwRGl2MlwiKSwgYy5pMzJfY29uc3QobjhnKSkpLFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcInB3bVwiLFxuICAgICAgICAgICAgICAgIGMuaTMyX2FkZChcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QoUk9PVHMpLFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9tdWwoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiZXhwXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QobjhmKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpXCIsIGMuaTMyX2NvbnN0KDApKSxcbiAgICAgICAgICAgIGMuYmxvY2soYy5sb29wKFxuICAgICAgICAgICAgICAgIGMuYnJfaWYoXG4gICAgICAgICAgICAgICAgICAgIDEsXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX2VxKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImlcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwibkdyb3Vwc1wiKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBjLmNhbGwoIGZQcmVmaXggKyBcIl9vbmVcIiwgVyksXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcImpcIiwgYy5pMzJfY29uc3QoMCkpLFxuICAgICAgICAgICAgICAgIGMuYmxvY2soYy5sb29wKFxuICAgICAgICAgICAgICAgICAgICBjLmJyX2lmKFxuICAgICAgICAgICAgICAgICAgICAgICAgMSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2VxKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJqXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJuUGVyR3JvdXBEaXYyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiaWR4MVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfYWRkKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwQnVmZlwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9tdWwoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2FkZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX211bChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaVwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiblBlckdyb3VwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImpcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QobjhnKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgICAgICAgICBjLnNldExvY2FsKFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJpZHgyXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9hZGQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImlkeDFcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInBhaXJPZmZzZXRcIilcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgICAgICAgICBjLmNhbGwoXG4gICAgICAgICAgICAgICAgICAgICAgICBvcEd0aW1lc0YsXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaWR4MlwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFcsXG4gICAgICAgICAgICAgICAgICAgICAgICBUXG4gICAgICAgICAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgICAgICAgICAgYy5jYWxsKFxuICAgICAgICAgICAgICAgICAgICAgICAgZ1ByZWZpeCArIFwiX2NvcHlcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpZHgxXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgVVxuICAgICAgICAgICAgICAgICAgICApLFxuXG4gICAgICAgICAgICAgICAgICAgIGMuY2FsbChcbiAgICAgICAgICAgICAgICAgICAgICAgIGdQcmVmaXggKyBcIl9hZGRcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIFUsXG4gICAgICAgICAgICAgICAgICAgICAgICBULFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImlkeDFcIiksXG4gICAgICAgICAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgICAgICAgICAgYy5jYWxsKFxuICAgICAgICAgICAgICAgICAgICAgICAgZ1ByZWZpeCArIFwiX3N1YlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgVSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFQsXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaWR4MlwiKSxcbiAgICAgICAgICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgICAgICAgICBjLmNhbGwoXG4gICAgICAgICAgICAgICAgICAgICAgICBmUHJlZml4ICsgXCJfbXVsXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBXLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInB3bVwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFcsXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJqXCIsIGMuaTMyX2FkZChjLmdldExvY2FsKFwialwiKSwgYy5pMzJfY29uc3QoMSkpKSxcbiAgICAgICAgICAgICAgICAgICAgYy5icigwKVxuICAgICAgICAgICAgICAgICkpLFxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpXCIsIGMuaTMyX2FkZChjLmdldExvY2FsKFwiaVwiKSwgYy5pMzJfY29uc3QoMSkpKSxcbiAgICAgICAgICAgICAgICBjLmJyKDApXG4gICAgICAgICAgICApKVxuICAgICAgICApO1xuICAgIH1cblxuXG4gICAgLy8gUmV2ZXJzZSBhbGwgYW5kIG11bHRpcGx5IGJ5IGZhY3RvclxuICAgIGZ1bmN0aW9uIGJ1aWxkRkZURmluYWwoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4K1wiX2ZmdEZpbmFsXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicEJ1ZmZcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJuXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiZmFjdG9yXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiaWR4MVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcImlkeDJcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJpXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwibmRpdjJcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCBUID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44ZykpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJuZGl2MlwiLCBjLmkzMl9zaHJfdShjLmdldExvY2FsKFwiblwiKSwgYy5pMzJfY29uc3QoMSkpKSxcbiAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgYy5pMzJfYW5kKFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiblwiKSxcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QoMSlcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGMuY2FsbChcbiAgICAgICAgICAgICAgICAgICAgb3BHdGltZXNGLFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9hZGQoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicEJ1ZmZcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9tdWwoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcIm5kaXYyXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KG44ZylcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImZhY3RvclwiKSxcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfYWRkKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInBCdWZmXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfbXVsKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJuZGl2MlwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdChuOGcpXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjLnNldExvY2FsKFwiaVwiLCBjLmkzMl9jb25zdCgwKSksXG4gICAgICAgICAgICBjLmJsb2NrKGMubG9vcChcbiAgICAgICAgICAgICAgICBjLmJyX2lmKFxuICAgICAgICAgICAgICAgICAgICAxLFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9nZV91KFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImlcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwibmRpdjJcIilcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFxuICAgICAgICAgICAgICAgICAgICBcImlkeDFcIixcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfYWRkKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInBCdWZmXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfbXVsKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KG44ZylcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFxuICAgICAgICAgICAgICAgICAgICBcImlkeDJcIixcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfYWRkKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInBCdWZmXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfbXVsKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX3N1YihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfc3ViKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcIm5cIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdCgxKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QobjhnKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgICAgIGMuY2FsbChcbiAgICAgICAgICAgICAgICAgICAgb3BHdGltZXNGLFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaWR4MlwiKSxcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImZhY3RvclwiKSxcbiAgICAgICAgICAgICAgICAgICAgVFxuICAgICAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgICAgICBjLmNhbGwoXG4gICAgICAgICAgICAgICAgICAgIG9wR3RpbWVzRixcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImlkeDFcIiksXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJmYWN0b3JcIiksXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpZHgyXCIpLFxuICAgICAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgICAgICBjLmNhbGwoXG4gICAgICAgICAgICAgICAgICAgIGdQcmVmaXggKyBcIl9jb3B5XCIsXG4gICAgICAgICAgICAgICAgICAgIFQsXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpZHgxXCIpLFxuICAgICAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFwiaVwiLCBjLmkzMl9hZGQoYy5nZXRMb2NhbChcImlcIiksIGMuaTMyX2NvbnN0KDEpKSksXG4gICAgICAgICAgICAgICAgYy5icigwKVxuICAgICAgICAgICAgKSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBidWlsZFJldigpO1xuICAgIGJ1aWxkUmV2ZXJzZVBlcm11dGF0aW9uKCk7XG4gICAgYnVpbGRGaW5hbEludmVyc2UoKTtcbiAgICBidWlsZFJhd0ZGVCgpO1xuICAgIGJ1aWxkTG9nMigpO1xuICAgIGJ1aWxkRkZUKCk7XG4gICAgYnVpbGRJRkZUKCk7XG4gICAgYnVpbGRGRlRKb2luKCk7XG4gICAgYnVpbGRGRlRKb2luRXh0KCk7XG4gICAgYnVpbGRGRlRKb2luRXh0SW52KCk7XG4gICAgYnVpbGRGRlRNaXgoKTtcbiAgICBidWlsZEZGVEZpbmFsKCk7XG4gICAgYnVpbGRQcmVwYXJlTGFncmFuZ2VFdmFsdWF0aW9uKCk7XG5cbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4K1wiX2ZmdFwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4K1wiX2lmZnRcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCtcIl9yYXdmZnRcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCtcIl9mZnRKb2luXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXgrXCJfZmZ0Sm9pbkV4dFwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4K1wiX2ZmdEpvaW5FeHRJbnZcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCtcIl9mZnRNaXhcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCtcIl9mZnRGaW5hbFwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4K1wiX3ByZXBhcmVMYWdyYW5nZUV2YWx1YXRpb25cIik7XG5cbn07XG5cbi8qXG4gICAgQ29weXJpZ2h0IDIwMTkgMEtJTVMgYXNzb2NpYXRpb24uXG5cbiAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB3YXNtc25hcmsgKFdlYiBBc3NlbWJseSB6a1NuYXJrIFByb3ZlcikuXG5cbiAgICB3YXNtc25hcmsgaXMgYSBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0XG4gICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxuICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG5cbiAgICB3YXNtc25hcmsgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVRcbiAgICBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFlcbiAgICBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWNcbiAgICBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG5cbiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICAgIGFsb25nIHdpdGggd2FzbXNuYXJrLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuKi9cblxudmFyIGJ1aWxkX3BvbCA9IGZ1bmN0aW9uIGJ1aWxkUG9sKG1vZHVsZSwgcHJlZml4LCBwcmVmaXhGaWVsZCkge1xuXG4gICAgY29uc3QgbjY0ID0gbW9kdWxlLm1vZHVsZXNbcHJlZml4RmllbGRdLm42NDtcbiAgICBjb25zdCBuOCA9IG42NCo4O1xuXG5cbiAgICBmdW5jdGlvbiBidWlsZFplcm8oKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4K1wiX3plcm9cIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJweFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcIm5cIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJsYXN0cFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcInBcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLnNldExvY2FsKFwicFwiLCBjLmdldExvY2FsKFwicHhcIikpLFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcbiAgICAgICAgICAgICAgICBcImxhc3RwXCIsXG4gICAgICAgICAgICAgICAgYy5pMzJfYWRkKFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicHhcIiksXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX211bChcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJuXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QobjgpXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYy5ibG9jayhjLmxvb3AoXG4gICAgICAgICAgICAgICAgYy5icl9pZihcbiAgICAgICAgICAgICAgICAgICAgMSxcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfZXEoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicFwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJsYXN0cFwiKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl96ZXJvXCIsIGMuZ2V0TG9jYWwoXCJwXCIpKSxcbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFwicFwiLCBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInBcIiksIGMuaTMyX2NvbnN0KG44KSkpLFxuICAgICAgICAgICAgICAgIGMuYnIoMClcbiAgICAgICAgICAgICkpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYnVpbGRDb25zdHJ1Y3RMQygpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrXCJfY29uc3RydWN0TENcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwcG9seW5vbWlhbHNcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwc2lnbmFsc1wiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcIm5TaWduYWxzXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicHJlc1wiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcImlcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJqXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwicHBcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJwc1wiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcInBkXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwibmNvZWZzXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgYXV4ID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44KSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcImlcIiwgYy5pMzJfY29uc3QoMCkpLFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcInBwXCIsIGMuZ2V0TG9jYWwoXCJwcG9seW5vbWlhbHNcIikpLFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcInBzXCIsIGMuZ2V0TG9jYWwoXCJwc2lnbmFsc1wiKSksXG4gICAgICAgICAgICBjLmJsb2NrKGMubG9vcChcbiAgICAgICAgICAgICAgICBjLmJyX2lmKFxuICAgICAgICAgICAgICAgICAgICAxLFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9lcShcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcIm5TaWduYWxzXCIpXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApLFxuXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcIm5jb2Vmc1wiLCBjLmkzMl9sb2FkKGMuZ2V0TG9jYWwoXCJwcFwiKSkpLFxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJwcFwiLCBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInBwXCIpLCBjLmkzMl9jb25zdCg0KSkpLFxuXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcImpcIiwgYy5pMzJfY29uc3QoMCkpLFxuICAgICAgICAgICAgICAgIGMuYmxvY2soYy5sb29wKFxuICAgICAgICAgICAgICAgICAgICBjLmJyX2lmKFxuICAgICAgICAgICAgICAgICAgICAgICAgMSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2VxKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJqXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJuY29lZnNcIilcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgICAgICAgICBjLnNldExvY2FsKFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJwZFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfYWRkKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwcmVzXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX211bChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfbG9hZChjLmdldExvY2FsKFwicHBcIikpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdChuOClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcInBwXCIsIGMuaTMyX2FkZChjLmdldExvY2FsKFwicHBcIiksIGMuaTMyX2NvbnN0KDQpKSksXG5cblxuICAgICAgICAgICAgICAgICAgICBjLmNhbGwoXG4gICAgICAgICAgICAgICAgICAgICAgICBwcmVmaXhGaWVsZCArIFwiX211bFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInBzXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInBwXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYXV4XG4gICAgICAgICAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgICAgICAgICAgYy5jYWxsKFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJlZml4RmllbGQgKyBcIl9hZGRcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIGF1eCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwZFwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwZFwiKVxuICAgICAgICAgICAgICAgICAgICApLFxuXG4gICAgICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJwcFwiLCBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInBwXCIpLCBjLmkzMl9jb25zdChuOCkpKSxcbiAgICAgICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcImpcIiwgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJqXCIpLCBjLmkzMl9jb25zdCgxKSkpLFxuICAgICAgICAgICAgICAgICAgICBjLmJyKDApXG4gICAgICAgICAgICAgICAgKSksXG5cbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFwicHNcIiwgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwc1wiKSwgYy5pMzJfY29uc3QobjgpKSksXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcImlcIiwgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJpXCIpLCBjLmkzMl9jb25zdCgxKSkpLFxuICAgICAgICAgICAgICAgIGMuYnIoMClcbiAgICAgICAgICAgICkpXG4gICAgICAgICk7XG5cbiAgICB9XG5cbiAgICBidWlsZFplcm8oKTtcbiAgICBidWlsZENvbnN0cnVjdExDKCk7XG5cblxuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl96ZXJvXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9jb25zdHJ1Y3RMQ1wiKTtcblxuICAgIHJldHVybiBwcmVmaXg7XG5cblxuXG5cbn07XG5cbnZhciBidWlsZF9xYXAgPSBmdW5jdGlvbiBidWlsZFFBUChtb2R1bGUsIHByZWZpeCwgcHJlZml4RmllbGQpIHtcblxuICAgIGNvbnN0IG42NCA9IG1vZHVsZS5tb2R1bGVzW3ByZWZpeEZpZWxkXS5uNjQ7XG4gICAgY29uc3QgbjggPSBuNjQqODtcblxuXG4gICAgZnVuY3Rpb24gYnVpbGRCdWlsZEFCQygpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrXCJfYnVpbGRBQkNcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwQ29lZnNcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJuQ29lZnNcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwV2l0bmVzc1wiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInBBXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicEJcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwQ1wiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcIm9mZnNldE91dFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcIm5PdXRcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJvZmZzZXRXaXRuZXNzXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwibldpdG5lc3NcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJpdFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcIml0YVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcIml0YlwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcImxhc3RcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJtXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiY1wiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcInNcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJwT3V0XCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgYXV4ID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44KSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuXG4gICAgICAgICAgICAvLyBTZXQgb3V0cHV0IGEgYW5kIGIgdG8gMFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcIml0YVwiLCBjLmdldExvY2FsKFwicEFcIikpLFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcIml0YlwiLCBjLmdldExvY2FsKFwicEJcIikpLFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcbiAgICAgICAgICAgICAgICBcImxhc3RcIixcbiAgICAgICAgICAgICAgICBjLmkzMl9hZGQoXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwQVwiKSxcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfbXVsKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcIm5PdXRcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdChuOClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjLmJsb2NrKGMubG9vcChcbiAgICAgICAgICAgICAgICBjLmJyX2lmKFxuICAgICAgICAgICAgICAgICAgICAxLFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9lcShcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpdGFcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwibGFzdFwiKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl96ZXJvXCIsIGMuZ2V0TG9jYWwoXCJpdGFcIikpLFxuICAgICAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX3plcm9cIiwgYy5nZXRMb2NhbChcIml0YlwiKSksXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcIml0YVwiLCBjLmkzMl9hZGQoYy5nZXRMb2NhbChcIml0YVwiKSwgYy5pMzJfY29uc3QobjgpKSksXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcIml0YlwiLCBjLmkzMl9hZGQoYy5nZXRMb2NhbChcIml0YlwiKSwgYy5pMzJfY29uc3QobjgpKSksXG4gICAgICAgICAgICAgICAgYy5icigwKVxuICAgICAgICAgICAgKSksXG5cblxuICAgICAgICAgICAgYy5zZXRMb2NhbChcIml0XCIsIGMuZ2V0TG9jYWwoXCJwQ29lZnNcIikpLFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcbiAgICAgICAgICAgICAgICBcImxhc3RcIixcbiAgICAgICAgICAgICAgICBjLmkzMl9hZGQoXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwQ29lZnNcIiksXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX211bChcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJuQ29lZnNcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdChuOCsxMilcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjLmJsb2NrKGMubG9vcChcbiAgICAgICAgICAgICAgICBjLmJyX2lmKFxuICAgICAgICAgICAgICAgICAgICAxLFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9lcShcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpdFwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJsYXN0XCIpXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXG4gICAgICAgICAgICAgICAgICAgIFwic1wiLFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9sb2FkKGMuZ2V0TG9jYWwoXCJpdFwiKSwgOClcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX29yKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfbHRfdShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwic1wiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwib2Zmc2V0V2l0bmVzc1wiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9nZV91KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJzXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2FkZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcIm9mZnNldFdpdG5lc3NcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJuV2l0bmVzc1wiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLmMuc2V0TG9jYWwoXCJpdFwiLCBjLmkzMl9hZGQoYy5nZXRMb2NhbChcIml0XCIpLCBjLmkzMl9jb25zdChuOCsxMikpKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLmMuYnIoMSlcbiAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFxuICAgICAgICAgICAgICAgICAgICBcIm1cIixcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfbG9hZChjLmdldExvY2FsKFwiaXRcIikpXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9lcShjLmdldExvY2FsKFwibVwiKSwgYy5pMzJfY29uc3QoMCkpLFxuICAgICAgICAgICAgICAgICAgICBjLnNldExvY2FsKFwicE91dFwiLCBjLmdldExvY2FsKFwicEFcIikpLFxuICAgICAgICAgICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfZXEoYy5nZXRMb2NhbChcIm1cIiksIGMuaTMyX2NvbnN0KDEpKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJwT3V0XCIsIGMuZ2V0TG9jYWwoXCJwQlwiKSksXG4gICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uYy5zZXRMb2NhbChcIml0XCIsIGMuaTMyX2FkZChjLmdldExvY2FsKFwiaXRcIiksIGMuaTMyX2NvbnN0KG44KzEyKSkpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLmMuYnIoMSlcbiAgICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcbiAgICAgICAgICAgICAgICAgICAgXCJjXCIsXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX2xvYWQoYy5nZXRMb2NhbChcIml0XCIpLCA0KVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfb3IoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9sdF91KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJjXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJvZmZzZXRPdXRcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfZ2VfdShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiY1wiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9hZGQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJvZmZzZXRPdXRcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJuT3V0XCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgLi4uYy5zZXRMb2NhbChcIml0XCIsIGMuaTMyX2FkZChjLmdldExvY2FsKFwiaXRcIiksIGMuaTMyX2NvbnN0KG44KzEyKSkpLFxuICAgICAgICAgICAgICAgICAgICAgICAgLi4uYy5icigxKVxuICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFxuICAgICAgICAgICAgICAgICAgICBcInBPdXRcIixcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfYWRkKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInBPdXRcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9tdWwoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfc3ViKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiY1wiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcIm9mZnNldE91dFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QobjgpXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGMuY2FsbChcbiAgICAgICAgICAgICAgICAgICAgcHJlZml4RmllbGQgKyBcIl9tdWxcIixcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfYWRkKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInBXaXRuZXNzXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfbXVsKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX3N1YihjLmdldExvY2FsKFwic1wiKSwgYy5nZXRMb2NhbChcIm9mZnNldFdpdG5lc3NcIikpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KG44KVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9hZGQoIGMuZ2V0TG9jYWwoXCJpdFwiKSwgYy5pMzJfY29uc3QoMTIpKSxcbiAgICAgICAgICAgICAgICAgICAgYXV4XG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBjLmNhbGwoXG4gICAgICAgICAgICAgICAgICAgIHByZWZpeEZpZWxkICsgXCJfYWRkXCIsXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwT3V0XCIpLFxuICAgICAgICAgICAgICAgICAgICBhdXgsXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwT3V0XCIpLFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcIml0XCIsIGMuaTMyX2FkZChjLmdldExvY2FsKFwiaXRcIiksIGMuaTMyX2NvbnN0KG44KzEyKSkpLFxuICAgICAgICAgICAgICAgIGMuYnIoMClcbiAgICAgICAgICAgICkpLFxuXG4gICAgICAgICAgICBjLnNldExvY2FsKFwiaXRhXCIsIGMuZ2V0TG9jYWwoXCJwQVwiKSksXG4gICAgICAgICAgICBjLnNldExvY2FsKFwiaXRiXCIsIGMuZ2V0TG9jYWwoXCJwQlwiKSksXG4gICAgICAgICAgICBjLnNldExvY2FsKFwiaXRcIiwgYy5nZXRMb2NhbChcInBDXCIpKSxcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXG4gICAgICAgICAgICAgICAgXCJsYXN0XCIsXG4gICAgICAgICAgICAgICAgYy5pMzJfYWRkKFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicEFcIiksXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX211bChcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJuT3V0XCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QobjgpXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYy5ibG9jayhjLmxvb3AoXG4gICAgICAgICAgICAgICAgYy5icl9pZihcbiAgICAgICAgICAgICAgICAgICAgMSxcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfZXEoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaXRhXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImxhc3RcIilcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgYy5jYWxsKFxuICAgICAgICAgICAgICAgICAgICBwcmVmaXhGaWVsZCArIFwiX211bFwiLFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaXRhXCIpLFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaXRiXCIpLFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaXRcIilcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpdGFcIiwgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJpdGFcIiksIGMuaTMyX2NvbnN0KG44KSkpLFxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpdGJcIiwgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJpdGJcIiksIGMuaTMyX2NvbnN0KG44KSkpLFxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpdFwiLCBjLmkzMl9hZGQoYy5nZXRMb2NhbChcIml0XCIpLCBjLmkzMl9jb25zdChuOCkpKSxcbiAgICAgICAgICAgICAgICBjLmJyKDApXG4gICAgICAgICAgICApKSxcblxuICAgICAgICApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGJ1aWxkSm9pbkFCQygpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrXCJfam9pbkFCQ1wiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInBBXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicEJcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwQ1wiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcIm5cIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwUFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcIml0YVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcIml0YlwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcIml0Y1wiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcIml0cFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcImxhc3RcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCBhdXggPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLnNldExvY2FsKFwiaXRhXCIsIGMuZ2V0TG9jYWwoXCJwQVwiKSksXG4gICAgICAgICAgICBjLnNldExvY2FsKFwiaXRiXCIsIGMuZ2V0TG9jYWwoXCJwQlwiKSksXG4gICAgICAgICAgICBjLnNldExvY2FsKFwiaXRjXCIsIGMuZ2V0TG9jYWwoXCJwQ1wiKSksXG4gICAgICAgICAgICBjLnNldExvY2FsKFwiaXRwXCIsIGMuZ2V0TG9jYWwoXCJwUFwiKSksXG4gICAgICAgICAgICBjLnNldExvY2FsKFxuICAgICAgICAgICAgICAgIFwibGFzdFwiLFxuICAgICAgICAgICAgICAgIGMuaTMyX2FkZChcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInBBXCIpLFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9tdWwoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiblwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KG44KVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGMuYmxvY2soYy5sb29wKFxuICAgICAgICAgICAgICAgIGMuYnJfaWYoXG4gICAgICAgICAgICAgICAgICAgIDEsXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX2VxKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcIml0YVwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJsYXN0XCIpXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGMuY2FsbChcbiAgICAgICAgICAgICAgICAgICAgcHJlZml4RmllbGQgKyBcIl9tdWxcIixcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcIml0YVwiKSxcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcIml0YlwiKSxcbiAgICAgICAgICAgICAgICAgICAgYXV4XG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBjLmNhbGwoXG4gICAgICAgICAgICAgICAgICAgIHByZWZpeEZpZWxkICsgXCJfc3ViXCIsXG4gICAgICAgICAgICAgICAgICAgIGF1eCxcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcIml0Y1wiKSxcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcIml0cFwiKSxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpdGFcIiwgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJpdGFcIiksIGMuaTMyX2NvbnN0KG44KSkpLFxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpdGJcIiwgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJpdGJcIiksIGMuaTMyX2NvbnN0KG44KSkpLFxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpdGNcIiwgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJpdGNcIiksIGMuaTMyX2NvbnN0KG44KSkpLFxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpdHBcIiwgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJpdHBcIiksIGMuaTMyX2NvbnN0KG44KSkpLFxuICAgICAgICAgICAgICAgIGMuYnIoMClcbiAgICAgICAgICAgICkpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYnVpbGRCYXRjaEFkZCgpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrXCJfYmF0Y2hBZGRcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwYVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInBiXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiblwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInByXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiaXRhXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiaXRiXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiaXRyXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwibGFzdFwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpdGFcIiwgYy5nZXRMb2NhbChcInBhXCIpKSxcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpdGJcIiwgYy5nZXRMb2NhbChcInBiXCIpKSxcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpdHJcIiwgYy5nZXRMb2NhbChcInByXCIpKSxcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXG4gICAgICAgICAgICAgICAgXCJsYXN0XCIsXG4gICAgICAgICAgICAgICAgYy5pMzJfYWRkKFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicGFcIiksXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX211bChcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJuXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QobjgpXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYy5ibG9jayhjLmxvb3AoXG4gICAgICAgICAgICAgICAgYy5icl9pZihcbiAgICAgICAgICAgICAgICAgICAgMSxcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfZXEoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaXRhXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImxhc3RcIilcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgYy5jYWxsKFxuICAgICAgICAgICAgICAgICAgICBwcmVmaXhGaWVsZCArIFwiX2FkZFwiLFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaXRhXCIpLFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaXRiXCIpLFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaXRyXCIpLFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcIml0YVwiLCBjLmkzMl9hZGQoYy5nZXRMb2NhbChcIml0YVwiKSwgYy5pMzJfY29uc3QobjgpKSksXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcIml0YlwiLCBjLmkzMl9hZGQoYy5nZXRMb2NhbChcIml0YlwiKSwgYy5pMzJfY29uc3QobjgpKSksXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcIml0clwiLCBjLmkzMl9hZGQoYy5nZXRMb2NhbChcIml0clwiKSwgYy5pMzJfY29uc3QobjgpKSksXG4gICAgICAgICAgICAgICAgYy5icigwKVxuICAgICAgICAgICAgKSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBidWlsZEJ1aWxkQUJDKCk7XG4gICAgYnVpbGRKb2luQUJDKCk7XG4gICAgYnVpbGRCYXRjaEFkZCgpO1xuXG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX2J1aWxkQUJDXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9qb2luQUJDXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9iYXRjaEFkZFwiKTtcblxuICAgIHJldHVybiBwcmVmaXg7XG5cbn07XG5cbi8qXG4gICAgQ29weXJpZ2h0IDIwMTkgMEtJTVMgYXNzb2NpYXRpb24uXG5cbiAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB3YXNtc25hcmsgKFdlYiBBc3NlbWJseSB6a1NuYXJrIFByb3ZlcikuXG5cbiAgICB3YXNtc25hcmsgaXMgYSBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0XG4gICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxuICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG5cbiAgICB3YXNtc25hcmsgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVRcbiAgICBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFlcbiAgICBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWNcbiAgICBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG5cbiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICAgIGFsb25nIHdpdGggd2FzbXNuYXJrLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuKi9cblxudmFyIGJ1aWxkX2FwcGx5a2V5ID0gZnVuY3Rpb24gYnVpbGRBcHBseUtleShtb2R1bGUsIGZuTmFtZSwgZ1ByZWZpeCwgZnJQcmVmaXgsIHNpemVHSW4sIHNpemVHT3V0LCBzaXplRiwgb3BHdGltZXNGKSB7XG5cbiAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKGZuTmFtZSk7XG4gICAgZi5hZGRQYXJhbShcInBJblwiLCBcImkzMlwiKTtcbiAgICBmLmFkZFBhcmFtKFwiblwiLCBcImkzMlwiKTtcbiAgICBmLmFkZFBhcmFtKFwicEZpcnN0XCIsIFwiaTMyXCIpO1xuICAgIGYuYWRkUGFyYW0oXCJwSW5jXCIsIFwiaTMyXCIpO1xuICAgIGYuYWRkUGFyYW0oXCJwT3V0XCIsIFwiaTMyXCIpO1xuICAgIGYuYWRkTG9jYWwoXCJwT2xkRnJlZVwiLCBcImkzMlwiKTtcbiAgICBmLmFkZExvY2FsKFwiaVwiLCBcImkzMlwiKTtcbiAgICBmLmFkZExvY2FsKFwicEZyb21cIiwgXCJpMzJcIik7XG4gICAgZi5hZGRMb2NhbChcInBUb1wiLCBcImkzMlwiKTtcblxuICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICBjb25zdCB0ID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKHNpemVGKSk7XG5cbiAgICBmLmFkZENvZGUoXG4gICAgICAgIGMuc2V0TG9jYWwoXCJwRnJvbVwiLCBjLmdldExvY2FsKFwicEluXCIpKSxcbiAgICAgICAgYy5zZXRMb2NhbChcInBUb1wiLCBjLmdldExvY2FsKFwicE91dFwiKSksXG4gICAgKTtcblxuICAgIC8vIHQgPSBmaXJzdFxuICAgIGYuYWRkQ29kZShcbiAgICAgICAgYy5jYWxsKFxuICAgICAgICAgICAgZnJQcmVmaXggKyBcIl9jb3B5XCIsXG4gICAgICAgICAgICBjLmdldExvY2FsKFwicEZpcnN0XCIpLFxuICAgICAgICAgICAgdFxuICAgICAgICApXG4gICAgKTtcbiAgICBmLmFkZENvZGUoXG4gICAgICAgIGMuc2V0TG9jYWwoXCJpXCIsIGMuaTMyX2NvbnN0KDApKSxcbiAgICAgICAgYy5ibG9jayhjLmxvb3AoXG4gICAgICAgICAgICBjLmJyX2lmKDEsIGMuaTMyX2VxICggYy5nZXRMb2NhbChcImlcIiksIGMuZ2V0TG9jYWwoXCJuXCIpICkpLFxuXG4gICAgICAgICAgICBjLmNhbGwoXG4gICAgICAgICAgICAgICAgb3BHdGltZXNGLFxuICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwRnJvbVwiKSxcbiAgICAgICAgICAgICAgICB0LFxuICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwVG9cIilcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjLnNldExvY2FsKFwicEZyb21cIiwgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwRnJvbVwiKSwgYy5pMzJfY29uc3Qoc2l6ZUdJbikpKSxcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJwVG9cIiwgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwVG9cIiksIGMuaTMyX2NvbnN0KHNpemVHT3V0KSkpLFxuXG4gICAgICAgICAgICAvLyB0ID0gdCogaW5jXG4gICAgICAgICAgICBjLmNhbGwoXG4gICAgICAgICAgICAgICAgZnJQcmVmaXggKyBcIl9tdWxcIixcbiAgICAgICAgICAgICAgICB0LFxuICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwSW5jXCIpLFxuICAgICAgICAgICAgICAgIHRcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjLnNldExvY2FsKFwiaVwiLCBjLmkzMl9hZGQoYy5nZXRMb2NhbChcImlcIiksIGMuaTMyX2NvbnN0KDEpKSksXG4gICAgICAgICAgICBjLmJyKDApXG4gICAgICAgICkpXG4gICAgKTtcblxuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihmbk5hbWUpO1xuXG59O1xuXG5jb25zdCB1dGlscyQyID0gdXRpbHMkNjtcblxuY29uc3QgYnVpbGRGMW0kMSA9YnVpbGRfZjFtO1xuY29uc3QgYnVpbGRGMSQxID1idWlsZF9mMTtcbmNvbnN0IGJ1aWxkRjJtJDEgPWJ1aWxkX2YybTtcbmNvbnN0IGJ1aWxkRjNtJDEgPWJ1aWxkX2YzbTtcbmNvbnN0IGJ1aWxkQ3VydmUkMSA9YnVpbGRfY3VydmVfamFjb2JpYW5fYTA7XG5jb25zdCBidWlsZEZGVCQyID0gYnVpbGRfZmZ0O1xuY29uc3QgYnVpbGRQb2wkMSA9IGJ1aWxkX3BvbDtcbmNvbnN0IGJ1aWxkUUFQJDEgPSBidWlsZF9xYXA7XG5jb25zdCBidWlsZEFwcGx5S2V5JDEgPSBidWlsZF9hcHBseWtleTtcbmNvbnN0IHsgYml0TGVuZ3RoOiBiaXRMZW5ndGgkMiwgbW9kSW52LCBpc09kZDogaXNPZGQkMSwgaXNOZWdhdGl2ZTogaXNOZWdhdGl2ZSQyIH0gPSBiaWdpbnQ7XG5cbnZhciBidWlsZF9ibjEyOCA9IGZ1bmN0aW9uIGJ1aWxkQk4xMjgobW9kdWxlLCBfcHJlZml4KSB7XG5cbiAgICBjb25zdCBwcmVmaXggPSBfcHJlZml4IHx8IFwiYm4xMjhcIjtcblxuICAgIGlmIChtb2R1bGUubW9kdWxlc1twcmVmaXhdKSByZXR1cm4gcHJlZml4OyAgLy8gYWxyZWFkeSBidWlsZGVkXG5cbiAgICBjb25zdCBxID0gMjE4ODgyNDI4NzE4MzkyNzUyMjIyNDY0MDU3NDUyNTcyNzUwODg2OTYzMTExNTcyOTc4MjM2NjI2ODkwMzc4OTQ2NDUyMjYyMDg1ODNuO1xuICAgIGNvbnN0IHIgPSAyMTg4ODI0Mjg3MTgzOTI3NTIyMjI0NjQwNTc0NTI1NzI3NTA4ODU0ODM2NDQwMDQxNjAzNDM0MzY5ODIwNDE4NjU3NTgwODQ5NTYxN247XG5cblxuICAgIGNvbnN0IG42NCA9IE1hdGguZmxvb3IoKGJpdExlbmd0aCQyKHEgLSAxbikgLSAxKS82NCkgKzE7XG4gICAgY29uc3QgbjggPSBuNjQqODtcbiAgICBjb25zdCBmcnNpemUgPSBuODtcbiAgICBjb25zdCBmMXNpemUgPSBuODtcbiAgICBjb25zdCBmMnNpemUgPSBmMXNpemUgKiAyO1xuICAgIGNvbnN0IGZ0c2l6ZSA9IGYxc2l6ZSAqIDEyO1xuXG4gICAgY29uc3QgcHIgPSBtb2R1bGUuYWxsb2ModXRpbHMkMi5iaWdJbnQyQnl0ZXNMRSggciwgZnJzaXplICkpO1xuXG4gICAgY29uc3QgZjFtUHJlZml4ID0gYnVpbGRGMW0kMShtb2R1bGUsIHEsIFwiZjFtXCIpO1xuICAgIGJ1aWxkRjEkMShtb2R1bGUsIHIsIFwiZnJcIiwgXCJmcm1cIik7XG5cbiAgICBjb25zdCBwRzFiID0gbW9kdWxlLmFsbG9jKHV0aWxzJDIuYmlnSW50MkJ5dGVzTEUoIHRvTW9udGdvbWVyeSgzbiksIGYxc2l6ZSApKTtcbiAgICBjb25zdCBnMW1QcmVmaXggPSBidWlsZEN1cnZlJDEobW9kdWxlLCBcImcxbVwiLCBcImYxbVwiLCBwRzFiKTtcblxuICAgIGJ1aWxkRkZUJDIobW9kdWxlLCBcImZybVwiLCBcImZybVwiLCBcImZybVwiLCBcImZybV9tdWxcIik7XG5cbiAgICBidWlsZFBvbCQxKG1vZHVsZSwgXCJwb2xcIiwgXCJmcm1cIik7XG4gICAgYnVpbGRRQVAkMShtb2R1bGUsIFwicWFwXCIsIFwiZnJtXCIpO1xuXG4gICAgY29uc3QgZjJtUHJlZml4ID0gYnVpbGRGMm0kMShtb2R1bGUsIFwiZjFtX25lZ1wiLCBcImYybVwiLCBcImYxbVwiKTtcbiAgICBjb25zdCBwRzJiID0gbW9kdWxlLmFsbG9jKFtcbiAgICAgICAgLi4udXRpbHMkMi5iaWdJbnQyQnl0ZXNMRSggdG9Nb250Z29tZXJ5KDE5NDg1ODc0NzUxNzU5MzU0NzcxMDI0MjM5MjYxMDIxNzIwNTA1NzkwNjE4NDY5MzAxNzIxMDY1NTY0NjMxMjk2NDUyNDU3NDc4MzczbiksIGYxc2l6ZSApLFxuICAgICAgICAuLi51dGlscyQyLmJpZ0ludDJCeXRlc0xFKCB0b01vbnRnb21lcnkoMjY2OTI5NzkxMTE5OTkxMTYxMjQ2OTA3Mzg3MTM3MjgzODQyNTQ1MDc2OTY1MzMyOTAwMjg4NTY5Mzc4NTEwOTEwMzA3NjM2NjkwbiksIGYxc2l6ZSApXG4gICAgXSk7XG4gICAgY29uc3QgZzJtUHJlZml4ID0gYnVpbGRDdXJ2ZSQxKG1vZHVsZSwgXCJnMm1cIiwgXCJmMm1cIiwgcEcyYik7XG5cblxuICAgIGZ1bmN0aW9uIGJ1aWxkR1RpbWVzRnIoZm5OYW1lLCBvcE11bCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKGZuTmFtZSk7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwR1wiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInBGclwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInByXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgQVVYID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44KSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5jYWxsKFwiZnJtX2Zyb21Nb250Z29tZXJ5XCIsIGMuZ2V0TG9jYWwoXCJwRnJcIiksIEFVWCksXG4gICAgICAgICAgICBjLmNhbGwoXG4gICAgICAgICAgICAgICAgb3BNdWwsXG4gICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInBHXCIpLFxuICAgICAgICAgICAgICAgIEFVWCxcbiAgICAgICAgICAgICAgICBjLmkzMl9jb25zdChuOCksXG4gICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInByXCIpXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG5cbiAgICAgICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKGZuTmFtZSk7XG4gICAgfVxuICAgIGJ1aWxkR1RpbWVzRnIoXCJnMW1fdGltZXNGclwiLCBcImcxbV90aW1lc1NjYWxhclwiKTtcbiAgICBidWlsZEZGVCQyKG1vZHVsZSwgXCJnMW1cIiwgXCJnMW1cIiwgXCJmcm1cIiwgXCJnMW1fdGltZXNGclwiKTtcblxuICAgIGJ1aWxkR1RpbWVzRnIoXCJnMm1fdGltZXNGclwiLCBcImcybV90aW1lc1NjYWxhclwiKTtcbiAgICBidWlsZEZGVCQyKG1vZHVsZSwgXCJnMm1cIiwgXCJnMm1cIiwgXCJmcm1cIiwgXCJnMm1fdGltZXNGclwiKTtcblxuICAgIGJ1aWxkR1RpbWVzRnIoXCJnMW1fdGltZXNGckFmZmluZVwiLCBcImcxbV90aW1lc1NjYWxhckFmZmluZVwiKTtcbiAgICBidWlsZEdUaW1lc0ZyKFwiZzJtX3RpbWVzRnJBZmZpbmVcIiwgXCJnMm1fdGltZXNTY2FsYXJBZmZpbmVcIik7XG5cbiAgICBidWlsZEFwcGx5S2V5JDEobW9kdWxlLCBcImZybV9iYXRjaEFwcGx5S2V5XCIsIFwiZm1yXCIsIFwiZnJtXCIsIG44LCBuOCwgbjgsIFwiZnJtX211bFwiKTtcbiAgICBidWlsZEFwcGx5S2V5JDEobW9kdWxlLCBcImcxbV9iYXRjaEFwcGx5S2V5XCIsIFwiZzFtXCIsIFwiZnJtXCIsIG44KjMsIG44KjMsIG44LCBcImcxbV90aW1lc0ZyXCIpO1xuICAgIGJ1aWxkQXBwbHlLZXkkMShtb2R1bGUsIFwiZzFtX2JhdGNoQXBwbHlLZXlNaXhlZFwiLCBcImcxbVwiLCBcImZybVwiLCBuOCoyLCBuOCozLCBuOCwgXCJnMW1fdGltZXNGckFmZmluZVwiKTtcbiAgICBidWlsZEFwcGx5S2V5JDEobW9kdWxlLCBcImcybV9iYXRjaEFwcGx5S2V5XCIsIFwiZzJtXCIsIFwiZnJtXCIsIG44KjIqMywgbjgqMyoyLCBuOCwgXCJnMm1fdGltZXNGclwiKTtcbiAgICBidWlsZEFwcGx5S2V5JDEobW9kdWxlLCBcImcybV9iYXRjaEFwcGx5S2V5TWl4ZWRcIiwgXCJnMm1cIiwgXCJmcm1cIiwgbjgqMioyLCBuOCozKjIsIG44LCBcImcybV90aW1lc0ZyQWZmaW5lXCIpO1xuXG4gICAgZnVuY3Rpb24gdG9Nb250Z29tZXJ5KGEpIHtcbiAgICAgICAgcmV0dXJuIEJpZ0ludChhKSAqICggMW4gPDwgQmlnSW50KGYxc2l6ZSo4KSkgJSBxO1xuICAgIH1cblxuICAgIGNvbnN0IEcxZ2VuID0gW1xuICAgICAgICAxbixcbiAgICAgICAgMm4sXG4gICAgICAgIDFuXG4gICAgXTtcblxuICAgIGNvbnN0IHBHMWdlbiA9IG1vZHVsZS5hbGxvYyhcbiAgICAgICAgW1xuICAgICAgICAgICAgLi4udXRpbHMkMi5iaWdJbnQyQnl0ZXNMRSggdG9Nb250Z29tZXJ5KEcxZ2VuWzBdKSwgZjFzaXplICksXG4gICAgICAgICAgICAuLi51dGlscyQyLmJpZ0ludDJCeXRlc0xFKCB0b01vbnRnb21lcnkoRzFnZW5bMV0pLCBmMXNpemUgKSxcbiAgICAgICAgICAgIC4uLnV0aWxzJDIuYmlnSW50MkJ5dGVzTEUoIHRvTW9udGdvbWVyeShHMWdlblsyXSksIGYxc2l6ZSApLFxuICAgICAgICBdXG4gICAgKTtcblxuICAgIGNvbnN0IEcxemVybyA9IFtcbiAgICAgICAgMG4sXG4gICAgICAgIDFuLFxuICAgICAgICAwblxuICAgIF07XG5cbiAgICBjb25zdCBwRzF6ZXJvID0gbW9kdWxlLmFsbG9jKFxuICAgICAgICBbXG4gICAgICAgICAgICAuLi51dGlscyQyLmJpZ0ludDJCeXRlc0xFKCB0b01vbnRnb21lcnkoRzF6ZXJvWzBdKSwgZjFzaXplICksXG4gICAgICAgICAgICAuLi51dGlscyQyLmJpZ0ludDJCeXRlc0xFKCB0b01vbnRnb21lcnkoRzF6ZXJvWzFdKSwgZjFzaXplICksXG4gICAgICAgICAgICAuLi51dGlscyQyLmJpZ0ludDJCeXRlc0xFKCB0b01vbnRnb21lcnkoRzF6ZXJvWzJdKSwgZjFzaXplIClcbiAgICAgICAgXVxuICAgICk7XG5cbiAgICBjb25zdCBHMmdlbiA9IFtcbiAgICAgICAgW1xuICAgICAgICAgICAgMTA4NTcwNDY5OTkwMjMwNTcxMzU5NDQ1NzA3NjIyMzI4Mjk0ODEzNzA3NTYzNTk1Nzg1MTgwODY5OTA1MTk5OTMyODU2NTU4NTI3ODFuLFxuICAgICAgICAgICAgMTE1NTk3MzIwMzI5ODYzODcxMDc5OTEwMDQwMjEzOTIyODU3ODM5MjU4MTI4NjE4MjExOTI1MzA5MTc0MDMxNTE0NTIzOTE4MDU2MzRuLFxuICAgICAgICBdLFtcbiAgICAgICAgICAgIDg0OTU2NTM5MjMxMjM0MzE0MTc2MDQ5NzMyNDc0ODkyNzI0Mzg0MTgxOTA1ODcyNjM2MDAxNDg3NzAyODA2NDkzMDY5NTgxMDE5MzBuLFxuICAgICAgICAgICAgNDA4MjM2Nzg3NTg2MzQzMzY4MTMzMjIwMzQwMzE0NTQzNTU2ODMxNjg1MTMyNzU5MzQwMTIwODEwNTc0MTA3NjIxNDEyMDA5MzUzMW4sXG4gICAgICAgIF0sW1xuICAgICAgICAgICAgMW4sXG4gICAgICAgICAgICAwbixcbiAgICAgICAgXVxuICAgIF07XG5cbiAgICBjb25zdCBwRzJnZW4gPSBtb2R1bGUuYWxsb2MoXG4gICAgICAgIFtcbiAgICAgICAgICAgIC4uLnV0aWxzJDIuYmlnSW50MkJ5dGVzTEUoIHRvTW9udGdvbWVyeShHMmdlblswXVswXSksIGYxc2l6ZSApLFxuICAgICAgICAgICAgLi4udXRpbHMkMi5iaWdJbnQyQnl0ZXNMRSggdG9Nb250Z29tZXJ5KEcyZ2VuWzBdWzFdKSwgZjFzaXplICksXG4gICAgICAgICAgICAuLi51dGlscyQyLmJpZ0ludDJCeXRlc0xFKCB0b01vbnRnb21lcnkoRzJnZW5bMV1bMF0pLCBmMXNpemUgKSxcbiAgICAgICAgICAgIC4uLnV0aWxzJDIuYmlnSW50MkJ5dGVzTEUoIHRvTW9udGdvbWVyeShHMmdlblsxXVsxXSksIGYxc2l6ZSApLFxuICAgICAgICAgICAgLi4udXRpbHMkMi5iaWdJbnQyQnl0ZXNMRSggdG9Nb250Z29tZXJ5KEcyZ2VuWzJdWzBdKSwgZjFzaXplICksXG4gICAgICAgICAgICAuLi51dGlscyQyLmJpZ0ludDJCeXRlc0xFKCB0b01vbnRnb21lcnkoRzJnZW5bMl1bMV0pLCBmMXNpemUgKSxcbiAgICAgICAgXVxuICAgICk7XG5cbiAgICBjb25zdCBHMnplcm8gPSBbXG4gICAgICAgIFtcbiAgICAgICAgICAgIDBuLFxuICAgICAgICAgICAgMG4sXG4gICAgICAgIF0sW1xuICAgICAgICAgICAgMW4sXG4gICAgICAgICAgICAwbixcbiAgICAgICAgXSxbXG4gICAgICAgICAgICAwbixcbiAgICAgICAgICAgIDBuLFxuICAgICAgICBdXG4gICAgXTtcblxuICAgIGNvbnN0IHBHMnplcm8gPSBtb2R1bGUuYWxsb2MoXG4gICAgICAgIFtcbiAgICAgICAgICAgIC4uLnV0aWxzJDIuYmlnSW50MkJ5dGVzTEUoIHRvTW9udGdvbWVyeShHMnplcm9bMF1bMF0pLCBmMXNpemUgKSxcbiAgICAgICAgICAgIC4uLnV0aWxzJDIuYmlnSW50MkJ5dGVzTEUoIHRvTW9udGdvbWVyeShHMnplcm9bMF1bMV0pLCBmMXNpemUgKSxcbiAgICAgICAgICAgIC4uLnV0aWxzJDIuYmlnSW50MkJ5dGVzTEUoIHRvTW9udGdvbWVyeShHMnplcm9bMV1bMF0pLCBmMXNpemUgKSxcbiAgICAgICAgICAgIC4uLnV0aWxzJDIuYmlnSW50MkJ5dGVzTEUoIHRvTW9udGdvbWVyeShHMnplcm9bMV1bMV0pLCBmMXNpemUgKSxcbiAgICAgICAgICAgIC4uLnV0aWxzJDIuYmlnSW50MkJ5dGVzTEUoIHRvTW9udGdvbWVyeShHMnplcm9bMl1bMF0pLCBmMXNpemUgKSxcbiAgICAgICAgICAgIC4uLnV0aWxzJDIuYmlnSW50MkJ5dGVzTEUoIHRvTW9udGdvbWVyeShHMnplcm9bMl1bMV0pLCBmMXNpemUgKSxcbiAgICAgICAgXVxuICAgICk7XG5cbiAgICBjb25zdCBwT25lVCA9IG1vZHVsZS5hbGxvYyhbXG4gICAgICAgIC4uLnV0aWxzJDIuYmlnSW50MkJ5dGVzTEUoIHRvTW9udGdvbWVyeSgxKSwgZjFzaXplICksXG4gICAgICAgIC4uLnV0aWxzJDIuYmlnSW50MkJ5dGVzTEUoIHRvTW9udGdvbWVyeSgwKSwgZjFzaXplICksXG4gICAgICAgIC4uLnV0aWxzJDIuYmlnSW50MkJ5dGVzTEUoIHRvTW9udGdvbWVyeSgwKSwgZjFzaXplICksXG4gICAgICAgIC4uLnV0aWxzJDIuYmlnSW50MkJ5dGVzTEUoIHRvTW9udGdvbWVyeSgwKSwgZjFzaXplICksXG4gICAgICAgIC4uLnV0aWxzJDIuYmlnSW50MkJ5dGVzTEUoIHRvTW9udGdvbWVyeSgwKSwgZjFzaXplICksXG4gICAgICAgIC4uLnV0aWxzJDIuYmlnSW50MkJ5dGVzTEUoIHRvTW9udGdvbWVyeSgwKSwgZjFzaXplICksXG4gICAgICAgIC4uLnV0aWxzJDIuYmlnSW50MkJ5dGVzTEUoIHRvTW9udGdvbWVyeSgwKSwgZjFzaXplICksXG4gICAgICAgIC4uLnV0aWxzJDIuYmlnSW50MkJ5dGVzTEUoIHRvTW9udGdvbWVyeSgwKSwgZjFzaXplICksXG4gICAgICAgIC4uLnV0aWxzJDIuYmlnSW50MkJ5dGVzTEUoIHRvTW9udGdvbWVyeSgwKSwgZjFzaXplICksXG4gICAgICAgIC4uLnV0aWxzJDIuYmlnSW50MkJ5dGVzTEUoIHRvTW9udGdvbWVyeSgwKSwgZjFzaXplICksXG4gICAgICAgIC4uLnV0aWxzJDIuYmlnSW50MkJ5dGVzTEUoIHRvTW9udGdvbWVyeSgwKSwgZjFzaXplICksXG4gICAgICAgIC4uLnV0aWxzJDIuYmlnSW50MkJ5dGVzTEUoIHRvTW9udGdvbWVyeSgwKSwgZjFzaXplICksXG4gICAgXSk7XG5cbiAgICBjb25zdCBwTm9uUmVzaWR1ZUY2ID0gbW9kdWxlLmFsbG9jKFtcbiAgICAgICAgLi4udXRpbHMkMi5iaWdJbnQyQnl0ZXNMRSggdG9Nb250Z29tZXJ5KDkpLCBmMXNpemUgKSxcbiAgICAgICAgLi4udXRpbHMkMi5iaWdJbnQyQnl0ZXNMRSggdG9Nb250Z29tZXJ5KDEpLCBmMXNpemUgKSxcbiAgICBdKTtcblxuICAgIGNvbnN0IHBUd29JbnYgPSBtb2R1bGUuYWxsb2MoW1xuICAgICAgICAuLi51dGlscyQyLmJpZ0ludDJCeXRlc0xFKCB0b01vbnRnb21lcnkoICBtb2RJbnYoMm4sIHEpKSwgZjFzaXplICksXG4gICAgICAgIC4uLnV0aWxzJDIuYmlnSW50MkJ5dGVzTEUoIDBuLCBmMXNpemUgKVxuICAgIF0pO1xuXG4gICAgY29uc3QgcEFsdEJuMTI4VHdpc3QgPSBwTm9uUmVzaWR1ZUY2O1xuXG4gICAgY29uc3QgcFR3aXN0Q29lZkIgPSBtb2R1bGUuYWxsb2MoW1xuICAgICAgICAuLi51dGlscyQyLmJpZ0ludDJCeXRlc0xFKCB0b01vbnRnb21lcnkoMTk0ODU4NzQ3NTE3NTkzNTQ3NzEwMjQyMzkyNjEwMjE3MjA1MDU3OTA2MTg0NjkzMDE3MjEwNjU1NjQ2MzEyOTY0NTI0NTc0NzgzNzNuKSwgZjFzaXplICksXG4gICAgICAgIC4uLnV0aWxzJDIuYmlnSW50MkJ5dGVzTEUoIHRvTW9udGdvbWVyeSgyNjY5Mjk3OTExMTk5OTExNjEyNDY5MDczODcxMzcyODM4NDI1NDUwNzY5NjUzMzI5MDAyODg1NjkzNzg1MTA5MTAzMDc2MzY2OTBuKSwgZjFzaXplICksXG4gICAgXSk7XG5cbiAgICBmdW5jdGlvbiBidWlsZF9tdWxOUjYoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4ICsgXCJfbXVsTlI2XCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInByXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5jYWxsKFxuICAgICAgICAgICAgICAgIGYybVByZWZpeCArIFwiX211bFwiLFxuICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KHBOb25SZXNpZHVlRjYpLFxuICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJ4XCIpLFxuICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwclwiKVxuICAgICAgICAgICAgKVxuICAgICAgICApO1xuICAgIH1cbiAgICBidWlsZF9tdWxOUjYoKTtcblxuICAgIGNvbnN0IGY2bVByZWZpeCA9IGJ1aWxkRjNtJDEobW9kdWxlLCBwcmVmaXgrXCJfbXVsTlI2XCIsIFwiZjZtXCIsIFwiZjJtXCIpO1xuXG4gICAgZnVuY3Rpb24gYnVpbGRfbXVsTlIxMigpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXggKyBcIl9tdWxOUjEyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInByXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5jYWxsKFxuICAgICAgICAgICAgICAgIGYybVByZWZpeCArIFwiX211bFwiLFxuICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KHBOb25SZXNpZHVlRjYpLFxuICAgICAgICAgICAgICAgIGMuaTMyX2FkZChjLmdldExvY2FsKFwieFwiKSwgYy5pMzJfY29uc3QobjgqNCkpLFxuICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwclwiKVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGMuY2FsbChcbiAgICAgICAgICAgICAgICBmMm1QcmVmaXggKyBcIl9jb3B5XCIsXG4gICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInhcIiksXG4gICAgICAgICAgICAgICAgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwclwiKSwgYy5pMzJfY29uc3QobjgqMikpLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGMuY2FsbChcbiAgICAgICAgICAgICAgICBmMm1QcmVmaXggKyBcIl9jb3B5XCIsXG4gICAgICAgICAgICAgICAgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJ4XCIpLCBjLmkzMl9jb25zdChuOCoyKSksXG4gICAgICAgICAgICAgICAgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwclwiKSwgYy5pMzJfY29uc3QobjgqNCkpLFxuICAgICAgICAgICAgKVxuICAgICAgICApO1xuICAgIH1cbiAgICBidWlsZF9tdWxOUjEyKCk7XG5cbiAgICBjb25zdCBmdG1QcmVmaXggPSBidWlsZEYybSQxKG1vZHVsZSwgcHJlZml4K1wiX211bE5SMTJcIiwgXCJmdG1cIiwgZjZtUHJlZml4KTtcblxuXG4gICAgY29uc3QgYXRlTG9vcENvdW50ID0gMjk3OTM5NjgyMDMxNTcwOTMyODhuO1xuICAgIGNvbnN0IGF0ZUxvb3BCaXRCeXRlcyA9IGJpdHMoYXRlTG9vcENvdW50KTtcbiAgICBjb25zdCBwQXRlTG9vcEJpdEJ5dGVzID0gbW9kdWxlLmFsbG9jKGF0ZUxvb3BCaXRCeXRlcyk7XG5cbiAgICBjb25zdCBhdGVDb2VmU2l6ZSA9IDMgKiBmMnNpemU7XG4gICAgY29uc3QgYXRlTkRibENvZWZzID0gYXRlTG9vcEJpdEJ5dGVzLmxlbmd0aC0xO1xuICAgIGNvbnN0IGF0ZU5BZGRDb2VmcyA9IGF0ZUxvb3BCaXRCeXRlcy5yZWR1Y2UoKGFjYywgYikgPT4gIGFjYyArICggYiE9MCA/IDEgOiAwKSAgICwwKTtcbiAgICBjb25zdCBhdGVOQ29lZnMgPSBhdGVOQWRkQ29lZnMgKyBhdGVORGJsQ29lZnMgKyAxO1xuICAgIGNvbnN0IHByZVBTaXplID0gMyoyKm44O1xuICAgIGNvbnN0IHByZVFTaXplID0gMypuOCoyICsgYXRlTkNvZWZzKmF0ZUNvZWZTaXplO1xuXG5cbiAgICBtb2R1bGUubW9kdWxlc1twcmVmaXhdID0ge1xuICAgICAgICBuNjQ6IG42NCxcbiAgICAgICAgcEcxZ2VuOiBwRzFnZW4sXG4gICAgICAgIHBHMXplcm86IHBHMXplcm8sXG4gICAgICAgIHBHMWI6IHBHMWIsXG4gICAgICAgIHBHMmdlbjogcEcyZ2VuLFxuICAgICAgICBwRzJ6ZXJvOiBwRzJ6ZXJvLFxuICAgICAgICBwRzJiOiBwRzJiLFxuICAgICAgICBwcTogbW9kdWxlLm1vZHVsZXNbXCJmMW1cIl0ucHEsXG4gICAgICAgIHByOiBwcixcbiAgICAgICAgcE9uZVQ6IHBPbmVULFxuICAgICAgICBwcmVQU2l6ZTogcHJlUFNpemUsXG4gICAgICAgIHByZVFTaXplOiBwcmVRU2l6ZSxcbiAgICAgICAgcjogci50b1N0cmluZygpLFxuICAgICAgICBxOiBxLnRvU3RyaW5nKClcbiAgICB9O1xuXG4gICAgLy8gY29uc29sZS5sb2coXCJQcmVQU2l6ZTogXCIgK3ByZVBTaXplKTtcbiAgICAvLyBjb25zb2xlLmxvZyhcIlByZVFTaXplOiBcIiArcHJlUVNpemUpO1xuXG4gICAgY29uc3QgZmluYWxFeHBaID0gNDk2NTY2MTM2NzE5Mjg0ODg4MW47XG5cbiAgICBmdW5jdGlvbiBuYWYobikge1xuICAgICAgICBsZXQgRSA9IG47XG4gICAgICAgIGNvbnN0IHJlcyA9IFtdO1xuICAgICAgICB3aGlsZSAoRSA+IDBuKSB7XG4gICAgICAgICAgICBpZiAoaXNPZGQkMShFKSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHogPSAyIC0gTnVtYmVyKEUgJSA0bik7XG4gICAgICAgICAgICAgICAgcmVzLnB1c2goIHogKTtcbiAgICAgICAgICAgICAgICBFID0gRSAtIEJpZ0ludCh6KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmVzLnB1c2goIDAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIEUgPSBFID4+IDFuO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXM7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYml0cyhuKSB7XG4gICAgICAgIGxldCBFID0gbjtcbiAgICAgICAgY29uc3QgcmVzID0gW107XG4gICAgICAgIHdoaWxlIChFID4gMG4pIHtcbiAgICAgICAgICAgIGlmIChpc09kZCQxKEUpKSB7XG4gICAgICAgICAgICAgICAgcmVzLnB1c2goIDEgKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmVzLnB1c2goIDAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIEUgPSBFID4+IDFuO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXM7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYnVpbGRQcmVwYXJlRzEoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4KyBcIl9wcmVwYXJlRzFcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwUFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInBwcmVQXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5jYWxsKGcxbVByZWZpeCArIFwiX25vcm1hbGl6ZVwiLCBjLmdldExvY2FsKFwicFBcIiksIGMuZ2V0TG9jYWwoXCJwcHJlUFwiKSksICAvLyBUT0RPIFJlbW92ZSBpZiBhbHJlYWR5IGluIGFmZmluZVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGJ1aWxkUHJlcEFkZFN0ZXAoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4KyBcIl9wcmVwQWRkU3RlcFwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInBRXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicFJcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwQ29lZlwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IFgyICA9IGMuZ2V0TG9jYWwoXCJwUVwiKTtcbiAgICAgICAgY29uc3QgWTIgID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwUVwiKSwgYy5pMzJfY29uc3QoZjJzaXplKSk7XG5cbiAgICAgICAgY29uc3QgWDEgID0gYy5nZXRMb2NhbChcInBSXCIpO1xuICAgICAgICBjb25zdCBZMSAgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInBSXCIpLCBjLmkzMl9jb25zdChmMnNpemUpKTtcbiAgICAgICAgY29uc3QgWjEgID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwUlwiKSwgYy5pMzJfY29uc3QoMipmMnNpemUpKTtcblxuICAgICAgICBjb25zdCBFTExfMCAgPSBjLmdldExvY2FsKFwicENvZWZcIik7XG4gICAgICAgIGNvbnN0IEVMTF9WVyA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwicENvZWZcIiksIGMuaTMyX2NvbnN0KGYyc2l6ZSkpO1xuICAgICAgICBjb25zdCBFTExfVlYgID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwQ29lZlwiKSwgYy5pMzJfY29uc3QoMipmMnNpemUpKTtcblxuICAgICAgICBjb25zdCBEID0gRUxMX1ZXO1xuICAgICAgICBjb25zdCBFID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYyc2l6ZSkpO1xuICAgICAgICBjb25zdCBGID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYyc2l6ZSkpO1xuICAgICAgICBjb25zdCBHID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYyc2l6ZSkpO1xuICAgICAgICBjb25zdCBIID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYyc2l6ZSkpO1xuICAgICAgICBjb25zdCBJID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYyc2l6ZSkpO1xuICAgICAgICBjb25zdCBKID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYyc2l6ZSkpO1xuICAgICAgICBjb25zdCBBVVggPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjJzaXplKSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgLy8gRCA9IFgxIC0gWDIqWjFcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9tdWxcIiwgWDIsIFoxLCBEKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9zdWJcIiwgWDEsIEQsIEQpLFxuXG4gICAgICAgICAgICAvLyBFID0gWTEgLSBZMipaMVxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX211bFwiLCBZMiwgWjEsIEUpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX3N1YlwiLCBZMSwgRSwgRSksXG5cbiAgICAgICAgICAgIC8vIEYgPSBEXjJcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9zcXVhcmVcIiwgRCwgRiksXG5cbiAgICAgICAgICAgIC8vIEcgPSBFXjJcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9zcXVhcmVcIiwgRSwgRyksXG5cbiAgICAgICAgICAgIC8vIEggPSBEKkZcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9tdWxcIiwgRCwgRiwgSCksXG5cbiAgICAgICAgICAgIC8vIEkgPSBYMSAqIEZcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9tdWxcIiwgWDEsIEYsIEkpLFxuXG4gICAgICAgICAgICAvLyBKID0gSCArIFoxKkcgLSAoSStJKVxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCBJLCBJLCBBVVgpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX211bFwiLCBaMSwgRywgSiksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIEgsIEosIEopLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX3N1YlwiLCBKLCBBVVgsIEopLFxuXG5cbiAgICAgICAgICAgIC8vIFgzIChYMSkgPSBEKkpcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9tdWxcIiwgRCwgSiwgWDEpLFxuXG4gICAgICAgICAgICAvLyBZMyAoWTEpID0gRSooSS1KKS0oSCpZMSlcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9tdWxcIiwgSCwgWTEsIFkxKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9zdWJcIiwgSSwgSiwgQVVYKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9tdWxcIiwgRSwgQVVYLCBBVVgpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX3N1YlwiLCBBVVgsIFkxLCBZMSksXG5cbiAgICAgICAgICAgIC8vIFozIChaMSkgPSBaMSpIXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbXVsXCIsIFoxLCBILCBaMSksXG5cbiAgICAgICAgICAgIC8vIGVsbF8wID0geGkgKiAoRSAqIFgyIC0gRCAqIFkyKVxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX211bFwiLCBELCBZMiwgQVVYKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9tdWxcIiwgRSwgWDIsIEVMTF8wKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9zdWJcIiwgRUxMXzAsIEFVWCwgRUxMXzApLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX211bFwiLCBFTExfMCwgYy5pMzJfY29uc3QocEFsdEJuMTI4VHdpc3QpLCBFTExfMCksXG5cblxuICAgICAgICAgICAgLy8gZWxsX1ZWID0gLSBFIChsYXRlcjogKiB4UClcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9uZWdcIiwgRSwgRUxMX1ZWKSxcblxuICAgICAgICAgICAgLy8gZWxsX1ZXID0gRCAobGF0ZXI6ICogeVAgICAgKVxuICAgICAgICAgICAgLy8gQWxyZWFkeSBhc3NpZ25lZFxuXG4gICAgICAgICk7XG4gICAgfVxuXG5cblxuICAgIGZ1bmN0aW9uIGJ1aWxkUHJlcERvdWJsZVN0ZXAoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4KyBcIl9wcmVwRGJsU3RlcFwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInBSXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicENvZWZcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCBYMSAgPSBjLmdldExvY2FsKFwicFJcIik7XG4gICAgICAgIGNvbnN0IFkxICA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwicFJcIiksIGMuaTMyX2NvbnN0KGYyc2l6ZSkpO1xuICAgICAgICBjb25zdCBaMSAgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInBSXCIpLCBjLmkzMl9jb25zdCgyKmYyc2l6ZSkpO1xuXG4gICAgICAgIGNvbnN0IEVMTF8wICA9IGMuZ2V0TG9jYWwoXCJwQ29lZlwiKTtcbiAgICAgICAgY29uc3QgRUxMX1ZXID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwQ29lZlwiKSwgYy5pMzJfY29uc3QoZjJzaXplKSk7XG4gICAgICAgIGNvbnN0IEVMTF9WViAgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInBDb2VmXCIpLCBjLmkzMl9jb25zdCgyKmYyc2l6ZSkpO1xuXG4gICAgICAgIGNvbnN0IEEgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjJzaXplKSk7XG4gICAgICAgIGNvbnN0IEIgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjJzaXplKSk7XG4gICAgICAgIGNvbnN0IEMgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjJzaXplKSk7XG4gICAgICAgIGNvbnN0IEQgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjJzaXplKSk7XG4gICAgICAgIGNvbnN0IEUgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjJzaXplKSk7XG4gICAgICAgIGNvbnN0IEYgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjJzaXplKSk7XG4gICAgICAgIGNvbnN0IEcgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjJzaXplKSk7XG4gICAgICAgIGNvbnN0IEggPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjJzaXplKSk7XG4gICAgICAgIGNvbnN0IEkgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjJzaXplKSk7XG4gICAgICAgIGNvbnN0IEogPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjJzaXplKSk7XG4gICAgICAgIGNvbnN0IEUyID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYyc2l6ZSkpO1xuICAgICAgICBjb25zdCBBVVggPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjJzaXplKSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuXG4gICAgICAgICAgICAvLyBBID0gWDEgKiBZMSAvIDJcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9tdWxcIiwgWTEsIGMuaTMyX2NvbnN0KHBUd29JbnYpLCBBKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9tdWxcIiwgWDEsIEEsIEEpLFxuXG4gICAgICAgICAgICAvLyBCID0gWTFeMlxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX3NxdWFyZVwiLCBZMSwgQiksXG5cbiAgICAgICAgICAgIC8vIEMgPSBaMV4yXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfc3F1YXJlXCIsIFoxLCBDKSxcblxuICAgICAgICAgICAgLy8gRCA9IDMgKiBDXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIEMsIEMsIEQpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCBELCBDLCBEKSxcblxuICAgICAgICAgICAgLy8gRSA9IHR3aXN0X2IgKiBEXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbXVsXCIsIGMuaTMyX2NvbnN0KHBUd2lzdENvZWZCKSwgRCwgRSksXG5cbiAgICAgICAgICAgIC8vIEYgPSAzICogRVxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCBFLCBFLCBGKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgRSwgRiwgRiksXG5cbiAgICAgICAgICAgIC8vIEcgPSAoQitGKS8yXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIEIsIEYsIEcpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX211bFwiLCBHLCBjLmkzMl9jb25zdChwVHdvSW52KSwgRyksXG5cbiAgICAgICAgICAgIC8vIEggPSAoWTErWjEpXjItKEIrQylcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgQiwgQywgQVVYKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgWTEsIFoxLCBIKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9zcXVhcmVcIiwgSCwgSCksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfc3ViXCIsIEgsIEFVWCwgSCksXG5cbiAgICAgICAgICAgIC8vIEkgPSBFLUJcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9zdWJcIiwgRSwgQiwgSSksXG5cbiAgICAgICAgICAgIC8vIEogPSBYMV4yXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfc3F1YXJlXCIsIFgxLCBKKSxcblxuICAgICAgICAgICAgLy8gRV9zcXVhcmVkID0gRV4yXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfc3F1YXJlXCIsIEUsIEUyKSxcblxuICAgICAgICAgICAgLy8gWDMgKFgxKSA9IEEgKiAoQi1GKVxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX3N1YlwiLCBCLCBGLCBBVVgpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX211bFwiLCBBLCBBVVgsIFgxKSxcblxuICAgICAgICAgICAgLy8gWTMgKFkxKSA9IEdeMiAtIDMqRV4yXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIEUyLCBFMiwgQVVYKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgRTIsIEFVWCwgQVVYKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9zcXVhcmVcIiwgRywgWTEpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX3N1YlwiLCBZMSwgQVVYLCBZMSksXG5cbiAgICAgICAgICAgIC8vIFozIChaMSkgPSBCICogSFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX211bFwiLCBCLCBILCBaMSksXG5cbiAgICAgICAgICAgIC8vIGVsbF8wID0geGkgKiBJXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbXVsXCIsIGMuaTMyX2NvbnN0KHBBbHRCbjEyOFR3aXN0KSwgSSwgRUxMXzApLFxuXG4gICAgICAgICAgICAvLyBlbGxfVlcgPSAtIEggKGxhdGVyOiAqIHlQKVxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX25lZ1wiLCBILCBFTExfVlcpLFxuXG4gICAgICAgICAgICAvLyBlbGxfVlYgPSAzKkogKGxhdGVyOiAqIHhQKVxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCBKLCBKLCBFTExfVlYpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCBKLCBFTExfVlYsIEVMTF9WViksXG5cbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBidWlsZE11bEJ5USgpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXggKyBcIl9tdWxCeVFcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwMVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInByXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgeCA9IGMuZ2V0TG9jYWwoXCJwMVwiKTtcbiAgICAgICAgY29uc3QgeSA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwicDFcIiksIGMuaTMyX2NvbnN0KGYyc2l6ZSkpO1xuICAgICAgICBjb25zdCB6ID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwMVwiKSwgYy5pMzJfY29uc3QoZjJzaXplKjIpKTtcbiAgICAgICAgY29uc3QgeDMgPSBjLmdldExvY2FsKFwicHJcIik7XG4gICAgICAgIGNvbnN0IHkzID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwclwiKSwgYy5pMzJfY29uc3QoZjJzaXplKSk7XG4gICAgICAgIGNvbnN0IHozID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwclwiKSwgYy5pMzJfY29uc3QoZjJzaXplKjIpKTtcblxuICAgICAgICBjb25zdCBNdWxCeVFYID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKFtcbiAgICAgICAgICAgIC4uLnV0aWxzJDIuYmlnSW50MkJ5dGVzTEUoIHRvTW9udGdvbWVyeShcIjIxNTc1NDYzNjM4MjgwODQzMDEwMzk4MzI0MjY5NDMwODI2MDk5MjY5MDQ0Mjc0MzQ3MjE2ODI3MjEyNjEzODY3ODM2NDM1MDI3MjYxXCIpLCBmMXNpemUgKSxcbiAgICAgICAgICAgIC4uLnV0aWxzJDIuYmlnSW50MkJ5dGVzTEUoIHRvTW9udGdvbWVyeShcIjEwMzA3NjAxNTk1ODczNzA5NzAwMTUyMjg0MjczODE2MTEyMjY0MDY5MjMwMTMwNjE2NDM2NzU1NjI1MTk0ODU0ODE1ODc1NzEzOTU0XCIpLCBmMXNpemUgKSxcbiAgICAgICAgXSkpO1xuXG4gICAgICAgIGNvbnN0IE11bEJ5UVkgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoW1xuICAgICAgICAgICAgLi4udXRpbHMkMi5iaWdJbnQyQnl0ZXNMRSggdG9Nb250Z29tZXJ5KFwiMjgyMTU2NTE4MjE5NDUzNjg0NDU0ODE1OTU2MTY5MzUwMjY1OTM1OTYxNzE4NTI0NDEyMDM2NzA3ODA3OTU1NDE4NjQ4NDEyNjU1NFwiKSwgZjFzaXplICksXG4gICAgICAgICAgICAuLi51dGlscyQyLmJpZ0ludDJCeXRlc0xFKCB0b01vbnRnb21lcnkoXCIzNTA1ODQzNzY3OTExNTU2Mzc4Njg3MDMwMzA5OTg0MjQ4ODQ1NTQwMjQzNTA5ODk5MjU5NjQxMDEzNjc4MDkzMDMzMTMwOTMwNDAzXCIpLCBmMXNpemUgKSxcbiAgICAgICAgXSkpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIC8vIFRoZSBmcm9iZW5pdXNNYXAoMSkgaW4gdGhpcyBmaWVsZCwgaXMgdGhlIGNvbmp1Z2F0ZVxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2Nvbmp1Z2F0ZVwiLCB4LCB4MyksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbXVsXCIsIE11bEJ5UVgsIHgzLCB4MyksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfY29uanVnYXRlXCIsIHksIHkzKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9tdWxcIiwgTXVsQnlRWSwgeTMsIHkzKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9jb25qdWdhdGVcIiwgeiwgejMpLFxuICAgICAgICApO1xuICAgIH1cblxuXG4gICAgZnVuY3Rpb24gYnVpbGRQcmVwYXJlRzIoKSB7XG4gICAgICAgIGJ1aWxkTXVsQnlRKCk7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4KyBcIl9wcmVwYXJlRzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwUVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInBwcmVRXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwicENvZWZcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJpXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgUVggPSBjLmdldExvY2FsKFwicFFcIik7XG5cbiAgICAgICAgY29uc3QgcFIgPSBtb2R1bGUuYWxsb2MoZjJzaXplKjMpO1xuICAgICAgICBjb25zdCBSID0gYy5pMzJfY29uc3QocFIpO1xuICAgICAgICBjb25zdCBSWCA9IGMuaTMyX2NvbnN0KHBSKTtcbiAgICAgICAgY29uc3QgUlkgPSBjLmkzMl9jb25zdChwUitmMnNpemUpO1xuICAgICAgICBjb25zdCBSWiA9IGMuaTMyX2NvbnN0KHBSKzIqZjJzaXplKTtcblxuICAgICAgICBjb25zdCBjUVggPSBjLmkzMl9hZGQoIGMuZ2V0TG9jYWwoXCJwcHJlUVwiKSwgYy5pMzJfY29uc3QoMCkpO1xuICAgICAgICBjb25zdCBjUVkgPSBjLmkzMl9hZGQoIGMuZ2V0TG9jYWwoXCJwcHJlUVwiKSwgYy5pMzJfY29uc3QoZjJzaXplKSk7XG5cbiAgICAgICAgY29uc3QgcFExID0gbW9kdWxlLmFsbG9jKGYyc2l6ZSozKTtcbiAgICAgICAgY29uc3QgUTEgPSBjLmkzMl9jb25zdChwUTEpO1xuXG4gICAgICAgIGNvbnN0IHBRMiA9IG1vZHVsZS5hbGxvYyhmMnNpemUqMyk7XG4gICAgICAgIGNvbnN0IFEyID0gYy5pMzJfY29uc3QocFEyKTtcbiAgICAgICAgY29uc3QgUTJZID0gYy5pMzJfY29uc3QocFEyICsgZjJzaXplKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLmNhbGwoZzJtUHJlZml4ICsgXCJfbm9ybWFsaXplXCIsIFFYLCBjUVgpLCAgLy8gVE9ETyBSZW1vdmUgaWYgYWxyZWFkeSBpbiBhZmZpbmVcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9jb3B5XCIsIGNRWCwgUlgpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2NvcHlcIiwgY1FZLCBSWSksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfb25lXCIsIFJaKSxcbiAgICAgICAgKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLnNldExvY2FsKFwicENvZWZcIiwgYy5pMzJfYWRkKCBjLmdldExvY2FsKFwicHByZVFcIiksIGMuaTMyX2NvbnN0KGYyc2l6ZSozKSkpLFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcImlcIiwgYy5pMzJfY29uc3QoYXRlTG9vcEJpdEJ5dGVzLmxlbmd0aC0yKSksXG4gICAgICAgICAgICBjLmJsb2NrKGMubG9vcChcblxuICAgICAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9wcmVwRGJsU3RlcFwiLCBSLCBjLmdldExvY2FsKFwicENvZWZcIikpLFxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJwQ29lZlwiLCBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInBDb2VmXCIpLCBjLmkzMl9jb25zdChhdGVDb2VmU2l6ZSkpKSxcblxuICAgICAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX2xvYWQ4X3MoYy5nZXRMb2NhbChcImlcIiksIHBBdGVMb29wQml0Qnl0ZXMpLFxuICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5jLmNhbGwocHJlZml4ICsgXCJfcHJlcEFkZFN0ZXBcIiwgY1FYLCBSLCBjLmdldExvY2FsKFwicENvZWZcIikpLFxuICAgICAgICAgICAgICAgICAgICAgICAgLi4uYy5zZXRMb2NhbChcInBDb2VmXCIsIGMuaTMyX2FkZChjLmdldExvY2FsKFwicENvZWZcIiksIGMuaTMyX2NvbnN0KGF0ZUNvZWZTaXplKSkpLFxuICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBjLmJyX2lmKDEsIGMuaTMyX2VxeiAoIGMuZ2V0TG9jYWwoXCJpXCIpICkpLFxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpXCIsIGMuaTMyX3N1YihjLmdldExvY2FsKFwiaVwiKSwgYy5pMzJfY29uc3QoMSkpKSxcbiAgICAgICAgICAgICAgICBjLmJyKDApXG4gICAgICAgICAgICApKVxuICAgICAgICApO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9tdWxCeVFcIiwgY1FYLCBRMSksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfbXVsQnlRXCIsIFExLCBRMilcbiAgICAgICAgKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbmVnXCIsIFEyWSwgUTJZKSxcblxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX3ByZXBBZGRTdGVwXCIsIFExLCBSLCBjLmdldExvY2FsKFwicENvZWZcIikpLFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcInBDb2VmXCIsIGMuaTMyX2FkZChjLmdldExvY2FsKFwicENvZWZcIiksIGMuaTMyX2NvbnN0KGF0ZUNvZWZTaXplKSkpLFxuXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfcHJlcEFkZFN0ZXBcIiwgUTIsIFIsIGMuZ2V0TG9jYWwoXCJwQ29lZlwiKSksXG4gICAgICAgICAgICBjLnNldExvY2FsKFwicENvZWZcIiwgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwQ29lZlwiKSwgYy5pMzJfY29uc3QoYXRlQ29lZlNpemUpKSksXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYnVpbGRNdWxCeTAyNE9sZCgpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrIFwiX19tdWxCeTAyNE9sZFwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInBFbGwwXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicEVsbFZXXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicEVsbFZWXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicFJcIiwgXCJpMzJcIik7ICAgICAgICAgICAgLy8gUmVzdWx0IGluIEYxMlxuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgeDAgID0gYy5nZXRMb2NhbChcInBFbGwwXCIpO1xuICAgICAgICBjb25zdCB4MiAgPSBjLmdldExvY2FsKFwicEVsbFZWXCIpO1xuICAgICAgICBjb25zdCB4NCAgPSBjLmdldExvY2FsKFwicEVsbFZXXCIpO1xuXG4gICAgICAgIGNvbnN0IHowICA9IGMuZ2V0TG9jYWwoXCJwUlwiKTtcblxuICAgICAgICBjb25zdCBwQVVYMTIgPSBtb2R1bGUuYWxsb2MoZnRzaXplKTtcbiAgICAgICAgY29uc3QgQVVYMTIgPSBjLmkzMl9jb25zdChwQVVYMTIpO1xuICAgICAgICBjb25zdCBBVVgxMl8wID0gYy5pMzJfY29uc3QocEFVWDEyKTtcbiAgICAgICAgY29uc3QgQVVYMTJfMiA9IGMuaTMyX2NvbnN0KHBBVVgxMitmMnNpemUpO1xuICAgICAgICBjb25zdCBBVVgxMl80ID0gYy5pMzJfY29uc3QocEFVWDEyK2Yyc2l6ZSoyKTtcbiAgICAgICAgY29uc3QgQVVYMTJfNiA9IGMuaTMyX2NvbnN0KHBBVVgxMitmMnNpemUqMyk7XG4gICAgICAgIGNvbnN0IEFVWDEyXzggPSBjLmkzMl9jb25zdChwQVVYMTIrZjJzaXplKjQpO1xuICAgICAgICBjb25zdCBBVVgxMl8xMCA9IGMuaTMyX2NvbnN0KHBBVVgxMitmMnNpemUqNSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfY29weVwiLCB4MCwgQVVYMTJfMCksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfemVyb1wiLCBBVVgxMl8yKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9jb3B5XCIsIHgyLCBBVVgxMl80KSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl96ZXJvXCIsIEFVWDEyXzYpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2NvcHlcIiwgeDQsIEFVWDEyXzgpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX3plcm9cIiwgQVVYMTJfMTApLFxuICAgICAgICAgICAgYy5jYWxsKGZ0bVByZWZpeCArIFwiX211bFwiLCBBVVgxMiwgejAsIHowKSxcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBidWlsZE11bEJ5MDI0KCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCsgXCJfX211bEJ5MDI0XCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicEVsbDBcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwRWxsVldcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwRWxsVlZcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwUlwiLCBcImkzMlwiKTsgICAgICAgICAgICAvLyBSZXN1bHQgaW4gRjEyXG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCB4MCAgPSBjLmdldExvY2FsKFwicEVsbDBcIik7XG4gICAgICAgIGNvbnN0IHgyICA9IGMuZ2V0TG9jYWwoXCJwRWxsVlZcIik7XG4gICAgICAgIGNvbnN0IHg0ICA9IGMuZ2V0TG9jYWwoXCJwRWxsVldcIik7XG5cbiAgICAgICAgY29uc3QgejAgID0gYy5nZXRMb2NhbChcInBSXCIpO1xuICAgICAgICBjb25zdCB6MSAgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInBSXCIpLCBjLmkzMl9jb25zdCgyKm44KSk7XG4gICAgICAgIGNvbnN0IHoyICA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwicFJcIiksIGMuaTMyX2NvbnN0KDQqbjgpKTtcbiAgICAgICAgY29uc3QgejMgID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwUlwiKSwgYy5pMzJfY29uc3QoNipuOCkpO1xuICAgICAgICBjb25zdCB6NCAgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInBSXCIpLCBjLmkzMl9jb25zdCg4Km44KSk7XG4gICAgICAgIGNvbnN0IHo1ICA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwicFJcIiksIGMuaTMyX2NvbnN0KDEwKm44KSk7XG5cbiAgICAgICAgY29uc3QgdDAgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjJzaXplKSk7XG4gICAgICAgIGNvbnN0IHQxID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYyc2l6ZSkpO1xuICAgICAgICBjb25zdCB0MiA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMnNpemUpKTtcbiAgICAgICAgY29uc3QgczAgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjJzaXplKSk7XG4gICAgICAgIGNvbnN0IFQzID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYyc2l6ZSkpO1xuICAgICAgICBjb25zdCBUNCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMnNpemUpKTtcbiAgICAgICAgY29uc3QgRDAgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjJzaXplKSk7XG4gICAgICAgIGNvbnN0IEQyID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYyc2l6ZSkpO1xuICAgICAgICBjb25zdCBENCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMnNpemUpKTtcbiAgICAgICAgY29uc3QgUzEgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjJzaXplKSk7XG4gICAgICAgIGNvbnN0IEFVWCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMnNpemUpKTtcblxuICAgICAgICBmLmFkZENvZGUoXG5cbiAgICAgICAgICAgIC8vIEQwID0gejAgKiB4MDtcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9tdWxcIiwgejAsIHgwLCBEMCksXG4gICAgICAgICAgICAvLyBEMiA9IHoyICogeDI7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbXVsXCIsIHoyLCB4MiwgRDIpLFxuICAgICAgICAgICAgLy8gRDQgPSB6NCAqIHg0O1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX211bFwiLCB6NCwgeDQsIEQ0KSxcbiAgICAgICAgICAgIC8vIHQyID0gejAgKyB6NDtcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgejAsIHo0LCB0MiksXG4gICAgICAgICAgICAvLyB0MSA9IHowICsgejI7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIHowLCB6MiwgdDEpLFxuICAgICAgICAgICAgLy8gczAgPSB6MSArIHozICsgejU7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIHoxLCB6MywgczApLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCBzMCwgejUsIHMwKSxcblxuXG4gICAgICAgICAgICAvLyBGb3Igei5hXy5hXyA9IHowLlxuICAgICAgICAgICAgLy8gUzEgPSB6MSAqIHgyO1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX211bFwiLCB6MSwgeDIsIFMxKSxcbiAgICAgICAgICAgIC8vIFQzID0gUzEgKyBENDtcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgUzEsIEQ0LCBUMyksXG4gICAgICAgICAgICAvLyBUNCA9IG15X0ZwNjo6bm9uX3Jlc2lkdWUgKiBUMyArIEQwO1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX211bFwiLCBjLmkzMl9jb25zdChwTm9uUmVzaWR1ZUY2KSwgVDMsIFQ0KSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgVDQsIEQwLCB6MCksXG4gICAgICAgICAgICAvLyB6MCA9IFQ0O1xuXG4gICAgICAgICAgICAvLyBGb3Igei5hXy5iXyA9IHoxXG4gICAgICAgICAgICAvLyBUMyA9IHo1ICogeDQ7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbXVsXCIsIHo1LCB4NCwgVDMpLFxuICAgICAgICAgICAgLy8gUzEgPSBTMSArIFQzO1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCBTMSwgVDMsIFMxKSxcbiAgICAgICAgICAgIC8vIFQzID0gVDMgKyBEMjtcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgVDMsIEQyLCBUMyksXG4gICAgICAgICAgICAvLyBUNCA9IG15X0ZwNjo6bm9uX3Jlc2lkdWUgKiBUMztcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9tdWxcIiwgYy5pMzJfY29uc3QocE5vblJlc2lkdWVGNiksIFQzLCBUNCksXG4gICAgICAgICAgICAvLyBUMyA9IHoxICogeDA7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbXVsXCIsIHoxLCB4MCwgVDMpLFxuICAgICAgICAgICAgLy8gUzEgPSBTMSArIFQzO1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCBTMSwgVDMsIFMxKSxcbiAgICAgICAgICAgIC8vIFQ0ID0gVDQgKyBUMztcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgVDQsIFQzLCB6MSksXG4gICAgICAgICAgICAvLyB6MSA9IFQ0O1xuXG5cblxuICAgICAgICAgICAgLy8gRm9yIHouYV8uY18gPSB6MlxuICAgICAgICAgICAgLy8gdDAgPSB4MCArIHgyO1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCB4MCwgeDIsIHQwKSxcbiAgICAgICAgICAgIC8vIFQzID0gdDEgKiB0MCAtIEQwIC0gRDI7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbXVsXCIsIHQxLCB0MCwgVDMpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCBEMCwgRDIsIEFVWCksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfc3ViXCIsIFQzLCBBVVgsIFQzKSxcbiAgICAgICAgICAgIC8vIFQ0ID0gejMgKiB4NDtcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9tdWxcIiwgejMsIHg0LCBUNCksXG4gICAgICAgICAgICAvLyBTMSA9IFMxICsgVDQ7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIFMxLCBUNCwgUzEpLFxuXG5cbiAgICAgICAgICAgIC8vIEZvciB6LmJfLmFfID0gejMgKHozIG5lZWRzIHoyKVxuICAgICAgICAgICAgLy8gdDAgPSB6MiArIHo0O1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCB6MiwgejQsIHQwKSxcbiAgICAgICAgICAgIC8vIFQzID0gVDMgKyBUNDtcbiAgICAgICAgICAgIC8vIHoyID0gVDM7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIFQzLCBUNCwgejIpLFxuICAgICAgICAgICAgLy8gdDEgPSB4MiArIHg0O1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCB4MiwgeDQsIHQxKSxcbiAgICAgICAgICAgIC8vIFQzID0gdDAgKiB0MSAtIEQyIC0gRDQ7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbXVsXCIsIHQxLCB0MCwgVDMpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCBEMiwgRDQsIEFVWCksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfc3ViXCIsIFQzLCBBVVgsIFQzKSxcbiAgICAgICAgICAgIC8vIFQ0ID0gbXlfRnA2Ojpub25fcmVzaWR1ZSAqIFQzO1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX211bFwiLCBjLmkzMl9jb25zdChwTm9uUmVzaWR1ZUY2KSwgVDMsIFQ0KSxcbiAgICAgICAgICAgIC8vIFQzID0gejMgKiB4MDtcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9tdWxcIiwgejMsIHgwLCBUMyksXG4gICAgICAgICAgICAvLyBTMSA9IFMxICsgVDM7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIFMxLCBUMywgUzEpLFxuICAgICAgICAgICAgLy8gVDQgPSBUNCArIFQzO1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCBUNCwgVDMsIHozKSxcbiAgICAgICAgICAgIC8vIHozID0gVDQ7XG5cbiAgICAgICAgICAgIC8vIEZvciB6LmJfLmJfID0gejRcbiAgICAgICAgICAgIC8vIFQzID0gejUgKiB4MjtcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9tdWxcIiwgejUsIHgyLCBUMyksXG4gICAgICAgICAgICAvLyBTMSA9IFMxICsgVDM7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIFMxLCBUMywgUzEpLFxuICAgICAgICAgICAgLy8gVDQgPSBteV9GcDY6Om5vbl9yZXNpZHVlICogVDM7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbXVsXCIsIGMuaTMyX2NvbnN0KHBOb25SZXNpZHVlRjYpLCBUMywgVDQpLFxuICAgICAgICAgICAgLy8gdDAgPSB4MCArIHg0O1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCB4MCwgeDQsIHQwKSxcbiAgICAgICAgICAgIC8vIFQzID0gdDIgKiB0MCAtIEQwIC0gRDQ7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbXVsXCIsIHQyLCB0MCwgVDMpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCBEMCwgRDQsIEFVWCksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfc3ViXCIsIFQzLCBBVVgsIFQzKSxcbiAgICAgICAgICAgIC8vIFQ0ID0gVDQgKyBUMztcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgVDQsIFQzLCB6NCksXG4gICAgICAgICAgICAvLyB6NCA9IFQ0O1xuXG4gICAgICAgICAgICAvLyBGb3Igei5iXy5jXyA9IHo1LlxuICAgICAgICAgICAgLy8gdDAgPSB4MCArIHgyICsgeDQ7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIHgwLCB4MiwgdDApLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCB0MCwgeDQsIHQwKSxcbiAgICAgICAgICAgIC8vIFQzID0gczAgKiB0MCAtIFMxO1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX211bFwiLCBzMCwgdDAsIFQzKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9zdWJcIiwgVDMsIFMxLCB6NSksXG4gICAgICAgICAgICAvLyB6NSA9IFQzO1xuXG4gICAgICAgICk7XG4gICAgfVxuXG5cbiAgICBmdW5jdGlvbiBidWlsZE1pbGxlckxvb3AoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4KyBcIl9taWxsZXJMb29wXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicHByZVBcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwcHJlUVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInJcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJwQ29lZlwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcImlcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCBwcmVQX1BYID0gYy5nZXRMb2NhbChcInBwcmVQXCIpO1xuICAgICAgICBjb25zdCBwcmVQX1BZID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwcHJlUFwiKSwgYy5pMzJfY29uc3QoZjFzaXplKSk7XG5cbiAgICAgICAgY29uc3QgRUxMXzAgID0gYy5nZXRMb2NhbChcInBDb2VmXCIpO1xuICAgICAgICBjb25zdCBFTExfVlcgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInBDb2VmXCIpLCBjLmkzMl9jb25zdChmMnNpemUpKTtcbiAgICAgICAgY29uc3QgRUxMX1ZWICA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwicENvZWZcIiksIGMuaTMyX2NvbnN0KDIqZjJzaXplKSk7XG5cblxuICAgICAgICBjb25zdCBwVlcgPSBtb2R1bGUuYWxsb2MoZjJzaXplKTtcbiAgICAgICAgY29uc3QgVlcgPSBjLmkzMl9jb25zdChwVlcpO1xuICAgICAgICBjb25zdCBwVlYgPSBtb2R1bGUuYWxsb2MoZjJzaXplKTtcbiAgICAgICAgY29uc3QgVlYgPSBjLmkzMl9jb25zdChwVlYpO1xuXG4gICAgICAgIGNvbnN0IEYgPSBjLmdldExvY2FsKFwiclwiKTtcblxuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuY2FsbChmdG1QcmVmaXggKyBcIl9vbmVcIiwgRiksXG5cbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJwQ29lZlwiLCBjLmkzMl9hZGQoIGMuZ2V0TG9jYWwoXCJwcHJlUVwiKSwgYy5pMzJfY29uc3QoZjJzaXplKjMpKSksXG5cbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpXCIsIGMuaTMyX2NvbnN0KGF0ZUxvb3BCaXRCeXRlcy5sZW5ndGgtMikpLFxuICAgICAgICAgICAgYy5ibG9jayhjLmxvb3AoXG5cblxuICAgICAgICAgICAgICAgIGMuY2FsbChmdG1QcmVmaXggKyBcIl9zcXVhcmVcIiwgRiwgRiksXG5cbiAgICAgICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbXVsMVwiLCBFTExfVlcscHJlUF9QWSwgVlcpLFxuICAgICAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9tdWwxXCIsIEVMTF9WViwgcHJlUF9QWCwgVlYpLFxuICAgICAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9fbXVsQnkwMjRcIiwgRUxMXzAsIFZXLCBWViwgRiksXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcInBDb2VmXCIsIGMuaTMyX2FkZChjLmdldExvY2FsKFwicENvZWZcIiksIGMuaTMyX2NvbnN0KGF0ZUNvZWZTaXplKSkpLFxuXG4gICAgICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfbG9hZDhfcyhjLmdldExvY2FsKFwiaVwiKSwgcEF0ZUxvb3BCaXRCeXRlcyksXG4gICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLmMuY2FsbChmMm1QcmVmaXggKyBcIl9tdWwxXCIsIEVMTF9WVywgcHJlUF9QWSwgVlcpLFxuICAgICAgICAgICAgICAgICAgICAgICAgLi4uYy5jYWxsKGYybVByZWZpeCArIFwiX211bDFcIiwgRUxMX1ZWLCBwcmVQX1BYLCBWViksXG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLmMuY2FsbChwcmVmaXggKyBcIl9fbXVsQnkwMjRcIiwgRUxMXzAsIFZXLCBWViwgRiksXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5jLnNldExvY2FsKFwicENvZWZcIiwgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwQ29lZlwiKSwgYy5pMzJfY29uc3QoYXRlQ29lZlNpemUpKSksXG5cbiAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgYy5icl9pZigxLCBjLmkzMl9lcXogKCBjLmdldExvY2FsKFwiaVwiKSApKSxcbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFwiaVwiLCBjLmkzMl9zdWIoYy5nZXRMb2NhbChcImlcIiksIGMuaTMyX2NvbnN0KDEpKSksXG4gICAgICAgICAgICAgICAgYy5icigwKVxuICAgICAgICAgICAgKSlcblxuICAgICAgICApO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9tdWwxXCIsIEVMTF9WVywgcHJlUF9QWSwgVlcpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX211bDFcIiwgRUxMX1ZWLCBwcmVQX1BYLCBWViksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfX211bEJ5MDI0XCIsIEVMTF8wLCBWVywgVlYsIEYpLFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcInBDb2VmXCIsIGMuaTMyX2FkZChjLmdldExvY2FsKFwicENvZWZcIiksIGMuaTMyX2NvbnN0KGF0ZUNvZWZTaXplKSkpLFxuXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbXVsMVwiLCBFTExfVlcsIHByZVBfUFksIFZXKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9tdWwxXCIsIEVMTF9WViwgcHJlUF9QWCwgVlYpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX19tdWxCeTAyNFwiLCBFTExfMCwgVlcsIFZWLCBGKSxcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJwQ29lZlwiLCBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInBDb2VmXCIpLCBjLmkzMl9jb25zdChhdGVDb2VmU2l6ZSkpKSxcblxuICAgICAgICApO1xuXG4gICAgfVxuXG5cbiAgICBmdW5jdGlvbiBidWlsZEZyb2Jlbml1c01hcChuKSB7XG4gICAgICAgIGNvbnN0IEYxMiA9IFtcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICBbMW4sIDBuXSxcbiAgICAgICAgICAgICAgICBbMW4sIDBuXSxcbiAgICAgICAgICAgICAgICBbMW4sIDBuXSxcbiAgICAgICAgICAgICAgICBbMW4sIDBuXSxcbiAgICAgICAgICAgICAgICBbMW4sIDBuXSxcbiAgICAgICAgICAgICAgICBbMW4sIDBuXSxcbiAgICAgICAgICAgICAgICBbMW4sIDBuXSxcbiAgICAgICAgICAgICAgICBbMW4sIDBuXSxcbiAgICAgICAgICAgICAgICBbMW4sIDBuXSxcbiAgICAgICAgICAgICAgICBbMW4sIDBuXSxcbiAgICAgICAgICAgICAgICBbMW4sIDBuXSxcbiAgICAgICAgICAgICAgICBbMW4sIDBuXSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgWzFuLCAwbl0sXG4gICAgICAgICAgICAgICAgWzgzNzYxMTg4NjU3NjM4MjE0OTY1ODM5NzM4Njc2MjYzNjQwOTI1ODk5MDYwNjU4NjgyOTg3NzY5MDk2MTc5MTYwMTg3NjgzNDAwODBuLCAxNjQ2OTgyMzMyMzA3NzgwODIyMzg4OTEzNzI0MTE3NjUzNjc5OTAwOTI4NjY0NjEwODE2OTkzNTY1OTMwMTYxMzk2MTcxMjE5ODMxNm5dLFxuICAgICAgICAgICAgICAgIFsyMTg4ODI0Mjg3MTgzOTI3NTIyMDA0MjQ0NTI2MDEwOTE1MzE2NzI3NzcwNzQxNDQ3MjA2MTY0MTcxNDc1ODYzNTc2NTAyMDU1NjYxN24sIDBuXSxcbiAgICAgICAgICAgICAgICBbMTE2OTc0MjM0OTYzNTgxNTQzMDQ4MjU3ODI5MjI1ODQ3MjUzMTI5MTIzODM0NDExNTk1MDUwMzg3OTQwMjcxMDU3Nzg5NTQxODQzMTluLCAzMDM4NDczODkxMzUwNjU4ODc0MjI3ODM0NTQ4Nzc2MDk5NDE0NTYzNDkxODg5MTk3MTkyNzIzNDUwODM5NTQ0Mzc4NjA0MDk2MDFuXSxcbiAgICAgICAgICAgICAgICBbMjE4ODgyNDI4NzE4MzkyNzUyMjAwNDI0NDUyNjAxMDkxNTMxNjcyNzc3MDc0MTQ0NzIwNjE2NDE3MTQ3NTg2MzU3NjUwMjA1NTY2MTZuLCAwbl0sXG4gICAgICAgICAgICAgICAgWzMzMjEzMDQ2MzA1OTQzMzI4MDgyNDE4MDkwNTQ5NTgzNjEyMjAzMjI0NzczNzUyOTEyMDYyNjE4ODQ0MDkxODk3NjAxODU4NDQyMzluLCA1NzIyMjY2OTM3ODk2NTMyODg1NzgwMDUxOTU4OTU4MzQ4MjMxMTQzMzczNzAwMTA5MzcyOTk5Mzc0ODIwMjM1MTIxMzc0NDE5ODY4bl0sXG4gICAgICAgICAgICAgICAgWzIxODg4MjQyODcxODM5Mjc1MjIyMjQ2NDA1NzQ1MjU3Mjc1MDg4Njk2MzExMTU3Mjk3ODIzNjYyNjg5MDM3ODk0NjQ1MjI2MjA4NTgybiwgMG5dLFxuICAgICAgICAgICAgICAgIFsxMzUxMjEyNDAwNjA3NTQ1MzcyNTY2MjQzMTg3NzYzMDkxMDk5NjEwNjQwNTA5MTQyOTUyNDg4NTc3OTQxOTk3ODYyNjQ1Nzg2ODUwM24sIDU0MTg0MTk1NDg3NjE0NjY5OTgzNTcyNjg1MDQwODA3MzgyODk2ODcwMjQ1MTExODk2NTM3MjcwMjk3MzYyODA2ODM1MTQwMTAyNjduXSxcbiAgICAgICAgICAgICAgICBbMjIwMzk2MDQ4NTE0ODEyMTkyMTQxODYwMzc0MjgyNTc2MjAyMDk3NDI3OTI1ODg4MDIwNTY1MTk2Nm4sIDBuXSxcbiAgICAgICAgICAgICAgICBbMTAxOTA4MTkzNzU0ODExMjA5MTc0MjA2MjI4MjI2NzI1NDk3NzU3ODM5Mjc3MTYxMzgzMTg2MjM4OTUwMTA3ODg4NjYyNzIwMjQyNjRuLCAyMTU4NDM5NTQ4MjcwNDIwOTMzNDgyMzYyMjI5MDM3OTY2NTE0NzIzOTk2MTk2ODM3ODEwNDM5MDM0Mzk1Mzk0MDIwNzM2NTc5ODk4Mm5dLFxuICAgICAgICAgICAgICAgIFsyMjAzOTYwNDg1MTQ4MTIxOTIxNDE4NjAzNzQyODI1NzYyMDIwOTc0Mjc5MjU4ODgwMjA1NjUxOTY3biwgMG5dLFxuICAgICAgICAgICAgICAgIFsxODU2NjkzODI0MTI0NDk0MjQxNDAwNDU5NjY5MDI5ODkxMzg2ODM3MzgzMzc4MjAwNjYxNzQwMDgwNDYyODcwNDg4NTA0MDM2NDM0NG4sIDE2MTY1OTc1OTMzOTQyNzQyMzM2NDY2MzUzNzg2Mjk4OTI2ODU3NTUyOTM3NDU3MTg4NDUwNjYzMzE0MjE3NjU5NTIzODUxNzg4NzE1bl0sXG4gICAgICAgICAgICBdXG4gICAgICAgIF07XG5cbiAgICAgICAgY29uc3QgRjYgPSBbXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgWzFuLCAwbl0sXG4gICAgICAgICAgICAgICAgWzFuLCAwbl0sXG4gICAgICAgICAgICAgICAgWzFuLCAwbl0sXG4gICAgICAgICAgICAgICAgWzFuLCAwbl0sXG4gICAgICAgICAgICAgICAgWzFuLCAwbl0sXG4gICAgICAgICAgICAgICAgWzFuLCAwbl0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgIFsxbiwgMG5dLFxuICAgICAgICAgICAgICAgIFsyMTU3NTQ2MzYzODI4MDg0MzAxMDM5ODMyNDI2OTQzMDgyNjA5OTI2OTA0NDI3NDM0NzIxNjgyNzIxMjYxMzg2NzgzNjQzNTAyNzI2MW4sIDEwMzA3NjAxNTk1ODczNzA5NzAwMTUyMjg0MjczODE2MTEyMjY0MDY5MjMwMTMwNjE2NDM2NzU1NjI1MTk0ODU0ODE1ODc1NzEzOTU0bl0sXG4gICAgICAgICAgICAgICAgWzIxODg4MjQyODcxODM5Mjc1MjIwMDQyNDQ1MjYwMTA5MTUzMTY3Mjc3NzA3NDE0NDcyMDYxNjQxNzE0NzU4NjM1NzY1MDIwNTU2NjE2biwgMG5dLFxuICAgICAgICAgICAgICAgIFszNzcyMDAwODgxOTE5ODUzNzc2NDMzNjk1MTg2NzEzODU4MjM5MDA5MDczNTkzODE3MTk1NzcxNzczMzgxOTE5MzE2NDE5MzQ1MjYxbiwgMjIzNjU5NTQ5NTk2NzI0NTE4ODI4MTcwMTI0ODIwMzE4MTc5NTEyMTA2ODkwMjYwNTg2MTIyNzg1NTI2MTEzNzgyMDk0NDAwODkyNm5dLFxuICAgICAgICAgICAgICAgIFsyMjAzOTYwNDg1MTQ4MTIxOTIxNDE4NjAzNzQyODI1NzYyMDIwOTc0Mjc5MjU4ODgwMjA1NjUxOTY2biwgMG5dLFxuICAgICAgICAgICAgICAgIFsxODQyOTAyMTIyMzQ3Nzg1MzY1NzY2MDc5MjAzNDM2OTg2NTgzOTExNDUwNDQ0NjQzMTIzNDcyNjM5MjA4MDAwMjEzNzU5ODA0NDY0NG4sIDkzNDQwNDU3Nzk5OTgzMjAzMzM4MTI0MjAyMjMyMzc5ODEwMjk1MDYwMTIxMjQwNzU1MjU2NzkyMDg1ODE5MDIwMDg0MDY0ODU3MDNuXSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgWzFuLCAwbl0sXG4gICAgICAgICAgICAgICAgWzI1ODE5MTEzNDQ0NjcwMDkzMzUyNjczMTExMTU0Njg4MDMwOTk1NTE2NjU2MDUwNzYxOTY3NDA4Njc4MDUyNTg1NjgyMzQzNDYzMzhuLCAxOTkzNzc1Njk3MTc3NTY0Nzk4Nzk5NTkzMjE2OTkyOTM0MTk5NDMxNDY0MDY1Mjk2NDk0OTQ0ODMxMzM3NDQ3MjQwMDcxNjY2MTAzMG5dLFxuICAgICAgICAgICAgICAgIFsyMjAzOTYwNDg1MTQ4MTIxOTIxNDE4NjAzNzQyODI1NzYyMDIwOTc0Mjc5MjU4ODgwMjA1NjUxOTY2biwgMG5dLFxuICAgICAgICAgICAgICAgIFs1MzI0NDc5MjAyNDQ5OTAzNTQyNzI2NzgzMzk1NTA2MjE0NDgxOTI4MjU3NzYyNDAwNjQzMjc5NzgwMzQzMzY4NTU3Mjk3MTM1NzE4biwgMTYyMDg5MDAzODA3Mzc2OTMwODQ5MTk0OTUxMjczMzQzODc5ODEzOTM3MjY0MTk4NTY4ODg3OTk5MTc5MTQxODA5ODg4NDQxMjMwMzluXSxcbiAgICAgICAgICAgICAgICBbMjE4ODgyNDI4NzE4MzkyNzUyMjAwNDI0NDUyNjAxMDkxNTMxNjcyNzc3MDc0MTQ0NzIwNjE2NDE3MTQ3NTg2MzU3NjUwMjA1NTY2MTZuLCAwbl0sXG4gICAgICAgICAgICAgICAgWzEzOTgxODUyMzI0OTIyMzYyMzQ0MjUyMzExMjM0MjgyMjU3NTA3MjE2Mzg3Nzg5ODIwOTgzNjQyMDQwODg5MjY3NTE5Njk0NzI2NTI3biwgNzYyOTgyODM5MTE2NTIwOTM3MTU3NzM4NDE5MzI1MDgyMDIwMTY4NDI1NTI0MTc3MzgwOTA3NzE0Njc4NzEzNTkwMDg5MTYzMzA5N25dLFxuICAgICAgICAgICAgXVxuICAgICAgICBdO1xuXG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4KyBcIl9fZnJvYmVuaXVzTWFwXCIrbik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiclwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGZvciAobGV0IGk9MDsgaTw2OyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IFggPSAoaT09MCkgPyBjLmdldExvY2FsKFwieFwiKSA6IGMuaTMyX2FkZChjLmdldExvY2FsKFwieFwiKSwgYy5pMzJfY29uc3QoaSpmMnNpemUpKTtcbiAgICAgICAgICAgIGNvbnN0IFhjMCA9IFg7XG4gICAgICAgICAgICBjb25zdCBYYzEgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInhcIiksIGMuaTMyX2NvbnN0KGkqZjJzaXplICsgZjFzaXplKSk7XG4gICAgICAgICAgICBjb25zdCBSID0gKGk9PTApID8gYy5nZXRMb2NhbChcInJcIikgOiBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInJcIiksIGMuaTMyX2NvbnN0KGkqZjJzaXplKSk7XG4gICAgICAgICAgICBjb25zdCBSYzAgPSBSO1xuICAgICAgICAgICAgY29uc3QgUmMxID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJyXCIpLCBjLmkzMl9jb25zdChpKmYyc2l6ZSArIGYxc2l6ZSkpO1xuICAgICAgICAgICAgY29uc3QgY29lZiA9IG11bDIoRjEyW01hdGguZmxvb3IoaS8zKV1bbiUxMl0gLCBGNltpJTNdW24lNl0pO1xuICAgICAgICAgICAgY29uc3QgcENvZWYgPSBtb2R1bGUuYWxsb2MoW1xuICAgICAgICAgICAgICAgIC4uLnV0aWxzJDIuYmlnSW50MkJ5dGVzTEUodG9Nb250Z29tZXJ5KGNvZWZbMF0pLCAzMiksXG4gICAgICAgICAgICAgICAgLi4udXRpbHMkMi5iaWdJbnQyQnl0ZXNMRSh0b01vbnRnb21lcnkoY29lZlsxXSksIDMyKSxcbiAgICAgICAgICAgIF0pO1xuICAgICAgICAgICAgaWYgKG4lMiA9PSAxKSB7XG4gICAgICAgICAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4ICsgXCJfY29weVwiLCBYYzAsIFJjMCksXG4gICAgICAgICAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXggKyBcIl9uZWdcIiwgWGMxLCBSYzEpLFxuICAgICAgICAgICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbXVsXCIsIFIsIGMuaTMyX2NvbnN0KHBDb2VmKSwgUiksXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgZi5hZGRDb2RlKGMuY2FsbChmMm1QcmVmaXggKyBcIl9tdWxcIiwgWCwgYy5pMzJfY29uc3QocENvZWYpLCBSKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBmdW5jdGlvbiBtdWwyKGEsIGIpIHtcbiAgICAgICAgICAgIGNvbnN0IGFjMCA9IEJpZ0ludChhWzBdKTtcbiAgICAgICAgICAgIGNvbnN0IGFjMSA9IEJpZ0ludChhWzFdKTtcbiAgICAgICAgICAgIGNvbnN0IGJjMCA9IEJpZ0ludChiWzBdKTtcbiAgICAgICAgICAgIGNvbnN0IGJjMSA9IEJpZ0ludChiWzFdKTtcbiAgICAgICAgICAgIGNvbnN0IHJlcyA9IFtcbiAgICAgICAgICAgICAgICAoYWMwICogYmMwIC0gKCAgYWMxICogYmMxKSAgKSAlIHEsXG4gICAgICAgICAgICAgICAgKGFjMCAqIGJjMSArICggIGFjMSAqIGJjMCkgICkgJSBxLFxuICAgICAgICAgICAgXTtcbiAgICAgICAgICAgIGlmIChpc05lZ2F0aXZlJDIocmVzWzBdKSkgcmVzWzBdID0gcmVzWzBdICsgcTtcbiAgICAgICAgICAgIHJldHVybiByZXM7XG4gICAgICAgIH1cblxuICAgIH1cblxuXG5cbiAgICBmdW5jdGlvbiBidWlsZEZpbmFsRXhwb25lbnRpYXRpb25GaXJzdENodW5rKCkge1xuXG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4KyBcIl9fZmluYWxFeHBvbmVudGlhdGlvbkZpcnN0Q2h1bmtcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiclwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IGVsdCA9IGMuZ2V0TG9jYWwoXCJ4XCIpO1xuICAgICAgICBjb25zdCBlbHRDMCA9IGVsdDtcbiAgICAgICAgY29uc3QgZWx0QzEgPSBjLmkzMl9hZGQoZWx0LCBjLmkzMl9jb25zdChuOCo2KSk7XG4gICAgICAgIGNvbnN0IHIgPSBjLmdldExvY2FsKFwiclwiKTtcbiAgICAgICAgY29uc3QgcEEgPSBtb2R1bGUuYWxsb2MoZnRzaXplKTtcbiAgICAgICAgY29uc3QgQSA9IGMuaTMyX2NvbnN0KHBBKTtcbiAgICAgICAgY29uc3QgQWMwID0gQTtcbiAgICAgICAgY29uc3QgQWMxID0gYy5pMzJfY29uc3QocEEgKyBuOCo2KTtcbiAgICAgICAgY29uc3QgQiA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmdHNpemUpKTtcbiAgICAgICAgY29uc3QgQyA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmdHNpemUpKTtcbiAgICAgICAgY29uc3QgRCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmdHNpemUpKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICAvLyBjb25zdCBhbHRfYm4xMjhfRnExMiBBID0gYWx0X2JuMTI4X0ZxMTIoZWx0LmMwLC1lbHQuYzEpO1xuICAgICAgICAgICAgYy5jYWxsKGY2bVByZWZpeCArIFwiX2NvcHlcIiwgZWx0QzAsIEFjMCksXG4gICAgICAgICAgICBjLmNhbGwoZjZtUHJlZml4ICsgXCJfbmVnXCIsIGVsdEMxLCBBYzEpLFxuXG4gICAgICAgICAgICAvLyBjb25zdCBhbHRfYm4xMjhfRnExMiBCID0gZWx0LmludmVyc2UoKTtcbiAgICAgICAgICAgIGMuY2FsbChmdG1QcmVmaXggKyBcIl9pbnZlcnNlXCIsIGVsdCwgQiksXG5cbiAgICAgICAgICAgIC8vIGNvbnN0IGFsdF9ibjEyOF9GcTEyIEMgPSBBICogQjtcbiAgICAgICAgICAgIGMuY2FsbChmdG1QcmVmaXggKyBcIl9tdWxcIiwgQSwgQiwgQyksXG4gICAgICAgICAgICAvLyBjb25zdCBhbHRfYm4xMjhfRnExMiBEID0gQy5Gcm9iZW5pdXNfbWFwKDIpO1xuICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX19mcm9iZW5pdXNNYXAyXCIsIEMsIEQpLFxuICAgICAgICAgICAgLy8gY29uc3QgYWx0X2JuMTI4X0ZxMTIgcmVzdWx0ID0gRCAqIEM7XG4gICAgICAgICAgICBjLmNhbGwoZnRtUHJlZml4ICsgXCJfbXVsXCIsIEMsIEQsIHIpLFxuICAgICAgICApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGJ1aWxkQ3ljbG90b21pY1NxdWFyZSgpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrIFwiX19jeWNsb3RvbWljU3F1YXJlXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInJcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCB4MCA9IGMuZ2V0TG9jYWwoXCJ4XCIpO1xuICAgICAgICBjb25zdCB4NCA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwieFwiKSwgYy5pMzJfY29uc3QoZjJzaXplKSk7XG4gICAgICAgIGNvbnN0IHgzID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJ4XCIpLCBjLmkzMl9jb25zdCgyKmYyc2l6ZSkpO1xuICAgICAgICBjb25zdCB4MiA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwieFwiKSwgYy5pMzJfY29uc3QoMypmMnNpemUpKTtcbiAgICAgICAgY29uc3QgeDEgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInhcIiksIGMuaTMyX2NvbnN0KDQqZjJzaXplKSk7XG4gICAgICAgIGNvbnN0IHg1ID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJ4XCIpLCBjLmkzMl9jb25zdCg1KmYyc2l6ZSkpO1xuXG4gICAgICAgIGNvbnN0IHIwID0gYy5nZXRMb2NhbChcInJcIik7XG4gICAgICAgIGNvbnN0IHI0ID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJyXCIpLCBjLmkzMl9jb25zdChmMnNpemUpKTtcbiAgICAgICAgY29uc3QgcjMgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInJcIiksIGMuaTMyX2NvbnN0KDIqZjJzaXplKSk7XG4gICAgICAgIGNvbnN0IHIyID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJyXCIpLCBjLmkzMl9jb25zdCgzKmYyc2l6ZSkpO1xuICAgICAgICBjb25zdCByMSA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwiclwiKSwgYy5pMzJfY29uc3QoNCpmMnNpemUpKTtcbiAgICAgICAgY29uc3QgcjUgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInJcIiksIGMuaTMyX2NvbnN0KDUqZjJzaXplKSk7XG5cbiAgICAgICAgY29uc3QgdDAgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjJzaXplKSk7XG4gICAgICAgIGNvbnN0IHQxID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYyc2l6ZSkpO1xuICAgICAgICBjb25zdCB0MiA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMnNpemUpKTtcbiAgICAgICAgY29uc3QgdDMgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjJzaXplKSk7XG4gICAgICAgIGNvbnN0IHQ0ID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYyc2l6ZSkpO1xuICAgICAgICBjb25zdCB0NSA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMnNpemUpKTtcbiAgICAgICAgY29uc3QgdG1wID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYyc2l6ZSkpO1xuICAgICAgICBjb25zdCBBVVggPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjJzaXplKSk7XG5cblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICAvLyAgICAvLyB0MCArIHQxKnkgPSAoejAgKyB6MSp5KV4yID0gYV4yXG4gICAgICAgICAgICAvLyAgICB0bXAgPSB6MCAqIHoxO1xuICAgICAgICAgICAgLy8gICAgdDAgPSAoejAgKyB6MSkgKiAoejAgKyBteV9GcDY6Om5vbl9yZXNpZHVlICogejEpIC0gdG1wIC0gbXlfRnA2Ojpub25fcmVzaWR1ZSAqIHRtcDtcbiAgICAgICAgICAgIC8vICAgIHQxID0gdG1wICsgdG1wO1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX211bFwiLCB4MCwgeDEsIHRtcCksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbXVsXCIsIHgxLCBjLmkzMl9jb25zdChwTm9uUmVzaWR1ZUY2KSwgdDApLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCB4MCwgdDAsIHQwKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgeDAsIHgxLCBBVVgpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX211bFwiLCBBVVgsIHQwLCB0MCksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbXVsXCIsIGMuaTMyX2NvbnN0KHBOb25SZXNpZHVlRjYpLCB0bXAsIEFVWCksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIHRtcCwgQVVYLCBBVVgpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX3N1YlwiLCB0MCwgQVVYLCB0MCksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIHRtcCwgdG1wLCB0MSksXG5cbiAgICAgICAgICAgIC8vICAvLyB0MiArIHQzKnkgPSAoejIgKyB6Myp5KV4yID0gYl4yXG4gICAgICAgICAgICAvLyAgdG1wID0gejIgKiB6MztcbiAgICAgICAgICAgIC8vICB0MiA9ICh6MiArIHozKSAqICh6MiArIG15X0ZwNjo6bm9uX3Jlc2lkdWUgKiB6MykgLSB0bXAgLSBteV9GcDY6Om5vbl9yZXNpZHVlICogdG1wO1xuICAgICAgICAgICAgLy8gIHQzID0gdG1wICsgdG1wO1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX211bFwiLCB4MiwgeDMsIHRtcCksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbXVsXCIsIHgzLCBjLmkzMl9jb25zdChwTm9uUmVzaWR1ZUY2KSwgdDIpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCB4MiwgdDIsIHQyKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgeDIsIHgzLCBBVVgpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX211bFwiLCBBVVgsIHQyLCB0MiksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbXVsXCIsIGMuaTMyX2NvbnN0KHBOb25SZXNpZHVlRjYpLCB0bXAsIEFVWCksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIHRtcCwgQVVYLCBBVVgpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX3N1YlwiLCB0MiwgQVVYLCB0MiksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIHRtcCwgdG1wLCB0MyksXG5cbiAgICAgICAgICAgIC8vICAvLyB0NCArIHQ1KnkgPSAoejQgKyB6NSp5KV4yID0gY14yXG4gICAgICAgICAgICAvLyAgdG1wID0gejQgKiB6NTtcbiAgICAgICAgICAgIC8vICB0NCA9ICh6NCArIHo1KSAqICh6NCArIG15X0ZwNjo6bm9uX3Jlc2lkdWUgKiB6NSkgLSB0bXAgLSBteV9GcDY6Om5vbl9yZXNpZHVlICogdG1wO1xuICAgICAgICAgICAgLy8gIHQ1ID0gdG1wICsgdG1wO1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX211bFwiLCB4NCwgeDUsIHRtcCksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbXVsXCIsIHg1LCBjLmkzMl9jb25zdChwTm9uUmVzaWR1ZUY2KSwgdDQpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCB4NCwgdDQsIHQ0KSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgeDQsIHg1LCBBVVgpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX211bFwiLCBBVVgsIHQ0LCB0NCksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbXVsXCIsIGMuaTMyX2NvbnN0KHBOb25SZXNpZHVlRjYpLCB0bXAsIEFVWCksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIHRtcCwgQVVYLCBBVVgpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX3N1YlwiLCB0NCwgQVVYLCB0NCksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIHRtcCwgdG1wLCB0NSksXG5cbiAgICAgICAgICAgIC8vIEZvciBBXG4gICAgICAgICAgICAvLyB6MCA9IDMgKiB0MCAtIDIgKiB6MFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX3N1YlwiLCB0MCwgeDAsIHIwKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgcjAsIHIwLCByMCksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIHQwLCByMCwgcjApLFxuICAgICAgICAgICAgLy8gejEgPSAzICogdDEgKyAyICogejFcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgdDEsIHgxLCByMSksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIHIxLCByMSwgcjEpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCB0MSwgcjEsIHIxKSxcblxuICAgICAgICAgICAgLy8gRm9yIEJcbiAgICAgICAgICAgIC8vIHoyID0gMyAqICh4aSAqIHQ1KSArIDIgKiB6MlxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX211bFwiLCB0NSwgYy5pMzJfY29uc3QocEFsdEJuMTI4VHdpc3QpLCBBVVgpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCBBVVgsIHgyLCByMiksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIHIyLCByMiwgcjIpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCBBVVgsIHIyLCByMiksXG4gICAgICAgICAgICAvLyB6MyA9IDMgKiB0NCAtIDIgKiB6M1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX3N1YlwiLCB0NCwgeDMsIHIzKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgcjMsIHIzLCByMyksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIHQ0LCByMywgcjMpLFxuXG4gICAgICAgICAgICAvLyBGb3IgQ1xuICAgICAgICAgICAgLy8gejQgPSAzICogdDIgLSAyICogejRcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9zdWJcIiwgdDIsIHg0LCByNCksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIHI0LCByNCwgcjQpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCB0MiwgcjQsIHI0KSxcbiAgICAgICAgICAgIC8vIHo1ID0gMyAqIHQzICsgMiAqIHo1XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIHQzLCB4NSwgcjUpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCByNSwgcjUsIHI1KSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgdDMsIHI1LCByNSksXG5cbiAgICAgICAgKTtcbiAgICB9XG5cblxuICAgIGZ1bmN0aW9uIGJ1aWxkQ3ljbG90b21pY0V4cChleHBvbmVudCwgZm5OYW1lKSB7XG4gICAgICAgIGNvbnN0IGV4cG9uZW50TmFmQnl0ZXMgPSBuYWYoZXhwb25lbnQpLm1hcCggKGIpID0+IChiPT0tMSA/IDB4RkY6IGIpICk7XG4gICAgICAgIGNvbnN0IHBFeHBvbmVudE5hZkJ5dGVzID0gbW9kdWxlLmFsbG9jKGV4cG9uZW50TmFmQnl0ZXMpO1xuXG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4KyBcIl9fY3ljbG90b21pY0V4cF9cIitmbk5hbWUpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInJcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJiaXRcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJpXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgeCA9IGMuZ2V0TG9jYWwoXCJ4XCIpO1xuXG4gICAgICAgIGNvbnN0IHJlcyA9IGMuZ2V0TG9jYWwoXCJyXCIpO1xuXG4gICAgICAgIGNvbnN0IGludmVyc2UgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZnRzaXplKSk7XG5cblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLmNhbGwoZnRtUHJlZml4ICsgXCJfY29uanVnYXRlXCIsIHgsIGludmVyc2UpLFxuICAgICAgICAgICAgYy5jYWxsKGZ0bVByZWZpeCArIFwiX29uZVwiLCByZXMpLFxuXG4gICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgIGMudGVlTG9jYWwoXCJiaXRcIiwgYy5pMzJfbG9hZDhfcyhjLmkzMl9jb25zdChleHBvbmVudE5hZkJ5dGVzLmxlbmd0aC0xKSwgcEV4cG9uZW50TmFmQnl0ZXMpKSxcbiAgICAgICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9lcShcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJiaXRcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdCgxKVxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICBjLmNhbGwoZnRtUHJlZml4ICsgXCJfbXVsXCIsIHJlcywgeCwgcmVzKSxcbiAgICAgICAgICAgICAgICAgICAgYy5jYWxsKGZ0bVByZWZpeCArIFwiX211bFwiLCByZXMsIGludmVyc2UsIHJlcyksXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgYy5zZXRMb2NhbChcImlcIiwgYy5pMzJfY29uc3QoZXhwb25lbnROYWZCeXRlcy5sZW5ndGgtMikpLFxuICAgICAgICAgICAgYy5ibG9jayhjLmxvb3AoXG4gICAgICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX19jeWNsb3RvbWljU3F1YXJlXCIsIHJlcywgcmVzKSxcbiAgICAgICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgICAgICBjLnRlZUxvY2FsKFwiYml0XCIsIGMuaTMyX2xvYWQ4X3MoYy5nZXRMb2NhbChcImlcIiksIHBFeHBvbmVudE5hZkJ5dGVzKSksXG4gICAgICAgICAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9lcShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiYml0XCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KDEpXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5jYWxsKGZ0bVByZWZpeCArIFwiX211bFwiLCByZXMsIHgsIHJlcyksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmNhbGwoZnRtUHJlZml4ICsgXCJfbXVsXCIsIHJlcywgaW52ZXJzZSwgcmVzKSxcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgYy5icl9pZigxLCBjLmkzMl9lcXogKCBjLmdldExvY2FsKFwiaVwiKSApKSxcbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFwiaVwiLCBjLmkzMl9zdWIoYy5nZXRMb2NhbChcImlcIiksIGMuaTMyX2NvbnN0KDEpKSksXG4gICAgICAgICAgICAgICAgYy5icigwKVxuICAgICAgICAgICAgKSlcbiAgICAgICAgKTtcbiAgICB9XG5cblxuXG4gICAgZnVuY3Rpb24gYnVpbGRGaW5hbEV4cG9uZW50aWF0aW9uTGFzdENodW5rKCkge1xuICAgICAgICBidWlsZEN5Y2xvdG9taWNTcXVhcmUoKTtcbiAgICAgICAgYnVpbGRDeWNsb3RvbWljRXhwKGZpbmFsRXhwWiwgXCJ3MFwiKTtcblxuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCsgXCJfX2ZpbmFsRXhwb25lbnRpYXRpb25MYXN0Q2h1bmtcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiclwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IGVsdCA9IGMuZ2V0TG9jYWwoXCJ4XCIpO1xuICAgICAgICBjb25zdCByZXN1bHQgPSBjLmdldExvY2FsKFwiclwiKTtcbiAgICAgICAgY29uc3QgQSA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmdHNpemUpKTtcbiAgICAgICAgY29uc3QgQiA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmdHNpemUpKTtcbiAgICAgICAgY29uc3QgQyA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmdHNpemUpKTtcbiAgICAgICAgY29uc3QgRCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmdHNpemUpKTtcbiAgICAgICAgY29uc3QgRSA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmdHNpemUpKTtcbiAgICAgICAgY29uc3QgRiA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmdHNpemUpKTtcbiAgICAgICAgY29uc3QgRyA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmdHNpemUpKTtcbiAgICAgICAgY29uc3QgSCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmdHNpemUpKTtcbiAgICAgICAgY29uc3QgSSA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmdHNpemUpKTtcbiAgICAgICAgY29uc3QgSiA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmdHNpemUpKTtcbiAgICAgICAgY29uc3QgSyA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmdHNpemUpKTtcbiAgICAgICAgY29uc3QgTCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmdHNpemUpKTtcbiAgICAgICAgY29uc3QgTSA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmdHNpemUpKTtcbiAgICAgICAgY29uc3QgTiA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmdHNpemUpKTtcbiAgICAgICAgY29uc3QgTyA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmdHNpemUpKTtcbiAgICAgICAgY29uc3QgUCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmdHNpemUpKTtcbiAgICAgICAgY29uc3QgUSA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmdHNpemUpKTtcbiAgICAgICAgY29uc3QgUiA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmdHNpemUpKTtcbiAgICAgICAgY29uc3QgUyA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmdHNpemUpKTtcbiAgICAgICAgY29uc3QgVCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmdHNpemUpKTtcbiAgICAgICAgY29uc3QgVSA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmdHNpemUpKTtcblxuICAgICAgICBmLmFkZENvZGUoXG5cblxuICAgICAgICAgICAgLy8gQSA9IGV4cF9ieV9uZWdfeihlbHQpICAvLyA9IGVsdF4oLXopXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfX2N5Y2xvdG9taWNFeHBfdzBcIiwgZWx0LCBBKSxcbiAgICAgICAgICAgIGMuY2FsbChmdG1QcmVmaXggKyBcIl9jb25qdWdhdGVcIiwgQSwgQSksXG4gICAgICAgICAgICAvLyBCID0gQV4yICAgICAgICAgICAgICAgIC8vID0gZWx0XigtMip6KVxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX19jeWNsb3RvbWljU3F1YXJlXCIsIEEsIEIpLFxuICAgICAgICAgICAgLy8gQyA9IEJeMiAgICAgICAgICAgICAgICAvLyA9IGVsdF4oLTQqeilcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9fY3ljbG90b21pY1NxdWFyZVwiLCBCLCBDKSxcbiAgICAgICAgICAgIC8vIEQgPSBDICogQiAgICAgICAgICAgICAgLy8gPSBlbHReKC02KnopXG4gICAgICAgICAgICBjLmNhbGwoZnRtUHJlZml4ICsgXCJfbXVsXCIsIEMsIEIsIEQpLFxuICAgICAgICAgICAgLy8gRSA9IGV4cF9ieV9uZWdfeihEKSAgICAvLyA9IGVsdF4oNip6XjIpXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfX2N5Y2xvdG9taWNFeHBfdzBcIiwgRCwgRSksXG4gICAgICAgICAgICBjLmNhbGwoZnRtUHJlZml4ICsgXCJfY29uanVnYXRlXCIsIEUsIEUpLFxuICAgICAgICAgICAgLy8gRiA9IEVeMiAgICAgICAgICAgICAgICAvLyA9IGVsdF4oMTIqel4yKVxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX19jeWNsb3RvbWljU3F1YXJlXCIsIEUsIEYpLFxuICAgICAgICAgICAgLy8gRyA9IGVweF9ieV9uZWdfeihGKSAgICAvLyA9IGVsdF4oLTEyKnpeMylcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9fY3ljbG90b21pY0V4cF93MFwiLCBGLCBHKSxcbiAgICAgICAgICAgIGMuY2FsbChmdG1QcmVmaXggKyBcIl9jb25qdWdhdGVcIiwgRywgRyksXG4gICAgICAgICAgICAvLyBIID0gY29uaihEKSAgICAgICAgICAgIC8vID0gZWx0Xig2KnopXG4gICAgICAgICAgICBjLmNhbGwoZnRtUHJlZml4ICsgXCJfY29uanVnYXRlXCIsIEQsIEgpLFxuICAgICAgICAgICAgLy8gSSA9IGNvbmooRykgICAgICAgICAgICAvLyA9IGVsdF4oMTIqel4zKVxuICAgICAgICAgICAgYy5jYWxsKGZ0bVByZWZpeCArIFwiX2Nvbmp1Z2F0ZVwiLCBHLCBJKSxcbiAgICAgICAgICAgIC8vIEogPSBJICogRSAgICAgICAgICAgICAgLy8gPSBlbHReKDEyKnpeMyArIDYqel4yKVxuICAgICAgICAgICAgYy5jYWxsKGZ0bVByZWZpeCArIFwiX211bFwiLCBJLCBFLCBKKSxcbiAgICAgICAgICAgIC8vIEsgPSBKICogSCAgICAgICAgICAgICAgLy8gPSBlbHReKDEyKnpeMyArIDYqel4yICsgNip6KVxuICAgICAgICAgICAgYy5jYWxsKGZ0bVByZWZpeCArIFwiX211bFwiLCBKLCBILCBLKSxcbiAgICAgICAgICAgIC8vIEwgPSBLICogQiAgICAgICAgICAgICAgLy8gPSBlbHReKDEyKnpeMyArIDYqel4yICsgNCp6KVxuICAgICAgICAgICAgYy5jYWxsKGZ0bVByZWZpeCArIFwiX211bFwiLCBLLCBCLCBMKSxcbiAgICAgICAgICAgIC8vIE0gPSBLICogRSAgICAgICAgICAgICAgLy8gPSBlbHReKDEyKnpeMyArIDEyKnpeMiArIDYqeilcbiAgICAgICAgICAgIGMuY2FsbChmdG1QcmVmaXggKyBcIl9tdWxcIiwgSywgRSwgTSksXG5cbiAgICAgICAgICAgIC8vIE4gPSBNICogZWx0ICAgICAgICAgICAgLy8gPSBlbHReKDEyKnpeMyArIDEyKnpeMiArIDYqeiArIDEpXG4gICAgICAgICAgICBjLmNhbGwoZnRtUHJlZml4ICsgXCJfbXVsXCIsIE0sIGVsdCwgTiksXG5cbiAgICAgICAgICAgIC8vIE8gPSBMLkZyb2Jlbml1c19tYXAoMSkgLy8gPSBlbHReKHEqKDEyKnpeMyArIDYqel4yICsgNCp6KSlcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9fZnJvYmVuaXVzTWFwMVwiLCBMLCBPKSxcbiAgICAgICAgICAgIC8vIFAgPSBPICogTiAgICAgICAgICAgICAgLy8gPSBlbHReKHEqKDEyKnpeMyArIDYqel4yICsgNCp6KSAqICgxMip6XjMgKyAxMip6XjIgKyA2KnogKyAxKSlcbiAgICAgICAgICAgIGMuY2FsbChmdG1QcmVmaXggKyBcIl9tdWxcIiwgTywgTiwgUCksXG4gICAgICAgICAgICAvLyBRID0gSy5Gcm9iZW5pdXNfbWFwKDIpIC8vID0gZWx0XihxXjIgKiAoMTIqel4zICsgNip6XjIgKyA2KnopKVxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX19mcm9iZW5pdXNNYXAyXCIsIEssIFEpLFxuICAgICAgICAgICAgLy8gUiA9IFEgKiBQICAgICAgICAgICAgICAvLyA9IGVsdF4ocV4yICogKDEyKnpeMyArIDYqel4yICsgNip6KSArIHEqKDEyKnpeMyArIDYqel4yICsgNCp6KSAqICgxMip6XjMgKyAxMip6XjIgKyA2KnogKyAxKSlcbiAgICAgICAgICAgIGMuY2FsbChmdG1QcmVmaXggKyBcIl9tdWxcIiwgUSwgUCwgUiksXG4gICAgICAgICAgICAvLyBTID0gY29uaihlbHQpICAgICAgICAgIC8vID0gZWx0XigtMSlcbiAgICAgICAgICAgIGMuY2FsbChmdG1QcmVmaXggKyBcIl9jb25qdWdhdGVcIiwgZWx0LCBTKSxcbiAgICAgICAgICAgIC8vIFQgPSBTICogTCAgICAgICAgICAgICAgLy8gPSBlbHReKDEyKnpeMyArIDYqel4yICsgNCp6IC0gMSlcbiAgICAgICAgICAgIGMuY2FsbChmdG1QcmVmaXggKyBcIl9tdWxcIiwgUywgTCwgVCksXG4gICAgICAgICAgICAvLyBVID0gVC5Gcm9iZW5pdXNfbWFwKDMpIC8vID0gZWx0XihxXjMoMTIqel4zICsgNip6XjIgKyA0KnogLSAxKSlcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9fZnJvYmVuaXVzTWFwM1wiLCBULCBVKSxcbiAgICAgICAgICAgIC8vIFYgPSBVICogUiAgICAgICAgICAgICAgLy8gPSBlbHReKHFeMygxMip6XjMgKyA2KnpeMiArIDQqeiAtIDEpICsgcV4yICogKDEyKnpeMyArIDYqel4yICsgNip6KSArIHEqKDEyKnpeMyArIDYqel4yICsgNCp6KSAqICgxMip6XjMgKyAxMip6XjIgKyA2KnogKyAxKSlcbiAgICAgICAgICAgIGMuY2FsbChmdG1QcmVmaXggKyBcIl9tdWxcIiwgVSwgUiwgcmVzdWx0KSxcbiAgICAgICAgICAgIC8vIHJlc3VsdCA9IFZcbiAgICAgICAgKTtcbiAgICB9XG5cblxuICAgIGZ1bmN0aW9uIGJ1aWxkRmluYWxFeHBvbmVudGlhdGlvbigpIHtcbiAgICAgICAgYnVpbGRGaW5hbEV4cG9uZW50aWF0aW9uRmlyc3RDaHVuaygpO1xuICAgICAgICBidWlsZEZpbmFsRXhwb25lbnRpYXRpb25MYXN0Q2h1bmsoKTtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrIFwiX2ZpbmFsRXhwb25lbnRpYXRpb25cIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiclwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IGVsdCA9IGMuZ2V0TG9jYWwoXCJ4XCIpO1xuICAgICAgICBjb25zdCByZXN1bHQgPSBjLmdldExvY2FsKFwiclwiKTtcbiAgICAgICAgY29uc3QgZWx0VG9GaXJzdENodW5rID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGZ0c2l6ZSkpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9fZmluYWxFeHBvbmVudGlhdGlvbkZpcnN0Q2h1bmtcIiwgZWx0LCBlbHRUb0ZpcnN0Q2h1bmsgKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9fZmluYWxFeHBvbmVudGlhdGlvbkxhc3RDaHVua1wiLCBlbHRUb0ZpcnN0Q2h1bmssIHJlc3VsdCApXG4gICAgICAgICk7XG4gICAgfVxuXG5cbiAgICBmdW5jdGlvbiBidWlsZEZpbmFsRXhwb25lbnRpYXRpb25PbGQoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4KyBcIl9maW5hbEV4cG9uZW50aWF0aW9uT2xkXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInJcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgZXhwb25lbnQgPSA1NTI0ODQyMzM2MTMyMjQwOTYzMTI2MTcxMjY3ODMxNzMxNDcwOTczODIxMDM3NjI5NTc2NTQxODg4ODI3MzQzMTQxOTY5MTA4Mzk5MDc1NDEyMTM5NzQ1MDI3NjE1NDA2Mjk4MTcwMDk2MDg1NDg2NTQ2ODAzNDM2Mjc3MDExNTM4Mjk0NDY3NDc4MTA5MDczNzMyNTY4NDE1NTEwMDYyMDE2Mzk2Nzc3MjYxMzk5NDYwMjkxOTk5Njg0MTI1OTg4MDQ4ODIzOTE3MDIyNzMwMTkwODM2NTMyNzIwNDc1NjYzMTY1ODQzNjU1NTk3NzY0OTMwMjc0OTU0NTgyMzgzNzM5MDI4NzU5Mzc2NTk5NDM1MDQ4NzMyMjA1NTQxNjE1NTA1MjU5MjYzMDIzMDMzMzE3NDc0NjM1MTU2NDQ3MTE4NzY2NTMxNzcxMjk1NzgzMDMxOTEwOTU5MDA5MDkxOTE2MjQ4MTc4MjY1NjY2ODgyNDE4MDQ0MDgwODE4OTI3ODU3MjU5Njc5MzE3MTQwOTc3MTY3MDk1MjYwOTIyNjEyNzgwNzE5NTI1NjAxNzExMTE0NDQwNzIwNDkyMjkxMjM1NjUwNTc0ODM3NTAxNjE0NjAwMjQzNTMzNDYyODQxNjcyODI0NTI3NTYyMTc2NjIzMzU1Mjg4MTM1MTkxMzk4MDgyOTExNzA1MzkwNzIxMjUzODEyMzA4MTU3MjkwNzE1NDQ4NjE2MDI3NTA5MzY5NjQ4MjkzMTM2MDgxMzczMjU0MjYzODM3MzUxMjIxNzUyMjk1NDExNTUzNzYzNDY0MzYwOTM5MzAyODc0MDIwODk1MTc0MjY5NzMxNzg5MTc1Njk3MTMzODQ3NDgwODE4MjcyNTU0NzI1NzY5Mzc0NzE0OTYxOTU3NTI3MjcxODgyNjE0MzU2MzMyNzEyMzg3MTAxMzE3MzYwOTYyOTk3OTgxNjg4NTI5MjU1NDA1NDkzNDIzMzA3NzUyNzk4NzcwMDY3ODQzNTQ4MDE0MjIyNDk3MjI1NzM3ODM1NjE2ODUxNzk2MTg4MTY0ODAwMzc2OTUwMDU1MTU0MjYxNjIzNjI0MzEwNzIyNDU2MzgzMjQ3NDQ0ODBuO1xuXG4gICAgICAgIGNvbnN0IHBFeHBvbmVudCA9IG1vZHVsZS5hbGxvYyh1dGlscyQyLmJpZ0ludDJCeXRlc0xFKCBleHBvbmVudCwgMzUyICkpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5jYWxsKGZ0bVByZWZpeCArIFwiX2V4cFwiLCBjLmdldExvY2FsKFwieFwiKSwgYy5pMzJfY29uc3QocEV4cG9uZW50KSwgYy5pMzJfY29uc3QoMzUyKSwgYy5nZXRMb2NhbChcInJcIikpLFxuICAgICAgICApO1xuICAgIH1cblxuXG5cblxuICAgIGNvbnN0IHBQcmVQID0gbW9kdWxlLmFsbG9jKHByZVBTaXplKTtcbiAgICBjb25zdCBwUHJlUSA9IG1vZHVsZS5hbGxvYyhwcmVRU2l6ZSk7XG5cbiAgICBmdW5jdGlvbiBidWlsZFBhaXJpbmdFcXVhdGlvbihuUGFpcmluZ3MpIHtcblxuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCsgXCJfcGFpcmluZ0VxXCIrblBhaXJpbmdzKTtcbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPG5QYWlyaW5nczsgaSsrKSB7XG4gICAgICAgICAgICBmLmFkZFBhcmFtKFwicF9cIitpLCBcImkzMlwiKTtcbiAgICAgICAgICAgIGYuYWRkUGFyYW0oXCJxX1wiK2ksIFwiaTMyXCIpO1xuICAgICAgICB9XG4gICAgICAgIGYuYWRkUGFyYW0oXCJjXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLnNldFJldHVyblR5cGUoXCJpMzJcIik7XG5cblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IHJlc1QgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZnRzaXplKSk7XG4gICAgICAgIGNvbnN0IGF1eFQgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZnRzaXplKSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKGMuY2FsbChmdG1QcmVmaXggKyBcIl9vbmVcIiwgcmVzVCApKTtcblxuICAgICAgICBmb3IgKGxldCBpPTA7IGk8blBhaXJpbmdzOyBpKyspIHtcblxuICAgICAgICAgICAgZi5hZGRDb2RlKGMuY2FsbChwcmVmaXggKyBcIl9wcmVwYXJlRzFcIiwgYy5nZXRMb2NhbChcInBfXCIraSksIGMuaTMyX2NvbnN0KHBQcmVQKSApKTtcbiAgICAgICAgICAgIGYuYWRkQ29kZShjLmNhbGwocHJlZml4ICsgXCJfcHJlcGFyZUcyXCIsIGMuZ2V0TG9jYWwoXCJxX1wiK2kpLCBjLmkzMl9jb25zdChwUHJlUSkgKSk7XG4gICAgICAgICAgICBmLmFkZENvZGUoYy5jYWxsKHByZWZpeCArIFwiX21pbGxlckxvb3BcIiwgYy5pMzJfY29uc3QocFByZVApLCBjLmkzMl9jb25zdChwUHJlUSksIGF1eFQgKSk7XG5cbiAgICAgICAgICAgIGYuYWRkQ29kZShjLmNhbGwoZnRtUHJlZml4ICsgXCJfbXVsXCIsIHJlc1QsIGF1eFQsIHJlc1QgKSk7XG4gICAgICAgIH1cblxuICAgICAgICBmLmFkZENvZGUoYy5jYWxsKHByZWZpeCArIFwiX2ZpbmFsRXhwb25lbnRpYXRpb25cIiwgcmVzVCwgcmVzVCApKTtcblxuICAgICAgICBmLmFkZENvZGUoYy5jYWxsKGZ0bVByZWZpeCArIFwiX2VxXCIsIHJlc1QsIGMuZ2V0TG9jYWwoXCJjXCIpKSk7XG4gICAgfVxuXG5cbiAgICBmdW5jdGlvbiBidWlsZFBhaXJpbmcoKSB7XG5cbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrIFwiX3BhaXJpbmdcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInJcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCByZXNUID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGZ0c2l6ZSkpO1xuXG4gICAgICAgIGYuYWRkQ29kZShjLmNhbGwocHJlZml4ICsgXCJfcHJlcGFyZUcxXCIsIGMuZ2V0TG9jYWwoXCJwXCIpLCBjLmkzMl9jb25zdChwUHJlUCkgKSk7XG4gICAgICAgIGYuYWRkQ29kZShjLmNhbGwocHJlZml4ICsgXCJfcHJlcGFyZUcyXCIsIGMuZ2V0TG9jYWwoXCJxXCIpLCBjLmkzMl9jb25zdChwUHJlUSkgKSk7XG4gICAgICAgIGYuYWRkQ29kZShjLmNhbGwocHJlZml4ICsgXCJfbWlsbGVyTG9vcFwiLCBjLmkzMl9jb25zdChwUHJlUCksIGMuaTMyX2NvbnN0KHBQcmVRKSwgcmVzVCApKTtcbiAgICAgICAgZi5hZGRDb2RlKGMuY2FsbChwcmVmaXggKyBcIl9maW5hbEV4cG9uZW50aWF0aW9uXCIsIHJlc1QsIGMuZ2V0TG9jYWwoXCJyXCIpICkpO1xuICAgIH1cblxuXG4gICAgYnVpbGRQcmVwQWRkU3RlcCgpO1xuICAgIGJ1aWxkUHJlcERvdWJsZVN0ZXAoKTtcblxuICAgIGJ1aWxkUHJlcGFyZUcxKCk7XG4gICAgYnVpbGRQcmVwYXJlRzIoKTtcblxuICAgIGJ1aWxkTXVsQnkwMjQoKTtcbiAgICBidWlsZE11bEJ5MDI0T2xkKCk7XG4gICAgYnVpbGRNaWxsZXJMb29wKCk7XG5cblxuICAgIGZvciAobGV0IGk9MDsgaTwxMDsgaSsrKSB7XG4gICAgICAgIGJ1aWxkRnJvYmVuaXVzTWFwKGkpO1xuICAgICAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfX2Zyb2Jlbml1c01hcFwiK2kpO1xuICAgIH1cblxuICAgIGJ1aWxkRmluYWxFeHBvbmVudGlhdGlvbk9sZCgpO1xuICAgIGJ1aWxkRmluYWxFeHBvbmVudGlhdGlvbigpO1xuXG4gICAgZm9yIChsZXQgaT0xOyBpPD01OyBpKyspIHtcbiAgICAgICAgYnVpbGRQYWlyaW5nRXF1YXRpb24oaSk7XG4gICAgICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9wYWlyaW5nRXFcIitpKTtcbiAgICB9XG5cbiAgICBidWlsZFBhaXJpbmcoKTtcblxuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9wYWlyaW5nXCIpO1xuXG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX3ByZXBhcmVHMVwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfcHJlcGFyZUcyXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9taWxsZXJMb29wXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9maW5hbEV4cG9uZW50aWF0aW9uXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9maW5hbEV4cG9uZW50aWF0aW9uT2xkXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9fbXVsQnkwMjRcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX19tdWxCeTAyNE9sZFwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfX2N5Y2xvdG9taWNTcXVhcmVcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX19jeWNsb3RvbWljRXhwX3cwXCIpO1xuXG4gICAgLy8gY29uc29sZS5sb2cobW9kdWxlLmZ1bmN0aW9uSWR4QnlOYW1lKTtcblxufTtcblxuY29uc3QgdXRpbHMkMSA9IHV0aWxzJDY7XG5cbmNvbnN0IGJ1aWxkRjFtID1idWlsZF9mMW07XG5jb25zdCBidWlsZEYxID1idWlsZF9mMTtcbmNvbnN0IGJ1aWxkRjJtID1idWlsZF9mMm07XG5jb25zdCBidWlsZEYzbSA9YnVpbGRfZjNtO1xuY29uc3QgYnVpbGRDdXJ2ZSA9YnVpbGRfY3VydmVfamFjb2JpYW5fYTA7XG5jb25zdCBidWlsZEZGVCQxID0gYnVpbGRfZmZ0O1xuY29uc3QgYnVpbGRQb2wgPSBidWlsZF9wb2w7XG5jb25zdCBidWlsZFFBUCA9IGJ1aWxkX3FhcDtcbmNvbnN0IGJ1aWxkQXBwbHlLZXkgPSBidWlsZF9hcHBseWtleTtcbmNvbnN0IHsgYml0TGVuZ3RoOiBiaXRMZW5ndGgkMSwgaXNPZGQsIGlzTmVnYXRpdmU6IGlzTmVnYXRpdmUkMSB9ID0gYmlnaW50O1xuXG4vLyBEZWZpbml0aW9uIGhlcmU6IGh0dHBzOi8vZWxlY3RyaWNjb2luLmNvL2Jsb2cvbmV3LXNuYXJrLWN1cnZlL1xuXG52YXIgYnVpbGRfYmxzMTIzODEgPSBmdW5jdGlvbiBidWlsZEJMUzEyMzgxKG1vZHVsZSwgX3ByZWZpeCkge1xuXG4gICAgY29uc3QgcHJlZml4ID0gX3ByZWZpeCB8fCBcImJsczEyMzgxXCI7XG5cbiAgICBpZiAobW9kdWxlLm1vZHVsZXNbcHJlZml4XSkgcmV0dXJuIHByZWZpeDsgIC8vIGFscmVhZHkgYnVpbGRlZFxuXG4gICAgY29uc3QgcSA9IDB4MWEwMTExZWEzOTdmZTY5YTRiMWJhN2I2NDM0YmFjZDc2NDc3NGI4NGYzODUxMmJmNjczMGQyYTBmNmIwZjYyNDFlYWJmZmZlYjE1M2ZmZmZiOWZlZmZmZmZmZmZhYWFibjtcbiAgICBjb25zdCByID0gMHg3M2VkYTc1MzI5OWQ3ZDQ4MzMzOWQ4MDgwOWExZDgwNTUzYmRhNDAyZmZmZTViZmVmZmZmZmZmZjAwMDAwMDAxbjtcblxuICAgIGNvbnN0IG42NHEgPSBNYXRoLmZsb29yKChiaXRMZW5ndGgkMShxIC0gMW4pIC0gMSkvNjQpICsxO1xuICAgIGNvbnN0IG44cSA9IG42NHEqODtcbiAgICBjb25zdCBmMXNpemUgPSBuOHE7XG4gICAgY29uc3QgZjJzaXplID0gZjFzaXplICogMjtcbiAgICBjb25zdCBmdHNpemUgPSBmMXNpemUgKiAxMjtcblxuICAgIGNvbnN0IG42NHIgPSBNYXRoLmZsb29yKChiaXRMZW5ndGgkMShyIC0gMW4pIC0gMSkvNjQpICsxO1xuICAgIGNvbnN0IG44ciA9IG42NHIqODtcbiAgICBjb25zdCBmcnNpemUgPSBuOHI7XG5cblxuICAgIGNvbnN0IHByID0gbW9kdWxlLmFsbG9jKHV0aWxzJDEuYmlnSW50MkJ5dGVzTEUoIHIsIGZyc2l6ZSApKTtcblxuICAgIGNvbnN0IGYxbVByZWZpeCA9IGJ1aWxkRjFtKG1vZHVsZSwgcSwgXCJmMW1cIiwgXCJpbnRxXCIpO1xuICAgIGJ1aWxkRjEobW9kdWxlLCByLCBcImZyXCIsIFwiZnJtXCIsIFwiaW50clwiKTtcbiAgICBjb25zdCBwRzFiID0gbW9kdWxlLmFsbG9jKHV0aWxzJDEuYmlnSW50MkJ5dGVzTEUoIHRvTW9udGdvbWVyeSg0biksIGYxc2l6ZSApKTtcbiAgICBjb25zdCBnMW1QcmVmaXggPSBidWlsZEN1cnZlKG1vZHVsZSwgXCJnMW1cIiwgXCJmMW1cIiwgcEcxYik7XG5cbiAgICBidWlsZEZGVCQxKG1vZHVsZSwgXCJmcm1cIiwgXCJmcm1cIiwgXCJmcm1cIiwgXCJmcm1fbXVsXCIpO1xuXG4gICAgYnVpbGRQb2wobW9kdWxlLCBcInBvbFwiLCBcImZybVwiKTtcbiAgICBidWlsZFFBUChtb2R1bGUsIFwicWFwXCIsIFwiZnJtXCIpO1xuXG4gICAgY29uc3QgZjJtUHJlZml4ID0gYnVpbGRGMm0obW9kdWxlLCBcImYxbV9uZWdcIiwgXCJmMm1cIiwgXCJmMW1cIik7XG4gICAgY29uc3QgcEcyYiA9IG1vZHVsZS5hbGxvYyhbXG4gICAgICAgIC4uLnV0aWxzJDEuYmlnSW50MkJ5dGVzTEUoIHRvTW9udGdvbWVyeSg0biksIGYxc2l6ZSApLFxuICAgICAgICAuLi51dGlscyQxLmJpZ0ludDJCeXRlc0xFKCB0b01vbnRnb21lcnkoNG4pLCBmMXNpemUgKVxuICAgIF0pO1xuICAgIGNvbnN0IGcybVByZWZpeCA9IGJ1aWxkQ3VydmUobW9kdWxlLCBcImcybVwiLCBcImYybVwiLCBwRzJiKTtcblxuXG4gICAgZnVuY3Rpb24gYnVpbGRHVGltZXNGcihmbk5hbWUsIG9wTXVsKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24oZm5OYW1lKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInBHXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicEZyXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicHJcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCBBVVggPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjhyKSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5jYWxsKFwiZnJtX2Zyb21Nb250Z29tZXJ5XCIsIGMuZ2V0TG9jYWwoXCJwRnJcIiksIEFVWCksXG4gICAgICAgICAgICBjLmNhbGwoXG4gICAgICAgICAgICAgICAgb3BNdWwsXG4gICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInBHXCIpLFxuICAgICAgICAgICAgICAgIEFVWCxcbiAgICAgICAgICAgICAgICBjLmkzMl9jb25zdChuOHIpLFxuICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwclwiKVxuICAgICAgICAgICAgKVxuICAgICAgICApO1xuXG4gICAgICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihmbk5hbWUpO1xuICAgIH1cbiAgICBidWlsZEdUaW1lc0ZyKFwiZzFtX3RpbWVzRnJcIiwgXCJnMW1fdGltZXNTY2FsYXJcIik7XG4gICAgYnVpbGRGRlQkMShtb2R1bGUsIFwiZzFtXCIsIFwiZzFtXCIsIFwiZnJtXCIsIFwiZzFtX3RpbWVzRnJcIik7XG5cbiAgICBidWlsZEdUaW1lc0ZyKFwiZzJtX3RpbWVzRnJcIiwgXCJnMm1fdGltZXNTY2FsYXJcIik7XG4gICAgYnVpbGRGRlQkMShtb2R1bGUsIFwiZzJtXCIsIFwiZzJtXCIsIFwiZnJtXCIsIFwiZzJtX3RpbWVzRnJcIik7XG5cbiAgICBidWlsZEdUaW1lc0ZyKFwiZzFtX3RpbWVzRnJBZmZpbmVcIiwgXCJnMW1fdGltZXNTY2FsYXJBZmZpbmVcIik7XG4gICAgYnVpbGRHVGltZXNGcihcImcybV90aW1lc0ZyQWZmaW5lXCIsIFwiZzJtX3RpbWVzU2NhbGFyQWZmaW5lXCIpO1xuXG4gICAgYnVpbGRBcHBseUtleShtb2R1bGUsIFwiZnJtX2JhdGNoQXBwbHlLZXlcIiwgXCJmbXJcIiwgXCJmcm1cIiwgbjhyLCBuOHIsIG44ciwgXCJmcm1fbXVsXCIpO1xuICAgIGJ1aWxkQXBwbHlLZXkobW9kdWxlLCBcImcxbV9iYXRjaEFwcGx5S2V5XCIsIFwiZzFtXCIsIFwiZnJtXCIsIG44cSozLCBuOHEqMywgbjhyLCBcImcxbV90aW1lc0ZyXCIpO1xuICAgIGJ1aWxkQXBwbHlLZXkobW9kdWxlLCBcImcxbV9iYXRjaEFwcGx5S2V5TWl4ZWRcIiwgXCJnMW1cIiwgXCJmcm1cIiwgbjhxKjIsIG44cSozLCBuOHIsIFwiZzFtX3RpbWVzRnJBZmZpbmVcIik7XG4gICAgYnVpbGRBcHBseUtleShtb2R1bGUsIFwiZzJtX2JhdGNoQXBwbHlLZXlcIiwgXCJnMm1cIiwgXCJmcm1cIiwgbjhxKjIqMywgbjhxKjMqMiwgbjhyLCBcImcybV90aW1lc0ZyXCIpO1xuICAgIGJ1aWxkQXBwbHlLZXkobW9kdWxlLCBcImcybV9iYXRjaEFwcGx5S2V5TWl4ZWRcIiwgXCJnMm1cIiwgXCJmcm1cIiwgbjhxKjIqMiwgbjhxKjMqMiwgbjhyLCBcImcybV90aW1lc0ZyQWZmaW5lXCIpO1xuXG5cbiAgICBmdW5jdGlvbiB0b01vbnRnb21lcnkoYSkge1xuICAgICAgICByZXR1cm4gQmlnSW50KGEpICogKDFuIDw8IEJpZ0ludChmMXNpemUqOCkpICUgcTtcbiAgICB9XG5cbiAgICBjb25zdCBHMWdlbiA9IFtcbiAgICAgICAgMzY4NTQxNjc1MzcxMzM4NzAxNjc4MTA4ODMxNTE4MzA3Nzc1Nzk2MTYyMDc5NTc4MjU0NjQwOTg5NDU3ODM3ODY4ODYwNzU5MjM3ODM3NjMxODgzNjA1NDk0NzY3NjM0NTgyMTU0ODEwNDE4NTQ2NDUwN24sXG4gICAgICAgIDEzMzk1MDY1NDQ5NDQ0NzY0NzMwMjA0NzEzNzk5NDE5MjEyMjE1ODQ5MzM4NzU5MzgzNDk2MjA0MjY1NDM3MzY0MTY1MTE0MjM5NTYzMzM1MDY0NzI3MjQ2NTUzNTMzNjY1MzQ5OTIzOTE3NTY0NDE1NjluLFxuICAgICAgICAxblxuICAgIF07XG5cbiAgICBjb25zdCBwRzFnZW4gPSBtb2R1bGUuYWxsb2MoXG4gICAgICAgIFtcbiAgICAgICAgICAgIC4uLnV0aWxzJDEuYmlnSW50MkJ5dGVzTEUoIHRvTW9udGdvbWVyeShHMWdlblswXSksIGYxc2l6ZSApLFxuICAgICAgICAgICAgLi4udXRpbHMkMS5iaWdJbnQyQnl0ZXNMRSggdG9Nb250Z29tZXJ5KEcxZ2VuWzFdKSwgZjFzaXplICksXG4gICAgICAgICAgICAuLi51dGlscyQxLmJpZ0ludDJCeXRlc0xFKCB0b01vbnRnb21lcnkoRzFnZW5bMl0pLCBmMXNpemUgKSxcbiAgICAgICAgXVxuICAgICk7XG5cbiAgICBjb25zdCBHMXplcm8gPSBbXG4gICAgICAgIDBuLFxuICAgICAgICAxbixcbiAgICAgICAgMG5cbiAgICBdO1xuXG4gICAgY29uc3QgcEcxemVybyA9IG1vZHVsZS5hbGxvYyhcbiAgICAgICAgW1xuICAgICAgICAgICAgLi4udXRpbHMkMS5iaWdJbnQyQnl0ZXNMRSggdG9Nb250Z29tZXJ5KEcxemVyb1swXSksIGYxc2l6ZSApLFxuICAgICAgICAgICAgLi4udXRpbHMkMS5iaWdJbnQyQnl0ZXNMRSggdG9Nb250Z29tZXJ5KEcxemVyb1sxXSksIGYxc2l6ZSApLFxuICAgICAgICAgICAgLi4udXRpbHMkMS5iaWdJbnQyQnl0ZXNMRSggdG9Nb250Z29tZXJ5KEcxemVyb1syXSksIGYxc2l6ZSApXG4gICAgICAgIF1cbiAgICApO1xuXG4gICAgY29uc3QgRzJnZW4gPSBbXG4gICAgICAgIFtcbiAgICAgICAgICAgIDM1MjcwMTA2OTU4NzQ2NjYxODE4NzEzOTExNjAxMTA2MDE0NDg5MDAyOTk1Mjc5Mjc3NTI0MDIxOTkwODY0NDIzOTc5Mzc4NTczNTcxNTAyNjg3MzM0NzYwMDM0Mzg2NTE3NTk1Mjc2MTkyNjMwMzE2MG4sXG4gICAgICAgICAgICAzMDU5MTQ0MzQ0MjQ0MjEzNzA5OTcxMjU5ODE0NzUzNzgxNjM2OTg2NDcwMzI1NDc2NjQ3NTU4NjU5MzczMjA2MjkxNjM1MzI0NzY4OTU4NDMyNDMzNTA5NTYzMTA0MzQ3MDE3ODM3ODg1NzYzMzY1NzU4bixcbiAgICAgICAgXSxbXG4gICAgICAgICAgICAxOTg1MTUwNjAyMjg3MjkxOTM1NTY4MDU0NTIxMTc3MTcxNjM4MzAwODY4OTc4MjE1NjU1NzMwODU5Mzc4NjY1MDY2MzQ0NzI2MzczODIzNzE4NDIzODY5MTA0MjYzMzMzOTg0NjQxNDk0MzQwMzQ3OTA1bixcbiAgICAgICAgICAgIDkyNzU1MzY2NTQ5MjMzMjQ1NTc0NzIwMTk2NTc3NjAzNzg4MDc1Nzc0MDE5MzQ1MzU5Mjk3MDAyNTAyNzk3ODc5Mzk3Njg3NzAwMjY3NTU2NDk4MDk0OTI4OTcyNzk1NzU2NTU3NTQzMzM0NDIxOTU4Mm4sXG4gICAgICAgIF0sW1xuICAgICAgICAgICAgMW4sXG4gICAgICAgICAgICAwbixcbiAgICAgICAgXVxuICAgIF07XG5cbiAgICBjb25zdCBwRzJnZW4gPSBtb2R1bGUuYWxsb2MoXG4gICAgICAgIFtcbiAgICAgICAgICAgIC4uLnV0aWxzJDEuYmlnSW50MkJ5dGVzTEUoIHRvTW9udGdvbWVyeShHMmdlblswXVswXSksIGYxc2l6ZSApLFxuICAgICAgICAgICAgLi4udXRpbHMkMS5iaWdJbnQyQnl0ZXNMRSggdG9Nb250Z29tZXJ5KEcyZ2VuWzBdWzFdKSwgZjFzaXplICksXG4gICAgICAgICAgICAuLi51dGlscyQxLmJpZ0ludDJCeXRlc0xFKCB0b01vbnRnb21lcnkoRzJnZW5bMV1bMF0pLCBmMXNpemUgKSxcbiAgICAgICAgICAgIC4uLnV0aWxzJDEuYmlnSW50MkJ5dGVzTEUoIHRvTW9udGdvbWVyeShHMmdlblsxXVsxXSksIGYxc2l6ZSApLFxuICAgICAgICAgICAgLi4udXRpbHMkMS5iaWdJbnQyQnl0ZXNMRSggdG9Nb250Z29tZXJ5KEcyZ2VuWzJdWzBdKSwgZjFzaXplICksXG4gICAgICAgICAgICAuLi51dGlscyQxLmJpZ0ludDJCeXRlc0xFKCB0b01vbnRnb21lcnkoRzJnZW5bMl1bMV0pLCBmMXNpemUgKSxcbiAgICAgICAgXVxuICAgICk7XG5cbiAgICBjb25zdCBHMnplcm8gPSBbXG4gICAgICAgIFtcbiAgICAgICAgICAgIDBuLFxuICAgICAgICAgICAgMG4sXG4gICAgICAgIF0sW1xuICAgICAgICAgICAgMW4sXG4gICAgICAgICAgICAwbixcbiAgICAgICAgXSxbXG4gICAgICAgICAgICAwbixcbiAgICAgICAgICAgIDBuLFxuICAgICAgICBdXG4gICAgXTtcblxuICAgIGNvbnN0IHBHMnplcm8gPSBtb2R1bGUuYWxsb2MoXG4gICAgICAgIFtcbiAgICAgICAgICAgIC4uLnV0aWxzJDEuYmlnSW50MkJ5dGVzTEUoIHRvTW9udGdvbWVyeShHMnplcm9bMF1bMF0pLCBmMXNpemUgKSxcbiAgICAgICAgICAgIC4uLnV0aWxzJDEuYmlnSW50MkJ5dGVzTEUoIHRvTW9udGdvbWVyeShHMnplcm9bMF1bMV0pLCBmMXNpemUgKSxcbiAgICAgICAgICAgIC4uLnV0aWxzJDEuYmlnSW50MkJ5dGVzTEUoIHRvTW9udGdvbWVyeShHMnplcm9bMV1bMF0pLCBmMXNpemUgKSxcbiAgICAgICAgICAgIC4uLnV0aWxzJDEuYmlnSW50MkJ5dGVzTEUoIHRvTW9udGdvbWVyeShHMnplcm9bMV1bMV0pLCBmMXNpemUgKSxcbiAgICAgICAgICAgIC4uLnV0aWxzJDEuYmlnSW50MkJ5dGVzTEUoIHRvTW9udGdvbWVyeShHMnplcm9bMl1bMF0pLCBmMXNpemUgKSxcbiAgICAgICAgICAgIC4uLnV0aWxzJDEuYmlnSW50MkJ5dGVzTEUoIHRvTW9udGdvbWVyeShHMnplcm9bMl1bMV0pLCBmMXNpemUgKSxcbiAgICAgICAgXVxuICAgICk7XG5cbiAgICBjb25zdCBwT25lVCA9IG1vZHVsZS5hbGxvYyhbXG4gICAgICAgIC4uLnV0aWxzJDEuYmlnSW50MkJ5dGVzTEUoIHRvTW9udGdvbWVyeSgxbiksIGYxc2l6ZSApLFxuICAgICAgICAuLi51dGlscyQxLmJpZ0ludDJCeXRlc0xFKCB0b01vbnRnb21lcnkoMG4pLCBmMXNpemUgKSxcbiAgICAgICAgLi4udXRpbHMkMS5iaWdJbnQyQnl0ZXNMRSggdG9Nb250Z29tZXJ5KDBuKSwgZjFzaXplICksXG4gICAgICAgIC4uLnV0aWxzJDEuYmlnSW50MkJ5dGVzTEUoIHRvTW9udGdvbWVyeSgwbiksIGYxc2l6ZSApLFxuICAgICAgICAuLi51dGlscyQxLmJpZ0ludDJCeXRlc0xFKCB0b01vbnRnb21lcnkoMG4pLCBmMXNpemUgKSxcbiAgICAgICAgLi4udXRpbHMkMS5iaWdJbnQyQnl0ZXNMRSggdG9Nb250Z29tZXJ5KDBuKSwgZjFzaXplICksXG4gICAgICAgIC4uLnV0aWxzJDEuYmlnSW50MkJ5dGVzTEUoIHRvTW9udGdvbWVyeSgwbiksIGYxc2l6ZSApLFxuICAgICAgICAuLi51dGlscyQxLmJpZ0ludDJCeXRlc0xFKCB0b01vbnRnb21lcnkoMG4pLCBmMXNpemUgKSxcbiAgICAgICAgLi4udXRpbHMkMS5iaWdJbnQyQnl0ZXNMRSggdG9Nb250Z29tZXJ5KDBuKSwgZjFzaXplICksXG4gICAgICAgIC4uLnV0aWxzJDEuYmlnSW50MkJ5dGVzTEUoIHRvTW9udGdvbWVyeSgwbiksIGYxc2l6ZSApLFxuICAgICAgICAuLi51dGlscyQxLmJpZ0ludDJCeXRlc0xFKCB0b01vbnRnb21lcnkoMG4pLCBmMXNpemUgKSxcbiAgICAgICAgLi4udXRpbHMkMS5iaWdJbnQyQnl0ZXNMRSggdG9Nb250Z29tZXJ5KDBuKSwgZjFzaXplICksXG4gICAgXSk7XG5cbiAgICBjb25zdCBwQmxzMTIzODFUd2lzdCA9ICBtb2R1bGUuYWxsb2MoW1xuICAgICAgICAuLi51dGlscyQxLmJpZ0ludDJCeXRlc0xFKCB0b01vbnRnb21lcnkoMW4pLCBmMXNpemUgKSxcbiAgICAgICAgLi4udXRpbHMkMS5iaWdJbnQyQnl0ZXNMRSggdG9Nb250Z29tZXJ5KDFuKSwgZjFzaXplICksXG4gICAgXSk7XG5cbiAgICBmdW5jdGlvbiBidWlsZF9tdWxOUjIoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24oZjJtUHJlZml4ICsgXCJfbXVsTlJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicHJcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCB4MGMgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjFzaXplKSk7XG4gICAgICAgIGNvbnN0IHgwID0gYy5nZXRMb2NhbChcInhcIik7XG4gICAgICAgIGNvbnN0IHgxID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJ4XCIpLCBjLmkzMl9jb25zdChmMXNpemUpKTtcbiAgICAgICAgY29uc3QgcjAgPSBjLmdldExvY2FsKFwicHJcIik7XG4gICAgICAgIGNvbnN0IHIxID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwclwiKSwgYy5pMzJfY29uc3QoZjFzaXplKSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCtcIl9jb3B5XCIsIHgwLCB4MGMpLFxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCtcIl9zdWJcIiwgeDAsIHgxLCByMCksXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4K1wiX2FkZFwiLCB4MGMsIHgxLCByMSksXG4gICAgICAgICk7XG4gICAgfVxuICAgIGJ1aWxkX211bE5SMigpO1xuXG4gICAgY29uc3QgZjZtUHJlZml4ID0gYnVpbGRGM20obW9kdWxlLCBmMm1QcmVmaXgrXCJfbXVsTlJcIiwgXCJmNm1cIiwgXCJmMm1cIik7XG5cbiAgICBmdW5jdGlvbiBidWlsZF9tdWxOUjYoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24oZjZtUHJlZml4ICsgXCJfbXVsTlJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicHJcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCBjMGNvcHkgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjFzaXplKjIpKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLmNhbGwoXG4gICAgICAgICAgICAgICAgZjJtUHJlZml4ICsgXCJfY29weVwiLFxuICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJ4XCIpLFxuICAgICAgICAgICAgICAgIGMwY29weVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGMuY2FsbChcbiAgICAgICAgICAgICAgICBmMm1QcmVmaXggKyBcIl9tdWxOUlwiLFxuICAgICAgICAgICAgICAgIGMuaTMyX2FkZChjLmdldExvY2FsKFwieFwiKSwgYy5pMzJfY29uc3QobjhxKjQpKSxcbiAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicHJcIilcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjLmNhbGwoXG4gICAgICAgICAgICAgICAgZjJtUHJlZml4ICsgXCJfY29weVwiLFxuICAgICAgICAgICAgICAgIGMuaTMyX2FkZChjLmdldExvY2FsKFwieFwiKSwgYy5pMzJfY29uc3QobjhxKjIpKSxcbiAgICAgICAgICAgICAgICBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInByXCIpLCBjLmkzMl9jb25zdChuOHEqNCkpLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGMuY2FsbChcbiAgICAgICAgICAgICAgICBmMm1QcmVmaXggKyBcIl9jb3B5XCIsXG4gICAgICAgICAgICAgICAgYzBjb3B5LFxuICAgICAgICAgICAgICAgIGMuaTMyX2FkZChjLmdldExvY2FsKFwicHJcIiksIGMuaTMyX2NvbnN0KG44cSoyKSksXG4gICAgICAgICAgICApLFxuICAgICAgICApO1xuICAgIH1cbiAgICBidWlsZF9tdWxOUjYoKTtcblxuICAgIGNvbnN0IGZ0bVByZWZpeCA9IGJ1aWxkRjJtKG1vZHVsZSwgZjZtUHJlZml4K1wiX211bE5SXCIsIFwiZnRtXCIsIGY2bVByZWZpeCk7XG5cbiAgICBjb25zdCBhdGVMb29wQ291bnQgPSAweGQyMDEwMDAwMDAwMTAwMDBuO1xuICAgIGNvbnN0IGF0ZUxvb3BCaXRCeXRlcyA9IGJpdHMoYXRlTG9vcENvdW50KTtcbiAgICBjb25zdCBwQXRlTG9vcEJpdEJ5dGVzID0gbW9kdWxlLmFsbG9jKGF0ZUxvb3BCaXRCeXRlcyk7XG5cbiAgICBjb25zdCBhdGVDb2VmU2l6ZSA9IDMgKiBmMnNpemU7XG4gICAgY29uc3QgYXRlTkRibENvZWZzID0gYXRlTG9vcEJpdEJ5dGVzLmxlbmd0aC0xO1xuICAgIGNvbnN0IGF0ZU5BZGRDb2VmcyA9IGF0ZUxvb3BCaXRCeXRlcy5yZWR1Y2UoKGFjYywgYikgPT4gIGFjYyArICggYiE9MCA/IDEgOiAwKSAgICwwKTtcbiAgICBjb25zdCBhdGVOQ29lZnMgPSBhdGVOQWRkQ29lZnMgKyBhdGVORGJsQ29lZnMgKyAxO1xuICAgIGNvbnN0IHByZVBTaXplID0gMyoyKm44cTtcbiAgICBjb25zdCBwcmVRU2l6ZSA9IDMqbjhxKjIgKyBhdGVOQ29lZnMqYXRlQ29lZlNpemU7XG4gICAgY29uc3QgZmluYWxFeHBJc05lZ2F0aXZlID0gdHJ1ZTtcblxuICAgIGNvbnN0IGZpbmFsRXhwWiA9IDE1MTMyMzc2MjIyOTQxNjQyNzUybjtcblxuXG4gICAgbW9kdWxlLm1vZHVsZXNbcHJlZml4XSA9IHtcbiAgICAgICAgbjY0cTogbjY0cSxcbiAgICAgICAgbjY0cjogbjY0cixcbiAgICAgICAgbjhxOiBuOHEsXG4gICAgICAgIG44cjogbjhyLFxuICAgICAgICBwRzFnZW46IHBHMWdlbixcbiAgICAgICAgcEcxemVybzogcEcxemVybyxcbiAgICAgICAgcEcxYjogcEcxYixcbiAgICAgICAgcEcyZ2VuOiBwRzJnZW4sXG4gICAgICAgIHBHMnplcm86IHBHMnplcm8sXG4gICAgICAgIHBHMmI6IHBHMmIsXG4gICAgICAgIHBxOiBtb2R1bGUubW9kdWxlc1tcImYxbVwiXS5wcSxcbiAgICAgICAgcHI6IHByLFxuICAgICAgICBwT25lVDogcE9uZVQsXG4gICAgICAgIHI6IHIsXG4gICAgICAgIHE6IHEsXG4gICAgICAgIHByZVBTaXplOiBwcmVQU2l6ZSxcbiAgICAgICAgcHJlUVNpemU6IHByZVFTaXplXG4gICAgfTtcblxuXG4gICAgZnVuY3Rpb24gbmFmKG4pIHtcbiAgICAgICAgbGV0IEUgPSBuO1xuICAgICAgICBjb25zdCByZXMgPSBbXTtcbiAgICAgICAgd2hpbGUgKEUgPiAwbikge1xuICAgICAgICAgICAgaWYgKGlzT2RkKEUpKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgeiA9IDIgLSBOdW1iZXIoRSAlIDRuKTtcbiAgICAgICAgICAgICAgICByZXMucHVzaCggeiApO1xuICAgICAgICAgICAgICAgIEUgPSBFIC0gQmlnSW50KHopO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXMucHVzaCggMCApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgRSA9IEUgPj4gMW47XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBiaXRzKG4pIHtcbiAgICAgICAgbGV0IEUgPSBuO1xuICAgICAgICBjb25zdCByZXMgPSBbXTtcbiAgICAgICAgd2hpbGUgKEUgPiAwbikge1xuICAgICAgICAgICAgaWYgKGlzT2RkKEUpKSB7XG4gICAgICAgICAgICAgICAgcmVzLnB1c2goIDEgKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmVzLnB1c2goIDAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIEUgPSBFID4+IDFuO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXM7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYnVpbGRQcmVwYXJlRzEoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4KyBcIl9wcmVwYXJlRzFcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwUFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInBwcmVQXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5jYWxsKGcxbVByZWZpeCArIFwiX25vcm1hbGl6ZVwiLCBjLmdldExvY2FsKFwicFBcIiksIGMuZ2V0TG9jYWwoXCJwcHJlUFwiKSksICAvLyBUT0RPIFJlbW92ZSBpZiBhbHJlYWR5IGluIGFmZmluZVxuICAgICAgICApO1xuICAgIH1cblxuXG5cbiAgICBmdW5jdGlvbiBidWlsZFByZXBEb3VibGVTdGVwKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCsgXCJfcHJlcERibFN0ZXBcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJSXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiclwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IFJ4ICA9IGMuZ2V0TG9jYWwoXCJSXCIpO1xuICAgICAgICBjb25zdCBSeSAgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcIlJcIiksIGMuaTMyX2NvbnN0KDIqbjhxKSk7XG4gICAgICAgIGNvbnN0IFJ6ICA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwiUlwiKSwgYy5pMzJfY29uc3QoNCpuOHEpKTtcblxuICAgICAgICBjb25zdCB0MCAgPSBjLmdldExvY2FsKFwiclwiKTtcbiAgICAgICAgY29uc3QgdDMgID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJyXCIpLCBjLmkzMl9jb25zdCgyKm44cSkpO1xuICAgICAgICBjb25zdCB0NiAgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInJcIiksIGMuaTMyX2NvbnN0KDQqbjhxKSk7XG5cblxuICAgICAgICBjb25zdCB6c3F1YXJlZCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMnNpemUpKTtcbiAgICAgICAgY29uc3QgdDEgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjJzaXplKSk7XG4gICAgICAgIGNvbnN0IHQyID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYyc2l6ZSkpO1xuICAgICAgICBjb25zdCB0NCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMnNpemUpKTtcbiAgICAgICAgY29uc3QgdDUgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjJzaXplKSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuXG4gICAgICAgICAgICAvLyB0bXAwID0gci54LnNxdWFyZSgpO1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX3NxdWFyZVwiLCBSeCwgdDApLFxuXG4gICAgICAgICAgICAvLyB0bXAxID0gci55LnNxdWFyZSgpO1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX3NxdWFyZVwiLCBSeSwgdDEpLFxuXG4gICAgICAgICAgICAvLyB0bXAyID0gdG1wMS5zcXVhcmUoKTtcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9zcXVhcmVcIiwgdDEsIHQyKSxcblxuICAgICAgICAgICAgLy8gdG1wMyA9ICh0bXAxICsgci54KS5zcXVhcmUoKSAtIHRtcDAgLSB0bXAyO1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCB0MSwgUngsIHQzKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9zcXVhcmVcIiwgdDMsIHQzKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9zdWJcIiwgdDMsIHQwLCB0MyksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfc3ViXCIsIHQzLCB0MiwgdDMpLFxuXG4gICAgICAgICAgICAvLyB0bXAzID0gdG1wMyArIHRtcDM7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIHQzLCB0MywgdDMpLFxuXG4gICAgICAgICAgICAvLyB0bXA0ID0gdG1wMCArIHRtcDAgKyB0bXAwO1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCB0MCwgdDAsIHQ0KSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgdDQsIHQwLCB0NCksXG5cbiAgICAgICAgICAgIC8vIHRtcDYgPSByLnggKyB0bXA0O1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCBSeCwgdDQsIHQ2KSxcblxuICAgICAgICAgICAgLy8gdG1wNSA9IHRtcDQuc3F1YXJlKCk7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfc3F1YXJlXCIsIHQ0LCB0NSksXG5cbiAgICAgICAgICAgIC8vIHpzcXVhcmVkID0gci56LnNxdWFyZSgpO1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX3NxdWFyZVwiLCBSeiwgenNxdWFyZWQpLFxuXG4gICAgICAgICAgICAvLyByLnggPSB0bXA1IC0gdG1wMyAtIHRtcDM7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfc3ViXCIsIHQ1LCB0MywgUngpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX3N1YlwiLCBSeCwgdDMsIFJ4KSxcblxuICAgICAgICAgICAgLy8gci56ID0gKHIueiArIHIueSkuc3F1YXJlKCkgLSB0bXAxIC0genNxdWFyZWQ7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIFJ6LCBSeSwgUnopLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX3NxdWFyZVwiLCBSeiwgUnopLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX3N1YlwiLCBSeiwgdDEsIFJ6KSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9zdWJcIiwgUnosIHpzcXVhcmVkLCBSeiksXG5cbiAgICAgICAgICAgIC8vIHIueSA9ICh0bXAzIC0gci54KSAqIHRtcDQ7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfc3ViXCIsIHQzLCBSeCwgUnkpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX211bFwiLCBSeSwgdDQsIFJ5KSxcblxuICAgICAgICAgICAgLy8gdG1wMiA9IHRtcDIgKyB0bXAyO1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCB0MiwgdDIsIHQyKSxcblxuICAgICAgICAgICAgLy8gdG1wMiA9IHRtcDIgKyB0bXAyO1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCB0MiwgdDIsIHQyKSxcblxuICAgICAgICAgICAgLy8gdG1wMiA9IHRtcDIgKyB0bXAyO1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCB0MiwgdDIsIHQyKSxcblxuICAgICAgICAgICAgLy8gci55IC09IHRtcDI7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfc3ViXCIsIFJ5LCB0MiwgUnkpLFxuXG4gICAgICAgICAgICAvLyB0bXAzID0gdG1wNCAqIHpzcXVhcmVkO1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX211bFwiLCB0NCwgenNxdWFyZWQsIHQzKSxcblxuICAgICAgICAgICAgLy8gdG1wMyA9IHRtcDMgKyB0bXAzO1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCB0MywgdDMsIHQzKSxcblxuICAgICAgICAgICAgLy8gdG1wMyA9IC10bXAzO1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX25lZ1wiLCB0MywgdDMpLFxuXG4gICAgICAgICAgICAvLyB0bXA2ID0gdG1wNi5zcXVhcmUoKSAtIHRtcDAgLSB0bXA1O1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX3NxdWFyZVwiLCB0NiwgdDYpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX3N1YlwiLCB0NiwgdDAsIHQ2KSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9zdWJcIiwgdDYsIHQ1LCB0NiksXG5cbiAgICAgICAgICAgIC8vIHRtcDEgPSB0bXAxICsgdG1wMTtcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgdDEsIHQxLCB0MSksXG5cbiAgICAgICAgICAgIC8vIHRtcDEgPSB0bXAxICsgdG1wMTtcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgdDEsIHQxLCB0MSksXG5cbiAgICAgICAgICAgIC8vIHRtcDYgPSB0bXA2IC0gdG1wMTtcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9zdWJcIiwgdDYsIHQxLCB0NiksXG5cbiAgICAgICAgICAgIC8vIHRtcDAgPSByLnogKiB6c3F1YXJlZDtcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9tdWxcIiwgUnosIHpzcXVhcmVkLCB0MCksXG5cbiAgICAgICAgICAgIC8vIHRtcDAgPSB0bXAwICsgdG1wMDtcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgdDAsIHQwLCB0MCksXG5cbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBidWlsZFByZXBBZGRTdGVwKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCsgXCJfcHJlcEFkZFN0ZXBcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJSXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiUVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInJcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCBSeCAgPSBjLmdldExvY2FsKFwiUlwiKTtcbiAgICAgICAgY29uc3QgUnkgID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJSXCIpLCBjLmkzMl9jb25zdCgyKm44cSkpO1xuICAgICAgICBjb25zdCBSeiAgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcIlJcIiksIGMuaTMyX2NvbnN0KDQqbjhxKSk7XG5cbiAgICAgICAgY29uc3QgUXggID0gYy5nZXRMb2NhbChcIlFcIik7XG4gICAgICAgIGNvbnN0IFF5ICA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwiUVwiKSwgYy5pMzJfY29uc3QoMipuOHEpKTtcblxuICAgICAgICBjb25zdCB0MTAgID0gYy5nZXRMb2NhbChcInJcIik7XG4gICAgICAgIGNvbnN0IHQxICA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwiclwiKSwgYy5pMzJfY29uc3QoMipuOHEpKTtcbiAgICAgICAgY29uc3QgdDkgID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJyXCIpLCBjLmkzMl9jb25zdCg0Km44cSkpO1xuXG4gICAgICAgIGNvbnN0IHpzcXVhcmVkID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYyc2l6ZSkpO1xuICAgICAgICBjb25zdCB5c3F1YXJlZCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMnNpemUpKTtcbiAgICAgICAgY29uc3QgenRzcXVhcmVkID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYyc2l6ZSkpO1xuICAgICAgICBjb25zdCB0MCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMnNpemUpKTtcbiAgICAgICAgY29uc3QgdDIgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjJzaXplKSk7XG4gICAgICAgIGNvbnN0IHQzID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYyc2l6ZSkpO1xuICAgICAgICBjb25zdCB0NCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMnNpemUpKTtcbiAgICAgICAgY29uc3QgdDUgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjJzaXplKSk7XG4gICAgICAgIGNvbnN0IHQ2ID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYyc2l6ZSkpO1xuICAgICAgICBjb25zdCB0NyA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMnNpemUpKTtcbiAgICAgICAgY29uc3QgdDggPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjJzaXplKSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuXG4gICAgICAgICAgICAvLyB6c3F1YXJlZCA9IHIuei5zcXVhcmUoKTtcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9zcXVhcmVcIiwgUnosIHpzcXVhcmVkKSxcblxuICAgICAgICAgICAgLy8geXNxdWFyZWQgPSBxLnkuc3F1YXJlKCk7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfc3F1YXJlXCIsIFF5LCB5c3F1YXJlZCksXG5cbiAgICAgICAgICAgIC8vIHQwID0genNxdWFyZWQgKiBxLng7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbXVsXCIsIHpzcXVhcmVkLCBReCwgdDApLFxuXG4gICAgICAgICAgICAvLyB0MSA9ICgocS55ICsgci56KS5zcXVhcmUoKSAtIHlzcXVhcmVkIC0genNxdWFyZWQpICogenNxdWFyZWQ7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIFF5LCBSeiwgdDEpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX3NxdWFyZVwiLCB0MSwgdDEpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX3N1YlwiLCB0MSwgeXNxdWFyZWQsIHQxKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9zdWJcIiwgdDEsIHpzcXVhcmVkLCB0MSksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbXVsXCIsIHQxLCB6c3F1YXJlZCwgdDEpLFxuXG4gICAgICAgICAgICAvLyB0MiA9IHQwIC0gci54O1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX3N1YlwiLCB0MCwgUngsIHQyKSxcblxuICAgICAgICAgICAgLy8gdDMgPSB0Mi5zcXVhcmUoKTtcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9zcXVhcmVcIiwgdDIsIHQzKSxcblxuICAgICAgICAgICAgLy8gdDQgPSB0MyArIHQzO1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCB0MywgdDMsIHQ0KSxcblxuICAgICAgICAgICAgLy8gdDQgPSB0NCArIHQ0O1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCB0NCwgdDQsIHQ0KSxcblxuICAgICAgICAgICAgLy8gdDUgPSB0NCAqIHQyO1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX211bFwiLCB0NCwgdDIsIHQ1KSxcblxuICAgICAgICAgICAgLy8gdDYgPSB0MSAtIHIueSAtIHIueTtcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9zdWJcIiwgdDEsIFJ5LCB0NiksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfc3ViXCIsIHQ2LCBSeSwgdDYpLFxuXG4gICAgICAgICAgICAvLyB0OSA9IHQ2ICogcS54O1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX211bFwiLCB0NiwgUXgsIHQ5KSxcblxuICAgICAgICAgICAgLy8gdDcgPSB0NCAqIHIueDtcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9tdWxcIiwgdDQsIFJ4LCB0NyksXG5cbiAgICAgICAgICAgIC8vIHIueCA9IHQ2LnNxdWFyZSgpIC0gdDUgLSB0NyAtIHQ3O1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX3NxdWFyZVwiLCB0NiwgUngpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX3N1YlwiLCBSeCwgdDUsIFJ4KSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9zdWJcIiwgUngsIHQ3LCBSeCksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfc3ViXCIsIFJ4LCB0NywgUngpLFxuXG4gICAgICAgICAgICAvLyByLnogPSAoci56ICsgdDIpLnNxdWFyZSgpIC0genNxdWFyZWQgLSB0MztcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgUnosIHQyLCBSeiksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfc3F1YXJlXCIsIFJ6LCBSeiksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfc3ViXCIsIFJ6LCB6c3F1YXJlZCwgUnopLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX3N1YlwiLCBSeiwgdDMsIFJ6KSxcblxuICAgICAgICAgICAgLy8gdDEwID0gcS55ICsgci56O1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCBReSwgUnosIHQxMCksXG5cbiAgICAgICAgICAgIC8vIHQ4ID0gKHQ3IC0gci54KSAqIHQ2O1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX3N1YlwiLCB0NywgUngsIHQ4KSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9tdWxcIiwgdDgsIHQ2LCB0OCksXG5cbiAgICAgICAgICAgIC8vIHQwID0gci55ICogdDU7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbXVsXCIsIFJ5LCB0NSwgdDApLFxuXG4gICAgICAgICAgICAvLyB0MCA9IHQwICsgdDA7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIHQwLCB0MCwgdDApLFxuXG4gICAgICAgICAgICAvLyByLnkgPSB0OCAtIHQwO1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX3N1YlwiLCB0OCwgdDAsIFJ5KSxcblxuICAgICAgICAgICAgLy8gdDEwID0gdDEwLnNxdWFyZSgpIC0geXNxdWFyZWQ7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfc3F1YXJlXCIsIHQxMCwgdDEwKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9zdWJcIiwgdDEwLCB5c3F1YXJlZCwgdDEwKSxcblxuICAgICAgICAgICAgLy8genRzcXVhcmVkID0gci56LnNxdWFyZSgpO1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX3NxdWFyZVwiLCBSeiwgenRzcXVhcmVkKSxcblxuICAgICAgICAgICAgLy8gdDEwID0gdDEwIC0genRzcXVhcmVkO1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX3N1YlwiLCB0MTAsIHp0c3F1YXJlZCwgdDEwKSxcblxuICAgICAgICAgICAgLy8gdDkgPSB0OSArIHQ5IC0gdDEwO1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCB0OSwgdDksIHQ5KSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9zdWJcIiwgdDksIHQxMCwgdDkpLFxuXG4gICAgICAgICAgICAvLyB0MTAgPSByLnogKyByLno7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIFJ6LCBSeiwgdDEwKSxcblxuICAgICAgICAgICAgLy8gdDYgPSAtdDY7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbmVnXCIsIHQ2LCB0NiksXG5cbiAgICAgICAgICAgIC8vIHQxID0gdDYgKyB0NjtcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgdDYsIHQ2LCB0MSksXG4gICAgICAgICk7XG4gICAgfVxuXG5cbiAgICBmdW5jdGlvbiBidWlsZFByZXBhcmVHMigpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrIFwiX3ByZXBhcmVHMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInBRXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicHByZVFcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJwQ29lZlwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcImlcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuXG4gICAgICAgIGNvbnN0IFEgPSBjLmdldExvY2FsKFwicFFcIik7XG5cbiAgICAgICAgY29uc3QgcFIgPSBtb2R1bGUuYWxsb2MoZjJzaXplKjMpO1xuICAgICAgICBjb25zdCBSID0gYy5pMzJfY29uc3QocFIpO1xuXG4gICAgICAgIGNvbnN0IGJhc2UgPSBjLmdldExvY2FsKFwicHByZVFcIik7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5jYWxsKGcybVByZWZpeCArIFwiX25vcm1hbGl6ZVwiLCBRLCBiYXNlKSxcbiAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgYy5jYWxsKGcybVByZWZpeCArIFwiX2lzWmVyb1wiLCBiYXNlKSxcbiAgICAgICAgICAgICAgICBjLnJldChbXSlcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjLmNhbGwoZzJtUHJlZml4ICsgXCJfY29weVwiLCBiYXNlLCBSKSxcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJwQ29lZlwiLCBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInBwcmVRXCIpLCBjLmkzMl9jb25zdChmMnNpemUqMykpKSxcbiAgICAgICAgKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLnNldExvY2FsKFwiaVwiLCBjLmkzMl9jb25zdChhdGVMb29wQml0Qnl0ZXMubGVuZ3RoLTIpKSxcbiAgICAgICAgICAgIGMuYmxvY2soYy5sb29wKFxuXG4gICAgICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX3ByZXBEYmxTdGVwXCIsIFIsIGMuZ2V0TG9jYWwoXCJwQ29lZlwiKSksXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcInBDb2VmXCIsIGMuaTMyX2FkZChjLmdldExvY2FsKFwicENvZWZcIiksIGMuaTMyX2NvbnN0KGF0ZUNvZWZTaXplKSkpLFxuXG4gICAgICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfbG9hZDhfcyhjLmdldExvY2FsKFwiaVwiKSwgcEF0ZUxvb3BCaXRCeXRlcyksXG4gICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLmMuY2FsbChwcmVmaXggKyBcIl9wcmVwQWRkU3RlcFwiLCBSLCBiYXNlLCBjLmdldExvY2FsKFwicENvZWZcIikpLFxuICAgICAgICAgICAgICAgICAgICAgICAgLi4uYy5zZXRMb2NhbChcInBDb2VmXCIsIGMuaTMyX2FkZChjLmdldExvY2FsKFwicENvZWZcIiksIGMuaTMyX2NvbnN0KGF0ZUNvZWZTaXplKSkpLFxuICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBjLmJyX2lmKDEsIGMuaTMyX2VxeiAoIGMuZ2V0TG9jYWwoXCJpXCIpICkpLFxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpXCIsIGMuaTMyX3N1YihjLmdldExvY2FsKFwiaVwiKSwgYy5pMzJfY29uc3QoMSkpKSxcbiAgICAgICAgICAgICAgICBjLmJyKDApXG4gICAgICAgICAgICApKVxuICAgICAgICApO1xuICAgIH1cblxuXG4gICAgZnVuY3Rpb24gYnVpbGRGNk11bDEoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24oZjZtUHJlZml4KyBcIl9tdWwxXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicEFcIiwgXCJpMzJcIik7ICAgIC8vIEY2XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwQzFcIiwgXCJpMzJcIik7ICAgLy8gRjJcbiAgICAgICAgZi5hZGRQYXJhbShcInBSXCIsIFwiaTMyXCIpOyAgICAvLyBGNlxuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgQV9jMCA9IGMuZ2V0TG9jYWwoXCJwQVwiKTtcbiAgICAgICAgY29uc3QgQV9jMSA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwicEFcIiksIGMuaTMyX2NvbnN0KGYxc2l6ZSoyKSk7XG4gICAgICAgIGNvbnN0IEFfYzIgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInBBXCIpLCBjLmkzMl9jb25zdChmMXNpemUqNCkpO1xuXG4gICAgICAgIGNvbnN0IGMxICA9IGMuZ2V0TG9jYWwoXCJwQzFcIik7XG5cbiAgICAgICAgY29uc3QgdDEgPSBjLmdldExvY2FsKFwicFJcIik7XG4gICAgICAgIGNvbnN0IHQyID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwUlwiKSwgYy5pMzJfY29uc3QoZjFzaXplKjIpKTtcbiAgICAgICAgY29uc3QgYl9iID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwUlwiKSwgYy5pMzJfY29uc3QoZjFzaXplKjQpKTtcblxuICAgICAgICBjb25zdCBBYzBfQWMxID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYxc2l6ZSoyKSk7XG4gICAgICAgIGNvbnN0IEFjMV9BYzIgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjFzaXplKjIpKTtcblxuICAgICAgICBmLmFkZENvZGUoXG5cbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgQV9jMCwgQV9jMSwgQWMwX0FjMSksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIEFfYzEsIEFfYzIsIEFjMV9BYzIpLFxuXG4gICAgICAgICAgICAvLyBsZXQgYl9iID0gc2VsZi5jMSAqIGMxO1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX211bFwiLCBBX2MxLCBjMSwgYl9iKSxcblxuICAgICAgICAgICAgLy8gbGV0IHQxID0gKHNlbGYuYzEgKyBzZWxmLmMyKSAqIGMxIC0gYl9iO1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX211bFwiLCBBYzFfQWMyLCBjMSwgdDEpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX3N1YlwiLCB0MSwgYl9iLCB0MSksXG5cbiAgICAgICAgICAgIC8vIGxldCB0MSA9IHQxLm11bF9ieV9ub25yZXNpZHVlKCk7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbXVsTlJcIiwgdDEsIHQxKSxcblxuICAgICAgICAgICAgLy8gbGV0IHQyID0gKHNlbGYuYzAgKyBzZWxmLmMxKSAqIGMxIC0gYl9iO1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX211bFwiLCBBYzBfQWMxLCBjMSwgdDIpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX3N1YlwiLCB0MiwgYl9iLCB0MiksXG4gICAgICAgICk7XG4gICAgfVxuICAgIGJ1aWxkRjZNdWwxKCk7XG5cbiAgICBmdW5jdGlvbiBidWlsZEY2TXVsMDEoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24oZjZtUHJlZml4KyBcIl9tdWwwMVwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInBBXCIsIFwiaTMyXCIpOyAgICAvLyBGNlxuICAgICAgICBmLmFkZFBhcmFtKFwicEMwXCIsIFwiaTMyXCIpOyAgIC8vIEYyXG4gICAgICAgIGYuYWRkUGFyYW0oXCJwQzFcIiwgXCJpMzJcIik7ICAgLy8gRjJcbiAgICAgICAgZi5hZGRQYXJhbShcInBSXCIsIFwiaTMyXCIpOyAgICAvLyBGNlxuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgQV9jMCA9IGMuZ2V0TG9jYWwoXCJwQVwiKTtcbiAgICAgICAgY29uc3QgQV9jMSA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwicEFcIiksIGMuaTMyX2NvbnN0KGYxc2l6ZSoyKSk7XG4gICAgICAgIGNvbnN0IEFfYzIgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInBBXCIpLCBjLmkzMl9jb25zdChmMXNpemUqNCkpO1xuXG4gICAgICAgIGNvbnN0IGMwICA9IGMuZ2V0TG9jYWwoXCJwQzBcIik7XG4gICAgICAgIGNvbnN0IGMxICA9IGMuZ2V0TG9jYWwoXCJwQzFcIik7XG5cbiAgICAgICAgY29uc3QgdDEgPSBjLmdldExvY2FsKFwicFJcIik7XG4gICAgICAgIGNvbnN0IHQyID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwUlwiKSwgYy5pMzJfY29uc3QoZjFzaXplKjIpKTtcbiAgICAgICAgY29uc3QgdDMgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInBSXCIpLCBjLmkzMl9jb25zdChmMXNpemUqNCkpO1xuXG4gICAgICAgIGNvbnN0IGFfYSA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMXNpemUqMikpO1xuICAgICAgICBjb25zdCBiX2IgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjFzaXplKjIpKTtcbiAgICAgICAgY29uc3QgQWMwX0FjMSA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMXNpemUqMikpO1xuICAgICAgICBjb25zdCBBYzBfQWMyID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYxc2l6ZSoyKSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgLy8gbGV0IGFfYSA9IHNlbGYuYzAgKiBjMDtcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9tdWxcIiwgQV9jMCwgYzAsIGFfYSksXG5cbiAgICAgICAgICAgIC8vIGxldCBiX2IgPSBzZWxmLmMxICogYzE7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbXVsXCIsIEFfYzEsIGMxLCBiX2IpLFxuXG5cbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgQV9jMCwgQV9jMSwgQWMwX0FjMSksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIEFfYzAsIEFfYzIsIEFjMF9BYzIpLFxuXG4gICAgICAgICAgICAvLyBsZXQgdDEgPSAoc2VsZi5jMSArIHNlbGYuYzIpICogYzEgLSBiX2I7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIEFfYzEsIEFfYzIsIHQxKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9tdWxcIiwgdDEsIGMxLCB0MSksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfc3ViXCIsIHQxLCBiX2IsIHQxKSxcblxuICAgICAgICAgICAgLy8gbGV0IHQxID0gdDEubXVsX2J5X25vbnJlc2lkdWUoKSArIGFfYTtcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9tdWxOUlwiLCB0MSwgdDEpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCB0MSwgYV9hLCB0MSksXG5cbiAgICAgICAgICAgIC8vIGxldCB0MiA9IChjMCArIGMxKSAqIChzZWxmLmMwICsgc2VsZi5jMSkgLSBhX2EgLSBiX2I7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIGMwLCBjMSwgdDIpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX211bFwiLCB0MiwgQWMwX0FjMSwgdDIpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX3N1YlwiLCB0MiwgYV9hLCB0MiksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfc3ViXCIsIHQyLCBiX2IsIHQyKSxcblxuICAgICAgICAgICAgLy8gbGV0IHQzID0gKHNlbGYuYzAgKyBzZWxmLmMyKSAqIGMwIC0gYV9hICsgYl9iO1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX211bFwiLCBBYzBfQWMyLCBjMCwgdDMpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX3N1YlwiLCB0MywgYV9hLCB0MyksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIHQzLCBiX2IsIHQzKSxcblxuXG4gICAgICAgICk7XG4gICAgfVxuICAgIGJ1aWxkRjZNdWwwMSgpO1xuXG5cbiAgICBmdW5jdGlvbiBidWlsZEYxMk11bDAxNCgpIHtcblxuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKGZ0bVByZWZpeCsgXCJfbXVsMDE0XCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicEFcIiwgXCJpMzJcIik7ICAgIC8vIEYxMlxuICAgICAgICBmLmFkZFBhcmFtKFwicEMwXCIsIFwiaTMyXCIpOyAgIC8vIEYyXG4gICAgICAgIGYuYWRkUGFyYW0oXCJwQzFcIiwgXCJpMzJcIik7ICAgLy8gRjJcbiAgICAgICAgZi5hZGRQYXJhbShcInBDNFwiLCBcImkzMlwiKTsgICAvLyBGMlxuICAgICAgICBmLmFkZFBhcmFtKFwicFJcIiwgXCJpMzJcIik7ICAgIC8vIEYxMlxuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cblxuICAgICAgICBjb25zdCBBX2MwID0gYy5nZXRMb2NhbChcInBBXCIpO1xuICAgICAgICBjb25zdCBBX2MxID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwQVwiKSwgYy5pMzJfY29uc3QoZjFzaXplKjYpKTtcblxuICAgICAgICBjb25zdCBjMCAgPSBjLmdldExvY2FsKFwicEMwXCIpO1xuICAgICAgICBjb25zdCBjMSAgPSBjLmdldExvY2FsKFwicEMxXCIpO1xuICAgICAgICBjb25zdCBjNCAgPSBjLmdldExvY2FsKFwicEM0XCIpO1xuXG4gICAgICAgIGNvbnN0IGFhID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYxc2l6ZSo2KSk7XG4gICAgICAgIGNvbnN0IGJiID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYxc2l6ZSo2KSk7XG4gICAgICAgIGNvbnN0IG8gPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjFzaXplKjIpKTtcblxuICAgICAgICBjb25zdCBSX2MwID0gYy5nZXRMb2NhbChcInBSXCIpO1xuICAgICAgICBjb25zdCBSX2MxID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwUlwiKSwgYy5pMzJfY29uc3QoZjFzaXplKjYpKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICAvLyBsZXQgYWEgPSBzZWxmLmMwLm11bF9ieV8wMShjMCwgYzEpO1xuICAgICAgICAgICAgYy5jYWxsKGY2bVByZWZpeCArIFwiX211bDAxXCIsIEFfYzAsIGMwLCBjMSwgYWEpLFxuXG4gICAgICAgICAgICAvLyBsZXQgYmIgPSBzZWxmLmMxLm11bF9ieV8xKGM0KTtcbiAgICAgICAgICAgIGMuY2FsbChmNm1QcmVmaXggKyBcIl9tdWwxXCIsIEFfYzEsIGM0LCBiYiksXG5cbiAgICAgICAgICAgIC8vIGxldCBvID0gYzEgKyBjNDtcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgYzEsIGM0LCBvKSxcblxuICAgICAgICAgICAgLy8gbGV0IGMxID0gc2VsZi5jMSArIHNlbGYuYzA7XG4gICAgICAgICAgICBjLmNhbGwoZjZtUHJlZml4ICsgXCJfYWRkXCIsIEFfYzEsIEFfYzAsIFJfYzEpLFxuXG4gICAgICAgICAgICAvLyBsZXQgYzEgPSBjMS5tdWxfYnlfMDEoYzAsICZvKTtcbiAgICAgICAgICAgIGMuY2FsbChmNm1QcmVmaXggKyBcIl9tdWwwMVwiLCBSX2MxLCBjMCwgbywgUl9jMSksXG5cbiAgICAgICAgICAgIC8vIGxldCBjMSA9IGMxIC0gYWEgLSBiYjtcbiAgICAgICAgICAgIGMuY2FsbChmNm1QcmVmaXggKyBcIl9zdWJcIiwgUl9jMSwgYWEsIFJfYzEpLFxuICAgICAgICAgICAgYy5jYWxsKGY2bVByZWZpeCArIFwiX3N1YlwiLCBSX2MxLCBiYiwgUl9jMSksXG5cbiAgICAgICAgICAgIC8vIGxldCBjMCA9IGJiO1xuICAgICAgICAgICAgYy5jYWxsKGY2bVByZWZpeCArIFwiX2NvcHlcIiwgYmIsIFJfYzApLFxuXG4gICAgICAgICAgICAvLyBsZXQgYzAgPSBjMC5tdWxfYnlfbm9ucmVzaWR1ZSgpO1xuICAgICAgICAgICAgYy5jYWxsKGY2bVByZWZpeCArIFwiX211bE5SXCIsIFJfYzAsIFJfYzApLFxuXG4gICAgICAgICAgICAvLyBsZXQgYzAgPSBjMCArIGFhO1xuICAgICAgICAgICAgYy5jYWxsKGY2bVByZWZpeCArIFwiX2FkZFwiLCBSX2MwLCBhYSwgUl9jMCksXG4gICAgICAgICk7XG4gICAgfVxuICAgIGJ1aWxkRjEyTXVsMDE0KCk7XG5cblxuICAgIGZ1bmN0aW9uIGJ1aWxkRUxMKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCsgXCJfZWxsXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicFBcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwQ29lZnNcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwRlwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IFB4ICA9IGMuZ2V0TG9jYWwoXCJwUFwiKTtcbiAgICAgICAgY29uc3QgUHkgID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwUFwiKSwgYy5pMzJfY29uc3QobjhxKSk7XG5cbiAgICAgICAgY29uc3QgRiAgPSBjLmdldExvY2FsKFwicEZcIik7XG5cbiAgICAgICAgY29uc3QgY29lZjBfMCAgPSBjLmdldExvY2FsKFwicENvZWZzXCIpO1xuICAgICAgICBjb25zdCBjb2VmMF8xICA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwicENvZWZzXCIpLCBjLmkzMl9jb25zdChmMXNpemUpKTtcbiAgICAgICAgY29uc3QgY29lZjFfMCAgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInBDb2Vmc1wiKSwgYy5pMzJfY29uc3QoZjFzaXplKjIpKTtcbiAgICAgICAgY29uc3QgY29lZjFfMSAgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInBDb2Vmc1wiKSwgYy5pMzJfY29uc3QoZjFzaXplKjMpKTtcbiAgICAgICAgY29uc3QgY29lZjIgID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwQ29lZnNcIiksIGMuaTMyX2NvbnN0KGYxc2l6ZSo0KSk7XG5cbiAgICAgICAgY29uc3QgcGMwID0gbW9kdWxlLmFsbG9jKGYxc2l6ZSoyKTtcbiAgICAgICAgY29uc3QgYzAgID0gYy5pMzJfY29uc3QocGMwKTtcbiAgICAgICAgY29uc3QgYzBfYzAgPSBjLmkzMl9jb25zdChwYzApO1xuICAgICAgICBjb25zdCBjMF9jMSA9IGMuaTMyX2NvbnN0KHBjMCtmMXNpemUpO1xuXG4gICAgICAgIGNvbnN0IHBjMSA9IG1vZHVsZS5hbGxvYyhmMXNpemUqMik7XG4gICAgICAgIGNvbnN0IGMxICA9IGMuaTMyX2NvbnN0KHBjMSk7XG4gICAgICAgIGNvbnN0IGMxX2MwID0gYy5pMzJfY29uc3QocGMxKTtcbiAgICAgICAgY29uc3QgYzFfYzEgPSBjLmkzMl9jb25zdChwYzErZjFzaXplKTtcbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgLy8gICAgIGxldCBtdXQgYzAgPSBjb2VmZnMuMDtcbiAgICAgICAgICAgIC8vICAgICBsZXQgbXV0IGMxID0gY29lZmZzLjE7XG4gICAgICAgICAgICAvL1xuICAgICAgICAgICAgLy8gICAgYzAuYzAgKj0gcC55O1xuICAgICAgICAgICAgLy8gICAgYzAuYzEgKj0gcC55O1xuICAgICAgICAgICAgLy9cbiAgICAgICAgICAgIC8vICAgIGMxLmMwICo9IHAueDtcbiAgICAgICAgICAgIC8vICAgIGMxLmMxICo9IHAueDtcbiAgICAgICAgICAgIC8vXG4gICAgICAgICAgICAvLyAgICAgZi5tdWxfYnlfMDE0KCZjb2VmZnMuMiwgJmMxLCAmYzApXG5cbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXggKyBcIl9tdWxcIiwgY29lZjBfMCwgUHksIGMwX2MwKSxcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXggKyBcIl9tdWxcIiwgY29lZjBfMSwgUHksIGMwX2MxKSxcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXggKyBcIl9tdWxcIiwgY29lZjFfMCwgUHgsIGMxX2MwKSxcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXggKyBcIl9tdWxcIiwgY29lZjFfMSwgUHgsIGMxX2MxKSxcblxuICAgICAgICAgICAgYy5jYWxsKGZ0bVByZWZpeCArIFwiX211bDAxNFwiLCBGLCBjb2VmMiwgYzEsIGMwLCBGKSxcblxuICAgICAgICApO1xuXG4gICAgfVxuICAgIGJ1aWxkRUxMKCk7XG5cbiAgICBmdW5jdGlvbiBidWlsZE1pbGxlckxvb3AoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4KyBcIl9taWxsZXJMb29wXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicHByZVBcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwcHJlUVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInJcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJwQ29lZlwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcImlcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCBwcmVQID0gYy5nZXRMb2NhbChcInBwcmVQXCIpO1xuXG4gICAgICAgIGNvbnN0IGNvZWZzICA9IGMuZ2V0TG9jYWwoXCJwQ29lZlwiKTtcblxuICAgICAgICBjb25zdCBGID0gYy5nZXRMb2NhbChcInJcIik7XG5cblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLmNhbGwoZnRtUHJlZml4ICsgXCJfb25lXCIsIEYpLFxuXG4gICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgIGMuY2FsbChnMW1QcmVmaXggKyBcIl9pc1plcm9cIiwgcHJlUCksXG4gICAgICAgICAgICAgICAgYy5yZXQoW10pXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICBjLmNhbGwoZzFtUHJlZml4ICsgXCJfaXNaZXJvXCIsIGMuZ2V0TG9jYWwoXCJwcHJlUVwiKSksXG4gICAgICAgICAgICAgICAgYy5yZXQoW10pXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcInBDb2VmXCIsIGMuaTMyX2FkZCggYy5nZXRMb2NhbChcInBwcmVRXCIpLCBjLmkzMl9jb25zdChmMnNpemUqMykpKSxcblxuICAgICAgICAgICAgYy5zZXRMb2NhbChcImlcIiwgYy5pMzJfY29uc3QoYXRlTG9vcEJpdEJ5dGVzLmxlbmd0aC0yKSksXG4gICAgICAgICAgICBjLmJsb2NrKGMubG9vcChcblxuXG4gICAgICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX2VsbFwiLCBwcmVQLCBjb2VmcywgIEYpLFxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJwQ29lZlwiLCBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInBDb2VmXCIpLCBjLmkzMl9jb25zdChhdGVDb2VmU2l6ZSkpKSxcblxuICAgICAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX2xvYWQ4X3MoYy5nZXRMb2NhbChcImlcIiksIHBBdGVMb29wQml0Qnl0ZXMpLFxuICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5jLmNhbGwocHJlZml4ICsgXCJfZWxsXCIsIHByZVAsIGNvZWZzLCAgRiksXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5jLnNldExvY2FsKFwicENvZWZcIiwgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwQ29lZlwiKSwgYy5pMzJfY29uc3QoYXRlQ29lZlNpemUpKSksXG4gICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGMuY2FsbChmdG1QcmVmaXggKyBcIl9zcXVhcmVcIiwgRiwgRiksXG5cbiAgICAgICAgICAgICAgICBjLmJyX2lmKDEsIGMuaTMyX2VxICggYy5nZXRMb2NhbChcImlcIiksIGMuaTMyX2NvbnN0KDEpICkpLFxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpXCIsIGMuaTMyX3N1YihjLmdldExvY2FsKFwiaVwiKSwgYy5pMzJfY29uc3QoMSkpKSxcbiAgICAgICAgICAgICAgICBjLmJyKDApXG4gICAgICAgICAgICApKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9lbGxcIiwgcHJlUCwgY29lZnMsICBGKSxcblxuICAgICAgICApO1xuXG5cbiAgICAgICAge1xuICAgICAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgICAgIGMuY2FsbChmdG1QcmVmaXggKyBcIl9jb25qdWdhdGVcIiwgRiwgRiksXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgfVxuXG5cbiAgICBmdW5jdGlvbiBidWlsZEZyb2Jlbml1c01hcChuKSB7XG4gICAgICAgIGNvbnN0IEYxMiA9IFtcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICBbMW4sIDBuXSxcbiAgICAgICAgICAgICAgICBbMW4sIDBuXSxcbiAgICAgICAgICAgICAgICBbMW4sIDBuXSxcbiAgICAgICAgICAgICAgICBbMW4sIDBuXSxcbiAgICAgICAgICAgICAgICBbMW4sIDBuXSxcbiAgICAgICAgICAgICAgICBbMW4sIDBuXSxcbiAgICAgICAgICAgICAgICBbMW4sIDBuXSxcbiAgICAgICAgICAgICAgICBbMW4sIDBuXSxcbiAgICAgICAgICAgICAgICBbMW4sIDBuXSxcbiAgICAgICAgICAgICAgICBbMW4sIDBuXSxcbiAgICAgICAgICAgICAgICBbMW4sIDBuXSxcbiAgICAgICAgICAgICAgICBbMW4sIDBuXSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgWzFuLCAwbl0sXG4gICAgICAgICAgICAgICAgWzM4NTA3NTQzNzAwMzcxNjkwMTE5NTIxNDcwNzYwNTEzNjQwNTcxNTg4MDc0MjA5NzA2ODI0Mzg2NzYwNTA1MjI2MTM2Mjg0MjMyMTk2Mzc3MjUwNzIxODI2OTcxMTMwNjI3Nzc4OTE1ODk1MDY0MjQ3NjBuLCAxNTE2NTUxODUxODQ0OTgzODE0NjU2NDI3NDk2ODQ1NDAwOTkzOTgwNzUzOTg5NjgzMjU0NDY2NTYwMDc2MTM1MTA0MDMyMjcyNzEyMDAxMzkzNzA1MDQ5MzIwMTU5NTI4ODYxNDYzMDQ3NjYxMzUwMjduXSxcbiAgICAgICAgICAgICAgICBbNzkzNDc5MzkwNzI5MjE1NTEyNjIxMzc5NzAxNjMzNDIxNDQ3MDYwODg2NzQwMjgxMDYwNDkzMDEwNDU2NDg3NDI3MjgxNjQ5MDc1NDc2MzA1NjIwNzU4NzMxNjIwMzUxbiwgMG5dLFxuICAgICAgICAgICAgICAgIFsyOTczNjc3NDA4OTg2NTYxMDQzNDQyNDY1MzQ2NTIwMTA4ODc5MTcyMDQyODgzMDA5MjQ5OTg5MTc2NDE1MDE4MDkxNDIwODA3MTkyMTgyNjM4NTY3MTE2MzE4NTc2NDcyNjQ5MzQ3MDE1OTE3NjkwNTMwbiwgMTAyODczMjE0NjIzNTEwNjM0OTk3NTMyNDQ3OTIxNTc5NTI3NzM4NDgzOTkzNjkyOTc1Nzg5NjE1NTY0MzExODAzMjYxMDg0MzI5ODY1NTIyNTg3NTU3MTMxMDU1MjU0MzAxNDY5MDg3ODM1NDg2OTI1N25dLFxuICAgICAgICAgICAgICAgIFs3OTM0NzkzOTA3MjkyMTU1MTI2MjEzNzk3MDE2MzM0MjE0NDcwNjA4ODY3NDAyODEwNjA0OTMwMTA0NTY0ODc0MjcyODE2NDkwNzU0NzYzMDU2MjA3NTg3MzE2MjAzNTBuLCAwbl0sXG4gICAgICAgICAgICAgICAgWzMxMjUzMzI1OTQxNzEwNTk0MjQ5MDgxMDgwOTYyMDQ2NDg5Nzg1NzAxMTgyODE5Nzc1NzU0MzU4MzI0MjI2MzE2MDE4MjQwMzQ0NjMzODI3Nzc5Mzc2MjEyNTA1OTI0MjU1MzU0OTMzMjA2ODM4MjU1NTduLCA4NzcwNzY5NjEwNTA2MDc5Njg1MDk2ODE3Mjk1MzEyNTUxNzc5ODY3NjQ1Mzc5NjE0MzI0NDk0OTk2MzU1MDQ1MjIyMDc2MTYwMjc0NTUwODY1MDUwNjYzNzg1MzY1OTAxMjg1NDQ1NzM1ODg3MzQyMzBuXSxcbiAgICAgICAgICAgICAgICBbNDAwMjQwOTU1NTIyMTY2NzM5MzQxNzc4OTgyNTczNTkwNDE1NjU1Njg4MjgxOTkzOTAwNzg4NTMzMjA1ODEzNjEyNDAzMTY1MDQ5MDgzNzg2NDQ0MjY4NzYyOTEyOTAxNTY2NDAzNzg5NDI3MjU1OTc4Nm4sIDBuXSxcbiAgICAgICAgICAgICAgICBbMTUxNjU1MTg1MTg0NDk4MzgxNDY1NjQyNzQ5Njg0NTQwMDk5Mzk4MDc1Mzk4OTY4MzI1NDQ2NjU2MDA3NjEzNTEwNDAzMjI3MjcxMjAwMTM5MzcwNTA0OTMyMDE1OTUyODg2MTQ2MzA0NzY2MTM1MDI3biwgMzg1MDc1NDM3MDAzNzE2OTAxMTk1MjE0NzA3NjA1MTM2NDA1NzE1ODgwNzQyMDk3MDY4MjQzODY3NjA1MDUyMjYxMzYyODQyMzIxOTYzNzcyNTA3MjE4MjY5NzExMzA2Mjc3Nzg5MTU4OTUwNjQyNDc2MG5dLFxuICAgICAgICAgICAgICAgIFs0MDAyNDA5NTU1MjIxNjY3MzkyNjI0MzEwNDM1MDA2Njg4NjQzOTM1NTAzMTE4MzA1NTg2NDM4MjcxMTcxMzk1ODQyOTcxMTU3NDgwMzgxMzc3MDE1NDA1OTgwMDUzNTM5MzU4NDE3MTM1NTQwOTM5NDM2biwgMG5dLFxuICAgICAgICAgICAgICAgIFsxMDI4NzMyMTQ2MjM1MTA2MzQ5OTc1MzI0NDc5MjE1Nzk1Mjc3Mzg0ODM5OTM2OTI5NzU3ODk2MTU1NjQzMTE4MDMyNjEwODQzMjk4NjU1MjI1ODc1NTcxMzEwNTUyNTQzMDE0NjkwODc4MzU0ODY5MjU3biwgMjk3MzY3NzQwODk4NjU2MTA0MzQ0MjQ2NTM0NjUyMDEwODg3OTE3MjA0Mjg4MzAwOTI0OTk4OTE3NjQxNTAxODA5MTQyMDgwNzE5MjE4MjYzODU2NzExNjMxODU3NjQ3MjY0OTM0NzAxNTkxNzY5MDUzMG5dLFxuICAgICAgICAgICAgICAgIFs0MDAyNDA5NTU1MjIxNjY3MzkyNjI0MzEwNDM1MDA2Njg4NjQzOTM1NTAzMTE4MzA1NTg2NDM4MjcxMTcxMzk1ODQyOTcxMTU3NDgwMzgxMzc3MDE1NDA1OTgwMDUzNTM5MzU4NDE3MTM1NTQwOTM5NDM3biwgMG5dLFxuICAgICAgICAgICAgICAgIFs4NzcwNzY5NjEwNTA2MDc5Njg1MDk2ODE3Mjk1MzEyNTUxNzc5ODY3NjQ1Mzc5NjE0MzI0NDk0OTk2MzU1MDQ1MjIyMDc2MTYwMjc0NTUwODY1MDUwNjYzNzg1MzY1OTAxMjg1NDQ1NzM1ODg3MzQyMzBuLCAzMTI1MzMyNTk0MTcxMDU5NDI0OTA4MTA4MDk2MjA0NjQ4OTc4NTcwMTE4MjgxOTc3NTc1NDM1ODMyNDIyNjMxNjAxODI0MDM0NDYzMzgyNzc3OTM3NjIxMjUwNTkyNDI1NTM1NDkzMzIwNjgzODI1NTU3bl0sXG4gICAgICAgICAgICBdXG4gICAgICAgIF07XG5cbiAgICAgICAgY29uc3QgRjYgPSBbXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgWzFuLCAwbl0sXG4gICAgICAgICAgICAgICAgWzFuLCAwbl0sXG4gICAgICAgICAgICAgICAgWzFuLCAwbl0sXG4gICAgICAgICAgICAgICAgWzFuLCAwbl0sXG4gICAgICAgICAgICAgICAgWzFuLCAwbl0sXG4gICAgICAgICAgICAgICAgWzFuLCAwbl0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgIFsxbiwgMG5dLFxuICAgICAgICAgICAgICAgIFswbiwgNDAwMjQwOTU1NTIyMTY2NzM5MjYyNDMxMDQzNTAwNjY4ODY0MzkzNTUwMzExODMwNTU4NjQzODI3MTE3MTM5NTg0Mjk3MTE1NzQ4MDM4MTM3NzAxNTQwNTk4MDA1MzUzOTM1ODQxNzEzNTU0MDkzOTQzNm5dLFxuICAgICAgICAgICAgICAgIFs3OTM0NzkzOTA3MjkyMTU1MTI2MjEzNzk3MDE2MzM0MjE0NDcwNjA4ODY3NDAyODEwNjA0OTMwMTA0NTY0ODc0MjcyODE2NDkwNzU0NzYzMDU2MjA3NTg3MzE2MjAzNTBuLCAwbl0sXG4gICAgICAgICAgICAgICAgWzBuLCAxbl0sXG4gICAgICAgICAgICAgICAgWzQwMDI0MDk1NTUyMjE2NjczOTI2MjQzMTA0MzUwMDY2ODg2NDM5MzU1MDMxMTgzMDU1ODY0MzgyNzExNzEzOTU4NDI5NzExNTc0ODAzODEzNzcwMTU0MDU5ODAwNTM1MzkzNTg0MTcxMzU1NDA5Mzk0MzZuLCAwbl0sXG4gICAgICAgICAgICAgICAgWzBuLCA3OTM0NzkzOTA3MjkyMTU1MTI2MjEzNzk3MDE2MzM0MjE0NDcwNjA4ODY3NDAyODEwNjA0OTMwMTA0NTY0ODc0MjcyODE2NDkwNzU0NzYzMDU2MjA3NTg3MzE2MjAzNTBuXSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgWzFuLCAwbl0sXG4gICAgICAgICAgICAgICAgWzQwMDI0MDk1NTUyMjE2NjczOTI2MjQzMTA0MzUwMDY2ODg2NDM5MzU1MDMxMTgzMDU1ODY0MzgyNzExNzEzOTU4NDI5NzExNTc0ODAzODEzNzcwMTU0MDU5ODAwNTM1MzkzNTg0MTcxMzU1NDA5Mzk0MzduLCAwbl0sXG4gICAgICAgICAgICAgICAgWzQwMDI0MDk1NTUyMjE2NjczOTI2MjQzMTA0MzUwMDY2ODg2NDM5MzU1MDMxMTgzMDU1ODY0MzgyNzExNzEzOTU4NDI5NzExNTc0ODAzODEzNzcwMTU0MDU5ODAwNTM1MzkzNTg0MTcxMzU1NDA5Mzk0MzZuLCAwbl0sXG4gICAgICAgICAgICAgICAgWzQwMDI0MDk1NTUyMjE2NjczOTM0MTc3ODk4MjU3MzU5MDQxNTY1NTY4ODI4MTk5MzkwMDc4ODUzMzIwNTgxMzYxMjQwMzE2NTA0OTA4Mzc4NjQ0NDI2ODc2MjkxMjkwMTU2NjQwMzc4OTQyNzI1NTk3ODZuLCAwbl0sXG4gICAgICAgICAgICAgICAgWzc5MzQ3OTM5MDcyOTIxNTUxMjYyMTM3OTcwMTYzMzQyMTQ0NzA2MDg4Njc0MDI4MTA2MDQ5MzAxMDQ1NjQ4NzQyNzI4MTY0OTA3NTQ3NjMwNTYyMDc1ODczMTYyMDM1MG4sIDBuXSxcbiAgICAgICAgICAgICAgICBbNzkzNDc5MzkwNzI5MjE1NTEyNjIxMzc5NzAxNjMzNDIxNDQ3MDYwODg2NzQwMjgxMDYwNDkzMDEwNDU2NDg3NDI3MjgxNjQ5MDc1NDc2MzA1NjIwNzU4NzMxNjIwMzUxbiwgMG5dLFxuICAgICAgICAgICAgXVxuICAgICAgICBdO1xuXG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24oZnRtUHJlZml4ICsgXCJfZnJvYmVuaXVzTWFwXCIrbik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiclwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGZvciAobGV0IGk9MDsgaTw2OyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IFggPSAoaT09MCkgPyBjLmdldExvY2FsKFwieFwiKSA6IGMuaTMyX2FkZChjLmdldExvY2FsKFwieFwiKSwgYy5pMzJfY29uc3QoaSpmMnNpemUpKTtcbiAgICAgICAgICAgIGNvbnN0IFhjMCA9IFg7XG4gICAgICAgICAgICBjb25zdCBYYzEgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInhcIiksIGMuaTMyX2NvbnN0KGkqZjJzaXplICsgZjFzaXplKSk7XG4gICAgICAgICAgICBjb25zdCBSID0gKGk9PTApID8gYy5nZXRMb2NhbChcInJcIikgOiBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInJcIiksIGMuaTMyX2NvbnN0KGkqZjJzaXplKSk7XG4gICAgICAgICAgICBjb25zdCBSYzAgPSBSO1xuICAgICAgICAgICAgY29uc3QgUmMxID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJyXCIpLCBjLmkzMl9jb25zdChpKmYyc2l6ZSArIGYxc2l6ZSkpO1xuICAgICAgICAgICAgY29uc3QgY29lZiA9IG11bDIoRjEyW01hdGguZmxvb3IoaS8zKV1bbiUxMl0gLCBGNltpJTNdW24lNl0pO1xuICAgICAgICAgICAgY29uc3QgcENvZWYgPSBtb2R1bGUuYWxsb2MoW1xuICAgICAgICAgICAgICAgIC4uLnV0aWxzJDEuYmlnSW50MkJ5dGVzTEUodG9Nb250Z29tZXJ5KGNvZWZbMF0pLCBuOHEpLFxuICAgICAgICAgICAgICAgIC4uLnV0aWxzJDEuYmlnSW50MkJ5dGVzTEUodG9Nb250Z29tZXJ5KGNvZWZbMV0pLCBuOHEpLFxuICAgICAgICAgICAgXSk7XG4gICAgICAgICAgICBpZiAobiUyID09IDEpIHtcbiAgICAgICAgICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXggKyBcIl9jb3B5XCIsIFhjMCwgUmMwKSxcbiAgICAgICAgICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCArIFwiX25lZ1wiLCBYYzEsIFJjMSksXG4gICAgICAgICAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9tdWxcIiwgUiwgYy5pMzJfY29uc3QocENvZWYpLCBSKSxcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBmLmFkZENvZGUoYy5jYWxsKGYybVByZWZpeCArIFwiX211bFwiLCBYLCBjLmkzMl9jb25zdChwQ29lZiksIFIpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGZ1bmN0aW9uIG11bDIoYSwgYikge1xuICAgICAgICAgICAgY29uc3QgYWMwID0gYVswXTtcbiAgICAgICAgICAgIGNvbnN0IGFjMSA9IGFbMV07XG4gICAgICAgICAgICBjb25zdCBiYzAgPSBiWzBdO1xuICAgICAgICAgICAgY29uc3QgYmMxID0gYlsxXTtcbiAgICAgICAgICAgIGNvbnN0IHJlcyA9IFtcbiAgICAgICAgICAgICAgICAoYWMwICogYmMwIC0gKGFjMSAqIGJjMSkpICUgcSxcbiAgICAgICAgICAgICAgICAoYWMwICogYmMxICsgKGFjMSAqIGJjMCkpICUgcSxcbiAgICAgICAgICAgIF07XG4gICAgICAgICAgICBpZiAoaXNOZWdhdGl2ZSQxKHJlc1swXSkpIHJlc1swXSA9IHJlc1swXSArIHE7XG4gICAgICAgICAgICByZXR1cm4gcmVzO1xuICAgICAgICB9XG5cbiAgICB9XG5cblxuICAgIGZ1bmN0aW9uIGJ1aWxkQ3ljbG90b21pY1NxdWFyZSgpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrIFwiX19jeWNsb3RvbWljU3F1YXJlXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInJcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCB4MCA9IGMuZ2V0TG9jYWwoXCJ4XCIpO1xuICAgICAgICBjb25zdCB4NCA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwieFwiKSwgYy5pMzJfY29uc3QoZjJzaXplKSk7XG4gICAgICAgIGNvbnN0IHgzID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJ4XCIpLCBjLmkzMl9jb25zdCgyKmYyc2l6ZSkpO1xuICAgICAgICBjb25zdCB4MiA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwieFwiKSwgYy5pMzJfY29uc3QoMypmMnNpemUpKTtcbiAgICAgICAgY29uc3QgeDEgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInhcIiksIGMuaTMyX2NvbnN0KDQqZjJzaXplKSk7XG4gICAgICAgIGNvbnN0IHg1ID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJ4XCIpLCBjLmkzMl9jb25zdCg1KmYyc2l6ZSkpO1xuXG4gICAgICAgIGNvbnN0IHIwID0gYy5nZXRMb2NhbChcInJcIik7XG4gICAgICAgIGNvbnN0IHI0ID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJyXCIpLCBjLmkzMl9jb25zdChmMnNpemUpKTtcbiAgICAgICAgY29uc3QgcjMgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInJcIiksIGMuaTMyX2NvbnN0KDIqZjJzaXplKSk7XG4gICAgICAgIGNvbnN0IHIyID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJyXCIpLCBjLmkzMl9jb25zdCgzKmYyc2l6ZSkpO1xuICAgICAgICBjb25zdCByMSA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwiclwiKSwgYy5pMzJfY29uc3QoNCpmMnNpemUpKTtcbiAgICAgICAgY29uc3QgcjUgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInJcIiksIGMuaTMyX2NvbnN0KDUqZjJzaXplKSk7XG5cbiAgICAgICAgY29uc3QgdDAgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjJzaXplKSk7XG4gICAgICAgIGNvbnN0IHQxID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYyc2l6ZSkpO1xuICAgICAgICBjb25zdCB0MiA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMnNpemUpKTtcbiAgICAgICAgY29uc3QgdDMgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjJzaXplKSk7XG4gICAgICAgIGNvbnN0IHQ0ID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYyc2l6ZSkpO1xuICAgICAgICBjb25zdCB0NSA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMnNpemUpKTtcbiAgICAgICAgY29uc3QgdG1wID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYyc2l6ZSkpO1xuICAgICAgICBjb25zdCBBVVggPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjJzaXplKSk7XG5cblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICAvLyAgICAvLyB0MCArIHQxKnkgPSAoejAgKyB6MSp5KV4yID0gYV4yXG4gICAgICAgICAgICAvLyAgICB0bXAgPSB6MCAqIHoxO1xuICAgICAgICAgICAgLy8gICAgdDAgPSAoejAgKyB6MSkgKiAoejAgKyBteV9GcDY6Om5vbl9yZXNpZHVlICogejEpIC0gdG1wIC0gbXlfRnA2Ojpub25fcmVzaWR1ZSAqIHRtcDtcbiAgICAgICAgICAgIC8vICAgIHQxID0gdG1wICsgdG1wO1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX211bFwiLCB4MCwgeDEsIHRtcCksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbXVsTlJcIiwgeDEsIHQwKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgeDAsIHQwLCB0MCksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIHgwLCB4MSwgQVVYKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9tdWxcIiwgQVVYLCB0MCwgdDApLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX211bE5SXCIsIHRtcCwgQVVYKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgdG1wLCBBVVgsIEFVWCksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfc3ViXCIsIHQwLCBBVVgsIHQwKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgdG1wLCB0bXAsIHQxKSxcblxuICAgICAgICAgICAgLy8gIC8vIHQyICsgdDMqeSA9ICh6MiArIHozKnkpXjIgPSBiXjJcbiAgICAgICAgICAgIC8vICB0bXAgPSB6MiAqIHozO1xuICAgICAgICAgICAgLy8gIHQyID0gKHoyICsgejMpICogKHoyICsgbXlfRnA2Ojpub25fcmVzaWR1ZSAqIHozKSAtIHRtcCAtIG15X0ZwNjo6bm9uX3Jlc2lkdWUgKiB0bXA7XG4gICAgICAgICAgICAvLyAgdDMgPSB0bXAgKyB0bXA7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbXVsXCIsIHgyLCB4MywgdG1wKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9tdWxOUlwiLCB4MywgdDIpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCB4MiwgdDIsIHQyKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgeDIsIHgzLCBBVVgpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX211bFwiLCBBVVgsIHQyLCB0MiksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbXVsTlJcIiwgdG1wLCBBVVgpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCB0bXAsIEFVWCwgQVVYKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9zdWJcIiwgdDIsIEFVWCwgdDIpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCB0bXAsIHRtcCwgdDMpLFxuXG4gICAgICAgICAgICAvLyAgLy8gdDQgKyB0NSp5ID0gKHo0ICsgejUqeSleMiA9IGNeMlxuICAgICAgICAgICAgLy8gIHRtcCA9IHo0ICogejU7XG4gICAgICAgICAgICAvLyAgdDQgPSAoejQgKyB6NSkgKiAoejQgKyBteV9GcDY6Om5vbl9yZXNpZHVlICogejUpIC0gdG1wIC0gbXlfRnA2Ojpub25fcmVzaWR1ZSAqIHRtcDtcbiAgICAgICAgICAgIC8vICB0NSA9IHRtcCArIHRtcDtcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9tdWxcIiwgeDQsIHg1LCB0bXApLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX211bE5SXCIsIHg1LCB0NCksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIHg0LCB0NCwgdDQpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCB4NCwgeDUsIEFVWCksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbXVsXCIsIEFVWCwgdDQsIHQ0KSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9tdWxOUlwiLCB0bXAsIEFVWCksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIHRtcCwgQVVYLCBBVVgpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX3N1YlwiLCB0NCwgQVVYLCB0NCksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIHRtcCwgdG1wLCB0NSksXG5cbiAgICAgICAgICAgIC8vIEZvciBBXG4gICAgICAgICAgICAvLyB6MCA9IDMgKiB0MCAtIDIgKiB6MFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX3N1YlwiLCB0MCwgeDAsIHIwKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgcjAsIHIwLCByMCksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIHQwLCByMCwgcjApLFxuICAgICAgICAgICAgLy8gejEgPSAzICogdDEgKyAyICogejFcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgdDEsIHgxLCByMSksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIHIxLCByMSwgcjEpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCB0MSwgcjEsIHIxKSxcblxuICAgICAgICAgICAgLy8gRm9yIEJcbiAgICAgICAgICAgIC8vIHoyID0gMyAqICh4aSAqIHQ1KSArIDIgKiB6MlxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX211bFwiLCB0NSwgYy5pMzJfY29uc3QocEJsczEyMzgxVHdpc3QpLCBBVVgpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCBBVVgsIHgyLCByMiksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIHIyLCByMiwgcjIpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCBBVVgsIHIyLCByMiksXG4gICAgICAgICAgICAvLyB6MyA9IDMgKiB0NCAtIDIgKiB6M1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX3N1YlwiLCB0NCwgeDMsIHIzKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgcjMsIHIzLCByMyksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIHQ0LCByMywgcjMpLFxuXG4gICAgICAgICAgICAvLyBGb3IgQ1xuICAgICAgICAgICAgLy8gejQgPSAzICogdDIgLSAyICogejRcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9zdWJcIiwgdDIsIHg0LCByNCksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIHI0LCByNCwgcjQpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCB0MiwgcjQsIHI0KSxcbiAgICAgICAgICAgIC8vIHo1ID0gMyAqIHQzICsgMiAqIHo1XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIHQzLCB4NSwgcjUpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCByNSwgcjUsIHI1KSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgdDMsIHI1LCByNSksXG5cbiAgICAgICAgKTtcbiAgICB9XG5cblxuICAgIGZ1bmN0aW9uIGJ1aWxkQ3ljbG90b21pY0V4cChleHBvbmVudCwgaXNFeHBOZWdhdGl2ZSwgZm5OYW1lKSB7XG4gICAgICAgIGNvbnN0IGV4cG9uZW50TmFmQnl0ZXMgPSBuYWYoZXhwb25lbnQpLm1hcCggKGIpID0+IChiPT0tMSA/IDB4RkY6IGIpICk7XG4gICAgICAgIGNvbnN0IHBFeHBvbmVudE5hZkJ5dGVzID0gbW9kdWxlLmFsbG9jKGV4cG9uZW50TmFmQnl0ZXMpO1xuICAgICAgICAvLyBjb25zdCBwRXhwb25lbnQgPSBtb2R1bGUuYWxsb2ModXRpbHMuYmlnSW50MkJ5dGVzTEUoZXhwb25lbnQsIG44KSk7XG5cbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrIFwiX19jeWNsb3RvbWljRXhwX1wiK2ZuTmFtZSk7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiclwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcImJpdFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcImlcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCB4ID0gYy5nZXRMb2NhbChcInhcIik7XG5cbiAgICAgICAgY29uc3QgcmVzID0gYy5nZXRMb2NhbChcInJcIik7XG5cbiAgICAgICAgY29uc3QgaW52ZXJzZSA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmdHNpemUpKTtcblxuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuY2FsbChmdG1QcmVmaXggKyBcIl9jb25qdWdhdGVcIiwgeCwgaW52ZXJzZSksXG4gICAgICAgICAgICBjLmNhbGwoZnRtUHJlZml4ICsgXCJfb25lXCIsIHJlcyksXG5cbiAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgYy50ZWVMb2NhbChcImJpdFwiLCBjLmkzMl9sb2FkOF9zKGMuaTMyX2NvbnN0KGV4cG9uZW50TmFmQnl0ZXMubGVuZ3RoLTEpLCBwRXhwb25lbnROYWZCeXRlcykpLFxuICAgICAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX2VxKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImJpdFwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KDEpXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgIGMuY2FsbChmdG1QcmVmaXggKyBcIl9tdWxcIiwgcmVzLCB4LCByZXMpLFxuICAgICAgICAgICAgICAgICAgICBjLmNhbGwoZnRtUHJlZml4ICsgXCJfbXVsXCIsIHJlcywgaW52ZXJzZSwgcmVzKSxcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApLFxuXG4gICAgICAgICAgICBjLnNldExvY2FsKFwiaVwiLCBjLmkzMl9jb25zdChleHBvbmVudE5hZkJ5dGVzLmxlbmd0aC0yKSksXG4gICAgICAgICAgICBjLmJsb2NrKGMubG9vcChcbiAgICAgICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfX2N5Y2xvdG9taWNTcXVhcmVcIiwgcmVzLCByZXMpLFxuICAgICAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgICAgIGMudGVlTG9jYWwoXCJiaXRcIiwgYy5pMzJfbG9hZDhfcyhjLmdldExvY2FsKFwiaVwiKSwgcEV4cG9uZW50TmFmQnl0ZXMpKSxcbiAgICAgICAgICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2VxKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJiaXRcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QoMSlcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmNhbGwoZnRtUHJlZml4ICsgXCJfbXVsXCIsIHJlcywgeCwgcmVzKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuY2FsbChmdG1QcmVmaXggKyBcIl9tdWxcIiwgcmVzLCBpbnZlcnNlLCByZXMpLFxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBjLmJyX2lmKDEsIGMuaTMyX2VxeiAoIGMuZ2V0TG9jYWwoXCJpXCIpICkpLFxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpXCIsIGMuaTMyX3N1YihjLmdldExvY2FsKFwiaVwiKSwgYy5pMzJfY29uc3QoMSkpKSxcbiAgICAgICAgICAgICAgICBjLmJyKDApXG4gICAgICAgICAgICApKVxuICAgICAgICApO1xuXG4gICAgICAgIGlmIChpc0V4cE5lZ2F0aXZlKSB7XG4gICAgICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICAgICAgYy5jYWxsKGZ0bVByZWZpeCArIFwiX2Nvbmp1Z2F0ZVwiLCByZXMsIHJlcyksXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBidWlsZEZpbmFsRXhwb25lbnRpYXRpb24oKSB7XG4gICAgICAgIGJ1aWxkQ3ljbG90b21pY1NxdWFyZSgpO1xuICAgICAgICBidWlsZEN5Y2xvdG9taWNFeHAoZmluYWxFeHBaLCBmaW5hbEV4cElzTmVnYXRpdmUsIFwidzBcIik7XG5cbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrIFwiX2ZpbmFsRXhwb25lbnRpYXRpb25cIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiclwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IGVsdCA9IGMuZ2V0TG9jYWwoXCJ4XCIpO1xuICAgICAgICBjb25zdCByZXMgPSBjLmdldExvY2FsKFwiclwiKTtcbiAgICAgICAgY29uc3QgdDAgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZnRzaXplKSk7XG4gICAgICAgIGNvbnN0IHQxID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGZ0c2l6ZSkpO1xuICAgICAgICBjb25zdCB0MiA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmdHNpemUpKTtcbiAgICAgICAgY29uc3QgdDMgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZnRzaXplKSk7XG4gICAgICAgIGNvbnN0IHQ0ID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGZ0c2l6ZSkpO1xuICAgICAgICBjb25zdCB0NSA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmdHNpemUpKTtcbiAgICAgICAgY29uc3QgdDYgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZnRzaXplKSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuXG4gICAgICAgICAgICAvLyBsZXQgbXV0IHQwID0gZi5mcm9iZW5pdXNfbWFwKDYpXG4gICAgICAgICAgICBjLmNhbGwoZnRtUHJlZml4ICsgXCJfZnJvYmVuaXVzTWFwNlwiLCBlbHQsIHQwKSxcblxuICAgICAgICAgICAgLy8gbGV0IHQxID0gZi5pbnZlcnQoKVxuICAgICAgICAgICAgYy5jYWxsKGZ0bVByZWZpeCArIFwiX2ludmVyc2VcIiwgZWx0LCB0MSksXG5cbiAgICAgICAgICAgIC8vIGxldCBtdXQgdDIgPSB0MCAqIHQxO1xuICAgICAgICAgICAgYy5jYWxsKGZ0bVByZWZpeCArIFwiX211bFwiLCB0MCwgdDEsIHQyKSxcblxuICAgICAgICAgICAgLy8gdDEgPSB0Mi5jbG9uZSgpO1xuICAgICAgICAgICAgYy5jYWxsKGZ0bVByZWZpeCArIFwiX2NvcHlcIiwgdDIsIHQxKSxcblxuICAgICAgICAgICAgLy8gdDIgPSB0Mi5mcm9iZW5pdXNfbWFwKCkuZnJvYmVuaXVzX21hcCgpO1xuICAgICAgICAgICAgYy5jYWxsKGZ0bVByZWZpeCArIFwiX2Zyb2Jlbml1c01hcDJcIiwgdDIsIHQyKSxcblxuICAgICAgICAgICAgLy8gdDIgKj0gdDE7XG4gICAgICAgICAgICBjLmNhbGwoZnRtUHJlZml4ICsgXCJfbXVsXCIsIHQyLCB0MSwgdDIpLFxuXG5cbiAgICAgICAgICAgIC8vIHQxID0gY3ljbG90b21pY19zcXVhcmUodDIpLmNvbmp1Z2F0ZSgpO1xuICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX19jeWNsb3RvbWljU3F1YXJlXCIsIHQyLCB0MSksXG4gICAgICAgICAgICBjLmNhbGwoZnRtUHJlZml4ICsgXCJfY29uanVnYXRlXCIsIHQxLCB0MSksXG5cbiAgICAgICAgICAgIC8vIGxldCBtdXQgdDMgPSBjeWNvbG90b21pY19leHAodDIpO1xuICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX19jeWNsb3RvbWljRXhwX3cwXCIsIHQyLCB0MyksXG5cbiAgICAgICAgICAgIC8vIGxldCBtdXQgdDQgPSBjeWNsb3RvbWljX3NxdWFyZSh0Myk7XG4gICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfX2N5Y2xvdG9taWNTcXVhcmVcIiwgdDMsIHQ0KSxcblxuICAgICAgICAgICAgLy8gbGV0IG11dCB0NSA9IHQxICogdDM7XG4gICAgICAgICAgICBjLmNhbGwoZnRtUHJlZml4ICsgXCJfbXVsXCIsIHQxLCB0MywgdDUpLFxuXG4gICAgICAgICAgICAvLyB0MSA9IGN5Y29sb3RvbWljX2V4cCh0NSk7XG4gICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfX2N5Y2xvdG9taWNFeHBfdzBcIiwgdDUsIHQxKSxcblxuICAgICAgICAgICAgLy8gdDAgPSBjeWNvbG90b21pY19leHAodDEpO1xuICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX19jeWNsb3RvbWljRXhwX3cwXCIsIHQxLCB0MCksXG5cbiAgICAgICAgICAgIC8vIGxldCBtdXQgdDYgPSBjeWNvbG90b21pY19leHAodDApO1xuICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX19jeWNsb3RvbWljRXhwX3cwXCIsIHQwLCB0NiksXG5cbiAgICAgICAgICAgIC8vIHQ2ICo9IHQ0O1xuICAgICAgICAgICAgYy5jYWxsKGZ0bVByZWZpeCArIFwiX211bFwiLCB0NiwgdDQsIHQ2KSxcblxuICAgICAgICAgICAgLy8gdDQgPSBjeWNvbG90b21pY19leHAodDYpO1xuICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX19jeWNsb3RvbWljRXhwX3cwXCIsIHQ2LCB0NCksXG5cbiAgICAgICAgICAgIC8vIHQ1ID0gdDUuY29uanVnYXRlKCk7XG4gICAgICAgICAgICBjLmNhbGwoZnRtUHJlZml4ICsgXCJfY29uanVnYXRlXCIsIHQ1LCB0NSksXG5cbiAgICAgICAgICAgIC8vIHQ0ICo9IHQ1ICogdDI7XG4gICAgICAgICAgICBjLmNhbGwoZnRtUHJlZml4ICsgXCJfbXVsXCIsIHQ0LCB0NSwgdDQpLFxuICAgICAgICAgICAgYy5jYWxsKGZ0bVByZWZpeCArIFwiX211bFwiLCB0NCwgdDIsIHQ0KSxcblxuICAgICAgICAgICAgLy8gdDUgPSB0Mi5jb25qdWdhdGUoKTtcbiAgICAgICAgICAgIGMuY2FsbChmdG1QcmVmaXggKyBcIl9jb25qdWdhdGVcIiwgdDIsIHQ1KSxcblxuICAgICAgICAgICAgLy8gdDEgKj0gdDI7XG4gICAgICAgICAgICBjLmNhbGwoZnRtUHJlZml4ICsgXCJfbXVsXCIsIHQxLCB0MiwgdDEpLFxuXG4gICAgICAgICAgICAvLyB0MSA9IHQxLmZyb2Jlbml1c19tYXAoKS5mcm9iZW5pdXNfbWFwKCkuZnJvYmVuaXVzX21hcCgpO1xuICAgICAgICAgICAgYy5jYWxsKGZ0bVByZWZpeCArIFwiX2Zyb2Jlbml1c01hcDNcIiwgdDEsIHQxKSxcblxuICAgICAgICAgICAgLy8gdDYgKj0gdDU7XG4gICAgICAgICAgICBjLmNhbGwoZnRtUHJlZml4ICsgXCJfbXVsXCIsIHQ2LCB0NSwgdDYpLFxuXG4gICAgICAgICAgICAvLyB0NiA9IHQ2LmZyb2Jlbml1c19tYXAoKTtcbiAgICAgICAgICAgIGMuY2FsbChmdG1QcmVmaXggKyBcIl9mcm9iZW5pdXNNYXAxXCIsIHQ2LCB0NiksXG5cbiAgICAgICAgICAgIC8vIHQzICo9IHQwO1xuICAgICAgICAgICAgYy5jYWxsKGZ0bVByZWZpeCArIFwiX211bFwiLCB0MywgdDAsIHQzKSxcblxuICAgICAgICAgICAgLy8gdDMgPSB0My5mcm9iZW5pdXNfbWFwKCkuZnJvYmVuaXVzX21hcCgpO1xuICAgICAgICAgICAgYy5jYWxsKGZ0bVByZWZpeCArIFwiX2Zyb2Jlbml1c01hcDJcIiwgdDMsIHQzKSxcblxuICAgICAgICAgICAgLy8gdDMgKj0gdDE7XG4gICAgICAgICAgICBjLmNhbGwoZnRtUHJlZml4ICsgXCJfbXVsXCIsIHQzLCB0MSwgdDMpLFxuXG4gICAgICAgICAgICAvLyB0MyAqPSB0NjtcbiAgICAgICAgICAgIGMuY2FsbChmdG1QcmVmaXggKyBcIl9tdWxcIiwgdDMsIHQ2LCB0MyksXG5cbiAgICAgICAgICAgIC8vIGYgPSB0MyAqIHQ0O1xuICAgICAgICAgICAgYy5jYWxsKGZ0bVByZWZpeCArIFwiX211bFwiLCB0MywgdDQsIHJlcyksXG5cbiAgICAgICAgKTtcbiAgICB9XG5cblxuICAgIGZ1bmN0aW9uIGJ1aWxkRmluYWxFeHBvbmVudGlhdGlvbk9sZCgpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrIFwiX2ZpbmFsRXhwb25lbnRpYXRpb25PbGRcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiclwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBleHBvbmVudCA9IDMyMjI3NzM2MTUxNjkzNDE0MDQ2Mjg5MTU2NDU4NjUxMDEzOTkwODM3OTk2OTUxNDgyODQ5NDIxODM2NjY4ODAyNTI4ODY2MTA0MTEwNDY4Mjc5NDk5ODY4MDQ5NzU4MDAwODg5OTk3MzI0OTgxNDEwNDQ0NzY5Mjc3ODk4ODIwODM3Njc3OTU3MzgxOTQ4NTI2MzAyNjE1OTU4ODUxMDUxMzgzNDg3NjMwMzAxNDAxNjc5ODgwOTkxOTM0MzUzMjg5OTE2NDg0ODczMDI4MDk0MjYwOTk1NjY3MDkxNzU2NTYxODExNTg2NzI4NzM5OTYyMzI4NjgxMzI3MDM1NzkwMTczMTUxMDE4ODE0OTkzNDM2MzM2MDM4MTYxNDUwMTMzNDA4NjgyNTQ0MjI3MTkyMDA3OTM2MzI4OTk1NDUxMDU2NTM3NTM3ODQ0MzcwNDM3Mjk5NDg4MTQwNjc5Nzg4MjY3Njk3MTA4MjIwMDYyNjU0MTkxNjQxMzE4NDY0MjUyMDI2OTY3ODg5NzU1OTUzMjI2MDk0OTMzNDc2MDYwNDk2MjA4NjM0ODg5ODExODk4MjI0ODg0MjYzNDM3OTYzNzU5ODY2NTQ2ODgxNzc2OTA3NTg3ODU1NTQ5Mzc1MjIxNDQ5Mjc5MDEyMjc4NTg1MDIwMjk1NzU3NTIwMDE3NjA4NDIwNDQyMjc1MTQ4NTk1NzMzNjQ2NTQ3MjMyNDgxMDk4MjgzMzYzODQ5MDkwNDI3OTI4MjY5NjEzNDMyMzA3MjUxNTIyMDA0NDQ1MTU5MjY0Njg4NTQxMDU3MjIzNDQ1MTczMjc5MDU5MDAxMzQ3OTM1ODM0Mzg0MTIyMDA3NDE3NDg0ODIyMTcyMjAxNzA4MzU5Nzg3MjAxNzYzODUxNDEwMzE3NDEyMjc4NDg0MzkyNTU3ODM3MDQzMDg0MzUyMjk1OTYwMDA5NTY3NjI4NTcyMzczNzA0OTQzODM0NjU0NDc1MzE2ODkxMjk3NDk3Njc5MTUyODUzNTI3NjMxNzI1NjkwNDMzNjUyMDE3OTI4MTE0NTM5NDY4NjU2NTA1MDQxOTI1MDYxNDEwNzgwMzIzMzMxNDY1ODgyNTQ2MzExNzkwMDI1MDcwMTE5OTE4MTUyOTIwNTk0MjM2MzE1OTMyNTc2NTk5MTgxOTQzMzkxNDMwMzkwODg2MDQ2MDcyMDU4MTQwODIwMTM3MzE2NDA0Nzc3Mzc5NDgyNTQxMTAxMTkyMjMwNTgyMDA2NTYxMTEyMTU0NDU2MTgwODQxNDA1NTMwMjIxMjA1NzQ3MTM5NTcxOTQzMjA3MjIwOTI0NTYwMDI1ODEzNDM2NDU4NDYzNjgxMDA5MzUyMDI4NTcxMTA3MjU3ODcyMTQzNTUxNzg4NDEwMzUyNjQ4MzgzMjczMzI4OTgwMjQyNjE1NzMwMTU0Mjc0NDQ3Njc0MDAwODQ5NDc4MDM2MzM1NDMwNTExNjk3ODgwNTYyMDY3MTQ2NzA3MTQwMDcxMTM1ODgzOTU1MzM3NTM0MDcyNDg5OTczNTQ2MDQ4MDE0NDU5OTc4MjAxNDkwNjU4NjU0MzgxMzI5MjE1NzkyMjIyMDY0NTA4OTE5MjEzMDIwOTMzNDkyNjY2MTU4ODczNzAwNzc2ODU2NTgzODUxOTQ1NjYwMTU2MDgwNDk1Nzk4NTY2Nzg4MDM5NTIyMTA0OTI0OTgwMzc1MzU4MjYzNzcwODU2MG47XG5cbiAgICAgICAgY29uc3QgcEV4cG9uZW50ID0gbW9kdWxlLmFsbG9jKHV0aWxzJDEuYmlnSW50MkJ5dGVzTEUoIGV4cG9uZW50LCA1NDQgKSk7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLmNhbGwoZnRtUHJlZml4ICsgXCJfZXhwXCIsIGMuZ2V0TG9jYWwoXCJ4XCIpLCBjLmkzMl9jb25zdChwRXhwb25lbnQpLCBjLmkzMl9jb25zdCg1NDQpLCBjLmdldExvY2FsKFwiclwiKSksXG4gICAgICAgICk7XG4gICAgfVxuXG5cbiAgICBjb25zdCBwUHJlUCA9IG1vZHVsZS5hbGxvYyhwcmVQU2l6ZSk7XG4gICAgY29uc3QgcFByZVEgPSBtb2R1bGUuYWxsb2MocHJlUVNpemUpO1xuXG4gICAgZnVuY3Rpb24gYnVpbGRQYWlyaW5nRXF1YXRpb24oblBhaXJpbmdzKSB7XG5cbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrIFwiX3BhaXJpbmdFcVwiK25QYWlyaW5ncyk7XG4gICAgICAgIGZvciAobGV0IGk9MDsgaTxuUGFpcmluZ3M7IGkrKykge1xuICAgICAgICAgICAgZi5hZGRQYXJhbShcInBfXCIraSwgXCJpMzJcIik7XG4gICAgICAgICAgICBmLmFkZFBhcmFtKFwicV9cIitpLCBcImkzMlwiKTtcbiAgICAgICAgfVxuICAgICAgICBmLmFkZFBhcmFtKFwiY1wiLCBcImkzMlwiKTtcbiAgICAgICAgZi5zZXRSZXR1cm5UeXBlKFwiaTMyXCIpO1xuXG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCByZXNUID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGZ0c2l6ZSkpO1xuICAgICAgICBjb25zdCBhdXhUID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGZ0c2l6ZSkpO1xuXG4gICAgICAgIGYuYWRkQ29kZShjLmNhbGwoZnRtUHJlZml4ICsgXCJfb25lXCIsIHJlc1QgKSk7XG5cbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPG5QYWlyaW5nczsgaSsrKSB7XG5cbiAgICAgICAgICAgIGYuYWRkQ29kZShjLmNhbGwocHJlZml4ICsgXCJfcHJlcGFyZUcxXCIsIGMuZ2V0TG9jYWwoXCJwX1wiK2kpLCBjLmkzMl9jb25zdChwUHJlUCkgKSk7XG4gICAgICAgICAgICBmLmFkZENvZGUoYy5jYWxsKHByZWZpeCArIFwiX3ByZXBhcmVHMlwiLCBjLmdldExvY2FsKFwicV9cIitpKSwgYy5pMzJfY29uc3QocFByZVEpICkpO1xuXG4gICAgICAgICAgICAvLyBDaGVja3NcbiAgICAgICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9lcXooYy5jYWxsKGcxbVByZWZpeCArIFwiX2luR3JvdXBBZmZpbmVcIiwgYy5pMzJfY29uc3QocFByZVApKSksXG4gICAgICAgICAgICAgICAgICAgIGMucmV0KGMuaTMyX2NvbnN0KDApKVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfZXF6KGMuY2FsbChnMm1QcmVmaXggKyBcIl9pbkdyb3VwQWZmaW5lXCIsIGMuaTMyX2NvbnN0KHBQcmVRKSkpLFxuICAgICAgICAgICAgICAgICAgICBjLnJldChjLmkzMl9jb25zdCgwKSlcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICBmLmFkZENvZGUoYy5jYWxsKHByZWZpeCArIFwiX21pbGxlckxvb3BcIiwgYy5pMzJfY29uc3QocFByZVApLCBjLmkzMl9jb25zdChwUHJlUSksIGF1eFQgKSk7XG5cbiAgICAgICAgICAgIGYuYWRkQ29kZShjLmNhbGwoZnRtUHJlZml4ICsgXCJfbXVsXCIsIHJlc1QsIGF1eFQsIHJlc1QgKSk7XG4gICAgICAgIH1cblxuICAgICAgICBmLmFkZENvZGUoYy5jYWxsKHByZWZpeCArIFwiX2ZpbmFsRXhwb25lbnRpYXRpb25cIiwgcmVzVCwgcmVzVCApKTtcblxuICAgICAgICBmLmFkZENvZGUoYy5jYWxsKGZ0bVByZWZpeCArIFwiX2VxXCIsIHJlc1QsIGMuZ2V0TG9jYWwoXCJjXCIpKSk7XG4gICAgfVxuXG5cbiAgICBmdW5jdGlvbiBidWlsZFBhaXJpbmcoKSB7XG5cbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrIFwiX3BhaXJpbmdcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInJcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCByZXNUID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGZ0c2l6ZSkpO1xuXG4gICAgICAgIGYuYWRkQ29kZShjLmNhbGwocHJlZml4ICsgXCJfcHJlcGFyZUcxXCIsIGMuZ2V0TG9jYWwoXCJwXCIpLCBjLmkzMl9jb25zdChwUHJlUCkgKSk7XG4gICAgICAgIGYuYWRkQ29kZShjLmNhbGwocHJlZml4ICsgXCJfcHJlcGFyZUcyXCIsIGMuZ2V0TG9jYWwoXCJxXCIpLCBjLmkzMl9jb25zdChwUHJlUSkgKSk7XG4gICAgICAgIGYuYWRkQ29kZShjLmNhbGwocHJlZml4ICsgXCJfbWlsbGVyTG9vcFwiLCBjLmkzMl9jb25zdChwUHJlUCksIGMuaTMyX2NvbnN0KHBQcmVRKSwgcmVzVCApKTtcbiAgICAgICAgZi5hZGRDb2RlKGMuY2FsbChwcmVmaXggKyBcIl9maW5hbEV4cG9uZW50aWF0aW9uXCIsIHJlc1QsIGMuZ2V0TG9jYWwoXCJyXCIpICkpO1xuICAgIH1cblxuXG4gICAgZnVuY3Rpb24gYnVpbGRJbkdyb3VwRzIoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24oZzJtUHJlZml4KyBcIl9pbkdyb3VwQWZmaW5lXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5zZXRSZXR1cm5UeXBlKFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgV0lOViA9IFtcbiAgICAgICAgICAgIDIwMDEyMDQ3Nzc2MTA4MzM2OTY3MDg4OTQ5MTI4Njc5NTIwNzgyNzg0NDE0MDk5Njk1MDM5NDI2NjYwMjkwNjgwNjIwMTU4MjUyNDU0MTg5MzIyMjEzNDM4MTQ1NjQ1MDc4MzIwMTg5NDcxMzYyNzk4OTRuLFxuICAgICAgICAgICAgMjAwMTIwNDc3NzYxMDgzMzY5NjcwODg5NDkxMjg2Nzk1MjA3ODI3ODQ0MTQwOTk2OTUwMzk0MjY2NjAyOTA2ODA2MjAxNTgyNTI0NTQxODkzMjIyMTM0MzgxNDU2NDUwNzgzMjAxODk0NzEzNjI3OTg5M25cbiAgICAgICAgXTtcblxuICAgICAgICBjb25zdCBGUk9CMlggPSA0MDAyNDA5NTU1MjIxNjY3MzkyNjI0MzEwNDM1MDA2Njg4NjQzOTM1NTAzMTE4MzA1NTg2NDM4MjcxMTcxMzk1ODQyOTcxMTU3NDgwMzgxMzc3MDE1NDA1OTgwMDUzNTM5MzU4NDE3MTM1NTQwOTM5NDM2bjtcbiAgICAgICAgY29uc3QgRlJPQjNZID0gW1xuICAgICAgICAgICAgMjk3MzY3NzQwODk4NjU2MTA0MzQ0MjQ2NTM0NjUyMDEwODg3OTE3MjA0Mjg4MzAwOTI0OTk4OTE3NjQxNTAxODA5MTQyMDgwNzE5MjE4MjYzODU2NzExNjMxODU3NjQ3MjY0OTM0NzAxNTkxNzY5MDUzMG4sXG4gICAgICAgICAgICAyOTczNjc3NDA4OTg2NTYxMDQzNDQyNDY1MzQ2NTIwMTA4ODc5MTcyMDQyODgzMDA5MjQ5OTg5MTc2NDE1MDE4MDkxNDIwODA3MTkyMTgyNjM4NTY3MTE2MzE4NTc2NDcyNjQ5MzQ3MDE1OTE3NjkwNTMwblxuICAgICAgICBdO1xuXG4gICAgICAgIGNvbnN0IHdJbnYgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoW1xuICAgICAgICAgICAgLi4udXRpbHMkMS5iaWdJbnQyQnl0ZXNMRSh0b01vbnRnb21lcnkoV0lOVlswXSksIG44cSksXG4gICAgICAgICAgICAuLi51dGlscyQxLmJpZ0ludDJCeXRlc0xFKHRvTW9udGdvbWVyeShXSU5WWzFdKSwgbjhxKSxcbiAgICAgICAgXSkpO1xuXG4gICAgICAgIGNvbnN0IGZyb2IyWCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyh1dGlscyQxLmJpZ0ludDJCeXRlc0xFKHRvTW9udGdvbWVyeShGUk9CMlgpLCBuOHEpKSk7XG4gICAgICAgIGNvbnN0IGZyb2IzWSA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhbXG4gICAgICAgICAgICAuLi51dGlscyQxLmJpZ0ludDJCeXRlc0xFKHRvTW9udGdvbWVyeShGUk9CM1lbMF0pLCBuOHEpLFxuICAgICAgICAgICAgLi4udXRpbHMkMS5iaWdJbnQyQnl0ZXNMRSh0b01vbnRnb21lcnkoRlJPQjNZWzFdKSwgbjhxKSxcbiAgICAgICAgXSkpO1xuXG4gICAgICAgIGNvbnN0IHogPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2ModXRpbHMkMS5iaWdJbnQyQnl0ZXNMRShmaW5hbEV4cFosIDgpKSk7XG5cbiAgICAgICAgY29uc3QgcHggPSBjLmdldExvY2FsKFwicFwiKTtcbiAgICAgICAgY29uc3QgcHkgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInBcIiksIGMuaTMyX2NvbnN0KGYyc2l6ZSkpO1xuXG4gICAgICAgIGNvbnN0IGF1eCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMXNpemUpKTtcblxuICAgICAgICBjb25zdCB4X3dpbnYgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjJzaXplKSk7XG4gICAgICAgIGNvbnN0IHlfd2ludiA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMnNpemUpKTtcbiAgICAgICAgY29uc3QgcGYyID0gbW9kdWxlLmFsbG9jKGYyc2l6ZSoyKTtcbiAgICAgICAgY29uc3QgZjIgPSBjLmkzMl9jb25zdChwZjIpO1xuICAgICAgICBjb25zdCBmMnggPSBjLmkzMl9jb25zdChwZjIpO1xuICAgICAgICBjb25zdCBmMnhfYzEgPSBjLmkzMl9jb25zdChwZjIpO1xuICAgICAgICBjb25zdCBmMnhfYzIgPSBjLmkzMl9jb25zdChwZjIrZjFzaXplKTtcbiAgICAgICAgY29uc3QgZjJ5ID0gYy5pMzJfY29uc3QocGYyK2Yyc2l6ZSk7XG4gICAgICAgIGNvbnN0IGYyeV9jMSA9IGMuaTMyX2NvbnN0KHBmMitmMnNpemUpO1xuICAgICAgICBjb25zdCBmMnlfYzIgPSBjLmkzMl9jb25zdChwZjIrZjJzaXplK2Yxc2l6ZSk7XG4gICAgICAgIGNvbnN0IHBmMyA9IG1vZHVsZS5hbGxvYyhmMnNpemUqMyk7XG4gICAgICAgIGNvbnN0IGYzID0gYy5pMzJfY29uc3QocGYzKTtcbiAgICAgICAgY29uc3QgZjN4ID0gYy5pMzJfY29uc3QocGYzKTtcbiAgICAgICAgY29uc3QgZjN4X2MxID0gYy5pMzJfY29uc3QocGYzKTtcbiAgICAgICAgY29uc3QgZjN4X2MyID0gYy5pMzJfY29uc3QocGYzK2Yxc2l6ZSk7XG4gICAgICAgIGNvbnN0IGYzeSA9IGMuaTMyX2NvbnN0KHBmMytmMnNpemUpO1xuICAgICAgICBjb25zdCBmM3lfYzEgPSBjLmkzMl9jb25zdChwZjMrZjJzaXplKTtcbiAgICAgICAgY29uc3QgZjN5X2MyID0gYy5pMzJfY29uc3QocGYzK2Yyc2l6ZStmMXNpemUpO1xuICAgICAgICBjb25zdCBmM3ogPSBjLmkzMl9jb25zdChwZjMrZjJzaXplKjIpO1xuXG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICBjLmNhbGwoZzJtUHJlZml4ICsgXCJfaXNaZXJvQWZmaW5lXCIsIGMuZ2V0TG9jYWwoXCJwXCIpKSxcbiAgICAgICAgICAgICAgICBjLnJldCggYy5pMzJfY29uc3QoMSkpLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgYy5pMzJfZXF6KGMuY2FsbChnMm1QcmVmaXggKyBcIl9pbkN1cnZlQWZmaW5lXCIsIGMuZ2V0TG9jYWwoXCJwXCIpKSksXG4gICAgICAgICAgICAgICAgYy5yZXQoIGMuaTMyX2NvbnN0KDApKSxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbXVsXCIsIHB4LCB3SW52LCB4X3dpbnYpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX211bFwiLCBweSwgd0ludiwgeV93aW52KSxcblxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX211bDFcIiwgeF93aW52LCBmcm9iMlgsIGYyeCksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbmVnXCIsIHlfd2ludiwgZjJ5KSxcblxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX25lZ1wiLCB4X3dpbnYsIGYzeCksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbXVsXCIsIHlfd2ludiwgZnJvYjNZLCBmM3kpLFxuXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4ICsgXCJfc3ViXCIsIGYyeF9jMSwgZjJ4X2MyLCBhdXgpLFxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCArIFwiX2FkZFwiLCBmMnhfYzEsIGYyeF9jMiwgZjJ4X2MyKSxcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXggKyBcIl9jb3B5XCIsIGF1eCwgZjJ4X2MxKSxcblxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCArIFwiX3N1YlwiLCBmMnlfYzEsIGYyeV9jMiwgYXV4KSxcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXggKyBcIl9hZGRcIiwgZjJ5X2MxLCBmMnlfYzIsIGYyeV9jMiksXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4ICsgXCJfY29weVwiLCBhdXgsIGYyeV9jMSksXG5cbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXggKyBcIl9hZGRcIiwgZjN4X2MxLCBmM3hfYzIsIGF1eCksXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4ICsgXCJfc3ViXCIsIGYzeF9jMSwgZjN4X2MyLCBmM3hfYzIpLFxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCArIFwiX2NvcHlcIiwgYXV4LCBmM3hfYzEpLFxuXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4ICsgXCJfc3ViXCIsIGYzeV9jMiwgZjN5X2MxLCBhdXgpLFxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCArIFwiX2FkZFwiLCBmM3lfYzEsIGYzeV9jMiwgZjN5X2MyKSxcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXggKyBcIl9jb3B5XCIsIGF1eCwgZjN5X2MxKSxcblxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX29uZVwiLCBmM3opLFxuXG4gICAgICAgICAgICBjLmNhbGwoZzJtUHJlZml4ICsgXCJfdGltZXNTY2FsYXJcIiwgZjMsIHosIGMuaTMyX2NvbnN0KDgpLCBmMyksXG4gICAgICAgICAgICBjLmNhbGwoZzJtUHJlZml4ICsgXCJfYWRkTWl4ZWRcIiwgZjMsIGYyLCBmMyksXG5cbiAgICAgICAgICAgIGMucmV0KFxuICAgICAgICAgICAgICAgIGMuY2FsbChnMm1QcmVmaXggKyBcIl9lcU1peGVkXCIsIGYzLCBjLmdldExvY2FsKFwicFwiKSlcbiAgICAgICAgICAgIClcbiAgICAgICAgKTtcblxuICAgICAgICBjb25zdCBmSW5Hcm91cCA9IG1vZHVsZS5hZGRGdW5jdGlvbihnMm1QcmVmaXggKyBcIl9pbkdyb3VwXCIpO1xuICAgICAgICBmSW5Hcm91cC5hZGRQYXJhbShcInBJblwiLCBcImkzMlwiKTtcbiAgICAgICAgZkluR3JvdXAuc2V0UmV0dXJuVHlwZShcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjMiA9IGZJbkdyb3VwLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgYXV4MiA9IGMyLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjJzaXplKjIpKTtcblxuICAgICAgICBmSW5Hcm91cC5hZGRDb2RlKFxuICAgICAgICAgICAgYzIuY2FsbChnMm1QcmVmaXggKyBcIl90b0FmZmluZVwiLCBjMi5nZXRMb2NhbChcInBJblwiKSwgYXV4MiksXG5cbiAgICAgICAgICAgIGMyLnJldChcbiAgICAgICAgICAgICAgICBjMi5jYWxsKGcybVByZWZpeCArIFwiX2luR3JvdXBBZmZpbmVcIiwgYXV4MiksXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG5cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBidWlsZEluR3JvdXBHMSgpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihnMW1QcmVmaXgrIFwiX2luR3JvdXBBZmZpbmVcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLnNldFJldHVyblR5cGUoXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCBCRVRBID0gNDAwMjQwOTU1NTIyMTY2NzM5MjYyNDMxMDQzNTAwNjY4ODY0MzkzNTUwMzExODMwNTU4NjQzODI3MTE3MTM5NTg0Mjk3MTE1NzQ4MDM4MTM3NzAxNTQwNTk4MDA1MzUzOTM1ODQxNzEzNTU0MDkzOTQzNm47XG4gICAgICAgIGNvbnN0IEJFVEEyID0gNzkzNDc5MzkwNzI5MjE1NTEyNjIxMzc5NzAxNjMzNDIxNDQ3MDYwODg2NzQwMjgxMDYwNDkzMDEwNDU2NDg3NDI3MjgxNjQ5MDc1NDc2MzA1NjIwNzU4NzMxNjIwMzUwbjtcbiAgICAgICAgY29uc3QgWjJNMUQzID0gKGZpbmFsRXhwWiAqIGZpbmFsRXhwWiAtIDFuKSAvIDNuO1xuXG4gICAgICAgIGNvbnN0IGJldGEgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2ModXRpbHMkMS5iaWdJbnQyQnl0ZXNMRSh0b01vbnRnb21lcnkoQkVUQSksIG44cSkpKTtcbiAgICAgICAgY29uc3QgYmV0YTIgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2ModXRpbHMkMS5iaWdJbnQyQnl0ZXNMRSh0b01vbnRnb21lcnkoQkVUQTIpLCBuOHEpKSk7XG5cbiAgICAgICAgY29uc3QgejJtMWQzID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKHV0aWxzJDEuYmlnSW50MkJ5dGVzTEUoWjJNMUQzLCAxNikpKTtcblxuXG4gICAgICAgIGNvbnN0IHB4ID0gYy5nZXRMb2NhbChcInBcIik7XG4gICAgICAgIGNvbnN0IHB5ID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwXCIpLCBjLmkzMl9jb25zdChmMXNpemUpKTtcblxuICAgICAgICBjb25zdCBwc3AgPSBtb2R1bGUuYWxsb2MoZjFzaXplKjMpO1xuICAgICAgICBjb25zdCBzcCA9IGMuaTMyX2NvbnN0KHBzcCk7XG4gICAgICAgIGNvbnN0IHNweCA9IGMuaTMyX2NvbnN0KHBzcCk7XG4gICAgICAgIGNvbnN0IHNweSA9IGMuaTMyX2NvbnN0KHBzcCtmMXNpemUpO1xuXG4gICAgICAgIGNvbnN0IHBzMnAgPSBtb2R1bGUuYWxsb2MoZjFzaXplKjIpO1xuICAgICAgICBjb25zdCBzMnAgPSBjLmkzMl9jb25zdChwczJwKTtcbiAgICAgICAgY29uc3QgczJweCA9IGMuaTMyX2NvbnN0KHBzMnApO1xuICAgICAgICBjb25zdCBzMnB5ID0gYy5pMzJfY29uc3QocHMycCtmMXNpemUpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgYy5jYWxsKGcxbVByZWZpeCArIFwiX2lzWmVyb0FmZmluZVwiLCBjLmdldExvY2FsKFwicFwiKSksXG4gICAgICAgICAgICAgICAgYy5yZXQoIGMuaTMyX2NvbnN0KDEpKSxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgIGMuaTMyX2VxeihjLmNhbGwoZzFtUHJlZml4ICsgXCJfaW5DdXJ2ZUFmZmluZVwiLCBjLmdldExvY2FsKFwicFwiKSkpLFxuICAgICAgICAgICAgICAgIGMucmV0KCBjLmkzMl9jb25zdCgwKSksXG4gICAgICAgICAgICApLFxuXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4ICsgXCJfbXVsXCIsIHB4LCBiZXRhLCBzcHgpLFxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCArIFwiX2NvcHlcIiwgcHksIHNweSksXG5cbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXggKyBcIl9tdWxcIiwgcHgsIGJldGEyLCBzMnB4KSxcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXggKyBcIl9jb3B5XCIsIHB5LCBzMnB5KSxcblxuXG4gICAgICAgICAgICBjLmNhbGwoZzFtUHJlZml4ICsgXCJfZG91YmxlQWZmaW5lXCIsIHNwLCBzcCksXG4gICAgICAgICAgICBjLmNhbGwoZzFtUHJlZml4ICsgXCJfc3ViTWl4ZWRcIiwgc3AsIGMuZ2V0TG9jYWwoXCJwXCIpLCBzcCksXG4gICAgICAgICAgICBjLmNhbGwoZzFtUHJlZml4ICsgXCJfc3ViTWl4ZWRcIiwgc3AsIHMycCwgc3ApLFxuXG4gICAgICAgICAgICBjLmNhbGwoZzFtUHJlZml4ICsgXCJfdGltZXNTY2FsYXJcIiwgc3AsIHoybTFkMywgYy5pMzJfY29uc3QoMTYpLCBzcCksXG5cbiAgICAgICAgICAgIGMucmV0KFxuICAgICAgICAgICAgICAgIGMuY2FsbChnMW1QcmVmaXggKyBcIl9lcU1peGVkXCIsIHNwLCBzMnApXG4gICAgICAgICAgICApXG5cbiAgICAgICAgKTtcblxuICAgICAgICBjb25zdCBmSW5Hcm91cCA9IG1vZHVsZS5hZGRGdW5jdGlvbihnMW1QcmVmaXggKyBcIl9pbkdyb3VwXCIpO1xuICAgICAgICBmSW5Hcm91cC5hZGRQYXJhbShcInBJblwiLCBcImkzMlwiKTtcbiAgICAgICAgZkluR3JvdXAuc2V0UmV0dXJuVHlwZShcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjMiA9IGZJbkdyb3VwLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgYXV4MiA9IGMyLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjFzaXplKjIpKTtcblxuICAgICAgICBmSW5Hcm91cC5hZGRDb2RlKFxuICAgICAgICAgICAgYzIuY2FsbChnMW1QcmVmaXggKyBcIl90b0FmZmluZVwiLCBjMi5nZXRMb2NhbChcInBJblwiKSwgYXV4MiksXG5cbiAgICAgICAgICAgIGMyLnJldChcbiAgICAgICAgICAgICAgICBjMi5jYWxsKGcxbVByZWZpeCArIFwiX2luR3JvdXBBZmZpbmVcIiwgYXV4MiksXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZm9yIChsZXQgaT0wOyBpPDEwOyBpKyspIHtcbiAgICAgICAgYnVpbGRGcm9iZW5pdXNNYXAoaSk7XG4gICAgICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihmdG1QcmVmaXggKyBcIl9mcm9iZW5pdXNNYXBcIitpKTtcbiAgICB9XG5cblxuICAgIGJ1aWxkSW5Hcm91cEcxKCk7XG4gICAgYnVpbGRJbkdyb3VwRzIoKTtcblxuICAgIGJ1aWxkUHJlcEFkZFN0ZXAoKTtcbiAgICBidWlsZFByZXBEb3VibGVTdGVwKCk7XG5cbiAgICBidWlsZFByZXBhcmVHMSgpO1xuICAgIGJ1aWxkUHJlcGFyZUcyKCk7XG5cbiAgICBidWlsZE1pbGxlckxvb3AoKTtcblxuICAgIGJ1aWxkRmluYWxFeHBvbmVudGlhdGlvbk9sZCgpO1xuICAgIGJ1aWxkRmluYWxFeHBvbmVudGlhdGlvbigpO1xuXG4gICAgZm9yIChsZXQgaT0xOyBpPD01OyBpKyspIHtcbiAgICAgICAgYnVpbGRQYWlyaW5nRXF1YXRpb24oaSk7XG4gICAgICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9wYWlyaW5nRXFcIitpKTtcbiAgICB9XG5cbiAgICBidWlsZFBhaXJpbmcoKTtcblxuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9wYWlyaW5nXCIpO1xuXG5cbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfcHJlcGFyZUcxXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9wcmVwYXJlRzJcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX21pbGxlckxvb3BcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX2ZpbmFsRXhwb25lbnRpYXRpb25cIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX2ZpbmFsRXhwb25lbnRpYXRpb25PbGRcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX19jeWNsb3RvbWljU3F1YXJlXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9fY3ljbG90b21pY0V4cF93MFwiKTtcblxuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihmNm1QcmVmaXggKyBcIl9tdWwxXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihmNm1QcmVmaXggKyBcIl9tdWwwMVwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24oZnRtUHJlZml4ICsgXCJfbXVsMDE0XCIpO1xuXG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKGcxbVByZWZpeCArIFwiX2luR3JvdXBBZmZpbmVcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKGcxbVByZWZpeCArIFwiX2luR3JvdXBcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKGcybVByZWZpeCArIFwiX2luR3JvdXBBZmZpbmVcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKGcybVByZWZpeCArIFwiX2luR3JvdXBcIik7XG5cbiAgICAvLyBjb25zb2xlLmxvZyhtb2R1bGUuZnVuY3Rpb25JZHhCeU5hbWUpO1xufTtcblxuLypcbiAgICBDb3B5cmlnaHQgMjAxOSAwS0lNUyBhc3NvY2lhdGlvbi5cblxuICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHdhc21zbmFyayAoV2ViIEFzc2VtYmx5IHprU25hcmsgUHJvdmVyKS5cblxuICAgIHdhc21zbmFyayBpcyBhIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXRcbiAgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yXG4gICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cblxuICAgIHdhc21zbmFyayBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVFxuICAgIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWVxuICAgIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpY1xuICAgIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cblxuICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gICAgYWxvbmcgd2l0aCB3YXNtc25hcmsuIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXG4qL1xuXG4vLyBtb2R1bGUuZXhwb3J0cy5ibjEyOF93YXNtID0gcmVxdWlyZShcIi4vYnVpbGQvYm4xMjhfd2FzbS5qc1wiKTtcbi8vIG1vZHVsZS5leHBvcnRzLmJsczEyMzgxX3dhc20gPSByZXF1aXJlKFwiLi9idWlsZC9ibHMxMjM4MV93YXNtLmpzXCIpO1xuLy8gbW9kdWxlLmV4cG9ydHMubW50Njc1M193YXNtID0gcmVxdWlyZShcIi4vYnVpbGQvbW50Njc1M193YXNtLmpzXCIpO1xuXG52YXIgYnVpbGRCbjEyOCQxID0gYnVpbGRfYm4xMjg7XG52YXIgYnVpbGRCbHMxMjM4MSQxID0gYnVpbGRfYmxzMTIzODE7XG5cbi8qIGdsb2JhbCBCaWdJbnQgKi9cblxuZnVuY3Rpb24gc3RyaW5naWZ5QmlnSW50cyhvKSB7XG4gICAgaWYgKHR5cGVvZiBvID09IFwiYmlnaW50XCIgfHwgby5lcSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybiBvLnRvU3RyaW5nKDEwKTtcbiAgICB9IGVsc2UgaWYgKG8gaW5zdGFuY2VvZiBVaW50OEFycmF5KSB7XG4gICAgICAgIHJldHVybiBmcm9tUnByTEUobywgMCk7XG4gICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KG8pKSB7XG4gICAgICAgIHJldHVybiBvLm1hcChzdHJpbmdpZnlCaWdJbnRzKTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBvID09IFwib2JqZWN0XCIpIHtcbiAgICAgICAgY29uc3QgcmVzID0ge307XG4gICAgICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhvKTtcbiAgICAgICAga2V5cy5mb3JFYWNoKChrKSA9PiB7XG4gICAgICAgICAgICByZXNba10gPSBzdHJpbmdpZnlCaWdJbnRzKG9ba10pO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gbztcbiAgICB9XG59XG5cbmZ1bmN0aW9uIHVuc3RyaW5naWZ5QmlnSW50cyhvKSB7XG4gICAgaWYgKHR5cGVvZiBvID09IFwic3RyaW5nXCIgJiYgL15bMC05XSskLy50ZXN0KG8pKSB7XG4gICAgICAgIHJldHVybiBCaWdJbnQobyk7XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgbyA9PSBcInN0cmluZ1wiICYmIC9eMHhbMC05YS1mQS1GXSskLy50ZXN0KG8pKSB7XG4gICAgICAgIHJldHVybiBCaWdJbnQobyk7XG4gICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KG8pKSB7XG4gICAgICAgIHJldHVybiBvLm1hcCh1bnN0cmluZ2lmeUJpZ0ludHMpO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIG8gPT0gXCJvYmplY3RcIikge1xuICAgICAgICBpZiAobyA9PT0gbnVsbCkgcmV0dXJuIG51bGw7XG4gICAgICAgIGNvbnN0IHJlcyA9IHt9O1xuICAgICAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMobyk7XG4gICAgICAgIGtleXMuZm9yRWFjaCgoaykgPT4ge1xuICAgICAgICAgICAgcmVzW2tdID0gdW5zdHJpbmdpZnlCaWdJbnRzKG9ba10pO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gbztcbiAgICB9XG59XG5cbmZ1bmN0aW9uIGJlQnVmZjJpbnQoYnVmZikge1xuICAgIGxldCByZXMgPSBCaWdJbnQoMCk7XG4gICAgbGV0IGkgPSBidWZmLmxlbmd0aDtcbiAgICBsZXQgb2Zmc2V0ID0gMDtcbiAgICBjb25zdCBidWZmViA9IG5ldyBEYXRhVmlldyhidWZmLmJ1ZmZlciwgYnVmZi5ieXRlT2Zmc2V0LCBidWZmLmJ5dGVMZW5ndGgpO1xuICAgIHdoaWxlIChpID4gMCkge1xuICAgICAgICBpZiAoaSA+PSA0KSB7XG4gICAgICAgICAgICBpIC09IDQ7XG4gICAgICAgICAgICByZXMgKz0gQmlnSW50KGJ1ZmZWLmdldFVpbnQzMihpKSkgPDwgQmlnSW50KG9mZnNldCAqIDgpO1xuICAgICAgICAgICAgb2Zmc2V0ICs9IDQ7XG4gICAgICAgIH0gZWxzZSBpZiAoaSA+PSAyKSB7XG4gICAgICAgICAgICBpIC09IDI7XG4gICAgICAgICAgICByZXMgKz0gQmlnSW50KGJ1ZmZWLmdldFVpbnQxNihpKSkgPDwgQmlnSW50KG9mZnNldCAqIDgpO1xuICAgICAgICAgICAgb2Zmc2V0ICs9IDI7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpIC09IDE7XG4gICAgICAgICAgICByZXMgKz0gQmlnSW50KGJ1ZmZWLmdldFVpbnQ4KGkpKSA8PCBCaWdJbnQob2Zmc2V0ICogOCk7XG4gICAgICAgICAgICBvZmZzZXQgKz0gMTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzO1xufVxuXG5mdW5jdGlvbiBiZUludDJCdWZmKG4sIGxlbikge1xuICAgIGxldCByID0gbjtcbiAgICBjb25zdCBidWZmID0gbmV3IFVpbnQ4QXJyYXkobGVuKTtcbiAgICBjb25zdCBidWZmViA9IG5ldyBEYXRhVmlldyhidWZmLmJ1ZmZlcik7XG4gICAgbGV0IG8gPSBsZW47XG4gICAgd2hpbGUgKG8gPiAwKSB7XG4gICAgICAgIGlmIChvIC0gNCA+PSAwKSB7XG4gICAgICAgICAgICBvIC09IDQ7XG4gICAgICAgICAgICBidWZmVi5zZXRVaW50MzIobywgTnVtYmVyKHIgJiBCaWdJbnQoMHhmZmZmZmZmZikpKTtcbiAgICAgICAgICAgIHIgPSByID4+IEJpZ0ludCgzMik7XG4gICAgICAgIH0gZWxzZSBpZiAobyAtIDIgPj0gMCkge1xuICAgICAgICAgICAgbyAtPSAyO1xuICAgICAgICAgICAgYnVmZlYuc2V0VWludDE2KG8sIE51bWJlcihyICYgQmlnSW50KDB4ZmZmZikpKTtcbiAgICAgICAgICAgIHIgPSByID4+IEJpZ0ludCgxNik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBvIC09IDE7XG4gICAgICAgICAgICBidWZmVi5zZXRVaW50OChvLCBOdW1iZXIociAmIEJpZ0ludCgweGZmKSkpO1xuICAgICAgICAgICAgciA9IHIgPj4gQmlnSW50KDgpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGlmIChyKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIk51bWJlciBkb2VzIG5vdCBmaXQgaW4gdGhpcyBsZW5ndGhcIik7XG4gICAgfVxuICAgIHJldHVybiBidWZmO1xufVxuXG5mdW5jdGlvbiBsZUJ1ZmYyaW50KGJ1ZmYpIHtcbiAgICBsZXQgcmVzID0gQmlnSW50KDApO1xuICAgIGxldCBpID0gMDtcbiAgICBjb25zdCBidWZmViA9IG5ldyBEYXRhVmlldyhidWZmLmJ1ZmZlciwgYnVmZi5ieXRlT2Zmc2V0LCBidWZmLmJ5dGVMZW5ndGgpO1xuICAgIHdoaWxlIChpIDwgYnVmZi5sZW5ndGgpIHtcbiAgICAgICAgaWYgKGkgKyA0IDw9IGJ1ZmYubGVuZ3RoKSB7XG4gICAgICAgICAgICByZXMgKz0gQmlnSW50KGJ1ZmZWLmdldFVpbnQzMihpLCB0cnVlKSkgPDwgQmlnSW50KGkgKiA4KTtcbiAgICAgICAgICAgIGkgKz0gNDtcbiAgICAgICAgfSBlbHNlIGlmIChpICsgMiA8PSBidWZmLmxlbmd0aCkge1xuICAgICAgICAgICAgcmVzICs9IEJpZ0ludChidWZmVi5nZXRVaW50MTYoaSwgdHJ1ZSkpIDw8IEJpZ0ludChpICogOCk7XG4gICAgICAgICAgICBpICs9IDI7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXMgKz0gQmlnSW50KGJ1ZmZWLmdldFVpbnQ4KGksIHRydWUpKSA8PCBCaWdJbnQoaSAqIDgpO1xuICAgICAgICAgICAgaSArPSAxO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXM7XG59XG5cbmZ1bmN0aW9uIGxlSW50MkJ1ZmYobiwgbGVuKSB7XG4gICAgbGV0IHIgPSBuO1xuICAgIGlmICh0eXBlb2YgbGVuID09PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgICAgIGxlbiA9IE1hdGguZmxvb3IoKGJpdExlbmd0aCQ2KG4pIC0gMSkgLyA4KSArIDE7XG4gICAgICAgIGlmIChsZW4gPT0gMCkgbGVuID0gMTtcbiAgICB9XG4gICAgY29uc3QgYnVmZiA9IG5ldyBVaW50OEFycmF5KGxlbik7XG4gICAgY29uc3QgYnVmZlYgPSBuZXcgRGF0YVZpZXcoYnVmZi5idWZmZXIpO1xuICAgIGxldCBvID0gMDtcbiAgICB3aGlsZSAobyA8IGxlbikge1xuICAgICAgICBpZiAobyArIDQgPD0gbGVuKSB7XG4gICAgICAgICAgICBidWZmVi5zZXRVaW50MzIobywgTnVtYmVyKHIgJiBCaWdJbnQoMHhmZmZmZmZmZikpLCB0cnVlKTtcbiAgICAgICAgICAgIG8gKz0gNDtcbiAgICAgICAgICAgIHIgPSByID4+IEJpZ0ludCgzMik7XG4gICAgICAgIH0gZWxzZSBpZiAobyArIDIgPD0gbGVuKSB7XG4gICAgICAgICAgICBidWZmVi5zZXRVaW50MTYobywgTnVtYmVyKHIgJiBCaWdJbnQoMHhmZmZmKSksIHRydWUpO1xuICAgICAgICAgICAgbyArPSAyO1xuICAgICAgICAgICAgciA9IHIgPj4gQmlnSW50KDE2KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGJ1ZmZWLnNldFVpbnQ4KG8sIE51bWJlcihyICYgQmlnSW50KDB4ZmYpKSwgdHJ1ZSk7XG4gICAgICAgICAgICBvICs9IDE7XG4gICAgICAgICAgICByID0gciA+PiBCaWdJbnQoOCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgaWYgKHIpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTnVtYmVyIGRvZXMgbm90IGZpdCBpbiB0aGlzIGxlbmd0aFwiKTtcbiAgICB9XG4gICAgcmV0dXJuIGJ1ZmY7XG59XG5cbmZ1bmN0aW9uIHN0cmluZ2lmeUZFbGVtZW50cyhGLCBvKSB7XG4gICAgaWYgKHR5cGVvZiBvID09IFwiYmlnaW50XCIgfHwgby5lcSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybiBvLnRvU3RyaW5nKDEwKTtcbiAgICB9IGVsc2UgaWYgKG8gaW5zdGFuY2VvZiBVaW50OEFycmF5KSB7XG4gICAgICAgIHJldHVybiBGLnRvU3RyaW5nKEYuZShvKSk7XG4gICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KG8pKSB7XG4gICAgICAgIHJldHVybiBvLm1hcChzdHJpbmdpZnlGRWxlbWVudHMuYmluZCh0aGlzLCBGKSk7XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgbyA9PSBcIm9iamVjdFwiKSB7XG4gICAgICAgIGNvbnN0IHJlcyA9IHt9O1xuICAgICAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMobyk7XG4gICAgICAgIGtleXMuZm9yRWFjaCgoaykgPT4ge1xuICAgICAgICAgICAgcmVzW2tdID0gc3RyaW5naWZ5RkVsZW1lbnRzKEYsIG9ba10pO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gbztcbiAgICB9XG59XG5cbmZ1bmN0aW9uIHVuc3RyaW5naWZ5RkVsZW1lbnRzKEYsIG8pIHtcbiAgICBpZiAodHlwZW9mIG8gPT0gXCJzdHJpbmdcIiAmJiAvXlswLTldKyQvLnRlc3QobykpIHtcbiAgICAgICAgcmV0dXJuIEYuZShvKTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBvID09IFwic3RyaW5nXCIgJiYgL14weFswLTlhLWZBLUZdKyQvLnRlc3QobykpIHtcbiAgICAgICAgcmV0dXJuIEYuZShvKTtcbiAgICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkobykpIHtcbiAgICAgICAgcmV0dXJuIG8ubWFwKHVuc3RyaW5naWZ5RkVsZW1lbnRzLmJpbmQodGhpcywgRikpO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIG8gPT0gXCJvYmplY3RcIikge1xuICAgICAgICBpZiAobyA9PT0gbnVsbCkgcmV0dXJuIG51bGw7XG4gICAgICAgIGNvbnN0IHJlcyA9IHt9O1xuICAgICAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMobyk7XG4gICAgICAgIGtleXMuZm9yRWFjaCgoaykgPT4ge1xuICAgICAgICAgICAgcmVzW2tdID0gdW5zdHJpbmdpZnlGRWxlbWVudHMoRiwgb1trXSk7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBvO1xuICAgIH1cbn1cblxuY29uc3QgX3JldlRhYmxlID0gW107XG5mb3IgKGxldCBpID0gMDsgaSA8IDI1NjsgaSsrKSB7XG4gICAgX3JldlRhYmxlW2ldID0gX3JldlNsb3coaSwgOCk7XG59XG5cbmZ1bmN0aW9uIF9yZXZTbG93KGlkeCwgYml0cykge1xuICAgIGxldCByZXMgPSAwO1xuICAgIGxldCBhID0gaWR4O1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYml0czsgaSsrKSB7XG4gICAgICAgIHJlcyA8PD0gMTtcbiAgICAgICAgcmVzID0gcmVzIHwgKGEgJiAxKTtcbiAgICAgICAgYSA+Pj0gMTtcbiAgICB9XG4gICAgcmV0dXJuIHJlcztcbn1cblxuZnVuY3Rpb24gYml0UmV2ZXJzZShpZHgsIGJpdHMpIHtcbiAgICByZXR1cm4gKFxuICAgICAgICAoX3JldlRhYmxlW2lkeCA+Pj4gMjRdIHxcbiAgICAgICAgKF9yZXZUYWJsZVsoaWR4ID4+PiAxNikgJiAweGZmXSA8PCA4KSB8XG4gICAgICAgIChfcmV2VGFibGVbKGlkeCA+Pj4gOCkgJiAweGZmXSA8PCAxNikgfFxuICAgICAgICAoX3JldlRhYmxlW2lkeCAmIDB4ZmZdIDw8IDI0KSkgPj4+XG4gICAgICAgICgzMiAtIGJpdHMpXG4gICAgKTtcbn1cblxuZnVuY3Rpb24gbG9nMihWKSB7XG4gICAgcmV0dXJuIChcbiAgICAgICAgKChWICYgMHhmZmZmMDAwMCkgIT09IDAgPyAoKFYgJj0gMHhmZmZmMDAwMCksIDE2KSA6IDApIHxcbiAgICAgICAgKChWICYgMHhmZjAwZmYwMCkgIT09IDAgPyAoKFYgJj0gMHhmZjAwZmYwMCksIDgpIDogMCkgfFxuICAgICAgICAoKFYgJiAweGYwZjBmMGYwKSAhPT0gMCA/ICgoViAmPSAweGYwZjBmMGYwKSwgNCkgOiAwKSB8XG4gICAgICAgICgoViAmIDB4Y2NjY2NjY2MpICE9PSAwID8gKChWICY9IDB4Y2NjY2NjY2MpLCAyKSA6IDApIHxcbiAgICAgICAgKChWICYgMHhhYWFhYWFhYSkgIT09IDApXG4gICAgKTtcbn1cblxuZnVuY3Rpb24gYnVmZlJldmVyc2VCaXRzKGJ1ZmYsIGVTaXplKSB7XG4gICAgY29uc3QgbiA9IGJ1ZmYuYnl0ZUxlbmd0aCAvIGVTaXplO1xuICAgIGNvbnN0IGJpdHMgPSBsb2cyKG4pO1xuICAgIGlmIChuICE9IDEgPDwgYml0cykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIG51bWJlciBvZiBwb2ludGVyc1wiKTtcbiAgICB9XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBuOyBpKyspIHtcbiAgICAgICAgY29uc3QgciA9IGJpdFJldmVyc2UoaSwgYml0cyk7XG4gICAgICAgIGlmIChpID4gcikge1xuICAgICAgICAgICAgY29uc3QgdG1wID0gYnVmZi5zbGljZShpICogZVNpemUsIChpICsgMSkgKiBlU2l6ZSk7XG4gICAgICAgICAgICBidWZmLnNldChidWZmLnNsaWNlKHIgKiBlU2l6ZSwgKHIgKyAxKSAqIGVTaXplKSwgaSAqIGVTaXplKTtcbiAgICAgICAgICAgIGJ1ZmYuc2V0KHRtcCwgciAqIGVTaXplKTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuZnVuY3Rpb24gYXJyYXkyYnVmZmVyKGFyciwgc0cpIHtcbiAgICBjb25zdCBidWZmID0gbmV3IFVpbnQ4QXJyYXkoc0cgKiBhcnIubGVuZ3RoKTtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYXJyLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGJ1ZmYuc2V0KGFycltpXSwgaSAqIHNHKTtcbiAgICB9XG5cbiAgICByZXR1cm4gYnVmZjtcbn1cblxuZnVuY3Rpb24gYnVmZmVyMmFycmF5KGJ1ZmYsIHNHKSB7XG4gICAgY29uc3QgbiA9IGJ1ZmYuYnl0ZUxlbmd0aCAvIHNHO1xuICAgIGNvbnN0IGFyciA9IG5ldyBBcnJheShuKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG47IGkrKykge1xuICAgICAgICBhcnJbaV0gPSBidWZmLnNsaWNlKGkgKiBzRywgaSAqIHNHICsgc0cpO1xuICAgIH1cbiAgICByZXR1cm4gYXJyO1xufVxuXG52YXIgX3V0aWxzID0gLyojX19QVVJFX18qL09iamVjdC5mcmVlemUoe1xuICAgIF9fcHJvdG9fXzogbnVsbCxcbiAgICBhcnJheTJidWZmZXI6IGFycmF5MmJ1ZmZlcixcbiAgICBiZUJ1ZmYyaW50OiBiZUJ1ZmYyaW50LFxuICAgIGJlSW50MkJ1ZmY6IGJlSW50MkJ1ZmYsXG4gICAgYml0UmV2ZXJzZTogYml0UmV2ZXJzZSxcbiAgICBidWZmUmV2ZXJzZUJpdHM6IGJ1ZmZSZXZlcnNlQml0cyxcbiAgICBidWZmZXIyYXJyYXk6IGJ1ZmZlcjJhcnJheSxcbiAgICBsZUJ1ZmYyaW50OiBsZUJ1ZmYyaW50LFxuICAgIGxlSW50MkJ1ZmY6IGxlSW50MkJ1ZmYsXG4gICAgbG9nMjogbG9nMixcbiAgICBzdHJpbmdpZnlCaWdJbnRzOiBzdHJpbmdpZnlCaWdJbnRzLFxuICAgIHN0cmluZ2lmeUZFbGVtZW50czogc3RyaW5naWZ5RkVsZW1lbnRzLFxuICAgIHVuc3RyaW5naWZ5QmlnSW50czogdW5zdHJpbmdpZnlCaWdJbnRzLFxuICAgIHVuc3RyaW5naWZ5RkVsZW1lbnRzOiB1bnN0cmluZ2lmeUZFbGVtZW50c1xufSk7XG5cbmNvbnN0IFBBR0VfU0laRSA9IDE8PDMwO1xuXG5jbGFzcyBCaWdCdWZmZXIge1xuXG4gICAgY29uc3RydWN0b3Ioc2l6ZSkge1xuICAgICAgICB0aGlzLmJ1ZmZlcnMgPSBbXTtcbiAgICAgICAgdGhpcy5ieXRlTGVuZ3RoID0gc2l6ZTtcbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPHNpemU7IGkrPSBQQUdFX1NJWkUpIHtcbiAgICAgICAgICAgIGNvbnN0IG4gPSBNYXRoLm1pbihzaXplLWksIFBBR0VfU0laRSk7XG4gICAgICAgICAgICB0aGlzLmJ1ZmZlcnMucHVzaChuZXcgVWludDhBcnJheShuKSk7XG4gICAgICAgIH1cblxuICAgIH1cblxuICAgIHNsaWNlKGZyLCB0bykge1xuICAgICAgICBpZiAoIHRvID09PSB1bmRlZmluZWQgKSB0byA9IHRoaXMuYnl0ZUxlbmd0aDtcbiAgICAgICAgaWYgKCBmciA9PT0gdW5kZWZpbmVkICkgZnIgPSAwO1xuICAgICAgICBjb25zdCBsZW4gPSB0by1mcjtcblxuICAgICAgICBjb25zdCBmaXJzdFBhZ2UgPSBNYXRoLmZsb29yKGZyIC8gUEFHRV9TSVpFKTtcbiAgICAgICAgY29uc3QgbGFzdFBhZ2UgPSBNYXRoLmZsb29yKChmcitsZW4tMSkgLyBQQUdFX1NJWkUpO1xuXG4gICAgICAgIGlmICgoZmlyc3RQYWdlID09IGxhc3RQYWdlKXx8KGxlbj09MCkpXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5idWZmZXJzW2ZpcnN0UGFnZV0uc2xpY2UoZnIlUEFHRV9TSVpFLCBmciVQQUdFX1NJWkUgKyBsZW4pO1xuXG4gICAgICAgIGxldCBidWZmO1xuXG4gICAgICAgIGxldCBwID0gZmlyc3RQYWdlO1xuICAgICAgICBsZXQgbyA9IGZyICUgUEFHRV9TSVpFO1xuICAgICAgICAvLyBSZW1haW5pbmcgYnl0ZXMgdG8gcmVhZFxuICAgICAgICBsZXQgciA9IGxlbjtcbiAgICAgICAgd2hpbGUgKHI+MCkge1xuICAgICAgICAgICAgLy8gYnl0ZXMgdG8gY29weSBmcm9tIHRoaXMgcGFnZVxuICAgICAgICAgICAgY29uc3QgbCA9IChvK3IgPiBQQUdFX1NJWkUpID8gKFBBR0VfU0laRSAtbykgOiByO1xuICAgICAgICAgICAgY29uc3Qgc3JjVmlldyA9IG5ldyBVaW50OEFycmF5KHRoaXMuYnVmZmVyc1twXS5idWZmZXIsIHRoaXMuYnVmZmVyc1twXS5ieXRlT2Zmc2V0K28sIGwpO1xuICAgICAgICAgICAgaWYgKGwgPT0gbGVuKSByZXR1cm4gc3JjVmlldy5zbGljZSgpO1xuICAgICAgICAgICAgaWYgKCFidWZmKSB7XG4gICAgICAgICAgICAgICAgaWYgKGxlbiA8PSBQQUdFX1NJWkUpIHtcbiAgICAgICAgICAgICAgICAgICAgYnVmZiA9IG5ldyBVaW50OEFycmF5KGxlbik7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgYnVmZiA9IG5ldyBCaWdCdWZmZXIobGVuKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBidWZmLnNldChzcmNWaWV3LCBsZW4tcik7XG4gICAgICAgICAgICByID0gci1sO1xuICAgICAgICAgICAgcCArKztcbiAgICAgICAgICAgIG8gPSAwO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGJ1ZmY7XG4gICAgfVxuXG4gICAgc2V0KGJ1ZmYsIG9mZnNldCkge1xuICAgICAgICBpZiAob2Zmc2V0ID09PSB1bmRlZmluZWQpIG9mZnNldCA9IDA7XG5cbiAgICAgICAgY29uc3QgbGVuID0gYnVmZi5ieXRlTGVuZ3RoO1xuXG4gICAgICAgIGlmIChsZW49PTApIHJldHVybjtcblxuICAgICAgICBjb25zdCBmaXJzdFBhZ2UgPSBNYXRoLmZsb29yKG9mZnNldCAvIFBBR0VfU0laRSk7XG4gICAgICAgIGNvbnN0IGxhc3RQYWdlID0gTWF0aC5mbG9vcigob2Zmc2V0K2xlbi0xKSAvIFBBR0VfU0laRSk7XG5cbiAgICAgICAgaWYgKGZpcnN0UGFnZSA9PSBsYXN0UGFnZSkge1xuICAgICAgICAgICAgaWYgKChidWZmIGluc3RhbmNlb2YgQmlnQnVmZmVyKSYmKGJ1ZmYuYnVmZmVycy5sZW5ndGg9PTEpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuYnVmZmVyc1tmaXJzdFBhZ2VdLnNldChidWZmLmJ1ZmZlcnNbMF0sIG9mZnNldCAlIFBBR0VfU0laRSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmJ1ZmZlcnNbZmlyc3RQYWdlXS5zZXQoYnVmZiwgb2Zmc2V0ICUgUEFHRV9TSVpFKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9XG5cblxuICAgICAgICBsZXQgcCA9IGZpcnN0UGFnZTtcbiAgICAgICAgbGV0IG8gPSBvZmZzZXQgJSBQQUdFX1NJWkU7XG4gICAgICAgIGxldCByID0gbGVuO1xuICAgICAgICB3aGlsZSAocj4wKSB7XG4gICAgICAgICAgICBjb25zdCBsID0gKG8rciA+IFBBR0VfU0laRSkgPyAoUEFHRV9TSVpFIC1vKSA6IHI7XG4gICAgICAgICAgICBjb25zdCBzcmNWaWV3ID0gYnVmZi5zbGljZSggbGVuIC1yLCBsZW4gLXIrbCk7XG4gICAgICAgICAgICBjb25zdCBkc3RWaWV3ID0gbmV3IFVpbnQ4QXJyYXkodGhpcy5idWZmZXJzW3BdLmJ1ZmZlciwgdGhpcy5idWZmZXJzW3BdLmJ5dGVPZmZzZXQgKyBvLCBsKTtcbiAgICAgICAgICAgIGRzdFZpZXcuc2V0KHNyY1ZpZXcpO1xuICAgICAgICAgICAgciA9IHItbDtcbiAgICAgICAgICAgIHAgKys7XG4gICAgICAgICAgICBvID0gMDtcbiAgICAgICAgfVxuXG4gICAgfVxufVxuXG5mdW5jdGlvbiBidWlsZEJhdGNoQ29udmVydCh0bSwgZm5OYW1lLCBzSW4sIHNPdXQpIHtcbiAgICByZXR1cm4gYXN5bmMgZnVuY3Rpb24gYmF0Y2hDb252ZXJ0KGJ1ZmZJbikge1xuICAgICAgICBjb25zdCBuUG9pbnRzID0gTWF0aC5mbG9vcihidWZmSW4uYnl0ZUxlbmd0aCAvIHNJbik7XG4gICAgICAgIGlmICggblBvaW50cyAqIHNJbiAhPT0gYnVmZkluLmJ5dGVMZW5ndGgpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgYnVmZmVyIHNpemVcIik7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcG9pbnRzUGVyQ2h1bmsgPSBNYXRoLmZsb29yKG5Qb2ludHMvdG0uY29uY3VycmVuY3kpO1xuICAgICAgICBjb25zdCBvcFByb21pc2VzID0gW107XG4gICAgICAgIGZvciAobGV0IGk9MDsgaTx0bS5jb25jdXJyZW5jeTsgaSsrKSB7XG4gICAgICAgICAgICBsZXQgbjtcbiAgICAgICAgICAgIGlmIChpPCB0bS5jb25jdXJyZW5jeS0xKSB7XG4gICAgICAgICAgICAgICAgbiA9IHBvaW50c1BlckNodW5rO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBuID0gblBvaW50cyAtIGkqcG9pbnRzUGVyQ2h1bms7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobj09MCkgY29udGludWU7XG5cbiAgICAgICAgICAgIGNvbnN0IGJ1ZmZDaHVuayA9IGJ1ZmZJbi5zbGljZShpKnBvaW50c1BlckNodW5rKnNJbiwgaSpwb2ludHNQZXJDaHVuaypzSW4gKyBuKnNJbik7XG4gICAgICAgICAgICBjb25zdCB0YXNrID0gW1xuICAgICAgICAgICAgICAgIHtjbWQ6IFwiQUxMT0NTRVRcIiwgdmFyOiAwLCBidWZmOmJ1ZmZDaHVua30sXG4gICAgICAgICAgICAgICAge2NtZDogXCJBTExPQ1wiLCB2YXI6IDEsIGxlbjpzT3V0ICogbn0sXG4gICAgICAgICAgICAgICAge2NtZDogXCJDQUxMXCIsIGZuTmFtZTogZm5OYW1lLCBwYXJhbXM6IFtcbiAgICAgICAgICAgICAgICAgICAge3ZhcjogMH0sXG4gICAgICAgICAgICAgICAgICAgIHt2YWw6IG59LFxuICAgICAgICAgICAgICAgICAgICB7dmFyOiAxfVxuICAgICAgICAgICAgICAgIF19LFxuICAgICAgICAgICAgICAgIHtjbWQ6IFwiR0VUXCIsIG91dDogMCwgdmFyOiAxLCBsZW46c091dCAqIG59LFxuICAgICAgICAgICAgXTtcbiAgICAgICAgICAgIG9wUHJvbWlzZXMucHVzaChcbiAgICAgICAgICAgICAgICB0bS5xdWV1ZUFjdGlvbih0YXNrKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IFByb21pc2UuYWxsKG9wUHJvbWlzZXMpO1xuXG4gICAgICAgIGxldCBmdWxsQnVmZk91dDtcbiAgICAgICAgaWYgKGJ1ZmZJbiBpbnN0YW5jZW9mIEJpZ0J1ZmZlcikge1xuICAgICAgICAgICAgZnVsbEJ1ZmZPdXQgPSBuZXcgQmlnQnVmZmVyKG5Qb2ludHMqc091dCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBmdWxsQnVmZk91dCA9IG5ldyBVaW50OEFycmF5KG5Qb2ludHMqc091dCk7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgcCA9MDtcbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPHJlc3VsdC5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgZnVsbEJ1ZmZPdXQuc2V0KHJlc3VsdFtpXVswXSwgcCk7XG4gICAgICAgICAgICBwKz1yZXN1bHRbaV1bMF0uYnl0ZUxlbmd0aDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBmdWxsQnVmZk91dDtcbiAgICB9O1xufVxuXG5jbGFzcyBXYXNtRmllbGQxIHtcblxuICAgIGNvbnN0cnVjdG9yKHRtLCBwcmVmaXgsIG44LCBwKSB7XG4gICAgICAgIHRoaXMudG0gPSB0bTtcbiAgICAgICAgdGhpcy5wcmVmaXggPSBwcmVmaXg7XG5cbiAgICAgICAgdGhpcy5wID0gcDtcbiAgICAgICAgdGhpcy5uOCA9IG44O1xuICAgICAgICB0aGlzLnR5cGUgPSBcIkYxXCI7XG4gICAgICAgIHRoaXMubSA9IDE7XG5cbiAgICAgICAgdGhpcy5oYWxmID0gc2hpZnRSaWdodChwLCBvbmUpO1xuICAgICAgICB0aGlzLmJpdExlbmd0aCA9IGJpdExlbmd0aCQ2KHApO1xuICAgICAgICB0aGlzLm1hc2sgPSBzdWIoc2hpZnRMZWZ0KG9uZSwgdGhpcy5iaXRMZW5ndGgpLCBvbmUpO1xuXG4gICAgICAgIHRoaXMucE9wMSA9IHRtLmFsbG9jKG44KTtcbiAgICAgICAgdGhpcy5wT3AyID0gdG0uYWxsb2MobjgpO1xuICAgICAgICB0aGlzLnBPcDMgPSB0bS5hbGxvYyhuOCk7XG4gICAgICAgIHRoaXMudG0uaW5zdGFuY2UuZXhwb3J0c1twcmVmaXggKyBcIl96ZXJvXCJdKHRoaXMucE9wMSk7XG4gICAgICAgIHRoaXMuemVybyA9IHRoaXMudG0uZ2V0QnVmZih0aGlzLnBPcDEsIHRoaXMubjgpO1xuICAgICAgICB0aGlzLnRtLmluc3RhbmNlLmV4cG9ydHNbcHJlZml4ICsgXCJfb25lXCJdKHRoaXMucE9wMSk7XG4gICAgICAgIHRoaXMub25lID0gdGhpcy50bS5nZXRCdWZmKHRoaXMucE9wMSwgdGhpcy5uOCk7XG5cbiAgICAgICAgdGhpcy5uZWdvbmUgPSB0aGlzLm5lZyh0aGlzLm9uZSk7XG4gICAgICAgIHRoaXMudHdvID0gdGhpcy5hZGQodGhpcy5vbmUsIHRoaXMub25lKTtcblxuICAgICAgICB0aGlzLm42NCA9IE1hdGguZmxvb3IobjgvOCk7XG4gICAgICAgIHRoaXMubjMyID0gTWF0aC5mbG9vcihuOC80KTtcblxuICAgICAgICBpZih0aGlzLm42NCo4ICE9IHRoaXMubjgpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIm44IG11c3QgYmUgYSBtdWx0aXBsZSBvZiA4XCIpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5oYWxmID0gc2hpZnRSaWdodCh0aGlzLnAsIG9uZSk7XG4gICAgICAgIHRoaXMubnFyID0gdGhpcy50d287XG4gICAgICAgIGxldCByID0gdGhpcy5leHAodGhpcy5ucXIsIHRoaXMuaGFsZik7XG4gICAgICAgIHdoaWxlICghdGhpcy5lcShyLCB0aGlzLm5lZ29uZSkpIHtcbiAgICAgICAgICAgIHRoaXMubnFyID0gdGhpcy5hZGQodGhpcy5ucXIsIHRoaXMub25lKTtcbiAgICAgICAgICAgIHIgPSB0aGlzLmV4cCh0aGlzLm5xciwgdGhpcy5oYWxmKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuc2hpZnQgPSB0aGlzLm11bCh0aGlzLm5xciwgdGhpcy5ucXIpO1xuICAgICAgICB0aGlzLnNoaWZ0SW52ID0gdGhpcy5pbnYodGhpcy5zaGlmdCk7XG5cbiAgICAgICAgdGhpcy5zID0gMDtcbiAgICAgICAgbGV0IHQgPSBzdWIodGhpcy5wLCBvbmUpO1xuXG4gICAgICAgIHdoaWxlICggIWlzT2RkJDUodCkgKSB7XG4gICAgICAgICAgICB0aGlzLnMgPSB0aGlzLnMgKyAxO1xuICAgICAgICAgICAgdCA9IHNoaWZ0UmlnaHQodCwgb25lKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMudyA9IFtdO1xuICAgICAgICB0aGlzLndbdGhpcy5zXSA9IHRoaXMuZXhwKHRoaXMubnFyLCB0KTtcblxuICAgICAgICBmb3IgKGxldCBpPSB0aGlzLnMtMTsgaT49MDsgaS0tKSB7XG4gICAgICAgICAgICB0aGlzLndbaV0gPSB0aGlzLnNxdWFyZSh0aGlzLndbaSsxXSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXRoaXMuZXEodGhpcy53WzBdLCB0aGlzLm9uZSkpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkVycm9yIGNhbGN1bGF0aW5nIHJvb3RzIG9mIHVuaXR5XCIpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5iYXRjaFRvTW9udGdvbWVyeSA9IGJ1aWxkQmF0Y2hDb252ZXJ0KHRtLCBwcmVmaXggKyBcIl9iYXRjaFRvTW9udGdvbWVyeVwiLCB0aGlzLm44LCB0aGlzLm44KTtcbiAgICAgICAgdGhpcy5iYXRjaEZyb21Nb250Z29tZXJ5ID0gYnVpbGRCYXRjaENvbnZlcnQodG0sIHByZWZpeCArIFwiX2JhdGNoRnJvbU1vbnRnb21lcnlcIiwgdGhpcy5uOCwgdGhpcy5uOCk7XG4gICAgfVxuXG5cbiAgICBvcDIob3BOYW1lLCBhLCBiKSB7XG4gICAgICAgIHRoaXMudG0uc2V0QnVmZih0aGlzLnBPcDEsIGEpO1xuICAgICAgICB0aGlzLnRtLnNldEJ1ZmYodGhpcy5wT3AyLCBiKTtcbiAgICAgICAgdGhpcy50bS5pbnN0YW5jZS5leHBvcnRzW3RoaXMucHJlZml4ICsgb3BOYW1lXSh0aGlzLnBPcDEsIHRoaXMucE9wMiwgdGhpcy5wT3AzKTtcbiAgICAgICAgcmV0dXJuIHRoaXMudG0uZ2V0QnVmZih0aGlzLnBPcDMsIHRoaXMubjgpO1xuICAgIH1cblxuICAgIG9wMkJvb2wob3BOYW1lLCBhLCBiKSB7XG4gICAgICAgIHRoaXMudG0uc2V0QnVmZih0aGlzLnBPcDEsIGEpO1xuICAgICAgICB0aGlzLnRtLnNldEJ1ZmYodGhpcy5wT3AyLCBiKTtcbiAgICAgICAgcmV0dXJuICEhdGhpcy50bS5pbnN0YW5jZS5leHBvcnRzW3RoaXMucHJlZml4ICsgb3BOYW1lXSh0aGlzLnBPcDEsIHRoaXMucE9wMik7XG4gICAgfVxuXG4gICAgb3AxKG9wTmFtZSwgYSkge1xuICAgICAgICB0aGlzLnRtLnNldEJ1ZmYodGhpcy5wT3AxLCBhKTtcbiAgICAgICAgdGhpcy50bS5pbnN0YW5jZS5leHBvcnRzW3RoaXMucHJlZml4ICsgb3BOYW1lXSh0aGlzLnBPcDEsIHRoaXMucE9wMyk7XG4gICAgICAgIHJldHVybiB0aGlzLnRtLmdldEJ1ZmYodGhpcy5wT3AzLCB0aGlzLm44KTtcbiAgICB9XG5cbiAgICBvcDFCb29sKG9wTmFtZSwgYSkge1xuICAgICAgICB0aGlzLnRtLnNldEJ1ZmYodGhpcy5wT3AxLCBhKTtcbiAgICAgICAgcmV0dXJuICEhdGhpcy50bS5pbnN0YW5jZS5leHBvcnRzW3RoaXMucHJlZml4ICsgb3BOYW1lXSh0aGlzLnBPcDEsIHRoaXMucE9wMyk7XG4gICAgfVxuXG4gICAgYWRkKGEsYikge1xuICAgICAgICByZXR1cm4gdGhpcy5vcDIoXCJfYWRkXCIsIGEsIGIpO1xuICAgIH1cblxuXG4gICAgZXEoYSxiKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wMkJvb2woXCJfZXFcIiwgYSwgYik7XG4gICAgfVxuXG4gICAgaXNaZXJvKGEpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3AxQm9vbChcIl9pc1plcm9cIiwgYSk7XG4gICAgfVxuXG4gICAgc3ViKGEsYikge1xuICAgICAgICByZXR1cm4gdGhpcy5vcDIoXCJfc3ViXCIsIGEsIGIpO1xuICAgIH1cblxuICAgIG5lZyhhKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wMShcIl9uZWdcIiwgYSk7XG4gICAgfVxuXG4gICAgaW52KGEpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3AxKFwiX2ludmVyc2VcIiwgYSk7XG4gICAgfVxuXG4gICAgdG9Nb250Z29tZXJ5KGEpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3AxKFwiX3RvTW9udGdvbWVyeVwiLCBhKTtcbiAgICB9XG5cbiAgICBmcm9tTW9udGdvbWVyeShhKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wMShcIl9mcm9tTW9udGdvbWVyeVwiLCBhKTtcbiAgICB9XG5cbiAgICBtdWwoYSxiKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wMihcIl9tdWxcIiwgYSwgYik7XG4gICAgfVxuXG4gICAgZGl2KGEsIGIpIHtcbiAgICAgICAgdGhpcy50bS5zZXRCdWZmKHRoaXMucE9wMSwgYSk7XG4gICAgICAgIHRoaXMudG0uc2V0QnVmZih0aGlzLnBPcDIsIGIpO1xuICAgICAgICB0aGlzLnRtLmluc3RhbmNlLmV4cG9ydHNbdGhpcy5wcmVmaXggKyBcIl9pbnZlcnNlXCJdKHRoaXMucE9wMiwgdGhpcy5wT3AyKTtcbiAgICAgICAgdGhpcy50bS5pbnN0YW5jZS5leHBvcnRzW3RoaXMucHJlZml4ICsgXCJfbXVsXCJdKHRoaXMucE9wMSwgdGhpcy5wT3AyLCB0aGlzLnBPcDMpO1xuICAgICAgICByZXR1cm4gdGhpcy50bS5nZXRCdWZmKHRoaXMucE9wMywgdGhpcy5uOCk7XG4gICAgfVxuXG4gICAgc3F1YXJlKGEpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3AxKFwiX3NxdWFyZVwiLCBhKTtcbiAgICB9XG5cbiAgICBpc1NxdWFyZShhKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wMUJvb2woXCJfaXNTcXVhcmVcIiwgYSk7XG4gICAgfVxuXG4gICAgc3FydChhKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wMShcIl9zcXJ0XCIsIGEpO1xuICAgIH1cblxuICAgIGV4cChhLCBiKSB7XG4gICAgICAgIGlmICghKGIgaW5zdGFuY2VvZiBVaW50OEFycmF5KSkge1xuICAgICAgICAgICAgYiA9IHRvTEVCdWZmKGUoYikpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMudG0uc2V0QnVmZih0aGlzLnBPcDEsIGEpO1xuICAgICAgICB0aGlzLnRtLnNldEJ1ZmYodGhpcy5wT3AyLCBiKTtcbiAgICAgICAgdGhpcy50bS5pbnN0YW5jZS5leHBvcnRzW3RoaXMucHJlZml4ICsgXCJfZXhwXCJdKHRoaXMucE9wMSwgdGhpcy5wT3AyLCBiLmJ5dGVMZW5ndGgsIHRoaXMucE9wMyk7XG4gICAgICAgIHJldHVybiB0aGlzLnRtLmdldEJ1ZmYodGhpcy5wT3AzLCB0aGlzLm44KTtcbiAgICB9XG5cbiAgICBpc05lZ2F0aXZlKGEpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3AxQm9vbChcIl9pc05lZ2F0aXZlXCIsIGEpO1xuICAgIH1cblxuICAgIGUoYSwgYikge1xuICAgICAgICBpZiAoYSBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpIHJldHVybiBhO1xuICAgICAgICBsZXQgcmEgPSBlKGEsIGIpO1xuICAgICAgICBpZiAoaXNOZWdhdGl2ZSQ0KHJhKSkge1xuICAgICAgICAgICAgcmEgPSBuZWcocmEpO1xuICAgICAgICAgICAgaWYgKGd0KHJhLCB0aGlzLnApKSB7XG4gICAgICAgICAgICAgICAgcmEgPSBtb2QocmEsIHRoaXMucCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByYSA9IHN1Yih0aGlzLnAsIHJhKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChndChyYSwgdGhpcy5wKSkge1xuICAgICAgICAgICAgICAgIHJhID0gbW9kKHJhLCB0aGlzLnApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGJ1ZmYgPSBsZUludDJCdWZmKHJhLCB0aGlzLm44KTtcbiAgICAgICAgcmV0dXJuIHRoaXMudG9Nb250Z29tZXJ5KGJ1ZmYpO1xuICAgIH1cblxuICAgIHRvU3RyaW5nKGEsIHJhZGl4KSB7XG4gICAgICAgIGNvbnN0IGFuID0gdGhpcy5mcm9tTW9udGdvbWVyeShhKTtcbiAgICAgICAgY29uc3QgcyA9IGZyb21ScHJMRShhbiwgMCk7XG4gICAgICAgIHJldHVybiB0b1N0cmluZyhzLCByYWRpeCk7XG4gICAgfVxuXG4gICAgZnJvbVJuZyhybmcpIHtcbiAgICAgICAgbGV0IHY7XG4gICAgICAgIGNvbnN0IGJ1ZmYgPSBuZXcgVWludDhBcnJheSh0aGlzLm44KTtcbiAgICAgICAgZG8ge1xuICAgICAgICAgICAgdiA9IHplcm87XG4gICAgICAgICAgICBmb3IgKGxldCBpPTA7IGk8dGhpcy5uNjQ7IGkrKykge1xuICAgICAgICAgICAgICAgIHYgPSBhZGQodiwgIHNoaWZ0TGVmdChybmcubmV4dFU2NCgpLCA2NCppKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB2ID0gYmFuZCh2LCB0aGlzLm1hc2spO1xuICAgICAgICB9IHdoaWxlIChnZXEodiwgdGhpcy5wKSk7XG4gICAgICAgIHRvUnByTEUoYnVmZiwgMCwgdiwgdGhpcy5uOCk7XG4gICAgICAgIHJldHVybiBidWZmO1xuICAgIH1cblxuICAgIHJhbmRvbSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZnJvbVJuZyhnZXRUaHJlYWRSbmcoKSk7XG4gICAgfVxuXG4gICAgdG9PYmplY3QoYSkge1xuICAgICAgICBjb25zdCBhbiA9IHRoaXMuZnJvbU1vbnRnb21lcnkoYSk7XG4gICAgICAgIHJldHVybiBmcm9tUnByTEUoYW4sIDApO1xuICAgIH1cblxuICAgIGZyb21PYmplY3QoYSkge1xuICAgICAgICBjb25zdCBidWZmID0gbmV3IFVpbnQ4QXJyYXkodGhpcy5uOCk7XG4gICAgICAgIHRvUnByTEUoYnVmZiwgMCwgYSwgdGhpcy5uOCk7XG4gICAgICAgIHJldHVybiB0aGlzLnRvTW9udGdvbWVyeShidWZmKTtcbiAgICB9XG5cbiAgICB0b1JwckxFKGJ1ZmYsIG9mZnNldCwgYSkge1xuICAgICAgICBidWZmLnNldCh0aGlzLmZyb21Nb250Z29tZXJ5KGEpLCBvZmZzZXQpO1xuICAgIH1cblxuICAgIHRvUnByQkUoYnVmZiwgb2Zmc2V0LCBhKSB7XG4gICAgICAgIGNvbnN0IGJ1ZmYyID0gdGhpcy5mcm9tTW9udGdvbWVyeShhKTtcbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPHRoaXMubjgvMjsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCBhdXggPSBidWZmMltpXTtcbiAgICAgICAgICAgIGJ1ZmYyW2ldID0gYnVmZjJbdGhpcy5uOC0xLWldO1xuICAgICAgICAgICAgYnVmZjJbdGhpcy5uOC0xLWldID0gYXV4O1xuICAgICAgICB9XG4gICAgICAgIGJ1ZmYuc2V0KGJ1ZmYyLCBvZmZzZXQpO1xuICAgIH1cblxuICAgIGZyb21ScHJMRShidWZmLCBvZmZzZXQpIHtcbiAgICAgICAgb2Zmc2V0ID0gb2Zmc2V0IHx8IDA7XG4gICAgICAgIGNvbnN0IHJlcyA9IGJ1ZmYuc2xpY2Uob2Zmc2V0LCBvZmZzZXQgKyB0aGlzLm44KTtcbiAgICAgICAgcmV0dXJuIHRoaXMudG9Nb250Z29tZXJ5KHJlcyk7XG4gICAgfVxuXG4gICAgYXN5bmMgYmF0Y2hJbnZlcnNlKGJ1ZmZJbikge1xuICAgICAgICBsZXQgcmV0dXJuQXJyYXkgPSBmYWxzZTtcbiAgICAgICAgY29uc3Qgc0luID0gdGhpcy5uODtcbiAgICAgICAgY29uc3Qgc091dCA9IHRoaXMubjg7XG5cbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoYnVmZkluKSkge1xuICAgICAgICAgICAgYnVmZkluID0gYXJyYXkyYnVmZmVyKGJ1ZmZJbiwgc0luICk7XG4gICAgICAgICAgICByZXR1cm5BcnJheSA9IHRydWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBidWZmSW4gPSBidWZmSW4uc2xpY2UoMCwgYnVmZkluLmJ5dGVMZW5ndGgpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgblBvaW50cyA9IE1hdGguZmxvb3IoYnVmZkluLmJ5dGVMZW5ndGggLyBzSW4pO1xuICAgICAgICBpZiAoIG5Qb2ludHMgKiBzSW4gIT09IGJ1ZmZJbi5ieXRlTGVuZ3RoKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIGJ1ZmZlciBzaXplXCIpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHBvaW50c1BlckNodW5rID0gTWF0aC5mbG9vcihuUG9pbnRzL3RoaXMudG0uY29uY3VycmVuY3kpO1xuICAgICAgICBjb25zdCBvcFByb21pc2VzID0gW107XG4gICAgICAgIGZvciAobGV0IGk9MDsgaTx0aGlzLnRtLmNvbmN1cnJlbmN5OyBpKyspIHtcbiAgICAgICAgICAgIGxldCBuO1xuICAgICAgICAgICAgaWYgKGk8IHRoaXMudG0uY29uY3VycmVuY3ktMSkge1xuICAgICAgICAgICAgICAgIG4gPSBwb2ludHNQZXJDaHVuaztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgbiA9IG5Qb2ludHMgLSBpKnBvaW50c1BlckNodW5rO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG49PTApIGNvbnRpbnVlO1xuXG4gICAgICAgICAgICBjb25zdCBidWZmQ2h1bmsgPSBidWZmSW4uc2xpY2UoaSpwb2ludHNQZXJDaHVuaypzSW4sIGkqcG9pbnRzUGVyQ2h1bmsqc0luICsgbipzSW4pO1xuICAgICAgICAgICAgY29uc3QgdGFzayA9IFtcbiAgICAgICAgICAgICAgICB7Y21kOiBcIkFMTE9DU0VUXCIsIHZhcjogMCwgYnVmZjpidWZmQ2h1bmt9LFxuICAgICAgICAgICAgICAgIHtjbWQ6IFwiQUxMT0NcIiwgdmFyOiAxLCBsZW46c091dCAqIG59LFxuICAgICAgICAgICAgICAgIHtjbWQ6IFwiQ0FMTFwiLCBmbk5hbWU6IHRoaXMucHJlZml4ICsgXCJfYmF0Y2hJbnZlcnNlXCIsIHBhcmFtczogW1xuICAgICAgICAgICAgICAgICAgICB7dmFyOiAwfSxcbiAgICAgICAgICAgICAgICAgICAge3ZhbDogc0lufSxcbiAgICAgICAgICAgICAgICAgICAge3ZhbDogbn0sXG4gICAgICAgICAgICAgICAgICAgIHt2YXI6IDF9LFxuICAgICAgICAgICAgICAgICAgICB7dmFsOiBzT3V0fSxcbiAgICAgICAgICAgICAgICBdfSxcbiAgICAgICAgICAgICAgICB7Y21kOiBcIkdFVFwiLCBvdXQ6IDAsIHZhcjogMSwgbGVuOnNPdXQgKiBufSxcbiAgICAgICAgICAgIF07XG4gICAgICAgICAgICBvcFByb21pc2VzLnB1c2goXG4gICAgICAgICAgICAgICAgdGhpcy50bS5xdWV1ZUFjdGlvbih0YXNrKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IFByb21pc2UuYWxsKG9wUHJvbWlzZXMpO1xuXG4gICAgICAgIGxldCBmdWxsQnVmZk91dDtcbiAgICAgICAgaWYgKGJ1ZmZJbiBpbnN0YW5jZW9mIEJpZ0J1ZmZlcikge1xuICAgICAgICAgICAgZnVsbEJ1ZmZPdXQgPSBuZXcgQmlnQnVmZmVyKG5Qb2ludHMqc091dCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBmdWxsQnVmZk91dCA9IG5ldyBVaW50OEFycmF5KG5Qb2ludHMqc091dCk7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgcCA9MDtcbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPHJlc3VsdC5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgZnVsbEJ1ZmZPdXQuc2V0KHJlc3VsdFtpXVswXSwgcCk7XG4gICAgICAgICAgICBwKz1yZXN1bHRbaV1bMF0uYnl0ZUxlbmd0aDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChyZXR1cm5BcnJheSkge1xuICAgICAgICAgICAgcmV0dXJuIGJ1ZmZlcjJhcnJheShmdWxsQnVmZk91dCwgc091dCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gZnVsbEJ1ZmZPdXQ7XG4gICAgICAgIH1cblxuICAgIH1cblxufVxuXG5jbGFzcyBXYXNtRmllbGQyIHtcblxuICAgIGNvbnN0cnVjdG9yKHRtLCBwcmVmaXgsIEYpIHtcbiAgICAgICAgdGhpcy50bSA9IHRtO1xuICAgICAgICB0aGlzLnByZWZpeCA9IHByZWZpeDtcblxuICAgICAgICB0aGlzLkYgPSBGO1xuICAgICAgICB0aGlzLnR5cGUgPSBcIkYyXCI7XG4gICAgICAgIHRoaXMubSA9IEYubSAqIDI7XG4gICAgICAgIHRoaXMubjggPSB0aGlzLkYubjgqMjtcbiAgICAgICAgdGhpcy5uMzIgPSB0aGlzLkYubjMyKjI7XG4gICAgICAgIHRoaXMubjY0ID0gdGhpcy5GLm42NCoyO1xuXG4gICAgICAgIHRoaXMucE9wMSA9IHRtLmFsbG9jKEYubjgqMik7XG4gICAgICAgIHRoaXMucE9wMiA9IHRtLmFsbG9jKEYubjgqMik7XG4gICAgICAgIHRoaXMucE9wMyA9IHRtLmFsbG9jKEYubjgqMik7XG4gICAgICAgIHRoaXMudG0uaW5zdGFuY2UuZXhwb3J0c1twcmVmaXggKyBcIl96ZXJvXCJdKHRoaXMucE9wMSk7XG4gICAgICAgIHRoaXMuemVybyA9IHRtLmdldEJ1ZmYodGhpcy5wT3AxLCB0aGlzLm44KTtcbiAgICAgICAgdGhpcy50bS5pbnN0YW5jZS5leHBvcnRzW3ByZWZpeCArIFwiX29uZVwiXSh0aGlzLnBPcDEpO1xuICAgICAgICB0aGlzLm9uZSA9IHRtLmdldEJ1ZmYodGhpcy5wT3AxLCB0aGlzLm44KTtcblxuICAgICAgICB0aGlzLm5lZ29uZSA9IHRoaXMubmVnKHRoaXMub25lKTtcbiAgICAgICAgdGhpcy50d28gPSB0aGlzLmFkZCh0aGlzLm9uZSwgdGhpcy5vbmUpO1xuXG4gICAgfVxuXG4gICAgb3AyKG9wTmFtZSwgYSwgYikge1xuICAgICAgICB0aGlzLnRtLnNldEJ1ZmYodGhpcy5wT3AxLCBhKTtcbiAgICAgICAgdGhpcy50bS5zZXRCdWZmKHRoaXMucE9wMiwgYik7XG4gICAgICAgIHRoaXMudG0uaW5zdGFuY2UuZXhwb3J0c1t0aGlzLnByZWZpeCArIG9wTmFtZV0odGhpcy5wT3AxLCB0aGlzLnBPcDIsIHRoaXMucE9wMyk7XG4gICAgICAgIHJldHVybiB0aGlzLnRtLmdldEJ1ZmYodGhpcy5wT3AzLCB0aGlzLm44KTtcbiAgICB9XG5cbiAgICBvcDJCb29sKG9wTmFtZSwgYSwgYikge1xuICAgICAgICB0aGlzLnRtLnNldEJ1ZmYodGhpcy5wT3AxLCBhKTtcbiAgICAgICAgdGhpcy50bS5zZXRCdWZmKHRoaXMucE9wMiwgYik7XG4gICAgICAgIHJldHVybiAhIXRoaXMudG0uaW5zdGFuY2UuZXhwb3J0c1t0aGlzLnByZWZpeCArIG9wTmFtZV0odGhpcy5wT3AxLCB0aGlzLnBPcDIpO1xuICAgIH1cblxuICAgIG9wMShvcE5hbWUsIGEpIHtcbiAgICAgICAgdGhpcy50bS5zZXRCdWZmKHRoaXMucE9wMSwgYSk7XG4gICAgICAgIHRoaXMudG0uaW5zdGFuY2UuZXhwb3J0c1t0aGlzLnByZWZpeCArIG9wTmFtZV0odGhpcy5wT3AxLCB0aGlzLnBPcDMpO1xuICAgICAgICByZXR1cm4gdGhpcy50bS5nZXRCdWZmKHRoaXMucE9wMywgdGhpcy5uOCk7XG4gICAgfVxuXG4gICAgb3AxQm9vbChvcE5hbWUsIGEpIHtcbiAgICAgICAgdGhpcy50bS5zZXRCdWZmKHRoaXMucE9wMSwgYSk7XG4gICAgICAgIHJldHVybiAhIXRoaXMudG0uaW5zdGFuY2UuZXhwb3J0c1t0aGlzLnByZWZpeCArIG9wTmFtZV0odGhpcy5wT3AxLCB0aGlzLnBPcDMpO1xuICAgIH1cblxuICAgIGFkZChhLGIpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3AyKFwiX2FkZFwiLCBhLCBiKTtcbiAgICB9XG5cbiAgICBlcShhLGIpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3AyQm9vbChcIl9lcVwiLCBhLCBiKTtcbiAgICB9XG5cbiAgICBpc1plcm8oYSkge1xuICAgICAgICByZXR1cm4gdGhpcy5vcDFCb29sKFwiX2lzWmVyb1wiLCBhKTtcbiAgICB9XG5cbiAgICBzdWIoYSxiKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wMihcIl9zdWJcIiwgYSwgYik7XG4gICAgfVxuXG4gICAgbmVnKGEpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3AxKFwiX25lZ1wiLCBhKTtcbiAgICB9XG5cbiAgICBpbnYoYSkge1xuICAgICAgICByZXR1cm4gdGhpcy5vcDEoXCJfaW52ZXJzZVwiLCBhKTtcbiAgICB9XG5cbiAgICBpc05lZ2F0aXZlKGEpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3AxQm9vbChcIl9pc05lZ2F0aXZlXCIsIGEpO1xuICAgIH1cblxuICAgIHRvTW9udGdvbWVyeShhKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wMShcIl90b01vbnRnb21lcnlcIiwgYSk7XG4gICAgfVxuXG4gICAgZnJvbU1vbnRnb21lcnkoYSkge1xuICAgICAgICByZXR1cm4gdGhpcy5vcDEoXCJfZnJvbU1vbnRnb21lcnlcIiwgYSk7XG4gICAgfVxuXG4gICAgbXVsKGEsYikge1xuICAgICAgICByZXR1cm4gdGhpcy5vcDIoXCJfbXVsXCIsIGEsIGIpO1xuICAgIH1cblxuICAgIG11bDEoYSxiKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wMihcIl9tdWwxXCIsIGEsIGIpO1xuICAgIH1cblxuICAgIGRpdihhLCBiKSB7XG4gICAgICAgIHRoaXMudG0uc2V0QnVmZih0aGlzLnBPcDEsIGEpO1xuICAgICAgICB0aGlzLnRtLnNldEJ1ZmYodGhpcy5wT3AyLCBiKTtcbiAgICAgICAgdGhpcy50bS5pbnN0YW5jZS5leHBvcnRzW3RoaXMucHJlZml4ICsgXCJfaW52ZXJzZVwiXSh0aGlzLnBPcDIsIHRoaXMucE9wMik7XG4gICAgICAgIHRoaXMudG0uaW5zdGFuY2UuZXhwb3J0c1t0aGlzLnByZWZpeCArIFwiX211bFwiXSh0aGlzLnBPcDEsIHRoaXMucE9wMiwgdGhpcy5wT3AzKTtcbiAgICAgICAgcmV0dXJuIHRoaXMudG0uZ2V0QnVmZih0aGlzLnBPcDMsIHRoaXMubjgpO1xuICAgIH1cblxuICAgIHNxdWFyZShhKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wMShcIl9zcXVhcmVcIiwgYSk7XG4gICAgfVxuXG4gICAgaXNTcXVhcmUoYSkge1xuICAgICAgICByZXR1cm4gdGhpcy5vcDFCb29sKFwiX2lzU3F1YXJlXCIsIGEpO1xuICAgIH1cblxuICAgIHNxcnQoYSkge1xuICAgICAgICByZXR1cm4gdGhpcy5vcDEoXCJfc3FydFwiLCBhKTtcbiAgICB9XG5cbiAgICBleHAoYSwgYikge1xuICAgICAgICBpZiAoIShiIGluc3RhbmNlb2YgVWludDhBcnJheSkpIHtcbiAgICAgICAgICAgIGIgPSB0b0xFQnVmZihlKGIpKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnRtLnNldEJ1ZmYodGhpcy5wT3AxLCBhKTtcbiAgICAgICAgdGhpcy50bS5zZXRCdWZmKHRoaXMucE9wMiwgYik7XG4gICAgICAgIHRoaXMudG0uaW5zdGFuY2UuZXhwb3J0c1t0aGlzLnByZWZpeCArIFwiX2V4cFwiXSh0aGlzLnBPcDEsIHRoaXMucE9wMiwgYi5ieXRlTGVuZ3RoLCB0aGlzLnBPcDMpO1xuICAgICAgICByZXR1cm4gdGhpcy50bS5nZXRCdWZmKHRoaXMucE9wMywgdGhpcy5uOCk7XG4gICAgfVxuXG4gICAgZShhLCBiKSB7XG4gICAgICAgIGlmIChhIGluc3RhbmNlb2YgVWludDhBcnJheSkgcmV0dXJuIGE7XG4gICAgICAgIGlmICgoQXJyYXkuaXNBcnJheShhKSkgJiYgKGEubGVuZ3RoID09IDIpKSB7XG4gICAgICAgICAgICBjb25zdCBjMSA9IHRoaXMuRi5lKGFbMF0sIGIpO1xuICAgICAgICAgICAgY29uc3QgYzIgPSB0aGlzLkYuZShhWzFdLCBiKTtcbiAgICAgICAgICAgIGNvbnN0IHJlcyA9IG5ldyBVaW50OEFycmF5KHRoaXMuRi5uOCoyKTtcbiAgICAgICAgICAgIHJlcy5zZXQoYzEpO1xuICAgICAgICAgICAgcmVzLnNldChjMiwgdGhpcy5GLm44KjIpO1xuICAgICAgICAgICAgcmV0dXJuIHJlcztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcImludmFsaWQgRjJcIik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB0b1N0cmluZyhhLCByYWRpeCkge1xuICAgICAgICBjb25zdCBzMSA9IHRoaXMuRi50b1N0cmluZyhhLnNsaWNlKDAsIHRoaXMuRi5uOCksIHJhZGl4KTtcbiAgICAgICAgY29uc3QgczIgPSB0aGlzLkYudG9TdHJpbmcoYS5zbGljZSh0aGlzLkYubjgpLCByYWRpeCk7XG4gICAgICAgIHJldHVybiBgWyR7czF9LCAke3MyfV1gO1xuICAgIH1cblxuICAgIGZyb21Sbmcocm5nKSB7XG4gICAgICAgIGNvbnN0IGMxID0gdGhpcy5GLmZyb21Sbmcocm5nKTtcbiAgICAgICAgY29uc3QgYzIgPSB0aGlzLkYuZnJvbVJuZyhybmcpO1xuICAgICAgICBjb25zdCByZXMgPSBuZXcgVWludDhBcnJheSh0aGlzLkYubjgqMik7XG4gICAgICAgIHJlcy5zZXQoYzEpO1xuICAgICAgICByZXMuc2V0KGMyLCB0aGlzLkYubjgpO1xuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH1cblxuICAgIHJhbmRvbSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZnJvbVJuZyhnZXRUaHJlYWRSbmcoKSk7XG4gICAgfVxuXG4gICAgdG9PYmplY3QoYSkge1xuICAgICAgICBjb25zdCBjMSA9IHRoaXMuRi50b09iamVjdChhLnNsaWNlKDAsIHRoaXMuRi5uOCkpO1xuICAgICAgICBjb25zdCBjMiA9IHRoaXMuRi50b09iamVjdChhLnNsaWNlKHRoaXMuRi5uOCwgdGhpcy5GLm44KjIpKTtcbiAgICAgICAgcmV0dXJuIFtjMSwgYzJdO1xuICAgIH1cblxuICAgIGZyb21PYmplY3QoYSkge1xuICAgICAgICBjb25zdCBidWZmID0gbmV3IFVpbnQ4QXJyYXkodGhpcy5GLm44KjIpO1xuICAgICAgICBjb25zdCBiMSA9IHRoaXMuRi5mcm9tT2JqZWN0KGFbMF0pO1xuICAgICAgICBjb25zdCBiMiA9IHRoaXMuRi5mcm9tT2JqZWN0KGFbMV0pO1xuICAgICAgICBidWZmLnNldChiMSk7XG4gICAgICAgIGJ1ZmYuc2V0KGIyLCB0aGlzLkYubjgpO1xuICAgICAgICByZXR1cm4gYnVmZjtcbiAgICB9XG5cbiAgICBjMShhKSB7XG4gICAgICAgIHJldHVybiBhLnNsaWNlKDAsIHRoaXMuRi5uOCk7XG4gICAgfVxuXG4gICAgYzIoYSkge1xuICAgICAgICByZXR1cm4gYS5zbGljZSh0aGlzLkYubjgpO1xuICAgIH1cblxufVxuXG5jbGFzcyBXYXNtRmllbGQzIHtcblxuICAgIGNvbnN0cnVjdG9yKHRtLCBwcmVmaXgsIEYpIHtcbiAgICAgICAgdGhpcy50bSA9IHRtO1xuICAgICAgICB0aGlzLnByZWZpeCA9IHByZWZpeDtcblxuICAgICAgICB0aGlzLkYgPSBGO1xuICAgICAgICB0aGlzLnR5cGUgPSBcIkYzXCI7XG4gICAgICAgIHRoaXMubSA9IEYubSAqIDM7XG4gICAgICAgIHRoaXMubjggPSB0aGlzLkYubjgqMztcbiAgICAgICAgdGhpcy5uMzIgPSB0aGlzLkYubjMyKjM7XG4gICAgICAgIHRoaXMubjY0ID0gdGhpcy5GLm42NCozO1xuXG4gICAgICAgIHRoaXMucE9wMSA9IHRtLmFsbG9jKEYubjgqMyk7XG4gICAgICAgIHRoaXMucE9wMiA9IHRtLmFsbG9jKEYubjgqMyk7XG4gICAgICAgIHRoaXMucE9wMyA9IHRtLmFsbG9jKEYubjgqMyk7XG4gICAgICAgIHRoaXMudG0uaW5zdGFuY2UuZXhwb3J0c1twcmVmaXggKyBcIl96ZXJvXCJdKHRoaXMucE9wMSk7XG4gICAgICAgIHRoaXMuemVybyA9IHRtLmdldEJ1ZmYodGhpcy5wT3AxLCB0aGlzLm44KTtcbiAgICAgICAgdGhpcy50bS5pbnN0YW5jZS5leHBvcnRzW3ByZWZpeCArIFwiX29uZVwiXSh0aGlzLnBPcDEpO1xuICAgICAgICB0aGlzLm9uZSA9IHRtLmdldEJ1ZmYodGhpcy5wT3AxLCB0aGlzLm44KTtcblxuICAgICAgICB0aGlzLm5lZ29uZSA9IHRoaXMubmVnKHRoaXMub25lKTtcbiAgICAgICAgdGhpcy50d28gPSB0aGlzLmFkZCh0aGlzLm9uZSwgdGhpcy5vbmUpO1xuXG4gICAgfVxuXG4gICAgb3AyKG9wTmFtZSwgYSwgYikge1xuICAgICAgICB0aGlzLnRtLnNldEJ1ZmYodGhpcy5wT3AxLCBhKTtcbiAgICAgICAgdGhpcy50bS5zZXRCdWZmKHRoaXMucE9wMiwgYik7XG4gICAgICAgIHRoaXMudG0uaW5zdGFuY2UuZXhwb3J0c1t0aGlzLnByZWZpeCArIG9wTmFtZV0odGhpcy5wT3AxLCB0aGlzLnBPcDIsIHRoaXMucE9wMyk7XG4gICAgICAgIHJldHVybiB0aGlzLnRtLmdldEJ1ZmYodGhpcy5wT3AzLCB0aGlzLm44KTtcbiAgICB9XG5cbiAgICBvcDJCb29sKG9wTmFtZSwgYSwgYikge1xuICAgICAgICB0aGlzLnRtLnNldEJ1ZmYodGhpcy5wT3AxLCBhKTtcbiAgICAgICAgdGhpcy50bS5zZXRCdWZmKHRoaXMucE9wMiwgYik7XG4gICAgICAgIHJldHVybiAhIXRoaXMudG0uaW5zdGFuY2UuZXhwb3J0c1t0aGlzLnByZWZpeCArIG9wTmFtZV0odGhpcy5wT3AxLCB0aGlzLnBPcDIpO1xuICAgIH1cblxuICAgIG9wMShvcE5hbWUsIGEpIHtcbiAgICAgICAgdGhpcy50bS5zZXRCdWZmKHRoaXMucE9wMSwgYSk7XG4gICAgICAgIHRoaXMudG0uaW5zdGFuY2UuZXhwb3J0c1t0aGlzLnByZWZpeCArIG9wTmFtZV0odGhpcy5wT3AxLCB0aGlzLnBPcDMpO1xuICAgICAgICByZXR1cm4gdGhpcy50bS5nZXRCdWZmKHRoaXMucE9wMywgdGhpcy5uOCk7XG4gICAgfVxuXG4gICAgb3AxQm9vbChvcE5hbWUsIGEpIHtcbiAgICAgICAgdGhpcy50bS5zZXRCdWZmKHRoaXMucE9wMSwgYSk7XG4gICAgICAgIHJldHVybiAhIXRoaXMudG0uaW5zdGFuY2UuZXhwb3J0c1t0aGlzLnByZWZpeCArIG9wTmFtZV0odGhpcy5wT3AxLCB0aGlzLnBPcDMpO1xuICAgIH1cblxuXG4gICAgZXEoYSxiKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wMkJvb2woXCJfZXFcIiwgYSwgYik7XG4gICAgfVxuXG4gICAgaXNaZXJvKGEpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3AxQm9vbChcIl9pc1plcm9cIiwgYSk7XG4gICAgfVxuXG4gICAgYWRkKGEsYikge1xuICAgICAgICByZXR1cm4gdGhpcy5vcDIoXCJfYWRkXCIsIGEsIGIpO1xuICAgIH1cblxuICAgIHN1YihhLGIpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3AyKFwiX3N1YlwiLCBhLCBiKTtcbiAgICB9XG5cbiAgICBuZWcoYSkge1xuICAgICAgICByZXR1cm4gdGhpcy5vcDEoXCJfbmVnXCIsIGEpO1xuICAgIH1cblxuICAgIGludihhKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wMShcIl9pbnZlcnNlXCIsIGEpO1xuICAgIH1cblxuICAgIGlzTmVnYXRpdmUoYSkge1xuICAgICAgICByZXR1cm4gdGhpcy5vcDFCb29sKFwiX2lzTmVnYXRpdmVcIiwgYSk7XG4gICAgfVxuXG4gICAgdG9Nb250Z29tZXJ5KGEpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3AxKFwiX3RvTW9udGdvbWVyeVwiLCBhKTtcbiAgICB9XG5cbiAgICBmcm9tTW9udGdvbWVyeShhKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wMShcIl9mcm9tTW9udGdvbWVyeVwiLCBhKTtcbiAgICB9XG5cbiAgICBtdWwoYSxiKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wMihcIl9tdWxcIiwgYSwgYik7XG4gICAgfVxuXG4gICAgZGl2KGEsIGIpIHtcbiAgICAgICAgdGhpcy50bS5zZXRCdWZmKHRoaXMucE9wMSwgYSk7XG4gICAgICAgIHRoaXMudG0uc2V0QnVmZih0aGlzLnBPcDIsIGIpO1xuICAgICAgICB0aGlzLnRtLmluc3RhbmNlLmV4cG9ydHNbdGhpcy5wcmVmaXggKyBcIl9pbnZlcnNlXCJdKHRoaXMucE9wMiwgdGhpcy5wT3AyKTtcbiAgICAgICAgdGhpcy50bS5pbnN0YW5jZS5leHBvcnRzW3RoaXMucHJlZml4ICsgXCJfbXVsXCJdKHRoaXMucE9wMSwgdGhpcy5wT3AyLCB0aGlzLnBPcDMpO1xuICAgICAgICByZXR1cm4gdGhpcy50bS5nZXRCdWZmKHRoaXMucE9wMywgdGhpcy5uOCk7XG4gICAgfVxuXG4gICAgc3F1YXJlKGEpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3AxKFwiX3NxdWFyZVwiLCBhKTtcbiAgICB9XG5cbiAgICBpc1NxdWFyZShhKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wMUJvb2woXCJfaXNTcXVhcmVcIiwgYSk7XG4gICAgfVxuXG4gICAgc3FydChhKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wMShcIl9zcXJ0XCIsIGEpO1xuICAgIH1cblxuICAgIGV4cChhLCBiKSB7XG4gICAgICAgIGlmICghKGIgaW5zdGFuY2VvZiBVaW50OEFycmF5KSkge1xuICAgICAgICAgICAgYiA9IHRvTEVCdWZmKGUoYikpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMudG0uc2V0QnVmZih0aGlzLnBPcDEsIGEpO1xuICAgICAgICB0aGlzLnRtLnNldEJ1ZmYodGhpcy5wT3AyLCBiKTtcbiAgICAgICAgdGhpcy50bS5pbnN0YW5jZS5leHBvcnRzW3RoaXMucHJlZml4ICsgXCJfZXhwXCJdKHRoaXMucE9wMSwgdGhpcy5wT3AyLCBiLmJ5dGVMZW5ndGgsIHRoaXMucE9wMyk7XG4gICAgICAgIHJldHVybiB0aGlzLmdldEJ1ZmYodGhpcy5wT3AzLCB0aGlzLm44KTtcbiAgICB9XG5cbiAgICBlKGEsIGIpIHtcbiAgICAgICAgaWYgKGEgaW5zdGFuY2VvZiBVaW50OEFycmF5KSByZXR1cm4gYTtcbiAgICAgICAgaWYgKChBcnJheS5pc0FycmF5KGEpKSAmJiAoYS5sZW5ndGggPT0gMykpIHtcbiAgICAgICAgICAgIGNvbnN0IGMxID0gdGhpcy5GLmUoYVswXSwgYik7XG4gICAgICAgICAgICBjb25zdCBjMiA9IHRoaXMuRi5lKGFbMV0sIGIpO1xuICAgICAgICAgICAgY29uc3QgYzMgPSB0aGlzLkYuZShhWzJdLCBiKTtcbiAgICAgICAgICAgIGNvbnN0IHJlcyA9IG5ldyBVaW50OEFycmF5KHRoaXMuRi5uOCozKTtcbiAgICAgICAgICAgIHJlcy5zZXQoYzEpO1xuICAgICAgICAgICAgcmVzLnNldChjMiwgdGhpcy5GLm44KTtcbiAgICAgICAgICAgIHJlcy5zZXQoYzMsIHRoaXMuRi5uOCoyKTtcbiAgICAgICAgICAgIHJldHVybiByZXM7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJpbnZhbGlkIEYzXCIpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdG9TdHJpbmcoYSwgcmFkaXgpIHtcbiAgICAgICAgY29uc3QgczEgPSB0aGlzLkYudG9TdHJpbmcoYS5zbGljZSgwLCB0aGlzLkYubjgpLCByYWRpeCk7XG4gICAgICAgIGNvbnN0IHMyID0gdGhpcy5GLnRvU3RyaW5nKGEuc2xpY2UodGhpcy5GLm44LCB0aGlzLkYubjgqMiksIHJhZGl4KTtcbiAgICAgICAgY29uc3QgczMgPSB0aGlzLkYudG9TdHJpbmcoYS5zbGljZSh0aGlzLkYubjgqMiksIHJhZGl4KTtcbiAgICAgICAgcmV0dXJuIGBbJHtzMX0sICR7czJ9LCAke3MzfV1gO1xuICAgIH1cblxuICAgIGZyb21Sbmcocm5nKSB7XG4gICAgICAgIGNvbnN0IGMxID0gdGhpcy5GLmZyb21Sbmcocm5nKTtcbiAgICAgICAgY29uc3QgYzIgPSB0aGlzLkYuZnJvbVJuZyhybmcpO1xuICAgICAgICBjb25zdCBjMyA9IHRoaXMuRi5mcm9tUm5nKHJuZyk7XG4gICAgICAgIGNvbnN0IHJlcyA9IG5ldyBVaW50OEFycmF5KHRoaXMuRi5uOCozKTtcbiAgICAgICAgcmVzLnNldChjMSk7XG4gICAgICAgIHJlcy5zZXQoYzIsIHRoaXMuRi5uOCk7XG4gICAgICAgIHJlcy5zZXQoYzMsIHRoaXMuRi5uOCoyKTtcbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG5cbiAgICByYW5kb20oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmZyb21SbmcoZ2V0VGhyZWFkUm5nKCkpO1xuICAgIH1cblxuICAgIHRvT2JqZWN0KGEpIHtcbiAgICAgICAgY29uc3QgYzEgPSB0aGlzLkYudG9PYmplY3QoYS5zbGljZSgwLCB0aGlzLkYubjgpKTtcbiAgICAgICAgY29uc3QgYzIgPSB0aGlzLkYudG9PYmplY3QoYS5zbGljZSh0aGlzLkYubjgsIHRoaXMuRi5uOCoyKSk7XG4gICAgICAgIGNvbnN0IGMzID0gdGhpcy5GLnRvT2JqZWN0KGEuc2xpY2UodGhpcy5GLm44KjIsIHRoaXMuRi5uOCozKSk7XG4gICAgICAgIHJldHVybiBbYzEsIGMyLCBjM107XG4gICAgfVxuXG4gICAgZnJvbU9iamVjdChhKSB7XG4gICAgICAgIGNvbnN0IGJ1ZmYgPSBuZXcgVWludDhBcnJheSh0aGlzLkYubjgqMyk7XG4gICAgICAgIGNvbnN0IGIxID0gdGhpcy5GLmZyb21PYmplY3QoYVswXSk7XG4gICAgICAgIGNvbnN0IGIyID0gdGhpcy5GLmZyb21PYmplY3QoYVsxXSk7XG4gICAgICAgIGNvbnN0IGIzID0gdGhpcy5GLmZyb21PYmplY3QoYVsyXSk7XG4gICAgICAgIGJ1ZmYuc2V0KGIxKTtcbiAgICAgICAgYnVmZi5zZXQoYjIsIHRoaXMuRi5uOCk7XG4gICAgICAgIGJ1ZmYuc2V0KGIzLCB0aGlzLkYubjgqMik7XG4gICAgICAgIHJldHVybiBidWZmO1xuICAgIH1cblxuICAgIGMxKGEpIHtcbiAgICAgICAgcmV0dXJuIGEuc2xpY2UoMCwgdGhpcy5GLm44KTtcbiAgICB9XG5cbiAgICBjMihhKSB7XG4gICAgICAgIHJldHVybiBhLnNsaWNlKHRoaXMuRi5uOCwgdGhpcy5GLm44KjIpO1xuICAgIH1cblxuICAgIGMzKGEpIHtcbiAgICAgICAgcmV0dXJuIGEuc2xpY2UodGhpcy5GLm44KjIpO1xuICAgIH1cblxufVxuXG5jbGFzcyBXYXNtQ3VydmUge1xuXG4gICAgY29uc3RydWN0b3IodG0sIHByZWZpeCwgRiwgcEdlbiwgcEdiLCBjb2ZhY3Rvcikge1xuICAgICAgICB0aGlzLnRtID0gdG07XG4gICAgICAgIHRoaXMucHJlZml4ID0gcHJlZml4O1xuICAgICAgICB0aGlzLkYgPSBGO1xuXG4gICAgICAgIHRoaXMucE9wMSA9IHRtLmFsbG9jKEYubjgqMyk7XG4gICAgICAgIHRoaXMucE9wMiA9IHRtLmFsbG9jKEYubjgqMyk7XG4gICAgICAgIHRoaXMucE9wMyA9IHRtLmFsbG9jKEYubjgqMyk7XG4gICAgICAgIHRoaXMudG0uaW5zdGFuY2UuZXhwb3J0c1twcmVmaXggKyBcIl96ZXJvXCJdKHRoaXMucE9wMSk7XG4gICAgICAgIHRoaXMuemVybyA9IHRoaXMudG0uZ2V0QnVmZih0aGlzLnBPcDEsIEYubjgqMyk7XG4gICAgICAgIHRoaXMudG0uaW5zdGFuY2UuZXhwb3J0c1twcmVmaXggKyBcIl96ZXJvQWZmaW5lXCJdKHRoaXMucE9wMSk7XG4gICAgICAgIHRoaXMuemVyb0FmZmluZSA9IHRoaXMudG0uZ2V0QnVmZih0aGlzLnBPcDEsIEYubjgqMik7XG4gICAgICAgIHRoaXMub25lID0gdGhpcy50bS5nZXRCdWZmKHBHZW4sIEYubjgqMyk7XG4gICAgICAgIHRoaXMuZyA9IHRoaXMub25lO1xuICAgICAgICB0aGlzLm9uZUFmZmluZSA9IHRoaXMudG0uZ2V0QnVmZihwR2VuLCBGLm44KjIpO1xuICAgICAgICB0aGlzLmdBZmZpbmUgPSB0aGlzLm9uZUFmZmluZTtcbiAgICAgICAgdGhpcy5iID0gdGhpcy50bS5nZXRCdWZmKHBHYiwgRi5uOCk7XG5cbiAgICAgICAgaWYgKGNvZmFjdG9yKSB7XG4gICAgICAgICAgICB0aGlzLmNvZmFjdG9yID0gdG9MRUJ1ZmYoY29mYWN0b3IpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5uZWdvbmUgPSB0aGlzLm5lZyh0aGlzLm9uZSk7XG4gICAgICAgIHRoaXMudHdvID0gdGhpcy5hZGQodGhpcy5vbmUsIHRoaXMub25lKTtcblxuICAgICAgICB0aGlzLmJhdGNoTEVNdG9DID0gYnVpbGRCYXRjaENvbnZlcnQodG0sIHByZWZpeCArIFwiX2JhdGNoTEVNdG9DXCIsIEYubjgqMiwgRi5uOCk7XG4gICAgICAgIHRoaXMuYmF0Y2hMRU10b1UgPSBidWlsZEJhdGNoQ29udmVydCh0bSwgcHJlZml4ICsgXCJfYmF0Y2hMRU10b1VcIiwgRi5uOCoyLCBGLm44KjIpO1xuICAgICAgICB0aGlzLmJhdGNoQ3RvTEVNID0gYnVpbGRCYXRjaENvbnZlcnQodG0sIHByZWZpeCArIFwiX2JhdGNoQ3RvTEVNXCIsIEYubjgsIEYubjgqMik7XG4gICAgICAgIHRoaXMuYmF0Y2hVdG9MRU0gPSBidWlsZEJhdGNoQ29udmVydCh0bSwgcHJlZml4ICsgXCJfYmF0Y2hVdG9MRU1cIiwgRi5uOCoyLCBGLm44KjIpO1xuICAgICAgICB0aGlzLmJhdGNoVG9KYWNvYmlhbiA9IGJ1aWxkQmF0Y2hDb252ZXJ0KHRtLCBwcmVmaXggKyBcIl9iYXRjaFRvSmFjb2JpYW5cIiwgRi5uOCoyLCBGLm44KjMpO1xuICAgICAgICB0aGlzLmJhdGNoVG9BZmZpbmUgPSBidWlsZEJhdGNoQ29udmVydCh0bSwgcHJlZml4ICsgXCJfYmF0Y2hUb0FmZmluZVwiLCBGLm44KjMsIEYubjgqMik7XG4gICAgfVxuXG4gICAgb3AyKG9wTmFtZSwgYSwgYikge1xuICAgICAgICB0aGlzLnRtLnNldEJ1ZmYodGhpcy5wT3AxLCBhKTtcbiAgICAgICAgdGhpcy50bS5zZXRCdWZmKHRoaXMucE9wMiwgYik7XG4gICAgICAgIHRoaXMudG0uaW5zdGFuY2UuZXhwb3J0c1t0aGlzLnByZWZpeCArIG9wTmFtZV0odGhpcy5wT3AxLCB0aGlzLnBPcDIsIHRoaXMucE9wMyk7XG4gICAgICAgIHJldHVybiB0aGlzLnRtLmdldEJ1ZmYodGhpcy5wT3AzLCB0aGlzLkYubjgqMyk7XG4gICAgfVxuXG4gICAgb3AyYm9vbChvcE5hbWUsIGEsIGIpIHtcbiAgICAgICAgdGhpcy50bS5zZXRCdWZmKHRoaXMucE9wMSwgYSk7XG4gICAgICAgIHRoaXMudG0uc2V0QnVmZih0aGlzLnBPcDIsIGIpO1xuICAgICAgICByZXR1cm4gISF0aGlzLnRtLmluc3RhbmNlLmV4cG9ydHNbdGhpcy5wcmVmaXggKyBvcE5hbWVdKHRoaXMucE9wMSwgdGhpcy5wT3AyLCB0aGlzLnBPcDMpO1xuICAgIH1cblxuICAgIG9wMShvcE5hbWUsIGEpIHtcbiAgICAgICAgdGhpcy50bS5zZXRCdWZmKHRoaXMucE9wMSwgYSk7XG4gICAgICAgIHRoaXMudG0uaW5zdGFuY2UuZXhwb3J0c1t0aGlzLnByZWZpeCArIG9wTmFtZV0odGhpcy5wT3AxLCB0aGlzLnBPcDMpO1xuICAgICAgICByZXR1cm4gdGhpcy50bS5nZXRCdWZmKHRoaXMucE9wMywgdGhpcy5GLm44KjMpO1xuICAgIH1cblxuICAgIG9wMUFmZmluZShvcE5hbWUsIGEpIHtcbiAgICAgICAgdGhpcy50bS5zZXRCdWZmKHRoaXMucE9wMSwgYSk7XG4gICAgICAgIHRoaXMudG0uaW5zdGFuY2UuZXhwb3J0c1t0aGlzLnByZWZpeCArIG9wTmFtZV0odGhpcy5wT3AxLCB0aGlzLnBPcDMpO1xuICAgICAgICByZXR1cm4gdGhpcy50bS5nZXRCdWZmKHRoaXMucE9wMywgdGhpcy5GLm44KjIpO1xuICAgIH1cblxuICAgIG9wMUJvb2wob3BOYW1lLCBhKSB7XG4gICAgICAgIHRoaXMudG0uc2V0QnVmZih0aGlzLnBPcDEsIGEpO1xuICAgICAgICByZXR1cm4gISF0aGlzLnRtLmluc3RhbmNlLmV4cG9ydHNbdGhpcy5wcmVmaXggKyBvcE5hbWVdKHRoaXMucE9wMSwgdGhpcy5wT3AzKTtcbiAgICB9XG5cbiAgICBhZGQoYSxiKSB7XG4gICAgICAgIGlmIChhLmJ5dGVMZW5ndGggPT0gdGhpcy5GLm44KjMpIHtcbiAgICAgICAgICAgIGlmIChiLmJ5dGVMZW5ndGggPT0gdGhpcy5GLm44KjMpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5vcDIoXCJfYWRkXCIsIGEsIGIpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChiLmJ5dGVMZW5ndGggPT0gdGhpcy5GLm44KjIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5vcDIoXCJfYWRkTWl4ZWRcIiwgYSwgYik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcImludmFsaWQgcG9pbnQgc2l6ZVwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChhLmJ5dGVMZW5ndGggPT0gdGhpcy5GLm44KjIpIHtcbiAgICAgICAgICAgIGlmIChiLmJ5dGVMZW5ndGggPT0gdGhpcy5GLm44KjMpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5vcDIoXCJfYWRkTWl4ZWRcIiwgYiwgYSk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGIuYnl0ZUxlbmd0aCA9PSB0aGlzLkYubjgqMikge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLm9wMihcIl9hZGRBZmZpbmVcIiwgYSwgYik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcImludmFsaWQgcG9pbnQgc2l6ZVwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcImludmFsaWQgcG9pbnQgc2l6ZVwiKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHN1YihhLGIpIHtcbiAgICAgICAgaWYgKGEuYnl0ZUxlbmd0aCA9PSB0aGlzLkYubjgqMykge1xuICAgICAgICAgICAgaWYgKGIuYnl0ZUxlbmd0aCA9PSB0aGlzLkYubjgqMykge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLm9wMihcIl9zdWJcIiwgYSwgYik7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGIuYnl0ZUxlbmd0aCA9PSB0aGlzLkYubjgqMikge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLm9wMihcIl9zdWJNaXhlZFwiLCBhLCBiKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiaW52YWxpZCBwb2ludCBzaXplXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKGEuYnl0ZUxlbmd0aCA9PSB0aGlzLkYubjgqMikge1xuICAgICAgICAgICAgaWYgKGIuYnl0ZUxlbmd0aCA9PSB0aGlzLkYubjgqMykge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLm9wMihcIl9zdWJNaXhlZFwiLCBiLCBhKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoYi5ieXRlTGVuZ3RoID09IHRoaXMuRi5uOCoyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMub3AyKFwiX3N1YkFmZmluZVwiLCBhLCBiKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiaW52YWxpZCBwb2ludCBzaXplXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiaW52YWxpZCBwb2ludCBzaXplXCIpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmVnKGEpIHtcbiAgICAgICAgaWYgKGEuYnl0ZUxlbmd0aCA9PSB0aGlzLkYubjgqMykge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMub3AxKFwiX25lZ1wiLCBhKTtcbiAgICAgICAgfSBlbHNlIGlmIChhLmJ5dGVMZW5ndGggPT0gdGhpcy5GLm44KjIpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLm9wMUFmZmluZShcIl9uZWdBZmZpbmVcIiwgYSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJpbnZhbGlkIHBvaW50IHNpemVcIik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBkb3VibGUoYSkge1xuICAgICAgICBpZiAoYS5ieXRlTGVuZ3RoID09IHRoaXMuRi5uOCozKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5vcDEoXCJfZG91YmxlXCIsIGEpO1xuICAgICAgICB9IGVsc2UgaWYgKGEuYnl0ZUxlbmd0aCA9PSB0aGlzLkYubjgqMikge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMub3AxKFwiX2RvdWJsZUFmZmluZVwiLCBhKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcImludmFsaWQgcG9pbnQgc2l6ZVwiKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGlzWmVybyhhKSB7XG4gICAgICAgIGlmIChhLmJ5dGVMZW5ndGggPT0gdGhpcy5GLm44KjMpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLm9wMUJvb2woXCJfaXNaZXJvXCIsIGEpO1xuICAgICAgICB9IGVsc2UgaWYgKGEuYnl0ZUxlbmd0aCA9PSB0aGlzLkYubjgqMikge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMub3AxQm9vbChcIl9pc1plcm9BZmZpbmVcIiwgYSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJpbnZhbGlkIHBvaW50IHNpemVcIik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB0aW1lc1NjYWxhcihhLCBzKSB7XG4gICAgICAgIGlmICghKHMgaW5zdGFuY2VvZiBVaW50OEFycmF5KSkge1xuICAgICAgICAgICAgcyA9IHRvTEVCdWZmKGUocykpO1xuICAgICAgICB9XG4gICAgICAgIGxldCBmbk5hbWU7XG4gICAgICAgIGlmIChhLmJ5dGVMZW5ndGggPT0gdGhpcy5GLm44KjMpIHtcbiAgICAgICAgICAgIGZuTmFtZSA9IHRoaXMucHJlZml4ICsgXCJfdGltZXNTY2FsYXJcIjtcbiAgICAgICAgfSBlbHNlIGlmIChhLmJ5dGVMZW5ndGggPT0gdGhpcy5GLm44KjIpIHtcbiAgICAgICAgICAgIGZuTmFtZSA9IHRoaXMucHJlZml4ICsgXCJfdGltZXNTY2FsYXJBZmZpbmVcIjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcImludmFsaWQgcG9pbnQgc2l6ZVwiKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnRtLnNldEJ1ZmYodGhpcy5wT3AxLCBhKTtcbiAgICAgICAgdGhpcy50bS5zZXRCdWZmKHRoaXMucE9wMiwgcyk7XG4gICAgICAgIHRoaXMudG0uaW5zdGFuY2UuZXhwb3J0c1tmbk5hbWVdKHRoaXMucE9wMSwgdGhpcy5wT3AyLCBzLmJ5dGVMZW5ndGgsIHRoaXMucE9wMyk7XG4gICAgICAgIHJldHVybiB0aGlzLnRtLmdldEJ1ZmYodGhpcy5wT3AzLCB0aGlzLkYubjgqMyk7XG4gICAgfVxuXG4gICAgdGltZXNGcihhLCBzKSB7XG4gICAgICAgIGxldCBmbk5hbWU7XG4gICAgICAgIGlmIChhLmJ5dGVMZW5ndGggPT0gdGhpcy5GLm44KjMpIHtcbiAgICAgICAgICAgIGZuTmFtZSA9IHRoaXMucHJlZml4ICsgXCJfdGltZXNGclwiO1xuICAgICAgICB9IGVsc2UgaWYgKGEuYnl0ZUxlbmd0aCA9PSB0aGlzLkYubjgqMikge1xuICAgICAgICAgICAgZm5OYW1lID0gdGhpcy5wcmVmaXggKyBcIl90aW1lc0ZyQWZmaW5lXCI7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJpbnZhbGlkIHBvaW50IHNpemVcIik7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy50bS5zZXRCdWZmKHRoaXMucE9wMSwgYSk7XG4gICAgICAgIHRoaXMudG0uc2V0QnVmZih0aGlzLnBPcDIsIHMpO1xuICAgICAgICB0aGlzLnRtLmluc3RhbmNlLmV4cG9ydHNbZm5OYW1lXSh0aGlzLnBPcDEsIHRoaXMucE9wMiwgdGhpcy5wT3AzKTtcbiAgICAgICAgcmV0dXJuIHRoaXMudG0uZ2V0QnVmZih0aGlzLnBPcDMsIHRoaXMuRi5uOCozKTtcbiAgICB9XG5cbiAgICBlcShhLGIpIHtcbiAgICAgICAgaWYgKGEuYnl0ZUxlbmd0aCA9PSB0aGlzLkYubjgqMykge1xuICAgICAgICAgICAgaWYgKGIuYnl0ZUxlbmd0aCA9PSB0aGlzLkYubjgqMykge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLm9wMmJvb2woXCJfZXFcIiwgYSwgYik7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGIuYnl0ZUxlbmd0aCA9PSB0aGlzLkYubjgqMikge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLm9wMmJvb2woXCJfZXFNaXhlZFwiLCBhLCBiKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiaW52YWxpZCBwb2ludCBzaXplXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKGEuYnl0ZUxlbmd0aCA9PSB0aGlzLkYubjgqMikge1xuICAgICAgICAgICAgaWYgKGIuYnl0ZUxlbmd0aCA9PSB0aGlzLkYubjgqMykge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLm9wMmJvb2woXCJfZXFNaXhlZFwiLCBiLCBhKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoYi5ieXRlTGVuZ3RoID09IHRoaXMuRi5uOCoyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMub3AyYm9vbChcIl9lcUFmZmluZVwiLCBhLCBiKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiaW52YWxpZCBwb2ludCBzaXplXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiaW52YWxpZCBwb2ludCBzaXplXCIpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdG9BZmZpbmUoYSkge1xuICAgICAgICBpZiAoYS5ieXRlTGVuZ3RoID09IHRoaXMuRi5uOCozKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5vcDFBZmZpbmUoXCJfdG9BZmZpbmVcIiwgYSk7XG4gICAgICAgIH0gZWxzZSBpZiAoYS5ieXRlTGVuZ3RoID09IHRoaXMuRi5uOCoyKSB7XG4gICAgICAgICAgICByZXR1cm4gYTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcImludmFsaWQgcG9pbnQgc2l6ZVwiKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHRvSmFjb2JpYW4oYSkge1xuICAgICAgICBpZiAoYS5ieXRlTGVuZ3RoID09IHRoaXMuRi5uOCozKSB7XG4gICAgICAgICAgICByZXR1cm4gYTtcbiAgICAgICAgfSBlbHNlIGlmIChhLmJ5dGVMZW5ndGggPT0gdGhpcy5GLm44KjIpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLm9wMShcIl90b0phY29iaWFuXCIsIGEpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiaW52YWxpZCBwb2ludCBzaXplXCIpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdG9ScHJVbmNvbXByZXNzZWQoYXJyLCBvZmZzZXQsIGEpIHtcbiAgICAgICAgdGhpcy50bS5zZXRCdWZmKHRoaXMucE9wMSwgYSk7XG4gICAgICAgIGlmIChhLmJ5dGVMZW5ndGggPT0gdGhpcy5GLm44KjMpIHtcbiAgICAgICAgICAgIHRoaXMudG0uaW5zdGFuY2UuZXhwb3J0c1t0aGlzLnByZWZpeCArIFwiX3RvQWZmaW5lXCJdKHRoaXMucE9wMSwgdGhpcy5wT3AxKTtcbiAgICAgICAgfSBlbHNlIGlmIChhLmJ5dGVMZW5ndGggIT0gdGhpcy5GLm44KjIpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcImludmFsaWQgcG9pbnQgc2l6ZVwiKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnRtLmluc3RhbmNlLmV4cG9ydHNbdGhpcy5wcmVmaXggKyBcIl9MRU10b1VcIl0odGhpcy5wT3AxLCB0aGlzLnBPcDEpO1xuICAgICAgICBjb25zdCByZXMgPSB0aGlzLnRtLmdldEJ1ZmYodGhpcy5wT3AxLCB0aGlzLkYubjgqMik7XG4gICAgICAgIGFyci5zZXQocmVzLCBvZmZzZXQpO1xuICAgIH1cblxuICAgIGZyb21ScHJVbmNvbXByZXNzZWQoYXJyLCBvZmZzZXQpIHtcbiAgICAgICAgY29uc3QgYnVmZiA9IGFyci5zbGljZShvZmZzZXQsIG9mZnNldCArIHRoaXMuRi5uOCoyKTtcbiAgICAgICAgdGhpcy50bS5zZXRCdWZmKHRoaXMucE9wMSwgYnVmZik7XG4gICAgICAgIHRoaXMudG0uaW5zdGFuY2UuZXhwb3J0c1t0aGlzLnByZWZpeCArIFwiX1V0b0xFTVwiXSh0aGlzLnBPcDEsIHRoaXMucE9wMSk7XG4gICAgICAgIHJldHVybiB0aGlzLnRtLmdldEJ1ZmYodGhpcy5wT3AxLCB0aGlzLkYubjgqMik7XG4gICAgfVxuXG4gICAgdG9ScHJDb21wcmVzc2VkKGFyciwgb2Zmc2V0LCBhKSB7XG4gICAgICAgIHRoaXMudG0uc2V0QnVmZih0aGlzLnBPcDEsIGEpO1xuICAgICAgICBpZiAoYS5ieXRlTGVuZ3RoID09IHRoaXMuRi5uOCozKSB7XG4gICAgICAgICAgICB0aGlzLnRtLmluc3RhbmNlLmV4cG9ydHNbdGhpcy5wcmVmaXggKyBcIl90b0FmZmluZVwiXSh0aGlzLnBPcDEsIHRoaXMucE9wMSk7XG4gICAgICAgIH0gZWxzZSBpZiAoYS5ieXRlTGVuZ3RoICE9IHRoaXMuRi5uOCoyKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJpbnZhbGlkIHBvaW50IHNpemVcIik7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy50bS5pbnN0YW5jZS5leHBvcnRzW3RoaXMucHJlZml4ICsgXCJfTEVNdG9DXCJdKHRoaXMucE9wMSwgdGhpcy5wT3AxKTtcbiAgICAgICAgY29uc3QgcmVzID0gdGhpcy50bS5nZXRCdWZmKHRoaXMucE9wMSwgdGhpcy5GLm44KTtcbiAgICAgICAgYXJyLnNldChyZXMsIG9mZnNldCk7XG4gICAgfVxuXG4gICAgZnJvbVJwckNvbXByZXNzZWQoYXJyLCBvZmZzZXQpIHtcbiAgICAgICAgY29uc3QgYnVmZiA9IGFyci5zbGljZShvZmZzZXQsIG9mZnNldCArIHRoaXMuRi5uOCk7XG4gICAgICAgIHRoaXMudG0uc2V0QnVmZih0aGlzLnBPcDEsIGJ1ZmYpO1xuICAgICAgICB0aGlzLnRtLmluc3RhbmNlLmV4cG9ydHNbdGhpcy5wcmVmaXggKyBcIl9DdG9MRU1cIl0odGhpcy5wT3AxLCB0aGlzLnBPcDIpO1xuICAgICAgICByZXR1cm4gdGhpcy50bS5nZXRCdWZmKHRoaXMucE9wMiwgdGhpcy5GLm44KjIpO1xuICAgIH1cblxuICAgIHRvVW5jb21wcmVzc2VkKGEpIHtcbiAgICAgICAgY29uc3QgYnVmZiA9IG5ldyBVaW50OEFycmF5KHRoaXMuRi5uOCoyKTtcbiAgICAgICAgdGhpcy50b1JwclVuY29tcHJlc3NlZChidWZmLCAwLCBhKTtcbiAgICAgICAgcmV0dXJuIGJ1ZmY7XG4gICAgfVxuXG4gICAgdG9ScHJMRU0oYXJyLCBvZmZzZXQsIGEpIHtcbiAgICAgICAgaWYgKGEuYnl0ZUxlbmd0aCA9PSB0aGlzLkYubjgqMikge1xuICAgICAgICAgICAgYXJyLnNldChhLCBvZmZzZXQpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9IGVsc2UgaWYgKGEuYnl0ZUxlbmd0aCA9PSB0aGlzLkYubjgqMykge1xuICAgICAgICAgICAgdGhpcy50bS5zZXRCdWZmKHRoaXMucE9wMSwgYSk7XG4gICAgICAgICAgICB0aGlzLnRtLmluc3RhbmNlLmV4cG9ydHNbdGhpcy5wcmVmaXggKyBcIl90b0FmZmluZVwiXSh0aGlzLnBPcDEsIHRoaXMucE9wMSk7XG4gICAgICAgICAgICBjb25zdCByZXMgPSB0aGlzLnRtLmdldEJ1ZmYodGhpcy5wT3AxLCB0aGlzLkYubjgqMik7XG4gICAgICAgICAgICBhcnIuc2V0KHJlcywgb2Zmc2V0KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcImludmFsaWQgcG9pbnQgc2l6ZVwiKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZyb21ScHJMRU0oYXJyLCBvZmZzZXQpIHtcbiAgICAgICAgb2Zmc2V0ID0gb2Zmc2V0IHx8IDA7XG4gICAgICAgIHJldHVybiBhcnIuc2xpY2Uob2Zmc2V0LCBvZmZzZXQrdGhpcy5GLm44KjIpO1xuICAgIH1cblxuICAgIHRvU3RyaW5nKGEsIHJhZGl4KSB7XG4gICAgICAgIGlmIChhLmJ5dGVMZW5ndGggPT0gdGhpcy5GLm44KjMpIHtcbiAgICAgICAgICAgIGNvbnN0IHggPSB0aGlzLkYudG9TdHJpbmcoYS5zbGljZSgwLCB0aGlzLkYubjgpLCByYWRpeCk7XG4gICAgICAgICAgICBjb25zdCB5ID0gdGhpcy5GLnRvU3RyaW5nKGEuc2xpY2UodGhpcy5GLm44LCB0aGlzLkYubjgqMiksIHJhZGl4KTtcbiAgICAgICAgICAgIGNvbnN0IHogPSB0aGlzLkYudG9TdHJpbmcoYS5zbGljZSh0aGlzLkYubjgqMiksIHJhZGl4KTtcbiAgICAgICAgICAgIHJldHVybiBgWyAke3h9LCAke3l9LCAke3p9IF1gO1xuICAgICAgICB9IGVsc2UgaWYgKGEuYnl0ZUxlbmd0aCA9PSB0aGlzLkYubjgqMikge1xuICAgICAgICAgICAgY29uc3QgeCA9IHRoaXMuRi50b1N0cmluZyhhLnNsaWNlKDAsIHRoaXMuRi5uOCksIHJhZGl4KTtcbiAgICAgICAgICAgIGNvbnN0IHkgPSB0aGlzLkYudG9TdHJpbmcoYS5zbGljZSh0aGlzLkYubjgpLCByYWRpeCk7XG4gICAgICAgICAgICByZXR1cm4gYFsgJHt4fSwgJHt5fSBdYDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcImludmFsaWQgcG9pbnQgc2l6ZVwiKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGlzVmFsaWQoYSkge1xuICAgICAgICBpZiAodGhpcy5pc1plcm8oYSkpIHJldHVybiB0cnVlO1xuICAgICAgICBjb25zdCBGID0gdGhpcy5GO1xuICAgICAgICBjb25zdCBhYSA9IHRoaXMudG9BZmZpbmUoYSk7XG4gICAgICAgIGNvbnN0IHggPSBhYS5zbGljZSgwLCB0aGlzLkYubjgpO1xuICAgICAgICBjb25zdCB5ID0gYWEuc2xpY2UodGhpcy5GLm44LCB0aGlzLkYubjgqMik7XG4gICAgICAgIGNvbnN0IHgzYiA9IEYuYWRkKEYubXVsKEYuc3F1YXJlKHgpLHgpLCB0aGlzLmIpO1xuICAgICAgICBjb25zdCB5MiA9IEYuc3F1YXJlKHkpO1xuICAgICAgICByZXR1cm4gRi5lcSh4M2IsIHkyKTtcbiAgICB9XG5cbiAgICBmcm9tUm5nKHJuZykge1xuICAgICAgICBjb25zdCBGID0gdGhpcy5GO1xuICAgICAgICBsZXQgUCA9IFtdO1xuICAgICAgICBsZXQgZ3JlYXRlc3Q7XG4gICAgICAgIGxldCB4M2I7XG4gICAgICAgIGRvIHtcbiAgICAgICAgICAgIFBbMF0gPSBGLmZyb21Sbmcocm5nKTtcbiAgICAgICAgICAgIGdyZWF0ZXN0ID0gcm5nLm5leHRCb29sKCk7XG4gICAgICAgICAgICB4M2IgPSBGLmFkZChGLm11bChGLnNxdWFyZShQWzBdKSwgUFswXSksIHRoaXMuYik7XG4gICAgICAgIH0gd2hpbGUgKCFGLmlzU3F1YXJlKHgzYikpO1xuXG4gICAgICAgIFBbMV0gPSBGLnNxcnQoeDNiKTtcblxuICAgICAgICBjb25zdCBzID0gRi5pc05lZ2F0aXZlKFBbMV0pO1xuICAgICAgICBpZiAoZ3JlYXRlc3QgXiBzKSBQWzFdID0gRi5uZWcoUFsxXSk7XG5cbiAgICAgICAgbGV0IFBidWZmID0gbmV3IFVpbnQ4QXJyYXkodGhpcy5GLm44KjIpO1xuICAgICAgICBQYnVmZi5zZXQoUFswXSk7XG4gICAgICAgIFBidWZmLnNldChQWzFdLCB0aGlzLkYubjgpO1xuXG4gICAgICAgIGlmICh0aGlzLmNvZmFjdG9yKSB7XG4gICAgICAgICAgICBQYnVmZiA9IHRoaXMudGltZXNTY2FsYXIoUGJ1ZmYsIHRoaXMuY29mYWN0b3IpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIFBidWZmO1xuICAgIH1cblxuXG5cbiAgICB0b09iamVjdChhKSB7XG4gICAgICAgIGlmICh0aGlzLmlzWmVybyhhKSkge1xuICAgICAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgICAgICB0aGlzLkYudG9PYmplY3QodGhpcy5GLnplcm8pLFxuICAgICAgICAgICAgICAgIHRoaXMuRi50b09iamVjdCh0aGlzLkYub25lKSxcbiAgICAgICAgICAgICAgICB0aGlzLkYudG9PYmplY3QodGhpcy5GLnplcm8pLFxuICAgICAgICAgICAgXTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB4ID0gdGhpcy5GLnRvT2JqZWN0KGEuc2xpY2UoMCwgdGhpcy5GLm44KSk7XG4gICAgICAgIGNvbnN0IHkgPSB0aGlzLkYudG9PYmplY3QoYS5zbGljZSh0aGlzLkYubjgsIHRoaXMuRi5uOCoyKSk7XG4gICAgICAgIGxldCB6O1xuICAgICAgICBpZiAoYS5ieXRlTGVuZ3RoID09IHRoaXMuRi5uOCozKSB7XG4gICAgICAgICAgICB6ID0gdGhpcy5GLnRvT2JqZWN0KGEuc2xpY2UodGhpcy5GLm44KjIsIHRoaXMuRi5uOCozKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB6ID0gdGhpcy5GLnRvT2JqZWN0KHRoaXMuRi5vbmUpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBbeCwgeSwgel07XG4gICAgfVxuXG4gICAgZnJvbU9iamVjdChhKSB7XG4gICAgICAgIGNvbnN0IHggPSB0aGlzLkYuZnJvbU9iamVjdChhWzBdKTtcbiAgICAgICAgY29uc3QgeSA9IHRoaXMuRi5mcm9tT2JqZWN0KGFbMV0pO1xuICAgICAgICBsZXQgejtcbiAgICAgICAgaWYgKGEubGVuZ3RoPT0zKSB7XG4gICAgICAgICAgICB6ID0gdGhpcy5GLmZyb21PYmplY3QoYVsyXSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB6ID0gdGhpcy5GLm9uZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5GLmlzWmVybyh6LCB0aGlzLkYub25lKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuemVyb0FmZmluZTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLkYuZXEoeiwgdGhpcy5GLm9uZSkpIHtcbiAgICAgICAgICAgIGNvbnN0IGJ1ZmYgPSBuZXcgVWludDhBcnJheSh0aGlzLkYubjgqMik7XG4gICAgICAgICAgICBidWZmLnNldCh4KTtcbiAgICAgICAgICAgIGJ1ZmYuc2V0KHksIHRoaXMuRi5uOCk7XG4gICAgICAgICAgICByZXR1cm4gYnVmZjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IGJ1ZmYgPSBuZXcgVWludDhBcnJheSh0aGlzLkYubjgqMyk7XG4gICAgICAgICAgICBidWZmLnNldCh4KTtcbiAgICAgICAgICAgIGJ1ZmYuc2V0KHksIHRoaXMuRi5uOCk7XG4gICAgICAgICAgICBidWZmLnNldCh6LCB0aGlzLkYubjgqMik7XG4gICAgICAgICAgICByZXR1cm4gYnVmZjtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGUoYSkge1xuICAgICAgICBpZiAoYSBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpIHJldHVybiBhO1xuICAgICAgICByZXR1cm4gdGhpcy5mcm9tT2JqZWN0KGEpO1xuICAgIH1cblxuICAgIHgoYSkge1xuICAgICAgICBjb25zdCB0bXAgPSB0aGlzLnRvQWZmaW5lKGEpO1xuICAgICAgICByZXR1cm4gdG1wLnNsaWNlKDAsIHRoaXMuRi5uOCk7XG4gICAgfVxuXG4gICAgeShhKSB7XG4gICAgICAgIGNvbnN0IHRtcCA9IHRoaXMudG9BZmZpbmUoYSk7XG4gICAgICAgIHJldHVybiB0bXAuc2xpY2UodGhpcy5GLm44KTtcbiAgICB9XG5cbn1cblxuLyogZ2xvYmFsIFdlYkFzc2VtYmx5ICovXG5cbmZ1bmN0aW9uIHRocmVhZChzZWxmKSB7XG4gICAgY29uc3QgTUFYTUVNID0gMzI3Njc7XG4gICAgbGV0IGluc3RhbmNlO1xuICAgIGxldCBtZW1vcnk7XG5cbiAgICBpZiAoc2VsZikge1xuICAgICAgICBzZWxmLm9ubWVzc2FnZSA9IGZ1bmN0aW9uKGUpIHtcbiAgICAgICAgICAgIGxldCBkYXRhO1xuICAgICAgICAgICAgaWYgKGUuZGF0YSkge1xuICAgICAgICAgICAgICAgIGRhdGEgPSBlLmRhdGE7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGRhdGEgPSBlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoZGF0YVswXS5jbWQgPT0gXCJJTklUXCIpIHtcbiAgICAgICAgICAgICAgICBpbml0KGRhdGFbMF0pLnRoZW4oZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgIHNlbGYucG9zdE1lc3NhZ2UoZGF0YS5yZXN1bHQpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChkYXRhWzBdLmNtZCA9PSBcIlRFUk1JTkFURVwiKSB7XG4gICAgICAgICAgICAgICAgc2VsZi5jbG9zZSgpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zdCByZXMgPSBydW5UYXNrKGRhdGEpO1xuICAgICAgICAgICAgICAgIHNlbGYucG9zdE1lc3NhZ2UocmVzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBhc3luYyBmdW5jdGlvbiBpbml0KGRhdGEpIHtcbiAgICAgICAgY29uc3QgY29kZSA9IG5ldyBVaW50OEFycmF5KGRhdGEuY29kZSk7XG4gICAgICAgIGNvbnN0IHdhc21Nb2R1bGUgPSBhd2FpdCBXZWJBc3NlbWJseS5jb21waWxlKGNvZGUpO1xuICAgICAgICBtZW1vcnkgPSBuZXcgV2ViQXNzZW1ibHkuTWVtb3J5KHtpbml0aWFsOmRhdGEuaW5pdCwgbWF4aW11bTogTUFYTUVNfSk7XG5cbiAgICAgICAgaW5zdGFuY2UgPSBhd2FpdCBXZWJBc3NlbWJseS5pbnN0YW50aWF0ZSh3YXNtTW9kdWxlLCB7XG4gICAgICAgICAgICBlbnY6IHtcbiAgICAgICAgICAgICAgICBcIm1lbW9yeVwiOiBtZW1vcnlcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG5cblxuICAgIGZ1bmN0aW9uIGFsbG9jKGxlbmd0aCkge1xuICAgICAgICBjb25zdCB1MzIgPSBuZXcgVWludDMyQXJyYXkobWVtb3J5LmJ1ZmZlciwgMCwgMSk7XG4gICAgICAgIHdoaWxlICh1MzJbMF0gJiAzKSB1MzJbMF0rKzsgIC8vIFJldHVybiBhbHdheXMgYWxpZ25lZCBwb2ludGVyc1xuICAgICAgICBjb25zdCByZXMgPSB1MzJbMF07XG4gICAgICAgIHUzMlswXSArPSBsZW5ndGg7XG4gICAgICAgIGlmICh1MzJbMF0gKyBsZW5ndGggPiBtZW1vcnkuYnVmZmVyLmJ5dGVMZW5ndGgpIHtcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRQYWdlcyA9IG1lbW9yeS5idWZmZXIuYnl0ZUxlbmd0aCAvIDB4MTAwMDA7XG4gICAgICAgICAgICBsZXQgcmVxdWlyZWRQYWdlcyA9IE1hdGguZmxvb3IoKHUzMlswXSArIGxlbmd0aCkgLyAweDEwMDAwKSsxO1xuICAgICAgICAgICAgaWYgKHJlcXVpcmVkUGFnZXM+TUFYTUVNKSByZXF1aXJlZFBhZ2VzPU1BWE1FTTtcbiAgICAgICAgICAgIG1lbW9yeS5ncm93KHJlcXVpcmVkUGFnZXMtY3VycmVudFBhZ2VzKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGFsbG9jQnVmZmVyKGJ1ZmZlcikge1xuICAgICAgICBjb25zdCBwID0gYWxsb2MoYnVmZmVyLmJ5dGVMZW5ndGgpO1xuICAgICAgICBzZXRCdWZmZXIocCwgYnVmZmVyKTtcbiAgICAgICAgcmV0dXJuIHA7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ2V0QnVmZmVyKHBvaW50ZXIsIGxlbmd0aCkge1xuICAgICAgICBjb25zdCB1OCA9IG5ldyBVaW50OEFycmF5KG1lbW9yeS5idWZmZXIpO1xuICAgICAgICByZXR1cm4gbmV3IFVpbnQ4QXJyYXkodTguYnVmZmVyLCB1OC5ieXRlT2Zmc2V0ICsgcG9pbnRlciwgbGVuZ3RoKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBzZXRCdWZmZXIocG9pbnRlciwgYnVmZmVyKSB7XG4gICAgICAgIGNvbnN0IHU4ID0gbmV3IFVpbnQ4QXJyYXkobWVtb3J5LmJ1ZmZlcik7XG4gICAgICAgIHU4LnNldChuZXcgVWludDhBcnJheShidWZmZXIpLCBwb2ludGVyKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBydW5UYXNrKHRhc2spIHtcbiAgICAgICAgaWYgKHRhc2tbMF0uY21kID09IFwiSU5JVFwiKSB7XG4gICAgICAgICAgICByZXR1cm4gaW5pdCh0YXNrWzBdKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBjdHggPSB7XG4gICAgICAgICAgICB2YXJzOiBbXSxcbiAgICAgICAgICAgIG91dDogW11cbiAgICAgICAgfTtcbiAgICAgICAgY29uc3QgdTMyYSA9IG5ldyBVaW50MzJBcnJheShtZW1vcnkuYnVmZmVyLCAwLCAxKTtcbiAgICAgICAgY29uc3Qgb2xkQWxsb2MgPSB1MzJhWzBdO1xuICAgICAgICBmb3IgKGxldCBpPTA7IGk8dGFzay5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgc3dpdGNoICh0YXNrW2ldLmNtZCkge1xuICAgICAgICAgICAgY2FzZSBcIkFMTE9DU0VUXCI6XG4gICAgICAgICAgICAgICAgY3R4LnZhcnNbdGFza1tpXS52YXJdID0gYWxsb2NCdWZmZXIodGFza1tpXS5idWZmKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgXCJBTExPQ1wiOlxuICAgICAgICAgICAgICAgIGN0eC52YXJzW3Rhc2tbaV0udmFyXSA9IGFsbG9jKHRhc2tbaV0ubGVuKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgXCJTRVRcIjpcbiAgICAgICAgICAgICAgICBzZXRCdWZmZXIoY3R4LnZhcnNbdGFza1tpXS52YXJdLCB0YXNrW2ldLmJ1ZmYpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBcIkNBTExcIjoge1xuICAgICAgICAgICAgICAgIGNvbnN0IHBhcmFtcyA9IFtdO1xuICAgICAgICAgICAgICAgIGZvciAobGV0IGo9MDsgajx0YXNrW2ldLnBhcmFtcy5sZW5ndGg7IGorKykge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBwID0gdGFza1tpXS5wYXJhbXNbal07XG4gICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgcC52YXIgIT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtcy5wdXNoKGN0eC52YXJzW3AudmFyXSArIChwLm9mZnNldCB8fCAwKSk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHAudmFsICE9IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtcy5wdXNoKHAudmFsKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpbnN0YW5jZS5leHBvcnRzW3Rhc2tbaV0uZm5OYW1lXSguLi5wYXJhbXMpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBcIkdFVFwiOlxuICAgICAgICAgICAgICAgIGN0eC5vdXRbdGFza1tpXS5vdXRdID0gZ2V0QnVmZmVyKGN0eC52YXJzW3Rhc2tbaV0udmFyXSwgdGFza1tpXS5sZW4pLnNsaWNlKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgY21kXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHUzMmIgPSBuZXcgVWludDMyQXJyYXkobWVtb3J5LmJ1ZmZlciwgMCwgMSk7XG4gICAgICAgIHUzMmJbMF0gPSBvbGRBbGxvYztcbiAgICAgICAgcmV0dXJuIGN0eC5vdXQ7XG4gICAgfVxuXG5cbiAgICByZXR1cm4gcnVuVGFzaztcbn1cblxuLypcbiAgICBDb3B5cmlnaHQgMjAxOSAwS0lNUyBhc3NvY2lhdGlvbi5cblxuICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHdhc21zbmFyayAoV2ViIEFzc2VtYmx5IHprU25hcmsgUHJvdmVyKS5cblxuICAgIHdhc21zbmFyayBpcyBhIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXRcbiAgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yXG4gICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cblxuICAgIHdhc21zbmFyayBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVFxuICAgIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWVxuICAgIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpY1xuICAgIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cblxuICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gICAgYWxvbmcgd2l0aCB3YXNtc25hcmsuIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXG4qL1xuXG4vLyBjb25zdCBNRU1fU0laRSA9IDEwMDA7ICAvLyBNZW1vcnkgc2l6ZSBpbiA2NEsgUGFrZXMgKDUxMk1iKVxuY29uc3QgTUVNX1NJWkUgPSAyNTsgIC8vIE1lbW9yeSBzaXplIGluIDY0SyBQYWtlcyAoMTYwMEtiKVxuXG5jbGFzcyBEZWZlcnJlZCB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHRoaXMucHJvbWlzZSA9IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpPT4ge1xuICAgICAgICAgICAgdGhpcy5yZWplY3QgPSByZWplY3Q7XG4gICAgICAgICAgICB0aGlzLnJlc29sdmUgPSByZXNvbHZlO1xuICAgICAgICB9KTtcbiAgICB9XG59XG5cbmZ1bmN0aW9uIHNsZWVwKG1zKSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4gc2V0VGltZW91dChyZXNvbHZlLCBtcykpO1xufVxuXG5sZXQgd29ya2VyU291cmNlO1xuXG5jb25zdCB0aHJlYWRTdHIgPSBgKCR7XCJmdW5jdGlvbiB0aHJlYWQoc2VsZikge1xcbiAgICBjb25zdCBNQVhNRU0gPSAzMjc2NztcXG4gICAgbGV0IGluc3RhbmNlO1xcbiAgICBsZXQgbWVtb3J5O1xcblxcbiAgICBpZiAoc2VsZikge1xcbiAgICAgICAgc2VsZi5vbm1lc3NhZ2UgPSBmdW5jdGlvbihlKSB7XFxuICAgICAgICAgICAgbGV0IGRhdGE7XFxuICAgICAgICAgICAgaWYgKGUuZGF0YSkge1xcbiAgICAgICAgICAgICAgICBkYXRhID0gZS5kYXRhO1xcbiAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgIGRhdGEgPSBlO1xcbiAgICAgICAgICAgIH1cXG5cXG4gICAgICAgICAgICBpZiAoZGF0YVswXS5jbWQgPT0gXFxcIklOSVRcXFwiKSB7XFxuICAgICAgICAgICAgICAgIGluaXQoZGF0YVswXSkudGhlbihmdW5jdGlvbigpIHtcXG4gICAgICAgICAgICAgICAgICAgIHNlbGYucG9zdE1lc3NhZ2UoZGF0YS5yZXN1bHQpO1xcbiAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGRhdGFbMF0uY21kID09IFxcXCJURVJNSU5BVEVcXFwiKSB7XFxuICAgICAgICAgICAgICAgIHNlbGYuY2xvc2UoKTtcXG4gICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICBjb25zdCByZXMgPSBydW5UYXNrKGRhdGEpO1xcbiAgICAgICAgICAgICAgICBzZWxmLnBvc3RNZXNzYWdlKHJlcyk7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfTtcXG4gICAgfVxcblxcbiAgICBhc3luYyBmdW5jdGlvbiBpbml0KGRhdGEpIHtcXG4gICAgICAgIGNvbnN0IGNvZGUgPSBuZXcgVWludDhBcnJheShkYXRhLmNvZGUpO1xcbiAgICAgICAgY29uc3Qgd2FzbU1vZHVsZSA9IGF3YWl0IFdlYkFzc2VtYmx5LmNvbXBpbGUoY29kZSk7XFxuICAgICAgICBtZW1vcnkgPSBuZXcgV2ViQXNzZW1ibHkuTWVtb3J5KHtpbml0aWFsOmRhdGEuaW5pdCwgbWF4aW11bTogTUFYTUVNfSk7XFxuXFxuICAgICAgICBpbnN0YW5jZSA9IGF3YWl0IFdlYkFzc2VtYmx5Lmluc3RhbnRpYXRlKHdhc21Nb2R1bGUsIHtcXG4gICAgICAgICAgICBlbnY6IHtcXG4gICAgICAgICAgICAgICAgXFxcIm1lbW9yeVxcXCI6IG1lbW9yeVxcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH0pO1xcbiAgICB9XFxuXFxuXFxuXFxuICAgIGZ1bmN0aW9uIGFsbG9jKGxlbmd0aCkge1xcbiAgICAgICAgY29uc3QgdTMyID0gbmV3IFVpbnQzMkFycmF5KG1lbW9yeS5idWZmZXIsIDAsIDEpO1xcbiAgICAgICAgd2hpbGUgKHUzMlswXSAmIDMpIHUzMlswXSsrOyAgLy8gUmV0dXJuIGFsd2F5cyBhbGlnbmVkIHBvaW50ZXJzXFxuICAgICAgICBjb25zdCByZXMgPSB1MzJbMF07XFxuICAgICAgICB1MzJbMF0gKz0gbGVuZ3RoO1xcbiAgICAgICAgaWYgKHUzMlswXSArIGxlbmd0aCA+IG1lbW9yeS5idWZmZXIuYnl0ZUxlbmd0aCkge1xcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRQYWdlcyA9IG1lbW9yeS5idWZmZXIuYnl0ZUxlbmd0aCAvIDB4MTAwMDA7XFxuICAgICAgICAgICAgbGV0IHJlcXVpcmVkUGFnZXMgPSBNYXRoLmZsb29yKCh1MzJbMF0gKyBsZW5ndGgpIC8gMHgxMDAwMCkrMTtcXG4gICAgICAgICAgICBpZiAocmVxdWlyZWRQYWdlcz5NQVhNRU0pIHJlcXVpcmVkUGFnZXM9TUFYTUVNO1xcbiAgICAgICAgICAgIG1lbW9yeS5ncm93KHJlcXVpcmVkUGFnZXMtY3VycmVudFBhZ2VzKTtcXG4gICAgICAgIH1cXG4gICAgICAgIHJldHVybiByZXM7XFxuICAgIH1cXG5cXG4gICAgZnVuY3Rpb24gYWxsb2NCdWZmZXIoYnVmZmVyKSB7XFxuICAgICAgICBjb25zdCBwID0gYWxsb2MoYnVmZmVyLmJ5dGVMZW5ndGgpO1xcbiAgICAgICAgc2V0QnVmZmVyKHAsIGJ1ZmZlcik7XFxuICAgICAgICByZXR1cm4gcDtcXG4gICAgfVxcblxcbiAgICBmdW5jdGlvbiBnZXRCdWZmZXIocG9pbnRlciwgbGVuZ3RoKSB7XFxuICAgICAgICBjb25zdCB1OCA9IG5ldyBVaW50OEFycmF5KG1lbW9yeS5idWZmZXIpO1xcbiAgICAgICAgcmV0dXJuIG5ldyBVaW50OEFycmF5KHU4LmJ1ZmZlciwgdTguYnl0ZU9mZnNldCArIHBvaW50ZXIsIGxlbmd0aCk7XFxuICAgIH1cXG5cXG4gICAgZnVuY3Rpb24gc2V0QnVmZmVyKHBvaW50ZXIsIGJ1ZmZlcikge1xcbiAgICAgICAgY29uc3QgdTggPSBuZXcgVWludDhBcnJheShtZW1vcnkuYnVmZmVyKTtcXG4gICAgICAgIHU4LnNldChuZXcgVWludDhBcnJheShidWZmZXIpLCBwb2ludGVyKTtcXG4gICAgfVxcblxcbiAgICBmdW5jdGlvbiBydW5UYXNrKHRhc2spIHtcXG4gICAgICAgIGlmICh0YXNrWzBdLmNtZCA9PSBcXFwiSU5JVFxcXCIpIHtcXG4gICAgICAgICAgICByZXR1cm4gaW5pdCh0YXNrWzBdKTtcXG4gICAgICAgIH1cXG4gICAgICAgIGNvbnN0IGN0eCA9IHtcXG4gICAgICAgICAgICB2YXJzOiBbXSxcXG4gICAgICAgICAgICBvdXQ6IFtdXFxuICAgICAgICB9O1xcbiAgICAgICAgY29uc3QgdTMyYSA9IG5ldyBVaW50MzJBcnJheShtZW1vcnkuYnVmZmVyLCAwLCAxKTtcXG4gICAgICAgIGNvbnN0IG9sZEFsbG9jID0gdTMyYVswXTtcXG4gICAgICAgIGZvciAobGV0IGk9MDsgaTx0YXNrLmxlbmd0aDsgaSsrKSB7XFxuICAgICAgICAgICAgc3dpdGNoICh0YXNrW2ldLmNtZCkge1xcbiAgICAgICAgICAgIGNhc2UgXFxcIkFMTE9DU0VUXFxcIjpcXG4gICAgICAgICAgICAgICAgY3R4LnZhcnNbdGFza1tpXS52YXJdID0gYWxsb2NCdWZmZXIodGFza1tpXS5idWZmKTtcXG4gICAgICAgICAgICAgICAgYnJlYWs7XFxuICAgICAgICAgICAgY2FzZSBcXFwiQUxMT0NcXFwiOlxcbiAgICAgICAgICAgICAgICBjdHgudmFyc1t0YXNrW2ldLnZhcl0gPSBhbGxvYyh0YXNrW2ldLmxlbik7XFxuICAgICAgICAgICAgICAgIGJyZWFrO1xcbiAgICAgICAgICAgIGNhc2UgXFxcIlNFVFxcXCI6XFxuICAgICAgICAgICAgICAgIHNldEJ1ZmZlcihjdHgudmFyc1t0YXNrW2ldLnZhcl0sIHRhc2tbaV0uYnVmZik7XFxuICAgICAgICAgICAgICAgIGJyZWFrO1xcbiAgICAgICAgICAgIGNhc2UgXFxcIkNBTExcXFwiOiB7XFxuICAgICAgICAgICAgICAgIGNvbnN0IHBhcmFtcyA9IFtdO1xcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBqPTA7IGo8dGFza1tpXS5wYXJhbXMubGVuZ3RoOyBqKyspIHtcXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHAgPSB0YXNrW2ldLnBhcmFtc1tqXTtcXG4gICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgcC52YXIgIT09IFxcXCJ1bmRlZmluZWRcXFwiKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zLnB1c2goY3R4LnZhcnNbcC52YXJdICsgKHAub2Zmc2V0IHx8IDApKTtcXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHAudmFsICE9IFxcXCJ1bmRlZmluZWRcXFwiKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zLnB1c2gocC52YWwpO1xcbiAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgIGluc3RhbmNlLmV4cG9ydHNbdGFza1tpXS5mbk5hbWVdKC4uLnBhcmFtcyk7XFxuICAgICAgICAgICAgICAgIGJyZWFrO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgICBjYXNlIFxcXCJHRVRcXFwiOlxcbiAgICAgICAgICAgICAgICBjdHgub3V0W3Rhc2tbaV0ub3V0XSA9IGdldEJ1ZmZlcihjdHgudmFyc1t0YXNrW2ldLnZhcl0sIHRhc2tbaV0ubGVuKS5zbGljZSgpO1xcbiAgICAgICAgICAgICAgICBicmVhaztcXG4gICAgICAgICAgICBkZWZhdWx0OlxcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXFxcIkludmFsaWQgY21kXFxcIik7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfVxcbiAgICAgICAgY29uc3QgdTMyYiA9IG5ldyBVaW50MzJBcnJheShtZW1vcnkuYnVmZmVyLCAwLCAxKTtcXG4gICAgICAgIHUzMmJbMF0gPSBvbGRBbGxvYztcXG4gICAgICAgIHJldHVybiBjdHgub3V0O1xcbiAgICB9XFxuXFxuXFxuICAgIHJldHVybiBydW5UYXNrO1xcbn1cIn0pKHNlbGYpYDtcbntcbiAgICBpZihnbG9iYWxUaGlzPy5CbG9iKSB7XG4gICAgICAgIGNvbnN0IHRocmVhZEJ5dGVzPSBuZXcgVGV4dEVuY29kZXIoKS5lbmNvZGUodGhyZWFkU3RyKTtcbiAgICAgICAgY29uc3Qgd29ya2VyQmxvYiA9IG5ldyBCbG9iKFt0aHJlYWRCeXRlc10sIHsgdHlwZTogXCJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0XCIgfSkgO1xuICAgICAgICB3b3JrZXJTb3VyY2UgPSBVUkwuY3JlYXRlT2JqZWN0VVJMKHdvcmtlckJsb2IpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHdvcmtlclNvdXJjZSA9IFwiZGF0YTphcHBsaWNhdGlvbi9qYXZhc2NyaXB0O2Jhc2U2NCxcIiArIGdsb2JhbFRoaXMuYnRvYSh0aHJlYWRTdHIpO1xuICAgIH1cbn1cblxuXG5cbmFzeW5jIGZ1bmN0aW9uIGJ1aWxkVGhyZWFkTWFuYWdlcih3YXNtLCBzaW5nbGVUaHJlYWQpIHtcbiAgICBjb25zdCB0bSA9IG5ldyBUaHJlYWRNYW5hZ2VyKCk7XG5cbiAgICB0bS5tZW1vcnkgPSBuZXcgV2ViQXNzZW1ibHkuTWVtb3J5KHtpbml0aWFsOk1FTV9TSVpFfSk7XG4gICAgdG0udTggPSBuZXcgVWludDhBcnJheSh0bS5tZW1vcnkuYnVmZmVyKTtcbiAgICB0bS51MzIgPSBuZXcgVWludDMyQXJyYXkodG0ubWVtb3J5LmJ1ZmZlcik7XG5cbiAgICBjb25zdCB3YXNtTW9kdWxlID0gYXdhaXQgV2ViQXNzZW1ibHkuY29tcGlsZSh3YXNtLmNvZGUpO1xuXG4gICAgdG0uaW5zdGFuY2UgPSBhd2FpdCBXZWJBc3NlbWJseS5pbnN0YW50aWF0ZSh3YXNtTW9kdWxlLCB7XG4gICAgICAgIGVudjoge1xuICAgICAgICAgICAgXCJtZW1vcnlcIjogdG0ubWVtb3J5XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICBcbiAgICBpZighZ2xvYmFsVGhpcz8uV29ya2VyKSB7XG4gICAgICAgIHNpbmdsZVRocmVhZCA9IHRydWU7XG4gICAgfVxuICAgIFxuICAgIHRtLnNpbmdsZVRocmVhZCA9IHNpbmdsZVRocmVhZDtcbiAgICB0bS5pbml0YWxQRnJlZSA9IHRtLnUzMlswXTsgICAvLyBTYXZlIHRoZSBQb2ludGVyIHRvIGZyZWUgc3BhY2UuXG4gICAgdG0ucHEgPSB3YXNtLnBxO1xuICAgIHRtLnByID0gd2FzbS5wcjtcbiAgICB0bS5wRzFnZW4gPSB3YXNtLnBHMWdlbjtcbiAgICB0bS5wRzF6ZXJvID0gd2FzbS5wRzF6ZXJvO1xuICAgIHRtLnBHMmdlbiA9IHdhc20ucEcyZ2VuO1xuICAgIHRtLnBHMnplcm8gPSB3YXNtLnBHMnplcm87XG4gICAgdG0ucE9uZVQgPSB3YXNtLnBPbmVUO1xuXG4gICAgLy8gICAgdG0ucFRtcDAgPSB0bS5hbGxvYyhjdXJ2ZS5HMi5GLm44KjMpO1xuICAgIC8vICAgIHRtLnBUbXAxID0gdG0uYWxsb2MoY3VydmUuRzIuRi5uOCozKTtcblxuICAgIGlmIChzaW5nbGVUaHJlYWQpIHtcbiAgICAgICAgdG0uY29kZSA9IHdhc20uY29kZTtcbiAgICAgICAgdG0udGFza01hbmFnZXIgPSB0aHJlYWQoKTtcbiAgICAgICAgYXdhaXQgdG0udGFza01hbmFnZXIoW3tcbiAgICAgICAgICAgIGNtZDogXCJJTklUXCIsXG4gICAgICAgICAgICBpbml0OiBNRU1fU0laRSxcbiAgICAgICAgICAgIGNvZGU6IHRtLmNvZGUuc2xpY2UoKVxuICAgICAgICB9XSk7XG4gICAgICAgIHRtLmNvbmN1cnJlbmN5ICA9IDE7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgdG0ud29ya2VycyA9IFtdO1xuICAgICAgICB0bS5wZW5kaW5nRGVmZXJyZWRzID0gW107XG4gICAgICAgIHRtLndvcmtpbmcgPSBbXTtcblxuICAgICAgICBsZXQgY29uY3VycmVuY3kgPSAyO1xuICAgICAgICB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIG5hdmlnYXRvciA9PT0gXCJvYmplY3RcIiAmJiBuYXZpZ2F0b3IuaGFyZHdhcmVDb25jdXJyZW5jeSkge1xuICAgICAgICAgICAgICAgIGNvbmN1cnJlbmN5ID0gbmF2aWdhdG9yLmhhcmR3YXJlQ29uY3VycmVuY3k7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZihjb25jdXJyZW5jeSA9PSAwKXtcbiAgICAgICAgICAgIGNvbmN1cnJlbmN5ID0gMjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIExpbWl0IHRvIDY0IHRocmVhZHMgZm9yIG1lbW9yeSByZWFzb25zLlxuICAgICAgICBpZiAoY29uY3VycmVuY3k+NjQpIGNvbmN1cnJlbmN5PTY0O1xuICAgICAgICB0bS5jb25jdXJyZW5jeSA9IGNvbmN1cnJlbmN5O1xuXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpPGNvbmN1cnJlbmN5OyBpKyspIHtcblxuICAgICAgICAgICAgdG0ud29ya2Vyc1tpXSA9IG5ldyBXb3JrZXIod29ya2VyU291cmNlKTtcblxuICAgICAgICAgICAgdG0ud29ya2Vyc1tpXS5hZGRFdmVudExpc3RlbmVyKFwibWVzc2FnZVwiLCBnZXRPbk1zZyhpKSk7XG5cbiAgICAgICAgICAgIHRtLndvcmtpbmdbaV09ZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBpbml0UHJvbWlzZXMgPSBbXTtcbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPHRtLndvcmtlcnMubGVuZ3RoO2krKykge1xuICAgICAgICAgICAgY29uc3QgY29weUNvZGUgPSB3YXNtLmNvZGUuc2xpY2UoKTtcbiAgICAgICAgICAgIGluaXRQcm9taXNlcy5wdXNoKHRtLnBvc3RBY3Rpb24oaSwgW3tcbiAgICAgICAgICAgICAgICBjbWQ6IFwiSU5JVFwiLFxuICAgICAgICAgICAgICAgIGluaXQ6IE1FTV9TSVpFLFxuICAgICAgICAgICAgICAgIGNvZGU6IGNvcHlDb2RlXG4gICAgICAgICAgICB9XSwgW2NvcHlDb2RlLmJ1ZmZlcl0pKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGF3YWl0IFByb21pc2UuYWxsKGluaXRQcm9taXNlcyk7XG5cbiAgICB9XG4gICAgcmV0dXJuIHRtO1xuXG4gICAgZnVuY3Rpb24gZ2V0T25Nc2coaSkge1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24oZSkge1xuICAgICAgICAgICAgbGV0IGRhdGE7XG4gICAgICAgICAgICBpZiAoKGUpJiYoZS5kYXRhKSkge1xuICAgICAgICAgICAgICAgIGRhdGEgPSBlLmRhdGE7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGRhdGEgPSBlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0bS53b3JraW5nW2ldPWZhbHNlO1xuICAgICAgICAgICAgdG0ucGVuZGluZ0RlZmVycmVkc1tpXS5yZXNvbHZlKGRhdGEpO1xuICAgICAgICAgICAgdG0ucHJvY2Vzc1dvcmtzKCk7XG4gICAgICAgIH07XG4gICAgfVxuXG59XG5cbmNsYXNzIFRocmVhZE1hbmFnZXIge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICB0aGlzLmFjdGlvblF1ZXVlID0gW107XG4gICAgICAgIHRoaXMub2xkUEZyZWUgPSAwO1xuICAgIH1cblxuICAgIHN0YXJ0U3luY09wKCkge1xuICAgICAgICBpZiAodGhpcy5vbGRQRnJlZSAhPSAwKSB0aHJvdyBuZXcgRXJyb3IoXCJTeW5jIG9wZXJhdGlvbiBpbiBwcm9ncmVzc1wiKTtcbiAgICAgICAgdGhpcy5vbGRQRnJlZSA9IHRoaXMudTMyWzBdO1xuICAgIH1cblxuICAgIGVuZFN5bmNPcCgpIHtcbiAgICAgICAgaWYgKHRoaXMub2xkUEZyZWUgPT0gMCkgdGhyb3cgbmV3IEVycm9yKFwiTm8gc3luYyBvcGVyYXRpb24gaW4gcHJvZ3Jlc3NcIik7XG4gICAgICAgIHRoaXMudTMyWzBdID0gdGhpcy5vbGRQRnJlZTtcbiAgICAgICAgdGhpcy5vbGRQRnJlZSA9IDA7XG4gICAgfVxuXG4gICAgcG9zdEFjdGlvbih3b3JrZXJJZCwgZSwgdHJhbnNmZXJzLCBfZGVmZXJyZWQpIHtcbiAgICAgICAgaWYgKHRoaXMud29ya2luZ1t3b3JrZXJJZF0pIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIlBvc3RpbmcgYSBqb2IgdCBhIHdvcmtpbmcgd29ya2VyXCIpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMud29ya2luZ1t3b3JrZXJJZF0gPSB0cnVlO1xuXG4gICAgICAgIHRoaXMucGVuZGluZ0RlZmVycmVkc1t3b3JrZXJJZF0gPSBfZGVmZXJyZWQgPyBfZGVmZXJyZWQgOiBuZXcgRGVmZXJyZWQoKTtcbiAgICAgICAgdGhpcy53b3JrZXJzW3dvcmtlcklkXS5wb3N0TWVzc2FnZShlLCB0cmFuc2ZlcnMpO1xuXG4gICAgICAgIHJldHVybiB0aGlzLnBlbmRpbmdEZWZlcnJlZHNbd29ya2VySWRdLnByb21pc2U7XG4gICAgfVxuXG4gICAgcHJvY2Vzc1dvcmtzKCkge1xuICAgICAgICBmb3IgKGxldCBpPTA7IChpPHRoaXMud29ya2Vycy5sZW5ndGgpJiYodGhpcy5hY3Rpb25RdWV1ZS5sZW5ndGggPiAwKTsgaSsrKSB7XG4gICAgICAgICAgICBpZiAodGhpcy53b3JraW5nW2ldID09IGZhbHNlKSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgd29yayA9IHRoaXMuYWN0aW9uUXVldWUuc2hpZnQoKTtcbiAgICAgICAgICAgICAgICB0aGlzLnBvc3RBY3Rpb24oaSwgd29yay5kYXRhLCB3b3JrLnRyYW5zZmVycywgd29yay5kZWZlcnJlZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBxdWV1ZUFjdGlvbihhY3Rpb25EYXRhLCB0cmFuc2ZlcnMpIHtcbiAgICAgICAgY29uc3QgZCA9IG5ldyBEZWZlcnJlZCgpO1xuXG4gICAgICAgIGlmICh0aGlzLnNpbmdsZVRocmVhZCkge1xuICAgICAgICAgICAgY29uc3QgcmVzID0gdGhpcy50YXNrTWFuYWdlcihhY3Rpb25EYXRhKTtcbiAgICAgICAgICAgIGQucmVzb2x2ZShyZXMpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5hY3Rpb25RdWV1ZS5wdXNoKHtcbiAgICAgICAgICAgICAgICBkYXRhOiBhY3Rpb25EYXRhLFxuICAgICAgICAgICAgICAgIHRyYW5zZmVyczogdHJhbnNmZXJzLFxuICAgICAgICAgICAgICAgIGRlZmVycmVkOiBkXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRoaXMucHJvY2Vzc1dvcmtzKCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGQucHJvbWlzZTtcbiAgICB9XG5cbiAgICByZXNldE1lbW9yeSgpIHtcbiAgICAgICAgdGhpcy51MzJbMF0gPSB0aGlzLmluaXRhbFBGcmVlO1xuICAgIH1cblxuICAgIGFsbG9jQnVmZihidWZmKSB7XG4gICAgICAgIGNvbnN0IHBvaW50ZXIgPSB0aGlzLmFsbG9jKGJ1ZmYuYnl0ZUxlbmd0aCk7XG4gICAgICAgIHRoaXMuc2V0QnVmZihwb2ludGVyLCBidWZmKTtcbiAgICAgICAgcmV0dXJuIHBvaW50ZXI7XG4gICAgfVxuXG4gICAgZ2V0QnVmZihwb2ludGVyLCBsZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudTguc2xpY2UocG9pbnRlciwgcG9pbnRlcisgbGVuZ3RoKTtcbiAgICB9XG5cbiAgICBzZXRCdWZmKHBvaW50ZXIsIGJ1ZmZlcikge1xuICAgICAgICB0aGlzLnU4LnNldChuZXcgVWludDhBcnJheShidWZmZXIpLCBwb2ludGVyKTtcbiAgICB9XG5cbiAgICBhbGxvYyhsZW5ndGgpIHtcbiAgICAgICAgd2hpbGUgKHRoaXMudTMyWzBdICYgMykgdGhpcy51MzJbMF0rKzsgIC8vIFJldHVybiBhbHdheXMgYWxpZ25lZCBwb2ludGVyc1xuICAgICAgICBjb25zdCByZXMgPSB0aGlzLnUzMlswXTtcbiAgICAgICAgdGhpcy51MzJbMF0gKz0gbGVuZ3RoO1xuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH1cblxuICAgIGFzeW5jIHRlcm1pbmF0ZSgpIHtcbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPHRoaXMud29ya2Vycy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgdGhpcy53b3JrZXJzW2ldLnBvc3RNZXNzYWdlKFt7Y21kOiBcIlRFUk1JTkFURVwifV0pO1xuICAgICAgICB9XG4gICAgICAgIGF3YWl0IHNsZWVwKDIwMCk7XG4gICAgfVxuXG59XG5cbmZ1bmN0aW9uIGJ1aWxkQmF0Y2hBcHBseUtleShjdXJ2ZSwgZ3JvdXBOYW1lKSB7XG4gICAgY29uc3QgRyA9IGN1cnZlW2dyb3VwTmFtZV07XG4gICAgY29uc3QgRnIgPSBjdXJ2ZS5GcjtcbiAgICBjb25zdCB0bSA9IGN1cnZlLnRtO1xuXG4gICAgY3VydmVbZ3JvdXBOYW1lXS5iYXRjaEFwcGx5S2V5ID0gYXN5bmMgZnVuY3Rpb24oYnVmZiwgZmlyc3QsIGluYywgaW5UeXBlLCBvdXRUeXBlKSB7XG4gICAgICAgIGluVHlwZSA9IGluVHlwZSB8fCBcImFmZmluZVwiO1xuICAgICAgICBvdXRUeXBlID0gb3V0VHlwZSB8fCBcImFmZmluZVwiO1xuICAgICAgICBsZXQgZm5OYW1lLCBmbkFmZmluZTtcbiAgICAgICAgbGV0IHNHaW4sIHNHbWlkLCBzR291dDtcbiAgICAgICAgaWYgKGdyb3VwTmFtZSA9PSBcIkcxXCIpIHtcbiAgICAgICAgICAgIGlmIChpblR5cGUgPT0gXCJqYWNvYmlhblwiKSB7XG4gICAgICAgICAgICAgICAgc0dpbiA9IEcuRi5uOCozO1xuICAgICAgICAgICAgICAgIGZuTmFtZSA9IFwiZzFtX2JhdGNoQXBwbHlLZXlcIjtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgc0dpbiA9IEcuRi5uOCoyO1xuICAgICAgICAgICAgICAgIGZuTmFtZSA9IFwiZzFtX2JhdGNoQXBwbHlLZXlNaXhlZFwiO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc0dtaWQgPSBHLkYubjgqMztcbiAgICAgICAgICAgIGlmIChvdXRUeXBlID09IFwiamFjb2JpYW5cIikge1xuICAgICAgICAgICAgICAgIHNHb3V0ID0gRy5GLm44KjM7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGZuQWZmaW5lID0gXCJnMW1fYmF0Y2hUb0FmZmluZVwiO1xuICAgICAgICAgICAgICAgIHNHb3V0ID0gRy5GLm44KjI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoZ3JvdXBOYW1lID09IFwiRzJcIikge1xuICAgICAgICAgICAgaWYgKGluVHlwZSA9PSBcImphY29iaWFuXCIpIHtcbiAgICAgICAgICAgICAgICBzR2luID0gRy5GLm44KjM7XG4gICAgICAgICAgICAgICAgZm5OYW1lID0gXCJnMm1fYmF0Y2hBcHBseUtleVwiO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBzR2luID0gRy5GLm44KjI7XG4gICAgICAgICAgICAgICAgZm5OYW1lID0gXCJnMm1fYmF0Y2hBcHBseUtleU1peGVkXCI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzR21pZCA9IEcuRi5uOCozO1xuICAgICAgICAgICAgaWYgKG91dFR5cGUgPT0gXCJqYWNvYmlhblwiKSB7XG4gICAgICAgICAgICAgICAgc0dvdXQgPSBHLkYubjgqMztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgZm5BZmZpbmUgPSBcImcybV9iYXRjaFRvQWZmaW5lXCI7XG4gICAgICAgICAgICAgICAgc0dvdXQgPSBHLkYubjgqMjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChncm91cE5hbWUgPT0gXCJGclwiKSB7XG4gICAgICAgICAgICBmbk5hbWUgPSBcImZybV9iYXRjaEFwcGx5S2V5XCI7XG4gICAgICAgICAgICBzR2luID0gRy5uODtcbiAgICAgICAgICAgIHNHbWlkID0gRy5uODtcbiAgICAgICAgICAgIHNHb3V0ID0gRy5uODtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgZ3JvdXA6IFwiICsgZ3JvdXBOYW1lKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBuUG9pbnRzID0gTWF0aC5mbG9vcihidWZmLmJ5dGVMZW5ndGggLyBzR2luKTtcbiAgICAgICAgY29uc3QgcG9pbnRzUGVyQ2h1bmsgPSBNYXRoLmZsb29yKG5Qb2ludHMvdG0uY29uY3VycmVuY3kpO1xuICAgICAgICBjb25zdCBvcFByb21pc2VzID0gW107XG4gICAgICAgIGluYyA9IEZyLmUoaW5jKTtcbiAgICAgICAgbGV0IHQgPSBGci5lKGZpcnN0KTtcbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPHRtLmNvbmN1cnJlbmN5OyBpKyspIHtcbiAgICAgICAgICAgIGxldCBuO1xuICAgICAgICAgICAgaWYgKGk8IHRtLmNvbmN1cnJlbmN5LTEpIHtcbiAgICAgICAgICAgICAgICBuID0gcG9pbnRzUGVyQ2h1bms7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIG4gPSBuUG9pbnRzIC0gaSpwb2ludHNQZXJDaHVuaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChuPT0wKSBjb250aW51ZTtcblxuICAgICAgICAgICAgY29uc3QgdGFzayA9IFtdO1xuXG4gICAgICAgICAgICB0YXNrLnB1c2goe1xuICAgICAgICAgICAgICAgIGNtZDogXCJBTExPQ1NFVFwiLFxuICAgICAgICAgICAgICAgIHZhcjogMCxcbiAgICAgICAgICAgICAgICBidWZmOiBidWZmLnNsaWNlKGkqcG9pbnRzUGVyQ2h1bmsqc0dpbiwgaSpwb2ludHNQZXJDaHVuaypzR2luICsgbipzR2luKVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJBTExPQ1NFVFwiLCB2YXI6IDEsIGJ1ZmY6IHR9KTtcbiAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkFMTE9DU0VUXCIsIHZhcjogMiwgYnVmZjogaW5jfSk7XG4gICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJBTExPQ1wiLCB2YXI6IDMsIGxlbjogbipNYXRoLm1heChzR21pZCwgc0dvdXQpfSk7XG4gICAgICAgICAgICB0YXNrLnB1c2goe1xuICAgICAgICAgICAgICAgIGNtZDogXCJDQUxMXCIsXG4gICAgICAgICAgICAgICAgZm5OYW1lOiBmbk5hbWUsXG4gICAgICAgICAgICAgICAgcGFyYW1zOiBbXG4gICAgICAgICAgICAgICAgICAgIHt2YXI6IDB9LFxuICAgICAgICAgICAgICAgICAgICB7dmFsOiBufSxcbiAgICAgICAgICAgICAgICAgICAge3ZhcjogMX0sXG4gICAgICAgICAgICAgICAgICAgIHt2YXI6IDJ9LFxuICAgICAgICAgICAgICAgICAgICB7dmFyOjN9XG4gICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBpZiAoZm5BZmZpbmUpIHtcbiAgICAgICAgICAgICAgICB0YXNrLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICBjbWQ6IFwiQ0FMTFwiLFxuICAgICAgICAgICAgICAgICAgICBmbk5hbWU6IGZuQWZmaW5lLFxuICAgICAgICAgICAgICAgICAgICBwYXJhbXM6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHt2YXI6IDN9LFxuICAgICAgICAgICAgICAgICAgICAgICAge3ZhbDogbn0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7dmFyOiAzfSxcbiAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiR0VUXCIsIG91dDogMCwgdmFyOiAzLCBsZW46IG4qc0dvdXR9KTtcblxuICAgICAgICAgICAgb3BQcm9taXNlcy5wdXNoKHRtLnF1ZXVlQWN0aW9uKHRhc2spKTtcbiAgICAgICAgICAgIHQgPSBGci5tdWwodCwgRnIuZXhwKGluYywgbikpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgUHJvbWlzZS5hbGwob3BQcm9taXNlcyk7XG5cbiAgICAgICAgbGV0IG91dEJ1ZmY7XG4gICAgICAgIGlmIChidWZmIGluc3RhbmNlb2YgQmlnQnVmZmVyKSB7XG4gICAgICAgICAgICBvdXRCdWZmID0gbmV3IEJpZ0J1ZmZlcihuUG9pbnRzKnNHb3V0KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG91dEJ1ZmYgPSBuZXcgVWludDhBcnJheShuUG9pbnRzKnNHb3V0KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBwPTA7XG4gICAgICAgIGZvciAobGV0IGk9MDsgaTxyZXN1bHQubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIG91dEJ1ZmYuc2V0KHJlc3VsdFtpXVswXSwgcCk7XG4gICAgICAgICAgICBwICs9IHJlc3VsdFtpXVswXS5ieXRlTGVuZ3RoO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG91dEJ1ZmY7XG4gICAgfTtcbn1cblxuZnVuY3Rpb24gYnVpbGRQYWlyaW5nKGN1cnZlKSB7XG4gICAgY29uc3QgdG0gPSBjdXJ2ZS50bTtcbiAgICBjdXJ2ZS5wYWlyaW5nID0gZnVuY3Rpb24gcGFpcmluZyhhLCBiKSB7XG5cbiAgICAgICAgdG0uc3RhcnRTeW5jT3AoKTtcbiAgICAgICAgY29uc3QgcEEgPSB0bS5hbGxvY0J1ZmYoY3VydmUuRzEudG9KYWNvYmlhbihhKSk7XG4gICAgICAgIGNvbnN0IHBCID0gdG0uYWxsb2NCdWZmKGN1cnZlLkcyLnRvSmFjb2JpYW4oYikpO1xuICAgICAgICBjb25zdCBwUmVzID0gdG0uYWxsb2MoY3VydmUuR3QubjgpO1xuICAgICAgICB0bS5pbnN0YW5jZS5leHBvcnRzW2N1cnZlLm5hbWUgKyBcIl9wYWlyaW5nXCJdKHBBLCBwQiwgcFJlcyk7XG5cbiAgICAgICAgY29uc3QgcmVzID0gdG0uZ2V0QnVmZihwUmVzLCBjdXJ2ZS5HdC5uOCk7XG5cbiAgICAgICAgdG0uZW5kU3luY09wKCk7XG4gICAgICAgIHJldHVybiByZXM7XG4gICAgfTtcblxuICAgIGN1cnZlLnBhaXJpbmdFcSA9IGFzeW5jIGZ1bmN0aW9uIHBhaXJpbmdFcSgpIHtcbiAgICAgICAgbGV0ICBidWZmQ3Q7XG4gICAgICAgIGxldCBuRXFzO1xuICAgICAgICBpZiAoKGFyZ3VtZW50cy5sZW5ndGggJSAyKSA9PSAxKSB7XG4gICAgICAgICAgICBidWZmQ3QgPSBhcmd1bWVudHNbYXJndW1lbnRzLmxlbmd0aC0xXTtcbiAgICAgICAgICAgIG5FcXMgPSAoYXJndW1lbnRzLmxlbmd0aCAtMSkgLzI7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBidWZmQ3QgPSBjdXJ2ZS5HdC5vbmU7XG4gICAgICAgICAgICBuRXFzID0gYXJndW1lbnRzLmxlbmd0aCAvMjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IG9wUHJvbWlzZXMgPSBbXTtcbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPG5FcXM7IGkrKykge1xuXG4gICAgICAgICAgICBjb25zdCB0YXNrID0gW107XG5cbiAgICAgICAgICAgIGNvbnN0IGcxQnVmZiA9IGN1cnZlLkcxLnRvSmFjb2JpYW4oYXJndW1lbnRzW2kqMl0pO1xuICAgICAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiQUxMT0NTRVRcIiwgdmFyOiAwLCBidWZmOiBnMUJ1ZmZ9KTtcbiAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkFMTE9DXCIsIHZhcjogMSwgbGVuOiBjdXJ2ZS5wcmVQU2l6ZX0pO1xuXG4gICAgICAgICAgICBjb25zdCBnMkJ1ZmYgPSBjdXJ2ZS5HMi50b0phY29iaWFuKGFyZ3VtZW50c1tpKjIgKzFdKTtcbiAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkFMTE9DU0VUXCIsIHZhcjogMiwgYnVmZjogZzJCdWZmfSk7XG4gICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJBTExPQ1wiLCB2YXI6IDMsIGxlbjogY3VydmUucHJlUVNpemV9KTtcblxuICAgICAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiQUxMT0NcIiwgdmFyOiA0LCBsZW46IGN1cnZlLkd0Lm44fSk7XG5cbiAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkNBTExcIiwgZm5OYW1lOiBjdXJ2ZS5uYW1lICsgXCJfcHJlcGFyZUcxXCIsIHBhcmFtczogW1xuICAgICAgICAgICAgICAgIHt2YXI6IDB9LFxuICAgICAgICAgICAgICAgIHt2YXI6IDF9XG4gICAgICAgICAgICBdfSk7XG5cbiAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkNBTExcIiwgZm5OYW1lOiBjdXJ2ZS5uYW1lICsgXCJfcHJlcGFyZUcyXCIsIHBhcmFtczogW1xuICAgICAgICAgICAgICAgIHt2YXI6IDJ9LFxuICAgICAgICAgICAgICAgIHt2YXI6IDN9XG4gICAgICAgICAgICBdfSk7XG5cbiAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkNBTExcIiwgZm5OYW1lOiBjdXJ2ZS5uYW1lICsgXCJfbWlsbGVyTG9vcFwiLCBwYXJhbXM6IFtcbiAgICAgICAgICAgICAgICB7dmFyOiAxfSxcbiAgICAgICAgICAgICAgICB7dmFyOiAzfSxcbiAgICAgICAgICAgICAgICB7dmFyOiA0fVxuICAgICAgICAgICAgXX0pO1xuXG4gICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJHRVRcIiwgb3V0OiAwLCB2YXI6IDQsIGxlbjogY3VydmUuR3Qubjh9KTtcblxuICAgICAgICAgICAgb3BQcm9taXNlcy5wdXNoKFxuICAgICAgICAgICAgICAgIHRtLnF1ZXVlQWN0aW9uKHRhc2spXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG5cblxuICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBQcm9taXNlLmFsbChvcFByb21pc2VzKTtcblxuICAgICAgICB0bS5zdGFydFN5bmNPcCgpO1xuICAgICAgICBjb25zdCBwUmVzID0gdG0uYWxsb2MoY3VydmUuR3QubjgpO1xuICAgICAgICB0bS5pbnN0YW5jZS5leHBvcnRzLmZ0bV9vbmUocFJlcyk7XG5cbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPHJlc3VsdC5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgY29uc3QgcE1SID0gdG0uYWxsb2NCdWZmKHJlc3VsdFtpXVswXSk7XG4gICAgICAgICAgICB0bS5pbnN0YW5jZS5leHBvcnRzLmZ0bV9tdWwocFJlcywgcE1SLCBwUmVzKTtcbiAgICAgICAgfVxuICAgICAgICB0bS5pbnN0YW5jZS5leHBvcnRzW2N1cnZlLm5hbWUgKyBcIl9maW5hbEV4cG9uZW50aWF0aW9uXCJdKHBSZXMsIHBSZXMpO1xuXG4gICAgICAgIGNvbnN0IHBDdCA9IHRtLmFsbG9jQnVmZihidWZmQ3QpO1xuXG4gICAgICAgIGNvbnN0IHIgPSAhIXRtLmluc3RhbmNlLmV4cG9ydHMuZnRtX2VxKHBSZXMsIHBDdCk7XG5cbiAgICAgICAgdG0uZW5kU3luY09wKCk7XG5cbiAgICAgICAgcmV0dXJuIHI7XG4gICAgfTtcblxuICAgIGN1cnZlLnByZXBhcmVHMSA9IGZ1bmN0aW9uKHApIHtcbiAgICAgICAgdGhpcy50bS5zdGFydFN5bmNPcCgpO1xuICAgICAgICBjb25zdCBwUCA9IHRoaXMudG0uYWxsb2NCdWZmKHApO1xuICAgICAgICBjb25zdCBwUHJlcFAgPSB0aGlzLnRtLmFsbG9jKHRoaXMucHJlUFNpemUpO1xuICAgICAgICB0aGlzLnRtLmluc3RhbmNlLmV4cG9ydHNbdGhpcy5uYW1lICsgXCJfcHJlcGFyZUcxXCJdKHBQLCBwUHJlcFApO1xuICAgICAgICBjb25zdCByZXMgPSB0aGlzLnRtLmdldEJ1ZmYocFByZXBQLCB0aGlzLnByZVBTaXplKTtcbiAgICAgICAgdGhpcy50bS5lbmRTeW5jT3AoKTtcbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9O1xuXG4gICAgY3VydmUucHJlcGFyZUcyID0gZnVuY3Rpb24ocSkge1xuICAgICAgICB0aGlzLnRtLnN0YXJ0U3luY09wKCk7XG4gICAgICAgIGNvbnN0IHBRID0gdGhpcy50bS5hbGxvY0J1ZmYocSk7XG4gICAgICAgIGNvbnN0IHBQcmVwUSA9IHRoaXMudG0uYWxsb2ModGhpcy5wcmVRU2l6ZSk7XG4gICAgICAgIHRoaXMudG0uaW5zdGFuY2UuZXhwb3J0c1t0aGlzLm5hbWUgKyBcIl9wcmVwYXJlRzJcIl0ocFEsIHBQcmVwUSk7XG4gICAgICAgIGNvbnN0IHJlcyA9IHRoaXMudG0uZ2V0QnVmZihwUHJlcFEsIHRoaXMucHJlUVNpemUpO1xuICAgICAgICB0aGlzLnRtLmVuZFN5bmNPcCgpO1xuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH07XG5cbiAgICBjdXJ2ZS5taWxsZXJMb29wID0gZnVuY3Rpb24ocHJlUCwgcHJlUSkge1xuICAgICAgICB0aGlzLnRtLnN0YXJ0U3luY09wKCk7XG4gICAgICAgIGNvbnN0IHBQcmVQID0gdGhpcy50bS5hbGxvY0J1ZmYocHJlUCk7XG4gICAgICAgIGNvbnN0IHBQcmVRID0gdGhpcy50bS5hbGxvY0J1ZmYocHJlUSk7XG4gICAgICAgIGNvbnN0IHBSZXMgPSB0aGlzLnRtLmFsbG9jKHRoaXMuR3QubjgpO1xuICAgICAgICB0aGlzLnRtLmluc3RhbmNlLmV4cG9ydHNbdGhpcy5uYW1lICsgXCJfbWlsbGVyTG9vcFwiXShwUHJlUCwgcFByZVEsIHBSZXMpO1xuICAgICAgICBjb25zdCByZXMgPSB0aGlzLnRtLmdldEJ1ZmYocFJlcywgdGhpcy5HdC5uOCk7XG4gICAgICAgIHRoaXMudG0uZW5kU3luY09wKCk7XG4gICAgICAgIHJldHVybiByZXM7XG4gICAgfTtcblxuICAgIGN1cnZlLmZpbmFsRXhwb25lbnRpYXRpb24gPSBmdW5jdGlvbihhKSB7XG4gICAgICAgIHRoaXMudG0uc3RhcnRTeW5jT3AoKTtcbiAgICAgICAgY29uc3QgcEEgPSB0aGlzLnRtLmFsbG9jQnVmZihhKTtcbiAgICAgICAgY29uc3QgcFJlcyA9IHRoaXMudG0uYWxsb2ModGhpcy5HdC5uOCk7XG4gICAgICAgIHRoaXMudG0uaW5zdGFuY2UuZXhwb3J0c1t0aGlzLm5hbWUgKyBcIl9maW5hbEV4cG9uZW50aWF0aW9uXCJdKHBBLCBwUmVzKTtcbiAgICAgICAgY29uc3QgcmVzID0gdGhpcy50bS5nZXRCdWZmKHBSZXMsIHRoaXMuR3QubjgpO1xuICAgICAgICB0aGlzLnRtLmVuZFN5bmNPcCgpO1xuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH07XG5cbn1cblxuY29uc3QgcFRTaXplcyA9IFtcbiAgICAxICwgIDEsICAxLCAgMSwgICAgMiwgIDMsICA0LCAgNSxcbiAgICA2ICwgIDcsICA3LCAgOCwgICAgOSwgMTAsIDExLCAxMixcbiAgICAxMywgMTMsIDE0LCAxNSwgICAxNiwgMTYsIDE3LCAxNyxcbiAgICAxNywgMTcsIDE3LCAxNywgICAxNywgMTcsIDE3LCAxN1xuXTtcblxuZnVuY3Rpb24gYnVpbGRNdWx0aWV4cChjdXJ2ZSwgZ3JvdXBOYW1lKSB7XG4gICAgY29uc3QgRyA9IGN1cnZlW2dyb3VwTmFtZV07XG4gICAgY29uc3QgdG0gPSBHLnRtO1xuICAgIGFzeW5jIGZ1bmN0aW9uIF9tdWx0aUV4cENodW5rKGJ1ZmZCYXNlcywgYnVmZlNjYWxhcnMsIGluVHlwZSwgbG9nZ2VyLCBsb2dUZXh0KSB7XG4gICAgICAgIGlmICggISAoYnVmZkJhc2VzIGluc3RhbmNlb2YgVWludDhBcnJheSkgKSB7XG4gICAgICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZXJyb3IoYCR7bG9nVGV4dH0gX211bHRpRXhwQ2h1bmsgYnVmZkJhc2VzIGlzIG5vdCBVaW50OEFycmF5YCk7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYCR7bG9nVGV4dH0gX211bHRpRXhwQ2h1bmsgYnVmZkJhc2VzIGlzIG5vdCBVaW50OEFycmF5YCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCAhIChidWZmU2NhbGFycyBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpICkge1xuICAgICAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmVycm9yKGAke2xvZ1RleHR9IF9tdWx0aUV4cENodW5rIGJ1ZmZTY2FsYXJzIGlzIG5vdCBVaW50OEFycmF5YCk7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYCR7bG9nVGV4dH0gX211bHRpRXhwQ2h1bmsgYnVmZlNjYWxhcnMgaXMgbm90IFVpbnQ4QXJyYXlgKTtcbiAgICAgICAgfVxuICAgICAgICBpblR5cGUgPSBpblR5cGUgfHwgXCJhZmZpbmVcIjtcblxuICAgICAgICBsZXQgc0dJbjtcbiAgICAgICAgbGV0IGZuTmFtZTtcbiAgICAgICAgaWYgKGdyb3VwTmFtZSA9PSBcIkcxXCIpIHtcbiAgICAgICAgICAgIGlmIChpblR5cGUgPT0gXCJhZmZpbmVcIikge1xuICAgICAgICAgICAgICAgIGZuTmFtZSA9IFwiZzFtX211bHRpZXhwQWZmaW5lX2NodW5rXCI7XG4gICAgICAgICAgICAgICAgc0dJbiA9IEcuRi5uOCoyO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBmbk5hbWUgPSBcImcxbV9tdWx0aWV4cF9jaHVua1wiO1xuICAgICAgICAgICAgICAgIHNHSW4gPSBHLkYubjgqMztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChncm91cE5hbWUgPT0gXCJHMlwiKSB7XG4gICAgICAgICAgICBpZiAoaW5UeXBlID09IFwiYWZmaW5lXCIpIHtcbiAgICAgICAgICAgICAgICBmbk5hbWUgPSBcImcybV9tdWx0aWV4cEFmZmluZV9jaHVua1wiO1xuICAgICAgICAgICAgICAgIHNHSW4gPSBHLkYubjgqMjtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgZm5OYW1lID0gXCJnMm1fbXVsdGlleHBfY2h1bmtcIjtcbiAgICAgICAgICAgICAgICBzR0luID0gRy5GLm44KjM7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIGdyb3VwXCIpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG5Qb2ludHMgPSBNYXRoLmZsb29yKGJ1ZmZCYXNlcy5ieXRlTGVuZ3RoIC8gc0dJbik7XG5cbiAgICAgICAgaWYgKG5Qb2ludHMgPT0gMCkgcmV0dXJuIEcuemVybztcbiAgICAgICAgY29uc3Qgc1NjYWxhciA9IE1hdGguZmxvb3IoYnVmZlNjYWxhcnMuYnl0ZUxlbmd0aCAvIG5Qb2ludHMpO1xuICAgICAgICBpZiggc1NjYWxhciAqIG5Qb2ludHMgIT0gYnVmZlNjYWxhcnMuYnl0ZUxlbmd0aCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiU2NhbGFyIHNpemUgZG9lcyBub3QgbWF0Y2hcIik7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBiaXRDaHVua1NpemUgPSBwVFNpemVzW2xvZzIoblBvaW50cyldO1xuICAgICAgICBjb25zdCBuQ2h1bmtzID0gTWF0aC5mbG9vcigoc1NjYWxhcio4IC0gMSkgLyBiaXRDaHVua1NpemUpICsxO1xuXG4gICAgICAgIGNvbnN0IG9wUHJvbWlzZXMgPSBbXTtcbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPG5DaHVua3M7IGkrKykge1xuICAgICAgICAgICAgY29uc3QgdGFzayA9IFtcbiAgICAgICAgICAgICAgICB7Y21kOiBcIkFMTE9DU0VUXCIsIHZhcjogMCwgYnVmZjogYnVmZkJhc2VzfSxcbiAgICAgICAgICAgICAgICB7Y21kOiBcIkFMTE9DU0VUXCIsIHZhcjogMSwgYnVmZjogYnVmZlNjYWxhcnN9LFxuICAgICAgICAgICAgICAgIHtjbWQ6IFwiQUxMT0NcIiwgdmFyOiAyLCBsZW46IEcuRi5uOCozfSxcbiAgICAgICAgICAgICAgICB7Y21kOiBcIkNBTExcIiwgZm5OYW1lOiBmbk5hbWUsIHBhcmFtczogW1xuICAgICAgICAgICAgICAgICAgICB7dmFyOiAwfSxcbiAgICAgICAgICAgICAgICAgICAge3ZhcjogMX0sXG4gICAgICAgICAgICAgICAgICAgIHt2YWw6IHNTY2FsYXJ9LFxuICAgICAgICAgICAgICAgICAgICB7dmFsOiBuUG9pbnRzfSxcbiAgICAgICAgICAgICAgICAgICAge3ZhbDogaSpiaXRDaHVua1NpemV9LFxuICAgICAgICAgICAgICAgICAgICB7dmFsOiBNYXRoLm1pbihzU2NhbGFyKjggLSBpKmJpdENodW5rU2l6ZSwgYml0Q2h1bmtTaXplKX0sXG4gICAgICAgICAgICAgICAgICAgIHt2YXI6IDJ9XG4gICAgICAgICAgICAgICAgXX0sXG4gICAgICAgICAgICAgICAge2NtZDogXCJHRVRcIiwgb3V0OiAwLCB2YXI6IDIsIGxlbjogRy5GLm44KjN9XG4gICAgICAgICAgICBdO1xuICAgICAgICAgICAgb3BQcm9taXNlcy5wdXNoKFxuICAgICAgICAgICAgICAgIEcudG0ucXVldWVBY3Rpb24odGFzaylcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBQcm9taXNlLmFsbChvcFByb21pc2VzKTtcblxuICAgICAgICBsZXQgcmVzID0gRy56ZXJvO1xuICAgICAgICBmb3IgKGxldCBpPXJlc3VsdC5sZW5ndGgtMTsgaT49MDsgaS0tKSB7XG4gICAgICAgICAgICBpZiAoIUcuaXNaZXJvKHJlcykpIHtcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBqPTA7IGo8Yml0Q2h1bmtTaXplOyBqKyspIHJlcyA9IEcuZG91YmxlKHJlcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXMgPSBHLmFkZChyZXMsIHJlc3VsdFtpXVswXSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH1cblxuICAgIGFzeW5jIGZ1bmN0aW9uIF9tdWx0aUV4cChidWZmQmFzZXMsIGJ1ZmZTY2FsYXJzLCBpblR5cGUsIGxvZ2dlciwgbG9nVGV4dCkge1xuICAgICAgICBjb25zdCBNQVhfQ0hVTktfU0laRSA9IDEgPDwgMjI7XG4gICAgICAgIGNvbnN0IE1JTl9DSFVOS19TSVpFID0gMSA8PCAxMDtcbiAgICAgICAgbGV0IHNHSW47XG5cbiAgICAgICAgaWYgKGdyb3VwTmFtZSA9PSBcIkcxXCIpIHtcbiAgICAgICAgICAgIGlmIChpblR5cGUgPT0gXCJhZmZpbmVcIikge1xuICAgICAgICAgICAgICAgIHNHSW4gPSBHLkYubjgqMjtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgc0dJbiA9IEcuRi5uOCozO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKGdyb3VwTmFtZSA9PSBcIkcyXCIpIHtcbiAgICAgICAgICAgIGlmIChpblR5cGUgPT0gXCJhZmZpbmVcIikge1xuICAgICAgICAgICAgICAgIHNHSW4gPSBHLkYubjgqMjtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgc0dJbiA9IEcuRi5uOCozO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBncm91cFwiKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IG5Qb2ludHMgPSBNYXRoLmZsb29yKGJ1ZmZCYXNlcy5ieXRlTGVuZ3RoIC8gc0dJbik7XG4gICAgICAgIGNvbnN0IHNTY2FsYXIgPSBNYXRoLmZsb29yKGJ1ZmZTY2FsYXJzLmJ5dGVMZW5ndGggLyBuUG9pbnRzKTtcbiAgICAgICAgaWYoIHNTY2FsYXIgKiBuUG9pbnRzICE9IGJ1ZmZTY2FsYXJzLmJ5dGVMZW5ndGgpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIlNjYWxhciBzaXplIGRvZXMgbm90IG1hdGNoXCIpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgYml0Q2h1bmtTaXplID0gcFRTaXplc1tsb2cyKG5Qb2ludHMpXTtcbiAgICAgICAgY29uc3QgbkNodW5rcyA9IE1hdGguZmxvb3IoKHNTY2FsYXIqOCAtIDEpIC8gYml0Q2h1bmtTaXplKSArMTtcblxuICAgICAgICBsZXQgY2h1bmtTaXplO1xuICAgICAgICBjaHVua1NpemUgPSBNYXRoLmZsb29yKG5Qb2ludHMgLyAodG0uY29uY3VycmVuY3kgL25DaHVua3MpKTtcbiAgICAgICAgaWYgKGNodW5rU2l6ZT5NQVhfQ0hVTktfU0laRSkgY2h1bmtTaXplID0gTUFYX0NIVU5LX1NJWkU7XG4gICAgICAgIGlmIChjaHVua1NpemU8TUlOX0NIVU5LX1NJWkUpIGNodW5rU2l6ZSA9IE1JTl9DSFVOS19TSVpFO1xuXG4gICAgICAgIGNvbnN0IG9wUHJvbWlzZXMgPSBbXTtcbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPG5Qb2ludHM7IGkgKz0gY2h1bmtTaXplKSB7XG4gICAgICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZGVidWcoYE11bHRpZXhwIHN0YXJ0OiAke2xvZ1RleHR9OiAke2l9LyR7blBvaW50c31gKTtcbiAgICAgICAgICAgIGNvbnN0IG49IE1hdGgubWluKG5Qb2ludHMgLSBpLCBjaHVua1NpemUpO1xuICAgICAgICAgICAgY29uc3QgYnVmZkJhc2VzQ2h1bmsgPSBidWZmQmFzZXMuc2xpY2UoaSpzR0luLCAoaStuKSpzR0luKTtcbiAgICAgICAgICAgIGNvbnN0IGJ1ZmZTY2FsYXJzQ2h1bmsgPSBidWZmU2NhbGFycy5zbGljZShpKnNTY2FsYXIsIChpK24pKnNTY2FsYXIpO1xuICAgICAgICAgICAgb3BQcm9taXNlcy5wdXNoKF9tdWx0aUV4cENodW5rKGJ1ZmZCYXNlc0NodW5rLCBidWZmU2NhbGFyc0NodW5rLCBpblR5cGUsIGxvZ2dlciwgbG9nVGV4dCkudGhlbiggKHIpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZGVidWcoYE11bHRpZXhwIGVuZDogJHtsb2dUZXh0fTogJHtpfS8ke25Qb2ludHN9YCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHI7XG4gICAgICAgICAgICB9KSk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBQcm9taXNlLmFsbChvcFByb21pc2VzKTtcblxuICAgICAgICBsZXQgcmVzID0gRy56ZXJvO1xuICAgICAgICBmb3IgKGxldCBpPXJlc3VsdC5sZW5ndGgtMTsgaT49MDsgaS0tKSB7XG4gICAgICAgICAgICByZXMgPSBHLmFkZChyZXMsIHJlc3VsdFtpXSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH1cblxuICAgIEcubXVsdGlFeHAgPSBhc3luYyBmdW5jdGlvbiBtdWx0aUV4cEFmZmluZShidWZmQmFzZXMsIGJ1ZmZTY2FsYXJzLCBsb2dnZXIsIGxvZ1RleHQpIHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IF9tdWx0aUV4cChidWZmQmFzZXMsIGJ1ZmZTY2FsYXJzLCBcImphY29iaWFuXCIsIGxvZ2dlciwgbG9nVGV4dCk7XG4gICAgfTtcbiAgICBHLm11bHRpRXhwQWZmaW5lID0gYXN5bmMgZnVuY3Rpb24gbXVsdGlFeHBBZmZpbmUoYnVmZkJhc2VzLCBidWZmU2NhbGFycywgbG9nZ2VyLCBsb2dUZXh0KSB7XG4gICAgICAgIHJldHVybiBhd2FpdCBfbXVsdGlFeHAoYnVmZkJhc2VzLCBidWZmU2NhbGFycywgXCJhZmZpbmVcIiwgbG9nZ2VyLCBsb2dUZXh0KTtcbiAgICB9O1xufVxuXG5mdW5jdGlvbiBidWlsZEZGVChjdXJ2ZSwgZ3JvdXBOYW1lKSB7XG4gICAgY29uc3QgRyA9IGN1cnZlW2dyb3VwTmFtZV07XG4gICAgY29uc3QgRnIgPSBjdXJ2ZS5GcjtcbiAgICBjb25zdCB0bSA9IEcudG07XG4gICAgYXN5bmMgZnVuY3Rpb24gX2ZmdChidWZmLCBpbnZlcnNlLCBpblR5cGUsIG91dFR5cGUsIGxvZ2dlciwgbG9nZ2VyVHh0KSB7XG5cbiAgICAgICAgaW5UeXBlID0gaW5UeXBlIHx8IFwiYWZmaW5lXCI7XG4gICAgICAgIG91dFR5cGUgPSBvdXRUeXBlIHx8IFwiYWZmaW5lXCI7XG4gICAgICAgIGNvbnN0IE1BWF9CSVRTX1RIUkVBRCA9IDE0O1xuXG4gICAgICAgIGxldCBzSW4sIHNNaWQsIHNPdXQsIGZuSW4yTWlkLCBmbk1pZDJPdXQsIGZuRkZUTWl4LCBmbkZGVEpvaW4sIGZuRkZURmluYWw7XG4gICAgICAgIGlmIChncm91cE5hbWUgPT0gXCJHMVwiKSB7XG4gICAgICAgICAgICBpZiAoaW5UeXBlID09IFwiYWZmaW5lXCIpIHtcbiAgICAgICAgICAgICAgICBzSW4gPSBHLkYubjgqMjtcbiAgICAgICAgICAgICAgICBmbkluMk1pZCA9IFwiZzFtX2JhdGNoVG9KYWNvYmlhblwiO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBzSW4gPSBHLkYubjgqMztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHNNaWQgPSBHLkYubjgqMztcbiAgICAgICAgICAgIGlmIChpbnZlcnNlKSB7XG4gICAgICAgICAgICAgICAgZm5GRlRGaW5hbCA9IFwiZzFtX2ZmdEZpbmFsXCI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmbkZGVEpvaW4gPSBcImcxbV9mZnRKb2luXCI7XG4gICAgICAgICAgICBmbkZGVE1peCA9IFwiZzFtX2ZmdE1peFwiO1xuXG4gICAgICAgICAgICBpZiAob3V0VHlwZSA9PSBcImFmZmluZVwiKSB7XG4gICAgICAgICAgICAgICAgc091dCA9IEcuRi5uOCoyO1xuICAgICAgICAgICAgICAgIGZuTWlkMk91dCA9IFwiZzFtX2JhdGNoVG9BZmZpbmVcIjtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgc091dCA9IEcuRi5uOCozO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH0gZWxzZSBpZiAoZ3JvdXBOYW1lID09IFwiRzJcIikge1xuICAgICAgICAgICAgaWYgKGluVHlwZSA9PSBcImFmZmluZVwiKSB7XG4gICAgICAgICAgICAgICAgc0luID0gRy5GLm44KjI7XG4gICAgICAgICAgICAgICAgZm5JbjJNaWQgPSBcImcybV9iYXRjaFRvSmFjb2JpYW5cIjtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgc0luID0gRy5GLm44KjM7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzTWlkID0gRy5GLm44KjM7XG4gICAgICAgICAgICBpZiAoaW52ZXJzZSkge1xuICAgICAgICAgICAgICAgIGZuRkZURmluYWwgPSBcImcybV9mZnRGaW5hbFwiO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZm5GRlRKb2luID0gXCJnMm1fZmZ0Sm9pblwiO1xuICAgICAgICAgICAgZm5GRlRNaXggPSBcImcybV9mZnRNaXhcIjtcbiAgICAgICAgICAgIGlmIChvdXRUeXBlID09IFwiYWZmaW5lXCIpIHtcbiAgICAgICAgICAgICAgICBzT3V0ID0gRy5GLm44KjI7XG4gICAgICAgICAgICAgICAgZm5NaWQyT3V0ID0gXCJnMm1fYmF0Y2hUb0FmZmluZVwiO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBzT3V0ID0gRy5GLm44KjM7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoZ3JvdXBOYW1lID09IFwiRnJcIikge1xuICAgICAgICAgICAgc0luID0gRy5uODtcbiAgICAgICAgICAgIHNNaWQgPSBHLm44O1xuICAgICAgICAgICAgc091dCA9IEcubjg7XG4gICAgICAgICAgICBpZiAoaW52ZXJzZSkge1xuICAgICAgICAgICAgICAgIGZuRkZURmluYWwgPSBcImZybV9mZnRGaW5hbFwiO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZm5GRlRNaXggPSBcImZybV9mZnRNaXhcIjtcbiAgICAgICAgICAgIGZuRkZUSm9pbiA9IFwiZnJtX2ZmdEpvaW5cIjtcbiAgICAgICAgfVxuXG5cbiAgICAgICAgbGV0IHJldHVybkFycmF5ID0gZmFsc2U7XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KGJ1ZmYpKSB7XG4gICAgICAgICAgICBidWZmID0gYXJyYXkyYnVmZmVyKGJ1ZmYsIHNJbik7XG4gICAgICAgICAgICByZXR1cm5BcnJheSA9IHRydWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBidWZmID0gYnVmZi5zbGljZSgwLCBidWZmLmJ5dGVMZW5ndGgpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgblBvaW50cyA9IGJ1ZmYuYnl0ZUxlbmd0aCAvIHNJbjtcbiAgICAgICAgY29uc3QgYml0cyA9IGxvZzIoblBvaW50cyk7XG5cbiAgICAgICAgaWYgICgoMSA8PCBiaXRzKSAhPSBuUG9pbnRzKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJmZnQgbXVzdCBiZSBtdWx0aXBsZSBvZiAyXCIgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChiaXRzID09IEZyLnMgKzEpIHtcbiAgICAgICAgICAgIGxldCBidWZmT3V0O1xuXG4gICAgICAgICAgICBpZiAoaW52ZXJzZSkge1xuICAgICAgICAgICAgICAgIGJ1ZmZPdXQgPSAgYXdhaXQgX2ZmdEV4dEludihidWZmLCBpblR5cGUsIG91dFR5cGUsIGxvZ2dlciwgbG9nZ2VyVHh0KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgYnVmZk91dCA9ICBhd2FpdCBfZmZ0RXh0KGJ1ZmYsIGluVHlwZSwgb3V0VHlwZSwgbG9nZ2VyLCBsb2dnZXJUeHQpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAocmV0dXJuQXJyYXkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gYnVmZmVyMmFycmF5KGJ1ZmZPdXQsIHNPdXQpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gYnVmZk91dDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBpbnY7XG4gICAgICAgIGlmIChpbnZlcnNlKSB7XG4gICAgICAgICAgICBpbnYgPSBGci5pbnYoRnIuZShuUG9pbnRzKSk7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgYnVmZk91dDtcblxuICAgICAgICBidWZmUmV2ZXJzZUJpdHMoYnVmZiwgc0luKTtcblxuICAgICAgICBsZXQgY2h1bmtzO1xuICAgICAgICBsZXQgcG9pbnRzSW5DaHVuayA9IE1hdGgubWluKDEgPDwgTUFYX0JJVFNfVEhSRUFELCBuUG9pbnRzKTtcbiAgICAgICAgbGV0IG5DaHVua3MgPSBuUG9pbnRzIC8gcG9pbnRzSW5DaHVuaztcblxuICAgICAgICB3aGlsZSAoKG5DaHVua3MgPCB0bS5jb25jdXJyZW5jeSkmJihwb2ludHNJbkNodW5rPj0xNikpIHtcbiAgICAgICAgICAgIG5DaHVua3MgKj0gMjtcbiAgICAgICAgICAgIHBvaW50c0luQ2h1bmsgLz0gMjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGwyQ2h1bmsgPSBsb2cyKHBvaW50c0luQ2h1bmspO1xuXG4gICAgICAgIGNvbnN0IHByb21pc2VzID0gW107XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpPCBuQ2h1bmtzOyBpKyspIHtcbiAgICAgICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5kZWJ1ZyhgJHtsb2dnZXJUeHR9OiBmZnQgJHtiaXRzfSBtaXggc3RhcnQ6ICR7aX0vJHtuQ2h1bmtzfWApO1xuICAgICAgICAgICAgY29uc3QgdGFzayA9IFtdO1xuICAgICAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiQUxMT0NcIiwgdmFyOiAwLCBsZW46IHNNaWQqcG9pbnRzSW5DaHVua30pO1xuICAgICAgICAgICAgY29uc3QgYnVmZkNodW5rID0gYnVmZi5zbGljZSggKHBvaW50c0luQ2h1bmsgKiBpKSpzSW4sIChwb2ludHNJbkNodW5rICogKGkrMSkpKnNJbik7XG4gICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJTRVRcIiwgdmFyOiAwLCBidWZmOiBidWZmQ2h1bmt9KTtcbiAgICAgICAgICAgIGlmIChmbkluMk1pZCkge1xuICAgICAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkNBTExcIiwgZm5OYW1lOmZuSW4yTWlkLCBwYXJhbXM6IFt7dmFyOjB9LCB7dmFsOiBwb2ludHNJbkNodW5rfSwge3ZhcjogMH1dfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmb3IgKGxldCBqPTE7IGo8PWwyQ2h1bms7aisrKSB7XG4gICAgICAgICAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiQ0FMTFwiLCBmbk5hbWU6Zm5GRlRNaXgsIHBhcmFtczogW3t2YXI6MH0sIHt2YWw6IHBvaW50c0luQ2h1bmt9LCB7dmFsOiBqfV19KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGwyQ2h1bms9PWJpdHMpIHtcbiAgICAgICAgICAgICAgICBpZiAoZm5GRlRGaW5hbCkge1xuICAgICAgICAgICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJBTExPQ1NFVFwiLCB2YXI6IDEsIGJ1ZmY6IGludn0pO1xuICAgICAgICAgICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJDQUxMXCIsIGZuTmFtZTogZm5GRlRGaW5hbCwgIHBhcmFtczpbXG4gICAgICAgICAgICAgICAgICAgICAgICB7dmFyOiAwfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHt2YWw6IHBvaW50c0luQ2h1bmt9LFxuICAgICAgICAgICAgICAgICAgICAgICAge3ZhcjogMX0sXG4gICAgICAgICAgICAgICAgICAgIF19KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGZuTWlkMk91dCkge1xuICAgICAgICAgICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJDQUxMXCIsIGZuTmFtZTpmbk1pZDJPdXQsIHBhcmFtczogW3t2YXI6MH0sIHt2YWw6IHBvaW50c0luQ2h1bmt9LCB7dmFyOiAwfV19KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiR0VUXCIsIG91dDogMCwgdmFyOiAwLCBsZW46IHBvaW50c0luQ2h1bmsqc091dH0pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJHRVRcIiwgb3V0OjAsIHZhcjogMCwgbGVuOiBzTWlkKnBvaW50c0luQ2h1bmt9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHByb21pc2VzLnB1c2godG0ucXVldWVBY3Rpb24odGFzaykudGhlbiggKHIpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZGVidWcoYCR7bG9nZ2VyVHh0fTogZmZ0ICR7Yml0c30gbWl4IGVuZDogJHtpfS8ke25DaHVua3N9YCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHI7XG4gICAgICAgICAgICB9KSk7XG4gICAgICAgIH1cblxuICAgICAgICBjaHVua3MgPSBhd2FpdCBQcm9taXNlLmFsbChwcm9taXNlcyk7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpPCBuQ2h1bmtzOyBpKyspIGNodW5rc1tpXSA9IGNodW5rc1tpXVswXTtcblxuICAgICAgICBmb3IgKGxldCBpID0gbDJDaHVuaysxOyAgIGk8PWJpdHM7IGkrKykge1xuICAgICAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmRlYnVnKGAke2xvZ2dlclR4dH06IGZmdCAgJHtiaXRzfSAgam9pbjogJHtpfS8ke2JpdHN9YCk7XG4gICAgICAgICAgICBjb25zdCBuR3JvdXBzID0gMSA8PCAoYml0cyAtIGkpO1xuICAgICAgICAgICAgY29uc3QgbkNodW5rc1Blckdyb3VwID0gbkNodW5rcyAvIG5Hcm91cHM7XG4gICAgICAgICAgICBjb25zdCBvcFByb21pc2VzID0gW107XG4gICAgICAgICAgICBmb3IgKGxldCBqPTA7IGo8bkdyb3VwczsgaisrKSB7XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaz0wOyBrIDxuQ2h1bmtzUGVyR3JvdXAvMjsgaysrKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGZpcnN0ID0gRnIuZXhwKCBGci53W2ldLCBrKnBvaW50c0luQ2h1bmspO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBpbmMgPSBGci53W2ldO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBvMSA9IGoqbkNodW5rc1Blckdyb3VwICsgaztcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbzIgPSBqKm5DaHVua3NQZXJHcm91cCArIGsgKyBuQ2h1bmtzUGVyR3JvdXAvMjtcblxuICAgICAgICAgICAgICAgICAgICBjb25zdCB0YXNrID0gW107XG4gICAgICAgICAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkFMTE9DU0VUXCIsIHZhcjogMCwgYnVmZjogY2h1bmtzW28xXX0pO1xuICAgICAgICAgICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJBTExPQ1NFVFwiLCB2YXI6IDEsIGJ1ZmY6IGNodW5rc1tvMl19KTtcbiAgICAgICAgICAgICAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiQUxMT0NTRVRcIiwgdmFyOiAyLCBidWZmOiBmaXJzdH0pO1xuICAgICAgICAgICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJBTExPQ1NFVFwiLCB2YXI6IDMsIGJ1ZmY6IGluY30pO1xuICAgICAgICAgICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJDQUxMXCIsIGZuTmFtZTogZm5GRlRKb2luLCAgcGFyYW1zOltcbiAgICAgICAgICAgICAgICAgICAgICAgIHt2YXI6IDB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge3ZhcjogMX0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7dmFsOiBwb2ludHNJbkNodW5rfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHt2YXI6IDJ9LFxuICAgICAgICAgICAgICAgICAgICAgICAge3ZhcjogM31cbiAgICAgICAgICAgICAgICAgICAgXX0pO1xuICAgICAgICAgICAgICAgICAgICBpZiAoaT09Yml0cykge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZuRkZURmluYWwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJBTExPQ1NFVFwiLCB2YXI6IDQsIGJ1ZmY6IGludn0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkNBTExcIiwgZm5OYW1lOiBmbkZGVEZpbmFsLCAgcGFyYW1zOltcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3ZhcjogMH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt2YWw6IHBvaW50c0luQ2h1bmt9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7dmFyOiA0fSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiQ0FMTFwiLCBmbk5hbWU6IGZuRkZURmluYWwsICBwYXJhbXM6W1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7dmFyOiAxfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3ZhbDogcG9pbnRzSW5DaHVua30sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt2YXI6IDR9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF19KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmbk1pZDJPdXQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJDQUxMXCIsIGZuTmFtZTpmbk1pZDJPdXQsIHBhcmFtczogW3t2YXI6MH0sIHt2YWw6IHBvaW50c0luQ2h1bmt9LCB7dmFyOiAwfV19KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJDQUxMXCIsIGZuTmFtZTpmbk1pZDJPdXQsIHBhcmFtczogW3t2YXI6MX0sIHt2YWw6IHBvaW50c0luQ2h1bmt9LCB7dmFyOiAxfV19KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkdFVFwiLCBvdXQ6IDAsIHZhcjogMCwgbGVuOiBwb2ludHNJbkNodW5rKnNPdXR9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkdFVFwiLCBvdXQ6IDEsIHZhcjogMSwgbGVuOiBwb2ludHNJbkNodW5rKnNPdXR9KTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkdFVFwiLCBvdXQ6IDAsIHZhcjogMCwgbGVuOiBwb2ludHNJbkNodW5rKnNNaWR9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkdFVFwiLCBvdXQ6IDEsIHZhcjogMSwgbGVuOiBwb2ludHNJbkNodW5rKnNNaWR9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBvcFByb21pc2VzLnB1c2godG0ucXVldWVBY3Rpb24odGFzaykudGhlbiggKHIpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5kZWJ1ZyhgJHtsb2dnZXJUeHR9OiBmZnQgJHtiaXRzfSBqb2luICAke2l9LyR7Yml0c30gICR7aisxfS8ke25Hcm91cHN9ICR7a30vJHtuQ2h1bmtzUGVyR3JvdXAvMn1gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByO1xuICAgICAgICAgICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCByZXMgPSBhd2FpdCBQcm9taXNlLmFsbChvcFByb21pc2VzKTtcbiAgICAgICAgICAgIGZvciAobGV0IGo9MDsgajxuR3JvdXBzOyBqKyspIHtcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBrPTA7IGsgPG5DaHVua3NQZXJHcm91cC8yOyBrKyspIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbzEgPSBqKm5DaHVua3NQZXJHcm91cCArIGs7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG8yID0gaipuQ2h1bmtzUGVyR3JvdXAgKyBrICsgbkNodW5rc1Blckdyb3VwLzI7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlc0NodW5rID0gcmVzLnNoaWZ0KCk7XG4gICAgICAgICAgICAgICAgICAgIGNodW5rc1tvMV0gPSByZXNDaHVua1swXTtcbiAgICAgICAgICAgICAgICAgICAgY2h1bmtzW28yXSA9IHJlc0NodW5rWzFdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChidWZmIGluc3RhbmNlb2YgQmlnQnVmZmVyKSB7XG4gICAgICAgICAgICBidWZmT3V0ID0gbmV3IEJpZ0J1ZmZlcihuUG9pbnRzKnNPdXQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgYnVmZk91dCA9IG5ldyBVaW50OEFycmF5KG5Qb2ludHMqc091dCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGludmVyc2UpIHtcbiAgICAgICAgICAgIGJ1ZmZPdXQuc2V0KGNodW5rc1swXS5zbGljZSgocG9pbnRzSW5DaHVuay0xKSpzT3V0KSk7XG4gICAgICAgICAgICBsZXQgcD0gc091dDtcbiAgICAgICAgICAgIGZvciAobGV0IGk9bkNodW5rcy0xOyBpPjA7IGktLSkge1xuICAgICAgICAgICAgICAgIGJ1ZmZPdXQuc2V0KGNodW5rc1tpXSwgcCk7XG4gICAgICAgICAgICAgICAgcCArPSBwb2ludHNJbkNodW5rKnNPdXQ7XG4gICAgICAgICAgICAgICAgZGVsZXRlIGNodW5rc1tpXTsgIC8vIExpYmVyYXRlIG1lbVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnVmZk91dC5zZXQoY2h1bmtzWzBdLnNsaWNlKDAsIChwb2ludHNJbkNodW5rLTEpKnNPdXQpLCBwKTtcbiAgICAgICAgICAgIGRlbGV0ZSBjaHVua3NbMF07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBmb3IgKGxldCBpPTA7IGk8bkNodW5rczsgaSsrKSB7XG4gICAgICAgICAgICAgICAgYnVmZk91dC5zZXQoY2h1bmtzW2ldLCBwb2ludHNJbkNodW5rKnNPdXQqaSk7XG4gICAgICAgICAgICAgICAgZGVsZXRlIGNodW5rc1tpXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChyZXR1cm5BcnJheSkge1xuICAgICAgICAgICAgcmV0dXJuIGJ1ZmZlcjJhcnJheShidWZmT3V0LCBzT3V0KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBidWZmT3V0O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgYXN5bmMgZnVuY3Rpb24gX2ZmdEV4dChidWZmLCBpblR5cGUsIG91dFR5cGUsIGxvZ2dlciwgbG9nZ2VyVHh0KSB7XG4gICAgICAgIGxldCBiMSwgYjI7XG4gICAgICAgIGIxID0gYnVmZi5zbGljZSggMCAsIGJ1ZmYuYnl0ZUxlbmd0aC8yKTtcbiAgICAgICAgYjIgPSBidWZmLnNsaWNlKCBidWZmLmJ5dGVMZW5ndGgvMiwgYnVmZi5ieXRlTGVuZ3RoKTtcblxuICAgICAgICBjb25zdCBwcm9taXNlcyA9IFtdO1xuXG4gICAgICAgIFtiMSwgYjJdID0gYXdhaXQgX2ZmdEpvaW5FeHQoYjEsIGIyLCBcImZmdEpvaW5FeHRcIiwgRnIub25lLCBGci5zaGlmdCwgaW5UeXBlLCBcImphY29iaWFuXCIsIGxvZ2dlciwgbG9nZ2VyVHh0KTtcblxuICAgICAgICBwcm9taXNlcy5wdXNoKCBfZmZ0KGIxLCBmYWxzZSwgXCJqYWNvYmlhblwiLCBvdXRUeXBlLCBsb2dnZXIsIGxvZ2dlclR4dCkpO1xuICAgICAgICBwcm9taXNlcy5wdXNoKCBfZmZ0KGIyLCBmYWxzZSwgXCJqYWNvYmlhblwiLCBvdXRUeXBlLCBsb2dnZXIsIGxvZ2dlclR4dCkpO1xuXG4gICAgICAgIGNvbnN0IHJlczEgPSBhd2FpdCBQcm9taXNlLmFsbChwcm9taXNlcyk7XG5cbiAgICAgICAgbGV0IGJ1ZmZPdXQ7XG4gICAgICAgIGlmIChyZXMxWzBdLmJ5dGVMZW5ndGggPiAoMTw8MjgpKSB7XG4gICAgICAgICAgICBidWZmT3V0ID0gbmV3IEJpZ0J1ZmZlcihyZXMxWzBdLmJ5dGVMZW5ndGgqMik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBidWZmT3V0ID0gbmV3IFVpbnQ4QXJyYXkocmVzMVswXS5ieXRlTGVuZ3RoKjIpO1xuICAgICAgICB9XG5cbiAgICAgICAgYnVmZk91dC5zZXQocmVzMVswXSk7XG4gICAgICAgIGJ1ZmZPdXQuc2V0KHJlczFbMV0sIHJlczFbMF0uYnl0ZUxlbmd0aCk7XG5cbiAgICAgICAgcmV0dXJuIGJ1ZmZPdXQ7XG4gICAgfVxuXG4gICAgYXN5bmMgZnVuY3Rpb24gX2ZmdEV4dEludihidWZmLCBpblR5cGUsIG91dFR5cGUsIGxvZ2dlciwgbG9nZ2VyVHh0KSB7XG4gICAgICAgIGxldCBiMSwgYjI7XG4gICAgICAgIGIxID0gYnVmZi5zbGljZSggMCAsIGJ1ZmYuYnl0ZUxlbmd0aC8yKTtcbiAgICAgICAgYjIgPSBidWZmLnNsaWNlKCBidWZmLmJ5dGVMZW5ndGgvMiwgYnVmZi5ieXRlTGVuZ3RoKTtcblxuICAgICAgICBjb25zdCBwcm9taXNlcyA9IFtdO1xuXG4gICAgICAgIHByb21pc2VzLnB1c2goIF9mZnQoYjEsIHRydWUsIGluVHlwZSwgXCJqYWNvYmlhblwiLCBsb2dnZXIsIGxvZ2dlclR4dCkpO1xuICAgICAgICBwcm9taXNlcy5wdXNoKCBfZmZ0KGIyLCB0cnVlLCBpblR5cGUsIFwiamFjb2JpYW5cIiwgbG9nZ2VyLCBsb2dnZXJUeHQpKTtcblxuICAgICAgICBbYjEsIGIyXSA9IGF3YWl0IFByb21pc2UuYWxsKHByb21pc2VzKTtcblxuICAgICAgICBjb25zdCByZXMxID0gYXdhaXQgX2ZmdEpvaW5FeHQoYjEsIGIyLCBcImZmdEpvaW5FeHRJbnZcIiwgRnIub25lLCBGci5zaGlmdEludiwgXCJqYWNvYmlhblwiLCBvdXRUeXBlLCBsb2dnZXIsIGxvZ2dlclR4dCk7XG5cbiAgICAgICAgbGV0IGJ1ZmZPdXQ7XG4gICAgICAgIGlmIChyZXMxWzBdLmJ5dGVMZW5ndGggPiAoMTw8MjgpKSB7XG4gICAgICAgICAgICBidWZmT3V0ID0gbmV3IEJpZ0J1ZmZlcihyZXMxWzBdLmJ5dGVMZW5ndGgqMik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBidWZmT3V0ID0gbmV3IFVpbnQ4QXJyYXkocmVzMVswXS5ieXRlTGVuZ3RoKjIpO1xuICAgICAgICB9XG5cbiAgICAgICAgYnVmZk91dC5zZXQocmVzMVswXSk7XG4gICAgICAgIGJ1ZmZPdXQuc2V0KHJlczFbMV0sIHJlczFbMF0uYnl0ZUxlbmd0aCk7XG5cbiAgICAgICAgcmV0dXJuIGJ1ZmZPdXQ7XG4gICAgfVxuXG5cbiAgICBhc3luYyBmdW5jdGlvbiBfZmZ0Sm9pbkV4dChidWZmMSwgYnVmZjIsIGZuLCBmaXJzdCwgaW5jLCBpblR5cGUsIG91dFR5cGUsIGxvZ2dlciwgbG9nZ2VyVHh0KSB7XG4gICAgICAgIGNvbnN0IE1BWF9DSFVOS19TSVpFID0gMTw8MTY7XG4gICAgICAgIGNvbnN0IE1JTl9DSFVOS19TSVpFID0gMTw8NDtcblxuICAgICAgICBsZXQgZm5OYW1lO1xuICAgICAgICBsZXQgZm5JbjJNaWQsIGZuTWlkMk91dDtcbiAgICAgICAgbGV0IHNPdXQsIHNJbiwgc01pZDtcblxuICAgICAgICBpZiAoZ3JvdXBOYW1lID09IFwiRzFcIikge1xuICAgICAgICAgICAgaWYgKGluVHlwZSA9PSBcImFmZmluZVwiKSB7XG4gICAgICAgICAgICAgICAgc0luID0gRy5GLm44KjI7XG4gICAgICAgICAgICAgICAgZm5JbjJNaWQgPSBcImcxbV9iYXRjaFRvSmFjb2JpYW5cIjtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgc0luID0gRy5GLm44KjM7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzTWlkID0gRy5GLm44KjM7XG4gICAgICAgICAgICBmbk5hbWUgPSBcImcxbV9cIitmbjtcbiAgICAgICAgICAgIGlmIChvdXRUeXBlID09IFwiYWZmaW5lXCIpIHtcbiAgICAgICAgICAgICAgICBmbk1pZDJPdXQgPSBcImcxbV9iYXRjaFRvQWZmaW5lXCI7XG4gICAgICAgICAgICAgICAgc091dCA9IEcuRi5uOCoyO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBzT3V0ID0gRy5GLm44KjM7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoZ3JvdXBOYW1lID09IFwiRzJcIikge1xuICAgICAgICAgICAgaWYgKGluVHlwZSA9PSBcImFmZmluZVwiKSB7XG4gICAgICAgICAgICAgICAgc0luID0gRy5GLm44KjI7XG4gICAgICAgICAgICAgICAgZm5JbjJNaWQgPSBcImcybV9iYXRjaFRvSmFjb2JpYW5cIjtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgc0luID0gRy5GLm44KjM7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmbk5hbWUgPSBcImcybV9cIitmbjtcbiAgICAgICAgICAgIHNNaWQgPSBHLkYubjgqMztcbiAgICAgICAgICAgIGlmIChvdXRUeXBlID09IFwiYWZmaW5lXCIpIHtcbiAgICAgICAgICAgICAgICBmbk1pZDJPdXQgPSBcImcybV9iYXRjaFRvQWZmaW5lXCI7XG4gICAgICAgICAgICAgICAgc091dCA9IEcuRi5uOCoyO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBzT3V0ID0gRy5GLm44KjM7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoZ3JvdXBOYW1lID09IFwiRnJcIikge1xuICAgICAgICAgICAgc0luID0gRnIubjg7XG4gICAgICAgICAgICBzT3V0ID0gRnIubjg7XG4gICAgICAgICAgICBzTWlkID0gRnIubjg7XG4gICAgICAgICAgICBmbk5hbWUgPSBcImZybV9cIiArIGZuO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBncm91cFwiKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChidWZmMS5ieXRlTGVuZ3RoICE9IGJ1ZmYyLmJ5dGVMZW5ndGgpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgYnVmZmVyIHNpemVcIik7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgblBvaW50cyA9IE1hdGguZmxvb3IoYnVmZjEuYnl0ZUxlbmd0aCAvIHNJbik7XG4gICAgICAgIGlmIChuUG9pbnRzICE9IDEgPDwgbG9nMihuUG9pbnRzKSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBudW1iZXIgb2YgcG9pbnRzXCIpO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGNodW5rU2l6ZSA9IE1hdGguZmxvb3IoblBvaW50cyAvdG0uY29uY3VycmVuY3kpO1xuICAgICAgICBpZiAoY2h1bmtTaXplIDwgTUlOX0NIVU5LX1NJWkUpIGNodW5rU2l6ZSA9IE1JTl9DSFVOS19TSVpFO1xuICAgICAgICBpZiAoY2h1bmtTaXplID4gTUFYX0NIVU5LX1NJWkUpIGNodW5rU2l6ZSA9IE1BWF9DSFVOS19TSVpFO1xuXG4gICAgICAgIGNvbnN0IG9wUHJvbWlzZXMgPSBbXTtcblxuICAgICAgICBmb3IgKGxldCBpPTA7IGk8blBvaW50czsgaSArPSBjaHVua1NpemUpIHtcbiAgICAgICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5kZWJ1ZyhgJHtsb2dnZXJUeHR9OiBmZnRKb2luRXh0IFN0YXJ0OiAke2l9LyR7blBvaW50c31gKTtcbiAgICAgICAgICAgIGNvbnN0IG49IE1hdGgubWluKG5Qb2ludHMgLSBpLCBjaHVua1NpemUpO1xuXG4gICAgICAgICAgICBjb25zdCBmaXJzdENodW5rID0gRnIubXVsKGZpcnN0LCBGci5leHAoIGluYywgaSkpO1xuICAgICAgICAgICAgY29uc3QgdGFzayA9IFtdO1xuXG4gICAgICAgICAgICBjb25zdCBiMSA9IGJ1ZmYxLnNsaWNlKGkqc0luLCAoaStuKSpzSW4pO1xuICAgICAgICAgICAgY29uc3QgYjIgPSBidWZmMi5zbGljZShpKnNJbiwgKGkrbikqc0luKTtcblxuICAgICAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiQUxMT0NcIiwgdmFyOiAwLCBsZW46IHNNaWQqbn0pO1xuICAgICAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiU0VUXCIsIHZhcjogMCwgYnVmZjogYjF9KTtcbiAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkFMTE9DXCIsIHZhcjogMSwgbGVuOiBzTWlkKm59KTtcbiAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIlNFVFwiLCB2YXI6IDEsIGJ1ZmY6IGIyfSk7XG4gICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJBTExPQ1NFVFwiLCB2YXI6IDIsIGJ1ZmY6IGZpcnN0Q2h1bmt9KTtcbiAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkFMTE9DU0VUXCIsIHZhcjogMywgYnVmZjogaW5jfSk7XG4gICAgICAgICAgICBpZiAoZm5JbjJNaWQpIHtcbiAgICAgICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJDQUxMXCIsIGZuTmFtZTpmbkluMk1pZCwgcGFyYW1zOiBbe3ZhcjowfSwge3ZhbDogbn0sIHt2YXI6IDB9XX0pO1xuICAgICAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkNBTExcIiwgZm5OYW1lOmZuSW4yTWlkLCBwYXJhbXM6IFt7dmFyOjF9LCB7dmFsOiBufSwge3ZhcjogMX1dfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJDQUxMXCIsIGZuTmFtZTogZm5OYW1lLCBwYXJhbXM6IFtcbiAgICAgICAgICAgICAgICB7dmFyOiAwfSxcbiAgICAgICAgICAgICAgICB7dmFyOiAxfSxcbiAgICAgICAgICAgICAgICB7dmFsOiBufSxcbiAgICAgICAgICAgICAgICB7dmFyOiAyfSxcbiAgICAgICAgICAgICAgICB7dmFyOiAzfSxcbiAgICAgICAgICAgICAgICB7dmFsOiBGci5zfSxcbiAgICAgICAgICAgIF19KTtcbiAgICAgICAgICAgIGlmIChmbk1pZDJPdXQpIHtcbiAgICAgICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJDQUxMXCIsIGZuTmFtZTpmbk1pZDJPdXQsIHBhcmFtczogW3t2YXI6MH0sIHt2YWw6IG59LCB7dmFyOiAwfV19KTtcbiAgICAgICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJDQUxMXCIsIGZuTmFtZTpmbk1pZDJPdXQsIHBhcmFtczogW3t2YXI6MX0sIHt2YWw6IG59LCB7dmFyOiAxfV19KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkdFVFwiLCBvdXQ6IDAsIHZhcjogMCwgbGVuOiBuKnNPdXR9KTtcbiAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkdFVFwiLCBvdXQ6IDEsIHZhcjogMSwgbGVuOiBuKnNPdXR9KTtcbiAgICAgICAgICAgIG9wUHJvbWlzZXMucHVzaChcbiAgICAgICAgICAgICAgICB0bS5xdWV1ZUFjdGlvbih0YXNrKS50aGVuKCAocikgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZGVidWcoYCR7bG9nZ2VyVHh0fTogZmZ0Sm9pbkV4dCBFbmQ6ICR7aX0vJHtuUG9pbnRzfWApO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcjtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IFByb21pc2UuYWxsKG9wUHJvbWlzZXMpO1xuXG4gICAgICAgIGxldCBmdWxsQnVmZk91dDE7XG4gICAgICAgIGxldCBmdWxsQnVmZk91dDI7XG4gICAgICAgIGlmIChuUG9pbnRzICogc091dCA+IDE8PDI4KSB7XG4gICAgICAgICAgICBmdWxsQnVmZk91dDEgPSBuZXcgQmlnQnVmZmVyKG5Qb2ludHMqc091dCk7XG4gICAgICAgICAgICBmdWxsQnVmZk91dDIgPSBuZXcgQmlnQnVmZmVyKG5Qb2ludHMqc091dCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBmdWxsQnVmZk91dDEgPSBuZXcgVWludDhBcnJheShuUG9pbnRzKnNPdXQpO1xuICAgICAgICAgICAgZnVsbEJ1ZmZPdXQyID0gbmV3IFVpbnQ4QXJyYXkoblBvaW50cypzT3V0KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBwID0wO1xuICAgICAgICBmb3IgKGxldCBpPTA7IGk8cmVzdWx0Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBmdWxsQnVmZk91dDEuc2V0KHJlc3VsdFtpXVswXSwgcCk7XG4gICAgICAgICAgICBmdWxsQnVmZk91dDIuc2V0KHJlc3VsdFtpXVsxXSwgcCk7XG4gICAgICAgICAgICBwKz1yZXN1bHRbaV1bMF0uYnl0ZUxlbmd0aDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBbZnVsbEJ1ZmZPdXQxLCBmdWxsQnVmZk91dDJdO1xuICAgIH1cblxuXG4gICAgRy5mZnQgPSBhc3luYyBmdW5jdGlvbihidWZmLCBpblR5cGUsIG91dFR5cGUsIGxvZ2dlciwgbG9nZ2VyVHh0KSB7XG4gICAgICAgIHJldHVybiBhd2FpdCBfZmZ0KGJ1ZmYsIGZhbHNlLCBpblR5cGUsIG91dFR5cGUsIGxvZ2dlciwgbG9nZ2VyVHh0KTtcbiAgICB9O1xuXG4gICAgRy5pZmZ0ID0gYXN5bmMgZnVuY3Rpb24oYnVmZiwgaW5UeXBlLCBvdXRUeXBlLCBsb2dnZXIsIGxvZ2dlclR4dCkge1xuICAgICAgICByZXR1cm4gYXdhaXQgX2ZmdChidWZmLCB0cnVlLCBpblR5cGUsIG91dFR5cGUsIGxvZ2dlciwgbG9nZ2VyVHh0KTtcbiAgICB9O1xuXG4gICAgRy5sYWdyYW5nZUV2YWx1YXRpb25zID0gYXN5bmMgZnVuY3Rpb24gKGJ1ZmYsIGluVHlwZSwgb3V0VHlwZSwgbG9nZ2VyLCBsb2dnZXJUeHQpIHtcbiAgICAgICAgaW5UeXBlID0gaW5UeXBlIHx8IFwiYWZmaW5lXCI7XG4gICAgICAgIG91dFR5cGUgPSBvdXRUeXBlIHx8IFwiYWZmaW5lXCI7XG5cbiAgICAgICAgbGV0IHNJbjtcbiAgICAgICAgaWYgKGdyb3VwTmFtZSA9PSBcIkcxXCIpIHtcbiAgICAgICAgICAgIGlmIChpblR5cGUgPT0gXCJhZmZpbmVcIikge1xuICAgICAgICAgICAgICAgIHNJbiA9IEcuRi5uOCoyO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBzSW4gPSBHLkYubjgqMztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChncm91cE5hbWUgPT0gXCJHMlwiKSB7XG4gICAgICAgICAgICBpZiAoaW5UeXBlID09IFwiYWZmaW5lXCIpIHtcbiAgICAgICAgICAgICAgICBzSW4gPSBHLkYubjgqMjtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgc0luID0gRy5GLm44KjM7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoZ3JvdXBOYW1lID09IFwiRnJcIikge1xuICAgICAgICAgICAgc0luID0gRnIubjg7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIGdyb3VwXCIpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgblBvaW50cyA9IGJ1ZmYuYnl0ZUxlbmd0aCAvc0luO1xuICAgICAgICBjb25zdCBiaXRzID0gbG9nMihuUG9pbnRzKTtcblxuICAgICAgICBpZiAoKDIgKiogYml0cykqc0luICE9IGJ1ZmYuYnl0ZUxlbmd0aCkge1xuICAgICAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmVycm9yKFwibGFncmFuZ2VFdmFsdWF0aW9ucyBpaW52YWxpZCBpbnB1dCBzaXplXCIpO1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwibGFncmFuZ2VFdmFsdWF0aW9ucyBpbnZhbGlkIElucHV0IHNpemVcIik7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoYml0cyA8PSBGci5zKSB7XG4gICAgICAgICAgICByZXR1cm4gYXdhaXQgRy5pZmZ0KGJ1ZmYsIGluVHlwZSwgb3V0VHlwZSwgbG9nZ2VyLCBsb2dnZXJUeHQpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGJpdHMgPiBGci5zKzEpIHtcbiAgICAgICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5lcnJvcihcImxhZ3JhbmdlRXZhbHVhdGlvbnMgaW5wdXQgdG9vIGJpZ1wiKTtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcImxhZ3JhbmdlRXZhbHVhdGlvbnMgaW5wdXQgdG9vIGJpZ1wiKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCB0MCA9IGJ1ZmYuc2xpY2UoMCwgYnVmZi5ieXRlTGVuZ3RoLzIpO1xuICAgICAgICBsZXQgdDEgPSBidWZmLnNsaWNlKGJ1ZmYuYnl0ZUxlbmd0aC8yLCBidWZmLmJ5dGVMZW5ndGgpO1xuXG5cbiAgICAgICAgY29uc3Qgc2hpZnRUb1NtYWxsTSA9IEZyLmV4cChGci5zaGlmdCwgblBvaW50cy8yKTtcbiAgICAgICAgY29uc3Qgc0NvbnN0ID0gRnIuaW52KCBGci5zdWIoRnIub25lLCBzaGlmdFRvU21hbGxNKSk7XG5cbiAgICAgICAgW3QwLCB0MV0gPSBhd2FpdCBfZmZ0Sm9pbkV4dCh0MCwgdDEsIFwicHJlcGFyZUxhZ3JhbmdlRXZhbHVhdGlvblwiLCBzQ29uc3QsIEZyLnNoaWZ0SW52LCBpblR5cGUsIFwiamFjb2JpYW5cIiwgbG9nZ2VyLCBsb2dnZXJUeHQgKyBcIiBwcmVwXCIpO1xuXG4gICAgICAgIGNvbnN0IHByb21pc2VzID0gW107XG5cbiAgICAgICAgcHJvbWlzZXMucHVzaCggX2ZmdCh0MCwgdHJ1ZSwgXCJqYWNvYmlhblwiLCBvdXRUeXBlLCBsb2dnZXIsIGxvZ2dlclR4dCArIFwiIHQwXCIpKTtcbiAgICAgICAgcHJvbWlzZXMucHVzaCggX2ZmdCh0MSwgdHJ1ZSwgXCJqYWNvYmlhblwiLCBvdXRUeXBlLCBsb2dnZXIsIGxvZ2dlclR4dCArIFwiIHQxXCIpKTtcblxuICAgICAgICBbdDAsIHQxXSA9IGF3YWl0IFByb21pc2UuYWxsKHByb21pc2VzKTtcblxuICAgICAgICBsZXQgYnVmZk91dDtcbiAgICAgICAgaWYgKHQwLmJ5dGVMZW5ndGggPiAoMTw8MjgpKSB7XG4gICAgICAgICAgICBidWZmT3V0ID0gbmV3IEJpZ0J1ZmZlcih0MC5ieXRlTGVuZ3RoKjIpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgYnVmZk91dCA9IG5ldyBVaW50OEFycmF5KHQwLmJ5dGVMZW5ndGgqMik7XG4gICAgICAgIH1cblxuICAgICAgICBidWZmT3V0LnNldCh0MCk7XG4gICAgICAgIGJ1ZmZPdXQuc2V0KHQxLCB0MC5ieXRlTGVuZ3RoKTtcblxuICAgICAgICByZXR1cm4gYnVmZk91dDtcbiAgICB9O1xuXG4gICAgRy5mZnRNaXggPSBhc3luYyBmdW5jdGlvbiBmZnRNaXgoYnVmZikge1xuICAgICAgICBjb25zdCBzRyA9IEcuRi5uOCozO1xuICAgICAgICBsZXQgZm5OYW1lLCBmbkZGVEpvaW47XG4gICAgICAgIGlmIChncm91cE5hbWUgPT0gXCJHMVwiKSB7XG4gICAgICAgICAgICBmbk5hbWUgPSBcImcxbV9mZnRNaXhcIjtcbiAgICAgICAgICAgIGZuRkZUSm9pbiA9IFwiZzFtX2ZmdEpvaW5cIjtcbiAgICAgICAgfSBlbHNlIGlmIChncm91cE5hbWUgPT0gXCJHMlwiKSB7XG4gICAgICAgICAgICBmbk5hbWUgPSBcImcybV9mZnRNaXhcIjtcbiAgICAgICAgICAgIGZuRkZUSm9pbiA9IFwiZzJtX2ZmdEpvaW5cIjtcbiAgICAgICAgfSBlbHNlIGlmIChncm91cE5hbWUgPT0gXCJGclwiKSB7XG4gICAgICAgICAgICBmbk5hbWUgPSBcImZybV9mZnRNaXhcIjtcbiAgICAgICAgICAgIGZuRkZUSm9pbiA9IFwiZnJtX2ZmdEpvaW5cIjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgZ3JvdXBcIik7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBuUG9pbnRzID0gTWF0aC5mbG9vcihidWZmLmJ5dGVMZW5ndGggLyBzRyk7XG4gICAgICAgIGNvbnN0IHBvd2VyID0gbG9nMihuUG9pbnRzKTtcblxuICAgICAgICBsZXQgbkNodW5rcyA9IDEgPDwgbG9nMih0bS5jb25jdXJyZW5jeSk7XG5cbiAgICAgICAgaWYgKG5Qb2ludHMgPD0gbkNodW5rcyoyKSBuQ2h1bmtzID0gMTtcblxuICAgICAgICBjb25zdCBwb2ludHNQZXJDaHVuayA9IG5Qb2ludHMgLyBuQ2h1bmtzO1xuXG4gICAgICAgIGNvbnN0IHBvd2VyQ2h1bmsgPSBsb2cyKHBvaW50c1BlckNodW5rKTtcblxuICAgICAgICBjb25zdCBvcFByb21pc2VzID0gW107XG4gICAgICAgIGZvciAobGV0IGk9MDsgaTxuQ2h1bmtzOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IHRhc2sgPSBbXTtcbiAgICAgICAgICAgIGNvbnN0IGIgPSBidWZmLnNsaWNlKChpKiBwb2ludHNQZXJDaHVuaykqc0csICgoaSsxKSogcG9pbnRzUGVyQ2h1bmspKnNHKTtcbiAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkFMTE9DU0VUXCIsIHZhcjogMCwgYnVmZjogYn0pO1xuICAgICAgICAgICAgZm9yIChsZXQgaj0xOyBqPD1wb3dlckNodW5rOyBqKyspIHtcbiAgICAgICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJDQUxMXCIsIGZuTmFtZTogZm5OYW1lLCBwYXJhbXM6IFtcbiAgICAgICAgICAgICAgICAgICAge3ZhcjogMH0sXG4gICAgICAgICAgICAgICAgICAgIHt2YWw6IHBvaW50c1BlckNodW5rfSxcbiAgICAgICAgICAgICAgICAgICAge3ZhbDogan1cbiAgICAgICAgICAgICAgICBdfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJHRVRcIiwgb3V0OiAwLCB2YXI6IDAsIGxlbjogcG9pbnRzUGVyQ2h1bmsqc0d9KTtcbiAgICAgICAgICAgIG9wUHJvbWlzZXMucHVzaChcbiAgICAgICAgICAgICAgICB0bS5xdWV1ZUFjdGlvbih0YXNrKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IFByb21pc2UuYWxsKG9wUHJvbWlzZXMpO1xuXG4gICAgICAgIGNvbnN0IGNodW5rcyA9IFtdO1xuICAgICAgICBmb3IgKGxldCBpPTA7IGk8cmVzdWx0Lmxlbmd0aDsgaSsrKSBjaHVua3NbaV0gPSByZXN1bHRbaV1bMF07XG5cblxuICAgICAgICBmb3IgKGxldCBpID0gcG93ZXJDaHVuaysxOyBpPD1wb3dlcjsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCBuR3JvdXBzID0gMSA8PCAocG93ZXIgLSBpKTtcbiAgICAgICAgICAgIGNvbnN0IG5DaHVua3NQZXJHcm91cCA9IG5DaHVua3MgLyBuR3JvdXBzO1xuICAgICAgICAgICAgY29uc3Qgb3BQcm9taXNlcyA9IFtdO1xuICAgICAgICAgICAgZm9yIChsZXQgaj0wOyBqPG5Hcm91cHM7IGorKykge1xuICAgICAgICAgICAgICAgIGZvciAobGV0IGs9MDsgayA8bkNodW5rc1Blckdyb3VwLzI7IGsrKykge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBmaXJzdCA9IEZyLmV4cCggRnIud1tpXSwgaypwb2ludHNQZXJDaHVuayk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGluYyA9IEZyLndbaV07XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG8xID0gaipuQ2h1bmtzUGVyR3JvdXAgKyBrO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBvMiA9IGoqbkNodW5rc1Blckdyb3VwICsgayArIG5DaHVua3NQZXJHcm91cC8yO1xuXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHRhc2sgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiQUxMT0NTRVRcIiwgdmFyOiAwLCBidWZmOiBjaHVua3NbbzFdfSk7XG4gICAgICAgICAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkFMTE9DU0VUXCIsIHZhcjogMSwgYnVmZjogY2h1bmtzW28yXX0pO1xuICAgICAgICAgICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJBTExPQ1NFVFwiLCB2YXI6IDIsIGJ1ZmY6IGZpcnN0fSk7XG4gICAgICAgICAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkFMTE9DU0VUXCIsIHZhcjogMywgYnVmZjogaW5jfSk7XG4gICAgICAgICAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkNBTExcIiwgZm5OYW1lOiBmbkZGVEpvaW4sICBwYXJhbXM6W1xuICAgICAgICAgICAgICAgICAgICAgICAge3ZhcjogMH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7dmFyOiAxfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHt2YWw6IHBvaW50c1BlckNodW5rfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHt2YXI6IDJ9LFxuICAgICAgICAgICAgICAgICAgICAgICAge3ZhcjogM31cbiAgICAgICAgICAgICAgICAgICAgXX0pO1xuICAgICAgICAgICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJHRVRcIiwgb3V0OiAwLCB2YXI6IDAsIGxlbjogcG9pbnRzUGVyQ2h1bmsqc0d9KTtcbiAgICAgICAgICAgICAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiR0VUXCIsIG91dDogMSwgdmFyOiAxLCBsZW46IHBvaW50c1BlckNodW5rKnNHfSk7XG4gICAgICAgICAgICAgICAgICAgIG9wUHJvbWlzZXMucHVzaCh0bS5xdWV1ZUFjdGlvbih0YXNrKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCByZXMgPSBhd2FpdCBQcm9taXNlLmFsbChvcFByb21pc2VzKTtcbiAgICAgICAgICAgIGZvciAobGV0IGo9MDsgajxuR3JvdXBzOyBqKyspIHtcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBrPTA7IGsgPG5DaHVua3NQZXJHcm91cC8yOyBrKyspIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbzEgPSBqKm5DaHVua3NQZXJHcm91cCArIGs7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG8yID0gaipuQ2h1bmtzUGVyR3JvdXAgKyBrICsgbkNodW5rc1Blckdyb3VwLzI7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlc0NodW5rID0gcmVzLnNoaWZ0KCk7XG4gICAgICAgICAgICAgICAgICAgIGNodW5rc1tvMV0gPSByZXNDaHVua1swXTtcbiAgICAgICAgICAgICAgICAgICAgY2h1bmtzW28yXSA9IHJlc0NodW5rWzFdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBmdWxsQnVmZk91dDtcbiAgICAgICAgaWYgKGJ1ZmYgaW5zdGFuY2VvZiBCaWdCdWZmZXIpIHtcbiAgICAgICAgICAgIGZ1bGxCdWZmT3V0ID0gbmV3IEJpZ0J1ZmZlcihuUG9pbnRzKnNHKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGZ1bGxCdWZmT3V0ID0gbmV3IFVpbnQ4QXJyYXkoblBvaW50cypzRyk7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IHAgPTA7XG4gICAgICAgIGZvciAobGV0IGk9MDsgaTxuQ2h1bmtzOyBpKyspIHtcbiAgICAgICAgICAgIGZ1bGxCdWZmT3V0LnNldChjaHVua3NbaV0sIHApO1xuICAgICAgICAgICAgcCs9Y2h1bmtzW2ldLmJ5dGVMZW5ndGg7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZnVsbEJ1ZmZPdXQ7XG4gICAgfTtcblxuICAgIEcuZmZ0Sm9pbiA9IGFzeW5jIGZ1bmN0aW9uIGZmdEpvaW4oYnVmZjEsIGJ1ZmYyLCBmaXJzdCwgaW5jKSB7XG4gICAgICAgIGNvbnN0IHNHID0gRy5GLm44KjM7XG4gICAgICAgIGxldCBmbk5hbWU7XG4gICAgICAgIGlmIChncm91cE5hbWUgPT0gXCJHMVwiKSB7XG4gICAgICAgICAgICBmbk5hbWUgPSBcImcxbV9mZnRKb2luXCI7XG4gICAgICAgIH0gZWxzZSBpZiAoZ3JvdXBOYW1lID09IFwiRzJcIikge1xuICAgICAgICAgICAgZm5OYW1lID0gXCJnMm1fZmZ0Sm9pblwiO1xuICAgICAgICB9IGVsc2UgaWYgKGdyb3VwTmFtZSA9PSBcIkZyXCIpIHtcbiAgICAgICAgICAgIGZuTmFtZSA9IFwiZnJtX2ZmdEpvaW5cIjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgZ3JvdXBcIik7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoYnVmZjEuYnl0ZUxlbmd0aCAhPSBidWZmMi5ieXRlTGVuZ3RoKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIGJ1ZmZlciBzaXplXCIpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG5Qb2ludHMgPSBNYXRoLmZsb29yKGJ1ZmYxLmJ5dGVMZW5ndGggLyBzRyk7XG4gICAgICAgIGlmIChuUG9pbnRzICE9IDEgPDwgbG9nMihuUG9pbnRzKSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBudW1iZXIgb2YgcG9pbnRzXCIpO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IG5DaHVua3MgPSAxIDw8IGxvZzIodG0uY29uY3VycmVuY3kpO1xuICAgICAgICBpZiAoblBvaW50cyA8PSBuQ2h1bmtzKjIpIG5DaHVua3MgPSAxO1xuXG4gICAgICAgIGNvbnN0IHBvaW50c1BlckNodW5rID0gblBvaW50cyAvIG5DaHVua3M7XG5cblxuICAgICAgICBjb25zdCBvcFByb21pc2VzID0gW107XG4gICAgICAgIGZvciAobGV0IGk9MDsgaTxuQ2h1bmtzOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IHRhc2sgPSBbXTtcblxuICAgICAgICAgICAgY29uc3QgZmlyc3RDaHVuayA9IEZyLm11bChmaXJzdCwgRnIuZXhwKGluYywgaSpwb2ludHNQZXJDaHVuaykpO1xuICAgICAgICAgICAgY29uc3QgYjEgPSBidWZmMS5zbGljZSgoaSogcG9pbnRzUGVyQ2h1bmspKnNHLCAoKGkrMSkqIHBvaW50c1BlckNodW5rKSpzRyk7XG4gICAgICAgICAgICBjb25zdCBiMiA9IGJ1ZmYyLnNsaWNlKChpKiBwb2ludHNQZXJDaHVuaykqc0csICgoaSsxKSogcG9pbnRzUGVyQ2h1bmspKnNHKTtcbiAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkFMTE9DU0VUXCIsIHZhcjogMCwgYnVmZjogYjF9KTtcbiAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkFMTE9DU0VUXCIsIHZhcjogMSwgYnVmZjogYjJ9KTtcbiAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkFMTE9DU0VUXCIsIHZhcjogMiwgYnVmZjogZmlyc3RDaHVua30pO1xuICAgICAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiQUxMT0NTRVRcIiwgdmFyOiAzLCBidWZmOiBpbmN9KTtcbiAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkNBTExcIiwgZm5OYW1lOiBmbk5hbWUsIHBhcmFtczogW1xuICAgICAgICAgICAgICAgIHt2YXI6IDB9LFxuICAgICAgICAgICAgICAgIHt2YXI6IDF9LFxuICAgICAgICAgICAgICAgIHt2YWw6IHBvaW50c1BlckNodW5rfSxcbiAgICAgICAgICAgICAgICB7dmFyOiAyfSxcbiAgICAgICAgICAgICAgICB7dmFyOiAzfVxuICAgICAgICAgICAgXX0pO1xuICAgICAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiR0VUXCIsIG91dDogMCwgdmFyOiAwLCBsZW46IHBvaW50c1BlckNodW5rKnNHfSk7XG4gICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJHRVRcIiwgb3V0OiAxLCB2YXI6IDEsIGxlbjogcG9pbnRzUGVyQ2h1bmsqc0d9KTtcbiAgICAgICAgICAgIG9wUHJvbWlzZXMucHVzaChcbiAgICAgICAgICAgICAgICB0bS5xdWV1ZUFjdGlvbih0YXNrKVxuICAgICAgICAgICAgKTtcblxuICAgICAgICB9XG5cblxuICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBQcm9taXNlLmFsbChvcFByb21pc2VzKTtcblxuICAgICAgICBsZXQgZnVsbEJ1ZmZPdXQxO1xuICAgICAgICBsZXQgZnVsbEJ1ZmZPdXQyO1xuICAgICAgICBpZiAoYnVmZjEgaW5zdGFuY2VvZiBCaWdCdWZmZXIpIHtcbiAgICAgICAgICAgIGZ1bGxCdWZmT3V0MSA9IG5ldyBCaWdCdWZmZXIoblBvaW50cypzRyk7XG4gICAgICAgICAgICBmdWxsQnVmZk91dDIgPSBuZXcgQmlnQnVmZmVyKG5Qb2ludHMqc0cpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZnVsbEJ1ZmZPdXQxID0gbmV3IFVpbnQ4QXJyYXkoblBvaW50cypzRyk7XG4gICAgICAgICAgICBmdWxsQnVmZk91dDIgPSBuZXcgVWludDhBcnJheShuUG9pbnRzKnNHKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBwID0wO1xuICAgICAgICBmb3IgKGxldCBpPTA7IGk8cmVzdWx0Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBmdWxsQnVmZk91dDEuc2V0KHJlc3VsdFtpXVswXSwgcCk7XG4gICAgICAgICAgICBmdWxsQnVmZk91dDIuc2V0KHJlc3VsdFtpXVsxXSwgcCk7XG4gICAgICAgICAgICBwKz1yZXN1bHRbaV1bMF0uYnl0ZUxlbmd0aDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBbZnVsbEJ1ZmZPdXQxLCBmdWxsQnVmZk91dDJdO1xuICAgIH07XG5cblxuXG4gICAgRy5mZnRGaW5hbCA9ICBhc3luYyBmdW5jdGlvbiBmZnRGaW5hbChidWZmLCBmYWN0b3IpIHtcbiAgICAgICAgY29uc3Qgc0cgPSBHLkYubjgqMztcbiAgICAgICAgY29uc3Qgc0dvdXQgPSBHLkYubjgqMjtcbiAgICAgICAgbGV0IGZuTmFtZSwgZm5Ub0FmZmluZTtcbiAgICAgICAgaWYgKGdyb3VwTmFtZSA9PSBcIkcxXCIpIHtcbiAgICAgICAgICAgIGZuTmFtZSA9IFwiZzFtX2ZmdEZpbmFsXCI7XG4gICAgICAgICAgICBmblRvQWZmaW5lID0gXCJnMW1fYmF0Y2hUb0FmZmluZVwiO1xuICAgICAgICB9IGVsc2UgaWYgKGdyb3VwTmFtZSA9PSBcIkcyXCIpIHtcbiAgICAgICAgICAgIGZuTmFtZSA9IFwiZzJtX2ZmdEZpbmFsXCI7XG4gICAgICAgICAgICBmblRvQWZmaW5lID0gXCJnMm1fYmF0Y2hUb0FmZmluZVwiO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBncm91cFwiKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IG5Qb2ludHMgPSBNYXRoLmZsb29yKGJ1ZmYuYnl0ZUxlbmd0aCAvIHNHKTtcbiAgICAgICAgaWYgKG5Qb2ludHMgIT0gMSA8PCBsb2cyKG5Qb2ludHMpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIG51bWJlciBvZiBwb2ludHNcIik7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBwb2ludHNQZXJDaHVuayA9IE1hdGguZmxvb3IoblBvaW50cyAvIHRtLmNvbmN1cnJlbmN5KTtcblxuICAgICAgICBjb25zdCBvcFByb21pc2VzID0gW107XG4gICAgICAgIGZvciAobGV0IGk9MDsgaTx0bS5jb25jdXJyZW5jeTsgaSsrKSB7XG4gICAgICAgICAgICBsZXQgbjtcbiAgICAgICAgICAgIGlmIChpPCB0bS5jb25jdXJyZW5jeS0xKSB7XG4gICAgICAgICAgICAgICAgbiA9IHBvaW50c1BlckNodW5rO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBuID0gblBvaW50cyAtIGkqcG9pbnRzUGVyQ2h1bms7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobj09MCkgY29udGludWU7XG4gICAgICAgICAgICBjb25zdCB0YXNrID0gW107XG4gICAgICAgICAgICBjb25zdCBiID0gYnVmZi5zbGljZSgoaSogcG9pbnRzUGVyQ2h1bmspKnNHLCAoaSpwb2ludHNQZXJDaHVuaytuKSpzRyk7XG4gICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJBTExPQ1NFVFwiLCB2YXI6IDAsIGJ1ZmY6IGJ9KTtcbiAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkFMTE9DU0VUXCIsIHZhcjogMSwgYnVmZjogZmFjdG9yfSk7XG4gICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJDQUxMXCIsIGZuTmFtZTogZm5OYW1lLCBwYXJhbXM6IFtcbiAgICAgICAgICAgICAgICB7dmFyOiAwfSxcbiAgICAgICAgICAgICAgICB7dmFsOiBufSxcbiAgICAgICAgICAgICAgICB7dmFyOiAxfSxcbiAgICAgICAgICAgIF19KTtcbiAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkNBTExcIiwgZm5OYW1lOiBmblRvQWZmaW5lLCBwYXJhbXM6IFtcbiAgICAgICAgICAgICAgICB7dmFyOiAwfSxcbiAgICAgICAgICAgICAgICB7dmFsOiBufSxcbiAgICAgICAgICAgICAgICB7dmFyOiAwfSxcbiAgICAgICAgICAgIF19KTtcbiAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkdFVFwiLCBvdXQ6IDAsIHZhcjogMCwgbGVuOiBuKnNHb3V0fSk7XG4gICAgICAgICAgICBvcFByb21pc2VzLnB1c2goXG4gICAgICAgICAgICAgICAgdG0ucXVldWVBY3Rpb24odGFzaylcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IFByb21pc2UuYWxsKG9wUHJvbWlzZXMpO1xuXG4gICAgICAgIGxldCBmdWxsQnVmZk91dDtcbiAgICAgICAgaWYgKGJ1ZmYgaW5zdGFuY2VvZiBCaWdCdWZmZXIpIHtcbiAgICAgICAgICAgIGZ1bGxCdWZmT3V0ID0gbmV3IEJpZ0J1ZmZlcihuUG9pbnRzKnNHb3V0KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGZ1bGxCdWZmT3V0ID0gbmV3IFVpbnQ4QXJyYXkoblBvaW50cypzR291dCk7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgcCA9MDtcbiAgICAgICAgZm9yIChsZXQgaT1yZXN1bHQubGVuZ3RoLTE7IGk+PTA7IGktLSkge1xuICAgICAgICAgICAgZnVsbEJ1ZmZPdXQuc2V0KHJlc3VsdFtpXVswXSwgcCk7XG4gICAgICAgICAgICBwKz1yZXN1bHRbaV1bMF0uYnl0ZUxlbmd0aDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBmdWxsQnVmZk91dDtcbiAgICB9O1xufVxuXG5hc3luYyBmdW5jdGlvbiBidWlsZEVuZ2luZShwYXJhbXMpIHtcblxuICAgIGNvbnN0IHRtID0gYXdhaXQgYnVpbGRUaHJlYWRNYW5hZ2VyKHBhcmFtcy53YXNtLCBwYXJhbXMuc2luZ2xlVGhyZWFkKTtcblxuXG4gICAgY29uc3QgY3VydmUgPSB7fTtcblxuICAgIGN1cnZlLnEgPSBlKHBhcmFtcy53YXNtLnEudG9TdHJpbmcoKSk7XG4gICAgY3VydmUuciA9IGUocGFyYW1zLndhc20uci50b1N0cmluZygpKTtcbiAgICBjdXJ2ZS5uYW1lID0gcGFyYW1zLm5hbWU7XG4gICAgY3VydmUudG0gPSB0bTtcbiAgICBjdXJ2ZS5wcmVQU2l6ZSA9IHBhcmFtcy53YXNtLnByZVBTaXplO1xuICAgIGN1cnZlLnByZVFTaXplID0gcGFyYW1zLndhc20ucHJlUVNpemU7XG4gICAgY3VydmUuRnIgPSBuZXcgV2FzbUZpZWxkMSh0bSwgXCJmcm1cIiwgcGFyYW1zLm44ciwgcGFyYW1zLnIpO1xuICAgIGN1cnZlLkYxID0gbmV3IFdhc21GaWVsZDEodG0sIFwiZjFtXCIsIHBhcmFtcy5uOHEsIHBhcmFtcy5xKTtcbiAgICBjdXJ2ZS5GMiA9IG5ldyBXYXNtRmllbGQyKHRtLCBcImYybVwiLCBjdXJ2ZS5GMSk7XG4gICAgY3VydmUuRzEgPSBuZXcgV2FzbUN1cnZlKHRtLCBcImcxbVwiLCBjdXJ2ZS5GMSwgcGFyYW1zLndhc20ucEcxZ2VuLCBwYXJhbXMud2FzbS5wRzFiLCBwYXJhbXMuY29mYWN0b3JHMSk7XG4gICAgY3VydmUuRzIgPSBuZXcgV2FzbUN1cnZlKHRtLCBcImcybVwiLCBjdXJ2ZS5GMiwgcGFyYW1zLndhc20ucEcyZ2VuLCBwYXJhbXMud2FzbS5wRzJiLCBwYXJhbXMuY29mYWN0b3JHMik7XG4gICAgY3VydmUuRjYgPSBuZXcgV2FzbUZpZWxkMyh0bSwgXCJmNm1cIiwgY3VydmUuRjIpO1xuICAgIGN1cnZlLkYxMiA9IG5ldyBXYXNtRmllbGQyKHRtLCBcImZ0bVwiLCBjdXJ2ZS5GNik7XG5cbiAgICBjdXJ2ZS5HdCA9IGN1cnZlLkYxMjtcblxuICAgIGJ1aWxkQmF0Y2hBcHBseUtleShjdXJ2ZSwgXCJHMVwiKTtcbiAgICBidWlsZEJhdGNoQXBwbHlLZXkoY3VydmUsIFwiRzJcIik7XG4gICAgYnVpbGRCYXRjaEFwcGx5S2V5KGN1cnZlLCBcIkZyXCIpO1xuXG4gICAgYnVpbGRNdWx0aWV4cChjdXJ2ZSwgXCJHMVwiKTtcbiAgICBidWlsZE11bHRpZXhwKGN1cnZlLCBcIkcyXCIpO1xuXG4gICAgYnVpbGRGRlQoY3VydmUsIFwiRzFcIik7XG4gICAgYnVpbGRGRlQoY3VydmUsIFwiRzJcIik7XG4gICAgYnVpbGRGRlQoY3VydmUsIFwiRnJcIik7XG5cbiAgICBidWlsZFBhaXJpbmcoY3VydmUpO1xuXG4gICAgY3VydmUuYXJyYXkyYnVmZmVyID0gZnVuY3Rpb24oYXJyLCBzRykge1xuICAgICAgICBjb25zdCBidWZmID0gbmV3IFVpbnQ4QXJyYXkoc0cqYXJyLmxlbmd0aCk7XG5cbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPGFyci5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgYnVmZi5zZXQoYXJyW2ldLCBpKnNHKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBidWZmO1xuICAgIH07XG5cbiAgICBjdXJ2ZS5idWZmZXIyYXJyYXkgPSBmdW5jdGlvbihidWZmICwgc0cpIHtcbiAgICAgICAgY29uc3Qgbj0gYnVmZi5ieXRlTGVuZ3RoIC8gc0c7XG4gICAgICAgIGNvbnN0IGFyciA9IG5ldyBBcnJheShuKTtcbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPG47IGkrKykge1xuICAgICAgICAgICAgYXJyW2ldID0gYnVmZi5zbGljZShpKnNHLCBpKnNHK3NHKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYXJyO1xuICAgIH07XG5cbiAgICByZXR1cm4gY3VydmU7XG59XG5cbi8qXG4gICAgQ29weXJpZ2h0IDIwMTkgMEtJTVMgYXNzb2NpYXRpb24uXG5cbiAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB3YXNtYnVpbGRlclxuXG4gICAgd2FzbWJ1aWxkZXIgaXMgYSBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0XG4gICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxuICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG5cbiAgICB3YXNtYnVpbGRlciBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVFxuICAgIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWVxuICAgIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpY1xuICAgIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cblxuICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gICAgYWxvbmcgd2l0aCB3YXNtYnVpbGRlci4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cbiovXG5cbmZ1bmN0aW9uIHRvTnVtYmVyKG4pIHtcbiAgICByZXR1cm4gQmlnSW50KG4pO1xufVxuXG5mdW5jdGlvbiBpc05lZ2F0aXZlKG4pIHtcbiAgICByZXR1cm4gbiA8IDBuO1xufVxuXG5mdW5jdGlvbiBpc1plcm8obikge1xuICAgIHJldHVybiBuID09PSAwbjtcbn1cblxuZnVuY3Rpb24gYml0TGVuZ3RoKG4pIHtcbiAgICBpZiAoaXNOZWdhdGl2ZShuKSkge1xuICAgICAgICByZXR1cm4gbi50b1N0cmluZygyKS5sZW5ndGggLSAxOyAvLyBkaXNjYXJkIHRoZSAtIHNpZ25cbiAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gbi50b1N0cmluZygyKS5sZW5ndGg7XG4gICAgfVxufVxuXG5mdW5jdGlvbiB1MzIobikge1xuICAgIGNvbnN0IGIgPSBbXTtcbiAgICBjb25zdCB2ID0gdG9OdW1iZXIobik7XG4gICAgYi5wdXNoKE51bWJlcih2ICYgMHhGRm4pKTtcbiAgICBiLnB1c2goTnVtYmVyKHYgPj4gOG4gJiAweEZGbikpO1xuICAgIGIucHVzaChOdW1iZXIodiA+PiAxNm4gJiAweEZGbikpO1xuICAgIGIucHVzaChOdW1iZXIodiA+PiAyNG4gJiAweEZGbikpO1xuICAgIHJldHVybiBiO1xufVxuXG5mdW5jdGlvbiB0b1VURjhBcnJheShzdHIpIHtcbiAgICB2YXIgdXRmOCA9IFtdO1xuICAgIGZvciAodmFyIGk9MDsgaSA8IHN0ci5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgY2hhcmNvZGUgPSBzdHIuY2hhckNvZGVBdChpKTtcbiAgICAgICAgaWYgKGNoYXJjb2RlIDwgMHg4MCkgdXRmOC5wdXNoKGNoYXJjb2RlKTtcbiAgICAgICAgZWxzZSBpZiAoY2hhcmNvZGUgPCAweDgwMCkge1xuICAgICAgICAgICAgdXRmOC5wdXNoKDB4YzAgfCAoY2hhcmNvZGUgPj4gNiksXG4gICAgICAgICAgICAgICAgMHg4MCB8IChjaGFyY29kZSAmIDB4M2YpKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChjaGFyY29kZSA8IDB4ZDgwMCB8fCBjaGFyY29kZSA+PSAweGUwMDApIHtcbiAgICAgICAgICAgIHV0ZjgucHVzaCgweGUwIHwgKGNoYXJjb2RlID4+IDEyKSxcbiAgICAgICAgICAgICAgICAweDgwIHwgKChjaGFyY29kZT4+NikgJiAweDNmKSxcbiAgICAgICAgICAgICAgICAweDgwIHwgKGNoYXJjb2RlICYgMHgzZikpO1xuICAgICAgICB9XG4gICAgICAgIC8vIHN1cnJvZ2F0ZSBwYWlyXG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgaSsrO1xuICAgICAgICAgICAgLy8gVVRGLTE2IGVuY29kZXMgMHgxMDAwMC0weDEwRkZGRiBieVxuICAgICAgICAgICAgLy8gc3VidHJhY3RpbmcgMHgxMDAwMCBhbmQgc3BsaXR0aW5nIHRoZVxuICAgICAgICAgICAgLy8gMjAgYml0cyBvZiAweDAtMHhGRkZGRiBpbnRvIHR3byBoYWx2ZXNcbiAgICAgICAgICAgIGNoYXJjb2RlID0gMHgxMDAwMCArICgoKGNoYXJjb2RlICYgMHgzZmYpPDwxMClcbiAgICAgICAgICAgICAgICAgICAgICB8IChzdHIuY2hhckNvZGVBdChpKSAmIDB4M2ZmKSk7XG4gICAgICAgICAgICB1dGY4LnB1c2goMHhmMCB8IChjaGFyY29kZSA+PjE4KSxcbiAgICAgICAgICAgICAgICAweDgwIHwgKChjaGFyY29kZT4+MTIpICYgMHgzZiksXG4gICAgICAgICAgICAgICAgMHg4MCB8ICgoY2hhcmNvZGU+PjYpICYgMHgzZiksXG4gICAgICAgICAgICAgICAgMHg4MCB8IChjaGFyY29kZSAmIDB4M2YpKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdXRmODtcbn1cblxuZnVuY3Rpb24gc3RyaW5nKHN0cikge1xuICAgIGNvbnN0IGJ5dGVzID0gdG9VVEY4QXJyYXkoc3RyKTtcbiAgICByZXR1cm4gWyAuLi52YXJ1aW50MzIoYnl0ZXMubGVuZ3RoKSwgLi4uYnl0ZXMgXTtcbn1cblxuZnVuY3Rpb24gdmFydWludChuKSB7XG4gICAgY29uc3QgY29kZSA9IFtdO1xuICAgIGxldCB2ID0gdG9OdW1iZXIobik7XG4gICAgaWYgKGlzTmVnYXRpdmUodikpIHRocm93IG5ldyBFcnJvcihcIk51bWJlciBjYW5ub3QgYmUgbmVnYXRpdmVcIik7XG4gICAgd2hpbGUgKCFpc1plcm8odikpIHtcbiAgICAgICAgY29kZS5wdXNoKE51bWJlcih2ICYgMHg3Rm4pKTtcbiAgICAgICAgdiA9IHYgPj4gN247XG4gICAgfVxuICAgIGlmIChjb2RlLmxlbmd0aD09MCkgY29kZS5wdXNoKDApO1xuICAgIGZvciAobGV0IGk9MDsgaTxjb2RlLmxlbmd0aC0xOyBpKyspIHtcbiAgICAgICAgY29kZVtpXSA9IGNvZGVbaV0gfCAweDgwO1xuICAgIH1cbiAgICByZXR1cm4gY29kZTtcbn1cblxuZnVuY3Rpb24gdmFyaW50KF9uKSB7XG4gICAgbGV0IG4sIHNpZ247XG4gICAgY29uc3QgYml0cyA9IGJpdExlbmd0aChfbik7XG4gICAgaWYgKF9uPDApIHtcbiAgICAgICAgc2lnbiA9IHRydWU7XG4gICAgICAgIG4gPSAoMW4gPDwgQmlnSW50KGJpdHMpKSArIF9uO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHNpZ24gPSBmYWxzZTtcbiAgICAgICAgbiA9IHRvTnVtYmVyKF9uKTtcbiAgICB9XG4gICAgY29uc3QgcGFkZGluZ0JpdHMgPSA3IC0gKGJpdHMgJSA3KTtcblxuICAgIGNvbnN0IHBhZGRpbmcgPSAoKDFuIDw8IEJpZ0ludChwYWRkaW5nQml0cykpIC0gMW4pIDw8IEJpZ0ludChiaXRzKTtcbiAgICBjb25zdCBwYWRkaW5nTWFzayA9ICgoMSA8PCAoNyAtIHBhZGRpbmdCaXRzKSktMSkgfCAweDgwO1xuXG4gICAgY29uc3QgY29kZSA9IHZhcnVpbnQobiArIHBhZGRpbmcpO1xuXG4gICAgaWYgKCFzaWduKSB7XG4gICAgICAgIGNvZGVbY29kZS5sZW5ndGgtMV0gPSBjb2RlW2NvZGUubGVuZ3RoLTFdICYgcGFkZGluZ01hc2s7XG4gICAgfVxuXG4gICAgcmV0dXJuIGNvZGU7XG59XG5cbmZ1bmN0aW9uIHZhcmludDMyKG4pIHtcbiAgICBsZXQgdiA9IHRvTnVtYmVyKG4pO1xuICAgIGlmICh2ID4gMHhGRkZGRkZGRm4pIHRocm93IG5ldyBFcnJvcihcIk51bWJlciB0b28gYmlnXCIpO1xuICAgIGlmICh2ID4gMHg3RkZGRkZGRm4pIHYgPSB2IC0gMHgxMDAwMDAwMDBuO1xuICAgIC8vIGJpZ0ludChcIi04MDAwMDAwMFwiLCAxNikgYXMgYmFzZTEwXG4gICAgaWYgKHYgPCAtMjE0NzQ4MzY0OG4pIHRocm93IG5ldyBFcnJvcihcIk51bWJlciB0b28gc21hbGxcIik7XG4gICAgcmV0dXJuIHZhcmludCh2KTtcbn1cblxuZnVuY3Rpb24gdmFyaW50NjQobikge1xuICAgIGxldCB2ID0gdG9OdW1iZXIobik7XG4gICAgaWYgKHYgPiAweEZGRkZGRkZGRkZGRkZGRkZuKSB0aHJvdyBuZXcgRXJyb3IoXCJOdW1iZXIgdG9vIGJpZ1wiKTtcbiAgICBpZiAodiA+IDB4N0ZGRkZGRkZGRkZGRkZGRm4pIHYgPSB2IC0gMHgxMDAwMDAwMDAwMDAwMDAwMG47XG4gICAgLy8gYmlnSW50KFwiLTgwMDAwMDAwMDAwMDAwMDBcIiwgMTYpIGFzIGJhc2UxMFxuICAgIGlmICh2IDwgLTkyMjMzNzIwMzY4NTQ3NzU4MDhuKSB0aHJvdyBuZXcgRXJyb3IoXCJOdW1iZXIgdG9vIHNtYWxsXCIpO1xuICAgIHJldHVybiB2YXJpbnQodik7XG59XG5cbmZ1bmN0aW9uIHZhcnVpbnQzMihuKSB7XG4gICAgbGV0IHYgPSB0b051bWJlcihuKTtcbiAgICBpZiAodiA+IDB4RkZGRkZGRkZuKSB0aHJvdyBuZXcgRXJyb3IoXCJOdW1iZXIgdG9vIGJpZ1wiKTtcbiAgICByZXR1cm4gdmFydWludCh2KTtcbn1cblxuZnVuY3Rpb24gdG9IZXhTdHJpbmcoYnl0ZUFycmF5KSB7XG4gICAgcmV0dXJuIEFycmF5LmZyb20oYnl0ZUFycmF5LCBmdW5jdGlvbihieXRlKSB7XG4gICAgICAgIHJldHVybiAoXCIwXCIgKyAoYnl0ZSAmIDB4RkYpLnRvU3RyaW5nKDE2KSkuc2xpY2UoLTIpO1xuICAgIH0pLmpvaW4oXCJcIik7XG59XG5cbi8qXG4gICAgQ29weXJpZ2h0IDIwMTkgMEtJTVMgYXNzb2NpYXRpb24uXG5cbiAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB3YXNtYnVpbGRlclxuXG4gICAgd2FzbWJ1aWxkZXIgaXMgYSBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0XG4gICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxuICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG5cbiAgICB3YXNtYnVpbGRlciBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVFxuICAgIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWVxuICAgIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpY1xuICAgIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cblxuICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gICAgYWxvbmcgd2l0aCB3YXNtYnVpbGRlci4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cbiovXG5cblxuY2xhc3MgQ29kZUJ1aWxkZXIge1xuICAgIGNvbnN0cnVjdG9yKGZ1bmMpIHtcbiAgICAgICAgdGhpcy5mdW5jID0gZnVuYztcbiAgICAgICAgdGhpcy5mdW5jdGlvbk5hbWUgPSBmdW5jLmZ1bmN0aW9uTmFtZTtcbiAgICAgICAgdGhpcy5tb2R1bGUgPSBmdW5jLm1vZHVsZTtcbiAgICB9XG5cbiAgICBzZXRMb2NhbChsb2NhbE5hbWUsIHZhbENvZGUpIHtcbiAgICAgICAgY29uc3QgaWR4ID0gdGhpcy5mdW5jLmxvY2FsSWR4QnlOYW1lW2xvY2FsTmFtZV07XG4gICAgICAgIGlmIChpZHggPT09IHVuZGVmaW5lZClcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgTG9jYWwgVmFyaWFibGUgbm90IGRlZmluZWQ6IEZ1bmN0aW9uOiAke3RoaXMuZnVuY3Rpb25OYW1lfSBsb2NhbDogJHtsb2NhbE5hbWV9IGApO1xuICAgICAgICByZXR1cm4gWy4uLnZhbENvZGUsIDB4MjEsIC4uLnZhcnVpbnQzMiggaWR4ICldO1xuICAgIH1cblxuICAgIHRlZUxvY2FsKGxvY2FsTmFtZSwgdmFsQ29kZSkge1xuICAgICAgICBjb25zdCBpZHggPSB0aGlzLmZ1bmMubG9jYWxJZHhCeU5hbWVbbG9jYWxOYW1lXTtcbiAgICAgICAgaWYgKGlkeCA9PT0gdW5kZWZpbmVkKVxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBMb2NhbCBWYXJpYWJsZSBub3QgZGVmaW5lZDogRnVuY3Rpb246ICR7dGhpcy5mdW5jdGlvbk5hbWV9IGxvY2FsOiAke2xvY2FsTmFtZX0gYCk7XG4gICAgICAgIHJldHVybiBbLi4udmFsQ29kZSwgMHgyMiwgLi4udmFydWludDMyKCBpZHggKV07XG4gICAgfVxuXG4gICAgZ2V0TG9jYWwobG9jYWxOYW1lKSB7XG4gICAgICAgIGNvbnN0IGlkeCA9IHRoaXMuZnVuYy5sb2NhbElkeEJ5TmFtZVtsb2NhbE5hbWVdO1xuICAgICAgICBpZiAoaWR4ID09PSB1bmRlZmluZWQpXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYExvY2FsIFZhcmlhYmxlIG5vdCBkZWZpbmVkOiBGdW5jdGlvbjogJHt0aGlzLmZ1bmN0aW9uTmFtZX0gbG9jYWw6ICR7bG9jYWxOYW1lfSBgKTtcbiAgICAgICAgcmV0dXJuIFsweDIwLCAuLi52YXJ1aW50MzIoIGlkeCApXTtcbiAgICB9XG5cbiAgICBpNjRfbG9hZDhfcyhpZHhDb2RlLCBfb2Zmc2V0LCBfYWxpZ24pIHtcbiAgICAgICAgY29uc3Qgb2Zmc2V0ID0gX29mZnNldCB8fCAwO1xuICAgICAgICBjb25zdCBhbGlnbiA9IChfYWxpZ24gPT09IHVuZGVmaW5lZCkgPyAwIDogX2FsaWduOyAgLy8gOCBiaXRzIGFsaWdubWVudCBieSBkZWZhdWx0XG4gICAgICAgIHJldHVybiBbLi4uaWR4Q29kZSwgMHgzMCwgYWxpZ24sIC4uLnZhcnVpbnQzMihvZmZzZXQpXTtcbiAgICB9XG5cbiAgICBpNjRfbG9hZDhfdShpZHhDb2RlLCBfb2Zmc2V0LCBfYWxpZ24pIHtcbiAgICAgICAgY29uc3Qgb2Zmc2V0ID0gX29mZnNldCB8fCAwO1xuICAgICAgICBjb25zdCBhbGlnbiA9IChfYWxpZ24gPT09IHVuZGVmaW5lZCkgPyAwIDogX2FsaWduOyAgLy8gOCBiaXRzIGFsaWdubWVudCBieSBkZWZhdWx0XG4gICAgICAgIHJldHVybiBbLi4uaWR4Q29kZSwgMHgzMSwgYWxpZ24sIC4uLnZhcnVpbnQzMihvZmZzZXQpXTtcbiAgICB9XG5cbiAgICBpNjRfbG9hZDE2X3MoaWR4Q29kZSwgX29mZnNldCwgX2FsaWduKSB7XG4gICAgICAgIGNvbnN0IG9mZnNldCA9IF9vZmZzZXQgfHwgMDtcbiAgICAgICAgY29uc3QgYWxpZ24gPSAoX2FsaWduID09PSB1bmRlZmluZWQpID8gMSA6IF9hbGlnbjsgIC8vIDE2IGJpdHMgYWxpZ25tZW50IGJ5IGRlZmF1bHRcbiAgICAgICAgcmV0dXJuIFsuLi5pZHhDb2RlLCAweDMyLCBhbGlnbiwgLi4udmFydWludDMyKG9mZnNldCldO1xuICAgIH1cblxuICAgIGk2NF9sb2FkMTZfdShpZHhDb2RlLCBfb2Zmc2V0LCBfYWxpZ24pIHtcbiAgICAgICAgY29uc3Qgb2Zmc2V0ID0gX29mZnNldCB8fCAwO1xuICAgICAgICBjb25zdCBhbGlnbiA9IChfYWxpZ24gPT09IHVuZGVmaW5lZCkgPyAxIDogX2FsaWduOyAgLy8gMTYgYml0cyBhbGlnbm1lbnQgYnkgZGVmYXVsdFxuICAgICAgICByZXR1cm4gWy4uLmlkeENvZGUsIDB4MzMsIGFsaWduLCAuLi52YXJ1aW50MzIob2Zmc2V0KV07XG4gICAgfVxuXG4gICAgaTY0X2xvYWQzMl9zKGlkeENvZGUsIF9vZmZzZXQsIF9hbGlnbikge1xuICAgICAgICBjb25zdCBvZmZzZXQgPSBfb2Zmc2V0IHx8IDA7XG4gICAgICAgIGNvbnN0IGFsaWduID0gKF9hbGlnbiA9PT0gdW5kZWZpbmVkKSA/IDIgOiBfYWxpZ247ICAvLyAzMiBiaXRzIGFsaWdubWVudCBieSBkZWZhdWx0XG4gICAgICAgIHJldHVybiBbLi4uaWR4Q29kZSwgMHgzNCwgYWxpZ24sIC4uLnZhcnVpbnQzMihvZmZzZXQpXTtcbiAgICB9XG5cbiAgICBpNjRfbG9hZDMyX3UoaWR4Q29kZSwgX29mZnNldCwgX2FsaWduKSB7XG4gICAgICAgIGNvbnN0IG9mZnNldCA9IF9vZmZzZXQgfHwgMDtcbiAgICAgICAgY29uc3QgYWxpZ24gPSAoX2FsaWduID09PSB1bmRlZmluZWQpID8gMiA6IF9hbGlnbjsgIC8vIDMyIGJpdHMgYWxpZ25tZW50IGJ5IGRlZmF1bHRcbiAgICAgICAgcmV0dXJuIFsuLi5pZHhDb2RlLCAweDM1LCBhbGlnbiwgLi4udmFydWludDMyKG9mZnNldCldO1xuICAgIH1cblxuICAgIGk2NF9sb2FkKGlkeENvZGUsIF9vZmZzZXQsIF9hbGlnbikge1xuICAgICAgICBjb25zdCBvZmZzZXQgPSBfb2Zmc2V0IHx8IDA7XG4gICAgICAgIGNvbnN0IGFsaWduID0gKF9hbGlnbiA9PT0gdW5kZWZpbmVkKSA/IDMgOiBfYWxpZ247ICAvLyA2NCBiaXRzIGFsaWdubWVudCBieSBkZWZhdWx0XG4gICAgICAgIHJldHVybiBbLi4uaWR4Q29kZSwgMHgyOSwgYWxpZ24sIC4uLnZhcnVpbnQzMihvZmZzZXQpXTtcbiAgICB9XG5cblxuICAgIGk2NF9zdG9yZShpZHhDb2RlLCBfb2Zmc2V0LCBfYWxpZ24sIF9jb2RlVmFsKSB7XG4gICAgICAgIGxldCBvZmZzZXQsIGFsaWduLCBjb2RlVmFsO1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShfb2Zmc2V0KSkge1xuICAgICAgICAgICAgb2Zmc2V0ID0gMDtcbiAgICAgICAgICAgIGFsaWduID0gMztcbiAgICAgICAgICAgIGNvZGVWYWwgPSBfb2Zmc2V0O1xuICAgICAgICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkoX2FsaWduKSkge1xuICAgICAgICAgICAgb2Zmc2V0ID0gX29mZnNldDtcbiAgICAgICAgICAgIGFsaWduID0gMztcbiAgICAgICAgICAgIGNvZGVWYWwgPSBfYWxpZ247XG4gICAgICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShfY29kZVZhbCkpIHtcbiAgICAgICAgICAgIG9mZnNldCA9IF9vZmZzZXQ7XG4gICAgICAgICAgICBhbGlnbiA9IF9hbGlnbjtcbiAgICAgICAgICAgIGNvZGVWYWwgPSBfY29kZVZhbDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gWy4uLmlkeENvZGUsIC4uLmNvZGVWYWwsIDB4MzcsIGFsaWduLCAuLi52YXJ1aW50MzIob2Zmc2V0KV07XG4gICAgfVxuXG4gICAgaTY0X3N0b3JlMzIoaWR4Q29kZSwgX29mZnNldCwgX2FsaWduLCBfY29kZVZhbCkge1xuICAgICAgICBsZXQgb2Zmc2V0LCBhbGlnbiwgY29kZVZhbDtcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoX29mZnNldCkpIHtcbiAgICAgICAgICAgIG9mZnNldCA9IDA7XG4gICAgICAgICAgICBhbGlnbiA9IDI7XG4gICAgICAgICAgICBjb2RlVmFsID0gX29mZnNldDtcbiAgICAgICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KF9hbGlnbikpIHtcbiAgICAgICAgICAgIG9mZnNldCA9IF9vZmZzZXQ7XG4gICAgICAgICAgICBhbGlnbiA9IDI7XG4gICAgICAgICAgICBjb2RlVmFsID0gX2FsaWduO1xuICAgICAgICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkoX2NvZGVWYWwpKSB7XG4gICAgICAgICAgICBvZmZzZXQgPSBfb2Zmc2V0O1xuICAgICAgICAgICAgYWxpZ24gPSBfYWxpZ247XG4gICAgICAgICAgICBjb2RlVmFsID0gX2NvZGVWYWw7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFsuLi5pZHhDb2RlLCAuLi5jb2RlVmFsLCAweDNlLCBhbGlnbiwgLi4udmFydWludDMyKG9mZnNldCldO1xuICAgIH1cblxuXG4gICAgaTY0X3N0b3JlMTYoaWR4Q29kZSwgX29mZnNldCwgX2FsaWduLCBfY29kZVZhbCkge1xuICAgICAgICBsZXQgb2Zmc2V0LCBhbGlnbiwgY29kZVZhbDtcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoX29mZnNldCkpIHtcbiAgICAgICAgICAgIG9mZnNldCA9IDA7XG4gICAgICAgICAgICBhbGlnbiA9IDE7XG4gICAgICAgICAgICBjb2RlVmFsID0gX29mZnNldDtcbiAgICAgICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KF9hbGlnbikpIHtcbiAgICAgICAgICAgIG9mZnNldCA9IF9vZmZzZXQ7XG4gICAgICAgICAgICBhbGlnbiA9IDE7XG4gICAgICAgICAgICBjb2RlVmFsID0gX2FsaWduO1xuICAgICAgICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkoX2NvZGVWYWwpKSB7XG4gICAgICAgICAgICBvZmZzZXQgPSBfb2Zmc2V0O1xuICAgICAgICAgICAgYWxpZ24gPSBfYWxpZ247XG4gICAgICAgICAgICBjb2RlVmFsID0gX2NvZGVWYWw7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFsuLi5pZHhDb2RlLCAuLi5jb2RlVmFsLCAweDNkLCBhbGlnbiwgLi4udmFydWludDMyKG9mZnNldCldO1xuICAgIH1cblxuXG4gICAgaTY0X3N0b3JlOChpZHhDb2RlLCBfb2Zmc2V0LCBfYWxpZ24sIF9jb2RlVmFsKSB7XG4gICAgICAgIGxldCBvZmZzZXQsIGFsaWduLCBjb2RlVmFsO1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShfb2Zmc2V0KSkge1xuICAgICAgICAgICAgb2Zmc2V0ID0gMDtcbiAgICAgICAgICAgIGFsaWduID0gMDtcbiAgICAgICAgICAgIGNvZGVWYWwgPSBfb2Zmc2V0O1xuICAgICAgICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkoX2FsaWduKSkge1xuICAgICAgICAgICAgb2Zmc2V0ID0gX29mZnNldDtcbiAgICAgICAgICAgIGFsaWduID0gMDtcbiAgICAgICAgICAgIGNvZGVWYWwgPSBfYWxpZ247XG4gICAgICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShfY29kZVZhbCkpIHtcbiAgICAgICAgICAgIG9mZnNldCA9IF9vZmZzZXQ7XG4gICAgICAgICAgICBhbGlnbiA9IF9hbGlnbjtcbiAgICAgICAgICAgIGNvZGVWYWwgPSBfY29kZVZhbDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gWy4uLmlkeENvZGUsIC4uLmNvZGVWYWwsIDB4M2MsIGFsaWduLCAuLi52YXJ1aW50MzIob2Zmc2V0KV07XG4gICAgfVxuXG4gICAgaTMyX2xvYWQ4X3MoaWR4Q29kZSwgX29mZnNldCwgX2FsaWduKSB7XG4gICAgICAgIGNvbnN0IG9mZnNldCA9IF9vZmZzZXQgfHwgMDtcbiAgICAgICAgY29uc3QgYWxpZ24gPSAoX2FsaWduID09PSB1bmRlZmluZWQpID8gMCA6IF9hbGlnbjsgIC8vIDMyIGJpdHMgYWxpZ25tZW50IGJ5IGRlZmF1bHRcbiAgICAgICAgcmV0dXJuIFsuLi5pZHhDb2RlLCAweDJjLCBhbGlnbiwgLi4udmFydWludDMyKG9mZnNldCldO1xuICAgIH1cblxuICAgIGkzMl9sb2FkOF91KGlkeENvZGUsIF9vZmZzZXQsIF9hbGlnbikge1xuICAgICAgICBjb25zdCBvZmZzZXQgPSBfb2Zmc2V0IHx8IDA7XG4gICAgICAgIGNvbnN0IGFsaWduID0gKF9hbGlnbiA9PT0gdW5kZWZpbmVkKSA/IDAgOiBfYWxpZ247ICAvLyAzMiBiaXRzIGFsaWdubWVudCBieSBkZWZhdWx0XG4gICAgICAgIHJldHVybiBbLi4uaWR4Q29kZSwgMHgyZCwgYWxpZ24sIC4uLnZhcnVpbnQzMihvZmZzZXQpXTtcbiAgICB9XG5cbiAgICBpMzJfbG9hZDE2X3MoaWR4Q29kZSwgX29mZnNldCwgX2FsaWduKSB7XG4gICAgICAgIGNvbnN0IG9mZnNldCA9IF9vZmZzZXQgfHwgMDtcbiAgICAgICAgY29uc3QgYWxpZ24gPSAoX2FsaWduID09PSB1bmRlZmluZWQpID8gMSA6IF9hbGlnbjsgIC8vIDMyIGJpdHMgYWxpZ25tZW50IGJ5IGRlZmF1bHRcbiAgICAgICAgcmV0dXJuIFsuLi5pZHhDb2RlLCAweDJlLCBhbGlnbiwgLi4udmFydWludDMyKG9mZnNldCldO1xuICAgIH1cblxuICAgIGkzMl9sb2FkMTZfdShpZHhDb2RlLCBfb2Zmc2V0LCBfYWxpZ24pIHtcbiAgICAgICAgY29uc3Qgb2Zmc2V0ID0gX29mZnNldCB8fCAwO1xuICAgICAgICBjb25zdCBhbGlnbiA9IChfYWxpZ24gPT09IHVuZGVmaW5lZCkgPyAxIDogX2FsaWduOyAgLy8gMzIgYml0cyBhbGlnbm1lbnQgYnkgZGVmYXVsdFxuICAgICAgICByZXR1cm4gWy4uLmlkeENvZGUsIDB4MmYsIGFsaWduLCAuLi52YXJ1aW50MzIob2Zmc2V0KV07XG4gICAgfVxuXG4gICAgaTMyX2xvYWQoaWR4Q29kZSwgX29mZnNldCwgX2FsaWduKSB7XG4gICAgICAgIGNvbnN0IG9mZnNldCA9IF9vZmZzZXQgfHwgMDtcbiAgICAgICAgY29uc3QgYWxpZ24gPSAoX2FsaWduID09PSB1bmRlZmluZWQpID8gMiA6IF9hbGlnbjsgIC8vIDMyIGJpdHMgYWxpZ25tZW50IGJ5IGRlZmF1bHRcbiAgICAgICAgcmV0dXJuIFsuLi5pZHhDb2RlLCAweDI4LCBhbGlnbiwgLi4udmFydWludDMyKG9mZnNldCldO1xuICAgIH1cblxuICAgIGkzMl9zdG9yZShpZHhDb2RlLCBfb2Zmc2V0LCBfYWxpZ24sIF9jb2RlVmFsKSB7XG4gICAgICAgIGxldCBvZmZzZXQsIGFsaWduLCBjb2RlVmFsO1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShfb2Zmc2V0KSkge1xuICAgICAgICAgICAgb2Zmc2V0ID0gMDtcbiAgICAgICAgICAgIGFsaWduID0gMjtcbiAgICAgICAgICAgIGNvZGVWYWwgPSBfb2Zmc2V0O1xuICAgICAgICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkoX2FsaWduKSkge1xuICAgICAgICAgICAgb2Zmc2V0ID0gX29mZnNldDtcbiAgICAgICAgICAgIGFsaWduID0gMjtcbiAgICAgICAgICAgIGNvZGVWYWwgPSBfYWxpZ247XG4gICAgICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShfY29kZVZhbCkpIHtcbiAgICAgICAgICAgIG9mZnNldCA9IF9vZmZzZXQ7XG4gICAgICAgICAgICBhbGlnbiA9IF9hbGlnbjtcbiAgICAgICAgICAgIGNvZGVWYWwgPSBfY29kZVZhbDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gWy4uLmlkeENvZGUsIC4uLmNvZGVWYWwsIDB4MzYsIGFsaWduLCAuLi52YXJ1aW50MzIob2Zmc2V0KV07XG4gICAgfVxuXG5cbiAgICBpMzJfc3RvcmUxNihpZHhDb2RlLCBfb2Zmc2V0LCBfYWxpZ24sIF9jb2RlVmFsKSB7XG4gICAgICAgIGxldCBvZmZzZXQsIGFsaWduLCBjb2RlVmFsO1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShfb2Zmc2V0KSkge1xuICAgICAgICAgICAgb2Zmc2V0ID0gMDtcbiAgICAgICAgICAgIGFsaWduID0gMTtcbiAgICAgICAgICAgIGNvZGVWYWwgPSBfb2Zmc2V0O1xuICAgICAgICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkoX2FsaWduKSkge1xuICAgICAgICAgICAgb2Zmc2V0ID0gX29mZnNldDtcbiAgICAgICAgICAgIGFsaWduID0gMTtcbiAgICAgICAgICAgIGNvZGVWYWwgPSBfYWxpZ247XG4gICAgICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShfY29kZVZhbCkpIHtcbiAgICAgICAgICAgIG9mZnNldCA9IF9vZmZzZXQ7XG4gICAgICAgICAgICBhbGlnbiA9IF9hbGlnbjtcbiAgICAgICAgICAgIGNvZGVWYWwgPSBfY29kZVZhbDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gWy4uLmlkeENvZGUsIC4uLmNvZGVWYWwsIDB4M2IsIGFsaWduLCAuLi52YXJ1aW50MzIob2Zmc2V0KV07XG4gICAgfVxuXG4gICAgaTMyX3N0b3JlOChpZHhDb2RlLCBfb2Zmc2V0LCBfYWxpZ24sIF9jb2RlVmFsKSB7XG4gICAgICAgIGxldCBvZmZzZXQsIGFsaWduLCBjb2RlVmFsO1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShfb2Zmc2V0KSkge1xuICAgICAgICAgICAgb2Zmc2V0ID0gMDtcbiAgICAgICAgICAgIGFsaWduID0gMDtcbiAgICAgICAgICAgIGNvZGVWYWwgPSBfb2Zmc2V0O1xuICAgICAgICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkoX2FsaWduKSkge1xuICAgICAgICAgICAgb2Zmc2V0ID0gX29mZnNldDtcbiAgICAgICAgICAgIGFsaWduID0gMDtcbiAgICAgICAgICAgIGNvZGVWYWwgPSBfYWxpZ247XG4gICAgICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShfY29kZVZhbCkpIHtcbiAgICAgICAgICAgIG9mZnNldCA9IF9vZmZzZXQ7XG4gICAgICAgICAgICBhbGlnbiA9IF9hbGlnbjtcbiAgICAgICAgICAgIGNvZGVWYWwgPSBfY29kZVZhbDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gWy4uLmlkeENvZGUsIC4uLmNvZGVWYWwsIDB4M2EsIGFsaWduLCAuLi52YXJ1aW50MzIob2Zmc2V0KV07XG4gICAgfVxuXG4gICAgY2FsbChmbk5hbWUsIC4uLmFyZ3MpIHtcbiAgICAgICAgY29uc3QgaWR4ID0gdGhpcy5tb2R1bGUuZnVuY3Rpb25JZHhCeU5hbWVbZm5OYW1lXTtcbiAgICAgICAgaWYgKGlkeCA9PT0gdW5kZWZpbmVkKVxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBGdW5jdGlvbiBub3QgZGVmaW5lZDogRnVuY3Rpb246ICR7Zm5OYW1lfWApO1xuICAgICAgICByZXR1cm4gWy4uLltdLmNvbmNhdCguLi5hcmdzKSwgMHgxMCwgLi4udmFydWludDMyKGlkeCldO1xuICAgIH1cblxuICAgIGNhbGxfaW5kaXJlY3QoZm5JZHgsIC4uLmFyZ3MpIHtcbiAgICAgICAgcmV0dXJuIFsuLi5bXS5jb25jYXQoLi4uYXJncyksIC4uLmZuSWR4LCAweDExLCAwLCAwXTtcbiAgICB9XG5cbiAgICBpZihjb25kQ29kZSwgdGhlbkNvZGUsIGVsc2VDb2RlKSB7XG4gICAgICAgIGlmIChlbHNlQ29kZSkge1xuICAgICAgICAgICAgcmV0dXJuIFsuLi5jb25kQ29kZSwgMHgwNCwgMHg0MCwgLi4udGhlbkNvZGUsIDB4MDUsIC4uLmVsc2VDb2RlLCAweDBiXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBbLi4uY29uZENvZGUsIDB4MDQsIDB4NDAsIC4uLnRoZW5Db2RlLCAweDBiXTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGJsb2NrKGJDb2RlKSB7IHJldHVybiBbMHgwMiwgMHg0MCwgLi4uYkNvZGUsIDB4MGJdOyB9XG4gICAgbG9vcCguLi5hcmdzKSB7XG4gICAgICAgIHJldHVybiBbMHgwMywgMHg0MCwgLi4uW10uY29uY2F0KC4uLlsuLi5hcmdzXSksIDB4MGJdO1xuICAgIH1cbiAgICBicl9pZihyZWxQYXRoLCBjb25kQ29kZSkgeyByZXR1cm4gWy4uLmNvbmRDb2RlLCAweDBkLCAuLi52YXJ1aW50MzIocmVsUGF0aCldOyB9XG4gICAgYnIocmVsUGF0aCkgeyByZXR1cm4gWzB4MGMsIC4uLnZhcnVpbnQzMihyZWxQYXRoKV07IH1cbiAgICByZXQockNvZGUpIHsgcmV0dXJuIFsuLi5yQ29kZSwgMHgwZl07IH1cbiAgICBkcm9wKGRDb2RlKSB7IHJldHVybiBbLi4uZENvZGUsICAweDFhXTsgfVxuXG4gICAgaTY0X2NvbnN0KG51bSkgeyByZXR1cm4gWzB4NDIsIC4uLnZhcmludDY0KG51bSldOyB9XG4gICAgaTMyX2NvbnN0KG51bSkgeyByZXR1cm4gWzB4NDEsIC4uLnZhcmludDMyKG51bSldOyB9XG5cblxuICAgIGk2NF9lcXoob3Bjb2RlKSB7IHJldHVybiBbLi4ub3Bjb2RlLCAweDUwXTsgfVxuICAgIGk2NF9lcShvcDFjb2RlLCBvcDJjb2RlKSB7IHJldHVybiBbLi4ub3AxY29kZSwgLi4ub3AyY29kZSwgMHg1MV07IH1cbiAgICBpNjRfbmUob3AxY29kZSwgb3AyY29kZSkgeyByZXR1cm4gWy4uLm9wMWNvZGUsIC4uLm9wMmNvZGUsIDB4NTJdOyB9XG4gICAgaTY0X2x0X3Mob3AxY29kZSwgb3AyY29kZSkgeyByZXR1cm4gWy4uLm9wMWNvZGUsIC4uLm9wMmNvZGUsIDB4NTNdOyB9XG4gICAgaTY0X2x0X3Uob3AxY29kZSwgb3AyY29kZSkgeyByZXR1cm4gWy4uLm9wMWNvZGUsIC4uLm9wMmNvZGUsIDB4NTRdOyB9XG4gICAgaTY0X2d0X3Mob3AxY29kZSwgb3AyY29kZSkgeyByZXR1cm4gWy4uLm9wMWNvZGUsIC4uLm9wMmNvZGUsIDB4NTVdOyB9XG4gICAgaTY0X2d0X3Uob3AxY29kZSwgb3AyY29kZSkgeyByZXR1cm4gWy4uLm9wMWNvZGUsIC4uLm9wMmNvZGUsIDB4NTZdOyB9XG4gICAgaTY0X2xlX3Mob3AxY29kZSwgb3AyY29kZSkgeyByZXR1cm4gWy4uLm9wMWNvZGUsIC4uLm9wMmNvZGUsIDB4NTddOyB9XG4gICAgaTY0X2xlX3Uob3AxY29kZSwgb3AyY29kZSkgeyByZXR1cm4gWy4uLm9wMWNvZGUsIC4uLm9wMmNvZGUsIDB4NThdOyB9XG4gICAgaTY0X2dlX3Mob3AxY29kZSwgb3AyY29kZSkgeyByZXR1cm4gWy4uLm9wMWNvZGUsIC4uLm9wMmNvZGUsIDB4NTldOyB9XG4gICAgaTY0X2dlX3Uob3AxY29kZSwgb3AyY29kZSkgeyByZXR1cm4gWy4uLm9wMWNvZGUsIC4uLm9wMmNvZGUsIDB4NWFdOyB9XG4gICAgaTY0X2FkZChvcDFjb2RlLCBvcDJjb2RlKSB7IHJldHVybiBbLi4ub3AxY29kZSwgLi4ub3AyY29kZSwgMHg3Y107IH1cbiAgICBpNjRfc3ViKG9wMWNvZGUsIG9wMmNvZGUpIHsgcmV0dXJuIFsuLi5vcDFjb2RlLCAuLi5vcDJjb2RlLCAweDdkXTsgfVxuICAgIGk2NF9tdWwob3AxY29kZSwgb3AyY29kZSkgeyByZXR1cm4gWy4uLm9wMWNvZGUsIC4uLm9wMmNvZGUsIDB4N2VdOyB9XG4gICAgaTY0X2Rpdl9zKG9wMWNvZGUsIG9wMmNvZGUpIHsgcmV0dXJuIFsuLi5vcDFjb2RlLCAuLi5vcDJjb2RlLCAweDdmXTsgfVxuICAgIGk2NF9kaXZfdShvcDFjb2RlLCBvcDJjb2RlKSB7IHJldHVybiBbLi4ub3AxY29kZSwgLi4ub3AyY29kZSwgMHg4MF07IH1cbiAgICBpNjRfcmVtX3Mob3AxY29kZSwgb3AyY29kZSkgeyByZXR1cm4gWy4uLm9wMWNvZGUsIC4uLm9wMmNvZGUsIDB4ODFdOyB9XG4gICAgaTY0X3JlbV91KG9wMWNvZGUsIG9wMmNvZGUpIHsgcmV0dXJuIFsuLi5vcDFjb2RlLCAuLi5vcDJjb2RlLCAweDgyXTsgfVxuICAgIGk2NF9hbmQob3AxY29kZSwgb3AyY29kZSkgeyByZXR1cm4gWy4uLm9wMWNvZGUsIC4uLm9wMmNvZGUsIDB4ODNdOyB9XG4gICAgaTY0X29yKG9wMWNvZGUsIG9wMmNvZGUpIHsgcmV0dXJuIFsuLi5vcDFjb2RlLCAuLi5vcDJjb2RlLCAweDg0XTsgfVxuICAgIGk2NF94b3Iob3AxY29kZSwgb3AyY29kZSkgeyByZXR1cm4gWy4uLm9wMWNvZGUsIC4uLm9wMmNvZGUsIDB4ODVdOyB9XG4gICAgaTY0X3NobChvcDFjb2RlLCBvcDJjb2RlKSB7IHJldHVybiBbLi4ub3AxY29kZSwgLi4ub3AyY29kZSwgMHg4Nl07IH1cbiAgICBpNjRfc2hyX3Mob3AxY29kZSwgb3AyY29kZSkgeyByZXR1cm4gWy4uLm9wMWNvZGUsIC4uLm9wMmNvZGUsIDB4ODddOyB9XG4gICAgaTY0X3Nocl91KG9wMWNvZGUsIG9wMmNvZGUpIHsgcmV0dXJuIFsuLi5vcDFjb2RlLCAuLi5vcDJjb2RlLCAweDg4XTsgfVxuICAgIGk2NF9leHRlbmRfaTMyX3Mob3AxY29kZSkgeyByZXR1cm4gWy4uLm9wMWNvZGUsIDB4YWNdOyB9XG4gICAgaTY0X2V4dGVuZF9pMzJfdShvcDFjb2RlKSB7IHJldHVybiBbLi4ub3AxY29kZSwgMHhhZF07IH1cbiAgICBpNjRfY2x6KG9wMWNvZGUpIHsgcmV0dXJuIFsuLi5vcDFjb2RlLCAweDc5XTsgfVxuICAgIGk2NF9jdHoob3AxY29kZSkgeyByZXR1cm4gWy4uLm9wMWNvZGUsIDB4N2FdOyB9XG5cbiAgICBpMzJfZXF6KG9wMWNvZGUpIHsgcmV0dXJuIFsuLi5vcDFjb2RlLCAweDQ1XTsgfVxuICAgIGkzMl9lcShvcDFjb2RlLCBvcDJjb2RlKSB7IHJldHVybiBbLi4ub3AxY29kZSwgLi4ub3AyY29kZSwgMHg0Nl07IH1cbiAgICBpMzJfbmUob3AxY29kZSwgb3AyY29kZSkgeyByZXR1cm4gWy4uLm9wMWNvZGUsIC4uLm9wMmNvZGUsIDB4NDddOyB9XG4gICAgaTMyX2x0X3Mob3AxY29kZSwgb3AyY29kZSkgeyByZXR1cm4gWy4uLm9wMWNvZGUsIC4uLm9wMmNvZGUsIDB4NDhdOyB9XG4gICAgaTMyX2x0X3Uob3AxY29kZSwgb3AyY29kZSkgeyByZXR1cm4gWy4uLm9wMWNvZGUsIC4uLm9wMmNvZGUsIDB4NDldOyB9XG4gICAgaTMyX2d0X3Mob3AxY29kZSwgb3AyY29kZSkgeyByZXR1cm4gWy4uLm9wMWNvZGUsIC4uLm9wMmNvZGUsIDB4NGFdOyB9XG4gICAgaTMyX2d0X3Uob3AxY29kZSwgb3AyY29kZSkgeyByZXR1cm4gWy4uLm9wMWNvZGUsIC4uLm9wMmNvZGUsIDB4NGJdOyB9XG4gICAgaTMyX2xlX3Mob3AxY29kZSwgb3AyY29kZSkgeyByZXR1cm4gWy4uLm9wMWNvZGUsIC4uLm9wMmNvZGUsIDB4NGNdOyB9XG4gICAgaTMyX2xlX3Uob3AxY29kZSwgb3AyY29kZSkgeyByZXR1cm4gWy4uLm9wMWNvZGUsIC4uLm9wMmNvZGUsIDB4NGRdOyB9XG4gICAgaTMyX2dlX3Mob3AxY29kZSwgb3AyY29kZSkgeyByZXR1cm4gWy4uLm9wMWNvZGUsIC4uLm9wMmNvZGUsIDB4NGVdOyB9XG4gICAgaTMyX2dlX3Uob3AxY29kZSwgb3AyY29kZSkgeyByZXR1cm4gWy4uLm9wMWNvZGUsIC4uLm9wMmNvZGUsIDB4NGZdOyB9XG4gICAgaTMyX2FkZChvcDFjb2RlLCBvcDJjb2RlKSB7IHJldHVybiBbLi4ub3AxY29kZSwgLi4ub3AyY29kZSwgMHg2YV07IH1cbiAgICBpMzJfc3ViKG9wMWNvZGUsIG9wMmNvZGUpIHsgcmV0dXJuIFsuLi5vcDFjb2RlLCAuLi5vcDJjb2RlLCAweDZiXTsgfVxuICAgIGkzMl9tdWwob3AxY29kZSwgb3AyY29kZSkgeyByZXR1cm4gWy4uLm9wMWNvZGUsIC4uLm9wMmNvZGUsIDB4NmNdOyB9XG4gICAgaTMyX2Rpdl9zKG9wMWNvZGUsIG9wMmNvZGUpIHsgcmV0dXJuIFsuLi5vcDFjb2RlLCAuLi5vcDJjb2RlLCAweDZkXTsgfVxuICAgIGkzMl9kaXZfdShvcDFjb2RlLCBvcDJjb2RlKSB7IHJldHVybiBbLi4ub3AxY29kZSwgLi4ub3AyY29kZSwgMHg2ZV07IH1cbiAgICBpMzJfcmVtX3Mob3AxY29kZSwgb3AyY29kZSkgeyByZXR1cm4gWy4uLm9wMWNvZGUsIC4uLm9wMmNvZGUsIDB4NmZdOyB9XG4gICAgaTMyX3JlbV91KG9wMWNvZGUsIG9wMmNvZGUpIHsgcmV0dXJuIFsuLi5vcDFjb2RlLCAuLi5vcDJjb2RlLCAweDcwXTsgfVxuICAgIGkzMl9hbmQob3AxY29kZSwgb3AyY29kZSkgeyByZXR1cm4gWy4uLm9wMWNvZGUsIC4uLm9wMmNvZGUsIDB4NzFdOyB9XG4gICAgaTMyX29yKG9wMWNvZGUsIG9wMmNvZGUpIHsgcmV0dXJuIFsuLi5vcDFjb2RlLCAuLi5vcDJjb2RlLCAweDcyXTsgfVxuICAgIGkzMl94b3Iob3AxY29kZSwgb3AyY29kZSkgeyByZXR1cm4gWy4uLm9wMWNvZGUsIC4uLm9wMmNvZGUsIDB4NzNdOyB9XG4gICAgaTMyX3NobChvcDFjb2RlLCBvcDJjb2RlKSB7IHJldHVybiBbLi4ub3AxY29kZSwgLi4ub3AyY29kZSwgMHg3NF07IH1cbiAgICBpMzJfc2hyX3Mob3AxY29kZSwgb3AyY29kZSkgeyByZXR1cm4gWy4uLm9wMWNvZGUsIC4uLm9wMmNvZGUsIDB4NzVdOyB9XG4gICAgaTMyX3Nocl91KG9wMWNvZGUsIG9wMmNvZGUpIHsgcmV0dXJuIFsuLi5vcDFjb2RlLCAuLi5vcDJjb2RlLCAweDc2XTsgfVxuICAgIGkzMl9yb3RsKG9wMWNvZGUsIG9wMmNvZGUpIHsgcmV0dXJuIFsuLi5vcDFjb2RlLCAuLi5vcDJjb2RlLCAweDc3XTsgfVxuICAgIGkzMl9yb3RyKG9wMWNvZGUsIG9wMmNvZGUpIHsgcmV0dXJuIFsuLi5vcDFjb2RlLCAuLi5vcDJjb2RlLCAweDc4XTsgfVxuICAgIGkzMl93cmFwX2k2NChvcDFjb2RlKSB7IHJldHVybiBbLi4ub3AxY29kZSwgMHhhN107IH1cbiAgICBpMzJfY2x6KG9wMWNvZGUpIHsgcmV0dXJuIFsuLi5vcDFjb2RlLCAweDY3XTsgfVxuICAgIGkzMl9jdHoob3AxY29kZSkgeyByZXR1cm4gWy4uLm9wMWNvZGUsIDB4NjhdOyB9XG5cbiAgICB1bnJlYWNoYWJsZSgpIHsgcmV0dXJuIFsgMHgwIF07IH1cblxuICAgIGN1cnJlbnRfbWVtb3J5KCkgeyByZXR1cm4gWyAweDNmLCAwXTsgfVxuXG4gICAgY29tbWVudCgpIHsgcmV0dXJuIFtdOyB9XG59XG5cbi8qXG4gICAgQ29weXJpZ2h0IDIwMTkgMEtJTVMgYXNzb2NpYXRpb24uXG5cbiAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB3YXNtYnVpbGRlclxuXG4gICAgd2FzbWJ1aWxkZXIgaXMgYSBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0XG4gICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxuICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG5cbiAgICB3YXNtYnVpbGRlciBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVFxuICAgIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWVxuICAgIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpY1xuICAgIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cblxuICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gICAgYWxvbmcgd2l0aCB3YXNtYnVpbGRlci4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cbiovXG5cblxuY29uc3QgdHlwZUNvZGVzID0ge1xuICAgIFwiaTMyXCI6IDB4N2YsXG4gICAgXCJpNjRcIjogMHg3ZSxcbiAgICBcImYzMlwiOiAweDdkLFxuICAgIFwiZjY0XCI6IDB4N2MsXG4gICAgXCJhbnlmdW5jXCI6IDB4NzAsXG4gICAgXCJmdW5jXCI6IDB4NjAsXG4gICAgXCJlbXB0eWJsb2NrXCI6IDB4NDBcbn07XG5cblxuY2xhc3MgRnVuY3Rpb25CdWlsZGVyIHtcblxuICAgIGNvbnN0cnVjdG9yIChtb2R1bGUsIGZuTmFtZSwgZm5UeXBlLCBtb2R1bGVOYW1lLCBmaWVsZE5hbWUpIHtcbiAgICAgICAgaWYgKGZuVHlwZSA9PSBcImltcG9ydFwiKSB7XG4gICAgICAgICAgICB0aGlzLmZuVHlwZSA9IFwiaW1wb3J0XCI7XG4gICAgICAgICAgICB0aGlzLm1vZHVsZU5hbWUgPSBtb2R1bGVOYW1lO1xuICAgICAgICAgICAgdGhpcy5maWVsZE5hbWUgPSBmaWVsZE5hbWU7XG4gICAgICAgIH0gZWxzZSBpZiAoZm5UeXBlID09IFwiaW50ZXJuYWxcIikge1xuICAgICAgICAgICAgdGhpcy5mblR5cGUgPSBcImludGVybmFsXCI7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIGZ1bmN0aW9uIGZuVHlwZTogXCIgKyBmblR5cGUpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMubW9kdWxlID0gbW9kdWxlO1xuICAgICAgICB0aGlzLmZuTmFtZSA9IGZuTmFtZTtcbiAgICAgICAgdGhpcy5wYXJhbXMgPSBbXTtcbiAgICAgICAgdGhpcy5sb2NhbHMgPSBbXTtcbiAgICAgICAgdGhpcy5sb2NhbElkeEJ5TmFtZSA9IHt9O1xuICAgICAgICB0aGlzLmNvZGUgPSBbXTtcbiAgICAgICAgdGhpcy5yZXR1cm5UeXBlID0gbnVsbDtcbiAgICAgICAgdGhpcy5uZXh0TG9jYWwgPTA7XG4gICAgfVxuXG4gICAgYWRkUGFyYW0ocGFyYW1OYW1lLCBwYXJhbVR5cGUpIHtcbiAgICAgICAgaWYgKHRoaXMubG9jYWxJZHhCeU5hbWVbcGFyYW1OYW1lXSlcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgcGFyYW0gYWxyZWFkeSBleGlzdHMuIEZ1bmN0aW9uOiAke3RoaXMuZm5OYW1lfSwgUGFyYW06ICR7cGFyYW1OYW1lfSBgKTtcbiAgICAgICAgY29uc3QgaWR4ID0gdGhpcy5uZXh0TG9jYWwrKztcbiAgICAgICAgdGhpcy5sb2NhbElkeEJ5TmFtZVtwYXJhbU5hbWVdID0gaWR4O1xuICAgICAgICB0aGlzLnBhcmFtcy5wdXNoKHtcbiAgICAgICAgICAgIHR5cGU6IHBhcmFtVHlwZVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBhZGRMb2NhbChsb2NhbE5hbWUsIGxvY2FsVHlwZSwgX2xlbmd0aCkge1xuICAgICAgICBjb25zdCBsZW5ndGggPSBfbGVuZ3RoIHx8IDE7XG4gICAgICAgIGlmICh0aGlzLmxvY2FsSWR4QnlOYW1lW2xvY2FsTmFtZV0pXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGxvY2FsIGFscmVhZHkgZXhpc3RzLiBGdW5jdGlvbjogJHt0aGlzLmZuTmFtZX0sIFBhcmFtOiAke2xvY2FsTmFtZX0gYCk7XG4gICAgICAgIGNvbnN0IGlkeCA9IHRoaXMubmV4dExvY2FsKys7XG4gICAgICAgIHRoaXMubG9jYWxJZHhCeU5hbWVbbG9jYWxOYW1lXSA9IGlkeDtcbiAgICAgICAgdGhpcy5sb2NhbHMucHVzaCh7XG4gICAgICAgICAgICB0eXBlOiBsb2NhbFR5cGUsXG4gICAgICAgICAgICBsZW5ndGg6IGxlbmd0aFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBzZXRSZXR1cm5UeXBlKHJldHVyblR5cGUpIHtcbiAgICAgICAgaWYgKHRoaXMucmV0dXJuVHlwZSlcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgcmV0dXJuVHlwZSBhbHJlYWR5IGRlZmluZWQuIEZ1bmN0aW9uOiAke3RoaXMuZm5OYW1lfWApO1xuICAgICAgICB0aGlzLnJldHVyblR5cGUgPSByZXR1cm5UeXBlO1xuICAgIH1cblxuICAgIGdldFNpZ25hdHVyZSgpIHtcbiAgICAgICAgY29uc3QgcGFyYW1zID0gWy4uLnZhcnVpbnQzMih0aGlzLnBhcmFtcy5sZW5ndGgpLCAuLi50aGlzLnBhcmFtcy5tYXAoKHApID0+IHR5cGVDb2Rlc1twLnR5cGVdKV07XG4gICAgICAgIGNvbnN0IHJldHVybnMgPSB0aGlzLnJldHVyblR5cGUgPyBbMHgwMSwgdHlwZUNvZGVzW3RoaXMucmV0dXJuVHlwZV1dIDogWzBdO1xuICAgICAgICByZXR1cm4gWzB4NjAsIC4uLnBhcmFtcywgLi4ucmV0dXJuc107XG4gICAgfVxuXG4gICAgZ2V0Qm9keSgpIHtcbiAgICAgICAgY29uc3QgbG9jYWxzID0gdGhpcy5sb2NhbHMubWFwKChsKSA9PiBbXG4gICAgICAgICAgICAuLi52YXJ1aW50MzIobC5sZW5ndGgpLFxuICAgICAgICAgICAgdHlwZUNvZGVzW2wudHlwZV1cbiAgICAgICAgXSk7XG5cbiAgICAgICAgY29uc3QgYm9keSA9IFtcbiAgICAgICAgICAgIC4uLnZhcnVpbnQzMih0aGlzLmxvY2Fscy5sZW5ndGgpLFxuICAgICAgICAgICAgLi4uW10uY29uY2F0KC4uLmxvY2FscyksXG4gICAgICAgICAgICAuLi50aGlzLmNvZGUsXG4gICAgICAgICAgICAweDBiXG4gICAgICAgIF07XG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICAuLi52YXJ1aW50MzIoYm9keS5sZW5ndGgpLFxuICAgICAgICAgICAgLi4uYm9keVxuICAgICAgICBdO1xuICAgIH1cblxuICAgIGFkZENvZGUoLi4uY29kZSkge1xuICAgICAgICB0aGlzLmNvZGUucHVzaCguLi5bXS5jb25jYXQoLi4uWy4uLmNvZGVdKSk7XG4gICAgfVxuXG4gICAgZ2V0Q29kZUJ1aWxkZXIoKSB7XG4gICAgICAgIHJldHVybiBuZXcgQ29kZUJ1aWxkZXIodGhpcyk7XG4gICAgfVxufVxuXG4vKlxuICAgIENvcHlyaWdodCAyMDE5IDBLSU1TIGFzc29jaWF0aW9uLlxuXG4gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2Ygd2FzbWJ1aWxkZXJcblxuICAgIHdhc21idWlsZGVyIGlzIGEgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdFxuICAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3JcbiAgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuXG4gICAgd2FzbWJ1aWxkZXIgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVRcbiAgICBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFlcbiAgICBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWNcbiAgICBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG5cbiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICAgIGFsb25nIHdpdGggd2FzbWJ1aWxkZXIuIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXG4qL1xuXG5cbmNsYXNzIE1vZHVsZUJ1aWxkZXIge1xuXG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHRoaXMuZnVuY3Rpb25zID0gW107XG4gICAgICAgIHRoaXMuZnVuY3Rpb25JZHhCeU5hbWUgPSB7fTtcbiAgICAgICAgdGhpcy5uSW1wb3J0RnVuY3Rpb25zID0gMDtcbiAgICAgICAgdGhpcy5uSW50ZXJuYWxGdW5jdGlvbnMgPTA7XG4gICAgICAgIHRoaXMubWVtb3J5ID0ge1xuICAgICAgICAgICAgcGFnZXNTaXplOiAxLFxuICAgICAgICAgICAgbW9kdWxlTmFtZTogXCJlbnZcIixcbiAgICAgICAgICAgIGZpZWxkTmFtZTogXCJtZW1vcnlcIlxuICAgICAgICB9O1xuICAgICAgICB0aGlzLmZyZWUgPSA4O1xuICAgICAgICB0aGlzLmRhdGFzID0gW107XG4gICAgICAgIHRoaXMubW9kdWxlcyA9IHt9O1xuICAgICAgICB0aGlzLmV4cG9ydHMgPSBbXTtcbiAgICAgICAgdGhpcy5mdW5jdGlvbnNUYWJsZSA9IFtdO1xuICAgIH1cblxuICAgIGJ1aWxkKCkge1xuICAgICAgICB0aGlzLl9zZXRTaWduYXR1cmVzKCk7XG4gICAgICAgIHJldHVybiBuZXcgVWludDhBcnJheShbXG4gICAgICAgICAgICAuLi51MzIoMHg2ZDczNjEwMCksXG4gICAgICAgICAgICAuLi51MzIoMSksXG4gICAgICAgICAgICAuLi50aGlzLl9idWlsZFR5cGUoKSxcbiAgICAgICAgICAgIC4uLnRoaXMuX2J1aWxkSW1wb3J0KCksXG4gICAgICAgICAgICAuLi50aGlzLl9idWlsZEZ1bmN0aW9uRGVjbGFyYXRpb25zKCksXG4gICAgICAgICAgICAuLi50aGlzLl9idWlsZEZ1bmN0aW9uc1RhYmxlKCksXG4gICAgICAgICAgICAuLi50aGlzLl9idWlsZEV4cG9ydHMoKSxcbiAgICAgICAgICAgIC4uLnRoaXMuX2J1aWxkRWxlbWVudHMoKSxcbiAgICAgICAgICAgIC4uLnRoaXMuX2J1aWxkQ29kZSgpLFxuICAgICAgICAgICAgLi4udGhpcy5fYnVpbGREYXRhKClcbiAgICAgICAgXSk7XG4gICAgfVxuXG4gICAgYWRkRnVuY3Rpb24oZm5OYW1lKSB7XG4gICAgICAgIGlmICh0eXBlb2YodGhpcy5mdW5jdGlvbklkeEJ5TmFtZVtmbk5hbWVdKSAhPT0gXCJ1bmRlZmluZWRcIilcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgRnVuY3Rpb24gYWxyZWFkeSBkZWZpbmVkOiAke2ZuTmFtZX1gKTtcblxuICAgICAgICBjb25zdCBpZHggPSB0aGlzLmZ1bmN0aW9ucy5sZW5ndGg7XG4gICAgICAgIHRoaXMuZnVuY3Rpb25JZHhCeU5hbWVbZm5OYW1lXSA9IGlkeDtcblxuICAgICAgICB0aGlzLmZ1bmN0aW9ucy5wdXNoKG5ldyBGdW5jdGlvbkJ1aWxkZXIodGhpcywgZm5OYW1lLCBcImludGVybmFsXCIpKTtcblxuICAgICAgICB0aGlzLm5JbnRlcm5hbEZ1bmN0aW9ucysrO1xuICAgICAgICByZXR1cm4gdGhpcy5mdW5jdGlvbnNbaWR4XTtcbiAgICB9XG5cbiAgICBhZGRJaW1wb3J0RnVuY3Rpb24oZm5OYW1lLCBtb2R1bGVOYW1lLCBfZmllbGROYW1lKSB7XG4gICAgICAgIGlmICh0eXBlb2YodGhpcy5mdW5jdGlvbklkeEJ5TmFtZVtmbk5hbWVdKSAhPT0gXCJ1bmRlZmluZWRcIilcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgRnVuY3Rpb24gYWxyZWFkeSBkZWZpbmVkOiAke2ZuTmFtZX1gKTtcblxuICAgICAgICBpZiAoICAodGhpcy5mdW5jdGlvbnMubGVuZ3RoPjApXG4gICAgICAgICAgICAmJih0aGlzLmZ1bmN0aW9uc1t0aGlzLmZ1bmN0aW9ucy5sZW5ndGgtMV0udHlwZSA9PSBcImludGVybmFsXCIpKVxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbXBvcnQgZnVuY3Rpb25zIG11c3QgYmUgZGVjbGFyZWQgYmVmb3JlIGludGVybmFsOiAke2ZuTmFtZX1gKTtcblxuICAgICAgICBsZXQgZmllbGROYW1lID0gX2ZpZWxkTmFtZSB8fCBmbk5hbWU7XG5cbiAgICAgICAgY29uc3QgaWR4ID0gdGhpcy5mdW5jdGlvbnMubGVuZ3RoO1xuICAgICAgICB0aGlzLmZ1bmN0aW9uSWR4QnlOYW1lW2ZuTmFtZV0gPSBpZHg7XG5cbiAgICAgICAgdGhpcy5mdW5jdGlvbnMucHVzaChuZXcgRnVuY3Rpb25CdWlsZGVyKHRoaXMsIGZuTmFtZSwgXCJpbXBvcnRcIiwgbW9kdWxlTmFtZSwgZmllbGROYW1lKSk7XG5cbiAgICAgICAgdGhpcy5uSW1wb3J0RnVuY3Rpb25zICsrO1xuICAgICAgICByZXR1cm4gdGhpcy5mdW5jdGlvbnNbaWR4XTtcbiAgICB9XG5cbiAgICBzZXRNZW1vcnkocGFnZXNTaXplLCBtb2R1bGVOYW1lLCBmaWVsZE5hbWUpIHtcbiAgICAgICAgdGhpcy5tZW1vcnkgPSB7XG4gICAgICAgICAgICBwYWdlc1NpemU6IHBhZ2VzU2l6ZSxcbiAgICAgICAgICAgIG1vZHVsZU5hbWU6IG1vZHVsZU5hbWUgfHwgXCJlbnZcIixcbiAgICAgICAgICAgIGZpZWxkTmFtZTogZmllbGROYW1lIHx8IFwibWVtb3J5XCJcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBleHBvcnRGdW5jdGlvbihmbk5hbWUsIF9leHBvcnROYW1lKSB7XG4gICAgICAgIGNvbnN0IGV4cG9ydE5hbWUgPSBfZXhwb3J0TmFtZSB8fCBmbk5hbWU7XG4gICAgICAgIGlmICh0eXBlb2YodGhpcy5mdW5jdGlvbklkeEJ5TmFtZVtmbk5hbWVdKSA9PT0gXCJ1bmRlZmluZWRcIilcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgRnVuY3Rpb24gbm90IGRlZmluZWQ6ICR7Zm5OYW1lfWApO1xuICAgICAgICBjb25zdCBpZHggPSB0aGlzLmZ1bmN0aW9uSWR4QnlOYW1lW2ZuTmFtZV07XG4gICAgICAgIGlmIChleHBvcnROYW1lICE9IGZuTmFtZSkge1xuICAgICAgICAgICAgdGhpcy5mdW5jdGlvbklkeEJ5TmFtZVtleHBvcnROYW1lXSA9IGlkeDtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmV4cG9ydHMucHVzaCh7XG4gICAgICAgICAgICBleHBvcnROYW1lOiBleHBvcnROYW1lLFxuICAgICAgICAgICAgaWR4OiBpZHhcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgYWRkRnVuY3Rpb25Ub1RhYmxlKGZuTmFtZSkge1xuICAgICAgICBjb25zdCBpZHggPSB0aGlzLmZ1bmN0aW9uSWR4QnlOYW1lW2ZuTmFtZV07XG4gICAgICAgIHRoaXMuZnVuY3Rpb25zVGFibGUucHVzaChpZHgpO1xuICAgIH1cblxuICAgIGFkZERhdGEob2Zmc2V0LCBieXRlcykge1xuICAgICAgICB0aGlzLmRhdGFzLnB1c2goe1xuICAgICAgICAgICAgb2Zmc2V0OiBvZmZzZXQsXG4gICAgICAgICAgICBieXRlczogYnl0ZXNcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgYWxsb2MoYSwgYikge1xuICAgICAgICBsZXQgc2l6ZTtcbiAgICAgICAgbGV0IGJ5dGVzO1xuICAgICAgICBpZiAoKEFycmF5LmlzQXJyYXkoYSkgfHwgQXJyYXlCdWZmZXIuaXNWaWV3KGEpKSAmJiAodHlwZW9mKGIpID09PSBcInVuZGVmaW5lZFwiKSkge1xuICAgICAgICAgICAgc2l6ZSA9IGEubGVuZ3RoO1xuICAgICAgICAgICAgYnl0ZXMgPSBhO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgc2l6ZSA9IGE7XG4gICAgICAgICAgICBieXRlcyA9IGI7XG4gICAgICAgIH1cbiAgICAgICAgc2l6ZSA9ICgoKHNpemUtMSk+PjMpICsxKTw8MzsgICAgICAgLy8gQWxpZ24gdG8gNjQgYml0cy5cbiAgICAgICAgY29uc3QgcCA9IHRoaXMuZnJlZTtcbiAgICAgICAgdGhpcy5mcmVlICs9IHNpemU7XG4gICAgICAgIGlmIChieXRlcykge1xuICAgICAgICAgICAgdGhpcy5hZGREYXRhKHAsIGJ5dGVzKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcDtcbiAgICB9XG5cbiAgICBhbGxvY1N0cmluZyhzKSB7XG4gICAgICAgIGNvbnN0IGVuY29kZXIgPSBuZXcgZ2xvYmFsVGhpcy5UZXh0RW5jb2RlcigpO1xuICAgICAgICBjb25zdCB1aW50OGFycmF5ID0gZW5jb2Rlci5lbmNvZGUocyk7XG4gICAgICAgIHJldHVybiB0aGlzLmFsbG9jKFsuLi51aW50OGFycmF5LCAwXSk7XG4gICAgfVxuXG4gICAgX3NldFNpZ25hdHVyZXMoKSB7XG4gICAgICAgIHRoaXMuc2lnbmF0dXJlcyA9IFtdO1xuICAgICAgICBjb25zdCBzaWduYXR1cmVJZHhCeU5hbWUgPSB7fTtcbiAgICAgICAgaWYgKHRoaXMuZnVuY3Rpb25zVGFibGUubGVuZ3RoPjApIHtcbiAgICAgICAgICAgIGNvbnN0IHNpZ25hdHVyZSA9IHRoaXMuZnVuY3Rpb25zW3RoaXMuZnVuY3Rpb25zVGFibGVbMF1dLmdldFNpZ25hdHVyZSgpO1xuICAgICAgICAgICAgY29uc3Qgc2lnbmF0dXJlTmFtZSA9IFwic19cIit0b0hleFN0cmluZyhzaWduYXR1cmUpO1xuICAgICAgICAgICAgc2lnbmF0dXJlSWR4QnlOYW1lW3NpZ25hdHVyZU5hbWVdID0gMDtcbiAgICAgICAgICAgIHRoaXMuc2lnbmF0dXJlcy5wdXNoKHNpZ25hdHVyZSk7XG4gICAgICAgIH1cbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPHRoaXMuZnVuY3Rpb25zLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCBzaWduYXR1cmUgPSB0aGlzLmZ1bmN0aW9uc1tpXS5nZXRTaWduYXR1cmUoKTtcbiAgICAgICAgICAgIGNvbnN0IHNpZ25hdHVyZU5hbWUgPSBcInNfXCIrdG9IZXhTdHJpbmcoc2lnbmF0dXJlKTtcbiAgICAgICAgICAgIGlmICh0eXBlb2Yoc2lnbmF0dXJlSWR4QnlOYW1lW3NpZ25hdHVyZU5hbWVdKSA9PT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgICAgICAgICAgIHNpZ25hdHVyZUlkeEJ5TmFtZVtzaWduYXR1cmVOYW1lXSA9IHRoaXMuc2lnbmF0dXJlcy5sZW5ndGg7XG4gICAgICAgICAgICAgICAgdGhpcy5zaWduYXR1cmVzLnB1c2goc2lnbmF0dXJlKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5mdW5jdGlvbnNbaV0uc2lnbmF0dXJlSWR4ID0gc2lnbmF0dXJlSWR4QnlOYW1lW3NpZ25hdHVyZU5hbWVdO1xuICAgICAgICB9XG5cbiAgICB9XG5cbiAgICBfYnVpbGRTZWN0aW9uKHNlY3Rpb25UeXBlLCBzZWN0aW9uKSB7XG4gICAgICAgIHJldHVybiBbc2VjdGlvblR5cGUsIC4uLnZhcnVpbnQzMihzZWN0aW9uLmxlbmd0aCksIC4uLnNlY3Rpb25dO1xuICAgIH1cblxuICAgIF9idWlsZFR5cGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9idWlsZFNlY3Rpb24oXG4gICAgICAgICAgICAweDAxLFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgIC4uLnZhcnVpbnQzMih0aGlzLnNpZ25hdHVyZXMubGVuZ3RoKSxcbiAgICAgICAgICAgICAgICAuLi5bXS5jb25jYXQoLi4udGhpcy5zaWduYXR1cmVzKVxuICAgICAgICAgICAgXVxuICAgICAgICApO1xuICAgIH1cblxuICAgIF9idWlsZEltcG9ydCgpIHtcbiAgICAgICAgY29uc3QgZW50cmllcyA9IFtdO1xuICAgICAgICBlbnRyaWVzLnB1c2goW1xuICAgICAgICAgICAgLi4uc3RyaW5nKHRoaXMubWVtb3J5Lm1vZHVsZU5hbWUpLFxuICAgICAgICAgICAgLi4uc3RyaW5nKHRoaXMubWVtb3J5LmZpZWxkTmFtZSksXG4gICAgICAgICAgICAweDAyLFxuICAgICAgICAgICAgMHgwMCwgICAvL0ZsYWdzIG5vIGluaXQgdmFsdWFcbiAgICAgICAgICAgIC4uLnZhcnVpbnQzMih0aGlzLm1lbW9yeS5wYWdlc1NpemUpXG4gICAgICAgIF0pO1xuICAgICAgICBmb3IgKGxldCBpPTA7IGk8IHRoaXMubkltcG9ydEZ1bmN0aW9uczsgaSsrKSB7XG4gICAgICAgICAgICBlbnRyaWVzLnB1c2goW1xuICAgICAgICAgICAgICAgIC4uLnN0cmluZyh0aGlzLmZ1bmN0aW9uc1tpXS5tb2R1bGVOYW1lKSxcbiAgICAgICAgICAgICAgICAuLi5zdHJpbmcodGhpcy5mdW5jdGlvbnNbaV0uZmllbGROYW1lKSxcbiAgICAgICAgICAgICAgICAweDAwLFxuICAgICAgICAgICAgICAgIC4uLnZhcnVpbnQzMih0aGlzLmZ1bmN0aW9uc1tpXS5zaWduYXR1cmVJZHgpXG4gICAgICAgICAgICBdKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5fYnVpbGRTZWN0aW9uKFxuICAgICAgICAgICAgMHgwMixcbiAgICAgICAgICAgIHZhcnVpbnQzMihlbnRyaWVzLmxlbmd0aCkuY29uY2F0KC4uLmVudHJpZXMpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgX2J1aWxkRnVuY3Rpb25EZWNsYXJhdGlvbnMoKSB7XG4gICAgICAgIGNvbnN0IGVudHJpZXMgPSBbXTtcbiAgICAgICAgZm9yIChsZXQgaT10aGlzLm5JbXBvcnRGdW5jdGlvbnM7IGk8IHRoaXMubkltcG9ydEZ1bmN0aW9ucyArIHRoaXMubkludGVybmFsRnVuY3Rpb25zOyBpKyspIHtcbiAgICAgICAgICAgIGVudHJpZXMucHVzaCguLi52YXJ1aW50MzIodGhpcy5mdW5jdGlvbnNbaV0uc2lnbmF0dXJlSWR4KSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuX2J1aWxkU2VjdGlvbihcbiAgICAgICAgICAgIDB4MDMsXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgLi4udmFydWludDMyKGVudHJpZXMubGVuZ3RoKSxcbiAgICAgICAgICAgICAgICAuLi5bLi4uZW50cmllc11cbiAgICAgICAgICAgIF1cbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBfYnVpbGRGdW5jdGlvbnNUYWJsZSgpIHtcbiAgICAgICAgaWYgKHRoaXMuZnVuY3Rpb25zVGFibGUubGVuZ3RoID09IDApIHJldHVybiBbXTtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2J1aWxkU2VjdGlvbihcbiAgICAgICAgICAgIDB4MDQsXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgLi4udmFydWludDMyKDEpLFxuICAgICAgICAgICAgICAgIDB4NzAsIDAsIC4uLnZhcnVpbnQzMih0aGlzLmZ1bmN0aW9uc1RhYmxlLmxlbmd0aClcbiAgICAgICAgICAgIF1cbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBfYnVpbGRFbGVtZW50cygpIHtcbiAgICAgICAgaWYgKHRoaXMuZnVuY3Rpb25zVGFibGUubGVuZ3RoID09IDApIHJldHVybiBbXTtcbiAgICAgICAgY29uc3QgZW50cmllcyA9IFtdO1xuICAgICAgICBmb3IgKGxldCBpPTA7IGk8dGhpcy5mdW5jdGlvbnNUYWJsZS5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgZW50cmllcy5wdXNoKC4uLnZhcnVpbnQzMih0aGlzLmZ1bmN0aW9uc1RhYmxlW2ldKSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuX2J1aWxkU2VjdGlvbihcbiAgICAgICAgICAgIDB4MDksXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgLi4udmFydWludDMyKDEpLCAgICAgIC8vIDEgZW50cnlcbiAgICAgICAgICAgICAgICAuLi52YXJ1aW50MzIoMCksICAgICAgLy8gVGFibGUgKDAgaW4gTVZQKVxuICAgICAgICAgICAgICAgIDB4NDEsICAgICAgICAgICAgICAgICAgICAgICAvLyBvZmZzZXQgMFxuICAgICAgICAgICAgICAgIC4uLnZhcmludDMyKDApLFxuICAgICAgICAgICAgICAgIDB4MGIsXG4gICAgICAgICAgICAgICAgLi4udmFydWludDMyKHRoaXMuZnVuY3Rpb25zVGFibGUubGVuZ3RoKSwgLy8gTnVtYmVyIG9mIGVsZW1lbnRzXG4gICAgICAgICAgICAgICAgLi4uWy4uLmVudHJpZXNdXG4gICAgICAgICAgICBdXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgX2J1aWxkRXhwb3J0cygpIHtcbiAgICAgICAgY29uc3QgZW50cmllcyA9IFtdO1xuICAgICAgICBmb3IgKGxldCBpPTA7IGk8IHRoaXMuZXhwb3J0cy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgZW50cmllcy5wdXNoKFtcbiAgICAgICAgICAgICAgICAuLi5zdHJpbmcodGhpcy5leHBvcnRzW2ldLmV4cG9ydE5hbWUpLFxuICAgICAgICAgICAgICAgIDB4MDAsXG4gICAgICAgICAgICAgICAgLi4udmFydWludDMyKHRoaXMuZXhwb3J0c1tpXS5pZHgpXG4gICAgICAgICAgICBdKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5fYnVpbGRTZWN0aW9uKFxuICAgICAgICAgICAgMHgwNyxcbiAgICAgICAgICAgIHZhcnVpbnQzMihlbnRyaWVzLmxlbmd0aCkuY29uY2F0KC4uLmVudHJpZXMpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgX2J1aWxkQ29kZSgpIHtcbiAgICAgICAgY29uc3QgZW50cmllcyA9IFtdO1xuICAgICAgICBmb3IgKGxldCBpPXRoaXMubkltcG9ydEZ1bmN0aW9uczsgaTwgdGhpcy5uSW1wb3J0RnVuY3Rpb25zICsgdGhpcy5uSW50ZXJuYWxGdW5jdGlvbnM7IGkrKykge1xuICAgICAgICAgICAgZW50cmllcy5wdXNoKHRoaXMuZnVuY3Rpb25zW2ldLmdldEJvZHkoKSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuX2J1aWxkU2VjdGlvbihcbiAgICAgICAgICAgIDB4MGEsXG4gICAgICAgICAgICB2YXJ1aW50MzIoZW50cmllcy5sZW5ndGgpLmNvbmNhdCguLi5lbnRyaWVzKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIF9idWlsZERhdGEoKSB7XG4gICAgICAgIGNvbnN0IGVudHJpZXMgPSBbXTtcbiAgICAgICAgZW50cmllcy5wdXNoKFtcbiAgICAgICAgICAgIDB4MDAsXG4gICAgICAgICAgICAweDQxLFxuICAgICAgICAgICAgMHgwMCxcbiAgICAgICAgICAgIDB4MGIsXG4gICAgICAgICAgICAweDA0LFxuICAgICAgICAgICAgLi4udTMyKHRoaXMuZnJlZSlcbiAgICAgICAgXSk7XG4gICAgICAgIGZvciAobGV0IGk9MDsgaTwgdGhpcy5kYXRhcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgZW50cmllcy5wdXNoKFtcbiAgICAgICAgICAgICAgICAweDAwLFxuICAgICAgICAgICAgICAgIDB4NDEsXG4gICAgICAgICAgICAgICAgLi4udmFyaW50MzIodGhpcy5kYXRhc1tpXS5vZmZzZXQpLFxuICAgICAgICAgICAgICAgIDB4MGIsXG4gICAgICAgICAgICAgICAgLi4udmFydWludDMyKHRoaXMuZGF0YXNbaV0uYnl0ZXMubGVuZ3RoKSxcbiAgICAgICAgICAgICAgICAuLi50aGlzLmRhdGFzW2ldLmJ5dGVzLFxuICAgICAgICAgICAgXSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuX2J1aWxkU2VjdGlvbihcbiAgICAgICAgICAgIDB4MGIsXG4gICAgICAgICAgICB2YXJ1aW50MzIoZW50cmllcy5sZW5ndGgpLmNvbmNhdCguLi5lbnRyaWVzKVxuICAgICAgICApO1xuICAgIH1cblxufVxuXG5nbG9iYWxUaGlzLmN1cnZlX2JuMTI4ID0gbnVsbDtcblxuYXN5bmMgZnVuY3Rpb24gYnVpbGRCbjEyOChzaW5nbGVUaHJlYWQsIHBsdWdpbnMpIHtcbiAgICBpZiAoKCFzaW5nbGVUaHJlYWQpICYmIChnbG9iYWxUaGlzLmN1cnZlX2JuMTI4KSkgcmV0dXJuIGdsb2JhbFRoaXMuY3VydmVfYm4xMjg7XG5cbiAgICBjb25zdCBtb2R1bGVCdWlsZGVyID0gbmV3IE1vZHVsZUJ1aWxkZXIoKTtcbiAgICBtb2R1bGVCdWlsZGVyLnNldE1lbW9yeSgyNSk7XG4gICAgYnVpbGRCbjEyOCQxKG1vZHVsZUJ1aWxkZXIpO1xuXG4gICAgaWYgKHBsdWdpbnMpIHBsdWdpbnMobW9kdWxlQnVpbGRlcik7XG5cbiAgICBjb25zdCBibjEyOHdhc20gPSB7fTtcblxuICAgIGJuMTI4d2FzbS5jb2RlID0gbW9kdWxlQnVpbGRlci5idWlsZCgpO1xuICAgIGJuMTI4d2FzbS5wcSA9IG1vZHVsZUJ1aWxkZXIubW9kdWxlcy5mMW0ucHE7XG4gICAgYm4xMjh3YXNtLnByID0gbW9kdWxlQnVpbGRlci5tb2R1bGVzLmZybS5wcTtcbiAgICBibjEyOHdhc20ucEcxZ2VuID0gbW9kdWxlQnVpbGRlci5tb2R1bGVzLmJuMTI4LnBHMWdlbjtcbiAgICBibjEyOHdhc20ucEcxemVybyA9IG1vZHVsZUJ1aWxkZXIubW9kdWxlcy5ibjEyOC5wRzF6ZXJvO1xuICAgIGJuMTI4d2FzbS5wRzFiID0gbW9kdWxlQnVpbGRlci5tb2R1bGVzLmJuMTI4LnBHMWI7XG4gICAgYm4xMjh3YXNtLnBHMmdlbiA9IG1vZHVsZUJ1aWxkZXIubW9kdWxlcy5ibjEyOC5wRzJnZW47XG4gICAgYm4xMjh3YXNtLnBHMnplcm8gPSBtb2R1bGVCdWlsZGVyLm1vZHVsZXMuYm4xMjgucEcyemVybztcbiAgICBibjEyOHdhc20ucEcyYiA9IG1vZHVsZUJ1aWxkZXIubW9kdWxlcy5ibjEyOC5wRzJiO1xuICAgIGJuMTI4d2FzbS5wT25lVCA9IG1vZHVsZUJ1aWxkZXIubW9kdWxlcy5ibjEyOC5wT25lVDtcbiAgICBibjEyOHdhc20ucHJlUFNpemUgPSBtb2R1bGVCdWlsZGVyLm1vZHVsZXMuYm4xMjgucHJlUFNpemU7XG4gICAgYm4xMjh3YXNtLnByZVFTaXplID0gbW9kdWxlQnVpbGRlci5tb2R1bGVzLmJuMTI4LnByZVFTaXplO1xuICAgIGJuMTI4d2FzbS5uOHEgPSAzMjtcbiAgICBibjEyOHdhc20ubjhyID0gMzI7XG4gICAgYm4xMjh3YXNtLnEgPSBtb2R1bGVCdWlsZGVyLm1vZHVsZXMuYm4xMjgucTtcbiAgICBibjEyOHdhc20uciA9IG1vZHVsZUJ1aWxkZXIubW9kdWxlcy5ibjEyOC5yO1xuXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgICBuYW1lOiBcImJuMTI4XCIsXG4gICAgICAgIHdhc206IGJuMTI4d2FzbSxcbiAgICAgICAgcTogZShcIjIxODg4MjQyODcxODM5Mjc1MjIyMjQ2NDA1NzQ1MjU3Mjc1MDg4Njk2MzExMTU3Mjk3ODIzNjYyNjg5MDM3ODk0NjQ1MjI2MjA4NTgzXCIpLFxuICAgICAgICByOiBlKFwiMjE4ODgyNDI4NzE4MzkyNzUyMjIyNDY0MDU3NDUyNTcyNzUwODg1NDgzNjQ0MDA0MTYwMzQzNDM2OTgyMDQxODY1NzU4MDg0OTU2MTdcIiksXG4gICAgICAgIG44cTogMzIsXG4gICAgICAgIG44cjogMzIsXG4gICAgICAgIGNvZmFjdG9yRzI6IGUoXCIzMDY0NGU3MmUxMzFhMDI5Yjg1MDQ1YjY4MTgxNTg1ZTA2Y2VlY2RhNTcyYTI0ODkzNDVmMjI5OWMwZjlmYThkXCIsIDE2KSxcbiAgICAgICAgc2luZ2xlVGhyZWFkOiBzaW5nbGVUaHJlYWQgPyB0cnVlIDogZmFsc2VcbiAgICB9O1xuXG4gICAgY29uc3QgY3VydmUgPSBhd2FpdCBidWlsZEVuZ2luZShwYXJhbXMpO1xuICAgIGN1cnZlLnRlcm1pbmF0ZSA9IGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKCFwYXJhbXMuc2luZ2xlVGhyZWFkKSB7XG4gICAgICAgICAgICBnbG9iYWxUaGlzLmN1cnZlX2JuMTI4ID0gbnVsbDtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMudG0udGVybWluYXRlKCk7XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgaWYgKCFzaW5nbGVUaHJlYWQpIHtcbiAgICAgICAgZ2xvYmFsVGhpcy5jdXJ2ZV9ibjEyOCA9IGN1cnZlO1xuICAgIH1cblxuICAgIHJldHVybiBjdXJ2ZTtcbn1cblxuZ2xvYmFsVGhpcy5jdXJ2ZV9ibHMxMjM4MSA9IG51bGw7XG5cbmFzeW5jIGZ1bmN0aW9uIGJ1aWxkQmxzMTIzODEoc2luZ2xlVGhyZWFkLCBwbHVnaW5zKSB7XG4gICAgaWYgKCghc2luZ2xlVGhyZWFkKSAmJiAoZ2xvYmFsVGhpcy5jdXJ2ZV9ibHMxMjM4MSkpIHJldHVybiBnbG9iYWxUaGlzLmN1cnZlX2JsczEyMzgxO1xuXG4gICAgY29uc3QgbW9kdWxlQnVpbGRlciA9IG5ldyBNb2R1bGVCdWlsZGVyKCk7XG4gICAgbW9kdWxlQnVpbGRlci5zZXRNZW1vcnkoMjUpO1xuICAgIGJ1aWxkQmxzMTIzODEkMShtb2R1bGVCdWlsZGVyKTtcblxuICAgIGlmIChwbHVnaW5zKSBwbHVnaW5zKG1vZHVsZUJ1aWxkZXIpO1xuXG4gICAgY29uc3QgYmxzMTIzODF3YXNtID0ge307XG5cbiAgICBibHMxMjM4MXdhc20uY29kZSA9IG1vZHVsZUJ1aWxkZXIuYnVpbGQoKTtcbiAgICBibHMxMjM4MXdhc20ucHEgPSBtb2R1bGVCdWlsZGVyLm1vZHVsZXMuZjFtLnBxO1xuICAgIGJsczEyMzgxd2FzbS5wciA9IG1vZHVsZUJ1aWxkZXIubW9kdWxlcy5mcm0ucHE7XG4gICAgYmxzMTIzODF3YXNtLnBHMWdlbiA9IG1vZHVsZUJ1aWxkZXIubW9kdWxlcy5ibHMxMjM4MS5wRzFnZW47XG4gICAgYmxzMTIzODF3YXNtLnBHMXplcm8gPSBtb2R1bGVCdWlsZGVyLm1vZHVsZXMuYmxzMTIzODEucEcxemVybztcbiAgICBibHMxMjM4MXdhc20ucEcxYiA9IG1vZHVsZUJ1aWxkZXIubW9kdWxlcy5ibHMxMjM4MS5wRzFiO1xuICAgIGJsczEyMzgxd2FzbS5wRzJnZW4gPSBtb2R1bGVCdWlsZGVyLm1vZHVsZXMuYmxzMTIzODEucEcyZ2VuO1xuICAgIGJsczEyMzgxd2FzbS5wRzJ6ZXJvID0gbW9kdWxlQnVpbGRlci5tb2R1bGVzLmJsczEyMzgxLnBHMnplcm87XG4gICAgYmxzMTIzODF3YXNtLnBHMmIgPSBtb2R1bGVCdWlsZGVyLm1vZHVsZXMuYmxzMTIzODEucEcyYjtcbiAgICBibHMxMjM4MXdhc20ucE9uZVQgPSBtb2R1bGVCdWlsZGVyLm1vZHVsZXMuYmxzMTIzODEucE9uZVQ7XG4gICAgYmxzMTIzODF3YXNtLnByZVBTaXplID0gbW9kdWxlQnVpbGRlci5tb2R1bGVzLmJsczEyMzgxLnByZVBTaXplO1xuICAgIGJsczEyMzgxd2FzbS5wcmVRU2l6ZSA9IG1vZHVsZUJ1aWxkZXIubW9kdWxlcy5ibHMxMjM4MS5wcmVRU2l6ZTtcbiAgICBibHMxMjM4MXdhc20ubjhxID0gNDg7XG4gICAgYmxzMTIzODF3YXNtLm44ciA9IDMyO1xuICAgIGJsczEyMzgxd2FzbS5xID0gbW9kdWxlQnVpbGRlci5tb2R1bGVzLmJsczEyMzgxLnE7XG4gICAgYmxzMTIzODF3YXNtLnIgPSBtb2R1bGVCdWlsZGVyLm1vZHVsZXMuYmxzMTIzODEucjtcblxuXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgICBuYW1lOiBcImJsczEyMzgxXCIsXG4gICAgICAgIHdhc206IGJsczEyMzgxd2FzbSxcbiAgICAgICAgcTogZShcIjFhMDExMWVhMzk3ZmU2OWE0YjFiYTdiNjQzNGJhY2Q3NjQ3NzRiODRmMzg1MTJiZjY3MzBkMmEwZjZiMGY2MjQxZWFiZmZmZWIxNTNmZmZmYjlmZWZmZmZmZmZmYWFhYlwiLCAxNiksXG4gICAgICAgIHI6IGUoXCI3M2VkYTc1MzI5OWQ3ZDQ4MzMzOWQ4MDgwOWExZDgwNTUzYmRhNDAyZmZmZTViZmVmZmZmZmZmZjAwMDAwMDAxXCIsIDE2KSxcbiAgICAgICAgbjhxOiA0OCxcbiAgICAgICAgbjhyOiAzMixcbiAgICAgICAgY29mYWN0b3JHMTogZShcIjB4Mzk2YzhjMDA1NTU1ZTE1NjhjMDBhYWFiMDAwMGFhYWJcIiwgMTYpLFxuICAgICAgICBjb2ZhY3RvckcyOiBlKFwiMHg1ZDU0M2E5NTQxNGU3ZjEwOTFkNTA3OTI4NzZhMjAyY2Q5MWRlNDU0NzA4NWFiYWE2OGEyMDViMmU1YTdkZGZhNjI4ZjFjYjRkOWU4MmVmMjE1MzdlMjkzYTY2OTFhZTE2MTZlYzZlNzg2ZjBjNzBjZjFjMzhlMzFjNzIzOGU1XCIsIDE2KSxcbiAgICAgICAgc2luZ2xlVGhyZWFkOiBzaW5nbGVUaHJlYWQgPyB0cnVlIDogZmFsc2VcbiAgICB9O1xuXG4gICAgY29uc3QgY3VydmUgPSBhd2FpdCBidWlsZEVuZ2luZShwYXJhbXMpO1xuICAgIGN1cnZlLnRlcm1pbmF0ZSA9IGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKCFwYXJhbXMuc2luZ2xlVGhyZWFkKSB7XG4gICAgICAgICAgICBnbG9iYWxUaGlzLmN1cnZlX2JsczEyMzgxID0gbnVsbDtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMudG0udGVybWluYXRlKCk7XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgaWYgKCFzaW5nbGVUaHJlYWQpIHtcbiAgICAgICAgZ2xvYmFsVGhpcy5jdXJ2ZV9ibHMxMjM4MSA9IGN1cnZlO1xuICAgIH1cblxuICAgIHJldHVybiBjdXJ2ZTtcbn1cblxuY29uc3QgYmxzMTIzODFyID0gZShcIjczZWRhNzUzMjk5ZDdkNDgzMzM5ZDgwODA5YTFkODA1NTNiZGE0MDJmZmZlNWJmZWZmZmZmZmZmMDAwMDAwMDFcIiwgMTYpO1xuY29uc3QgYm4xMjhyID0gZShcIjIxODg4MjQyODcxODM5Mjc1MjIyMjQ2NDA1NzQ1MjU3Mjc1MDg4NTQ4MzY0NDAwNDE2MDM0MzQzNjk4MjA0MTg2NTc1ODA4NDk1NjE3XCIpO1xuXG5jb25zdCBibHMxMjM4MXEgPSBlKFwiMWEwMTExZWEzOTdmZTY5YTRiMWJhN2I2NDM0YmFjZDc2NDc3NGI4NGYzODUxMmJmNjczMGQyYTBmNmIwZjYyNDFlYWJmZmZlYjE1M2ZmZmZiOWZlZmZmZmZmZmZhYWFiXCIsIDE2KTtcbmNvbnN0IGJuMTI4cSA9IGUoXCIyMTg4ODI0Mjg3MTgzOTI3NTIyMjI0NjQwNTc0NTI1NzI3NTA4ODY5NjMxMTE1NzI5NzgyMzY2MjY4OTAzNzg5NDY0NTIyNjIwODU4M1wiKTtcblxuYXN5bmMgZnVuY3Rpb24gZ2V0Q3VydmVGcm9tUihyLCBzaW5nbGVUaHJlYWQsIHBsdWdpbnMpIHtcbiAgICBsZXQgY3VydmU7XG4gICAgaWYgKGVxKHIsIGJuMTI4cikpIHtcbiAgICAgICAgY3VydmUgPSBhd2FpdCBidWlsZEJuMTI4KHNpbmdsZVRocmVhZCwgcGx1Z2lucyk7XG4gICAgfSBlbHNlIGlmIChlcShyLCBibHMxMjM4MXIpKSB7XG4gICAgICAgIGN1cnZlID0gYXdhaXQgYnVpbGRCbHMxMjM4MShzaW5nbGVUaHJlYWQsIHBsdWdpbnMpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgQ3VydmUgbm90IHN1cHBvcnRlZDogJHt0b1N0cmluZyhyKX1gKTtcbiAgICB9XG4gICAgcmV0dXJuIGN1cnZlO1xufVxuXG5hc3luYyBmdW5jdGlvbiBnZXRDdXJ2ZUZyb21RKHEsIHNpbmdsZVRocmVhZCwgcGx1Z2lucykge1xuICAgIGxldCBjdXJ2ZTtcbiAgICBpZiAoZXEocSwgYm4xMjhxKSkge1xuICAgICAgICBjdXJ2ZSA9IGF3YWl0IGJ1aWxkQm4xMjgoc2luZ2xlVGhyZWFkLCBwbHVnaW5zKTtcbiAgICB9IGVsc2UgaWYgKGVxKHEsIGJsczEyMzgxcSkpIHtcbiAgICAgICAgY3VydmUgPSBhd2FpdCBidWlsZEJsczEyMzgxKHNpbmdsZVRocmVhZCwgcGx1Z2lucyk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBDdXJ2ZSBub3Qgc3VwcG9ydGVkOiAke3RvU3RyaW5nKHEsIDE2KX1gKTtcbiAgICB9XG4gICAgcmV0dXJuIGN1cnZlO1xufVxuXG5hc3luYyBmdW5jdGlvbiBnZXRDdXJ2ZUZyb21OYW1lKG5hbWUsIHNpbmdsZVRocmVhZCwgcGx1Z2lucykge1xuICAgIGxldCBjdXJ2ZTtcbiAgICBjb25zdCBub3JtTmFtZSA9IG5vcm1hbGl6ZU5hbWUobmFtZSk7XG4gICAgaWYgKFtcIkJOMTI4XCIsIFwiQk4yNTRcIiwgXCJBTFRCTjEyOFwiXS5pbmRleE9mKG5vcm1OYW1lKSA+PSAwKSB7XG4gICAgICAgIGN1cnZlID0gYXdhaXQgYnVpbGRCbjEyOChzaW5nbGVUaHJlYWQsIHBsdWdpbnMpO1xuICAgIH0gZWxzZSBpZiAoW1wiQkxTMTIzODFcIl0uaW5kZXhPZihub3JtTmFtZSkgPj0gMCkge1xuICAgICAgICBjdXJ2ZSA9IGF3YWl0IGJ1aWxkQmxzMTIzODEoc2luZ2xlVGhyZWFkLCBwbHVnaW5zKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEN1cnZlIG5vdCBzdXBwb3J0ZWQ6ICR7bmFtZX1gKTtcbiAgICB9XG4gICAgcmV0dXJuIGN1cnZlO1xuXG4gICAgZnVuY3Rpb24gbm9ybWFsaXplTmFtZShuKSB7XG4gICAgICAgIHJldHVybiBuLnRvVXBwZXJDYXNlKCkubWF0Y2goL1tBLVphLXowLTldKy9nKS5qb2luKFwiXCIpO1xuICAgIH1cblxufVxuXG5jb25zdCBTY2FsYXI9X1NjYWxhcjtcbmNvbnN0IHV0aWxzID0gX3V0aWxzO1xuXG5leHBvcnQgeyBCaWdCdWZmZXIsIENoYUNoYSwgRUMsIFpxRmllbGQgYXMgRjFGaWVsZCwgRjJGaWVsZCwgRjNGaWVsZCwgUG9sRmllbGQsIFNjYWxhciwgWnFGaWVsZCwgYnVpbGRCbHMxMjM4MSwgYnVpbGRCbjEyOCwgZ2V0Q3VydmVGcm9tTmFtZSwgZ2V0Q3VydmVGcm9tUSwgZ2V0Q3VydmVGcm9tUiwgdXRpbHMgfTtcbiIsIlxuaW1wb3J0IGZzIGZyb21cImZzXCI7XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBvcGVuKGZpbGVOYW1lLCBvcGVuRmxhZ3MsIGNhY2hlU2l6ZSwgcGFnZVNpemUpIHtcbiAgICBjYWNoZVNpemUgPSBjYWNoZVNpemUgfHwgNDA5Nio2NDtcbiAgICBpZiAodHlwZW9mIG9wZW5GbGFncyAhPT0gXCJudW1iZXJcIiAmJiBbXCJ3K1wiLCBcInd4K1wiLCBcInJcIiwgXCJheCtcIiwgXCJhK1wiXS5pbmRleE9mKG9wZW5GbGFncykgPDApXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgb3BlbiBvcHRpb25cIik7XG4gICAgY29uc3QgZmQgPWF3YWl0IGZzLnByb21pc2VzLm9wZW4oZmlsZU5hbWUsIG9wZW5GbGFncyk7XG5cbiAgICBjb25zdCBzdGF0cyA9IGF3YWl0IGZkLnN0YXQoKTtcblxuICAgIHJldHVybiAgbmV3IEZhc3RGaWxlKGZkLCBzdGF0cywgY2FjaGVTaXplLCBwYWdlU2l6ZSwgZmlsZU5hbWUpO1xufVxuXG5cbmNsYXNzIEZhc3RGaWxlIHtcblxuICAgIGNvbnN0cnVjdG9yKGZkLCBzdGF0cywgY2FjaGVTaXplLCBwYWdlU2l6ZSwgZmlsZU5hbWUpIHtcbiAgICAgICAgdGhpcy5maWxlTmFtZSA9IGZpbGVOYW1lO1xuICAgICAgICB0aGlzLmZkID0gZmQ7XG4gICAgICAgIHRoaXMucG9zID0gMDtcbiAgICAgICAgdGhpcy5wYWdlU2l6ZSA9IHBhZ2VTaXplIHx8ICgxIDw8IDgpO1xuICAgICAgICB3aGlsZSAodGhpcy5wYWdlU2l6ZSA8IHN0YXRzLmJsa3NpemUpIHtcbiAgICAgICAgICAgIHRoaXMucGFnZVNpemUgKj0gMjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnRvdGFsU2l6ZSA9IHN0YXRzLnNpemU7XG4gICAgICAgIHRoaXMudG90YWxQYWdlcyA9IE1hdGguZmxvb3IoKHN0YXRzLnNpemUgLTEpIC8gdGhpcy5wYWdlU2l6ZSkrMTtcbiAgICAgICAgdGhpcy5tYXhQYWdlc0xvYWRlZCA9IE1hdGguZmxvb3IoIGNhY2hlU2l6ZSAvIHRoaXMucGFnZVNpemUpKzE7XG4gICAgICAgIHRoaXMucGFnZXMgPSB7fTtcbiAgICAgICAgdGhpcy5wZW5kaW5nTG9hZHMgPSBbXTtcbiAgICAgICAgdGhpcy53cml0aW5nID0gZmFsc2U7XG4gICAgICAgIHRoaXMucmVhZGluZyA9IGZhbHNlO1xuICAgICAgICB0aGlzLmF2QnVmZnMgPSBbXTtcbiAgICAgICAgdGhpcy5oaXN0b3J5ID0ge307XG4gICAgfVxuXG4gICAgX2xvYWRQYWdlKHApIHtcbiAgICAgICAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gICAgICAgIGNvbnN0IFAgPSBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KT0+IHtcbiAgICAgICAgICAgIHNlbGYucGVuZGluZ0xvYWRzLnB1c2goe1xuICAgICAgICAgICAgICAgIHBhZ2U6IHAsXG4gICAgICAgICAgICAgICAgcmVzb2x2ZTogcmVzb2x2ZSxcbiAgICAgICAgICAgICAgICByZWplY3Q6IHJlamVjdFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgICBzZWxmLl9fc3RhdHVzUGFnZShcIkFmdGVyIExvYWQgcmVxdWVzdDogXCIsIHApO1xuICAgICAgICByZXR1cm4gUDtcbiAgICB9XG5cbiAgICBfX3N0YXR1c1BhZ2UocywgcCkge1xuICAgICAgICBjb25zdCBsb2dFbnRyeSA9IFtdO1xuICAgICAgICBjb25zdCBzZWxmPXRoaXM7XG4gICAgICAgIGlmICghc2VsZi5sb2dIaXN0b3J5KSByZXR1cm47XG4gICAgICAgIGxvZ0VudHJ5LnB1c2goXCI9PVwiICsgcysgXCIgXCIgK3ApO1xuICAgICAgICBsZXQgUyA9IFwiXCI7XG4gICAgICAgIGZvciAobGV0IGk9MDsgaTxzZWxmLnBlbmRpbmdMb2Fkcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgaWYgKHNlbGYucGVuZGluZ0xvYWRzW2ldLnBhZ2UgPT0gcCkgUyA9IFMgKyBcIiBcIiArIGk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKFMpIGxvZ0VudHJ5LnB1c2goXCJQZW5kaW5nIGxvYWRzOlwiK1MpO1xuICAgICAgICBpZiAodHlwZW9mIHNlbGYucGFnZXNbcF0gIT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgICAgICAgY29uc3QgcGFnZSA9IHNlbGYucGFnZXNbcF07XG4gICAgICAgICAgICBsb2dFbnRyeS5wdXNoKFwiTG9hZGVkXCIpO1xuICAgICAgICAgICAgbG9nRW50cnkucHVzaChcInBlbmRpbmdPcHM6IFwiK3BhZ2UucGVuZGluZ09wcyk7XG4gICAgICAgICAgICBpZiAocGFnZS5sb2FkaW5nKSBsb2dFbnRyeS5wdXNoKFwibG9hZGluZzogXCIrcGFnZS5sb2FkaW5nKTtcbiAgICAgICAgICAgIGlmIChwYWdlLndyaXRpbmcpIGxvZ0VudHJ5LnB1c2goXCJ3cml0aW5nXCIpO1xuICAgICAgICAgICAgaWYgKHBhZ2UuZGlydHkpIGxvZ0VudHJ5LnB1c2goXCJkaXJ0eVwiKTtcbiAgICAgICAgfVxuICAgICAgICBsb2dFbnRyeS5wdXNoKFwiPT1cIik7XG5cbiAgICAgICAgaWYgKCFzZWxmLmhpc3RvcnlbcF0pIHNlbGYuaGlzdG9yeVtwXSA9IFtdO1xuICAgICAgICBzZWxmLmhpc3RvcnlbcF0ucHVzaChsb2dFbnRyeSk7XG4gICAgfVxuXG4gICAgX19wcmludEhpc3RvcnkocCkge1xuICAgICAgICBjb25zdCBzZWxmID0gdGhpcztcbiAgICAgICAgaWYgKCFzZWxmLmhpc3RvcnlbcF0pIGNvbnNvbGUubG9nKFwiRW1wdHkgSGlzdG9yeSBcIiwgcCk7XG4gICAgICAgIGNvbnNvbGUubG9nKFwiSGlzdG9yeSBcIitwKTtcbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPHNlbGYuaGlzdG9yeVtwXS5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgZm9yIChsZXQgaj0wOyBqPHNlbGYuaGlzdG9yeVtwXVtpXS5sZW5ndGg7IGorKykge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiLT4gXCIgKyBzZWxmLmhpc3RvcnlbcF1baV1bal0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG5cblxuICAgIF90cmlnZ2VyTG9hZCgpIHtcbiAgICAgICAgY29uc3Qgc2VsZiA9IHRoaXM7XG5cbiAgICAgICAgaWYgKHNlbGYucmVhZGluZykgcmV0dXJuO1xuICAgICAgICBpZiAoc2VsZi5wZW5kaW5nTG9hZHMubGVuZ3RoPT0wKSByZXR1cm47XG5cbiAgICAgICAgY29uc3QgcGFnZUlkeHMgPSBPYmplY3Qua2V5cyhzZWxmLnBhZ2VzKTtcblxuICAgICAgICBjb25zdCBkZWxldGFibGVQYWdlcyA9IFtdO1xuICAgICAgICBmb3IgKGxldCBpPTA7IGk8cGFnZUlkeHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IHBhZ2UgPSBzZWxmLnBhZ2VzW3BhcnNlSW50KHBhZ2VJZHhzW2ldKV07XG4gICAgICAgICAgICBpZiAoKHBhZ2UuZGlydHkgPT0gZmFsc2UpJiYocGFnZS5wZW5kaW5nT3BzPT0wKSYmKCFwYWdlLndyaXRpbmcpJiYoIXBhZ2UubG9hZGluZykpIGRlbGV0YWJsZVBhZ2VzLnB1c2gocGFyc2VJbnQocGFnZUlkeHNbaV0pKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBmcmVlUGFnZXMgPSBzZWxmLm1heFBhZ2VzTG9hZGVkIC0gcGFnZUlkeHMubGVuZ3RoO1xuXG4gICAgICAgIGNvbnN0IG9wcyA9IFtdO1xuXG4gICAgICAgIC8vIHdoaWxlIHBlbmRpbmcgbG9hZHMgYW5kXG4gICAgICAgIC8vICAgICB0aGUgcGFnZSBpcyBsb2FkZWQgb3IgSSBjYW4gcmVjb3ZlciBvbmUuXG4gICAgICAgIHdoaWxlIChcbiAgICAgICAgICAgIChzZWxmLnBlbmRpbmdMb2Fkcy5sZW5ndGg+MCkgJiZcbiAgICAgICAgICAgICggICAodHlwZW9mIHNlbGYucGFnZXNbc2VsZi5wZW5kaW5nTG9hZHNbMF0ucGFnZV0gIT0gXCJ1bmRlZmluZWRcIiApXG4gICAgICAgICAgICAgIHx8KCAgKGZyZWVQYWdlcz4wKVxuICAgICAgICAgICAgICAgICB8fChkZWxldGFibGVQYWdlcy5sZW5ndGg+MCkpKSkge1xuICAgICAgICAgICAgY29uc3QgbG9hZCA9IHNlbGYucGVuZGluZ0xvYWRzLnNoaWZ0KCk7XG4gICAgICAgICAgICBpZiAodHlwZW9mIHNlbGYucGFnZXNbbG9hZC5wYWdlXSAhPSBcInVuZGVmaW5lZFwiKSB7XG4gICAgICAgICAgICAgICAgc2VsZi5wYWdlc1tsb2FkLnBhZ2VdLnBlbmRpbmdPcHMgKys7XG4gICAgICAgICAgICAgICAgY29uc3QgaWR4ID0gZGVsZXRhYmxlUGFnZXMuaW5kZXhPZihsb2FkLnBhZ2UpO1xuICAgICAgICAgICAgICAgIGlmIChpZHg+PTApIGRlbGV0YWJsZVBhZ2VzLnNwbGljZShpZHgsIDEpO1xuICAgICAgICAgICAgICAgIGlmIChzZWxmLnBhZ2VzW2xvYWQucGFnZV0ubG9hZGluZykge1xuICAgICAgICAgICAgICAgICAgICBzZWxmLnBhZ2VzW2xvYWQucGFnZV0ubG9hZGluZy5wdXNoKGxvYWQpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGxvYWQucmVzb2x2ZSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBzZWxmLl9fc3RhdHVzUGFnZShcIkFmdGVyIExvYWQgKGNhY2hlZCk6IFwiLCBsb2FkLnBhZ2UpO1xuXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmIChmcmVlUGFnZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgZnJlZVBhZ2VzLS07XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZnAgPSBkZWxldGFibGVQYWdlcy5zaGlmdCgpO1xuICAgICAgICAgICAgICAgICAgICBzZWxmLl9fc3RhdHVzUGFnZShcIkJlZm9yZSBVbmxvYWQ6IFwiLCBmcCk7XG4gICAgICAgICAgICAgICAgICAgIHNlbGYuYXZCdWZmcy51bnNoaWZ0KHNlbGYucGFnZXNbZnBdKTtcbiAgICAgICAgICAgICAgICAgICAgZGVsZXRlIHNlbGYucGFnZXNbZnBdO1xuICAgICAgICAgICAgICAgICAgICBzZWxmLl9fc3RhdHVzUGFnZShcIkFmdGVyIFVubG9hZDogXCIsIGZwKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAobG9hZC5wYWdlPj1zZWxmLnRvdGFsUGFnZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgc2VsZi5wYWdlc1tsb2FkLnBhZ2VdID0gZ2V0TmV3UGFnZSgpO1xuICAgICAgICAgICAgICAgICAgICBsb2FkLnJlc29sdmUoKTtcbiAgICAgICAgICAgICAgICAgICAgc2VsZi5fX3N0YXR1c1BhZ2UoXCJBZnRlciBMb2FkIChuZXcpOiBcIiwgbG9hZC5wYWdlKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBzZWxmLnJlYWRpbmcgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICBzZWxmLnBhZ2VzW2xvYWQucGFnZV0gPSBnZXROZXdQYWdlKCk7XG4gICAgICAgICAgICAgICAgICAgIHNlbGYucGFnZXNbbG9hZC5wYWdlXS5sb2FkaW5nID0gW2xvYWRdO1xuICAgICAgICAgICAgICAgICAgICBvcHMucHVzaChzZWxmLmZkLnJlYWQoc2VsZi5wYWdlc1tsb2FkLnBhZ2VdLmJ1ZmYsIDAsIHNlbGYucGFnZVNpemUsIGxvYWQucGFnZSpzZWxmLnBhZ2VTaXplKS50aGVuKChyZXMpPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5wYWdlc1tsb2FkLnBhZ2VdLnNpemUgPSByZXMuYnl0ZXNSZWFkO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbG9hZGluZyA9IHNlbGYucGFnZXNbbG9hZC5wYWdlXS5sb2FkaW5nO1xuICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlIHNlbGYucGFnZXNbbG9hZC5wYWdlXS5sb2FkaW5nO1xuICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaT0wOyBpPGxvYWRpbmcubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2FkaW5nW2ldLnJlc29sdmUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX19zdGF0dXNQYWdlKFwiQWZ0ZXIgTG9hZCAobG9hZGVkKTogXCIsIGxvYWQucGFnZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzO1xuICAgICAgICAgICAgICAgICAgICB9LCAoZXJyKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsb2FkLnJlamVjdChlcnIpO1xuICAgICAgICAgICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICAgICAgICAgIHNlbGYuX19zdGF0dXNQYWdlKFwiQWZ0ZXIgTG9hZCAobG9hZGluZyk6IFwiLCBsb2FkLnBhZ2UpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyBpZiAob3BzLmxlbmd0aD4xKSBjb25zb2xlLmxvZyhvcHMubGVuZ3RoKTtcblxuICAgICAgICBQcm9taXNlLmFsbChvcHMpLnRoZW4oICgpID0+IHtcbiAgICAgICAgICAgIHNlbGYucmVhZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgaWYgKHNlbGYucGVuZGluZ0xvYWRzLmxlbmd0aD4wKSBzZXRJbW1lZGlhdGUoc2VsZi5fdHJpZ2dlckxvYWQuYmluZChzZWxmKSk7XG4gICAgICAgICAgICBzZWxmLl90cnlDbG9zZSgpO1xuICAgICAgICB9KTtcblxuICAgICAgICBmdW5jdGlvbiBnZXROZXdQYWdlKCkge1xuICAgICAgICAgICAgaWYgKHNlbGYuYXZCdWZmcy5sZW5ndGg+MCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHAgPSBzZWxmLmF2QnVmZnMuc2hpZnQoKTtcbiAgICAgICAgICAgICAgICBwLmRpcnR5ID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgcC5wZW5kaW5nT3BzID0gMTtcbiAgICAgICAgICAgICAgICBwLnNpemUgPTA7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHA7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIGRpcnR5OiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgYnVmZjogbmV3IFVpbnQ4QXJyYXkoc2VsZi5wYWdlU2l6ZSksXG4gICAgICAgICAgICAgICAgICAgIHBlbmRpbmdPcHM6IDEsXG4gICAgICAgICAgICAgICAgICAgIHNpemU6IDBcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICB9XG5cblxuICAgIF90cmlnZ2VyV3JpdGUoKSB7XG4gICAgICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuICAgICAgICBpZiAoc2VsZi53cml0aW5nKSByZXR1cm47XG5cbiAgICAgICAgY29uc3QgcGFnZUlkeHMgPSBPYmplY3Qua2V5cyhzZWxmLnBhZ2VzKTtcblxuICAgICAgICBjb25zdCBvcHMgPSBbXTtcblxuICAgICAgICBmb3IgKGxldCBpPTA7IGk8cGFnZUlkeHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IHBhZ2UgPSBzZWxmLnBhZ2VzW3BhcnNlSW50KHBhZ2VJZHhzW2ldKV07XG4gICAgICAgICAgICBpZiAocGFnZS5kaXJ0eSkge1xuICAgICAgICAgICAgICAgIHBhZ2UuZGlydHkgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBwYWdlLndyaXRpbmcgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHNlbGYud3JpdGluZyA9IHRydWU7XG4gICAgICAgICAgICAgICAgb3BzLnB1c2goIHNlbGYuZmQud3JpdGUocGFnZS5idWZmLCAwLCBwYWdlLnNpemUsIHBhcnNlSW50KHBhZ2VJZHhzW2ldKSpzZWxmLnBhZ2VTaXplKS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcGFnZS53cml0aW5nID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9LCAoZXJyKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiRVJST1IgV3JpdGluZzogXCIrZXJyKTtcbiAgICAgICAgICAgICAgICAgICAgc2VsZi5lcnJvciA9IGVycjtcbiAgICAgICAgICAgICAgICAgICAgc2VsZi5fdHJ5Q2xvc2UoKTtcbiAgICAgICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoc2VsZi53cml0aW5nKSB7XG4gICAgICAgICAgICBQcm9taXNlLmFsbChvcHMpLnRoZW4oICgpID0+IHtcbiAgICAgICAgICAgICAgICBzZWxmLndyaXRpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBzZXRJbW1lZGlhdGUoc2VsZi5fdHJpZ2dlcldyaXRlLmJpbmQoc2VsZikpO1xuICAgICAgICAgICAgICAgIHNlbGYuX3RyeUNsb3NlKCk7XG4gICAgICAgICAgICAgICAgaWYgKHNlbGYucGVuZGluZ0xvYWRzLmxlbmd0aD4wKSBzZXRJbW1lZGlhdGUoc2VsZi5fdHJpZ2dlckxvYWQuYmluZChzZWxmKSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIF9nZXREaXJ0eVBhZ2UoKSB7XG4gICAgICAgIGZvciAobGV0IHAgaW4gdGhpcy5wYWdlcykge1xuICAgICAgICAgICAgaWYgKHRoaXMucGFnZXNbcF0uZGlydHkpIHJldHVybiBwO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAtMTtcbiAgICB9XG5cbiAgICBhc3luYyB3cml0ZShidWZmLCBwb3MpIHtcbiAgICAgICAgaWYgKGJ1ZmYuYnl0ZUxlbmd0aCA9PSAwKSByZXR1cm47XG4gICAgICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuLypcbiAgICAgICAgaWYgKGJ1ZmYuYnl0ZUxlbmd0aCA+IHNlbGYucGFnZVNpemUqc2VsZi5tYXhQYWdlc0xvYWRlZCowLjgpIHtcbiAgICAgICAgICAgIGNvbnN0IGNhY2hlU2l6ZSA9IE1hdGguZmxvb3IoYnVmZi5ieXRlTGVuZ3RoICogMS4xKTtcbiAgICAgICAgICAgIHRoaXMubWF4UGFnZXNMb2FkZWQgPSBNYXRoLmZsb29yKCBjYWNoZVNpemUgLyBzZWxmLnBhZ2VTaXplKSsxO1xuICAgICAgICB9XG4qL1xuICAgICAgICBpZiAodHlwZW9mIHBvcyA9PSBcInVuZGVmaW5lZFwiKSBwb3MgPSBzZWxmLnBvcztcbiAgICAgICAgc2VsZi5wb3MgPSBwb3MrYnVmZi5ieXRlTGVuZ3RoO1xuICAgICAgICBpZiAoc2VsZi50b3RhbFNpemUgPCBwb3MgKyBidWZmLmJ5dGVMZW5ndGgpIHNlbGYudG90YWxTaXplID0gcG9zICsgYnVmZi5ieXRlTGVuZ3RoO1xuICAgICAgICBpZiAoc2VsZi5wZW5kaW5nQ2xvc2UpXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJXcml0aW5nIGEgY2xvc2luZyBmaWxlXCIpO1xuICAgICAgICBjb25zdCBmaXJzdFBhZ2UgPSBNYXRoLmZsb29yKHBvcyAvIHNlbGYucGFnZVNpemUpO1xuICAgICAgICBjb25zdCBsYXN0UGFnZSA9IE1hdGguZmxvb3IoKHBvcyArIGJ1ZmYuYnl0ZUxlbmd0aCAtMSkgLyBzZWxmLnBhZ2VTaXplKTtcblxuICAgICAgICBjb25zdCBwYWdlUHJvbWlzZXMgPSBbXTtcbiAgICAgICAgZm9yIChsZXQgaT1maXJzdFBhZ2U7IGk8PWxhc3RQYWdlOyBpKyspIHBhZ2VQcm9taXNlcy5wdXNoKHNlbGYuX2xvYWRQYWdlKGkpKTtcbiAgICAgICAgc2VsZi5fdHJpZ2dlckxvYWQoKTtcblxuICAgICAgICBsZXQgcCA9IGZpcnN0UGFnZTtcbiAgICAgICAgbGV0IG8gPSBwb3MgJSBzZWxmLnBhZ2VTaXplO1xuICAgICAgICBsZXQgciA9IGJ1ZmYuYnl0ZUxlbmd0aDtcbiAgICAgICAgd2hpbGUgKHI+MCkge1xuICAgICAgICAgICAgYXdhaXQgcGFnZVByb21pc2VzW3AtZmlyc3RQYWdlXTtcbiAgICAgICAgICAgIGNvbnN0IGwgPSAobytyID4gc2VsZi5wYWdlU2l6ZSkgPyAoc2VsZi5wYWdlU2l6ZSAtbykgOiByO1xuICAgICAgICAgICAgY29uc3Qgc3JjVmlldyA9IGJ1ZmYuc2xpY2UoIGJ1ZmYuYnl0ZUxlbmd0aCAtIHIsIGJ1ZmYuYnl0ZUxlbmd0aCAtIHIgKyBsKTtcbiAgICAgICAgICAgIGNvbnN0IGRzdFZpZXcgPSBuZXcgVWludDhBcnJheShzZWxmLnBhZ2VzW3BdLmJ1ZmYuYnVmZmVyLCBvLCBsKTtcbiAgICAgICAgICAgIGRzdFZpZXcuc2V0KHNyY1ZpZXcpO1xuICAgICAgICAgICAgc2VsZi5wYWdlc1twXS5kaXJ0eSA9IHRydWU7XG4gICAgICAgICAgICBzZWxmLnBhZ2VzW3BdLnBlbmRpbmdPcHMgLS07XG4gICAgICAgICAgICBzZWxmLnBhZ2VzW3BdLnNpemUgPSBNYXRoLm1heChvK2wsIHNlbGYucGFnZXNbcF0uc2l6ZSk7XG4gICAgICAgICAgICBpZiAocD49c2VsZi50b3RhbFBhZ2VzKSB7XG4gICAgICAgICAgICAgICAgc2VsZi50b3RhbFBhZ2VzID0gcCsxO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgciA9IHItbDtcbiAgICAgICAgICAgIHAgKys7XG4gICAgICAgICAgICBvID0gMDtcbiAgICAgICAgICAgIGlmICghc2VsZi53cml0aW5nKSBzZXRJbW1lZGlhdGUoc2VsZi5fdHJpZ2dlcldyaXRlLmJpbmQoc2VsZikpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgYXN5bmMgcmVhZChsZW4sIHBvcykge1xuICAgICAgICBjb25zdCBzZWxmID0gdGhpcztcbiAgICAgICAgbGV0IGJ1ZmYgPSBuZXcgVWludDhBcnJheShsZW4pO1xuICAgICAgICBhd2FpdCBzZWxmLnJlYWRUb0J1ZmZlcihidWZmLCAwLCBsZW4sIHBvcyk7XG5cbiAgICAgICAgcmV0dXJuIGJ1ZmY7XG4gICAgfVxuXG4gICAgYXN5bmMgcmVhZFRvQnVmZmVyKGJ1ZmZEc3QsIG9mZnNldCwgbGVuLCBwb3MpIHtcbiAgICAgICAgaWYgKGxlbiA9PSAwKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gICAgICAgIGlmIChsZW4gPiBzZWxmLnBhZ2VTaXplKnNlbGYubWF4UGFnZXNMb2FkZWQqMC44KSB7XG4gICAgICAgICAgICBjb25zdCBjYWNoZVNpemUgPSBNYXRoLmZsb29yKGxlbiAqIDEuMSk7XG4gICAgICAgICAgICB0aGlzLm1heFBhZ2VzTG9hZGVkID0gTWF0aC5mbG9vciggY2FjaGVTaXplIC8gc2VsZi5wYWdlU2l6ZSkrMTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodHlwZW9mIHBvcyA9PSBcInVuZGVmaW5lZFwiKSBwb3MgPSBzZWxmLnBvcztcbiAgICAgICAgc2VsZi5wb3MgPSBwb3MrbGVuO1xuICAgICAgICBpZiAoc2VsZi5wZW5kaW5nQ2xvc2UpXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJSZWFkaW5nIGEgY2xvc2luZyBmaWxlXCIpO1xuICAgICAgICBjb25zdCBmaXJzdFBhZ2UgPSBNYXRoLmZsb29yKHBvcyAvIHNlbGYucGFnZVNpemUpO1xuICAgICAgICBjb25zdCBsYXN0UGFnZSA9IE1hdGguZmxvb3IoKHBvcyArIGxlbiAtMSkgLyBzZWxmLnBhZ2VTaXplKTtcblxuICAgICAgICBjb25zdCBwYWdlUHJvbWlzZXMgPSBbXTtcbiAgICAgICAgZm9yIChsZXQgaT1maXJzdFBhZ2U7IGk8PWxhc3RQYWdlOyBpKyspIHBhZ2VQcm9taXNlcy5wdXNoKHNlbGYuX2xvYWRQYWdlKGkpKTtcblxuICAgICAgICBzZWxmLl90cmlnZ2VyTG9hZCgpO1xuXG4gICAgICAgIGxldCBwID0gZmlyc3RQYWdlO1xuICAgICAgICBsZXQgbyA9IHBvcyAlIHNlbGYucGFnZVNpemU7XG4gICAgICAgIC8vIFJlbWFpbmluZyBieXRlcyB0byByZWFkXG4gICAgICAgIGxldCByID0gcG9zICsgbGVuID4gc2VsZi50b3RhbFNpemUgPyBsZW4gLSAocG9zICsgbGVuIC0gc2VsZi50b3RhbFNpemUpOiBsZW47XG4gICAgICAgIHdoaWxlIChyPjApIHtcbiAgICAgICAgICAgIGF3YWl0IHBhZ2VQcm9taXNlc1twIC0gZmlyc3RQYWdlXTtcbiAgICAgICAgICAgIHNlbGYuX19zdGF0dXNQYWdlKFwiQWZ0ZXIgQXdhaXQgKHJlYWQpOiBcIiwgcCk7XG5cbiAgICAgICAgICAgIC8vIGJ5dGVzIHRvIGNvcHkgZnJvbSB0aGlzIHBhZ2VcbiAgICAgICAgICAgIGNvbnN0IGwgPSAobytyID4gc2VsZi5wYWdlU2l6ZSkgPyAoc2VsZi5wYWdlU2l6ZSAtbykgOiByO1xuICAgICAgICAgICAgY29uc3Qgc3JjVmlldyA9IG5ldyBVaW50OEFycmF5KHNlbGYucGFnZXNbcF0uYnVmZi5idWZmZXIsIHNlbGYucGFnZXNbcF0uYnVmZi5ieXRlT2Zmc2V0ICsgbywgbCk7XG4gICAgICAgICAgICBidWZmRHN0LnNldChzcmNWaWV3LCBvZmZzZXQrbGVuLXIpO1xuICAgICAgICAgICAgc2VsZi5wYWdlc1twXS5wZW5kaW5nT3BzIC0tO1xuXG4gICAgICAgICAgICBzZWxmLl9fc3RhdHVzUGFnZShcIkFmdGVyIE9wIGRvbmU6IFwiLCBwKTtcblxuICAgICAgICAgICAgciA9IHItbDtcbiAgICAgICAgICAgIHAgKys7XG4gICAgICAgICAgICBvID0gMDtcbiAgICAgICAgICAgIGlmIChzZWxmLnBlbmRpbmdMb2Fkcy5sZW5ndGg+MCkgc2V0SW1tZWRpYXRlKHNlbGYuX3RyaWdnZXJMb2FkLmJpbmQoc2VsZikpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5wb3MgPSBwb3MgKyBsZW47XG5cbiAgICB9XG5cblxuICAgIF90cnlDbG9zZSgpIHtcbiAgICAgICAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gICAgICAgIGlmICghc2VsZi5wZW5kaW5nQ2xvc2UpIHJldHVybjtcbiAgICAgICAgaWYgKHNlbGYuZXJyb3IpIHtcbiAgICAgICAgICAgIHNlbGYucGVuZGluZ0Nsb3NlUmVqZWN0KHNlbGYuZXJyb3IpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHAgPSBzZWxmLl9nZXREaXJ0eVBhZ2UoKTtcbiAgICAgICAgaWYgKChwPj0wKSB8fCAoc2VsZi53cml0aW5nKSB8fCAoc2VsZi5yZWFkaW5nKSB8fCAoc2VsZi5wZW5kaW5nTG9hZHMubGVuZ3RoPjApKSByZXR1cm47XG4gICAgICAgIHNlbGYucGVuZGluZ0Nsb3NlKCk7XG4gICAgfVxuXG4gICAgY2xvc2UoKSB7XG4gICAgICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuICAgICAgICBpZiAoc2VsZi5wZW5kaW5nQ2xvc2UpXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJDbG9zaW5nIHRoZSBmaWxlIHR3aWNlXCIpO1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgc2VsZi5wZW5kaW5nQ2xvc2UgPSByZXNvbHZlO1xuICAgICAgICAgICAgc2VsZi5wZW5kaW5nQ2xvc2VSZWplY3QgPSByZWplY3Q7XG4gICAgICAgICAgICBzZWxmLl90cnlDbG9zZSgpO1xuICAgICAgICB9KS50aGVuKCgpPT4ge1xuICAgICAgICAgICAgc2VsZi5mZC5jbG9zZSgpO1xuICAgICAgICB9LCAoZXJyKSA9PiB7XG4gICAgICAgICAgICBzZWxmLmZkLmNsb3NlKCk7XG4gICAgICAgICAgICB0aHJvdyAoZXJyKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgYXN5bmMgZGlzY2FyZCgpIHtcbiAgICAgICAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gICAgICAgIGF3YWl0IHNlbGYuY2xvc2UoKTtcbiAgICAgICAgYXdhaXQgZnMucHJvbWlzZXMudW5saW5rKHRoaXMuZmlsZU5hbWUpO1xuICAgIH1cblxuICAgIGFzeW5jIHdyaXRlVUxFMzIodiwgcG9zKSB7XG4gICAgICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuICAgICAgICBjb25zdCB0bXBCdWZmMzIgPSBuZXcgVWludDhBcnJheSg0KTtcbiAgICAgICAgY29uc3QgdG1wQnVmZjMydiA9IG5ldyBEYXRhVmlldyh0bXBCdWZmMzIuYnVmZmVyKTtcblxuICAgICAgICB0bXBCdWZmMzJ2LnNldFVpbnQzMigwLCB2LCB0cnVlKTtcblxuICAgICAgICBhd2FpdCBzZWxmLndyaXRlKHRtcEJ1ZmYzMiwgcG9zKTtcbiAgICB9XG5cbiAgICBhc3luYyB3cml0ZVVCRTMyKHYsIHBvcykge1xuICAgICAgICBjb25zdCBzZWxmID0gdGhpcztcblxuICAgICAgICBjb25zdCB0bXBCdWZmMzIgPSBuZXcgVWludDhBcnJheSg0KTtcbiAgICAgICAgY29uc3QgdG1wQnVmZjMydiA9IG5ldyBEYXRhVmlldyh0bXBCdWZmMzIuYnVmZmVyKTtcblxuICAgICAgICB0bXBCdWZmMzJ2LnNldFVpbnQzMigwLCB2LCBmYWxzZSk7XG5cbiAgICAgICAgYXdhaXQgc2VsZi53cml0ZSh0bXBCdWZmMzIsIHBvcyk7XG4gICAgfVxuXG5cbiAgICBhc3luYyB3cml0ZVVMRTY0KHYsIHBvcykge1xuICAgICAgICBjb25zdCBzZWxmID0gdGhpcztcblxuICAgICAgICBjb25zdCB0bXBCdWZmNjQgPSBuZXcgVWludDhBcnJheSg4KTtcbiAgICAgICAgY29uc3QgdG1wQnVmZjY0diA9IG5ldyBEYXRhVmlldyh0bXBCdWZmNjQuYnVmZmVyKTtcblxuICAgICAgICB0bXBCdWZmNjR2LnNldFVpbnQzMigwLCB2ICYgMHhGRkZGRkZGRiwgdHJ1ZSk7XG4gICAgICAgIHRtcEJ1ZmY2NHYuc2V0VWludDMyKDQsIE1hdGguZmxvb3IodiAvIDB4MTAwMDAwMDAwKSAsIHRydWUpO1xuXG4gICAgICAgIGF3YWl0IHNlbGYud3JpdGUodG1wQnVmZjY0LCBwb3MpO1xuICAgIH1cblxuICAgIGFzeW5jIHJlYWRVTEUzMihwb3MpIHtcbiAgICAgICAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gICAgICAgIGNvbnN0IGIgPSBhd2FpdCBzZWxmLnJlYWQoNCwgcG9zKTtcblxuICAgICAgICBjb25zdCB2aWV3ID0gbmV3IFVpbnQzMkFycmF5KGIuYnVmZmVyKTtcblxuICAgICAgICByZXR1cm4gdmlld1swXTtcbiAgICB9XG5cbiAgICBhc3luYyByZWFkVUJFMzIocG9zKSB7XG4gICAgICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuICAgICAgICBjb25zdCBiID0gYXdhaXQgc2VsZi5yZWFkKDQsIHBvcyk7XG5cbiAgICAgICAgY29uc3QgdmlldyA9IG5ldyBEYXRhVmlldyhiLmJ1ZmZlcik7XG5cbiAgICAgICAgcmV0dXJuIHZpZXcuZ2V0VWludDMyKDAsIGZhbHNlKTtcbiAgICB9XG5cbiAgICBhc3luYyByZWFkVUxFNjQocG9zKSB7XG4gICAgICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuICAgICAgICBjb25zdCBiID0gYXdhaXQgc2VsZi5yZWFkKDgsIHBvcyk7XG5cbiAgICAgICAgY29uc3QgdmlldyA9IG5ldyBVaW50MzJBcnJheShiLmJ1ZmZlcik7XG5cbiAgICAgICAgcmV0dXJuIHZpZXdbMV0gKiAweDEwMDAwMDAwMCArIHZpZXdbMF07XG4gICAgfVxuXG4gICAgYXN5bmMgcmVhZFN0cmluZyhwb3MpIHtcbiAgICAgICAgY29uc3Qgc2VsZiA9IHRoaXM7XG5cbiAgICAgICAgaWYgKHNlbGYucGVuZGluZ0Nsb3NlKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJSZWFkaW5nIGEgY2xvc2luZyBmaWxlXCIpO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGN1cnJlbnRQb3NpdGlvbiA9IHR5cGVvZiBwb3MgPT0gXCJ1bmRlZmluZWRcIiA/IHNlbGYucG9zIDogcG9zO1xuICAgICAgICBsZXQgY3VycmVudFBhZ2UgPSBNYXRoLmZsb29yKGN1cnJlbnRQb3NpdGlvbiAvIHNlbGYucGFnZVNpemUpO1xuXG4gICAgICAgIGxldCBlbmRPZlN0cmluZ0ZvdW5kID0gZmFsc2U7XG4gICAgICAgIGxldCBzdHIgPSBcIlwiO1xuXG4gICAgICAgIHdoaWxlICghZW5kT2ZTdHJpbmdGb3VuZCkge1xuICAgICAgICAgICAgLy9SZWFkIHBhZ2VcbiAgICAgICAgICAgIGxldCBwYWdlUHJvbWlzZSA9IHNlbGYuX2xvYWRQYWdlKGN1cnJlbnRQYWdlKTtcbiAgICAgICAgICAgIHNlbGYuX3RyaWdnZXJMb2FkKCk7XG4gICAgICAgICAgICBhd2FpdCBwYWdlUHJvbWlzZTtcbiAgICAgICAgICAgIHNlbGYuX19zdGF0dXNQYWdlKFwiQWZ0ZXIgQXdhaXQgKHJlYWQpOiBcIiwgY3VycmVudFBhZ2UpO1xuXG4gICAgICAgICAgICBsZXQgb2Zmc2V0T25QYWdlID0gY3VycmVudFBvc2l0aW9uICUgc2VsZi5wYWdlU2l6ZTtcblxuICAgICAgICAgICAgY29uc3QgZGF0YUFycmF5ID0gbmV3IFVpbnQ4QXJyYXkoXG4gICAgICAgICAgICAgICAgc2VsZi5wYWdlc1tjdXJyZW50UGFnZV0uYnVmZi5idWZmZXIsXG4gICAgICAgICAgICAgICAgc2VsZi5wYWdlc1tjdXJyZW50UGFnZV0uYnVmZi5ieXRlT2Zmc2V0ICsgb2Zmc2V0T25QYWdlLFxuICAgICAgICAgICAgICAgIHNlbGYucGFnZVNpemUgLSBvZmZzZXRPblBhZ2VcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIGxldCBpbmRleEVuZE9mU3RyaW5nID0gZGF0YUFycmF5LmZpbmRJbmRleChlbGVtZW50ID0+IGVsZW1lbnQgPT09IDApO1xuICAgICAgICAgICAgZW5kT2ZTdHJpbmdGb3VuZCA9IGluZGV4RW5kT2ZTdHJpbmcgIT09IC0xO1xuXG4gICAgICAgICAgICBpZiAoZW5kT2ZTdHJpbmdGb3VuZCkge1xuICAgICAgICAgICAgICAgIHN0ciArPSBuZXcgVGV4dERlY29kZXIoKS5kZWNvZGUoZGF0YUFycmF5LnNsaWNlKDAsIGluZGV4RW5kT2ZTdHJpbmcpKTtcbiAgICAgICAgICAgICAgICBzZWxmLnBvcyA9IGN1cnJlbnRQYWdlICogdGhpcy5wYWdlU2l6ZSArIG9mZnNldE9uUGFnZSArIGluZGV4RW5kT2ZTdHJpbmcgKyAxO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBzdHIgKz0gbmV3IFRleHREZWNvZGVyKCkuZGVjb2RlKGRhdGFBcnJheSk7XG4gICAgICAgICAgICAgICAgc2VsZi5wb3MgPSBjdXJyZW50UGFnZSAqIHRoaXMucGFnZVNpemUgKyBvZmZzZXRPblBhZ2UgKyBkYXRhQXJyYXkubGVuZ3RoO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBzZWxmLnBhZ2VzW2N1cnJlbnRQYWdlXS5wZW5kaW5nT3BzLS07XG4gICAgICAgICAgICBzZWxmLl9fc3RhdHVzUGFnZShcIkFmdGVyIE9wIGRvbmU6IFwiLCBjdXJyZW50UGFnZSk7XG5cbiAgICAgICAgICAgIGN1cnJlbnRQb3NpdGlvbiA9IHNlbGYucG9zO1xuICAgICAgICAgICAgY3VycmVudFBhZ2UrKztcblxuICAgICAgICAgICAgaWYgKHNlbGYucGVuZGluZ0xvYWRzLmxlbmd0aCA+IDApIHNldEltbWVkaWF0ZShzZWxmLl90cmlnZ2VyTG9hZC5iaW5kKHNlbGYpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBzdHI7XG4gICAgfVxufVxuIiwiZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZU5ldyhvKSB7XG4gICAgY29uc3QgaW5pdGlhbFNpemUgPSBvLmluaXRpYWxTaXplIHx8IDE8PDIwO1xuICAgIGNvbnN0IGZkID0gbmV3IE1lbUZpbGUoKTtcbiAgICBmZC5vID0gbztcbiAgICBmZC5vLmRhdGEgPSBuZXcgVWludDhBcnJheShpbml0aWFsU2l6ZSk7XG4gICAgZmQuYWxsb2NTaXplID0gaW5pdGlhbFNpemU7XG4gICAgZmQudG90YWxTaXplID0gMDtcbiAgICBmZC5yZWFkT25seSA9IGZhbHNlO1xuICAgIGZkLnBvcyA9IDA7XG4gICAgcmV0dXJuIGZkO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVhZEV4aXN0aW5nKG8pIHtcbiAgICBjb25zdCBmZCA9IG5ldyBNZW1GaWxlKCk7XG4gICAgZmQubyA9IG87XG4gICAgZmQuYWxsb2NTaXplID0gby5kYXRhLmJ5dGVMZW5ndGg7XG4gICAgZmQudG90YWxTaXplID0gby5kYXRhLmJ5dGVMZW5ndGg7XG4gICAgZmQucmVhZE9ubHkgPSB0cnVlO1xuICAgIGZkLnBvcyA9IDA7XG4gICAgcmV0dXJuIGZkO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVhZFdyaXRlRXhpc3Rpbmcobykge1xuICAgIGNvbnN0IGZkID0gbmV3IE1lbUZpbGUoKTtcbiAgICBmZC5vID0gbztcbiAgICBmZC5hbGxvY1NpemUgPSBvLmRhdGEuYnl0ZUxlbmd0aDtcbiAgICBmZC50b3RhbFNpemUgPSBvLmRhdGEuYnl0ZUxlbmd0aDtcbiAgICBmZC5yZWFkT25seSA9IGZhbHNlO1xuICAgIGZkLnBvcyA9IDA7XG4gICAgcmV0dXJuIGZkO1xufVxuXG5jb25zdCB0bXBCdWZmMzIgPSBuZXcgVWludDhBcnJheSg0KTtcbmNvbnN0IHRtcEJ1ZmYzMnYgPSBuZXcgRGF0YVZpZXcodG1wQnVmZjMyLmJ1ZmZlcik7XG5jb25zdCB0bXBCdWZmNjQgPSBuZXcgVWludDhBcnJheSg4KTtcbmNvbnN0IHRtcEJ1ZmY2NHYgPSBuZXcgRGF0YVZpZXcodG1wQnVmZjY0LmJ1ZmZlcik7XG5cbmNsYXNzIE1lbUZpbGUge1xuXG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHRoaXMucGFnZVNpemUgPSAxIDw8IDE0OyAgLy8gZm9yIGNvbXBhdGliaWxpdHlcbiAgICB9XG5cbiAgICBfcmVzaXplSWZOZWVkZWQobmV3TGVuKSB7XG4gICAgICAgIGlmIChuZXdMZW4gPiB0aGlzLmFsbG9jU2l6ZSkge1xuICAgICAgICAgICAgY29uc3QgbmV3QWxsb2NTaXplID0gTWF0aC5tYXgoXG4gICAgICAgICAgICAgICAgdGhpcy5hbGxvY1NpemUgKyAoMSA8PCAyMCksXG4gICAgICAgICAgICAgICAgTWF0aC5mbG9vcih0aGlzLmFsbG9jU2l6ZSAqIDEuMSksXG4gICAgICAgICAgICAgICAgbmV3TGVuXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgY29uc3QgbmV3RGF0YSA9IG5ldyBVaW50OEFycmF5KG5ld0FsbG9jU2l6ZSk7XG4gICAgICAgICAgICBuZXdEYXRhLnNldCh0aGlzLm8uZGF0YSk7XG4gICAgICAgICAgICB0aGlzLm8uZGF0YSA9IG5ld0RhdGE7XG4gICAgICAgICAgICB0aGlzLmFsbG9jU2l6ZSA9IG5ld0FsbG9jU2l6ZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGFzeW5jIHdyaXRlKGJ1ZmYsIHBvcykge1xuICAgICAgICBjb25zdCBzZWxmID10aGlzO1xuICAgICAgICBpZiAodHlwZW9mIHBvcyA9PSBcInVuZGVmaW5lZFwiKSBwb3MgPSBzZWxmLnBvcztcbiAgICAgICAgaWYgKHRoaXMucmVhZE9ubHkpIHRocm93IG5ldyBFcnJvcihcIldyaXRpbmcgYSByZWFkIG9ubHkgZmlsZVwiKTtcblxuICAgICAgICB0aGlzLl9yZXNpemVJZk5lZWRlZChwb3MgKyBidWZmLmJ5dGVMZW5ndGgpO1xuXG4gICAgICAgIHRoaXMuby5kYXRhLnNldChidWZmLnNsaWNlKCksIHBvcyk7XG5cbiAgICAgICAgaWYgKHBvcyArIGJ1ZmYuYnl0ZUxlbmd0aCA+IHRoaXMudG90YWxTaXplKSB0aGlzLnRvdGFsU2l6ZSA9IHBvcyArIGJ1ZmYuYnl0ZUxlbmd0aDtcblxuICAgICAgICB0aGlzLnBvcyA9IHBvcyArIGJ1ZmYuYnl0ZUxlbmd0aDtcbiAgICB9XG5cbiAgICBhc3luYyByZWFkVG9CdWZmZXIoYnVmZkRlc3QsIG9mZnNldCwgbGVuLCBwb3MpIHtcbiAgICAgICAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gICAgICAgIGlmICh0eXBlb2YgcG9zID09IFwidW5kZWZpbmVkXCIpIHBvcyA9IHNlbGYucG9zO1xuICAgICAgICBpZiAodGhpcy5yZWFkT25seSkge1xuICAgICAgICAgICAgaWYgKHBvcyArIGxlbiA+IHRoaXMudG90YWxTaXplKSB0aHJvdyBuZXcgRXJyb3IoXCJSZWFkaW5nIG91dCBvZiBib3VuZHNcIik7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fcmVzaXplSWZOZWVkZWQocG9zICsgbGVuKTtcblxuICAgICAgICBjb25zdCBidWZmU3JjID0gbmV3IFVpbnQ4QXJyYXkodGhpcy5vLmRhdGEuYnVmZmVyLCB0aGlzLm8uZGF0YS5ieXRlT2Zmc2V0ICsgcG9zLCBsZW4pO1xuXG4gICAgICAgIGJ1ZmZEZXN0LnNldChidWZmU3JjLCBvZmZzZXQpO1xuXG4gICAgICAgIHRoaXMucG9zID0gcG9zICsgbGVuO1xuICAgIH1cblxuICAgIGFzeW5jIHJlYWQobGVuLCBwb3MpIHtcbiAgICAgICAgY29uc3Qgc2VsZiA9IHRoaXM7XG5cbiAgICAgICAgY29uc3QgYnVmZiA9IG5ldyBVaW50OEFycmF5KGxlbik7XG4gICAgICAgIGF3YWl0IHNlbGYucmVhZFRvQnVmZmVyKGJ1ZmYsIDAsIGxlbiwgcG9zKTtcblxuICAgICAgICByZXR1cm4gYnVmZjtcbiAgICB9XG5cbiAgICBjbG9zZSgpIHtcbiAgICAgICAgaWYgKHRoaXMuby5kYXRhLmJ5dGVMZW5ndGggIT0gdGhpcy50b3RhbFNpemUpIHtcbiAgICAgICAgICAgIHRoaXMuby5kYXRhID0gdGhpcy5vLmRhdGEuc2xpY2UoMCwgdGhpcy50b3RhbFNpemUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgYXN5bmMgZGlzY2FyZCgpIHtcbiAgICB9XG5cblxuICAgIGFzeW5jIHdyaXRlVUxFMzIodiwgcG9zKSB7XG4gICAgICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuXG4gICAgICAgIHRtcEJ1ZmYzMnYuc2V0VWludDMyKDAsIHYsIHRydWUpO1xuXG4gICAgICAgIGF3YWl0IHNlbGYud3JpdGUodG1wQnVmZjMyLCBwb3MpO1xuICAgIH1cblxuICAgIGFzeW5jIHdyaXRlVUJFMzIodiwgcG9zKSB7XG4gICAgICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuXG4gICAgICAgIHRtcEJ1ZmYzMnYuc2V0VWludDMyKDAsIHYsIGZhbHNlKTtcblxuICAgICAgICBhd2FpdCBzZWxmLndyaXRlKHRtcEJ1ZmYzMiwgcG9zKTtcbiAgICB9XG5cblxuICAgIGFzeW5jIHdyaXRlVUxFNjQodiwgcG9zKSB7XG4gICAgICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuXG4gICAgICAgIHRtcEJ1ZmY2NHYuc2V0VWludDMyKDAsIHYgJiAweEZGRkZGRkZGLCB0cnVlKTtcbiAgICAgICAgdG1wQnVmZjY0di5zZXRVaW50MzIoNCwgTWF0aC5mbG9vcih2IC8gMHgxMDAwMDAwMDApICwgdHJ1ZSk7XG5cbiAgICAgICAgYXdhaXQgc2VsZi53cml0ZSh0bXBCdWZmNjQsIHBvcyk7XG4gICAgfVxuXG5cbiAgICBhc3luYyByZWFkVUxFMzIocG9zKSB7XG4gICAgICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuICAgICAgICBjb25zdCBiID0gYXdhaXQgc2VsZi5yZWFkKDQsIHBvcyk7XG5cbiAgICAgICAgY29uc3QgdmlldyA9IG5ldyBVaW50MzJBcnJheShiLmJ1ZmZlcik7XG5cbiAgICAgICAgcmV0dXJuIHZpZXdbMF07XG4gICAgfVxuXG4gICAgYXN5bmMgcmVhZFVCRTMyKHBvcykge1xuICAgICAgICBjb25zdCBzZWxmID0gdGhpcztcbiAgICAgICAgY29uc3QgYiA9IGF3YWl0IHNlbGYucmVhZCg0LCBwb3MpO1xuXG4gICAgICAgIGNvbnN0IHZpZXcgPSBuZXcgRGF0YVZpZXcoYi5idWZmZXIpO1xuXG4gICAgICAgIHJldHVybiB2aWV3LmdldFVpbnQzMigwLCBmYWxzZSk7XG4gICAgfVxuXG4gICAgYXN5bmMgcmVhZFVMRTY0KHBvcykge1xuICAgICAgICBjb25zdCBzZWxmID0gdGhpcztcbiAgICAgICAgY29uc3QgYiA9IGF3YWl0IHNlbGYucmVhZCg4LCBwb3MpO1xuXG4gICAgICAgIGNvbnN0IHZpZXcgPSBuZXcgVWludDMyQXJyYXkoYi5idWZmZXIpO1xuXG4gICAgICAgIHJldHVybiB2aWV3WzFdICogMHgxMDAwMDAwMDAgKyB2aWV3WzBdO1xuICAgIH1cblxuICAgIGFzeW5jIHJlYWRTdHJpbmcocG9zKSB7XG4gICAgICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuXG4gICAgICAgIGxldCBjdXJyZW50UG9zaXRpb24gPSB0eXBlb2YgcG9zID09IFwidW5kZWZpbmVkXCIgPyBzZWxmLnBvcyA6IHBvcztcblxuICAgICAgICBpZiAoY3VycmVudFBvc2l0aW9uID4gdGhpcy50b3RhbFNpemUpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnJlYWRPbmx5KSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiUmVhZGluZyBvdXQgb2YgYm91bmRzXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5fcmVzaXplSWZOZWVkZWQocG9zKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBkYXRhQXJyYXkgPSBuZXcgVWludDhBcnJheShcbiAgICAgICAgICAgIHNlbGYuby5kYXRhLmJ1ZmZlcixcbiAgICAgICAgICAgIGN1cnJlbnRQb3NpdGlvbixcbiAgICAgICAgICAgIHRoaXMudG90YWxTaXplIC0gY3VycmVudFBvc2l0aW9uXG4gICAgICAgICk7XG5cbiAgICAgICAgbGV0IGluZGV4RW5kT2ZTdHJpbmcgPSBkYXRhQXJyYXkuZmluZEluZGV4KGVsZW1lbnQgPT4gZWxlbWVudCA9PT0gMCk7XG4gICAgICAgIGxldCBlbmRPZlN0cmluZ0ZvdW5kID0gaW5kZXhFbmRPZlN0cmluZyAhPT0gLTE7XG5cbiAgICAgICAgbGV0IHN0ciA9IFwiXCI7XG4gICAgICAgIGlmIChlbmRPZlN0cmluZ0ZvdW5kKSB7XG4gICAgICAgICAgICBzdHIgPSBuZXcgVGV4dERlY29kZXIoKS5kZWNvZGUoZGF0YUFycmF5LnNsaWNlKDAsIGluZGV4RW5kT2ZTdHJpbmcpKTtcbiAgICAgICAgICAgIHNlbGYucG9zID0gY3VycmVudFBvc2l0aW9uICsgaW5kZXhFbmRPZlN0cmluZyArIDE7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzZWxmLnBvcyA9IGN1cnJlbnRQb3NpdGlvbjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc3RyO1xuICAgIH1cbn1cbiIsImNvbnN0IFBBR0VfU0laRSA9IDE8PDIyO1xuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlTmV3KG8pIHtcbiAgICBjb25zdCBpbml0aWFsU2l6ZSA9IG8uaW5pdGlhbFNpemUgfHwgMDtcbiAgICBjb25zdCBmZCA9IG5ldyBCaWdNZW1GaWxlKCk7XG4gICAgZmQubyA9IG87XG4gICAgY29uc3QgblBhZ2VzID0gaW5pdGlhbFNpemUgPyBNYXRoLmZsb29yKChpbml0aWFsU2l6ZSAtIDEpIC8gUEFHRV9TSVpFKSsxIDogMDtcbiAgICBmZC5vLmRhdGEgPSBbXTtcbiAgICBmb3IgKGxldCBpPTA7IGk8blBhZ2VzLTE7IGkrKykge1xuICAgICAgICBmZC5vLmRhdGEucHVzaCggbmV3IFVpbnQ4QXJyYXkoUEFHRV9TSVpFKSk7XG4gICAgfVxuICAgIGlmIChuUGFnZXMpIGZkLm8uZGF0YS5wdXNoKCBuZXcgVWludDhBcnJheShpbml0aWFsU2l6ZSAtIFBBR0VfU0laRSooblBhZ2VzLTEpKSk7XG4gICAgZmQudG90YWxTaXplID0gMDtcbiAgICBmZC5yZWFkT25seSA9IGZhbHNlO1xuICAgIGZkLnBvcyA9IDA7XG4gICAgcmV0dXJuIGZkO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVhZEV4aXN0aW5nKG8pIHtcbiAgICBjb25zdCBmZCA9IG5ldyBCaWdNZW1GaWxlKCk7XG4gICAgZmQubyA9IG87XG4gICAgZmQudG90YWxTaXplID0gKG8uZGF0YS5sZW5ndGgtMSkqIFBBR0VfU0laRSArIG8uZGF0YVtvLmRhdGEubGVuZ3RoLTFdLmJ5dGVMZW5ndGg7XG4gICAgZmQucmVhZE9ubHkgPSB0cnVlO1xuICAgIGZkLnBvcyA9IDA7XG4gICAgcmV0dXJuIGZkO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVhZFdyaXRlRXhpc3Rpbmcobykge1xuICAgIGNvbnN0IGZkID0gbmV3IEJpZ01lbUZpbGUoKTtcbiAgICBmZC5vID0gbztcbiAgICBmZC50b3RhbFNpemUgPSAoby5kYXRhLmxlbmd0aC0xKSogUEFHRV9TSVpFICsgby5kYXRhW28uZGF0YS5sZW5ndGgtMV0uYnl0ZUxlbmd0aDtcbiAgICBmZC5yZWFkT25seSA9IGZhbHNlO1xuICAgIGZkLnBvcyA9IDA7XG4gICAgcmV0dXJuIGZkO1xufVxuXG5jb25zdCB0bXBCdWZmMzIgPSBuZXcgVWludDhBcnJheSg0KTtcbmNvbnN0IHRtcEJ1ZmYzMnYgPSBuZXcgRGF0YVZpZXcodG1wQnVmZjMyLmJ1ZmZlcik7XG5jb25zdCB0bXBCdWZmNjQgPSBuZXcgVWludDhBcnJheSg4KTtcbmNvbnN0IHRtcEJ1ZmY2NHYgPSBuZXcgRGF0YVZpZXcodG1wQnVmZjY0LmJ1ZmZlcik7XG5cbmNsYXNzIEJpZ01lbUZpbGUge1xuXG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHRoaXMucGFnZVNpemUgPSAxIDw8IDE0OyAgLy8gZm9yIGNvbXBhdGliaWxpdHlcbiAgICB9XG5cbiAgICBfcmVzaXplSWZOZWVkZWQobmV3TGVuKSB7XG5cbiAgICAgICAgaWYgKG5ld0xlbiA8PSB0aGlzLnRvdGFsU2l6ZSkgcmV0dXJuO1xuXG4gICAgICAgIGlmICh0aGlzLnJlYWRPbmx5KSB0aHJvdyBuZXcgRXJyb3IoXCJSZWFkaW5nIG91dCBvZiBmaWxlIGJvdW5kc1wiKTtcblxuICAgICAgICBjb25zdCBuUGFnZXMgPSBNYXRoLmZsb29yKChuZXdMZW4gLSAxKSAvIFBBR0VfU0laRSkrMTtcbiAgICAgICAgZm9yIChsZXQgaT0gTWF0aC5tYXgodGhpcy5vLmRhdGEubGVuZ3RoLTEsIDApOyBpPG5QYWdlczsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCBuZXdTaXplID0gaTxuUGFnZXMtMSA/IFBBR0VfU0laRSA6IG5ld0xlbiAtIChuUGFnZXMtMSkqUEFHRV9TSVpFO1xuICAgICAgICAgICAgY29uc3QgcCA9IG5ldyBVaW50OEFycmF5KG5ld1NpemUpO1xuICAgICAgICAgICAgaWYgKGkgPT0gdGhpcy5vLmRhdGEubGVuZ3RoLTEpIHAuc2V0KHRoaXMuby5kYXRhW2ldKTtcbiAgICAgICAgICAgIHRoaXMuby5kYXRhW2ldID0gcDtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnRvdGFsU2l6ZSA9IG5ld0xlbjtcbiAgICB9XG5cbiAgICBhc3luYyB3cml0ZShidWZmLCBwb3MpIHtcbiAgICAgICAgY29uc3Qgc2VsZiA9dGhpcztcbiAgICAgICAgaWYgKHR5cGVvZiBwb3MgPT0gXCJ1bmRlZmluZWRcIikgcG9zID0gc2VsZi5wb3M7XG4gICAgICAgIGlmICh0aGlzLnJlYWRPbmx5KSB0aHJvdyBuZXcgRXJyb3IoXCJXcml0aW5nIGEgcmVhZCBvbmx5IGZpbGVcIik7XG5cbiAgICAgICAgdGhpcy5fcmVzaXplSWZOZWVkZWQocG9zICsgYnVmZi5ieXRlTGVuZ3RoKTtcblxuICAgICAgICBjb25zdCBmaXJzdFBhZ2UgPSBNYXRoLmZsb29yKHBvcyAvIFBBR0VfU0laRSk7XG5cbiAgICAgICAgbGV0IHAgPSBmaXJzdFBhZ2U7XG4gICAgICAgIGxldCBvID0gcG9zICUgUEFHRV9TSVpFO1xuICAgICAgICBsZXQgciA9IGJ1ZmYuYnl0ZUxlbmd0aDtcbiAgICAgICAgd2hpbGUgKHI+MCkge1xuICAgICAgICAgICAgY29uc3QgbCA9IChvK3IgPiBQQUdFX1NJWkUpID8gKFBBR0VfU0laRSAtbykgOiByO1xuICAgICAgICAgICAgY29uc3Qgc3JjVmlldyA9IGJ1ZmYuc2xpY2UoYnVmZi5ieXRlTGVuZ3RoIC0gciwgYnVmZi5ieXRlTGVuZ3RoIC0gciArIGwpO1xuICAgICAgICAgICAgY29uc3QgZHN0VmlldyA9IG5ldyBVaW50OEFycmF5KHNlbGYuby5kYXRhW3BdLmJ1ZmZlciwgbywgbCk7XG4gICAgICAgICAgICBkc3RWaWV3LnNldChzcmNWaWV3KTtcbiAgICAgICAgICAgIHIgPSByLWw7XG4gICAgICAgICAgICBwICsrO1xuICAgICAgICAgICAgbyA9IDA7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnBvcyA9IHBvcyArIGJ1ZmYuYnl0ZUxlbmd0aDtcbiAgICB9XG5cbiAgICBhc3luYyByZWFkVG9CdWZmZXIoYnVmZkRzdCwgb2Zmc2V0LCBsZW4sIHBvcykge1xuICAgICAgICBjb25zdCBzZWxmID0gdGhpcztcbiAgICAgICAgaWYgKHR5cGVvZiBwb3MgPT0gXCJ1bmRlZmluZWRcIikgcG9zID0gc2VsZi5wb3M7XG4gICAgICAgIGlmICh0aGlzLnJlYWRPbmx5KSB7XG4gICAgICAgICAgICBpZiAocG9zICsgbGVuID4gdGhpcy50b3RhbFNpemUpIHRocm93IG5ldyBFcnJvcihcIlJlYWRpbmcgb3V0IG9mIGJvdW5kc1wiKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9yZXNpemVJZk5lZWRlZChwb3MgKyBsZW4pO1xuXG4gICAgICAgIGNvbnN0IGZpcnN0UGFnZSA9IE1hdGguZmxvb3IocG9zIC8gUEFHRV9TSVpFKTtcblxuICAgICAgICBsZXQgcCA9IGZpcnN0UGFnZTtcbiAgICAgICAgbGV0IG8gPSBwb3MgJSBQQUdFX1NJWkU7XG4gICAgICAgIC8vIFJlbWFpbmluZyBieXRlcyB0byByZWFkXG4gICAgICAgIGxldCByID0gbGVuO1xuICAgICAgICB3aGlsZSAocj4wKSB7XG4gICAgICAgICAgICAvLyBieXRlcyB0byBjb3B5IGZyb20gdGhpcyBwYWdlXG4gICAgICAgICAgICBjb25zdCBsID0gKG8rciA+IFBBR0VfU0laRSkgPyAoUEFHRV9TSVpFIC1vKSA6IHI7XG4gICAgICAgICAgICBjb25zdCBzcmNWaWV3ID0gbmV3IFVpbnQ4QXJyYXkoc2VsZi5vLmRhdGFbcF0uYnVmZmVyLCBvLCBsKTtcbiAgICAgICAgICAgIGJ1ZmZEc3Quc2V0KHNyY1ZpZXcsIG9mZnNldCtsZW4tcik7XG4gICAgICAgICAgICByID0gci1sO1xuICAgICAgICAgICAgcCArKztcbiAgICAgICAgICAgIG8gPSAwO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5wb3MgPSBwb3MgKyBsZW47XG4gICAgfVxuXG4gICAgYXN5bmMgcmVhZChsZW4sIHBvcykge1xuICAgICAgICBjb25zdCBzZWxmID0gdGhpcztcbiAgICAgICAgY29uc3QgYnVmZiA9IG5ldyBVaW50OEFycmF5KGxlbik7XG5cbiAgICAgICAgYXdhaXQgc2VsZi5yZWFkVG9CdWZmZXIoYnVmZiwgMCwgbGVuLCBwb3MpO1xuXG4gICAgICAgIHJldHVybiBidWZmO1xuICAgIH1cblxuICAgIGNsb3NlKCkge1xuICAgIH1cblxuICAgIGFzeW5jIGRpc2NhcmQoKSB7XG4gICAgfVxuXG5cbiAgICBhc3luYyB3cml0ZVVMRTMyKHYsIHBvcykge1xuICAgICAgICBjb25zdCBzZWxmID0gdGhpcztcblxuICAgICAgICB0bXBCdWZmMzJ2LnNldFVpbnQzMigwLCB2LCB0cnVlKTtcblxuICAgICAgICBhd2FpdCBzZWxmLndyaXRlKHRtcEJ1ZmYzMiwgcG9zKTtcbiAgICB9XG5cbiAgICBhc3luYyB3cml0ZVVCRTMyKHYsIHBvcykge1xuICAgICAgICBjb25zdCBzZWxmID0gdGhpcztcblxuICAgICAgICB0bXBCdWZmMzJ2LnNldFVpbnQzMigwLCB2LCBmYWxzZSk7XG5cbiAgICAgICAgYXdhaXQgc2VsZi53cml0ZSh0bXBCdWZmMzIsIHBvcyk7XG4gICAgfVxuXG5cbiAgICBhc3luYyB3cml0ZVVMRTY0KHYsIHBvcykge1xuICAgICAgICBjb25zdCBzZWxmID0gdGhpcztcblxuICAgICAgICB0bXBCdWZmNjR2LnNldFVpbnQzMigwLCB2ICYgMHhGRkZGRkZGRiwgdHJ1ZSk7XG4gICAgICAgIHRtcEJ1ZmY2NHYuc2V0VWludDMyKDQsIE1hdGguZmxvb3IodiAvIDB4MTAwMDAwMDAwKSAsIHRydWUpO1xuXG4gICAgICAgIGF3YWl0IHNlbGYud3JpdGUodG1wQnVmZjY0LCBwb3MpO1xuICAgIH1cblxuXG4gICAgYXN5bmMgcmVhZFVMRTMyKHBvcykge1xuICAgICAgICBjb25zdCBzZWxmID0gdGhpcztcbiAgICAgICAgY29uc3QgYiA9IGF3YWl0IHNlbGYucmVhZCg0LCBwb3MpO1xuXG4gICAgICAgIGNvbnN0IHZpZXcgPSBuZXcgVWludDMyQXJyYXkoYi5idWZmZXIpO1xuXG4gICAgICAgIHJldHVybiB2aWV3WzBdO1xuICAgIH1cblxuICAgIGFzeW5jIHJlYWRVQkUzMihwb3MpIHtcbiAgICAgICAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gICAgICAgIGNvbnN0IGIgPSBhd2FpdCBzZWxmLnJlYWQoNCwgcG9zKTtcblxuICAgICAgICBjb25zdCB2aWV3ID0gbmV3IERhdGFWaWV3KGIuYnVmZmVyKTtcblxuICAgICAgICByZXR1cm4gdmlldy5nZXRVaW50MzIoMCwgZmFsc2UpO1xuICAgIH1cblxuICAgIGFzeW5jIHJlYWRVTEU2NChwb3MpIHtcbiAgICAgICAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gICAgICAgIGNvbnN0IGIgPSBhd2FpdCBzZWxmLnJlYWQoOCwgcG9zKTtcblxuICAgICAgICBjb25zdCB2aWV3ID0gbmV3IFVpbnQzMkFycmF5KGIuYnVmZmVyKTtcblxuICAgICAgICByZXR1cm4gdmlld1sxXSAqIDB4MTAwMDAwMDAwICsgdmlld1swXTtcbiAgICB9XG5cbiAgICBhc3luYyByZWFkU3RyaW5nKHBvcykge1xuICAgICAgICBjb25zdCBzZWxmID0gdGhpcztcbiAgICAgICAgY29uc3QgZml4ZWRTaXplID0gMjA0ODtcblxuICAgICAgICBsZXQgY3VycmVudFBvc2l0aW9uID0gdHlwZW9mIHBvcyA9PSBcInVuZGVmaW5lZFwiID8gc2VsZi5wb3MgOiBwb3M7XG5cbiAgICAgICAgaWYgKGN1cnJlbnRQb3NpdGlvbiA+IHRoaXMudG90YWxTaXplKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5yZWFkT25seSkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIlJlYWRpbmcgb3V0IG9mIGJvdW5kc1wiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuX3Jlc2l6ZUlmTmVlZGVkKHBvcyk7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgZW5kT2ZTdHJpbmdGb3VuZCA9IGZhbHNlO1xuICAgICAgICBsZXQgc3RyID0gXCJcIjtcblxuICAgICAgICB3aGlsZSAoIWVuZE9mU3RyaW5nRm91bmQpIHtcbiAgICAgICAgICAgIGxldCBjdXJyZW50UGFnZSA9IE1hdGguZmxvb3IoY3VycmVudFBvc2l0aW9uIC8gUEFHRV9TSVpFKTtcbiAgICAgICAgICAgIGxldCBvZmZzZXRPblBhZ2UgPSBjdXJyZW50UG9zaXRpb24gJSBQQUdFX1NJWkU7XG5cbiAgICAgICAgICAgIGlmIChzZWxmLm8uZGF0YVtjdXJyZW50UGFnZV0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkVSUk9SXCIpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBsZXQgcmVhZExlbmd0aCA9IE1hdGgubWluKGZpeGVkU2l6ZSwgc2VsZi5vLmRhdGFbY3VycmVudFBhZ2VdLmxlbmd0aCAtIG9mZnNldE9uUGFnZSk7XG4gICAgICAgICAgICBjb25zdCBkYXRhQXJyYXkgPSBuZXcgVWludDhBcnJheShzZWxmLm8uZGF0YVtjdXJyZW50UGFnZV0uYnVmZmVyLCBvZmZzZXRPblBhZ2UsIHJlYWRMZW5ndGgpO1xuXG4gICAgICAgICAgICBsZXQgaW5kZXhFbmRPZlN0cmluZyA9IGRhdGFBcnJheS5maW5kSW5kZXgoZWxlbWVudCA9PiBlbGVtZW50ID09PSAwKTtcbiAgICAgICAgICAgIGVuZE9mU3RyaW5nRm91bmQgPSBpbmRleEVuZE9mU3RyaW5nICE9PSAtMTtcblxuICAgICAgICAgICAgaWYgKGVuZE9mU3RyaW5nRm91bmQpIHtcbiAgICAgICAgICAgICAgICBzdHIgKz0gbmV3IFRleHREZWNvZGVyKCkuZGVjb2RlKGRhdGFBcnJheS5zbGljZSgwLCBpbmRleEVuZE9mU3RyaW5nKSk7XG4gICAgICAgICAgICAgICAgc2VsZi5wb3MgPSBjdXJyZW50UGFnZSAqIFBBR0VfU0laRSArIG9mZnNldE9uUGFnZSArIGluZGV4RW5kT2ZTdHJpbmcgKyAxO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBzdHIgKz0gbmV3IFRleHREZWNvZGVyKCkuZGVjb2RlKGRhdGFBcnJheSk7XG4gICAgICAgICAgICAgICAgc2VsZi5wb3MgPSBjdXJyZW50UGFnZSAqIFBBR0VfU0laRSArIG9mZnNldE9uUGFnZSArIGRhdGFBcnJheS5sZW5ndGg7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGN1cnJlbnRQb3NpdGlvbiA9IHNlbGYucG9zO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzdHI7XG4gICAgfVxufVxuIiwiLyogZ2xvYmFsIGZldGNoICovXG5pbXBvcnQgeyBvcGVuIH0gZnJvbSBcIi4vb3NmaWxlLmpzXCI7XG5pbXBvcnQgKiBhcyBtZW1GaWxlIGZyb20gXCIuL21lbWZpbGUuanNcIjtcbmltcG9ydCAqIGFzIGJpZ01lbUZpbGUgZnJvbSBcIi4vYmlnbWVtZmlsZS5qc1wiO1xuaW1wb3J0IHsgT19UUlVOQywgT19DUkVBVCwgT19SRFdSLCBPX0VYQ0wsIE9fUkRPTkxZIH0gZnJvbSBcImNvbnN0YW50c1wiO1xuXG5jb25zdCBERUZBVUxUX0NBQ0hFX1NJWkUgPSAoMSA8PCAxNik7XG5jb25zdCBERUZBVUxUX1BBR0VfU0laRSA9ICgxIDw8IDEzKTtcblxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY3JlYXRlT3ZlcnJpZGUobywgYiwgYykge1xuICAgIGlmICh0eXBlb2YgbyA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICBvID0ge1xuICAgICAgICAgICAgdHlwZTogXCJmaWxlXCIsXG4gICAgICAgICAgICBmaWxlTmFtZTogbyxcbiAgICAgICAgICAgIGNhY2hlU2l6ZTogYiB8fCBERUZBVUxUX0NBQ0hFX1NJWkUsXG4gICAgICAgICAgICBwYWdlU2l6ZTogYyB8fCBERUZBVUxUX1BBR0VfU0laRVxuICAgICAgICB9O1xuICAgIH1cbiAgICBpZiAoby50eXBlID09IFwiZmlsZVwiKSB7XG4gICAgICAgIHJldHVybiBhd2FpdCBvcGVuKG8uZmlsZU5hbWUsIE9fVFJVTkMgfCBPX0NSRUFUIHwgT19SRFdSLCBvLmNhY2hlU2l6ZSwgby5wYWdlU2l6ZSk7XG4gICAgfSBlbHNlIGlmIChvLnR5cGUgPT0gXCJtZW1cIikge1xuICAgICAgICByZXR1cm4gbWVtRmlsZS5jcmVhdGVOZXcobyk7XG4gICAgfSBlbHNlIGlmIChvLnR5cGUgPT0gXCJiaWdNZW1cIikge1xuICAgICAgICByZXR1cm4gYmlnTWVtRmlsZS5jcmVhdGVOZXcobyk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBGYXN0RmlsZSB0eXBlOiBcIitvLnR5cGUpO1xuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZU5vT3ZlcnJpZGUobywgYiwgYykge1xuICAgIGlmICh0eXBlb2YgbyA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICBvID0ge1xuICAgICAgICAgICAgdHlwZTogXCJmaWxlXCIsXG4gICAgICAgICAgICBmaWxlTmFtZTogbyxcbiAgICAgICAgICAgIGNhY2hlU2l6ZTogYiB8fCBERUZBVUxUX0NBQ0hFX1NJWkUsXG4gICAgICAgICAgICBwYWdlU2l6ZTogYyB8fCBERUZBVUxUX1BBR0VfU0laRVxuICAgICAgICB9O1xuICAgIH1cbiAgICBpZiAoby50eXBlID09IFwiZmlsZVwiKSB7XG4gICAgICAgIHJldHVybiBvcGVuKG8uZmlsZU5hbWUsIE9fVFJVTkMgfCBPX0NSRUFUIHwgT19SRFdSIHwgT19FWENMLCBvLmNhY2hlU2l6ZSwgby5wYWdlU2l6ZSk7XG4gICAgfSBlbHNlIGlmIChvLnR5cGUgPT0gXCJtZW1cIikge1xuICAgICAgICByZXR1cm4gbWVtRmlsZS5jcmVhdGVOZXcobyk7XG4gICAgfSBlbHNlIGlmIChvLnR5cGUgPT0gXCJiaWdNZW1cIikge1xuICAgICAgICByZXR1cm4gYmlnTWVtRmlsZS5jcmVhdGVOZXcobyk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBGYXN0RmlsZSB0eXBlOiBcIitvLnR5cGUpO1xuICAgIH1cbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlYWRFeGlzdGluZyhvLCBiLCBjKSB7XG4gICAgaWYgKG8gaW5zdGFuY2VvZiBVaW50OEFycmF5KSB7XG4gICAgICAgIG8gPSB7XG4gICAgICAgICAgICB0eXBlOiBcIm1lbVwiLFxuICAgICAgICAgICAgZGF0YTogb1xuICAgICAgICB9O1xuICAgIH1cbiAgICBpZiAocHJvY2Vzcy5icm93c2VyKSB7XG4gICAgICAgIGlmICh0eXBlb2YgbyA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgY29uc3QgYnVmZiA9IGF3YWl0IGZldGNoKG8pLnRoZW4oIGZ1bmN0aW9uKHJlcykge1xuICAgICAgICAgICAgICAgIHJldHVybiByZXMuYXJyYXlCdWZmZXIoKTtcbiAgICAgICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKGFiKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBVaW50OEFycmF5KGFiKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgbyA9IHtcbiAgICAgICAgICAgICAgICB0eXBlOiBcIm1lbVwiLFxuICAgICAgICAgICAgICAgIGRhdGE6IGJ1ZmZcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgICBpZiAodHlwZW9mIG8gPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICAgIG8gPSB7XG4gICAgICAgICAgICAgICAgdHlwZTogXCJmaWxlXCIsXG4gICAgICAgICAgICAgICAgZmlsZU5hbWU6IG8sXG4gICAgICAgICAgICAgICAgY2FjaGVTaXplOiBiIHx8IERFRkFVTFRfQ0FDSEVfU0laRSxcbiAgICAgICAgICAgICAgICBwYWdlU2l6ZTogYyB8fCBERUZBVUxUX1BBR0VfU0laRVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBpZiAoby50eXBlID09IFwiZmlsZVwiKSB7XG4gICAgICAgIHJldHVybiBhd2FpdCBvcGVuKG8uZmlsZU5hbWUsIE9fUkRPTkxZLCBvLmNhY2hlU2l6ZSwgby5wYWdlU2l6ZSk7XG4gICAgfSBlbHNlIGlmIChvLnR5cGUgPT0gXCJtZW1cIikge1xuICAgICAgICByZXR1cm4gYXdhaXQgbWVtRmlsZS5yZWFkRXhpc3Rpbmcobyk7XG4gICAgfSBlbHNlIGlmIChvLnR5cGUgPT0gXCJiaWdNZW1cIikge1xuICAgICAgICByZXR1cm4gYXdhaXQgYmlnTWVtRmlsZS5yZWFkRXhpc3Rpbmcobyk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBGYXN0RmlsZSB0eXBlOiBcIitvLnR5cGUpO1xuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlYWRXcml0ZUV4aXN0aW5nKG8sIGIsIGMpIHtcbiAgICBpZiAodHlwZW9mIG8gPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgbyA9IHtcbiAgICAgICAgICAgIHR5cGU6IFwiZmlsZVwiLFxuICAgICAgICAgICAgZmlsZU5hbWU6IG8sXG4gICAgICAgICAgICBjYWNoZVNpemU6IGIgfHwgREVGQVVMVF9DQUNIRV9TSVpFLFxuICAgICAgICAgICAgcGFnZVNpemU6IGMgfHwgREVGQVVMVF9QQUdFX1NJWkVcbiAgICAgICAgfTtcbiAgICB9XG4gICAgaWYgKG8udHlwZSA9PSBcImZpbGVcIikge1xuICAgICAgICByZXR1cm4gb3BlbihvLmZpbGVOYW1lLCBPX0NSRUFUIHwgT19SRFdSLCBvLmNhY2hlU2l6ZSwgby5wYWdlU2l6ZSk7XG4gICAgfSBlbHNlIGlmIChvLnR5cGUgPT0gXCJtZW1cIikge1xuICAgICAgICByZXR1cm4gbWVtRmlsZS5yZWFkV3JpdGVFeGlzdGluZyhvKTtcbiAgICB9IGVsc2UgaWYgKG8udHlwZSA9PSBcImJpZ01lbVwiKSB7XG4gICAgICAgIHJldHVybiBiaWdNZW1GaWxlLnJlYWRXcml0ZUV4aXN0aW5nKG8pO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgRmFzdEZpbGUgdHlwZTogXCIrby50eXBlKTtcbiAgICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZWFkV3JpdGVFeGlzdGluZ09yQ3JlYXRlKG8sIGIsIGMpIHtcbiAgICBpZiAodHlwZW9mIG8gPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgbyA9IHtcbiAgICAgICAgICAgIHR5cGU6IFwiZmlsZVwiLFxuICAgICAgICAgICAgZmlsZU5hbWU6IG8sXG4gICAgICAgICAgICBjYWNoZVNpemU6IGIgfHwgREVGQVVMVF9DQUNIRV9TSVpFLFxuICAgICAgICAgICAgcGFnZVNpemU6IGMgfHwgREVGQVVMVF9QQUdFX1NJWkVcbiAgICAgICAgfTtcbiAgICB9XG4gICAgaWYgKG8udHlwZSA9PSBcImZpbGVcIikge1xuICAgICAgICByZXR1cm4gb3BlbihvLmZpbGVOYW1lLCBPX0NSRUFUIHwgT19SRFdSIHwgT19FWENMLCBvLmNhY2hlU2l6ZSk7XG4gICAgfSBlbHNlIGlmIChvLnR5cGUgPT0gXCJtZW1cIikge1xuICAgICAgICByZXR1cm4gbWVtRmlsZS5yZWFkV3JpdGVFeGlzdGluZyhvKTtcbiAgICB9IGVsc2UgaWYgKG8udHlwZSA9PSBcImJpZ01lbVwiKSB7XG4gICAgICAgIHJldHVybiBiaWdNZW1GaWxlLnJlYWRXcml0ZUV4aXN0aW5nKG8pO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgRmFzdEZpbGUgdHlwZTogXCIrby50eXBlKTtcbiAgICB9XG59XG4iLCJcbmltcG9ydCAgeyBTY2FsYXIsIEJpZ0J1ZmZlciB9IGZyb20gXCJmZmphdmFzY3JpcHRcIjtcbmltcG9ydCAqIGFzIGZhc3RGaWxlIGZyb20gXCJmYXN0ZmlsZVwiO1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVhZEJpbkZpbGUoZmlsZU5hbWUsIHR5cGUsIG1heFZlcnNpb24sIGNhY2hlU2l6ZSwgcGFnZVNpemUpIHtcblxuICAgIGNvbnN0IGZkID0gYXdhaXQgZmFzdEZpbGUucmVhZEV4aXN0aW5nKGZpbGVOYW1lLCBjYWNoZVNpemUsIHBhZ2VTaXplKTtcblxuICAgIGNvbnN0IGIgPSBhd2FpdCBmZC5yZWFkKDQpO1xuICAgIGxldCByZWFkZWRUeXBlID0gXCJcIjtcbiAgICBmb3IgKGxldCBpPTA7IGk8NDsgaSsrKSByZWFkZWRUeXBlICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoYltpXSk7XG5cbiAgICBpZiAocmVhZGVkVHlwZSAhPSB0eXBlKSB0aHJvdyBuZXcgRXJyb3IoZmlsZU5hbWUgKyBcIjogSW52YWxpZCBGaWxlIGZvcm1hdFwiKTtcblxuICAgIGxldCB2ID0gYXdhaXQgZmQucmVhZFVMRTMyKCk7XG5cbiAgICBpZiAodj5tYXhWZXJzaW9uKSB0aHJvdyBuZXcgRXJyb3IoXCJWZXJzaW9uIG5vdCBzdXBwb3J0ZWRcIik7XG5cbiAgICBjb25zdCBuU2VjdGlvbnMgPSBhd2FpdCBmZC5yZWFkVUxFMzIoKTtcblxuICAgIC8vIFNjYW4gc2VjdGlvbnNcbiAgICBsZXQgc2VjdGlvbnMgPSBbXTtcbiAgICBmb3IgKGxldCBpPTA7IGk8blNlY3Rpb25zOyBpKyspIHtcbiAgICAgICAgbGV0IGh0ID0gYXdhaXQgZmQucmVhZFVMRTMyKCk7XG4gICAgICAgIGxldCBobCA9IGF3YWl0IGZkLnJlYWRVTEU2NCgpO1xuICAgICAgICBpZiAodHlwZW9mIHNlY3Rpb25zW2h0XSA9PSBcInVuZGVmaW5lZFwiKSBzZWN0aW9uc1todF0gPSBbXTtcbiAgICAgICAgc2VjdGlvbnNbaHRdLnB1c2goe1xuICAgICAgICAgICAgcDogZmQucG9zLFxuICAgICAgICAgICAgc2l6ZTogaGxcbiAgICAgICAgfSk7XG4gICAgICAgIGZkLnBvcyArPSBobDtcbiAgICB9XG5cbiAgICByZXR1cm4ge2ZkLCBzZWN0aW9uc307XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjcmVhdGVCaW5GaWxlKGZpbGVOYW1lLCB0eXBlLCB2ZXJzaW9uLCBuU2VjdGlvbnMsIGNhY2hlU2l6ZSwgcGFnZVNpemUpIHtcblxuICAgIGNvbnN0IGZkID0gYXdhaXQgZmFzdEZpbGUuY3JlYXRlT3ZlcnJpZGUoZmlsZU5hbWUsIGNhY2hlU2l6ZSwgcGFnZVNpemUpO1xuXG4gICAgY29uc3QgYnVmZiA9IG5ldyBVaW50OEFycmF5KDQpO1xuICAgIGZvciAobGV0IGk9MDsgaTw0OyBpKyspIGJ1ZmZbaV0gPSB0eXBlLmNoYXJDb2RlQXQoaSk7XG4gICAgYXdhaXQgZmQud3JpdGUoYnVmZiwgMCk7IC8vIE1hZ2ljIFwicjFjc1wiXG5cbiAgICBhd2FpdCBmZC53cml0ZVVMRTMyKHZlcnNpb24pOyAvLyBWZXJzaW9uXG4gICAgYXdhaXQgZmQud3JpdGVVTEUzMihuU2VjdGlvbnMpOyAvLyBOdW1iZXIgb2YgU2VjdGlvbnNcblxuICAgIHJldHVybiBmZDtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHN0YXJ0V3JpdGVTZWN0aW9uKGZkLCBpZFNlY3Rpb24pIHtcbiAgICBpZiAodHlwZW9mIGZkLndyaXRpbmdTZWN0aW9uICE9PSBcInVuZGVmaW5lZFwiKSB0aHJvdyBuZXcgRXJyb3IoXCJBbHJlYWR5IHdyaXRpbmcgYSBzZWN0aW9uXCIpO1xuICAgIGF3YWl0IGZkLndyaXRlVUxFMzIoaWRTZWN0aW9uKTsgLy8gSGVhZGVyIHR5cGVcbiAgICBmZC53cml0aW5nU2VjdGlvbiA9IHtcbiAgICAgICAgcFNlY3Rpb25TaXplOiBmZC5wb3NcbiAgICB9O1xuICAgIGF3YWl0IGZkLndyaXRlVUxFNjQoMCk7IC8vIFRlbXBvcmFsbHkgc2V0IHRvIDAgbGVuZ3RoXG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBlbmRXcml0ZVNlY3Rpb24oZmQpIHtcbiAgICBpZiAodHlwZW9mIGZkLndyaXRpbmdTZWN0aW9uID09PSBcInVuZGVmaW5lZFwiKSB0aHJvdyBuZXcgRXJyb3IoXCJOb3Qgd3JpdGluZyBhIHNlY3Rpb25cIik7XG5cbiAgICBjb25zdCBzZWN0aW9uU2l6ZSA9IGZkLnBvcyAtIGZkLndyaXRpbmdTZWN0aW9uLnBTZWN0aW9uU2l6ZSAtIDg7XG4gICAgY29uc3Qgb2xkUG9zID0gZmQucG9zO1xuICAgIGZkLnBvcyA9IGZkLndyaXRpbmdTZWN0aW9uLnBTZWN0aW9uU2l6ZTtcbiAgICBhd2FpdCBmZC53cml0ZVVMRTY0KHNlY3Rpb25TaXplKTtcbiAgICBmZC5wb3MgPSBvbGRQb3M7XG4gICAgZGVsZXRlIGZkLndyaXRpbmdTZWN0aW9uO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gc3RhcnRSZWFkVW5pcXVlU2VjdGlvbihmZCwgc2VjdGlvbnMsIGlkU2VjdGlvbikge1xuICAgIGlmICh0eXBlb2YgZmQucmVhZGluZ1NlY3Rpb24gIT09IFwidW5kZWZpbmVkXCIpIHRocm93IG5ldyBFcnJvcihcIkFscmVhZHkgcmVhZGluZyBhIHNlY3Rpb25cIik7XG4gICAgaWYgKCFzZWN0aW9uc1tpZFNlY3Rpb25dKSAgdGhyb3cgbmV3IEVycm9yKGZkLmZpbGVOYW1lICsgXCI6IE1pc3Npbmcgc2VjdGlvbiBcIisgaWRTZWN0aW9uICk7XG4gICAgaWYgKHNlY3Rpb25zW2lkU2VjdGlvbl0ubGVuZ3RoPjEpIHRocm93IG5ldyBFcnJvcihmZC5maWxlTmFtZSArXCI6IFNlY3Rpb24gRHVwbGljYXRlZCBcIiAraWRTZWN0aW9uKTtcblxuICAgIGZkLnBvcyA9IHNlY3Rpb25zW2lkU2VjdGlvbl1bMF0ucDtcblxuICAgIGZkLnJlYWRpbmdTZWN0aW9uID0gc2VjdGlvbnNbaWRTZWN0aW9uXVswXTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGVuZFJlYWRTZWN0aW9uKGZkLCBub0NoZWNrKSB7XG4gICAgaWYgKHR5cGVvZiBmZC5yZWFkaW5nU2VjdGlvbiA9PT0gXCJ1bmRlZmluZWRcIikgdGhyb3cgbmV3IEVycm9yKFwiTm90IHJlYWRpbmcgYSBzZWN0aW9uXCIpO1xuICAgIGlmICghbm9DaGVjaykge1xuICAgICAgICBpZiAoZmQucG9zLWZkLnJlYWRpbmdTZWN0aW9uLnAgIT0gIGZkLnJlYWRpbmdTZWN0aW9uLnNpemUpIHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgc2VjdGlvbiBzaXplIHJlYWRpbmdcIik7XG4gICAgfVxuICAgIGRlbGV0ZSBmZC5yZWFkaW5nU2VjdGlvbjtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHdyaXRlQmlnSW50KGZkLCBuLCBuOCwgcG9zKSB7XG4gICAgY29uc3QgYnVmZiA9IG5ldyBVaW50OEFycmF5KG44KTtcbiAgICBTY2FsYXIudG9ScHJMRShidWZmLCAwLCBuLCBuOCk7XG4gICAgYXdhaXQgZmQud3JpdGUoYnVmZiwgcG9zKTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlYWRCaWdJbnQoZmQsIG44LCBwb3MpIHtcbiAgICBjb25zdCBidWZmID0gYXdhaXQgZmQucmVhZChuOCwgcG9zKTtcbiAgICByZXR1cm4gU2NhbGFyLmZyb21ScHJMRShidWZmLCAwLCBuOCk7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjb3B5U2VjdGlvbihmZEZyb20sIHNlY3Rpb25zLCBmZFRvLCBzZWN0aW9uSWQsIHNpemUpIHtcbiAgICBpZiAodHlwZW9mIHNpemUgPT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgICAgc2l6ZSA9IHNlY3Rpb25zW3NlY3Rpb25JZF1bMF0uc2l6ZTtcbiAgICB9XG4gICAgY29uc3QgY2h1bmtTaXplID0gZmRGcm9tLnBhZ2VTaXplO1xuICAgIGF3YWl0IHN0YXJ0UmVhZFVuaXF1ZVNlY3Rpb24oZmRGcm9tLCBzZWN0aW9ucywgc2VjdGlvbklkKTtcbiAgICBhd2FpdCBzdGFydFdyaXRlU2VjdGlvbihmZFRvLCBzZWN0aW9uSWQpO1xuICAgIGZvciAobGV0IHA9MDsgcDxzaXplOyBwKz1jaHVua1NpemUpIHtcbiAgICAgICAgY29uc3QgbCA9IE1hdGgubWluKHNpemUgLXAsIGNodW5rU2l6ZSk7XG4gICAgICAgIGNvbnN0IGJ1ZmYgPSBhd2FpdCBmZEZyb20ucmVhZChsKTtcbiAgICAgICAgYXdhaXQgZmRUby53cml0ZShidWZmKTtcbiAgICB9XG4gICAgYXdhaXQgZW5kV3JpdGVTZWN0aW9uKGZkVG8pO1xuICAgIGF3YWl0IGVuZFJlYWRTZWN0aW9uKGZkRnJvbSwgc2l6ZSAhPSBzZWN0aW9uc1tzZWN0aW9uSWRdWzBdLnNpemUpO1xuXG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZWFkU2VjdGlvbihmZCwgc2VjdGlvbnMsIGlkU2VjdGlvbiwgb2Zmc2V0LCBsZW5ndGgpIHtcblxuICAgIG9mZnNldCA9ICh0eXBlb2Ygb2Zmc2V0ID09PSBcInVuZGVmaW5lZFwiKSA/IDAgOiBvZmZzZXQ7XG4gICAgbGVuZ3RoID0gKHR5cGVvZiBsZW5ndGggPT09IFwidW5kZWZpbmVkXCIpID8gc2VjdGlvbnNbaWRTZWN0aW9uXVswXS5zaXplIC0gb2Zmc2V0IDogbGVuZ3RoO1xuXG4gICAgaWYgKG9mZnNldCArIGxlbmd0aCA+IHNlY3Rpb25zW2lkU2VjdGlvbl1bMF0uc2l6ZSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJSZWFkaW5nIG91dCBvZiB0aGUgcmFuZ2Ugb2YgdGhlIHNlY3Rpb25cIik7XG4gICAgfVxuXG4gICAgbGV0IGJ1ZmY7XG4gICAgaWYgKGxlbmd0aCA8ICgxIDw8IDMwKSApIHtcbiAgICAgICAgYnVmZiA9IG5ldyBVaW50OEFycmF5KGxlbmd0aCk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgYnVmZiA9IG5ldyBCaWdCdWZmZXIobGVuZ3RoKTtcbiAgICB9XG5cbiAgICBhd2FpdCBmZC5yZWFkVG9CdWZmZXIoYnVmZiwgMCwgbGVuZ3RoLCBzZWN0aW9uc1tpZFNlY3Rpb25dWzBdLnAgKyBvZmZzZXQpO1xuICAgIHJldHVybiBidWZmO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gc2VjdGlvbklzRXF1YWwoZmQxLCBzZWN0aW9uczEsIGZkMiwgc2VjdGlvbnMyLCBpZFNlY3Rpb24pIHtcbiAgICBjb25zdCBNQVhfQlVGRl9TSVpFID0gZmQxLnBhZ2VTaXplICogMTY7XG4gICAgYXdhaXQgc3RhcnRSZWFkVW5pcXVlU2VjdGlvbihmZDEsIHNlY3Rpb25zMSwgaWRTZWN0aW9uKTtcbiAgICBhd2FpdCBzdGFydFJlYWRVbmlxdWVTZWN0aW9uKGZkMiwgc2VjdGlvbnMyLCBpZFNlY3Rpb24pO1xuICAgIGlmIChzZWN0aW9uczFbaWRTZWN0aW9uXVswXS5zaXplICE9IHNlY3Rpb25zMltpZFNlY3Rpb25dWzBdLnNpemUpIHJldHVybiBmYWxzZTtcbiAgICBjb25zdCB0b3RhbEJ5dGVzPXNlY3Rpb25zMVtpZFNlY3Rpb25dWzBdLnNpemU7XG4gICAgZm9yIChsZXQgaT0wOyBpPHRvdGFsQnl0ZXM7IGkrPSBNQVhfQlVGRl9TSVpFKSB7XG4gICAgICAgIGNvbnN0IG4gPSBNYXRoLm1pbih0b3RhbEJ5dGVzLWksIE1BWF9CVUZGX1NJWkUpO1xuICAgICAgICBjb25zdCBidWZmMSA9IGF3YWl0IGZkMS5yZWFkKG4pO1xuICAgICAgICBjb25zdCBidWZmMiA9IGF3YWl0IGZkMi5yZWFkKG4pO1xuICAgICAgICBmb3IgKGxldCBqPTA7IGo8bjsgaisrKSBpZiAoYnVmZjFbal0gIT0gYnVmZjJbal0pIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgYXdhaXQgZW5kUmVhZFNlY3Rpb24oZmQxKTtcbiAgICBhd2FpdCBlbmRSZWFkU2VjdGlvbihmZDIpO1xuICAgIHJldHVybiB0cnVlO1xufVxuIiwiaW1wb3J0IHsgU2NhbGFyLCBidWlsZEJuMTI4LCBidWlsZEJsczEyMzgxfSBmcm9tIFwiZmZqYXZhc2NyaXB0XCI7XG5cbmNvbnN0IGJsczEyMzgxciA9IFNjYWxhci5lKFwiNzNlZGE3NTMyOTlkN2Q0ODMzMzlkODA4MDlhMWQ4MDU1M2JkYTQwMmZmZmU1YmZlZmZmZmZmZmYwMDAwMDAwMVwiLCAxNik7XG5jb25zdCBibjEyOHIgPSBTY2FsYXIuZShcIjIxODg4MjQyODcxODM5Mjc1MjIyMjQ2NDA1NzQ1MjU3Mjc1MDg4NTQ4MzY0NDAwNDE2MDM0MzQzNjk4MjA0MTg2NTc1ODA4NDk1NjE3XCIpO1xuXG5jb25zdCBibHMxMjM4MXEgPSBTY2FsYXIuZShcIjFhMDExMWVhMzk3ZmU2OWE0YjFiYTdiNjQzNGJhY2Q3NjQ3NzRiODRmMzg1MTJiZjY3MzBkMmEwZjZiMGY2MjQxZWFiZmZmZWIxNTNmZmZmYjlmZWZmZmZmZmZmYWFhYlwiLCAxNik7XG5jb25zdCBibjEyOHEgPSBTY2FsYXIuZShcIjIxODg4MjQyODcxODM5Mjc1MjIyMjQ2NDA1NzQ1MjU3Mjc1MDg4Njk2MzExMTU3Mjk3ODIzNjYyNjg5MDM3ODk0NjQ1MjI2MjA4NTgzXCIpO1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0Q3VydmVGcm9tUihyLCBvcHRpb25zKSB7XG4gICAgbGV0IGN1cnZlO1xuICAgIC8vIGNoZWNrIHRoYXQgb3B0aW9ucyBwYXJhbSBpcyBkZWZpbmVkIGFuZCB0aGF0IG9wdGlvbnMuc2luZ2xlVGhyZWFkIGlzIGRlZmluZWRcbiAgICBsZXQgc2luZ2xlVGhyZWFkID0gb3B0aW9ucyAmJiBvcHRpb25zLnNpbmdsZVRocmVhZDtcbiAgICBpZiAoU2NhbGFyLmVxKHIsIGJuMTI4cikpIHtcbiAgICAgICAgY3VydmUgPSBhd2FpdCBidWlsZEJuMTI4KHNpbmdsZVRocmVhZCk7XG4gICAgfSBlbHNlIGlmIChTY2FsYXIuZXEociwgYmxzMTIzODFyKSkge1xuICAgICAgICBjdXJ2ZSA9IGF3YWl0IGJ1aWxkQmxzMTIzODEoc2luZ2xlVGhyZWFkKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEN1cnZlIG5vdCBzdXBwb3J0ZWQ6ICR7U2NhbGFyLnRvU3RyaW5nKHIpfWApO1xuICAgIH1cbiAgICByZXR1cm4gY3VydmU7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRDdXJ2ZUZyb21RKHEsIG9wdGlvbnMpIHtcbiAgICBsZXQgY3VydmU7XG4gICAgbGV0IHNpbmdsZVRocmVhZCA9IG9wdGlvbnMgJiYgb3B0aW9ucy5zaW5nbGVUaHJlYWQ7XG4gICAgaWYgKFNjYWxhci5lcShxLCBibjEyOHEpKSB7XG4gICAgICAgIGN1cnZlID0gYXdhaXQgYnVpbGRCbjEyOChzaW5nbGVUaHJlYWQpO1xuICAgIH0gZWxzZSBpZiAoU2NhbGFyLmVxKHEsIGJsczEyMzgxcSkpIHtcbiAgICAgICAgY3VydmUgPSBhd2FpdCBidWlsZEJsczEyMzgxKHNpbmdsZVRocmVhZCk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBDdXJ2ZSBub3Qgc3VwcG9ydGVkOiAke1NjYWxhci50b1N0cmluZyhxKX1gKTtcbiAgICB9XG4gICAgcmV0dXJuIGN1cnZlO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0Q3VydmVGcm9tTmFtZShuYW1lLCBvcHRpb25zKSB7XG4gICAgbGV0IGN1cnZlO1xuICAgIGxldCBzaW5nbGVUaHJlYWQgPSBvcHRpb25zICYmIG9wdGlvbnMuc2luZ2xlVGhyZWFkO1xuICAgIGNvbnN0IG5vcm1OYW1lID0gbm9ybWFsaXplTmFtZShuYW1lKTtcbiAgICBpZiAoW1wiQk4xMjhcIiwgXCJCTjI1NFwiLCBcIkFMVEJOMTI4XCJdLmluZGV4T2Yobm9ybU5hbWUpID49IDApIHtcbiAgICAgICAgY3VydmUgPSBhd2FpdCBidWlsZEJuMTI4KHNpbmdsZVRocmVhZCk7XG4gICAgfSBlbHNlIGlmIChbXCJCTFMxMjM4MVwiXS5pbmRleE9mKG5vcm1OYW1lKSA+PSAwKSB7XG4gICAgICAgIGN1cnZlID0gYXdhaXQgYnVpbGRCbHMxMjM4MShzaW5nbGVUaHJlYWQpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgQ3VydmUgbm90IHN1cHBvcnRlZDogJHtuYW1lfWApO1xuICAgIH1cbiAgICByZXR1cm4gY3VydmU7XG5cbiAgICBmdW5jdGlvbiBub3JtYWxpemVOYW1lKG4pIHtcbiAgICAgICAgcmV0dXJuIG4udG9VcHBlckNhc2UoKS5tYXRjaCgvW0EtWmEtejAtOV0rL2cpLmpvaW4oXCJcIik7XG4gICAgfVxuXG59XG5cbiIsIm1vZHVsZS5leHBvcnRzID0gYXNzZXJ0XG5cbmNsYXNzIEFzc2VydGlvbkVycm9yIGV4dGVuZHMgRXJyb3Ige31cbkFzc2VydGlvbkVycm9yLnByb3RvdHlwZS5uYW1lID0gJ0Fzc2VydGlvbkVycm9yJ1xuXG4vKipcbiAqIE1pbmltYWwgYXNzZXJ0IGZ1bmN0aW9uXG4gKiBAcGFyYW0gIHthbnl9IHQgVmFsdWUgdG8gY2hlY2sgaWYgZmFsc3lcbiAqIEBwYXJhbSAge3N0cmluZz19IG0gT3B0aW9uYWwgYXNzZXJ0aW9uIGVycm9yIG1lc3NhZ2VcbiAqIEB0aHJvd3Mge0Fzc2VydGlvbkVycm9yfVxuICovXG5mdW5jdGlvbiBhc3NlcnQgKHQsIG0pIHtcbiAgaWYgKCF0KSB7XG4gICAgdmFyIGVyciA9IG5ldyBBc3NlcnRpb25FcnJvcihtKVxuICAgIGlmIChFcnJvci5jYXB0dXJlU3RhY2tUcmFjZSkgRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UoZXJyLCBhc3NlcnQpXG4gICAgdGhyb3cgZXJyXG4gIH1cbn1cbiIsImZ1bmN0aW9uIGJ5dGVMZW5ndGggKHN0cmluZykge1xuICByZXR1cm4gc3RyaW5nLmxlbmd0aFxufVxuXG5mdW5jdGlvbiB0b1N0cmluZyAoYnVmZmVyKSB7XG4gIGNvbnN0IGxlbiA9IGJ1ZmZlci5ieXRlTGVuZ3RoXG5cbiAgbGV0IHJlc3VsdCA9ICcnXG5cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgIHJlc3VsdCArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGJ1ZmZlcltpXSlcbiAgfVxuXG4gIHJldHVybiByZXN1bHRcbn1cblxuZnVuY3Rpb24gd3JpdGUgKGJ1ZmZlciwgc3RyaW5nLCBvZmZzZXQgPSAwLCBsZW5ndGggPSBieXRlTGVuZ3RoKHN0cmluZykpIHtcbiAgY29uc3QgbGVuID0gTWF0aC5taW4obGVuZ3RoLCBidWZmZXIuYnl0ZUxlbmd0aCAtIG9mZnNldClcblxuICBmb3IgKGxldCBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgYnVmZmVyW29mZnNldCArIGldID0gc3RyaW5nLmNoYXJDb2RlQXQoaSlcbiAgfVxuXG4gIHJldHVybiBsZW5cbn1cblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIGJ5dGVMZW5ndGgsXG4gIHRvU3RyaW5nLFxuICB3cml0ZVxufVxuIiwiY29uc3QgYWxwaGFiZXQgPSAnQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLydcblxuY29uc3QgY29kZXMgPSBuZXcgVWludDhBcnJheSgyNTYpXG5cbmZvciAobGV0IGkgPSAwOyBpIDwgYWxwaGFiZXQubGVuZ3RoOyBpKyspIHtcbiAgY29kZXNbYWxwaGFiZXQuY2hhckNvZGVBdChpKV0gPSBpXG59XG5cbmNvZGVzWy8qIC0gKi8gMHgyZF0gPSA2MlxuY29kZXNbLyogXyAqLyAweDVmXSA9IDYzXG5cbmZ1bmN0aW9uIGJ5dGVMZW5ndGggKHN0cmluZykge1xuICBsZXQgbGVuID0gc3RyaW5nLmxlbmd0aFxuXG4gIGlmIChzdHJpbmcuY2hhckNvZGVBdChsZW4gLSAxKSA9PT0gMHgzZCkgbGVuLS1cbiAgaWYgKGxlbiA+IDEgJiYgc3RyaW5nLmNoYXJDb2RlQXQobGVuIC0gMSkgPT09IDB4M2QpIGxlbi0tXG5cbiAgcmV0dXJuIChsZW4gKiAzKSA+Pj4gMlxufVxuXG5mdW5jdGlvbiB0b1N0cmluZyAoYnVmZmVyKSB7XG4gIGNvbnN0IGxlbiA9IGJ1ZmZlci5ieXRlTGVuZ3RoXG5cbiAgbGV0IHJlc3VsdCA9ICcnXG5cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW47IGkgKz0gMykge1xuICAgIHJlc3VsdCArPSAoXG4gICAgICBhbHBoYWJldFtidWZmZXJbaV0gPj4gMl0gK1xuICAgICAgYWxwaGFiZXRbKChidWZmZXJbaV0gJiAzKSA8PCA0KSB8IChidWZmZXJbaSArIDFdID4+IDQpXSArXG4gICAgICBhbHBoYWJldFsoKGJ1ZmZlcltpICsgMV0gJiAxNSkgPDwgMikgfCAoYnVmZmVyW2kgKyAyXSA+PiA2KV0gK1xuICAgICAgYWxwaGFiZXRbYnVmZmVyW2kgKyAyXSAmIDYzXVxuICAgIClcbiAgfVxuXG4gIGlmIChsZW4gJSAzID09PSAyKSB7XG4gICAgcmVzdWx0ID0gcmVzdWx0LnN1YnN0cmluZygwLCByZXN1bHQubGVuZ3RoIC0gMSkgKyAnPSdcbiAgfSBlbHNlIGlmIChsZW4gJSAzID09PSAxKSB7XG4gICAgcmVzdWx0ID0gcmVzdWx0LnN1YnN0cmluZygwLCByZXN1bHQubGVuZ3RoIC0gMikgKyAnPT0nXG4gIH1cblxuICByZXR1cm4gcmVzdWx0XG59O1xuXG5mdW5jdGlvbiB3cml0ZSAoYnVmZmVyLCBzdHJpbmcsIG9mZnNldCA9IDAsIGxlbmd0aCA9IGJ5dGVMZW5ndGgoc3RyaW5nKSkge1xuICBjb25zdCBsZW4gPSBNYXRoLm1pbihsZW5ndGgsIGJ1ZmZlci5ieXRlTGVuZ3RoIC0gb2Zmc2V0KVxuXG4gIGZvciAobGV0IGkgPSAwLCBqID0gMDsgaiA8IGxlbjsgaSArPSA0KSB7XG4gICAgY29uc3QgYSA9IGNvZGVzW3N0cmluZy5jaGFyQ29kZUF0KGkpXVxuICAgIGNvbnN0IGIgPSBjb2Rlc1tzdHJpbmcuY2hhckNvZGVBdChpICsgMSldXG4gICAgY29uc3QgYyA9IGNvZGVzW3N0cmluZy5jaGFyQ29kZUF0KGkgKyAyKV1cbiAgICBjb25zdCBkID0gY29kZXNbc3RyaW5nLmNoYXJDb2RlQXQoaSArIDMpXVxuXG4gICAgYnVmZmVyW2orK10gPSAoYSA8PCAyKSB8IChiID4+IDQpXG4gICAgYnVmZmVyW2orK10gPSAoKGIgJiAxNSkgPDwgNCkgfCAoYyA+PiAyKVxuICAgIGJ1ZmZlcltqKytdID0gKChjICYgMykgPDwgNikgfCAoZCAmIDYzKVxuICB9XG5cbiAgcmV0dXJuIGxlblxufTtcblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIGJ5dGVMZW5ndGgsXG4gIHRvU3RyaW5nLFxuICB3cml0ZVxufVxuIiwiZnVuY3Rpb24gYnl0ZUxlbmd0aCAoc3RyaW5nKSB7XG4gIHJldHVybiBzdHJpbmcubGVuZ3RoID4+PiAxXG59XG5cbmZ1bmN0aW9uIHRvU3RyaW5nIChidWZmZXIpIHtcbiAgY29uc3QgbGVuID0gYnVmZmVyLmJ5dGVMZW5ndGhcblxuICBidWZmZXIgPSBuZXcgRGF0YVZpZXcoYnVmZmVyLmJ1ZmZlciwgYnVmZmVyLmJ5dGVPZmZzZXQsIGxlbilcblxuICBsZXQgcmVzdWx0ID0gJydcbiAgbGV0IGkgPSAwXG5cbiAgZm9yIChsZXQgbiA9IGxlbiAtIChsZW4gJSA0KTsgaSA8IG47IGkgKz0gNCkge1xuICAgIHJlc3VsdCArPSBidWZmZXIuZ2V0VWludDMyKGkpLnRvU3RyaW5nKDE2KS5wYWRTdGFydCg4LCAnMCcpXG4gIH1cblxuICBmb3IgKDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgcmVzdWx0ICs9IGJ1ZmZlci5nZXRVaW50OChpKS50b1N0cmluZygxNikucGFkU3RhcnQoMiwgJzAnKVxuICB9XG5cbiAgcmV0dXJuIHJlc3VsdFxufVxuXG5mdW5jdGlvbiB3cml0ZSAoYnVmZmVyLCBzdHJpbmcsIG9mZnNldCA9IDAsIGxlbmd0aCA9IGJ5dGVMZW5ndGgoc3RyaW5nKSkge1xuICBjb25zdCBsZW4gPSBNYXRoLm1pbihsZW5ndGgsIGJ1ZmZlci5ieXRlTGVuZ3RoIC0gb2Zmc2V0KVxuXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICBjb25zdCBhID0gaGV4VmFsdWUoc3RyaW5nLmNoYXJDb2RlQXQoaSAqIDIpKVxuICAgIGNvbnN0IGIgPSBoZXhWYWx1ZShzdHJpbmcuY2hhckNvZGVBdChpICogMiArIDEpKVxuXG4gICAgaWYgKGEgPT09IHVuZGVmaW5lZCB8fCBiID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiBidWZmZXIuc3ViYXJyYXkoMCwgaSlcbiAgICB9XG5cbiAgICBidWZmZXJbb2Zmc2V0ICsgaV0gPSAoYSA8PCA0KSB8IGJcbiAgfVxuXG4gIHJldHVybiBsZW5cbn1cblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIGJ5dGVMZW5ndGgsXG4gIHRvU3RyaW5nLFxuICB3cml0ZVxufVxuXG5mdW5jdGlvbiBoZXhWYWx1ZSAoY2hhcikge1xuICBpZiAoY2hhciA+PSAweDMwICYmIGNoYXIgPD0gMHgzOSkgcmV0dXJuIGNoYXIgLSAweDMwXG4gIGlmIChjaGFyID49IDB4NDEgJiYgY2hhciA8PSAweDQ2KSByZXR1cm4gY2hhciAtIDB4NDEgKyAxMFxuICBpZiAoY2hhciA+PSAweDYxICYmIGNoYXIgPD0gMHg2NikgcmV0dXJuIGNoYXIgLSAweDYxICsgMTBcbn1cbiIsImZ1bmN0aW9uIGJ5dGVMZW5ndGggKHN0cmluZykge1xuICBsZXQgbGVuZ3RoID0gMFxuXG4gIGZvciAobGV0IGkgPSAwLCBuID0gc3RyaW5nLmxlbmd0aDsgaSA8IG47IGkrKykge1xuICAgIGNvbnN0IGNvZGUgPSBzdHJpbmcuY2hhckNvZGVBdChpKVxuXG4gICAgaWYgKGNvZGUgPj0gMHhkODAwICYmIGNvZGUgPD0gMHhkYmZmICYmIGkgKyAxIDwgbikge1xuICAgICAgY29uc3QgY29kZSA9IHN0cmluZy5jaGFyQ29kZUF0KGkgKyAxKVxuXG4gICAgICBpZiAoY29kZSA+PSAweGRjMDAgJiYgY29kZSA8PSAweGRmZmYpIHtcbiAgICAgICAgbGVuZ3RoICs9IDRcbiAgICAgICAgaSsrXG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGNvZGUgPD0gMHg3ZikgbGVuZ3RoICs9IDFcbiAgICBlbHNlIGlmIChjb2RlIDw9IDB4N2ZmKSBsZW5ndGggKz0gMlxuICAgIGVsc2UgbGVuZ3RoICs9IDNcbiAgfVxuXG4gIHJldHVybiBsZW5ndGhcbn1cblxubGV0IHRvU3RyaW5nXG5cbmlmICh0eXBlb2YgVGV4dERlY29kZXIgIT09ICd1bmRlZmluZWQnKSB7XG4gIGNvbnN0IGRlY29kZXIgPSBuZXcgVGV4dERlY29kZXIoKVxuXG4gIHRvU3RyaW5nID0gZnVuY3Rpb24gdG9TdHJpbmcgKGJ1ZmZlcikge1xuICAgIHJldHVybiBkZWNvZGVyLmRlY29kZShidWZmZXIpXG4gIH1cbn0gZWxzZSB7XG4gIHRvU3RyaW5nID0gZnVuY3Rpb24gdG9TdHJpbmcgKGJ1ZmZlcikge1xuICAgIGNvbnN0IGxlbiA9IGJ1ZmZlci5ieXRlTGVuZ3RoXG5cbiAgICBsZXQgb3V0cHV0ID0gJydcbiAgICBsZXQgaSA9IDBcblxuICAgIHdoaWxlIChpIDwgbGVuKSB7XG4gICAgICBsZXQgYnl0ZSA9IGJ1ZmZlcltpXVxuXG4gICAgICBpZiAoYnl0ZSA8PSAweDdmKSB7XG4gICAgICAgIG91dHB1dCArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGJ5dGUpXG4gICAgICAgIGkrK1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuXG4gICAgICBsZXQgYnl0ZXNOZWVkZWQgPSAwXG4gICAgICBsZXQgY29kZVBvaW50ID0gMFxuXG4gICAgICBpZiAoYnl0ZSA8PSAweGRmKSB7XG4gICAgICAgIGJ5dGVzTmVlZGVkID0gMVxuICAgICAgICBjb2RlUG9pbnQgPSBieXRlICYgMHgxZlxuICAgICAgfSBlbHNlIGlmIChieXRlIDw9IDB4ZWYpIHtcbiAgICAgICAgYnl0ZXNOZWVkZWQgPSAyXG4gICAgICAgIGNvZGVQb2ludCA9IGJ5dGUgJiAweDBmXG4gICAgICB9IGVsc2UgaWYgKGJ5dGUgPD0gMHhmNCkge1xuICAgICAgICBieXRlc05lZWRlZCA9IDNcbiAgICAgICAgY29kZVBvaW50ID0gYnl0ZSAmIDB4MDdcbiAgICAgIH1cblxuICAgICAgaWYgKGxlbiAtIGkgLSBieXRlc05lZWRlZCA+IDApIHtcbiAgICAgICAgbGV0IGsgPSAwXG5cbiAgICAgICAgd2hpbGUgKGsgPCBieXRlc05lZWRlZCkge1xuICAgICAgICAgIGJ5dGUgPSBidWZmZXJbaSArIGsgKyAxXVxuICAgICAgICAgIGNvZGVQb2ludCA9IChjb2RlUG9pbnQgPDwgNikgfCAoYnl0ZSAmIDB4M2YpXG4gICAgICAgICAgayArPSAxXG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvZGVQb2ludCA9IDB4ZmZmZFxuICAgICAgICBieXRlc05lZWRlZCA9IGxlbiAtIGlcbiAgICAgIH1cblxuICAgICAgb3V0cHV0ICs9IFN0cmluZy5mcm9tQ29kZVBvaW50KGNvZGVQb2ludClcbiAgICAgIGkgKz0gYnl0ZXNOZWVkZWQgKyAxXG4gICAgfVxuXG4gICAgcmV0dXJuIG91dHB1dFxuICB9XG59XG5cbmxldCB3cml0ZVxuXG5pZiAodHlwZW9mIFRleHRFbmNvZGVyICE9PSAndW5kZWZpbmVkJykge1xuICBjb25zdCBlbmNvZGVyID0gbmV3IFRleHRFbmNvZGVyKClcblxuICB3cml0ZSA9IGZ1bmN0aW9uIHdyaXRlIChidWZmZXIsIHN0cmluZywgb2Zmc2V0ID0gMCwgbGVuZ3RoID0gYnl0ZUxlbmd0aChzdHJpbmcpKSB7XG4gICAgY29uc3QgbGVuID0gTWF0aC5taW4obGVuZ3RoLCBidWZmZXIuYnl0ZUxlbmd0aCAtIG9mZnNldClcbiAgICBlbmNvZGVyLmVuY29kZUludG8oc3RyaW5nLCBidWZmZXIuc3ViYXJyYXkob2Zmc2V0LCBvZmZzZXQgKyBsZW4pKVxuICAgIHJldHVybiBsZW5cbiAgfVxufSBlbHNlIHtcbiAgd3JpdGUgPSBmdW5jdGlvbiB3cml0ZSAoYnVmZmVyLCBzdHJpbmcsIG9mZnNldCA9IDAsIGxlbmd0aCA9IGJ5dGVMZW5ndGgoc3RyaW5nKSkge1xuICAgIGNvbnN0IGxlbiA9IE1hdGgubWluKGxlbmd0aCwgYnVmZmVyLmJ5dGVMZW5ndGggLSBvZmZzZXQpXG5cbiAgICBidWZmZXIgPSBidWZmZXIuc3ViYXJyYXkob2Zmc2V0LCBvZmZzZXQgKyBsZW4pXG5cbiAgICBsZXQgaSA9IDBcbiAgICBsZXQgaiA9IDBcblxuICAgIHdoaWxlIChpIDwgc3RyaW5nLmxlbmd0aCkge1xuICAgICAgY29uc3QgY29kZSA9IHN0cmluZy5jb2RlUG9pbnRBdChpKVxuXG4gICAgICBpZiAoY29kZSA8PSAweDdmKSB7XG4gICAgICAgIGJ1ZmZlcltqKytdID0gY29kZVxuICAgICAgICBpKytcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cblxuICAgICAgbGV0IGNvdW50ID0gMFxuICAgICAgbGV0IGJpdHMgPSAwXG5cbiAgICAgIGlmIChjb2RlIDw9IDB4N2ZmKSB7XG4gICAgICAgIGNvdW50ID0gNlxuICAgICAgICBiaXRzID0gMHhjMFxuICAgICAgfSBlbHNlIGlmIChjb2RlIDw9IDB4ZmZmZikge1xuICAgICAgICBjb3VudCA9IDEyXG4gICAgICAgIGJpdHMgPSAweGUwXG4gICAgICB9IGVsc2UgaWYgKGNvZGUgPD0gMHgxZmZmZmYpIHtcbiAgICAgICAgY291bnQgPSAxOFxuICAgICAgICBiaXRzID0gMHhmMFxuICAgICAgfVxuXG4gICAgICBidWZmZXJbaisrXSA9IGJpdHMgfCAoY29kZSA+PiBjb3VudClcbiAgICAgIGNvdW50IC09IDZcblxuICAgICAgd2hpbGUgKGNvdW50ID49IDApIHtcbiAgICAgICAgYnVmZmVyW2orK10gPSAweDgwIHwgKChjb2RlID4+IGNvdW50KSAmIDB4M2YpXG4gICAgICAgIGNvdW50IC09IDZcbiAgICAgIH1cblxuICAgICAgaSArPSBjb2RlID49IDB4MTAwMDAgPyAyIDogMVxuICAgIH1cblxuICAgIHJldHVybiBsZW5cbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgYnl0ZUxlbmd0aCxcbiAgdG9TdHJpbmcsXG4gIHdyaXRlXG59XG4iLCJmdW5jdGlvbiBieXRlTGVuZ3RoIChzdHJpbmcpIHtcbiAgcmV0dXJuIHN0cmluZy5sZW5ndGggKiAyXG59XG5cbmZ1bmN0aW9uIHRvU3RyaW5nIChidWZmZXIpIHtcbiAgY29uc3QgbGVuID0gYnVmZmVyLmJ5dGVMZW5ndGhcblxuICBsZXQgcmVzdWx0ID0gJydcblxuICBmb3IgKGxldCBpID0gMDsgaSA8IGxlbiAtIDE7IGkgKz0gMikge1xuICAgIHJlc3VsdCArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGJ1ZmZlcltpXSArIChidWZmZXJbaSArIDFdICogMjU2KSlcbiAgfVxuXG4gIHJldHVybiByZXN1bHRcbn1cblxuZnVuY3Rpb24gd3JpdGUgKGJ1ZmZlciwgc3RyaW5nLCBvZmZzZXQgPSAwLCBsZW5ndGggPSBieXRlTGVuZ3RoKHN0cmluZykpIHtcbiAgY29uc3QgbGVuID0gTWF0aC5taW4obGVuZ3RoLCBidWZmZXIuYnl0ZUxlbmd0aCAtIG9mZnNldClcblxuICBsZXQgdW5pdHMgPSBsZW5cblxuICBmb3IgKGxldCBpID0gMDsgaSA8IHN0cmluZy5sZW5ndGg7ICsraSkge1xuICAgIGlmICgodW5pdHMgLT0gMikgPCAwKSBicmVha1xuXG4gICAgY29uc3QgYyA9IHN0cmluZy5jaGFyQ29kZUF0KGkpXG4gICAgY29uc3QgaGkgPSBjID4+IDhcbiAgICBjb25zdCBsbyA9IGMgJSAyNTZcblxuICAgIGJ1ZmZlcltvZmZzZXQgKyBpICogMl0gPSBsb1xuICAgIGJ1ZmZlcltvZmZzZXQgKyBpICogMiArIDFdID0gaGlcbiAgfVxuXG4gIHJldHVybiBsZW5cbn1cblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIGJ5dGVMZW5ndGgsXG4gIHRvU3RyaW5nLFxuICB3cml0ZVxufVxuIiwiY29uc3QgYXNjaWkgPSByZXF1aXJlKCcuL2xpYi9hc2NpaScpXG5jb25zdCBiYXNlNjQgPSByZXF1aXJlKCcuL2xpYi9iYXNlNjQnKVxuY29uc3QgaGV4ID0gcmVxdWlyZSgnLi9saWIvaGV4JylcbmNvbnN0IHV0ZjggPSByZXF1aXJlKCcuL2xpYi91dGY4JylcbmNvbnN0IHV0ZjE2bGUgPSByZXF1aXJlKCcuL2xpYi91dGYxNmxlJylcblxuY29uc3QgTEUgPSBuZXcgVWludDhBcnJheShVaW50MTZBcnJheS5vZigweGZmKS5idWZmZXIpWzBdID09PSAweGZmXG5cbmZ1bmN0aW9uIGNvZGVjRm9yIChlbmNvZGluZykge1xuICBzd2l0Y2ggKGVuY29kaW5nKSB7XG4gICAgY2FzZSAnYXNjaWknOlxuICAgICAgcmV0dXJuIGFzY2lpXG4gICAgY2FzZSAnYmFzZTY0JzpcbiAgICAgIHJldHVybiBiYXNlNjRcbiAgICBjYXNlICdoZXgnOlxuICAgICAgcmV0dXJuIGhleFxuICAgIGNhc2UgJ3V0ZjgnOlxuICAgIGNhc2UgJ3V0Zi04JzpcbiAgICBjYXNlIHVuZGVmaW5lZDpcbiAgICAgIHJldHVybiB1dGY4XG4gICAgY2FzZSAndWNzMic6XG4gICAgY2FzZSAndWNzLTInOlxuICAgIGNhc2UgJ3V0ZjE2bGUnOlxuICAgIGNhc2UgJ3V0Zi0xNmxlJzpcbiAgICAgIHJldHVybiB1dGYxNmxlXG4gICAgZGVmYXVsdDpcbiAgICAgIHRocm93IG5ldyBFcnJvcihgVW5rbm93biBlbmNvZGluZzogJHtlbmNvZGluZ31gKVxuICB9XG59XG5cbmZ1bmN0aW9uIGlzQnVmZmVyICh2YWx1ZSkge1xuICByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBVaW50OEFycmF5XG59XG5cbmZ1bmN0aW9uIGlzRW5jb2RpbmcgKGVuY29kaW5nKSB7XG4gIHRyeSB7XG4gICAgY29kZWNGb3IoZW5jb2RpbmcpXG4gICAgcmV0dXJuIHRydWVcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cbn1cblxuZnVuY3Rpb24gYWxsb2MgKHNpemUsIGZpbGwsIGVuY29kaW5nKSB7XG4gIGNvbnN0IGJ1ZmZlciA9IG5ldyBVaW50OEFycmF5KHNpemUpXG4gIGlmIChmaWxsICE9PSB1bmRlZmluZWQpIGV4cG9ydHMuZmlsbChidWZmZXIsIGZpbGwsIDAsIGJ1ZmZlci5ieXRlTGVuZ3RoLCBlbmNvZGluZylcbiAgcmV0dXJuIGJ1ZmZlclxufVxuXG5mdW5jdGlvbiBhbGxvY1Vuc2FmZSAoc2l6ZSkge1xuICByZXR1cm4gbmV3IFVpbnQ4QXJyYXkoc2l6ZSlcbn1cblxuZnVuY3Rpb24gYWxsb2NVbnNhZmVTbG93IChzaXplKSB7XG4gIHJldHVybiBuZXcgVWludDhBcnJheShzaXplKVxufVxuXG5mdW5jdGlvbiBieXRlTGVuZ3RoIChzdHJpbmcsIGVuY29kaW5nKSB7XG4gIHJldHVybiBjb2RlY0ZvcihlbmNvZGluZykuYnl0ZUxlbmd0aChzdHJpbmcpXG59XG5cbmZ1bmN0aW9uIGNvbXBhcmUgKGEsIGIpIHtcbiAgaWYgKGEgPT09IGIpIHJldHVybiAwXG5cbiAgY29uc3QgbGVuID0gTWF0aC5taW4oYS5ieXRlTGVuZ3RoLCBiLmJ5dGVMZW5ndGgpXG5cbiAgYSA9IG5ldyBEYXRhVmlldyhhLmJ1ZmZlciwgYS5ieXRlT2Zmc2V0LCBhLmJ5dGVMZW5ndGgpXG4gIGIgPSBuZXcgRGF0YVZpZXcoYi5idWZmZXIsIGIuYnl0ZU9mZnNldCwgYi5ieXRlTGVuZ3RoKVxuXG4gIGxldCBpID0gMFxuXG4gIGZvciAobGV0IG4gPSBsZW4gLSAobGVuICUgNCk7IGkgPCBuOyBpICs9IDQpIHtcbiAgICBjb25zdCB4ID0gYS5nZXRVaW50MzIoaSwgTEUpXG4gICAgY29uc3QgeSA9IGIuZ2V0VWludDMyKGksIExFKVxuICAgIGlmICh4ICE9PSB5KSBicmVha1xuICB9XG5cbiAgZm9yICg7IGkgPCBsZW47IGkrKykge1xuICAgIGNvbnN0IHggPSBhLmdldFVpbnQ4KGkpXG4gICAgY29uc3QgeSA9IGIuZ2V0VWludDgoaSlcbiAgICBpZiAoeCA8IHkpIHJldHVybiAtMVxuICAgIGlmICh4ID4geSkgcmV0dXJuIDFcbiAgfVxuXG4gIHJldHVybiBhLmJ5dGVMZW5ndGggPiBiLmJ5dGVMZW5ndGggPyAxIDogYS5ieXRlTGVuZ3RoIDwgYi5ieXRlTGVuZ3RoID8gLTEgOiAwXG59XG5cbmZ1bmN0aW9uIGNvbmNhdCAoYnVmZmVycywgdG90YWxMZW5ndGgpIHtcbiAgaWYgKHRvdGFsTGVuZ3RoID09PSB1bmRlZmluZWQpIHtcbiAgICB0b3RhbExlbmd0aCA9IGJ1ZmZlcnMucmVkdWNlKChsZW4sIGJ1ZmZlcikgPT4gbGVuICsgYnVmZmVyLmJ5dGVMZW5ndGgsIDApXG4gIH1cblxuICBjb25zdCByZXN1bHQgPSBuZXcgVWludDhBcnJheSh0b3RhbExlbmd0aClcblxuICBsZXQgb2Zmc2V0ID0gMFxuICBmb3IgKGNvbnN0IGJ1ZmZlciBvZiBidWZmZXJzKSB7XG4gICAgaWYgKG9mZnNldCArIGJ1ZmZlci5ieXRlTGVuZ3RoID4gcmVzdWx0LmJ5dGVMZW5ndGgpIHtcbiAgICAgIGNvbnN0IHN1YiA9IGJ1ZmZlci5zdWJhcnJheSgwLCByZXN1bHQuYnl0ZUxlbmd0aCAtIG9mZnNldClcbiAgICAgIHJlc3VsdC5zZXQoc3ViLCBvZmZzZXQpXG4gICAgICByZXR1cm4gcmVzdWx0XG4gICAgfVxuICAgIHJlc3VsdC5zZXQoYnVmZmVyLCBvZmZzZXQpXG4gICAgb2Zmc2V0ICs9IGJ1ZmZlci5ieXRlTGVuZ3RoXG4gIH1cblxuICByZXR1cm4gcmVzdWx0XG59XG5cbmZ1bmN0aW9uIGNvcHkgKHNvdXJjZSwgdGFyZ2V0LCB0YXJnZXRTdGFydCA9IDAsIHN0YXJ0ID0gMCwgZW5kID0gc291cmNlLmJ5dGVMZW5ndGgpIHtcbiAgaWYgKGVuZCA+IDAgJiYgZW5kIDwgc3RhcnQpIHJldHVybiAwXG4gIGlmIChlbmQgPT09IHN0YXJ0KSByZXR1cm4gMFxuICBpZiAoc291cmNlLmJ5dGVMZW5ndGggPT09IDAgfHwgdGFyZ2V0LmJ5dGVMZW5ndGggPT09IDApIHJldHVybiAwXG5cbiAgaWYgKHRhcmdldFN0YXJ0IDwgMCkgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ3RhcmdldFN0YXJ0IGlzIG91dCBvZiByYW5nZScpXG4gIGlmIChzdGFydCA8IDAgfHwgc3RhcnQgPj0gc291cmNlLmJ5dGVMZW5ndGgpIHRocm93IG5ldyBSYW5nZUVycm9yKCdzb3VyY2VTdGFydCBpcyBvdXQgb2YgcmFuZ2UnKVxuICBpZiAoZW5kIDwgMCkgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ3NvdXJjZUVuZCBpcyBvdXQgb2YgcmFuZ2UnKVxuXG4gIGlmICh0YXJnZXRTdGFydCA+PSB0YXJnZXQuYnl0ZUxlbmd0aCkgdGFyZ2V0U3RhcnQgPSB0YXJnZXQuYnl0ZUxlbmd0aFxuICBpZiAoZW5kID4gc291cmNlLmJ5dGVMZW5ndGgpIGVuZCA9IHNvdXJjZS5ieXRlTGVuZ3RoXG4gIGlmICh0YXJnZXQuYnl0ZUxlbmd0aCAtIHRhcmdldFN0YXJ0IDwgZW5kIC0gc3RhcnQpIHtcbiAgICBlbmQgPSB0YXJnZXQubGVuZ3RoIC0gdGFyZ2V0U3RhcnQgKyBzdGFydFxuICB9XG5cbiAgY29uc3QgbGVuID0gZW5kIC0gc3RhcnRcblxuICBpZiAoc291cmNlID09PSB0YXJnZXQpIHtcbiAgICB0YXJnZXQuY29weVdpdGhpbih0YXJnZXRTdGFydCwgc3RhcnQsIGVuZClcbiAgfSBlbHNlIHtcbiAgICB0YXJnZXQuc2V0KHNvdXJjZS5zdWJhcnJheShzdGFydCwgZW5kKSwgdGFyZ2V0U3RhcnQpXG4gIH1cblxuICByZXR1cm4gbGVuXG59XG5cbmZ1bmN0aW9uIGVxdWFscyAoYSwgYikge1xuICBpZiAoYSA9PT0gYikgcmV0dXJuIHRydWVcbiAgaWYgKGEuYnl0ZUxlbmd0aCAhPT0gYi5ieXRlTGVuZ3RoKSByZXR1cm4gZmFsc2VcblxuICBjb25zdCBsZW4gPSBhLmJ5dGVMZW5ndGhcblxuICBhID0gbmV3IERhdGFWaWV3KGEuYnVmZmVyLCBhLmJ5dGVPZmZzZXQsIGEuYnl0ZUxlbmd0aClcbiAgYiA9IG5ldyBEYXRhVmlldyhiLmJ1ZmZlciwgYi5ieXRlT2Zmc2V0LCBiLmJ5dGVMZW5ndGgpXG5cbiAgbGV0IGkgPSAwXG5cbiAgZm9yIChsZXQgbiA9IGxlbiAtIChsZW4gJSA0KTsgaSA8IG47IGkgKz0gNCkge1xuICAgIGlmIChhLmdldFVpbnQzMihpLCBMRSkgIT09IGIuZ2V0VWludDMyKGksIExFKSkgcmV0dXJuIGZhbHNlXG4gIH1cblxuICBmb3IgKDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgaWYgKGEuZ2V0VWludDgoaSkgIT09IGIuZ2V0VWludDgoaSkpIHJldHVybiBmYWxzZVxuICB9XG5cbiAgcmV0dXJuIHRydWVcbn1cblxuZnVuY3Rpb24gZmlsbCAoYnVmZmVyLCB2YWx1ZSwgb2Zmc2V0LCBlbmQsIGVuY29kaW5nKSB7XG4gIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgLy8gZmlsbChidWZmZXIsIHN0cmluZywgZW5jb2RpbmcpXG4gICAgaWYgKHR5cGVvZiBvZmZzZXQgPT09ICdzdHJpbmcnKSB7XG4gICAgICBlbmNvZGluZyA9IG9mZnNldFxuICAgICAgb2Zmc2V0ID0gMFxuICAgICAgZW5kID0gYnVmZmVyLmJ5dGVMZW5ndGhcblxuICAgIC8vIGZpbGwoYnVmZmVyLCBzdHJpbmcsIG9mZnNldCwgZW5jb2RpbmcpXG4gICAgfSBlbHNlIGlmICh0eXBlb2YgZW5kID09PSAnc3RyaW5nJykge1xuICAgICAgZW5jb2RpbmcgPSBlbmRcbiAgICAgIGVuZCA9IGJ1ZmZlci5ieXRlTGVuZ3RoXG4gICAgfVxuICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicpIHtcbiAgICB2YWx1ZSA9IHZhbHVlICYgMHhmZlxuICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ2Jvb2xlYW4nKSB7XG4gICAgdmFsdWUgPSArdmFsdWVcbiAgfVxuXG4gIGlmIChvZmZzZXQgPCAwIHx8IGJ1ZmZlci5ieXRlTGVuZ3RoIDwgb2Zmc2V0IHx8IGJ1ZmZlci5ieXRlTGVuZ3RoIDwgZW5kKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ091dCBvZiByYW5nZSBpbmRleCcpXG4gIH1cblxuICBpZiAob2Zmc2V0ID09PSB1bmRlZmluZWQpIG9mZnNldCA9IDBcbiAgaWYgKGVuZCA9PT0gdW5kZWZpbmVkKSBlbmQgPSBidWZmZXIuYnl0ZUxlbmd0aFxuXG4gIGlmIChlbmQgPD0gb2Zmc2V0KSByZXR1cm4gYnVmZmVyXG5cbiAgaWYgKCF2YWx1ZSkgdmFsdWUgPSAwXG5cbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicpIHtcbiAgICBmb3IgKGxldCBpID0gb2Zmc2V0OyBpIDwgZW5kOyArK2kpIHtcbiAgICAgIGJ1ZmZlcltpXSA9IHZhbHVlXG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHZhbHVlID0gaXNCdWZmZXIodmFsdWUpID8gdmFsdWUgOiBmcm9tKHZhbHVlLCBlbmNvZGluZylcblxuICAgIGNvbnN0IGxlbiA9IHZhbHVlLmJ5dGVMZW5ndGhcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZW5kIC0gb2Zmc2V0OyArK2kpIHtcbiAgICAgIGJ1ZmZlcltpICsgb2Zmc2V0XSA9IHZhbHVlW2kgJSBsZW5dXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGJ1ZmZlclxufVxuXG5mdW5jdGlvbiBmcm9tICh2YWx1ZSwgZW5jb2RpbmdPck9mZnNldCwgbGVuZ3RoKSB7XG4gIC8vIGZyb20oc3RyaW5nLCBlbmNvZGluZylcbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHJldHVybiBmcm9tU3RyaW5nKHZhbHVlLCBlbmNvZGluZ09yT2Zmc2V0KVxuXG4gIC8vIGZyb20oYXJyYXkpXG4gIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkgcmV0dXJuIGZyb21BcnJheSh2YWx1ZSlcblxuICAvLyBmcm9tKGJ1ZmZlcilcbiAgaWYgKEFycmF5QnVmZmVyLmlzVmlldyh2YWx1ZSkpIHJldHVybiBmcm9tQnVmZmVyKHZhbHVlKVxuXG4gIC8vIGZyb20oYXJyYXlCdWZmZXJbLCBieXRlT2Zmc2V0WywgbGVuZ3RoXV0pXG4gIHJldHVybiBmcm9tQXJyYXlCdWZmZXIodmFsdWUsIGVuY29kaW5nT3JPZmZzZXQsIGxlbmd0aClcbn1cblxuZnVuY3Rpb24gZnJvbVN0cmluZyAoc3RyaW5nLCBlbmNvZGluZykge1xuICBjb25zdCBjb2RlYyA9IGNvZGVjRm9yKGVuY29kaW5nKVxuICBjb25zdCBidWZmZXIgPSBuZXcgVWludDhBcnJheShjb2RlYy5ieXRlTGVuZ3RoKHN0cmluZykpXG4gIGNvZGVjLndyaXRlKGJ1ZmZlciwgc3RyaW5nLCAwLCBidWZmZXIuYnl0ZUxlbmd0aClcbiAgcmV0dXJuIGJ1ZmZlclxufVxuXG5mdW5jdGlvbiBmcm9tQXJyYXkgKGFycmF5KSB7XG4gIGNvbnN0IGJ1ZmZlciA9IG5ldyBVaW50OEFycmF5KGFycmF5Lmxlbmd0aClcbiAgYnVmZmVyLnNldChhcnJheSlcbiAgcmV0dXJuIGJ1ZmZlclxufVxuXG5mdW5jdGlvbiBmcm9tQnVmZmVyIChidWZmZXIpIHtcbiAgY29uc3QgY29weSA9IG5ldyBVaW50OEFycmF5KGJ1ZmZlci5ieXRlTGVuZ3RoKVxuICBjb3B5LnNldChidWZmZXIpXG4gIHJldHVybiBjb3B5XG59XG5cbmZ1bmN0aW9uIGZyb21BcnJheUJ1ZmZlciAoYXJyYXlCdWZmZXIsIGJ5dGVPZmZzZXQsIGxlbmd0aCkge1xuICByZXR1cm4gbmV3IFVpbnQ4QXJyYXkoYXJyYXlCdWZmZXIsIGJ5dGVPZmZzZXQsIGxlbmd0aClcbn1cblxuZnVuY3Rpb24gaW5jbHVkZXMgKGJ1ZmZlciwgdmFsdWUsIGJ5dGVPZmZzZXQsIGVuY29kaW5nKSB7XG4gIHJldHVybiBpbmRleE9mKGJ1ZmZlciwgdmFsdWUsIGJ5dGVPZmZzZXQsIGVuY29kaW5nKSAhPT0gLTFcbn1cblxuZnVuY3Rpb24gYmlkaXJlY3Rpb25hbEluZGV4T2YgKGJ1ZmZlciwgdmFsdWUsIGJ5dGVPZmZzZXQsIGVuY29kaW5nLCBmaXJzdCkge1xuICBpZiAoYnVmZmVyLmJ5dGVMZW5ndGggPT09IDApIHJldHVybiAtMVxuXG4gIGlmICh0eXBlb2YgYnl0ZU9mZnNldCA9PT0gJ3N0cmluZycpIHtcbiAgICBlbmNvZGluZyA9IGJ5dGVPZmZzZXRcbiAgICBieXRlT2Zmc2V0ID0gMFxuICB9IGVsc2UgaWYgKGJ5dGVPZmZzZXQgPT09IHVuZGVmaW5lZCkge1xuICAgIGJ5dGVPZmZzZXQgPSBmaXJzdCA/IDAgOiAoYnVmZmVyLmxlbmd0aCAtIDEpXG4gIH0gZWxzZSBpZiAoYnl0ZU9mZnNldCA8IDApIHtcbiAgICBieXRlT2Zmc2V0ICs9IGJ1ZmZlci5ieXRlTGVuZ3RoXG4gIH1cblxuICBpZiAoYnl0ZU9mZnNldCA+PSBidWZmZXIuYnl0ZUxlbmd0aCkge1xuICAgIGlmIChmaXJzdCkgcmV0dXJuIC0xXG4gICAgZWxzZSBieXRlT2Zmc2V0ID0gYnVmZmVyLmJ5dGVMZW5ndGggLSAxXG4gIH0gZWxzZSBpZiAoYnl0ZU9mZnNldCA8IDApIHtcbiAgICBpZiAoZmlyc3QpIGJ5dGVPZmZzZXQgPSAwXG4gICAgZWxzZSByZXR1cm4gLTFcbiAgfVxuXG4gIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgdmFsdWUgPSBmcm9tKHZhbHVlLCBlbmNvZGluZylcbiAgfSBlbHNlIGlmICh0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInKSB7XG4gICAgdmFsdWUgPSB2YWx1ZSAmIDB4ZmZcblxuICAgIGlmIChmaXJzdCkge1xuICAgICAgcmV0dXJuIGJ1ZmZlci5pbmRleE9mKHZhbHVlLCBieXRlT2Zmc2V0KVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gYnVmZmVyLmxhc3RJbmRleE9mKHZhbHVlLCBieXRlT2Zmc2V0KVxuICAgIH1cbiAgfVxuXG4gIGlmICh2YWx1ZS5ieXRlTGVuZ3RoID09PSAwKSByZXR1cm4gLTFcblxuICBpZiAoZmlyc3QpIHtcbiAgICBsZXQgZm91bmRJbmRleCA9IC0xXG5cbiAgICBmb3IgKGxldCBpID0gYnl0ZU9mZnNldDsgaSA8IGJ1ZmZlci5ieXRlTGVuZ3RoOyBpKyspIHtcbiAgICAgIGlmIChidWZmZXJbaV0gPT09IHZhbHVlW2ZvdW5kSW5kZXggPT09IC0xID8gMCA6IGkgLSBmb3VuZEluZGV4XSkge1xuICAgICAgICBpZiAoZm91bmRJbmRleCA9PT0gLTEpIGZvdW5kSW5kZXggPSBpXG4gICAgICAgIGlmIChpIC0gZm91bmRJbmRleCArIDEgPT09IHZhbHVlLmJ5dGVMZW5ndGgpIHJldHVybiBmb3VuZEluZGV4XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoZm91bmRJbmRleCAhPT0gLTEpIGkgLT0gaSAtIGZvdW5kSW5kZXhcbiAgICAgICAgZm91bmRJbmRleCA9IC0xXG4gICAgICB9XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGlmIChieXRlT2Zmc2V0ICsgdmFsdWUuYnl0ZUxlbmd0aCA+IGJ1ZmZlci5ieXRlTGVuZ3RoKSB7XG4gICAgICBieXRlT2Zmc2V0ID0gYnVmZmVyLmJ5dGVMZW5ndGggLSB2YWx1ZS5ieXRlTGVuZ3RoXG4gICAgfVxuXG4gICAgZm9yIChsZXQgaSA9IGJ5dGVPZmZzZXQ7IGkgPj0gMDsgaS0tKSB7XG4gICAgICBsZXQgZm91bmQgPSB0cnVlXG5cbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdmFsdWUuYnl0ZUxlbmd0aDsgaisrKSB7XG4gICAgICAgIGlmIChidWZmZXJbaSArIGpdICE9PSB2YWx1ZVtqXSkge1xuICAgICAgICAgIGZvdW5kID0gZmFsc2VcbiAgICAgICAgICBicmVha1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChmb3VuZCkgcmV0dXJuIGlcbiAgICB9XG4gIH1cblxuICByZXR1cm4gLTFcbn1cblxuZnVuY3Rpb24gaW5kZXhPZiAoYnVmZmVyLCB2YWx1ZSwgYnl0ZU9mZnNldCwgZW5jb2RpbmcpIHtcbiAgcmV0dXJuIGJpZGlyZWN0aW9uYWxJbmRleE9mKGJ1ZmZlciwgdmFsdWUsIGJ5dGVPZmZzZXQsIGVuY29kaW5nLCB0cnVlIC8qIGZpcnN0ICovKVxufVxuXG5mdW5jdGlvbiBsYXN0SW5kZXhPZiAoYnVmZmVyLCB2YWx1ZSwgYnl0ZU9mZnNldCwgZW5jb2RpbmcpIHtcbiAgcmV0dXJuIGJpZGlyZWN0aW9uYWxJbmRleE9mKGJ1ZmZlciwgdmFsdWUsIGJ5dGVPZmZzZXQsIGVuY29kaW5nLCBmYWxzZSAvKiBsYXN0ICovKVxufVxuXG5mdW5jdGlvbiBzd2FwIChidWZmZXIsIG4sIG0pIHtcbiAgY29uc3QgaSA9IGJ1ZmZlcltuXVxuICBidWZmZXJbbl0gPSBidWZmZXJbbV1cbiAgYnVmZmVyW21dID0gaVxufVxuXG5mdW5jdGlvbiBzd2FwMTYgKGJ1ZmZlcikge1xuICBjb25zdCBsZW4gPSBidWZmZXIuYnl0ZUxlbmd0aFxuXG4gIGlmIChsZW4gJSAyICE9PSAwKSB0aHJvdyBuZXcgUmFuZ2VFcnJvcignQnVmZmVyIHNpemUgbXVzdCBiZSBhIG11bHRpcGxlIG9mIDE2LWJpdHMnKVxuXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgbGVuOyBpICs9IDIpIHN3YXAoYnVmZmVyLCBpLCBpICsgMSlcblxuICByZXR1cm4gYnVmZmVyXG59XG5cbmZ1bmN0aW9uIHN3YXAzMiAoYnVmZmVyKSB7XG4gIGNvbnN0IGxlbiA9IGJ1ZmZlci5ieXRlTGVuZ3RoXG5cbiAgaWYgKGxlbiAlIDQgIT09IDApIHRocm93IG5ldyBSYW5nZUVycm9yKCdCdWZmZXIgc2l6ZSBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgMzItYml0cycpXG5cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW47IGkgKz0gNCkge1xuICAgIHN3YXAoYnVmZmVyLCBpLCBpICsgMylcbiAgICBzd2FwKGJ1ZmZlciwgaSArIDEsIGkgKyAyKVxuICB9XG5cbiAgcmV0dXJuIGJ1ZmZlclxufVxuXG5mdW5jdGlvbiBzd2FwNjQgKGJ1ZmZlcikge1xuICBjb25zdCBsZW4gPSBidWZmZXIuYnl0ZUxlbmd0aFxuXG4gIGlmIChsZW4gJSA4ICE9PSAwKSB0aHJvdyBuZXcgUmFuZ2VFcnJvcignQnVmZmVyIHNpemUgbXVzdCBiZSBhIG11bHRpcGxlIG9mIDY0LWJpdHMnKVxuXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgbGVuOyBpICs9IDgpIHtcbiAgICBzd2FwKGJ1ZmZlciwgaSwgaSArIDcpXG4gICAgc3dhcChidWZmZXIsIGkgKyAxLCBpICsgNilcbiAgICBzd2FwKGJ1ZmZlciwgaSArIDIsIGkgKyA1KVxuICAgIHN3YXAoYnVmZmVyLCBpICsgMywgaSArIDQpXG4gIH1cblxuICByZXR1cm4gYnVmZmVyXG59XG5cbmZ1bmN0aW9uIHRvQnVmZmVyIChidWZmZXIpIHtcbiAgcmV0dXJuIGJ1ZmZlclxufVxuXG5mdW5jdGlvbiB0b1N0cmluZyAoYnVmZmVyLCBlbmNvZGluZywgc3RhcnQgPSAwLCBlbmQgPSBidWZmZXIuYnl0ZUxlbmd0aCkge1xuICBjb25zdCBsZW4gPSBidWZmZXIuYnl0ZUxlbmd0aFxuXG4gIGlmIChzdGFydCA+PSBsZW4pIHJldHVybiAnJ1xuICBpZiAoZW5kIDw9IHN0YXJ0KSByZXR1cm4gJydcbiAgaWYgKHN0YXJ0IDwgMCkgc3RhcnQgPSAwXG4gIGlmIChlbmQgPiBsZW4pIGVuZCA9IGxlblxuXG4gIGlmIChzdGFydCAhPT0gMCB8fCBlbmQgPCBsZW4pIGJ1ZmZlciA9IGJ1ZmZlci5zdWJhcnJheShzdGFydCwgZW5kKVxuXG4gIHJldHVybiBjb2RlY0ZvcihlbmNvZGluZykudG9TdHJpbmcoYnVmZmVyKVxufVxuXG5mdW5jdGlvbiB3cml0ZSAoYnVmZmVyLCBzdHJpbmcsIG9mZnNldCwgbGVuZ3RoLCBlbmNvZGluZykge1xuICAvLyB3cml0ZShidWZmZXIsIHN0cmluZylcbiAgaWYgKG9mZnNldCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgZW5jb2RpbmcgPSAndXRmOCdcblxuICAvLyB3cml0ZShidWZmZXIsIHN0cmluZywgZW5jb2RpbmcpXG4gIH0gZWxzZSBpZiAobGVuZ3RoID09PSB1bmRlZmluZWQgJiYgdHlwZW9mIG9mZnNldCA9PT0gJ3N0cmluZycpIHtcbiAgICBlbmNvZGluZyA9IG9mZnNldFxuICAgIG9mZnNldCA9IHVuZGVmaW5lZFxuXG4gIC8vIHdyaXRlKGJ1ZmZlciwgc3RyaW5nLCBvZmZzZXQsIGVuY29kaW5nKVxuICB9IGVsc2UgaWYgKGVuY29kaW5nID09PSB1bmRlZmluZWQgJiYgdHlwZW9mIGxlbmd0aCA9PT0gJ3N0cmluZycpIHtcbiAgICBlbmNvZGluZyA9IGxlbmd0aFxuICAgIGxlbmd0aCA9IHVuZGVmaW5lZFxuICB9XG5cbiAgcmV0dXJuIGNvZGVjRm9yKGVuY29kaW5nKS53cml0ZShidWZmZXIsIHN0cmluZywgb2Zmc2V0LCBsZW5ndGgpXG59XG5cbmZ1bmN0aW9uIHdyaXRlRG91YmxlTEUgKGJ1ZmZlciwgdmFsdWUsIG9mZnNldCkge1xuICBpZiAob2Zmc2V0ID09PSB1bmRlZmluZWQpIG9mZnNldCA9IDBcblxuICBjb25zdCB2aWV3ID0gbmV3IERhdGFWaWV3KGJ1ZmZlci5idWZmZXIsIGJ1ZmZlci5ieXRlT2Zmc2V0LCBidWZmZXIuYnl0ZUxlbmd0aClcbiAgdmlldy5zZXRGbG9hdDY0KG9mZnNldCwgdmFsdWUsIHRydWUpXG5cbiAgcmV0dXJuIG9mZnNldCArIDhcbn1cblxuZnVuY3Rpb24gd3JpdGVGbG9hdExFIChidWZmZXIsIHZhbHVlLCBvZmZzZXQpIHtcbiAgaWYgKG9mZnNldCA9PT0gdW5kZWZpbmVkKSBvZmZzZXQgPSAwXG5cbiAgY29uc3QgdmlldyA9IG5ldyBEYXRhVmlldyhidWZmZXIuYnVmZmVyLCBidWZmZXIuYnl0ZU9mZnNldCwgYnVmZmVyLmJ5dGVMZW5ndGgpXG4gIHZpZXcuc2V0RmxvYXQzMihvZmZzZXQsIHZhbHVlLCB0cnVlKVxuXG4gIHJldHVybiBvZmZzZXQgKyA0XG59XG5cbmZ1bmN0aW9uIHdyaXRlVUludDMyTEUgKGJ1ZmZlciwgdmFsdWUsIG9mZnNldCkge1xuICBpZiAob2Zmc2V0ID09PSB1bmRlZmluZWQpIG9mZnNldCA9IDBcblxuICBjb25zdCB2aWV3ID0gbmV3IERhdGFWaWV3KGJ1ZmZlci5idWZmZXIsIGJ1ZmZlci5ieXRlT2Zmc2V0LCBidWZmZXIuYnl0ZUxlbmd0aClcbiAgdmlldy5zZXRVaW50MzIob2Zmc2V0LCB2YWx1ZSwgdHJ1ZSlcblxuICByZXR1cm4gb2Zmc2V0ICsgNFxufVxuXG5mdW5jdGlvbiB3cml0ZUludDMyTEUgKGJ1ZmZlciwgdmFsdWUsIG9mZnNldCkge1xuICBpZiAob2Zmc2V0ID09PSB1bmRlZmluZWQpIG9mZnNldCA9IDBcblxuICBjb25zdCB2aWV3ID0gbmV3IERhdGFWaWV3KGJ1ZmZlci5idWZmZXIsIGJ1ZmZlci5ieXRlT2Zmc2V0LCBidWZmZXIuYnl0ZUxlbmd0aClcbiAgdmlldy5zZXRJbnQzMihvZmZzZXQsIHZhbHVlLCB0cnVlKVxuXG4gIHJldHVybiBvZmZzZXQgKyA0XG59XG5cbmZ1bmN0aW9uIHJlYWREb3VibGVMRSAoYnVmZmVyLCBvZmZzZXQpIHtcbiAgaWYgKG9mZnNldCA9PT0gdW5kZWZpbmVkKSBvZmZzZXQgPSAwXG5cbiAgY29uc3QgdmlldyA9IG5ldyBEYXRhVmlldyhidWZmZXIuYnVmZmVyLCBidWZmZXIuYnl0ZU9mZnNldCwgYnVmZmVyLmJ5dGVMZW5ndGgpXG5cbiAgcmV0dXJuIHZpZXcuZ2V0RmxvYXQ2NChvZmZzZXQsIHRydWUpXG59XG5cbmZ1bmN0aW9uIHJlYWRGbG9hdExFIChidWZmZXIsIG9mZnNldCkge1xuICBpZiAob2Zmc2V0ID09PSB1bmRlZmluZWQpIG9mZnNldCA9IDBcblxuICBjb25zdCB2aWV3ID0gbmV3IERhdGFWaWV3KGJ1ZmZlci5idWZmZXIsIGJ1ZmZlci5ieXRlT2Zmc2V0LCBidWZmZXIuYnl0ZUxlbmd0aClcblxuICByZXR1cm4gdmlldy5nZXRGbG9hdDMyKG9mZnNldCwgdHJ1ZSlcbn1cblxuZnVuY3Rpb24gcmVhZFVJbnQzMkxFIChidWZmZXIsIG9mZnNldCkge1xuICBpZiAob2Zmc2V0ID09PSB1bmRlZmluZWQpIG9mZnNldCA9IDBcblxuICBjb25zdCB2aWV3ID0gbmV3IERhdGFWaWV3KGJ1ZmZlci5idWZmZXIsIGJ1ZmZlci5ieXRlT2Zmc2V0LCBidWZmZXIuYnl0ZUxlbmd0aClcblxuICByZXR1cm4gdmlldy5nZXRVaW50MzIob2Zmc2V0LCB0cnVlKVxufVxuXG5mdW5jdGlvbiByZWFkSW50MzJMRSAoYnVmZmVyLCBvZmZzZXQpIHtcbiAgaWYgKG9mZnNldCA9PT0gdW5kZWZpbmVkKSBvZmZzZXQgPSAwXG5cbiAgY29uc3QgdmlldyA9IG5ldyBEYXRhVmlldyhidWZmZXIuYnVmZmVyLCBidWZmZXIuYnl0ZU9mZnNldCwgYnVmZmVyLmJ5dGVMZW5ndGgpXG5cbiAgcmV0dXJuIHZpZXcuZ2V0SW50MzIob2Zmc2V0LCB0cnVlKVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHMgPSB7XG4gIGlzQnVmZmVyLFxuICBpc0VuY29kaW5nLFxuICBhbGxvYyxcbiAgYWxsb2NVbnNhZmUsXG4gIGFsbG9jVW5zYWZlU2xvdyxcbiAgYnl0ZUxlbmd0aCxcbiAgY29tcGFyZSxcbiAgY29uY2F0LFxuICBjb3B5LFxuICBlcXVhbHMsXG4gIGZpbGwsXG4gIGZyb20sXG4gIGluY2x1ZGVzLFxuICBpbmRleE9mLFxuICBsYXN0SW5kZXhPZixcbiAgc3dhcDE2LFxuICBzd2FwMzIsXG4gIHN3YXA2NCxcbiAgdG9CdWZmZXIsXG4gIHRvU3RyaW5nLFxuICB3cml0ZSxcbiAgd3JpdGVEb3VibGVMRSxcbiAgd3JpdGVGbG9hdExFLFxuICB3cml0ZVVJbnQzMkxFLFxuICB3cml0ZUludDMyTEUsXG4gIHJlYWREb3VibGVMRSxcbiAgcmVhZEZsb2F0TEUsXG4gIHJlYWRVSW50MzJMRSxcbiAgcmVhZEludDMyTEVcbn1cbiIsInZhciBfX2NvbW1vbkpTID0gKGNiLCBtb2QpID0+IGZ1bmN0aW9uIF9fcmVxdWlyZSgpIHtcbiAgcmV0dXJuIG1vZCB8fCAoMCwgY2JbT2JqZWN0LmtleXMoY2IpWzBdXSkoKG1vZCA9IHsgZXhwb3J0czoge30gfSkuZXhwb3J0cywgbW9kKSwgbW9kLmV4cG9ydHM7XG59O1xudmFyIF9fdG9CaW5hcnkgPSAvKiBAX19QVVJFX18gKi8gKCgpID0+IHtcbiAgdmFyIHRhYmxlID0gbmV3IFVpbnQ4QXJyYXkoMTI4KTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCA2NDsgaSsrKVxuICAgIHRhYmxlW2kgPCAyNiA/IGkgKyA2NSA6IGkgPCA1MiA/IGkgKyA3MSA6IGkgPCA2MiA/IGkgLSA0IDogaSAqIDQgLSAyMDVdID0gaTtcbiAgcmV0dXJuIChiYXNlNjQpID0+IHtcbiAgICB2YXIgbiA9IGJhc2U2NC5sZW5ndGgsIGJ5dGVzMiA9IG5ldyBVaW50OEFycmF5KChuIC0gKGJhc2U2NFtuIC0gMV0gPT0gXCI9XCIpIC0gKGJhc2U2NFtuIC0gMl0gPT0gXCI9XCIpKSAqIDMgLyA0IHwgMCk7XG4gICAgZm9yICh2YXIgaTIgPSAwLCBqID0gMDsgaTIgPCBuOyApIHtcbiAgICAgIHZhciBjMCA9IHRhYmxlW2Jhc2U2NC5jaGFyQ29kZUF0KGkyKyspXSwgYzEgPSB0YWJsZVtiYXNlNjQuY2hhckNvZGVBdChpMisrKV07XG4gICAgICB2YXIgYzIgPSB0YWJsZVtiYXNlNjQuY2hhckNvZGVBdChpMisrKV0sIGMzID0gdGFibGVbYmFzZTY0LmNoYXJDb2RlQXQoaTIrKyldO1xuICAgICAgYnl0ZXMyW2orK10gPSBjMCA8PCAyIHwgYzEgPj4gNDtcbiAgICAgIGJ5dGVzMltqKytdID0gYzEgPDwgNCB8IGMyID4+IDI7XG4gICAgICBieXRlczJbaisrXSA9IGMyIDw8IDYgfCBjMztcbiAgICB9XG4gICAgcmV0dXJuIGJ5dGVzMjtcbiAgfTtcbn0pKCk7XG5cbi8vIHdhc20tYmluYXJ5Oi4vYmxha2UyYi53YXRcbnZhciByZXF1aXJlX2JsYWtlMmIgPSBfX2NvbW1vbkpTKHtcbiAgXCJ3YXNtLWJpbmFyeTouL2JsYWtlMmIud2F0XCIoZXhwb3J0czIsIG1vZHVsZTIpIHtcbiAgICBtb2R1bGUyLmV4cG9ydHMgPSBfX3RvQmluYXJ5KFwiQUdGemJRRUFBQUFCRUFOZ0FuOS9BR0FEZjM5L0FHQUJmd0FEQlFRQUFRSUNCUVVCQVFyb0J3ZE5CUVp0WlcxdmNua0NBQXhpYkdGclpUSmlYMmx1YVhRQUFBNWliR0ZyWlRKaVgzVndaR0YwWlFBQkRXSnNZV3RsTW1KZlptbHVZV3dBQWhCaWJHRnJaVEppWDJOdmJYQnlaWE56QUFNS3Z6OEV3QUlBSUFCQ0FEY0RBQ0FBUWdBM0F3Z2dBRUlBTndNUUlBQkNBRGNER0NBQVFnQTNBeUFnQUVJQU53TW9JQUJDQURjRE1DQUFRZ0EzQXpnZ0FFSUFOd05BSUFCQ0FEY0RTQ0FBUWdBM0ExQWdBRUlBTndOWUlBQkNBRGNEWUNBQVFnQTNBMmdnQUVJQU53TndJQUJDQURjRGVDQUFRb2lTODUzL3pQbUU2Z0JCQUNrREFJVTNBNEFCSUFCQ3U4NnFwdGpRNjdPN2YwRUlLUU1BaFRjRGlBRWdBRUtyOE5QMHIrNjh0enhCRUNrREFJVTNBNUFCSUFCQzhlMzArS1duL2FlbGYwRVlLUU1BaFRjRG1BRWdBRUxSaFpyditzK1VoOUVBUVNBcEF3Q0ZOd09nQVNBQVFwL1krZG5Da2RxQ20zOUJLQ2tEQUlVM0E2Z0JJQUJDNi9xRzJyKzE5c0VmUVRBcEF3Q0ZOd093QVNBQVF2bkMrSnVSbzdQdzJ3QkJPQ2tEQUlVM0E3Z0JJQUJDQURjRHdBRWdBRUlBTndQSUFTQUFRZ0EzQTlBQkMyMEJBMzhnQUVIQUFXb2hBeUFBUWNnQmFpRUVJQVFwQXdDbklRVUNRQU5BSUFFZ0FrWU5BU0FGUVlBQlJnUkFJQU1nQXlrREFDQUZyWHczQXdCQkFDRUZJQUFRQXdzZ0FDQUZhaUFCTFFBQU9nQUFJQVZCQVdvaEJTQUJRUUZxSVFFTUFBc0xJQVFnQmEwM0F3QUxZUUVEZnlBQVFjQUJhaUVCSUFCQnlBRnFJUUlnQVNBQktRTUFJQUlwQXdCOE53TUFJQUJDZnpjRDBBRWdBaWtEQUtjaEF3SkFBMEFnQTBHQUFVWU5BU0FBSUFOcVFRQTZBQUFnQTBFQmFpRUREQUFMQ3lBQ0lBT3ROd01BSUFBUUF3dXFPd0lnZmdsL0lBQkJnQUZxSVNFZ0FFR0lBV29oSWlBQVFaQUJhaUVqSUFCQm1BRnFJU1FnQUVHZ0FXb2hKU0FBUWFnQmFpRW1JQUJCc0FGcUlTY2dBRUc0QVdvaEtDQWhLUU1BSVFFZ0lpa0RBQ0VDSUNNcEF3QWhBeUFrS1FNQUlRUWdKU2tEQUNFRklDWXBBd0FoQmlBbktRTUFJUWNnS0NrREFDRUlRb2lTODUzL3pQbUU2Z0FoQ1VLN3pxcW0yTkRyczd0L0lRcENxL0RUOUsvdXZMYzhJUXRDOGUzMCtLV24vYWVsZnlFTVF0R0ZtdS82ejVTSDBRQWhEVUtmMlBuWndwSGFncHQvSVE1QzYvcUcycisxOXNFZklROUMrY0w0bTVHanMvRGJBQ0VRSUFBcEF3QWhFU0FBS1FNSUlSSWdBQ2tERUNFVElBQXBBeGdoRkNBQUtRTWdJUlVnQUNrREtDRVdJQUFwQXpBaEZ5QUFLUU00SVJnZ0FDa0RRQ0VaSUFBcEEwZ2hHaUFBS1FOUUlSc2dBQ2tEV0NFY0lBQXBBMkFoSFNBQUtRTm9JUjRnQUNrRGNDRWZJQUFwQTNnaElDQU5JQUFwQThBQmhTRU5JQThnQUNrRDBBR0ZJUThnQVNBRklCRjhmQ0VCSUEwZ0FZVkNJSW9oRFNBSklBMThJUWtnQlNBSmhVSVlpaUVGSUFFZ0JTQVNmSHdoQVNBTklBR0ZRaENLSVEwZ0NTQU5mQ0VKSUFVZ0NZVkNQNG9oQlNBQ0lBWWdFM3g4SVFJZ0RpQUNoVUlnaWlFT0lBb2dEbndoQ2lBR0lBcUZRaGlLSVFZZ0FpQUdJQlI4ZkNFQ0lBNGdBb1ZDRUlvaERpQUtJQTU4SVFvZ0JpQUtoVUkvaWlFR0lBTWdCeUFWZkh3aEF5QVBJQU9GUWlDS0lROGdDeUFQZkNFTElBY2dDNFZDR0lvaEJ5QURJQWNnRm54OElRTWdEeUFEaFVJUWlpRVBJQXNnRDN3aEN5QUhJQXVGUWorS0lRY2dCQ0FJSUJkOGZDRUVJQkFnQklWQ0lJb2hFQ0FNSUJCOElRd2dDQ0FNaFVJWWlpRUlJQVFnQ0NBWWZId2hCQ0FRSUFTRlFoQ0tJUkFnRENBUWZDRU1JQWdnRElWQ1A0b2hDQ0FCSUFZZ0dYeDhJUUVnRUNBQmhVSWdpaUVRSUFzZ0VId2hDeUFHSUF1RlFoaUtJUVlnQVNBR0lCcDhmQ0VCSUJBZ0FZVkNFSW9oRUNBTElCQjhJUXNnQmlBTGhVSS9paUVHSUFJZ0J5QWJmSHdoQWlBTklBS0ZRaUNLSVEwZ0RDQU5mQ0VNSUFjZ0RJVkNHSW9oQnlBQ0lBY2dISHg4SVFJZ0RTQUNoVUlRaWlFTklBd2dEWHdoRENBSElBeUZRaitLSVFjZ0F5QUlJQjE4ZkNFRElBNGdBNFZDSUlvaERpQUpJQTU4SVFrZ0NDQUpoVUlZaWlFSUlBTWdDQ0FlZkh3aEF5QU9JQU9GUWhDS0lRNGdDU0FPZkNFSklBZ2dDWVZDUDRvaENDQUVJQVVnSDN4OElRUWdEeUFFaFVJZ2lpRVBJQW9nRDN3aENpQUZJQXFGUWhpS0lRVWdCQ0FGSUNCOGZDRUVJQThnQklWQ0VJb2hEeUFLSUE5OElRb2dCU0FLaFVJL2lpRUZJQUVnQlNBZmZId2hBU0FOSUFHRlFpQ0tJUTBnQ1NBTmZDRUpJQVVnQ1lWQ0dJb2hCU0FCSUFVZ0czeDhJUUVnRFNBQmhVSVFpaUVOSUFrZ0RYd2hDU0FGSUFtRlFqK0tJUVVnQWlBR0lCVjhmQ0VDSUE0Z0FvVkNJSW9oRGlBS0lBNThJUW9nQmlBS2hVSVlpaUVHSUFJZ0JpQVpmSHdoQWlBT0lBS0ZRaENLSVE0Z0NpQU9mQ0VLSUFZZ0NvVkNQNG9oQmlBRElBY2dHbng4SVFNZ0R5QURoVUlnaWlFUElBc2dEM3doQ3lBSElBdUZRaGlLSVFjZ0F5QUhJQ0I4ZkNFRElBOGdBNFZDRUlvaER5QUxJQTk4SVFzZ0J5QUxoVUkvaWlFSElBUWdDQ0FlZkh3aEJDQVFJQVNGUWlDS0lSQWdEQ0FRZkNFTUlBZ2dESVZDR0lvaENDQUVJQWdnRjN4OElRUWdFQ0FFaFVJUWlpRVFJQXdnRUh3aERDQUlJQXlGUWorS0lRZ2dBU0FHSUJKOGZDRUJJQkFnQVlWQ0lJb2hFQ0FMSUJCOElRc2dCaUFMaFVJWWlpRUdJQUVnQmlBZGZId2hBU0FRSUFHRlFoQ0tJUkFnQ3lBUWZDRUxJQVlnQzRWQ1A0b2hCaUFDSUFjZ0VYeDhJUUlnRFNBQ2hVSWdpaUVOSUF3Z0RYd2hEQ0FISUF5RlFoaUtJUWNnQWlBSElCTjhmQ0VDSUEwZ0FvVkNFSW9oRFNBTUlBMThJUXdnQnlBTWhVSS9paUVISUFNZ0NDQWNmSHdoQXlBT0lBT0ZRaUNLSVE0Z0NTQU9mQ0VKSUFnZ0NZVkNHSW9oQ0NBRElBZ2dHSHg4SVFNZ0RpQURoVUlRaWlFT0lBa2dEbndoQ1NBSUlBbUZRaitLSVFnZ0JDQUZJQlo4ZkNFRUlBOGdCSVZDSUlvaER5QUtJQTk4SVFvZ0JTQUtoVUlZaWlFRklBUWdCU0FVZkh3aEJDQVBJQVNGUWhDS0lROGdDaUFQZkNFS0lBVWdDb1ZDUDRvaEJTQUJJQVVnSEh4OElRRWdEU0FCaFVJZ2lpRU5JQWtnRFh3aENTQUZJQW1GUWhpS0lRVWdBU0FGSUJsOGZDRUJJQTBnQVlWQ0VJb2hEU0FKSUExOElRa2dCU0FKaFVJL2lpRUZJQUlnQmlBZGZId2hBaUFPSUFLRlFpQ0tJUTRnQ2lBT2ZDRUtJQVlnQ29WQ0dJb2hCaUFDSUFZZ0VYeDhJUUlnRGlBQ2hVSVFpaUVPSUFvZ0Rud2hDaUFHSUFxRlFqK0tJUVlnQXlBSElCWjhmQ0VESUE4Z0E0VkNJSW9oRHlBTElBOThJUXNnQnlBTGhVSVlpaUVISUFNZ0J5QVRmSHdoQXlBUElBT0ZRaENLSVE4Z0N5QVBmQ0VMSUFjZ0M0VkNQNG9oQnlBRUlBZ2dJSHg4SVFRZ0VDQUVoVUlnaWlFUUlBd2dFSHdoRENBSUlBeUZRaGlLSVFnZ0JDQUlJQjU4ZkNFRUlCQWdCSVZDRUlvaEVDQU1JQkI4SVF3Z0NDQU1oVUkvaWlFSUlBRWdCaUFiZkh3aEFTQVFJQUdGUWlDS0lSQWdDeUFRZkNFTElBWWdDNFZDR0lvaEJpQUJJQVlnSDN4OElRRWdFQ0FCaFVJUWlpRVFJQXNnRUh3aEN5QUdJQXVGUWorS0lRWWdBaUFISUJSOGZDRUNJQTBnQW9WQ0lJb2hEU0FNSUExOElRd2dCeUFNaFVJWWlpRUhJQUlnQnlBWGZId2hBaUFOSUFLRlFoQ0tJUTBnRENBTmZDRU1JQWNnRElWQ1A0b2hCeUFESUFnZ0dIeDhJUU1nRGlBRGhVSWdpaUVPSUFrZ0Rud2hDU0FJSUFtRlFoaUtJUWdnQXlBSUlCSjhmQ0VESUE0Z0E0VkNFSW9oRGlBSklBNThJUWtnQ0NBSmhVSS9paUVJSUFRZ0JTQWFmSHdoQkNBUElBU0ZRaUNLSVE4Z0NpQVBmQ0VLSUFVZ0NvVkNHSW9oQlNBRUlBVWdGWHg4SVFRZ0R5QUVoVUlRaWlFUElBb2dEM3doQ2lBRklBcUZRaitLSVFVZ0FTQUZJQmg4ZkNFQklBMGdBWVZDSUlvaERTQUpJQTE4SVFrZ0JTQUpoVUlZaWlFRklBRWdCU0FhZkh3aEFTQU5JQUdGUWhDS0lRMGdDU0FOZkNFSklBVWdDWVZDUDRvaEJTQUNJQVlnRkh4OElRSWdEaUFDaFVJZ2lpRU9JQW9nRG53aENpQUdJQXFGUWhpS0lRWWdBaUFHSUJKOGZDRUNJQTRnQW9WQ0VJb2hEaUFLSUE1OElRb2dCaUFLaFVJL2lpRUdJQU1nQnlBZWZId2hBeUFQSUFPRlFpQ0tJUThnQ3lBUGZDRUxJQWNnQzRWQ0dJb2hCeUFESUFjZ0hYeDhJUU1nRHlBRGhVSVFpaUVQSUFzZ0Qzd2hDeUFISUF1RlFqK0tJUWNnQkNBSUlCeDhmQ0VFSUJBZ0JJVkNJSW9oRUNBTUlCQjhJUXdnQ0NBTWhVSVlpaUVJSUFRZ0NDQWZmSHdoQkNBUUlBU0ZRaENLSVJBZ0RDQVFmQ0VNSUFnZ0RJVkNQNG9oQ0NBQklBWWdFM3g4SVFFZ0VDQUJoVUlnaWlFUUlBc2dFSHdoQ3lBR0lBdUZRaGlLSVFZZ0FTQUdJQmQ4ZkNFQklCQWdBWVZDRUlvaEVDQUxJQkI4SVFzZ0JpQUxoVUkvaWlFR0lBSWdCeUFXZkh3aEFpQU5JQUtGUWlDS0lRMGdEQ0FOZkNFTUlBY2dESVZDR0lvaEJ5QUNJQWNnRzN4OElRSWdEU0FDaFVJUWlpRU5JQXdnRFh3aERDQUhJQXlGUWorS0lRY2dBeUFJSUJWOGZDRURJQTRnQTRWQ0lJb2hEaUFKSUE1OElRa2dDQ0FKaFVJWWlpRUlJQU1nQ0NBUmZId2hBeUFPSUFPRlFoQ0tJUTRnQ1NBT2ZDRUpJQWdnQ1lWQ1A0b2hDQ0FFSUFVZ0lIeDhJUVFnRHlBRWhVSWdpaUVQSUFvZ0Qzd2hDaUFGSUFxRlFoaUtJUVVnQkNBRklCbDhmQ0VFSUE4Z0JJVkNFSW9oRHlBS0lBOThJUW9nQlNBS2hVSS9paUVGSUFFZ0JTQWFmSHdoQVNBTklBR0ZRaUNLSVEwZ0NTQU5mQ0VKSUFVZ0NZVkNHSW9oQlNBQklBVWdFWHg4SVFFZ0RTQUJoVUlRaWlFTklBa2dEWHdoQ1NBRklBbUZRaitLSVFVZ0FpQUdJQlo4ZkNFQ0lBNGdBb1ZDSUlvaERpQUtJQTU4SVFvZ0JpQUtoVUlZaWlFR0lBSWdCaUFZZkh3aEFpQU9JQUtGUWhDS0lRNGdDaUFPZkNFS0lBWWdDb1ZDUDRvaEJpQURJQWNnRTN4OElRTWdEeUFEaFVJZ2lpRVBJQXNnRDN3aEN5QUhJQXVGUWhpS0lRY2dBeUFISUJWOGZDRURJQThnQTRWQ0VJb2hEeUFMSUE5OElRc2dCeUFMaFVJL2lpRUhJQVFnQ0NBYmZId2hCQ0FRSUFTRlFpQ0tJUkFnRENBUWZDRU1JQWdnRElWQ0dJb2hDQ0FFSUFnZ0lIeDhJUVFnRUNBRWhVSVFpaUVRSUF3Z0VId2hEQ0FJSUF5RlFqK0tJUWdnQVNBR0lCOThmQ0VCSUJBZ0FZVkNJSW9oRUNBTElCQjhJUXNnQmlBTGhVSVlpaUVHSUFFZ0JpQVNmSHdoQVNBUUlBR0ZRaENLSVJBZ0N5QVFmQ0VMSUFZZ0M0VkNQNG9oQmlBQ0lBY2dISHg4SVFJZ0RTQUNoVUlnaWlFTklBd2dEWHdoRENBSElBeUZRaGlLSVFjZ0FpQUhJQjE4ZkNFQ0lBMGdBb1ZDRUlvaERTQU1JQTE4SVF3Z0J5QU1oVUkvaWlFSElBTWdDQ0FYZkh3aEF5QU9JQU9GUWlDS0lRNGdDU0FPZkNFSklBZ2dDWVZDR0lvaENDQURJQWdnR1h4OElRTWdEaUFEaFVJUWlpRU9JQWtnRG53aENTQUlJQW1GUWorS0lRZ2dCQ0FGSUJSOGZDRUVJQThnQklWQ0lJb2hEeUFLSUE5OElRb2dCU0FLaFVJWWlpRUZJQVFnQlNBZWZId2hCQ0FQSUFTRlFoQ0tJUThnQ2lBUGZDRUtJQVVnQ29WQ1A0b2hCU0FCSUFVZ0UzeDhJUUVnRFNBQmhVSWdpaUVOSUFrZ0RYd2hDU0FGSUFtRlFoaUtJUVVnQVNBRklCMThmQ0VCSUEwZ0FZVkNFSW9oRFNBSklBMThJUWtnQlNBSmhVSS9paUVGSUFJZ0JpQVhmSHdoQWlBT0lBS0ZRaUNLSVE0Z0NpQU9mQ0VLSUFZZ0NvVkNHSW9oQmlBQ0lBWWdHM3g4SVFJZ0RpQUNoVUlRaWlFT0lBb2dEbndoQ2lBR0lBcUZRaitLSVFZZ0F5QUhJQkY4ZkNFRElBOGdBNFZDSUlvaER5QUxJQTk4SVFzZ0J5QUxoVUlZaWlFSElBTWdCeUFjZkh3aEF5QVBJQU9GUWhDS0lROGdDeUFQZkNFTElBY2dDNFZDUDRvaEJ5QUVJQWdnR1h4OElRUWdFQ0FFaFVJZ2lpRVFJQXdnRUh3aERDQUlJQXlGUWhpS0lRZ2dCQ0FJSUJSOGZDRUVJQkFnQklWQ0VJb2hFQ0FNSUJCOElRd2dDQ0FNaFVJL2lpRUlJQUVnQmlBVmZId2hBU0FRSUFHRlFpQ0tJUkFnQ3lBUWZDRUxJQVlnQzRWQ0dJb2hCaUFCSUFZZ0hueDhJUUVnRUNBQmhVSVFpaUVRSUFzZ0VId2hDeUFHSUF1RlFqK0tJUVlnQWlBSElCaDhmQ0VDSUEwZ0FvVkNJSW9oRFNBTUlBMThJUXdnQnlBTWhVSVlpaUVISUFJZ0J5QVdmSHdoQWlBTklBS0ZRaENLSVEwZ0RDQU5mQ0VNSUFjZ0RJVkNQNG9oQnlBRElBZ2dJSHg4SVFNZ0RpQURoVUlnaWlFT0lBa2dEbndoQ1NBSUlBbUZRaGlLSVFnZ0F5QUlJQjk4ZkNFRElBNGdBNFZDRUlvaERpQUpJQTU4SVFrZ0NDQUpoVUkvaWlFSUlBUWdCU0FTZkh3aEJDQVBJQVNGUWlDS0lROGdDaUFQZkNFS0lBVWdDb1ZDR0lvaEJTQUVJQVVnR254OElRUWdEeUFFaFVJUWlpRVBJQW9nRDN3aENpQUZJQXFGUWorS0lRVWdBU0FGSUIxOGZDRUJJQTBnQVlWQ0lJb2hEU0FKSUExOElRa2dCU0FKaFVJWWlpRUZJQUVnQlNBV2ZId2hBU0FOSUFHRlFoQ0tJUTBnQ1NBTmZDRUpJQVVnQ1lWQ1A0b2hCU0FDSUFZZ0VueDhJUUlnRGlBQ2hVSWdpaUVPSUFvZ0Rud2hDaUFHSUFxRlFoaUtJUVlnQWlBR0lDQjhmQ0VDSUE0Z0FvVkNFSW9oRGlBS0lBNThJUW9nQmlBS2hVSS9paUVHSUFNZ0J5QWZmSHdoQXlBUElBT0ZRaUNLSVE4Z0N5QVBmQ0VMSUFjZ0M0VkNHSW9oQnlBRElBY2dIbng4SVFNZ0R5QURoVUlRaWlFUElBc2dEM3doQ3lBSElBdUZRaitLSVFjZ0JDQUlJQlY4ZkNFRUlCQWdCSVZDSUlvaEVDQU1JQkI4SVF3Z0NDQU1oVUlZaWlFSUlBUWdDQ0FiZkh3aEJDQVFJQVNGUWhDS0lSQWdEQ0FRZkNFTUlBZ2dESVZDUDRvaENDQUJJQVlnRVh4OElRRWdFQ0FCaFVJZ2lpRVFJQXNnRUh3aEN5QUdJQXVGUWhpS0lRWWdBU0FHSUJoOGZDRUJJQkFnQVlWQ0VJb2hFQ0FMSUJCOElRc2dCaUFMaFVJL2lpRUdJQUlnQnlBWGZId2hBaUFOSUFLRlFpQ0tJUTBnRENBTmZDRU1JQWNnRElWQ0dJb2hCeUFDSUFjZ0ZIeDhJUUlnRFNBQ2hVSVFpaUVOSUF3Z0RYd2hEQ0FISUF5RlFqK0tJUWNnQXlBSUlCcDhmQ0VESUE0Z0E0VkNJSW9oRGlBSklBNThJUWtnQ0NBSmhVSVlpaUVJSUFNZ0NDQVRmSHdoQXlBT0lBT0ZRaENLSVE0Z0NTQU9mQ0VKSUFnZ0NZVkNQNG9oQ0NBRUlBVWdHWHg4SVFRZ0R5QUVoVUlnaWlFUElBb2dEM3doQ2lBRklBcUZRaGlLSVFVZ0JDQUZJQng4ZkNFRUlBOGdCSVZDRUlvaER5QUtJQTk4SVFvZ0JTQUtoVUkvaWlFRklBRWdCU0FlZkh3aEFTQU5JQUdGUWlDS0lRMGdDU0FOZkNFSklBVWdDWVZDR0lvaEJTQUJJQVVnSEh4OElRRWdEU0FCaFVJUWlpRU5JQWtnRFh3aENTQUZJQW1GUWorS0lRVWdBaUFHSUJoOGZDRUNJQTRnQW9WQ0lJb2hEaUFLSUE1OElRb2dCaUFLaFVJWWlpRUdJQUlnQmlBZmZId2hBaUFPSUFLRlFoQ0tJUTRnQ2lBT2ZDRUtJQVlnQ29WQ1A0b2hCaUFESUFjZ0hYeDhJUU1nRHlBRGhVSWdpaUVQSUFzZ0Qzd2hDeUFISUF1RlFoaUtJUWNnQXlBSElCSjhmQ0VESUE4Z0E0VkNFSW9oRHlBTElBOThJUXNnQnlBTGhVSS9paUVISUFRZ0NDQVVmSHdoQkNBUUlBU0ZRaUNLSVJBZ0RDQVFmQ0VNSUFnZ0RJVkNHSW9oQ0NBRUlBZ2dHbng4SVFRZ0VDQUVoVUlRaWlFUUlBd2dFSHdoRENBSUlBeUZRaitLSVFnZ0FTQUdJQlo4ZkNFQklCQWdBWVZDSUlvaEVDQUxJQkI4SVFzZ0JpQUxoVUlZaWlFR0lBRWdCaUFSZkh3aEFTQVFJQUdGUWhDS0lSQWdDeUFRZkNFTElBWWdDNFZDUDRvaEJpQUNJQWNnSUh4OElRSWdEU0FDaFVJZ2lpRU5JQXdnRFh3aERDQUhJQXlGUWhpS0lRY2dBaUFISUJWOGZDRUNJQTBnQW9WQ0VJb2hEU0FNSUExOElRd2dCeUFNaFVJL2lpRUhJQU1nQ0NBWmZId2hBeUFPSUFPRlFpQ0tJUTRnQ1NBT2ZDRUpJQWdnQ1lWQ0dJb2hDQ0FESUFnZ0YzeDhJUU1nRGlBRGhVSVFpaUVPSUFrZ0Rud2hDU0FJSUFtRlFqK0tJUWdnQkNBRklCTjhmQ0VFSUE4Z0JJVkNJSW9oRHlBS0lBOThJUW9nQlNBS2hVSVlpaUVGSUFRZ0JTQWJmSHdoQkNBUElBU0ZRaENLSVE4Z0NpQVBmQ0VLSUFVZ0NvVkNQNG9oQlNBQklBVWdGM3g4SVFFZ0RTQUJoVUlnaWlFTklBa2dEWHdoQ1NBRklBbUZRaGlLSVFVZ0FTQUZJQ0I4ZkNFQklBMGdBWVZDRUlvaERTQUpJQTE4SVFrZ0JTQUpoVUkvaWlFRklBSWdCaUFmZkh3aEFpQU9JQUtGUWlDS0lRNGdDaUFPZkNFS0lBWWdDb1ZDR0lvaEJpQUNJQVlnR254OElRSWdEaUFDaFVJUWlpRU9JQW9nRG53aENpQUdJQXFGUWorS0lRWWdBeUFISUJ4OGZDRURJQThnQTRWQ0lJb2hEeUFMSUE5OElRc2dCeUFMaFVJWWlpRUhJQU1nQnlBVWZId2hBeUFQSUFPRlFoQ0tJUThnQ3lBUGZDRUxJQWNnQzRWQ1A0b2hCeUFFSUFnZ0VYeDhJUVFnRUNBRWhVSWdpaUVRSUF3Z0VId2hEQ0FJSUF5RlFoaUtJUWdnQkNBSUlCbDhmQ0VFSUJBZ0JJVkNFSW9oRUNBTUlCQjhJUXdnQ0NBTWhVSS9paUVJSUFFZ0JpQWRmSHdoQVNBUUlBR0ZRaUNLSVJBZ0N5QVFmQ0VMSUFZZ0M0VkNHSW9oQmlBQklBWWdFM3g4SVFFZ0VDQUJoVUlRaWlFUUlBc2dFSHdoQ3lBR0lBdUZRaitLSVFZZ0FpQUhJQjU4ZkNFQ0lBMGdBb1ZDSUlvaERTQU1JQTE4SVF3Z0J5QU1oVUlZaWlFSElBSWdCeUFZZkh3aEFpQU5JQUtGUWhDS0lRMGdEQ0FOZkNFTUlBY2dESVZDUDRvaEJ5QURJQWdnRW54OElRTWdEaUFEaFVJZ2lpRU9JQWtnRG53aENTQUlJQW1GUWhpS0lRZ2dBeUFJSUJWOGZDRURJQTRnQTRWQ0VJb2hEaUFKSUE1OElRa2dDQ0FKaFVJL2lpRUlJQVFnQlNBYmZId2hCQ0FQSUFTRlFpQ0tJUThnQ2lBUGZDRUtJQVVnQ29WQ0dJb2hCU0FFSUFVZ0ZueDhJUVFnRHlBRWhVSVFpaUVQSUFvZ0Qzd2hDaUFGSUFxRlFqK0tJUVVnQVNBRklCdDhmQ0VCSUEwZ0FZVkNJSW9oRFNBSklBMThJUWtnQlNBSmhVSVlpaUVGSUFFZ0JTQVRmSHdoQVNBTklBR0ZRaENLSVEwZ0NTQU5mQ0VKSUFVZ0NZVkNQNG9oQlNBQ0lBWWdHWHg4SVFJZ0RpQUNoVUlnaWlFT0lBb2dEbndoQ2lBR0lBcUZRaGlLSVFZZ0FpQUdJQlY4ZkNFQ0lBNGdBb1ZDRUlvaERpQUtJQTU4SVFvZ0JpQUtoVUkvaWlFR0lBTWdCeUFZZkh3aEF5QVBJQU9GUWlDS0lROGdDeUFQZkNFTElBY2dDNFZDR0lvaEJ5QURJQWNnRjN4OElRTWdEeUFEaFVJUWlpRVBJQXNnRDN3aEN5QUhJQXVGUWorS0lRY2dCQ0FJSUJKOGZDRUVJQkFnQklWQ0lJb2hFQ0FNSUJCOElRd2dDQ0FNaFVJWWlpRUlJQVFnQ0NBV2ZId2hCQ0FRSUFTRlFoQ0tJUkFnRENBUWZDRU1JQWdnRElWQ1A0b2hDQ0FCSUFZZ0lIeDhJUUVnRUNBQmhVSWdpaUVRSUFzZ0VId2hDeUFHSUF1RlFoaUtJUVlnQVNBR0lCeDhmQ0VCSUJBZ0FZVkNFSW9oRUNBTElCQjhJUXNnQmlBTGhVSS9paUVHSUFJZ0J5QWFmSHdoQWlBTklBS0ZRaUNLSVEwZ0RDQU5mQ0VNSUFjZ0RJVkNHSW9oQnlBQ0lBY2dIM3g4SVFJZ0RTQUNoVUlRaWlFTklBd2dEWHdoRENBSElBeUZRaitLSVFjZ0F5QUlJQlI4ZkNFRElBNGdBNFZDSUlvaERpQUpJQTU4SVFrZ0NDQUpoVUlZaWlFSUlBTWdDQ0FkZkh3aEF5QU9JQU9GUWhDS0lRNGdDU0FPZkNFSklBZ2dDWVZDUDRvaENDQUVJQVVnSG54OElRUWdEeUFFaFVJZ2lpRVBJQW9nRDN3aENpQUZJQXFGUWhpS0lRVWdCQ0FGSUJGOGZDRUVJQThnQklWQ0VJb2hEeUFLSUE5OElRb2dCU0FLaFVJL2lpRUZJQUVnQlNBUmZId2hBU0FOSUFHRlFpQ0tJUTBnQ1NBTmZDRUpJQVVnQ1lWQ0dJb2hCU0FCSUFVZ0VueDhJUUVnRFNBQmhVSVFpaUVOSUFrZ0RYd2hDU0FGSUFtRlFqK0tJUVVnQWlBR0lCTjhmQ0VDSUE0Z0FvVkNJSW9oRGlBS0lBNThJUW9nQmlBS2hVSVlpaUVHSUFJZ0JpQVVmSHdoQWlBT0lBS0ZRaENLSVE0Z0NpQU9mQ0VLSUFZZ0NvVkNQNG9oQmlBRElBY2dGWHg4SVFNZ0R5QURoVUlnaWlFUElBc2dEM3doQ3lBSElBdUZRaGlLSVFjZ0F5QUhJQlo4ZkNFRElBOGdBNFZDRUlvaER5QUxJQTk4SVFzZ0J5QUxoVUkvaWlFSElBUWdDQ0FYZkh3aEJDQVFJQVNGUWlDS0lSQWdEQ0FRZkNFTUlBZ2dESVZDR0lvaENDQUVJQWdnR0h4OElRUWdFQ0FFaFVJUWlpRVFJQXdnRUh3aERDQUlJQXlGUWorS0lRZ2dBU0FHSUJsOGZDRUJJQkFnQVlWQ0lJb2hFQ0FMSUJCOElRc2dCaUFMaFVJWWlpRUdJQUVnQmlBYWZId2hBU0FRSUFHRlFoQ0tJUkFnQ3lBUWZDRUxJQVlnQzRWQ1A0b2hCaUFDSUFjZ0czeDhJUUlnRFNBQ2hVSWdpaUVOSUF3Z0RYd2hEQ0FISUF5RlFoaUtJUWNnQWlBSElCeDhmQ0VDSUEwZ0FvVkNFSW9oRFNBTUlBMThJUXdnQnlBTWhVSS9paUVISUFNZ0NDQWRmSHdoQXlBT0lBT0ZRaUNLSVE0Z0NTQU9mQ0VKSUFnZ0NZVkNHSW9oQ0NBRElBZ2dIbng4SVFNZ0RpQURoVUlRaWlFT0lBa2dEbndoQ1NBSUlBbUZRaitLSVFnZ0JDQUZJQjk4ZkNFRUlBOGdCSVZDSUlvaER5QUtJQTk4SVFvZ0JTQUtoVUlZaWlFRklBUWdCU0FnZkh3aEJDQVBJQVNGUWhDS0lROGdDaUFQZkNFS0lBVWdDb1ZDUDRvaEJTQUJJQVVnSDN4OElRRWdEU0FCaFVJZ2lpRU5JQWtnRFh3aENTQUZJQW1GUWhpS0lRVWdBU0FGSUJ0OGZDRUJJQTBnQVlWQ0VJb2hEU0FKSUExOElRa2dCU0FKaFVJL2lpRUZJQUlnQmlBVmZId2hBaUFPSUFLRlFpQ0tJUTRnQ2lBT2ZDRUtJQVlnQ29WQ0dJb2hCaUFDSUFZZ0dYeDhJUUlnRGlBQ2hVSVFpaUVPSUFvZ0Rud2hDaUFHSUFxRlFqK0tJUVlnQXlBSElCcDhmQ0VESUE4Z0E0VkNJSW9oRHlBTElBOThJUXNnQnlBTGhVSVlpaUVISUFNZ0J5QWdmSHdoQXlBUElBT0ZRaENLSVE4Z0N5QVBmQ0VMSUFjZ0M0VkNQNG9oQnlBRUlBZ2dIbng4SVFRZ0VDQUVoVUlnaWlFUUlBd2dFSHdoRENBSUlBeUZRaGlLSVFnZ0JDQUlJQmQ4ZkNFRUlCQWdCSVZDRUlvaEVDQU1JQkI4SVF3Z0NDQU1oVUkvaWlFSUlBRWdCaUFTZkh3aEFTQVFJQUdGUWlDS0lSQWdDeUFRZkNFTElBWWdDNFZDR0lvaEJpQUJJQVlnSFh4OElRRWdFQ0FCaFVJUWlpRVFJQXNnRUh3aEN5QUdJQXVGUWorS0lRWWdBaUFISUJGOGZDRUNJQTBnQW9WQ0lJb2hEU0FNSUExOElRd2dCeUFNaFVJWWlpRUhJQUlnQnlBVGZId2hBaUFOSUFLRlFoQ0tJUTBnRENBTmZDRU1JQWNnRElWQ1A0b2hCeUFESUFnZ0hIeDhJUU1nRGlBRGhVSWdpaUVPSUFrZ0Rud2hDU0FJSUFtRlFoaUtJUWdnQXlBSUlCaDhmQ0VESUE0Z0E0VkNFSW9oRGlBSklBNThJUWtnQ0NBSmhVSS9paUVJSUFRZ0JTQVdmSHdoQkNBUElBU0ZRaUNLSVE4Z0NpQVBmQ0VLSUFVZ0NvVkNHSW9oQlNBRUlBVWdGSHg4SVFRZ0R5QUVoVUlRaWlFUElBb2dEM3doQ2lBRklBcUZRaitLSVFVZ0lTQWhLUU1BSUFFZ0NZV0ZOd01BSUNJZ0lpa0RBQ0FDSUFxRmhUY0RBQ0FqSUNNcEF3QWdBeUFMaFlVM0F3QWdKQ0FrS1FNQUlBUWdESVdGTndNQUlDVWdKU2tEQUNBRklBMkZoVGNEQUNBbUlDWXBBd0FnQmlBT2hZVTNBd0FnSnlBbktRTUFJQWNnRDRXRk53TUFJQ2dnS0NrREFDQUlJQkNGaFRjREFBcz1cIik7XG4gIH1cbn0pO1xuXG4vLyB3YXNtLW1vZHVsZTouL2JsYWtlMmIud2F0XG52YXIgYnl0ZXMgPSByZXF1aXJlX2JsYWtlMmIoKTtcbnZhciBjb21waWxlZCA9IFdlYkFzc2VtYmx5LmNvbXBpbGUoYnl0ZXMpO1xubW9kdWxlLmV4cG9ydHMgPSBhc3luYyAoaW1wb3J0cykgPT4ge1xuICBjb25zdCBpbnN0YW5jZSA9IGF3YWl0IFdlYkFzc2VtYmx5Lmluc3RhbnRpYXRlKGF3YWl0IGNvbXBpbGVkLCBpbXBvcnRzKTtcbiAgcmV0dXJuIGluc3RhbmNlLmV4cG9ydHM7XG59O1xuIiwidmFyIGFzc2VydCA9IHJlcXVpcmUoJ25hbm9hc3NlcnQnKVxudmFyIGI0YSA9IHJlcXVpcmUoJ2I0YScpXG5cbnZhciB3YXNtID0gbnVsbFxudmFyIHdhc21Qcm9taXNlID0gdHlwZW9mIFdlYkFzc2VtYmx5ICE9PSBcInVuZGVmaW5lZFwiICYmIHJlcXVpcmUoJy4vYmxha2UyYicpKCkudGhlbihtb2QgPT4ge1xuICB3YXNtID0gbW9kXG59KVxuXG52YXIgaGVhZCA9IDY0XG52YXIgZnJlZUxpc3QgPSBbXVxuXG5tb2R1bGUuZXhwb3J0cyA9IEJsYWtlMmJcbnZhciBCWVRFU19NSU4gPSBtb2R1bGUuZXhwb3J0cy5CWVRFU19NSU4gPSAxNlxudmFyIEJZVEVTX01BWCA9IG1vZHVsZS5leHBvcnRzLkJZVEVTX01BWCA9IDY0XG52YXIgQllURVMgPSBtb2R1bGUuZXhwb3J0cy5CWVRFUyA9IDMyXG52YXIgS0VZQllURVNfTUlOID0gbW9kdWxlLmV4cG9ydHMuS0VZQllURVNfTUlOID0gMTZcbnZhciBLRVlCWVRFU19NQVggPSBtb2R1bGUuZXhwb3J0cy5LRVlCWVRFU19NQVggPSA2NFxudmFyIEtFWUJZVEVTID0gbW9kdWxlLmV4cG9ydHMuS0VZQllURVMgPSAzMlxudmFyIFNBTFRCWVRFUyA9IG1vZHVsZS5leHBvcnRzLlNBTFRCWVRFUyA9IDE2XG52YXIgUEVSU09OQUxCWVRFUyA9IG1vZHVsZS5leHBvcnRzLlBFUlNPTkFMQllURVMgPSAxNlxuXG5mdW5jdGlvbiBCbGFrZTJiIChkaWdlc3RMZW5ndGgsIGtleSwgc2FsdCwgcGVyc29uYWwsIG5vQXNzZXJ0KSB7XG4gIGlmICghKHRoaXMgaW5zdGFuY2VvZiBCbGFrZTJiKSkgcmV0dXJuIG5ldyBCbGFrZTJiKGRpZ2VzdExlbmd0aCwga2V5LCBzYWx0LCBwZXJzb25hbCwgbm9Bc3NlcnQpXG4gIGlmICghd2FzbSkgdGhyb3cgbmV3IEVycm9yKCdXQVNNIG5vdCBsb2FkZWQuIFdhaXQgZm9yIEJsYWtlMmIucmVhZHkoY2IpJylcbiAgaWYgKCFkaWdlc3RMZW5ndGgpIGRpZ2VzdExlbmd0aCA9IDMyXG5cbiAgaWYgKG5vQXNzZXJ0ICE9PSB0cnVlKSB7XG4gICAgYXNzZXJ0KGRpZ2VzdExlbmd0aCA+PSBCWVRFU19NSU4sICdkaWdlc3RMZW5ndGggbXVzdCBiZSBhdCBsZWFzdCAnICsgQllURVNfTUlOICsgJywgd2FzIGdpdmVuICcgKyBkaWdlc3RMZW5ndGgpXG4gICAgYXNzZXJ0KGRpZ2VzdExlbmd0aCA8PSBCWVRFU19NQVgsICdkaWdlc3RMZW5ndGggbXVzdCBiZSBhdCBtb3N0ICcgKyBCWVRFU19NQVggKyAnLCB3YXMgZ2l2ZW4gJyArIGRpZ2VzdExlbmd0aClcbiAgICBpZiAoa2V5ICE9IG51bGwpIHtcbiAgICAgIGFzc2VydChrZXkgaW5zdGFuY2VvZiBVaW50OEFycmF5LCAna2V5IG11c3QgYmUgVWludDhBcnJheSBvciBCdWZmZXInKVxuICAgICAgYXNzZXJ0KGtleS5sZW5ndGggPj0gS0VZQllURVNfTUlOLCAna2V5IG11c3QgYmUgYXQgbGVhc3QgJyArIEtFWUJZVEVTX01JTiArICcsIHdhcyBnaXZlbiAnICsga2V5Lmxlbmd0aClcbiAgICAgIGFzc2VydChrZXkubGVuZ3RoIDw9IEtFWUJZVEVTX01BWCwgJ2tleSBtdXN0IGJlIGF0IGxlYXN0ICcgKyBLRVlCWVRFU19NQVggKyAnLCB3YXMgZ2l2ZW4gJyArIGtleS5sZW5ndGgpXG4gICAgfVxuICAgIGlmIChzYWx0ICE9IG51bGwpIHtcbiAgICAgIGFzc2VydChzYWx0IGluc3RhbmNlb2YgVWludDhBcnJheSwgJ3NhbHQgbXVzdCBiZSBVaW50OEFycmF5IG9yIEJ1ZmZlcicpXG4gICAgICBhc3NlcnQoc2FsdC5sZW5ndGggPT09IFNBTFRCWVRFUywgJ3NhbHQgbXVzdCBiZSBleGFjdGx5ICcgKyBTQUxUQllURVMgKyAnLCB3YXMgZ2l2ZW4gJyArIHNhbHQubGVuZ3RoKVxuICAgIH1cbiAgICBpZiAocGVyc29uYWwgIT0gbnVsbCkge1xuICAgICAgYXNzZXJ0KHBlcnNvbmFsIGluc3RhbmNlb2YgVWludDhBcnJheSwgJ3BlcnNvbmFsIG11c3QgYmUgVWludDhBcnJheSBvciBCdWZmZXInKVxuICAgICAgYXNzZXJ0KHBlcnNvbmFsLmxlbmd0aCA9PT0gUEVSU09OQUxCWVRFUywgJ3BlcnNvbmFsIG11c3QgYmUgZXhhY3RseSAnICsgUEVSU09OQUxCWVRFUyArICcsIHdhcyBnaXZlbiAnICsgcGVyc29uYWwubGVuZ3RoKVxuICAgIH1cbiAgfVxuXG4gIGlmICghZnJlZUxpc3QubGVuZ3RoKSB7XG4gICAgZnJlZUxpc3QucHVzaChoZWFkKVxuICAgIGhlYWQgKz0gMjE2XG4gIH1cblxuICB0aGlzLmRpZ2VzdExlbmd0aCA9IGRpZ2VzdExlbmd0aFxuICB0aGlzLmZpbmFsaXplZCA9IGZhbHNlXG4gIHRoaXMucG9pbnRlciA9IGZyZWVMaXN0LnBvcCgpXG4gIHRoaXMuX21lbW9yeSA9IG5ldyBVaW50OEFycmF5KHdhc20ubWVtb3J5LmJ1ZmZlcilcblxuICB0aGlzLl9tZW1vcnkuZmlsbCgwLCAwLCA2NClcbiAgdGhpcy5fbWVtb3J5WzBdID0gdGhpcy5kaWdlc3RMZW5ndGhcbiAgdGhpcy5fbWVtb3J5WzFdID0ga2V5ID8ga2V5Lmxlbmd0aCA6IDBcbiAgdGhpcy5fbWVtb3J5WzJdID0gMSAvLyBmYW5vdXRcbiAgdGhpcy5fbWVtb3J5WzNdID0gMSAvLyBkZXB0aFxuXG4gIGlmIChzYWx0KSB0aGlzLl9tZW1vcnkuc2V0KHNhbHQsIDMyKVxuICBpZiAocGVyc29uYWwpIHRoaXMuX21lbW9yeS5zZXQocGVyc29uYWwsIDQ4KVxuXG4gIGlmICh0aGlzLnBvaW50ZXIgKyAyMTYgPiB0aGlzLl9tZW1vcnkubGVuZ3RoKSB0aGlzLl9yZWFsbG9jKHRoaXMucG9pbnRlciArIDIxNikgLy8gd2UgbmVlZCAyMTYgYnl0ZXMgZm9yIHRoZSBzdGF0ZVxuICB3YXNtLmJsYWtlMmJfaW5pdCh0aGlzLnBvaW50ZXIsIHRoaXMuZGlnZXN0TGVuZ3RoKVxuXG4gIGlmIChrZXkpIHtcbiAgICB0aGlzLnVwZGF0ZShrZXkpXG4gICAgdGhpcy5fbWVtb3J5LmZpbGwoMCwgaGVhZCwgaGVhZCArIGtleS5sZW5ndGgpIC8vIHdoaXRlb3V0IGtleVxuICAgIHRoaXMuX21lbW9yeVt0aGlzLnBvaW50ZXIgKyAyMDBdID0gMTI4XG4gIH1cbn1cblxuQmxha2UyYi5wcm90b3R5cGUuX3JlYWxsb2MgPSBmdW5jdGlvbiAoc2l6ZSkge1xuICB3YXNtLm1lbW9yeS5ncm93KE1hdGgubWF4KDAsIE1hdGguY2VpbChNYXRoLmFicyhzaXplIC0gdGhpcy5fbWVtb3J5Lmxlbmd0aCkgLyA2NTUzNikpKVxuICB0aGlzLl9tZW1vcnkgPSBuZXcgVWludDhBcnJheSh3YXNtLm1lbW9yeS5idWZmZXIpXG59XG5cbkJsYWtlMmIucHJvdG90eXBlLnVwZGF0ZSA9IGZ1bmN0aW9uIChpbnB1dCkge1xuICBhc3NlcnQodGhpcy5maW5hbGl6ZWQgPT09IGZhbHNlLCAnSGFzaCBpbnN0YW5jZSBmaW5hbGl6ZWQnKVxuICBhc3NlcnQoaW5wdXQgaW5zdGFuY2VvZiBVaW50OEFycmF5LCAnaW5wdXQgbXVzdCBiZSBVaW50OEFycmF5IG9yIEJ1ZmZlcicpXG5cbiAgaWYgKGhlYWQgKyBpbnB1dC5sZW5ndGggPiB0aGlzLl9tZW1vcnkubGVuZ3RoKSB0aGlzLl9yZWFsbG9jKGhlYWQgKyBpbnB1dC5sZW5ndGgpXG4gIHRoaXMuX21lbW9yeS5zZXQoaW5wdXQsIGhlYWQpXG4gIHdhc20uYmxha2UyYl91cGRhdGUodGhpcy5wb2ludGVyLCBoZWFkLCBoZWFkICsgaW5wdXQubGVuZ3RoKVxuICByZXR1cm4gdGhpc1xufVxuXG5CbGFrZTJiLnByb3RvdHlwZS5kaWdlc3QgPSBmdW5jdGlvbiAoZW5jKSB7XG4gIGFzc2VydCh0aGlzLmZpbmFsaXplZCA9PT0gZmFsc2UsICdIYXNoIGluc3RhbmNlIGZpbmFsaXplZCcpXG4gIHRoaXMuZmluYWxpemVkID0gdHJ1ZVxuXG4gIGZyZWVMaXN0LnB1c2godGhpcy5wb2ludGVyKVxuICB3YXNtLmJsYWtlMmJfZmluYWwodGhpcy5wb2ludGVyKVxuXG4gIGlmICghZW5jIHx8IGVuYyA9PT0gJ2JpbmFyeScpIHtcbiAgICByZXR1cm4gdGhpcy5fbWVtb3J5LnNsaWNlKHRoaXMucG9pbnRlciArIDEyOCwgdGhpcy5wb2ludGVyICsgMTI4ICsgdGhpcy5kaWdlc3RMZW5ndGgpXG4gIH1cblxuICBpZiAodHlwZW9mIGVuYyA9PT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gYjRhLnRvU3RyaW5nKHRoaXMuX21lbW9yeSwgZW5jLCB0aGlzLnBvaW50ZXIgKyAxMjgsIHRoaXMucG9pbnRlciArIDEyOCArIHRoaXMuZGlnZXN0TGVuZ3RoKVxuICB9XG5cbiAgYXNzZXJ0KGVuYyBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkgJiYgZW5jLmxlbmd0aCA+PSB0aGlzLmRpZ2VzdExlbmd0aCwgJ2lucHV0IG11c3QgYmUgVWludDhBcnJheSBvciBCdWZmZXInKVxuICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuZGlnZXN0TGVuZ3RoOyBpKyspIHtcbiAgICBlbmNbaV0gPSB0aGlzLl9tZW1vcnlbdGhpcy5wb2ludGVyICsgMTI4ICsgaV1cbiAgfVxuXG4gIHJldHVybiBlbmNcbn1cblxuLy8gbGlic29kaXVtIGNvbXBhdFxuQmxha2UyYi5wcm90b3R5cGUuZmluYWwgPSBCbGFrZTJiLnByb3RvdHlwZS5kaWdlc3RcblxuQmxha2UyYi5XQVNNID0gd2FzbVxuQmxha2UyYi5TVVBQT1JURUQgPSB0eXBlb2YgV2ViQXNzZW1ibHkgIT09ICd1bmRlZmluZWQnXG5cbkJsYWtlMmIucmVhZHkgPSBmdW5jdGlvbiAoY2IpIHtcbiAgaWYgKCFjYikgY2IgPSBub29wXG4gIGlmICghd2FzbVByb21pc2UpIHJldHVybiBjYihuZXcgRXJyb3IoJ1dlYkFzc2VtYmx5IG5vdCBzdXBwb3J0ZWQnKSlcbiAgcmV0dXJuIHdhc21Qcm9taXNlLnRoZW4oKCkgPT4gY2IoKSwgY2IpXG59XG5cbkJsYWtlMmIucHJvdG90eXBlLnJlYWR5ID0gQmxha2UyYi5yZWFkeVxuXG5CbGFrZTJiLnByb3RvdHlwZS5nZXRQYXJ0aWFsSGFzaCA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIHRoaXMuX21lbW9yeS5zbGljZSh0aGlzLnBvaW50ZXIsIHRoaXMucG9pbnRlciArIDIxNik7XG59XG5cbkJsYWtlMmIucHJvdG90eXBlLnNldFBhcnRpYWxIYXNoID0gZnVuY3Rpb24gKHBoKSB7XG4gIHRoaXMuX21lbW9yeS5zZXQocGgsIHRoaXMucG9pbnRlcik7XG59XG5cbmZ1bmN0aW9uIG5vb3AgKCkge31cbiIsIi8qXG4gICAgQ29weXJpZ2h0IDIwMTggMEtJTVMgYXNzb2NpYXRpb24uXG5cbiAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBzbmFya0pTLlxuXG4gICAgc25hcmtKUyBpcyBhIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXRcbiAgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yXG4gICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cblxuICAgIHNuYXJrSlMgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVRcbiAgICBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFlcbiAgICBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWNcbiAgICBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG5cbiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICAgIGFsb25nIHdpdGggc25hcmtKUy4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cbiovXG5cbi8qIGdsb2JhbCB3aW5kb3cgKi9cbmltcG9ydCBCbGFrZTJiIGZyb20gXCJibGFrZTJiLXdhc21cIjtcbmltcG9ydCByZWFkbGluZSBmcm9tIFwicmVhZGxpbmVcIjtcbmltcG9ydCB7IENoYUNoYSB9IGZyb20gXCJmZmphdmFzY3JpcHRcIjtcbmltcG9ydCBjcnlwdG8gZnJvbSBcImNyeXB0b1wiO1xuXG5jb25zdCBfcmV2VGFibGUgPSBbXTtcbmZvciAobGV0IGk9MDsgaTwyNTY7IGkrKykge1xuICAgIF9yZXZUYWJsZVtpXSA9IF9yZXZTbG93KGksIDgpO1xufVxuXG5mdW5jdGlvbiBfcmV2U2xvdyhpZHgsIGJpdHMpIHtcbiAgICBsZXQgcmVzID0wO1xuICAgIGxldCBhID0gaWR4O1xuICAgIGZvciAobGV0IGk9MDsgaTxiaXRzOyBpKyspIHtcbiAgICAgICAgcmVzIDw8PSAxO1xuICAgICAgICByZXMgPSByZXMgfCAoYSAmMSk7XG4gICAgICAgIGEgPj49MTtcbiAgICB9XG4gICAgcmV0dXJuIHJlcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJpdFJldmVyc2UoaWR4LCBiaXRzKSB7XG4gICAgcmV0dXJuIChcbiAgICAgICAgX3JldlRhYmxlW2lkeCA+Pj4gMjRdIHxcbiAgICAgICAgKF9yZXZUYWJsZVsoaWR4ID4+PiAxNikgJiAweEZGXSA8PCA4KSB8XG4gICAgICAgIChfcmV2VGFibGVbKGlkeCA+Pj4gOCkgJiAweEZGXSA8PCAxNikgfFxuICAgICAgICAoX3JldlRhYmxlW2lkeCAmIDB4RkZdIDw8IDI0KVxuICAgICkgPj4+ICgzMi1iaXRzKTtcbn1cblxuXG5leHBvcnQgZnVuY3Rpb24gbG9nMiggViApXG57XG4gICAgcmV0dXJuKCAoICggViAmIDB4RkZGRjAwMDAgKSAhPT0gMCA/ICggViAmPSAweEZGRkYwMDAwLCAxNiApIDogMCApIHwgKCAoIFYgJiAweEZGMDBGRjAwICkgIT09IDAgPyAoIFYgJj0gMHhGRjAwRkYwMCwgOCApIDogMCApIHwgKCAoIFYgJiAweEYwRjBGMEYwICkgIT09IDAgPyAoIFYgJj0gMHhGMEYwRjBGMCwgNCApIDogMCApIHwgKCAoIFYgJiAweENDQ0NDQ0NDICkgIT09IDAgPyAoIFYgJj0gMHhDQ0NDQ0NDQywgMiApIDogMCApIHwgKCAoIFYgJiAweEFBQUFBQUFBICkgIT09IDAgKSApO1xufVxuXG5cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXRIYXNoKGIsIHRpdGxlKSB7XG4gICAgY29uc3QgYSA9IG5ldyBEYXRhVmlldyhiLmJ1ZmZlciwgYi5ieXRlT2Zmc2V0LCBiLmJ5dGVMZW5ndGgpO1xuICAgIGxldCBTID0gXCJcIjtcbiAgICBmb3IgKGxldCBpPTA7IGk8NDsgaSsrKSB7XG4gICAgICAgIGlmIChpPjApIFMgKz0gXCJcXG5cIjtcbiAgICAgICAgUyArPSBcIlxcdFxcdFwiO1xuICAgICAgICBmb3IgKGxldCBqPTA7IGo8NDsgaisrKSB7XG4gICAgICAgICAgICBpZiAoaj4wKSBTICs9IFwiIFwiO1xuICAgICAgICAgICAgUyArPSBhLmdldFVpbnQzMihpKjE2K2oqNCkudG9TdHJpbmcoMTYpLnBhZFN0YXJ0KDgsIFwiMFwiKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBpZiAodGl0bGUpIFMgPSB0aXRsZSArIFwiXFxuXCIgKyBTO1xuICAgIHJldHVybiBTO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaGFzaElzRXF1YWwoaDEsIGgyKSB7XG4gICAgaWYgKGgxLmJ5dGVMZW5ndGggIT0gaDIuYnl0ZUxlbmd0aCkgcmV0dXJuIGZhbHNlO1xuICAgIHZhciBkdjEgPSBuZXcgSW50OEFycmF5KGgxKTtcbiAgICB2YXIgZHYyID0gbmV3IEludDhBcnJheShoMik7XG4gICAgZm9yICh2YXIgaSA9IDAgOyBpICE9IGgxLmJ5dGVMZW5ndGggOyBpKyspXG4gICAge1xuICAgICAgICBpZiAoZHYxW2ldICE9IGR2MltpXSkgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNsb25lSGFzaGVyKGgpIHtcbiAgICBjb25zdCBwaCA9IGguZ2V0UGFydGlhbEhhc2goKTtcbiAgICBjb25zdCByZXMgPSBCbGFrZTJiKDY0KTtcbiAgICByZXMuc2V0UGFydGlhbEhhc2gocGgpO1xuICAgIHJldHVybiByZXM7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBzYW1lUmF0aW8oY3VydmUsIGcxcywgZzFzeCwgZzJzLCBnMnN4KSB7XG4gICAgaWYgKGN1cnZlLkcxLmlzWmVybyhnMXMpKSByZXR1cm4gZmFsc2U7XG4gICAgaWYgKGN1cnZlLkcxLmlzWmVybyhnMXN4KSkgcmV0dXJuIGZhbHNlO1xuICAgIGlmIChjdXJ2ZS5HMi5pc1plcm8oZzJzKSkgcmV0dXJuIGZhbHNlO1xuICAgIGlmIChjdXJ2ZS5HMi5pc1plcm8oZzJzeCkpIHJldHVybiBmYWxzZTtcbiAgICAvLyByZXR1cm4gY3VydmUuRjEyLmVxKGN1cnZlLnBhaXJpbmcoZzFzLCBnMnN4KSwgY3VydmUucGFpcmluZyhnMXN4LCBnMnMpKTtcbiAgICBjb25zdCByZXMgPSBhd2FpdCBjdXJ2ZS5wYWlyaW5nRXEoZzFzLCBnMnN4LCBjdXJ2ZS5HMS5uZWcoZzFzeCksIGcycyk7XG4gICAgcmV0dXJuIHJlcztcbn1cblxuXG5leHBvcnQgZnVuY3Rpb24gYXNrRW50cm9weSgpIHtcbiAgICBpZiAocHJvY2Vzcy5icm93c2VyKSB7XG4gICAgICAgIHJldHVybiB3aW5kb3cucHJvbXB0KFwiRW50ZXIgYSByYW5kb20gdGV4dC4gKEVudHJvcHkpOiBcIiwgXCJcIik7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgcmwgPSByZWFkbGluZS5jcmVhdGVJbnRlcmZhY2Uoe1xuICAgICAgICAgICAgaW5wdXQ6IHByb2Nlc3Muc3RkaW4sXG4gICAgICAgICAgICBvdXRwdXQ6IHByb2Nlc3Muc3Rkb3V0XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xuICAgICAgICAgICAgcmwucXVlc3Rpb24oXCJFbnRlciBhIHJhbmRvbSB0ZXh0LiAoRW50cm9weSk6IFwiLCAoaW5wdXQpID0+IHJlc29sdmUoaW5wdXQpICk7XG4gICAgICAgIH0pO1xuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFJhbmRvbUJ5dGVzKG4pIHtcbiAgICBsZXQgYXJyYXkgPSBuZXcgVWludDhBcnJheShuKTtcbiAgICBpZiAocHJvY2Vzcy5icm93c2VyKSB7IC8vIFN1cHBvcnRlZFxuICAgICAgICBnbG9iYWxUaGlzLmNyeXB0by5nZXRSYW5kb21WYWx1ZXMoYXJyYXkpO1xuICAgIH0gZWxzZSB7IC8vIE5vZGVKU1xuICAgICAgICBjcnlwdG8ucmFuZG9tRmlsbFN5bmMoYXJyYXkpO1xuICAgIH1cbiAgICByZXR1cm4gYXJyYXk7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBzaGEyNTZkaWdlc3QoZGF0YSkge1xuICAgIGlmIChwcm9jZXNzLmJyb3dzZXIpIHsgLy8gU3VwcG9ydGVkXG4gICAgICAgIGNvbnN0IGJ1ZmZlciA9IGF3YWl0IGdsb2JhbFRoaXMuY3J5cHRvLnN1YnRsZS5kaWdlc3QoXCJTSEEtMjU2XCIsIGRhdGEuYnVmZmVyKTtcbiAgICAgICAgcmV0dXJuIG5ldyBVaW50OEFycmF5KGJ1ZmZlcik7XG4gICAgfSBlbHNlIHsgLy8gTm9kZUpTXG4gICAgICAgIHJldHVybiBjcnlwdG8uY3JlYXRlSGFzaChcInNoYTI1NlwiKS51cGRhdGUoZGF0YSkuZGlnZXN0KCk7XG4gICAgfVxufVxuXG4vKipcbiAqIEBwYXJhbSB7VWludDhBcnJheX0gZGF0YVxuICogQHBhcmFtIHtudW1iZXJ9IG9mZnNldFxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVhZFVJbnQzMkJFKGRhdGEsIG9mZnNldCkge1xuICAgIHJldHVybiBuZXcgRGF0YVZpZXcoZGF0YS5idWZmZXIpLmdldFVpbnQzMihvZmZzZXQsIGZhbHNlKTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldFJhbmRvbVJuZyhlbnRyb3B5KSB7XG4gICAgLy8gR2VuZXJhdGUgYSByYW5kb20gUm5nXG4gICAgd2hpbGUgKCFlbnRyb3B5KSB7XG4gICAgICAgIGVudHJvcHkgPSBhd2FpdCBhc2tFbnRyb3B5KCk7XG4gICAgfVxuICAgIGNvbnN0IGhhc2hlciA9IEJsYWtlMmIoNjQpO1xuICAgIGhhc2hlci51cGRhdGUoZ2V0UmFuZG9tQnl0ZXMoNjQpKTtcbiAgICBjb25zdCBlbmMgPSBuZXcgVGV4dEVuY29kZXIoKTsgLy8gYWx3YXlzIHV0Zi04XG4gICAgaGFzaGVyLnVwZGF0ZShlbmMuZW5jb2RlKGVudHJvcHkpKTtcbiAgICBjb25zdCBoYXNoID0gaGFzaGVyLmRpZ2VzdCgpO1xuXG4gICAgY29uc3Qgc2VlZCA9IFtdO1xuICAgIGZvciAobGV0IGk9MDtpPDg7aSsrKSB7XG4gICAgICAgIHNlZWRbaV0gPSByZWFkVUludDMyQkUoaGFzaCwgaSo0KTtcbiAgICB9XG4gICAgY29uc3Qgcm5nID0gbmV3IENoYUNoYShzZWVkKTtcbiAgICByZXR1cm4gcm5nO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcm5nRnJvbUJlYWNvblBhcmFtcyhiZWFjb25IYXNoLCBudW1JdGVyYXRpb25zRXhwKSB7XG4gICAgbGV0IG5JdGVyYXRpb25zSW5uZXI7XG4gICAgbGV0IG5JdGVyYXRpb25zT3V0ZXI7XG4gICAgaWYgKG51bUl0ZXJhdGlvbnNFeHA8MzIpIHtcbiAgICAgICAgbkl0ZXJhdGlvbnNJbm5lciA9ICgxIDw8IG51bUl0ZXJhdGlvbnNFeHApID4+PiAwO1xuICAgICAgICBuSXRlcmF0aW9uc091dGVyID0gMTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBuSXRlcmF0aW9uc0lubmVyID0gMHgxMDAwMDAwMDA7XG4gICAgICAgIG5JdGVyYXRpb25zT3V0ZXIgPSAoMSA8PCAobnVtSXRlcmF0aW9uc0V4cC0zMikpID4+PiAwO1xuICAgIH1cblxuICAgIGxldCBjdXJIYXNoID0gYmVhY29uSGFzaDtcbiAgICBmb3IgKGxldCBpPTA7IGk8bkl0ZXJhdGlvbnNPdXRlcjsgaSsrKSB7XG4gICAgICAgIGZvciAobGV0IGo9MDsgajxuSXRlcmF0aW9uc0lubmVyOyBqKyspIHtcbiAgICAgICAgICAgIGN1ckhhc2ggPSBhd2FpdCBzaGEyNTZkaWdlc3QoY3VySGFzaCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBjdXJIYXNoViA9IG5ldyBEYXRhVmlldyhjdXJIYXNoLmJ1ZmZlciwgY3VySGFzaC5ieXRlT2Zmc2V0LCBjdXJIYXNoLmJ5dGVMZW5ndGgpO1xuICAgIGNvbnN0IHNlZWQgPSBbXTtcbiAgICBmb3IgKGxldCBpPTA7IGk8ODsgaSsrKSB7XG4gICAgICAgIHNlZWRbaV0gPSBjdXJIYXNoVi5nZXRVaW50MzIoaSo0LCBmYWxzZSk7XG4gICAgfVxuXG4gICAgY29uc3Qgcm5nID0gbmV3IENoYUNoYShzZWVkKTtcblxuICAgIHJldHVybiBybmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBoZXgyQnl0ZUFycmF5KHMpIHtcbiAgICBpZiAocyBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpIHJldHVybiBzO1xuICAgIGlmIChzLnNsaWNlKDAsMikgPT0gXCIweFwiKSBzPSBzLnNsaWNlKDIpO1xuICAgIHJldHVybiBuZXcgVWludDhBcnJheShzLm1hdGNoKC9bXFxkYS1mXXsyfS9naSkubWFwKGZ1bmN0aW9uIChoKSB7XG4gICAgICAgIHJldHVybiBwYXJzZUludChoLCAxNik7XG4gICAgfSkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYnl0ZUFycmF5MmhleChieXRlQXJyYXkpIHtcbiAgICByZXR1cm4gQXJyYXkucHJvdG90eXBlLm1hcC5jYWxsKGJ5dGVBcnJheSwgZnVuY3Rpb24oYnl0ZSkge1xuICAgICAgICByZXR1cm4gKFwiMFwiICsgKGJ5dGUgJiAweEZGKS50b1N0cmluZygxNikpLnNsaWNlKC0yKTtcbiAgICB9KS5qb2luKFwiXCIpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc3RyaW5naWZ5QmlnSW50c1dpdGhGaWVsZChGciwgbykge1xuICAgIGlmIChvIGluc3RhbmNlb2YgVWludDhBcnJheSkgIHtcbiAgICAgICAgcmV0dXJuIEZyLnRvU3RyaW5nKG8pO1xuICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShvKSkge1xuICAgICAgICByZXR1cm4gby5tYXAoc3RyaW5naWZ5QmlnSW50c1dpdGhGaWVsZC5iaW5kKG51bGwsIEZyKSk7XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgbyA9PSBcIm9iamVjdFwiKSB7XG4gICAgICAgIGNvbnN0IHJlcyA9IHt9O1xuICAgICAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMobyk7XG4gICAgICAgIGtleXMuZm9yRWFjaCggKGspID0+IHtcbiAgICAgICAgICAgIHJlc1trXSA9IHN0cmluZ2lmeUJpZ0ludHNXaXRoRmllbGQoRnIsIG9ba10pO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9IGVsc2UgaWYgKCh0eXBlb2YobykgPT0gXCJiaWdpbnRcIikgfHwgby5lcSAhPT0gdW5kZWZpbmVkKSAge1xuICAgICAgICByZXR1cm4gby50b1N0cmluZygxMCk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIG87XG4gICAgfVxufVxuIiwiZXhwb3J0IGNvbnN0IEhFQURFUl9aS0VZX1NFQ1RJT04gPSAxO1xuXG5leHBvcnQgY29uc3QgR1JPVEgxNl9QUk9UT0NPTF9JRCA9IDE7XG5leHBvcnQgY29uc3QgUExPTktfUFJPVE9DT0xfSUQgPSAyO1xuZXhwb3J0IGNvbnN0IEZGTE9OS19QUk9UT0NPTF9JRCA9IDEwO1xuIiwiLypcbiAgICBDb3B5cmlnaHQgMjAyMiBpZGVuMyBhc3NvY2lhdGlvbi5cblxuICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHNuYXJranMuXG5cbiAgICBzbmFya2pzIGlzIGEgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yXG4gICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZVxuICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKVxuICAgIGFueSBsYXRlciB2ZXJzaW9uLlxuXG4gICAgc25hcmtqcyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWVxuICAgIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvclxuICAgIG1vcmUgZGV0YWlscy5cblxuICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nIHdpdGhcbiAgICBzbmFya2pzLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuKi9cblxuLy8gRkZsb25rIGNvbnN0YW50c1xuZXhwb3J0IGNvbnN0IEZGX1RfUE9MX0RFR19NSU4gPSAzO1xuXG4vLyBGRmxvbmsgQVxuZXhwb3J0IGNvbnN0IEEgPSAxMjtcblxuLy8gWktFWSBjb25zdGFudHNcbmV4cG9ydCBjb25zdCBaS0VZX0ZGX05TRUNUSU9OUyA9IDE3O1xuXG5leHBvcnQgY29uc3QgWktFWV9GRl9IRUFERVJfU0VDVElPTiA9IDI7XG5leHBvcnQgY29uc3QgWktFWV9GRl9BRERJVElPTlNfU0VDVElPTiA9IDM7XG5leHBvcnQgY29uc3QgWktFWV9GRl9BX01BUF9TRUNUSU9OID0gNDtcbmV4cG9ydCBjb25zdCBaS0VZX0ZGX0JfTUFQX1NFQ1RJT04gPSA1O1xuZXhwb3J0IGNvbnN0IFpLRVlfRkZfQ19NQVBfU0VDVElPTiA9IDY7XG5leHBvcnQgY29uc3QgWktFWV9GRl9RTF9TRUNUSU9OID0gNztcbmV4cG9ydCBjb25zdCBaS0VZX0ZGX1FSX1NFQ1RJT04gPSA4O1xuZXhwb3J0IGNvbnN0IFpLRVlfRkZfUU1fU0VDVElPTiA9IDk7XG5leHBvcnQgY29uc3QgWktFWV9GRl9RT19TRUNUSU9OID0gMTA7XG5leHBvcnQgY29uc3QgWktFWV9GRl9RQ19TRUNUSU9OID0gMTE7XG5leHBvcnQgY29uc3QgWktFWV9GRl9TSUdNQTFfU0VDVElPTiA9IDEyO1xuZXhwb3J0IGNvbnN0IFpLRVlfRkZfU0lHTUEyX1NFQ1RJT04gPSAxMztcbmV4cG9ydCBjb25zdCBaS0VZX0ZGX1NJR01BM19TRUNUSU9OID0gMTQ7XG5leHBvcnQgY29uc3QgWktFWV9GRl9MQUdSQU5HRV9TRUNUSU9OID0gMTU7XG5leHBvcnQgY29uc3QgWktFWV9GRl9QVEFVX1NFQ1RJT04gPSAxNjtcbmV4cG9ydCBjb25zdCBaS0VZX0ZGX0MwX1NFQ1RJT04gPSAxNztcbiIsIi8qXG4gICAgQ29weXJpZ2h0IDIwMTggMEtJTVMgYXNzb2NpYXRpb24uXG5cbiAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBzbmFya0pTLlxuXG4gICAgc25hcmtKUyBpcyBhIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXRcbiAgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yXG4gICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cblxuICAgIHNuYXJrSlMgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVRcbiAgICBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFlcbiAgICBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWNcbiAgICBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG5cbiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICAgIGFsb25nIHdpdGggc25hcmtKUy4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cbiovXG5cbi8vIEZvcm1hdFxuLy8gPT09PT09XG4vLyBIZWFkZXIoMSlcbi8vICAgICAgUHJvdmVyIFR5cGUgMSBHcm90aFxuLy8gSGVhZGVyR3JvdGgoMilcbi8vICAgICAgbjhxXG4vLyAgICAgIHFcbi8vICAgICAgbjhyXG4vLyAgICAgIHJcbi8vICAgICAgTlZhcnNcbi8vICAgICAgTlB1YlxuLy8gICAgICBEb21haW5TaXplICAobXVsdGlwbGUgb2YgMlxuLy8gICAgICBhbHBoYTFcbi8vICAgICAgYmV0YTFcbi8vICAgICAgZGVsdGExXG4vLyAgICAgIGJldGEyXG4vLyAgICAgIGdhbW1hMlxuLy8gICAgICBkZWx0YTJcbi8vIElDKDMpXG4vLyBDb2Vmcyg0KVxuLy8gUG9pbnRzQSg1KVxuLy8gUG9pbnRzQjEoNilcbi8vIFBvaW50c0IyKDcpXG4vLyBQb2ludHNDKDgpXG4vLyBQb2ludHNIKDkpXG4vLyBDb250cmlidXRpb25zKDEwKVxuXG5pbXBvcnQgeyBTY2FsYXIsIEYxRmllbGQgfSBmcm9tIFwiZmZqYXZhc2NyaXB0XCI7XG5pbXBvcnQgKiBhcyBiaW5GaWxlVXRpbHMgZnJvbSBcIkBpZGVuMy9iaW5maWxldXRpbHNcIjtcblxuaW1wb3J0IHsgZ2V0Q3VydmVGcm9tUSBhcyBnZXRDdXJ2ZSB9IGZyb20gXCIuL2N1cnZlcy5qc1wiO1xuaW1wb3J0IHsgbG9nMiB9IGZyb20gXCIuL21pc2MuanNcIjtcbmltcG9ydCB7RkZMT05LX1BST1RPQ09MX0lELCBHUk9USDE2X1BST1RPQ09MX0lELCBQTE9OS19QUk9UT0NPTF9JRH0gZnJvbSBcIi4vemtleV9jb25zdGFudHMuanNcIjtcbmltcG9ydCB7WktFWV9GRl9IRUFERVJfU0VDVElPTn0gZnJvbSBcIi4vZmZsb25rX2NvbnN0YW50cy5qc1wiO1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gd3JpdGVIZWFkZXIoZmQsIHprZXkpIHtcblxuICAgIC8vIFdyaXRlIHRoZSBoZWFkZXJcbiAgICAvLy8vLy8vLy8vL1xuICAgIGF3YWl0IGJpbkZpbGVVdGlscy5zdGFydFdyaXRlU2VjdGlvbihmZCwgMSk7XG4gICAgYXdhaXQgZmQud3JpdGVVTEUzMigxKTsgLy8gR3JvdGhcbiAgICBhd2FpdCBiaW5GaWxlVXRpbHMuZW5kV3JpdGVTZWN0aW9uKGZkKTtcblxuICAgIC8vIFdyaXRlIHRoZSBHcm90aCBoZWFkZXIgc2VjdGlvblxuICAgIC8vLy8vLy8vLy8vXG5cbiAgICBjb25zdCBjdXJ2ZSA9IGF3YWl0IGdldEN1cnZlKHprZXkucSk7XG5cbiAgICBhd2FpdCBiaW5GaWxlVXRpbHMuc3RhcnRXcml0ZVNlY3Rpb24oZmQsIDIpO1xuICAgIGNvbnN0IHByaW1lUSA9IGN1cnZlLnE7XG4gICAgY29uc3QgbjhxID0gKE1hdGguZmxvb3IoIChTY2FsYXIuYml0TGVuZ3RoKHByaW1lUSkgLSAxKSAvIDY0KSArMSkqODtcblxuICAgIGNvbnN0IHByaW1lUiA9IGN1cnZlLnI7XG4gICAgY29uc3QgbjhyID0gKE1hdGguZmxvb3IoIChTY2FsYXIuYml0TGVuZ3RoKHByaW1lUikgLSAxKSAvIDY0KSArMSkqODtcblxuICAgIGF3YWl0IGZkLndyaXRlVUxFMzIobjhxKTtcbiAgICBhd2FpdCBiaW5GaWxlVXRpbHMud3JpdGVCaWdJbnQoZmQsIHByaW1lUSwgbjhxKTtcbiAgICBhd2FpdCBmZC53cml0ZVVMRTMyKG44cik7XG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLndyaXRlQmlnSW50KGZkLCBwcmltZVIsIG44cik7XG4gICAgYXdhaXQgZmQud3JpdGVVTEUzMih6a2V5Lm5WYXJzKTsgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVG90YWwgbnVtYmVyIG9mIGJhcnNcbiAgICBhd2FpdCBmZC53cml0ZVVMRTMyKHprZXkublB1YmxpYyk7ICAgICAgICAgICAgICAgICAgICAgICAvLyBUb3RhbCBudW1iZXIgb2YgcHVibGljIHZhcnMgKG5vdCBpbmNsdWRpbmcgT05FKVxuICAgIGF3YWl0IGZkLndyaXRlVUxFMzIoemtleS5kb21haW5TaXplKTsgICAgICAgICAgICAgICAgICAvLyBkb21haW5TaXplXG4gICAgYXdhaXQgd3JpdGVHMShmZCwgY3VydmUsIHprZXkudmtfYWxwaGFfMSk7XG4gICAgYXdhaXQgd3JpdGVHMShmZCwgY3VydmUsIHprZXkudmtfYmV0YV8xKTtcbiAgICBhd2FpdCB3cml0ZUcyKGZkLCBjdXJ2ZSwgemtleS52a19iZXRhXzIpO1xuICAgIGF3YWl0IHdyaXRlRzIoZmQsIGN1cnZlLCB6a2V5LnZrX2dhbW1hXzIpO1xuICAgIGF3YWl0IHdyaXRlRzEoZmQsIGN1cnZlLCB6a2V5LnZrX2RlbHRhXzEpO1xuICAgIGF3YWl0IHdyaXRlRzIoZmQsIGN1cnZlLCB6a2V5LnZrX2RlbHRhXzIpO1xuXG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLmVuZFdyaXRlU2VjdGlvbihmZCk7XG5cblxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gd3JpdGVaS2V5KGZpbGVOYW1lLCB6a2V5KSB7XG5cbiAgICBsZXQgY3VydmUgPSBnZXRDdXJ2ZSh6a2V5LnEpO1xuXG4gICAgY29uc3QgZmQgPSBhd2FpdCBiaW5GaWxlVXRpbHMuY3JlYXRlQmluRmlsZShmaWxlTmFtZSxcInprZXlcIiwgMSwgOSk7XG5cbiAgICBhd2FpdCB3cml0ZUhlYWRlcihmZCwgemtleSk7XG4gICAgY29uc3QgbjhyID0gKE1hdGguZmxvb3IoIChTY2FsYXIuYml0TGVuZ3RoKHprZXkucikgLSAxKSAvIDY0KSArMSkqODtcbiAgICBjb25zdCBSciA9IFNjYWxhci5tb2QoU2NhbGFyLnNobCgxLCBuOHIqOCksIHprZXkucik7XG4gICAgY29uc3QgUjJyID0gU2NhbGFyLm1vZChTY2FsYXIubXVsKFJyLFJyKSwgemtleS5yKTtcblxuICAgIC8vIFdyaXRlIFBvbHMgKEEgYW5kIEIgKEMgY2FuIGJlIG9taXR0ZWQpKVxuICAgIC8vLy8vLy8vLy8vXG5cbiAgICB6a2V5LmNjb2VmcyA9IHprZXkuY2NvZWZzLmZpbHRlcihjID0+IGMubWF0cml4PDIpO1xuICAgIHprZXkuY2NvZWZzLnNvcnQoIChhLGIpID0+IGEuY29uc3RyYWludCAtIGIuY29uc3RyYWludCApO1xuICAgIGF3YWl0IGJpbkZpbGVVdGlscy5zdGFydFdyaXRlU2VjdGlvbihmZCwgNCk7XG4gICAgYXdhaXQgZmQud3JpdGVVTEUzMih6a2V5LmNjb2Vmcy5sZW5ndGgpO1xuICAgIGZvciAobGV0IGk9MDsgaTx6a2V5LmNjb2Vmcy5sZW5ndGg7IGkrKykge1xuICAgICAgICBjb25zdCBjb2VmID0gemtleS5jY29lZnNbaV07XG4gICAgICAgIGF3YWl0IGZkLndyaXRlVUxFMzIoY29lZi5tYXRyaXgpO1xuICAgICAgICBhd2FpdCBmZC53cml0ZVVMRTMyKGNvZWYuY29uc3RyYWludCk7XG4gICAgICAgIGF3YWl0IGZkLndyaXRlVUxFMzIoY29lZi5zaWduYWwpO1xuICAgICAgICBhd2FpdCB3cml0ZUZyMihjb2VmLnZhbHVlKTtcbiAgICB9XG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLmVuZFdyaXRlU2VjdGlvbihmZCk7XG5cblxuICAgIC8vIFdyaXRlIElDIFNlY3Rpb25cbiAgICAvLy8vLy8vLy8vL1xuICAgIGF3YWl0IGJpbkZpbGVVdGlscy5zdGFydFdyaXRlU2VjdGlvbihmZCwgMyk7XG4gICAgZm9yIChsZXQgaT0wOyBpPD0gemtleS5uUHVibGljOyBpKyspIHtcbiAgICAgICAgYXdhaXQgd3JpdGVHMShmZCwgY3VydmUsIHprZXkuSUNbaV0gKTtcbiAgICB9XG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLmVuZFdyaXRlU2VjdGlvbihmZCk7XG5cblxuICAgIC8vIFdyaXRlIEFcbiAgICAvLy8vLy8vLy8vL1xuICAgIGF3YWl0IGJpbkZpbGVVdGlscy5zdGFydFdyaXRlU2VjdGlvbihmZCwgNSk7XG4gICAgZm9yIChsZXQgaT0wOyBpPHprZXkublZhcnM7IGkrKykge1xuICAgICAgICBhd2FpdCB3cml0ZUcxKGZkLCBjdXJ2ZSwgemtleS5BW2ldKTtcbiAgICB9XG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLmVuZFdyaXRlU2VjdGlvbihmZCk7XG5cbiAgICAvLyBXcml0ZSBCMVxuICAgIC8vLy8vLy8vLy8vXG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLnN0YXJ0V3JpdGVTZWN0aW9uKGZkLCA2KTtcbiAgICBmb3IgKGxldCBpPTA7IGk8emtleS5uVmFyczsgaSsrKSB7XG4gICAgICAgIGF3YWl0IHdyaXRlRzEoZmQsIGN1cnZlLCB6a2V5LkIxW2ldKTtcbiAgICB9XG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLmVuZFdyaXRlU2VjdGlvbihmZCk7XG5cbiAgICAvLyBXcml0ZSBCMlxuICAgIC8vLy8vLy8vLy8vXG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLnN0YXJ0V3JpdGVTZWN0aW9uKGZkLCA3KTtcbiAgICBmb3IgKGxldCBpPTA7IGk8emtleS5uVmFyczsgaSsrKSB7XG4gICAgICAgIGF3YWl0IHdyaXRlRzIoZmQsIGN1cnZlLCB6a2V5LkIyW2ldKTtcbiAgICB9XG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLmVuZFdyaXRlU2VjdGlvbihmZCk7XG5cbiAgICAvLyBXcml0ZSBDXG4gICAgLy8vLy8vLy8vLy9cbiAgICBhd2FpdCBiaW5GaWxlVXRpbHMuc3RhcnRXcml0ZVNlY3Rpb24oZmQsIDgpO1xuICAgIGZvciAobGV0IGk9emtleS5uUHVibGljKzE7IGk8emtleS5uVmFyczsgaSsrKSB7XG4gICAgICAgIGF3YWl0IHdyaXRlRzEoZmQsIGN1cnZlLCB6a2V5LkNbaV0pO1xuICAgIH1cbiAgICBhd2FpdCBiaW5GaWxlVXRpbHMuZW5kV3JpdGVTZWN0aW9uKGZkKTtcblxuXG4gICAgLy8gV3JpdGUgSCBwb2ludHNcbiAgICAvLy8vLy8vLy8vL1xuICAgIGF3YWl0IGJpbkZpbGVVdGlscy5zdGFydFdyaXRlU2VjdGlvbihmZCwgOSk7XG4gICAgZm9yIChsZXQgaT0wOyBpPHprZXkuZG9tYWluU2l6ZTsgaSsrKSB7XG4gICAgICAgIGF3YWl0IHdyaXRlRzEoZmQsIGN1cnZlLCB6a2V5LmhFeHBzW2ldKTtcbiAgICB9XG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLmVuZFdyaXRlU2VjdGlvbihmZCk7XG5cbiAgICBhd2FpdCBmZC5jbG9zZSgpO1xuXG4gICAgYXN5bmMgZnVuY3Rpb24gd3JpdGVGcjIobikge1xuICAgICAgICAvLyBDb252ZXJ0IHRvIG1vbnRnb21lcnlcbiAgICAgICAgbiA9IFNjYWxhci5tb2QoIFNjYWxhci5tdWwobiwgUjJyKSwgemtleS5yKTtcblxuICAgICAgICBhd2FpdCBiaW5GaWxlVXRpbHMud3JpdGVCaWdJbnQoZmQsIG4sIG44cik7XG4gICAgfVxuXG59XG5cbmFzeW5jIGZ1bmN0aW9uIHdyaXRlRzEoZmQsIGN1cnZlLCBwKSB7XG4gICAgY29uc3QgYnVmZiA9IG5ldyBVaW50OEFycmF5KGN1cnZlLkcxLkYubjgqMik7XG4gICAgY3VydmUuRzEudG9ScHJMRU0oYnVmZiwgMCwgcCk7XG4gICAgYXdhaXQgZmQud3JpdGUoYnVmZik7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHdyaXRlRzIoZmQsIGN1cnZlLCBwKSB7XG4gICAgY29uc3QgYnVmZiA9IG5ldyBVaW50OEFycmF5KGN1cnZlLkcyLkYubjgqMik7XG4gICAgY3VydmUuRzIudG9ScHJMRU0oYnVmZiwgMCwgcCk7XG4gICAgYXdhaXQgZmQud3JpdGUoYnVmZik7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHJlYWRHMShmZCwgY3VydmUsIHRvT2JqZWN0KSB7XG4gICAgY29uc3QgYnVmZiA9IGF3YWl0IGZkLnJlYWQoY3VydmUuRzEuRi5uOCoyKTtcbiAgICBjb25zdCByZXMgPSBjdXJ2ZS5HMS5mcm9tUnByTEVNKGJ1ZmYsIDApO1xuICAgIHJldHVybiB0b09iamVjdCA/IGN1cnZlLkcxLnRvT2JqZWN0KHJlcykgOiByZXM7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHJlYWRHMihmZCwgY3VydmUsIHRvT2JqZWN0KSB7XG4gICAgY29uc3QgYnVmZiA9IGF3YWl0IGZkLnJlYWQoY3VydmUuRzIuRi5uOCoyKTtcbiAgICBjb25zdCByZXMgPSBjdXJ2ZS5HMi5mcm9tUnByTEVNKGJ1ZmYsIDApO1xuICAgIHJldHVybiB0b09iamVjdCA/IGN1cnZlLkcyLnRvT2JqZWN0KHJlcykgOiByZXM7XG59XG5cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlYWRIZWFkZXIoZmQsIHNlY3Rpb25zLCB0b09iamVjdCwgb3B0aW9ucykge1xuICAgIC8vIFJlYWQgSGVhZGVyXG4gICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLnN0YXJ0UmVhZFVuaXF1ZVNlY3Rpb24oZmQsIHNlY3Rpb25zLCAxKTtcbiAgICBjb25zdCBwcm90b2NvbElkID0gYXdhaXQgZmQucmVhZFVMRTMyKCk7XG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLmVuZFJlYWRTZWN0aW9uKGZkKTtcblxuICAgIGlmIChwcm90b2NvbElkID09PSBHUk9USDE2X1BST1RPQ09MX0lEKSB7XG4gICAgICAgIHJldHVybiBhd2FpdCByZWFkSGVhZGVyR3JvdGgxNihmZCwgc2VjdGlvbnMsIHRvT2JqZWN0LCBvcHRpb25zKTtcbiAgICB9IGVsc2UgaWYgKHByb3RvY29sSWQgPT09IFBMT05LX1BST1RPQ09MX0lEKSB7XG4gICAgICAgIHJldHVybiBhd2FpdCByZWFkSGVhZGVyUGxvbmsoZmQsIHNlY3Rpb25zLCB0b09iamVjdCwgb3B0aW9ucyk7XG4gICAgfSBlbHNlIGlmIChwcm90b2NvbElkID09PSBGRkxPTktfUFJPVE9DT0xfSUQpIHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHJlYWRIZWFkZXJGRmxvbmsoZmQsIHNlY3Rpb25zLCB0b09iamVjdCwgb3B0aW9ucyk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiUHJvdG9jb2wgbm90IHN1cHBvcnRlZDogXCIpO1xuICAgIH1cbn1cblxuXG5cblxuYXN5bmMgZnVuY3Rpb24gcmVhZEhlYWRlckdyb3RoMTYoZmQsIHNlY3Rpb25zLCB0b09iamVjdCwgb3B0aW9ucykge1xuICAgIGNvbnN0IHprZXkgPSB7fTtcblxuICAgIHprZXkucHJvdG9jb2wgPSBcImdyb3RoMTZcIjtcblxuICAgIC8vIFJlYWQgR3JvdGggSGVhZGVyXG4gICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLnN0YXJ0UmVhZFVuaXF1ZVNlY3Rpb24oZmQsIHNlY3Rpb25zLCAyKTtcbiAgICBjb25zdCBuOHEgPSBhd2FpdCBmZC5yZWFkVUxFMzIoKTtcbiAgICB6a2V5Lm44cSA9IG44cTtcbiAgICB6a2V5LnEgPSBhd2FpdCBiaW5GaWxlVXRpbHMucmVhZEJpZ0ludChmZCwgbjhxKTtcblxuICAgIGNvbnN0IG44ciA9IGF3YWl0IGZkLnJlYWRVTEUzMigpO1xuICAgIHprZXkubjhyID0gbjhyO1xuICAgIHprZXkuciA9IGF3YWl0IGJpbkZpbGVVdGlscy5yZWFkQmlnSW50KGZkLCBuOHIpO1xuICAgIHprZXkuY3VydmUgPSBhd2FpdCBnZXRDdXJ2ZSh6a2V5LnEsIG9wdGlvbnMpO1xuICAgIHprZXkublZhcnMgPSBhd2FpdCBmZC5yZWFkVUxFMzIoKTtcbiAgICB6a2V5Lm5QdWJsaWMgPSBhd2FpdCBmZC5yZWFkVUxFMzIoKTtcbiAgICB6a2V5LmRvbWFpblNpemUgPSBhd2FpdCBmZC5yZWFkVUxFMzIoKTtcbiAgICB6a2V5LnBvd2VyID0gbG9nMih6a2V5LmRvbWFpblNpemUpO1xuICAgIHprZXkudmtfYWxwaGFfMSA9IGF3YWl0IHJlYWRHMShmZCwgemtleS5jdXJ2ZSwgdG9PYmplY3QpO1xuICAgIHprZXkudmtfYmV0YV8xID0gYXdhaXQgcmVhZEcxKGZkLCB6a2V5LmN1cnZlLCB0b09iamVjdCk7XG4gICAgemtleS52a19iZXRhXzIgPSBhd2FpdCByZWFkRzIoZmQsIHprZXkuY3VydmUsIHRvT2JqZWN0KTtcbiAgICB6a2V5LnZrX2dhbW1hXzIgPSBhd2FpdCByZWFkRzIoZmQsIHprZXkuY3VydmUsIHRvT2JqZWN0KTtcbiAgICB6a2V5LnZrX2RlbHRhXzEgPSBhd2FpdCByZWFkRzEoZmQsIHprZXkuY3VydmUsIHRvT2JqZWN0KTtcbiAgICB6a2V5LnZrX2RlbHRhXzIgPSBhd2FpdCByZWFkRzIoZmQsIHprZXkuY3VydmUsIHRvT2JqZWN0KTtcbiAgICBhd2FpdCBiaW5GaWxlVXRpbHMuZW5kUmVhZFNlY3Rpb24oZmQpO1xuXG4gICAgcmV0dXJuIHprZXk7XG5cbn1cblxuYXN5bmMgZnVuY3Rpb24gcmVhZEhlYWRlclBsb25rKGZkLCBzZWN0aW9ucywgdG9PYmplY3QsIG9wdGlvbnMpIHtcbiAgICBjb25zdCB6a2V5ID0ge307XG5cbiAgICB6a2V5LnByb3RvY29sID0gXCJwbG9ua1wiO1xuXG4gICAgLy8gUmVhZCBQbG9uayBIZWFkZXJcbiAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiAgICBhd2FpdCBiaW5GaWxlVXRpbHMuc3RhcnRSZWFkVW5pcXVlU2VjdGlvbihmZCwgc2VjdGlvbnMsIDIpO1xuICAgIGNvbnN0IG44cSA9IGF3YWl0IGZkLnJlYWRVTEUzMigpO1xuICAgIHprZXkubjhxID0gbjhxO1xuICAgIHprZXkucSA9IGF3YWl0IGJpbkZpbGVVdGlscy5yZWFkQmlnSW50KGZkLCBuOHEpO1xuXG4gICAgY29uc3QgbjhyID0gYXdhaXQgZmQucmVhZFVMRTMyKCk7XG4gICAgemtleS5uOHIgPSBuOHI7XG4gICAgemtleS5yID0gYXdhaXQgYmluRmlsZVV0aWxzLnJlYWRCaWdJbnQoZmQsIG44cik7XG4gICAgemtleS5jdXJ2ZSA9IGF3YWl0IGdldEN1cnZlKHprZXkucSwgb3B0aW9ucyk7XG4gICAgemtleS5uVmFycyA9IGF3YWl0IGZkLnJlYWRVTEUzMigpO1xuICAgIHprZXkublB1YmxpYyA9IGF3YWl0IGZkLnJlYWRVTEUzMigpO1xuICAgIHprZXkuZG9tYWluU2l6ZSA9IGF3YWl0IGZkLnJlYWRVTEUzMigpO1xuICAgIHprZXkucG93ZXIgPSBsb2cyKHprZXkuZG9tYWluU2l6ZSk7XG4gICAgemtleS5uQWRkaXRpb25zID0gYXdhaXQgZmQucmVhZFVMRTMyKCk7XG4gICAgemtleS5uQ29uc3RyYWludHMgPSBhd2FpdCBmZC5yZWFkVUxFMzIoKTtcbiAgICB6a2V5LmsxID0gYXdhaXQgZmQucmVhZChuOHIpO1xuICAgIHprZXkuazIgPSBhd2FpdCBmZC5yZWFkKG44cik7XG5cbiAgICB6a2V5LlFtID0gYXdhaXQgcmVhZEcxKGZkLCB6a2V5LmN1cnZlLCB0b09iamVjdCk7XG4gICAgemtleS5RbCA9IGF3YWl0IHJlYWRHMShmZCwgemtleS5jdXJ2ZSwgdG9PYmplY3QpO1xuICAgIHprZXkuUXIgPSBhd2FpdCByZWFkRzEoZmQsIHprZXkuY3VydmUsIHRvT2JqZWN0KTtcbiAgICB6a2V5LlFvID0gYXdhaXQgcmVhZEcxKGZkLCB6a2V5LmN1cnZlLCB0b09iamVjdCk7XG4gICAgemtleS5RYyA9IGF3YWl0IHJlYWRHMShmZCwgemtleS5jdXJ2ZSwgdG9PYmplY3QpO1xuICAgIHprZXkuUzEgPSBhd2FpdCByZWFkRzEoZmQsIHprZXkuY3VydmUsIHRvT2JqZWN0KTtcbiAgICB6a2V5LlMyID0gYXdhaXQgcmVhZEcxKGZkLCB6a2V5LmN1cnZlLCB0b09iamVjdCk7XG4gICAgemtleS5TMyA9IGF3YWl0IHJlYWRHMShmZCwgemtleS5jdXJ2ZSwgdG9PYmplY3QpO1xuICAgIHprZXkuWF8yID0gYXdhaXQgcmVhZEcyKGZkLCB6a2V5LmN1cnZlLCB0b09iamVjdCk7XG5cbiAgICBhd2FpdCBiaW5GaWxlVXRpbHMuZW5kUmVhZFNlY3Rpb24oZmQpO1xuXG4gICAgcmV0dXJuIHprZXk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHJlYWRIZWFkZXJGRmxvbmsoZmQsIHNlY3Rpb25zLCB0b09iamVjdCwgb3B0aW9ucykge1xuICAgIGNvbnN0IHprZXkgPSB7fTtcblxuICAgIHprZXkucHJvdG9jb2wgPSBcImZmbG9ua1wiO1xuICAgIHprZXkucHJvdG9jb2xJZCA9IEZGTE9OS19QUk9UT0NPTF9JRDtcblxuICAgIGF3YWl0IGJpbkZpbGVVdGlscy5zdGFydFJlYWRVbmlxdWVTZWN0aW9uKGZkLCBzZWN0aW9ucywgWktFWV9GRl9IRUFERVJfU0VDVElPTik7XG4gICAgY29uc3QgbjhxID0gYXdhaXQgZmQucmVhZFVMRTMyKCk7XG4gICAgemtleS5uOHEgPSBuOHE7XG4gICAgemtleS5xID0gYXdhaXQgYmluRmlsZVV0aWxzLnJlYWRCaWdJbnQoZmQsIG44cSk7XG4gICAgemtleS5jdXJ2ZSA9IGF3YWl0IGdldEN1cnZlKHprZXkucSwgb3B0aW9ucyk7XG5cbiAgICBjb25zdCBuOHIgPSBhd2FpdCBmZC5yZWFkVUxFMzIoKTtcbiAgICB6a2V5Lm44ciA9IG44cjtcbiAgICB6a2V5LnIgPSBhd2FpdCBiaW5GaWxlVXRpbHMucmVhZEJpZ0ludChmZCwgbjhyKTtcblxuICAgIHprZXkublZhcnMgPSBhd2FpdCBmZC5yZWFkVUxFMzIoKTtcbiAgICB6a2V5Lm5QdWJsaWMgPSBhd2FpdCBmZC5yZWFkVUxFMzIoKTtcbiAgICB6a2V5LmRvbWFpblNpemUgPSBhd2FpdCBmZC5yZWFkVUxFMzIoKTtcbiAgICB6a2V5LnBvd2VyID0gbG9nMih6a2V5LmRvbWFpblNpemUpO1xuICAgIHprZXkubkFkZGl0aW9ucyA9IGF3YWl0IGZkLnJlYWRVTEUzMigpO1xuICAgIHprZXkubkNvbnN0cmFpbnRzID0gYXdhaXQgZmQucmVhZFVMRTMyKCk7XG5cbiAgICB6a2V5LmsxID0gYXdhaXQgZmQucmVhZChuOHIpO1xuICAgIHprZXkuazIgPSBhd2FpdCBmZC5yZWFkKG44cik7XG5cbiAgICB6a2V5LnczID0gYXdhaXQgZmQucmVhZChuOHIpO1xuICAgIHprZXkudzQgPSBhd2FpdCBmZC5yZWFkKG44cik7XG4gICAgemtleS53OCA9IGF3YWl0IGZkLnJlYWQobjhyKTtcbiAgICB6a2V5LndyID0gYXdhaXQgZmQucmVhZChuOHIpO1xuXG4gICAgemtleS5YXzIgPSBhd2FpdCByZWFkRzIoZmQsIHprZXkuY3VydmUsIHRvT2JqZWN0KTtcblxuICAgIHprZXkuQzAgPSBhd2FpdCByZWFkRzEoZmQsIHprZXkuY3VydmUsIHRvT2JqZWN0KTtcblxuICAgIGF3YWl0IGJpbkZpbGVVdGlscy5lbmRSZWFkU2VjdGlvbihmZCk7XG5cbiAgICByZXR1cm4gemtleTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlYWRaS2V5KGZpbGVOYW1lLCB0b09iamVjdCkge1xuICAgIGNvbnN0IHtmZCwgc2VjdGlvbnN9ID0gYXdhaXQgYmluRmlsZVV0aWxzLnJlYWRCaW5GaWxlKGZpbGVOYW1lLCBcInprZXlcIiwgMSk7XG5cbiAgICBjb25zdCB6a2V5ID0gYXdhaXQgcmVhZEhlYWRlcihmZCwgc2VjdGlvbnMsIHRvT2JqZWN0KTtcblxuICAgIGNvbnN0IEZyID0gbmV3IEYxRmllbGQoemtleS5yKTtcbiAgICBjb25zdCBSciA9IFNjYWxhci5tb2QoU2NhbGFyLnNobCgxLCB6a2V5Lm44cio4KSwgemtleS5yKTtcbiAgICBjb25zdCBScmkgPSBGci5pbnYoUnIpO1xuICAgIGNvbnN0IFJyaTIgPSBGci5tdWwoUnJpLCBScmkpO1xuXG4gICAgbGV0IGN1cnZlID0gYXdhaXQgZ2V0Q3VydmUoemtleS5xKTtcblxuICAgIC8vIFJlYWQgSUMgU2VjdGlvblxuICAgIC8vLy8vLy8vLy8vXG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLnN0YXJ0UmVhZFVuaXF1ZVNlY3Rpb24oZmQsIHNlY3Rpb25zLCAzKTtcbiAgICB6a2V5LklDID0gW107XG4gICAgZm9yIChsZXQgaT0wOyBpPD0gemtleS5uUHVibGljOyBpKyspIHtcbiAgICAgICAgY29uc3QgUCA9IGF3YWl0IHJlYWRHMShmZCwgY3VydmUsIHRvT2JqZWN0KTtcbiAgICAgICAgemtleS5JQy5wdXNoKFApO1xuICAgIH1cbiAgICBhd2FpdCBiaW5GaWxlVXRpbHMuZW5kUmVhZFNlY3Rpb24oZmQpO1xuXG5cbiAgICAvLyBSZWFkIENvZWZzXG4gICAgLy8vLy8vLy8vLy9cbiAgICBhd2FpdCBiaW5GaWxlVXRpbHMuc3RhcnRSZWFkVW5pcXVlU2VjdGlvbihmZCwgc2VjdGlvbnMsIDQpO1xuICAgIGNvbnN0IG5DQ29lZnMgPSBhd2FpdCBmZC5yZWFkVUxFMzIoKTtcbiAgICB6a2V5LmNjb2VmcyA9IFtdO1xuICAgIGZvciAobGV0IGk9MDsgaTxuQ0NvZWZzOyBpKyspIHtcbiAgICAgICAgY29uc3QgbSA9IGF3YWl0IGZkLnJlYWRVTEUzMigpO1xuICAgICAgICBjb25zdCBjID0gYXdhaXQgZmQucmVhZFVMRTMyKCk7XG4gICAgICAgIGNvbnN0IHMgPSBhd2FpdCBmZC5yZWFkVUxFMzIoKTtcbiAgICAgICAgY29uc3QgdiA9IGF3YWl0IHJlYWRGcjIodG9PYmplY3QpO1xuICAgICAgICB6a2V5LmNjb2Vmcy5wdXNoKHtcbiAgICAgICAgICAgIG1hdHJpeDogbSxcbiAgICAgICAgICAgIGNvbnN0cmFpbnQ6IGMsXG4gICAgICAgICAgICBzaWduYWw6IHMsXG4gICAgICAgICAgICB2YWx1ZTogdlxuICAgICAgICB9KTtcbiAgICB9XG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLmVuZFJlYWRTZWN0aW9uKGZkKTtcblxuICAgIC8vIFJlYWQgQSBwb2ludHNcbiAgICAvLy8vLy8vLy8vL1xuICAgIGF3YWl0IGJpbkZpbGVVdGlscy5zdGFydFJlYWRVbmlxdWVTZWN0aW9uKGZkLCBzZWN0aW9ucywgNSk7XG4gICAgemtleS5BID0gW107XG4gICAgZm9yIChsZXQgaT0wOyBpPHprZXkublZhcnM7IGkrKykge1xuICAgICAgICBjb25zdCBBID0gYXdhaXQgcmVhZEcxKGZkLCBjdXJ2ZSwgdG9PYmplY3QpO1xuICAgICAgICB6a2V5LkFbaV0gPSBBO1xuICAgIH1cbiAgICBhd2FpdCBiaW5GaWxlVXRpbHMuZW5kUmVhZFNlY3Rpb24oZmQpO1xuXG5cbiAgICAvLyBSZWFkIEIxXG4gICAgLy8vLy8vLy8vLy9cbiAgICBhd2FpdCBiaW5GaWxlVXRpbHMuc3RhcnRSZWFkVW5pcXVlU2VjdGlvbihmZCwgc2VjdGlvbnMsIDYpO1xuICAgIHprZXkuQjEgPSBbXTtcbiAgICBmb3IgKGxldCBpPTA7IGk8emtleS5uVmFyczsgaSsrKSB7XG4gICAgICAgIGNvbnN0IEIxID0gYXdhaXQgcmVhZEcxKGZkLCBjdXJ2ZSwgdG9PYmplY3QpO1xuXG4gICAgICAgIHprZXkuQjFbaV0gPSBCMTtcbiAgICB9XG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLmVuZFJlYWRTZWN0aW9uKGZkKTtcblxuXG4gICAgLy8gUmVhZCBCMiBwb2ludHNcbiAgICAvLy8vLy8vLy8vL1xuICAgIGF3YWl0IGJpbkZpbGVVdGlscy5zdGFydFJlYWRVbmlxdWVTZWN0aW9uKGZkLCBzZWN0aW9ucywgNyk7XG4gICAgemtleS5CMiA9IFtdO1xuICAgIGZvciAobGV0IGk9MDsgaTx6a2V5Lm5WYXJzOyBpKyspIHtcbiAgICAgICAgY29uc3QgQjIgPSBhd2FpdCByZWFkRzIoZmQsIGN1cnZlLCB0b09iamVjdCk7XG4gICAgICAgIHprZXkuQjJbaV0gPSBCMjtcbiAgICB9XG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLmVuZFJlYWRTZWN0aW9uKGZkKTtcblxuXG4gICAgLy8gUmVhZCBDIHBvaW50c1xuICAgIC8vLy8vLy8vLy8vXG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLnN0YXJ0UmVhZFVuaXF1ZVNlY3Rpb24oZmQsIHNlY3Rpb25zLCA4KTtcbiAgICB6a2V5LkMgPSBbXTtcbiAgICBmb3IgKGxldCBpPXprZXkublB1YmxpYysxOyBpPHprZXkublZhcnM7IGkrKykge1xuICAgICAgICBjb25zdCBDID0gYXdhaXQgcmVhZEcxKGZkLCBjdXJ2ZSwgdG9PYmplY3QpO1xuXG4gICAgICAgIHprZXkuQ1tpXSA9IEM7XG4gICAgfVxuICAgIGF3YWl0IGJpbkZpbGVVdGlscy5lbmRSZWFkU2VjdGlvbihmZCk7XG5cblxuICAgIC8vIFJlYWQgSCBwb2ludHNcbiAgICAvLy8vLy8vLy8vL1xuICAgIGF3YWl0IGJpbkZpbGVVdGlscy5zdGFydFJlYWRVbmlxdWVTZWN0aW9uKGZkLCBzZWN0aW9ucywgOSk7XG4gICAgemtleS5oRXhwcyA9IFtdO1xuICAgIGZvciAobGV0IGk9MDsgaTx6a2V5LmRvbWFpblNpemU7IGkrKykge1xuICAgICAgICBjb25zdCBIID0gYXdhaXQgcmVhZEcxKGZkLCBjdXJ2ZSwgdG9PYmplY3QpO1xuICAgICAgICB6a2V5LmhFeHBzLnB1c2goSCk7XG4gICAgfVxuICAgIGF3YWl0IGJpbkZpbGVVdGlscy5lbmRSZWFkU2VjdGlvbihmZCk7XG5cbiAgICBhd2FpdCBmZC5jbG9zZSgpO1xuXG4gICAgcmV0dXJuIHprZXk7XG5cbiAgICBhc3luYyBmdW5jdGlvbiByZWFkRnIyKC8qIHRvT2JqZWN0ICovKSB7XG4gICAgICAgIGNvbnN0IG4gPSBhd2FpdCBiaW5GaWxlVXRpbHMucmVhZEJpZ0ludChmZCwgemtleS5uOHIpO1xuICAgICAgICByZXR1cm4gRnIubXVsKG4sIFJyaTIpO1xuICAgIH1cblxufVxuXG5cbmFzeW5jIGZ1bmN0aW9uIHJlYWRDb250cmlidXRpb24oZmQsIGN1cnZlLCB0b09iamVjdCkge1xuICAgIGNvbnN0IGMgPSB7ZGVsdGE6e319O1xuICAgIGMuZGVsdGFBZnRlciA9IGF3YWl0IHJlYWRHMShmZCwgY3VydmUsIHRvT2JqZWN0KTtcbiAgICBjLmRlbHRhLmcxX3MgPSBhd2FpdCByZWFkRzEoZmQsIGN1cnZlLCB0b09iamVjdCk7XG4gICAgYy5kZWx0YS5nMV9zeCA9IGF3YWl0IHJlYWRHMShmZCwgY3VydmUsIHRvT2JqZWN0KTtcbiAgICBjLmRlbHRhLmcyX3NweCA9IGF3YWl0IHJlYWRHMihmZCwgY3VydmUsIHRvT2JqZWN0KTtcbiAgICBjLnRyYW5zY3JpcHQgPSBhd2FpdCBmZC5yZWFkKDY0KTtcbiAgICBjLnR5cGUgPSBhd2FpdCBmZC5yZWFkVUxFMzIoKTtcblxuICAgIGNvbnN0IHBhcmFtTGVuZ3RoID0gYXdhaXQgZmQucmVhZFVMRTMyKCk7XG4gICAgY29uc3QgY3VyUG9zID0gZmQucG9zO1xuICAgIGxldCBsYXN0VHlwZSA9MDtcbiAgICB3aGlsZSAoZmQucG9zLWN1clBvcyA8IHBhcmFtTGVuZ3RoKSB7XG4gICAgICAgIGNvbnN0IGJ1ZmZUeXBlID0gYXdhaXQgZmQucmVhZCgxKTtcbiAgICAgICAgaWYgKGJ1ZmZUeXBlWzBdPD0gbGFzdFR5cGUpIHRocm93IG5ldyBFcnJvcihcIlBhcmFtZXRlcnMgaW4gdGhlIGNvbnRyaWJ1dGlvbiBtdXN0IGJlIHNvcnRlZFwiKTtcbiAgICAgICAgbGFzdFR5cGUgPSBidWZmVHlwZVswXTtcbiAgICAgICAgaWYgKGJ1ZmZUeXBlWzBdPT0xKSB7ICAgICAvLyBOYW1lXG4gICAgICAgICAgICBjb25zdCBidWZmTGVuID0gYXdhaXQgZmQucmVhZCgxKTtcbiAgICAgICAgICAgIGNvbnN0IGJ1ZmZTdHIgPSBhd2FpdCBmZC5yZWFkKGJ1ZmZMZW5bMF0pO1xuICAgICAgICAgICAgYy5uYW1lID0gbmV3IFRleHREZWNvZGVyKCkuZGVjb2RlKGJ1ZmZTdHIpO1xuICAgICAgICB9IGVsc2UgaWYgKGJ1ZmZUeXBlWzBdPT0yKSB7XG4gICAgICAgICAgICBjb25zdCBidWZmRXhwID0gYXdhaXQgZmQucmVhZCgxKTtcbiAgICAgICAgICAgIGMubnVtSXRlcmF0aW9uc0V4cCA9IGJ1ZmZFeHBbMF07XG4gICAgICAgIH0gZWxzZSBpZiAoYnVmZlR5cGVbMF09PTMpIHtcbiAgICAgICAgICAgIGNvbnN0IGJ1ZmZMZW4gPSBhd2FpdCBmZC5yZWFkKDEpO1xuICAgICAgICAgICAgYy5iZWFjb25IYXNoID0gYXdhaXQgZmQucmVhZChidWZmTGVuWzBdKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIlBhcmFtZXRlciBub3QgcmVjb2duaXplZFwiKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBpZiAoZmQucG9zICE9IGN1clBvcyArIHBhcmFtTGVuZ3RoKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIlBhcmFtZXRlcnMgZG8gbm90IG1hdGNoXCIpO1xuICAgIH1cblxuICAgIHJldHVybiBjO1xufVxuXG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZWFkTVBDUGFyYW1zKGZkLCBjdXJ2ZSwgc2VjdGlvbnMpIHtcbiAgICBhd2FpdCBiaW5GaWxlVXRpbHMuc3RhcnRSZWFkVW5pcXVlU2VjdGlvbihmZCwgc2VjdGlvbnMsIDEwKTtcbiAgICBjb25zdCByZXMgPSB7IGNvbnRyaWJ1dGlvbnM6IFtdfTtcbiAgICByZXMuY3NIYXNoID0gYXdhaXQgZmQucmVhZCg2NCk7XG4gICAgY29uc3QgbiA9IGF3YWl0IGZkLnJlYWRVTEUzMigpO1xuICAgIGZvciAobGV0IGk9MDsgaTxuOyBpKyspIHtcbiAgICAgICAgY29uc3QgYyA9IGF3YWl0IHJlYWRDb250cmlidXRpb24oZmQsIGN1cnZlKTtcbiAgICAgICAgcmVzLmNvbnRyaWJ1dGlvbnMucHVzaChjKTtcbiAgICB9XG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLmVuZFJlYWRTZWN0aW9uKGZkKTtcblxuICAgIHJldHVybiByZXM7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHdyaXRlQ29udHJpYnV0aW9uKGZkLCBjdXJ2ZSwgYykge1xuICAgIGF3YWl0IHdyaXRlRzEoZmQsIGN1cnZlLCBjLmRlbHRhQWZ0ZXIpO1xuICAgIGF3YWl0IHdyaXRlRzEoZmQsIGN1cnZlLCBjLmRlbHRhLmcxX3MpO1xuICAgIGF3YWl0IHdyaXRlRzEoZmQsIGN1cnZlLCBjLmRlbHRhLmcxX3N4KTtcbiAgICBhd2FpdCB3cml0ZUcyKGZkLCBjdXJ2ZSwgYy5kZWx0YS5nMl9zcHgpO1xuICAgIGF3YWl0IGZkLndyaXRlKGMudHJhbnNjcmlwdCk7XG4gICAgYXdhaXQgZmQud3JpdGVVTEUzMihjLnR5cGUgfHwgMCk7XG5cbiAgICBjb25zdCBwYXJhbXMgPSBbXTtcbiAgICBpZiAoYy5uYW1lKSB7XG4gICAgICAgIHBhcmFtcy5wdXNoKDEpOyAgICAgIC8vIFBhcmFtIE5hbWVcbiAgICAgICAgY29uc3QgbmFtZURhdGEgPSBuZXcgVGV4dEVuY29kZXIoXCJ1dGYtOFwiKS5lbmNvZGUoYy5uYW1lLnN1YnN0cmluZygwLDY0KSk7XG4gICAgICAgIHBhcmFtcy5wdXNoKG5hbWVEYXRhLmJ5dGVMZW5ndGgpO1xuICAgICAgICBmb3IgKGxldCBpPTA7IGk8bmFtZURhdGEuYnl0ZUxlbmd0aDsgaSsrKSBwYXJhbXMucHVzaChuYW1lRGF0YVtpXSk7XG4gICAgfVxuICAgIGlmIChjLnR5cGUgPT0gMSkge1xuICAgICAgICBwYXJhbXMucHVzaCgyKTsgICAgICAvLyBQYXJhbSBudW1JdGVyYXRpb25zRXhwXG4gICAgICAgIHBhcmFtcy5wdXNoKGMubnVtSXRlcmF0aW9uc0V4cCk7XG5cbiAgICAgICAgcGFyYW1zLnB1c2goMyk7ICAgICAgLy8gQmVhY29uIEhhc2hcbiAgICAgICAgcGFyYW1zLnB1c2goYy5iZWFjb25IYXNoLmJ5dGVMZW5ndGgpO1xuICAgICAgICBmb3IgKGxldCBpPTA7IGk8Yy5iZWFjb25IYXNoLmJ5dGVMZW5ndGg7IGkrKykgcGFyYW1zLnB1c2goYy5iZWFjb25IYXNoW2ldKTtcbiAgICB9XG4gICAgaWYgKHBhcmFtcy5sZW5ndGg+MCkge1xuICAgICAgICBjb25zdCBwYXJhbXNCdWZmID0gbmV3IFVpbnQ4QXJyYXkocGFyYW1zKTtcbiAgICAgICAgYXdhaXQgZmQud3JpdGVVTEUzMihwYXJhbXNCdWZmLmJ5dGVMZW5ndGgpO1xuICAgICAgICBhd2FpdCBmZC53cml0ZShwYXJhbXNCdWZmKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBhd2FpdCBmZC53cml0ZVVMRTMyKDApO1xuICAgIH1cblxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gd3JpdGVNUENQYXJhbXMoZmQsIGN1cnZlLCBtcGNQYXJhbXMpIHtcbiAgICBhd2FpdCBiaW5GaWxlVXRpbHMuc3RhcnRXcml0ZVNlY3Rpb24oZmQsIDEwKTtcbiAgICBhd2FpdCBmZC53cml0ZShtcGNQYXJhbXMuY3NIYXNoKTtcbiAgICBhd2FpdCBmZC53cml0ZVVMRTMyKG1wY1BhcmFtcy5jb250cmlidXRpb25zLmxlbmd0aCk7XG4gICAgZm9yIChsZXQgaT0wOyBpPG1wY1BhcmFtcy5jb250cmlidXRpb25zLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGF3YWl0IHdyaXRlQ29udHJpYnV0aW9uKGZkLCBjdXJ2ZSxtcGNQYXJhbXMuY29udHJpYnV0aW9uc1tpXSk7XG4gICAgfVxuICAgIGF3YWl0IGJpbkZpbGVVdGlscy5lbmRXcml0ZVNlY3Rpb24oZmQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaGFzaEcxKGhhc2hlciwgY3VydmUsIHApIHtcbiAgICBjb25zdCBidWZmID0gbmV3IFVpbnQ4QXJyYXkoY3VydmUuRzEuRi5uOCoyKTtcbiAgICBjdXJ2ZS5HMS50b1JwclVuY29tcHJlc3NlZChidWZmLCAwLCBwKTtcbiAgICBoYXNoZXIudXBkYXRlKGJ1ZmYpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaGFzaEcyKGhhc2hlcixjdXJ2ZSwgcCkge1xuICAgIGNvbnN0IGJ1ZmYgPSBuZXcgVWludDhBcnJheShjdXJ2ZS5HMi5GLm44KjIpO1xuICAgIGN1cnZlLkcyLnRvUnByVW5jb21wcmVzc2VkKGJ1ZmYsIDAsIHApO1xuICAgIGhhc2hlci51cGRhdGUoYnVmZik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBoYXNoUHViS2V5KGhhc2hlciwgY3VydmUsIGMpIHtcbiAgICBoYXNoRzEoaGFzaGVyLCBjdXJ2ZSwgYy5kZWx0YUFmdGVyKTtcbiAgICBoYXNoRzEoaGFzaGVyLCBjdXJ2ZSwgYy5kZWx0YS5nMV9zKTtcbiAgICBoYXNoRzEoaGFzaGVyLCBjdXJ2ZSwgYy5kZWx0YS5nMV9zeCk7XG4gICAgaGFzaEcyKGhhc2hlciwgY3VydmUsIGMuZGVsdGEuZzJfc3B4KTtcbiAgICBoYXNoZXIudXBkYXRlKGMudHJhbnNjcmlwdCk7XG59XG5cbiIsIi8qXG4gICAgQ29weXJpZ2h0IDIwMTggMEtJTVMgYXNzb2NpYXRpb24uXG5cbiAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBzbmFya0pTLlxuXG4gICAgc25hcmtKUyBpcyBhIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXRcbiAgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yXG4gICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cblxuICAgIHNuYXJrSlMgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVRcbiAgICBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFlcbiAgICBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWNcbiAgICBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG5cbiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICAgIGFsb25nIHdpdGggc25hcmtKUy4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cbiovXG5cbmltcG9ydCB7IFNjYWxhciB9IGZyb20gXCJmZmphdmFzY3JpcHRcIjtcblxuaW1wb3J0ICogYXMgYmluRmlsZVV0aWxzIGZyb20gXCJAaWRlbjMvYmluZmlsZXV0aWxzXCI7XG5cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHdyaXRlKGZkLCB3aXRuZXNzLCBwcmltZSkge1xuXG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLnN0YXJ0V3JpdGVTZWN0aW9uKGZkLCAxKTtcbiAgICBjb25zdCBuOCA9IChNYXRoLmZsb29yKCAoU2NhbGFyLmJpdExlbmd0aChwcmltZSkgLSAxKSAvIDY0KSArMSkqODtcbiAgICBhd2FpdCBmZC53cml0ZVVMRTMyKG44KTtcbiAgICBhd2FpdCBiaW5GaWxlVXRpbHMud3JpdGVCaWdJbnQoZmQsIHByaW1lLCBuOCk7XG4gICAgYXdhaXQgZmQud3JpdGVVTEUzMih3aXRuZXNzLmxlbmd0aCk7XG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLmVuZFdyaXRlU2VjdGlvbihmZCk7XG5cbiAgICBhd2FpdCBiaW5GaWxlVXRpbHMuc3RhcnRXcml0ZVNlY3Rpb24oZmQsIDIpO1xuICAgIGZvciAobGV0IGk9MDsgaTx3aXRuZXNzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGF3YWl0IGJpbkZpbGVVdGlscy53cml0ZUJpZ0ludChmZCwgd2l0bmVzc1tpXSwgbjgpO1xuICAgIH1cbiAgICBhd2FpdCBiaW5GaWxlVXRpbHMuZW5kV3JpdGVTZWN0aW9uKGZkLCAyKTtcblxuXG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB3cml0ZUJpbihmZCwgd2l0bmVzc0JpbiwgcHJpbWUpIHtcblxuICAgIGF3YWl0IGJpbkZpbGVVdGlscy5zdGFydFdyaXRlU2VjdGlvbihmZCwgMSk7XG4gICAgY29uc3QgbjggPSAoTWF0aC5mbG9vciggKFNjYWxhci5iaXRMZW5ndGgocHJpbWUpIC0gMSkgLyA2NCkgKzEpKjg7XG4gICAgYXdhaXQgZmQud3JpdGVVTEUzMihuOCk7XG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLndyaXRlQmlnSW50KGZkLCBwcmltZSwgbjgpO1xuICAgIGlmICh3aXRuZXNzQmluLmJ5dGVMZW5ndGggJSBuOCAhPSAwKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgd2l0bmVzcyBsZW5ndGhcIik7XG4gICAgfVxuICAgIGF3YWl0IGZkLndyaXRlVUxFMzIod2l0bmVzc0Jpbi5ieXRlTGVuZ3RoIC8gbjgpO1xuICAgIGF3YWl0IGJpbkZpbGVVdGlscy5lbmRXcml0ZVNlY3Rpb24oZmQpO1xuXG5cbiAgICBhd2FpdCBiaW5GaWxlVXRpbHMuc3RhcnRXcml0ZVNlY3Rpb24oZmQsIDIpO1xuICAgIGF3YWl0IGZkLndyaXRlKHdpdG5lc3NCaW4pO1xuICAgIGF3YWl0IGJpbkZpbGVVdGlscy5lbmRXcml0ZVNlY3Rpb24oZmQpO1xuXG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZWFkSGVhZGVyKGZkLCBzZWN0aW9ucykge1xuXG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLnN0YXJ0UmVhZFVuaXF1ZVNlY3Rpb24oZmQsIHNlY3Rpb25zLCAxKTtcbiAgICBjb25zdCBuOCA9IGF3YWl0IGZkLnJlYWRVTEUzMigpO1xuICAgIGNvbnN0IHEgPSBhd2FpdCBiaW5GaWxlVXRpbHMucmVhZEJpZ0ludChmZCwgbjgpO1xuICAgIGNvbnN0IG5XaXRuZXNzID0gYXdhaXQgZmQucmVhZFVMRTMyKCk7XG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLmVuZFJlYWRTZWN0aW9uKGZkKTtcblxuICAgIHJldHVybiB7bjgsIHEsIG5XaXRuZXNzfTtcblxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVhZChmaWxlTmFtZSkge1xuXG4gICAgY29uc3Qge2ZkLCBzZWN0aW9uc30gPSBhd2FpdCBiaW5GaWxlVXRpbHMucmVhZEJpbkZpbGUoZmlsZU5hbWUsIFwid3Ruc1wiLCAyKTtcblxuICAgIGNvbnN0IHtuOCwgbldpdG5lc3N9ID0gYXdhaXQgcmVhZEhlYWRlcihmZCwgc2VjdGlvbnMpO1xuXG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLnN0YXJ0UmVhZFVuaXF1ZVNlY3Rpb24oZmQsIHNlY3Rpb25zLCAyKTtcbiAgICBjb25zdCByZXMgPSBbXTtcbiAgICBmb3IgKGxldCBpPTA7IGk8bldpdG5lc3M7IGkrKykge1xuICAgICAgICBjb25zdCB2ID0gYXdhaXQgYmluRmlsZVV0aWxzLnJlYWRCaWdJbnQoZmQsIG44KTtcbiAgICAgICAgcmVzLnB1c2godik7XG4gICAgfVxuICAgIGF3YWl0IGJpbkZpbGVVdGlscy5lbmRSZWFkU2VjdGlvbihmZCk7XG5cbiAgICBhd2FpdCBmZC5jbG9zZSgpO1xuXG4gICAgcmV0dXJuIHJlcztcbn1cblxuIiwiLypcbiAgICBDb3B5cmlnaHQgMjAxOCAwS0lNUyBhc3NvY2lhdGlvbi5cblxuICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHNuYXJrSlMuXG5cbiAgICBzbmFya0pTIGlzIGEgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdFxuICAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3JcbiAgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuXG4gICAgc25hcmtKUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVFxuICAgIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWVxuICAgIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpY1xuICAgIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cblxuICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gICAgYWxvbmcgd2l0aCBzbmFya0pTLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuKi9cblxuaW1wb3J0ICogYXMgYmluRmlsZVV0aWxzIGZyb20gXCJAaWRlbjMvYmluZmlsZXV0aWxzXCI7XG5pbXBvcnQgKiBhcyB6a2V5VXRpbHMgZnJvbSBcIi4vemtleV91dGlscy5qc1wiO1xuaW1wb3J0ICogYXMgd3Ruc1V0aWxzIGZyb20gXCIuL3d0bnNfdXRpbHMuanNcIjtcbmltcG9ydCB7IGdldEN1cnZlRnJvbVEgYXMgZ2V0Q3VydmUgfSBmcm9tIFwiLi9jdXJ2ZXMuanNcIjtcbmltcG9ydCB7IGxvZzIgfSBmcm9tIFwiLi9taXNjLmpzXCI7XG5pbXBvcnQgeyBTY2FsYXIsIHV0aWxzLCBCaWdCdWZmZXIgfSBmcm9tIFwiZmZqYXZhc2NyaXB0XCI7XG5jb25zdCB7c3RyaW5naWZ5QmlnSW50c30gPSB1dGlscztcblxuZXhwb3J0IGRlZmF1bHQgYXN5bmMgZnVuY3Rpb24gZ3JvdGgxNlByb3ZlKHprZXlGaWxlTmFtZSwgd2l0bmVzc0ZpbGVOYW1lLCBsb2dnZXIsIG9wdGlvbnMpIHtcbiAgICBjb25zdCB7ZmQ6IGZkV3Rucywgc2VjdGlvbnM6IHNlY3Rpb25zV3Ruc30gPSBhd2FpdCBiaW5GaWxlVXRpbHMucmVhZEJpbkZpbGUod2l0bmVzc0ZpbGVOYW1lLCBcInd0bnNcIiwgMiwgMTw8MjUsIDE8PDIzKTtcblxuICAgIGNvbnN0IHd0bnMgPSBhd2FpdCB3dG5zVXRpbHMucmVhZEhlYWRlcihmZFd0bnMsIHNlY3Rpb25zV3Rucyk7XG5cbiAgICBjb25zdCB7ZmQ6IGZkWktleSwgc2VjdGlvbnM6IHNlY3Rpb25zWktleX0gPSBhd2FpdCBiaW5GaWxlVXRpbHMucmVhZEJpbkZpbGUoemtleUZpbGVOYW1lLCBcInprZXlcIiwgMiwgMTw8MjUsIDE8PDIzKTtcblxuICAgIGNvbnN0IHprZXkgPSBhd2FpdCB6a2V5VXRpbHMucmVhZEhlYWRlcihmZFpLZXksIHNlY3Rpb25zWktleSwgdW5kZWZpbmVkLCBvcHRpb25zKTtcblxuICAgIGlmICh6a2V5LnByb3RvY29sICE9IFwiZ3JvdGgxNlwiKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcInprZXkgZmlsZSBpcyBub3QgZ3JvdGgxNlwiKTtcbiAgICB9XG5cbiAgICBpZiAoIVNjYWxhci5lcSh6a2V5LnIsICB3dG5zLnEpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIkN1cnZlIG9mIHRoZSB3aXRuZXNzIGRvZXMgbm90IG1hdGNoIHRoZSBjdXJ2ZSBvZiB0aGUgcHJvdmluZyBrZXlcIik7XG4gICAgfVxuXG4gICAgaWYgKHd0bnMubldpdG5lc3MgIT0gemtleS5uVmFycykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgd2l0bmVzcyBsZW5ndGguIENpcmN1aXQ6ICR7emtleS5uVmFyc30sIHdpdG5lc3M6ICR7d3Rucy5uV2l0bmVzc31gKTtcbiAgICB9XG5cbiAgICBjb25zdCBjdXJ2ZSA9IHprZXkuY3VydmU7XG4gICAgY29uc3QgRnIgPSBjdXJ2ZS5GcjtcbiAgICBjb25zdCBHMSA9IGN1cnZlLkcxO1xuICAgIGNvbnN0IEcyID0gY3VydmUuRzI7XG5cbiAgICBjb25zdCBwb3dlciA9IGxvZzIoemtleS5kb21haW5TaXplKTtcblxuICAgIGlmIChsb2dnZXIpIGxvZ2dlci5kZWJ1ZyhcIlJlYWRpbmcgV3Ruc1wiKTtcbiAgICBjb25zdCBidWZmV2l0bmVzcyA9IGF3YWl0IGJpbkZpbGVVdGlscy5yZWFkU2VjdGlvbihmZFd0bnMsIHNlY3Rpb25zV3RucywgMik7XG4gICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmRlYnVnKFwiUmVhZGluZyBDb2VmZnNcIik7XG4gICAgY29uc3QgYnVmZkNvZWZmcyA9IGF3YWl0IGJpbkZpbGVVdGlscy5yZWFkU2VjdGlvbihmZFpLZXksIHNlY3Rpb25zWktleSwgNCk7XG5cbiAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZGVidWcoXCJCdWlsZGluZyBBQkNcIik7XG4gICAgY29uc3QgW2J1ZmZBX1QsIGJ1ZmZCX1QsIGJ1ZmZDX1RdID0gYXdhaXQgYnVpbGRBQkMxKGN1cnZlLCB6a2V5LCBidWZmV2l0bmVzcywgYnVmZkNvZWZmcywgbG9nZ2VyKTtcblxuICAgIGNvbnN0IGluYyA9IHBvd2VyID09IEZyLnMgPyBjdXJ2ZS5Gci5zaGlmdCA6IGN1cnZlLkZyLndbcG93ZXIrMV07XG5cbiAgICBjb25zdCBidWZmQSA9IGF3YWl0IEZyLmlmZnQoYnVmZkFfVCwgXCJcIiwgXCJcIiwgbG9nZ2VyLCBcIklGRlRfQVwiKTtcbiAgICBjb25zdCBidWZmQW9kZCA9IGF3YWl0IEZyLmJhdGNoQXBwbHlLZXkoYnVmZkEsIEZyLmUoMSksIGluYyk7XG4gICAgY29uc3QgYnVmZkFvZGRfVCA9IGF3YWl0IEZyLmZmdChidWZmQW9kZCwgXCJcIiwgXCJcIiwgbG9nZ2VyLCBcIkZGVF9BXCIpO1xuXG4gICAgY29uc3QgYnVmZkIgPSBhd2FpdCBGci5pZmZ0KGJ1ZmZCX1QsIFwiXCIsIFwiXCIsIGxvZ2dlciwgXCJJRkZUX0JcIik7XG4gICAgY29uc3QgYnVmZkJvZGQgPSBhd2FpdCBGci5iYXRjaEFwcGx5S2V5KGJ1ZmZCLCBGci5lKDEpLCBpbmMpO1xuICAgIGNvbnN0IGJ1ZmZCb2RkX1QgPSBhd2FpdCBGci5mZnQoYnVmZkJvZGQsIFwiXCIsIFwiXCIsIGxvZ2dlciwgXCJGRlRfQlwiKTtcblxuICAgIGNvbnN0IGJ1ZmZDID0gYXdhaXQgRnIuaWZmdChidWZmQ19ULCBcIlwiLCBcIlwiLCBsb2dnZXIsIFwiSUZGVF9DXCIpO1xuICAgIGNvbnN0IGJ1ZmZDb2RkID0gYXdhaXQgRnIuYmF0Y2hBcHBseUtleShidWZmQywgRnIuZSgxKSwgaW5jKTtcbiAgICBjb25zdCBidWZmQ29kZF9UID0gYXdhaXQgRnIuZmZ0KGJ1ZmZDb2RkLCBcIlwiLCBcIlwiLCBsb2dnZXIsIFwiRkZUX0NcIik7XG5cbiAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZGVidWcoXCJKb2luIEFCQ1wiKTtcbiAgICBjb25zdCBidWZmUG9kZF9UID0gYXdhaXQgam9pbkFCQyhjdXJ2ZSwgemtleSwgYnVmZkFvZGRfVCwgYnVmZkJvZGRfVCwgYnVmZkNvZGRfVCwgbG9nZ2VyKTtcblxuICAgIGxldCBwcm9vZiA9IHt9O1xuXG4gICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmRlYnVnKFwiUmVhZGluZyBBIFBvaW50c1wiKTtcbiAgICBjb25zdCBidWZmQmFzZXNBID0gYXdhaXQgYmluRmlsZVV0aWxzLnJlYWRTZWN0aW9uKGZkWktleSwgc2VjdGlvbnNaS2V5LCA1KTtcbiAgICBwcm9vZi5waV9hID0gYXdhaXQgY3VydmUuRzEubXVsdGlFeHBBZmZpbmUoYnVmZkJhc2VzQSwgYnVmZldpdG5lc3MsIGxvZ2dlciwgXCJtdWx0aWV4cCBBXCIpO1xuXG4gICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmRlYnVnKFwiUmVhZGluZyBCMSBQb2ludHNcIik7XG4gICAgY29uc3QgYnVmZkJhc2VzQjEgPSBhd2FpdCBiaW5GaWxlVXRpbHMucmVhZFNlY3Rpb24oZmRaS2V5LCBzZWN0aW9uc1pLZXksIDYpO1xuICAgIGxldCBwaWIxID0gYXdhaXQgY3VydmUuRzEubXVsdGlFeHBBZmZpbmUoYnVmZkJhc2VzQjEsIGJ1ZmZXaXRuZXNzLCBsb2dnZXIsIFwibXVsdGlleHAgQjFcIik7XG5cbiAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZGVidWcoXCJSZWFkaW5nIEIyIFBvaW50c1wiKTtcbiAgICBjb25zdCBidWZmQmFzZXNCMiA9IGF3YWl0IGJpbkZpbGVVdGlscy5yZWFkU2VjdGlvbihmZFpLZXksIHNlY3Rpb25zWktleSwgNyk7XG4gICAgcHJvb2YucGlfYiA9IGF3YWl0IGN1cnZlLkcyLm11bHRpRXhwQWZmaW5lKGJ1ZmZCYXNlc0IyLCBidWZmV2l0bmVzcywgbG9nZ2VyLCBcIm11bHRpZXhwIEIyXCIpO1xuXG4gICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmRlYnVnKFwiUmVhZGluZyBDIFBvaW50c1wiKTtcbiAgICBjb25zdCBidWZmQmFzZXNDID0gYXdhaXQgYmluRmlsZVV0aWxzLnJlYWRTZWN0aW9uKGZkWktleSwgc2VjdGlvbnNaS2V5LCA4KTtcbiAgICBwcm9vZi5waV9jID0gYXdhaXQgY3VydmUuRzEubXVsdGlFeHBBZmZpbmUoYnVmZkJhc2VzQywgYnVmZldpdG5lc3Muc2xpY2UoKHprZXkublB1YmxpYysxKSpjdXJ2ZS5Gci5uOCksIGxvZ2dlciwgXCJtdWx0aWV4cCBDXCIpO1xuXG4gICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmRlYnVnKFwiUmVhZGluZyBIIFBvaW50c1wiKTtcbiAgICBjb25zdCBidWZmQmFzZXNIID0gYXdhaXQgYmluRmlsZVV0aWxzLnJlYWRTZWN0aW9uKGZkWktleSwgc2VjdGlvbnNaS2V5LCA5KTtcbiAgICBjb25zdCByZXNIID0gYXdhaXQgY3VydmUuRzEubXVsdGlFeHBBZmZpbmUoYnVmZkJhc2VzSCwgYnVmZlBvZGRfVCwgbG9nZ2VyLCBcIm11bHRpZXhwIEhcIik7XG5cbiAgICBjb25zdCByID0gY3VydmUuRnIucmFuZG9tKCk7XG4gICAgY29uc3QgcyA9IGN1cnZlLkZyLnJhbmRvbSgpO1xuXG4gICAgcHJvb2YucGlfYSAgPSBHMS5hZGQoIHByb29mLnBpX2EsIHprZXkudmtfYWxwaGFfMSApO1xuICAgIHByb29mLnBpX2EgID0gRzEuYWRkKCBwcm9vZi5waV9hLCBHMS50aW1lc0ZyKCB6a2V5LnZrX2RlbHRhXzEsIHIgKSk7XG5cbiAgICBwcm9vZi5waV9iICA9IEcyLmFkZCggcHJvb2YucGlfYiwgemtleS52a19iZXRhXzIgKTtcbiAgICBwcm9vZi5waV9iICA9IEcyLmFkZCggcHJvb2YucGlfYiwgRzIudGltZXNGciggemtleS52a19kZWx0YV8yLCBzICkpO1xuXG4gICAgcGliMSA9IEcxLmFkZCggcGliMSwgemtleS52a19iZXRhXzEgKTtcbiAgICBwaWIxID0gRzEuYWRkKCBwaWIxLCBHMS50aW1lc0ZyKCB6a2V5LnZrX2RlbHRhXzEsIHMgKSk7XG5cbiAgICBwcm9vZi5waV9jID0gRzEuYWRkKHByb29mLnBpX2MsIHJlc0gpO1xuXG5cbiAgICBwcm9vZi5waV9jICA9IEcxLmFkZCggcHJvb2YucGlfYywgRzEudGltZXNGciggcHJvb2YucGlfYSwgcyApKTtcbiAgICBwcm9vZi5waV9jICA9IEcxLmFkZCggcHJvb2YucGlfYywgRzEudGltZXNGciggcGliMSwgciApKTtcbiAgICBwcm9vZi5waV9jICA9IEcxLmFkZCggcHJvb2YucGlfYywgRzEudGltZXNGciggemtleS52a19kZWx0YV8xLCBGci5uZWcoRnIubXVsKHIscykgKSkpO1xuXG5cbiAgICBsZXQgcHVibGljU2lnbmFscyA9IFtdO1xuXG4gICAgZm9yIChsZXQgaT0xOyBpPD0gemtleS5uUHVibGljOyBpKyspIHtcbiAgICAgICAgY29uc3QgYiA9IGJ1ZmZXaXRuZXNzLnNsaWNlKGkqRnIubjgsIGkqRnIubjgrRnIubjgpO1xuICAgICAgICBwdWJsaWNTaWduYWxzLnB1c2goU2NhbGFyLmZyb21ScHJMRShiKSk7XG4gICAgfVxuXG4gICAgcHJvb2YucGlfYSA9IEcxLnRvT2JqZWN0KEcxLnRvQWZmaW5lKHByb29mLnBpX2EpKTtcbiAgICBwcm9vZi5waV9iID0gRzIudG9PYmplY3QoRzIudG9BZmZpbmUocHJvb2YucGlfYikpO1xuICAgIHByb29mLnBpX2MgPSBHMS50b09iamVjdChHMS50b0FmZmluZShwcm9vZi5waV9jKSk7XG5cbiAgICBwcm9vZi5wcm90b2NvbCA9IFwiZ3JvdGgxNlwiO1xuICAgIHByb29mLmN1cnZlID0gY3VydmUubmFtZTtcblxuICAgIGF3YWl0IGZkWktleS5jbG9zZSgpO1xuICAgIGF3YWl0IGZkV3Rucy5jbG9zZSgpO1xuXG4gICAgcHJvb2YgPSBzdHJpbmdpZnlCaWdJbnRzKHByb29mKTtcbiAgICBwdWJsaWNTaWduYWxzID0gc3RyaW5naWZ5QmlnSW50cyhwdWJsaWNTaWduYWxzKTtcblxuICAgIHJldHVybiB7cHJvb2YsIHB1YmxpY1NpZ25hbHN9O1xufVxuXG5cbmFzeW5jIGZ1bmN0aW9uIGJ1aWxkQUJDMShjdXJ2ZSwgemtleSwgd2l0bmVzcywgY29lZmZzLCBsb2dnZXIpIHtcbiAgICBjb25zdCBuOCA9IGN1cnZlLkZyLm44O1xuICAgIGNvbnN0IHNDb2VmID0gNCozICsgemtleS5uOHI7XG4gICAgY29uc3QgbkNvZWYgPSAoY29lZmZzLmJ5dGVMZW5ndGgtNCkgLyBzQ29lZjtcblxuICAgIGNvbnN0IG91dEJ1ZmZBID0gbmV3IEJpZ0J1ZmZlcih6a2V5LmRvbWFpblNpemUgKiBuOCk7XG4gICAgY29uc3Qgb3V0QnVmZkIgPSBuZXcgQmlnQnVmZmVyKHprZXkuZG9tYWluU2l6ZSAqIG44KTtcbiAgICBjb25zdCBvdXRCdWZmQyA9IG5ldyBCaWdCdWZmZXIoemtleS5kb21haW5TaXplICogbjgpO1xuXG4gICAgY29uc3Qgb3V0QnVmID0gWyBvdXRCdWZmQSwgb3V0QnVmZkIgXTtcbiAgICBmb3IgKGxldCBpPTA7IGk8bkNvZWY7IGkrKykge1xuICAgICAgICBpZiAoKGxvZ2dlcikmJihpJTEwMDAwMDAgPT0gMCkpIGxvZ2dlci5kZWJ1ZyhgUUFQIEFCOiAke2l9LyR7bkNvZWZ9YCk7XG4gICAgICAgIGNvbnN0IGJ1ZmZDb2VmID0gY29lZmZzLnNsaWNlKDQraSpzQ29lZiwgNCtpKnNDb2VmK3NDb2VmKTtcbiAgICAgICAgY29uc3QgYnVmZkNvZWZWID0gbmV3IERhdGFWaWV3KGJ1ZmZDb2VmLmJ1ZmZlcik7XG4gICAgICAgIGNvbnN0IG09IGJ1ZmZDb2VmVi5nZXRVaW50MzIoMCwgdHJ1ZSk7XG4gICAgICAgIGNvbnN0IGM9IGJ1ZmZDb2VmVi5nZXRVaW50MzIoNCwgdHJ1ZSk7XG4gICAgICAgIGNvbnN0IHM9IGJ1ZmZDb2VmVi5nZXRVaW50MzIoOCwgdHJ1ZSk7XG4gICAgICAgIGNvbnN0IGNvZWYgPSBidWZmQ29lZi5zbGljZSgxMiwgMTIrbjgpO1xuICAgICAgICBvdXRCdWZbbV0uc2V0KFxuICAgICAgICAgICAgY3VydmUuRnIuYWRkKFxuICAgICAgICAgICAgICAgIG91dEJ1ZlttXS5zbGljZShjKm44LCBjKm44K244KSxcbiAgICAgICAgICAgICAgICBjdXJ2ZS5Gci5tdWwoY29lZiwgd2l0bmVzcy5zbGljZShzKm44LCBzKm44K244KSlcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjKm44XG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZm9yIChsZXQgaT0wOyBpPHprZXkuZG9tYWluU2l6ZTsgaSsrKSB7XG4gICAgICAgIGlmICgobG9nZ2VyKSYmKGklMTAwMDAwMCA9PSAwKSkgbG9nZ2VyLmRlYnVnKGBRQVAgQzogJHtpfS8ke3prZXkuZG9tYWluU2l6ZX1gKTtcbiAgICAgICAgb3V0QnVmZkMuc2V0KFxuICAgICAgICAgICAgY3VydmUuRnIubXVsKFxuICAgICAgICAgICAgICAgIG91dEJ1ZmZBLnNsaWNlKGkqbjgsIGkqbjgrbjgpLFxuICAgICAgICAgICAgICAgIG91dEJ1ZmZCLnNsaWNlKGkqbjgsIGkqbjgrbjgpLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGkqbjhcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gW291dEJ1ZmZBLCBvdXRCdWZmQiwgb3V0QnVmZkNdO1xuXG59XG5cbi8qXG5hc3luYyBmdW5jdGlvbiBidWlsZEFCQyhjdXJ2ZSwgemtleSwgd2l0bmVzcywgY29lZmZzLCBsb2dnZXIpIHtcbiAgICBjb25zdCBjb25jdXJyZW5jeSA9IGN1cnZlLnRtLmNvbmN1cnJlbmN5O1xuICAgIGNvbnN0IHNDb2VmID0gNCozICsgemtleS5uOHI7XG5cbiAgICBsZXQgZ2V0VWludDMyO1xuXG4gICAgaWYgKGNvZWZmcyBpbnN0YW5jZW9mIEJpZ0J1ZmZlcikge1xuICAgICAgICBjb25zdCBjb2VmZnNEViA9IFtdO1xuICAgICAgICBjb25zdCBQQUdFX0xFTiA9IGNvZWZmcy5idWZmZXJzWzBdLmxlbmd0aDtcbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPCBjb2VmZnMuYnVmZmVycy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgY29lZmZzRFYucHVzaChuZXcgRGF0YVZpZXcoY29lZmZzLmJ1ZmZlcnNbaV0uYnVmZmVyKSk7XG4gICAgICAgIH1cbiAgICAgICAgZ2V0VWludDMyID0gZnVuY3Rpb24gKHBvcykge1xuICAgICAgICAgICAgcmV0dXJuIGNvZWZmc0RWW01hdGguZmxvb3IocG9zL1BBR0VfTEVOKV0uZ2V0VWludDMyKHBvcyAlIFBBR0VfTEVOLCB0cnVlKTtcbiAgICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBjb2VmZnNEViA9IG5ldyBEYXRhVmlldyhjb2VmZnMuYnVmZmVyLCBjb2VmZnMuYnl0ZU9mZnNldCwgY29lZmZzLmJ5dGVMZW5ndGgpO1xuICAgICAgICBnZXRVaW50MzIgPSBmdW5jdGlvbiAocG9zKSB7XG4gICAgICAgICAgICByZXR1cm4gY29lZmZzRFYuZ2V0VWludDMyKHBvcywgdHJ1ZSk7XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgY29uc3QgZWxlbWVudHNQZXJDaHVuayA9IE1hdGguZmxvb3IoemtleS5kb21haW5TaXplL2NvbmN1cnJlbmN5KTtcbiAgICBjb25zdCBwcm9taXNlcyA9IFtdO1xuXG4gICAgY29uc3QgY3V0UG9pbnRzID0gW107XG4gICAgZm9yIChsZXQgaT0wOyBpPGNvbmN1cnJlbmN5OyBpKyspIHtcbiAgICAgICAgY3V0UG9pbnRzLnB1c2goIGdldEN1dFBvaW50KCBNYXRoLmZsb29yKGkqZWxlbWVudHNQZXJDaHVuaykgKSk7XG4gICAgfVxuICAgIGN1dFBvaW50cy5wdXNoKGNvZWZmcy5ieXRlTGVuZ3RoKTtcblxuICAgIGNvbnN0IGNodW5rU2l6ZSA9IDIqKjI2O1xuICAgIGZvciAobGV0IHM9MCA7IHM8emtleS5uVmFycyA7IHMrPSBjaHVua1NpemUpIHtcbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmRlYnVnKGBRQVAgJHtzfTogJHtzfS8ke3prZXkublZhcnN9YCk7XG4gICAgICAgIGNvbnN0IG5zPSBNYXRoLm1pbih6a2V5Lm5WYXJzLXMsIGNodW5rU2l6ZSApO1xuXG4gICAgICAgIGZvciAobGV0IGk9MDsgaTxjb25jdXJyZW5jeTsgaSsrKSB7XG4gICAgICAgICAgICBsZXQgbjtcbiAgICAgICAgICAgIGlmIChpPCBjb25jdXJyZW5jeS0xKSB7XG4gICAgICAgICAgICAgICAgbiA9IGVsZW1lbnRzUGVyQ2h1bms7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIG4gPSB6a2V5LmRvbWFpblNpemUgLSBpKmVsZW1lbnRzUGVyQ2h1bms7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobj09MCkgY29udGludWU7XG5cbiAgICAgICAgICAgIGNvbnN0IHRhc2sgPSBbXTtcblxuICAgICAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiQUxMT0NTRVRcIiwgdmFyOiAwLCBidWZmOiBjb2VmZnMuc2xpY2UoY3V0UG9pbnRzW2ldLCBjdXRQb2ludHNbaSsxXSl9KTtcbiAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkFMTE9DU0VUXCIsIHZhcjogMSwgYnVmZjogd2l0bmVzcy5zbGljZShzKmN1cnZlLkZyLm44LCAocytucykqY3VydmUuRnIubjgpfSk7XG4gICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJBTExPQ1wiLCB2YXI6IDIsIGxlbjogbipjdXJ2ZS5Gci5uOH0pO1xuICAgICAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiQUxMT0NcIiwgdmFyOiAzLCBsZW46IG4qY3VydmUuRnIubjh9KTtcbiAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkFMTE9DXCIsIHZhcjogNCwgbGVuOiBuKmN1cnZlLkZyLm44fSk7XG4gICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJDQUxMXCIsIGZuTmFtZTogXCJxYXBfYnVpbGRBQkNcIiwgcGFyYW1zOltcbiAgICAgICAgICAgICAgICB7dmFyOiAwfSxcbiAgICAgICAgICAgICAgICB7dmFsOiAoY3V0UG9pbnRzW2krMV0gLSBjdXRQb2ludHNbaV0pL3NDb2VmfSxcbiAgICAgICAgICAgICAgICB7dmFyOiAxfSxcbiAgICAgICAgICAgICAgICB7dmFyOiAyfSxcbiAgICAgICAgICAgICAgICB7dmFyOiAzfSxcbiAgICAgICAgICAgICAgICB7dmFyOiA0fSxcbiAgICAgICAgICAgICAgICB7dmFsOiBpKmVsZW1lbnRzUGVyQ2h1bmt9LFxuICAgICAgICAgICAgICAgIHt2YWw6IG59LFxuICAgICAgICAgICAgICAgIHt2YWw6IHN9LFxuICAgICAgICAgICAgICAgIHt2YWw6IG5zfVxuICAgICAgICAgICAgXX0pO1xuICAgICAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiR0VUXCIsIG91dDogMCwgdmFyOiAyLCBsZW46IG4qY3VydmUuRnIubjh9KTtcbiAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkdFVFwiLCBvdXQ6IDEsIHZhcjogMywgbGVuOiBuKmN1cnZlLkZyLm44fSk7XG4gICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJHRVRcIiwgb3V0OiAyLCB2YXI6IDQsIGxlbjogbipjdXJ2ZS5Gci5uOH0pO1xuICAgICAgICAgICAgcHJvbWlzZXMucHVzaChjdXJ2ZS50bS5xdWV1ZUFjdGlvbih0YXNrKSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBsZXQgcmVzdWx0ID0gYXdhaXQgUHJvbWlzZS5hbGwocHJvbWlzZXMpO1xuXG4gICAgY29uc3Qgbkdyb3VwcyA9IHJlc3VsdC5sZW5ndGggLyBjb25jdXJyZW5jeTtcbiAgICBpZiAobkdyb3Vwcz4xKSB7XG4gICAgICAgIGNvbnN0IHByb21pc2VzMiA9IFtdO1xuICAgICAgICBmb3IgKGxldCBpPTA7IGk8Y29uY3VycmVuY3k7IGkrKykge1xuICAgICAgICAgICAgY29uc3QgdGFzaz1bXTtcbiAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkFMTE9DXCIsIHZhcjogMCwgbGVuOiByZXN1bHRbaV1bMF0uYnl0ZUxlbmd0aH0pO1xuICAgICAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiQUxMT0NcIiwgdmFyOiAxLCBsZW46IHJlc3VsdFtpXVswXS5ieXRlTGVuZ3RofSk7XG4gICAgICAgICAgICBmb3IgKGxldCBtPTA7IG08MzsgbSsrKSB7XG4gICAgICAgICAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiU0VUXCIsIHZhcjogMCwgYnVmZjogcmVzdWx0W2ldW21dfSk7XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgcz0xOyBzPG5Hcm91cHM7IHMrKykge1xuICAgICAgICAgICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJTRVRcIiwgdmFyOiAxLCBidWZmOiByZXN1bHRbcypjb25jdXJyZW5jeSArIGldW21dfSk7XG4gICAgICAgICAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkNBTExcIiwgZm5OYW1lOiBcInFhcF9iYXRjaEFkZFwiLCBwYXJhbXM6W1xuICAgICAgICAgICAgICAgICAgICAgICAge3ZhcjogMH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7dmFyOiAxfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHt2YWw6IHJlc3VsdFtpXVttXS5sZW5ndGgvY3VydmUuRnIubjh9LFxuICAgICAgICAgICAgICAgICAgICAgICAge3ZhcjogMH1cbiAgICAgICAgICAgICAgICAgICAgXX0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJHRVRcIiwgb3V0OiBtLCB2YXI6IDAsIGxlbjogcmVzdWx0W2ldW21dLmxlbmd0aH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcHJvbWlzZXMyLnB1c2goY3VydmUudG0ucXVldWVBY3Rpb24odGFzaykpO1xuICAgICAgICB9XG4gICAgICAgIHJlc3VsdCA9IGF3YWl0IFByb21pc2UuYWxsKHByb21pc2VzMik7XG4gICAgfVxuXG4gICAgY29uc3Qgb3V0QnVmZkEgPSBuZXcgQmlnQnVmZmVyKHprZXkuZG9tYWluU2l6ZSAqIGN1cnZlLkZyLm44KTtcbiAgICBjb25zdCBvdXRCdWZmQiA9IG5ldyBCaWdCdWZmZXIoemtleS5kb21haW5TaXplICogY3VydmUuRnIubjgpO1xuICAgIGNvbnN0IG91dEJ1ZmZDID0gbmV3IEJpZ0J1ZmZlcih6a2V5LmRvbWFpblNpemUgKiBjdXJ2ZS5Gci5uOCk7XG4gICAgbGV0IHA9MDtcbiAgICBmb3IgKGxldCBpPTA7IGk8cmVzdWx0Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIG91dEJ1ZmZBLnNldChyZXN1bHRbaV1bMF0sIHApO1xuICAgICAgICBvdXRCdWZmQi5zZXQocmVzdWx0W2ldWzFdLCBwKTtcbiAgICAgICAgb3V0QnVmZkMuc2V0KHJlc3VsdFtpXVsyXSwgcCk7XG4gICAgICAgIHAgKz0gcmVzdWx0W2ldWzBdLmJ5dGVMZW5ndGg7XG4gICAgfVxuXG4gICAgcmV0dXJuIFtvdXRCdWZmQSwgb3V0QnVmZkIsIG91dEJ1ZmZDXTtcblxuICAgIGZ1bmN0aW9uIGdldEN1dFBvaW50KHYpIHtcbiAgICAgICAgbGV0IG0gPSAwO1xuICAgICAgICBsZXQgbiA9IGdldFVpbnQzMigwKTtcbiAgICAgICAgd2hpbGUgKG0gPCBuKSB7XG4gICAgICAgICAgICB2YXIgayA9IE1hdGguZmxvb3IoKG4gKyBtKSAvIDIpO1xuICAgICAgICAgICAgY29uc3QgdmEgPSBnZXRVaW50MzIoNCArIGsqc0NvZWYgKyA0KTtcbiAgICAgICAgICAgIGlmICh2YSA+IHYpIHtcbiAgICAgICAgICAgICAgICBuID0gayAtIDE7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHZhIDwgdikge1xuICAgICAgICAgICAgICAgIG0gPSBrICsgMTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgbiA9IGs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIDQgKyBtKnNDb2VmO1xuICAgIH1cbn1cbiovXG5cbmFzeW5jIGZ1bmN0aW9uIGpvaW5BQkMoY3VydmUsIHprZXksIGEsIGIsIGMsIGxvZ2dlcikge1xuICAgIGNvbnN0IE1BWF9DSFVOS19TSVpFID0gMSA8PCAyMjtcblxuICAgIGNvbnN0IG44ID0gY3VydmUuRnIubjg7XG4gICAgY29uc3QgbkVsZW1lbnRzID0gTWF0aC5mbG9vcihhLmJ5dGVMZW5ndGggLyBjdXJ2ZS5Gci5uOCk7XG5cbiAgICBjb25zdCBwcm9taXNlcyA9IFtdO1xuXG4gICAgZm9yIChsZXQgaT0wOyBpPG5FbGVtZW50czsgaSArPSBNQVhfQ0hVTktfU0laRSkge1xuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZGVidWcoYEpvaW5BQkM6ICR7aX0vJHtuRWxlbWVudHN9YCk7XG4gICAgICAgIGNvbnN0IG49IE1hdGgubWluKG5FbGVtZW50cyAtIGksIE1BWF9DSFVOS19TSVpFKTtcblxuICAgICAgICBjb25zdCB0YXNrID0gW107XG5cbiAgICAgICAgY29uc3QgYUNodW5rID0gYS5zbGljZShpKm44LCAoaSArIG4pKm44ICk7XG4gICAgICAgIGNvbnN0IGJDaHVuayA9IGIuc2xpY2UoaSpuOCwgKGkgKyBuKSpuOCApO1xuICAgICAgICBjb25zdCBjQ2h1bmsgPSBjLnNsaWNlKGkqbjgsIChpICsgbikqbjggKTtcblxuICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJBTExPQ1NFVFwiLCB2YXI6IDAsIGJ1ZmY6IGFDaHVua30pO1xuICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJBTExPQ1NFVFwiLCB2YXI6IDEsIGJ1ZmY6IGJDaHVua30pO1xuICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJBTExPQ1NFVFwiLCB2YXI6IDIsIGJ1ZmY6IGNDaHVua30pO1xuICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJBTExPQ1wiLCB2YXI6IDMsIGxlbjogbipuOH0pO1xuICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJDQUxMXCIsIGZuTmFtZTogXCJxYXBfam9pbkFCQ1wiLCBwYXJhbXM6W1xuICAgICAgICAgICAge3ZhcjogMH0sXG4gICAgICAgICAgICB7dmFyOiAxfSxcbiAgICAgICAgICAgIHt2YXI6IDJ9LFxuICAgICAgICAgICAge3ZhbDogbn0sXG4gICAgICAgICAgICB7dmFyOiAzfSxcbiAgICAgICAgXX0pO1xuICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJDQUxMXCIsIGZuTmFtZTogXCJmcm1fYmF0Y2hGcm9tTW9udGdvbWVyeVwiLCBwYXJhbXM6W1xuICAgICAgICAgICAge3ZhcjogM30sXG4gICAgICAgICAgICB7dmFsOiBufSxcbiAgICAgICAgICAgIHt2YXI6IDN9XG4gICAgICAgIF19KTtcbiAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiR0VUXCIsIG91dDogMCwgdmFyOiAzLCBsZW46IG4qbjh9KTtcbiAgICAgICAgcHJvbWlzZXMucHVzaChjdXJ2ZS50bS5xdWV1ZUFjdGlvbih0YXNrKSk7XG4gICAgfVxuXG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgUHJvbWlzZS5hbGwocHJvbWlzZXMpO1xuXG4gICAgbGV0IG91dEJ1ZmY7XG4gICAgaWYgKGEgaW5zdGFuY2VvZiBCaWdCdWZmZXIpIHtcbiAgICAgICAgb3V0QnVmZiA9IG5ldyBCaWdCdWZmZXIoYS5ieXRlTGVuZ3RoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBvdXRCdWZmID0gbmV3IFVpbnQ4QXJyYXkoYS5ieXRlTGVuZ3RoKTtcbiAgICB9XG5cbiAgICBsZXQgcD0wO1xuICAgIGZvciAobGV0IGk9MDsgaTxyZXN1bHQubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgb3V0QnVmZi5zZXQocmVzdWx0W2ldWzBdLCBwKTtcbiAgICAgICAgcCArPSByZXN1bHRbaV1bMF0uYnl0ZUxlbmd0aDtcbiAgICB9XG5cbiAgICByZXR1cm4gb3V0QnVmZjtcbn1cblxuIiwiLypcblxuQ29weXJpZ2h0IDIwMjAgMEtJTVMgYXNzb2NpYXRpb24uXG5cbkxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG55b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG5Zb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG5Vbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG5kaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG5XSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cblNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbmxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuXG4qL1xuXG5leHBvcnQgZnVuY3Rpb24gZmxhdEFycmF5KGEpIHtcbiAgICBsZXQgcmVzID0gW107XG4gICAgZmlsbEFycmF5KHJlcywgYSk7XG4gICAgcmV0dXJuIHJlcztcblxuICAgIGZ1bmN0aW9uIGZpbGxBcnJheShyZXMsIGEpIHtcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoYSkpIHtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYS5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIGZpbGxBcnJheShyZXMsIGFbaV0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmVzLnB1c2goYSk7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8vIFJlZiBodHRwczovL2dpdGh1Yi5jb20vaWRlbjMvY2lyY29tL2NvbW1pdC9lYzYzODhjZjZlYjYyNDYzNTM5Y2I0YzQwY2MzY2VhZTk4MjZkZTE5XG5leHBvcnQgZnVuY3Rpb24gbm9ybWFsaXplKG4sIHByaW1lKSB7XG4gICAgbGV0IHJlcyA9IEJpZ0ludChuKSAlIHByaW1lO1xuICAgIGlmIChyZXMgPCAwKSByZXMgKz0gcHJpbWU7XG4gICAgcmV0dXJuIHJlcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZudkhhc2goc3RyKSB7XG4gICAgY29uc3QgdWludDY0X21heCA9IEJpZ0ludCgyKSAqKiBCaWdJbnQoNjQpO1xuICAgIGxldCBoYXNoID0gQmlnSW50KFwiMHhDQkYyOUNFNDg0MjIyMzI1XCIpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc3RyLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGhhc2ggXj0gQmlnSW50KHN0cltpXS5jaGFyQ29kZUF0KDApKTtcbiAgICAgICAgaGFzaCAqPSBCaWdJbnQoMHgxMDAwMDAwMDFCMyk7XG4gICAgICAgIGhhc2ggJT0gdWludDY0X21heDtcbiAgICB9XG4gICAgbGV0IHNoYXNoID0gaGFzaC50b1N0cmluZygxNik7XG4gICAgbGV0IG4gPSAxNiAtIHNoYXNoLmxlbmd0aDtcbiAgICBzaGFzaCA9IFwiMFwiLnJlcGVhdChuKS5jb25jYXQoc2hhc2gpO1xuICAgIHJldHVybiBzaGFzaDtcbn1cblxuLy8gTm90ZSB0aGF0IHRoaXMgcGFkcyB6ZXJvc1xuZXhwb3J0IGZ1bmN0aW9uIHRvQXJyYXkzMihzLCBzaXplKSB7XG4gICAgY29uc3QgcmVzID0gW107IC8vbmV3IFVpbnQzMkFycmF5KHNpemUpOyAvL2hhcyBubyB1bnNoaWZ0XG4gICAgbGV0IHJlbSA9IEJpZ0ludChzKTtcbiAgICBjb25zdCByYWRpeCA9IEJpZ0ludCgweDEwMDAwMDAwMCk7XG4gICAgd2hpbGUgKHJlbSkge1xuICAgICAgICByZXMudW5zaGlmdChOdW1iZXIocmVtICUgcmFkaXgpKTtcbiAgICAgICAgcmVtID0gcmVtIC8gcmFkaXg7XG4gICAgfVxuICAgIGlmIChzaXplKSB7XG4gICAgICAgIGxldCBpID0gc2l6ZSAtIHJlcy5sZW5ndGg7XG4gICAgICAgIHdoaWxlIChpID4gMCkge1xuICAgICAgICAgICAgcmVzLnVuc2hpZnQoMCk7XG4gICAgICAgICAgICBpLS07XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlcztcbn1cbiIsIi8qIGdsb2JhbHMgV2ViQXNzZW1ibHkgKi9cbi8qXG5cbkNvcHlyaWdodCAyMDIwIDBLSU1TIGFzc29jaWF0aW9uLlxuXG5MaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xueW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG5TZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG5saW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cblxuKi9cblxuaW1wb3J0IHtmbGF0QXJyYXksIGZudkhhc2gsIHRvQXJyYXkzMiwgbm9ybWFsaXplfSBmcm9tIFwiLi91dGlscy5qc1wiO1xuaW1wb3J0IHtTY2FsYXIsIEYxRmllbGR9IGZyb20gXCJmZmphdmFzY3JpcHRcIjtcblxuZXhwb3J0IGRlZmF1bHQgYXN5bmMgZnVuY3Rpb24gYnVpbGRlcihjb2RlLCBvcHRpb25zKSB7XG4gICAgbGV0IGluc3RhbmNlO1xuICAgIGxldCB3YztcbiAgICBsZXQgbWVtb3J5O1xuICAgIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9O1xuXG4gICAgLy8gT25seSBjaXJjb20gMiBpbXBsZW1lbnRzIHZlcnNpb24gbG9va3VwIHRocm91Z2ggZXhwb3J0cyBpbiB0aGUgV0FTTVxuICAgIC8vIFdlIGRlZmF1bHQgdG8gYDFgIGFuZCB1cGRhdGUgaWYgd2Ugc2VlIHRoZSBgZ2V0VmVyc2lvbmAgZXhwb3J0IChtYWpvciB2ZXJzaW9uKVxuICAgIC8vIFRoZXNlIGFyZSB1cGRhdGVkIGFmdGVyIHRoZSBpbnN0YW5jZSBpcyBpbnN0YW50aWF0ZWQsIGFzc3VtaW5nIHRoZSBmdW5jdGlvbnMgYXJlIGF2YWlsYWJsZVxuICAgIGxldCBtYWpvclZlcnNpb24gPSAxO1xuICAgIC8vIEFmdGVyIENpcmNvbSAyLjAuNywgQmxhaW5lIGFkZGVkIGV4cG9ydGVkIGZ1bmN0aW9ucyBmb3IgZ2V0dGluZyBtaW5vciBhbmQgcGF0Y2ggdmVyc2lvbnNcbiAgICBsZXQgbWlub3JWZXJzaW9uID0gMDtcbiAgICAvLyBJZiB3ZSBjYW4ndCBsb29rIHVwIHRoZSBwYXRjaCB2ZXJzaW9uLCBhc3N1bWUgdGhlIGxvd2VzdFxuICAgIGxldCBwYXRjaFZlcnNpb24gPSAwO1xuXG4gICAgbGV0IGNvZGVJc1dlYkFzc2VtYmx5SW5zdGFuY2UgPSBmYWxzZTtcblxuICAgIC8vIElmIGNvZGUgaXMgYWxyZWFkeSBwcmVwYXJlZCBXZWJBc3NlbWJseS5JbnN0YW5jZSwgd2UgdXNlIGl0IGRpcmVjdGx5XG4gICAgaWYgKGNvZGUgaW5zdGFuY2VvZiBXZWJBc3NlbWJseS5JbnN0YW5jZSkge1xuICAgICAgICBpbnN0YW5jZSA9IGNvZGU7XG4gICAgICAgIGNvZGVJc1dlYkFzc2VtYmx5SW5zdGFuY2UgPSB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIGxldCBtZW1vcnlTaXplID0gMzI3Njc7XG5cbiAgICAgICAgaWYgKG9wdGlvbnMubWVtb3J5U2l6ZSkge1xuICAgICAgICAgICAgLy8gbWFrZSBzdXJlIHdlIGhhdmUgaW50XG4gICAgICAgICAgICBtZW1vcnlTaXplID0gcGFyc2VJbnQob3B0aW9ucy5tZW1vcnlTaXplKTtcbiAgICAgICAgICAgIGlmIChtZW1vcnlTaXplIDwgMCkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgbWVtb3J5IHNpemVcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgbWVtb3J5QWxsb2NhdGVkID0gZmFsc2U7XG4gICAgICAgIHdoaWxlICghbWVtb3J5QWxsb2NhdGVkKSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIG1lbW9yeSA9IG5ldyBXZWJBc3NlbWJseS5NZW1vcnkoe2luaXRpYWw6IG1lbW9yeVNpemV9KTtcbiAgICAgICAgICAgICAgICBtZW1vcnlBbGxvY2F0ZWQgPSB0cnVlO1xuICAgICAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICAgICAgaWYgKG1lbW9yeVNpemUgPD0gMSkge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBlcnI7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybihcIkNvdWxkIG5vdCBhbGxvY2F0ZSBcIiArIG1lbW9yeVNpemUgKiAxMDI0ICogNjQgKyBcIiBieXRlcy4gVGhpcyBtYXkgY2F1c2Ugc2V2ZXJlIGluc3RhYmlsaXR5LiBUcnlpbmcgd2l0aCBcIiArIG1lbW9yeVNpemUgKiAxMDI0ICogNjQgLyAyICsgXCIgYnl0ZXNcIik7XG4gICAgICAgICAgICAgICAgbWVtb3J5U2l6ZSA9IE1hdGguZmxvb3IobWVtb3J5U2l6ZSAvIDIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgd2FzbU1vZHVsZSA9IGF3YWl0IFdlYkFzc2VtYmx5LmNvbXBpbGUoY29kZSk7XG5cbiAgICAgICAgbGV0IGVyclN0ciA9IFwiXCI7XG4gICAgICAgIGxldCBtc2dTdHIgPSBcIlwiO1xuXG4gICAgICAgIGluc3RhbmNlID0gYXdhaXQgV2ViQXNzZW1ibHkuaW5zdGFudGlhdGUod2FzbU1vZHVsZSwge1xuICAgICAgICAgICAgZW52OiB7XG4gICAgICAgICAgICAgICAgXCJtZW1vcnlcIjogbWVtb3J5XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcnVudGltZToge1xuICAgICAgICAgICAgICAgIGV4Y2VwdGlvbkhhbmRsZXI6IGZ1bmN0aW9uIChjb2RlKSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBlcnI7XG4gICAgICAgICAgICAgICAgICAgIGlmIChjb2RlID09PSAxKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBlcnIgPSBcIlNpZ25hbCBub3QgZm91bmQuIFwiO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGNvZGUgPT09IDIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVyciA9IFwiVG9vIG1hbnkgc2lnbmFscyBzZXQuIFwiO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGNvZGUgPT09IDMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVyciA9IFwiU2lnbmFsIGFscmVhZHkgc2V0LiBcIjtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChjb2RlID09PSA0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBlcnIgPSBcIkFzc2VydCBGYWlsZWQuIFwiO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGNvZGUgPT09IDUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVyciA9IFwiTm90IGVub3VnaCBtZW1vcnkuIFwiO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGNvZGUgPT09IDYpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVyciA9IFwiSW5wdXQgc2lnbmFsIGFycmF5IGFjY2VzcyBleGNlZWRzIHRoZSBzaXplLiBcIjtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVyciA9IFwiVW5rbm93biBlcnJvci4gXCI7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihcIkVSUk9SOiBcIiwgY29kZSwgZXJyU3RyKTtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGVyciArIGVyclN0cik7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAvLyBBIG5ldyB3YXkgb2YgbG9nZ2luZyBtZXNzYWdlcyB3YXMgYWRkZWQgaW4gQ2lyY29tIDIuMC43IHRoYXQgcmVxdWlyZXMgMiBuZXcgaW1wb3J0c1xuICAgICAgICAgICAgICAgIC8vIGBwcmludEVycm9yTWVzc2FnZWAgYW5kIGB3cml0ZUJ1ZmZlck1lc3NhZ2VgLlxuICAgICAgICAgICAgICAgIHByaW50RXJyb3JNZXNzYWdlOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIGVyclN0ciArPSBnZXRNZXNzYWdlKCkgKyBcIlxcblwiO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgd3JpdGVCdWZmZXJNZXNzYWdlOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG1zZyA9IGdldE1lc3NhZ2UoKTtcbiAgICAgICAgICAgICAgICAgICAgLy8gQW55IGNhbGxzIHRvIGBsb2coKWAgd2lsbCBhbHdheXMgZW5kIHdpdGggYSBgXFxuYCwgc28gdGhhdCdzIHdoZW4gd2UgcHJpbnQgYW5kIHJlc2V0XG4gICAgICAgICAgICAgICAgICAgIGlmIChtc2cgPT09IFwiXFxuXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKG1zZ1N0cik7XG4gICAgICAgICAgICAgICAgICAgICAgICBtc2dTdHIgPSBcIlwiO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gSWYgd2UndmUgYnVmZmVyZWQgb3RoZXIgY29udGVudCwgcHV0IGEgc3BhY2UgaW4gYmV0d2VlbiB0aGUgaXRlbXNcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtc2dTdHIgIT09IFwiXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc2dTdHIgKz0gXCIgXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGVuIGFwcGVuZCB0aGUgbWVzc2FnZSB0byB0aGUgbWVzc2FnZSB3ZSBhcmUgY3JlYXRpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgIG1zZ1N0ciArPSBtc2c7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHNob3dTaGFyZWRSV01lbW9yeTogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBzaGFyZWRfcndfbWVtb3J5X3NpemUgPSBpbnN0YW5jZS5leHBvcnRzLmdldEZpZWxkTnVtTGVuMzIoKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYXJyID0gbmV3IFVpbnQzMkFycmF5KHNoYXJlZF9yd19tZW1vcnlfc2l6ZSk7XG4gICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgc2hhcmVkX3J3X21lbW9yeV9zaXplOyBqKyspIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFycltzaGFyZWRfcndfbWVtb3J5X3NpemUgLSAxIC0gal0gPSBpbnN0YW5jZS5leHBvcnRzLnJlYWRTaGFyZWRSV01lbW9yeShqKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIC8vIEluIGNpcmNvbSAyLjAuNywgdGhleSBjaGFuZ2VkIHRoZSBsb2coKSBmdW5jdGlvbiB0byBhbGxvdyBzdHJpbmdzIGFuZCBjaGFuZ2VkIHRoZVxuICAgICAgICAgICAgICAgICAgICAvLyBvdXRwdXQgQVBJLiBUaGlzIHNtb290aGVzIG92ZXIgdGhlIGJyZWFraW5nIGNoYW5nZS5cbiAgICAgICAgICAgICAgICAgICAgaWYgKG1ham9yVmVyc2lvbiA+PSAyICYmIChtaW5vclZlcnNpb24gPj0gMSB8fCBwYXRjaFZlcnNpb24gPj0gNykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIElmIHdlJ3ZlIGJ1ZmZlcmVkIG90aGVyIGNvbnRlbnQsIHB1dCBhIHNwYWNlIGluIGJldHdlZW4gdGhlIGl0ZW1zXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAobXNnU3RyICE9PSBcIlwiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbXNnU3RyICs9IFwiIFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhlbiBhcHBlbmQgdGhlIHZhbHVlIHRvIHRoZSBtZXNzYWdlIHdlIGFyZSBjcmVhdGluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbXNnID0gKFNjYWxhci5mcm9tQXJyYXkoYXJyLCAweDEwMDAwMDAwMCkudG9TdHJpbmcoKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBtc2dTdHIgKz0gbXNnO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coU2NhbGFyLmZyb21BcnJheShhcnIsIDB4MTAwMDAwMDAwKSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGVycm9yOiBmdW5jdGlvbiAoY29kZSwgcHN0ciwgYSwgYiwgYywgZCkge1xuICAgICAgICAgICAgICAgICAgICBsZXQgZXJyU3RyO1xuICAgICAgICAgICAgICAgICAgICBpZiAoY29kZSA9PT0gNykge1xuICAgICAgICAgICAgICAgICAgICAgICAgZXJyU3RyID0gcDJzdHIocHN0cikgKyBcIiBcIiArIHdjLmdldEZyKGIpLnRvU3RyaW5nKCkgKyBcIiAhPSBcIiArIHdjLmdldEZyKGMpLnRvU3RyaW5nKCkgKyBcIiBcIiArIHAyc3RyKGQpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGNvZGUgPT09IDkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVyclN0ciA9IHAyc3RyKHBzdHIpICsgXCIgXCIgKyB3Yy5nZXRGcihiKS50b1N0cmluZygpICsgXCIgXCIgKyBwMnN0cihjKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICgoY29kZSA9PT0gNSkgJiYgKG9wdGlvbnMuc3ltKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZXJyU3RyID0gcDJzdHIocHN0cikgKyBcIiBcIiArIG9wdGlvbnMuc3ltLmxhYmVsSWR4Mk5hbWVbY107XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJTdHIgPSBwMnN0cihwc3RyKSArIFwiIFwiICsgYSArIFwiIFwiICsgYiArIFwiIFwiICsgYyArIFwiIFwiICsgZDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIkVSUk9SOiBcIiwgY29kZSwgZXJyU3RyKTtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGVyclN0cik7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBsb2c6IGZ1bmN0aW9uIChhKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKHdjLmdldEZyKGEpLnRvU3RyaW5nKCkpO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgbG9nR2V0U2lnbmFsOiBmdW5jdGlvbiAoc2lnbmFsLCBwVmFsKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChvcHRpb25zLmxvZ0dldFNpZ25hbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5sb2dHZXRTaWduYWwoc2lnbmFsLCB3Yy5nZXRGcihwVmFsKSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGxvZ1NldFNpZ25hbDogZnVuY3Rpb24gKHNpZ25hbCwgcFZhbCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAob3B0aW9ucy5sb2dTZXRTaWduYWwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnMubG9nU2V0U2lnbmFsKHNpZ25hbCwgd2MuZ2V0RnIocFZhbCkpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBsb2dTdGFydENvbXBvbmVudDogZnVuY3Rpb24gKGNJZHgpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKG9wdGlvbnMubG9nU3RhcnRDb21wb25lbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnMubG9nU3RhcnRDb21wb25lbnQoY0lkeCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGxvZ0ZpbmlzaENvbXBvbmVudDogZnVuY3Rpb24gKGNJZHgpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKG9wdGlvbnMubG9nRmluaXNoQ29tcG9uZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zLmxvZ0ZpbmlzaENvbXBvbmVudChjSWR4KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBpbnN0YW5jZS5leHBvcnRzLmdldFZlcnNpb24gPT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgIG1ham9yVmVyc2lvbiA9IGluc3RhbmNlLmV4cG9ydHMuZ2V0VmVyc2lvbigpO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIGluc3RhbmNlLmV4cG9ydHMuZ2V0TWlub3JWZXJzaW9uID09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICBtaW5vclZlcnNpb24gPSBpbnN0YW5jZS5leHBvcnRzLmdldE1pbm9yVmVyc2lvbigpO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIGluc3RhbmNlLmV4cG9ydHMuZ2V0UGF0Y2hWZXJzaW9uID09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICBwYXRjaFZlcnNpb24gPSBpbnN0YW5jZS5leHBvcnRzLmdldFBhdGNoVmVyc2lvbigpO1xuICAgIH1cblxuICAgIGNvbnN0IHNhbml0eUNoZWNrID1cbiAgICAgICAgb3B0aW9ucyAmJlxuICAgICAgICAoXG4gICAgICAgICAgICBvcHRpb25zLnNhbml0eUNoZWNrIHx8XG4gICAgICAgICAgICBvcHRpb25zLmxvZ0dldFNpZ25hbCB8fFxuICAgICAgICAgICAgb3B0aW9ucy5sb2dTZXRTaWduYWwgfHxcbiAgICAgICAgICAgIG9wdGlvbnMubG9nU3RhcnRDb21wb25lbnQgfHxcbiAgICAgICAgICAgIG9wdGlvbnMubG9nRmluaXNoQ29tcG9uZW50XG4gICAgICAgICk7XG5cbiAgICAvLyBXZSBleHBsaWNpdGx5IGNoZWNrIGZvciBtYWpvciB2ZXJzaW9uIDIgaW4gY2FzZSB0aGVyZSdzIGEgY2lyY29tIHYzIGluIHRoZSBmdXR1cmVcbiAgICBpZiAobWFqb3JWZXJzaW9uID09PSAyKSB7XG4gICAgICAgIHdjID0gbmV3IFdpdG5lc3NDYWxjdWxhdG9yQ2lyY29tMihpbnN0YW5jZSwgc2FuaXR5Q2hlY2spO1xuICAgIH0gZWxzZSBpZiAobWFqb3JWZXJzaW9uID09PSAxKSB7XG4gICAgICAgIGlmIChjb2RlSXNXZWJBc3NlbWJseUluc3RhbmNlKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0xvYWRpbmcgY29kZSBmcm9tIFdlYkFzc2VtYmx5IGluc3RhbmNlIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIGNpcmNvbSB2ZXJzaW9uIDEnKTtcbiAgICAgICAgfVxuICAgICAgICB3YyA9IG5ldyBXaXRuZXNzQ2FsY3VsYXRvckNpcmNvbTEobWVtb3J5LCBpbnN0YW5jZSwgc2FuaXR5Q2hlY2spO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5zdXBwb3J0ZWQgY2lyY29tIHZlcnNpb246ICR7bWFqb3JWZXJzaW9ufWApO1xuICAgIH1cbiAgICByZXR1cm4gd2M7XG5cbiAgICBmdW5jdGlvbiBnZXRNZXNzYWdlKCkge1xuICAgICAgICBsZXQgbWVzc2FnZSA9IFwiXCI7XG4gICAgICAgIGxldCBjID0gaW5zdGFuY2UuZXhwb3J0cy5nZXRNZXNzYWdlQ2hhcigpO1xuICAgICAgICB3aGlsZSAoYyAhPT0gMCkge1xuICAgICAgICAgICAgbWVzc2FnZSArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGMpO1xuICAgICAgICAgICAgYyA9IGluc3RhbmNlLmV4cG9ydHMuZ2V0TWVzc2FnZUNoYXIoKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbWVzc2FnZTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBwMnN0cihwKSB7XG4gICAgICAgIGNvbnN0IGk4ID0gbmV3IFVpbnQ4QXJyYXkobWVtb3J5LmJ1ZmZlcik7XG5cbiAgICAgICAgY29uc3QgYnl0ZXMgPSBbXTtcblxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaThbcCArIGldID4gMDsgaSsrKSBieXRlcy5wdXNoKGk4W3AgKyBpXSk7XG5cbiAgICAgICAgcmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkobnVsbCwgYnl0ZXMpO1xuICAgIH1cbn1cblxuY2xhc3MgV2l0bmVzc0NhbGN1bGF0b3JDaXJjb20xIHtcbiAgICBjb25zdHJ1Y3RvcihtZW1vcnksIGluc3RhbmNlLCBzYW5pdHlDaGVjaykge1xuICAgICAgICB0aGlzLm1lbW9yeSA9IG1lbW9yeTtcbiAgICAgICAgdGhpcy5pMzIgPSBuZXcgVWludDMyQXJyYXkobWVtb3J5LmJ1ZmZlcik7XG4gICAgICAgIHRoaXMuaW5zdGFuY2UgPSBpbnN0YW5jZTtcblxuICAgICAgICB0aGlzLm4zMiA9ICh0aGlzLmluc3RhbmNlLmV4cG9ydHMuZ2V0RnJMZW4oKSA+PiAyKSAtIDI7XG4gICAgICAgIGNvbnN0IHBSYXdQcmltZSA9IHRoaXMuaW5zdGFuY2UuZXhwb3J0cy5nZXRQUmF3UHJpbWUoKTtcblxuICAgICAgICBjb25zdCBhcnIgPSBuZXcgQXJyYXkodGhpcy5uMzIpO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMubjMyOyBpKyspIHtcbiAgICAgICAgICAgIGFyclt0aGlzLm4zMiAtIDEgLSBpXSA9IHRoaXMuaTMyWyhwUmF3UHJpbWUgPj4gMikgKyBpXTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMucHJpbWUgPSBTY2FsYXIuZnJvbUFycmF5KGFyciwgMHgxMDAwMDAwMDApO1xuXG4gICAgICAgIHRoaXMuRnIgPSBuZXcgRjFGaWVsZCh0aGlzLnByaW1lKTtcblxuICAgICAgICB0aGlzLm1hc2szMiA9IFNjYWxhci5mcm9tU3RyaW5nKFwiRkZGRkZGRkZcIiwgMTYpO1xuICAgICAgICB0aGlzLk5WYXJzID0gdGhpcy5pbnN0YW5jZS5leHBvcnRzLmdldE5WYXJzKCk7XG4gICAgICAgIHRoaXMubjY0ID0gTWF0aC5mbG9vcigodGhpcy5Gci5iaXRMZW5ndGggLSAxKSAvIDY0KSArIDE7XG4gICAgICAgIHRoaXMuUiA9IHRoaXMuRnIuZShTY2FsYXIuc2hpZnRMZWZ0KDEsIHRoaXMubjY0ICogNjQpKTtcbiAgICAgICAgdGhpcy5SSW52ID0gdGhpcy5Gci5pbnYodGhpcy5SKTtcbiAgICAgICAgdGhpcy5zYW5pdHlDaGVjayA9IHNhbml0eUNoZWNrO1xuICAgIH1cblxuICAgIGNpcmNvbV92ZXJzaW9uKCkge1xuICAgICAgICByZXR1cm4gMTtcbiAgICB9XG5cbiAgICBhc3luYyBfZG9DYWxjdWxhdGVXaXRuZXNzKGlucHV0LCBzYW5pdHlDaGVjaykge1xuICAgICAgICB0aGlzLmluc3RhbmNlLmV4cG9ydHMuaW5pdCgodGhpcy5zYW5pdHlDaGVjayB8fCBzYW5pdHlDaGVjaykgPyAxIDogMCk7XG4gICAgICAgIGNvbnN0IHBTaWdPZmZzZXQgPSB0aGlzLmFsbG9jSW50KCk7XG4gICAgICAgIGNvbnN0IHBGciA9IHRoaXMuYWxsb2NGcigpO1xuICAgICAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMoaW5wdXQpO1xuICAgICAgICBrZXlzLmZvckVhY2goKGspID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGggPSBmbnZIYXNoKGspO1xuICAgICAgICAgICAgY29uc3QgaE1TQiA9IHBhcnNlSW50KGguc2xpY2UoMCwgOCksIDE2KTtcbiAgICAgICAgICAgIGNvbnN0IGhMU0IgPSBwYXJzZUludChoLnNsaWNlKDgsIDE2KSwgMTYpO1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICB0aGlzLmluc3RhbmNlLmV4cG9ydHMuZ2V0U2lnbmFsT2Zmc2V0MzIocFNpZ09mZnNldCwgMCwgaE1TQiwgaExTQik7XG4gICAgICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFNpZ25hbCAke2t9IGlzIG5vdCBhbiBpbnB1dCBvZiB0aGUgY2lyY3VpdC5gKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IHNpZ09mZnNldCA9IHRoaXMuZ2V0SW50KHBTaWdPZmZzZXQpO1xuICAgICAgICAgICAgY29uc3QgZkFyciA9IGZsYXRBcnJheShpbnB1dFtrXSk7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGZBcnIubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNldEZyKHBGciwgZkFycltpXSk7XG4gICAgICAgICAgICAgICAgdGhpcy5pbnN0YW5jZS5leHBvcnRzLnNldFNpZ25hbCgwLCAwLCBzaWdPZmZzZXQgKyBpLCBwRnIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBhc3luYyBjYWxjdWxhdGVXaXRuZXNzKGlucHV0LCBzYW5pdHlDaGVjaykge1xuICAgICAgICBjb25zdCBzZWxmID0gdGhpcztcblxuICAgICAgICBjb25zdCBvbGQwID0gc2VsZi5pMzJbMF07XG4gICAgICAgIGNvbnN0IHcgPSBbXTtcblxuICAgICAgICBhd2FpdCBzZWxmLl9kb0NhbGN1bGF0ZVdpdG5lc3MoaW5wdXQsIHNhbml0eUNoZWNrKTtcblxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNlbGYuTlZhcnM7IGkrKykge1xuICAgICAgICAgICAgY29uc3QgcFdpdG5lc3MgPSBzZWxmLmluc3RhbmNlLmV4cG9ydHMuZ2V0UFdpdG5lc3MoaSk7XG4gICAgICAgICAgICB3LnB1c2goc2VsZi5nZXRGcihwV2l0bmVzcykpO1xuICAgICAgICB9XG5cbiAgICAgICAgc2VsZi5pMzJbMF0gPSBvbGQwO1xuICAgICAgICByZXR1cm4gdztcbiAgICB9XG5cbiAgICBhc3luYyBjYWxjdWxhdGVCaW5XaXRuZXNzKGlucHV0LCBzYW5pdHlDaGVjaykge1xuICAgICAgICBjb25zdCBzZWxmID0gdGhpcztcblxuICAgICAgICBjb25zdCBvbGQwID0gc2VsZi5pMzJbMF07XG5cbiAgICAgICAgYXdhaXQgc2VsZi5fZG9DYWxjdWxhdGVXaXRuZXNzKGlucHV0LCBzYW5pdHlDaGVjayk7XG5cbiAgICAgICAgY29uc3QgcFdpdG5lc3NCdWZmZXIgPSBzZWxmLmluc3RhbmNlLmV4cG9ydHMuZ2V0V2l0bmVzc0J1ZmZlcigpO1xuXG4gICAgICAgIHNlbGYuaTMyWzBdID0gb2xkMDtcblxuICAgICAgICBjb25zdCBidWZmID0gc2VsZi5tZW1vcnkuYnVmZmVyLnNsaWNlKHBXaXRuZXNzQnVmZmVyLCBwV2l0bmVzc0J1ZmZlciArIChzZWxmLk5WYXJzICogc2VsZi5uNjQgKiA4KSk7XG4gICAgICAgIHJldHVybiBuZXcgVWludDhBcnJheShidWZmKTtcbiAgICB9XG5cbiAgICBhbGxvY0ludCgpIHtcbiAgICAgICAgY29uc3QgcCA9IHRoaXMuaTMyWzBdO1xuICAgICAgICB0aGlzLmkzMlswXSA9IHAgKyA4O1xuICAgICAgICByZXR1cm4gcDtcbiAgICB9XG5cbiAgICBhbGxvY0ZyKCkge1xuICAgICAgICBjb25zdCBwID0gdGhpcy5pMzJbMF07XG4gICAgICAgIHRoaXMuaTMyWzBdID0gcCArIHRoaXMubjMyICogNCArIDg7XG4gICAgICAgIHJldHVybiBwO1xuICAgIH1cblxuICAgIGdldEludChwKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmkzMltwID4+IDJdO1xuICAgIH1cblxuICAgIHNldEludChwLCB2KSB7XG4gICAgICAgIHRoaXMuaTMyW3AgPj4gMl0gPSB2O1xuICAgIH1cblxuICAgIGdldEZyKHApIHtcbiAgICAgICAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gICAgICAgIGNvbnN0IGlkeCA9IChwID4+IDIpO1xuXG4gICAgICAgIGlmIChzZWxmLmkzMltpZHggKyAxXSAmIDB4ODAwMDAwMDApIHtcbiAgICAgICAgICAgIGNvbnN0IGFyciA9IG5ldyBBcnJheShzZWxmLm4zMik7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNlbGYubjMyOyBpKyspIHtcbiAgICAgICAgICAgICAgICBhcnJbc2VsZi5uMzIgLSAxIC0gaV0gPSBzZWxmLmkzMltpZHggKyAyICsgaV07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCByZXMgPSBzZWxmLkZyLmUoU2NhbGFyLmZyb21BcnJheShhcnIsIDB4MTAwMDAwMDAwKSk7XG4gICAgICAgICAgICBpZiAoc2VsZi5pMzJbaWR4ICsgMV0gJiAweDQwMDAwMDAwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZyb21Nb250Z29tZXJ5KHJlcyk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiByZXM7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChzZWxmLmkzMltpZHhdICYgMHg4MDAwMDAwMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLkZyLmUoc2VsZi5pMzJbaWR4XSAtIDB4MTAwMDAwMDAwKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuRnIuZShzZWxmLmkzMltpZHhdKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGZ1bmN0aW9uIGZyb21Nb250Z29tZXJ5KG4pIHtcbiAgICAgICAgICAgIHJldHVybiBzZWxmLkZyLm11bChzZWxmLlJJbnYsIG4pO1xuICAgICAgICB9XG5cbiAgICB9XG5cblxuICAgIHNldEZyKHAsIHYpIHtcbiAgICAgICAgY29uc3Qgc2VsZiA9IHRoaXM7XG5cbiAgICAgICAgdiA9IHNlbGYuRnIuZSh2KTtcblxuICAgICAgICBjb25zdCBtaW5TaG9ydCA9IHNlbGYuRnIubmVnKHNlbGYuRnIuZShcIjgwMDAwMDAwXCIsIDE2KSk7XG4gICAgICAgIGNvbnN0IG1heFNob3J0ID0gc2VsZi5Gci5lKFwiN0ZGRkZGRkZcIiwgMTYpO1xuXG4gICAgICAgIGlmICgoc2VsZi5Gci5nZXEodiwgbWluU2hvcnQpKVxuICAgICAgICAgICAgJiYgKHNlbGYuRnIubGVxKHYsIG1heFNob3J0KSkpIHtcbiAgICAgICAgICAgIGxldCBhO1xuICAgICAgICAgICAgaWYgKHNlbGYuRnIuZ2VxKHYsIHNlbGYuRnIuemVybykpIHtcbiAgICAgICAgICAgICAgICBhID0gU2NhbGFyLnRvTnVtYmVyKHYpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBhID0gU2NhbGFyLnRvTnVtYmVyKHNlbGYuRnIuc3ViKHYsIG1pblNob3J0KSk7XG4gICAgICAgICAgICAgICAgYSA9IGEgLSAweDgwMDAwMDAwO1xuICAgICAgICAgICAgICAgIGEgPSAweDEwMDAwMDAwMCArIGE7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzZWxmLmkzMlsocCA+PiAyKV0gPSBhO1xuICAgICAgICAgICAgc2VsZi5pMzJbKHAgPj4gMikgKyAxXSA9IDA7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBzZWxmLmkzMlsocCA+PiAyKV0gPSAwO1xuICAgICAgICBzZWxmLmkzMlsocCA+PiAyKSArIDFdID0gMHg4MDAwMDAwMDtcbiAgICAgICAgY29uc3QgYXJyID0gU2NhbGFyLnRvQXJyYXkodiwgMHgxMDAwMDAwMDApO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNlbGYubjMyOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IGlkeCA9IGFyci5sZW5ndGggLSAxIC0gaTtcblxuICAgICAgICAgICAgaWYgKGlkeCA+PSAwKSB7XG4gICAgICAgICAgICAgICAgc2VsZi5pMzJbKHAgPj4gMikgKyAyICsgaV0gPSBhcnJbaWR4XTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgc2VsZi5pMzJbKHAgPj4gMikgKyAyICsgaV0gPSAwO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuXG5jbGFzcyBXaXRuZXNzQ2FsY3VsYXRvckNpcmNvbTIge1xuICAgIGNvbnN0cnVjdG9yKGluc3RhbmNlLCBzYW5pdHlDaGVjaykge1xuICAgICAgICB0aGlzLmluc3RhbmNlID0gaW5zdGFuY2U7XG5cbiAgICAgICAgdGhpcy52ZXJzaW9uID0gdGhpcy5pbnN0YW5jZS5leHBvcnRzLmdldFZlcnNpb24oKTtcbiAgICAgICAgdGhpcy5uMzIgPSB0aGlzLmluc3RhbmNlLmV4cG9ydHMuZ2V0RmllbGROdW1MZW4zMigpO1xuXG4gICAgICAgIHRoaXMuaW5zdGFuY2UuZXhwb3J0cy5nZXRSYXdQcmltZSgpO1xuICAgICAgICBjb25zdCBhcnIgPSBuZXcgVWludDMyQXJyYXkodGhpcy5uMzIpO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMubjMyOyBpKyspIHtcbiAgICAgICAgICAgIGFyclt0aGlzLm4zMiAtIDEgLSBpXSA9IHRoaXMuaW5zdGFuY2UuZXhwb3J0cy5yZWFkU2hhcmVkUldNZW1vcnkoaSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5wcmltZSA9IFNjYWxhci5mcm9tQXJyYXkoYXJyLCAweDEwMDAwMDAwMCk7XG5cbiAgICAgICAgdGhpcy53aXRuZXNzU2l6ZSA9IHRoaXMuaW5zdGFuY2UuZXhwb3J0cy5nZXRXaXRuZXNzU2l6ZSgpO1xuXG4gICAgICAgIHRoaXMuc2FuaXR5Q2hlY2sgPSBzYW5pdHlDaGVjaztcbiAgICB9XG5cbiAgICBjaXJjb21fdmVyc2lvbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaW5zdGFuY2UuZXhwb3J0cy5nZXRWZXJzaW9uKCk7XG4gICAgfVxuXG4gICAgYXN5bmMgX2RvQ2FsY3VsYXRlV2l0bmVzcyhpbnB1dCwgc2FuaXR5Q2hlY2spIHtcbiAgICAgICAgLy9pbnB1dCBpcyBhc3N1bWVkIHRvIGJlIGEgbWFwIGZyb20gc2lnbmFscyB0byBhcnJheXMgb2YgYmlnaW50c1xuICAgICAgICB0aGlzLmluc3RhbmNlLmV4cG9ydHMuaW5pdCgodGhpcy5zYW5pdHlDaGVjayB8fCBzYW5pdHlDaGVjaykgPyAxIDogMCk7XG4gICAgICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhpbnB1dCk7XG4gICAgICAgIGxldCBpbnB1dF9jb3VudGVyID0gMDtcbiAgICAgICAga2V5cy5mb3JFYWNoKChrKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBoID0gZm52SGFzaChrKTtcbiAgICAgICAgICAgIGNvbnN0IGhNU0IgPSBwYXJzZUludChoLnNsaWNlKDAsIDgpLCAxNik7XG4gICAgICAgICAgICBjb25zdCBoTFNCID0gcGFyc2VJbnQoaC5zbGljZSg4LCAxNiksIDE2KTtcbiAgICAgICAgICAgIGNvbnN0IGZBcnIgPSBmbGF0QXJyYXkoaW5wdXRba10pO1xuICAgICAgICAgICAgLy8gU2xpZ2h0IGRldmlhdGlvbiBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9pZGVuMy9jaXJjb20vYmxvYi92Mi4xLjYvY29kZV9wcm9kdWNlcnMvc3JjL3dhc21fZWxlbWVudHMvY29tbW9uL3dpdG5lc3NfY2FsY3VsYXRvci5qc1xuICAgICAgICAgICAgLy8gYmVjYXVzZSBJIGRvbid0IGtub3cgd2hlbiB0aGlzIGV4cG9ydGVkIGZ1bmN0aW9uIHdhcyBhZGRlZFxuICAgICAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmluc3RhbmNlLmV4cG9ydHMuZ2V0SW5wdXRTaWduYWxTaXplID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgICAgICAgICBsZXQgc2lnbmFsU2l6ZSA9IHRoaXMuaW5zdGFuY2UuZXhwb3J0cy5nZXRJbnB1dFNpZ25hbFNpemUoaE1TQiwgaExTQik7XG4gICAgICAgICAgICAgICAgaWYgKHNpZ25hbFNpemUgPCAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgU2lnbmFsICR7a30gbm90IGZvdW5kXFxuYCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChmQXJyLmxlbmd0aCA8IHNpZ25hbFNpemUpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBOb3QgZW5vdWdoIHZhbHVlcyBmb3IgaW5wdXQgc2lnbmFsICR7a31cXG5gKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGZBcnIubGVuZ3RoID4gc2lnbmFsU2l6ZSkge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFRvbyBtYW55IHZhbHVlcyBmb3IgaW5wdXQgc2lnbmFsICR7a31cXG5gKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGZBcnIubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICBjb25zdCBhcnJGciA9IHRvQXJyYXkzMihub3JtYWxpemUoZkFycltpXSwgdGhpcy5wcmltZSksIHRoaXMubjMyKTtcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMubjMyOyBqKyspIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbnN0YW5jZS5leHBvcnRzLndyaXRlU2hhcmVkUldNZW1vcnkoaiwgYXJyRnJbdGhpcy5uMzIgLSAxIC0gal0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmluc3RhbmNlLmV4cG9ydHMuc2V0SW5wdXRTaWduYWwoaE1TQiwgaExTQiwgaSk7XG4gICAgICAgICAgICAgICAgICAgIGlucHV0X2NvdW50ZXIrKztcbiAgICAgICAgICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coYEFmdGVyIGFkZGluZyBzaWduYWwgJHtpfSBvZiAke2t9YClcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGVycik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgIH0pO1xuICAgICAgICBpZiAoaW5wdXRfY291bnRlciA8IHRoaXMuaW5zdGFuY2UuZXhwb3J0cy5nZXRJbnB1dFNpemUoKSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBOb3QgYWxsIGlucHV0cyBoYXZlIGJlZW4gc2V0LiBPbmx5ICR7aW5wdXRfY291bnRlcn0gb3V0IG9mICR7dGhpcy5pbnN0YW5jZS5leHBvcnRzLmdldElucHV0U2l6ZSgpfWApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgYXN5bmMgY2FsY3VsYXRlV2l0bmVzcyhpbnB1dCwgc2FuaXR5Q2hlY2spIHtcbiAgICAgICAgY29uc3QgdyA9IFtdO1xuXG4gICAgICAgIGF3YWl0IHRoaXMuX2RvQ2FsY3VsYXRlV2l0bmVzcyhpbnB1dCwgc2FuaXR5Q2hlY2spO1xuXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy53aXRuZXNzU2l6ZTsgaSsrKSB7XG4gICAgICAgICAgICB0aGlzLmluc3RhbmNlLmV4cG9ydHMuZ2V0V2l0bmVzcyhpKTtcbiAgICAgICAgICAgIGNvbnN0IGFyciA9IG5ldyBVaW50MzJBcnJheSh0aGlzLm4zMik7XG4gICAgICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMubjMyOyBqKyspIHtcbiAgICAgICAgICAgICAgICBhcnJbdGhpcy5uMzIgLSAxIC0gal0gPSB0aGlzLmluc3RhbmNlLmV4cG9ydHMucmVhZFNoYXJlZFJXTWVtb3J5KGopO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdy5wdXNoKFNjYWxhci5mcm9tQXJyYXkoYXJyLCAweDEwMDAwMDAwMCkpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHc7XG4gICAgfVxuXG4gICAgYXN5bmMgY2FsY3VsYXRlV1ROU0JpbihpbnB1dCwgc2FuaXR5Q2hlY2spIHtcbiAgICAgICAgY29uc3QgYnVmZjMyID0gbmV3IFVpbnQzMkFycmF5KHRoaXMud2l0bmVzc1NpemUgKiB0aGlzLm4zMiArIHRoaXMubjMyICsgMTEpO1xuICAgICAgICBjb25zdCBidWZmID0gbmV3IFVpbnQ4QXJyYXkoYnVmZjMyLmJ1ZmZlcik7XG4gICAgICAgIGF3YWl0IHRoaXMuX2RvQ2FsY3VsYXRlV2l0bmVzcyhpbnB1dCwgc2FuaXR5Q2hlY2spO1xuXG4gICAgICAgIC8vXCJ3dG5zXCJcbiAgICAgICAgYnVmZlswXSA9IFwid1wiLmNoYXJDb2RlQXQoMCk7XG4gICAgICAgIGJ1ZmZbMV0gPSBcInRcIi5jaGFyQ29kZUF0KDApO1xuICAgICAgICBidWZmWzJdID0gXCJuXCIuY2hhckNvZGVBdCgwKTtcbiAgICAgICAgYnVmZlszXSA9IFwic1wiLmNoYXJDb2RlQXQoMCk7XG5cbiAgICAgICAgLy92ZXJzaW9uIDJcbiAgICAgICAgYnVmZjMyWzFdID0gMjtcblxuICAgICAgICAvL251bWJlciBvZiBzZWN0aW9uczogMlxuICAgICAgICBidWZmMzJbMl0gPSAyO1xuXG4gICAgICAgIC8vaWQgc2VjdGlvbiAxXG4gICAgICAgIGJ1ZmYzMlszXSA9IDE7XG5cbiAgICAgICAgY29uc3QgbjggPSB0aGlzLm4zMiAqIDQ7XG4gICAgICAgIC8vaWQgc2VjdGlvbiAxIGxlbmd0aCBpbiA2NGJ5dGVzXG4gICAgICAgIGNvbnN0IGlkU2VjdGlvbjFsZW5ndGggPSA4ICsgbjg7XG4gICAgICAgIGNvbnN0IGlkU2VjdGlvbjFsZW5ndGhIZXggPSBpZFNlY3Rpb24xbGVuZ3RoLnRvU3RyaW5nKDE2KTtcbiAgICAgICAgYnVmZjMyWzRdID0gcGFyc2VJbnQoaWRTZWN0aW9uMWxlbmd0aEhleC5zbGljZSgwLCA4KSwgMTYpO1xuICAgICAgICBidWZmMzJbNV0gPSBwYXJzZUludChpZFNlY3Rpb24xbGVuZ3RoSGV4LnNsaWNlKDgsIDE2KSwgMTYpO1xuXG4gICAgICAgIC8vdGhpcy5uMzJcbiAgICAgICAgYnVmZjMyWzZdID0gbjg7XG5cbiAgICAgICAgLy9wcmltZSBudW1iZXJcbiAgICAgICAgdGhpcy5pbnN0YW5jZS5leHBvcnRzLmdldFJhd1ByaW1lKCk7XG5cbiAgICAgICAgbGV0IHBvcyA9IDc7XG4gICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5uMzI7IGorKykge1xuICAgICAgICAgICAgYnVmZjMyW3BvcyArIGpdID0gdGhpcy5pbnN0YW5jZS5leHBvcnRzLnJlYWRTaGFyZWRSV01lbW9yeShqKTtcbiAgICAgICAgfVxuICAgICAgICBwb3MgKz0gdGhpcy5uMzI7XG5cbiAgICAgICAgLy8gd2l0bmVzcyBzaXplXG4gICAgICAgIGJ1ZmYzMltwb3NdID0gdGhpcy53aXRuZXNzU2l6ZTtcbiAgICAgICAgcG9zKys7XG5cbiAgICAgICAgLy9pZCBzZWN0aW9uIDJcbiAgICAgICAgYnVmZjMyW3Bvc10gPSAyO1xuICAgICAgICBwb3MrKztcblxuICAgICAgICAvLyBzZWN0aW9uIDIgbGVuZ3RoXG4gICAgICAgIGNvbnN0IGlkU2VjdGlvbjJsZW5ndGggPSBuOCAqIHRoaXMud2l0bmVzc1NpemU7XG4gICAgICAgIGNvbnN0IGlkU2VjdGlvbjJsZW5ndGhIZXggPSBpZFNlY3Rpb24ybGVuZ3RoLnRvU3RyaW5nKDE2KTtcbiAgICAgICAgYnVmZjMyW3Bvc10gPSBwYXJzZUludChpZFNlY3Rpb24ybGVuZ3RoSGV4LnNsaWNlKDAsIDgpLCAxNik7XG4gICAgICAgIGJ1ZmYzMltwb3MgKyAxXSA9IHBhcnNlSW50KGlkU2VjdGlvbjJsZW5ndGhIZXguc2xpY2UoOCwgMTYpLCAxNik7XG5cbiAgICAgICAgcG9zICs9IDI7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy53aXRuZXNzU2l6ZTsgaSsrKSB7XG4gICAgICAgICAgICB0aGlzLmluc3RhbmNlLmV4cG9ydHMuZ2V0V2l0bmVzcyhpKTtcbiAgICAgICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5uMzI7IGorKykge1xuICAgICAgICAgICAgICAgIGJ1ZmYzMltwb3MgKyBqXSA9IHRoaXMuaW5zdGFuY2UuZXhwb3J0cy5yZWFkU2hhcmVkUldNZW1vcnkoaik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBwb3MgKz0gdGhpcy5uMzI7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gYnVmZjtcbiAgICB9XG5cbn1cbiIsIi8qXG4gICAgQ29weXJpZ2h0IDIwMTggMEtJTVMgYXNzb2NpYXRpb24uXG5cbiAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBzbmFya0pTLlxuXG4gICAgc25hcmtKUyBpcyBhIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXRcbiAgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yXG4gICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cblxuICAgIHNuYXJrSlMgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVRcbiAgICBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFlcbiAgICBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWNcbiAgICBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG5cbiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICAgIGFsb25nIHdpdGggc25hcmtKUy4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cbiovXG5cbmltcG9ydCAqIGFzIGZhc3RGaWxlIGZyb20gXCJmYXN0ZmlsZVwiO1xuaW1wb3J0IHsgV2l0bmVzc0NhbGN1bGF0b3JCdWlsZGVyIH0gZnJvbSBcImNpcmNvbV9ydW50aW1lXCI7XG5pbXBvcnQgKiBhcyB3dG5zVXRpbHMgZnJvbSBcIi4vd3Ruc191dGlscy5qc1wiO1xuaW1wb3J0ICogYXMgYmluRmlsZVV0aWxzIGZyb20gXCJAaWRlbjMvYmluZmlsZXV0aWxzXCI7XG5pbXBvcnQgeyAgdXRpbHMgfSAgIGZyb20gXCJmZmphdmFzY3JpcHRcIjtcbmNvbnN0IHsgdW5zdHJpbmdpZnlCaWdJbnRzfSA9IHV0aWxzO1xuXG5leHBvcnQgZGVmYXVsdCBhc3luYyBmdW5jdGlvbiB3dG5zQ2FsY3VsYXRlKF9pbnB1dCwgd2FzbUZpbGVOYW1lLCB3dG5zRmlsZU5hbWUsIG9wdGlvbnMpIHtcbiAgICBjb25zdCBpbnB1dCA9IHVuc3RyaW5naWZ5QmlnSW50cyhfaW5wdXQpO1xuXG4gICAgY29uc3QgZmRXYXNtID0gYXdhaXQgZmFzdEZpbGUucmVhZEV4aXN0aW5nKHdhc21GaWxlTmFtZSk7XG4gICAgY29uc3Qgd2FzbSA9IGF3YWl0IGZkV2FzbS5yZWFkKGZkV2FzbS50b3RhbFNpemUpO1xuICAgIGF3YWl0IGZkV2FzbS5jbG9zZSgpO1xuXG4gICAgY29uc3Qgd2MgPSBhd2FpdCBXaXRuZXNzQ2FsY3VsYXRvckJ1aWxkZXIod2FzbSwgb3B0aW9ucyk7XG4gICAgaWYgKHdjLmNpcmNvbV92ZXJzaW9uKCkgPT09IDEpIHtcbiAgICAgICAgY29uc3QgdyA9IGF3YWl0IHdjLmNhbGN1bGF0ZUJpbldpdG5lc3MoaW5wdXQpO1xuXG4gICAgICAgIGNvbnN0IGZkV3RucyA9IGF3YWl0IGJpbkZpbGVVdGlscy5jcmVhdGVCaW5GaWxlKHd0bnNGaWxlTmFtZSwgXCJ3dG5zXCIsIDIsIDIpO1xuXG4gICAgICAgIGF3YWl0IHd0bnNVdGlscy53cml0ZUJpbihmZFd0bnMsIHcsIHdjLnByaW1lKTtcbiAgICAgICAgYXdhaXQgZmRXdG5zLmNsb3NlKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgZmRXdG5zID0gYXdhaXQgZmFzdEZpbGUuY3JlYXRlT3ZlcnJpZGUod3Ruc0ZpbGVOYW1lKTtcblxuICAgICAgICBjb25zdCB3ID0gYXdhaXQgd2MuY2FsY3VsYXRlV1ROU0JpbihpbnB1dCk7XG5cbiAgICAgICAgYXdhaXQgZmRXdG5zLndyaXRlKHcpO1xuICAgICAgICBhd2FpdCBmZFd0bnMuY2xvc2UoKTtcbiAgICB9XG59XG4iLCIvKlxuICAgIENvcHlyaWdodCAyMDE4IDBLSU1TIGFzc29jaWF0aW9uLlxuXG4gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2Ygc25hcmtKUy5cblxuICAgIHNuYXJrSlMgaXMgYSBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0XG4gICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxuICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG5cbiAgICBzbmFya0pTIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUXG4gICAgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZXG4gICAgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljXG4gICAgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuXG4gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAgICBhbG9uZyB3aXRoIHNuYXJrSlMuIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXG4qL1xuXG5pbXBvcnQgZ3JvdGgxNl9wcm92ZSBmcm9tIFwiLi9ncm90aDE2X3Byb3ZlLmpzXCI7XG5pbXBvcnQgd3Ruc19jYWxjdWxhdGUgZnJvbSBcIi4vd3Ruc19jYWxjdWxhdGUuanNcIjtcbmltcG9ydCB7dXRpbHN9IGZyb20gXCJmZmphdmFzY3JpcHRcIjtcbmNvbnN0IHt1bnN0cmluZ2lmeUJpZ0ludHN9ID0gdXRpbHM7XG5cbmV4cG9ydCBkZWZhdWx0IGFzeW5jIGZ1bmN0aW9uIGdyb3RoMTZGdWxsUHJvdmUoX2lucHV0LCB3YXNtRmlsZSwgemtleUZpbGVOYW1lLCBsb2dnZXIsIHd0bnNDYWxjT3B0aW9ucywgcHJvdmVyT3B0aW9ucykge1xuICAgIGNvbnN0IGlucHV0ID0gdW5zdHJpbmdpZnlCaWdJbnRzKF9pbnB1dCk7XG5cbiAgICBjb25zdCB3dG5zPSB7XG4gICAgICAgIHR5cGU6IFwibWVtXCJcbiAgICB9O1xuICAgIGF3YWl0IHd0bnNfY2FsY3VsYXRlKGlucHV0LCB3YXNtRmlsZSwgd3Rucywgd3Ruc0NhbGNPcHRpb25zKTtcbiAgICByZXR1cm4gYXdhaXQgZ3JvdGgxNl9wcm92ZSh6a2V5RmlsZU5hbWUsIHd0bnMsIGxvZ2dlciwgcHJvdmVyT3B0aW9ucyk7XG59XG4iLCIvKlxuICAgIENvcHlyaWdodCAyMDE4IDBraW1zIGFzc29jaWF0aW9uLlxuXG4gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2Ygc25hcmtqcy5cblxuICAgIHNuYXJranMgaXMgYSBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3JcbiAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlXG4gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pXG4gICAgYW55IGxhdGVyIHZlcnNpb24uXG5cbiAgICBzbmFya2pzIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZXG4gICAgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yXG4gICAgbW9yZSBkZXRhaWxzLlxuXG4gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcgd2l0aFxuICAgIHNuYXJranMuIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXG4qL1xuXG4vKiBJbXBsZW1lbnRhdGlvbiBvZiB0aGlzIHBhcGVyOiBodHRwczovL2VwcmludC5pYWNyLm9yZy8yMDE2LzI2MC5wZGYgKi9cbmltcG9ydCB7IFNjYWxhciB9IGZyb20gXCJmZmphdmFzY3JpcHRcIjtcbmltcG9ydCAqIGFzIGN1cnZlcyBmcm9tIFwiLi9jdXJ2ZXMuanNcIjtcbmltcG9ydCB7ICB1dGlscyB9ICAgZnJvbSBcImZmamF2YXNjcmlwdFwiO1xuY29uc3Qge3Vuc3RyaW5naWZ5QmlnSW50c30gPSB1dGlscztcblxuZXhwb3J0IGRlZmF1bHQgYXN5bmMgZnVuY3Rpb24gZ3JvdGgxNlZlcmlmeShfdmtfdmVyaWZpZXIsIF9wdWJsaWNTaWduYWxzLCBfcHJvb2YsIGxvZ2dlcikge1xuLypcbiAgICBsZXQgY3B1YiA9IHZrX3ZlcmlmaWVyLklDWzBdO1xuICAgIGZvciAobGV0IHM9IDA7IHM8IHZrX3ZlcmlmaWVyLm5QdWJsaWM7IHMrKykge1xuICAgICAgICBjcHViICA9IEcxLmFkZCggY3B1YiwgRzEudGltZXNTY2FsYXIoIHZrX3ZlcmlmaWVyLklDW3MrMV0sIHB1YmxpY1NpZ25hbHNbc10pKTtcbiAgICB9XG4qL1xuXG4gICAgY29uc3QgdmtfdmVyaWZpZXIgPSB1bnN0cmluZ2lmeUJpZ0ludHMoX3ZrX3ZlcmlmaWVyKTtcbiAgICBjb25zdCBwcm9vZiA9IHVuc3RyaW5naWZ5QmlnSW50cyhfcHJvb2YpO1xuICAgIGNvbnN0IHB1YmxpY1NpZ25hbHMgPSB1bnN0cmluZ2lmeUJpZ0ludHMoX3B1YmxpY1NpZ25hbHMpO1xuXG4gICAgY29uc3QgY3VydmUgPSBhd2FpdCBjdXJ2ZXMuZ2V0Q3VydmVGcm9tTmFtZSh2a192ZXJpZmllci5jdXJ2ZSk7XG5cbiAgICBjb25zdCBJQzAgPSBjdXJ2ZS5HMS5mcm9tT2JqZWN0KHZrX3ZlcmlmaWVyLklDWzBdKTtcbiAgICBjb25zdCBJQyA9IG5ldyBVaW50OEFycmF5KGN1cnZlLkcxLkYubjgqMiAqIHB1YmxpY1NpZ25hbHMubGVuZ3RoKTtcbiAgICBjb25zdCB3ID0gbmV3IFVpbnQ4QXJyYXkoY3VydmUuRnIubjggKiBwdWJsaWNTaWduYWxzLmxlbmd0aCk7XG5cbiAgICBpZiAoIXB1YmxpY0lucHV0c0FyZVZhbGlkKGN1cnZlLCBwdWJsaWNTaWduYWxzKSkge1xuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZXJyb3IoXCJQdWJsaWMgaW5wdXRzIGFyZSBub3QgdmFsaWQuXCIpO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgZm9yIChsZXQgaT0wOyBpPHB1YmxpY1NpZ25hbHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgY29uc3QgYnVmZlAgPSBjdXJ2ZS5HMS5mcm9tT2JqZWN0KHZrX3ZlcmlmaWVyLklDW2krMV0pO1xuICAgICAgICBJQy5zZXQoYnVmZlAsIGkqY3VydmUuRzEuRi5uOCoyKTtcbiAgICAgICAgU2NhbGFyLnRvUnByTEUodywgY3VydmUuRnIubjgqaSwgcHVibGljU2lnbmFsc1tpXSwgY3VydmUuRnIubjgpO1xuICAgIH1cblxuICAgIGxldCBjcHViID0gYXdhaXQgY3VydmUuRzEubXVsdGlFeHBBZmZpbmUoSUMsIHcpO1xuICAgIGNwdWIgPSBjdXJ2ZS5HMS5hZGQoY3B1YiwgSUMwKTtcblxuICAgIGNvbnN0IHBpX2EgPSBjdXJ2ZS5HMS5mcm9tT2JqZWN0KHByb29mLnBpX2EpO1xuICAgIGNvbnN0IHBpX2IgPSBjdXJ2ZS5HMi5mcm9tT2JqZWN0KHByb29mLnBpX2IpO1xuICAgIGNvbnN0IHBpX2MgPSBjdXJ2ZS5HMS5mcm9tT2JqZWN0KHByb29mLnBpX2MpO1xuXG4gICAgaWYgKCFpc1dlbGxDb25zdHJ1Y3RlZChjdXJ2ZSwge3BpX2EsIHBpX2IsIHBpX2N9KSkge1xuICAgICAgICBpZihsb2dnZXIpIGxvZ2dlci5lcnJvcihcIlByb29mIGNvbW1pdG1lbnRzIGFyZSBub3QgdmFsaWQuXCIpO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgY29uc3QgdmtfZ2FtbWFfMiA9IGN1cnZlLkcyLmZyb21PYmplY3QodmtfdmVyaWZpZXIudmtfZ2FtbWFfMik7XG4gICAgY29uc3QgdmtfZGVsdGFfMiA9IGN1cnZlLkcyLmZyb21PYmplY3QodmtfdmVyaWZpZXIudmtfZGVsdGFfMik7XG4gICAgY29uc3QgdmtfYWxwaGFfMSA9IGN1cnZlLkcxLmZyb21PYmplY3QodmtfdmVyaWZpZXIudmtfYWxwaGFfMSk7XG4gICAgY29uc3QgdmtfYmV0YV8yID0gY3VydmUuRzIuZnJvbU9iamVjdCh2a192ZXJpZmllci52a19iZXRhXzIpO1xuXG4gICAgY29uc3QgcmVzID0gYXdhaXQgY3VydmUucGFpcmluZ0VxKFxuICAgICAgICBjdXJ2ZS5HMS5uZWcocGlfYSkgLCBwaV9iLFxuICAgICAgICBjcHViICwgdmtfZ2FtbWFfMixcbiAgICAgICAgcGlfYyAsIHZrX2RlbHRhXzIsXG5cbiAgICAgICAgdmtfYWxwaGFfMSwgdmtfYmV0YV8yXG4gICAgKTtcblxuICAgIGlmICghIHJlcykge1xuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZXJyb3IoXCJJbnZhbGlkIHByb29mXCIpO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oXCJPSyFcIik7XG4gICAgcmV0dXJuIHRydWU7XG59XG5cbmZ1bmN0aW9uIGlzV2VsbENvbnN0cnVjdGVkKGN1cnZlLCBwcm9vZikge1xuICAgIGNvbnN0IEcxID0gY3VydmUuRzE7XG4gICAgY29uc3QgRzIgPSBjdXJ2ZS5HMjtcblxuICAgIHJldHVybiBHMS5pc1ZhbGlkKHByb29mLnBpX2EpXG4gICAgICAgICYmIEcyLmlzVmFsaWQocHJvb2YucGlfYilcbiAgICAgICAgJiYgRzEuaXNWYWxpZChwcm9vZi5waV9jKTtcbn1cblxuZnVuY3Rpb24gcHVibGljSW5wdXRzQXJlVmFsaWQoY3VydmUsIHB1YmxpY0lucHV0cykge1xuICAgIGZvcihsZXQgaSA9IDA7IGkgPCBwdWJsaWNJbnB1dHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgaWYoIVNjYWxhci5sdChwdWJsaWNJbnB1dHNbaV0sIGN1cnZlLnIpKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG59XG4iLCIvKlxuICAgIENvcHlyaWdodCAyMDE4IDBLSU1TIGFzc29jaWF0aW9uLlxuXG4gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2Ygc25hcmtKUy5cblxuICAgIHNuYXJrSlMgaXMgYSBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0XG4gICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxuICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG5cbiAgICBzbmFya0pTIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUXG4gICAgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZXG4gICAgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljXG4gICAgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuXG4gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAgICBhbG9uZyB3aXRoIHNuYXJrSlMuIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXG4qL1xuaW1wb3J0IHsgIHV0aWxzIH0gICBmcm9tIFwiZmZqYXZhc2NyaXB0XCI7XG5jb25zdCB7IHVuc3RyaW5naWZ5QmlnSW50c30gPSB1dGlscztcblxuZnVuY3Rpb24gcDI1NihuKSB7XG4gICAgbGV0IG5zdHIgPSBuLnRvU3RyaW5nKDE2KTtcbiAgICB3aGlsZSAobnN0ci5sZW5ndGggPCA2NCkgbnN0ciA9IFwiMFwiK25zdHI7XG4gICAgbnN0ciA9IGBcIjB4JHtuc3RyfVwiYDtcbiAgICByZXR1cm4gbnN0cjtcbn1cblxuZXhwb3J0IGRlZmF1bHQgYXN5bmMgZnVuY3Rpb24gZ3JvdGgxNkV4cG9ydFNvbGlkaXR5Q2FsbERhdGEoX3Byb29mLCBfcHViKSB7XG4gICAgY29uc3QgcHJvb2YgPSB1bnN0cmluZ2lmeUJpZ0ludHMoX3Byb29mKTtcbiAgICBjb25zdCBwdWIgPSB1bnN0cmluZ2lmeUJpZ0ludHMoX3B1Yik7XG5cbiAgICBsZXQgaW5wdXRzID0gXCJcIjtcbiAgICBmb3IgKGxldCBpPTA7IGk8cHViLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGlmIChpbnB1dHMgIT0gXCJcIikgaW5wdXRzID0gaW5wdXRzICsgXCIsXCI7XG4gICAgICAgIGlucHV0cyA9IGlucHV0cyArIHAyNTYocHViW2ldKTtcbiAgICB9XG5cbiAgICBsZXQgUztcbiAgICBTPWBbJHtwMjU2KHByb29mLnBpX2FbMF0pfSwgJHtwMjU2KHByb29mLnBpX2FbMV0pfV0sYCArXG4gICAgICAgIGBbWyR7cDI1Nihwcm9vZi5waV9iWzBdWzFdKX0sICR7cDI1Nihwcm9vZi5waV9iWzBdWzBdKX1dLFske3AyNTYocHJvb2YucGlfYlsxXVsxXSl9LCAke3AyNTYocHJvb2YucGlfYlsxXVswXSl9XV0sYCArXG4gICAgICAgIGBbJHtwMjU2KHByb29mLnBpX2NbMF0pfSwgJHtwMjU2KHByb29mLnBpX2NbMV0pfV0sYCArXG4gICAgICAgIGBbJHtpbnB1dHN9XWA7XG5cbiAgICByZXR1cm4gUztcbn1cbiIsIi8qXG4gICAgQ29weXJpZ2h0IDIwMTggMEtJTVMgYXNzb2NpYXRpb24uXG5cbiAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBzbmFya0pTLlxuXG4gICAgc25hcmtKUyBpcyBhIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXRcbiAgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yXG4gICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cblxuICAgIHNuYXJrSlMgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVRcbiAgICBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFlcbiAgICBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWNcbiAgICBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG5cbiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICAgIGFsb25nIHdpdGggc25hcmtKUy4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cbiovXG5cbmV4cG9ydCB7ZGVmYXVsdCBhcyBmdWxsUHJvdmV9IGZyb20gXCIuL2dyb3RoMTZfZnVsbHByb3ZlLmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgcHJvdmV9IGZyb20gXCIuL2dyb3RoMTZfcHJvdmUuanNcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyB2ZXJpZnl9IGZyb20gXCIuL2dyb3RoMTZfdmVyaWZ5LmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgZXhwb3J0U29saWRpdHlDYWxsRGF0YX0gZnJvbSBcIi4vZ3JvdGgxNl9leHBvcnRzb2xpZGl0eWNhbGxkYXRhLmpzXCI7XG4iLCIvKlxuICAgIENvcHlyaWdodCAyMDE4IDBLSU1TIGFzc29jaWF0aW9uLlxuXG4gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2Ygc25hcmtKUy5cblxuICAgIHNuYXJrSlMgaXMgYSBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0XG4gICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxuICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG5cbiAgICBzbmFya0pTIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUXG4gICAgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZXG4gICAgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljXG4gICAgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuXG4gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAgICBhbG9uZyB3aXRoIHNuYXJrSlMuIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXG4qL1xuXG5pbXBvcnQgYmxha2UyYiBmcm9tIFwiYmxha2UyYi13YXNtXCI7XG5cbmltcG9ydCB7IENoYUNoYSB9IGZyb20gXCJmZmphdmFzY3JpcHRcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIGhhc2hUb0cyKGN1cnZlLCBoYXNoKSB7XG4gICAgY29uc3QgaGFzaFYgPSBuZXcgRGF0YVZpZXcoaGFzaC5idWZmZXIsIGhhc2guYnl0ZU9mZnNldCwgaGFzaC5ieXRlTGVuZ3RoKTtcbiAgICBjb25zdCBzZWVkID0gW107XG4gICAgZm9yIChsZXQgaT0wOyBpPDg7IGkrKykge1xuICAgICAgICBzZWVkW2ldID0gaGFzaFYuZ2V0VWludDMyKGkqNCk7XG4gICAgfVxuXG4gICAgY29uc3Qgcm5nID0gbmV3IENoYUNoYShzZWVkKTtcblxuICAgIGNvbnN0IGcyX3NwID0gY3VydmUuRzIuZnJvbVJuZyhybmcpO1xuXG4gICAgcmV0dXJuIGcyX3NwO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0RzJzcChjdXJ2ZSwgcGVyc2luYWxpemF0aW9uLCBjaGFsbGVuZ2UsIGcxcywgZzFzeCkge1xuXG4gICAgY29uc3QgaCA9IGJsYWtlMmIoNjQpO1xuICAgIGNvbnN0IGIxID0gbmV3IFVpbnQ4QXJyYXkoW3BlcnNpbmFsaXphdGlvbl0pO1xuICAgIGgudXBkYXRlKGIxKTtcbiAgICBoLnVwZGF0ZShjaGFsbGVuZ2UpO1xuICAgIGNvbnN0IGIzID0gY3VydmUuRzEudG9VbmNvbXByZXNzZWQoZzFzKTtcbiAgICBoLnVwZGF0ZSggYjMpO1xuICAgIGNvbnN0IGI0ID0gY3VydmUuRzEudG9VbmNvbXByZXNzZWQoZzFzeCk7XG4gICAgaC51cGRhdGUoIGI0KTtcbiAgICBjb25zdCBoYXNoID1oLmRpZ2VzdCgpO1xuXG4gICAgcmV0dXJuIGhhc2hUb0cyKGN1cnZlLCBoYXNoKTtcbn1cblxuZnVuY3Rpb24gY2FsY3VsYXRlUHViS2V5KGssIGN1cnZlLCBwZXJzb25hbGl6YXRpb24sIGNoYWxsZW5nZUhhc2gsIHJuZyApIHtcbiAgICBrLmcxX3MgPSBjdXJ2ZS5HMS50b0FmZmluZShjdXJ2ZS5HMS5mcm9tUm5nKHJuZykpO1xuICAgIGsuZzFfc3ggPSBjdXJ2ZS5HMS50b0FmZmluZShjdXJ2ZS5HMS50aW1lc0ZyKGsuZzFfcywgay5wcnZLZXkpKTtcbiAgICBrLmcyX3NwID0gY3VydmUuRzIudG9BZmZpbmUoZ2V0RzJzcChjdXJ2ZSwgcGVyc29uYWxpemF0aW9uLCBjaGFsbGVuZ2VIYXNoLCBrLmcxX3MsIGsuZzFfc3gpKTtcbiAgICBrLmcyX3NweCA9IGN1cnZlLkcyLnRvQWZmaW5lKGN1cnZlLkcyLnRpbWVzRnIoay5nMl9zcCwgay5wcnZLZXkpKTtcbiAgICByZXR1cm4gaztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVBUYXVLZXkoY3VydmUsIGNoYWxsZW5nZUhhc2gsIHJuZykge1xuICAgIGNvbnN0IGtleSA9IHtcbiAgICAgICAgdGF1OiB7fSxcbiAgICAgICAgYWxwaGE6IHt9LFxuICAgICAgICBiZXRhOiB7fVxuICAgIH07XG4gICAga2V5LnRhdS5wcnZLZXkgPSBjdXJ2ZS5Gci5mcm9tUm5nKHJuZyk7XG4gICAga2V5LmFscGhhLnBydktleSA9IGN1cnZlLkZyLmZyb21Sbmcocm5nKTtcbiAgICBrZXkuYmV0YS5wcnZLZXkgPSBjdXJ2ZS5Gci5mcm9tUm5nKHJuZyk7XG4gICAgY2FsY3VsYXRlUHViS2V5KGtleS50YXUsIGN1cnZlLCAwLCBjaGFsbGVuZ2VIYXNoLCBybmcpO1xuICAgIGNhbGN1bGF0ZVB1YktleShrZXkuYWxwaGEsIGN1cnZlLCAxLCBjaGFsbGVuZ2VIYXNoLCBybmcpO1xuICAgIGNhbGN1bGF0ZVB1YktleShrZXkuYmV0YSwgY3VydmUsIDIsIGNoYWxsZW5nZUhhc2gsIHJuZyk7XG4gICAgcmV0dXJuIGtleTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZURlbHRhS2V5KGN1cnZlLCB0cmFuc2NyaXB0LCBybmcpIHtcbiAgICBjb25zdCBkZWx0YSA9IHt9O1xuICAgIGRlbHRhLnBydktleSA9IGN1cnZlLkZyLmZyb21Sbmcocm5nKTtcbiAgICBkZWx0YS5nMV9zID0gY3VydmUuRzEudG9BZmZpbmUoY3VydmUuRzEuZnJvbVJuZyhybmcpKTtcbiAgICBkZWx0YS5nMV9zeCA9IGN1cnZlLkcxLnRvQWZmaW5lKGN1cnZlLkcxLnRpbWVzU2NhbGFyKGRlbHRhLmcxX3MsIGRlbHRhLnBydktleSkpO1xuICAgIGRlbHRhLmcyX3NwID0gaGFzaFRvRzIoY3VydmUsIHRyYW5zY3JpcHQpO1xuICAgIGRlbHRhLmcyX3NweCA9IGN1cnZlLkcyLnRvQWZmaW5lKGN1cnZlLkcyLnRpbWVzU2NhbGFyKGRlbHRhLmcyX3NwLCBkZWx0YS5wcnZLZXkpKTtcbiAgICByZXR1cm4gZGVsdGE7XG59XG4iLCIvKlxuICAgIENvcHlyaWdodCAyMDE4IDBLSU1TIGFzc29jaWF0aW9uLlxuXG4gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2Ygc25hcmtKUy5cblxuICAgIHNuYXJrSlMgaXMgYSBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0XG4gICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxuICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG5cbiAgICBzbmFya0pTIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUXG4gICAgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZXG4gICAgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljXG4gICAgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuXG4gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAgICBhbG9uZyB3aXRoIHNuYXJrSlMuIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXG4qL1xuXG5pbXBvcnQgeyBTY2FsYXIgfSBmcm9tIFwiZmZqYXZhc2NyaXB0XCI7XG5pbXBvcnQgQmxha2UyYiBmcm9tIFwiYmxha2UyYi13YXNtXCI7XG5pbXBvcnQgKiBhcyBrZXlQYWlyIGZyb20gXCIuL2tleXBhaXIuanNcIjtcbmltcG9ydCAqIGFzIG1pc2MgZnJvbSBcIi4vbWlzYy5qc1wiO1xuaW1wb3J0IHsgZ2V0Q3VydmVGcm9tUSB9IGZyb20gXCIuL2N1cnZlcy5qc1wiO1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gd3JpdGVQVGF1SGVhZGVyKGZkLCBjdXJ2ZSwgcG93ZXIsIGNlcmVtb255UG93ZXIpIHtcbiAgICAvLyBXcml0ZSB0aGUgaGVhZGVyXG4gICAgLy8vLy8vLy8vLy9cblxuICAgIGlmICghIGNlcmVtb255UG93ZXIpIGNlcmVtb255UG93ZXIgPSBwb3dlcjtcbiAgICBhd2FpdCBmZC53cml0ZVVMRTMyKDEpOyAvLyBIZWFkZXIgdHlwZVxuICAgIGNvbnN0IHBIZWFkZXJTaXplID0gZmQucG9zO1xuICAgIGF3YWl0IGZkLndyaXRlVUxFNjQoMCk7IC8vIFRlbXBvcmFsbHkgc2V0IHRvIDAgbGVuZ3RoXG5cbiAgICBhd2FpdCBmZC53cml0ZVVMRTMyKGN1cnZlLkYxLm42NCo4KTtcblxuICAgIGNvbnN0IGJ1ZmYgPSBuZXcgVWludDhBcnJheShjdXJ2ZS5GMS5uOCk7XG4gICAgU2NhbGFyLnRvUnByTEUoYnVmZiwgMCwgY3VydmUucSwgY3VydmUuRjEubjgpO1xuICAgIGF3YWl0IGZkLndyaXRlKGJ1ZmYpO1xuICAgIGF3YWl0IGZkLndyaXRlVUxFMzIocG93ZXIpOyAgICAgICAgICAgICAgICAgICAgLy8gcG93ZXJcbiAgICBhd2FpdCBmZC53cml0ZVVMRTMyKGNlcmVtb255UG93ZXIpOyAgICAgICAgICAgICAgIC8vIHBvd2VyXG5cbiAgICBjb25zdCBoZWFkZXJTaXplID0gZmQucG9zIC0gcEhlYWRlclNpemUgLSA4O1xuXG4gICAgY29uc3Qgb2xkUG9zID0gZmQucG9zO1xuXG4gICAgYXdhaXQgZmQud3JpdGVVTEU2NChoZWFkZXJTaXplLCBwSGVhZGVyU2l6ZSk7XG5cbiAgICBmZC5wb3MgPSBvbGRQb3M7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZWFkUFRhdUhlYWRlcihmZCwgc2VjdGlvbnMpIHtcbiAgICBpZiAoIXNlY3Rpb25zWzFdKSAgdGhyb3cgbmV3IEVycm9yKGZkLmZpbGVOYW1lICsgXCI6IEZpbGUgaGFzIG5vICBoZWFkZXJcIik7XG4gICAgaWYgKHNlY3Rpb25zWzFdLmxlbmd0aD4xKSB0aHJvdyBuZXcgRXJyb3IoZmQuZmlsZU5hbWUgK1wiOiBGaWxlIGhhcyBtb3JlIHRoYW4gb25lIGhlYWRlclwiKTtcblxuICAgIGZkLnBvcyA9IHNlY3Rpb25zWzFdWzBdLnA7XG4gICAgY29uc3QgbjggPSBhd2FpdCBmZC5yZWFkVUxFMzIoKTtcbiAgICBjb25zdCBidWZmID0gYXdhaXQgZmQucmVhZChuOCk7XG4gICAgY29uc3QgcSA9IFNjYWxhci5mcm9tUnByTEUoYnVmZik7XG5cbiAgICBjb25zdCBjdXJ2ZSA9IGF3YWl0IGdldEN1cnZlRnJvbVEocSk7XG5cbiAgICBpZiAoY3VydmUuRjEubjY0KjggIT0gbjgpIHRocm93IG5ldyBFcnJvcihmZC5maWxlTmFtZSArXCI6IEludmFsaWQgc2l6ZVwiKTtcblxuICAgIGNvbnN0IHBvd2VyID0gYXdhaXQgZmQucmVhZFVMRTMyKCk7XG4gICAgY29uc3QgY2VyZW1vbnlQb3dlciA9IGF3YWl0IGZkLnJlYWRVTEUzMigpO1xuXG4gICAgaWYgKGZkLnBvcy1zZWN0aW9uc1sxXVswXS5wICE9IHNlY3Rpb25zWzFdWzBdLnNpemUpIHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgUFRhdSBoZWFkZXIgc2l6ZVwiKTtcblxuICAgIHJldHVybiB7Y3VydmUsIHBvd2VyLCBjZXJlbW9ueVBvd2VyfTtcbn1cblxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVhZFB0YXVQdWJLZXkoZmQsIGN1cnZlLCBtb250Z29tZXJ5KSB7XG5cbiAgICBjb25zdCBidWZmID0gYXdhaXQgZmQucmVhZChjdXJ2ZS5GMS5uOCoyKjYgKyBjdXJ2ZS5GMi5uOCoyKjMpO1xuXG4gICAgcmV0dXJuIGZyb21QdGF1UHViS2V5UnByKGJ1ZmYsIDAsIGN1cnZlLCBtb250Z29tZXJ5KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZyb21QdGF1UHViS2V5UnByKGJ1ZmYsIHBvcywgY3VydmUsIG1vbnRnb21lcnkpIHtcblxuICAgIGNvbnN0IGtleSA9IHtcbiAgICAgICAgdGF1OiB7fSxcbiAgICAgICAgYWxwaGE6IHt9LFxuICAgICAgICBiZXRhOiB7fVxuICAgIH07XG5cbiAgICBrZXkudGF1LmcxX3MgPSByZWFkRzEoKTtcbiAgICBrZXkudGF1LmcxX3N4ID0gcmVhZEcxKCk7XG4gICAga2V5LmFscGhhLmcxX3MgPSByZWFkRzEoKTtcbiAgICBrZXkuYWxwaGEuZzFfc3ggPSByZWFkRzEoKTtcbiAgICBrZXkuYmV0YS5nMV9zID0gcmVhZEcxKCk7XG4gICAga2V5LmJldGEuZzFfc3ggPSByZWFkRzEoKTtcbiAgICBrZXkudGF1LmcyX3NweCA9IHJlYWRHMigpO1xuICAgIGtleS5hbHBoYS5nMl9zcHggPSByZWFkRzIoKTtcbiAgICBrZXkuYmV0YS5nMl9zcHggPSByZWFkRzIoKTtcblxuICAgIHJldHVybiBrZXk7XG5cbiAgICBmdW5jdGlvbiByZWFkRzEoKSB7XG4gICAgICAgIGxldCBwO1xuICAgICAgICBpZiAobW9udGdvbWVyeSkge1xuICAgICAgICAgICAgcCA9IGN1cnZlLkcxLmZyb21ScHJMRU0oIGJ1ZmYsIHBvcyApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcCA9IGN1cnZlLkcxLmZyb21ScHJVbmNvbXByZXNzZWQoIGJ1ZmYsIHBvcyApO1xuICAgICAgICB9XG4gICAgICAgIHBvcyArPSBjdXJ2ZS5HMS5GLm44KjI7XG4gICAgICAgIHJldHVybiBwO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHJlYWRHMigpIHtcbiAgICAgICAgbGV0IHA7XG4gICAgICAgIGlmIChtb250Z29tZXJ5KSB7XG4gICAgICAgICAgICBwID0gY3VydmUuRzIuZnJvbVJwckxFTSggYnVmZiwgcG9zICk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBwID0gY3VydmUuRzIuZnJvbVJwclVuY29tcHJlc3NlZCggYnVmZiwgcG9zICk7XG4gICAgICAgIH1cbiAgICAgICAgcG9zICs9IGN1cnZlLkcyLkYubjgqMjtcbiAgICAgICAgcmV0dXJuIHA7XG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdG9QdGF1UHViS2V5UnByKGJ1ZmYsIHBvcywgY3VydmUsIGtleSwgbW9udGdvbWVyeSkge1xuXG4gICAgd3JpdGVHMShrZXkudGF1LmcxX3MpO1xuICAgIHdyaXRlRzEoa2V5LnRhdS5nMV9zeCk7XG4gICAgd3JpdGVHMShrZXkuYWxwaGEuZzFfcyk7XG4gICAgd3JpdGVHMShrZXkuYWxwaGEuZzFfc3gpO1xuICAgIHdyaXRlRzEoa2V5LmJldGEuZzFfcyk7XG4gICAgd3JpdGVHMShrZXkuYmV0YS5nMV9zeCk7XG4gICAgd3JpdGVHMihrZXkudGF1LmcyX3NweCk7XG4gICAgd3JpdGVHMihrZXkuYWxwaGEuZzJfc3B4KTtcbiAgICB3cml0ZUcyKGtleS5iZXRhLmcyX3NweCk7XG5cbiAgICBhc3luYyBmdW5jdGlvbiB3cml0ZUcxKHApIHtcbiAgICAgICAgaWYgKG1vbnRnb21lcnkpIHtcbiAgICAgICAgICAgIGN1cnZlLkcxLnRvUnByTEVNKGJ1ZmYsIHBvcywgcCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjdXJ2ZS5HMS50b1JwclVuY29tcHJlc3NlZChidWZmLCBwb3MsIHApO1xuICAgICAgICB9XG4gICAgICAgIHBvcyArPSBjdXJ2ZS5GMS5uOCoyO1xuICAgIH1cblxuICAgIGFzeW5jIGZ1bmN0aW9uIHdyaXRlRzIocCkge1xuICAgICAgICBpZiAobW9udGdvbWVyeSkge1xuICAgICAgICAgICAgY3VydmUuRzIudG9ScHJMRU0oYnVmZiwgcG9zLCBwKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGN1cnZlLkcyLnRvUnByVW5jb21wcmVzc2VkKGJ1ZmYsIHBvcywgcCk7XG4gICAgICAgIH1cbiAgICAgICAgcG9zICs9IGN1cnZlLkYyLm44KjI7XG4gICAgfVxuXG4gICAgcmV0dXJuIGJ1ZmY7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB3cml0ZVB0YXVQdWJLZXkoZmQsIGN1cnZlLCBrZXksIG1vbnRnb21lcnkpIHtcbiAgICBjb25zdCBidWZmID0gbmV3IFVpbnQ4QXJyYXkoY3VydmUuRjEubjgqMio2ICsgY3VydmUuRjIubjgqMiozKTtcbiAgICB0b1B0YXVQdWJLZXlScHIoYnVmZiwgMCwgY3VydmUsIGtleSwgbW9udGdvbWVyeSk7XG4gICAgYXdhaXQgZmQud3JpdGUoYnVmZik7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHJlYWRDb250cmlidXRpb24oZmQsIGN1cnZlKSB7XG4gICAgY29uc3QgYyA9IHt9O1xuXG4gICAgYy50YXVHMSA9IGF3YWl0IHJlYWRHMSgpO1xuICAgIGMudGF1RzIgPSBhd2FpdCByZWFkRzIoKTtcbiAgICBjLmFscGhhRzEgPSBhd2FpdCByZWFkRzEoKTtcbiAgICBjLmJldGFHMSA9IGF3YWl0IHJlYWRHMSgpO1xuICAgIGMuYmV0YUcyID0gYXdhaXQgcmVhZEcyKCk7XG4gICAgYy5rZXkgPSBhd2FpdCByZWFkUHRhdVB1YktleShmZCwgY3VydmUsIHRydWUpO1xuICAgIGMucGFydGlhbEhhc2ggPSBhd2FpdCBmZC5yZWFkKDIxNik7XG4gICAgYy5uZXh0Q2hhbGxlbmdlID0gYXdhaXQgZmQucmVhZCg2NCk7XG4gICAgYy50eXBlID0gYXdhaXQgZmQucmVhZFVMRTMyKCk7XG5cbiAgICBjb25zdCBidWZmViAgPSBuZXcgVWludDhBcnJheShjdXJ2ZS5HMS5GLm44KjIqNitjdXJ2ZS5HMi5GLm44KjIqMyk7XG4gICAgdG9QdGF1UHViS2V5UnByKGJ1ZmZWLCAwLCBjdXJ2ZSwgYy5rZXksIGZhbHNlKTtcblxuICAgIGNvbnN0IHJlc3BvbnNlSGFzaGVyID0gQmxha2UyYig2NCk7XG4gICAgcmVzcG9uc2VIYXNoZXIuc2V0UGFydGlhbEhhc2goYy5wYXJ0aWFsSGFzaCk7XG4gICAgcmVzcG9uc2VIYXNoZXIudXBkYXRlKGJ1ZmZWKTtcbiAgICBjLnJlc3BvbnNlSGFzaCA9IHJlc3BvbnNlSGFzaGVyLmRpZ2VzdCgpO1xuXG4gICAgY29uc3QgcGFyYW1MZW5ndGggPSBhd2FpdCBmZC5yZWFkVUxFMzIoKTtcbiAgICBjb25zdCBjdXJQb3MgPSBmZC5wb3M7XG4gICAgbGV0IGxhc3RUeXBlID0wO1xuICAgIHdoaWxlIChmZC5wb3MtY3VyUG9zIDwgcGFyYW1MZW5ndGgpIHtcbiAgICAgICAgY29uc3QgYnVmZlR5cGUgPSBhd2FpdCByZWFkRFYoMSk7XG4gICAgICAgIGlmIChidWZmVHlwZVswXTw9IGxhc3RUeXBlKSB0aHJvdyBuZXcgRXJyb3IoXCJQYXJhbWV0ZXJzIGluIHRoZSBjb250cmlidXRpb24gbXVzdCBiZSBzb3J0ZWRcIik7XG4gICAgICAgIGxhc3RUeXBlID0gYnVmZlR5cGVbMF07XG4gICAgICAgIGlmIChidWZmVHlwZVswXT09MSkgeyAgICAgLy8gTmFtZVxuICAgICAgICAgICAgY29uc3QgYnVmZkxlbiA9IGF3YWl0IHJlYWREVigxKTtcbiAgICAgICAgICAgIGNvbnN0IGJ1ZmZTdHIgPSBhd2FpdCByZWFkRFYoYnVmZkxlblswXSk7XG4gICAgICAgICAgICBjLm5hbWUgPSBuZXcgVGV4dERlY29kZXIoKS5kZWNvZGUoYnVmZlN0cik7XG4gICAgICAgIH0gZWxzZSBpZiAoYnVmZlR5cGVbMF09PTIpIHtcbiAgICAgICAgICAgIGNvbnN0IGJ1ZmZFeHAgPSBhd2FpdCByZWFkRFYoMSk7XG4gICAgICAgICAgICBjLm51bUl0ZXJhdGlvbnNFeHAgPSBidWZmRXhwWzBdO1xuICAgICAgICB9IGVsc2UgaWYgKGJ1ZmZUeXBlWzBdPT0zKSB7XG4gICAgICAgICAgICBjb25zdCBidWZmTGVuID0gYXdhaXQgcmVhZERWKDEpO1xuICAgICAgICAgICAgYy5iZWFjb25IYXNoID0gYXdhaXQgcmVhZERWKGJ1ZmZMZW5bMF0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiUGFyYW1ldGVyIG5vdCByZWNvZ25pemVkXCIpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGlmIChmZC5wb3MgIT0gY3VyUG9zICsgcGFyYW1MZW5ndGgpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiUGFyYW1ldGVycyBkbyBub3QgbWF0Y2hcIik7XG4gICAgfVxuXG4gICAgcmV0dXJuIGM7XG5cbiAgICBhc3luYyBmdW5jdGlvbiByZWFkRzEoKSB7XG4gICAgICAgIGNvbnN0IHBCdWZmID0gYXdhaXQgZmQucmVhZChjdXJ2ZS5HMS5GLm44KjIpO1xuICAgICAgICByZXR1cm4gY3VydmUuRzEuZnJvbVJwckxFTSggcEJ1ZmYgKTtcbiAgICB9XG5cbiAgICBhc3luYyBmdW5jdGlvbiByZWFkRzIoKSB7XG4gICAgICAgIGNvbnN0IHBCdWZmID0gYXdhaXQgZmQucmVhZChjdXJ2ZS5HMi5GLm44KjIpO1xuICAgICAgICByZXR1cm4gY3VydmUuRzIuZnJvbVJwckxFTSggcEJ1ZmYgKTtcbiAgICB9XG5cbiAgICBhc3luYyBmdW5jdGlvbiByZWFkRFYobikge1xuICAgICAgICBjb25zdCBiID0gYXdhaXQgZmQucmVhZChuKTtcbiAgICAgICAgcmV0dXJuIG5ldyBVaW50OEFycmF5KGIpO1xuICAgIH1cbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlYWRDb250cmlidXRpb25zKGZkLCBjdXJ2ZSwgc2VjdGlvbnMpIHtcbiAgICBpZiAoIXNlY3Rpb25zWzddKSAgdGhyb3cgbmV3IEVycm9yKGZkLmZpbGVOYW1lICsgXCI6IEZpbGUgaGFzIG5vICBjb250cmlidXRpb25zXCIpO1xuICAgIGlmIChzZWN0aW9uc1s3XVswXS5sZW5ndGg+MSkgdGhyb3cgbmV3IEVycm9yKGZkLmZpbGVOYW1lICtcIjogRmlsZSBoYXMgbW9yZSB0aGFuIG9uZSBjb250cmlidXRpb25zIHNlY3Rpb25cIik7XG5cbiAgICBmZC5wb3MgPSBzZWN0aW9uc1s3XVswXS5wO1xuICAgIGNvbnN0IG5Db250cmlidXRpb25zID0gYXdhaXQgZmQucmVhZFVMRTMyKCk7XG4gICAgY29uc3QgY29udHJpYnV0aW9ucyA9IFtdO1xuICAgIGZvciAobGV0IGk9MDsgaTxuQ29udHJpYnV0aW9uczsgaSsrKSB7XG4gICAgICAgIGNvbnN0IGMgPSBhd2FpdCByZWFkQ29udHJpYnV0aW9uKGZkLCBjdXJ2ZSk7XG4gICAgICAgIGMuaWQgPSBpKzE7XG4gICAgICAgIGNvbnRyaWJ1dGlvbnMucHVzaChjKTtcbiAgICB9XG5cbiAgICBpZiAoZmQucG9zLXNlY3Rpb25zWzddWzBdLnAgIT0gc2VjdGlvbnNbN11bMF0uc2l6ZSkgdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBjb250cmlidXRpb24gc2VjdGlvbiBzaXplXCIpO1xuXG4gICAgcmV0dXJuIGNvbnRyaWJ1dGlvbnM7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHdyaXRlQ29udHJpYnV0aW9uKGZkLCBjdXJ2ZSwgY29udHJpYnV0aW9uKSB7XG5cbiAgICBjb25zdCBidWZmRzEgPSBuZXcgVWludDhBcnJheShjdXJ2ZS5GMS5uOCoyKTtcbiAgICBjb25zdCBidWZmRzIgPSBuZXcgVWludDhBcnJheShjdXJ2ZS5GMi5uOCoyKTtcbiAgICBhd2FpdCB3cml0ZUcxKGNvbnRyaWJ1dGlvbi50YXVHMSk7XG4gICAgYXdhaXQgd3JpdGVHMihjb250cmlidXRpb24udGF1RzIpO1xuICAgIGF3YWl0IHdyaXRlRzEoY29udHJpYnV0aW9uLmFscGhhRzEpO1xuICAgIGF3YWl0IHdyaXRlRzEoY29udHJpYnV0aW9uLmJldGFHMSk7XG4gICAgYXdhaXQgd3JpdGVHMihjb250cmlidXRpb24uYmV0YUcyKTtcbiAgICBhd2FpdCB3cml0ZVB0YXVQdWJLZXkoZmQsIGN1cnZlLCBjb250cmlidXRpb24ua2V5LCB0cnVlKTtcbiAgICBhd2FpdCBmZC53cml0ZShjb250cmlidXRpb24ucGFydGlhbEhhc2gpO1xuICAgIGF3YWl0IGZkLndyaXRlKGNvbnRyaWJ1dGlvbi5uZXh0Q2hhbGxlbmdlKTtcbiAgICBhd2FpdCBmZC53cml0ZVVMRTMyKGNvbnRyaWJ1dGlvbi50eXBlIHx8IDApO1xuXG4gICAgY29uc3QgcGFyYW1zID0gW107XG4gICAgaWYgKGNvbnRyaWJ1dGlvbi5uYW1lKSB7XG4gICAgICAgIHBhcmFtcy5wdXNoKDEpOyAgICAgIC8vIFBhcmFtIE5hbWVcbiAgICAgICAgY29uc3QgbmFtZURhdGEgPSBuZXcgVGV4dEVuY29kZXIoXCJ1dGYtOFwiKS5lbmNvZGUoY29udHJpYnV0aW9uLm5hbWUuc3Vic3RyaW5nKDAsNjQpKTtcbiAgICAgICAgcGFyYW1zLnB1c2gobmFtZURhdGEuYnl0ZUxlbmd0aCk7XG4gICAgICAgIGZvciAobGV0IGk9MDsgaTxuYW1lRGF0YS5ieXRlTGVuZ3RoOyBpKyspIHBhcmFtcy5wdXNoKG5hbWVEYXRhW2ldKTtcbiAgICB9XG4gICAgaWYgKGNvbnRyaWJ1dGlvbi50eXBlID09IDEpIHtcbiAgICAgICAgcGFyYW1zLnB1c2goMik7ICAgICAgLy8gUGFyYW0gbnVtSXRlcmF0aW9uc0V4cFxuICAgICAgICBwYXJhbXMucHVzaChjb250cmlidXRpb24ubnVtSXRlcmF0aW9uc0V4cCk7XG5cbiAgICAgICAgcGFyYW1zLnB1c2goMyk7ICAgICAgLy8gQmVhY29uIEhhc2hcbiAgICAgICAgcGFyYW1zLnB1c2goY29udHJpYnV0aW9uLmJlYWNvbkhhc2guYnl0ZUxlbmd0aCk7XG4gICAgICAgIGZvciAobGV0IGk9MDsgaTxjb250cmlidXRpb24uYmVhY29uSGFzaC5ieXRlTGVuZ3RoOyBpKyspIHBhcmFtcy5wdXNoKGNvbnRyaWJ1dGlvbi5iZWFjb25IYXNoW2ldKTtcbiAgICB9XG4gICAgaWYgKHBhcmFtcy5sZW5ndGg+MCkge1xuICAgICAgICBjb25zdCBwYXJhbXNCdWZmID0gbmV3IFVpbnQ4QXJyYXkocGFyYW1zKTtcbiAgICAgICAgYXdhaXQgZmQud3JpdGVVTEUzMihwYXJhbXNCdWZmLmJ5dGVMZW5ndGgpO1xuICAgICAgICBhd2FpdCBmZC53cml0ZShwYXJhbXNCdWZmKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBhd2FpdCBmZC53cml0ZVVMRTMyKDApO1xuICAgIH1cblxuXG4gICAgYXN5bmMgZnVuY3Rpb24gd3JpdGVHMShwKSB7XG4gICAgICAgIGN1cnZlLkcxLnRvUnByTEVNKGJ1ZmZHMSwgMCwgcCk7XG4gICAgICAgIGF3YWl0IGZkLndyaXRlKGJ1ZmZHMSk7XG4gICAgfVxuXG4gICAgYXN5bmMgZnVuY3Rpb24gd3JpdGVHMihwKSB7XG4gICAgICAgIGN1cnZlLkcyLnRvUnByTEVNKGJ1ZmZHMiwgMCwgcCk7XG4gICAgICAgIGF3YWl0IGZkLndyaXRlKGJ1ZmZHMik7XG4gICAgfVxuXG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB3cml0ZUNvbnRyaWJ1dGlvbnMoZmQsIGN1cnZlLCBjb250cmlidXRpb25zKSB7XG5cbiAgICBhd2FpdCBmZC53cml0ZVVMRTMyKDcpOyAvLyBIZWFkZXIgdHlwZVxuICAgIGNvbnN0IHBDb250cmlidXRpb25zU2l6ZSA9IGZkLnBvcztcbiAgICBhd2FpdCBmZC53cml0ZVVMRTY0KDApOyAvLyBUZW1wb3JhbGx5IHNldCB0byAwIGxlbmd0aFxuXG4gICAgYXdhaXQgZmQud3JpdGVVTEUzMihjb250cmlidXRpb25zLmxlbmd0aCk7XG4gICAgZm9yIChsZXQgaT0wOyBpPCBjb250cmlidXRpb25zLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGF3YWl0IHdyaXRlQ29udHJpYnV0aW9uKGZkLCBjdXJ2ZSwgY29udHJpYnV0aW9uc1tpXSk7XG4gICAgfVxuICAgIGNvbnN0IGNvbnRyaWJ1dGlvbnNTaXplID0gZmQucG9zIC0gcENvbnRyaWJ1dGlvbnNTaXplIC0gODtcblxuICAgIGNvbnN0IG9sZFBvcyA9IGZkLnBvcztcblxuICAgIGF3YWl0IGZkLndyaXRlVUxFNjQoY29udHJpYnV0aW9uc1NpemUsIHBDb250cmlidXRpb25zU2l6ZSk7XG4gICAgZmQucG9zID0gb2xkUG9zO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY2FsY3VsYXRlRmlyc3RDaGFsbGVuZ2VIYXNoKGN1cnZlLCBwb3dlciwgbG9nZ2VyKSB7XG4gICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmRlYnVnKFwiQ2FsY3VsYXRpbmcgRmlyc3QgQ2hhbGxlbmdlIEhhc2hcIik7XG5cbiAgICBjb25zdCBoYXNoZXIgPSBuZXcgQmxha2UyYig2NCk7XG5cbiAgICBjb25zdCB2RzEgPSBuZXcgVWludDhBcnJheShjdXJ2ZS5HMS5GLm44KjIpO1xuICAgIGNvbnN0IHZHMiA9IG5ldyBVaW50OEFycmF5KGN1cnZlLkcyLkYubjgqMik7XG4gICAgY3VydmUuRzEudG9ScHJVbmNvbXByZXNzZWQodkcxLCAwLCBjdXJ2ZS5HMS5nKTtcbiAgICBjdXJ2ZS5HMi50b1JwclVuY29tcHJlc3NlZCh2RzIsIDAsIGN1cnZlLkcyLmcpO1xuXG4gICAgaGFzaGVyLnVwZGF0ZShCbGFrZTJiKDY0KS5kaWdlc3QoKSk7XG5cbiAgICBsZXQgbjtcblxuICAgIG49KDIgKiogcG93ZXIpKjIgLTE7XG4gICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmRlYnVnKFwiQ2FsY3VsYXRlIEluaXRpYWwgSGFzaDogdGF1RzFcIik7XG4gICAgaGFzaEJsb2NrKHZHMSwgbik7XG4gICAgbj0gMiAqKiBwb3dlcjtcbiAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZGVidWcoXCJDYWxjdWxhdGUgSW5pdGlhbCBIYXNoOiB0YXVHMlwiKTtcbiAgICBoYXNoQmxvY2sodkcyLCBuKTtcbiAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZGVidWcoXCJDYWxjdWxhdGUgSW5pdGlhbCBIYXNoOiBhbHBoYVRhdUcxXCIpO1xuICAgIGhhc2hCbG9jayh2RzEsIG4pO1xuICAgIGlmIChsb2dnZXIpIGxvZ2dlci5kZWJ1ZyhcIkNhbGN1bGF0ZSBJbml0aWFsIEhhc2g6IGJldGFUYXVHMVwiKTtcbiAgICBoYXNoQmxvY2sodkcxLCBuKTtcbiAgICBoYXNoZXIudXBkYXRlKHZHMik7XG5cbiAgICByZXR1cm4gaGFzaGVyLmRpZ2VzdCgpO1xuXG4gICAgZnVuY3Rpb24gaGFzaEJsb2NrKGJ1ZmYsIG4pIHtcbiAgICAgICAgLy8gdGhpcyBibG9jayBzaXplIGlzIGEgZ29vZCBjb21wcm9taXNlIGJldHdlZW4gc3BlZWQgYW5kIHRoZSBtYXhpbXVtXG4gICAgICAgIC8vIGlucHV0IHNpemUgb2YgdGhlIEJsYWtlMmIgdXBkYXRlIG1ldGhvZCAoNjUsNTM1LDcyMCBieXRlcykuXG4gICAgICAgIGNvbnN0IGJsb2NrU2l6ZSA9IDM0MTAwMDtcbiAgICAgICAgY29uc3QgbkJsb2NrcyA9IE1hdGguZmxvb3IobiAvIGJsb2NrU2l6ZSk7XG4gICAgICAgIGNvbnN0IHJlbSA9IG4gJSBibG9ja1NpemU7XG4gICAgICAgIGNvbnN0IGJpZ0J1ZmYgPSBuZXcgVWludDhBcnJheShibG9ja1NpemUgKiBidWZmLmJ5dGVMZW5ndGgpO1xuICAgICAgICBmb3IgKGxldCBpPTA7IGk8YmxvY2tTaXplOyBpKyspIHtcbiAgICAgICAgICAgIGJpZ0J1ZmYuc2V0KGJ1ZmYsIGkqYnVmZi5ieXRlTGVuZ3RoKTtcbiAgICAgICAgfVxuICAgICAgICBmb3IgKGxldCBpPTA7IGk8bkJsb2NrczsgaSsrKSB7XG4gICAgICAgICAgICBoYXNoZXIudXBkYXRlKGJpZ0J1ZmYpO1xuICAgICAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmRlYnVnKFwiSW5pdGlhbCBoYXNoOiBcIiAraSpibG9ja1NpemUpO1xuICAgICAgICB9XG4gICAgICAgIGZvciAobGV0IGk9MDsgaTxyZW07IGkrKykge1xuICAgICAgICAgICAgaGFzaGVyLnVwZGF0ZShidWZmKTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24ga2V5RnJvbUJlYWNvbihjdXJ2ZSwgY2hhbGxlbmdlSGFzaCwgYmVhY29uSGFzaCwgbnVtSXRlcmF0aW9uc0V4cCkge1xuXG4gICAgY29uc3Qgcm5nID0gYXdhaXQgbWlzYy5ybmdGcm9tQmVhY29uUGFyYW1zKGJlYWNvbkhhc2gsIG51bUl0ZXJhdGlvbnNFeHApO1xuXG4gICAgY29uc3Qga2V5ID0ga2V5UGFpci5jcmVhdGVQVGF1S2V5KGN1cnZlLCBjaGFsbGVuZ2VIYXNoLCBybmcpO1xuXG4gICAgcmV0dXJuIGtleTtcbn1cblxuIiwiLypcbiAgICBDb3B5cmlnaHQgMjAxOCAwS0lNUyBhc3NvY2lhdGlvbi5cblxuICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHNuYXJrSlMuXG5cbiAgICBzbmFya0pTIGlzIGEgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdFxuICAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3JcbiAgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuXG4gICAgc25hcmtKUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVFxuICAgIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWVxuICAgIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpY1xuICAgIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cblxuICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gICAgYWxvbmcgd2l0aCBzbmFya0pTLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuKi9cblxuLypcbkhlYWRlcigxKVxuICAgIG44XG4gICAgcHJpbWVcbiAgICBwb3dlclxudGF1RzEoMilcbiAgICB7KDIgKiogcG93ZXIpKjItMX0gW1xuICAgICAgICBHMSwgdGF1KkcxLCB0YXVeMiAqIEcxLCAuLi4uXG4gICAgXVxudGF1RzIoMylcbiAgICB7MiAqKiBwb3dlcn1bXG4gICAgICAgIEcyLCB0YXUqRzIsIHRhdV4yICogRzIsIC4uLlxuICAgIF1cbmFscGhhVGF1RzEoNClcbiAgICB7MiAqKiBwb3dlcn1bXG4gICAgICAgIGFscGhhKkcxLCBhbHBoYSp0YXUqRzEsIGFscGhhKnRhdV4yKkcxLC4uLi5cbiAgICBdXG5iZXRhVGF1RzEoNSlcbiAgICB7MiAqKiBwb3dlcn0gW11cbiAgICAgICAgYmV0YSpHMSwgYmV0YSp0YXUqRzEsIGJldGEqdGF1XjIqRzEsIC4uLi5cbiAgICBdXG5iZXRhRzIoNilcbiAgICB7MX1bXG4gICAgICAgIGJldGEqRzJcbiAgICBdXG5jb250cmlidXRpb25zKDcpXG4gICAgTkNvbnRyaWJ1dGlvbnNcbiAgICB7TkNvbnRyaWJ1dGlvbnN9W1xuICAgICAgICB0YXUqRzFcbiAgICAgICAgdGF1KkcyXG4gICAgICAgIGFscGhhKkcxXG4gICAgICAgIGJldGEqRzFcbiAgICAgICAgYmV0YSpHMlxuICAgICAgICBwdWJLZXlcbiAgICAgICAgICAgIHRhdV9nMXNcbiAgICAgICAgICAgIHRhdV9nMXN4XG4gICAgICAgICAgICB0YXVfZzJzcHhcbiAgICAgICAgICAgIGFscGhhX2cxc1xuICAgICAgICAgICAgYWxwaGFfZzFzeFxuICAgICAgICAgICAgYWxwaGFfZzFzcHhcbiAgICAgICAgICAgIGJldGFfZzFzXG4gICAgICAgICAgICBiZXRhX2cxc3hcbiAgICAgICAgICAgIGJldGFfZzFzcHhcbiAgICAgICAgcGFydGlhbEhhc2ggKDIxNiBieXRlcykgU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9tYWZpbnRvc2gvYmxha2UyYi13YXNtL2Jsb2IvMjNiZWUwNjk0NTgwNjMwOTk3N2FmODAyYmMzNzQ3Mjc1NDI2MTdjNy9ibGFrZTJiLndhdCNMOVxuICAgICAgICBoYXNoTmV3Q2hhbGxlbmdlXG4gICAgXVxuICovXG5cbmltcG9ydCAqIGFzIHB0YXVVdGlscyBmcm9tIFwiLi9wb3dlcnNvZnRhdV91dGlscy5qc1wiO1xuaW1wb3J0ICogYXMgYmluRmlsZVV0aWxzIGZyb20gXCJAaWRlbjMvYmluZmlsZXV0aWxzXCI7XG5pbXBvcnQgQmxha2UyYiBmcm9tIFwiYmxha2UyYi13YXNtXCI7XG5pbXBvcnQgKiBhcyBtaXNjIGZyb20gXCIuL21pc2MuanNcIjtcblxuZXhwb3J0IGRlZmF1bHQgYXN5bmMgZnVuY3Rpb24gbmV3QWNjdW11bGF0b3IoY3VydmUsIHBvd2VyLCBmaWxlTmFtZSwgbG9nZ2VyKSB7XG5cbiAgICBhd2FpdCBCbGFrZTJiLnJlYWR5KCk7XG5cbiAgICBjb25zdCBmZCA9IGF3YWl0IGJpbkZpbGVVdGlscy5jcmVhdGVCaW5GaWxlKGZpbGVOYW1lLCBcInB0YXVcIiwgMSwgNyk7XG5cbiAgICBhd2FpdCBwdGF1VXRpbHMud3JpdGVQVGF1SGVhZGVyKGZkLCBjdXJ2ZSwgcG93ZXIsIDApO1xuXG4gICAgY29uc3QgYnVmZkcxID0gY3VydmUuRzEub25lQWZmaW5lO1xuICAgIGNvbnN0IGJ1ZmZHMiA9IGN1cnZlLkcyLm9uZUFmZmluZTtcblxuICAgIC8vIFdyaXRlIHRhdUcxXG4gICAgLy8vLy8vLy8vLy9cbiAgICBhd2FpdCBiaW5GaWxlVXRpbHMuc3RhcnRXcml0ZVNlY3Rpb24oZmQsIDIpO1xuICAgIGNvbnN0IG5UYXVHMSA9ICgyICoqIHBvd2VyKSAqIDIgLTE7XG4gICAgZm9yIChsZXQgaT0wOyBpPCBuVGF1RzE7IGkrKykge1xuICAgICAgICBhd2FpdCBmZC53cml0ZShidWZmRzEpO1xuICAgICAgICBpZiAoKGxvZ2dlcikmJigoaSUxMDAwMDApID09IDApJiZpKSBsb2dnZXIubG9nKFwidGF1RzE6IFwiICsgaSk7XG4gICAgfVxuICAgIGF3YWl0IGJpbkZpbGVVdGlscy5lbmRXcml0ZVNlY3Rpb24oZmQpO1xuXG4gICAgLy8gV3JpdGUgdGF1RzJcbiAgICAvLy8vLy8vLy8vL1xuICAgIGF3YWl0IGJpbkZpbGVVdGlscy5zdGFydFdyaXRlU2VjdGlvbihmZCwgMyk7XG4gICAgY29uc3QgblRhdUcyID0gKDIgKiogcG93ZXIpO1xuICAgIGZvciAobGV0IGk9MDsgaTwgblRhdUcyOyBpKyspIHtcbiAgICAgICAgYXdhaXQgZmQud3JpdGUoYnVmZkcyKTtcbiAgICAgICAgaWYgKChsb2dnZXIpJiYoKGklMTAwMDAwKSA9PSAwKSYmaSkgbG9nZ2VyLmxvZyhcInRhdUcyOiBcIiArIGkpO1xuICAgIH1cbiAgICBhd2FpdCBiaW5GaWxlVXRpbHMuZW5kV3JpdGVTZWN0aW9uKGZkKTtcblxuICAgIC8vIFdyaXRlIGFscGhhVGF1RzFcbiAgICAvLy8vLy8vLy8vL1xuICAgIGF3YWl0IGJpbkZpbGVVdGlscy5zdGFydFdyaXRlU2VjdGlvbihmZCwgNCk7XG4gICAgY29uc3QgbkFsZmFUYXVHMSA9ICgyICoqIHBvd2VyKTtcbiAgICBmb3IgKGxldCBpPTA7IGk8IG5BbGZhVGF1RzE7IGkrKykge1xuICAgICAgICBhd2FpdCBmZC53cml0ZShidWZmRzEpO1xuICAgICAgICBpZiAoKGxvZ2dlcikmJigoaSUxMDAwMDApID09IDApJiZpKSBsb2dnZXIubG9nKFwiYWxwaGFUYXVHMTogXCIgKyBpKTtcbiAgICB9XG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLmVuZFdyaXRlU2VjdGlvbihmZCk7XG5cbiAgICAvLyBXcml0ZSBiZXRhVGF1RzFcbiAgICAvLy8vLy8vLy8vL1xuICAgIGF3YWl0IGJpbkZpbGVVdGlscy5zdGFydFdyaXRlU2VjdGlvbihmZCwgNSk7XG4gICAgY29uc3QgbkJldGFUYXVHMSA9ICgyICoqIHBvd2VyKTtcbiAgICBmb3IgKGxldCBpPTA7IGk8IG5CZXRhVGF1RzE7IGkrKykge1xuICAgICAgICBhd2FpdCBmZC53cml0ZShidWZmRzEpO1xuICAgICAgICBpZiAoKGxvZ2dlcikmJigoaSUxMDAwMDApID09IDApJiZpKSBsb2dnZXIubG9nKFwiYmV0YVRhdUcxOiBcIiArIGkpO1xuICAgIH1cbiAgICBhd2FpdCBiaW5GaWxlVXRpbHMuZW5kV3JpdGVTZWN0aW9uKGZkKTtcblxuICAgIC8vIFdyaXRlIGJldGFHMlxuICAgIC8vLy8vLy8vLy8vXG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLnN0YXJ0V3JpdGVTZWN0aW9uKGZkLCA2KTtcbiAgICBhd2FpdCBmZC53cml0ZShidWZmRzIpO1xuICAgIGF3YWl0IGJpbkZpbGVVdGlscy5lbmRXcml0ZVNlY3Rpb24oZmQpO1xuXG4gICAgLy8gQ29udHJpYnV0aW9uc1xuICAgIC8vLy8vLy8vLy8vXG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLnN0YXJ0V3JpdGVTZWN0aW9uKGZkLCA3KTtcbiAgICBhd2FpdCBmZC53cml0ZVVMRTMyKDApOyAvLyAwIENvbnRyaWJ1dGlvbnNcbiAgICBhd2FpdCBiaW5GaWxlVXRpbHMuZW5kV3JpdGVTZWN0aW9uKGZkKTtcblxuICAgIGF3YWl0IGZkLmNsb3NlKCk7XG5cbiAgICBjb25zdCBmaXJzdENoYWxsZW5nZUhhc2ggPSBwdGF1VXRpbHMuY2FsY3VsYXRlRmlyc3RDaGFsbGVuZ2VIYXNoKGN1cnZlLCBwb3dlciwgbG9nZ2VyKTtcblxuICAgIGlmIChsb2dnZXIpIGxvZ2dlci5kZWJ1ZyhtaXNjLmZvcm1hdEhhc2goQmxha2UyYig2NCkuZGlnZXN0KCksIFwiQmxhbmsgQ29udHJpYnV0aW9uIEhhc2g6XCIpKTtcblxuICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKG1pc2MuZm9ybWF0SGFzaChmaXJzdENoYWxsZW5nZUhhc2gsIFwiRmlyc3QgQ29udHJpYnV0aW9uIEhhc2g6XCIpKTtcblxuICAgIHJldHVybiBmaXJzdENoYWxsZW5nZUhhc2g7XG5cbn1cbiIsIi8vIEZvcm1hdCBvZiB0aGUgb3V0cHVcbi8vICAgICBIYXNoIG9mIHRoZSBsYXN0IGNvbnRyaWJ1dGlvbiAgNjRCeXRlc1xuLy8gICAgIDJeTiAqIDIgLTEgIFRhdUcxIHBvaW50cyAodW5jb21wcmVzc2VkKVxuLy8gICAgIDJeTiAgVGF1RzIgUG9pbnRzICh1bmNvbXByZXNzZWQpXG4vLyAgICAgMl5OICBBbHBoYVRhdUcxIFBvaW50cyAodW5jb21wcmVzc2VkKVxuLy8gICAgIDJeTiAgQmV0YVRhdUcxIFBvaW50cyAodW5jb21wcmVzc2VkKVxuLy8gICAgIEJldGFHMiAodW5jb21wcmVzc2VkKVxuXG5pbXBvcnQgKiBhcyBmYXN0RmlsZSBmcm9tIFwiZmFzdGZpbGVcIjtcbmltcG9ydCBCbGFrZTJiIGZyb20gXCJibGFrZTJiLXdhc21cIjtcbmltcG9ydCAqIGFzIHV0aWxzIGZyb20gXCIuL3Bvd2Vyc29mdGF1X3V0aWxzLmpzXCI7XG5pbXBvcnQgKiBhcyBiaW5GaWxlVXRpbHMgZnJvbSBcIkBpZGVuMy9iaW5maWxldXRpbHNcIjtcbmltcG9ydCAqIGFzIG1pc2MgZnJvbSBcIi4vbWlzYy5qc1wiO1xuXG5leHBvcnQgZGVmYXVsdCBhc3luYyBmdW5jdGlvbiBleHBvcnRDaGFsbGVuZ2UocFRhdUZpbGVuYW1lLCBjaGFsbGVuZ2VGaWxlbmFtZSwgbG9nZ2VyKSB7XG4gICAgYXdhaXQgQmxha2UyYi5yZWFkeSgpO1xuICAgIGNvbnN0IHtmZDogZmRGcm9tLCBzZWN0aW9uc30gPSBhd2FpdCBiaW5GaWxlVXRpbHMucmVhZEJpbkZpbGUocFRhdUZpbGVuYW1lLCBcInB0YXVcIiwgMSk7XG5cbiAgICBjb25zdCB7Y3VydmUsIHBvd2VyfSA9IGF3YWl0IHV0aWxzLnJlYWRQVGF1SGVhZGVyKGZkRnJvbSwgc2VjdGlvbnMpO1xuXG4gICAgY29uc3QgY29udHJpYnV0aW9ucyA9IGF3YWl0IHV0aWxzLnJlYWRDb250cmlidXRpb25zKGZkRnJvbSwgY3VydmUsIHNlY3Rpb25zKTtcbiAgICBsZXQgbGFzdFJlc3BvbnNlSGFzaCwgY3VyQ2hhbGxlbmdlSGFzaDtcbiAgICBpZiAoY29udHJpYnV0aW9ucy5sZW5ndGggPT0gMCkge1xuICAgICAgICBsYXN0UmVzcG9uc2VIYXNoID0gQmxha2UyYig2NCkuZGlnZXN0KCk7XG4gICAgICAgIGN1ckNoYWxsZW5nZUhhc2ggPSB1dGlscy5jYWxjdWxhdGVGaXJzdENoYWxsZW5nZUhhc2goY3VydmUsIHBvd2VyKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBsYXN0UmVzcG9uc2VIYXNoID0gY29udHJpYnV0aW9uc1tjb250cmlidXRpb25zLmxlbmd0aC0xXS5yZXNwb25zZUhhc2g7XG4gICAgICAgIGN1ckNoYWxsZW5nZUhhc2ggPSBjb250cmlidXRpb25zW2NvbnRyaWJ1dGlvbnMubGVuZ3RoLTFdLm5leHRDaGFsbGVuZ2U7XG4gICAgfVxuXG4gICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8obWlzYy5mb3JtYXRIYXNoKGxhc3RSZXNwb25zZUhhc2gsIFwiTGFzdCBSZXNwb25zZSBIYXNoOiBcIikpO1xuXG4gICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8obWlzYy5mb3JtYXRIYXNoKGN1ckNoYWxsZW5nZUhhc2gsIFwiTmV3IENoYWxsZW5nZSBIYXNoOiBcIikpO1xuXG5cbiAgICBjb25zdCBmZFRvID0gYXdhaXQgZmFzdEZpbGUuY3JlYXRlT3ZlcnJpZGUoY2hhbGxlbmdlRmlsZW5hbWUpO1xuXG4gICAgY29uc3QgdG9IYXNoID0gQmxha2UyYig2NCk7XG4gICAgYXdhaXQgZmRUby53cml0ZShsYXN0UmVzcG9uc2VIYXNoKTtcbiAgICB0b0hhc2gudXBkYXRlKGxhc3RSZXNwb25zZUhhc2gpO1xuXG4gICAgYXdhaXQgZXhwb3J0U2VjdGlvbigyLCBcIkcxXCIsICgyICoqIHBvd2VyKSAqIDIgLTEsIFwidGF1RzFcIik7XG4gICAgYXdhaXQgZXhwb3J0U2VjdGlvbigzLCBcIkcyXCIsICgyICoqIHBvd2VyKSAgICAgICAsIFwidGF1RzJcIik7XG4gICAgYXdhaXQgZXhwb3J0U2VjdGlvbig0LCBcIkcxXCIsICgyICoqIHBvd2VyKSAgICAgICAsIFwiYWxwaGFUYXVHMVwiKTtcbiAgICBhd2FpdCBleHBvcnRTZWN0aW9uKDUsIFwiRzFcIiwgKDIgKiogcG93ZXIpICAgICAgICwgXCJiZXRhVGF1RzFcIik7XG4gICAgYXdhaXQgZXhwb3J0U2VjdGlvbig2LCBcIkcyXCIsIDEgICAgICAgICAgICAgICAgICAsIFwiYmV0YUcyXCIpO1xuXG4gICAgYXdhaXQgZmRGcm9tLmNsb3NlKCk7XG4gICAgYXdhaXQgZmRUby5jbG9zZSgpO1xuXG4gICAgY29uc3QgY2FsY0N1ckNoYWxsZW5nZUhhc2ggPSB0b0hhc2guZGlnZXN0KCk7XG5cbiAgICBpZiAoIW1pc2MuaGFzaElzRXF1YWwgKGN1ckNoYWxsZW5nZUhhc2gsIGNhbGNDdXJDaGFsbGVuZ2VIYXNoKSkge1xuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhtaXNjLmZvcm1hdEhhc2goY2FsY0N1ckNoYWxsZW5nZUhhc2gsIFwiQ2FsYyBDdXJyZXQgQ2hhbGxlbmdlIEhhc2g6IFwiKSk7XG5cbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmVycm9yKFwiUFRhdSBmaWxlIGlzIGNvcnJ1cHRlZC4gQ2FsY3VsYXRlZCBuZXcgY2hhbGxlbmdlIGhhc2ggZG9lcyBub3QgbWF0Y2ggd2l0aCB0aGUgZWNsYXJlZCBvbmVcIik7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIlBUYXUgZmlsZSBpcyBjb3JydXB0ZWQuIENhbGN1bGF0ZWQgbmV3IGNoYWxsZW5nZSBoYXNoIGRvZXMgbm90IG1hdGNoIHdpdGggdGhlIGVjbGFyZWQgb25lXCIpO1xuICAgIH1cblxuICAgIHJldHVybiBjdXJDaGFsbGVuZ2VIYXNoO1xuXG4gICAgYXN5bmMgZnVuY3Rpb24gZXhwb3J0U2VjdGlvbihzZWN0aW9uSWQsIGdyb3VwTmFtZSwgblBvaW50cywgc2VjdGlvbk5hbWUpIHtcbiAgICAgICAgY29uc3QgRyA9IGN1cnZlW2dyb3VwTmFtZV07XG4gICAgICAgIGNvbnN0IHNHID0gRy5GLm44KjI7XG4gICAgICAgIGNvbnN0IG5Qb2ludHNDaHVuayA9IE1hdGguZmxvb3IoKDE8PDI0KS9zRyk7XG5cbiAgICAgICAgYXdhaXQgYmluRmlsZVV0aWxzLnN0YXJ0UmVhZFVuaXF1ZVNlY3Rpb24oZmRGcm9tLCBzZWN0aW9ucywgc2VjdGlvbklkKTtcbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPCBuUG9pbnRzOyBpKz0gblBvaW50c0NodW5rKSB7XG4gICAgICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZGVidWcoYEV4cG9ydGluZyAke3NlY3Rpb25OYW1lfTogJHtpfS8ke25Qb2ludHN9YCk7XG4gICAgICAgICAgICBjb25zdCBuID0gTWF0aC5taW4oblBvaW50cy1pLCBuUG9pbnRzQ2h1bmspO1xuICAgICAgICAgICAgbGV0IGJ1ZmY7XG4gICAgICAgICAgICBidWZmID0gYXdhaXQgZmRGcm9tLnJlYWQobipzRyk7XG4gICAgICAgICAgICBidWZmID0gYXdhaXQgRy5iYXRjaExFTXRvVShidWZmKTtcbiAgICAgICAgICAgIGF3YWl0IGZkVG8ud3JpdGUoYnVmZik7XG4gICAgICAgICAgICB0b0hhc2gudXBkYXRlKGJ1ZmYpO1xuICAgICAgICB9XG4gICAgICAgIGF3YWl0IGJpbkZpbGVVdGlscy5lbmRSZWFkU2VjdGlvbihmZEZyb20pO1xuICAgIH1cblxuXG59XG5cbiIsIi8qXG4gICAgQ29weXJpZ2h0IDIwMTggMEtJTVMgYXNzb2NpYXRpb24uXG5cbiAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBzbmFya0pTLlxuXG4gICAgc25hcmtKUyBpcyBhIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXRcbiAgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yXG4gICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cblxuICAgIHNuYXJrSlMgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVRcbiAgICBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFlcbiAgICBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWNcbiAgICBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG5cbiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICAgIGFsb25nIHdpdGggc25hcmtKUy4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cbiovXG5cbmltcG9ydCAqIGFzIGZhc3RGaWxlIGZyb20gXCJmYXN0ZmlsZVwiO1xuaW1wb3J0IEJsYWtlMmIgZnJvbSBcImJsYWtlMmItd2FzbVwiO1xuaW1wb3J0ICogYXMgdXRpbHMgZnJvbSBcIi4vcG93ZXJzb2Z0YXVfdXRpbHMuanNcIjtcbmltcG9ydCAqIGFzIGJpbkZpbGVVdGlscyBmcm9tIFwiQGlkZW4zL2JpbmZpbGV1dGlsc1wiO1xuaW1wb3J0ICogYXMgbWlzYyBmcm9tIFwiLi9taXNjLmpzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGFzeW5jIGZ1bmN0aW9uIGltcG9ydFJlc3BvbnNlKG9sZFB0YXVGaWxlbmFtZSwgY29udHJpYnV0aW9uRmlsZW5hbWUsIG5ld1BUYXVGaWxlbmFtZSwgbmFtZSwgaW1wb3J0UG9pbnRzLCBsb2dnZXIpIHtcblxuICAgIGF3YWl0IEJsYWtlMmIucmVhZHkoKTtcblxuICAgIGNvbnN0IG5vSGFzaCA9IG5ldyBVaW50OEFycmF5KDY0KTtcbiAgICBmb3IgKGxldCBpPTA7IGk8NjQ7IGkrKykgbm9IYXNoW2ldID0gMHhGRjtcblxuICAgIGNvbnN0IHtmZDogZmRPbGQsIHNlY3Rpb25zfSA9IGF3YWl0IGJpbkZpbGVVdGlscy5yZWFkQmluRmlsZShvbGRQdGF1RmlsZW5hbWUsIFwicHRhdVwiLCAxKTtcbiAgICBjb25zdCB7Y3VydmUsIHBvd2VyfSA9IGF3YWl0IHV0aWxzLnJlYWRQVGF1SGVhZGVyKGZkT2xkLCBzZWN0aW9ucyk7XG4gICAgY29uc3QgY29udHJpYnV0aW9ucyA9IGF3YWl0IHV0aWxzLnJlYWRDb250cmlidXRpb25zKGZkT2xkLCBjdXJ2ZSwgc2VjdGlvbnMpO1xuICAgIGNvbnN0IGN1cnJlbnRDb250cmlidXRpb24gPSB7fTtcblxuICAgIGlmIChuYW1lKSBjdXJyZW50Q29udHJpYnV0aW9uLm5hbWUgPSBuYW1lO1xuXG4gICAgY29uc3Qgc0cxID0gY3VydmUuRjEubjgqMjtcbiAgICBjb25zdCBzY0cxID0gY3VydmUuRjEubjg7IC8vIENvbXByZXNzZWQgc2l6ZVxuICAgIGNvbnN0IHNHMiA9IGN1cnZlLkYyLm44KjI7XG4gICAgY29uc3Qgc2NHMiA9IGN1cnZlLkYyLm44OyAvLyBDb21wcmVzc2VkIHNpemVcblxuICAgIGNvbnN0IGZkUmVzcG9uc2UgPSBhd2FpdCBmYXN0RmlsZS5yZWFkRXhpc3RpbmcoY29udHJpYnV0aW9uRmlsZW5hbWUpO1xuXG4gICAgaWYgIChmZFJlc3BvbnNlLnRvdGFsU2l6ZSAhPVxuICAgICAgICA2NCArICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE9sZCBIYXNoXG4gICAgICAgICgoMiAqKiBwb3dlcikqMi0xKSpzY0cxICtcbiAgICAgICAgKDIgKiogcG93ZXIpKnNjRzIgK1xuICAgICAgICAoMiAqKiBwb3dlcikqc2NHMSArXG4gICAgICAgICgyICoqIHBvd2VyKSpzY0cxICtcbiAgICAgICAgc2NHMiArXG4gICAgICAgIHNHMSo2ICsgc0cyKjMpXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIlNpemUgb2YgdGhlIGNvbnRyaWJ1dGlvbiBpcyBpbnZhbGlkXCIpO1xuXG4gICAgbGV0IGxhc3RDaGFsbGVuZ2VIYXNoO1xuXG4gICAgaWYgKGNvbnRyaWJ1dGlvbnMubGVuZ3RoPjApIHtcbiAgICAgICAgbGFzdENoYWxsZW5nZUhhc2ggPSBjb250cmlidXRpb25zW2NvbnRyaWJ1dGlvbnMubGVuZ3RoLTFdLm5leHRDaGFsbGVuZ2U7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgbGFzdENoYWxsZW5nZUhhc2ggPSB1dGlscy5jYWxjdWxhdGVGaXJzdENoYWxsZW5nZUhhc2goY3VydmUsIHBvd2VyLCBsb2dnZXIpO1xuICAgIH1cblxuICAgIGNvbnN0IGZkTmV3ID0gYXdhaXQgYmluRmlsZVV0aWxzLmNyZWF0ZUJpbkZpbGUobmV3UFRhdUZpbGVuYW1lLCBcInB0YXVcIiwgMSwgaW1wb3J0UG9pbnRzID8gNzogMik7XG4gICAgYXdhaXQgdXRpbHMud3JpdGVQVGF1SGVhZGVyKGZkTmV3LCBjdXJ2ZSwgcG93ZXIpO1xuXG4gICAgY29uc3QgY29udHJpYnV0aW9uUHJldmlvdXNIYXNoID0gYXdhaXQgZmRSZXNwb25zZS5yZWFkKDY0KTtcblxuICAgIGlmIChtaXNjLmhhc2hJc0VxdWFsKG5vSGFzaCxsYXN0Q2hhbGxlbmdlSGFzaCkpIHtcbiAgICAgICAgbGFzdENoYWxsZW5nZUhhc2ggPSBjb250cmlidXRpb25QcmV2aW91c0hhc2g7XG4gICAgICAgIGNvbnRyaWJ1dGlvbnNbY29udHJpYnV0aW9ucy5sZW5ndGgtMV0ubmV4dENoYWxsZW5nZSA9IGxhc3RDaGFsbGVuZ2VIYXNoO1xuICAgIH1cblxuICAgIGlmKCFtaXNjLmhhc2hJc0VxdWFsKGNvbnRyaWJ1dGlvblByZXZpb3VzSGFzaCxsYXN0Q2hhbGxlbmdlSGFzaCkpXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIldyb25nIGNvbnRyaWJ1dGlvbi4gVGhpcyBjb250cmlidXRpb24gaXMgbm90IGJhc2VkIG9uIHRoZSBwcmV2aW91cyBoYXNoXCIpO1xuXG4gICAgY29uc3QgaGFzaGVyUmVzcG9uc2UgPSBuZXcgQmxha2UyYig2NCk7XG4gICAgaGFzaGVyUmVzcG9uc2UudXBkYXRlKGNvbnRyaWJ1dGlvblByZXZpb3VzSGFzaCk7XG5cbiAgICBjb25zdCBzdGFydFNlY3Rpb25zID0gW107XG4gICAgbGV0IHJlcztcbiAgICByZXMgPSBhd2FpdCBwcm9jZXNzU2VjdGlvbihmZFJlc3BvbnNlLCBmZE5ldywgXCJHMVwiLCAyLCAoMiAqKiBwb3dlcikgKiAyIC0xLCBbMV0sIFwidGF1RzFcIik7XG4gICAgY3VycmVudENvbnRyaWJ1dGlvbi50YXVHMSA9IHJlc1swXTtcbiAgICByZXMgPSBhd2FpdCBwcm9jZXNzU2VjdGlvbihmZFJlc3BvbnNlLCBmZE5ldywgXCJHMlwiLCAzLCAoMiAqKiBwb3dlcikgICAgICAgLCBbMV0sIFwidGF1RzJcIik7XG4gICAgY3VycmVudENvbnRyaWJ1dGlvbi50YXVHMiA9IHJlc1swXTtcbiAgICByZXMgPSBhd2FpdCBwcm9jZXNzU2VjdGlvbihmZFJlc3BvbnNlLCBmZE5ldywgXCJHMVwiLCA0LCAoMiAqKiBwb3dlcikgICAgICAgLCBbMF0sIFwiYWxwaGFHMVwiKTtcbiAgICBjdXJyZW50Q29udHJpYnV0aW9uLmFscGhhRzEgPSByZXNbMF07XG4gICAgcmVzID0gYXdhaXQgcHJvY2Vzc1NlY3Rpb24oZmRSZXNwb25zZSwgZmROZXcsIFwiRzFcIiwgNSwgKDIgKiogcG93ZXIpICAgICAgICwgWzBdLCBcImJldGFHMVwiKTtcbiAgICBjdXJyZW50Q29udHJpYnV0aW9uLmJldGFHMSA9IHJlc1swXTtcbiAgICByZXMgPSBhd2FpdCBwcm9jZXNzU2VjdGlvbihmZFJlc3BvbnNlLCBmZE5ldywgXCJHMlwiLCA2LCAxICAgICAgICAgICAgICAgICAgLCBbMF0sIFwiYmV0YUcyXCIpO1xuICAgIGN1cnJlbnRDb250cmlidXRpb24uYmV0YUcyID0gcmVzWzBdO1xuXG4gICAgY3VycmVudENvbnRyaWJ1dGlvbi5wYXJ0aWFsSGFzaCA9IGhhc2hlclJlc3BvbnNlLmdldFBhcnRpYWxIYXNoKCk7XG5cblxuICAgIGNvbnN0IGJ1ZmZLZXkgPSBhd2FpdCBmZFJlc3BvbnNlLnJlYWQoY3VydmUuRjEubjgqMio2K2N1cnZlLkYyLm44KjIqMyk7XG5cbiAgICBjdXJyZW50Q29udHJpYnV0aW9uLmtleSA9IHV0aWxzLmZyb21QdGF1UHViS2V5UnByKGJ1ZmZLZXksIDAsIGN1cnZlLCBmYWxzZSk7XG5cbiAgICBoYXNoZXJSZXNwb25zZS51cGRhdGUobmV3IFVpbnQ4QXJyYXkoYnVmZktleSkpO1xuICAgIGNvbnN0IGhhc2hSZXNwb25zZSA9IGhhc2hlclJlc3BvbnNlLmRpZ2VzdCgpO1xuXG4gICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8obWlzYy5mb3JtYXRIYXNoKGhhc2hSZXNwb25zZSwgXCJDb250cmlidXRpb24gUmVzcG9uc2UgSGFzaCBpbXBvcnRlZDogXCIpKTtcblxuICAgIGlmIChpbXBvcnRQb2ludHMpIHtcbiAgICAgICAgY29uc3QgbmV4dENoYWxsZW5nZUhhc2hlciA9IG5ldyBCbGFrZTJiKDY0KTtcbiAgICAgICAgbmV4dENoYWxsZW5nZUhhc2hlci51cGRhdGUoaGFzaFJlc3BvbnNlKTtcblxuICAgICAgICBhd2FpdCBoYXNoU2VjdGlvbihuZXh0Q2hhbGxlbmdlSGFzaGVyLCBmZE5ldywgXCJHMVwiLCAyLCAoMiAqKiBwb3dlcikgKiAyIC0xLCBcInRhdUcxXCIsIGxvZ2dlcik7XG4gICAgICAgIGF3YWl0IGhhc2hTZWN0aW9uKG5leHRDaGFsbGVuZ2VIYXNoZXIsIGZkTmV3LCBcIkcyXCIsIDMsICgyICoqIHBvd2VyKSAgICAgICAsIFwidGF1RzJcIiwgbG9nZ2VyKTtcbiAgICAgICAgYXdhaXQgaGFzaFNlY3Rpb24obmV4dENoYWxsZW5nZUhhc2hlciwgZmROZXcsIFwiRzFcIiwgNCwgKDIgKiogcG93ZXIpICAgICAgICwgXCJhbHBoYVRhdUcxXCIsIGxvZ2dlcik7XG4gICAgICAgIGF3YWl0IGhhc2hTZWN0aW9uKG5leHRDaGFsbGVuZ2VIYXNoZXIsIGZkTmV3LCBcIkcxXCIsIDUsICgyICoqIHBvd2VyKSAgICAgICAsIFwiYmV0YVRhdUcxXCIsIGxvZ2dlcik7XG4gICAgICAgIGF3YWl0IGhhc2hTZWN0aW9uKG5leHRDaGFsbGVuZ2VIYXNoZXIsIGZkTmV3LCBcIkcyXCIsIDYsIDEgICAgICAgICAgICAgICAgICAsIFwiYmV0YUcyXCIsIGxvZ2dlcik7XG5cbiAgICAgICAgY3VycmVudENvbnRyaWJ1dGlvbi5uZXh0Q2hhbGxlbmdlID0gbmV4dENoYWxsZW5nZUhhc2hlci5kaWdlc3QoKTtcblxuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhtaXNjLmZvcm1hdEhhc2goY3VycmVudENvbnRyaWJ1dGlvbi5uZXh0Q2hhbGxlbmdlLCBcIk5leHQgQ2hhbGxlbmdlIEhhc2g6IFwiKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgY3VycmVudENvbnRyaWJ1dGlvbi5uZXh0Q2hhbGxlbmdlID0gbm9IYXNoO1xuICAgIH1cblxuICAgIGNvbnRyaWJ1dGlvbnMucHVzaChjdXJyZW50Q29udHJpYnV0aW9uKTtcblxuICAgIGF3YWl0IHV0aWxzLndyaXRlQ29udHJpYnV0aW9ucyhmZE5ldywgY3VydmUsIGNvbnRyaWJ1dGlvbnMpO1xuXG4gICAgYXdhaXQgZmRSZXNwb25zZS5jbG9zZSgpO1xuICAgIGF3YWl0IGZkTmV3LmNsb3NlKCk7XG4gICAgYXdhaXQgZmRPbGQuY2xvc2UoKTtcblxuICAgIHJldHVybiBjdXJyZW50Q29udHJpYnV0aW9uLm5leHRDaGFsbGVuZ2U7XG5cbiAgICBhc3luYyBmdW5jdGlvbiBwcm9jZXNzU2VjdGlvbihmZEZyb20sIGZkVG8sIGdyb3VwTmFtZSwgc2VjdGlvbklkLCBuUG9pbnRzLCBzaW5ndWxhclBvaW50SW5kZXhlcywgc2VjdGlvbk5hbWUpIHtcbiAgICAgICAgaWYgKGltcG9ydFBvaW50cykge1xuICAgICAgICAgICAgcmV0dXJuIGF3YWl0IHByb2Nlc3NTZWN0aW9uSW1wb3J0UG9pbnRzKGZkRnJvbSwgZmRUbywgZ3JvdXBOYW1lLCBzZWN0aW9uSWQsIG5Qb2ludHMsIHNpbmd1bGFyUG9pbnRJbmRleGVzLCBzZWN0aW9uTmFtZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gYXdhaXQgcHJvY2Vzc1NlY3Rpb25Ob0ltcG9ydFBvaW50cyhmZEZyb20sIGZkVG8sIGdyb3VwTmFtZSwgc2VjdGlvbklkLCBuUG9pbnRzLCBzaW5ndWxhclBvaW50SW5kZXhlcywgc2VjdGlvbk5hbWUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgYXN5bmMgZnVuY3Rpb24gcHJvY2Vzc1NlY3Rpb25JbXBvcnRQb2ludHMoZmRGcm9tLCBmZFRvLCBncm91cE5hbWUsIHNlY3Rpb25JZCwgblBvaW50cywgc2luZ3VsYXJQb2ludEluZGV4ZXMsIHNlY3Rpb25OYW1lKSB7XG5cbiAgICAgICAgY29uc3QgRyA9IGN1cnZlW2dyb3VwTmFtZV07XG4gICAgICAgIGNvbnN0IHNjRyA9IEcuRi5uODtcbiAgICAgICAgY29uc3Qgc0cgPSBHLkYubjgqMjtcblxuICAgICAgICBjb25zdCBzaW5ndWxhclBvaW50cyA9IFtdO1xuXG4gICAgICAgIGF3YWl0IGJpbkZpbGVVdGlscy5zdGFydFdyaXRlU2VjdGlvbihmZFRvLCBzZWN0aW9uSWQpO1xuICAgICAgICBjb25zdCBuUG9pbnRzQ2h1bmsgPSBNYXRoLmZsb29yKCgxPDwyNCkvc0cpO1xuXG4gICAgICAgIHN0YXJ0U2VjdGlvbnNbc2VjdGlvbklkXSA9IGZkVG8ucG9zO1xuXG4gICAgICAgIGZvciAobGV0IGk9MDsgaTwgblBvaW50czsgaSArPSBuUG9pbnRzQ2h1bmspIHtcbiAgICAgICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5kZWJ1ZyhgSW1wb3J0aW5nICR7c2VjdGlvbk5hbWV9OiAke2l9LyR7blBvaW50c31gKTtcbiAgICAgICAgICAgIGNvbnN0IG4gPSBNYXRoLm1pbihuUG9pbnRzLWksIG5Qb2ludHNDaHVuayk7XG5cbiAgICAgICAgICAgIGNvbnN0IGJ1ZmZDID0gYXdhaXQgZmRGcm9tLnJlYWQobiAqIHNjRyk7XG4gICAgICAgICAgICBoYXNoZXJSZXNwb25zZS51cGRhdGUoYnVmZkMpO1xuXG4gICAgICAgICAgICBjb25zdCBidWZmTEVNID0gYXdhaXQgRy5iYXRjaEN0b0xFTShidWZmQyk7XG5cbiAgICAgICAgICAgIGF3YWl0IGZkVG8ud3JpdGUoYnVmZkxFTSk7XG4gICAgICAgICAgICBmb3IgKGxldCBqPTA7IGo8c2luZ3VsYXJQb2ludEluZGV4ZXMubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgICAgICAgICBjb25zdCBzcCA9IHNpbmd1bGFyUG9pbnRJbmRleGVzW2pdO1xuICAgICAgICAgICAgICAgIGlmICgoc3AgPj1pKSAmJiAoc3AgPCBpK24pKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IFAgPSBHLmZyb21ScHJMRU0oYnVmZkxFTSwgKHNwLWkpKnNHKTtcbiAgICAgICAgICAgICAgICAgICAgc2luZ3VsYXJQb2ludHMucHVzaChQKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBhd2FpdCBiaW5GaWxlVXRpbHMuZW5kV3JpdGVTZWN0aW9uKGZkVG8pO1xuXG4gICAgICAgIHJldHVybiBzaW5ndWxhclBvaW50cztcbiAgICB9XG5cblxuICAgIGFzeW5jIGZ1bmN0aW9uIHByb2Nlc3NTZWN0aW9uTm9JbXBvcnRQb2ludHMoZmRGcm9tLCBmZFRvLCBncm91cE5hbWUsIHNlY3Rpb25JZCwgblBvaW50cywgc2luZ3VsYXJQb2ludEluZGV4ZXMsIHNlY3Rpb25OYW1lKSB7XG5cbiAgICAgICAgY29uc3QgRyA9IGN1cnZlW2dyb3VwTmFtZV07XG4gICAgICAgIGNvbnN0IHNjRyA9IEcuRi5uODtcblxuICAgICAgICBjb25zdCBzaW5ndWxhclBvaW50cyA9IFtdO1xuXG4gICAgICAgIGNvbnN0IG5Qb2ludHNDaHVuayA9IE1hdGguZmxvb3IoKDE8PDI0KS9zY0cpO1xuXG4gICAgICAgIGZvciAobGV0IGk9MDsgaTwgblBvaW50czsgaSArPSBuUG9pbnRzQ2h1bmspIHtcbiAgICAgICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5kZWJ1ZyhgSW1wb3J0aW5nICR7c2VjdGlvbk5hbWV9OiAke2l9LyR7blBvaW50c31gKTtcbiAgICAgICAgICAgIGNvbnN0IG4gPSBNYXRoLm1pbihuUG9pbnRzLWksIG5Qb2ludHNDaHVuayk7XG5cbiAgICAgICAgICAgIGNvbnN0IGJ1ZmZDID0gYXdhaXQgZmRGcm9tLnJlYWQobiAqIHNjRyk7XG4gICAgICAgICAgICBoYXNoZXJSZXNwb25zZS51cGRhdGUoYnVmZkMpO1xuXG4gICAgICAgICAgICBmb3IgKGxldCBqPTA7IGo8c2luZ3VsYXJQb2ludEluZGV4ZXMubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgICAgICAgICBjb25zdCBzcCA9IHNpbmd1bGFyUG9pbnRJbmRleGVzW2pdO1xuICAgICAgICAgICAgICAgIGlmICgoc3AgPj1pKSAmJiAoc3AgPCBpK24pKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IFAgPSBHLmZyb21ScHJDb21wcmVzc2VkKGJ1ZmZDLCAoc3AtaSkqc2NHKTtcbiAgICAgICAgICAgICAgICAgICAgc2luZ3VsYXJQb2ludHMucHVzaChQKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gc2luZ3VsYXJQb2ludHM7XG4gICAgfVxuXG5cbiAgICBhc3luYyBmdW5jdGlvbiBoYXNoU2VjdGlvbihuZXh0Q2hhbGxlbmdlSGFzaGVyLCBmZFRvLCBncm91cE5hbWUsIHNlY3Rpb25JZCwgblBvaW50cywgc2VjdGlvbk5hbWUsIGxvZ2dlcikge1xuXG4gICAgICAgIGNvbnN0IEcgPSBjdXJ2ZVtncm91cE5hbWVdO1xuICAgICAgICBjb25zdCBzRyA9IEcuRi5uOCoyO1xuICAgICAgICBjb25zdCBuUG9pbnRzQ2h1bmsgPSBNYXRoLmZsb29yKCgxPDwyNCkvc0cpO1xuXG4gICAgICAgIGNvbnN0IG9sZFBvcyA9IGZkVG8ucG9zO1xuICAgICAgICBmZFRvLnBvcyA9IHN0YXJ0U2VjdGlvbnNbc2VjdGlvbklkXTtcblxuICAgICAgICBmb3IgKGxldCBpPTA7IGk8IG5Qb2ludHM7IGkgKz0gblBvaW50c0NodW5rKSB7XG4gICAgICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZGVidWcoYEhhc2hpbmcgJHtzZWN0aW9uTmFtZX06ICR7aX0vJHtuUG9pbnRzfWApO1xuICAgICAgICAgICAgY29uc3QgbiA9IE1hdGgubWluKG5Qb2ludHMtaSwgblBvaW50c0NodW5rKTtcblxuICAgICAgICAgICAgY29uc3QgYnVmZkxFTSA9IGF3YWl0IGZkVG8ucmVhZChuICogc0cpO1xuXG4gICAgICAgICAgICBjb25zdCBidWZmVSA9IGF3YWl0IEcuYmF0Y2hMRU10b1UoYnVmZkxFTSk7XG5cbiAgICAgICAgICAgIG5leHRDaGFsbGVuZ2VIYXNoZXIudXBkYXRlKGJ1ZmZVKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZkVG8ucG9zID0gb2xkUG9zO1xuICAgIH1cblxufVxuXG4iLCIvKlxuICAgIENvcHlyaWdodCAyMDE4IDBLSU1TIGFzc29jaWF0aW9uLlxuXG4gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2Ygc25hcmtKUy5cblxuICAgIHNuYXJrSlMgaXMgYSBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0XG4gICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxuICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG5cbiAgICBzbmFya0pTIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUXG4gICAgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZXG4gICAgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljXG4gICAgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuXG4gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAgICBhbG9uZyB3aXRoIHNuYXJrSlMuIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXG4qL1xuXG5pbXBvcnQgQmxha2UyYiBmcm9tIFwiYmxha2UyYi13YXNtXCI7XG5pbXBvcnQgKiBhcyB1dGlscyBmcm9tIFwiLi9wb3dlcnNvZnRhdV91dGlscy5qc1wiO1xuaW1wb3J0ICogYXMga2V5UGFpciBmcm9tIFwiLi9rZXlwYWlyLmpzXCI7XG5pbXBvcnQgKiBhcyBiaW5GaWxlVXRpbHMgZnJvbSBcIkBpZGVuMy9iaW5maWxldXRpbHNcIjtcbmltcG9ydCB7IENoYUNoYSwgQmlnQnVmZmVyIH0gZnJvbSBcImZmamF2YXNjcmlwdFwiO1xuaW1wb3J0ICogYXMgbWlzYyBmcm9tIFwiLi9taXNjLmpzXCI7XG5jb25zdCBzYW1lUmF0aW8gPSBtaXNjLnNhbWVSYXRpbztcblxuYXN5bmMgZnVuY3Rpb24gdmVyaWZ5Q29udHJpYnV0aW9uKGN1cnZlLCBjdXIsIHByZXYsIGxvZ2dlcikge1xuICAgIGxldCBzcjtcbiAgICBpZiAoY3VyLnR5cGUgPT0gMSkgeyAgICAvLyBWZXJpZnkgdGhlIGJlYWNvbi5cbiAgICAgICAgY29uc3QgYmVhY29uS2V5ID0gYXdhaXQgdXRpbHMua2V5RnJvbUJlYWNvbihjdXJ2ZSwgcHJldi5uZXh0Q2hhbGxlbmdlLCBjdXIuYmVhY29uSGFzaCwgY3VyLm51bUl0ZXJhdGlvbnNFeHApO1xuXG4gICAgICAgIGlmICghY3VydmUuRzEuZXEoY3VyLmtleS50YXUuZzFfcywgYmVhY29uS2V5LnRhdS5nMV9zKSkge1xuICAgICAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmVycm9yKGBCRUFDT04ga2V5ICh0YXVHMV9zKSBpcyBub3QgZ2VuZXJhdGVkIGNvcnJlY3RseSBpbiBjaGFsbGVuZ2UgIyR7Y3VyLmlkfSAgJHtjdXIubmFtZSB8fCBcIlwifWAgKTtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIWN1cnZlLkcxLmVxKGN1ci5rZXkudGF1LmcxX3N4LCBiZWFjb25LZXkudGF1LmcxX3N4KSkge1xuICAgICAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmVycm9yKGBCRUFDT04ga2V5ICh0YXVHMV9zeCkgaXMgbm90IGdlbmVyYXRlZCBjb3JyZWN0bHkgaW4gY2hhbGxlbmdlICMke2N1ci5pZH0gICR7Y3VyLm5hbWUgfHwgXCJcIn1gICk7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFjdXJ2ZS5HMi5lcShjdXIua2V5LnRhdS5nMl9zcHgsIGJlYWNvbktleS50YXUuZzJfc3B4KSkge1xuICAgICAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmVycm9yKGBCRUFDT04ga2V5ICh0YXVHMl9zcHgpIGlzIG5vdCBnZW5lcmF0ZWQgY29ycmVjdGx5IGluIGNoYWxsZW5nZSAjJHtjdXIuaWR9ICAke2N1ci5uYW1lIHx8IFwiXCJ9YCApO1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFjdXJ2ZS5HMS5lcShjdXIua2V5LmFscGhhLmcxX3MsIGJlYWNvbktleS5hbHBoYS5nMV9zKSkge1xuICAgICAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmVycm9yKGBCRUFDT04ga2V5IChhbHBoYUcxX3MpIGlzIG5vdCBnZW5lcmF0ZWQgY29ycmVjdGx5IGluIGNoYWxsZW5nZSAjJHtjdXIuaWR9ICAke2N1ci5uYW1lIHx8IFwiXCJ9YCApO1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGlmICghY3VydmUuRzEuZXEoY3VyLmtleS5hbHBoYS5nMV9zeCwgYmVhY29uS2V5LmFscGhhLmcxX3N4KSkge1xuICAgICAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmVycm9yKGBCRUFDT04ga2V5IChhbHBoYUcxX3N4KSBpcyBub3QgZ2VuZXJhdGVkIGNvcnJlY3RseSBpbiBjaGFsbGVuZ2UgIyR7Y3VyLmlkfSAgJHtjdXIubmFtZSB8fCBcIlwifWAgKTtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIWN1cnZlLkcyLmVxKGN1ci5rZXkuYWxwaGEuZzJfc3B4LCBiZWFjb25LZXkuYWxwaGEuZzJfc3B4KSkge1xuICAgICAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmVycm9yKGBCRUFDT04ga2V5IChhbHBoYUcyX3NweCkgaXMgbm90IGdlbmVyYXRlZCBjb3JyZWN0bHkgaW4gY2hhbGxlbmdlICMke2N1ci5pZH0gICR7Y3VyLm5hbWUgfHwgXCJcIn1gICk7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIWN1cnZlLkcxLmVxKGN1ci5rZXkuYmV0YS5nMV9zLCBiZWFjb25LZXkuYmV0YS5nMV9zKSkge1xuICAgICAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmVycm9yKGBCRUFDT04ga2V5IChiZXRhRzFfcykgaXMgbm90IGdlbmVyYXRlZCBjb3JyZWN0bHkgaW4gY2hhbGxlbmdlICMke2N1ci5pZH0gICR7Y3VyLm5hbWUgfHwgXCJcIn1gICk7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFjdXJ2ZS5HMS5lcShjdXIua2V5LmJldGEuZzFfc3gsIGJlYWNvbktleS5iZXRhLmcxX3N4KSkge1xuICAgICAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmVycm9yKGBCRUFDT04ga2V5IChiZXRhRzFfc3gpIGlzIG5vdCBnZW5lcmF0ZWQgY29ycmVjdGx5IGluIGNoYWxsZW5nZSAjJHtjdXIuaWR9ICAke2N1ci5uYW1lIHx8IFwiXCJ9YCApO1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGlmICghY3VydmUuRzIuZXEoY3VyLmtleS5iZXRhLmcyX3NweCwgYmVhY29uS2V5LmJldGEuZzJfc3B4KSkge1xuICAgICAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmVycm9yKGBCRUFDT04ga2V5IChiZXRhRzJfc3B4KSBpcyBub3QgZ2VuZXJhdGVkIGNvcnJlY3RseSBpbiBjaGFsbGVuZ2UgIyR7Y3VyLmlkfSAgJHtjdXIubmFtZSB8fCBcIlwifWAgKTtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGN1ci5rZXkudGF1LmcyX3NwID0gY3VydmUuRzIudG9BZmZpbmUoa2V5UGFpci5nZXRHMnNwKGN1cnZlLCAwLCBwcmV2Lm5leHRDaGFsbGVuZ2UsIGN1ci5rZXkudGF1LmcxX3MsIGN1ci5rZXkudGF1LmcxX3N4KSk7XG4gICAgY3VyLmtleS5hbHBoYS5nMl9zcCA9IGN1cnZlLkcyLnRvQWZmaW5lKGtleVBhaXIuZ2V0RzJzcChjdXJ2ZSwgMSwgcHJldi5uZXh0Q2hhbGxlbmdlLCBjdXIua2V5LmFscGhhLmcxX3MsIGN1ci5rZXkuYWxwaGEuZzFfc3gpKTtcbiAgICBjdXIua2V5LmJldGEuZzJfc3AgPSBjdXJ2ZS5HMi50b0FmZmluZShrZXlQYWlyLmdldEcyc3AoY3VydmUsIDIsIHByZXYubmV4dENoYWxsZW5nZSwgY3VyLmtleS5iZXRhLmcxX3MsIGN1ci5rZXkuYmV0YS5nMV9zeCkpO1xuXG4gICAgc3IgPSBhd2FpdCBzYW1lUmF0aW8oY3VydmUsIGN1ci5rZXkudGF1LmcxX3MsIGN1ci5rZXkudGF1LmcxX3N4LCBjdXIua2V5LnRhdS5nMl9zcCwgY3VyLmtleS50YXUuZzJfc3B4KTtcbiAgICBpZiAoc3IgIT09IHRydWUpIHtcbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmVycm9yKFwiSU5WQUxJRCBrZXkgKHRhdSkgaW4gY2hhbGxlbmdlICNcIitjdXIuaWQpO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgc3IgPSBhd2FpdCBzYW1lUmF0aW8oY3VydmUsIGN1ci5rZXkuYWxwaGEuZzFfcywgY3VyLmtleS5hbHBoYS5nMV9zeCwgY3VyLmtleS5hbHBoYS5nMl9zcCwgY3VyLmtleS5hbHBoYS5nMl9zcHgpO1xuICAgIGlmIChzciAhPT0gdHJ1ZSkge1xuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZXJyb3IoXCJJTlZBTElEIGtleSAoYWxwaGEpIGluIGNoYWxsZW5nZSAjXCIrY3VyLmlkKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHNyID0gYXdhaXQgc2FtZVJhdGlvKGN1cnZlLCBjdXIua2V5LmJldGEuZzFfcywgY3VyLmtleS5iZXRhLmcxX3N4LCBjdXIua2V5LmJldGEuZzJfc3AsIGN1ci5rZXkuYmV0YS5nMl9zcHgpO1xuICAgIGlmIChzciAhPT0gdHJ1ZSkge1xuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZXJyb3IoXCJJTlZBTElEIGtleSAoYmV0YSkgaW4gY2hhbGxlbmdlICNcIitjdXIuaWQpO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgc3IgPSBhd2FpdCBzYW1lUmF0aW8oY3VydmUsIHByZXYudGF1RzEsIGN1ci50YXVHMSwgY3VyLmtleS50YXUuZzJfc3AsIGN1ci5rZXkudGF1LmcyX3NweCk7XG4gICAgaWYgKHNyICE9PSB0cnVlKSB7XG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5lcnJvcihcIklOVkFMSUQgdGF1KkcxLiBjaGFsbGVuZ2UgI1wiK2N1ci5pZCtcIiBJdCBkb2VzIG5vdCBmb2xsb3cgdGhlIHByZXZpb3VzIGNvbnRyaWJ1dGlvblwiKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHNyID0gYXdhaXQgc2FtZVJhdGlvKGN1cnZlLCAgY3VyLmtleS50YXUuZzFfcywgY3VyLmtleS50YXUuZzFfc3gsIHByZXYudGF1RzIsIGN1ci50YXVHMik7XG4gICAgaWYgKHNyICE9PSB0cnVlKSB7XG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5lcnJvcihcIklOVkFMSUQgdGF1KkcyLiBjaGFsbGVuZ2UgI1wiK2N1ci5pZCtcIiBJdCBkb2VzIG5vdCBmb2xsb3cgdGhlIHByZXZpb3VzIGNvbnRyaWJ1dGlvblwiKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHNyID0gYXdhaXQgc2FtZVJhdGlvKGN1cnZlLCBwcmV2LmFscGhhRzEsIGN1ci5hbHBoYUcxLCBjdXIua2V5LmFscGhhLmcyX3NwLCBjdXIua2V5LmFscGhhLmcyX3NweCk7XG4gICAgaWYgKHNyICE9PSB0cnVlKSB7XG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5lcnJvcihcIklOVkFMSUQgYWxwaGEqRzEuIGNoYWxsZW5nZSAjXCIrY3VyLmlkK1wiIEl0IGRvZXMgbm90IGZvbGxvdyB0aGUgcHJldmlvdXMgY29udHJpYnV0aW9uXCIpO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgc3IgPSBhd2FpdCBzYW1lUmF0aW8oY3VydmUsIHByZXYuYmV0YUcxLCBjdXIuYmV0YUcxLCBjdXIua2V5LmJldGEuZzJfc3AsIGN1ci5rZXkuYmV0YS5nMl9zcHgpO1xuICAgIGlmIChzciAhPT0gdHJ1ZSkge1xuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZXJyb3IoXCJJTlZBTElEIGJldGEqRzEuIGNoYWxsZW5nZSAjXCIrY3VyLmlkK1wiIEl0IGRvZXMgbm90IGZvbGxvdyB0aGUgcHJldmlvdXMgY29udHJpYnV0aW9uXCIpO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgc3IgPSBhd2FpdCBzYW1lUmF0aW8oY3VydmUsICBjdXIua2V5LmJldGEuZzFfcywgY3VyLmtleS5iZXRhLmcxX3N4LCBwcmV2LmJldGFHMiwgY3VyLmJldGFHMik7XG4gICAgaWYgKHNyICE9PSB0cnVlKSB7XG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5lcnJvcihcIklOVkFMSUQgYmV0YSpHMi4gY2hhbGxlbmdlICNcIitjdXIuaWQrXCJJdCBkb2VzIG5vdCBmb2xsb3cgdGhlIHByZXZpb3VzIGNvbnRyaWJ1dGlvblwiKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKFwiUG93ZXJzIE9mIHRhdSBmaWxlIE9LIVwiKTtcbiAgICByZXR1cm4gdHJ1ZTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgYXN5bmMgZnVuY3Rpb24gdmVyaWZ5KHRhdUZpbGVuYW1lLCBsb2dnZXIpIHtcbiAgICBsZXQgc3I7XG4gICAgYXdhaXQgQmxha2UyYi5yZWFkeSgpO1xuXG4gICAgY29uc3Qge2ZkLCBzZWN0aW9uc30gPSBhd2FpdCBiaW5GaWxlVXRpbHMucmVhZEJpbkZpbGUodGF1RmlsZW5hbWUsIFwicHRhdVwiLCAxKTtcbiAgICBjb25zdCB7Y3VydmUsIHBvd2VyLCBjZXJlbW9ueVBvd2VyfSA9IGF3YWl0IHV0aWxzLnJlYWRQVGF1SGVhZGVyKGZkLCBzZWN0aW9ucyk7XG4gICAgY29uc3QgY29udHJzID0gYXdhaXQgdXRpbHMucmVhZENvbnRyaWJ1dGlvbnMoZmQsIGN1cnZlLCBzZWN0aW9ucyk7XG5cbiAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZGVidWcoXCJwb3dlcjogMioqXCIgKyBwb3dlcik7XG4gICAgLy8gVmVyaWZ5IExhc3QgY29udHJpYnV0aW9uXG5cbiAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZGVidWcoXCJDb21wdXRpbmcgaW5pdGlhbCBjb250cmlidXRpb24gaGFzaFwiKTtcbiAgICBjb25zdCBpbml0aWFsQ29udHJpYnV0aW9uID0ge1xuICAgICAgICB0YXVHMTogY3VydmUuRzEuZyxcbiAgICAgICAgdGF1RzI6IGN1cnZlLkcyLmcsXG4gICAgICAgIGFscGhhRzE6IGN1cnZlLkcxLmcsXG4gICAgICAgIGJldGFHMTogY3VydmUuRzEuZyxcbiAgICAgICAgYmV0YUcyOiBjdXJ2ZS5HMi5nLFxuICAgICAgICBuZXh0Q2hhbGxlbmdlOiB1dGlscy5jYWxjdWxhdGVGaXJzdENoYWxsZW5nZUhhc2goY3VydmUsIGNlcmVtb255UG93ZXIsIGxvZ2dlciksXG4gICAgICAgIHJlc3BvbnNlSGFzaDogQmxha2UyYig2NCkuZGlnZXN0KClcbiAgICB9O1xuXG4gICAgaWYgKGNvbnRycy5sZW5ndGggPT0gMCkge1xuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZXJyb3IoXCJUaGlzIGZpbGUgaGFzIG5vIGNvbnRyaWJ1dGlvbiEgSXQgY2Fubm90IGJlIHVzZWQgaW4gcHJvZHVjdGlvblwiKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGxldCBwcmV2Q29udHI7XG4gICAgaWYgKGNvbnRycy5sZW5ndGg+MSkge1xuICAgICAgICBwcmV2Q29udHIgPSBjb250cnNbY29udHJzLmxlbmd0aC0yXTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBwcmV2Q29udHIgPSBpbml0aWFsQ29udHJpYnV0aW9uO1xuICAgIH1cbiAgICBjb25zdCBjdXJDb250ciA9IGNvbnRyc1tjb250cnMubGVuZ3RoLTFdO1xuICAgIGlmIChsb2dnZXIpIGxvZ2dlci5kZWJ1ZyhcIlZhbGlkYXRpbmcgY29udHJpYnV0aW9uICNcIitjb250cnNbY29udHJzLmxlbmd0aC0xXS5pZCk7XG4gICAgY29uc3QgcmVzID0gYXdhaXQgdmVyaWZ5Q29udHJpYnV0aW9uKGN1cnZlLCBjdXJDb250ciwgcHJldkNvbnRyLCBsb2dnZXIpO1xuICAgIGlmICghcmVzKSByZXR1cm4gZmFsc2U7XG5cblxuICAgIGNvbnN0IG5leHRDb250cmlidXRpb25IYXNoZXIgPSBCbGFrZTJiKDY0KTtcbiAgICBuZXh0Q29udHJpYnV0aW9uSGFzaGVyLnVwZGF0ZShjdXJDb250ci5yZXNwb25zZUhhc2gpO1xuXG4gICAgLy8gVmVyaWZ5IHBvd2VycyBhbmQgY29tcHV0ZSBuZXh0Q2hhbGxlbmdlSGFzaFxuXG4gICAgLy8gYXdhaXQgdGVzdCgpO1xuXG4gICAgLy8gVmVyaWZ5IFNlY3Rpb24gdGF1KkcxXG4gICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmRlYnVnKFwiVmVyaWZ5aW5nIHBvd2VycyBpbiB0YXUqRzEgc2VjdGlvblwiKTtcbiAgICBjb25zdCByVGF1MSA9IGF3YWl0IHByb2Nlc3NTZWN0aW9uKDIsIFwiRzFcIiwgXCJ0YXVHMVwiLCAoMiAqKiBwb3dlcikqMi0xLCBbMCwgMV0sIGxvZ2dlcik7XG4gICAgc3IgPSBhd2FpdCBzYW1lUmF0aW8oY3VydmUsIHJUYXUxLlIxLCByVGF1MS5SMiwgY3VydmUuRzIuZywgY3VyQ29udHIudGF1RzIpO1xuICAgIGlmIChzciAhPT0gdHJ1ZSkge1xuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZXJyb3IoXCJ0YXVHMSBzZWN0aW9uLiBQb3dlcnMgZG8gbm90IG1hdGNoXCIpO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGlmICghY3VydmUuRzEuZXEoY3VydmUuRzEuZywgclRhdTEuc2luZ3VsYXJQb2ludHNbMF0pKSB7XG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5lcnJvcihcIkZpcnN0IGVsZW1lbnQgb2YgdGF1KkcxIHNlY3Rpb24gbXVzdCBiZSB0aGUgZ2VuZXJhdG9yXCIpO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGlmICghY3VydmUuRzEuZXEoY3VyQ29udHIudGF1RzEsIHJUYXUxLnNpbmd1bGFyUG9pbnRzWzFdKSkge1xuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZXJyb3IoXCJTZWNvbmQgZWxlbWVudCBvZiB0YXUqRzEgc2VjdGlvbiBkb2VzIG5vdCBtYXRjaCB0aGUgb25lIGluIHRoZSBjb250cmlidXRpb24gc2VjdGlvblwiKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIC8vIGF3YWl0IHRlc3QoKTtcblxuICAgIC8vIFZlcmlmeSBTZWN0aW9uIHRhdSpHMlxuICAgIGlmIChsb2dnZXIpIGxvZ2dlci5kZWJ1ZyhcIlZlcmlmeWluZyBwb3dlcnMgaW4gdGF1KkcyIHNlY3Rpb25cIik7XG4gICAgY29uc3QgclRhdTIgPSBhd2FpdCBwcm9jZXNzU2VjdGlvbigzLCBcIkcyXCIsIFwidGF1RzJcIiwgMiAqKiBwb3dlciwgWzAsIDFdLCAgbG9nZ2VyKTtcbiAgICBzciA9IGF3YWl0IHNhbWVSYXRpbyhjdXJ2ZSwgY3VydmUuRzEuZywgY3VyQ29udHIudGF1RzEsIHJUYXUyLlIxLCByVGF1Mi5SMik7XG4gICAgaWYgKHNyICE9PSB0cnVlKSB7XG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5lcnJvcihcInRhdUcyIHNlY3Rpb24uIFBvd2VycyBkbyBub3QgbWF0Y2hcIik7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgaWYgKCFjdXJ2ZS5HMi5lcShjdXJ2ZS5HMi5nLCByVGF1Mi5zaW5ndWxhclBvaW50c1swXSkpIHtcbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmVycm9yKFwiRmlyc3QgZWxlbWVudCBvZiB0YXUqRzIgc2VjdGlvbiBtdXN0IGJlIHRoZSBnZW5lcmF0b3JcIik7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgaWYgKCFjdXJ2ZS5HMi5lcShjdXJDb250ci50YXVHMiwgclRhdTIuc2luZ3VsYXJQb2ludHNbMV0pKSB7XG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5lcnJvcihcIlNlY29uZCBlbGVtZW50IG9mIHRhdSpHMiBzZWN0aW9uIGRvZXMgbm90IG1hdGNoIHRoZSBvbmUgaW4gdGhlIGNvbnRyaWJ1dGlvbiBzZWN0aW9uXCIpO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgLy8gVmVyaWZ5IFNlY3Rpb24gYWxwaGEqdGF1KkcxXG4gICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmRlYnVnKFwiVmVyaWZ5aW5nIHBvd2VycyBpbiBhbHBoYSp0YXUqRzEgc2VjdGlvblwiKTtcbiAgICBjb25zdCByQWxwaGFUYXVHMSA9IGF3YWl0IHByb2Nlc3NTZWN0aW9uKDQsIFwiRzFcIiwgXCJhbHBoYXRhdUcxXCIsIDIgKiogcG93ZXIsIFswXSwgbG9nZ2VyKTtcbiAgICBzciA9IGF3YWl0IHNhbWVSYXRpbyhjdXJ2ZSwgckFscGhhVGF1RzEuUjEsIHJBbHBoYVRhdUcxLlIyLCBjdXJ2ZS5HMi5nLCBjdXJDb250ci50YXVHMik7XG4gICAgaWYgKHNyICE9PSB0cnVlKSB7XG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5lcnJvcihcImFscGhhVGF1RzEgc2VjdGlvbi4gUG93ZXJzIGRvIG5vdCBtYXRjaFwiKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBpZiAoIWN1cnZlLkcxLmVxKGN1ckNvbnRyLmFscGhhRzEsIHJBbHBoYVRhdUcxLnNpbmd1bGFyUG9pbnRzWzBdKSkge1xuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZXJyb3IoXCJGaXJzdCBlbGVtZW50IG9mIGFscGhhKnRhdSpHMSBzZWN0aW9uIChhbHBoYSpHMSkgZG9lcyBub3QgbWF0Y2ggdGhlIG9uZSBpbiB0aGUgY29udHJpYnV0aW9uIHNlY3Rpb25cIik7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvLyBWZXJpZnkgU2VjdGlvbiBiZXRhKnRhdSpHMVxuICAgIGlmIChsb2dnZXIpIGxvZ2dlci5kZWJ1ZyhcIlZlcmlmeWluZyBwb3dlcnMgaW4gYmV0YSp0YXUqRzEgc2VjdGlvblwiKTtcbiAgICBjb25zdCByQmV0YVRhdUcxID0gYXdhaXQgcHJvY2Vzc1NlY3Rpb24oNSwgXCJHMVwiLCBcImJldGF0YXVHMVwiLCAyICoqIHBvd2VyLCBbMF0sIGxvZ2dlcik7XG4gICAgc3IgPSBhd2FpdCBzYW1lUmF0aW8oY3VydmUsIHJCZXRhVGF1RzEuUjEsIHJCZXRhVGF1RzEuUjIsIGN1cnZlLkcyLmcsIGN1ckNvbnRyLnRhdUcyKTtcbiAgICBpZiAoc3IgIT09IHRydWUpIHtcbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmVycm9yKFwiYmV0YVRhdUcxIHNlY3Rpb24uIFBvd2VycyBkbyBub3QgbWF0Y2hcIik7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgaWYgKCFjdXJ2ZS5HMS5lcShjdXJDb250ci5iZXRhRzEsIHJCZXRhVGF1RzEuc2luZ3VsYXJQb2ludHNbMF0pKSB7XG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5lcnJvcihcIkZpcnN0IGVsZW1lbnQgb2YgYmV0YSp0YXUqRzEgc2VjdGlvbiAoYmV0YSpHMSkgZG9lcyBub3QgbWF0Y2ggdGhlIG9uZSBpbiB0aGUgY29udHJpYnV0aW9uIHNlY3Rpb25cIik7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvL1ZlcmlmeSBCZXRhIEcyXG4gICAgY29uc3QgYmV0YUcyID0gYXdhaXQgcHJvY2Vzc1NlY3Rpb25CZXRhRzIobG9nZ2VyKTtcbiAgICBpZiAoIWN1cnZlLkcyLmVxKGN1ckNvbnRyLmJldGFHMiwgYmV0YUcyKSkge1xuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZXJyb3IoXCJiZXRhRzIgZWxlbWVudCBpbiBiZXRhRzIgc2VjdGlvbiBkb2VzIG5vdCBtYXRjaCB0aGUgb25lIGluIHRoZSBjb250cmlidXRpb24gc2VjdGlvblwiKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuXG4gICAgY29uc3QgbmV4dENvbnRyaWJ1dGlvbkhhc2ggPSBuZXh0Q29udHJpYnV0aW9uSGFzaGVyLmRpZ2VzdCgpO1xuXG4gICAgLy8gQ2hlY2sgdGhlIG5leHRDaGFsbGVuZ2VIYXNoXG4gICAgaWYgKHBvd2VyID09IGNlcmVtb255UG93ZXIpIHtcbiAgICAgICAgaWYgKCFtaXNjLmhhc2hJc0VxdWFsKG5leHRDb250cmlidXRpb25IYXNoLGN1ckNvbnRyLm5leHRDaGFsbGVuZ2UpKSB7XG4gICAgICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZXJyb3IoXCJIYXNoIG9mIHRoZSB2YWx1ZXMgZG9lcyBub3QgbWF0Y2ggdGhlIG5leHQgY2hhbGxlbmdlIG9mIHRoZSBsYXN0IGNvbnRyaWJ1dG9yIGluIHRoZSBjb250cmlidXRpb25zIHNlY3Rpb25cIik7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhtaXNjLmZvcm1hdEhhc2gobmV4dENvbnRyaWJ1dGlvbkhhc2gsIFwiTmV4dCBjaGFsbGVuZ2UgaGFzaDogXCIpKTtcblxuICAgIC8vIFZlcmlmeSBQcmV2aW91cyBjb250cmlidXRpb25zXG5cbiAgICBwcmludENvbnRyaWJ1dGlvbihjdXJDb250ciwgcHJldkNvbnRyKTtcbiAgICBmb3IgKGxldCBpID0gY29udHJzLmxlbmd0aC0yOyBpPj0wOyBpLS0pIHtcbiAgICAgICAgY29uc3QgY3VyQ29udHIgPSBjb250cnNbaV07XG4gICAgICAgIGNvbnN0IHByZXZDb250ciA9ICAoaT4wKSA/IGNvbnRyc1tpLTFdIDogaW5pdGlhbENvbnRyaWJ1dGlvbjtcbiAgICAgICAgY29uc3QgcmVzID0gYXdhaXQgdmVyaWZ5Q29udHJpYnV0aW9uKGN1cnZlLCBjdXJDb250ciwgcHJldkNvbnRyLCBsb2dnZXIpO1xuICAgICAgICBpZiAoIXJlcykgcmV0dXJuIGZhbHNlO1xuICAgICAgICBwcmludENvbnRyaWJ1dGlvbihjdXJDb250ciwgcHJldkNvbnRyLCBsb2dnZXIpO1xuICAgIH1cbiAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhcIi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXCIpO1xuXG4gICAgaWYgKCghc2VjdGlvbnNbMTJdKSB8fCAoIXNlY3Rpb25zWzEzXSkgfHwgKCFzZWN0aW9uc1sxNF0pIHx8ICghc2VjdGlvbnNbMTVdKSkge1xuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIud2FybihcbiAgICAgICAgICAgIFwidGhpcyBmaWxlIGRvZXMgbm90IGNvbnRhaW4gcGhhc2UyIHByZWNhbGN1bGF0ZWQgdmFsdWVzLiBQbGVhc2UgcnVuOiBcXG5cIiArXG4gICAgICAgICAgICBcIiAgIHNuYXJranMgXFxcInBvd2Vyc29mdGF1IHByZXBhcmVwaGFzZTJcXFwiIHRvIHByZXBhcmUgdGhpcyBmaWxlIHRvIGJlIHVzZWQgaW4gdGhlIHBoYXNlMiBjZXJlbW9ueS5cIlxuICAgICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIGxldCByZXM7XG4gICAgICAgIHJlcyA9IGF3YWl0IHZlcmlmeUxhZ3JhbmdlRXZhbHVhdGlvbnMoXCJHMVwiLCAyLCAxMiwgXCJ0YXVHMVwiLCBsb2dnZXIpO1xuICAgICAgICBpZiAoIXJlcykgcmV0dXJuIGZhbHNlO1xuICAgICAgICByZXMgPSBhd2FpdCB2ZXJpZnlMYWdyYW5nZUV2YWx1YXRpb25zKFwiRzJcIiwgMywgMTMsIFwidGF1RzJcIiwgbG9nZ2VyKTtcbiAgICAgICAgaWYgKCFyZXMpIHJldHVybiBmYWxzZTtcbiAgICAgICAgcmVzID0gYXdhaXQgdmVyaWZ5TGFncmFuZ2VFdmFsdWF0aW9ucyhcIkcxXCIsIDQsIDE0LCBcImFscGhhVGF1RzFcIiwgbG9nZ2VyKTtcbiAgICAgICAgaWYgKCFyZXMpIHJldHVybiBmYWxzZTtcbiAgICAgICAgcmVzID0gYXdhaXQgdmVyaWZ5TGFncmFuZ2VFdmFsdWF0aW9ucyhcIkcxXCIsIDUsIDE1LCBcImJldGFUYXVHMVwiLCBsb2dnZXIpO1xuICAgICAgICBpZiAoIXJlcykgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGF3YWl0IGZkLmNsb3NlKCk7XG5cbiAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhcIlBvd2VycyBvZiBUYXUgT2shXCIpO1xuXG4gICAgcmV0dXJuIHRydWU7XG5cbiAgICBmdW5jdGlvbiBwcmludENvbnRyaWJ1dGlvbihjdXJDb250ciwgcHJldkNvbnRyKSB7XG4gICAgICAgIGlmICghbG9nZ2VyKSByZXR1cm47XG4gICAgICAgIGxvZ2dlci5pbmZvKFwiLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cIik7XG4gICAgICAgIGxvZ2dlci5pbmZvKGBDb250cmlidXRpb24gIyR7Y3VyQ29udHIuaWR9OiAke2N1ckNvbnRyLm5hbWUgfHxcIlwifWApO1xuXG4gICAgICAgIGxvZ2dlci5pbmZvKG1pc2MuZm9ybWF0SGFzaChjdXJDb250ci5uZXh0Q2hhbGxlbmdlLCBcIk5leHQgQ2hhbGxlbmdlOiBcIikpO1xuXG4gICAgICAgIGNvbnN0IGJ1ZmZWICA9IG5ldyBVaW50OEFycmF5KGN1cnZlLkcxLkYubjgqMio2K2N1cnZlLkcyLkYubjgqMiozKTtcbiAgICAgICAgdXRpbHMudG9QdGF1UHViS2V5UnByKGJ1ZmZWLCAwLCBjdXJ2ZSwgY3VyQ29udHIua2V5LCBmYWxzZSk7XG5cbiAgICAgICAgY29uc3QgcmVzcG9uc2VIYXNoZXIgPSBCbGFrZTJiKDY0KTtcbiAgICAgICAgcmVzcG9uc2VIYXNoZXIuc2V0UGFydGlhbEhhc2goY3VyQ29udHIucGFydGlhbEhhc2gpO1xuICAgICAgICByZXNwb25zZUhhc2hlci51cGRhdGUoYnVmZlYpO1xuICAgICAgICBjb25zdCByZXNwb25zZUhhc2ggPSByZXNwb25zZUhhc2hlci5kaWdlc3QoKTtcblxuICAgICAgICBsb2dnZXIuaW5mbyhtaXNjLmZvcm1hdEhhc2gocmVzcG9uc2VIYXNoLCBcIlJlc3BvbnNlIEhhc2g6XCIpKTtcblxuICAgICAgICBsb2dnZXIuaW5mbyhtaXNjLmZvcm1hdEhhc2gocHJldkNvbnRyLm5leHRDaGFsbGVuZ2UsIFwiUmVzcG9uc2UgSGFzaDpcIikpO1xuXG4gICAgICAgIGlmIChjdXJDb250ci50eXBlID09IDEpIHtcbiAgICAgICAgICAgIGxvZ2dlci5pbmZvKGBCZWFjb24gZ2VuZXJhdG9yOiAke21pc2MuYnl0ZUFycmF5MmhleChjdXJDb250ci5iZWFjb25IYXNoKX1gKTtcbiAgICAgICAgICAgIGxvZ2dlci5pbmZvKGBCZWFjb24gaXRlcmF0aW9ucyBFeHA6ICR7Y3VyQ29udHIubnVtSXRlcmF0aW9uc0V4cH1gKTtcbiAgICAgICAgfVxuXG4gICAgfVxuXG4gICAgYXN5bmMgZnVuY3Rpb24gcHJvY2Vzc1NlY3Rpb25CZXRhRzIobG9nZ2VyKSB7XG4gICAgICAgIGNvbnN0IEcgPSBjdXJ2ZS5HMjtcbiAgICAgICAgY29uc3Qgc0cgPSBHLkYubjgqMjtcbiAgICAgICAgY29uc3QgYnVmZlV2ID0gbmV3IFVpbnQ4QXJyYXkoc0cpO1xuXG4gICAgICAgIGlmICghc2VjdGlvbnNbNl0pICB7XG4gICAgICAgICAgICBsb2dnZXIuZXJyb3IoXCJGaWxlIGhhcyBubyBCZXRhRzIgc2VjdGlvblwiKTtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkZpbGUgaGFzIG5vIEJldGFHMiBzZWN0aW9uXCIpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzZWN0aW9uc1s2XS5sZW5ndGg+MSkge1xuICAgICAgICAgICAgbG9nZ2VyLmVycm9yKFwiRmlsZSBoYXMgbm8gQmV0YUcyIHNlY3Rpb25cIik7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJGaWxlIGhhcyBtb3JlIHRoYW4gb25lIEdldGFHMiBzZWN0aW9uXCIpO1xuICAgICAgICB9XG4gICAgICAgIGZkLnBvcyA9IHNlY3Rpb25zWzZdWzBdLnA7XG5cbiAgICAgICAgY29uc3QgYnVmZiA9IGF3YWl0IGZkLnJlYWQoc0cpO1xuICAgICAgICBjb25zdCBQID0gRy5mcm9tUnByTEVNKGJ1ZmYpO1xuXG4gICAgICAgIEcudG9ScHJVbmNvbXByZXNzZWQoYnVmZlV2LCAwLCBQKTtcbiAgICAgICAgbmV4dENvbnRyaWJ1dGlvbkhhc2hlci51cGRhdGUoYnVmZlV2KTtcblxuICAgICAgICByZXR1cm4gUDtcbiAgICB9XG5cbiAgICBhc3luYyBmdW5jdGlvbiBwcm9jZXNzU2VjdGlvbihpZFNlY3Rpb24sIGdyb3VwTmFtZSwgc2VjdGlvbk5hbWUsIG5Qb2ludHMsIHNpbmd1bGFyUG9pbnRJbmRleGVzLCBsb2dnZXIpIHtcbiAgICAgICAgY29uc3QgTUFYX0NIVU5LX1NJWkUgPSAxPDwxNjtcbiAgICAgICAgY29uc3QgRyA9IGN1cnZlW2dyb3VwTmFtZV07XG4gICAgICAgIGNvbnN0IHNHID0gRy5GLm44KjI7XG4gICAgICAgIGF3YWl0IGJpbkZpbGVVdGlscy5zdGFydFJlYWRVbmlxdWVTZWN0aW9uKGZkLCBzZWN0aW9ucywgaWRTZWN0aW9uKTtcblxuICAgICAgICBjb25zdCBzaW5ndWxhclBvaW50cyA9IFtdO1xuXG4gICAgICAgIGxldCBSMSA9IEcuemVybztcbiAgICAgICAgbGV0IFIyID0gRy56ZXJvO1xuXG4gICAgICAgIGxldCBsYXN0QmFzZSA9IEcuemVybztcblxuICAgICAgICBmb3IgKGxldCBpPTA7IGk8blBvaW50czsgaSArPSBNQVhfQ0hVTktfU0laRSkge1xuICAgICAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmRlYnVnKGBwb2ludHMgcmVsYXRpb25zOiAke3NlY3Rpb25OYW1lfTogJHtpfS8ke25Qb2ludHN9IGApO1xuICAgICAgICAgICAgY29uc3QgbiA9IE1hdGgubWluKG5Qb2ludHMgLSBpLCBNQVhfQ0hVTktfU0laRSk7XG4gICAgICAgICAgICBjb25zdCBiYXNlcyA9IGF3YWl0IGZkLnJlYWQobipzRyk7XG5cbiAgICAgICAgICAgIGNvbnN0IGJhc2VzVSA9IGF3YWl0IEcuYmF0Y2hMRU10b1UoYmFzZXMpO1xuICAgICAgICAgICAgbmV4dENvbnRyaWJ1dGlvbkhhc2hlci51cGRhdGUoYmFzZXNVKTtcblxuICAgICAgICAgICAgY29uc3Qgc2NhbGFycyA9IG1pc2MuZ2V0UmFuZG9tQnl0ZXMoNCoobi0xKSk7XG5cbiAgICAgICAgICAgIGlmIChpPjApIHtcbiAgICAgICAgICAgICAgICBjb25zdCBmaXJzdEJhc2UgPSBHLmZyb21ScHJMRU0oYmFzZXMsIDApO1xuICAgICAgICAgICAgICAgIGNvbnN0IHIgPSBtaXNjLnJlYWRVSW50MzJCRShtaXNjLmdldFJhbmRvbUJ5dGVzKDQpLCAwKTtcblxuICAgICAgICAgICAgICAgIFIxID0gRy5hZGQoUjEsIEcudGltZXNTY2FsYXIobGFzdEJhc2UsIHIpKTtcbiAgICAgICAgICAgICAgICBSMiA9IEcuYWRkKFIyLCBHLnRpbWVzU2NhbGFyKGZpcnN0QmFzZSwgcikpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCByMSA9IGF3YWl0IEcubXVsdGlFeHBBZmZpbmUoYmFzZXMuc2xpY2UoMCwgKG4tMSkqc0cpLCBzY2FsYXJzKTtcbiAgICAgICAgICAgIGNvbnN0IHIyID0gYXdhaXQgRy5tdWx0aUV4cEFmZmluZShiYXNlcy5zbGljZShzRyksIHNjYWxhcnMpO1xuXG4gICAgICAgICAgICBSMSA9IEcuYWRkKFIxLCByMSk7XG4gICAgICAgICAgICBSMiA9IEcuYWRkKFIyLCByMik7XG5cbiAgICAgICAgICAgIGxhc3RCYXNlID0gRy5mcm9tUnByTEVNKCBiYXNlcywgKG4tMSkqc0cpO1xuXG4gICAgICAgICAgICBmb3IgKGxldCBqPTA7IGo8c2luZ3VsYXJQb2ludEluZGV4ZXMubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgICAgICAgICBjb25zdCBzcCA9IHNpbmd1bGFyUG9pbnRJbmRleGVzW2pdO1xuICAgICAgICAgICAgICAgIGlmICgoc3AgPj1pKSAmJiAoc3AgPCBpK24pKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IFAgPSBHLmZyb21ScHJMRU0oYmFzZXMsIChzcC1pKSpzRyk7XG4gICAgICAgICAgICAgICAgICAgIHNpbmd1bGFyUG9pbnRzLnB1c2goUCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgIH1cbiAgICAgICAgYXdhaXQgYmluRmlsZVV0aWxzLmVuZFJlYWRTZWN0aW9uKGZkKTtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgUjE6IFIxLFxuICAgICAgICAgICAgUjI6IFIyLFxuICAgICAgICAgICAgc2luZ3VsYXJQb2ludHM6IHNpbmd1bGFyUG9pbnRzXG4gICAgICAgIH07XG5cbiAgICB9XG5cbiAgICBhc3luYyBmdW5jdGlvbiB2ZXJpZnlMYWdyYW5nZUV2YWx1YXRpb25zKGdOYW1lLCB0YXVTZWN0aW9uLCBsYWdyYW5nZVNlY3Rpb24sIHNlY3Rpb25OYW1lLCBsb2dnZXIpIHtcblxuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZGVidWcoYFZlcmlmeWluZyBwaGFzZTIgY2FsY3VsYXRlZCB2YWx1ZXMgJHtzZWN0aW9uTmFtZX0uLi5gKTtcbiAgICAgICAgY29uc3QgRyA9IGN1cnZlW2dOYW1lXTtcbiAgICAgICAgY29uc3Qgc0cgPSBHLkYubjgqMjtcblxuICAgICAgICBjb25zdCBzZWVkPSBuZXcgQXJyYXkoOCk7XG4gICAgICAgIGZvciAobGV0IGk9MDsgaTw4OyBpKyspIHtcbiAgICAgICAgICAgIHNlZWRbaV0gPSBtaXNjLnJlYWRVSW50MzJCRShtaXNjLmdldFJhbmRvbUJ5dGVzKDQpLCAwKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZvciAobGV0IHA9MDsgcDw9IHBvd2VyOyBwICsrKSB7XG4gICAgICAgICAgICBjb25zdCByZXMgPSBhd2FpdCB2ZXJpZnlQb3dlcihwKTtcbiAgICAgICAgICAgIGlmICghcmVzKSByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGF1U2VjdGlvbiA9PSAyKSB7XG4gICAgICAgICAgICBjb25zdCByZXMgPSBhd2FpdCB2ZXJpZnlQb3dlcihwb3dlcisxKTtcbiAgICAgICAgICAgIGlmICghcmVzKSByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdHJ1ZTtcblxuICAgICAgICBhc3luYyBmdW5jdGlvbiB2ZXJpZnlQb3dlcihwKSB7XG4gICAgICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZGVidWcoYFBvd2VyICR7cH0uLi5gKTtcbiAgICAgICAgICAgIGNvbnN0IG44ciA9IGN1cnZlLkZyLm44O1xuICAgICAgICAgICAgY29uc3QgblBvaW50cyA9IDIgKiogcDtcbiAgICAgICAgICAgIGxldCBidWZmX3IgPSBuZXcgVWludDMyQXJyYXkoblBvaW50cyk7XG4gICAgICAgICAgICBsZXQgYnVmZkc7XG5cbiAgICAgICAgICAgIGxldCBybmcgPSBuZXcgQ2hhQ2hhKHNlZWQpO1xuXG4gICAgICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZGVidWcoYENyZWF0aW5nIHJhbmRvbSBudW1iZXJzIFBvd2VycyR7cH0uLi5gKTtcbiAgICAgICAgICAgIGZvciAobGV0IGk9MDsgaTxuUG9pbnRzOyBpKyspIHtcbiAgICAgICAgICAgICAgICBpZiAoKHAgPT0gcG93ZXIrMSkmJihpID09IG5Qb2ludHMtMSkpIHtcbiAgICAgICAgICAgICAgICAgICAgYnVmZl9yW2ldID0gMDtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBidWZmX3JbaV0gPSBybmcubmV4dFUzMigpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgYnVmZl9yID0gbmV3IFVpbnQ4QXJyYXkoYnVmZl9yLmJ1ZmZlciwgYnVmZl9yLmJ5dGVPZmZzZXQsIGJ1ZmZfci5ieXRlTGVuZ3RoKTtcblxuICAgICAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmRlYnVnKGByZWFkaW5nIHBvaW50cyBQb3dlcnMke3B9Li4uYCk7XG4gICAgICAgICAgICBhd2FpdCBiaW5GaWxlVXRpbHMuc3RhcnRSZWFkVW5pcXVlU2VjdGlvbihmZCwgc2VjdGlvbnMsIHRhdVNlY3Rpb24pO1xuICAgICAgICAgICAgYnVmZkcgPSBuZXcgQmlnQnVmZmVyKG5Qb2ludHMqc0cpO1xuICAgICAgICAgICAgaWYgKHAgPT0gcG93ZXIrMSkge1xuICAgICAgICAgICAgICAgIGF3YWl0IGZkLnJlYWRUb0J1ZmZlcihidWZmRywgMCwgKG5Qb2ludHMtMSkqc0cpO1xuICAgICAgICAgICAgICAgIGJ1ZmZHLnNldChjdXJ2ZS5HMS56ZXJvQWZmaW5lLCAoblBvaW50cy0xKSpzRyk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGF3YWl0IGZkLnJlYWRUb0J1ZmZlcihidWZmRywgMCwgblBvaW50cypzRyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBhd2FpdCBiaW5GaWxlVXRpbHMuZW5kUmVhZFNlY3Rpb24oZmQsIHRydWUpO1xuXG4gICAgICAgICAgICBjb25zdCByZXNUYXUgPSBhd2FpdCBHLm11bHRpRXhwQWZmaW5lKGJ1ZmZHLCBidWZmX3IsIGxvZ2dlciwgc2VjdGlvbk5hbWUgKyBcIl9cIiArIHApO1xuXG4gICAgICAgICAgICBidWZmX3IgPSBuZXcgQmlnQnVmZmVyKG5Qb2ludHMgKiBuOHIpO1xuXG4gICAgICAgICAgICBybmcgPSBuZXcgQ2hhQ2hhKHNlZWQpO1xuXG4gICAgICAgICAgICBjb25zdCBidWZmNCA9IG5ldyBVaW50OEFycmF5KDQpO1xuICAgICAgICAgICAgY29uc3QgYnVmZjRWID0gbmV3IERhdGFWaWV3KGJ1ZmY0LmJ1ZmZlcik7XG5cbiAgICAgICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5kZWJ1ZyhgQ3JlYXRpbmcgcmFuZG9tIG51bWJlcnMgUG93ZXJzJHtwfS4uLmApO1xuICAgICAgICAgICAgZm9yIChsZXQgaT0wOyBpPG5Qb2ludHM7IGkrKykge1xuICAgICAgICAgICAgICAgIGlmICgoaSAhPSBuUG9pbnRzLTEpIHx8IChwICE9IHBvd2VyKzEpKSB7XG4gICAgICAgICAgICAgICAgICAgIGJ1ZmY0Vi5zZXRVaW50MzIoMCwgcm5nLm5leHRVMzIoKSwgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgIGJ1ZmZfci5zZXQoYnVmZjQsIGkqbjhyKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5kZWJ1ZyhgYmF0Y2hUb01vbnRnb21lcnkgJHtwfS4uLmApO1xuICAgICAgICAgICAgYnVmZl9yID0gYXdhaXQgY3VydmUuRnIuYmF0Y2hUb01vbnRnb21lcnkoYnVmZl9yKTtcbiAgICAgICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5kZWJ1ZyhgZmZ0ICR7cH0uLi5gKTtcbiAgICAgICAgICAgIGJ1ZmZfciA9IGF3YWl0IGN1cnZlLkZyLmZmdChidWZmX3IpO1xuICAgICAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmRlYnVnKGBiYXRjaEZyb21Nb250Z29tZXJ5ICR7cH0uLi5gKTtcbiAgICAgICAgICAgIGJ1ZmZfciA9IGF3YWl0IGN1cnZlLkZyLmJhdGNoRnJvbU1vbnRnb21lcnkoYnVmZl9yKTtcblxuICAgICAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmRlYnVnKGByZWFkaW5nIHBvaW50cyBMYWdyYW5nZSR7cH0uLi5gKTtcbiAgICAgICAgICAgIGF3YWl0IGJpbkZpbGVVdGlscy5zdGFydFJlYWRVbmlxdWVTZWN0aW9uKGZkLCBzZWN0aW9ucywgbGFncmFuZ2VTZWN0aW9uKTtcbiAgICAgICAgICAgIGZkLnBvcyArPSBzRyooKDIgKiogcCktMSk7XG4gICAgICAgICAgICBhd2FpdCBmZC5yZWFkVG9CdWZmZXIoYnVmZkcsIDAsIG5Qb2ludHMqc0cpO1xuICAgICAgICAgICAgYXdhaXQgYmluRmlsZVV0aWxzLmVuZFJlYWRTZWN0aW9uKGZkLCB0cnVlKTtcblxuICAgICAgICAgICAgY29uc3QgcmVzTGFncmFuZ2UgPSBhd2FpdCBHLm11bHRpRXhwQWZmaW5lKGJ1ZmZHLCBidWZmX3IsIGxvZ2dlciwgc2VjdGlvbk5hbWUgKyBcIl9cIiArIHAgKyBcIl90cmFuc2Zvcm1lZFwiKTtcblxuICAgICAgICAgICAgaWYgKCFHLmVxKHJlc1RhdSwgcmVzTGFncmFuZ2UpKSB7XG4gICAgICAgICAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmVycm9yKFwiUGhhc2UyIGNhY2x1dGF0aW9uIGRvZXMgbm90IG1hdGNoIHdpdGggcG93ZXJzIG9mIHRhdVwiKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgfVxufVxuIiwiLypcbiAgICBDb3B5cmlnaHQgMjAxOCAwS0lNUyBhc3NvY2lhdGlvbi5cblxuICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHNuYXJrSlMuXG5cbiAgICBzbmFya0pTIGlzIGEgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdFxuICAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3JcbiAgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuXG4gICAgc25hcmtKUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVFxuICAgIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWVxuICAgIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpY1xuICAgIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cblxuICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gICAgYWxvbmcgd2l0aCBzbmFya0pTLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuKi9cblxuaW1wb3J0ICogYXMgYmluRmlsZVV0aWxzIGZyb20gXCJAaWRlbjMvYmluZmlsZXV0aWxzXCI7XG5cbi8qXG4gICAgVGhpcyBmdW5jdGlvbiBjcmVhdGVzIGEgbmV3IHNlY3Rpb24gaW4gdGhlIGZkVG8gZmlsZSB3aXRoIGlkIGlkU2VjdGlvbi5cbiAgICBJdCBtdWx0aXBsaWVzIHRoZSBwb2ludHMgaW4gZmRGcm9tIGJ5IGZpcnN0LCBmaXJzdCppbmMsIGZpcnN0KmluY14yLCAuLi4uXG4gICAgblBvaW50IFRpbWVzLlxuICAgIEl0IGFsc28gdXBkYXRlcyB0aGUgbmV3Q2hhbGxlbmdlSGFzaGVyIHdpdGggdGhlIG5ldyBwb2ludHNcbiovXG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBhcHBseUtleVRvU2VjdGlvbihmZE9sZCwgc2VjdGlvbnMsIGZkTmV3LCBpZFNlY3Rpb24sIGN1cnZlLCBncm91cE5hbWUsIGZpcnN0LCBpbmMsIHNlY3Rpb25OYW1lLCBsb2dnZXIpIHtcbiAgICBjb25zdCBNQVhfQ0hVTktfU0laRSA9IDEgPDwgMTY7XG4gICAgY29uc3QgRyA9IGN1cnZlW2dyb3VwTmFtZV07XG4gICAgY29uc3Qgc0cgPSBHLkYubjgqMjtcbiAgICBjb25zdCBuUG9pbnRzID0gc2VjdGlvbnNbaWRTZWN0aW9uXVswXS5zaXplIC8gc0c7XG5cbiAgICBhd2FpdCBiaW5GaWxlVXRpbHMuc3RhcnRSZWFkVW5pcXVlU2VjdGlvbihmZE9sZCwgc2VjdGlvbnMsaWRTZWN0aW9uICk7XG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLnN0YXJ0V3JpdGVTZWN0aW9uKGZkTmV3LCBpZFNlY3Rpb24pO1xuXG4gICAgbGV0IHQgPSBmaXJzdDtcbiAgICBmb3IgKGxldCBpPTA7IGk8blBvaW50czsgaSArPSBNQVhfQ0hVTktfU0laRSkge1xuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZGVidWcoYEFwcGx5aW5nIGtleTogJHtzZWN0aW9uTmFtZX06ICR7aX0vJHtuUG9pbnRzfWApO1xuICAgICAgICBjb25zdCBuPSBNYXRoLm1pbihuUG9pbnRzIC0gaSwgTUFYX0NIVU5LX1NJWkUpO1xuICAgICAgICBsZXQgYnVmZjtcbiAgICAgICAgYnVmZiA9IGF3YWl0IGZkT2xkLnJlYWQobipzRyk7XG4gICAgICAgIGJ1ZmYgPSBhd2FpdCBHLmJhdGNoQXBwbHlLZXkoYnVmZiwgdCwgaW5jKTtcbiAgICAgICAgYXdhaXQgZmROZXcud3JpdGUoYnVmZik7XG4gICAgICAgIHQgPSBjdXJ2ZS5Gci5tdWwodCwgY3VydmUuRnIuZXhwKGluYywgbikpO1xuICAgIH1cblxuICAgIGF3YWl0IGJpbkZpbGVVdGlscy5lbmRXcml0ZVNlY3Rpb24oZmROZXcpO1xuICAgIGF3YWl0IGJpbkZpbGVVdGlscy5lbmRSZWFkU2VjdGlvbihmZE9sZCk7XG59XG5cblxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gYXBwbHlLZXlUb0NoYWxsZW5nZVNlY3Rpb24oZmRPbGQsIGZkTmV3LCByZXNwb25zZUhhc2hlciwgY3VydmUsIGdyb3VwTmFtZSwgblBvaW50cywgZmlyc3QsIGluYywgZm9ybWF0T3V0LCBzZWN0aW9uTmFtZSwgbG9nZ2VyKSB7XG4gICAgY29uc3QgRyA9IGN1cnZlW2dyb3VwTmFtZV07XG4gICAgY29uc3Qgc0cgPSBHLkYubjgqMjtcbiAgICBjb25zdCBjaHVua1NpemUgPSBNYXRoLmZsb29yKCgxPDwyMCkgLyBzRyk7ICAgLy8gMTI4TWIgY2h1bmtzXG4gICAgbGV0IHQgPSBmaXJzdDtcbiAgICBmb3IgKGxldCBpPTAgOyBpPG5Qb2ludHMgOyBpKz0gY2h1bmtTaXplKSB7XG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5kZWJ1ZyhgQXBwbHlpbmcga2V5ICR7c2VjdGlvbk5hbWV9OiAke2l9LyR7blBvaW50c31gKTtcbiAgICAgICAgY29uc3Qgbj0gTWF0aC5taW4oblBvaW50cy1pLCBjaHVua1NpemUgKTtcbiAgICAgICAgY29uc3QgYnVmZkluVSA9IGF3YWl0IGZkT2xkLnJlYWQobiAqIHNHKTtcbiAgICAgICAgY29uc3QgYnVmZkluTEVNID0gYXdhaXQgRy5iYXRjaFV0b0xFTShidWZmSW5VKTtcbiAgICAgICAgY29uc3QgYnVmZk91dExFTSA9IGF3YWl0IEcuYmF0Y2hBcHBseUtleShidWZmSW5MRU0sIHQsIGluYyk7XG4gICAgICAgIGxldCBidWZmT3V0O1xuICAgICAgICBpZiAoZm9ybWF0T3V0ID09IFwiQ09NUFJFU1NFRFwiKSB7XG4gICAgICAgICAgICBidWZmT3V0ID0gYXdhaXQgRy5iYXRjaExFTXRvQyhidWZmT3V0TEVNKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGJ1ZmZPdXQgPSBhd2FpdCBHLmJhdGNoTEVNdG9VKGJ1ZmZPdXRMRU0pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHJlc3BvbnNlSGFzaGVyKSByZXNwb25zZUhhc2hlci51cGRhdGUoYnVmZk91dCk7XG4gICAgICAgIGF3YWl0IGZkTmV3LndyaXRlKGJ1ZmZPdXQpO1xuICAgICAgICB0ID0gY3VydmUuRnIubXVsKHQsIGN1cnZlLkZyLmV4cChpbmMsIG4pKTtcbiAgICB9XG59XG5cbiIsIi8qXG4gICAgQ29weXJpZ2h0IDIwMTggMEtJTVMgYXNzb2NpYXRpb24uXG5cbiAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBzbmFya0pTLlxuXG4gICAgc25hcmtKUyBpcyBhIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXRcbiAgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yXG4gICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cblxuICAgIHNuYXJrSlMgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVRcbiAgICBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFlcbiAgICBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWNcbiAgICBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG5cbiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICAgIGFsb25nIHdpdGggc25hcmtKUy4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cbiovXG5cbi8vIEZvcm1hdCBvZiB0aGUgb3V0cHV0XG4vLyAgICAgIEhhc2ggb2YgdGhlIGxhc3QgY29udHJpYnV0aW9uICA2NCBCeXRlc1xuLy8gICAgICAyXk4qMi0xIFRhdUcxIFBvaW50cyAoY29tcHJlc3NlZClcbi8vICAgICAgMl5OIFRhdUcyIFBvaW50cyAoY29tcHJlc3NlZClcbi8vICAgICAgMl5OIEFscGhhVGF1RzEgUG9pbnRzIChjb21wcmVzc2VkKVxuLy8gICAgICAyXk4gQmV0YVRhdUcxIFBvaW50cyAoY29tcHJlc3NlZClcbi8vICAgICAgUHVibGljIEtleVxuLy8gICAgICAgICAgQmV0YUcyIChjb21wcmVzc2VkKVxuLy8gICAgICAgICAgRzEqcyAoY29tcHJlc3NlZClcbi8vICAgICAgICAgIEcxKnMqdGF1IChjb21wcmVzc2VkKVxuLy8gICAgICAgICAgRzEqdCAoY29tcHJlc3NlZClcbi8vICAgICAgICAgIEcxKnQqYWxwaGEgKGNvbXByZXNzZWQpXG4vLyAgICAgICAgICBHMSp1IChjb21wcmVzc2VkKVxuLy8gICAgICAgICAgRzEqdSpiZXRhIChjb21wcmVzc2VkKVxuLy8gICAgICAgICAgRzIqc3AqdGF1IChjb21wcmVzc2VkKVxuLy8gICAgICAgICAgRzIqdHAqYWxwaGEgKGNvbXByZXNzZWQpXG4vLyAgICAgICAgICBHMip1cCpiZXRhIChjb21wcmVzc2VkKVxuXG5pbXBvcnQgKiBhcyBmYXN0RmlsZSBmcm9tIFwiZmFzdGZpbGVcIjtcbmltcG9ydCBCbGFrZTJiIGZyb20gXCJibGFrZTJiLXdhc21cIjtcbmltcG9ydCAqIGFzIHV0aWxzIGZyb20gXCIuL3Bvd2Vyc29mdGF1X3V0aWxzLmpzXCI7XG5pbXBvcnQgKiBhcyBtaXNjIGZyb20gXCIuL21pc2MuanNcIjtcbmltcG9ydCB7IGFwcGx5S2V5VG9DaGFsbGVuZ2VTZWN0aW9uIH0gZnJvbSBcIi4vbXBjX2FwcGx5a2V5LmpzXCI7XG5pbXBvcnQgKiBhcyBrZXlQYWlyIGZyb20gXCIuL2tleXBhaXIuanNcIjtcblxuZXhwb3J0IGRlZmF1bHQgYXN5bmMgZnVuY3Rpb24gY2hhbGxlbmdlQ29udHJpYnV0ZShjdXJ2ZSwgY2hhbGxlbmdlRmlsZW5hbWUsIHJlc3BvbnNlRmlsZU5hbWUsIGVudHJvcHksIGxvZ2dlcikge1xuICAgIGF3YWl0IEJsYWtlMmIucmVhZHkoKTtcblxuICAgIGNvbnN0IGZkRnJvbSA9IGF3YWl0IGZhc3RGaWxlLnJlYWRFeGlzdGluZyhjaGFsbGVuZ2VGaWxlbmFtZSk7XG5cblxuICAgIGNvbnN0IHNHMSA9IGN1cnZlLkYxLm42NCo4KjI7XG4gICAgY29uc3Qgc0cyID0gY3VydmUuRjIubjY0KjgqMjtcbiAgICBjb25zdCBkb21haW5TaXplID0gKGZkRnJvbS50b3RhbFNpemUgKyBzRzEgLSA2NCAtIHNHMikgLyAoNCpzRzEgKyBzRzIpO1xuICAgIGxldCBlID0gZG9tYWluU2l6ZTtcbiAgICBsZXQgcG93ZXIgPSAwO1xuICAgIHdoaWxlIChlPjEpIHtcbiAgICAgICAgZSA9IGUgLzI7XG4gICAgICAgIHBvd2VyICs9IDE7XG4gICAgfVxuXG4gICAgaWYgKDIgKiogcG93ZXIgIT0gZG9tYWluU2l6ZSkgdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBmaWxlIHNpemVcIik7XG4gICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmRlYnVnKFwiUG93ZXIgdG8gdGF1IHNpemU6IFwiK3Bvd2VyKTtcblxuICAgIGNvbnN0IHJuZyA9IGF3YWl0IG1pc2MuZ2V0UmFuZG9tUm5nKGVudHJvcHkpO1xuXG4gICAgY29uc3QgZmRUbyA9IGF3YWl0IGZhc3RGaWxlLmNyZWF0ZU92ZXJyaWRlKHJlc3BvbnNlRmlsZU5hbWUpO1xuXG4gICAgLy8gQ2FsY3VsYXRlIHRoZSBoYXNoXG4gICAgY29uc3QgY2hhbGxlbmdlSGFzaGVyID0gQmxha2UyYig2NCk7XG4gICAgZm9yIChsZXQgaT0wOyBpPGZkRnJvbS50b3RhbFNpemU7IGkrPSBmZEZyb20ucGFnZVNpemUpIHtcbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmRlYnVnKGBIYXNoaW5nIGNoYWxsZW5nZSAke2l9LyR7ZmRGcm9tLnRvdGFsU2l6ZX1gKTtcbiAgICAgICAgY29uc3QgcyA9IE1hdGgubWluKGZkRnJvbS50b3RhbFNpemUgLSBpLCBmZEZyb20ucGFnZVNpemUpO1xuICAgICAgICBjb25zdCBidWZmID0gYXdhaXQgZmRGcm9tLnJlYWQocyk7XG4gICAgICAgIGNoYWxsZW5nZUhhc2hlci51cGRhdGUoYnVmZik7XG4gICAgfVxuXG4gICAgY29uc3QgY2xhaW1lZEhhc2ggPSBhd2FpdCBmZEZyb20ucmVhZCg2NCwgMCk7XG4gICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8obWlzYy5mb3JtYXRIYXNoKGNsYWltZWRIYXNoLCBcIkNsYWltZWQgUHJldmlvdXMgUmVzcG9uc2UgSGFzaDogXCIpKTtcblxuICAgIGNvbnN0IGNoYWxsZW5nZUhhc2ggPSBjaGFsbGVuZ2VIYXNoZXIuZGlnZXN0KCk7XG4gICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8obWlzYy5mb3JtYXRIYXNoKGNoYWxsZW5nZUhhc2gsIFwiQ3VycmVudCBDaGFsbGVuZ2UgSGFzaDogXCIpKTtcblxuICAgIGNvbnN0IGtleSA9IGtleVBhaXIuY3JlYXRlUFRhdUtleShjdXJ2ZSwgY2hhbGxlbmdlSGFzaCwgcm5nKTtcblxuICAgIGlmIChsb2dnZXIpIHtcbiAgICAgICAgW1widGF1XCIsIFwiYWxwaGFcIiwgXCJiZXRhXCJdLmZvckVhY2goIChrKSA9PiB7XG4gICAgICAgICAgICBsb2dnZXIuZGVidWcoayArIFwiLmcxX3M6IFwiICsgY3VydmUuRzEudG9TdHJpbmcoa2V5W2tdLmcxX3MsIDE2KSk7XG4gICAgICAgICAgICBsb2dnZXIuZGVidWcoayArIFwiLmcxX3N4OiBcIiArIGN1cnZlLkcxLnRvU3RyaW5nKGtleVtrXS5nMV9zeCwgMTYpKTtcbiAgICAgICAgICAgIGxvZ2dlci5kZWJ1ZyhrICsgXCIuZzJfc3A6IFwiICsgY3VydmUuRzIudG9TdHJpbmcoa2V5W2tdLmcyX3NwLCAxNikpO1xuICAgICAgICAgICAgbG9nZ2VyLmRlYnVnKGsgKyBcIi5nMl9zcHg6IFwiICsgY3VydmUuRzIudG9TdHJpbmcoa2V5W2tdLmcyX3NweCwgMTYpKTtcbiAgICAgICAgICAgIGxvZ2dlci5kZWJ1ZyhcIlwiKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgY29uc3QgcmVzcG9uc2VIYXNoZXIgPSBCbGFrZTJiKDY0KTtcblxuICAgIGF3YWl0IGZkVG8ud3JpdGUoY2hhbGxlbmdlSGFzaCk7XG4gICAgcmVzcG9uc2VIYXNoZXIudXBkYXRlKGNoYWxsZW5nZUhhc2gpO1xuXG4gICAgYXdhaXQgYXBwbHlLZXlUb0NoYWxsZW5nZVNlY3Rpb24oZmRGcm9tLCBmZFRvLCByZXNwb25zZUhhc2hlciwgY3VydmUsIFwiRzFcIiwgKDIgKiogcG93ZXIpKjItMSwgY3VydmUuRnIub25lICAgICwga2V5LnRhdS5wcnZLZXksIFwiQ09NUFJFU1NFRFwiLCBcInRhdUcxXCIgICAgICwgbG9nZ2VyICk7XG4gICAgYXdhaXQgYXBwbHlLZXlUb0NoYWxsZW5nZVNlY3Rpb24oZmRGcm9tLCBmZFRvLCByZXNwb25zZUhhc2hlciwgY3VydmUsIFwiRzJcIiwgKDIgKiogcG93ZXIpICAgICwgY3VydmUuRnIub25lICAgICwga2V5LnRhdS5wcnZLZXksIFwiQ09NUFJFU1NFRFwiLCBcInRhdUcyXCIgICAgICwgbG9nZ2VyICk7XG4gICAgYXdhaXQgYXBwbHlLZXlUb0NoYWxsZW5nZVNlY3Rpb24oZmRGcm9tLCBmZFRvLCByZXNwb25zZUhhc2hlciwgY3VydmUsIFwiRzFcIiwgKDIgKiogcG93ZXIpICAgICwga2V5LmFscGhhLnBydktleSwga2V5LnRhdS5wcnZLZXksIFwiQ09NUFJFU1NFRFwiLCBcImFscGhhVGF1RzFcIiwgbG9nZ2VyICk7XG4gICAgYXdhaXQgYXBwbHlLZXlUb0NoYWxsZW5nZVNlY3Rpb24oZmRGcm9tLCBmZFRvLCByZXNwb25zZUhhc2hlciwgY3VydmUsIFwiRzFcIiwgKDIgKiogcG93ZXIpICAgICwga2V5LmJldGEucHJ2S2V5ICwga2V5LnRhdS5wcnZLZXksIFwiQ09NUFJFU1NFRFwiLCBcImJldGFUYXVHMVwiICwgbG9nZ2VyICk7XG4gICAgYXdhaXQgYXBwbHlLZXlUb0NoYWxsZW5nZVNlY3Rpb24oZmRGcm9tLCBmZFRvLCByZXNwb25zZUhhc2hlciwgY3VydmUsIFwiRzJcIiwgMSAgICAgICAgICAgICAsIGtleS5iZXRhLnBydktleSAsIGtleS50YXUucHJ2S2V5LCBcIkNPTVBSRVNTRURcIiwgXCJiZXRhVGF1RzJcIiAsIGxvZ2dlciApO1xuXG4gICAgLy8gV3JpdGUgYW5kIGhhc2gga2V5XG4gICAgY29uc3QgYnVmZktleSA9IG5ldyBVaW50OEFycmF5KGN1cnZlLkYxLm44KjIqNitjdXJ2ZS5GMi5uOCoyKjMpO1xuICAgIHV0aWxzLnRvUHRhdVB1YktleVJwcihidWZmS2V5LCAwLCBjdXJ2ZSwga2V5LCBmYWxzZSk7XG4gICAgYXdhaXQgZmRUby53cml0ZShidWZmS2V5KTtcbiAgICByZXNwb25zZUhhc2hlci51cGRhdGUoYnVmZktleSk7XG4gICAgY29uc3QgcmVzcG9uc2VIYXNoID0gcmVzcG9uc2VIYXNoZXIuZGlnZXN0KCk7XG4gICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8obWlzYy5mb3JtYXRIYXNoKHJlc3BvbnNlSGFzaCwgXCJDb250cmlidXRpb24gUmVzcG9uc2UgSGFzaDogXCIpKTtcblxuICAgIGF3YWl0IGZkVG8uY2xvc2UoKTtcbiAgICBhd2FpdCBmZEZyb20uY2xvc2UoKTtcbn1cblxuIiwiLypcbiAgICBDb3B5cmlnaHQgMjAxOCAwS0lNUyBhc3NvY2lhdGlvbi5cblxuICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHNuYXJrSlMuXG5cbiAgICBzbmFya0pTIGlzIGEgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdFxuICAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3JcbiAgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuXG4gICAgc25hcmtKUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVFxuICAgIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWVxuICAgIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpY1xuICAgIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cblxuICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gICAgYWxvbmcgd2l0aCBzbmFya0pTLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuKi9cblxuaW1wb3J0IEJsYWtlMmIgZnJvbSBcImJsYWtlMmItd2FzbVwiO1xuaW1wb3J0ICogYXMgdXRpbHMgZnJvbSBcIi4vcG93ZXJzb2Z0YXVfdXRpbHMuanNcIjtcbmltcG9ydCAqIGFzIG1pc2MgZnJvbSBcIi4vbWlzYy5qc1wiO1xuaW1wb3J0ICogYXMgYmluRmlsZVV0aWxzIGZyb20gXCJAaWRlbjMvYmluZmlsZXV0aWxzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGFzeW5jIGZ1bmN0aW9uIGJlYWNvbihvbGRQdGF1RmlsZW5hbWUsIG5ld1BUYXVGaWxlbmFtZSwgbmFtZSwgIGJlYWNvbkhhc2hTdHIsbnVtSXRlcmF0aW9uc0V4cCwgbG9nZ2VyKSB7XG4gICAgY29uc3QgYmVhY29uSGFzaCA9IG1pc2MuaGV4MkJ5dGVBcnJheShiZWFjb25IYXNoU3RyKTtcbiAgICBpZiAoICAgKGJlYWNvbkhhc2guYnl0ZUxlbmd0aCA9PSAwKVxuICAgICAgICB8fCAoYmVhY29uSGFzaC5ieXRlTGVuZ3RoKjIgIT1iZWFjb25IYXNoU3RyLmxlbmd0aCkpXG4gICAge1xuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZXJyb3IoXCJJbnZhbGlkIEJlYWNvbiBIYXNoLiAoSXQgbXVzdCBiZSBhIHZhbGlkIGhleGFkZWNpbWFsIHNlcXVlbmNlKVwiKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBpZiAoYmVhY29uSGFzaC5sZW5ndGg+PTI1Nikge1xuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZXJyb3IoXCJNYXhpbXVtIGxlbmd0aCBvZiBiZWFjb24gaGFzaCBpcyAyNTUgYnl0ZXNcIik7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBudW1JdGVyYXRpb25zRXhwID0gcGFyc2VJbnQobnVtSXRlcmF0aW9uc0V4cCk7XG4gICAgaWYgKChudW1JdGVyYXRpb25zRXhwPDEwKXx8KG51bUl0ZXJhdGlvbnNFeHA+NjMpKSB7XG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5lcnJvcihcIkludmFsaWQgbnVtSXRlcmF0aW9uc0V4cC4gKE11c3QgYmUgYmV0d2VlbiAxMCBhbmQgNjMpXCIpO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG5cbiAgICBhd2FpdCBCbGFrZTJiLnJlYWR5KCk7XG5cbiAgICBjb25zdCB7ZmQ6IGZkT2xkLCBzZWN0aW9uc30gPSBhd2FpdCBiaW5GaWxlVXRpbHMucmVhZEJpbkZpbGUob2xkUHRhdUZpbGVuYW1lLCBcInB0YXVcIiwgMSk7XG4gICAgY29uc3Qge2N1cnZlLCBwb3dlciwgY2VyZW1vbnlQb3dlcn0gPSBhd2FpdCB1dGlscy5yZWFkUFRhdUhlYWRlcihmZE9sZCwgc2VjdGlvbnMpO1xuICAgIGlmIChwb3dlciAhPSBjZXJlbW9ueVBvd2VyKSB7XG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5lcnJvcihcIlRoaXMgZmlsZSBoYXMgYmVlbiByZWR1Y2VkLiBZb3UgY2Fubm90IGNvbnRyaWJ1dGUgaW50byBhIHJlZHVjZWQgZmlsZS5cIik7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgaWYgKHNlY3Rpb25zWzEyXSkge1xuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIud2FybihcIkNvbnRyaWJ1dGluZyBpbnRvIGEgZmlsZSB0aGF0IGhhcyBwaGFzZTIgY2FsY3VsYXRlZC4gWW91IHdpbGwgaGF2ZSB0byBwcmVwYXJlIHBoYXNlMiBhZ2Fpbi5cIik7XG4gICAgfVxuICAgIGNvbnN0IGNvbnRyaWJ1dGlvbnMgPSBhd2FpdCB1dGlscy5yZWFkQ29udHJpYnV0aW9ucyhmZE9sZCwgY3VydmUsIHNlY3Rpb25zKTtcbiAgICBjb25zdCBjdXJDb250cmlidXRpb24gPSB7XG4gICAgICAgIG5hbWU6IG5hbWUsXG4gICAgICAgIHR5cGU6IDEsIC8vIEJlYWNvblxuICAgICAgICBudW1JdGVyYXRpb25zRXhwOiBudW1JdGVyYXRpb25zRXhwLFxuICAgICAgICBiZWFjb25IYXNoOiBiZWFjb25IYXNoXG4gICAgfTtcblxuICAgIGxldCBsYXN0Q2hhbGxlbmdlSGFzaDtcblxuICAgIGlmIChjb250cmlidXRpb25zLmxlbmd0aD4wKSB7XG4gICAgICAgIGxhc3RDaGFsbGVuZ2VIYXNoID0gY29udHJpYnV0aW9uc1tjb250cmlidXRpb25zLmxlbmd0aC0xXS5uZXh0Q2hhbGxlbmdlO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIGxhc3RDaGFsbGVuZ2VIYXNoID0gdXRpbHMuY2FsY3VsYXRlRmlyc3RDaGFsbGVuZ2VIYXNoKGN1cnZlLCBwb3dlciwgbG9nZ2VyKTtcbiAgICB9XG5cbiAgICBjdXJDb250cmlidXRpb24ua2V5ID0gYXdhaXQgdXRpbHMua2V5RnJvbUJlYWNvbihjdXJ2ZSwgbGFzdENoYWxsZW5nZUhhc2gsIGJlYWNvbkhhc2gsIG51bUl0ZXJhdGlvbnNFeHApO1xuXG4gICAgY29uc3QgcmVzcG9uc2VIYXNoZXIgPSBuZXcgQmxha2UyYig2NCk7XG4gICAgcmVzcG9uc2VIYXNoZXIudXBkYXRlKGxhc3RDaGFsbGVuZ2VIYXNoKTtcblxuICAgIGNvbnN0IGZkTmV3ID0gYXdhaXQgYmluRmlsZVV0aWxzLmNyZWF0ZUJpbkZpbGUobmV3UFRhdUZpbGVuYW1lLCBcInB0YXVcIiwgMSwgNyk7XG4gICAgYXdhaXQgdXRpbHMud3JpdGVQVGF1SGVhZGVyKGZkTmV3LCBjdXJ2ZSwgcG93ZXIpO1xuXG4gICAgY29uc3Qgc3RhcnRTZWN0aW9ucyA9IFtdO1xuXG4gICAgbGV0IGZpcnN0UG9pbnRzO1xuICAgIGZpcnN0UG9pbnRzID0gYXdhaXQgcHJvY2Vzc1NlY3Rpb24oMiwgXCJHMVwiLCAgKDIgKiogcG93ZXIpICogMiAtMSwgY3VydmUuRnIuZSgxKSwgY3VyQ29udHJpYnV0aW9uLmtleS50YXUucHJ2S2V5LCBcInRhdUcxXCIsIGxvZ2dlciApO1xuICAgIGN1ckNvbnRyaWJ1dGlvbi50YXVHMSA9IGZpcnN0UG9pbnRzWzFdO1xuICAgIGZpcnN0UG9pbnRzID0gYXdhaXQgcHJvY2Vzc1NlY3Rpb24oMywgXCJHMlwiLCAgKDIgKiogcG93ZXIpICwgY3VydmUuRnIuZSgxKSwgY3VyQ29udHJpYnV0aW9uLmtleS50YXUucHJ2S2V5LCBcInRhdUcyXCIsIGxvZ2dlciApO1xuICAgIGN1ckNvbnRyaWJ1dGlvbi50YXVHMiA9IGZpcnN0UG9pbnRzWzFdO1xuICAgIGZpcnN0UG9pbnRzID0gYXdhaXQgcHJvY2Vzc1NlY3Rpb24oNCwgXCJHMVwiLCAgKDIgKiogcG93ZXIpICwgY3VyQ29udHJpYnV0aW9uLmtleS5hbHBoYS5wcnZLZXksIGN1ckNvbnRyaWJ1dGlvbi5rZXkudGF1LnBydktleSwgXCJhbHBoYVRhdUcxXCIsIGxvZ2dlciApO1xuICAgIGN1ckNvbnRyaWJ1dGlvbi5hbHBoYUcxID0gZmlyc3RQb2ludHNbMF07XG4gICAgZmlyc3RQb2ludHMgPSBhd2FpdCBwcm9jZXNzU2VjdGlvbig1LCBcIkcxXCIsICAoMiAqKiBwb3dlcikgLCBjdXJDb250cmlidXRpb24ua2V5LmJldGEucHJ2S2V5LCBjdXJDb250cmlidXRpb24ua2V5LnRhdS5wcnZLZXksIFwiYmV0YVRhdUcxXCIsIGxvZ2dlciApO1xuICAgIGN1ckNvbnRyaWJ1dGlvbi5iZXRhRzEgPSBmaXJzdFBvaW50c1swXTtcbiAgICBmaXJzdFBvaW50cyA9IGF3YWl0IHByb2Nlc3NTZWN0aW9uKDYsIFwiRzJcIiwgIDEsIGN1ckNvbnRyaWJ1dGlvbi5rZXkuYmV0YS5wcnZLZXksIGN1ckNvbnRyaWJ1dGlvbi5rZXkudGF1LnBydktleSwgXCJiZXRhVGF1RzJcIiwgbG9nZ2VyICk7XG4gICAgY3VyQ29udHJpYnV0aW9uLmJldGFHMiA9IGZpcnN0UG9pbnRzWzBdO1xuXG4gICAgY3VyQ29udHJpYnV0aW9uLnBhcnRpYWxIYXNoID0gcmVzcG9uc2VIYXNoZXIuZ2V0UGFydGlhbEhhc2goKTtcblxuICAgIGNvbnN0IGJ1ZmZLZXkgPSBuZXcgVWludDhBcnJheShjdXJ2ZS5GMS5uOCoyKjYrY3VydmUuRjIubjgqMiozKTtcblxuICAgIHV0aWxzLnRvUHRhdVB1YktleVJwcihidWZmS2V5LCAwLCBjdXJ2ZSwgY3VyQ29udHJpYnV0aW9uLmtleSwgZmFsc2UpO1xuXG4gICAgcmVzcG9uc2VIYXNoZXIudXBkYXRlKG5ldyBVaW50OEFycmF5KGJ1ZmZLZXkpKTtcbiAgICBjb25zdCBoYXNoUmVzcG9uc2UgPSByZXNwb25zZUhhc2hlci5kaWdlc3QoKTtcblxuICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKG1pc2MuZm9ybWF0SGFzaChoYXNoUmVzcG9uc2UsIFwiQ29udHJpYnV0aW9uIFJlc3BvbnNlIEhhc2ggaW1wb3J0ZWQ6IFwiKSk7XG5cbiAgICBjb25zdCBuZXh0Q2hhbGxlbmdlSGFzaGVyID0gbmV3IEJsYWtlMmIoNjQpO1xuICAgIG5leHRDaGFsbGVuZ2VIYXNoZXIudXBkYXRlKGhhc2hSZXNwb25zZSk7XG5cbiAgICBhd2FpdCBoYXNoU2VjdGlvbihmZE5ldywgXCJHMVwiLCAyLCAoMiAqKiBwb3dlcikgKiAyIC0xLCBcInRhdUcxXCIsIGxvZ2dlcik7XG4gICAgYXdhaXQgaGFzaFNlY3Rpb24oZmROZXcsIFwiRzJcIiwgMywgKDIgKiogcG93ZXIpICAgICAgICwgXCJ0YXVHMlwiLCBsb2dnZXIpO1xuICAgIGF3YWl0IGhhc2hTZWN0aW9uKGZkTmV3LCBcIkcxXCIsIDQsICgyICoqIHBvd2VyKSAgICAgICAsIFwiYWxwaGFUYXVHMVwiLCBsb2dnZXIpO1xuICAgIGF3YWl0IGhhc2hTZWN0aW9uKGZkTmV3LCBcIkcxXCIsIDUsICgyICoqIHBvd2VyKSAgICAgICAsIFwiYmV0YVRhdUcxXCIsIGxvZ2dlcik7XG4gICAgYXdhaXQgaGFzaFNlY3Rpb24oZmROZXcsIFwiRzJcIiwgNiwgMSAgICAgICAgICAgICAgICAgICwgXCJiZXRhRzJcIiwgbG9nZ2VyKTtcblxuICAgIGN1ckNvbnRyaWJ1dGlvbi5uZXh0Q2hhbGxlbmdlID0gbmV4dENoYWxsZW5nZUhhc2hlci5kaWdlc3QoKTtcblxuICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKG1pc2MuZm9ybWF0SGFzaChjdXJDb250cmlidXRpb24ubmV4dENoYWxsZW5nZSwgXCJOZXh0IENoYWxsZW5nZSBIYXNoOiBcIikpO1xuXG4gICAgY29udHJpYnV0aW9ucy5wdXNoKGN1ckNvbnRyaWJ1dGlvbik7XG5cbiAgICBhd2FpdCB1dGlscy53cml0ZUNvbnRyaWJ1dGlvbnMoZmROZXcsIGN1cnZlLCBjb250cmlidXRpb25zKTtcblxuICAgIGF3YWl0IGZkT2xkLmNsb3NlKCk7XG4gICAgYXdhaXQgZmROZXcuY2xvc2UoKTtcblxuICAgIHJldHVybiBoYXNoUmVzcG9uc2U7XG5cbiAgICBhc3luYyBmdW5jdGlvbiBwcm9jZXNzU2VjdGlvbihzZWN0aW9uSWQsIGdyb3VwTmFtZSwgTlBvaW50cywgZmlyc3QsIGluYywgc2VjdGlvbk5hbWUsIGxvZ2dlcikge1xuICAgICAgICBjb25zdCByZXMgPSBbXTtcbiAgICAgICAgZmRPbGQucG9zID0gc2VjdGlvbnNbc2VjdGlvbklkXVswXS5wO1xuXG4gICAgICAgIGF3YWl0IGJpbkZpbGVVdGlscy5zdGFydFdyaXRlU2VjdGlvbihmZE5ldywgc2VjdGlvbklkKTtcblxuICAgICAgICBzdGFydFNlY3Rpb25zW3NlY3Rpb25JZF0gPSBmZE5ldy5wb3M7XG5cbiAgICAgICAgY29uc3QgRyA9IGN1cnZlW2dyb3VwTmFtZV07XG4gICAgICAgIGNvbnN0IHNHID0gRy5GLm44KjI7XG4gICAgICAgIGNvbnN0IGNodW5rU2l6ZSA9IE1hdGguZmxvb3IoKDE8PDIwKSAvIHNHKTsgICAvLyAxMjhNYiBjaHVua3NcbiAgICAgICAgbGV0IHQgPSBmaXJzdDtcbiAgICAgICAgZm9yIChsZXQgaT0wIDsgaTxOUG9pbnRzIDsgaSs9IGNodW5rU2l6ZSkge1xuICAgICAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmRlYnVnKGBhcHBseWluZyBrZXkke3NlY3Rpb25OYW1lfTogJHtpfS8ke05Qb2ludHN9YCk7XG4gICAgICAgICAgICBjb25zdCBuPSBNYXRoLm1pbihOUG9pbnRzLWksIGNodW5rU2l6ZSApO1xuICAgICAgICAgICAgY29uc3QgYnVmZkluID0gYXdhaXQgZmRPbGQucmVhZChuICogc0cpO1xuICAgICAgICAgICAgY29uc3QgYnVmZk91dExFTSA9IGF3YWl0IEcuYmF0Y2hBcHBseUtleShidWZmSW4sIHQsIGluYyk7XG5cbiAgICAgICAgICAgIC8qIENvZGUgdG8gdGVzdCB0aGUgY2FzZSB3aGVyZSB3ZSBkb24ndCBoYXZlIHRoZSAyXm0tMiBjb21wb25lbnRcbiAgICAgICAgICAgIGlmIChzZWN0aW9uTmFtZT09IFwidGF1RzFcIikge1xuICAgICAgICAgICAgICAgIGNvbnN0IGJ6ID0gbmV3IFVpbnQ4QXJyYXkoNjQpO1xuICAgICAgICAgICAgICAgIGJ1ZmZPdXRMRU0uc2V0KGJ6LCA2NCooKDIgKiogcG93ZXIpIC0gMSApKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgICovXG5cbiAgICAgICAgICAgIGNvbnN0IHByb21pc2VXcml0ZSA9IGZkTmV3LndyaXRlKGJ1ZmZPdXRMRU0pO1xuICAgICAgICAgICAgY29uc3QgYnVmZk91dEMgPSBhd2FpdCBHLmJhdGNoTEVNdG9DKGJ1ZmZPdXRMRU0pO1xuXG4gICAgICAgICAgICByZXNwb25zZUhhc2hlci51cGRhdGUoYnVmZk91dEMpO1xuICAgICAgICAgICAgYXdhaXQgcHJvbWlzZVdyaXRlO1xuICAgICAgICAgICAgaWYgKGk9PTApICAgLy8gUmV0dXJuIHRoZSAyIGZpcnN0IHBvaW50cy5cbiAgICAgICAgICAgICAgICBmb3IgKGxldCBqPTA7IGo8TWF0aC5taW4oMiwgTlBvaW50cyk7IGorKylcbiAgICAgICAgICAgICAgICAgICAgcmVzLnB1c2goRy5mcm9tUnByTEVNKGJ1ZmZPdXRMRU0sIGoqc0cpKTtcbiAgICAgICAgICAgIHQgPSBjdXJ2ZS5Gci5tdWwodCwgY3VydmUuRnIuZXhwKGluYywgbikpO1xuICAgICAgICB9XG5cbiAgICAgICAgYXdhaXQgYmluRmlsZVV0aWxzLmVuZFdyaXRlU2VjdGlvbihmZE5ldyk7XG5cbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG5cblxuICAgIGFzeW5jIGZ1bmN0aW9uIGhhc2hTZWN0aW9uKGZkVG8sIGdyb3VwTmFtZSwgc2VjdGlvbklkLCBuUG9pbnRzLCBzZWN0aW9uTmFtZSwgbG9nZ2VyKSB7XG5cbiAgICAgICAgY29uc3QgRyA9IGN1cnZlW2dyb3VwTmFtZV07XG4gICAgICAgIGNvbnN0IHNHID0gRy5GLm44KjI7XG4gICAgICAgIGNvbnN0IG5Qb2ludHNDaHVuayA9IE1hdGguZmxvb3IoKDE8PDI0KS9zRyk7XG5cbiAgICAgICAgY29uc3Qgb2xkUG9zID0gZmRUby5wb3M7XG4gICAgICAgIGZkVG8ucG9zID0gc3RhcnRTZWN0aW9uc1tzZWN0aW9uSWRdO1xuXG4gICAgICAgIGZvciAobGV0IGk9MDsgaTwgblBvaW50czsgaSArPSBuUG9pbnRzQ2h1bmspIHtcbiAgICAgICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5kZWJ1ZyhgSGFzaGluZyAke3NlY3Rpb25OYW1lfTogJHtpfS8ke25Qb2ludHN9YCk7XG4gICAgICAgICAgICBjb25zdCBuID0gTWF0aC5taW4oblBvaW50cy1pLCBuUG9pbnRzQ2h1bmspO1xuXG4gICAgICAgICAgICBjb25zdCBidWZmTEVNID0gYXdhaXQgZmRUby5yZWFkKG4gKiBzRyk7XG5cbiAgICAgICAgICAgIGNvbnN0IGJ1ZmZVID0gYXdhaXQgRy5iYXRjaExFTXRvVShidWZmTEVNKTtcblxuICAgICAgICAgICAgbmV4dENoYWxsZW5nZUhhc2hlci51cGRhdGUoYnVmZlUpO1xuICAgICAgICB9XG5cbiAgICAgICAgZmRUby5wb3MgPSBvbGRQb3M7XG4gICAgfVxufVxuXG4iLCIvKlxuICAgIENvcHlyaWdodCAyMDE4IDBLSU1TIGFzc29jaWF0aW9uLlxuXG4gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2Ygc25hcmtKUy5cblxuICAgIHNuYXJrSlMgaXMgYSBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0XG4gICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxuICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG5cbiAgICBzbmFya0pTIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUXG4gICAgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZXG4gICAgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljXG4gICAgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuXG4gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAgICBhbG9uZyB3aXRoIHNuYXJrSlMuIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXG4qL1xuXG4vLyBGb3JtYXQgb2YgdGhlIG91dHB1dFxuLy8gICAgICBIYXNoIG9mIHRoZSBsYXN0IGNvbnRyaWJ1dGlvbiAgNjQgQnl0ZXNcbi8vICAgICAgMl5OKjItMSBUYXVHMSBQb2ludHMgKHVuY29tcHJlc3NlZClcbi8vICAgICAgMl5OIFRhdUcyIFBvaW50cyAodW5jb21wcmVzc2VkKVxuLy8gICAgICAyXk4gQWxwaGFUYXVHMSBQb2ludHMgKHVuY29tcHJlc3NlZClcbi8vICAgICAgMl5OIEJldGFUYXVHMSBQb2ludHMgKHVuY29tcHJlc3NlZClcblxuaW1wb3J0IEJsYWtlMmIgZnJvbSBcImJsYWtlMmItd2FzbVwiO1xuaW1wb3J0ICogYXMgdXRpbHMgZnJvbSBcIi4vcG93ZXJzb2Z0YXVfdXRpbHMuanNcIjtcbmltcG9ydCAqIGFzIGtleVBhaXIgZnJvbSBcIi4va2V5cGFpci5qc1wiO1xuaW1wb3J0ICogYXMgYmluRmlsZVV0aWxzIGZyb20gXCJAaWRlbjMvYmluZmlsZXV0aWxzXCI7XG5pbXBvcnQgKiBhcyBtaXNjIGZyb20gXCIuL21pc2MuanNcIjtcblxuZXhwb3J0IGRlZmF1bHQgYXN5bmMgZnVuY3Rpb24gY29udHJpYnV0ZShvbGRQdGF1RmlsZW5hbWUsIG5ld1BUYXVGaWxlbmFtZSwgbmFtZSwgZW50cm9weSwgbG9nZ2VyKSB7XG4gICAgYXdhaXQgQmxha2UyYi5yZWFkeSgpO1xuXG4gICAgY29uc3Qge2ZkOiBmZE9sZCwgc2VjdGlvbnN9ID0gYXdhaXQgYmluRmlsZVV0aWxzLnJlYWRCaW5GaWxlKG9sZFB0YXVGaWxlbmFtZSwgXCJwdGF1XCIsIDEpO1xuICAgIGNvbnN0IHtjdXJ2ZSwgcG93ZXIsIGNlcmVtb255UG93ZXJ9ID0gYXdhaXQgdXRpbHMucmVhZFBUYXVIZWFkZXIoZmRPbGQsIHNlY3Rpb25zKTtcbiAgICBpZiAocG93ZXIgIT0gY2VyZW1vbnlQb3dlcikge1xuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZXJyb3IoXCJUaGlzIGZpbGUgaGFzIGJlZW4gcmVkdWNlZC4gWW91IGNhbm5vdCBjb250cmlidXRlIGludG8gYSByZWR1Y2VkIGZpbGUuXCIpO1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJUaGlzIGZpbGUgaGFzIGJlZW4gcmVkdWNlZC4gWW91IGNhbm5vdCBjb250cmlidXRlIGludG8gYSByZWR1Y2VkIGZpbGUuXCIpO1xuICAgIH1cbiAgICBpZiAoc2VjdGlvbnNbMTJdKSB7XG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci53YXJuKFwiV0FSTklORzogQ29udHJpYnV0aW5nIGludG8gYSBmaWxlIHRoYXQgaGFzIHBoYXNlMiBjYWxjdWxhdGVkLiBZb3Ugd2lsbCBoYXZlIHRvIHByZXBhcmUgcGhhc2UyIGFnYWluLlwiKTtcbiAgICB9XG4gICAgY29uc3QgY29udHJpYnV0aW9ucyA9IGF3YWl0IHV0aWxzLnJlYWRDb250cmlidXRpb25zKGZkT2xkLCBjdXJ2ZSwgc2VjdGlvbnMpO1xuICAgIGNvbnN0IGN1ckNvbnRyaWJ1dGlvbiA9IHtcbiAgICAgICAgbmFtZTogbmFtZSxcbiAgICAgICAgdHlwZTogMCwgLy8gQmVhY29uXG4gICAgfTtcblxuICAgIGxldCBsYXN0Q2hhbGxlbmdlSGFzaDtcblxuICAgIGNvbnN0IHJuZyA9IGF3YWl0IG1pc2MuZ2V0UmFuZG9tUm5nKGVudHJvcHkpO1xuXG4gICAgaWYgKGNvbnRyaWJ1dGlvbnMubGVuZ3RoPjApIHtcbiAgICAgICAgbGFzdENoYWxsZW5nZUhhc2ggPSBjb250cmlidXRpb25zW2NvbnRyaWJ1dGlvbnMubGVuZ3RoLTFdLm5leHRDaGFsbGVuZ2U7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgbGFzdENoYWxsZW5nZUhhc2ggPSB1dGlscy5jYWxjdWxhdGVGaXJzdENoYWxsZW5nZUhhc2goY3VydmUsIHBvd2VyLCBsb2dnZXIpO1xuICAgIH1cblxuICAgIC8vIEdlbmVyYXRlIGEgcmFuZG9tIGtleVxuXG5cbiAgICBjdXJDb250cmlidXRpb24ua2V5ID0ga2V5UGFpci5jcmVhdGVQVGF1S2V5KGN1cnZlLCBsYXN0Q2hhbGxlbmdlSGFzaCwgcm5nKTtcblxuXG4gICAgY29uc3QgcmVzcG9uc2VIYXNoZXIgPSBuZXcgQmxha2UyYig2NCk7XG4gICAgcmVzcG9uc2VIYXNoZXIudXBkYXRlKGxhc3RDaGFsbGVuZ2VIYXNoKTtcblxuICAgIGNvbnN0IGZkTmV3ID0gYXdhaXQgYmluRmlsZVV0aWxzLmNyZWF0ZUJpbkZpbGUobmV3UFRhdUZpbGVuYW1lLCBcInB0YXVcIiwgMSwgNyk7XG4gICAgYXdhaXQgdXRpbHMud3JpdGVQVGF1SGVhZGVyKGZkTmV3LCBjdXJ2ZSwgcG93ZXIpO1xuXG4gICAgY29uc3Qgc3RhcnRTZWN0aW9ucyA9IFtdO1xuXG4gICAgbGV0IGZpcnN0UG9pbnRzO1xuICAgIGZpcnN0UG9pbnRzID0gYXdhaXQgcHJvY2Vzc1NlY3Rpb24oMiwgXCJHMVwiLCAgKDIgKiogcG93ZXIpICogMiAtMSwgY3VydmUuRnIuZSgxKSwgY3VyQ29udHJpYnV0aW9uLmtleS50YXUucHJ2S2V5LCBcInRhdUcxXCIgKTtcbiAgICBjdXJDb250cmlidXRpb24udGF1RzEgPSBmaXJzdFBvaW50c1sxXTtcbiAgICBmaXJzdFBvaW50cyA9IGF3YWl0IHByb2Nlc3NTZWN0aW9uKDMsIFwiRzJcIiwgICgyICoqIHBvd2VyKSAsIGN1cnZlLkZyLmUoMSksIGN1ckNvbnRyaWJ1dGlvbi5rZXkudGF1LnBydktleSwgXCJ0YXVHMlwiICk7XG4gICAgY3VyQ29udHJpYnV0aW9uLnRhdUcyID0gZmlyc3RQb2ludHNbMV07XG4gICAgZmlyc3RQb2ludHMgPSBhd2FpdCBwcm9jZXNzU2VjdGlvbig0LCBcIkcxXCIsICAoMiAqKiBwb3dlcikgLCBjdXJDb250cmlidXRpb24ua2V5LmFscGhhLnBydktleSwgY3VyQ29udHJpYnV0aW9uLmtleS50YXUucHJ2S2V5LCBcImFscGhhVGF1RzFcIiApO1xuICAgIGN1ckNvbnRyaWJ1dGlvbi5hbHBoYUcxID0gZmlyc3RQb2ludHNbMF07XG4gICAgZmlyc3RQb2ludHMgPSBhd2FpdCBwcm9jZXNzU2VjdGlvbig1LCBcIkcxXCIsICAoMiAqKiBwb3dlcikgLCBjdXJDb250cmlidXRpb24ua2V5LmJldGEucHJ2S2V5LCBjdXJDb250cmlidXRpb24ua2V5LnRhdS5wcnZLZXksIFwiYmV0YVRhdUcxXCIgKTtcbiAgICBjdXJDb250cmlidXRpb24uYmV0YUcxID0gZmlyc3RQb2ludHNbMF07XG4gICAgZmlyc3RQb2ludHMgPSBhd2FpdCBwcm9jZXNzU2VjdGlvbig2LCBcIkcyXCIsICAxLCBjdXJDb250cmlidXRpb24ua2V5LmJldGEucHJ2S2V5LCBjdXJDb250cmlidXRpb24ua2V5LnRhdS5wcnZLZXksIFwiYmV0YVRhdUcyXCIgKTtcbiAgICBjdXJDb250cmlidXRpb24uYmV0YUcyID0gZmlyc3RQb2ludHNbMF07XG5cbiAgICBjdXJDb250cmlidXRpb24ucGFydGlhbEhhc2ggPSByZXNwb25zZUhhc2hlci5nZXRQYXJ0aWFsSGFzaCgpO1xuXG4gICAgY29uc3QgYnVmZktleSA9IG5ldyBVaW50OEFycmF5KGN1cnZlLkYxLm44KjIqNitjdXJ2ZS5GMi5uOCoyKjMpO1xuXG4gICAgdXRpbHMudG9QdGF1UHViS2V5UnByKGJ1ZmZLZXksIDAsIGN1cnZlLCBjdXJDb250cmlidXRpb24ua2V5LCBmYWxzZSk7XG5cbiAgICByZXNwb25zZUhhc2hlci51cGRhdGUobmV3IFVpbnQ4QXJyYXkoYnVmZktleSkpO1xuICAgIGNvbnN0IGhhc2hSZXNwb25zZSA9IHJlc3BvbnNlSGFzaGVyLmRpZ2VzdCgpO1xuXG4gICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8obWlzYy5mb3JtYXRIYXNoKGhhc2hSZXNwb25zZSwgXCJDb250cmlidXRpb24gUmVzcG9uc2UgSGFzaCBpbXBvcnRlZDogXCIpKTtcblxuICAgIGNvbnN0IG5leHRDaGFsbGVuZ2VIYXNoZXIgPSBuZXcgQmxha2UyYig2NCk7XG4gICAgbmV4dENoYWxsZW5nZUhhc2hlci51cGRhdGUoaGFzaFJlc3BvbnNlKTtcblxuICAgIGF3YWl0IGhhc2hTZWN0aW9uKGZkTmV3LCBcIkcxXCIsIDIsICgyICoqIHBvd2VyKSAqIDIgLTEsIFwidGF1RzFcIik7XG4gICAgYXdhaXQgaGFzaFNlY3Rpb24oZmROZXcsIFwiRzJcIiwgMywgKDIgKiogcG93ZXIpICAgICAgICwgXCJ0YXVHMlwiKTtcbiAgICBhd2FpdCBoYXNoU2VjdGlvbihmZE5ldywgXCJHMVwiLCA0LCAoMiAqKiBwb3dlcikgICAgICAgLCBcImFscGhhVGF1RzFcIik7XG4gICAgYXdhaXQgaGFzaFNlY3Rpb24oZmROZXcsIFwiRzFcIiwgNSwgKDIgKiogcG93ZXIpICAgICAgICwgXCJiZXRhVGF1RzFcIik7XG4gICAgYXdhaXQgaGFzaFNlY3Rpb24oZmROZXcsIFwiRzJcIiwgNiwgMSAgICAgICAgICAgICAgICAgICwgXCJiZXRhRzJcIik7XG5cbiAgICBjdXJDb250cmlidXRpb24ubmV4dENoYWxsZW5nZSA9IG5leHRDaGFsbGVuZ2VIYXNoZXIuZGlnZXN0KCk7XG5cbiAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhtaXNjLmZvcm1hdEhhc2goY3VyQ29udHJpYnV0aW9uLm5leHRDaGFsbGVuZ2UsIFwiTmV4dCBDaGFsbGVuZ2UgSGFzaDogXCIpKTtcblxuICAgIGNvbnRyaWJ1dGlvbnMucHVzaChjdXJDb250cmlidXRpb24pO1xuXG4gICAgYXdhaXQgdXRpbHMud3JpdGVDb250cmlidXRpb25zKGZkTmV3LCBjdXJ2ZSwgY29udHJpYnV0aW9ucyk7XG5cbiAgICBhd2FpdCBmZE9sZC5jbG9zZSgpO1xuICAgIGF3YWl0IGZkTmV3LmNsb3NlKCk7XG5cbiAgICByZXR1cm4gaGFzaFJlc3BvbnNlO1xuXG4gICAgYXN5bmMgZnVuY3Rpb24gcHJvY2Vzc1NlY3Rpb24oc2VjdGlvbklkLCBncm91cE5hbWUsIE5Qb2ludHMsIGZpcnN0LCBpbmMsIHNlY3Rpb25OYW1lKSB7XG4gICAgICAgIGNvbnN0IHJlcyA9IFtdO1xuICAgICAgICBmZE9sZC5wb3MgPSBzZWN0aW9uc1tzZWN0aW9uSWRdWzBdLnA7XG5cbiAgICAgICAgYXdhaXQgYmluRmlsZVV0aWxzLnN0YXJ0V3JpdGVTZWN0aW9uKGZkTmV3LCBzZWN0aW9uSWQpO1xuXG4gICAgICAgIHN0YXJ0U2VjdGlvbnNbc2VjdGlvbklkXSA9IGZkTmV3LnBvcztcblxuICAgICAgICBjb25zdCBHID0gY3VydmVbZ3JvdXBOYW1lXTtcbiAgICAgICAgY29uc3Qgc0cgPSBHLkYubjgqMjtcbiAgICAgICAgY29uc3QgY2h1bmtTaXplID0gTWF0aC5mbG9vcigoMTw8MjApIC8gc0cpOyAgIC8vIDEyOE1iIGNodW5rc1xuICAgICAgICBsZXQgdCA9IGZpcnN0O1xuICAgICAgICBmb3IgKGxldCBpPTAgOyBpPE5Qb2ludHMgOyBpKz0gY2h1bmtTaXplKSB7XG4gICAgICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZGVidWcoYHByb2Nlc3Npbmc6ICR7c2VjdGlvbk5hbWV9OiAke2l9LyR7TlBvaW50c31gKTtcbiAgICAgICAgICAgIGNvbnN0IG49IE1hdGgubWluKE5Qb2ludHMtaSwgY2h1bmtTaXplICk7XG4gICAgICAgICAgICBjb25zdCBidWZmSW4gPSBhd2FpdCBmZE9sZC5yZWFkKG4gKiBzRyk7XG4gICAgICAgICAgICBjb25zdCBidWZmT3V0TEVNID0gYXdhaXQgRy5iYXRjaEFwcGx5S2V5KGJ1ZmZJbiwgdCwgaW5jKTtcblxuICAgICAgICAgICAgLyogQ29kZSB0byB0ZXN0IHRoZSBjYXNlIHdoZXJlIHdlIGRvbid0IGhhdmUgdGhlIDJebS0yIGNvbXBvbmVudFxuICAgICAgICAgICAgaWYgKHNlY3Rpb25OYW1lPT0gXCJ0YXVHMVwiKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgYnogPSBuZXcgVWludDhBcnJheSg2NCk7XG4gICAgICAgICAgICAgICAgYnVmZk91dExFTS5zZXQoYnosIDY0KigoMiAqKiBwb3dlcikgLSAxICkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgKi9cblxuICAgICAgICAgICAgY29uc3QgcHJvbWlzZVdyaXRlID0gZmROZXcud3JpdGUoYnVmZk91dExFTSk7XG4gICAgICAgICAgICBjb25zdCBidWZmT3V0QyA9IGF3YWl0IEcuYmF0Y2hMRU10b0MoYnVmZk91dExFTSk7XG5cbiAgICAgICAgICAgIHJlc3BvbnNlSGFzaGVyLnVwZGF0ZShidWZmT3V0Qyk7XG4gICAgICAgICAgICBhd2FpdCBwcm9taXNlV3JpdGU7XG4gICAgICAgICAgICBpZiAoaT09MCkgICAvLyBSZXR1cm4gdGhlIDIgZmlyc3QgcG9pbnRzLlxuICAgICAgICAgICAgICAgIGZvciAobGV0IGo9MDsgajxNYXRoLm1pbigyLCBOUG9pbnRzKTsgaisrKVxuICAgICAgICAgICAgICAgICAgICByZXMucHVzaChHLmZyb21ScHJMRU0oYnVmZk91dExFTSwgaipzRykpO1xuICAgICAgICAgICAgdCA9IGN1cnZlLkZyLm11bCh0LCBjdXJ2ZS5Gci5leHAoaW5jLCBuKSk7XG4gICAgICAgIH1cblxuICAgICAgICBhd2FpdCBiaW5GaWxlVXRpbHMuZW5kV3JpdGVTZWN0aW9uKGZkTmV3KTtcblxuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH1cblxuXG4gICAgYXN5bmMgZnVuY3Rpb24gaGFzaFNlY3Rpb24oZmRUbywgZ3JvdXBOYW1lLCBzZWN0aW9uSWQsIG5Qb2ludHMsIHNlY3Rpb25OYW1lKSB7XG5cbiAgICAgICAgY29uc3QgRyA9IGN1cnZlW2dyb3VwTmFtZV07XG4gICAgICAgIGNvbnN0IHNHID0gRy5GLm44KjI7XG4gICAgICAgIGNvbnN0IG5Qb2ludHNDaHVuayA9IE1hdGguZmxvb3IoKDE8PDI0KS9zRyk7XG5cbiAgICAgICAgY29uc3Qgb2xkUG9zID0gZmRUby5wb3M7XG4gICAgICAgIGZkVG8ucG9zID0gc3RhcnRTZWN0aW9uc1tzZWN0aW9uSWRdO1xuXG4gICAgICAgIGZvciAobGV0IGk9MDsgaTwgblBvaW50czsgaSArPSBuUG9pbnRzQ2h1bmspIHtcbiAgICAgICAgICAgIGlmICgobG9nZ2VyKSYmaSkgbG9nZ2VyLmRlYnVnKGBIYXNoaW5nICR7c2VjdGlvbk5hbWV9OiBgICsgaSk7XG4gICAgICAgICAgICBjb25zdCBuID0gTWF0aC5taW4oblBvaW50cy1pLCBuUG9pbnRzQ2h1bmspO1xuXG4gICAgICAgICAgICBjb25zdCBidWZmTEVNID0gYXdhaXQgZmRUby5yZWFkKG4gKiBzRyk7XG5cbiAgICAgICAgICAgIGNvbnN0IGJ1ZmZVID0gYXdhaXQgRy5iYXRjaExFTXRvVShidWZmTEVNKTtcblxuICAgICAgICAgICAgbmV4dENoYWxsZW5nZUhhc2hlci51cGRhdGUoYnVmZlUpO1xuICAgICAgICB9XG5cbiAgICAgICAgZmRUby5wb3MgPSBvbGRQb3M7XG4gICAgfVxuXG5cbn1cblxuIiwiLypcbiAgICBDb3B5cmlnaHQgMjAxOCAwS0lNUyBhc3NvY2lhdGlvbi5cblxuICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHNuYXJrSlMuXG5cbiAgICBzbmFya0pTIGlzIGEgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdFxuICAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3JcbiAgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuXG4gICAgc25hcmtKUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVFxuICAgIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWVxuICAgIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpY1xuICAgIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cblxuICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gICAgYWxvbmcgd2l0aCBzbmFya0pTLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuKi9cblxuaW1wb3J0ICogYXMgYmluRmlsZVV0aWxzIGZyb20gXCJAaWRlbjMvYmluZmlsZXV0aWxzXCI7XG5pbXBvcnQgKiBhcyB1dGlscyBmcm9tIFwiLi9wb3dlcnNvZnRhdV91dGlscy5qc1wiO1xuaW1wb3J0IHtCaWdCdWZmZXJ9IGZyb20gXCJmZmphdmFzY3JpcHRcIjtcblxuZXhwb3J0IGRlZmF1bHQgYXN5bmMgZnVuY3Rpb24gcHJlcGFyZVBoYXNlMihvbGRQdGF1RmlsZW5hbWUsIG5ld1BUYXVGaWxlbmFtZSwgbG9nZ2VyKSB7XG5cbiAgICBjb25zdCB7ZmQ6IGZkT2xkLCBzZWN0aW9uc30gPSBhd2FpdCBiaW5GaWxlVXRpbHMucmVhZEJpbkZpbGUob2xkUHRhdUZpbGVuYW1lLCBcInB0YXVcIiwgMSk7XG4gICAgY29uc3Qge2N1cnZlLCBwb3dlcn0gPSBhd2FpdCB1dGlscy5yZWFkUFRhdUhlYWRlcihmZE9sZCwgc2VjdGlvbnMpO1xuXG4gICAgY29uc3QgZmROZXcgPSBhd2FpdCBiaW5GaWxlVXRpbHMuY3JlYXRlQmluRmlsZShuZXdQVGF1RmlsZW5hbWUsIFwicHRhdVwiLCAxLCAxMSk7XG4gICAgYXdhaXQgdXRpbHMud3JpdGVQVGF1SGVhZGVyKGZkTmV3LCBjdXJ2ZSwgcG93ZXIpO1xuXG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLmNvcHlTZWN0aW9uKGZkT2xkLCBzZWN0aW9ucywgZmROZXcsIDIpO1xuICAgIGF3YWl0IGJpbkZpbGVVdGlscy5jb3B5U2VjdGlvbihmZE9sZCwgc2VjdGlvbnMsIGZkTmV3LCAzKTtcbiAgICBhd2FpdCBiaW5GaWxlVXRpbHMuY29weVNlY3Rpb24oZmRPbGQsIHNlY3Rpb25zLCBmZE5ldywgNCk7XG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLmNvcHlTZWN0aW9uKGZkT2xkLCBzZWN0aW9ucywgZmROZXcsIDUpO1xuICAgIGF3YWl0IGJpbkZpbGVVdGlscy5jb3B5U2VjdGlvbihmZE9sZCwgc2VjdGlvbnMsIGZkTmV3LCA2KTtcbiAgICBhd2FpdCBiaW5GaWxlVXRpbHMuY29weVNlY3Rpb24oZmRPbGQsIHNlY3Rpb25zLCBmZE5ldywgNyk7XG5cbiAgICBhd2FpdCBwcm9jZXNzU2VjdGlvbigyLCAxMiwgXCJHMVwiLCBcInRhdUcxXCIgKTtcbiAgICBhd2FpdCBwcm9jZXNzU2VjdGlvbigzLCAxMywgXCJHMlwiLCBcInRhdUcyXCIgKTtcbiAgICBhd2FpdCBwcm9jZXNzU2VjdGlvbig0LCAxNCwgXCJHMVwiLCBcImFscGhhVGF1RzFcIiApO1xuICAgIGF3YWl0IHByb2Nlc3NTZWN0aW9uKDUsIDE1LCBcIkcxXCIsIFwiYmV0YVRhdUcxXCIgKTtcblxuICAgIGF3YWl0IGZkT2xkLmNsb3NlKCk7XG4gICAgYXdhaXQgZmROZXcuY2xvc2UoKTtcblxuICAgIC8vIGF3YWl0IGZzLnByb21pc2VzLnVubGluayhuZXdQVGF1RmlsZW5hbWUrIFwiLnRtcFwiKTtcblxuICAgIHJldHVybjtcblxuICAgIGFzeW5jIGZ1bmN0aW9uIHByb2Nlc3NTZWN0aW9uKG9sZFNlY3Rpb25JZCwgbmV3U2VjdGlvbklkLCBHc3RyLCBzZWN0aW9uTmFtZSkge1xuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZGVidWcoXCJTdGFydGluZyBzZWN0aW9uOiBcIitzZWN0aW9uTmFtZSk7XG5cbiAgICAgICAgYXdhaXQgYmluRmlsZVV0aWxzLnN0YXJ0V3JpdGVTZWN0aW9uKGZkTmV3LCBuZXdTZWN0aW9uSWQpO1xuXG4gICAgICAgIGZvciAobGV0IHA9MDsgcDw9cG93ZXI7IHArKykge1xuICAgICAgICAgICAgYXdhaXQgcHJvY2Vzc1NlY3Rpb25Qb3dlcihwKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChvbGRTZWN0aW9uSWQgPT0gMikge1xuICAgICAgICAgICAgYXdhaXQgcHJvY2Vzc1NlY3Rpb25Qb3dlcihwb3dlcisxKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGF3YWl0IGJpbkZpbGVVdGlscy5lbmRXcml0ZVNlY3Rpb24oZmROZXcpO1xuXG5cbiAgICAgICAgYXN5bmMgZnVuY3Rpb24gcHJvY2Vzc1NlY3Rpb25Qb3dlcihwKSB7XG4gICAgICAgICAgICBjb25zdCBuUG9pbnRzID0gMiAqKiBwO1xuICAgICAgICAgICAgY29uc3QgRyA9IGN1cnZlW0dzdHJdO1xuICAgICAgICAgICAgY29uc3QgRnIgPSBjdXJ2ZS5GcjtcbiAgICAgICAgICAgIGNvbnN0IHNHaW4gPSBHLkYubjgqMjtcbiAgICAgICAgICAgIGNvbnN0IHNHbWlkID0gRy5GLm44KjM7XG5cbiAgICAgICAgICAgIGxldCBidWZmO1xuICAgICAgICAgICAgYnVmZiA9IG5ldyBCaWdCdWZmZXIoblBvaW50cypzR2luKTtcblxuICAgICAgICAgICAgYXdhaXQgYmluRmlsZVV0aWxzLnN0YXJ0UmVhZFVuaXF1ZVNlY3Rpb24oZmRPbGQsIHNlY3Rpb25zLCBvbGRTZWN0aW9uSWQpO1xuICAgICAgICAgICAgaWYgKChvbGRTZWN0aW9uSWQgPT0gMikmJihwPT1wb3dlcisxKSkge1xuICAgICAgICAgICAgICAgIGF3YWl0IGZkT2xkLnJlYWRUb0J1ZmZlcihidWZmLCAwLChuUG9pbnRzLTEpKnNHaW4gKTtcbiAgICAgICAgICAgICAgICBidWZmLnNldChjdXJ2ZS5HMS56ZXJvQWZmaW5lLCAoblBvaW50cy0xKSpzR2luICk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGF3YWl0IGZkT2xkLnJlYWRUb0J1ZmZlcihidWZmLCAwLG5Qb2ludHMqc0dpbiApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYXdhaXQgYmluRmlsZVV0aWxzLmVuZFJlYWRTZWN0aW9uKGZkT2xkLCB0cnVlKTtcblxuXG4gICAgICAgICAgICBidWZmID0gYXdhaXQgRy5sYWdyYW5nZUV2YWx1YXRpb25zKGJ1ZmYsIFwiYWZmaW5lXCIsIFwiYWZmaW5lXCIsIGxvZ2dlciwgc2VjdGlvbk5hbWUpO1xuICAgICAgICAgICAgYXdhaXQgZmROZXcud3JpdGUoYnVmZik7XG5cbi8qXG4gICAgICAgICAgICBpZiAocCA8PSBjdXJ2ZS5Gci5zKSB7XG4gICAgICAgICAgICAgICAgYnVmZiA9IGF3YWl0IEcuaWZmdChidWZmLCBcImFmZmluZVwiLCBcImFmZmluZVwiLCBsb2dnZXIsIHNlY3Rpb25OYW1lKTtcbiAgICAgICAgICAgICAgICBhd2FpdCBmZE5ldy53cml0ZShidWZmKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAocCA9PSBjdXJ2ZS5Gci5zKzEpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBzbWFsbE0gPSAxPDxjdXJ2ZS5Gci5zO1xuICAgICAgICAgICAgICAgIGxldCB0MCA9IG5ldyBCaWdCdWZmZXIoIHNtYWxsTSAqIHNHbWlkICk7XG4gICAgICAgICAgICAgICAgbGV0IHQxID0gbmV3IEJpZ0J1ZmZlciggc21hbGxNICogc0dtaWQgKTtcblxuICAgICAgICAgICAgICAgIGNvbnN0IHNoaWZ0X3RvX3NtYWxsX20gPSBGci5leHAoRnIuc2hpZnQsIHNtYWxsTSk7XG4gICAgICAgICAgICAgICAgY29uc3Qgb25lX292ZXJfZGVub20gPSBGci5pbnYoRnIuc3ViKHNoaWZ0X3RvX3NtYWxsX20sIEZyLm9uZSkpO1xuXG4gICAgICAgICAgICAgICAgbGV0IHNJbnZBY2MgPSBGci5vbmU7XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaT0wOyBpPHNtYWxsTTsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHRpID0gIGJ1ZmYuc2xpY2UoaSpzR2luLCAoaSsxKSpzR2luKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdG1pID0gYnVmZi5zbGljZSgoaStzbWFsbE0pKnNHaW4sIChpK3NtYWxsTSsxKSpzR2luKTtcblxuICAgICAgICAgICAgICAgICAgICB0MC5zZXQoXG4gICAgICAgICAgICAgICAgICAgICAgICBHLnRpbWVzRnIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRy5zdWIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEcudGltZXNGcih0aSAsIHNoaWZ0X3RvX3NtYWxsX20pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bWlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uZV9vdmVyX2Rlbm9tXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgaSpzR21pZFxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICB0MS5zZXQoXG4gICAgICAgICAgICAgICAgICAgICAgICBHLnRpbWVzRnIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRy5zdWIoIHRtaSwgdGkpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZyLm11bChzSW52QWNjLCBvbmVfb3Zlcl9kZW5vbSlcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICBpKnNHbWlkXG4gICAgICAgICAgICAgICAgICAgICk7XG5cblxuICAgICAgICAgICAgICAgICAgICBzSW52QWNjID0gRnIubXVsKHNJbnZBY2MsIEZyLnNoaWZ0SW52KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdDAgPSBhd2FpdCBHLmlmZnQodDAsIFwiamFjb2JpYW5cIiwgXCJhZmZpbmVcIiwgbG9nZ2VyLCBzZWN0aW9uTmFtZSArIFwiIHQwXCIpO1xuICAgICAgICAgICAgICAgIGF3YWl0IGZkTmV3LndyaXRlKHQwKTtcbiAgICAgICAgICAgICAgICB0MCA9IG51bGw7XG4gICAgICAgICAgICAgICAgdDEgPSBhd2FpdCBHLmlmZnQodDEsIFwiamFjb2JpYW5cIiwgXCJhZmZpbmVcIiwgbG9nZ2VyLCBzZWN0aW9uTmFtZSArIFwiIHQwXCIpO1xuICAgICAgICAgICAgICAgIGF3YWl0IGZkTmV3LndyaXRlKHQxKTtcblxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZXJyb3IoXCJQb3dlciB0b28gYmlnXCIpO1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIlBvd2VyIHRvIGJpZ1wiKTtcbiAgICAgICAgICAgIH1cbiovXG4gICAgICAgIH1cbiAgICB9XG59XG5cbiIsIi8qXG4gICAgQ29weXJpZ2h0IDIwMTggMEtJTVMgYXNzb2NpYXRpb24uXG5cbiAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBzbmFya0pTLlxuXG4gICAgc25hcmtKUyBpcyBhIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXRcbiAgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yXG4gICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cblxuICAgIHNuYXJrSlMgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVRcbiAgICBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFlcbiAgICBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWNcbiAgICBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG5cbiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICAgIGFsb25nIHdpdGggc25hcmtKUy4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cbiovXG5cbmltcG9ydCAqIGFzIGJpbkZpbGVVdGlscyBmcm9tIFwiQGlkZW4zL2JpbmZpbGV1dGlsc1wiO1xuaW1wb3J0ICogYXMgdXRpbHMgZnJvbSBcIi4vcG93ZXJzb2Z0YXVfdXRpbHMuanNcIjtcblxuZXhwb3J0IGRlZmF1bHQgYXN5bmMgZnVuY3Rpb24gdHJ1bmNhdGUocHRhdUZpbGVuYW1lLCB0ZW1wbGF0ZSwgbG9nZ2VyKSB7XG5cbiAgICBjb25zdCB7ZmQ6IGZkT2xkLCBzZWN0aW9uc30gPSBhd2FpdCBiaW5GaWxlVXRpbHMucmVhZEJpbkZpbGUocHRhdUZpbGVuYW1lLCBcInB0YXVcIiwgMSk7XG4gICAgY29uc3Qge2N1cnZlLCBwb3dlciwgY2VyZW1vbnlQb3dlcn0gPSBhd2FpdCB1dGlscy5yZWFkUFRhdUhlYWRlcihmZE9sZCwgc2VjdGlvbnMpO1xuXG4gICAgY29uc3Qgc0cxID0gY3VydmUuRzEuRi5uOCoyO1xuICAgIGNvbnN0IHNHMiA9IGN1cnZlLkcyLkYubjgqMjtcblxuICAgIGZvciAobGV0IHA9MTsgcDxwb3dlcjsgcCsrKSB7XG4gICAgICAgIGF3YWl0IGdlbmVyYXRlVHJ1bmNhdGUocCk7XG4gICAgfVxuXG4gICAgYXdhaXQgZmRPbGQuY2xvc2UoKTtcblxuICAgIHJldHVybiB0cnVlO1xuXG4gICAgYXN5bmMgZnVuY3Rpb24gZ2VuZXJhdGVUcnVuY2F0ZShwKSB7XG5cbiAgICAgICAgbGV0IHNQID0gcC50b1N0cmluZygpO1xuICAgICAgICB3aGlsZSAoc1AubGVuZ3RoPDIpIHNQID0gXCIwXCIgKyBzUDtcblxuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZGVidWcoXCJXcml0aW5nIFBvd2VyOiBcIitzUCk7XG5cbiAgICAgICAgY29uc3QgZmROZXcgPSBhd2FpdCBiaW5GaWxlVXRpbHMuY3JlYXRlQmluRmlsZSh0ZW1wbGF0ZSArIHNQICsgXCIucHRhdVwiLCBcInB0YXVcIiwgMSwgMTEpO1xuICAgICAgICBhd2FpdCB1dGlscy53cml0ZVBUYXVIZWFkZXIoZmROZXcsIGN1cnZlLCBwLCBjZXJlbW9ueVBvd2VyKTtcblxuICAgICAgICBhd2FpdCBiaW5GaWxlVXRpbHMuY29weVNlY3Rpb24oZmRPbGQsIHNlY3Rpb25zLCBmZE5ldywgMiwgKCgyICoqIHApKjItMSkgKiBzRzEgKTsgLy8gdGFnRzFcbiAgICAgICAgYXdhaXQgYmluRmlsZVV0aWxzLmNvcHlTZWN0aW9uKGZkT2xkLCBzZWN0aW9ucywgZmROZXcsIDMsICgyICoqIHApICogc0cyKTsgLy8gdGF1RzJcbiAgICAgICAgYXdhaXQgYmluRmlsZVV0aWxzLmNvcHlTZWN0aW9uKGZkT2xkLCBzZWN0aW9ucywgZmROZXcsIDQsICgyICoqIHApICogc0cxKTsgLy8gYWxmYVRhdUcxXG4gICAgICAgIGF3YWl0IGJpbkZpbGVVdGlscy5jb3B5U2VjdGlvbihmZE9sZCwgc2VjdGlvbnMsIGZkTmV3LCA1LCAoMiAqKiBwKSAqIHNHMSk7IC8vIGJldGFUYXVHMVxuICAgICAgICBhd2FpdCBiaW5GaWxlVXRpbHMuY29weVNlY3Rpb24oZmRPbGQsIHNlY3Rpb25zLCBmZE5ldywgNiwgIHNHMik7IC8vIGJldGFUYXVHMlxuICAgICAgICBhd2FpdCBiaW5GaWxlVXRpbHMuY29weVNlY3Rpb24oZmRPbGQsIHNlY3Rpb25zLCBmZE5ldywgNyk7IC8vIGNvbnRyaWJ1dGlvbnNcbiAgICAgICAgYXdhaXQgYmluRmlsZVV0aWxzLmNvcHlTZWN0aW9uKGZkT2xkLCBzZWN0aW9ucywgZmROZXcsIDEyLCAoKDIgKiogKHArMSkpKjIgLTEpICogc0cxKTsgLy8gTF90YXVHMVxuICAgICAgICBhd2FpdCBiaW5GaWxlVXRpbHMuY29weVNlY3Rpb24oZmRPbGQsIHNlY3Rpb25zLCBmZE5ldywgMTMsICgoMiAqKiBwKSoyIC0xKSAqIHNHMik7IC8vIExfdGF1RzJcbiAgICAgICAgYXdhaXQgYmluRmlsZVV0aWxzLmNvcHlTZWN0aW9uKGZkT2xkLCBzZWN0aW9ucywgZmROZXcsIDE0LCAoKDIgKiogcCkqMiAtMSkgKiBzRzEpOyAvLyBMX2FsZmFUYXVHMVxuICAgICAgICBhd2FpdCBiaW5GaWxlVXRpbHMuY29weVNlY3Rpb24oZmRPbGQsIHNlY3Rpb25zLCBmZE5ldywgMTUsICgoMiAqKiBwKSoyIC0xKSAqIHNHMSk7IC8vIExfYmV0YVRhdUcxXG5cbiAgICAgICAgYXdhaXQgZmROZXcuY2xvc2UoKTtcbiAgICB9XG5cblxufVxuIiwiLypcbiAgICBDb3B5cmlnaHQgMjAxOCAwS0lNUyBhc3NvY2lhdGlvbi5cblxuICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHNuYXJrSlMuXG5cbiAgICBzbmFya0pTIGlzIGEgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdFxuICAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3JcbiAgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuXG4gICAgc25hcmtKUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVFxuICAgIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWVxuICAgIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpY1xuICAgIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cblxuICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gICAgYWxvbmcgd2l0aCBzbmFya0pTLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuKi9cblxuaW1wb3J0ICogYXMgYmluRmlsZVV0aWxzIGZyb20gXCJAaWRlbjMvYmluZmlsZXV0aWxzXCI7XG5pbXBvcnQgKiBhcyB1dGlscyBmcm9tIFwiLi9wb3dlcnNvZnRhdV91dGlscy5qc1wiO1xuaW1wb3J0ICogYXMgZmFzdEZpbGUgZnJvbSBcImZhc3RmaWxlXCI7XG5pbXBvcnQge0JpZ0J1ZmZlcn0gZnJvbSBcImZmamF2YXNjcmlwdFwiO1xuXG5leHBvcnQgZGVmYXVsdCBhc3luYyBmdW5jdGlvbiBjb252ZXJ0KG9sZFB0YXVGaWxlbmFtZSwgbmV3UFRhdUZpbGVuYW1lLCBsb2dnZXIpIHtcblxuICAgIGNvbnN0IHtmZDogZmRPbGQsIHNlY3Rpb25zfSA9IGF3YWl0IGJpbkZpbGVVdGlscy5yZWFkQmluRmlsZShvbGRQdGF1RmlsZW5hbWUsIFwicHRhdVwiLCAxKTtcbiAgICBjb25zdCB7Y3VydmUsIHBvd2VyfSA9IGF3YWl0IHV0aWxzLnJlYWRQVGF1SGVhZGVyKGZkT2xkLCBzZWN0aW9ucyk7XG5cbiAgICBjb25zdCBmZE5ldyA9IGF3YWl0IGJpbkZpbGVVdGlscy5jcmVhdGVCaW5GaWxlKG5ld1BUYXVGaWxlbmFtZSwgXCJwdGF1XCIsIDEsIDExKTtcbiAgICBhd2FpdCB1dGlscy53cml0ZVBUYXVIZWFkZXIoZmROZXcsIGN1cnZlLCBwb3dlcik7XG5cbiAgICAvLyBjb25zdCBmZFRtcCA9IGF3YWl0IGZhc3RGaWxlLmNyZWF0ZU92ZXJyaWRlKG5ld1BUYXVGaWxlbmFtZSsgXCIudG1wXCIpO1xuXG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLmNvcHlTZWN0aW9uKGZkT2xkLCBzZWN0aW9ucywgZmROZXcsIDIpO1xuICAgIGF3YWl0IGJpbkZpbGVVdGlscy5jb3B5U2VjdGlvbihmZE9sZCwgc2VjdGlvbnMsIGZkTmV3LCAzKTtcbiAgICBhd2FpdCBiaW5GaWxlVXRpbHMuY29weVNlY3Rpb24oZmRPbGQsIHNlY3Rpb25zLCBmZE5ldywgNCk7XG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLmNvcHlTZWN0aW9uKGZkT2xkLCBzZWN0aW9ucywgZmROZXcsIDUpO1xuICAgIGF3YWl0IGJpbkZpbGVVdGlscy5jb3B5U2VjdGlvbihmZE9sZCwgc2VjdGlvbnMsIGZkTmV3LCA2KTtcbiAgICBhd2FpdCBiaW5GaWxlVXRpbHMuY29weVNlY3Rpb24oZmRPbGQsIHNlY3Rpb25zLCBmZE5ldywgNyk7XG5cbiAgICBhd2FpdCBwcm9jZXNzU2VjdGlvbigyLCAxMiwgXCJHMVwiLCBcInRhdUcxXCIgKTtcbiAgICBhd2FpdCBiaW5GaWxlVXRpbHMuY29weVNlY3Rpb24oZmRPbGQsIHNlY3Rpb25zLCBmZE5ldywgMTMpO1xuICAgIGF3YWl0IGJpbkZpbGVVdGlscy5jb3B5U2VjdGlvbihmZE9sZCwgc2VjdGlvbnMsIGZkTmV3LCAxNCk7XG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLmNvcHlTZWN0aW9uKGZkT2xkLCBzZWN0aW9ucywgZmROZXcsIDE1KTtcblxuICAgIGF3YWl0IGZkT2xkLmNsb3NlKCk7XG4gICAgYXdhaXQgZmROZXcuY2xvc2UoKTtcblxuICAgIC8vIGF3YWl0IGZzLnByb21pc2VzLnVubGluayhuZXdQVGF1RmlsZW5hbWUrIFwiLnRtcFwiKTtcblxuICAgIHJldHVybjtcblxuICAgIGFzeW5jIGZ1bmN0aW9uIHByb2Nlc3NTZWN0aW9uKG9sZFNlY3Rpb25JZCwgbmV3U2VjdGlvbklkLCBHc3RyLCBzZWN0aW9uTmFtZSkge1xuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZGVidWcoXCJTdGFydGluZyBzZWN0aW9uOiBcIitzZWN0aW9uTmFtZSk7XG5cbiAgICAgICAgYXdhaXQgYmluRmlsZVV0aWxzLnN0YXJ0V3JpdGVTZWN0aW9uKGZkTmV3LCBuZXdTZWN0aW9uSWQpO1xuXG4gICAgICAgIGNvbnN0IHNpemUgPSBzZWN0aW9uc1tuZXdTZWN0aW9uSWRdWzBdLnNpemU7XG4gICAgICAgIGNvbnN0IGNodW5rU2l6ZSA9IGZkT2xkLnBhZ2VTaXplO1xuICAgICAgICBhd2FpdCBiaW5GaWxlVXRpbHMuc3RhcnRSZWFkVW5pcXVlU2VjdGlvbihmZE9sZCwgc2VjdGlvbnMsIG5ld1NlY3Rpb25JZCk7XG4gICAgICAgIGZvciAobGV0IHA9MDsgcDxzaXplOyBwKz1jaHVua1NpemUpIHtcbiAgICAgICAgICAgIGNvbnN0IGwgPSBNYXRoLm1pbihzaXplIC1wLCBjaHVua1NpemUpO1xuICAgICAgICAgICAgY29uc3QgYnVmZiA9IGF3YWl0IGZkT2xkLnJlYWQobCk7XG4gICAgICAgICAgICBhd2FpdCBmZE5ldy53cml0ZShidWZmKTtcbiAgICAgICAgfVxuICAgICAgICBhd2FpdCBiaW5GaWxlVXRpbHMuZW5kUmVhZFNlY3Rpb24oZmRPbGQpO1xuXG4gICAgICAgIGlmIChvbGRTZWN0aW9uSWQgPT0gMikge1xuICAgICAgICAgICAgYXdhaXQgcHJvY2Vzc1NlY3Rpb25Qb3dlcihwb3dlcisxKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGF3YWl0IGJpbkZpbGVVdGlscy5lbmRXcml0ZVNlY3Rpb24oZmROZXcpO1xuXG4gICAgICAgIGFzeW5jIGZ1bmN0aW9uIHByb2Nlc3NTZWN0aW9uUG93ZXIocCkge1xuICAgICAgICAgICAgY29uc3QgblBvaW50cyA9IDIgKiogcDtcbiAgICAgICAgICAgIGNvbnN0IEcgPSBjdXJ2ZVtHc3RyXTtcbiAgICAgICAgICAgIGNvbnN0IHNHaW4gPSBHLkYubjgqMjtcblxuICAgICAgICAgICAgbGV0IGJ1ZmY7XG4gICAgICAgICAgICBidWZmID0gbmV3IEJpZ0J1ZmZlcihuUG9pbnRzKnNHaW4pO1xuXG4gICAgICAgICAgICBhd2FpdCBiaW5GaWxlVXRpbHMuc3RhcnRSZWFkVW5pcXVlU2VjdGlvbihmZE9sZCwgc2VjdGlvbnMsIG9sZFNlY3Rpb25JZCk7XG4gICAgICAgICAgICBpZiAoKG9sZFNlY3Rpb25JZCA9PSAyKSYmKHA9PXBvd2VyKzEpKSB7XG4gICAgICAgICAgICAgICAgYXdhaXQgZmRPbGQucmVhZFRvQnVmZmVyKGJ1ZmYsIDAsKG5Qb2ludHMtMSkqc0dpbiApO1xuICAgICAgICAgICAgICAgIGJ1ZmYuc2V0KGN1cnZlLkcxLnplcm9BZmZpbmUsIChuUG9pbnRzLTEpKnNHaW4gKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgYXdhaXQgZmRPbGQucmVhZFRvQnVmZmVyKGJ1ZmYsIDAsblBvaW50cypzR2luICk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBhd2FpdCBiaW5GaWxlVXRpbHMuZW5kUmVhZFNlY3Rpb24oZmRPbGQsIHRydWUpO1xuXG4gICAgICAgICAgICBidWZmID0gYXdhaXQgRy5sYWdyYW5nZUV2YWx1YXRpb25zKGJ1ZmYsIFwiYWZmaW5lXCIsIFwiYWZmaW5lXCIsIGxvZ2dlciwgc2VjdGlvbk5hbWUpO1xuICAgICAgICAgICAgYXdhaXQgZmROZXcud3JpdGUoYnVmZik7XG5cbi8qXG4gICAgICAgICAgICBpZiAocCA8PSBjdXJ2ZS5Gci5zKSB7XG4gICAgICAgICAgICAgICAgYnVmZiA9IGF3YWl0IEcuaWZmdChidWZmLCBcImFmZmluZVwiLCBcImFmZmluZVwiLCBsb2dnZXIsIHNlY3Rpb25OYW1lKTtcbiAgICAgICAgICAgICAgICBhd2FpdCBmZE5ldy53cml0ZShidWZmKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAocCA9PSBjdXJ2ZS5Gci5zKzEpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBzbWFsbE0gPSAxPDxjdXJ2ZS5Gci5zO1xuICAgICAgICAgICAgICAgIGxldCB0MCA9IG5ldyBCaWdCdWZmZXIoIHNtYWxsTSAqIHNHbWlkICk7XG4gICAgICAgICAgICAgICAgbGV0IHQxID0gbmV3IEJpZ0J1ZmZlciggc21hbGxNICogc0dtaWQgKTtcblxuICAgICAgICAgICAgICAgIGNvbnN0IHNoaWZ0X3RvX3NtYWxsX20gPSBGci5leHAoRnIuc2hpZnQsIHNtYWxsTSk7XG4gICAgICAgICAgICAgICAgY29uc3Qgb25lX292ZXJfZGVub20gPSBGci5pbnYoRnIuc3ViKHNoaWZ0X3RvX3NtYWxsX20sIEZyLm9uZSkpO1xuXG4gICAgICAgICAgICAgICAgbGV0IHNJbnZBY2MgPSBGci5vbmU7XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaT0wOyBpPHNtYWxsTTsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpJTEwMDAwKSBsb2dnZXIuZGVidWcoYHNlY3Rpb25OYW1lIHByZXBhcmUgTCBjYWxjOiAke3NlY3Rpb25OYW1lfSwgJHtpfS8ke3NtYWxsTX1gKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdGkgPSAgYnVmZi5zbGljZShpKnNHaW4sIChpKzEpKnNHaW4pO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB0bWkgPSBidWZmLnNsaWNlKChpK3NtYWxsTSkqc0dpbiwgKGkrc21hbGxNKzEpKnNHaW4pO1xuXG4gICAgICAgICAgICAgICAgICAgIHQwLnNldChcbiAgICAgICAgICAgICAgICAgICAgICAgIEcudGltZXNGcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBHLnN1YihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRy50aW1lc0ZyKHRpICwgc2hpZnRfdG9fc21hbGxfbSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtaVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25lX292ZXJfZGVub21cbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICBpKnNHbWlkXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIHQxLnNldChcbiAgICAgICAgICAgICAgICAgICAgICAgIEcudGltZXNGcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBHLnN1YiggdG1pLCB0aSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRnIubXVsKHNJbnZBY2MsIG9uZV9vdmVyX2Rlbm9tKVxuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGkqc0dtaWRcbiAgICAgICAgICAgICAgICAgICAgKTtcblxuXG4gICAgICAgICAgICAgICAgICAgIHNJbnZBY2MgPSBGci5tdWwoc0ludkFjYywgRnIuc2hpZnRJbnYpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0MCA9IGF3YWl0IEcuaWZmdCh0MCwgXCJqYWNvYmlhblwiLCBcImFmZmluZVwiLCBsb2dnZXIsIHNlY3Rpb25OYW1lICsgXCIgdDBcIik7XG4gICAgICAgICAgICAgICAgYXdhaXQgZmROZXcud3JpdGUodDApO1xuICAgICAgICAgICAgICAgIHQwID0gbnVsbDtcbiAgICAgICAgICAgICAgICB0MSA9IGF3YWl0IEcuaWZmdCh0MSwgXCJqYWNvYmlhblwiLCBcImFmZmluZVwiLCBsb2dnZXIsIHNlY3Rpb25OYW1lICsgXCIgdDFcIik7XG4gICAgICAgICAgICAgICAgYXdhaXQgZmROZXcud3JpdGUodDEpO1xuXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5lcnJvcihcIlBvd2VyIHRvbyBiaWdcIik7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiUG93ZXIgdG8gYmlnXCIpO1xuICAgICAgICAgICAgfVxuKi9cbiAgICAgICAgfVxuXG5cbiAgICB9XG59XG5cbiIsIi8qXG4gICAgQ29weXJpZ2h0IDIwMTggMEtJTVMgYXNzb2NpYXRpb24uXG5cbiAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBzbmFya0pTLlxuXG4gICAgc25hcmtKUyBpcyBhIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXRcbiAgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yXG4gICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cblxuICAgIHNuYXJrSlMgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVRcbiAgICBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFlcbiAgICBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWNcbiAgICBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG5cbiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICAgIGFsb25nIHdpdGggc25hcmtKUy4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cbiovXG5cbmltcG9ydCAqIGFzIHV0aWxzIGZyb20gXCIuL3Bvd2Vyc29mdGF1X3V0aWxzLmpzXCI7XG5pbXBvcnQgKiBhcyBiaW5GaWxlVXRpbHMgZnJvbSBcIkBpZGVuMy9iaW5maWxldXRpbHNcIjtcbmltcG9ydCB7IHN0cmluZ2lmeUJpZ0ludHNXaXRoRmllbGQgfSBmcm9tIFwiLi9taXNjLmpzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGFzeW5jIGZ1bmN0aW9uIGV4cG9ydEpzb24ocFRhdUZpbGVuYW1lLCB2ZXJib3NlKSB7XG4gICAgY29uc3Qge2ZkLCBzZWN0aW9uc30gPSBhd2FpdCBiaW5GaWxlVXRpbHMucmVhZEJpbkZpbGUocFRhdUZpbGVuYW1lLCBcInB0YXVcIiwgMSk7XG5cbiAgICBjb25zdCB7Y3VydmUsIHBvd2VyfSA9IGF3YWl0IHV0aWxzLnJlYWRQVGF1SGVhZGVyKGZkLCBzZWN0aW9ucyk7XG5cbiAgICBjb25zdCBwVGF1ID0ge307XG4gICAgcFRhdS5xID0gY3VydmUucTtcbiAgICBwVGF1LnBvd2VyID0gcG93ZXI7XG4gICAgcFRhdS5jb250cmlidXRpb25zID0gYXdhaXQgdXRpbHMucmVhZENvbnRyaWJ1dGlvbnMoZmQsIGN1cnZlLCBzZWN0aW9ucyk7XG5cbiAgICBwVGF1LnRhdUcxID0gYXdhaXQgZXhwb3J0U2VjdGlvbigyLCBcIkcxXCIsICgyICoqIHBvd2VyKSoyIC0xLCBcInRhdUcxXCIpO1xuICAgIHBUYXUudGF1RzIgPSBhd2FpdCBleHBvcnRTZWN0aW9uKDMsIFwiRzJcIiwgKDIgKiogcG93ZXIpLCBcInRhdUcyXCIpO1xuICAgIHBUYXUuYWxwaGFUYXVHMSA9IGF3YWl0IGV4cG9ydFNlY3Rpb24oNCwgXCJHMVwiLCAoMiAqKiBwb3dlciksIFwiYWxwaGFUYXVHMVwiKTtcbiAgICBwVGF1LmJldGFUYXVHMSA9IGF3YWl0IGV4cG9ydFNlY3Rpb24oNSwgXCJHMVwiLCAoMiAqKiBwb3dlciksIFwiYmV0YVRhdUcxXCIpO1xuICAgIHBUYXUuYmV0YUcyID0gYXdhaXQgZXhwb3J0U2VjdGlvbig2LCBcIkcyXCIsIDEsIFwiYmV0YUcyXCIpO1xuXG4gICAgcFRhdS5sVGF1RzEgPSBhd2FpdCBleHBvcnRMYWdyYW5nZSgxMiwgXCJHMVwiLCBcImxUYXVHMVwiKTtcbiAgICBwVGF1LmxUYXVHMiA9IGF3YWl0IGV4cG9ydExhZ3JhbmdlKDEzLCBcIkcyXCIsIFwibFRhdUcyXCIpO1xuICAgIHBUYXUubEFscGhhVGF1RzEgPSBhd2FpdCBleHBvcnRMYWdyYW5nZSgxNCwgXCJHMVwiLCBcImxBbHBoYVRhdUcyXCIpO1xuICAgIHBUYXUubEJldGFUYXVHMSA9IGF3YWl0IGV4cG9ydExhZ3JhbmdlKDE1LCBcIkcxXCIsIFwibEJldGFUYXVHMlwiKTtcblxuICAgIGF3YWl0IGZkLmNsb3NlKCk7XG5cbiAgICByZXR1cm4gc3RyaW5naWZ5QmlnSW50c1dpdGhGaWVsZChjdXJ2ZS5GciwgcFRhdSk7XG5cblxuXG4gICAgYXN5bmMgZnVuY3Rpb24gZXhwb3J0U2VjdGlvbihzZWN0aW9uSWQsIGdyb3VwTmFtZSwgblBvaW50cywgc2VjdGlvbk5hbWUpIHtcbiAgICAgICAgY29uc3QgRyA9IGN1cnZlW2dyb3VwTmFtZV07XG4gICAgICAgIGNvbnN0IHNHID0gRy5GLm44KjI7XG5cbiAgICAgICAgY29uc3QgcmVzID0gW107XG4gICAgICAgIGF3YWl0IGJpbkZpbGVVdGlscy5zdGFydFJlYWRVbmlxdWVTZWN0aW9uKGZkLCBzZWN0aW9ucywgc2VjdGlvbklkKTtcbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPCBuUG9pbnRzOyBpKyspIHtcbiAgICAgICAgICAgIGlmICgodmVyYm9zZSkmJmkmJihpJTEwMDAwID09IDApKSBjb25zb2xlLmxvZyhgJHtzZWN0aW9uTmFtZX06IGAgKyBpKTtcbiAgICAgICAgICAgIGNvbnN0IGJ1ZmYgPSBhd2FpdCBmZC5yZWFkKHNHKTtcbiAgICAgICAgICAgIHJlcy5wdXNoKEcuZnJvbVJwckxFTShidWZmLCAwKSk7XG4gICAgICAgIH1cbiAgICAgICAgYXdhaXQgYmluRmlsZVV0aWxzLmVuZFJlYWRTZWN0aW9uKGZkKTtcblxuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH1cblxuICAgIGFzeW5jIGZ1bmN0aW9uIGV4cG9ydExhZ3JhbmdlKHNlY3Rpb25JZCwgZ3JvdXBOYW1lLCBzZWN0aW9uTmFtZSkge1xuICAgICAgICBjb25zdCBHID0gY3VydmVbZ3JvdXBOYW1lXTtcbiAgICAgICAgY29uc3Qgc0cgPSBHLkYubjgqMjtcblxuICAgICAgICBjb25zdCByZXMgPSBbXTtcbiAgICAgICAgYXdhaXQgYmluRmlsZVV0aWxzLnN0YXJ0UmVhZFVuaXF1ZVNlY3Rpb24oZmQsIHNlY3Rpb25zLCBzZWN0aW9uSWQpO1xuICAgICAgICBmb3IgKGxldCBwPTA7IHA8PXBvd2VyOyBwKyspIHtcbiAgICAgICAgICAgIGlmICh2ZXJib3NlKSBjb25zb2xlLmxvZyhgJHtzZWN0aW9uTmFtZX06IFBvd2VyOiAke3B9YCk7XG4gICAgICAgICAgICByZXNbcF0gPSBbXTtcbiAgICAgICAgICAgIGNvbnN0IG5Qb2ludHMgPSAoMiAqKiBwKTtcbiAgICAgICAgICAgIGZvciAobGV0IGk9MDsgaTxuUG9pbnRzOyBpKyspIHtcbiAgICAgICAgICAgICAgICBpZiAoKHZlcmJvc2UpJiZpJiYoaSUxMDAwMCA9PSAwKSkgY29uc29sZS5sb2coYCR7c2VjdGlvbk5hbWV9OiAke2l9LyR7blBvaW50c31gKTtcbiAgICAgICAgICAgICAgICBjb25zdCBidWZmID0gYXdhaXQgZmQucmVhZChzRyk7XG4gICAgICAgICAgICAgICAgcmVzW3BdLnB1c2goRy5mcm9tUnByTEVNKGJ1ZmYsIDApKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBhd2FpdCBiaW5GaWxlVXRpbHMuZW5kUmVhZFNlY3Rpb24oZmQsIHRydWUpO1xuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH1cblxuXG59XG5cblxuIiwiLypcbiAgICBDb3B5cmlnaHQgMjAxOCAwS0lNUyBhc3NvY2lhdGlvbi5cblxuICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHNuYXJrSlMuXG5cbiAgICBzbmFya0pTIGlzIGEgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdFxuICAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3JcbiAgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuXG4gICAgc25hcmtKUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVFxuICAgIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWVxuICAgIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpY1xuICAgIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cblxuICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gICAgYWxvbmcgd2l0aCBzbmFya0pTLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuKi9cblxuZXhwb3J0IHtkZWZhdWx0IGFzIG5ld0FjY3VtdWxhdG9yfSBmcm9tIFwiLi9wb3dlcnNvZnRhdV9uZXcuanNcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBleHBvcnRDaGFsbGVuZ2V9IGZyb20gXCIuL3Bvd2Vyc29mdGF1X2V4cG9ydF9jaGFsbGVuZ2UuanNcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBpbXBvcnRSZXNwb25zZX0gZnJvbSBcIi4vcG93ZXJzb2Z0YXVfaW1wb3J0LmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgdmVyaWZ5fSBmcm9tIFwiLi9wb3dlcnNvZnRhdV92ZXJpZnkuanNcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBjaGFsbGVuZ2VDb250cmlidXRlfSBmcm9tIFwiLi9wb3dlcnNvZnRhdV9jaGFsbGVuZ2VfY29udHJpYnV0ZS5qc1wiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIGJlYWNvbn0gZnJvbSBcIi4vcG93ZXJzb2Z0YXVfYmVhY29uLmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgY29udHJpYnV0ZX0gZnJvbSBcIi4vcG93ZXJzb2Z0YXVfY29udHJpYnV0ZS5qc1wiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIHByZXBhcmVQaGFzZTJ9IGZyb20gXCIuL3Bvd2Vyc29mdGF1X3ByZXBhcmVwaGFzZTIuanNcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyB0cnVuY2F0ZX0gZnJvbSBcIi4vcG93ZXJzb2Z0YXVfdHJ1bmNhdGUuanNcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBjb252ZXJ0fSBmcm9tIFwiLi9wb3dlcnNvZnRhdV9jb252ZXJ0LmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgZXhwb3J0SnNvbn0gZnJvbSBcIi4vcG93ZXJzb2Z0YXVfZXhwb3J0X2pzb24uanNcIjtcbiIsIi8qXG4gICAgQ29weXJpZ2h0IDIwMTggMEtJTVMgYXNzb2NpYXRpb24uXG5cbiAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBzbmFya0pTLlxuXG4gICAgc25hcmtKUyBpcyBhIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXRcbiAgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yXG4gICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cblxuICAgIHNuYXJrSlMgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVRcbiAgICBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFlcbiAgICBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWNcbiAgICBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG5cbiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICAgIGFsb25nIHdpdGggc25hcmtKUy4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cbiovXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHIxY3NQcmludChyMWNzLCBzeW1zLCBsb2dnZXIpIHtcbiAgICBmb3IgKGxldCBpPTA7IGk8cjFjcy5jb25zdHJhaW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgICBwcmludENvc3RyYWludChyMWNzLmNvbnN0cmFpbnRzW2ldKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gcHJpbnRDb3N0cmFpbnQoYykge1xuICAgICAgICBjb25zdCBsYzJzdHIgPSAobGMpID0+IHtcbiAgICAgICAgICAgIGxldCBTID0gXCJcIjtcbiAgICAgICAgICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhsYyk7XG4gICAgICAgICAgICBrZXlzLmZvckVhY2goIChrKSA9PiB7XG4gICAgICAgICAgICAgICAgbGV0IG5hbWUgPSBzeW1zLnZhcklkeDJOYW1lW2tdO1xuICAgICAgICAgICAgICAgIGlmIChuYW1lID09IFwib25lXCIpIG5hbWUgPSBcIjFcIjtcblxuICAgICAgICAgICAgICAgIGxldCB2cyA9IHIxY3MuY3VydmUuRnIudG9TdHJpbmcobGNba10pO1xuICAgICAgICAgICAgICAgIGlmICh2cyA9PSBcIjFcIikgdnMgPSBcIlwiOyAgLy8gRG8gbm90IHNob3cgb25lc1xuICAgICAgICAgICAgICAgIGlmICh2cyA9PSBcIi0xXCIpIHZzID0gXCItXCI7ICAvLyBEbyBub3Qgc2hvdyBvbmVzXG4gICAgICAgICAgICAgICAgaWYgKChTIT1cIlwiKSYmKHZzWzBdIT1cIi1cIikpIHZzID0gXCIrXCIrdnM7XG4gICAgICAgICAgICAgICAgaWYgKFMhPVwiXCIpIHZzID0gXCIgXCIrdnM7XG4gICAgICAgICAgICAgICAgUz0gUyArIHZzICAgKyBuYW1lO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm4gUztcbiAgICAgICAgfTtcbiAgICAgICAgY29uc3QgUyA9IGBbICR7bGMyc3RyKGNbMF0pfSBdICogWyAke2xjMnN0cihjWzFdKX0gXSAtIFsgJHtsYzJzdHIoY1syXSl9IF0gPSAwYDtcbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oUyk7XG4gICAgfVxuXG59XG4iLCJjb25zdCBTVUJBUlJBWV9TSVpFID0gMHg0MDAwMDtcblxuY29uc3QgQmlnQXJyYXlIYW5kbGVyID0ge1xuICAgIGdldDogZnVuY3Rpb24ob2JqLCBwcm9wKSB7XG4gICAgICAgIGlmICghaXNOYU4ocHJvcCkpIHtcbiAgICAgICAgICAgIHJldHVybiBvYmouZ2V0RWxlbWVudChwcm9wKTtcbiAgICAgICAgfSBlbHNlIHJldHVybiBvYmpbcHJvcF07XG4gICAgfSxcbiAgICBzZXQ6IGZ1bmN0aW9uKG9iaiwgcHJvcCwgdmFsdWUpIHtcbiAgICAgICAgaWYgKCFpc05hTihwcm9wKSkge1xuICAgICAgICAgICAgcmV0dXJuIG9iai5zZXRFbGVtZW50KHByb3AsIHZhbHVlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG9ialtwcm9wXSA9IHZhbHVlO1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICB9XG59O1xuXG5jbGFzcyBfQmlnQXJyYXkge1xuICAgIGNvbnN0cnVjdG9yIChpbml0U2l6ZSkge1xuICAgICAgICB0aGlzLmxlbmd0aCA9IGluaXRTaXplIHx8IDA7XG4gICAgICAgIHRoaXMuYXJyID0gbmV3IEFycmF5KFNVQkFSUkFZX1NJWkUpO1xuXG4gICAgICAgIGZvciAobGV0IGk9MDsgaTxpbml0U2l6ZTsgaSs9U1VCQVJSQVlfU0laRSkge1xuICAgICAgICAgICAgdGhpcy5hcnJbaS9TVUJBUlJBWV9TSVpFXSA9IG5ldyBBcnJheShNYXRoLm1pbihTVUJBUlJBWV9TSVpFLCBpbml0U2l6ZSAtIGkpKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gICAgcHVzaCAoKSB7XG4gICAgICAgIGZvciAobGV0IGk9MDsgaTxhcmd1bWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIHRoaXMuc2V0RWxlbWVudCAodGhpcy5sZW5ndGgsIGFyZ3VtZW50c1tpXSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzbGljZSAoZiwgdCkge1xuICAgICAgICBjb25zdCBhcnIgPSBuZXcgQXJyYXkodC1mKTtcbiAgICAgICAgZm9yIChsZXQgaT1mOyBpPCB0OyBpKyspIGFycltpLWZdID0gdGhpcy5nZXRFbGVtZW50KGkpO1xuICAgICAgICByZXR1cm4gYXJyO1xuICAgIH1cbiAgICBnZXRFbGVtZW50KGlkeCkge1xuICAgICAgICBpZHggPSBwYXJzZUludChpZHgpO1xuICAgICAgICBjb25zdCBpZHgxID0gTWF0aC5mbG9vcihpZHggLyBTVUJBUlJBWV9TSVpFKTtcbiAgICAgICAgY29uc3QgaWR4MiA9IGlkeCAlIFNVQkFSUkFZX1NJWkU7XG4gICAgICAgIHJldHVybiB0aGlzLmFycltpZHgxXSA/IHRoaXMuYXJyW2lkeDFdW2lkeDJdIDogdW5kZWZpbmVkO1xuICAgIH1cbiAgICBzZXRFbGVtZW50KGlkeCwgdmFsdWUpIHtcbiAgICAgICAgaWR4ID0gcGFyc2VJbnQoaWR4KTtcbiAgICAgICAgY29uc3QgaWR4MSA9IE1hdGguZmxvb3IoaWR4IC8gU1VCQVJSQVlfU0laRSk7XG4gICAgICAgIGlmICghdGhpcy5hcnJbaWR4MV0pIHtcbiAgICAgICAgICAgIHRoaXMuYXJyW2lkeDFdID0gbmV3IEFycmF5KFNVQkFSUkFZX1NJWkUpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGlkeDIgPSBpZHggJSBTVUJBUlJBWV9TSVpFO1xuICAgICAgICB0aGlzLmFycltpZHgxXVtpZHgyXSA9IHZhbHVlO1xuICAgICAgICBpZiAoaWR4ID49IHRoaXMubGVuZ3RoKSB0aGlzLmxlbmd0aCA9IGlkeCsxO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgZ2V0S2V5cygpIHtcbiAgICAgICAgY29uc3QgbmV3QSA9IG5ldyBCaWdBcnJheSgpO1xuICAgICAgICBmb3IgKGxldCBpPTA7IGk8dGhpcy5hcnIubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmFycltpXSkge1xuICAgICAgICAgICAgICAgIGZvciAobGV0IGo9MDsgajx0aGlzLmFycltpXS5sZW5ndGg7IGorKykge1xuICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHRoaXMuYXJyW2ldW2pdICE9PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBuZXdBLnB1c2goaSpTVUJBUlJBWV9TSVpFK2opO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBuZXdBO1xuICAgIH1cbn1cblxuY2xhc3MgQmlnQXJyYXkge1xuICAgIGNvbnN0cnVjdG9yKCBpbml0U2l6ZSApIHtcbiAgICAgICAgY29uc3Qgb2JqID0gbmV3IF9CaWdBcnJheShpbml0U2l6ZSk7XG4gICAgICAgIGNvbnN0IGV4dE9iaiA9IG5ldyBQcm94eShvYmosIEJpZ0FycmF5SGFuZGxlcik7XG4gICAgICAgIHJldHVybiBleHRPYmo7XG4gICAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBCaWdBcnJheTtcbiIsImltcG9ydCB7RjFGaWVsZCwgZ2V0Q3VydmVGcm9tUn0gZnJvbSBcImZmamF2YXNjcmlwdFwiO1xuaW1wb3J0ICBCaWdBcnJheSBmcm9tIFwiQGlkZW4zL2JpZ2FycmF5XCI7XG5pbXBvcnQgKiBhcyBiaW5GaWxlVXRpbHMgZnJvbSBcIkBpZGVuMy9iaW5maWxldXRpbHNcIjtcblxuZXhwb3J0IGNvbnN0IFIxQ1NfRklMRV9IRUFERVJfU0VDVElPTiA9IDE7XG5leHBvcnQgY29uc3QgUjFDU19GSUxFX0NPTlNUUkFJTlRTX1NFQ1RJT04gPSAyO1xuZXhwb3J0IGNvbnN0IFIxQ1NfRklMRV9XSVJFMkxBQkVMSURfU0VDVElPTiA9IDM7XG5leHBvcnQgY29uc3QgUjFDU19GSUxFX0NVU1RPTV9HQVRFU19MSVNUX1NFQ1RJT04gPSA0O1xuZXhwb3J0IGNvbnN0IFIxQ1NfRklMRV9DVVNUT01fR0FURVNfVVNFU19TRUNUSU9OID0gNTtcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlYWRSMWNzSGVhZGVyKGZkLHNlY3Rpb25zLHNpbmdsZVRocmVhZCkge1xuICAgIGxldCBvcHRpb25zO1xuICAgIGlmICh0eXBlb2Ygc2luZ2xlVGhyZWFkID09PSBcIm9iamVjdFwiKSB7XG4gICAgICAgIG9wdGlvbnMgPSBzaW5nbGVUaHJlYWQ7XG4gICAgfSBlbHNlIGlmICh0eXBlb2Ygc2luZ2xlVGhyZWFkID09PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgICAgIG9wdGlvbnM9IHtcbiAgICAgICAgICAgIHNpbmdsZVRocmVhZDogZmFsc2UsXG4gICAgICAgIH07XG4gICAgfSBlbHNlIHtcbiAgICAgICAgb3B0aW9ucyA9IHtcbiAgICAgICAgICAgIHNpbmdsZVRocmVhZDogc2luZ2xlVGhyZWFkLFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIGNvbnN0IHJlcyA9IHt9O1xuICAgIGF3YWl0IGJpbkZpbGVVdGlscy5zdGFydFJlYWRVbmlxdWVTZWN0aW9uKGZkLCBzZWN0aW9ucywgMSk7XG4gICAgLy8gUmVhZCBIZWFkZXJcbiAgICByZXMubjggPSBhd2FpdCBmZC5yZWFkVUxFMzIoKTtcbiAgICByZXMucHJpbWUgPSBhd2FpdCBiaW5GaWxlVXRpbHMucmVhZEJpZ0ludChmZCwgcmVzLm44KTtcblxuICAgIGlmIChvcHRpb25zLkYpIHtcbiAgICAgICAgaWYgKG9wdGlvbnMuRi5wICE9IHJlcy5wcmltZSkgdGhyb3cgbmV3IEVycm9yKFwiRGlmZmVyZW50IFByaW1lXCIpO1xuICAgICAgICByZXMuRiA9IG9wdGlvbnMuRjtcbiAgICB9IGVsc2UgaWYgKG9wdGlvbnMuZ2V0RmllbGRGcm9tUHJpbWUpIHtcbiAgICAgICAgcmVzLkYgPSBhd2FpdCBvcHRpb25zLmdldEZpZWxkRnJvbVByaW1lKHJlcy5wcmltZSwgb3B0aW9ucy5zaW5nbGVUaHJlYWQpO1xuICAgIH0gZWxzZSBpZiAob3B0aW9ucy5nZXRDdXJ2ZUZyb21QcmltZSkge1xuICAgICAgICByZXMuY3VydmUgPSBhd2FpdCBvcHRpb25zLmdldEN1cnZlRnJvbVByaW1lKHJlcy5wcmltZSwgb3B0aW9ucy5zaW5nbGVUaHJlYWQpO1xuICAgICAgICByZXMuRiA9IHJlcy5jdXJ2ZS5GcjtcbiAgICB9IGVsc2Uge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgcmVzLmN1cnZlID0gYXdhaXQgZ2V0Q3VydmVGcm9tUihyZXMucHJpbWUsIG9wdGlvbnMuc2luZ2xlVGhyZWFkKTtcbiAgICAgICAgICAgIHJlcy5GID0gcmVzLmN1cnZlLkZyO1xuICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgIHJlcy5GID0gbmV3IEYxRmllbGQocmVzLnByaW1lKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJlcy5uVmFycyA9IGF3YWl0IGZkLnJlYWRVTEUzMigpO1xuICAgIHJlcy5uT3V0cHV0cyA9IGF3YWl0IGZkLnJlYWRVTEUzMigpO1xuICAgIHJlcy5uUHViSW5wdXRzID0gYXdhaXQgZmQucmVhZFVMRTMyKCk7XG4gICAgcmVzLm5QcnZJbnB1dHMgPSBhd2FpdCBmZC5yZWFkVUxFMzIoKTtcbiAgICByZXMubkxhYmVscyA9IGF3YWl0IGZkLnJlYWRVTEU2NCgpO1xuICAgIHJlcy5uQ29uc3RyYWludHMgPSBhd2FpdCBmZC5yZWFkVUxFMzIoKTtcbiAgICByZXMudXNlQ3VzdG9tR2F0ZXMgPSB0eXBlb2Ygc2VjdGlvbnNbUjFDU19GSUxFX0NVU1RPTV9HQVRFU19MSVNUX1NFQ1RJT05dICE9PSBcInVuZGVmaW5lZFwiICYmIHNlY3Rpb25zW1IxQ1NfRklMRV9DVVNUT01fR0FURVNfTElTVF9TRUNUSU9OXSAhPT0gbnVsbFxuICAgICAgICAmJiB0eXBlb2Ygc2VjdGlvbnNbUjFDU19GSUxFX0NVU1RPTV9HQVRFU19VU0VTX1NFQ1RJT05dICE9PSBcInVuZGVmaW5lZFwiICYmIHNlY3Rpb25zW1IxQ1NfRklMRV9DVVNUT01fR0FURVNfVVNFU19TRUNUSU9OXSAhPT0gbnVsbDtcblxuICAgIGF3YWl0IGJpbkZpbGVVdGlscy5lbmRSZWFkU2VjdGlvbihmZCk7XG5cbiAgICByZXR1cm4gcmVzO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVhZENvbnN0cmFpbnRzKGZkLHNlY3Rpb25zLCByMWNzLCBsb2dnZXIsIGxvZ2dlckN0eCkge1xuICAgIGxldCBvcHRpb25zO1xuICAgIGlmICh0eXBlb2YgbG9nZ2VyID09PSBcIm9iamVjdFwiKSB7XG4gICAgICAgIG9wdGlvbnMgPSBsb2dnZXI7XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgbG9nZ2VyID09PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgICAgIG9wdGlvbnM9IHt9O1xuICAgIH0gZWxzZSB7XG4gICAgICAgIG9wdGlvbnMgPSB7XG4gICAgICAgICAgICBsb2dnZXI6IGxvZ2dlcixcbiAgICAgICAgICAgIGxvZ2dlckN0eDogbG9nZ2VyQ3R4LFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIGNvbnN0IGJSMWNzID0gYXdhaXQgYmluRmlsZVV0aWxzLnJlYWRTZWN0aW9uKGZkLCBzZWN0aW9ucywgMik7XG4gICAgbGV0IGJSMWNzUG9zID0gMDtcbiAgICBsZXQgY29uc3RyYWludHM7XG4gICAgaWYgKHIxY3MubkNvbnN0cmFpbnRzPjE8PDIwKSB7XG4gICAgICAgIGNvbnN0cmFpbnRzID0gbmV3IEJpZ0FycmF5KCk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3RyYWludHMgPSBbXTtcbiAgICB9XG4gICAgZm9yIChsZXQgaT0wOyBpPHIxY3MubkNvbnN0cmFpbnRzOyBpKyspIHtcbiAgICAgICAgaWYgKChvcHRpb25zLmxvZ2dlcikmJihpJTEwMDAwMCA9PSAwKSkgb3B0aW9ucy5sb2dnZXIuaW5mbyhgJHtvcHRpb25zLmxvZ2dlckN0eH06IExvYWRpbmcgY29uc3RyYWludHM6ICR7aX0vJHtyMWNzLm5Db25zdHJhaW50c31gKTtcbiAgICAgICAgY29uc3QgYyA9IHJlYWRDb25zdHJhaW50KCk7XG4gICAgICAgIGNvbnN0cmFpbnRzLnB1c2goYyk7XG4gICAgfVxuICAgIHJldHVybiBjb25zdHJhaW50cztcblxuXG4gICAgZnVuY3Rpb24gcmVhZENvbnN0cmFpbnQoKSB7XG4gICAgICAgIGNvbnN0IGMgPSBbXTtcbiAgICAgICAgY1swXSA9IHJlYWRMQygpO1xuICAgICAgICBjWzFdID0gcmVhZExDKCk7XG4gICAgICAgIGNbMl0gPSByZWFkTEMoKTtcbiAgICAgICAgcmV0dXJuIGM7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcmVhZExDKCkge1xuICAgICAgICBjb25zdCBsYz0ge307XG5cbiAgICAgICAgY29uc3QgYnVmZlVMMzIgPSBiUjFjcy5zbGljZShiUjFjc1BvcywgYlIxY3NQb3MrNCk7XG4gICAgICAgIGJSMWNzUG9zICs9IDQ7XG4gICAgICAgIGNvbnN0IGJ1ZmZVTDMyViA9IG5ldyBEYXRhVmlldyhidWZmVUwzMi5idWZmZXIpO1xuICAgICAgICBjb25zdCBuSWR4ID0gYnVmZlVMMzJWLmdldFVpbnQzMigwLCB0cnVlKTtcblxuICAgICAgICBjb25zdCBidWZmID0gYlIxY3Muc2xpY2UoYlIxY3NQb3MsIGJSMWNzUG9zICsgKDQrcjFjcy5uOCkqbklkeCApO1xuICAgICAgICBiUjFjc1BvcyArPSAoNCtyMWNzLm44KSpuSWR4O1xuICAgICAgICBjb25zdCBidWZmViA9IG5ldyBEYXRhVmlldyhidWZmLmJ1ZmZlcik7XG4gICAgICAgIGZvciAobGV0IGk9MDsgaTxuSWR4OyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IGlkeCA9IGJ1ZmZWLmdldFVpbnQzMihpKig0K3IxY3MubjgpLCB0cnVlKTtcbiAgICAgICAgICAgIGNvbnN0IHZhbCA9IHIxY3MuRi5mcm9tUnByTEUoYnVmZiwgaSooNCtyMWNzLm44KSs0KTtcbiAgICAgICAgICAgIGxjW2lkeF0gPSB2YWw7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGxjO1xuICAgIH1cbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlYWRNYXAoZmQsIHNlY3Rpb25zLCByMWNzLCBsb2dnZXIsIGxvZ2dlckN0eCkge1xuICAgIGxldCBvcHRpb25zO1xuICAgIGlmICh0eXBlb2YgbG9nZ2VyID09PSBcIm9iamVjdFwiKSB7XG4gICAgICAgIG9wdGlvbnMgPSBsb2dnZXI7XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgbG9nZ2VyID09PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgICAgIG9wdGlvbnM9IHt9O1xuICAgIH0gZWxzZSB7XG4gICAgICAgIG9wdGlvbnMgPSB7XG4gICAgICAgICAgICBsb2dnZXI6IGxvZ2dlcixcbiAgICAgICAgICAgIGxvZ2dlckN0eDogbG9nZ2VyQ3R4LFxuICAgICAgICB9O1xuICAgIH1cbiAgICBjb25zdCBiTWFwID0gYXdhaXQgYmluRmlsZVV0aWxzLnJlYWRTZWN0aW9uKGZkLCBzZWN0aW9ucywgMyk7XG4gICAgbGV0IGJNYXBQb3MgPSAwO1xuICAgIGxldCBtYXA7XG5cbiAgICBpZiAocjFjcy5uVmFycz4xPDwyMCkge1xuICAgICAgICBtYXAgPSBuZXcgQmlnQXJyYXkoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBtYXAgPSBbXTtcbiAgICB9XG4gICAgZm9yIChsZXQgaT0wOyBpPHIxY3MublZhcnM7IGkrKykge1xuICAgICAgICBpZiAoKG9wdGlvbnMubG9nZ2VyKSYmKGklMTAwMDAgPT0gMCkpIG9wdGlvbnMubG9nZ2VyLmluZm8oYCR7b3B0aW9ucy5sb2dnZXJDdHh9OiBMb2FkaW5nIG1hcDogJHtpfS8ke3IxY3MublZhcnN9YCk7XG4gICAgICAgIGNvbnN0IGlkeCA9IHJlYWRVTEU2NCgpO1xuICAgICAgICBtYXAucHVzaChpZHgpO1xuICAgIH1cblxuICAgIHJldHVybiBtYXA7XG5cbiAgICBmdW5jdGlvbiByZWFkVUxFNjQoKSB7XG4gICAgICAgIGNvbnN0IGJ1ZmZVTEU2NCA9IGJNYXAuc2xpY2UoYk1hcFBvcywgYk1hcFBvcys4KTtcbiAgICAgICAgYk1hcFBvcyArPSA4O1xuICAgICAgICBjb25zdCBidWZmVUxFNjRWID0gbmV3IERhdGFWaWV3KGJ1ZmZVTEU2NC5idWZmZXIpO1xuICAgICAgICBjb25zdCBMU0IgPSBidWZmVUxFNjRWLmdldFVpbnQzMigwLCB0cnVlKTtcbiAgICAgICAgY29uc3QgTVNCID0gYnVmZlVMRTY0Vi5nZXRVaW50MzIoNCwgdHJ1ZSk7XG5cbiAgICAgICAgcmV0dXJuIE1TQiAqIDB4MTAwMDAwMDAwICsgTFNCO1xuICAgIH1cblxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVhZFIxY3NGZChmZCwgc2VjdGlvbnMsIG9wdGlvbnMpIHtcbiAgICAvKipcbiAgICAgKiBPcHRpb25zIHByb3BlcnRpZXM6XG4gICAgICogIGxvYWRDb25zdHJhaW50czogPGJvb2w+IHRydWUgYnkgZGVmYXVsdFxuICAgICAqICBsb2FkTWFwOiAgICAgICAgIDxib29sPiBmYWxzZSBieSBkZWZhdWx0XG4gICAgICogIGxvYWRDdXN0b21HYXRlczogPGJvb2w+IHRydWUgYnkgZGVmYXVsdFxuICAgICAqL1xuXG4gICAgaWYodHlwZW9mIG9wdGlvbnMgIT09IFwib2JqZWN0XCIpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwicmVhZFIxY3NGZDogb3B0aW9ucyBtdXN0IGJlIGFuIG9iamVjdFwiKTtcbiAgICB9XG5cbiAgICBvcHRpb25zLmxvYWRDb25zdHJhaW50cyA9IFwibG9hZENvbnN0cmFpbnRzXCIgaW4gb3B0aW9ucyA/IG9wdGlvbnMubG9hZENvbnN0cmFpbnRzIDogdHJ1ZTtcbiAgICBvcHRpb25zLmxvYWRNYXAgPSBcImxvYWRNYXBcIiBpbiBvcHRpb25zID8gb3B0aW9ucy5sb2FkTWFwIDogZmFsc2U7XG4gICAgb3B0aW9ucy5sb2FkQ3VzdG9tR2F0ZXMgPSBcImxvYWRDdXN0b21HYXRlc1wiIGluIG9wdGlvbnMgPyBvcHRpb25zLmxvYWRDdXN0b21HYXRlcyA6IHRydWU7XG5cbiAgICBjb25zdCByZXMgPSBhd2FpdCByZWFkUjFjc0hlYWRlcihmZCwgc2VjdGlvbnMsIG9wdGlvbnMpO1xuXG4gICAgaWYgKG9wdGlvbnMubG9hZENvbnN0cmFpbnRzKSB7XG4gICAgICAgIHJlcy5jb25zdHJhaW50cyA9IGF3YWl0IHJlYWRDb25zdHJhaW50cyhmZCwgc2VjdGlvbnMsIHJlcywgb3B0aW9ucyk7XG4gICAgfVxuXG4gICAgLy8gUmVhZCBMYWJlbHNcblxuICAgIGlmIChvcHRpb25zLmxvYWRNYXApIHtcbiAgICAgICAgcmVzLm1hcCA9IGF3YWl0IHJlYWRNYXAoZmQsIHNlY3Rpb25zLCByZXMsIG9wdGlvbnMpO1xuICAgIH1cblxuICAgIGlmIChvcHRpb25zLmxvYWRDdXN0b21HYXRlcykge1xuICAgICAgICBpZiAocmVzLnVzZUN1c3RvbUdhdGVzKSB7XG4gICAgICAgICAgICByZXMuY3VzdG9tR2F0ZXMgPSBhd2FpdCByZWFkQ3VzdG9tR2F0ZXNMaXN0U2VjdGlvbihmZCwgc2VjdGlvbnMsIHJlcyk7XG4gICAgICAgICAgICByZXMuY3VzdG9tR2F0ZXNVc2VzID0gYXdhaXQgcmVhZEN1c3RvbUdhdGVzVXNlc1NlY3Rpb24oZmQsIHNlY3Rpb25zLCBvcHRpb25zKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJlcy5jdXN0b21HYXRlcyA9IFtdO1xuICAgICAgICAgICAgcmVzLmN1c3RvbUdhdGVzVXNlcyA9IFtdO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXM7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZWFkUjFjcyhmaWxlTmFtZSwgbG9hZENvbnN0cmFpbnRzLCBsb2FkTWFwLCBzaW5nbGVUaHJlYWQsIGxvZ2dlciwgbG9nZ2VyQ3R4KSB7XG4gICAgbGV0IG9wdGlvbnM7XG4gICAgaWYgKHR5cGVvZiBsb2FkQ29uc3RyYWludHMgPT09IFwib2JqZWN0XCIpIHtcbiAgICAgICAgb3B0aW9ucyA9IGxvYWRDb25zdHJhaW50cztcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBsb2FkQ29uc3RyYWludHMgPT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgICAgb3B0aW9ucz0ge1xuICAgICAgICAgICAgbG9hZENvbnN0cmFpbnRzOiB0cnVlLFxuICAgICAgICAgICAgbG9hZE1hcDogZmFsc2UsXG4gICAgICAgICAgICBsb2FkQ3VzdG9tR2F0ZXM6IHRydWVcbiAgICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBvcHRpb25zID0ge1xuICAgICAgICAgICAgbG9hZENvbnN0cmFpbnRzOiBsb2FkQ29uc3RyYWludHMsXG4gICAgICAgICAgICBsb2FkTWFwOiBsb2FkTWFwLFxuICAgICAgICAgICAgc2luZ2xlVGhyZWFkOiBzaW5nbGVUaHJlYWQsXG4gICAgICAgICAgICBsb2dnZXI6IGxvZ2dlcixcbiAgICAgICAgICAgIGxvZ2dlckN0eDogbG9nZ2VyQ3R4XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgY29uc3Qge2ZkLCBzZWN0aW9uc30gPSBhd2FpdCBiaW5GaWxlVXRpbHMucmVhZEJpbkZpbGUoZmlsZU5hbWUsIFwicjFjc1wiLCAxLCAxPDwyNSwgMTw8MjIpO1xuXG4gICAgY29uc3QgcmVzID0gYXdhaXQgcmVhZFIxY3NGZChmZCwgc2VjdGlvbnMsIG9wdGlvbnMpO1xuXG4gICAgYXdhaXQgZmQuY2xvc2UoKTtcblxuICAgIHJldHVybiByZXM7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZWFkQ3VzdG9tR2F0ZXNMaXN0U2VjdGlvbihmZCwgc2VjdGlvbnMsIHJlcykge1xuICAgIGF3YWl0IGJpbkZpbGVVdGlscy5zdGFydFJlYWRVbmlxdWVTZWN0aW9uKGZkLCBzZWN0aW9ucywgUjFDU19GSUxFX0NVU1RPTV9HQVRFU19MSVNUX1NFQ1RJT04pO1xuXG4gICAgbGV0IG51bSA9IGF3YWl0IGZkLnJlYWRVTEUzMigpO1xuXG4gICAgbGV0IGN1c3RvbUdhdGVzID0gW107XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBudW07IGkrKykge1xuICAgICAgICBsZXQgY3VzdG9tR2F0ZSA9IHt9O1xuICAgICAgICBjdXN0b21HYXRlLnRlbXBsYXRlTmFtZSA9IGF3YWl0IGZkLnJlYWRTdHJpbmcoKTtcbiAgICAgICAgbGV0IG51bVBhcmFtZXRlcnMgPSBhd2FpdCBmZC5yZWFkVUxFMzIoKTtcblxuICAgICAgICBjdXN0b21HYXRlLnBhcmFtZXRlcnMgPSBBcnJheShudW1QYXJhbWV0ZXJzKTtcbiAgICAgICAgbGV0IGJ1ZmYgPSBhd2FpdCBmZC5yZWFkKHJlcy5uOCAqIG51bVBhcmFtZXRlcnMpO1xuXG4gICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgbnVtUGFyYW1ldGVyczsgaisrKSB7XG4gICAgICAgICAgICBjdXN0b21HYXRlLnBhcmFtZXRlcnNbal0gPSByZXMuRi5mcm9tUnByTEUoYnVmZiwgaiAqIHJlcy5uOCwgcmVzLm44KTs7XG4gICAgICAgIH1cbiAgICAgICAgY3VzdG9tR2F0ZXMucHVzaChjdXN0b21HYXRlKTtcbiAgICB9XG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLmVuZFJlYWRTZWN0aW9uKGZkKTtcblxuICAgIHJldHVybiBjdXN0b21HYXRlcztcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlYWRDdXN0b21HYXRlc1VzZXNTZWN0aW9uKGZkLHNlY3Rpb25zLCBvcHRpb25zKSB7XG4gICAgY29uc3QgYlIxY3MgPSBhd2FpdCBiaW5GaWxlVXRpbHMucmVhZFNlY3Rpb24oZmQsIHNlY3Rpb25zLCBSMUNTX0ZJTEVfQ1VTVE9NX0dBVEVTX1VTRVNfU0VDVElPTik7XG4gICAgY29uc3QgYlIxY3MzMiA9IG5ldyBVaW50MzJBcnJheShiUjFjcy5idWZmZXIsIGJSMWNzLmJ5dGVPZmZzZXQsIGJSMWNzLmJ5dGVMZW5ndGgvNCk7XG4gICAgY29uc3QgbkN1c3RvbUdhdGVVc2VzID0gYlIxY3MzMlswXTtcbiAgICBsZXQgYlIxY3NQb3MgPSAxO1xuICAgIGxldCBjdXN0b21HYXRlc1VzZXM7XG4gICAgaWYgKG5DdXN0b21HYXRlVXNlcz4xPDwyMCkge1xuICAgICAgICBjdXN0b21HYXRlc1VzZXMgPSBuZXcgQmlnQXJyYXkoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBjdXN0b21HYXRlc1VzZXMgPSBbXTtcbiAgICB9XG4gICAgZm9yIChsZXQgaT0wOyBpPG5DdXN0b21HYXRlVXNlczsgaSsrKSB7XG4gICAgICAgIGlmICgob3B0aW9ucy5sb2dnZXIpJiYoaSUxMDAwMDAgPT0gMCkpIG9wdGlvbnMubG9nZ2VyLmluZm8oYCR7b3B0aW9ucy5sb2dnZXJDdHh9OiBMb2FkaW5nIGN1c3RvbSBnYXRlIHVzZXM6ICR7aX0vJHtuQ3VzdG9tR2F0ZVVzZXN9YCk7XG4gICAgICAgIGxldCBjID0ge307XG4gICAgICAgIGMuaWQgPSBiUjFjczMyW2JSMWNzUG9zKytdO1xuICAgICAgICBsZXQgbnVtU2lnbmFscyA9IGJSMWNzMzJbYlIxY3NQb3MrK107XG4gICAgICAgIGMuc2lnbmFscyA9IFtdO1xuICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IG51bVNpZ25hbHM7IGorKykge1xuICAgICAgICAgICAgY29uc3QgTFNCID0gYlIxY3MzMltiUjFjc1BvcysrXTtcbiAgICAgICAgICAgIGNvbnN0IE1TQiA9IGJSMWNzMzJbYlIxY3NQb3MrK107XG4gICAgICAgICAgICBjLnNpZ25hbHMucHVzaChNU0IgKiAweDEwMDAwMDAwMCArIExTQik7XG4gICAgICAgIH1cbiAgICAgICAgY3VzdG9tR2F0ZXNVc2VzLnB1c2goYyk7XG4gICAgfVxuICAgIHJldHVybiBjdXN0b21HYXRlc1VzZXM7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB3cml0ZVIxY3NIZWFkZXIoZmQsIGNpcikge1xuICAgIGF3YWl0IGJpbkZpbGVVdGlscy5zdGFydFdyaXRlU2VjdGlvbihmZCwgMSk7XG4gICAgYXdhaXQgZmQud3JpdGVVTEUzMihjaXIubjgpOyAvLyBUZW1wb3JhbGx5IHNldCB0byAwIGxlbmd0aFxuICAgIGF3YWl0IGJpbkZpbGVVdGlscy53cml0ZUJpZ0ludChmZCwgY2lyLnByaW1lLCBjaXIubjgpO1xuXG4gICAgYXdhaXQgZmQud3JpdGVVTEUzMihjaXIublZhcnMpO1xuICAgIGF3YWl0IGZkLndyaXRlVUxFMzIoY2lyLm5PdXRwdXRzKTtcbiAgICBhd2FpdCBmZC53cml0ZVVMRTMyKGNpci5uUHViSW5wdXRzKTtcbiAgICBhd2FpdCBmZC53cml0ZVVMRTMyKGNpci5uUHJ2SW5wdXRzKTtcbiAgICBhd2FpdCBmZC53cml0ZVVMRTY0KGNpci5uTGFiZWxzKTtcbiAgICBhd2FpdCBmZC53cml0ZVVMRTMyKGNpci5jb25zdHJhaW50cy5sZW5ndGgpO1xuXG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLmVuZFdyaXRlU2VjdGlvbihmZCk7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB3cml0ZVIxY3NDb25zdHJhaW50cyhmZCwgY2lyLCBsb2dnZXIsIGxvZ2dlckN0eCkge1xuICAgIGF3YWl0IGJpbkZpbGVVdGlscy5zdGFydFdyaXRlU2VjdGlvbihmZCwgMik7XG5cbiAgICBmb3IgKGxldCBpPTA7IGk8Y2lyLmNvbnN0cmFpbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGlmICgobG9nZ2VyKSYmKGklMTAwMDAgPT0gMCkpIGxvZ2dlci5pbmZvKGAke2xvZ2dlckN0eH06IHdyaXRpbmcgY29uc3RyYWludDogJHtpfS8ke2Npci5jb25zdHJhaW50cy5sZW5ndGh9YCk7XG4gICAgICAgIGF3YWl0IHdyaXRlQ29uc3RyYWludChjaXIuY29uc3RyYWludHNbaV0pO1xuICAgIH1cblxuICAgIGF3YWl0IGJpbkZpbGVVdGlscy5lbmRXcml0ZVNlY3Rpb24oZmQpO1xuXG5cbiAgICBmdW5jdGlvbiB3cml0ZUNvbnN0cmFpbnQoYykge1xuICAgICAgICBjb25zdCBuOCA9IGNpci5uODtcbiAgICAgICAgY29uc3QgRiA9IGNpci5GIHx8IGNpci5jdXJ2ZS5GcjtcbiAgICAgICAgY29uc3QgaWR4QSA9IE9iamVjdC5rZXlzKGNbMF0pO1xuICAgICAgICBjb25zdCBpZHhCID0gT2JqZWN0LmtleXMoY1sxXSk7XG4gICAgICAgIGNvbnN0IGlkeEMgPSBPYmplY3Qua2V5cyhjWzJdKTtcbiAgICAgICAgY29uc3QgYnVmZiA9IG5ldyBVaW50OEFycmF5KChpZHhBLmxlbmd0aCtpZHhCLmxlbmd0aCtpZHhDLmxlbmd0aCkqKG44KzQpICsgMTIpO1xuICAgICAgICBjb25zdCBidWZmViA9IG5ldyBEYXRhVmlldyhidWZmLmJ1ZmZlcik7XG4gICAgICAgIGxldCBvPTA7XG5cbiAgICAgICAgYnVmZlYuc2V0VWludDMyKG8sIGlkeEEubGVuZ3RoLCB0cnVlKTsgbys9NDtcbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPGlkeEEubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IGNvZWYgPSBpZHhBW2ldO1xuICAgICAgICAgICAgYnVmZlYuc2V0VWludDMyKG8sIGNvZWYsIHRydWUpOyBvKz00O1xuICAgICAgICAgICAgRi50b1JwckxFKGJ1ZmYsIG8sIGNbMF1bY29lZl0pOyBvKz1uODtcbiAgICAgICAgfVxuXG4gICAgICAgIGJ1ZmZWLnNldFVpbnQzMihvLCBpZHhCLmxlbmd0aCwgdHJ1ZSk7IG8rPTQ7XG4gICAgICAgIGZvciAobGV0IGk9MDsgaTxpZHhCLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCBjb2VmID0gaWR4QltpXTtcbiAgICAgICAgICAgIGJ1ZmZWLnNldFVpbnQzMihvLCBjb2VmLCB0cnVlKTsgbys9NDtcbiAgICAgICAgICAgIEYudG9ScHJMRShidWZmLCBvLCBjWzFdW2NvZWZdKTsgbys9bjg7XG4gICAgICAgIH1cblxuICAgICAgICBidWZmVi5zZXRVaW50MzIobywgaWR4Qy5sZW5ndGgsIHRydWUpOyBvKz00O1xuICAgICAgICBmb3IgKGxldCBpPTA7IGk8aWR4Qy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgY29uc3QgY29lZiA9IGlkeENbaV07XG4gICAgICAgICAgICBidWZmVi5zZXRVaW50MzIobywgY29lZiwgdHJ1ZSk7IG8rPTQ7XG4gICAgICAgICAgICBGLnRvUnByTEUoYnVmZiwgbywgY1syXVtjb2VmXSk7IG8rPW44O1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGZkLndyaXRlKGJ1ZmYpO1xuICAgIH1cblxufVxuXG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB3cml0ZVIxY3NNYXAoZmQsIGNpciwgbG9nZ2VyLCBsb2dnZXJDdHgpIHtcbiAgICBhd2FpdCBiaW5GaWxlVXRpbHMuc3RhcnRXcml0ZVNlY3Rpb24oZmQsIDMpO1xuXG4gICAgaWYgKGNpci5tYXAubGVuZ3RoICE9IGNpci5uVmFycykgdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBtYXAgc2l6ZVwiKTtcbiAgICBmb3IgKGxldCBpPTA7IGk8Y2lyLm5WYXJzOyBpKyspIHtcbiAgICAgICAgaWYgKChsb2dnZXIpJiYoaSUxMDAwMCA9PSAwKSkgbG9nZ2VyLmluZm8oYCR7bG9nZ2VyQ3R4fTogd3JpdGluZyBtYXA6ICR7aX0vJHtjaXIublZhcnN9YCk7XG4gICAgICAgIGF3YWl0IGZkLndyaXRlVUxFNjQoY2lyLm1hcFtpXSk7XG4gICAgfVxuXG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLmVuZFdyaXRlU2VjdGlvbihmZCk7XG59XG5cblxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gd3JpdGVSMWNzKGZpbGVOYW1lLCBjaXIsIGxvZ2dlciwgbG9nZ2VyQ3R4KSB7XG5cbiAgICBjb25zdCBmZCA9IGF3YWl0IGJpbkZpbGVVdGlscy5jcmVhdGVCaW5GaWxlKGZpbGVOYW1lLCBcInIxY3NcIiwgMSwgMywgMTw8MjUsIDE8PDIyKTtcblxuICAgIGF3YWl0IHdyaXRlUjFjc0hlYWRlcihmZCwgY2lyKTtcblxuICAgIGF3YWl0IHdyaXRlUjFjc0NvbnN0cmFpbnRzKGZkLCBjaXIsIGxvZ2dlciwgbG9nZ2VyQ3R4KTtcblxuICAgIGF3YWl0IHdyaXRlUjFjc01hcChmZCwgY2lyLCBsb2dnZXIsIGxvZ2dlckN0eCk7XG5cbiAgICBhd2FpdCBmZC5jbG9zZSgpO1xufVxuIiwiLypcbiAgICBDb3B5cmlnaHQgMjAxOCAwS0lNUyBhc3NvY2lhdGlvbi5cblxuICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHNuYXJrSlMuXG5cbiAgICBzbmFya0pTIGlzIGEgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdFxuICAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3JcbiAgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuXG4gICAgc25hcmtKUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVFxuICAgIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWVxuICAgIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpY1xuICAgIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cblxuICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gICAgYWxvbmcgd2l0aCBzbmFya0pTLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuKi9cblxuaW1wb3J0IHsgU2NhbGFyIH0gZnJvbSBcImZmamF2YXNjcmlwdFwiO1xuaW1wb3J0IHsgcmVhZFIxY3MgfSAgZnJvbSBcInIxY3NmaWxlXCI7XG5cbmNvbnN0IGJsczEyMzgxciA9IFNjYWxhci5lKFwiNzNlZGE3NTMyOTlkN2Q0ODMzMzlkODA4MDlhMWQ4MDU1M2JkYTQwMmZmZmU1YmZlZmZmZmZmZmYwMDAwMDAwMVwiLCAxNik7XG5jb25zdCBibjEyOHIgPSBTY2FsYXIuZShcIjIxODg4MjQyODcxODM5Mjc1MjIyMjQ2NDA1NzQ1MjU3Mjc1MDg4NTQ4MzY0NDAwNDE2MDM0MzQzNjk4MjA0MTg2NTc1ODA4NDk1NjE3XCIpO1xuXG5leHBvcnQgZGVmYXVsdCBhc3luYyBmdW5jdGlvbiByMWNzSW5mbyhyMWNzTmFtZSwgbG9nZ2VyKSB7XG5cbiAgICBjb25zdCBjaXIgPSBhd2FpdCByZWFkUjFjcyhyMWNzTmFtZSk7XG5cbiAgICBpZiAoU2NhbGFyLmVxKGNpci5wcmltZSwgYm4xMjhyKSkge1xuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhcIkN1cnZlOiBibi0xMjhcIik7XG4gICAgfSBlbHNlIGlmIChTY2FsYXIuZXEoY2lyLnByaW1lLCBibHMxMjM4MXIpKSB7XG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKFwiQ3VydmU6IGJsczEyLTM4MVwiKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhgVW5rbm93biBDdXJ2ZS4gUHJpbWU6ICR7U2NhbGFyLnRvU3RyaW5nKGNpci5wcmltZSl9YCk7XG4gICAgfVxuICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKGAjIG9mIFdpcmVzOiAke2Npci5uVmFyc31gKTtcbiAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhgIyBvZiBDb25zdHJhaW50czogJHtjaXIubkNvbnN0cmFpbnRzfWApO1xuICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKGAjIG9mIFByaXZhdGUgSW5wdXRzOiAke2Npci5uUHJ2SW5wdXRzfWApO1xuICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKGAjIG9mIFB1YmxpYyBJbnB1dHM6ICR7Y2lyLm5QdWJJbnB1dHN9YCk7XG4gICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oYCMgb2YgTGFiZWxzOiAke2Npci5uTGFiZWxzfWApO1xuICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKGAjIG9mIE91dHB1dHM6ICR7Y2lyLm5PdXRwdXRzfWApO1xuXG4gICAgcmV0dXJuIGNpcjtcbn1cbiIsIi8qXG4gICAgQ29weXJpZ2h0IDIwMTggMEtJTVMgYXNzb2NpYXRpb24uXG5cbiAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBzbmFya0pTLlxuXG4gICAgc25hcmtKUyBpcyBhIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXRcbiAgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yXG4gICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cblxuICAgIHNuYXJrSlMgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVRcbiAgICBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFlcbiAgICBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWNcbiAgICBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG5cbiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICAgIGFsb25nIHdpdGggc25hcmtKUy4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cbiovXG5cbmltcG9ydCB7cmVhZFIxY3N9ICBmcm9tIFwicjFjc2ZpbGVcIjtcbmltcG9ydCB7IHN0cmluZ2lmeUJpZ0ludHNXaXRoRmllbGQgfSBmcm9tIFwiLi9taXNjLmpzXCI7XG5cblxuZXhwb3J0IGRlZmF1bHQgYXN5bmMgZnVuY3Rpb24gcjFjc0V4cG9ydEpzb24ocjFjc0ZpbGVOYW1lLCBsb2dnZXIpIHtcblxuICAgIGNvbnN0IGNpciA9IGF3YWl0IHJlYWRSMWNzKHIxY3NGaWxlTmFtZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgbG9nZ2VyKTtcbiAgICBjb25zdCBGcj1jaXIuY3VydmUuRnI7XG4gICAgZGVsZXRlIGNpci5jdXJ2ZTtcbiAgICBkZWxldGUgY2lyLkY7XG5cbiAgICByZXR1cm4gc3RyaW5naWZ5QmlnSW50c1dpdGhGaWVsZChGciwgY2lyKTtcbn1cbiIsIi8qXG4gICAgQ29weXJpZ2h0IDIwMTggMEtJTVMgYXNzb2NpYXRpb24uXG5cbiAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBzbmFya0pTLlxuXG4gICAgc25hcmtKUyBpcyBhIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXRcbiAgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yXG4gICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cblxuICAgIHNuYXJrSlMgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVRcbiAgICBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFlcbiAgICBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWNcbiAgICBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG5cbiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICAgIGFsb25nIHdpdGggc25hcmtKUy4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cbiovXG5cbmV4cG9ydCB7ZGVmYXVsdCBhcyBwcmludH0gZnJvbSBcIi4vcjFjc19wcmludC5qc1wiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIGluZm99IGZyb20gXCIuL3IxY3NfaW5mby5qc1wiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIGV4cG9ydEpzb259IGZyb20gXCIuL3IxY3NfZXhwb3J0X2pzb24uanNcIjtcblxuIiwiLypcbiAgICBDb3B5cmlnaHQgMjAxOCAwS0lNUyBhc3NvY2lhdGlvbi5cblxuICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHNuYXJrSlMuXG5cbiAgICBzbmFya0pTIGlzIGEgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdFxuICAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3JcbiAgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuXG4gICAgc25hcmtKUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVFxuICAgIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWVxuICAgIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpY1xuICAgIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cblxuICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gICAgYWxvbmcgd2l0aCBzbmFya0pTLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuKi9cblxuaW1wb3J0ICogYXMgZmFzdEZpbGUgZnJvbSBcImZhc3RmaWxlXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGFzeW5jIGZ1bmN0aW9uIGxvYWRTeW1ib2xzKHN5bUZpbGVOYW1lKSB7XG4gICAgY29uc3Qgc3ltID0ge1xuICAgICAgICBsYWJlbElkeDJOYW1lOiBbIFwib25lXCIgXSxcbiAgICAgICAgdmFySWR4Mk5hbWU6IFsgXCJvbmVcIiBdLFxuICAgICAgICBjb21wb25lbnRJZHgyTmFtZTogW11cbiAgICB9O1xuICAgIGNvbnN0IGZkID0gYXdhaXQgZmFzdEZpbGUucmVhZEV4aXN0aW5nKHN5bUZpbGVOYW1lKTtcbiAgICBjb25zdCBidWZmID0gYXdhaXQgZmQucmVhZChmZC50b3RhbFNpemUpO1xuICAgIGNvbnN0IHN5bXNTdHIgPSBuZXcgVGV4dERlY29kZXIoXCJ1dGYtOFwiKS5kZWNvZGUoYnVmZik7XG4gICAgY29uc3QgbGluZXMgPSBzeW1zU3RyLnNwbGl0KFwiXFxuXCIpO1xuICAgIGZvciAobGV0IGk9MDsgaTxsaW5lcy5sZW5ndGg7IGkrKykge1xuICAgICAgICBjb25zdCBhcnIgPSBsaW5lc1tpXS5zcGxpdChcIixcIik7XG4gICAgICAgIGlmIChhcnIubGVuZ3RoIT00KSBjb250aW51ZTtcbiAgICAgICAgaWYgKHN5bS52YXJJZHgyTmFtZVthcnJbMV1dKSB7XG4gICAgICAgICAgICBzeW0udmFySWR4Mk5hbWVbYXJyWzFdXSArPSBcInxcIiArIGFyclszXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHN5bS52YXJJZHgyTmFtZVthcnJbMV1dID0gYXJyWzNdO1xuICAgICAgICB9XG4gICAgICAgIHN5bS5sYWJlbElkeDJOYW1lW2FyclswXV0gPSBhcnJbM107XG4gICAgICAgIGlmICghc3ltLmNvbXBvbmVudElkeDJOYW1lW2FyclsyXV0pIHtcbiAgICAgICAgICAgIHN5bS5jb21wb25lbnRJZHgyTmFtZVthcnJbMl1dID0gZXh0cmFjdENvbXBvbmVudChhcnJbM10pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgYXdhaXQgZmQuY2xvc2UoKTtcblxuICAgIHJldHVybiBzeW07XG5cbiAgICBmdW5jdGlvbiBleHRyYWN0Q29tcG9uZW50KG5hbWUpIHtcbiAgICAgICAgY29uc3QgYXJyID0gbmFtZS5zcGxpdChcIi5cIik7XG4gICAgICAgIGFyci5wb3AoKTsgLy8gUmVtb3ZlIHRoZSBsYXNyIGVsZW1lbnRcbiAgICAgICAgcmV0dXJuIGFyci5qb2luKFwiLlwiKTtcbiAgICB9XG59XG4iLCIvKlxuICAgIENvcHlyaWdodCAyMDE4IDBLSU1TIGFzc29jaWF0aW9uLlxuXG4gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2Ygc25hcmtKUy5cblxuICAgIHNuYXJrSlMgaXMgYSBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0XG4gICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxuICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG5cbiAgICBzbmFya0pTIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUXG4gICAgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZXG4gICAgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljXG4gICAgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuXG4gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAgICBhbG9uZyB3aXRoIHNuYXJrSlMuIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXG4qL1xuXG5pbXBvcnQgKiBhcyBmYXN0RmlsZSBmcm9tIFwiZmFzdGZpbGVcIjtcbmltcG9ydCB7IFdpdG5lc3NDYWxjdWxhdG9yQnVpbGRlciB9IGZyb20gXCJjaXJjb21fcnVudGltZVwiO1xuaW1wb3J0ICogYXMgd3Ruc1V0aWxzIGZyb20gXCIuL3d0bnNfdXRpbHMuanNcIjtcbmltcG9ydCAqIGFzIGJpbkZpbGVVdGlscyBmcm9tIFwiQGlkZW4zL2JpbmZpbGV1dGlsc1wiO1xuaW1wb3J0IGxvYWRTeW1zIGZyb20gXCIuL2xvYWRzeW1zLmpzXCI7XG5pbXBvcnQgeyAgdXRpbHMgfSAgIGZyb20gXCJmZmphdmFzY3JpcHRcIjtcbmNvbnN0IHt1bnN0cmluZ2lmeUJpZ0ludHN9ID0gdXRpbHM7XG5cblxuZXhwb3J0IGRlZmF1bHQgYXN5bmMgZnVuY3Rpb24gd3Ruc0RlYnVnKF9pbnB1dCwgd2FzbUZpbGVOYW1lLCB3dG5zRmlsZU5hbWUsIHN5bU5hbWUsIG9wdGlvbnMsIGxvZ2dlcikge1xuXG4gICAgY29uc3QgaW5wdXQgPSB1bnN0cmluZ2lmeUJpZ0ludHMoX2lucHV0KTtcblxuICAgIGNvbnN0IGZkV2FzbSA9IGF3YWl0IGZhc3RGaWxlLnJlYWRFeGlzdGluZyh3YXNtRmlsZU5hbWUpO1xuICAgIGNvbnN0IHdhc20gPSBhd2FpdCBmZFdhc20ucmVhZChmZFdhc20udG90YWxTaXplKTtcbiAgICBhd2FpdCBmZFdhc20uY2xvc2UoKTtcblxuICAgIGNvbnN0IHdjT3BzID0gey4uLm9wdGlvbnMsIHNhbml0eUNoZWNrOiB0cnVlfTtcbiAgICBsZXQgc3ltID0gYXdhaXQgbG9hZFN5bXMoc3ltTmFtZSk7XG4gICAgaWYgKG9wdGlvbnMuc2V0KSB7XG4gICAgICAgIGlmICghc3ltKSBzeW0gPSBhd2FpdCBsb2FkU3ltcyhzeW1OYW1lKTtcbiAgICAgICAgd2NPcHMubG9nU2V0U2lnbmFsPSBmdW5jdGlvbihsYWJlbElkeCwgdmFsdWUpIHtcbiAgICAgICAgICAgIC8vIFRoZSBsaW5lIGJlbG93IHNwbGl0cyB0aGUgYXJyb3cgbG9nIGludG8gMiBzdHJpbmdzIHRvIGF2b2lkIHNvbWUgU2VjdXJlIEVDTUFTY3JpcHQgaXNzdWVzXG4gICAgICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhcIlNFVCBcIiArIHN5bS5sYWJlbElkeDJOYW1lW2xhYmVsSWR4XSArIFwiIDxcIiArIFwiLS0gXCIgKyB2YWx1ZS50b1N0cmluZygpKTtcbiAgICAgICAgfTtcbiAgICB9XG4gICAgaWYgKG9wdGlvbnMuZ2V0KSB7XG4gICAgICAgIGlmICghc3ltKSBzeW0gPSBhd2FpdCBsb2FkU3ltcyhzeW1OYW1lKTtcbiAgICAgICAgd2NPcHMubG9nR2V0U2lnbmFsPSBmdW5jdGlvbih2YXJJZHgsIHZhbHVlKSB7XG4gICAgICAgICAgICAvLyBUaGUgbGluZSBiZWxvdyBzcGxpdHMgdGhlIGFycm93IGxvZyBpbnRvIDIgc3RyaW5ncyB0byBhdm9pZCBzb21lIFNlY3VyZSBFQ01BU2NyaXB0IGlzc3Vlc1xuICAgICAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oXCJHRVQgXCIgKyBzeW0ubGFiZWxJZHgyTmFtZVt2YXJJZHhdICsgXCIgLS1cIiArIFwiPiBcIiArIHZhbHVlLnRvU3RyaW5nKCkpO1xuICAgICAgICB9O1xuICAgIH1cbiAgICBpZiAob3B0aW9ucy50cmlnZ2VyKSB7XG4gICAgICAgIGlmICghc3ltKSBzeW0gPSBhd2FpdCBsb2FkU3ltcyhzeW1OYW1lKTtcbiAgICAgICAgd2NPcHMubG9nU3RhcnRDb21wb25lbnQ9IGZ1bmN0aW9uKGNJZHgpIHtcbiAgICAgICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKFwiU1RBUlQ6IFwiICsgc3ltLmNvbXBvbmVudElkeDJOYW1lW2NJZHhdKTtcbiAgICAgICAgfTtcbiAgICAgICAgd2NPcHMubG9nRmluaXNoQ29tcG9uZW50PSBmdW5jdGlvbihjSWR4KSB7XG4gICAgICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhcIkZJTklTSDogXCIgKyBzeW0uY29tcG9uZW50SWR4Mk5hbWVbY0lkeF0pO1xuICAgICAgICB9O1xuICAgIH1cbiAgICB3Y09wcy5zeW0gPSBzeW07XG5cbiAgICBjb25zdCB3YyA9IGF3YWl0IFdpdG5lc3NDYWxjdWxhdG9yQnVpbGRlcih3YXNtLCB3Y09wcyk7XG4gICAgY29uc3QgdyA9IGF3YWl0IHdjLmNhbGN1bGF0ZVdpdG5lc3MoaW5wdXQsIHRydWUpO1xuXG4gICAgY29uc3QgZmRXdG5zID0gYXdhaXQgYmluRmlsZVV0aWxzLmNyZWF0ZUJpbkZpbGUod3Ruc0ZpbGVOYW1lLCBcInd0bnNcIiwgMiwgMik7XG5cbiAgICBhd2FpdCB3dG5zVXRpbHMud3JpdGUoZmRXdG5zLCB3LCB3Yy5wcmltZSk7XG5cbiAgICBhd2FpdCBmZFd0bnMuY2xvc2UoKTtcbn1cbiIsIi8qXG4gICAgQ29weXJpZ2h0IDIwMTggMEtJTVMgYXNzb2NpYXRpb24uXG5cbiAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBzbmFya0pTLlxuXG4gICAgc25hcmtKUyBpcyBhIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXRcbiAgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yXG4gICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cblxuICAgIHNuYXJrSlMgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVRcbiAgICBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFlcbiAgICBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWNcbiAgICBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG5cbiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICAgIGFsb25nIHdpdGggc25hcmtKUy4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cbiovXG5cbmltcG9ydCB7cmVhZH0gZnJvbSBcIi4vd3Ruc191dGlscy5qc1wiO1xuXG5leHBvcnQgZGVmYXVsdCBhc3luYyBmdW5jdGlvbiB3dG5zRXhwb3J0SnNvbih3dG5zRmlsZU5hbWUpIHtcblxuICAgIGNvbnN0IHcgPSBhd2FpdCByZWFkKHd0bnNGaWxlTmFtZSk7XG5cbiAgICByZXR1cm4gdztcbn1cbiIsIi8qXG4gICAgQ29weXJpZ2h0IDIwMTggMEtJTVMgYXNzb2NpYXRpb24uXG5cbiAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBzbmFya0pTLlxuXG4gICAgc25hcmtKUyBpcyBhIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXRcbiAgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yXG4gICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cblxuICAgIHNuYXJrSlMgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVRcbiAgICBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFlcbiAgICBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWNcbiAgICBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG5cbiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICAgIGFsb25nIHdpdGggc25hcmtKUy4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cbiovXG5cbmltcG9ydCAqIGFzIGJpbkZpbGVVdGlscyBmcm9tIFwiQGlkZW4zL2JpbmZpbGV1dGlsc1wiO1xuaW1wb3J0ICogYXMgd3Ruc1V0aWxzIGZyb20gXCIuL3d0bnNfdXRpbHMuanNcIjtcbmltcG9ydCB7IHJlYWRSMWNzRmQgfSBmcm9tIFwicjFjc2ZpbGVcIjtcbmltcG9ydCB7IFNjYWxhciB9IGZyb20gXCJmZmphdmFzY3JpcHRcIjtcbmltcG9ydCAqIGFzIGN1cnZlcyBmcm9tIFwiLi9jdXJ2ZXMuanNcIjtcblxuZXhwb3J0IGRlZmF1bHQgYXN5bmMgZnVuY3Rpb24gd3Ruc0NoZWNrKHIxY3NGaWxlbmFtZSwgd3Ruc0ZpbGVuYW1lLCBsb2dnZXIpIHtcblxuICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKFwiV0lUTkVTUyBDSEVDS0lORyBTVEFSVEVEXCIpO1xuXG4gICAgLy8gUmVhZCByMWNzIGZpbGVcbiAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhcIj4gUmVhZGluZyByMWNzIGZpbGVcIik7XG4gICAgY29uc3Qge1xuICAgICAgICBmZDogZmRSMWNzLFxuICAgICAgICBzZWN0aW9uczogc2VjdGlvbnNSMWNzXG4gICAgfSA9IGF3YWl0IGJpbkZpbGVVdGlscy5yZWFkQmluRmlsZShyMWNzRmlsZW5hbWUsIFwicjFjc1wiLCAxLCAxIDw8IDIyLCAxIDw8IDI0KTtcbiAgICBjb25zdCByMWNzID0gYXdhaXQgcmVhZFIxY3NGZChmZFIxY3MsIHNlY3Rpb25zUjFjcywgeyBsb2FkQ29uc3RyYWludHM6IGZhbHNlLCBsb2FkQ3VzdG9tR2F0ZXM6IGZhbHNlIH0pO1xuXG4gICAgLy8gUmVhZCB3aXRuZXNzIGZpbGVcbiAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhcIj4gUmVhZGluZyB3aXRuZXNzIGZpbGVcIik7XG4gICAgY29uc3Qge1xuICAgICAgICBmZDogZmRXdG5zLFxuICAgICAgICBzZWN0aW9uczogd3Ruc1NlY3Rpb25zXG4gICAgfSA9IGF3YWl0IGJpbkZpbGVVdGlscy5yZWFkQmluRmlsZSh3dG5zRmlsZW5hbWUsIFwid3Ruc1wiLCAyLCAxIDw8IDIyLCAxIDw8IDI0KTtcbiAgICBjb25zdCB3dG5zSGVhZGVyID0gYXdhaXQgd3Ruc1V0aWxzLnJlYWRIZWFkZXIoZmRXdG5zLCB3dG5zU2VjdGlvbnMpO1xuXG4gICAgaWYgKCFTY2FsYXIuZXEocjFjcy5wcmltZSwgd3Ruc0hlYWRlci5xKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJDdXJ2ZSBvZiB0aGUgd2l0bmVzcyBkb2VzIG5vdCBtYXRjaCB0aGUgY3VydmUgb2YgdGhlIHByb3Zpbmcga2V5XCIpO1xuICAgIH1cblxuICAgIGNvbnN0IGJ1ZmZXaXRuZXNzID0gYXdhaXQgYmluRmlsZVV0aWxzLnJlYWRTZWN0aW9uKGZkV3Rucywgd3Ruc1NlY3Rpb25zLCAyKTtcbiAgICBhd2FpdCBmZFd0bnMuY2xvc2UoKTtcblxuICAgIGNvbnN0IGN1cnZlID0gYXdhaXQgY3VydmVzLmdldEN1cnZlRnJvbVIocjFjcy5wcmltZSk7XG4gICAgY29uc3QgRnIgPSBjdXJ2ZS5GcjtcbiAgICBjb25zdCBzRnIgPSBGci5uODtcblxuICAgIGNvbnN0IGJSMWNzID0gYXdhaXQgYmluRmlsZVV0aWxzLnJlYWRTZWN0aW9uKGZkUjFjcywgc2VjdGlvbnNSMWNzLCAyKTtcblxuICAgIGlmIChsb2dnZXIpIHtcbiAgICAgICAgbG9nZ2VyLmluZm8oXCItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXCIpO1xuICAgICAgICBsb2dnZXIuaW5mbyhcIiAgV0lUTkVTUyBDSEVDS1wiKTtcbiAgICAgICAgbG9nZ2VyLmluZm8oYCAgQ3VydmU6ICAgICAgICAgICR7cjFjcy5jdXJ2ZS5uYW1lfWApO1xuICAgICAgICBsb2dnZXIuaW5mbyhgICBWYXJzICh3aXJlcyk6ICAgJHtyMWNzLm5WYXJzfWApO1xuICAgICAgICBsb2dnZXIuaW5mbyhgICBPdXRwdXRzOiAgICAgICAgJHtyMWNzLm5PdXRwdXRzfWApO1xuICAgICAgICBsb2dnZXIuaW5mbyhgICBQdWJsaWMgSW5wdXRzOiAgJHtyMWNzLm5QdWJJbnB1dHN9YCk7XG4gICAgICAgIGxvZ2dlci5pbmZvKGAgIFByaXZhdGUgSW5wdXRzOiAke3IxY3MublBydklucHV0c31gKTtcbiAgICAgICAgbG9nZ2VyLmluZm8oYCAgTGFiZWxzOiAgICAgICAgICR7cjFjcy5uTGFiZWxzfWApO1xuICAgICAgICBsb2dnZXIuaW5mbyhgICBDb25zdHJhaW50czogICAgJHtyMWNzLm5Db25zdHJhaW50c31gKTtcbiAgICAgICAgbG9nZ2VyLmluZm8oYCAgQ3VzdG9tIEdhdGVzOiAgICR7cjFjcy51c2VDdXN0b21HYXRlc31gKTtcbiAgICAgICAgbG9nZ2VyLmluZm8oXCItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXCIpO1xuICAgIH1cblxuICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKFwiPiBDaGVja2luZyB3aXRuZXNzIGNvcnJlY3RuZXNzXCIpO1xuXG4gICAgbGV0IGJSMWNzUG9zID0gMDtcbiAgICBsZXQgcmVzID0gdHJ1ZTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHIxY3MubkNvbnN0cmFpbnRzOyBpKyspIHtcbiAgICAgICAgaWYgKChsb2dnZXIpICYmIChpICE9PSAwKSAmJiAoaSAlIDUwMDAwMCA9PT0gMCkpIHtcbiAgICAgICAgICAgIGxvZ2dlci5pbmZvKGDCt8K3wrcgcHJvY2Vzc2luZyByMWNzIGNvbnN0cmFpbnRzICR7aX0vJHtyMWNzLm5Db25zdHJhaW50c31gKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vUmVhZCB0aGUgdGhyZWUgbGluZWFyIGNvbWJpbmF0aW9ucyBvZiB0aGUgY29uc3RyYWludCB3aGVyZSBBICogQiAtIEMgPSAwXG4gICAgICAgIGNvbnN0IGxjQSA9IHJlYWRMQygpO1xuICAgICAgICBjb25zdCBsY0IgPSByZWFkTEMoKTtcbiAgICAgICAgY29uc3QgbGNDID0gcmVhZExDKCk7XG5cbiAgICAgICAgLy8gRXZhbHVhdGUgdGhlIGxpbmVhciBjb21iaW5hdGlvbnNcbiAgICAgICAgY29uc3QgZXZhbEEgPSBFdmFsdWF0ZUxpbmVhckNvbWJpbmF0aW9uKGxjQSk7XG4gICAgICAgIGNvbnN0IGV2YWxCID0gRXZhbHVhdGVMaW5lYXJDb21iaW5hdGlvbihsY0IpO1xuICAgICAgICBjb25zdCBldmFsQyA9IEV2YWx1YXRlTGluZWFyQ29tYmluYXRpb24obGNDKTtcblxuICAgICAgICAvLyBDaGVjayB0aGF0IEEgKiBCIC0gQyA9PSAwXG4gICAgICAgIGlmICghRnIuZXEoRnIuc3ViKEZyLm11bChldmFsQSwgZXZhbEIpLCBldmFsQyksIEZyLnplcm8pKSB7XG4gICAgICAgICAgICBsb2dnZXIud2FybihcIsK3wrfCtyBhYm9ydGluZyBjaGVja2luZyBwcm9jZXNzIGF0IGNvbnN0cmFpbnQgXCIgKyBpKTtcbiAgICAgICAgICAgIHJlcyA9IGZhbHNlO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmZFIxY3MuY2xvc2UoKTtcblxuICAgIGlmIChsb2dnZXIpIHtcbiAgICAgICAgaWYgKHJlcykge1xuICAgICAgICAgICAgbG9nZ2VyLmluZm8oXCJXSVRORVNTIElTIENPUlJFQ1RcIik7XG4gICAgICAgICAgICBsb2dnZXIuaW5mbyhcIldJVE5FU1MgQ0hFQ0tJTkcgRklOSVNIRUQgU1VDQ0VTU0ZVTExZXCIpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbG9nZ2VyLndhcm4oXCJXSVRORVNTIElTIE5PVCBDT1JSRUNUXCIpO1xuICAgICAgICAgICAgbG9nZ2VyLndhcm4oXCJXSVRORVNTIENIRUNLSU5HIEZJTklTSEVEIFVOU1VDQ0VTU0ZVTExZXCIpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlcztcblxuICAgIGZ1bmN0aW9uIEV2YWx1YXRlTGluZWFyQ29tYmluYXRpb24obGMpIHtcbiAgICAgICAgbGV0IHJlcyA9IEZyLnplcm87XG5cbiAgICAgICAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKGxjKTtcbiAgICAgICAga2V5cy5mb3JFYWNoKChzaWduYWxJZCkgPT4ge1xuICAgICAgICAgICAgY29uc3Qgc2lnbmFsVmFsdWUgPSBnZXRXaXRuZXNzVmFsdWUoc2lnbmFsSWQpO1xuICAgICAgICAgICAgY29uc3Qgc2lnbmFsRmFjdG9yID0gbGNbc2lnbmFsSWRdO1xuXG4gICAgICAgICAgICByZXMgPSBGci5hZGQocmVzLCBGci5tdWwoc2lnbmFsVmFsdWUsIHNpZ25hbEZhY3RvcikpO1xuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHJlYWRMQygpIHtcbiAgICAgICAgY29uc3QgbGMgPSB7fTtcblxuICAgICAgICBjb25zdCBidWZmVUwzMiA9IGJSMWNzLnNsaWNlKGJSMWNzUG9zLCBiUjFjc1BvcyArIDQpO1xuICAgICAgICBiUjFjc1BvcyArPSA0O1xuICAgICAgICBjb25zdCBidWZmVUwzMlYgPSBuZXcgRGF0YVZpZXcoYnVmZlVMMzIuYnVmZmVyKTtcbiAgICAgICAgY29uc3QgbklkeCA9IGJ1ZmZVTDMyVi5nZXRVaW50MzIoMCwgdHJ1ZSk7XG5cbiAgICAgICAgY29uc3QgYnVmZiA9IGJSMWNzLnNsaWNlKGJSMWNzUG9zLCBiUjFjc1BvcyArICg0ICsgcjFjcy5uOCkgKiBuSWR4KTtcbiAgICAgICAgYlIxY3NQb3MgKz0gKDQgKyByMWNzLm44KSAqIG5JZHg7XG4gICAgICAgIGNvbnN0IGJ1ZmZWID0gbmV3IERhdGFWaWV3KGJ1ZmYuYnVmZmVyKTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBuSWR4OyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IGlkeCA9IGJ1ZmZWLmdldFVpbnQzMihpICogKDQgKyByMWNzLm44KSwgdHJ1ZSk7XG4gICAgICAgICAgICBjb25zdCB2YWwgPSByMWNzLkYuZnJvbVJwckxFKGJ1ZmYsIGkgKiAoNCArIHIxY3MubjgpICsgNCk7XG4gICAgICAgICAgICBsY1tpZHhdID0gdmFsO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBsYztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRXaXRuZXNzVmFsdWUoc2lnbmFsSWQpIHtcbiAgICAgICAgcmV0dXJuIEZyLmZyb21ScHJMRShidWZmV2l0bmVzcy5zbGljZShzaWduYWxJZCAqIHNGciwgc2lnbmFsSWQgKiBzRnIgKyBzRnIpKTtcbiAgICB9XG59IiwiLypcbiAgICBDb3B5cmlnaHQgMjAxOCAwS0lNUyBhc3NvY2lhdGlvbi5cblxuICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHNuYXJrSlMuXG5cbiAgICBzbmFya0pTIGlzIGEgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdFxuICAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3JcbiAgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuXG4gICAgc25hcmtKUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVFxuICAgIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWVxuICAgIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpY1xuICAgIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cblxuICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gICAgYWxvbmcgd2l0aCBzbmFya0pTLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuKi9cblxuZXhwb3J0IHtkZWZhdWx0IGFzIGNhbGN1bGF0ZX0gZnJvbSBcIi4vd3Ruc19jYWxjdWxhdGUuanNcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBkZWJ1Z30gZnJvbSBcIi4vd3Ruc19kZWJ1Zy5qc1wiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIGV4cG9ydEpzb259IGZyb20gXCIuL3d0bnNfZXhwb3J0X2pzb24uanNcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBjaGVja30gZnJvbSBcIi4vd3Ruc19jaGVjay5qc1wiOyIsIi8qXG4gICAgQ29weXJpZ2h0IDIwMTggMEtJTVMgYXNzb2NpYXRpb24uXG5cbiAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBzbmFya0pTLlxuXG4gICAgc25hcmtKUyBpcyBhIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXRcbiAgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yXG4gICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cblxuICAgIHNuYXJrSlMgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVRcbiAgICBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFlcbiAgICBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWNcbiAgICBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG5cbiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICAgIGFsb25nIHdpdGggc25hcmtKUy4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cbiovXG5cbmNvbnN0IFNVQkFSUkFZX1NJWkUgPSAweDQwMDAwO1xuXG5jb25zdCBCaWdBcnJheUhhbmRsZXIgPSB7XG4gICAgZ2V0OiBmdW5jdGlvbihvYmosIHByb3ApIHtcbiAgICAgICAgaWYgKCFpc05hTihwcm9wKSkge1xuICAgICAgICAgICAgcmV0dXJuIG9iai5nZXRFbGVtZW50KHByb3ApO1xuICAgICAgICB9IGVsc2UgcmV0dXJuIG9ialtwcm9wXTtcbiAgICB9LFxuICAgIHNldDogZnVuY3Rpb24ob2JqLCBwcm9wLCB2YWx1ZSkge1xuICAgICAgICBpZiAoIWlzTmFOKHByb3ApKSB7XG4gICAgICAgICAgICByZXR1cm4gb2JqLnNldEVsZW1lbnQocHJvcCwgdmFsdWUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgb2JqW3Byb3BdID0gdmFsdWU7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH1cbn07XG5cbmNsYXNzIF9CaWdBcnJheSB7XG4gICAgY29uc3RydWN0b3IgKGluaXRTaXplKSB7XG4gICAgICAgIHRoaXMubGVuZ3RoID0gaW5pdFNpemUgfHwgMDtcbiAgICAgICAgdGhpcy5hcnIgPSBuZXcgQXJyYXkoU1VCQVJSQVlfU0laRSk7XG5cbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPGluaXRTaXplOyBpKz1TVUJBUlJBWV9TSVpFKSB7XG4gICAgICAgICAgICB0aGlzLmFycltpL1NVQkFSUkFZX1NJWkVdID0gbmV3IEFycmF5KE1hdGgubWluKFNVQkFSUkFZX1NJWkUsIGluaXRTaXplIC0gaSkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgICBwdXNoICgpIHtcbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPGFyZ3VtZW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgdGhpcy5zZXRFbGVtZW50ICh0aGlzLmxlbmd0aCwgYXJndW1lbnRzW2ldKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHNsaWNlIChmLCB0KSB7XG4gICAgICAgIGNvbnN0IGFyciA9IG5ldyBBcnJheSh0LWYpO1xuICAgICAgICBmb3IgKGxldCBpPWY7IGk8IHQ7IGkrKykgYXJyW2ktZl0gPSB0aGlzLmdldEVsZW1lbnQoaSk7XG4gICAgICAgIHJldHVybiBhcnI7XG4gICAgfVxuICAgIGdldEVsZW1lbnQoaWR4KSB7XG4gICAgICAgIGlkeCA9IHBhcnNlSW50KGlkeCk7XG4gICAgICAgIGNvbnN0IGlkeDEgPSBNYXRoLmZsb29yKGlkeCAvIFNVQkFSUkFZX1NJWkUpO1xuICAgICAgICBjb25zdCBpZHgyID0gaWR4ICUgU1VCQVJSQVlfU0laRTtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXJyW2lkeDFdID8gdGhpcy5hcnJbaWR4MV1baWR4Ml0gOiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIHNldEVsZW1lbnQoaWR4LCB2YWx1ZSkge1xuICAgICAgICBpZHggPSBwYXJzZUludChpZHgpO1xuICAgICAgICBjb25zdCBpZHgxID0gTWF0aC5mbG9vcihpZHggLyBTVUJBUlJBWV9TSVpFKTtcbiAgICAgICAgaWYgKCF0aGlzLmFycltpZHgxXSkge1xuICAgICAgICAgICAgdGhpcy5hcnJbaWR4MV0gPSBuZXcgQXJyYXkoU1VCQVJSQVlfU0laRSk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgaWR4MiA9IGlkeCAlIFNVQkFSUkFZX1NJWkU7XG4gICAgICAgIHRoaXMuYXJyW2lkeDFdW2lkeDJdID0gdmFsdWU7XG4gICAgICAgIGlmIChpZHggPj0gdGhpcy5sZW5ndGgpIHRoaXMubGVuZ3RoID0gaWR4KzE7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBnZXRLZXlzKCkge1xuICAgICAgICBjb25zdCBuZXdBID0gbmV3IEJpZ0FycmF5KCk7XG4gICAgICAgIGZvciAobGV0IGk9MDsgaTx0aGlzLmFyci5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgaWYgKHRoaXMuYXJyW2ldKSB7XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaj0wOyBqPHRoaXMuYXJyW2ldLmxlbmd0aDsgaisrKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgdGhpcy5hcnJbaV1bal0gIT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5ld0EucHVzaChpKlNVQkFSUkFZX1NJWkUraik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG5ld0E7XG4gICAgfVxufVxuXG5jbGFzcyBCaWdBcnJheSB7XG4gICAgY29uc3RydWN0b3IoIGluaXRTaXplICkge1xuICAgICAgICBjb25zdCBvYmogPSBuZXcgX0JpZ0FycmF5KGluaXRTaXplKTtcbiAgICAgICAgY29uc3QgZXh0T2JqID0gbmV3IFByb3h5KG9iaiwgQmlnQXJyYXlIYW5kbGVyKTtcbiAgICAgICAgcmV0dXJuIGV4dE9iajtcbiAgICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IEJpZ0FycmF5O1xuIiwiLypcbiAgICBDb3B5cmlnaHQgMjAxOCAwS0lNUyBhc3NvY2lhdGlvbi5cblxuICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHNuYXJrSlMuXG5cbiAgICBzbmFya0pTIGlzIGEgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdFxuICAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3JcbiAgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuXG4gICAgc25hcmtKUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVFxuICAgIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWVxuICAgIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpY1xuICAgIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cblxuICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gICAgYWxvbmcgd2l0aCBzbmFya0pTLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuKi9cblxuaW1wb3J0IHtyZWFkUjFjc0hlYWRlcn0gZnJvbSBcInIxY3NmaWxlXCI7XG5pbXBvcnQgKiBhcyB1dGlscyBmcm9tIFwiLi9wb3dlcnNvZnRhdV91dGlscy5qc1wiO1xuaW1wb3J0IHtcbiAgICByZWFkQmluRmlsZSxcbiAgICBjcmVhdGVCaW5GaWxlLFxuICAgIHJlYWRTZWN0aW9uLFxuICAgIHdyaXRlQmlnSW50LFxuICAgIHN0YXJ0V3JpdGVTZWN0aW9uLFxuICAgIGVuZFdyaXRlU2VjdGlvbixcbn0gZnJvbSBcIkBpZGVuMy9iaW5maWxldXRpbHNcIjtcbmltcG9ydCB7IGxvZzIsIGZvcm1hdEhhc2ggfSBmcm9tIFwiLi9taXNjLmpzXCI7XG5pbXBvcnQgeyBTY2FsYXIsIEJpZ0J1ZmZlciB9IGZyb20gXCJmZmphdmFzY3JpcHRcIjtcbmltcG9ydCBCbGFrZTJiIGZyb20gXCJibGFrZTJiLXdhc21cIjtcbmltcG9ydCBCaWdBcnJheSBmcm9tIFwiLi9iaWdhcnJheS5qc1wiO1xuXG5cbmV4cG9ydCBkZWZhdWx0IGFzeW5jIGZ1bmN0aW9uIG5ld1pLZXkocjFjc05hbWUsIHB0YXVOYW1lLCB6a2V5TmFtZSwgbG9nZ2VyKSB7XG5cbiAgICBjb25zdCBUQVVfRzEgPSAwO1xuICAgIGNvbnN0IFRBVV9HMiA9IDE7XG4gICAgY29uc3QgQUxQSEFUQVVfRzEgPSAyO1xuICAgIGNvbnN0IEJFVEFUQVVfRzEgPSAzO1xuICAgIGF3YWl0IEJsYWtlMmIucmVhZHkoKTtcbiAgICBjb25zdCBjc0hhc2hlciA9IEJsYWtlMmIoNjQpO1xuXG4gICAgY29uc3Qge2ZkOiBmZFBUYXUsIHNlY3Rpb25zOiBzZWN0aW9uc1BUYXV9ID0gYXdhaXQgcmVhZEJpbkZpbGUocHRhdU5hbWUsIFwicHRhdVwiLCAxLCAxPDwyMiwgMTw8MjQpO1xuICAgIGNvbnN0IHtjdXJ2ZSwgcG93ZXJ9ID0gYXdhaXQgdXRpbHMucmVhZFBUYXVIZWFkZXIoZmRQVGF1LCBzZWN0aW9uc1BUYXUpO1xuICAgIGNvbnN0IHtmZDogZmRSMWNzLCBzZWN0aW9uczogc2VjdGlvbnNSMWNzfSA9IGF3YWl0IHJlYWRCaW5GaWxlKHIxY3NOYW1lLCBcInIxY3NcIiwgMSwgMTw8MjIsIDE8PDI0KTtcbiAgICBjb25zdCByMWNzID0gYXdhaXQgcmVhZFIxY3NIZWFkZXIoZmRSMWNzLCBzZWN0aW9uc1IxY3MsIGZhbHNlKTtcblxuICAgIGNvbnN0IGZkWktleSA9IGF3YWl0IGNyZWF0ZUJpbkZpbGUoemtleU5hbWUsIFwiemtleVwiLCAxLCAxMCwgMTw8MjIsIDE8PDI0KTtcblxuICAgIGNvbnN0IHNHMSA9IGN1cnZlLkcxLkYubjgqMjtcbiAgICBjb25zdCBzRzIgPSBjdXJ2ZS5HMi5GLm44KjI7XG5cbiAgICBpZiAocjFjcy5wcmltZSAhPSBjdXJ2ZS5yKSB7XG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5lcnJvcihcInIxY3MgY3VydmUgZG9lcyBub3QgbWF0Y2ggcG93ZXJzIG9mIHRhdSBjZXJlbW9ueSBjdXJ2ZVwiKTtcbiAgICAgICAgcmV0dXJuIC0xO1xuICAgIH1cblxuICAgIGNvbnN0IGNpclBvd2VyID0gbG9nMihyMWNzLm5Db25zdHJhaW50cyArIHIxY3MublB1YklucHV0cyArIHIxY3Mubk91dHB1dHMgKzEgLTEpICsxO1xuXG4gICAgaWYgKGNpclBvd2VyID4gcG93ZXIpIHtcbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmVycm9yKGBjaXJjdWl0IHRvbyBiaWcgZm9yIHRoaXMgcG93ZXIgb2YgdGF1IGNlcmVtb255LiAke3IxY3MubkNvbnN0cmFpbnRzfSoyID4gMioqJHtwb3dlcn1gKTtcbiAgICAgICAgcmV0dXJuIC0xO1xuICAgIH1cblxuICAgIGlmICghc2VjdGlvbnNQVGF1WzEyXSkge1xuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZXJyb3IoXCJQb3dlcnMgb2YgdGF1IGlzIG5vdCBwcmVwYXJlZC5cIik7XG4gICAgICAgIHJldHVybiAtMTtcbiAgICB9XG5cbiAgICBjb25zdCBuUHVibGljID0gcjFjcy5uT3V0cHV0cyArIHIxY3MublB1YklucHV0cztcbiAgICBjb25zdCBkb21haW5TaXplID0gMiAqKiBjaXJQb3dlcjtcblxuICAgIC8vIFdyaXRlIHRoZSBoZWFkZXJcbiAgICAvLy8vLy8vLy8vL1xuICAgIGF3YWl0IHN0YXJ0V3JpdGVTZWN0aW9uKGZkWktleSwgMSk7XG4gICAgYXdhaXQgZmRaS2V5LndyaXRlVUxFMzIoMSk7IC8vIEdyb3RoXG4gICAgYXdhaXQgZW5kV3JpdGVTZWN0aW9uKGZkWktleSk7XG5cbiAgICAvLyBXcml0ZSB0aGUgR3JvdGggaGVhZGVyIHNlY3Rpb25cbiAgICAvLy8vLy8vLy8vL1xuXG4gICAgYXdhaXQgc3RhcnRXcml0ZVNlY3Rpb24oZmRaS2V5LCAyKTtcbiAgICBjb25zdCBwcmltZVEgPSBjdXJ2ZS5xO1xuICAgIGNvbnN0IG44cSA9IChNYXRoLmZsb29yKCAoU2NhbGFyLmJpdExlbmd0aChwcmltZVEpIC0gMSkgLyA2NCkgKzEpKjg7XG5cbiAgICBjb25zdCBwcmltZVIgPSBjdXJ2ZS5yO1xuICAgIGNvbnN0IG44ciA9IChNYXRoLmZsb29yKCAoU2NhbGFyLmJpdExlbmd0aChwcmltZVIpIC0gMSkgLyA2NCkgKzEpKjg7XG4gICAgY29uc3QgUnIgPSBTY2FsYXIubW9kKFNjYWxhci5zaGwoMSwgbjhyKjgpLCBwcmltZVIpO1xuICAgIGNvbnN0IFIyciA9IGN1cnZlLkZyLmUoU2NhbGFyLm1vZChTY2FsYXIubXVsKFJyLFJyKSwgcHJpbWVSKSk7XG5cbiAgICBhd2FpdCBmZFpLZXkud3JpdGVVTEUzMihuOHEpO1xuICAgIGF3YWl0IHdyaXRlQmlnSW50KGZkWktleSwgcHJpbWVRLCBuOHEpO1xuICAgIGF3YWl0IGZkWktleS53cml0ZVVMRTMyKG44cik7XG4gICAgYXdhaXQgd3JpdGVCaWdJbnQoZmRaS2V5LCBwcmltZVIsIG44cik7XG4gICAgYXdhaXQgZmRaS2V5LndyaXRlVUxFMzIocjFjcy5uVmFycyk7ICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRvdGFsIG51bWJlciBvZiBiYXJzXG4gICAgYXdhaXQgZmRaS2V5LndyaXRlVUxFMzIoblB1YmxpYyk7ICAgICAgICAgICAgICAgICAgICAgICAvLyBUb3RhbCBudW1iZXIgb2YgcHVibGljIHZhcnMgKG5vdCBpbmNsdWRpbmcgT05FKVxuICAgIGF3YWl0IGZkWktleS53cml0ZVVMRTMyKGRvbWFpblNpemUpOyAgICAgICAgICAgICAgICAgIC8vIGRvbWFpblNpemVcblxuICAgIGxldCBiQWxwaGExO1xuICAgIGJBbHBoYTEgPSBhd2FpdCBmZFBUYXUucmVhZChzRzEsIHNlY3Rpb25zUFRhdVs0XVswXS5wKTtcbiAgICBhd2FpdCBmZFpLZXkud3JpdGUoYkFscGhhMSk7XG4gICAgYkFscGhhMSA9IGF3YWl0IGN1cnZlLkcxLmJhdGNoTEVNdG9VKGJBbHBoYTEpO1xuICAgIGNzSGFzaGVyLnVwZGF0ZShiQWxwaGExKTtcblxuICAgIGxldCBiQmV0YTE7XG4gICAgYkJldGExID0gYXdhaXQgZmRQVGF1LnJlYWQoc0cxLCBzZWN0aW9uc1BUYXVbNV1bMF0ucCk7XG4gICAgYXdhaXQgZmRaS2V5LndyaXRlKGJCZXRhMSk7XG4gICAgYkJldGExID0gYXdhaXQgY3VydmUuRzEuYmF0Y2hMRU10b1UoYkJldGExKTtcbiAgICBjc0hhc2hlci51cGRhdGUoYkJldGExKTtcblxuICAgIGxldCBiQmV0YTI7XG4gICAgYkJldGEyID0gYXdhaXQgZmRQVGF1LnJlYWQoc0cyLCBzZWN0aW9uc1BUYXVbNl1bMF0ucCk7XG4gICAgYXdhaXQgZmRaS2V5LndyaXRlKGJCZXRhMik7XG4gICAgYkJldGEyID0gYXdhaXQgY3VydmUuRzIuYmF0Y2hMRU10b1UoYkJldGEyKTtcbiAgICBjc0hhc2hlci51cGRhdGUoYkJldGEyKTtcblxuICAgIGNvbnN0IGJnMSA9IG5ldyBVaW50OEFycmF5KHNHMSk7XG4gICAgY3VydmUuRzEudG9ScHJMRU0oYmcxLCAwLCBjdXJ2ZS5HMS5nKTtcbiAgICBjb25zdCBiZzIgPSBuZXcgVWludDhBcnJheShzRzIpO1xuICAgIGN1cnZlLkcyLnRvUnByTEVNKGJnMiwgMCwgY3VydmUuRzIuZyk7XG4gICAgY29uc3QgYmcxVSA9IG5ldyBVaW50OEFycmF5KHNHMSk7XG4gICAgY3VydmUuRzEudG9ScHJVbmNvbXByZXNzZWQoYmcxVSwgMCwgY3VydmUuRzEuZyk7XG4gICAgY29uc3QgYmcyVSA9IG5ldyBVaW50OEFycmF5KHNHMik7XG4gICAgY3VydmUuRzIudG9ScHJVbmNvbXByZXNzZWQoYmcyVSwgMCwgY3VydmUuRzIuZyk7XG5cbiAgICBhd2FpdCBmZFpLZXkud3JpdGUoYmcyKTsgICAgICAgIC8vIGdhbW1hMlxuICAgIGF3YWl0IGZkWktleS53cml0ZShiZzEpOyAgICAgICAgLy8gZGVsdGExXG4gICAgYXdhaXQgZmRaS2V5LndyaXRlKGJnMik7ICAgICAgICAvLyBkZWx0YTJcbiAgICBjc0hhc2hlci51cGRhdGUoYmcyVSk7ICAgICAgLy8gZ2FtbWEyXG4gICAgY3NIYXNoZXIudXBkYXRlKGJnMVUpOyAgICAgIC8vIGRlbHRhMVxuICAgIGNzSGFzaGVyLnVwZGF0ZShiZzJVKTsgICAgICAvLyBkZWx0YTJcbiAgICBhd2FpdCBlbmRXcml0ZVNlY3Rpb24oZmRaS2V5KTtcblxuICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKFwiUmVhZGluZyByMWNzXCIpO1xuICAgIGxldCBzUjFjcyA9IGF3YWl0IHJlYWRTZWN0aW9uKGZkUjFjcywgc2VjdGlvbnNSMWNzLCAyKTtcblxuICAgIGNvbnN0IEEgPSBuZXcgQmlnQXJyYXkocjFjcy5uVmFycyk7XG4gICAgY29uc3QgQjEgPSBuZXcgQmlnQXJyYXkocjFjcy5uVmFycyk7XG4gICAgY29uc3QgQjIgPSBuZXcgQmlnQXJyYXkocjFjcy5uVmFycyk7XG4gICAgY29uc3QgQyA9IG5ldyBCaWdBcnJheShyMWNzLm5WYXJzLSBuUHVibGljIC0xKTtcbiAgICBjb25zdCBJQyA9IG5ldyBBcnJheShuUHVibGljKzEpO1xuXG4gICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oXCJSZWFkaW5nIHRhdUcxXCIpO1xuICAgIGxldCBzVGF1RzEgPSBhd2FpdCByZWFkU2VjdGlvbihmZFBUYXUsIHNlY3Rpb25zUFRhdSwgMTIsIChkb21haW5TaXplIC0xKSpzRzEsIGRvbWFpblNpemUqc0cxKTtcbiAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhcIlJlYWRpbmcgdGF1RzJcIik7XG4gICAgbGV0IHNUYXVHMiA9IGF3YWl0IHJlYWRTZWN0aW9uKGZkUFRhdSwgc2VjdGlvbnNQVGF1LCAxMywgKGRvbWFpblNpemUgLTEpKnNHMiwgZG9tYWluU2l6ZSpzRzIpO1xuICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKFwiUmVhZGluZyBhbHBoYXRhdUcxXCIpO1xuICAgIGxldCBzQWxwaGFUYXVHMSA9IGF3YWl0IHJlYWRTZWN0aW9uKGZkUFRhdSwgc2VjdGlvbnNQVGF1LCAxNCwgKGRvbWFpblNpemUgLTEpKnNHMSwgZG9tYWluU2l6ZSpzRzEpO1xuICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKFwiUmVhZGluZyBiZXRhdGF1RzFcIik7XG4gICAgbGV0IHNCZXRhVGF1RzEgPSBhd2FpdCByZWFkU2VjdGlvbihmZFBUYXUsIHNlY3Rpb25zUFRhdSwgMTUsIChkb21haW5TaXplIC0xKSpzRzEsIGRvbWFpblNpemUqc0cxKTtcblxuICAgIGF3YWl0IHByb2Nlc3NDb25zdHJhaW50cygpO1xuXG4gICAgYXdhaXQgY29tcG9zZUFuZFdyaXRlUG9pbnRzKDMsIFwiRzFcIiwgSUMsIFwiSUNcIik7XG5cbiAgICBhd2FpdCB3cml0ZUhzKCk7XG5cbiAgICBhd2FpdCBoYXNoSFBvaW50cygpO1xuXG4gICAgYXdhaXQgY29tcG9zZUFuZFdyaXRlUG9pbnRzKDgsIFwiRzFcIiwgQywgXCJDXCIpO1xuICAgIGF3YWl0IGNvbXBvc2VBbmRXcml0ZVBvaW50cyg1LCBcIkcxXCIsIEEsIFwiQVwiKTtcbiAgICBhd2FpdCBjb21wb3NlQW5kV3JpdGVQb2ludHMoNiwgXCJHMVwiLCBCMSwgXCJCMVwiKTtcbiAgICBhd2FpdCBjb21wb3NlQW5kV3JpdGVQb2ludHMoNywgXCJHMlwiLCBCMiwgXCJCMlwiKTtcblxuICAgIGNvbnN0IGNzSGFzaCA9IGNzSGFzaGVyLmRpZ2VzdCgpO1xuICAgIC8vIENvbnRyaWJ1dGlvbnMgc2VjdGlvblxuICAgIGF3YWl0IHN0YXJ0V3JpdGVTZWN0aW9uKGZkWktleSwgMTApO1xuICAgIGF3YWl0IGZkWktleS53cml0ZShjc0hhc2gpO1xuICAgIGF3YWl0IGZkWktleS53cml0ZVVMRTMyKDApO1xuICAgIGF3YWl0IGVuZFdyaXRlU2VjdGlvbihmZFpLZXkpO1xuXG4gICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oZm9ybWF0SGFzaChjc0hhc2gsIFwiQ2lyY3VpdCBoYXNoOiBcIikpO1xuXG5cbiAgICBhd2FpdCBmZFpLZXkuY2xvc2UoKTtcbiAgICBhd2FpdCBmZFIxY3MuY2xvc2UoKTtcbiAgICBhd2FpdCBmZFBUYXUuY2xvc2UoKTtcblxuICAgIHJldHVybiBjc0hhc2g7XG5cbiAgICBhc3luYyBmdW5jdGlvbiB3cml0ZUhzKCkge1xuICAgICAgICBhd2FpdCBzdGFydFdyaXRlU2VjdGlvbihmZFpLZXksIDkpO1xuICAgICAgICBjb25zdCBidWZmT3V0ID0gbmV3IEJpZ0J1ZmZlcihkb21haW5TaXplKnNHMSk7XG4gICAgICAgIGlmIChjaXJQb3dlciA8IGN1cnZlLkZyLnMpIHtcbiAgICAgICAgICAgIGxldCBzVGF1RzEgPSBhd2FpdCByZWFkU2VjdGlvbihmZFBUYXUsIHNlY3Rpb25zUFRhdSwgMTIsIChkb21haW5TaXplKjItMSkqc0cxLCBkb21haW5TaXplKjIqc0cxKTtcbiAgICAgICAgICAgIGZvciAobGV0IGk9MDsgaTwgZG9tYWluU2l6ZTsgaSsrKSB7XG4gICAgICAgICAgICAgICAgaWYgKChsb2dnZXIpJiYoaSUxMDAwMCA9PSAwKSkgbG9nZ2VyLmRlYnVnKGBzcGxpdHRpbmcgYnVmZmVyOiAke2l9LyR7ZG9tYWluU2l6ZX1gKTtcbiAgICAgICAgICAgICAgICBjb25zdCBidWZmID0gc1RhdUcxLnNsaWNlKCAoaSoyKzEpKnNHMSwgKGkqMisxKSpzRzEgKyBzRzEgKTtcbiAgICAgICAgICAgICAgICBidWZmT3V0LnNldChidWZmLCBpKnNHMSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoY2lyUG93ZXIgPT0gY3VydmUuRnIucykge1xuICAgICAgICAgICAgY29uc3QgbyA9IHNlY3Rpb25zUFRhdVsxMl1bMF0ucCArICgoMiAqKiAoY2lyUG93ZXIrMSkpIC0xKSpzRzE7XG4gICAgICAgICAgICBhd2FpdCBmZFBUYXUucmVhZFRvQnVmZmVyKGJ1ZmZPdXQsIDAsIGRvbWFpblNpemUqc0cxLCBvICsgZG9tYWluU2l6ZSpzRzEpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmVycm9yKFwiQ2lyY3VpdCB0b28gYmlnXCIpO1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiQ2lyY3VpdCB0b28gYmlnIGZvciB0aGlzIGN1cnZlXCIpO1xuICAgICAgICB9XG4gICAgICAgIGF3YWl0IGZkWktleS53cml0ZShidWZmT3V0KTtcbiAgICAgICAgYXdhaXQgZW5kV3JpdGVTZWN0aW9uKGZkWktleSk7XG4gICAgfVxuXG4gICAgYXN5bmMgZnVuY3Rpb24gcHJvY2Vzc0NvbnN0cmFpbnRzKCkge1xuICAgICAgICBjb25zdCBidWZmQ29lZmYgPSBuZXcgVWludDhBcnJheSgxMiArIGN1cnZlLkZyLm44KTtcbiAgICAgICAgY29uc3QgYnVmZkNvZWZmViA9IG5ldyBEYXRhVmlldyhidWZmQ29lZmYuYnVmZmVyKTtcbiAgICAgICAgY29uc3QgYk9uZSA9IG5ldyBVaW50OEFycmF5KGN1cnZlLkZyLm44KTtcbiAgICAgICAgY3VydmUuRnIudG9ScHJMRShiT25lLCAwLCBjdXJ2ZS5Gci5lKDEpKTtcblxuICAgICAgICBsZXQgcjFjc1BvcyA9IDA7XG5cbiAgICAgICAgZnVuY3Rpb24gcjFjc19yZWFkVUxFMzIoKSB7XG4gICAgICAgICAgICBjb25zdCBidWZmID0gc1IxY3Muc2xpY2UocjFjc1BvcywgcjFjc1Bvcys0KTtcbiAgICAgICAgICAgIHIxY3NQb3MgKz0gNDtcbiAgICAgICAgICAgIGNvbnN0IGJ1ZmZWID0gbmV3IERhdGFWaWV3KGJ1ZmYuYnVmZmVyKTtcbiAgICAgICAgICAgIHJldHVybiBidWZmVi5nZXRVaW50MzIoMCwgdHJ1ZSk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBjb2VmcyA9IG5ldyBCaWdBcnJheSgpO1xuICAgICAgICBmb3IgKGxldCBjPTA7IGM8cjFjcy5uQ29uc3RyYWludHM7IGMrKykge1xuICAgICAgICAgICAgaWYgKChsb2dnZXIpJiYoYyUxMDAwMCA9PSAwKSkgbG9nZ2VyLmRlYnVnKGBwcm9jZXNzaW5nIGNvbnN0cmFpbnRzOiAke2N9LyR7cjFjcy5uQ29uc3RyYWludHN9YCk7XG4gICAgICAgICAgICBjb25zdCBuQSA9IHIxY3NfcmVhZFVMRTMyKCk7XG4gICAgICAgICAgICBmb3IgKGxldCBpPTA7IGk8bkE7IGkrKykge1xuICAgICAgICAgICAgICAgIGNvbnN0IHMgPSByMWNzX3JlYWRVTEUzMigpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGNvZWZwID0gcjFjc1BvcztcbiAgICAgICAgICAgICAgICByMWNzUG9zICs9IGN1cnZlLkZyLm44O1xuXG4gICAgICAgICAgICAgICAgY29uc3QgbDF0ID0gVEFVX0cxO1xuICAgICAgICAgICAgICAgIGNvbnN0IGwxID0gc0cxKmM7XG4gICAgICAgICAgICAgICAgY29uc3QgbDJ0ID0gQkVUQVRBVV9HMTtcbiAgICAgICAgICAgICAgICBjb25zdCBsMiA9IHNHMSpjO1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgQVtzXSA9PT0gXCJ1bmRlZmluZWRcIikgQVtzXSA9IFtdO1xuICAgICAgICAgICAgICAgIEFbc10ucHVzaChbbDF0LCBsMSwgY29lZnBdKTtcblxuICAgICAgICAgICAgICAgIGlmIChzIDw9IG5QdWJsaWMpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBJQ1tzXSA9PT0gXCJ1bmRlZmluZWRcIikgSUNbc10gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgSUNbc10ucHVzaChbbDJ0LCBsMiwgY29lZnBdKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIENbcy0gblB1YmxpYyAtMV0gPT09IFwidW5kZWZpbmVkXCIpIENbcy0gblB1YmxpYyAtMV0gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgQ1tzIC0gblB1YmxpYyAtMV0ucHVzaChbbDJ0LCBsMiwgY29lZnBdKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29lZnMucHVzaChbMCwgYywgcywgY29lZnBdKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgbkIgPSByMWNzX3JlYWRVTEUzMigpO1xuICAgICAgICAgICAgZm9yIChsZXQgaT0wOyBpPG5COyBpKyspIHtcbiAgICAgICAgICAgICAgICBjb25zdCBzID0gcjFjc19yZWFkVUxFMzIoKTtcbiAgICAgICAgICAgICAgICBjb25zdCBjb2VmcCA9IHIxY3NQb3M7XG4gICAgICAgICAgICAgICAgcjFjc1BvcyArPSBjdXJ2ZS5Gci5uODtcblxuICAgICAgICAgICAgICAgIGNvbnN0IGwxdCA9IFRBVV9HMTtcbiAgICAgICAgICAgICAgICBjb25zdCBsMSA9IHNHMSpjO1xuICAgICAgICAgICAgICAgIGNvbnN0IGwydCA9IFRBVV9HMjtcbiAgICAgICAgICAgICAgICBjb25zdCBsMiA9IHNHMipjO1xuICAgICAgICAgICAgICAgIGNvbnN0IGwzdCA9IEFMUEhBVEFVX0cxO1xuICAgICAgICAgICAgICAgIGNvbnN0IGwzID0gc0cxKmM7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBCMVtzXSA9PT0gXCJ1bmRlZmluZWRcIikgQjFbc10gPSBbXTtcbiAgICAgICAgICAgICAgICBCMVtzXS5wdXNoKFtsMXQsIGwxLCBjb2VmcF0pO1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgQjJbc10gPT09IFwidW5kZWZpbmVkXCIpIEIyW3NdID0gW107XG4gICAgICAgICAgICAgICAgQjJbc10ucHVzaChbbDJ0LCBsMiwgY29lZnBdKTtcblxuICAgICAgICAgICAgICAgIGlmIChzIDw9IG5QdWJsaWMpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBJQ1tzXSA9PT0gXCJ1bmRlZmluZWRcIikgSUNbc10gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgSUNbc10ucHVzaChbbDN0LCBsMywgY29lZnBdKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIENbcy0gblB1YmxpYyAtMV0gPT09IFwidW5kZWZpbmVkXCIpIENbcy0gblB1YmxpYyAtMV0gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgQ1tzLSBuUHVibGljIC0xXS5wdXNoKFtsM3QsIGwzLCBjb2VmcF0pO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGNvZWZzLnB1c2goWzEsIGMsIHMsIGNvZWZwXSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IG5DID0gcjFjc19yZWFkVUxFMzIoKTtcbiAgICAgICAgICAgIGZvciAobGV0IGk9MDsgaTxuQzsgaSsrKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcyA9IHIxY3NfcmVhZFVMRTMyKCk7XG4gICAgICAgICAgICAgICAgY29uc3QgY29lZnAgPSByMWNzUG9zO1xuICAgICAgICAgICAgICAgIHIxY3NQb3MgKz0gY3VydmUuRnIubjg7XG5cbiAgICAgICAgICAgICAgICBjb25zdCBsMXQgPSBUQVVfRzE7XG4gICAgICAgICAgICAgICAgY29uc3QgbDEgPSBzRzEqYztcbiAgICAgICAgICAgICAgICBpZiAocyA8PSBuUHVibGljKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgSUNbc10gPT09IFwidW5kZWZpbmVkXCIpIElDW3NdID0gW107XG4gICAgICAgICAgICAgICAgICAgIElDW3NdLnB1c2goW2wxdCwgbDEsIGNvZWZwXSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBDW3MtIG5QdWJsaWMgLTFdID09PSBcInVuZGVmaW5lZFwiKSBDW3MtIG5QdWJsaWMgLTFdID0gW107XG4gICAgICAgICAgICAgICAgICAgIENbcy0gblB1YmxpYyAtMV0ucHVzaChbbDF0LCBsMSwgY29lZnBdKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBmb3IgKGxldCBzID0gMDsgcyA8PSBuUHVibGljIDsgcysrKSB7XG4gICAgICAgICAgICBjb25zdCBsMXQgPSBUQVVfRzE7XG4gICAgICAgICAgICBjb25zdCBsMSA9IHNHMSoocjFjcy5uQ29uc3RyYWludHMgKyBzKTtcbiAgICAgICAgICAgIGNvbnN0IGwydCA9IEJFVEFUQVVfRzE7XG4gICAgICAgICAgICBjb25zdCBsMiA9IHNHMSoocjFjcy5uQ29uc3RyYWludHMgKyBzKTtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgQVtzXSA9PT0gXCJ1bmRlZmluZWRcIikgQVtzXSA9IFtdO1xuICAgICAgICAgICAgQVtzXS5wdXNoKFtsMXQsIGwxLCAtMV0pO1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBJQ1tzXSA9PT0gXCJ1bmRlZmluZWRcIikgSUNbc10gPSBbXTtcbiAgICAgICAgICAgIElDW3NdLnB1c2goW2wydCwgbDIsIC0xXSk7XG4gICAgICAgICAgICBjb2Vmcy5wdXNoKFswLCByMWNzLm5Db25zdHJhaW50cyArIHMsIHMsIC0xXSk7XG4gICAgICAgIH1cblxuXG4gICAgICAgIGF3YWl0IHN0YXJ0V3JpdGVTZWN0aW9uKGZkWktleSwgNCk7XG5cbiAgICAgICAgY29uc3QgYnVmZlNlY3Rpb24gPSBuZXcgQmlnQnVmZmVyKGNvZWZzLmxlbmd0aCooMTIrY3VydmUuRnIubjgpICsgNCk7XG5cbiAgICAgICAgY29uc3QgYnVmZjQgPSBuZXcgVWludDhBcnJheSg0KTtcbiAgICAgICAgY29uc3QgYnVmZjRWID0gbmV3IERhdGFWaWV3KGJ1ZmY0LmJ1ZmZlcik7XG4gICAgICAgIGJ1ZmY0Vi5zZXRVaW50MzIoMCwgY29lZnMubGVuZ3RoLCB0cnVlKTtcbiAgICAgICAgYnVmZlNlY3Rpb24uc2V0KGJ1ZmY0KTtcbiAgICAgICAgbGV0IGNvZWZzUG9zID0gNDtcbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPGNvZWZzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBpZiAoKGxvZ2dlcikmJihpJTEwMDAwMCA9PSAwKSkgbG9nZ2VyLmRlYnVnKGB3cml0aW5nIGNvZWZmczogJHtpfS8ke2NvZWZzLmxlbmd0aH1gKTtcbiAgICAgICAgICAgIHdyaXRlQ29lZihjb2Vmc1tpXSk7XG4gICAgICAgIH1cblxuICAgICAgICBhd2FpdCBmZFpLZXkud3JpdGUoYnVmZlNlY3Rpb24pO1xuICAgICAgICBhd2FpdCBlbmRXcml0ZVNlY3Rpb24oZmRaS2V5KTtcblxuICAgICAgICBmdW5jdGlvbiB3cml0ZUNvZWYoYykge1xuICAgICAgICAgICAgYnVmZkNvZWZmVi5zZXRVaW50MzIoMCwgY1swXSwgdHJ1ZSk7XG4gICAgICAgICAgICBidWZmQ29lZmZWLnNldFVpbnQzMig0LCBjWzFdLCB0cnVlKTtcbiAgICAgICAgICAgIGJ1ZmZDb2VmZlYuc2V0VWludDMyKDgsIGNbMl0sIHRydWUpO1xuICAgICAgICAgICAgbGV0IG47XG4gICAgICAgICAgICBpZiAoY1szXT49MCkge1xuICAgICAgICAgICAgICAgIG4gPSBjdXJ2ZS5Gci5mcm9tUnByTEUoc1IxY3Muc2xpY2UoY1szXSwgY1szXSArIGN1cnZlLkZyLm44KSwgMCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIG4gPSBjdXJ2ZS5Gci5mcm9tUnByTEUoYk9uZSwgMCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBuUjIgPSBjdXJ2ZS5Gci5tdWwobiwgUjJyKTtcbiAgICAgICAgICAgIGN1cnZlLkZyLnRvUnByTEUoYnVmZkNvZWZmLCAxMiwgblIyKTtcbiAgICAgICAgICAgIGJ1ZmZTZWN0aW9uLnNldChidWZmQ29lZmYsIGNvZWZzUG9zKTtcbiAgICAgICAgICAgIGNvZWZzUG9zICs9IGJ1ZmZDb2VmZi5sZW5ndGg7XG4gICAgICAgIH1cblxuICAgIH1cblxuICAgIGFzeW5jIGZ1bmN0aW9uIGNvbXBvc2VBbmRXcml0ZVBvaW50cyhpZFNlY3Rpb24sIGdyb3VwTmFtZSwgYXJyLCBzZWN0aW9uTmFtZSkge1xuICAgICAgICBjb25zdCBDSFVOS19TSVpFPSAxPDwxNTtcbiAgICAgICAgY29uc3QgRyA9IGN1cnZlW2dyb3VwTmFtZV07XG5cbiAgICAgICAgaGFzaFUzMihhcnIubGVuZ3RoKTtcbiAgICAgICAgYXdhaXQgc3RhcnRXcml0ZVNlY3Rpb24oZmRaS2V5LCBpZFNlY3Rpb24pO1xuXG4gICAgICAgIGxldCBvcFByb21pc2VzID0gW107XG5cbiAgICAgICAgbGV0IGk9MDtcbiAgICAgICAgd2hpbGUgKGk8YXJyLmxlbmd0aCkge1xuXG4gICAgICAgICAgICBsZXQgdD0wO1xuICAgICAgICAgICAgd2hpbGUgKChpPGFyci5sZW5ndGgpJiYodDxjdXJ2ZS50bS5jb25jdXJyZW5jeSkpIHtcbiAgICAgICAgICAgICAgICBpZiAobG9nZ2VyKSAgbG9nZ2VyLmRlYnVnKGBXcml0aW5nIHBvaW50cyBzdGFydCAke3NlY3Rpb25OYW1lfTogJHtpfS8ke2Fyci5sZW5ndGh9YCk7XG4gICAgICAgICAgICAgICAgbGV0IG4gPSAxO1xuICAgICAgICAgICAgICAgIGxldCBuUCA9IChhcnJbaV0gPyBhcnJbaV0ubGVuZ3RoIDogMCk7XG4gICAgICAgICAgICAgICAgd2hpbGUgKChpICsgbiA8IGFyci5sZW5ndGgpICYmIChuUCArIChhcnJbaStuXSA/IGFycltpK25dLmxlbmd0aCA6IDApIDwgQ0hVTktfU0laRSkgJiYgKG48Q0hVTktfU0laRSkpIHtcbiAgICAgICAgICAgICAgICAgICAgblAgKz0gKGFycltpK25dID8gYXJyW2krbl0ubGVuZ3RoIDogMCk7XG4gICAgICAgICAgICAgICAgICAgIG4gKys7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnN0IHN1YkFyciA9IGFyci5zbGljZShpLCBpICsgbik7XG4gICAgICAgICAgICAgICAgY29uc3QgX2kgPSBpO1xuICAgICAgICAgICAgICAgIG9wUHJvbWlzZXMucHVzaChjb21wb3NlQW5kV3JpdGVQb2ludHNUaHJlYWQoZ3JvdXBOYW1lLCBzdWJBcnIsIGxvZ2dlciwgc2VjdGlvbk5hbWUpLnRoZW4oIChyKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChsb2dnZXIpICBsb2dnZXIuZGVidWcoYFdyaXRpbmcgcG9pbnRzIGVuZCAke3NlY3Rpb25OYW1lfTogJHtfaX0vJHthcnIubGVuZ3RofWApO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcjtcbiAgICAgICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICAgICAgaSArPSBuO1xuICAgICAgICAgICAgICAgIHQrKztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgUHJvbWlzZS5hbGwob3BQcm9taXNlcyk7XG5cbiAgICAgICAgICAgIGZvciAobGV0IGs9MDsgazxyZXN1bHQubGVuZ3RoOyBrKyspIHtcbiAgICAgICAgICAgICAgICBhd2FpdCBmZFpLZXkud3JpdGUocmVzdWx0W2tdWzBdKTtcbiAgICAgICAgICAgICAgICBjb25zdCBidWZmID0gYXdhaXQgRy5iYXRjaExFTXRvVShyZXN1bHRba11bMF0pO1xuICAgICAgICAgICAgICAgIGNzSGFzaGVyLnVwZGF0ZShidWZmKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG9wUHJvbWlzZXMgPSBbXTtcblxuICAgICAgICB9XG4gICAgICAgIGF3YWl0IGVuZFdyaXRlU2VjdGlvbihmZFpLZXkpO1xuXG4gICAgfVxuXG4gICAgYXN5bmMgZnVuY3Rpb24gY29tcG9zZUFuZFdyaXRlUG9pbnRzVGhyZWFkKGdyb3VwTmFtZSwgYXJyLCBsb2dnZXIsIHNlY3Rpb25OYW1lKSB7XG4gICAgICAgIGNvbnN0IEcgPSBjdXJ2ZVtncm91cE5hbWVdO1xuICAgICAgICBjb25zdCBzR2luID0gRy5GLm44KjI7XG4gICAgICAgIGNvbnN0IHNHbWlkID0gRy5GLm44KjM7XG4gICAgICAgIGNvbnN0IHNHb3V0ID0gRy5GLm44KjI7XG4gICAgICAgIGxldCBmbkV4cCwgZm5NdWx0aUV4cCwgZm5CYXRjaFRvQWZmaW5lLCBmblplcm87XG4gICAgICAgIGlmIChncm91cE5hbWUgPT0gXCJHMVwiKSB7XG4gICAgICAgICAgICBmbkV4cCA9IFwiZzFtX3RpbWVzU2NhbGFyQWZmaW5lXCI7XG4gICAgICAgICAgICBmbk11bHRpRXhwID0gXCJnMW1fbXVsdGlleHBBZmZpbmVcIjtcbiAgICAgICAgICAgIGZuQmF0Y2hUb0FmZmluZSA9IFwiZzFtX2JhdGNoVG9BZmZpbmVcIjtcbiAgICAgICAgICAgIGZuWmVybyA9IFwiZzFtX3plcm9cIjtcbiAgICAgICAgfSBlbHNlIGlmIChncm91cE5hbWUgPT0gXCJHMlwiKSB7XG4gICAgICAgICAgICBmbkV4cCA9IFwiZzJtX3RpbWVzU2NhbGFyQWZmaW5lXCI7XG4gICAgICAgICAgICBmbk11bHRpRXhwID0gXCJnMm1fbXVsdGlleHBBZmZpbmVcIjtcbiAgICAgICAgICAgIGZuQmF0Y2hUb0FmZmluZSA9IFwiZzJtX2JhdGNoVG9BZmZpbmVcIjtcbiAgICAgICAgICAgIGZuWmVybyA9IFwiZzJtX3plcm9cIjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgZ3JvdXBcIik7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IGFjYyA9MDtcbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPGFyci5sZW5ndGg7IGkrKykgYWNjICs9IGFycltpXSA/IGFycltpXS5sZW5ndGggOiAwO1xuICAgICAgICBsZXQgYkJhc2VzLCBiU2NhbGFycztcbiAgICAgICAgaWYgKGFjYz4gMjw8MTQpIHtcbiAgICAgICAgICAgIGJCYXNlcyA9IG5ldyBCaWdCdWZmZXIoYWNjKnNHaW4pO1xuICAgICAgICAgICAgYlNjYWxhcnMgPSBuZXcgQmlnQnVmZmVyKGFjYypjdXJ2ZS5Gci5uOCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBiQmFzZXMgPSBuZXcgVWludDhBcnJheShhY2Mqc0dpbik7XG4gICAgICAgICAgICBiU2NhbGFycyA9IG5ldyBVaW50OEFycmF5KGFjYypjdXJ2ZS5Gci5uOCk7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IHBCID0wO1xuICAgICAgICBsZXQgcFMgPTA7XG5cbiAgICAgICAgY29uc3Qgc0J1ZmZzID0gW1xuICAgICAgICAgICAgc1RhdUcxLFxuICAgICAgICAgICAgc1RhdUcyLFxuICAgICAgICAgICAgc0FscGhhVGF1RzEsXG4gICAgICAgICAgICBzQmV0YVRhdUcxXG4gICAgICAgIF07XG5cbiAgICAgICAgY29uc3QgYk9uZSA9IG5ldyBVaW50OEFycmF5KGN1cnZlLkZyLm44KTtcbiAgICAgICAgY3VydmUuRnIudG9ScHJMRShiT25lLCAwLCBjdXJ2ZS5Gci5lKDEpKTtcblxuICAgICAgICBsZXQgb2Zmc2V0ID0gMDtcbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPGFyci5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgaWYgKCFhcnJbaV0pIGNvbnRpbnVlO1xuICAgICAgICAgICAgZm9yIChsZXQgaj0wOyBqPGFycltpXS5sZW5ndGg7IGorKykge1xuICAgICAgICAgICAgICAgIGlmICgobG9nZ2VyKSYmKGopJiYoaiUxMDAwMCA9PSAwKSkgIGxvZ2dlci5kZWJ1ZyhgQ29uZmlndXJpbmcgYmlnIGFycmF5ICR7c2VjdGlvbk5hbWV9OiAke2p9LyR7YXJyW2ldLmxlbmd0aH1gKTtcbiAgICAgICAgICAgICAgICBiQmFzZXMuc2V0KFxuICAgICAgICAgICAgICAgICAgICBzQnVmZnNbYXJyW2ldW2pdWzBdXS5zbGljZShcbiAgICAgICAgICAgICAgICAgICAgICAgIGFycltpXVtqXVsxXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGFycltpXVtqXVsxXSArIHNHaW5cbiAgICAgICAgICAgICAgICAgICAgKSwgb2Zmc2V0KnNHaW5cbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIGlmIChhcnJbaV1bal1bMl0+PTApIHtcbiAgICAgICAgICAgICAgICAgICAgYlNjYWxhcnMuc2V0KFxuICAgICAgICAgICAgICAgICAgICAgICAgc1IxY3Muc2xpY2UoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJyW2ldW2pdWzJdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFycltpXVtqXVsyXSArIGN1cnZlLkZyLm44XG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0KmN1cnZlLkZyLm44XG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgYlNjYWxhcnMuc2V0KGJPbmUsIG9mZnNldCpjdXJ2ZS5Gci5uOCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIG9mZnNldCArKztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChhcnIubGVuZ3RoPjEpIHtcbiAgICAgICAgICAgIGNvbnN0IHRhc2sgPSBbXTtcbiAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkFMTE9DU0VUXCIsIHZhcjogMCwgYnVmZjogYkJhc2VzfSk7XG4gICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJBTExPQ1NFVFwiLCB2YXI6IDEsIGJ1ZmY6IGJTY2FsYXJzfSk7XG4gICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJBTExPQ1wiLCB2YXI6IDIsIGxlbjogYXJyLmxlbmd0aCpzR21pZH0pO1xuICAgICAgICAgICAgcEIgPSAwO1xuICAgICAgICAgICAgcFMgPSAwO1xuICAgICAgICAgICAgbGV0IHBEID0wO1xuICAgICAgICAgICAgZm9yIChsZXQgaT0wOyBpPGFyci5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIGlmICghYXJyW2ldKSB7XG4gICAgICAgICAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkNBTExcIiwgZm5OYW1lOiBmblplcm8sIHBhcmFtczogW1xuICAgICAgICAgICAgICAgICAgICAgICAge3ZhcjogMiwgb2Zmc2V0OiBwRH1cbiAgICAgICAgICAgICAgICAgICAgXX0pO1xuICAgICAgICAgICAgICAgICAgICBwRCArPSBzR21pZDtcbiAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChhcnJbaV0ubGVuZ3RoID09IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiQ0FMTFwiLCBmbk5hbWU6IGZuRXhwLCBwYXJhbXM6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHt2YXI6IDAsIG9mZnNldDogcEJ9LFxuICAgICAgICAgICAgICAgICAgICAgICAge3ZhcjogMSwgb2Zmc2V0OiBwU30sXG4gICAgICAgICAgICAgICAgICAgICAgICB7dmFsOiBjdXJ2ZS5Gci5uOH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7dmFyOiAyLCBvZmZzZXQ6IHBEfVxuICAgICAgICAgICAgICAgICAgICBdfSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiQ0FMTFwiLCBmbk5hbWU6IGZuTXVsdGlFeHAsIHBhcmFtczogW1xuICAgICAgICAgICAgICAgICAgICAgICAge3ZhcjogMCwgb2Zmc2V0OiBwQn0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7dmFyOiAxLCBvZmZzZXQ6IHBTfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHt2YWw6IGN1cnZlLkZyLm44fSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHt2YWw6IGFycltpXS5sZW5ndGh9LFxuICAgICAgICAgICAgICAgICAgICAgICAge3ZhcjogMiwgb2Zmc2V0OiBwRH1cbiAgICAgICAgICAgICAgICAgICAgXX0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBwQiArPSBzR2luKmFycltpXS5sZW5ndGg7XG4gICAgICAgICAgICAgICAgcFMgKz0gY3VydmUuRnIubjgqYXJyW2ldLmxlbmd0aDtcbiAgICAgICAgICAgICAgICBwRCArPSBzR21pZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkNBTExcIiwgZm5OYW1lOiBmbkJhdGNoVG9BZmZpbmUsIHBhcmFtczogW1xuICAgICAgICAgICAgICAgIHt2YXI6IDJ9LFxuICAgICAgICAgICAgICAgIHt2YWw6IGFyci5sZW5ndGh9LFxuICAgICAgICAgICAgICAgIHt2YXI6IDJ9LFxuICAgICAgICAgICAgXX0pO1xuICAgICAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiR0VUXCIsIG91dDogMCwgdmFyOiAyLCBsZW46IGFyci5sZW5ndGgqc0dvdXR9KTtcblxuICAgICAgICAgICAgY29uc3QgcmVzID0gYXdhaXQgY3VydmUudG0ucXVldWVBY3Rpb24odGFzayk7XG4gICAgICAgICAgICByZXR1cm4gcmVzO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbGV0IHJlcyA9IGF3YWl0IEcubXVsdGlFeHBBZmZpbmUoYkJhc2VzLCBiU2NhbGFycywgbG9nZ2VyLCBzZWN0aW9uTmFtZSk7XG4gICAgICAgICAgICByZXMgPSBbIEcudG9BZmZpbmUocmVzKSBdO1xuICAgICAgICAgICAgcmV0dXJuIHJlcztcbiAgICAgICAgfVxuICAgIH1cblxuXG4gICAgYXN5bmMgZnVuY3Rpb24gaGFzaEhQb2ludHMoKSB7XG4gICAgICAgIGNvbnN0IENIVU5LX1NJWkUgPSAxPDwxNDtcblxuICAgICAgICBoYXNoVTMyKGRvbWFpblNpemUtMSk7XG5cbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPGRvbWFpblNpemUtMTsgaSs9IENIVU5LX1NJWkUpIHtcbiAgICAgICAgICAgIGlmIChsb2dnZXIpICBsb2dnZXIuZGVidWcoYEhhc2hpbmdIUG9pbnRzOiAke2l9LyR7ZG9tYWluU2l6ZX1gKTtcbiAgICAgICAgICAgIGNvbnN0IG4gPSBNYXRoLm1pbihkb21haW5TaXplLTEsIENIVU5LX1NJWkUpO1xuICAgICAgICAgICAgYXdhaXQgaGFzaEhQb2ludHNDaHVuayhpLCBuKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGFzeW5jIGZ1bmN0aW9uIGhhc2hIUG9pbnRzQ2h1bmsob2Zmc2V0LCBuUG9pbnRzKSB7XG4gICAgICAgIGNvbnN0IGJ1ZmYxID0gYXdhaXQgZmRQVGF1LnJlYWQoblBvaW50cyAqc0cxLCBzZWN0aW9uc1BUYXVbMl1bMF0ucCArIChvZmZzZXQgKyBkb21haW5TaXplKSpzRzEpO1xuICAgICAgICBjb25zdCBidWZmMiA9IGF3YWl0IGZkUFRhdS5yZWFkKG5Qb2ludHMgKnNHMSwgc2VjdGlvbnNQVGF1WzJdWzBdLnAgKyBvZmZzZXQqc0cxKTtcbiAgICAgICAgY29uc3QgY29uY3VycmVuY3k9IGN1cnZlLnRtLmNvbmN1cnJlbmN5O1xuICAgICAgICBjb25zdCBuUG9pbnRzUGVyVGhyZWFkID0gTWF0aC5mbG9vcihuUG9pbnRzIC8gY29uY3VycmVuY3kpO1xuICAgICAgICBjb25zdCBvcFByb21pc2VzID0gW107XG4gICAgICAgIGZvciAobGV0IGk9MDsgaTxjb25jdXJyZW5jeTsgaSsrKSB7XG4gICAgICAgICAgICBsZXQgbjtcbiAgICAgICAgICAgIGlmIChpPCBjb25jdXJyZW5jeS0xKSB7XG4gICAgICAgICAgICAgICAgbiA9IG5Qb2ludHNQZXJUaHJlYWQ7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIG4gPSBuUG9pbnRzIC0gaSpuUG9pbnRzUGVyVGhyZWFkO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG49PTApIGNvbnRpbnVlO1xuXG4gICAgICAgICAgICBjb25zdCBzdWJCdWZmMSA9IGJ1ZmYxLnNsaWNlKGkqblBvaW50c1BlclRocmVhZCpzRzEsIChpKm5Qb2ludHNQZXJUaHJlYWQrbikqc0cxKTtcbiAgICAgICAgICAgIGNvbnN0IHN1YkJ1ZmYyID0gYnVmZjIuc2xpY2UoaSpuUG9pbnRzUGVyVGhyZWFkKnNHMSwgKGkqblBvaW50c1BlclRocmVhZCtuKSpzRzEpO1xuICAgICAgICAgICAgb3BQcm9taXNlcy5wdXNoKGhhc2hIUG9pbnRzVGhyZWFkKHN1YkJ1ZmYxLCBzdWJCdWZmMikpO1xuICAgICAgICB9XG5cblxuICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBQcm9taXNlLmFsbChvcFByb21pc2VzKTtcblxuICAgICAgICBmb3IgKGxldCBpPTA7IGk8cmVzdWx0Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBjc0hhc2hlci51cGRhdGUocmVzdWx0W2ldWzBdKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGFzeW5jIGZ1bmN0aW9uIGhhc2hIUG9pbnRzVGhyZWFkKGJ1ZmYxLCBidWZmMikge1xuICAgICAgICBjb25zdCBuUG9pbnRzID0gYnVmZjEuYnl0ZUxlbmd0aC9zRzE7XG4gICAgICAgIGNvbnN0IHNHbWlkID0gY3VydmUuRzEuRi5uOCozO1xuICAgICAgICBjb25zdCB0YXNrID0gW107XG4gICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkFMTE9DU0VUXCIsIHZhcjogMCwgYnVmZjogYnVmZjF9KTtcbiAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiQUxMT0NTRVRcIiwgdmFyOiAxLCBidWZmOiBidWZmMn0pO1xuICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJBTExPQ1wiLCB2YXI6IDIsIGxlbjogblBvaW50cypzR21pZH0pO1xuICAgICAgICBmb3IgKGxldCBpPTA7IGk8blBvaW50czsgaSsrKSB7XG4gICAgICAgICAgICB0YXNrLnB1c2goe1xuICAgICAgICAgICAgICAgIGNtZDogXCJDQUxMXCIsXG4gICAgICAgICAgICAgICAgZm5OYW1lOiBcImcxbV9zdWJBZmZpbmVcIixcbiAgICAgICAgICAgICAgICBwYXJhbXM6IFtcbiAgICAgICAgICAgICAgICAgICAge3ZhcjogMCwgb2Zmc2V0OiBpKnNHMX0sXG4gICAgICAgICAgICAgICAgICAgIHt2YXI6IDEsIG9mZnNldDogaSpzRzF9LFxuICAgICAgICAgICAgICAgICAgICB7dmFyOiAyLCBvZmZzZXQ6IGkqc0dtaWR9LFxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkNBTExcIiwgZm5OYW1lOiBcImcxbV9iYXRjaFRvQWZmaW5lXCIsIHBhcmFtczogW1xuICAgICAgICAgICAge3ZhcjogMn0sXG4gICAgICAgICAgICB7dmFsOiBuUG9pbnRzfSxcbiAgICAgICAgICAgIHt2YXI6IDJ9LFxuICAgICAgICBdfSk7XG4gICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkNBTExcIiwgZm5OYW1lOiBcImcxbV9iYXRjaExFTXRvVVwiLCBwYXJhbXM6IFtcbiAgICAgICAgICAgIHt2YXI6IDJ9LFxuICAgICAgICAgICAge3ZhbDogblBvaW50c30sXG4gICAgICAgICAgICB7dmFyOiAyfSxcbiAgICAgICAgXX0pO1xuICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJHRVRcIiwgb3V0OiAwLCB2YXI6IDIsIGxlbjogblBvaW50cypzRzF9KTtcblxuICAgICAgICBjb25zdCByZXMgPSBhd2FpdCBjdXJ2ZS50bS5xdWV1ZUFjdGlvbih0YXNrKTtcblxuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGhhc2hVMzIobikge1xuICAgICAgICBjb25zdCBidWZmID0gbmV3IFVpbnQ4QXJyYXkoNCk7XG4gICAgICAgIGNvbnN0IGJ1ZmZWID0gbmV3IERhdGFWaWV3KGJ1ZmYuYnVmZmVyLCBidWZmLmJ5dGVPZmZzZXQsIGJ1ZmYuYnl0ZUxlbmd0aCk7XG4gICAgICAgIGJ1ZmZWLnNldFVpbnQzMigwLCBuLCBmYWxzZSk7XG4gICAgICAgIGNzSGFzaGVyLnVwZGF0ZShidWZmKTtcbiAgICB9XG5cbn1cblxuXG4iLCJcbmltcG9ydCAqIGFzIGJpbkZpbGVVdGlscyBmcm9tIFwiQGlkZW4zL2JpbmZpbGV1dGlsc1wiO1xuaW1wb3J0ICogYXMgemtleVV0aWxzIGZyb20gXCIuL3prZXlfdXRpbHMuanNcIjtcbmltcG9ydCAqIGFzIGZhc3RGaWxlIGZyb20gXCJmYXN0ZmlsZVwiO1xuaW1wb3J0IHsgZ2V0Q3VydmVGcm9tUSBhcyBnZXRDdXJ2ZSB9IGZyb20gXCIuL2N1cnZlcy5qc1wiO1xuXG5leHBvcnQgZGVmYXVsdCBhc3luYyBmdW5jdGlvbiBwaGFzZTJleHBvcnRNUENQYXJhbXMoemtleU5hbWUsIG1wY3BhcmFtc05hbWUsIGxvZ2dlcikge1xuXG4gICAgY29uc3Qge2ZkOiBmZFpLZXksIHNlY3Rpb25zOiBzZWN0aW9uc1pLZXl9ID0gYXdhaXQgYmluRmlsZVV0aWxzLnJlYWRCaW5GaWxlKHprZXlOYW1lLCBcInprZXlcIiwgMik7XG4gICAgY29uc3QgemtleSA9IGF3YWl0IHprZXlVdGlscy5yZWFkSGVhZGVyKGZkWktleSwgc2VjdGlvbnNaS2V5KTtcbiAgICBpZiAoemtleS5wcm90b2NvbCAhPSBcImdyb3RoMTZcIikge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJ6a2V5IGZpbGUgaXMgbm90IGdyb3RoMTZcIik7XG4gICAgfVxuXG4gICAgY29uc3QgY3VydmUgPSBhd2FpdCBnZXRDdXJ2ZSh6a2V5LnEpO1xuICAgIGNvbnN0IHNHMSA9IGN1cnZlLkcxLkYubjgqMjtcbiAgICBjb25zdCBzRzIgPSBjdXJ2ZS5HMi5GLm44KjI7XG5cbiAgICBjb25zdCBtcGNQYXJhbXMgPSBhd2FpdCB6a2V5VXRpbHMucmVhZE1QQ1BhcmFtcyhmZFpLZXksIGN1cnZlLCBzZWN0aW9uc1pLZXkpO1xuXG4gICAgY29uc3QgZmRNUENQYXJhbXMgPSBhd2FpdCBmYXN0RmlsZS5jcmVhdGVPdmVycmlkZShtcGNwYXJhbXNOYW1lKTtcblxuICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuICAgIC8vIFZlcmlmaWNhdGlvbiBLZXkgU2VjdGlvblxuICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuICAgIGF3YWl0IHdyaXRlRzEoemtleS52a19hbHBoYV8xKTtcbiAgICBhd2FpdCB3cml0ZUcxKHprZXkudmtfYmV0YV8xKTtcbiAgICBhd2FpdCB3cml0ZUcyKHprZXkudmtfYmV0YV8yKTtcbiAgICBhd2FpdCB3cml0ZUcyKHprZXkudmtfZ2FtbWFfMik7XG4gICAgYXdhaXQgd3JpdGVHMSh6a2V5LnZrX2RlbHRhXzEpO1xuICAgIGF3YWl0IHdyaXRlRzIoemtleS52a19kZWx0YV8yKTtcblxuICAgIC8vIElDXG4gICAgbGV0IGJ1ZmZCYXNlc0lDO1xuICAgIGJ1ZmZCYXNlc0lDID0gYXdhaXQgYmluRmlsZVV0aWxzLnJlYWRTZWN0aW9uKGZkWktleSwgc2VjdGlvbnNaS2V5LCAzKTtcbiAgICBidWZmQmFzZXNJQyA9IGF3YWl0IGN1cnZlLkcxLmJhdGNoTEVNdG9VKGJ1ZmZCYXNlc0lDKTtcblxuICAgIGF3YWl0IHdyaXRlUG9pbnRBcnJheShcIkcxXCIsIGJ1ZmZCYXNlc0lDKTtcblxuICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuICAgIC8vIGggU2VjdGlvblxuICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuICAgIGNvbnN0IGJ1ZmZCYXNlc0hfTG9kZCA9IGF3YWl0IGJpbkZpbGVVdGlscy5yZWFkU2VjdGlvbihmZFpLZXksIHNlY3Rpb25zWktleSwgOSk7XG5cbiAgICBsZXQgYnVmZkJhc2VzSF9UYXU7XG4gICAgYnVmZkJhc2VzSF9UYXUgPSBhd2FpdCBjdXJ2ZS5HMS5mZnQoYnVmZkJhc2VzSF9Mb2RkLCBcImFmZmluZVwiLCBcImphY29iaWFuXCIsIGxvZ2dlcik7XG4gICAgYnVmZkJhc2VzSF9UYXUgPSBhd2FpdCBjdXJ2ZS5HMS5iYXRjaEFwcGx5S2V5KGJ1ZmZCYXNlc0hfVGF1LCBjdXJ2ZS5Gci5uZWcoY3VydmUuRnIuZSgyKSksIGN1cnZlLkZyLndbemtleS5wb3dlcisxXSwgXCJqYWNvYmlhblwiLCBcImFmZmluZVwiLCBsb2dnZXIpO1xuXG4gICAgLy8gUmVtb3ZlIGxhc3QgZWxlbWVudC4gIChUaGUgZGVncmVlIG9mIEggd2lsbCBiZSBhbHdheXMgbS0yKVxuICAgIGJ1ZmZCYXNlc0hfVGF1ID0gYnVmZkJhc2VzSF9UYXUuc2xpY2UoMCwgYnVmZkJhc2VzSF9UYXUuYnl0ZUxlbmd0aCAtIHNHMSk7XG4gICAgYnVmZkJhc2VzSF9UYXUgPSBhd2FpdCBjdXJ2ZS5HMS5iYXRjaExFTXRvVShidWZmQmFzZXNIX1RhdSk7XG4gICAgYXdhaXQgd3JpdGVQb2ludEFycmF5KFwiRzFcIiwgYnVmZkJhc2VzSF9UYXUpO1xuXG4gICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4gICAgLy8gTCBzZWN0aW9uXG4gICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4gICAgbGV0IGJ1ZmZCYXNlc0M7XG4gICAgYnVmZkJhc2VzQyA9IGF3YWl0IGJpbkZpbGVVdGlscy5yZWFkU2VjdGlvbihmZFpLZXksIHNlY3Rpb25zWktleSwgOCk7XG4gICAgYnVmZkJhc2VzQyA9IGF3YWl0IGN1cnZlLkcxLmJhdGNoTEVNdG9VKGJ1ZmZCYXNlc0MpO1xuICAgIGF3YWl0IHdyaXRlUG9pbnRBcnJheShcIkcxXCIsIGJ1ZmZCYXNlc0MpO1xuXG4gICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4gICAgLy8gQSBTZWN0aW9uIChDIHNlY3Rpb24pXG4gICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4gICAgbGV0IGJ1ZmZCYXNlc0E7XG4gICAgYnVmZkJhc2VzQSA9IGF3YWl0IGJpbkZpbGVVdGlscy5yZWFkU2VjdGlvbihmZFpLZXksIHNlY3Rpb25zWktleSwgNSk7XG4gICAgYnVmZkJhc2VzQSA9IGF3YWl0IGN1cnZlLkcxLmJhdGNoTEVNdG9VKGJ1ZmZCYXNlc0EpO1xuICAgIGF3YWl0IHdyaXRlUG9pbnRBcnJheShcIkcxXCIsIGJ1ZmZCYXNlc0EpO1xuXG4gICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4gICAgLy8gQjEgU2VjdGlvblxuICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuICAgIGxldCBidWZmQmFzZXNCMTtcbiAgICBidWZmQmFzZXNCMSA9IGF3YWl0IGJpbkZpbGVVdGlscy5yZWFkU2VjdGlvbihmZFpLZXksIHNlY3Rpb25zWktleSwgNik7XG4gICAgYnVmZkJhc2VzQjEgPSBhd2FpdCBjdXJ2ZS5HMS5iYXRjaExFTXRvVShidWZmQmFzZXNCMSk7XG4gICAgYXdhaXQgd3JpdGVQb2ludEFycmF5KFwiRzFcIiwgYnVmZkJhc2VzQjEpO1xuXG4gICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4gICAgLy8gQjIgU2VjdGlvblxuICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuICAgIGxldCBidWZmQmFzZXNCMjtcbiAgICBidWZmQmFzZXNCMiA9IGF3YWl0IGJpbkZpbGVVdGlscy5yZWFkU2VjdGlvbihmZFpLZXksIHNlY3Rpb25zWktleSwgNyk7XG4gICAgYnVmZkJhc2VzQjIgPSBhd2FpdCBjdXJ2ZS5HMi5iYXRjaExFTXRvVShidWZmQmFzZXNCMik7XG4gICAgYXdhaXQgd3JpdGVQb2ludEFycmF5KFwiRzJcIiwgYnVmZkJhc2VzQjIpO1xuXG4gICAgYXdhaXQgZmRNUENQYXJhbXMud3JpdGUobXBjUGFyYW1zLmNzSGFzaCk7XG4gICAgYXdhaXQgd3JpdGVVMzIobXBjUGFyYW1zLmNvbnRyaWJ1dGlvbnMubGVuZ3RoKTtcblxuICAgIGZvciAobGV0IGk9MDsgaTxtcGNQYXJhbXMuY29udHJpYnV0aW9ucy5sZW5ndGg7IGkrKykge1xuICAgICAgICBjb25zdCBjID0gbXBjUGFyYW1zLmNvbnRyaWJ1dGlvbnNbaV07XG4gICAgICAgIGF3YWl0IHdyaXRlRzEoYy5kZWx0YUFmdGVyKTtcbiAgICAgICAgYXdhaXQgd3JpdGVHMShjLmRlbHRhLmcxX3MpO1xuICAgICAgICBhd2FpdCB3cml0ZUcxKGMuZGVsdGEuZzFfc3gpO1xuICAgICAgICBhd2FpdCB3cml0ZUcyKGMuZGVsdGEuZzJfc3B4KTtcbiAgICAgICAgYXdhaXQgZmRNUENQYXJhbXMud3JpdGUoYy50cmFuc2NyaXB0KTtcbiAgICB9XG5cbiAgICBhd2FpdCBmZFpLZXkuY2xvc2UoKTtcbiAgICBhd2FpdCBmZE1QQ1BhcmFtcy5jbG9zZSgpO1xuXG4gICAgYXN5bmMgZnVuY3Rpb24gd3JpdGVHMShQKSB7XG4gICAgICAgIGNvbnN0IGJ1ZmYgPSBuZXcgVWludDhBcnJheShzRzEpO1xuICAgICAgICBjdXJ2ZS5HMS50b1JwclVuY29tcHJlc3NlZChidWZmLCAwLCBQKTtcbiAgICAgICAgYXdhaXQgZmRNUENQYXJhbXMud3JpdGUoYnVmZik7XG4gICAgfVxuXG4gICAgYXN5bmMgZnVuY3Rpb24gd3JpdGVHMihQKSB7XG4gICAgICAgIGNvbnN0IGJ1ZmYgPSBuZXcgVWludDhBcnJheShzRzIpO1xuICAgICAgICBjdXJ2ZS5HMi50b1JwclVuY29tcHJlc3NlZChidWZmLCAwLCBQKTtcbiAgICAgICAgYXdhaXQgZmRNUENQYXJhbXMud3JpdGUoYnVmZik7XG4gICAgfVxuXG4gICAgYXN5bmMgZnVuY3Rpb24gd3JpdGVQb2ludEFycmF5KGdyb3VwTmFtZSwgYnVmZikge1xuICAgICAgICBsZXQgc0c7XG4gICAgICAgIGlmIChncm91cE5hbWUgPT0gXCJHMVwiKSB7XG4gICAgICAgICAgICBzRyA9IHNHMTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHNHID0gc0cyO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgYnVmZlNpemUgPSBuZXcgVWludDhBcnJheSg0KTtcbiAgICAgICAgY29uc3QgYnVmZlNpemVWID0gbmV3IERhdGFWaWV3KGJ1ZmZTaXplLmJ1ZmZlciwgYnVmZlNpemUuYnl0ZU9mZnNldCwgYnVmZlNpemUuYnl0ZUxlbmd0aCk7XG4gICAgICAgIGJ1ZmZTaXplVi5zZXRVaW50MzIoMCwgYnVmZi5ieXRlTGVuZ3RoIC8gc0csIGZhbHNlKTtcblxuICAgICAgICBhd2FpdCBmZE1QQ1BhcmFtcy53cml0ZShidWZmU2l6ZSk7XG4gICAgICAgIGF3YWl0IGZkTVBDUGFyYW1zLndyaXRlKGJ1ZmYpO1xuICAgIH1cblxuICAgIGFzeW5jIGZ1bmN0aW9uIHdyaXRlVTMyKG4pIHtcbiAgICAgICAgY29uc3QgYnVmZlNpemUgPSBuZXcgVWludDhBcnJheSg0KTtcbiAgICAgICAgY29uc3QgYnVmZlNpemVWID0gbmV3IERhdGFWaWV3KGJ1ZmZTaXplLmJ1ZmZlciwgYnVmZlNpemUuYnl0ZU9mZnNldCwgYnVmZlNpemUuYnl0ZUxlbmd0aCk7XG4gICAgICAgIGJ1ZmZTaXplVi5zZXRVaW50MzIoMCwgbiwgZmFsc2UpO1xuXG4gICAgICAgIGF3YWl0IGZkTVBDUGFyYW1zLndyaXRlKGJ1ZmZTaXplKTtcbiAgICB9XG5cblxuXG59XG4iLCIvKlxuICAgIENvcHlyaWdodCAyMDE4IDBLSU1TIGFzc29jaWF0aW9uLlxuXG4gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2Ygc25hcmtKUy5cblxuICAgIHNuYXJrSlMgaXMgYSBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0XG4gICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxuICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG5cbiAgICBzbmFya0pTIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUXG4gICAgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZXG4gICAgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljXG4gICAgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuXG4gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAgICBhbG9uZyB3aXRoIHNuYXJrSlMuIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXG4qL1xuXG5pbXBvcnQgKiBhcyB6a2V5VXRpbHMgZnJvbSBcIi4vemtleV91dGlscy5qc1wiO1xuaW1wb3J0ICogYXMgYmluRmlsZVV0aWxzIGZyb20gXCJAaWRlbjMvYmluZmlsZXV0aWxzXCI7XG5pbXBvcnQgKiBhcyBmYXN0RmlsZSBmcm9tIFwiZmFzdGZpbGVcIjtcbmltcG9ydCB7IGdldEN1cnZlRnJvbVEgYXMgZ2V0Q3VydmUgfSBmcm9tIFwiLi9jdXJ2ZXMuanNcIjtcbmltcG9ydCAqIGFzIG1pc2MgZnJvbSBcIi4vbWlzYy5qc1wiO1xuXG5leHBvcnQgZGVmYXVsdCBhc3luYyBmdW5jdGlvbiBwaGFzZTJpbXBvcnRNUENQYXJhbXMoemtleU5hbWVPbGQsIG1wY3BhcmFtc05hbWUsIHprZXlOYW1lTmV3LCBuYW1lLCBsb2dnZXIpIHtcblxuICAgIGNvbnN0IHtmZDogZmRaS2V5T2xkLCBzZWN0aW9uczogc2VjdGlvbnNaS2V5T2xkfSA9IGF3YWl0IGJpbkZpbGVVdGlscy5yZWFkQmluRmlsZSh6a2V5TmFtZU9sZCwgXCJ6a2V5XCIsIDIpO1xuICAgIGNvbnN0IHprZXlIZWFkZXIgPSBhd2FpdCB6a2V5VXRpbHMucmVhZEhlYWRlcihmZFpLZXlPbGQsIHNlY3Rpb25zWktleU9sZCwgZmFsc2UpO1xuICAgIGlmICh6a2V5SGVhZGVyLnByb3RvY29sICE9IFwiZ3JvdGgxNlwiKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcInprZXkgZmlsZSBpcyBub3QgZ3JvdGgxNlwiKTtcbiAgICB9XG5cbiAgICBjb25zdCBjdXJ2ZSA9IGF3YWl0IGdldEN1cnZlKHprZXlIZWFkZXIucSk7XG4gICAgY29uc3Qgc0cxID0gY3VydmUuRzEuRi5uOCoyO1xuICAgIGNvbnN0IHNHMiA9IGN1cnZlLkcyLkYubjgqMjtcblxuICAgIGNvbnN0IG9sZE1QQ1BhcmFtcyA9IGF3YWl0IHprZXlVdGlscy5yZWFkTVBDUGFyYW1zKGZkWktleU9sZCwgY3VydmUsIHNlY3Rpb25zWktleU9sZCk7XG4gICAgY29uc3QgbmV3TVBDUGFyYW1zID0ge307XG5cbiAgICBjb25zdCBmZE1QQ1BhcmFtcyA9IGF3YWl0IGZhc3RGaWxlLnJlYWRFeGlzdGluZyhtcGNwYXJhbXNOYW1lKTtcblxuICAgIGZkTVBDUGFyYW1zLnBvcyA9XG4gICAgICAgIHNHMSozICsgc0cyKjMgKyAgICAgICAgICAgICAgICAgICAgIC8vIHZLZXlcbiAgICAgICAgOCArIHNHMSp6a2V5SGVhZGVyLm5WYXJzICsgICAgICAgICAgICAgIC8vIElDICsgQ1xuICAgICAgICA0ICsgc0cxKih6a2V5SGVhZGVyLmRvbWFpblNpemUtMSkgKyAgICAgLy8gSFxuICAgICAgICA0ICsgc0cxKnprZXlIZWFkZXIublZhcnMgKyAgICAgICAgICAgICAgLy8gQVxuICAgICAgICA0ICsgc0cxKnprZXlIZWFkZXIublZhcnMgKyAgICAgICAgICAgICAgLy8gQjFcbiAgICAgICAgNCArIHNHMip6a2V5SGVhZGVyLm5WYXJzOyAgICAgICAgICAgICAgIC8vIEIyXG5cbiAgICAvLyBjc0hhc2hcbiAgICBuZXdNUENQYXJhbXMuY3NIYXNoID0gIGF3YWl0IGZkTVBDUGFyYW1zLnJlYWQoNjQpO1xuXG4gICAgY29uc3QgbkNvbnRyaWJ1dGlvbnMgPSBhd2FpdCBmZE1QQ1BhcmFtcy5yZWFkVUJFMzIoKTtcbiAgICBuZXdNUENQYXJhbXMuY29udHJpYnV0aW9ucyA9IFtdO1xuICAgIGZvciAobGV0IGk9MDsgaTxuQ29udHJpYnV0aW9uczsgaSsrKSB7XG4gICAgICAgIGNvbnN0IGMgPSB7IGRlbHRhOnt9IH07XG4gICAgICAgIGMuZGVsdGFBZnRlciA9IGF3YWl0IHJlYWRHMShmZE1QQ1BhcmFtcyk7XG4gICAgICAgIGMuZGVsdGEuZzFfcyA9IGF3YWl0IHJlYWRHMShmZE1QQ1BhcmFtcyk7XG4gICAgICAgIGMuZGVsdGEuZzFfc3ggPSBhd2FpdCByZWFkRzEoZmRNUENQYXJhbXMpO1xuICAgICAgICBjLmRlbHRhLmcyX3NweCA9IGF3YWl0IHJlYWRHMihmZE1QQ1BhcmFtcyk7XG4gICAgICAgIGMudHJhbnNjcmlwdCA9IGF3YWl0IGZkTVBDUGFyYW1zLnJlYWQoNjQpO1xuICAgICAgICBpZiAoaTxvbGRNUENQYXJhbXMuY29udHJpYnV0aW9ucy5sZW5ndGgpIHtcbiAgICAgICAgICAgIGMudHlwZSA9IG9sZE1QQ1BhcmFtcy5jb250cmlidXRpb25zW2ldLnR5cGU7XG4gICAgICAgICAgICBpZiAoYy50eXBlPT0xKSB7XG4gICAgICAgICAgICAgICAgYy5iZWFjb25IYXNoID0gb2xkTVBDUGFyYW1zLmNvbnRyaWJ1dGlvbnNbaV0uYmVhY29uSGFzaDtcbiAgICAgICAgICAgICAgICBjLm51bUl0ZXJhdGlvbnNFeHAgPSBvbGRNUENQYXJhbXMuY29udHJpYnV0aW9uc1tpXS5udW1JdGVyYXRpb25zRXhwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG9sZE1QQ1BhcmFtcy5jb250cmlidXRpb25zW2ldLm5hbWUpIHtcbiAgICAgICAgICAgICAgICBjLm5hbWUgPSBvbGRNUENQYXJhbXMuY29udHJpYnV0aW9uc1tpXS5uYW1lO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIG5ld01QQ1BhcmFtcy5jb250cmlidXRpb25zLnB1c2goYyk7XG4gICAgfVxuXG4gICAgaWYgKCFtaXNjLmhhc2hJc0VxdWFsKG5ld01QQ1BhcmFtcy5jc0hhc2gsIG9sZE1QQ1BhcmFtcy5jc0hhc2gpKSB7XG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5lcnJvcihcIkhhc2ggb2YgdGhlIG9yaWdpbmFsIGNpcmN1aXQgZG9lcyBub3QgbWF0Y2ggd2l0aCB0aGUgTVBDIG9uZVwiKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGlmIChvbGRNUENQYXJhbXMuY29udHJpYnV0aW9ucy5sZW5ndGggPiBuZXdNUENQYXJhbXMuY29udHJpYnV0aW9ucy5sZW5ndGgpIHtcbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmVycm9yKFwiVGhlIGltcG9lcnRlZCBmaWxlIGRvZXMgbm90IGluY2x1ZGUgbmV3IGNvbnRyaWJ1dGlvbnNcIik7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBmb3IgKGxldCBpPTA7IGk8b2xkTVBDUGFyYW1zLmNvbnRyaWJ1dGlvbnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgaWYgKCFjb250cmlidXRpb25Jc0VxdWFsKG9sZE1QQ1BhcmFtcy5jb250cmlidXRpb25zW2ldLCBuZXdNUENQYXJhbXMuY29udHJpYnV0aW9uc1tpXSkpIHtcbiAgICAgICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5lcnJvcihgUHJldmlvdXMgY29udHJpYnV0aW9uICR7aX0gZG9lcyBub3QgbWF0Y2hgKTtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cblxuXG4gICAgLy8gU2V0IHRoZSBzYW1lIG5hbWUgdG8gYWxsIG5ldyBjb250cmlidXRpb25zXG4gICAgaWYgKG5hbWUpIHtcbiAgICAgICAgZm9yIChsZXQgaT1vbGRNUENQYXJhbXMuY29udHJpYnV0aW9ucy5sZW5ndGg7IGk8bmV3TVBDUGFyYW1zLmNvbnRyaWJ1dGlvbnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIG5ld01QQ1BhcmFtcy5jb250cmlidXRpb25zW2ldLm5hbWUgPSBuYW1lO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgZmRaS2V5TmV3ID0gYXdhaXQgYmluRmlsZVV0aWxzLmNyZWF0ZUJpbkZpbGUoemtleU5hbWVOZXcsIFwiemtleVwiLCAxLCAxMCk7XG4gICAgZmRNUENQYXJhbXMucG9zID0gMDtcblxuICAgIC8vIEhlYWRlclxuICAgIGZkTVBDUGFyYW1zLnBvcyArPSBzRzE7ICAvLyBpZ25vcmUgYWxwaGExIChrZWVwIG9yaWdpbmFsKVxuICAgIGZkTVBDUGFyYW1zLnBvcyArPSBzRzE7ICAvLyBpZ25vcmUgYmV0YTFcbiAgICBmZE1QQ1BhcmFtcy5wb3MgKz0gc0cyOyAgLy8gaWdub3JlIGJldGEyXG4gICAgZmRNUENQYXJhbXMucG9zICs9IHNHMjsgIC8vIGlnbm9yZSBnYW1tYTJcbiAgICB6a2V5SGVhZGVyLnZrX2RlbHRhXzEgPSBhd2FpdCByZWFkRzEoZmRNUENQYXJhbXMpO1xuICAgIHprZXlIZWFkZXIudmtfZGVsdGFfMiA9IGF3YWl0IHJlYWRHMihmZE1QQ1BhcmFtcyk7XG4gICAgYXdhaXQgemtleVV0aWxzLndyaXRlSGVhZGVyKGZkWktleU5ldywgemtleUhlYWRlcik7XG5cbiAgICAvLyBJQyAoS2VlcCBvcmlnaW5hbClcbiAgICBjb25zdCBuSUMgPSBhd2FpdCBmZE1QQ1BhcmFtcy5yZWFkVUJFMzIoKTtcbiAgICBpZiAobklDICE9IHprZXlIZWFkZXIublB1YmxpYyArMSkge1xuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZXJyb3IoXCJJbnZhbGlkIG51bWJlciBvZiBwb2ludHMgaW4gSUNcIik7XG4gICAgICAgIGF3YWl0IGZkWktleU5ldy5kaXNjYXJkKCk7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgZmRNUENQYXJhbXMucG9zICs9IHNHMSooemtleUhlYWRlci5uUHVibGljKzEpO1xuICAgIGF3YWl0IGJpbkZpbGVVdGlscy5jb3B5U2VjdGlvbihmZFpLZXlPbGQsIHNlY3Rpb25zWktleU9sZCwgZmRaS2V5TmV3LCAzKTtcblxuICAgIC8vIENvZWZmcyAoS2VlcCBvcmlnaW5hbClcbiAgICBhd2FpdCBiaW5GaWxlVXRpbHMuY29weVNlY3Rpb24oZmRaS2V5T2xkLCBzZWN0aW9uc1pLZXlPbGQsIGZkWktleU5ldywgNCk7XG5cbiAgICAvLyBIIFNlY3Rpb25cbiAgICBjb25zdCBuSCA9IGF3YWl0IGZkTVBDUGFyYW1zLnJlYWRVQkUzMigpO1xuICAgIGlmIChuSCAhPSB6a2V5SGVhZGVyLmRvbWFpblNpemUtMSkge1xuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZXJyb3IoXCJJbnZhbGlkIG51bWJlciBvZiBwb2ludHMgaW4gSFwiKTtcbiAgICAgICAgYXdhaXQgZmRaS2V5TmV3LmRpc2NhcmQoKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBsZXQgYnVmZkg7XG4gICAgY29uc3QgYnVmZlRhdVUgPSBhd2FpdCBmZE1QQ1BhcmFtcy5yZWFkKHNHMSooemtleUhlYWRlci5kb21haW5TaXplLTEpKTtcbiAgICBjb25zdCBidWZmVGF1TEVNID0gYXdhaXQgY3VydmUuRzEuYmF0Y2hVdG9MRU0oYnVmZlRhdVUpO1xuICAgIGJ1ZmZIID0gbmV3IFVpbnQ4QXJyYXkoemtleUhlYWRlci5kb21haW5TaXplKnNHMSk7XG4gICAgYnVmZkguc2V0KGJ1ZmZUYXVMRU0pOyAgIC8vIExldCB0aGUgbGFzdCBvbmUgdG8gemVyby5cbiAgICBjdXJ2ZS5HMS50b1JwckxFTShidWZmSCwgc0cxKih6a2V5SGVhZGVyLmRvbWFpblNpemUtMSksIGN1cnZlLkcxLnplcm9BZmZpbmUpO1xuICAgIGNvbnN0IG4ySW52ID0gY3VydmUuRnIubmVnKGN1cnZlLkZyLmludihjdXJ2ZS5Gci5lKDIpKSk7XG4gICAgY29uc3Qgd0ludiA9IGN1cnZlLkZyLmludihjdXJ2ZS5Gci53W3prZXlIZWFkZXIucG93ZXIrMV0pO1xuICAgIGJ1ZmZIID0gYXdhaXQgY3VydmUuRzEuYmF0Y2hBcHBseUtleShidWZmSCwgbjJJbnYsIHdJbnYsIFwiYWZmaW5lXCIsIFwiamFjb2JpYW5cIiwgbG9nZ2VyKTtcbiAgICBidWZmSCA9IGF3YWl0IGN1cnZlLkcxLmlmZnQoYnVmZkgsIFwiamFjb2JpYW5cIiwgXCJhZmZpbmVcIiwgbG9nZ2VyKTtcbiAgICBhd2FpdCBiaW5GaWxlVXRpbHMuc3RhcnRXcml0ZVNlY3Rpb24oZmRaS2V5TmV3LCA5KTtcbiAgICBhd2FpdCBmZFpLZXlOZXcud3JpdGUoYnVmZkgpO1xuICAgIGF3YWl0IGJpbkZpbGVVdGlscy5lbmRXcml0ZVNlY3Rpb24oZmRaS2V5TmV3KTtcblxuICAgIC8vIEMgU2VjdGlvbiAoTCBzZWN0aW9uKVxuICAgIGNvbnN0IG5MID0gYXdhaXQgZmRNUENQYXJhbXMucmVhZFVCRTMyKCk7XG4gICAgaWYgKG5MICE9ICh6a2V5SGVhZGVyLm5WYXJzLXprZXlIZWFkZXIublB1YmxpYy0xKSkge1xuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZXJyb3IoXCJJbnZhbGlkIG51bWJlciBvZiBwb2ludHMgaW4gTFwiKTtcbiAgICAgICAgYXdhaXQgZmRaS2V5TmV3LmRpc2NhcmQoKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBsZXQgYnVmZkw7XG4gICAgYnVmZkwgPSBhd2FpdCBmZE1QQ1BhcmFtcy5yZWFkKHNHMSooemtleUhlYWRlci5uVmFycy16a2V5SGVhZGVyLm5QdWJsaWMtMSkpO1xuICAgIGJ1ZmZMID0gYXdhaXQgY3VydmUuRzEuYmF0Y2hVdG9MRU0oYnVmZkwpO1xuICAgIGF3YWl0IGJpbkZpbGVVdGlscy5zdGFydFdyaXRlU2VjdGlvbihmZFpLZXlOZXcsIDgpO1xuICAgIGF3YWl0IGZkWktleU5ldy53cml0ZShidWZmTCk7XG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLmVuZFdyaXRlU2VjdGlvbihmZFpLZXlOZXcpO1xuXG4gICAgLy8gQSBTZWN0aW9uXG4gICAgY29uc3QgbkEgPSBhd2FpdCBmZE1QQ1BhcmFtcy5yZWFkVUJFMzIoKTtcbiAgICBpZiAobkEgIT0gemtleUhlYWRlci5uVmFycykge1xuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZXJyb3IoXCJJbnZhbGlkIG51bWJlciBvZiBwb2ludHMgaW4gQVwiKTtcbiAgICAgICAgYXdhaXQgZmRaS2V5TmV3LmRpc2NhcmQoKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBmZE1QQ1BhcmFtcy5wb3MgKz0gc0cxKih6a2V5SGVhZGVyLm5WYXJzKTtcbiAgICBhd2FpdCBiaW5GaWxlVXRpbHMuY29weVNlY3Rpb24oZmRaS2V5T2xkLCBzZWN0aW9uc1pLZXlPbGQsIGZkWktleU5ldywgNSk7XG5cbiAgICAvLyBCMSBTZWN0aW9uXG4gICAgY29uc3QgbkIxID0gYXdhaXQgZmRNUENQYXJhbXMucmVhZFVCRTMyKCk7XG4gICAgaWYgKG5CMSAhPSB6a2V5SGVhZGVyLm5WYXJzKSB7XG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5lcnJvcihcIkludmFsaWQgbnVtYmVyIG9mIHBvaW50cyBpbiBCMVwiKTtcbiAgICAgICAgYXdhaXQgZmRaS2V5TmV3LmRpc2NhcmQoKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBmZE1QQ1BhcmFtcy5wb3MgKz0gc0cxKih6a2V5SGVhZGVyLm5WYXJzKTtcbiAgICBhd2FpdCBiaW5GaWxlVXRpbHMuY29weVNlY3Rpb24oZmRaS2V5T2xkLCBzZWN0aW9uc1pLZXlPbGQsIGZkWktleU5ldywgNik7XG5cbiAgICAvLyBCMiBTZWN0aW9uXG4gICAgY29uc3QgbkIyID0gYXdhaXQgZmRNUENQYXJhbXMucmVhZFVCRTMyKCk7XG4gICAgaWYgKG5CMiAhPSB6a2V5SGVhZGVyLm5WYXJzKSB7XG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5lcnJvcihcIkludmFsaWQgbnVtYmVyIG9mIHBvaW50cyBpbiBCMlwiKTtcbiAgICAgICAgYXdhaXQgZmRaS2V5TmV3LmRpc2NhcmQoKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBmZE1QQ1BhcmFtcy5wb3MgKz0gc0cyKih6a2V5SGVhZGVyLm5WYXJzKTtcbiAgICBhd2FpdCBiaW5GaWxlVXRpbHMuY29weVNlY3Rpb24oZmRaS2V5T2xkLCBzZWN0aW9uc1pLZXlPbGQsIGZkWktleU5ldywgNyk7XG5cbiAgICBhd2FpdCB6a2V5VXRpbHMud3JpdGVNUENQYXJhbXMoZmRaS2V5TmV3LCBjdXJ2ZSwgbmV3TVBDUGFyYW1zKTtcblxuICAgIGF3YWl0IGZkTVBDUGFyYW1zLmNsb3NlKCk7XG4gICAgYXdhaXQgZmRaS2V5TmV3LmNsb3NlKCk7XG4gICAgYXdhaXQgZmRaS2V5T2xkLmNsb3NlKCk7XG5cbiAgICByZXR1cm4gdHJ1ZTtcblxuICAgIGFzeW5jIGZ1bmN0aW9uIHJlYWRHMShmZCkge1xuICAgICAgICBjb25zdCBidWZmID0gYXdhaXQgZmQucmVhZChjdXJ2ZS5HMS5GLm44KjIpO1xuICAgICAgICByZXR1cm4gY3VydmUuRzEuZnJvbVJwclVuY29tcHJlc3NlZChidWZmLCAwKTtcbiAgICB9XG5cbiAgICBhc3luYyBmdW5jdGlvbiByZWFkRzIoZmQpIHtcbiAgICAgICAgY29uc3QgYnVmZiA9IGF3YWl0IGZkLnJlYWQoY3VydmUuRzIuRi5uOCoyKTtcbiAgICAgICAgcmV0dXJuIGN1cnZlLkcyLmZyb21ScHJVbmNvbXByZXNzZWQoYnVmZiwgMCk7XG4gICAgfVxuXG5cbiAgICBmdW5jdGlvbiBjb250cmlidXRpb25Jc0VxdWFsKGMxLCBjMikge1xuICAgICAgICBpZiAoIWN1cnZlLkcxLmVxKGMxLmRlbHRhQWZ0ZXIgICAsIGMyLmRlbHRhQWZ0ZXIpKSByZXR1cm4gZmFsc2U7XG4gICAgICAgIGlmICghY3VydmUuRzEuZXEoYzEuZGVsdGEuZzFfcyAgICwgYzIuZGVsdGEuZzFfcykpIHJldHVybiBmYWxzZTtcbiAgICAgICAgaWYgKCFjdXJ2ZS5HMS5lcShjMS5kZWx0YS5nMV9zeCAgLCBjMi5kZWx0YS5nMV9zeCkpIHJldHVybiBmYWxzZTtcbiAgICAgICAgaWYgKCFjdXJ2ZS5HMi5lcShjMS5kZWx0YS5nMl9zcHggLCBjMi5kZWx0YS5nMl9zcHgpKSByZXR1cm4gZmFsc2U7XG4gICAgICAgIGlmICghbWlzYy5oYXNoSXNFcXVhbChjMS50cmFuc2NyaXB0LCBjMi50cmFuc2NyaXB0KSkgcmV0dXJuIGZhbHNlO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cblxufVxuXG4iLCIvKlxuICAgIENvcHlyaWdodCAyMDE4IDBLSU1TIGFzc29jaWF0aW9uLlxuXG4gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2Ygc25hcmtKUy5cblxuICAgIHNuYXJrSlMgaXMgYSBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0XG4gICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxuICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG5cbiAgICBzbmFya0pTIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUXG4gICAgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZXG4gICAgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljXG4gICAgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuXG4gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAgICBhbG9uZyB3aXRoIHNuYXJrSlMuIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXG4qL1xuXG5pbXBvcnQgKiBhcyBiaW5GaWxlVXRpbHMgZnJvbSBcIkBpZGVuMy9iaW5maWxldXRpbHNcIjtcbmltcG9ydCAqIGFzIHprZXlVdGlscyBmcm9tIFwiLi96a2V5X3V0aWxzLmpzXCI7XG5pbXBvcnQgeyBnZXRDdXJ2ZUZyb21RIGFzIGdldEN1cnZlIH0gZnJvbSBcIi4vY3VydmVzLmpzXCI7XG5pbXBvcnQgQmxha2UyYiBmcm9tIFwiYmxha2UyYi13YXNtXCI7XG5pbXBvcnQgKiBhcyBtaXNjIGZyb20gXCIuL21pc2MuanNcIjtcbmltcG9ydCB7IGhhc2hUb0cyIGFzIGhhc2hUb0cyIH0gZnJvbSBcIi4va2V5cGFpci5qc1wiO1xuY29uc3Qgc2FtZVJhdGlvID0gbWlzYy5zYW1lUmF0aW87XG5pbXBvcnQge2hhc2hHMSwgaGFzaFB1YktleX0gZnJvbSBcIi4vemtleV91dGlscy5qc1wiO1xuaW1wb3J0IHsgU2NhbGFyLCBDaGFDaGEsIEJpZ0J1ZmZlciB9IGZyb20gXCJmZmphdmFzY3JpcHRcIjtcblxuXG5cbmV4cG9ydCBkZWZhdWx0IGFzeW5jIGZ1bmN0aW9uIHBoYXNlMnZlcmlmeUZyb21Jbml0KGluaXRGaWxlTmFtZSwgcFRhdUZpbGVOYW1lLCB6a2V5RmlsZU5hbWUsIGxvZ2dlcikge1xuXG4gICAgbGV0IHNyO1xuICAgIGF3YWl0IEJsYWtlMmIucmVhZHkoKTtcblxuICAgIGNvbnN0IHtmZCwgc2VjdGlvbnN9ID0gYXdhaXQgYmluRmlsZVV0aWxzLnJlYWRCaW5GaWxlKHprZXlGaWxlTmFtZSwgXCJ6a2V5XCIsIDIpO1xuICAgIGNvbnN0IHprZXkgPSBhd2FpdCB6a2V5VXRpbHMucmVhZEhlYWRlcihmZCwgc2VjdGlvbnMsIGZhbHNlKTtcbiAgICBpZiAoemtleS5wcm90b2NvbCAhPSBcImdyb3RoMTZcIikge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJ6a2V5IGZpbGUgaXMgbm90IGdyb3RoMTZcIik7XG4gICAgfVxuXG4gICAgY29uc3QgY3VydmUgPSBhd2FpdCBnZXRDdXJ2ZSh6a2V5LnEpO1xuICAgIGNvbnN0IHNHMSA9IGN1cnZlLkcxLkYubjgqMjtcblxuICAgIGNvbnN0IG1wY1BhcmFtcyA9IGF3YWl0IHprZXlVdGlscy5yZWFkTVBDUGFyYW1zKGZkLCBjdXJ2ZSwgc2VjdGlvbnMpO1xuXG4gICAgY29uc3QgYWNjdW11bGF0ZWRIYXNoZXIgPSBCbGFrZTJiKDY0KTtcbiAgICBhY2N1bXVsYXRlZEhhc2hlci51cGRhdGUobXBjUGFyYW1zLmNzSGFzaCk7XG4gICAgbGV0IGN1ckRlbHRhID0gY3VydmUuRzEuZztcbiAgICBmb3IgKGxldCBpPTA7IGk8bXBjUGFyYW1zLmNvbnRyaWJ1dGlvbnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgY29uc3QgYyA9IG1wY1BhcmFtcy5jb250cmlidXRpb25zW2ldO1xuICAgICAgICBjb25zdCBvdXJIYXNoZXIgPSBtaXNjLmNsb25lSGFzaGVyKGFjY3VtdWxhdGVkSGFzaGVyKTtcblxuICAgICAgICBoYXNoRzEob3VySGFzaGVyLCBjdXJ2ZSwgYy5kZWx0YS5nMV9zKTtcbiAgICAgICAgaGFzaEcxKG91ckhhc2hlciwgY3VydmUsIGMuZGVsdGEuZzFfc3gpO1xuXG4gICAgICAgIGlmICghbWlzYy5oYXNoSXNFcXVhbChvdXJIYXNoZXIuZGlnZXN0KCksIGMudHJhbnNjcmlwdCkpIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGBJTlZBTElEKCR7aX0pOiBJbmNvbnNpc3RlbnQgdHJhbnNjcmlwdCBgKTtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGRlbHRhX2cyX3NwID0gaGFzaFRvRzIoY3VydmUsIGMudHJhbnNjcmlwdCk7XG5cbiAgICAgICAgc3IgPSBhd2FpdCBzYW1lUmF0aW8oY3VydmUsIGMuZGVsdGEuZzFfcywgYy5kZWx0YS5nMV9zeCwgZGVsdGFfZzJfc3AsIGMuZGVsdGEuZzJfc3B4KTtcbiAgICAgICAgaWYgKHNyICE9PSB0cnVlKSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhgSU5WQUxJRCgke2l9KTogcHVibGljIGtleSBHMSBhbmQgRzIgZG8gbm90IGhhdmUgdGhlIHNhbWUgcmF0aW9uIGApO1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgc3IgPSBhd2FpdCBzYW1lUmF0aW8oY3VydmUsIGN1ckRlbHRhLCBjLmRlbHRhQWZ0ZXIsIGRlbHRhX2cyX3NwLCBjLmRlbHRhLmcyX3NweCk7XG4gICAgICAgIGlmIChzciAhPT0gdHJ1ZSkge1xuICAgICAgICAgICAgY29uc29sZS5sb2coYElOVkFMSUQoJHtpfSk6IGRlbHRhQWZ0ZXIgZG9lcyBub3QgZmlsbG93IHRoZSBwdWJsaWMga2V5IGApO1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGMudHlwZSA9PSAxKSB7XG4gICAgICAgICAgICBjb25zdCBybmcgPSBhd2FpdCBtaXNjLnJuZ0Zyb21CZWFjb25QYXJhbXMoYy5iZWFjb25IYXNoLCBjLm51bUl0ZXJhdGlvbnNFeHApO1xuICAgICAgICAgICAgY29uc3QgZXhwZWN0ZWRfcHJ2S2V5ID0gY3VydmUuRnIuZnJvbVJuZyhybmcpO1xuICAgICAgICAgICAgY29uc3QgZXhwZWN0ZWRfZzFfcyA9IGN1cnZlLkcxLnRvQWZmaW5lKGN1cnZlLkcxLmZyb21Sbmcocm5nKSk7XG4gICAgICAgICAgICBjb25zdCBleHBlY3RlZF9nMV9zeCA9IGN1cnZlLkcxLnRvQWZmaW5lKGN1cnZlLkcxLnRpbWVzRnIoZXhwZWN0ZWRfZzFfcywgZXhwZWN0ZWRfcHJ2S2V5KSk7XG4gICAgICAgICAgICBpZiAoY3VydmUuRzEuZXEoZXhwZWN0ZWRfZzFfcywgYy5kZWx0YS5nMV9zKSAhPT0gdHJ1ZSkge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGBJTlZBTElEKCR7aX0pOiBLZXkgb2YgdGhlIGJlYWNvbiBkb2VzIG5vdCBtYXRjaC4gZzFfcyBgKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoY3VydmUuRzEuZXEoZXhwZWN0ZWRfZzFfc3gsIGMuZGVsdGEuZzFfc3gpICE9PSB0cnVlKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coYElOVkFMSUQoJHtpfSk6IEtleSBvZiB0aGUgYmVhY29uIGRvZXMgbm90IG1hdGNoLiBnMV9zeCBgKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBoYXNoUHViS2V5KGFjY3VtdWxhdGVkSGFzaGVyLCBjdXJ2ZSwgYyk7XG5cbiAgICAgICAgY29uc3QgY29udHJpYnV0aW9uSGFzaGVyID0gQmxha2UyYig2NCk7XG4gICAgICAgIGhhc2hQdWJLZXkoY29udHJpYnV0aW9uSGFzaGVyLCBjdXJ2ZSwgYyk7XG5cbiAgICAgICAgYy5jb250cmlidXRpb25IYXNoID0gY29udHJpYnV0aW9uSGFzaGVyLmRpZ2VzdCgpO1xuXG4gICAgICAgIGN1ckRlbHRhID0gYy5kZWx0YUFmdGVyO1xuICAgIH1cblxuXG4gICAgY29uc3Qge2ZkOiBmZEluaXQsIHNlY3Rpb25zOiBzZWN0aW9uc0luaXR9ID0gYXdhaXQgYmluRmlsZVV0aWxzLnJlYWRCaW5GaWxlKGluaXRGaWxlTmFtZSwgXCJ6a2V5XCIsIDIpO1xuICAgIGNvbnN0IHprZXlJbml0ID0gYXdhaXQgemtleVV0aWxzLnJlYWRIZWFkZXIoZmRJbml0LCBzZWN0aW9uc0luaXQsIGZhbHNlKTtcblxuICAgIGlmICh6a2V5SW5pdC5wcm90b2NvbCAhPSBcImdyb3RoMTZcIikge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJ6a2V5aW5pdCBmaWxlIGlzIG5vdCBncm90aDE2XCIpO1xuICAgIH1cblxuICAgIGlmICggICghU2NhbGFyLmVxKHprZXlJbml0LnEsIHprZXkucSkpXG4gICAgICAgIHx8KCFTY2FsYXIuZXEoemtleUluaXQuciwgemtleS5yKSlcbiAgICAgICAgfHwoemtleUluaXQubjhxICE9IHprZXkubjhxKVxuICAgICAgICB8fCh6a2V5SW5pdC5uOHIgIT0gemtleS5uOHIpKVxuICAgIHtcbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmVycm9yKFwiSU5WQUxJRDogIERpZmZlcmVudCBjdXJ2ZXNcIik7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBpZiAoICAoemtleUluaXQublZhcnMgIT0gemtleS5uVmFycylcbiAgICAgICAgfHwoemtleUluaXQublB1YmxpYyAhPSAgemtleS5uUHVibGljKVxuICAgICAgICB8fCh6a2V5SW5pdC5kb21haW5TaXplICE9IHprZXkuZG9tYWluU2l6ZSkpXG4gICAge1xuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZXJyb3IoXCJJTlZBTElEOiAgRGlmZmVyZW50IGNpcmN1aXQgcGFyYW1ldGVyc1wiKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGlmICghY3VydmUuRzEuZXEoemtleS52a19hbHBoYV8xLCB6a2V5SW5pdC52a19hbHBoYV8xKSkge1xuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZXJyb3IoXCJJTlZBTElEOiAgSW52YWxpZCBhbHBoYTFcIik7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgaWYgKCFjdXJ2ZS5HMS5lcSh6a2V5LnZrX2JldGFfMSwgemtleUluaXQudmtfYmV0YV8xKSkge1xuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZXJyb3IoXCJJTlZBTElEOiAgSW52YWxpZCBiZXRhMVwiKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBpZiAoIWN1cnZlLkcyLmVxKHprZXkudmtfYmV0YV8yLCB6a2V5SW5pdC52a19iZXRhXzIpKSB7XG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5lcnJvcihcIklOVkFMSUQ6ICBJbnZhbGlkIGJldGEyXCIpO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGlmICghY3VydmUuRzIuZXEoemtleS52a19nYW1tYV8yLCB6a2V5SW5pdC52a19nYW1tYV8yKSkge1xuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZXJyb3IoXCJJTlZBTElEOiAgSW52YWxpZCBnYW1tYTJcIik7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgaWYgKCFjdXJ2ZS5HMS5lcSh6a2V5LnZrX2RlbHRhXzEsIGN1ckRlbHRhKSkge1xuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZXJyb3IoXCJJTlZBTElEOiAgSW52YWxpZCBkZWx0YTFcIik7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgc3IgPSBhd2FpdCBzYW1lUmF0aW8oY3VydmUsIGN1cnZlLkcxLmcsIGN1ckRlbHRhLCBjdXJ2ZS5HMi5nLCB6a2V5LnZrX2RlbHRhXzIpO1xuICAgIGlmIChzciAhPT0gdHJ1ZSkge1xuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZXJyb3IoXCJJTlZBTElEOiAgSW52YWxpZCBkZWx0YTJcIik7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBjb25zdCBtcGNQYXJhbXNJbml0ID0gYXdhaXQgemtleVV0aWxzLnJlYWRNUENQYXJhbXMoZmRJbml0LCBjdXJ2ZSwgc2VjdGlvbnNJbml0KTtcbiAgICBpZiAoIW1pc2MuaGFzaElzRXF1YWwobXBjUGFyYW1zLmNzSGFzaCwgbXBjUGFyYW1zSW5pdC5jc0hhc2gpKSB7XG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5lcnJvcihcIklOVkFMSUQ6ICBDaXJjdWl0IGRvZXMgbm90IG1hdGNoXCIpO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgLy8gQ2hlY2sgc2l6ZXMgb2Ygc2VjdGlvbnNcbiAgICBpZiAoc2VjdGlvbnNbOF1bMF0uc2l6ZSAhPSBzRzEqKHprZXkublZhcnMtemtleS5uUHVibGljLTEpKSB7XG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5lcnJvcihcIklOVkFMSUQ6ICBJbnZhbGlkIEwgc2VjdGlvbiBzaXplXCIpO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgaWYgKHNlY3Rpb25zWzldWzBdLnNpemUgIT0gc0cxKih6a2V5LmRvbWFpblNpemUpKSB7XG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5lcnJvcihcIklOVkFMSUQ6ICBJbnZhbGlkIEggc2VjdGlvbiBzaXplXCIpO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgbGV0IHNzO1xuICAgIHNzID0gYXdhaXQgYmluRmlsZVV0aWxzLnNlY3Rpb25Jc0VxdWFsKGZkLCBzZWN0aW9ucywgZmRJbml0LCBzZWN0aW9uc0luaXQsIDMpO1xuICAgIGlmICghc3MpIHtcbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmVycm9yKFwiSU5WQUxJRDogIElDIHNlY3Rpb24gaXMgbm90IGlkZW50aWNhbFwiKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHNzID0gYXdhaXQgYmluRmlsZVV0aWxzLnNlY3Rpb25Jc0VxdWFsKGZkLCBzZWN0aW9ucywgZmRJbml0LCBzZWN0aW9uc0luaXQsIDQpO1xuICAgIGlmICghc3MpIHtcbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmVycm9yKFwiQ29lZmZzIHNlY3Rpb24gaXMgbm90IGlkZW50aWNhbFwiKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHNzID0gYXdhaXQgYmluRmlsZVV0aWxzLnNlY3Rpb25Jc0VxdWFsKGZkLCBzZWN0aW9ucywgZmRJbml0LCBzZWN0aW9uc0luaXQsIDUpO1xuICAgIGlmICghc3MpIHtcbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmVycm9yKFwiQSBzZWN0aW9uIGlzIG5vdCBpZGVudGljYWxcIik7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBzcyA9IGF3YWl0IGJpbkZpbGVVdGlscy5zZWN0aW9uSXNFcXVhbChmZCwgc2VjdGlvbnMsIGZkSW5pdCwgc2VjdGlvbnNJbml0LCA2KTtcbiAgICBpZiAoIXNzKSB7XG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5lcnJvcihcIkIxIHNlY3Rpb24gaXMgbm90IGlkZW50aWNhbFwiKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHNzID0gYXdhaXQgYmluRmlsZVV0aWxzLnNlY3Rpb25Jc0VxdWFsKGZkLCBzZWN0aW9ucywgZmRJbml0LCBzZWN0aW9uc0luaXQsIDcpO1xuICAgIGlmICghc3MpIHtcbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmVycm9yKFwiQjIgc2VjdGlvbiBpcyBub3QgaWRlbnRpY2FsXCIpO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgLy8gQ2hlY2sgTFxuICAgIHNyID0gYXdhaXQgc2VjdGlvbkhhc1NhbWVSYXRpbyhcIkcxXCIsIGZkSW5pdCwgc2VjdGlvbnNJbml0LCBmZCwgc2VjdGlvbnMsIDgsIHprZXkudmtfZGVsdGFfMiwgemtleUluaXQudmtfZGVsdGFfMiwgXCJMIHNlY3Rpb25cIik7XG4gICAgaWYgKHNyIT09dHJ1ZSkge1xuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZXJyb3IoXCJMIHNlY3Rpb24gZG9lcyBub3QgbWF0Y2hcIik7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvLyBDaGVjayBIXG4gICAgc3IgPSBhd2FpdCBzYW1lUmF0aW9IKCk7XG4gICAgaWYgKHNyIT09dHJ1ZSkge1xuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZXJyb3IoXCJIIHNlY3Rpb24gZG9lcyBub3QgbWF0Y2hcIik7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhtaXNjLmZvcm1hdEhhc2gobXBjUGFyYW1zLmNzSGFzaCwgXCJDaXJjdWl0IEhhc2g6IFwiKSk7XG5cbiAgICBhd2FpdCBmZC5jbG9zZSgpO1xuICAgIGF3YWl0IGZkSW5pdC5jbG9zZSgpO1xuXG4gICAgZm9yIChsZXQgaT1tcGNQYXJhbXMuY29udHJpYnV0aW9ucy5sZW5ndGgtMTsgaT49MDsgaS0tKSB7XG4gICAgICAgIGNvbnN0IGMgPSBtcGNQYXJhbXMuY29udHJpYnV0aW9uc1tpXTtcbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oXCItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXCIpO1xuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhtaXNjLmZvcm1hdEhhc2goYy5jb250cmlidXRpb25IYXNoLCBgY29udHJpYnV0aW9uICMke2krMX0gJHtjLm5hbWUgPyBjLm5hbWUgOiBcIlwifTpgKSk7XG4gICAgICAgIGlmIChjLnR5cGUgPT0gMSkge1xuICAgICAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oYEJlYWNvbiBnZW5lcmF0b3I6ICR7bWlzYy5ieXRlQXJyYXkyaGV4KGMuYmVhY29uSGFzaCl9YCk7XG4gICAgICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhgQmVhY29uIGl0ZXJhdGlvbnMgRXhwOiAke2MubnVtSXRlcmF0aW9uc0V4cH1gKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhcIi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cIik7XG5cbiAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhcIlpLZXkgT2shXCIpO1xuXG4gICAgcmV0dXJuIHRydWU7XG5cblxuICAgIGFzeW5jIGZ1bmN0aW9uIHNlY3Rpb25IYXNTYW1lUmF0aW8oZ3JvdXBOYW1lLCBmZDEsIHNlY3Rpb25zMSwgZmQyLCBzZWN0aW9uczIsIGlkU2VjdGlvbiwgZzJzcCwgZzJzcHgsIHNlY3Rpb25OYW1lKSB7XG4gICAgICAgIGNvbnN0IE1BWF9DSFVOS19TSVpFID0gMTw8MjA7XG4gICAgICAgIGNvbnN0IEcgPSBjdXJ2ZVtncm91cE5hbWVdO1xuICAgICAgICBjb25zdCBzRyA9IEcuRi5uOCoyO1xuICAgICAgICBhd2FpdCBiaW5GaWxlVXRpbHMuc3RhcnRSZWFkVW5pcXVlU2VjdGlvbihmZDEsIHNlY3Rpb25zMSwgaWRTZWN0aW9uKTtcbiAgICAgICAgYXdhaXQgYmluRmlsZVV0aWxzLnN0YXJ0UmVhZFVuaXF1ZVNlY3Rpb24oZmQyLCBzZWN0aW9uczIsIGlkU2VjdGlvbik7XG5cbiAgICAgICAgbGV0IFIxID0gRy56ZXJvO1xuICAgICAgICBsZXQgUjIgPSBHLnplcm87XG5cbiAgICAgICAgY29uc3QgblBvaW50cyA9IHNlY3Rpb25zMVtpZFNlY3Rpb25dWzBdLnNpemUgLyBzRztcblxuICAgICAgICBmb3IgKGxldCBpPTA7IGk8blBvaW50czsgaSArPSBNQVhfQ0hVTktfU0laRSkge1xuICAgICAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmRlYnVnKGBTYW1lIHJhdGlvIGNoZWNrICR7c2VjdGlvbk5hbWV9OiAgJHtpfS8ke25Qb2ludHN9YCk7XG4gICAgICAgICAgICBjb25zdCBuID0gTWF0aC5taW4oblBvaW50cyAtIGksIE1BWF9DSFVOS19TSVpFKTtcbiAgICAgICAgICAgIGNvbnN0IGJhc2VzMSA9IGF3YWl0IGZkMS5yZWFkKG4qc0cpO1xuICAgICAgICAgICAgY29uc3QgYmFzZXMyID0gYXdhaXQgZmQyLnJlYWQobipzRyk7XG5cbiAgICAgICAgICAgIGNvbnN0IHNjYWxhcnMgPSBtaXNjLmdldFJhbmRvbUJ5dGVzKDQqbik7XG5cbiAgICAgICAgICAgIGNvbnN0IHIxID0gYXdhaXQgRy5tdWx0aUV4cEFmZmluZShiYXNlczEsIHNjYWxhcnMpO1xuICAgICAgICAgICAgY29uc3QgcjIgPSBhd2FpdCBHLm11bHRpRXhwQWZmaW5lKGJhc2VzMiwgc2NhbGFycyk7XG5cbiAgICAgICAgICAgIFIxID0gRy5hZGQoUjEsIHIxKTtcbiAgICAgICAgICAgIFIyID0gRy5hZGQoUjIsIHIyKTtcbiAgICAgICAgfVxuICAgICAgICBhd2FpdCBiaW5GaWxlVXRpbHMuZW5kUmVhZFNlY3Rpb24oZmQxKTtcbiAgICAgICAgYXdhaXQgYmluRmlsZVV0aWxzLmVuZFJlYWRTZWN0aW9uKGZkMik7XG5cbiAgICAgICAgaWYgKG5Qb2ludHMgPT0gMCkgcmV0dXJuIHRydWU7XG5cbiAgICAgICAgc3IgPSBhd2FpdCBzYW1lUmF0aW8oY3VydmUsIFIxLCBSMiwgZzJzcCwgZzJzcHgpO1xuICAgICAgICBpZiAoc3IgIT09IHRydWUpIHJldHVybiBmYWxzZTtcblxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBhc3luYyBmdW5jdGlvbiBzYW1lUmF0aW9IKCkge1xuICAgICAgICBjb25zdCBNQVhfQ0hVTktfU0laRSA9IDE8PDIwO1xuICAgICAgICBjb25zdCBHID0gY3VydmUuRzE7XG4gICAgICAgIGNvbnN0IEZyID0gY3VydmUuRnI7XG4gICAgICAgIGNvbnN0IHNHID0gRy5GLm44KjI7XG5cbiAgICAgICAgY29uc3Qge2ZkOiBmZFBUYXUsIHNlY3Rpb25zOiBzZWN0aW9uc1BUYXV9ID0gYXdhaXQgYmluRmlsZVV0aWxzLnJlYWRCaW5GaWxlKHBUYXVGaWxlTmFtZSwgXCJwdGF1XCIsIDEpO1xuXG4gICAgICAgIGxldCBidWZmX3IgPSBuZXcgQmlnQnVmZmVyKHprZXkuZG9tYWluU2l6ZSAqIHprZXkubjhyKTtcblxuICAgICAgICBjb25zdCBzZWVkPSBuZXcgQXJyYXkoOCk7XG4gICAgICAgIGZvciAobGV0IGk9MDsgaTw4OyBpKyspIHtcbiAgICAgICAgICAgIHNlZWRbaV0gPSBtaXNjLnJlYWRVSW50MzJCRShtaXNjLmdldFJhbmRvbUJ5dGVzKDQpLCAwKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBybmcgPSBuZXcgQ2hhQ2hhKHNlZWQpO1xuICAgICAgICBmb3IgKGxldCBpPTA7IGk8emtleS5kb21haW5TaXplLTE7IGkrKykgeyAgIC8vIE5vdGUgdGhhdCBsYXN0IG9uZSBpcyB6ZXJvXG4gICAgICAgICAgICBjb25zdCBlID0gRnIuZnJvbVJuZyhybmcpO1xuICAgICAgICAgICAgRnIudG9ScHJMRShidWZmX3IsIGkqemtleS5uOHIsIGUpO1xuICAgICAgICB9XG4gICAgICAgIEZyLnRvUnByTEUoYnVmZl9yLCAoemtleS5kb21haW5TaXplLTEpKnprZXkubjhyLCBGci56ZXJvKTtcblxuICAgICAgICBsZXQgUjEgPSBHLnplcm87XG4gICAgICAgIGZvciAobGV0IGk9MDsgaTx6a2V5LmRvbWFpblNpemU7IGkgKz0gTUFYX0NIVU5LX1NJWkUpIHtcbiAgICAgICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5kZWJ1ZyhgSCBWZXJpZmljYXRpb24odGF1KTogICR7aX0vJHt6a2V5LmRvbWFpblNpemV9YCk7XG4gICAgICAgICAgICBjb25zdCBuID0gTWF0aC5taW4oemtleS5kb21haW5TaXplIC0gaSwgTUFYX0NIVU5LX1NJWkUpO1xuXG4gICAgICAgICAgICBjb25zdCBidWZmMSA9IGF3YWl0IGZkUFRhdS5yZWFkKHNHKm4sIHNlY3Rpb25zUFRhdVsyXVswXS5wICsgemtleS5kb21haW5TaXplKnNHICsgaSpzRyk7XG4gICAgICAgICAgICBjb25zdCBidWZmMiA9IGF3YWl0IGZkUFRhdS5yZWFkKHNHKm4sIHNlY3Rpb25zUFRhdVsyXVswXS5wICsgaSpzRyk7XG5cbiAgICAgICAgICAgIGNvbnN0IGJ1ZmZCID0gYXdhaXQgYmF0Y2hTdWJ0cmFjdChidWZmMSwgYnVmZjIpO1xuICAgICAgICAgICAgY29uc3QgYnVmZlMgPSBidWZmX3Iuc2xpY2UoaSp6a2V5Lm44ciwgKGkrbikqemtleS5uOHIpO1xuICAgICAgICAgICAgY29uc3QgciA9IGF3YWl0IEcubXVsdGlFeHBBZmZpbmUoYnVmZkIsIGJ1ZmZTKTtcblxuICAgICAgICAgICAgUjEgPSBHLmFkZChSMSwgcik7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBDYWxjdWxhdGUgb2RkIGNvZWZmaWNpZW50cyBpbiB0cmFuc2Zvcm1lZCBkb21haW5cblxuICAgICAgICBidWZmX3IgPSBhd2FpdCBGci5iYXRjaFRvTW9udGdvbWVyeShidWZmX3IpO1xuICAgICAgICAvLyBjb25zdCBmaXJzdCA9IGN1cnZlLkZyLm5lZyhjdXJ2ZS5Gci5pbnYoY3VydmUuRnIuZSgyKSkpO1xuICAgICAgICAvLyBXb3JrcyoyICAgY29uc3QgZmlyc3QgPSBjdXJ2ZS5Gci5uZWcoY3VydmUuRnIuZSgyKSk7XG5cblxuICAgICAgICBsZXQgZmlyc3Q7XG5cbiAgICAgICAgaWYgKHprZXkucG93ZXIgPCBGci5zKSB7XG4gICAgICAgICAgICBmaXJzdCA9IEZyLm5lZyhGci5lKDIpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IHNtYWxsX20gID0gMiAqKiBGci5zO1xuICAgICAgICAgICAgY29uc3Qgc2hpZnRfdG9fc21hbGxfbSA9IEZyLmV4cChGci5zaGlmdCwgc21hbGxfbSk7XG4gICAgICAgICAgICBmaXJzdCA9IEZyLnN1Yiggc2hpZnRfdG9fc21hbGxfbSwgRnIub25lKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIGNvbnN0IGluYyA9IGN1cnZlLkZyLmludihjdXJ2ZS5QRnIud1t6a2V5LnBvd2VyKzFdKTtcbiAgICAgICAgY29uc3QgaW5jID0gemtleS5wb3dlciA8IEZyLnMgPyBGci53W3prZXkucG93ZXIrMV0gOiBGci5zaGlmdDtcbiAgICAgICAgYnVmZl9yID0gYXdhaXQgRnIuYmF0Y2hBcHBseUtleShidWZmX3IsIGZpcnN0LCBpbmMpO1xuICAgICAgICBidWZmX3IgPSBhd2FpdCBGci5mZnQoYnVmZl9yKTtcbiAgICAgICAgYnVmZl9yID0gYXdhaXQgRnIuYmF0Y2hGcm9tTW9udGdvbWVyeShidWZmX3IpO1xuXG4gICAgICAgIGF3YWl0IGJpbkZpbGVVdGlscy5zdGFydFJlYWRVbmlxdWVTZWN0aW9uKGZkLCBzZWN0aW9ucywgOSk7XG4gICAgICAgIGxldCBSMiA9IEcuemVybztcbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPHprZXkuZG9tYWluU2l6ZTsgaSArPSBNQVhfQ0hVTktfU0laRSkge1xuICAgICAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmRlYnVnKGBIIFZlcmlmaWNhdGlvbihsYWdyYW5nZSk6ICAke2l9LyR7emtleS5kb21haW5TaXplfWApO1xuICAgICAgICAgICAgY29uc3QgbiA9IE1hdGgubWluKHprZXkuZG9tYWluU2l6ZSAtIGksIE1BWF9DSFVOS19TSVpFKTtcblxuICAgICAgICAgICAgY29uc3QgYnVmZiA9IGF3YWl0IGZkLnJlYWQoc0cqbik7XG4gICAgICAgICAgICBjb25zdCBidWZmUyA9IGJ1ZmZfci5zbGljZShpKnprZXkubjhyLCAoaStuKSp6a2V5Lm44cik7XG4gICAgICAgICAgICBjb25zdCByID0gYXdhaXQgRy5tdWx0aUV4cEFmZmluZShidWZmLCBidWZmUyk7XG5cbiAgICAgICAgICAgIFIyID0gRy5hZGQoUjIsIHIpO1xuICAgICAgICB9XG4gICAgICAgIGF3YWl0IGJpbkZpbGVVdGlscy5lbmRSZWFkU2VjdGlvbihmZCk7XG5cbiAgICAgICAgc3IgPSBhd2FpdCBzYW1lUmF0aW8oY3VydmUsIFIxLCBSMiwgemtleS52a19kZWx0YV8yLCB6a2V5SW5pdC52a19kZWx0YV8yKTtcbiAgICAgICAgaWYgKHNyICE9PSB0cnVlKSByZXR1cm4gZmFsc2U7XG5cblxuICAgICAgICByZXR1cm4gdHJ1ZTtcblxuICAgIH1cblxuICAgIGFzeW5jIGZ1bmN0aW9uIGJhdGNoU3VidHJhY3QoYnVmZjEsIGJ1ZmYyKSB7XG4gICAgICAgIGNvbnN0IHNHID0gY3VydmUuRzEuRi5uOCoyO1xuICAgICAgICBjb25zdCBuUG9pbnRzID0gYnVmZjEuYnl0ZUxlbmd0aCAvIHNHO1xuICAgICAgICBjb25zdCBjb25jdXJyZW5jeT0gY3VydmUudG0uY29uY3VycmVuY3k7XG4gICAgICAgIGNvbnN0IG5Qb2ludHNQZXJUaHJlYWQgPSBNYXRoLmZsb29yKG5Qb2ludHMgLyBjb25jdXJyZW5jeSk7XG4gICAgICAgIGNvbnN0IG9wUHJvbWlzZXMgPSBbXTtcbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPGNvbmN1cnJlbmN5OyBpKyspIHtcbiAgICAgICAgICAgIGxldCBuO1xuICAgICAgICAgICAgaWYgKGk8IGNvbmN1cnJlbmN5LTEpIHtcbiAgICAgICAgICAgICAgICBuID0gblBvaW50c1BlclRocmVhZDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgbiA9IG5Qb2ludHMgLSBpKm5Qb2ludHNQZXJUaHJlYWQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobj09MCkgY29udGludWU7XG5cbiAgICAgICAgICAgIGNvbnN0IHN1YkJ1ZmYxID0gYnVmZjEuc2xpY2UoaSpuUG9pbnRzUGVyVGhyZWFkKnNHMSwgKGkqblBvaW50c1BlclRocmVhZCtuKSpzRzEpO1xuICAgICAgICAgICAgY29uc3Qgc3ViQnVmZjIgPSBidWZmMi5zbGljZShpKm5Qb2ludHNQZXJUaHJlYWQqc0cxLCAoaSpuUG9pbnRzUGVyVGhyZWFkK24pKnNHMSk7XG4gICAgICAgICAgICBvcFByb21pc2VzLnB1c2goYmF0Y2hTdWJ0cmFjdFRocmVhZChzdWJCdWZmMSwgc3ViQnVmZjIpKTtcbiAgICAgICAgfVxuXG5cbiAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgUHJvbWlzZS5hbGwob3BQcm9taXNlcyk7XG5cbiAgICAgICAgY29uc3QgZnVsbEJ1ZmZPdXQgPSBuZXcgVWludDhBcnJheShuUG9pbnRzKnNHKTtcbiAgICAgICAgbGV0IHAgPTA7XG4gICAgICAgIGZvciAobGV0IGk9MDsgaTxyZXN1bHQubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGZ1bGxCdWZmT3V0LnNldChyZXN1bHRbaV1bMF0sIHApO1xuICAgICAgICAgICAgcCs9cmVzdWx0W2ldWzBdLmJ5dGVMZW5ndGg7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZnVsbEJ1ZmZPdXQ7XG4gICAgfVxuXG5cbiAgICBhc3luYyBmdW5jdGlvbiBiYXRjaFN1YnRyYWN0VGhyZWFkKGJ1ZmYxLCBidWZmMikge1xuICAgICAgICBjb25zdCBzRzEgPSBjdXJ2ZS5HMS5GLm44KjI7XG4gICAgICAgIGNvbnN0IHNHbWlkID0gY3VydmUuRzEuRi5uOCozO1xuICAgICAgICBjb25zdCBuUG9pbnRzID0gYnVmZjEuYnl0ZUxlbmd0aC9zRzE7XG4gICAgICAgIGNvbnN0IHRhc2sgPSBbXTtcbiAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiQUxMT0NTRVRcIiwgdmFyOiAwLCBidWZmOiBidWZmMX0pO1xuICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJBTExPQ1NFVFwiLCB2YXI6IDEsIGJ1ZmY6IGJ1ZmYyfSk7XG4gICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkFMTE9DXCIsIHZhcjogMiwgbGVuOiBuUG9pbnRzKnNHbWlkfSk7XG4gICAgICAgIGZvciAobGV0IGk9MDsgaTxuUG9pbnRzOyBpKyspIHtcbiAgICAgICAgICAgIHRhc2sucHVzaCh7XG4gICAgICAgICAgICAgICAgY21kOiBcIkNBTExcIixcbiAgICAgICAgICAgICAgICBmbk5hbWU6IFwiZzFtX3N1YkFmZmluZVwiLFxuICAgICAgICAgICAgICAgIHBhcmFtczogW1xuICAgICAgICAgICAgICAgICAgICB7dmFyOiAwLCBvZmZzZXQ6IGkqc0cxfSxcbiAgICAgICAgICAgICAgICAgICAge3ZhcjogMSwgb2Zmc2V0OiBpKnNHMX0sXG4gICAgICAgICAgICAgICAgICAgIHt2YXI6IDIsIG9mZnNldDogaSpzR21pZH0sXG4gICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiQ0FMTFwiLCBmbk5hbWU6IFwiZzFtX2JhdGNoVG9BZmZpbmVcIiwgcGFyYW1zOiBbXG4gICAgICAgICAgICB7dmFyOiAyfSxcbiAgICAgICAgICAgIHt2YWw6IG5Qb2ludHN9LFxuICAgICAgICAgICAge3ZhcjogMn0sXG4gICAgICAgIF19KTtcbiAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiR0VUXCIsIG91dDogMCwgdmFyOiAyLCBsZW46IG5Qb2ludHMqc0cxfSk7XG5cbiAgICAgICAgY29uc3QgcmVzID0gYXdhaXQgY3VydmUudG0ucXVldWVBY3Rpb24odGFzayk7XG5cbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG5cbn1cblxuIiwiLypcbiAgICBDb3B5cmlnaHQgMjAxOCAwS0lNUyBhc3NvY2lhdGlvbi5cblxuICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHNuYXJrSlMuXG5cbiAgICBzbmFya0pTIGlzIGEgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdFxuICAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3JcbiAgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuXG4gICAgc25hcmtKUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVFxuICAgIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWVxuICAgIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpY1xuICAgIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cblxuICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gICAgYWxvbmcgd2l0aCBzbmFya0pTLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuKi9cblxuaW1wb3J0IG5ld1pLZXkgZnJvbSBcIi4vemtleV9uZXcuanNcIjtcbmltcG9ydCBwaGFzZTJ2ZXJpZnlGcm9tSW5pdCBmcm9tIFwiLi96a2V5X3ZlcmlmeV9mcm9taW5pdC5qc1wiO1xuXG5leHBvcnQgZGVmYXVsdCBhc3luYyBmdW5jdGlvbiBwaGFzZTJ2ZXJpZnlGcm9tUjFjcyhyMWNzRmlsZU5hbWUsIHBUYXVGaWxlTmFtZSwgemtleUZpbGVOYW1lLCBsb2dnZXIpIHtcblxuICAgIC8vIGNvbnN0IGluaXRGaWxlTmFtZSA9IFwiflwiICsgemtleUZpbGVOYW1lICsgXCIuaW5pdFwiO1xuICAgIGNvbnN0IGluaXRGaWxlTmFtZSA9IHt0eXBlOiBcImJpZ01lbVwifTtcbiAgICBhd2FpdCBuZXdaS2V5KHIxY3NGaWxlTmFtZSwgcFRhdUZpbGVOYW1lLCBpbml0RmlsZU5hbWUsIGxvZ2dlcik7XG5cbiAgICByZXR1cm4gYXdhaXQgcGhhc2UydmVyaWZ5RnJvbUluaXQoaW5pdEZpbGVOYW1lLCBwVGF1RmlsZU5hbWUsIHprZXlGaWxlTmFtZSwgbG9nZ2VyKTtcbn1cblxuIiwiLypcbiAgICBDb3B5cmlnaHQgMjAxOCAwS0lNUyBhc3NvY2lhdGlvbi5cblxuICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHNuYXJrSlMuXG5cbiAgICBzbmFya0pTIGlzIGEgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdFxuICAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3JcbiAgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuXG4gICAgc25hcmtKUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVFxuICAgIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWVxuICAgIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpY1xuICAgIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cblxuICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gICAgYWxvbmcgd2l0aCBzbmFya0pTLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuKi9cblxuaW1wb3J0ICogYXMgYmluRmlsZVV0aWxzIGZyb20gXCJAaWRlbjMvYmluZmlsZXV0aWxzXCI7XG5pbXBvcnQgKiBhcyB6a2V5VXRpbHMgZnJvbSBcIi4vemtleV91dGlscy5qc1wiO1xuaW1wb3J0IHsgZ2V0Q3VydmVGcm9tUSBhcyBnZXRDdXJ2ZSB9IGZyb20gXCIuL2N1cnZlcy5qc1wiO1xuaW1wb3J0ICogYXMgbWlzYyBmcm9tIFwiLi9taXNjLmpzXCI7XG5pbXBvcnQgQmxha2UyYiBmcm9tIFwiYmxha2UyYi13YXNtXCI7XG5pbXBvcnQgKiBhcyB1dGlscyBmcm9tIFwiLi96a2V5X3V0aWxzLmpzXCI7XG5pbXBvcnQgeyBoYXNoVG9HMiBhcyBoYXNoVG9HMiB9IGZyb20gXCIuL2tleXBhaXIuanNcIjtcbmltcG9ydCB7IGFwcGx5S2V5VG9TZWN0aW9uIH0gZnJvbSBcIi4vbXBjX2FwcGx5a2V5LmpzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGFzeW5jIGZ1bmN0aW9uIHBoYXNlMmNvbnRyaWJ1dGUoemtleU5hbWVPbGQsIHprZXlOYW1lTmV3LCBuYW1lLCBlbnRyb3B5LCBsb2dnZXIpIHtcbiAgICBhd2FpdCBCbGFrZTJiLnJlYWR5KCk7XG5cbiAgICBjb25zdCB7ZmQ6IGZkT2xkLCBzZWN0aW9uczogc2VjdGlvbnN9ID0gYXdhaXQgYmluRmlsZVV0aWxzLnJlYWRCaW5GaWxlKHprZXlOYW1lT2xkLCBcInprZXlcIiwgMik7XG4gICAgY29uc3QgemtleSA9IGF3YWl0IHprZXlVdGlscy5yZWFkSGVhZGVyKGZkT2xkLCBzZWN0aW9ucyk7XG4gICAgaWYgKHprZXkucHJvdG9jb2wgIT0gXCJncm90aDE2XCIpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiemtleSBmaWxlIGlzIG5vdCBncm90aDE2XCIpO1xuICAgIH1cblxuICAgIGNvbnN0IGN1cnZlID0gYXdhaXQgZ2V0Q3VydmUoemtleS5xKTtcblxuICAgIGNvbnN0IG1wY1BhcmFtcyA9IGF3YWl0IHprZXlVdGlscy5yZWFkTVBDUGFyYW1zKGZkT2xkLCBjdXJ2ZSwgc2VjdGlvbnMpO1xuXG4gICAgY29uc3QgZmROZXcgPSBhd2FpdCBiaW5GaWxlVXRpbHMuY3JlYXRlQmluRmlsZSh6a2V5TmFtZU5ldywgXCJ6a2V5XCIsIDEsIDEwKTtcblxuXG4gICAgY29uc3Qgcm5nID0gYXdhaXQgbWlzYy5nZXRSYW5kb21SbmcoZW50cm9weSk7XG5cbiAgICBjb25zdCB0cmFuc2NyaXB0SGFzaGVyID0gQmxha2UyYig2NCk7XG4gICAgdHJhbnNjcmlwdEhhc2hlci51cGRhdGUobXBjUGFyYW1zLmNzSGFzaCk7XG4gICAgZm9yIChsZXQgaT0wOyBpPG1wY1BhcmFtcy5jb250cmlidXRpb25zLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHV0aWxzLmhhc2hQdWJLZXkodHJhbnNjcmlwdEhhc2hlciwgY3VydmUsIG1wY1BhcmFtcy5jb250cmlidXRpb25zW2ldKTtcbiAgICB9XG5cbiAgICBjb25zdCBjdXJDb250cmlidXRpb24gPSB7fTtcbiAgICBjdXJDb250cmlidXRpb24uZGVsdGEgPSB7fTtcbiAgICBjdXJDb250cmlidXRpb24uZGVsdGEucHJ2S2V5ID0gY3VydmUuRnIuZnJvbVJuZyhybmcpO1xuICAgIGN1ckNvbnRyaWJ1dGlvbi5kZWx0YS5nMV9zID0gY3VydmUuRzEudG9BZmZpbmUoY3VydmUuRzEuZnJvbVJuZyhybmcpKTtcbiAgICBjdXJDb250cmlidXRpb24uZGVsdGEuZzFfc3ggPSBjdXJ2ZS5HMS50b0FmZmluZShjdXJ2ZS5HMS50aW1lc0ZyKGN1ckNvbnRyaWJ1dGlvbi5kZWx0YS5nMV9zLCBjdXJDb250cmlidXRpb24uZGVsdGEucHJ2S2V5KSk7XG4gICAgdXRpbHMuaGFzaEcxKHRyYW5zY3JpcHRIYXNoZXIsIGN1cnZlLCBjdXJDb250cmlidXRpb24uZGVsdGEuZzFfcyk7XG4gICAgdXRpbHMuaGFzaEcxKHRyYW5zY3JpcHRIYXNoZXIsIGN1cnZlLCBjdXJDb250cmlidXRpb24uZGVsdGEuZzFfc3gpO1xuICAgIGN1ckNvbnRyaWJ1dGlvbi50cmFuc2NyaXB0ID0gdHJhbnNjcmlwdEhhc2hlci5kaWdlc3QoKTtcbiAgICBjdXJDb250cmlidXRpb24uZGVsdGEuZzJfc3AgPSBoYXNoVG9HMihjdXJ2ZSwgY3VyQ29udHJpYnV0aW9uLnRyYW5zY3JpcHQpO1xuICAgIGN1ckNvbnRyaWJ1dGlvbi5kZWx0YS5nMl9zcHggPSBjdXJ2ZS5HMi50b0FmZmluZShjdXJ2ZS5HMi50aW1lc0ZyKGN1ckNvbnRyaWJ1dGlvbi5kZWx0YS5nMl9zcCwgY3VyQ29udHJpYnV0aW9uLmRlbHRhLnBydktleSkpO1xuXG4gICAgemtleS52a19kZWx0YV8xID0gY3VydmUuRzEudGltZXNGcih6a2V5LnZrX2RlbHRhXzEsIGN1ckNvbnRyaWJ1dGlvbi5kZWx0YS5wcnZLZXkpO1xuICAgIHprZXkudmtfZGVsdGFfMiA9IGN1cnZlLkcyLnRpbWVzRnIoemtleS52a19kZWx0YV8yLCBjdXJDb250cmlidXRpb24uZGVsdGEucHJ2S2V5KTtcblxuICAgIGN1ckNvbnRyaWJ1dGlvbi5kZWx0YUFmdGVyID0gemtleS52a19kZWx0YV8xO1xuXG4gICAgY3VyQ29udHJpYnV0aW9uLnR5cGUgPSAwO1xuICAgIGlmIChuYW1lKSBjdXJDb250cmlidXRpb24ubmFtZSA9IG5hbWU7XG5cbiAgICBtcGNQYXJhbXMuY29udHJpYnV0aW9ucy5wdXNoKGN1ckNvbnRyaWJ1dGlvbik7XG5cbiAgICBhd2FpdCB6a2V5VXRpbHMud3JpdGVIZWFkZXIoZmROZXcsIHprZXkpO1xuXG4gICAgLy8gSUNcbiAgICBhd2FpdCBiaW5GaWxlVXRpbHMuY29weVNlY3Rpb24oZmRPbGQsIHNlY3Rpb25zLCBmZE5ldywgMyk7XG5cbiAgICAvLyBDb2VmZnMgKEtlZXAgb3JpZ2luYWwpXG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLmNvcHlTZWN0aW9uKGZkT2xkLCBzZWN0aW9ucywgZmROZXcsIDQpO1xuXG4gICAgLy8gQSBTZWN0aW9uXG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLmNvcHlTZWN0aW9uKGZkT2xkLCBzZWN0aW9ucywgZmROZXcsIDUpO1xuXG4gICAgLy8gQjEgU2VjdGlvblxuICAgIGF3YWl0IGJpbkZpbGVVdGlscy5jb3B5U2VjdGlvbihmZE9sZCwgc2VjdGlvbnMsIGZkTmV3LCA2KTtcblxuICAgIC8vIEIyIFNlY3Rpb25cbiAgICBhd2FpdCBiaW5GaWxlVXRpbHMuY29weVNlY3Rpb24oZmRPbGQsIHNlY3Rpb25zLCBmZE5ldywgNyk7XG5cbiAgICBjb25zdCBpbnZEZWx0YSA9IGN1cnZlLkZyLmludihjdXJDb250cmlidXRpb24uZGVsdGEucHJ2S2V5KTtcbiAgICBhd2FpdCBhcHBseUtleVRvU2VjdGlvbihmZE9sZCwgc2VjdGlvbnMsIGZkTmV3LCA4LCBjdXJ2ZSwgXCJHMVwiLCBpbnZEZWx0YSwgY3VydmUuRnIuZSgxKSwgXCJMIFNlY3Rpb25cIiwgbG9nZ2VyKTtcbiAgICBhd2FpdCBhcHBseUtleVRvU2VjdGlvbihmZE9sZCwgc2VjdGlvbnMsIGZkTmV3LCA5LCBjdXJ2ZSwgXCJHMVwiLCBpbnZEZWx0YSwgY3VydmUuRnIuZSgxKSwgXCJIIFNlY3Rpb25cIiwgbG9nZ2VyKTtcblxuICAgIGF3YWl0IHprZXlVdGlscy53cml0ZU1QQ1BhcmFtcyhmZE5ldywgY3VydmUsIG1wY1BhcmFtcyk7XG5cbiAgICBhd2FpdCBmZE9sZC5jbG9zZSgpO1xuICAgIGF3YWl0IGZkTmV3LmNsb3NlKCk7XG5cbiAgICBjb25zdCBjb250cmlidXRpb25IYXNoZXIgPSBCbGFrZTJiKDY0KTtcbiAgICB1dGlscy5oYXNoUHViS2V5KGNvbnRyaWJ1dGlvbkhhc2hlciwgY3VydmUsIGN1ckNvbnRyaWJ1dGlvbik7XG5cbiAgICBjb25zdCBjb250cmlidXRpb25IYXNoID0gY29udHJpYnV0aW9uSGFzaGVyLmRpZ2VzdCgpO1xuXG4gICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8obWlzYy5mb3JtYXRIYXNoKG1wY1BhcmFtcy5jc0hhc2gsIFwiQ2lyY3VpdCBIYXNoOiBcIikpO1xuICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKG1pc2MuZm9ybWF0SGFzaChjb250cmlidXRpb25IYXNoLCBcIkNvbnRyaWJ1dGlvbiBIYXNoOiBcIikpO1xuXG4gICAgcmV0dXJuIGNvbnRyaWJ1dGlvbkhhc2g7XG59XG4iLCIvKlxuICAgIENvcHlyaWdodCAyMDE4IDBLSU1TIGFzc29jaWF0aW9uLlxuXG4gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2Ygc25hcmtKUy5cblxuICAgIHNuYXJrSlMgaXMgYSBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0XG4gICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxuICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG5cbiAgICBzbmFya0pTIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUXG4gICAgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZXG4gICAgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljXG4gICAgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuXG4gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAgICBhbG9uZyB3aXRoIHNuYXJrSlMuIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXG4qL1xuXG5pbXBvcnQgKiBhcyBiaW5GaWxlVXRpbHMgZnJvbSBcIkBpZGVuMy9iaW5maWxldXRpbHNcIjtcbmltcG9ydCAqIGFzIHprZXlVdGlscyBmcm9tIFwiLi96a2V5X3V0aWxzLmpzXCI7XG5pbXBvcnQgeyBnZXRDdXJ2ZUZyb21RIGFzIGdldEN1cnZlIH0gZnJvbSBcIi4vY3VydmVzLmpzXCI7XG5pbXBvcnQgKiBhcyBtaXNjIGZyb20gXCIuL21pc2MuanNcIjtcbmltcG9ydCBCbGFrZTJiIGZyb20gXCJibGFrZTJiLXdhc21cIjtcbmltcG9ydCAqIGFzIHV0aWxzIGZyb20gXCIuL3prZXlfdXRpbHMuanNcIjtcbmltcG9ydCB7IGhhc2hUb0cyIGFzIGhhc2hUb0cyIH0gZnJvbSBcIi4va2V5cGFpci5qc1wiO1xuaW1wb3J0IHsgYXBwbHlLZXlUb1NlY3Rpb24gfSBmcm9tIFwiLi9tcGNfYXBwbHlrZXkuanNcIjtcblxuXG5leHBvcnQgZGVmYXVsdCBhc3luYyBmdW5jdGlvbiBiZWFjb24oemtleU5hbWVPbGQsIHprZXlOYW1lTmV3LCBuYW1lLCBiZWFjb25IYXNoU3RyLCBudW1JdGVyYXRpb25zRXhwLCBsb2dnZXIpIHtcbiAgICBhd2FpdCBCbGFrZTJiLnJlYWR5KCk7XG5cbiAgICBjb25zdCBiZWFjb25IYXNoID0gbWlzYy5oZXgyQnl0ZUFycmF5KGJlYWNvbkhhc2hTdHIpO1xuICAgIGlmICggICAoYmVhY29uSGFzaC5ieXRlTGVuZ3RoID09IDApXG4gICAgICAgIHx8IChiZWFjb25IYXNoLmJ5dGVMZW5ndGgqMiAhPWJlYWNvbkhhc2hTdHIubGVuZ3RoKSlcbiAgICB7XG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5lcnJvcihcIkludmFsaWQgQmVhY29uIEhhc2guIChJdCBtdXN0IGJlIGEgdmFsaWQgaGV4YWRlY2ltYWwgc2VxdWVuY2UpXCIpO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGlmIChiZWFjb25IYXNoLmxlbmd0aD49MjU2KSB7XG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5lcnJvcihcIk1heGltdW0gbGVuZ3RoIG9mIGJlYWNvbiBoYXNoIGlzIDI1NSBieXRlc1wiKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIG51bUl0ZXJhdGlvbnNFeHAgPSBwYXJzZUludChudW1JdGVyYXRpb25zRXhwKTtcbiAgICBpZiAoKG51bUl0ZXJhdGlvbnNFeHA8MTApfHwobnVtSXRlcmF0aW9uc0V4cD42MykpIHtcbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmVycm9yKFwiSW52YWxpZCBudW1JdGVyYXRpb25zRXhwLiAoTXVzdCBiZSBiZXR3ZWVuIDEwIGFuZCA2MylcIik7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cblxuICAgIGNvbnN0IHtmZDogZmRPbGQsIHNlY3Rpb25zOiBzZWN0aW9uc30gPSBhd2FpdCBiaW5GaWxlVXRpbHMucmVhZEJpbkZpbGUoemtleU5hbWVPbGQsIFwiemtleVwiLCAyKTtcbiAgICBjb25zdCB6a2V5ID0gYXdhaXQgemtleVV0aWxzLnJlYWRIZWFkZXIoZmRPbGQsIHNlY3Rpb25zKTtcblxuICAgIGlmICh6a2V5LnByb3RvY29sICE9IFwiZ3JvdGgxNlwiKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcInprZXkgZmlsZSBpcyBub3QgZ3JvdGgxNlwiKTtcbiAgICB9XG5cblxuICAgIGNvbnN0IGN1cnZlID0gYXdhaXQgZ2V0Q3VydmUoemtleS5xKTtcblxuICAgIGNvbnN0IG1wY1BhcmFtcyA9IGF3YWl0IHprZXlVdGlscy5yZWFkTVBDUGFyYW1zKGZkT2xkLCBjdXJ2ZSwgc2VjdGlvbnMpO1xuXG4gICAgY29uc3QgZmROZXcgPSBhd2FpdCBiaW5GaWxlVXRpbHMuY3JlYXRlQmluRmlsZSh6a2V5TmFtZU5ldywgXCJ6a2V5XCIsIDEsIDEwKTtcblxuICAgIGNvbnN0IHJuZyA9IGF3YWl0IG1pc2Mucm5nRnJvbUJlYWNvblBhcmFtcyhiZWFjb25IYXNoLCBudW1JdGVyYXRpb25zRXhwKTtcblxuICAgIGNvbnN0IHRyYW5zY3JpcHRIYXNoZXIgPSBCbGFrZTJiKDY0KTtcbiAgICB0cmFuc2NyaXB0SGFzaGVyLnVwZGF0ZShtcGNQYXJhbXMuY3NIYXNoKTtcbiAgICBmb3IgKGxldCBpPTA7IGk8bXBjUGFyYW1zLmNvbnRyaWJ1dGlvbnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdXRpbHMuaGFzaFB1YktleSh0cmFuc2NyaXB0SGFzaGVyLCBjdXJ2ZSwgbXBjUGFyYW1zLmNvbnRyaWJ1dGlvbnNbaV0pO1xuICAgIH1cblxuICAgIGNvbnN0IGN1ckNvbnRyaWJ1dGlvbiA9IHt9O1xuICAgIGN1ckNvbnRyaWJ1dGlvbi5kZWx0YSA9IHt9O1xuICAgIGN1ckNvbnRyaWJ1dGlvbi5kZWx0YS5wcnZLZXkgPSBjdXJ2ZS5Gci5mcm9tUm5nKHJuZyk7XG4gICAgY3VyQ29udHJpYnV0aW9uLmRlbHRhLmcxX3MgPSBjdXJ2ZS5HMS50b0FmZmluZShjdXJ2ZS5HMS5mcm9tUm5nKHJuZykpO1xuICAgIGN1ckNvbnRyaWJ1dGlvbi5kZWx0YS5nMV9zeCA9IGN1cnZlLkcxLnRvQWZmaW5lKGN1cnZlLkcxLnRpbWVzRnIoY3VyQ29udHJpYnV0aW9uLmRlbHRhLmcxX3MsIGN1ckNvbnRyaWJ1dGlvbi5kZWx0YS5wcnZLZXkpKTtcbiAgICB1dGlscy5oYXNoRzEodHJhbnNjcmlwdEhhc2hlciwgY3VydmUsIGN1ckNvbnRyaWJ1dGlvbi5kZWx0YS5nMV9zKTtcbiAgICB1dGlscy5oYXNoRzEodHJhbnNjcmlwdEhhc2hlciwgY3VydmUsIGN1ckNvbnRyaWJ1dGlvbi5kZWx0YS5nMV9zeCk7XG4gICAgY3VyQ29udHJpYnV0aW9uLnRyYW5zY3JpcHQgPSB0cmFuc2NyaXB0SGFzaGVyLmRpZ2VzdCgpO1xuICAgIGN1ckNvbnRyaWJ1dGlvbi5kZWx0YS5nMl9zcCA9IGhhc2hUb0cyKGN1cnZlLCBjdXJDb250cmlidXRpb24udHJhbnNjcmlwdCk7XG4gICAgY3VyQ29udHJpYnV0aW9uLmRlbHRhLmcyX3NweCA9IGN1cnZlLkcyLnRvQWZmaW5lKGN1cnZlLkcyLnRpbWVzRnIoY3VyQ29udHJpYnV0aW9uLmRlbHRhLmcyX3NwLCBjdXJDb250cmlidXRpb24uZGVsdGEucHJ2S2V5KSk7XG5cbiAgICB6a2V5LnZrX2RlbHRhXzEgPSBjdXJ2ZS5HMS50aW1lc0ZyKHprZXkudmtfZGVsdGFfMSwgY3VyQ29udHJpYnV0aW9uLmRlbHRhLnBydktleSk7XG4gICAgemtleS52a19kZWx0YV8yID0gY3VydmUuRzIudGltZXNGcih6a2V5LnZrX2RlbHRhXzIsIGN1ckNvbnRyaWJ1dGlvbi5kZWx0YS5wcnZLZXkpO1xuXG4gICAgY3VyQ29udHJpYnV0aW9uLmRlbHRhQWZ0ZXIgPSB6a2V5LnZrX2RlbHRhXzE7XG5cbiAgICBjdXJDb250cmlidXRpb24udHlwZSA9IDE7XG4gICAgY3VyQ29udHJpYnV0aW9uLm51bUl0ZXJhdGlvbnNFeHAgPSBudW1JdGVyYXRpb25zRXhwO1xuICAgIGN1ckNvbnRyaWJ1dGlvbi5iZWFjb25IYXNoID0gYmVhY29uSGFzaDtcblxuICAgIGlmIChuYW1lKSBjdXJDb250cmlidXRpb24ubmFtZSA9IG5hbWU7XG5cbiAgICBtcGNQYXJhbXMuY29udHJpYnV0aW9ucy5wdXNoKGN1ckNvbnRyaWJ1dGlvbik7XG5cbiAgICBhd2FpdCB6a2V5VXRpbHMud3JpdGVIZWFkZXIoZmROZXcsIHprZXkpO1xuXG4gICAgLy8gSUNcbiAgICBhd2FpdCBiaW5GaWxlVXRpbHMuY29weVNlY3Rpb24oZmRPbGQsIHNlY3Rpb25zLCBmZE5ldywgMyk7XG5cbiAgICAvLyBDb2VmZnMgKEtlZXAgb3JpZ2luYWwpXG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLmNvcHlTZWN0aW9uKGZkT2xkLCBzZWN0aW9ucywgZmROZXcsIDQpO1xuXG4gICAgLy8gQSBTZWN0aW9uXG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLmNvcHlTZWN0aW9uKGZkT2xkLCBzZWN0aW9ucywgZmROZXcsIDUpO1xuXG4gICAgLy8gQjEgU2VjdGlvblxuICAgIGF3YWl0IGJpbkZpbGVVdGlscy5jb3B5U2VjdGlvbihmZE9sZCwgc2VjdGlvbnMsIGZkTmV3LCA2KTtcblxuICAgIC8vIEIyIFNlY3Rpb25cbiAgICBhd2FpdCBiaW5GaWxlVXRpbHMuY29weVNlY3Rpb24oZmRPbGQsIHNlY3Rpb25zLCBmZE5ldywgNyk7XG5cbiAgICBjb25zdCBpbnZEZWx0YSA9IGN1cnZlLkZyLmludihjdXJDb250cmlidXRpb24uZGVsdGEucHJ2S2V5KTtcbiAgICBhd2FpdCBhcHBseUtleVRvU2VjdGlvbihmZE9sZCwgc2VjdGlvbnMsIGZkTmV3LCA4LCBjdXJ2ZSwgXCJHMVwiLCBpbnZEZWx0YSwgY3VydmUuRnIuZSgxKSwgXCJMIFNlY3Rpb25cIiwgbG9nZ2VyKTtcbiAgICBhd2FpdCBhcHBseUtleVRvU2VjdGlvbihmZE9sZCwgc2VjdGlvbnMsIGZkTmV3LCA5LCBjdXJ2ZSwgXCJHMVwiLCBpbnZEZWx0YSwgY3VydmUuRnIuZSgxKSwgXCJIIFNlY3Rpb25cIiwgbG9nZ2VyKTtcblxuICAgIGF3YWl0IHprZXlVdGlscy53cml0ZU1QQ1BhcmFtcyhmZE5ldywgY3VydmUsIG1wY1BhcmFtcyk7XG5cbiAgICBhd2FpdCBmZE9sZC5jbG9zZSgpO1xuICAgIGF3YWl0IGZkTmV3LmNsb3NlKCk7XG5cbiAgICBjb25zdCBjb250cmlidXRpb25IYXNoZXIgPSBCbGFrZTJiKDY0KTtcbiAgICB1dGlscy5oYXNoUHViS2V5KGNvbnRyaWJ1dGlvbkhhc2hlciwgY3VydmUsIGN1ckNvbnRyaWJ1dGlvbik7XG5cbiAgICBjb25zdCBjb250cmlidXRpb25IYXNoID0gY29udHJpYnV0aW9uSGFzaGVyLmRpZ2VzdCgpO1xuXG4gICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8obWlzYy5mb3JtYXRIYXNoKGNvbnRyaWJ1dGlvbkhhc2gsIFwiQ29udHJpYnV0aW9uIEhhc2g6IFwiKSk7XG5cbiAgICByZXR1cm4gY29udHJpYnV0aW9uSGFzaDtcbn1cbiIsImltcG9ydCB7IHJlYWRaS2V5IGFzIHJlYWRaS2V5IH0gZnJvbSBcIi4vemtleV91dGlscy5qc1wiO1xuaW1wb3J0IHsgdXRpbHMgfSBmcm9tIFwiZmZqYXZhc2NyaXB0XCI7XG5cbmV4cG9ydCBkZWZhdWx0IGFzeW5jIGZ1bmN0aW9uIHprZXlFeHBvcnRKc29uKHprZXlGaWxlTmFtZSkge1xuXG4gICAgY29uc3QgektleSA9IGF3YWl0IHJlYWRaS2V5KHprZXlGaWxlTmFtZSwgdHJ1ZSk7XG4gICAgZGVsZXRlIHpLZXkuY3VydmU7XG4gICAgZGVsZXRlIHpLZXkuRjtcblxuICAgIHJldHVybiB1dGlscy5zdHJpbmdpZnlCaWdJbnRzKHpLZXkpO1xufVxuIiwiLypcbiAgICBDb3B5cmlnaHQgMjAxOCAwS0lNUyBhc3NvY2lhdGlvbi5cblxuICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHNuYXJrSlMuXG5cbiAgICBzbmFya0pTIGlzIGEgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdFxuICAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3JcbiAgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuXG4gICAgc25hcmtKUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVFxuICAgIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWVxuICAgIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpY1xuICAgIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cblxuICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gICAgYWxvbmcgd2l0aCBzbmFya0pTLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuKi9cblxuLy8gRm9ybWF0IG9mIHRoZSBvdXRwdXRcbi8vICAgICAgSGFzaCBvZiB0aGUgbGFzdCBjb250cmlidXRpb24gIDY0IEJ5dGVzXG4vLyAgICAgIDJeTioyLTEgVGF1RzEgUG9pbnRzIChjb21wcmVzc2VkKVxuLy8gICAgICAyXk4gVGF1RzIgUG9pbnRzIChjb21wcmVzc2VkKVxuLy8gICAgICAyXk4gQWxwaGFUYXVHMSBQb2ludHMgKGNvbXByZXNzZWQpXG4vLyAgICAgIDJeTiBCZXRhVGF1RzEgUG9pbnRzIChjb21wcmVzc2VkKVxuLy8gICAgICBQdWJsaWMgS2V5XG4vLyAgICAgICAgICBCZXRhRzIgKGNvbXByZXNzZWQpXG4vLyAgICAgICAgICBHMSpzIChjb21wcmVzc2VkKVxuLy8gICAgICAgICAgRzEqcyp0YXUgKGNvbXByZXNzZWQpXG4vLyAgICAgICAgICBHMSp0IChjb21wcmVzc2VkKVxuLy8gICAgICAgICAgRzEqdCphbHBoYSAoY29tcHJlc3NlZClcbi8vICAgICAgICAgIEcxKnUgKGNvbXByZXNzZWQpXG4vLyAgICAgICAgICBHMSp1KmJldGEgKGNvbXByZXNzZWQpXG4vLyAgICAgICAgICBHMipzcCp0YXUgKGNvbXByZXNzZWQpXG4vLyAgICAgICAgICBHMip0cCphbHBoYSAoY29tcHJlc3NlZClcbi8vICAgICAgICAgIEcyKnVwKmJldGEgKGNvbXByZXNzZWQpXG5cbmltcG9ydCAqIGFzIGZhc3RGaWxlIGZyb20gXCJmYXN0ZmlsZVwiO1xuaW1wb3J0IEJsYWtlMmIgZnJvbSBcImJsYWtlMmItd2FzbVwiO1xuaW1wb3J0ICogYXMgdXRpbHMgZnJvbSBcIi4vemtleV91dGlscy5qc1wiO1xuaW1wb3J0ICogYXMgbWlzYyBmcm9tIFwiLi9taXNjLmpzXCI7XG5pbXBvcnQgeyBhcHBseUtleVRvQ2hhbGxlbmdlU2VjdGlvbiB9IGZyb20gXCIuL21wY19hcHBseWtleS5qc1wiO1xuaW1wb3J0IHsgaGFzaFB1YktleSB9IGZyb20gXCIuL3prZXlfdXRpbHMuanNcIjtcbmltcG9ydCB7IGhhc2hUb0cyIGFzIGhhc2hUb0cyIH0gZnJvbSBcIi4va2V5cGFpci5qc1wiO1xuXG5leHBvcnQgZGVmYXVsdCBhc3luYyBmdW5jdGlvbiBiZWxsbWFuQ29udHJpYnV0ZShjdXJ2ZSwgY2hhbGxlbmdlRmlsZW5hbWUsIHJlc3BvbnNlRmlsZU5hbWUsIGVudHJvcHksIGxvZ2dlcikge1xuICAgIGF3YWl0IEJsYWtlMmIucmVhZHkoKTtcblxuICAgIGNvbnN0IHJuZyA9IGF3YWl0IG1pc2MuZ2V0UmFuZG9tUm5nKGVudHJvcHkpO1xuXG4gICAgY29uc3QgZGVsdGEgPSBjdXJ2ZS5Gci5mcm9tUm5nKHJuZyk7XG4gICAgY29uc3QgaW52RGVsdGEgPSBjdXJ2ZS5Gci5pbnYoZGVsdGEpO1xuXG4gICAgY29uc3Qgc0cxID0gY3VydmUuRzEuRi5uOCoyO1xuICAgIGNvbnN0IHNHMiA9IGN1cnZlLkcyLkYubjgqMjtcblxuICAgIGNvbnN0IGZkRnJvbSA9IGF3YWl0IGZhc3RGaWxlLnJlYWRFeGlzdGluZyhjaGFsbGVuZ2VGaWxlbmFtZSk7XG4gICAgY29uc3QgZmRUbyA9IGF3YWl0IGZhc3RGaWxlLmNyZWF0ZU92ZXJyaWRlKHJlc3BvbnNlRmlsZU5hbWUpO1xuXG5cbiAgICBhd2FpdCBjb3B5KHNHMSk7IC8vIGFscGhhMVxuICAgIGF3YWl0IGNvcHkoc0cxKTsgLy8gYmV0YTFcbiAgICBhd2FpdCBjb3B5KHNHMik7IC8vIGJldGEyXG4gICAgYXdhaXQgY29weShzRzIpOyAvLyBnYW1tYTJcbiAgICBjb25zdCBvbGREZWx0YTEgPSBhd2FpdCByZWFkRzEoKTtcbiAgICBjb25zdCBkZWx0YTEgPSBjdXJ2ZS5HMS50aW1lc0ZyKG9sZERlbHRhMSwgZGVsdGEpO1xuICAgIGF3YWl0IHdyaXRlRzEoZGVsdGExKTtcbiAgICBjb25zdCBvbGREZWx0YTIgPSBhd2FpdCByZWFkRzIoKTtcbiAgICBjb25zdCBkZWx0YTIgPSBjdXJ2ZS5HMi50aW1lc0ZyKG9sZERlbHRhMiwgZGVsdGEpO1xuICAgIGF3YWl0IHdyaXRlRzIoZGVsdGEyKTtcblxuICAgIC8vIElDXG4gICAgY29uc3QgbklDID0gYXdhaXQgZmRGcm9tLnJlYWRVQkUzMigpO1xuICAgIGF3YWl0IGZkVG8ud3JpdGVVQkUzMihuSUMpO1xuICAgIGF3YWl0IGNvcHkobklDKnNHMSk7XG5cbiAgICAvLyBIXG4gICAgY29uc3QgbkggPSBhd2FpdCBmZEZyb20ucmVhZFVCRTMyKCk7XG4gICAgYXdhaXQgZmRUby53cml0ZVVCRTMyKG5IKTtcbiAgICBhd2FpdCBhcHBseUtleVRvQ2hhbGxlbmdlU2VjdGlvbihmZEZyb20sIGZkVG8sIG51bGwsIGN1cnZlLCBcIkcxXCIsIG5ILCBpbnZEZWx0YSwgY3VydmUuRnIuZSgxKSwgXCJVTkNPTVBSRVNTRURcIiwgXCJIXCIsIGxvZ2dlcik7XG5cbiAgICAvLyBMXG4gICAgY29uc3QgbkwgPSBhd2FpdCBmZEZyb20ucmVhZFVCRTMyKCk7XG4gICAgYXdhaXQgZmRUby53cml0ZVVCRTMyKG5MKTtcbiAgICBhd2FpdCBhcHBseUtleVRvQ2hhbGxlbmdlU2VjdGlvbihmZEZyb20sIGZkVG8sIG51bGwsIGN1cnZlLCBcIkcxXCIsIG5MLCBpbnZEZWx0YSwgY3VydmUuRnIuZSgxKSwgXCJVTkNPTVBSRVNTRURcIiwgXCJMXCIsIGxvZ2dlcik7XG5cbiAgICAvLyBBXG4gICAgY29uc3QgbkEgPSBhd2FpdCBmZEZyb20ucmVhZFVCRTMyKCk7XG4gICAgYXdhaXQgZmRUby53cml0ZVVCRTMyKG5BKTtcbiAgICBhd2FpdCBjb3B5KG5BKnNHMSk7XG5cbiAgICAvLyBCMVxuICAgIGNvbnN0IG5CMSA9IGF3YWl0IGZkRnJvbS5yZWFkVUJFMzIoKTtcbiAgICBhd2FpdCBmZFRvLndyaXRlVUJFMzIobkIxKTtcbiAgICBhd2FpdCBjb3B5KG5CMSpzRzEpO1xuXG4gICAgLy8gQjJcbiAgICBjb25zdCBuQjIgPSBhd2FpdCBmZEZyb20ucmVhZFVCRTMyKCk7XG4gICAgYXdhaXQgZmRUby53cml0ZVVCRTMyKG5CMik7XG4gICAgYXdhaXQgY29weShuQjIqc0cyKTtcblxuXG4gICAgLy8vLy8vLy8vL1xuICAgIC8vLyBSZWFkIGNvbnRyaWJ1dGlvbnNcbiAgICAvLy8vLy8vLy8vXG4gICAgY29uc3QgdHJhbnNjcmlwdEhhc2hlciA9IEJsYWtlMmIoNjQpO1xuXG4gICAgY29uc3QgbXBjUGFyYW1zID0ge307XG4gICAgLy8gY3NIYXNoXG4gICAgbXBjUGFyYW1zLmNzSGFzaCA9ICBhd2FpdCBmZEZyb20ucmVhZCg2NCk7XG4gICAgdHJhbnNjcmlwdEhhc2hlci51cGRhdGUobXBjUGFyYW1zLmNzSGFzaCk7XG5cbiAgICBjb25zdCBuQ29udHJpYnV0aW9ucyA9IGF3YWl0IGZkRnJvbS5yZWFkVUJFMzIoKTtcbiAgICBtcGNQYXJhbXMuY29udHJpYnV0aW9ucyA9IFtdO1xuICAgIGZvciAobGV0IGk9MDsgaTxuQ29udHJpYnV0aW9uczsgaSsrKSB7XG4gICAgICAgIGNvbnN0IGMgPSB7IGRlbHRhOnt9IH07XG4gICAgICAgIGMuZGVsdGFBZnRlciA9IGF3YWl0IHJlYWRHMSgpO1xuICAgICAgICBjLmRlbHRhLmcxX3MgPSBhd2FpdCByZWFkRzEoKTtcbiAgICAgICAgYy5kZWx0YS5nMV9zeCA9IGF3YWl0IHJlYWRHMSgpO1xuICAgICAgICBjLmRlbHRhLmcyX3NweCA9IGF3YWl0IHJlYWRHMigpO1xuICAgICAgICBjLnRyYW5zY3JpcHQgPSBhd2FpdCBmZEZyb20ucmVhZCg2NCk7XG4gICAgICAgIG1wY1BhcmFtcy5jb250cmlidXRpb25zLnB1c2goYyk7XG4gICAgICAgIGhhc2hQdWJLZXkodHJhbnNjcmlwdEhhc2hlciwgY3VydmUsIGMpO1xuICAgIH1cblxuICAgIGNvbnN0IGN1ckNvbnRyaWJ1dGlvbiA9IHt9O1xuICAgIGN1ckNvbnRyaWJ1dGlvbi5kZWx0YSA9IHt9O1xuICAgIGN1ckNvbnRyaWJ1dGlvbi5kZWx0YS5wcnZLZXkgPSBkZWx0YTtcbiAgICBjdXJDb250cmlidXRpb24uZGVsdGEuZzFfcyA9IGN1cnZlLkcxLnRvQWZmaW5lKGN1cnZlLkcxLmZyb21Sbmcocm5nKSk7XG4gICAgY3VyQ29udHJpYnV0aW9uLmRlbHRhLmcxX3N4ID0gY3VydmUuRzEudG9BZmZpbmUoY3VydmUuRzEudGltZXNGcihjdXJDb250cmlidXRpb24uZGVsdGEuZzFfcywgZGVsdGEpKTtcbiAgICB1dGlscy5oYXNoRzEodHJhbnNjcmlwdEhhc2hlciwgY3VydmUsIGN1ckNvbnRyaWJ1dGlvbi5kZWx0YS5nMV9zKTtcbiAgICB1dGlscy5oYXNoRzEodHJhbnNjcmlwdEhhc2hlciwgY3VydmUsIGN1ckNvbnRyaWJ1dGlvbi5kZWx0YS5nMV9zeCk7XG4gICAgY3VyQ29udHJpYnV0aW9uLnRyYW5zY3JpcHQgPSB0cmFuc2NyaXB0SGFzaGVyLmRpZ2VzdCgpO1xuICAgIGN1ckNvbnRyaWJ1dGlvbi5kZWx0YS5nMl9zcCA9IGhhc2hUb0cyKGN1cnZlLCBjdXJDb250cmlidXRpb24udHJhbnNjcmlwdCk7XG4gICAgY3VyQ29udHJpYnV0aW9uLmRlbHRhLmcyX3NweCA9IGN1cnZlLkcyLnRvQWZmaW5lKGN1cnZlLkcyLnRpbWVzRnIoY3VyQ29udHJpYnV0aW9uLmRlbHRhLmcyX3NwLCBkZWx0YSkpO1xuICAgIGN1ckNvbnRyaWJ1dGlvbi5kZWx0YUFmdGVyID0gZGVsdGExO1xuICAgIGN1ckNvbnRyaWJ1dGlvbi50eXBlID0gMDtcbiAgICBtcGNQYXJhbXMuY29udHJpYnV0aW9ucy5wdXNoKGN1ckNvbnRyaWJ1dGlvbik7XG5cblxuICAgIC8vLy8vLy8vLy9cbiAgICAvLy8gV3JpdGUgQ29udHJpYnV0aW9uXG4gICAgLy8vLy8vLy8vL1xuXG4gICAgYXdhaXQgZmRUby53cml0ZShtcGNQYXJhbXMuY3NIYXNoKTtcbiAgICBhd2FpdCBmZFRvLndyaXRlVUJFMzIobXBjUGFyYW1zLmNvbnRyaWJ1dGlvbnMubGVuZ3RoKTtcblxuICAgIGZvciAobGV0IGk9MDsgaTxtcGNQYXJhbXMuY29udHJpYnV0aW9ucy5sZW5ndGg7IGkrKykge1xuICAgICAgICBjb25zdCBjID0gbXBjUGFyYW1zLmNvbnRyaWJ1dGlvbnNbaV07XG4gICAgICAgIGF3YWl0IHdyaXRlRzEoYy5kZWx0YUFmdGVyKTtcbiAgICAgICAgYXdhaXQgd3JpdGVHMShjLmRlbHRhLmcxX3MpO1xuICAgICAgICBhd2FpdCB3cml0ZUcxKGMuZGVsdGEuZzFfc3gpO1xuICAgICAgICBhd2FpdCB3cml0ZUcyKGMuZGVsdGEuZzJfc3B4KTtcbiAgICAgICAgYXdhaXQgZmRUby53cml0ZShjLnRyYW5zY3JpcHQpO1xuICAgIH1cblxuICAgIGNvbnN0IGNvbnRyaWJ1dGlvbkhhc2hlciA9IEJsYWtlMmIoNjQpO1xuICAgIGhhc2hQdWJLZXkoY29udHJpYnV0aW9uSGFzaGVyLCBjdXJ2ZSwgY3VyQ29udHJpYnV0aW9uKTtcblxuICAgIGNvbnN0IGNvbnRyaWJ1dGlvbkhhc2ggPSBjb250cmlidXRpb25IYXNoZXIuZGlnZXN0KCk7XG5cbiAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhtaXNjLmZvcm1hdEhhc2goY29udHJpYnV0aW9uSGFzaCwgXCJDb250cmlidXRpb24gSGFzaDogXCIpKTtcblxuICAgIGF3YWl0IGZkVG8uY2xvc2UoKTtcbiAgICBhd2FpdCBmZEZyb20uY2xvc2UoKTtcblxuICAgIHJldHVybiBjb250cmlidXRpb25IYXNoO1xuXG4gICAgYXN5bmMgZnVuY3Rpb24gY29weShuQnl0ZXMpIHtcbiAgICAgICAgY29uc3QgQ0hVTktfU0laRSA9IGZkRnJvbS5wYWdlU2l6ZSoyO1xuICAgICAgICBmb3IgKGxldCBpPTA7IGk8bkJ5dGVzOyBpKz0gQ0hVTktfU0laRSkge1xuICAgICAgICAgICAgY29uc3QgbiA9IE1hdGgubWluKG5CeXRlcyAtaSwgQ0hVTktfU0laRSk7XG4gICAgICAgICAgICBjb25zdCBidWZmID0gYXdhaXQgZmRGcm9tLnJlYWQobik7XG4gICAgICAgICAgICBhd2FpdCBmZFRvLndyaXRlKGJ1ZmYpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgYXN5bmMgZnVuY3Rpb24gcmVhZEcxKCkge1xuICAgICAgICBjb25zdCBidWZmID0gYXdhaXQgZmRGcm9tLnJlYWQoY3VydmUuRzEuRi5uOCoyKTtcbiAgICAgICAgcmV0dXJuIGN1cnZlLkcxLmZyb21ScHJVbmNvbXByZXNzZWQoYnVmZiwgMCk7XG4gICAgfVxuXG4gICAgYXN5bmMgZnVuY3Rpb24gcmVhZEcyKCkge1xuICAgICAgICBjb25zdCBidWZmID0gYXdhaXQgZmRGcm9tLnJlYWQoY3VydmUuRzIuRi5uOCoyKTtcbiAgICAgICAgcmV0dXJuIGN1cnZlLkcyLmZyb21ScHJVbmNvbXByZXNzZWQoYnVmZiwgMCk7XG4gICAgfVxuXG4gICAgYXN5bmMgZnVuY3Rpb24gd3JpdGVHMShQKSB7XG4gICAgICAgIGNvbnN0IGJ1ZmYgPSBuZXcgVWludDhBcnJheShzRzEpO1xuICAgICAgICBjdXJ2ZS5HMS50b1JwclVuY29tcHJlc3NlZChidWZmLCAwLCBQKTtcbiAgICAgICAgYXdhaXQgZmRUby53cml0ZShidWZmKTtcbiAgICB9XG5cbiAgICBhc3luYyBmdW5jdGlvbiB3cml0ZUcyKFApIHtcbiAgICAgICAgY29uc3QgYnVmZiA9IG5ldyBVaW50OEFycmF5KHNHMik7XG4gICAgICAgIGN1cnZlLkcyLnRvUnByVW5jb21wcmVzc2VkKGJ1ZmYsIDAsIFApO1xuICAgICAgICBhd2FpdCBmZFRvLndyaXRlKGJ1ZmYpO1xuICAgIH1cblxuXG59XG4iLCIvKlxuICAgIENvcHlyaWdodCAyMDE4IDBLSU1TIGFzc29jaWF0aW9uLlxuXG4gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2Ygc25hcmtKUy5cblxuICAgIHNuYXJrSlMgaXMgYSBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0XG4gICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxuICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG5cbiAgICBzbmFya0pTIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUXG4gICAgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZXG4gICAgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljXG4gICAgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuXG4gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAgICBhbG9uZyB3aXRoIHNuYXJrSlMuIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXG4qL1xuXG5pbXBvcnQgKiBhcyBiaW5GaWxlVXRpbHMgZnJvbSBcIkBpZGVuMy9iaW5maWxldXRpbHNcIjtcbmltcG9ydCAqIGFzIHprZXlVdGlscyBmcm9tIFwiLi96a2V5X3V0aWxzLmpzXCI7XG5pbXBvcnQge2dldEN1cnZlRnJvbVEgYXMgZ2V0Q3VydmV9IGZyb20gXCIuL2N1cnZlcy5qc1wiO1xuaW1wb3J0IHt1dGlsc30gZnJvbSBcImZmamF2YXNjcmlwdFwiO1xuaW1wb3J0IHtGRkxPTktfUFJPVE9DT0xfSUR9IGZyb20gXCIuL3prZXlfY29uc3RhbnRzLmpzXCI7XG5cbmNvbnN0IHtzdHJpbmdpZnlCaWdJbnRzfSA9IHV0aWxzO1xuXG5leHBvcnQgZGVmYXVsdCBhc3luYyBmdW5jdGlvbiB6a2V5RXhwb3J0VmVyaWZpY2F0aW9uS2V5KHprZXlOYW1lLCBsb2dnZXIpIHtcbiAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhcIkVYUE9SVCBWRVJJRklDQVRJT04gS0VZIFNUQVJURURcIik7XG5cbiAgICBjb25zdCB7ZmQsIHNlY3Rpb25zfSA9IGF3YWl0IGJpbkZpbGVVdGlscy5yZWFkQmluRmlsZSh6a2V5TmFtZSwgXCJ6a2V5XCIsIDIpO1xuICAgIGNvbnN0IHprZXkgPSBhd2FpdCB6a2V5VXRpbHMucmVhZEhlYWRlcihmZCwgc2VjdGlvbnMpO1xuXG4gICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oXCI+IERldGVjdGVkIHByb3RvY29sOiBcIiArIHprZXkucHJvdG9jb2wpO1xuXG4gICAgbGV0IHJlcztcbiAgICBpZiAoemtleS5wcm90b2NvbCA9PT0gXCJncm90aDE2XCIpIHtcbiAgICAgICAgcmVzID0gYXdhaXQgZ3JvdGgxNlZrKHprZXksIGZkLCBzZWN0aW9ucyk7XG4gICAgfSBlbHNlIGlmICh6a2V5LnByb3RvY29sID09PSBcInBsb25rXCIpIHtcbiAgICAgICAgcmVzID0gYXdhaXQgcGxvbmtWayh6a2V5KTtcbiAgICB9IGVsc2UgaWYgKHprZXkucHJvdG9jb2xJZCAmJiB6a2V5LnByb3RvY29sSWQgPT09IEZGTE9OS19QUk9UT0NPTF9JRCkge1xuICAgICAgICByZXMgPSBhd2FpdCBleHBvcnRGRmxvbmtWayh6a2V5LCBsb2dnZXIpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcInprZXkgZmlsZSBwcm90b2NvbCB1bnJlY29nbml6ZWRcIik7XG4gICAgfVxuXG4gICAgYXdhaXQgZmQuY2xvc2UoKTtcblxuICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKFwiRVhQT1JUIFZFUklGSUNBVElPTiBLRVkgRklOSVNIRURcIik7XG5cbiAgICByZXR1cm4gcmVzO1xufVxuXG5cbmFzeW5jIGZ1bmN0aW9uIGdyb3RoMTZWayh6a2V5LCBmZCwgc2VjdGlvbnMpIHtcbiAgICBjb25zdCBjdXJ2ZSA9IGF3YWl0IGdldEN1cnZlKHprZXkucSk7XG4gICAgY29uc3Qgc0cxID0gY3VydmUuRzEuRi5uOCAqIDI7XG5cbiAgICBjb25zdCBhbHBoYUJldGEgPSBhd2FpdCBjdXJ2ZS5wYWlyaW5nKHprZXkudmtfYWxwaGFfMSwgemtleS52a19iZXRhXzIpO1xuXG4gICAgbGV0IHZLZXkgPSB7XG4gICAgICAgIHByb3RvY29sOiB6a2V5LnByb3RvY29sLFxuICAgICAgICBjdXJ2ZTogY3VydmUubmFtZSxcbiAgICAgICAgblB1YmxpYzogemtleS5uUHVibGljLFxuXG4gICAgICAgIHZrX2FscGhhXzE6IGN1cnZlLkcxLnRvT2JqZWN0KHprZXkudmtfYWxwaGFfMSksXG5cbiAgICAgICAgdmtfYmV0YV8yOiBjdXJ2ZS5HMi50b09iamVjdCh6a2V5LnZrX2JldGFfMiksXG4gICAgICAgIHZrX2dhbW1hXzI6IGN1cnZlLkcyLnRvT2JqZWN0KHprZXkudmtfZ2FtbWFfMiksXG4gICAgICAgIHZrX2RlbHRhXzI6IGN1cnZlLkcyLnRvT2JqZWN0KHprZXkudmtfZGVsdGFfMiksXG5cbiAgICAgICAgdmtfYWxwaGFiZXRhXzEyOiBjdXJ2ZS5HdC50b09iamVjdChhbHBoYUJldGEpXG4gICAgfTtcblxuICAgIC8vIFJlYWQgSUMgU2VjdGlvblxuICAgIC8vLy8vLy8vLy8vXG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLnN0YXJ0UmVhZFVuaXF1ZVNlY3Rpb24oZmQsIHNlY3Rpb25zLCAzKTtcbiAgICB2S2V5LklDID0gW107XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPD0gemtleS5uUHVibGljOyBpKyspIHtcbiAgICAgICAgY29uc3QgYnVmZiA9IGF3YWl0IGZkLnJlYWQoc0cxKTtcbiAgICAgICAgY29uc3QgUCA9IGN1cnZlLkcxLnRvT2JqZWN0KGJ1ZmYpO1xuICAgICAgICB2S2V5LklDLnB1c2goUCk7XG4gICAgfVxuICAgIGF3YWl0IGJpbkZpbGVVdGlscy5lbmRSZWFkU2VjdGlvbihmZCk7XG5cbiAgICB2S2V5ID0gc3RyaW5naWZ5QmlnSW50cyh2S2V5KTtcblxuICAgIHJldHVybiB2S2V5O1xufVxuXG5cbmFzeW5jIGZ1bmN0aW9uIHBsb25rVmsoemtleSkge1xuICAgIGNvbnN0IGN1cnZlID0gYXdhaXQgZ2V0Q3VydmUoemtleS5xKTtcblxuICAgIGxldCB2S2V5ID0ge1xuICAgICAgICBwcm90b2NvbDogemtleS5wcm90b2NvbCxcbiAgICAgICAgY3VydmU6IGN1cnZlLm5hbWUsXG4gICAgICAgIG5QdWJsaWM6IHprZXkublB1YmxpYyxcbiAgICAgICAgcG93ZXI6IHprZXkucG93ZXIsXG5cbiAgICAgICAgazE6IGN1cnZlLkZyLnRvT2JqZWN0KHprZXkuazEpLFxuICAgICAgICBrMjogY3VydmUuRnIudG9PYmplY3QoemtleS5rMiksXG5cbiAgICAgICAgUW06IGN1cnZlLkcxLnRvT2JqZWN0KHprZXkuUW0pLFxuICAgICAgICBRbDogY3VydmUuRzEudG9PYmplY3QoemtleS5RbCksXG4gICAgICAgIFFyOiBjdXJ2ZS5HMS50b09iamVjdCh6a2V5LlFyKSxcbiAgICAgICAgUW86IGN1cnZlLkcxLnRvT2JqZWN0KHprZXkuUW8pLFxuICAgICAgICBRYzogY3VydmUuRzEudG9PYmplY3QoemtleS5RYyksXG4gICAgICAgIFMxOiBjdXJ2ZS5HMS50b09iamVjdCh6a2V5LlMxKSxcbiAgICAgICAgUzI6IGN1cnZlLkcxLnRvT2JqZWN0KHprZXkuUzIpLFxuICAgICAgICBTMzogY3VydmUuRzEudG9PYmplY3QoemtleS5TMyksXG5cbiAgICAgICAgWF8yOiBjdXJ2ZS5HMi50b09iamVjdCh6a2V5LlhfMiksXG5cbiAgICAgICAgdzogY3VydmUuRnIudG9PYmplY3QoY3VydmUuRnIud1t6a2V5LnBvd2VyXSlcbiAgICB9O1xuXG4gICAgdktleSA9IHN0cmluZ2lmeUJpZ0ludHModktleSk7XG5cbiAgICByZXR1cm4gdktleTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gZXhwb3J0RkZsb25rVmsoemtleSwgbG9nZ2VyKSB7XG4gICAgY29uc3QgY3VydmUgPSBhd2FpdCBnZXRDdXJ2ZSh6a2V5LnEpO1xuXG4gICAgbGV0IHZLZXkgPSB7XG4gICAgICAgIHByb3RvY29sOiB6a2V5LnByb3RvY29sLFxuICAgICAgICBjdXJ2ZTogY3VydmUubmFtZSxcbiAgICAgICAgblB1YmxpYzogemtleS5uUHVibGljLFxuICAgICAgICBwb3dlcjogemtleS5wb3dlcixcblxuICAgICAgICBrMTogY3VydmUuRnIudG9PYmplY3QoemtleS5rMSksXG4gICAgICAgIGsyOiBjdXJ2ZS5Gci50b09iamVjdCh6a2V5LmsyKSxcblxuICAgICAgICB3OiBjdXJ2ZS5Gci50b09iamVjdChjdXJ2ZS5Gci53W3prZXkucG93ZXJdKSxcbiAgICAgICAgLy93VzogY3VydmUuRnIudG9PYmplY3QoY3VydmUuRnIud1t6a2V5LnBvd2VyICsgMV0pLFxuICAgICAgICB3MzogY3VydmUuRnIudG9PYmplY3QoemtleS53MyksXG4gICAgICAgIHc0OiBjdXJ2ZS5Gci50b09iamVjdCh6a2V5Lnc0KSxcbiAgICAgICAgdzg6IGN1cnZlLkZyLnRvT2JqZWN0KHprZXkudzgpLFxuICAgICAgICB3cjogY3VydmUuRnIudG9PYmplY3QoemtleS53ciksXG5cbiAgICAgICAgWF8yOiBjdXJ2ZS5HMi50b09iamVjdCh6a2V5LlhfMiksXG5cbiAgICAgICAgQzA6IGN1cnZlLkcxLnRvT2JqZWN0KHprZXkuQzApLFxuICAgIH07XG5cbiAgICByZXR1cm4gc3RyaW5naWZ5QmlnSW50cyh2S2V5KTtcbn1cbiIsIi8qXG4gICAgQ29weXJpZ2h0IDIwMjEgMEtJTVMgYXNzb2NpYXRpb24uXG5cbiAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBzbmFya0pTLlxuXG4gICAgc25hcmtKUyBpcyBhIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXRcbiAgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yXG4gICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cblxuICAgIHNuYXJrSlMgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVRcbiAgICBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFlcbiAgICBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWNcbiAgICBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG5cbiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICAgIGFsb25nIHdpdGggc25hcmtKUy4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cbiovXG5cbmltcG9ydCBlanMgZnJvbSBcImVqc1wiO1xuaW1wb3J0IHtnZXRDdXJ2ZUZyb21OYW1lfSBmcm9tIFwiLi9jdXJ2ZXMuanNcIjtcbmltcG9ydCB7dXRpbHN9IGZyb20gXCJmZmphdmFzY3JpcHRcIjtcblxuY29uc3Qge3Vuc3RyaW5naWZ5QmlnSW50cywgc3RyaW5naWZ5QmlnSW50c30gPSB1dGlscztcblxuZXhwb3J0IGRlZmF1bHQgYXN5bmMgZnVuY3Rpb24gZmZsb25rRXhwb3J0U29saWRpdHlWZXJpZmllcih2aywgdGVtcGxhdGVzLCBsb2dnZXIpIHtcbiAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhcIkZGTE9OSyBFWFBPUlQgU09MSURJVFkgVkVSSUZJRVIgU1RBUlRFRFwiKTtcblxuICAgIGNvbnN0IGN1cnZlID0gYXdhaXQgZ2V0Q3VydmVGcm9tTmFtZSh2ay5jdXJ2ZSk7XG5cbiAgICAvLyBQcmVjb21wdXRlIHczXzIsIHc0XzIgYW5kIHc0XzNcbiAgICBsZXQgdzMgPSBmcm9tVmtleSh2ay53Myk7XG4gICAgdmsudzNfMiA9IHRvVmtleShjdXJ2ZS5Gci5zcXVhcmUodzMpKTtcblxuICAgIGxldCB3NCA9IGZyb21Wa2V5KHZrLnc0KTtcbiAgICB2ay53NF8yID0gdG9Wa2V5KGN1cnZlLkZyLnNxdWFyZSh3NCkpO1xuICAgIHZrLnc0XzMgPSB0b1ZrZXkoY3VydmUuRnIubXVsKGN1cnZlLkZyLnNxdWFyZSh3NCksIHc0KSk7XG5cbiAgICBsZXQgdzggPSBmcm9tVmtleSh2ay53OCk7XG4gICAgbGV0IGFjYyA9IGN1cnZlLkZyLm9uZTtcblxuICAgIGZvciAobGV0IGkgPSAxOyBpIDwgODsgaSsrKSB7XG4gICAgICAgIGFjYyA9IGN1cnZlLkZyLm11bChhY2MsIHc4KTtcbiAgICAgICAgdmtbXCJ3OF9cIiArIGldID0gdG9Wa2V5KGFjYyk7XG4gICAgfVxuXG4gICAgbGV0IHRlbXBsYXRlID0gdGVtcGxhdGVzW3ZrLnByb3RvY29sXTtcblxuICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKFwiRkZMT05LIEVYUE9SVCBTT0xJRElUWSBWRVJJRklFUiBGSU5JU0hFRFwiKTtcblxuICAgIHJldHVybiBlanMucmVuZGVyKHRlbXBsYXRlLCB2ayk7XG5cbiAgICBmdW5jdGlvbiBmcm9tVmtleShzdHIpIHtcbiAgICAgICAgY29uc3QgdmFsID0gdW5zdHJpbmdpZnlCaWdJbnRzKHN0cik7XG4gICAgICAgIHJldHVybiBjdXJ2ZS5Gci5mcm9tT2JqZWN0KHZhbCk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gdG9Wa2V5KHZhbCkge1xuICAgICAgICBjb25zdCBzdHIgPSBjdXJ2ZS5Gci50b09iamVjdCh2YWwpO1xuICAgICAgICByZXR1cm4gc3RyaW5naWZ5QmlnSW50cyhzdHIpO1xuICAgIH1cbn1cblxuIiwiaW1wb3J0IGVqcyBmcm9tIFwiZWpzXCI7XG5cbmltcG9ydCBleHBvcnRWZXJpZmljYXRpb25LZXkgZnJvbSBcIi4vemtleV9leHBvcnRfdmVyaWZpY2F0aW9ua2V5LmpzXCI7XG5pbXBvcnQgZmZsb25rRXhwb3J0U29saWRpdHlWZXJpZmllckNtZCBmcm9tIFwiLi9mZmxvbmtfZXhwb3J0X3NvbGlkaXR5X3ZlcmlmaWVyLmpzXCI7XG4vLyBOb3QgcmVhZHkgeWV0XG4vLyBtb2R1bGUuZXhwb3J0cy5nZW5lcmF0ZVZlcmlmaWVyX2tpbWxlZW9oID0gZ2VuZXJhdGVWZXJpZmllcl9raW1sZWVvaDtcblxuZXhwb3J0IGRlZmF1bHQgYXN5bmMgZnVuY3Rpb24gZXhwb3J0U29saWRpdHlWZXJpZmllcih6S2V5TmFtZSwgdGVtcGxhdGVzLCBsb2dnZXIpIHtcblxuICAgIGNvbnN0IHZlcmlmaWNhdGlvbktleSA9IGF3YWl0IGV4cG9ydFZlcmlmaWNhdGlvbktleSh6S2V5TmFtZSwgbG9nZ2VyKTtcblxuICAgIGlmIChcImZmbG9ua1wiID09PSB2ZXJpZmljYXRpb25LZXkucHJvdG9jb2wpIHtcbiAgICAgICAgcmV0dXJuIGZmbG9ua0V4cG9ydFNvbGlkaXR5VmVyaWZpZXJDbWQodmVyaWZpY2F0aW9uS2V5LCB0ZW1wbGF0ZXMsIGxvZ2dlcik7XG4gICAgfVxuXG4gICAgbGV0IHRlbXBsYXRlID0gdGVtcGxhdGVzW3ZlcmlmaWNhdGlvbktleS5wcm90b2NvbF07XG5cbiAgICByZXR1cm4gZWpzLnJlbmRlcih0ZW1wbGF0ZSwgdmVyaWZpY2F0aW9uS2V5KTtcbn1cbiIsIi8qXG4gICAgQ29weXJpZ2h0IDIwMTggMEtJTVMgYXNzb2NpYXRpb24uXG5cbiAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBzbmFya0pTLlxuXG4gICAgc25hcmtKUyBpcyBhIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXRcbiAgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yXG4gICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cblxuICAgIHNuYXJrSlMgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVRcbiAgICBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFlcbiAgICBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWNcbiAgICBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG5cbiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICAgIGFsb25nIHdpdGggc25hcmtKUy4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cbiovXG5cblxuZXhwb3J0IHtkZWZhdWx0IGFzIG5ld1pLZXl9IGZyb20gXCIuL3prZXlfbmV3LmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgZXhwb3J0QmVsbG1hbn0gZnJvbSBcIi4vemtleV9leHBvcnRfYmVsbG1hbi5qc1wiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIGltcG9ydEJlbGxtYW59IGZyb20gXCIuL3prZXlfaW1wb3J0X2JlbGxtYW4uanNcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyB2ZXJpZnlGcm9tUjFjc30gZnJvbSBcIi4vemtleV92ZXJpZnlfZnJvbXIxY3MuanNcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyB2ZXJpZnlGcm9tSW5pdH0gZnJvbSBcIi4vemtleV92ZXJpZnlfZnJvbWluaXQuanNcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBjb250cmlidXRlfSBmcm9tIFwiLi96a2V5X2NvbnRyaWJ1dGUuanNcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBiZWFjb259IGZyb20gXCIuL3prZXlfYmVhY29uLmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgZXhwb3J0SnNvbn0gZnJvbSBcIi4vemtleV9leHBvcnRfanNvbi5qc1wiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIGJlbGxtYW5Db250cmlidXRlfSBmcm9tIFwiLi96a2V5X2JlbGxtYW5fY29udHJpYnV0ZS5qc1wiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIGV4cG9ydFZlcmlmaWNhdGlvbktleX0gZnJvbSBcIi4vemtleV9leHBvcnRfdmVyaWZpY2F0aW9ua2V5LmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgZXhwb3J0U29saWRpdHlWZXJpZmllcn0gZnJvbSBcIi4vemtleV9leHBvcnRfc29saWRpdHl2ZXJpZmllci5qc1wiO1xuIiwiLypcbiAgICBDb3B5cmlnaHQgMjAyMSAwa2ltcyBhc3NvY2lhdGlvbi5cblxuICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHNuYXJranMuXG5cbiAgICBzbmFya2pzIGlzIGEgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yXG4gICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZVxuICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKVxuICAgIGFueSBsYXRlciB2ZXJzaW9uLlxuXG4gICAgc25hcmtqcyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWVxuICAgIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvclxuICAgIG1vcmUgZGV0YWlscy5cblxuICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nIHdpdGhcbiAgICBzbmFya2pzLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuKi9cblxuLyogSW1wbGVtZW50YXRpb24gb2YgdGhpcyBwYXBlcjogaHR0cHM6Ly9lcHJpbnQuaWFjci5vcmcvMjAxOS85NTMucGRmICovXG5cbmltcG9ydCB7cmVhZFIxY3NGZH0gZnJvbSBcInIxY3NmaWxlXCI7XG5pbXBvcnQgKiBhcyB1dGlscyBmcm9tIFwiLi9wb3dlcnNvZnRhdV91dGlscy5qc1wiO1xuaW1wb3J0IHtcbiAgICByZWFkQmluRmlsZSxcbiAgICBjcmVhdGVCaW5GaWxlLFxuICAgIHJlYWRTZWN0aW9uLFxuICAgIHdyaXRlQmlnSW50LFxuICAgIHN0YXJ0V3JpdGVTZWN0aW9uLFxuICAgIGVuZFdyaXRlU2VjdGlvbixcbn0gZnJvbSBcIkBpZGVuMy9iaW5maWxldXRpbHNcIjtcbmltcG9ydCB7IGxvZzIgIH0gZnJvbSBcIi4vbWlzYy5qc1wiO1xuaW1wb3J0IHsgU2NhbGFyLCBCaWdCdWZmZXIgfSBmcm9tIFwiZmZqYXZhc2NyaXB0XCI7XG5pbXBvcnQgQmxha2UyYiBmcm9tIFwiYmxha2UyYi13YXNtXCI7XG5pbXBvcnQgQmlnQXJyYXkgZnJvbSBcIi4vYmlnYXJyYXkuanNcIjtcblxuXG5leHBvcnQgZGVmYXVsdCBhc3luYyBmdW5jdGlvbiBwbG9ua1NldHVwKHIxY3NOYW1lLCBwdGF1TmFtZSwgemtleU5hbWUsIGxvZ2dlcikge1xuXG4gICAgaWYgKGdsb2JhbFRoaXMuZ2MpIHtnbG9iYWxUaGlzLmdjKCk7fVxuXG4gICAgYXdhaXQgQmxha2UyYi5yZWFkeSgpO1xuXG4gICAgY29uc3Qge2ZkOiBmZFBUYXUsIHNlY3Rpb25zOiBzZWN0aW9uc1BUYXV9ID0gYXdhaXQgcmVhZEJpbkZpbGUocHRhdU5hbWUsIFwicHRhdVwiLCAxLCAxPDwyMiwgMTw8MjQpO1xuICAgIGNvbnN0IHtjdXJ2ZSwgcG93ZXJ9ID0gYXdhaXQgdXRpbHMucmVhZFBUYXVIZWFkZXIoZmRQVGF1LCBzZWN0aW9uc1BUYXUpO1xuICAgIGNvbnN0IHtmZDogZmRSMWNzLCBzZWN0aW9uczogc2VjdGlvbnNSMWNzfSA9IGF3YWl0IHJlYWRCaW5GaWxlKHIxY3NOYW1lLCBcInIxY3NcIiwgMSwgMTw8MjIsIDE8PDI0KTtcblxuICAgIGNvbnN0IHIxY3MgPSBhd2FpdCByZWFkUjFjc0ZkKGZkUjFjcywgc2VjdGlvbnNSMWNzLCB7bG9hZENvbnN0cmFpbnRzOiB0cnVlLCBsb2FkQ3VzdG9tR2F0ZXM6IHRydWV9KTtcblxuICAgIGNvbnN0IHNHMSA9IGN1cnZlLkcxLkYubjgqMjtcbiAgICBjb25zdCBHMSA9IGN1cnZlLkcxO1xuICAgIGNvbnN0IHNHMiA9IGN1cnZlLkcyLkYubjgqMjtcbiAgICBjb25zdCBGciA9IGN1cnZlLkZyO1xuICAgIGNvbnN0IG44ciA9IGN1cnZlLkZyLm44O1xuXG4gICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oXCJSZWFkaW5nIHIxY3NcIik7XG4gICAgbGV0IHNSMWNzID0gYXdhaXQgcmVhZFNlY3Rpb24oZmRSMWNzLCBzZWN0aW9uc1IxY3MsIDIpO1xuXG4gICAgY29uc3QgcGxvbmtDb25zdHJhaW50cyA9IG5ldyBCaWdBcnJheSgpO1xuICAgIGNvbnN0IHBsb25rQWRkaXRpb25zID0gbmV3IEJpZ0FycmF5KCk7XG4gICAgbGV0IHBsb25rTlZhcnMgPSByMWNzLm5WYXJzO1xuXG4gICAgY29uc3QgblB1YmxpYyA9IHIxY3Mubk91dHB1dHMgKyByMWNzLm5QdWJJbnB1dHM7XG5cbiAgICBhd2FpdCBwcm9jZXNzQ29uc3RyYWludHMoY3VydmUuRnIsIHIxY3MsIGxvZ2dlcik7XG5cbiAgICBpZiAoZ2xvYmFsVGhpcy5nYykge2dsb2JhbFRoaXMuZ2MoKTt9XG5cbiAgICBjb25zdCBmZFpLZXkgPSBhd2FpdCBjcmVhdGVCaW5GaWxlKHprZXlOYW1lLCBcInprZXlcIiwgMSwgMTQsIDE8PDIyLCAxPDwyNCk7XG5cblxuICAgIGlmIChyMWNzLnByaW1lICE9IGN1cnZlLnIpIHtcbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmVycm9yKFwicjFjcyBjdXJ2ZSBkb2VzIG5vdCBtYXRjaCBwb3dlcnMgb2YgdGF1IGNlcmVtb255IGN1cnZlXCIpO1xuICAgICAgICByZXR1cm4gLTE7XG4gICAgfVxuXG4gICAgbGV0IGNpclBvd2VyID0gbG9nMihwbG9ua0NvbnN0cmFpbnRzLmxlbmd0aCAtMSkgKzE7XG4gICAgaWYgKGNpclBvd2VyIDwgMykgY2lyUG93ZXIgPSAzOyAgIC8vIEFzIHRoZSB0IHBvbHlub21pYWwgaXMgbis1IHdlIG5lZWQgYXQgbGVhc3QgYSBwb3dlciBvZiA0XG4gICAgY29uc3QgZG9tYWluU2l6ZSA9IDIgKiogY2lyUG93ZXI7XG5cbiAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhcIlBsb25rIGNvbnN0cmFpbnRzOiBcIiArIHBsb25rQ29uc3RyYWludHMubGVuZ3RoKTtcbiAgICBpZiAoY2lyUG93ZXIgPiBwb3dlcikge1xuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZXJyb3IoYGNpcmN1aXQgdG9vIGJpZyBmb3IgdGhpcyBwb3dlciBvZiB0YXUgY2VyZW1vbnkuICR7cGxvbmtDb25zdHJhaW50cy5sZW5ndGh9ID4gMioqJHtwb3dlcn1gKTtcbiAgICAgICAgcmV0dXJuIC0xO1xuICAgIH1cblxuICAgIGlmICghc2VjdGlvbnNQVGF1WzEyXSkge1xuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZXJyb3IoXCJQb3dlcnMgb2YgdGF1IGlzIG5vdCBwcmVwYXJlZC5cIik7XG4gICAgICAgIHJldHVybiAtMTtcbiAgICB9XG5cblxuICAgIGNvbnN0IExQb2ludHMgPSBuZXcgQmlnQnVmZmVyKGRvbWFpblNpemUqc0cxKTtcbiAgICBjb25zdCBvID0gc2VjdGlvbnNQVGF1WzEyXVswXS5wICsgKCgyICoqIChjaXJQb3dlcikpIC0xKSpzRzE7XG4gICAgYXdhaXQgZmRQVGF1LnJlYWRUb0J1ZmZlcihMUG9pbnRzLCAwLCBkb21haW5TaXplKnNHMSwgbyk7XG5cbiAgICBjb25zdCBbazEsIGsyXSA9IGdldEsxSzIoKTtcblxuICAgIGNvbnN0IHZrID0ge307XG5cblxuICAgIGF3YWl0IHdyaXRlQWRkaXRpb25zKDMsIFwiQWRkaXRpb25zXCIpO1xuICAgIGlmIChnbG9iYWxUaGlzLmdjKSB7Z2xvYmFsVGhpcy5nYygpO31cbiAgICBhd2FpdCB3cml0ZVdpdG5lc3NNYXAoNCwgMCwgXCJBbWFwXCIpO1xuICAgIGlmIChnbG9iYWxUaGlzLmdjKSB7Z2xvYmFsVGhpcy5nYygpO31cbiAgICBhd2FpdCB3cml0ZVdpdG5lc3NNYXAoNSwgMSwgXCJCbWFwXCIpO1xuICAgIGlmIChnbG9iYWxUaGlzLmdjKSB7Z2xvYmFsVGhpcy5nYygpO31cbiAgICBhd2FpdCB3cml0ZVdpdG5lc3NNYXAoNiwgMiwgXCJDbWFwXCIpO1xuICAgIGlmIChnbG9iYWxUaGlzLmdjKSB7Z2xvYmFsVGhpcy5nYygpO31cbiAgICBhd2FpdCB3cml0ZVFNYXAoNywgMywgXCJRbVwiKTtcbiAgICBpZiAoZ2xvYmFsVGhpcy5nYykge2dsb2JhbFRoaXMuZ2MoKTt9XG4gICAgYXdhaXQgd3JpdGVRTWFwKDgsIDQsIFwiUWxcIik7XG4gICAgaWYgKGdsb2JhbFRoaXMuZ2MpIHtnbG9iYWxUaGlzLmdjKCk7fVxuICAgIGF3YWl0IHdyaXRlUU1hcCg5LCA1LCBcIlFyXCIpO1xuICAgIGlmIChnbG9iYWxUaGlzLmdjKSB7Z2xvYmFsVGhpcy5nYygpO31cbiAgICBhd2FpdCB3cml0ZVFNYXAoMTAsIDYsIFwiUW9cIik7XG4gICAgaWYgKGdsb2JhbFRoaXMuZ2MpIHtnbG9iYWxUaGlzLmdjKCk7fVxuICAgIGF3YWl0IHdyaXRlUU1hcCgxMSwgNywgXCJRY1wiKTtcbiAgICBpZiAoZ2xvYmFsVGhpcy5nYykge2dsb2JhbFRoaXMuZ2MoKTt9XG4gICAgYXdhaXQgd3JpdGVTaWdtYSgxMiwgXCJzaWdtYVwiKTtcbiAgICBpZiAoZ2xvYmFsVGhpcy5nYykge2dsb2JhbFRoaXMuZ2MoKTt9XG4gICAgYXdhaXQgd3JpdGVMcygxMywgXCJsYWdyYW5nZSBwb2x5bm9taWFsc1wiKTtcbiAgICBpZiAoZ2xvYmFsVGhpcy5nYykge2dsb2JhbFRoaXMuZ2MoKTt9XG5cbiAgICAvLyBXcml0ZSBQVGF1IHBvaW50c1xuICAgIC8vLy8vLy8vLy8vL1xuXG4gICAgYXdhaXQgc3RhcnRXcml0ZVNlY3Rpb24oZmRaS2V5LCAxNCk7XG4gICAgY29uc3QgYnVmZk91dCA9IG5ldyBCaWdCdWZmZXIoKGRvbWFpblNpemUrNikqc0cxKTtcbiAgICBhd2FpdCBmZFBUYXUucmVhZFRvQnVmZmVyKGJ1ZmZPdXQsIDAsIChkb21haW5TaXplKzYpKnNHMSwgc2VjdGlvbnNQVGF1WzJdWzBdLnApO1xuICAgIGF3YWl0IGZkWktleS53cml0ZShidWZmT3V0KTtcbiAgICBhd2FpdCBlbmRXcml0ZVNlY3Rpb24oZmRaS2V5KTtcbiAgICBpZiAoZ2xvYmFsVGhpcy5nYykge2dsb2JhbFRoaXMuZ2MoKTt9XG5cblxuICAgIGF3YWl0IHdyaXRlSGVhZGVycygpO1xuXG4gICAgYXdhaXQgZmRaS2V5LmNsb3NlKCk7XG4gICAgYXdhaXQgZmRSMWNzLmNsb3NlKCk7XG4gICAgYXdhaXQgZmRQVGF1LmNsb3NlKCk7XG5cbiAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhcIlNldHVwIEZpbmlzaGVkXCIpO1xuXG4gICAgcmV0dXJuIDtcblxuICAgIGFzeW5jIGZ1bmN0aW9uIHByb2Nlc3NDb25zdHJhaW50cyhGciwgcjFjcywgbG9nZ2VyKSB7XG5cbiAgICAgICAgZnVuY3Rpb24gbm9ybWFsaXplKGxpbmVhckNvbWIpIHtcbiAgICAgICAgICAgIGNvbnN0IHNzID0gT2JqZWN0LmtleXMobGluZWFyQ29tYik7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgaWYgKGxpbmVhckNvbWJbc3NbaV1dID09IDBuKSBkZWxldGUgbGluZWFyQ29tYltzc1tpXV07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBmdW5jdGlvbiBqb2luKGxpbmVhckNvbWIxLCBrLCBsaW5lYXJDb21iMikge1xuICAgICAgICAgICAgY29uc3QgcmVzID0ge307XG5cbiAgICAgICAgICAgIGZvciAobGV0IHMgaW4gbGluZWFyQ29tYjEpIHtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHJlc1tzXSA9PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc1tzXSA9IEZyLm11bChrLCBsaW5lYXJDb21iMVtzXSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzW3NdID0gRnIuYWRkKHJlc1tzXSwgRnIubXVsKGssIGxpbmVhckNvbWIxW3NdKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBmb3IgKGxldCBzIGluIGxpbmVhckNvbWIyKSB7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiByZXNbc10gPT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgICAgICAgICAgICAgICByZXNbc10gPSBsaW5lYXJDb21iMltzXTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXNbc10gPSBGci5hZGQocmVzW3NdLCBsaW5lYXJDb21iMltzXSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbm9ybWFsaXplKHJlcyk7XG4gICAgICAgICAgICByZXR1cm4gcmVzO1xuICAgICAgICB9XG5cbiAgICAgICAgZnVuY3Rpb24gcmVkdWNlQ29lZnMobGluZWFyQ29tYiwgbWF4Qykge1xuICAgICAgICAgICAgY29uc3QgcmVzID0ge1xuICAgICAgICAgICAgICAgIGs6IEZyLnplcm8sXG4gICAgICAgICAgICAgICAgczogW10sXG4gICAgICAgICAgICAgICAgY29lZnM6IFtdXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgY29uc3QgY3MgPSBbXTtcblxuICAgICAgICAgICAgZm9yIChsZXQgcyBpbiBsaW5lYXJDb21iKSB7XG4gICAgICAgICAgICAgICAgaWYgKHMgPT0gMCkge1xuICAgICAgICAgICAgICAgICAgICByZXMuayA9IEZyLmFkZChyZXMuaywgbGluZWFyQ29tYltzXSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChsaW5lYXJDb21iW3NdICE9IDBuKSB7XG4gICAgICAgICAgICAgICAgICAgIGNzLnB1c2goW051bWJlcihzKSwgbGluZWFyQ29tYltzXV0pXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgd2hpbGUgKGNzLmxlbmd0aCA+IG1heEMpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBjMSA9IGNzLnNoaWZ0KCk7XG4gICAgICAgICAgICAgICAgY29uc3QgYzIgPSBjcy5zaGlmdCgpO1xuXG4gICAgICAgICAgICAgICAgY29uc3Qgc2wgPSBjMVswXTtcbiAgICAgICAgICAgICAgICBjb25zdCBzciA9IGMyWzBdO1xuICAgICAgICAgICAgICAgIGNvbnN0IHNvID0gcGxvbmtOVmFycysrO1xuICAgICAgICAgICAgICAgIGNvbnN0IHFtID0gRnIuemVybztcbiAgICAgICAgICAgICAgICBjb25zdCBxbCA9IEZyLm5lZyhjMVsxXSk7XG4gICAgICAgICAgICAgICAgY29uc3QgcXIgPSBGci5uZWcoYzJbMV0pO1xuICAgICAgICAgICAgICAgIGNvbnN0IHFvID0gRnIub25lO1xuICAgICAgICAgICAgICAgIGNvbnN0IHFjID0gRnIuemVybztcblxuICAgICAgICAgICAgICAgIHBsb25rQ29uc3RyYWludHMucHVzaChbc2wsIHNyLCBzbywgcW0sIHFsLCBxciwgcW8sIHFjXSk7XG5cbiAgICAgICAgICAgICAgICBwbG9ua0FkZGl0aW9ucy5wdXNoKFtzbCwgc3IsIGMxWzFdLCBjMlsxXV0pO1xuXG4gICAgICAgICAgICAgICAgY3MucHVzaChbc28sIEZyLm9uZV0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIHJlcy5zW2ldID0gY3NbaV1bMF07XG4gICAgICAgICAgICAgICAgcmVzLmNvZWZzW2ldID0gY3NbaV1bMV07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB3aGlsZSAocmVzLmNvZWZzLmxlbmd0aCA8IG1heEMpIHtcbiAgICAgICAgICAgICAgICByZXMucy5wdXNoKDApO1xuICAgICAgICAgICAgICAgIHJlcy5jb2Vmcy5wdXNoKEZyLnplcm8pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHJlcztcbiAgICAgICAgfVxuXG4gICAgICAgIGZ1bmN0aW9uIGFkZENvbnN0cmFpbnRTdW0obGMpIHtcbiAgICAgICAgICAgIGNvbnN0IEMgPSByZWR1Y2VDb2VmcyhsYywgMyk7XG4gICAgICAgICAgICBjb25zdCBzbCA9IEMuc1swXTtcbiAgICAgICAgICAgIGNvbnN0IHNyID0gQy5zWzFdO1xuICAgICAgICAgICAgY29uc3Qgc28gPSBDLnNbMl07XG4gICAgICAgICAgICBjb25zdCBxbSA9IEZyLnplcm87XG4gICAgICAgICAgICBjb25zdCBxbCA9IEMuY29lZnNbMF07XG4gICAgICAgICAgICBjb25zdCBxciA9IEMuY29lZnNbMV07XG4gICAgICAgICAgICBjb25zdCBxbyA9IEMuY29lZnNbMl07XG4gICAgICAgICAgICBjb25zdCBxYyA9IEMuaztcbiAgICAgICAgICAgIHBsb25rQ29uc3RyYWludHMucHVzaChbc2wsIHNyLCBzbywgcW0sIHFsLCBxciwgcW8sIHFjXSk7XG4gICAgICAgIH1cblxuICAgICAgICBmdW5jdGlvbiBhZGRDb25zdHJhaW50TXVsKGxjQSwgbGNCLCBsY0MpIHtcbiAgICAgICAgICAgIGNvbnN0IEEgPSByZWR1Y2VDb2VmcyhsY0EsIDEpO1xuICAgICAgICAgICAgY29uc3QgQiA9IHJlZHVjZUNvZWZzKGxjQiwgMSk7XG4gICAgICAgICAgICBjb25zdCBDID0gcmVkdWNlQ29lZnMobGNDLCAxKTtcblxuXG4gICAgICAgICAgICBjb25zdCBzbCA9IEEuc1swXTtcbiAgICAgICAgICAgIGNvbnN0IHNyID0gQi5zWzBdO1xuICAgICAgICAgICAgY29uc3Qgc28gPSBDLnNbMF07XG4gICAgICAgICAgICBjb25zdCBxbSA9IEZyLm11bChBLmNvZWZzWzBdLCBCLmNvZWZzWzBdKTtcbiAgICAgICAgICAgIGNvbnN0IHFsID0gRnIubXVsKEEuY29lZnNbMF0sIEIuayk7XG4gICAgICAgICAgICBjb25zdCBxciA9IEZyLm11bChBLmssIEIuY29lZnNbMF0pO1xuICAgICAgICAgICAgY29uc3QgcW8gPSBGci5uZWcoQy5jb2Vmc1swXSk7XG4gICAgICAgICAgICBjb25zdCBxYyA9IEZyLnN1YihGci5tdWwoQS5rLCBCLmspLCBDLmspO1xuICAgICAgICAgICAgcGxvbmtDb25zdHJhaW50cy5wdXNoKFtzbCwgc3IsIHNvLCBxbSwgcWwsIHFyLCBxbywgcWNdKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZ1bmN0aW9uIGdldExpbmVhckNvbWJpbmF0aW9uVHlwZShsYykge1xuICAgICAgICAgICAgbGV0IGsgPSBGci56ZXJvO1xuICAgICAgICAgICAgbGV0IG4gPSAwO1xuICAgICAgICAgICAgY29uc3Qgc3MgPSBPYmplY3Qua2V5cyhsYyk7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgaWYgKGxjW3NzW2ldXSA9PSAwbikge1xuICAgICAgICAgICAgICAgICAgICBkZWxldGUgbGNbc3NbaV1dO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoc3NbaV0gPT0gMCkge1xuICAgICAgICAgICAgICAgICAgICBrID0gRnIuYWRkKGssIGxjW3NzW2ldXSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgbisrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChuID4gMCkgcmV0dXJuIG4udG9TdHJpbmcoKTtcbiAgICAgICAgICAgIGlmIChrICE9IEZyLnplcm8pIHJldHVybiBcImtcIjtcbiAgICAgICAgICAgIHJldHVybiBcIjBcIjtcbiAgICAgICAgfVxuXG4gICAgICAgIGZ1bmN0aW9uIHByb2Nlc3MobGNBLCBsY0IsIGxjQykge1xuICAgICAgICAgICAgY29uc3QgbGN0QSA9IGdldExpbmVhckNvbWJpbmF0aW9uVHlwZShsY0EpO1xuICAgICAgICAgICAgY29uc3QgbGN0QiA9IGdldExpbmVhckNvbWJpbmF0aW9uVHlwZShsY0IpO1xuICAgICAgICAgICAgaWYgKChsY3RBID09PSBcIjBcIikgfHwgKGxjdEIgPT09IFwiMFwiKSkge1xuICAgICAgICAgICAgICAgIG5vcm1hbGl6ZShsY0MpO1xuICAgICAgICAgICAgICAgIGFkZENvbnN0cmFpbnRTdW0obGNDKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobGN0QSA9PT0gXCJrXCIpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBsY0NDID0gam9pbihsY0IsIGxjQVswXSwgbGNDKTtcbiAgICAgICAgICAgICAgICBhZGRDb25zdHJhaW50U3VtKGxjQ0MpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChsY3RCID09PSBcImtcIikge1xuICAgICAgICAgICAgICAgIGNvbnN0IGxjQ0MgPSBqb2luKGxjQSwgbGNCWzBdLCBsY0MpO1xuICAgICAgICAgICAgICAgIGFkZENvbnN0cmFpbnRTdW0obGNDQyk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGFkZENvbnN0cmFpbnRNdWwobGNBLCBsY0IsIGxjQyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBmb3IgKGxldCBzID0gMTsgcyA8PSBuUHVibGljOyBzKyspIHtcbiAgICAgICAgICAgIGNvbnN0IHNsID0gcztcbiAgICAgICAgICAgIGNvbnN0IHNyID0gMDtcbiAgICAgICAgICAgIGNvbnN0IHNvID0gMDtcbiAgICAgICAgICAgIGNvbnN0IHFtID0gRnIuemVybztcbiAgICAgICAgICAgIGNvbnN0IHFsID0gRnIub25lO1xuICAgICAgICAgICAgY29uc3QgcXIgPSBGci56ZXJvO1xuICAgICAgICAgICAgY29uc3QgcW8gPSBGci56ZXJvO1xuICAgICAgICAgICAgY29uc3QgcWMgPSBGci56ZXJvO1xuXG4gICAgICAgICAgICBwbG9ua0NvbnN0cmFpbnRzLnB1c2goW3NsLCBzciwgc28sIHFtLCBxbCwgcXIsIHFvLCBxY10pO1xuICAgICAgICB9XG5cbiAgICAgICAgZm9yIChsZXQgYyA9IDA7IGMgPCByMWNzLmNvbnN0cmFpbnRzLmxlbmd0aDsgYysrKSB7XG4gICAgICAgICAgICBpZiAoKGxvZ2dlcikgJiYgKGMgJSAxMDAwMCA9PT0gMCkpIGxvZ2dlci5kZWJ1ZyhgcHJvY2Vzc2luZyBjb25zdHJhaW50czogJHtjfS8ke3IxY3MubkNvbnN0cmFpbnRzfWApO1xuICAgICAgICAgICAgcHJvY2VzcyguLi5yMWNzLmNvbnN0cmFpbnRzW2NdKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGFzeW5jIGZ1bmN0aW9uIHdyaXRlV2l0bmVzc01hcChzZWN0aW9uTnVtLCBwb3NDb25zdHJhaW50LCBuYW1lKSB7XG4gICAgICAgIGF3YWl0IHN0YXJ0V3JpdGVTZWN0aW9uKGZkWktleSwgc2VjdGlvbk51bSk7XG4gICAgICAgIGZvciAobGV0IGk9MDsgaTxwbG9ua0NvbnN0cmFpbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBhd2FpdCBmZFpLZXkud3JpdGVVTEUzMihwbG9ua0NvbnN0cmFpbnRzW2ldW3Bvc0NvbnN0cmFpbnRdKTtcbiAgICAgICAgICAgIGlmICgobG9nZ2VyKSYmKGklMTAwMDAwMCA9PSAwKSkgbG9nZ2VyLmRlYnVnKGB3cml0aW5nICR7bmFtZX06ICR7aX0vJHtwbG9ua0NvbnN0cmFpbnRzLmxlbmd0aH1gKTtcbiAgICAgICAgfVxuICAgICAgICBhd2FpdCBlbmRXcml0ZVNlY3Rpb24oZmRaS2V5KTtcbiAgICB9XG5cbiAgICBhc3luYyBmdW5jdGlvbiB3cml0ZVFNYXAoc2VjdGlvbk51bSwgcG9zQ29uc3RyYWludCwgbmFtZSkge1xuICAgICAgICBsZXQgUSA9IG5ldyBCaWdCdWZmZXIoZG9tYWluU2l6ZSpuOHIpO1xuICAgICAgICBmb3IgKGxldCBpPTA7IGk8cGxvbmtDb25zdHJhaW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgUS5zZXQocGxvbmtDb25zdHJhaW50c1tpXVtwb3NDb25zdHJhaW50XSwgaSpuOHIpO1xuICAgICAgICAgICAgaWYgKChsb2dnZXIpJiYoaSUxMDAwMDAwID09IDApKSBsb2dnZXIuZGVidWcoYHdyaXRpbmcgJHtuYW1lfTogJHtpfS8ke3Bsb25rQ29uc3RyYWludHMubGVuZ3RofWApO1xuICAgICAgICB9XG4gICAgICAgIGF3YWl0IHN0YXJ0V3JpdGVTZWN0aW9uKGZkWktleSwgc2VjdGlvbk51bSk7XG4gICAgICAgIGF3YWl0IHdyaXRlUDQoUSk7XG4gICAgICAgIGF3YWl0IGVuZFdyaXRlU2VjdGlvbihmZFpLZXkpO1xuICAgICAgICBRID0gYXdhaXQgRnIuYmF0Y2hGcm9tTW9udGdvbWVyeShRKTtcbiAgICAgICAgdmtbbmFtZV09IGF3YWl0IGN1cnZlLkcxLm11bHRpRXhwQWZmaW5lKExQb2ludHMsIFEsIGxvZ2dlciwgXCJtdWx0aWV4cCBcIituYW1lKTtcbiAgICB9XG5cbiAgICBhc3luYyBmdW5jdGlvbiB3cml0ZVA0KGJ1ZmYpIHtcbiAgICAgICAgY29uc3QgcSA9IGF3YWl0IEZyLmlmZnQoYnVmZik7XG4gICAgICAgIGNvbnN0IHE0ID0gbmV3IEJpZ0J1ZmZlcihkb21haW5TaXplKm44cio0KTtcbiAgICAgICAgcTQuc2V0KHEsIDApO1xuICAgICAgICBjb25zdCBRNCA9IGF3YWl0IEZyLmZmdChxNCk7XG4gICAgICAgIGF3YWl0IGZkWktleS53cml0ZShxKTtcbiAgICAgICAgYXdhaXQgZmRaS2V5LndyaXRlKFE0KTtcbiAgICB9XG5cbiAgICBhc3luYyBmdW5jdGlvbiB3cml0ZUFkZGl0aW9ucyhzZWN0aW9uTnVtLCBuYW1lKSB7XG4gICAgICAgIGF3YWl0IHN0YXJ0V3JpdGVTZWN0aW9uKGZkWktleSwgc2VjdGlvbk51bSk7XG4gICAgICAgIGNvbnN0IGJ1ZmZPdXQgPSBuZXcgVWludDhBcnJheSgoMio0KzIqbjhyKSk7XG4gICAgICAgIGNvbnN0IGJ1ZmZPdXRWID0gbmV3IERhdGFWaWV3KGJ1ZmZPdXQuYnVmZmVyKTtcbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPHBsb25rQWRkaXRpb25zLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCBhZGRpdGlvbj1wbG9ua0FkZGl0aW9uc1tpXTtcbiAgICAgICAgICAgIGxldCBvPTA7XG4gICAgICAgICAgICBidWZmT3V0Vi5zZXRVaW50MzIobywgYWRkaXRpb25bMF0sIHRydWUpOyBvKz00O1xuICAgICAgICAgICAgYnVmZk91dFYuc2V0VWludDMyKG8sIGFkZGl0aW9uWzFdLCB0cnVlKTsgbys9NDtcbiAgICAgICAgICAgIC8vIFRoZSB2YWx1ZSBpcyBzdG9yZWQgaW4gTW9udGdvbWVyeS4gc3RvcmVkID0gdipSXG4gICAgICAgICAgICAvLyBzbyB3aGVuIG1vbnRnb21lcnkgbXVsdGlwbGllZCBieSB0aGUgd2l0bmVzcywgaXQncyByZXN1bHQgPSB2KlIqdy9SID0gdip3XG4gICAgICAgICAgICBidWZmT3V0LnNldChhZGRpdGlvblsyXSwgbyk7IG8rPSBuOHI7XG4gICAgICAgICAgICBidWZmT3V0LnNldChhZGRpdGlvblszXSwgbyk7IG8rPSBuOHI7XG4gICAgICAgICAgICBhd2FpdCBmZFpLZXkud3JpdGUoYnVmZk91dCk7XG4gICAgICAgICAgICBpZiAoKGxvZ2dlcikmJihpJTEwMDAwMDAgPT0gMCkpIGxvZ2dlci5kZWJ1Zyhgd3JpdGluZyAke25hbWV9OiAke2l9LyR7cGxvbmtBZGRpdGlvbnMubGVuZ3RofWApO1xuICAgICAgICB9XG4gICAgICAgIGF3YWl0IGVuZFdyaXRlU2VjdGlvbihmZFpLZXkpO1xuICAgIH1cblxuICAgIGFzeW5jIGZ1bmN0aW9uIHdyaXRlU2lnbWEoc2VjdGlvbk51bSwgbmFtZSkge1xuICAgICAgICBjb25zdCBzaWdtYSA9IG5ldyBCaWdCdWZmZXIobjhyKmRvbWFpblNpemUqMyk7XG4gICAgICAgIGNvbnN0IGxhc3RBcGFyZW5jZSA9ICBuZXcgQmlnQXJyYXkocGxvbmtOVmFycyk7XG4gICAgICAgIGNvbnN0IGZpcnN0UG9zID0gbmV3IEJpZ0FycmF5KHBsb25rTlZhcnMpO1xuICAgICAgICBsZXQgdyA9IEZyLm9uZTtcbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPGRvbWFpblNpemU7aSsrKSB7XG4gICAgICAgICAgICBpZiAoaTxwbG9ua0NvbnN0cmFpbnRzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIGJ1aWxkU2lnbWEocGxvbmtDb25zdHJhaW50c1tpXVswXSwgaSk7XG4gICAgICAgICAgICAgICAgYnVpbGRTaWdtYShwbG9ua0NvbnN0cmFpbnRzW2ldWzFdLCBkb21haW5TaXplICsgaSk7XG4gICAgICAgICAgICAgICAgYnVpbGRTaWdtYShwbG9ua0NvbnN0cmFpbnRzW2ldWzJdLCBkb21haW5TaXplKjIgKyBpKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgYnVpbGRTaWdtYSgwLCBpKTtcbiAgICAgICAgICAgICAgICBidWlsZFNpZ21hKDAsIGRvbWFpblNpemUgKyBpKTtcbiAgICAgICAgICAgICAgICBidWlsZFNpZ21hKDAsIGRvbWFpblNpemUqMiArIGkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdyA9IEZyLm11bCh3LCBGci53W2NpclBvd2VyXSk7XG4gICAgICAgICAgICBpZiAoKGxvZ2dlcikmJihpJTEwMDAwMDAgPT0gMCkpIGxvZ2dlci5kZWJ1Zyhgd3JpdGluZyAke25hbWV9IHBoYXNlMTogJHtpfS8ke3Bsb25rQ29uc3RyYWludHMubGVuZ3RofWApO1xuICAgICAgICB9XG4gICAgICAgIGZvciAobGV0IHM9MDsgczxwbG9ua05WYXJzOyBzKyspIHtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgZmlyc3RQb3Nbc10gIT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgICAgICAgICAgICBzaWdtYS5zZXQobGFzdEFwYXJlbmNlW3NdLCBmaXJzdFBvc1tzXSpuOHIpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAvLyB0aHJvdyBuZXcgRXJyb3IoXCJWYXJpYWJsZSBub3QgdXNlZFwiKTtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIlZhcmlhYmxlIG5vdCB1c2VkXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKChsb2dnZXIpJiYocyUxMDAwMDAwID09IDApKSBsb2dnZXIuZGVidWcoYHdyaXRpbmcgJHtuYW1lfSBwaGFzZTI6ICR7c30vJHtwbG9ua05WYXJzfWApO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGdsb2JhbFRoaXMuZ2MpIHtnbG9iYWxUaGlzLmdjKCk7fVxuICAgICAgICBhd2FpdCBzdGFydFdyaXRlU2VjdGlvbihmZFpLZXksIHNlY3Rpb25OdW0pO1xuICAgICAgICBsZXQgUzEgPSBzaWdtYS5zbGljZSgwLCBkb21haW5TaXplKm44cik7XG4gICAgICAgIGF3YWl0IHdyaXRlUDQoUzEpO1xuICAgICAgICBpZiAoZ2xvYmFsVGhpcy5nYykge2dsb2JhbFRoaXMuZ2MoKTt9XG4gICAgICAgIGxldCBTMiA9IHNpZ21hLnNsaWNlKGRvbWFpblNpemUqbjhyLCBkb21haW5TaXplKm44cioyKTtcbiAgICAgICAgYXdhaXQgd3JpdGVQNChTMik7XG4gICAgICAgIGlmIChnbG9iYWxUaGlzLmdjKSB7Z2xvYmFsVGhpcy5nYygpO31cbiAgICAgICAgbGV0IFMzID0gc2lnbWEuc2xpY2UoZG9tYWluU2l6ZSpuOHIqMiwgZG9tYWluU2l6ZSpuOHIqMyk7XG4gICAgICAgIGF3YWl0IHdyaXRlUDQoUzMpO1xuICAgICAgICBpZiAoZ2xvYmFsVGhpcy5nYykge2dsb2JhbFRoaXMuZ2MoKTt9XG4gICAgICAgIGF3YWl0IGVuZFdyaXRlU2VjdGlvbihmZFpLZXkpO1xuXG4gICAgICAgIFMxID0gYXdhaXQgRnIuYmF0Y2hGcm9tTW9udGdvbWVyeShTMSk7XG4gICAgICAgIFMyID0gYXdhaXQgRnIuYmF0Y2hGcm9tTW9udGdvbWVyeShTMik7XG4gICAgICAgIFMzID0gYXdhaXQgRnIuYmF0Y2hGcm9tTW9udGdvbWVyeShTMyk7XG5cbiAgICAgICAgdmsuUzE9IGF3YWl0IGN1cnZlLkcxLm11bHRpRXhwQWZmaW5lKExQb2ludHMsIFMxLCBsb2dnZXIsIFwibXVsdGlleHAgUzFcIik7XG4gICAgICAgIGlmIChnbG9iYWxUaGlzLmdjKSB7Z2xvYmFsVGhpcy5nYygpO31cbiAgICAgICAgdmsuUzI9IGF3YWl0IGN1cnZlLkcxLm11bHRpRXhwQWZmaW5lKExQb2ludHMsIFMyLCBsb2dnZXIsIFwibXVsdGlleHAgUzJcIik7XG4gICAgICAgIGlmIChnbG9iYWxUaGlzLmdjKSB7Z2xvYmFsVGhpcy5nYygpO31cbiAgICAgICAgdmsuUzM9IGF3YWl0IGN1cnZlLkcxLm11bHRpRXhwQWZmaW5lKExQb2ludHMsIFMzLCBsb2dnZXIsIFwibXVsdGlleHAgUzNcIik7XG4gICAgICAgIGlmIChnbG9iYWxUaGlzLmdjKSB7Z2xvYmFsVGhpcy5nYygpO31cblxuICAgICAgICBmdW5jdGlvbiBidWlsZFNpZ21hKHMsIHApIHtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgbGFzdEFwYXJlbmNlW3NdID09PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgICAgICAgICAgICAgZmlyc3RQb3Nbc10gPSBwO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBzaWdtYS5zZXQobGFzdEFwYXJlbmNlW3NdLCBwKm44cik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBsZXQgdjtcbiAgICAgICAgICAgIGlmIChwPGRvbWFpblNpemUpIHtcbiAgICAgICAgICAgICAgICB2ID0gdztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAocDwyKmRvbWFpblNpemUpIHtcbiAgICAgICAgICAgICAgICB2ID0gRnIubXVsKHcsIGsxKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdiA9IEZyLm11bCh3LCBrMik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBsYXN0QXBhcmVuY2Vbc109djtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGFzeW5jIGZ1bmN0aW9uIHdyaXRlTHMoc2VjdGlvbk51bSwgbmFtZSkge1xuICAgICAgICBhd2FpdCBzdGFydFdyaXRlU2VjdGlvbihmZFpLZXksIHNlY3Rpb25OdW0pO1xuICAgICAgICBjb25zdCBsPU1hdGgubWF4KG5QdWJsaWMsIDEpO1xuICAgICAgICBmb3IgKGxldCBpPTA7IGk8bDsgaSsrKSB7XG4gICAgICAgICAgICBsZXQgYnVmZiA9IG5ldyBCaWdCdWZmZXIoZG9tYWluU2l6ZSpuOHIpO1xuICAgICAgICAgICAgYnVmZi5zZXQoRnIub25lLCBpKm44cik7XG4gICAgICAgICAgICBhd2FpdCB3cml0ZVA0KGJ1ZmYpO1xuICAgICAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmRlYnVnKGB3cml0aW5nICR7bmFtZX0gJHtpfS8ke2x9YCk7XG4gICAgICAgIH1cbiAgICAgICAgYXdhaXQgZW5kV3JpdGVTZWN0aW9uKGZkWktleSk7XG4gICAgfVxuXG4gICAgYXN5bmMgZnVuY3Rpb24gd3JpdGVIZWFkZXJzKCkge1xuXG4gICAgICAgIC8vIFdyaXRlIHRoZSBoZWFkZXJcbiAgICAgICAgLy8vLy8vLy8vLy9cbiAgICAgICAgYXdhaXQgc3RhcnRXcml0ZVNlY3Rpb24oZmRaS2V5LCAxKTtcbiAgICAgICAgYXdhaXQgZmRaS2V5LndyaXRlVUxFMzIoMik7IC8vIFBsb25rXG4gICAgICAgIGF3YWl0IGVuZFdyaXRlU2VjdGlvbihmZFpLZXkpO1xuXG4gICAgICAgIC8vIFdyaXRlIHRoZSBQbG9uayBoZWFkZXIgc2VjdGlvblxuICAgICAgICAvLy8vLy8vLy8vL1xuXG4gICAgICAgIGF3YWl0IHN0YXJ0V3JpdGVTZWN0aW9uKGZkWktleSwgMik7XG4gICAgICAgIGNvbnN0IHByaW1lUSA9IGN1cnZlLnE7XG4gICAgICAgIGNvbnN0IG44cSA9IChNYXRoLmZsb29yKCAoU2NhbGFyLmJpdExlbmd0aChwcmltZVEpIC0gMSkgLyA2NCkgKzEpKjg7XG5cbiAgICAgICAgY29uc3QgcHJpbWVSID0gY3VydmUucjtcbiAgICAgICAgY29uc3QgbjhyID0gKE1hdGguZmxvb3IoIChTY2FsYXIuYml0TGVuZ3RoKHByaW1lUikgLSAxKSAvIDY0KSArMSkqODtcblxuICAgICAgICBhd2FpdCBmZFpLZXkud3JpdGVVTEUzMihuOHEpO1xuICAgICAgICBhd2FpdCB3cml0ZUJpZ0ludChmZFpLZXksIHByaW1lUSwgbjhxKTtcbiAgICAgICAgYXdhaXQgZmRaS2V5LndyaXRlVUxFMzIobjhyKTtcbiAgICAgICAgYXdhaXQgd3JpdGVCaWdJbnQoZmRaS2V5LCBwcmltZVIsIG44cik7XG4gICAgICAgIGF3YWl0IGZkWktleS53cml0ZVVMRTMyKHBsb25rTlZhcnMpOyAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUb3RhbCBudW1iZXIgb2YgYmFyc1xuICAgICAgICBhd2FpdCBmZFpLZXkud3JpdGVVTEUzMihuUHVibGljKTsgICAgICAgICAgICAgICAgICAgICAgIC8vIFRvdGFsIG51bWJlciBvZiBwdWJsaWMgdmFycyAobm90IGluY2x1ZGluZyBPTkUpXG4gICAgICAgIGF3YWl0IGZkWktleS53cml0ZVVMRTMyKGRvbWFpblNpemUpOyAgICAgICAgICAgICAgICAgIC8vIGRvbWFpblNpemVcbiAgICAgICAgYXdhaXQgZmRaS2V5LndyaXRlVUxFMzIocGxvbmtBZGRpdGlvbnMubGVuZ3RoKTsgICAgICAgICAgICAgICAgICAvLyBkb21haW5TaXplXG4gICAgICAgIGF3YWl0IGZkWktleS53cml0ZVVMRTMyKHBsb25rQ29uc3RyYWludHMubGVuZ3RoKTsgXG5cbiAgICAgICAgYXdhaXQgZmRaS2V5LndyaXRlKGsxKTtcbiAgICAgICAgYXdhaXQgZmRaS2V5LndyaXRlKGsyKTtcblxuICAgICAgICBhd2FpdCBmZFpLZXkud3JpdGUoRzEudG9BZmZpbmUodmsuUW0pKTtcbiAgICAgICAgYXdhaXQgZmRaS2V5LndyaXRlKEcxLnRvQWZmaW5lKHZrLlFsKSk7XG4gICAgICAgIGF3YWl0IGZkWktleS53cml0ZShHMS50b0FmZmluZSh2ay5RcikpO1xuICAgICAgICBhd2FpdCBmZFpLZXkud3JpdGUoRzEudG9BZmZpbmUodmsuUW8pKTtcbiAgICAgICAgYXdhaXQgZmRaS2V5LndyaXRlKEcxLnRvQWZmaW5lKHZrLlFjKSk7XG5cbiAgICAgICAgYXdhaXQgZmRaS2V5LndyaXRlKEcxLnRvQWZmaW5lKHZrLlMxKSk7XG4gICAgICAgIGF3YWl0IGZkWktleS53cml0ZShHMS50b0FmZmluZSh2ay5TMikpO1xuICAgICAgICBhd2FpdCBmZFpLZXkud3JpdGUoRzEudG9BZmZpbmUodmsuUzMpKTtcblxuICAgICAgICBsZXQgYlhfMjtcbiAgICAgICAgYlhfMiA9IGF3YWl0IGZkUFRhdS5yZWFkKHNHMiwgc2VjdGlvbnNQVGF1WzNdWzBdLnAgKyBzRzIpO1xuICAgICAgICBhd2FpdCBmZFpLZXkud3JpdGUoYlhfMik7XG5cbiAgICAgICAgYXdhaXQgZW5kV3JpdGVTZWN0aW9uKGZkWktleSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ2V0SzFLMigpIHtcbiAgICAgICAgbGV0IGsxID0gRnIudHdvO1xuICAgICAgICB3aGlsZSAoaXNJbmNsdWRlZChrMSwgW10sIGNpclBvd2VyKSkgRnIuYWRkKGsxLCBGci5vbmUpO1xuICAgICAgICBsZXQgazIgPSBGci5hZGQoazEsIEZyLm9uZSk7XG4gICAgICAgIHdoaWxlIChpc0luY2x1ZGVkKGsyLCBbazFdLCBjaXJQb3dlcikpIEZyLmFkZChrMiwgRnIub25lKTtcbiAgICAgICAgcmV0dXJuIFtrMSwgazJdO1xuXG5cbiAgICAgICAgZnVuY3Rpb24gaXNJbmNsdWRlZChrLCBrQXJyLCBwb3cpIHtcbiAgICAgICAgICAgIGNvbnN0IGRvbWFpblNpemU9IDIqKnBvdztcbiAgICAgICAgICAgIGxldCB3ID0gRnIub25lO1xuICAgICAgICAgICAgZm9yIChsZXQgaT0wOyBpPGRvbWFpblNpemU7IGkrKykge1xuICAgICAgICAgICAgICAgIGlmIChGci5lcShrLCB3KSkgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaj0wOyBqPGtBcnIubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKEZyLmVxKGssIEZyLm11bChrQXJyW2pdLCB3KSkpIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB3ID0gRnIubXVsKHcsIEZyLndbcG93XSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG59XG5cblxuIiwiLypcbiAgICBDb3B5cmlnaHQgMjAyMiBpZGVuMyBhc3NvY2lhdGlvbi5cblxuICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHNuYXJranMuXG5cbiAgICBzbmFya2pzIGlzIGEgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yXG4gICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZVxuICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKVxuICAgIGFueSBsYXRlciB2ZXJzaW9uLlxuXG4gICAgc25hcmtqcyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWVxuICAgIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvclxuICAgIG1vcmUgZGV0YWlscy5cblxuICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nIHdpdGhcbiAgICBzbmFya2pzLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuKi9cblxuZXhwb3J0IGNsYXNzIFByb29mIHtcbiAgICBjb25zdHJ1Y3RvcihjdXJ2ZSwgbG9nZ2VyKSB7XG4gICAgICAgIHRoaXMuY3VydmUgPSBjdXJ2ZTtcbiAgICAgICAgdGhpcy5sb2dnZXIgPSBsb2dnZXI7XG5cbiAgICAgICAgdGhpcy5yZXNldFByb29mKCk7XG4gICAgfVxuXG4gICAgcmVzZXRQcm9vZigpIHtcbiAgICAgICAgdGhpcy5wb2x5bm9taWFscyA9IHt9O1xuICAgICAgICB0aGlzLmV2YWx1YXRpb25zID0ge307XG4gICAgfVxuXG4gICAgYWRkUG9seW5vbWlhbChrZXksIHBvbHlub21pYWwpIHtcbiAgICAgICAgaWYgKGtleSBpbiB0aGlzLnBvbHlub21pYWxzKSB7XG4gICAgICAgICAgICB0aGlzLmxvZ2dlci53YXJuKGBwcm9vZjogcG9seW5vbWlhbC4ke2tleX0gYWxyZWFkeSBleGlzdCBpbiBwcm9vZmApO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMucG9seW5vbWlhbHNba2V5XSA9IHBvbHlub21pYWw7XG4gICAgfVxuXG4gICAgZ2V0UG9seW5vbWlhbChrZXkpIHtcbiAgICAgICAgaWYgKCEoa2V5IGluIHRoaXMucG9seW5vbWlhbHMpKSB7XG4gICAgICAgICAgICB0aGlzLmxvZ2dlci53YXJuKGBwcm9vZjogcG9seW5vbWlhbCAke2tleX0gZG9lcyBub3QgZXhpc3QgaW4gcHJvb2ZgKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5wb2x5bm9taWFsc1trZXldO1xuICAgIH1cblxuICAgIGFkZEV2YWx1YXRpb24oa2V5LCBldmFsdWF0aW9uKSB7XG4gICAgICAgIGlmIChrZXkgaW4gdGhpcy5ldmFsdWF0aW9ucykge1xuICAgICAgICAgICAgdGhpcy5sb2dnZXIud2FybihgcHJvb2Y6IGV2YWx1YXRpb25zLiR7a2V5fSBhbHJlYWR5IGV4aXN0IGluIHByb29mYCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5ldmFsdWF0aW9uc1trZXldID0gZXZhbHVhdGlvbjtcbiAgICB9XG5cbiAgICBnZXRFdmFsdWF0aW9uKGtleSkge1xuICAgICAgICBpZiAoIShrZXkgaW4gdGhpcy5ldmFsdWF0aW9ucykpIHtcbiAgICAgICAgICAgIHRoaXMubG9nZ2VyLndhcm4oYHByb29mOiBldmFsdWF0aW9uICR7a2V5fSBkb2VzIG5vdCBleGlzdCBpbiBwcm9vZmApO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLmV2YWx1YXRpb25zW2tleV07XG4gICAgfVxuXG4gICAgdG9PYmplY3RQcm9vZihzcGxpdEZpZWxkcyA9IHRydWUpIHtcbiAgICAgICAgbGV0IHJlcyA9IHNwbGl0RmllbGRzID8ge3BvbHlub21pYWxzOiB7fSwgZXZhbHVhdGlvbnM6IHt9fSA6IHt9O1xuXG4gICAgICAgIE9iamVjdC5rZXlzKHRoaXMucG9seW5vbWlhbHMpLmZvckVhY2goa2V5ID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gdGhpcy5jdXJ2ZS5HMS50b09iamVjdCh0aGlzLnBvbHlub21pYWxzW2tleV0pO1xuICAgICAgICAgICAgaWYoc3BsaXRGaWVsZHMpIHtcbiAgICAgICAgICAgICAgICByZXMucG9seW5vbWlhbHNba2V5XSA9IHZhbHVlO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXNba2V5XSA9IHZhbHVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICBPYmplY3Qua2V5cyh0aGlzLmV2YWx1YXRpb25zKS5mb3JFYWNoKGtleSA9PiB7XG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IHRoaXMuY3VydmUuRnIudG9PYmplY3QodGhpcy5ldmFsdWF0aW9uc1trZXldKTtcbiAgICAgICAgICAgIGlmKHNwbGl0RmllbGRzKSB7XG4gICAgICAgICAgICAgICAgcmVzLmV2YWx1YXRpb25zW2tleV0gPSB2YWx1ZTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmVzW2tleV0gPSB2YWx1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG5cbiAgICBmcm9tT2JqZWN0UHJvb2Yob2JqZWN0UHJvb2YpIHtcbiAgICAgICAgdGhpcy5yZXNldFByb29mKCk7XG5cbiAgICAgICAgT2JqZWN0LmtleXMob2JqZWN0UHJvb2YucG9seW5vbWlhbHMpLmZvckVhY2goa2V5ID0+IHtcbiAgICAgICAgICAgIHRoaXMucG9seW5vbWlhbHNba2V5XSA9IHRoaXMuY3VydmUuRzEuZnJvbU9iamVjdChvYmplY3RQcm9vZi5wb2x5bm9taWFsc1trZXldKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgT2JqZWN0LmtleXMob2JqZWN0UHJvb2YuZXZhbHVhdGlvbnMpLmZvckVhY2goa2V5ID0+IHtcbiAgICAgICAgICAgIHRoaXMuZXZhbHVhdGlvbnNba2V5XSA9IHRoaXMuY3VydmUuRnIuZnJvbU9iamVjdChvYmplY3RQcm9vZi5ldmFsdWF0aW9uc1trZXldKTtcbiAgICAgICAgfSk7XG4gICAgfVxufSIsIi8qKlxuICogW2pzLXNoYTNde0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9lbW4xNzgvanMtc2hhM31cbiAqXG4gKiBAdmVyc2lvbiAwLjguMFxuICogQGF1dGhvciBDaGVuLCBZaS1DeXVhbiBbZW1uMTc4QGdtYWlsLmNvbV1cbiAqIEBjb3B5cmlnaHQgQ2hlbiwgWWktQ3l1YW4gMjAxNS0yMDE4XG4gKiBAbGljZW5zZSBNSVRcbiAqL1xuLypqc2xpbnQgYml0d2lzZTogdHJ1ZSAqL1xuKGZ1bmN0aW9uICgpIHtcbiAgJ3VzZSBzdHJpY3QnO1xuXG4gIHZhciBJTlBVVF9FUlJPUiA9ICdpbnB1dCBpcyBpbnZhbGlkIHR5cGUnO1xuICB2YXIgRklOQUxJWkVfRVJST1IgPSAnZmluYWxpemUgYWxyZWFkeSBjYWxsZWQnO1xuICB2YXIgV0lORE9XID0gdHlwZW9mIHdpbmRvdyA9PT0gJ29iamVjdCc7XG4gIHZhciByb290ID0gV0lORE9XID8gd2luZG93IDoge307XG4gIGlmIChyb290LkpTX1NIQTNfTk9fV0lORE9XKSB7XG4gICAgV0lORE9XID0gZmFsc2U7XG4gIH1cbiAgdmFyIFdFQl9XT1JLRVIgPSAhV0lORE9XICYmIHR5cGVvZiBzZWxmID09PSAnb2JqZWN0JztcbiAgdmFyIE5PREVfSlMgPSAhcm9vdC5KU19TSEEzX05PX05PREVfSlMgJiYgdHlwZW9mIHByb2Nlc3MgPT09ICdvYmplY3QnICYmIHByb2Nlc3MudmVyc2lvbnMgJiYgcHJvY2Vzcy52ZXJzaW9ucy5ub2RlO1xuICBpZiAoTk9ERV9KUykge1xuICAgIHJvb3QgPSBnbG9iYWw7XG4gIH0gZWxzZSBpZiAoV0VCX1dPUktFUikge1xuICAgIHJvb3QgPSBzZWxmO1xuICB9XG4gIHZhciBDT01NT05fSlMgPSAhcm9vdC5KU19TSEEzX05PX0NPTU1PTl9KUyAmJiB0eXBlb2YgbW9kdWxlID09PSAnb2JqZWN0JyAmJiBtb2R1bGUuZXhwb3J0cztcbiAgdmFyIEFNRCA9IHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZDtcbiAgdmFyIEFSUkFZX0JVRkZFUiA9ICFyb290LkpTX1NIQTNfTk9fQVJSQVlfQlVGRkVSICYmIHR5cGVvZiBBcnJheUJ1ZmZlciAhPT0gJ3VuZGVmaW5lZCc7XG4gIHZhciBIRVhfQ0hBUlMgPSAnMDEyMzQ1Njc4OWFiY2RlZicuc3BsaXQoJycpO1xuICB2YXIgU0hBS0VfUEFERElORyA9IFszMSwgNzkzNiwgMjAzMTYxNiwgNTIwMDkzNjk2XTtcbiAgdmFyIENTSEFLRV9QQURESU5HID0gWzQsIDEwMjQsIDI2MjE0NCwgNjcxMDg4NjRdO1xuICB2YXIgS0VDQ0FLX1BBRERJTkcgPSBbMSwgMjU2LCA2NTUzNiwgMTY3NzcyMTZdO1xuICB2YXIgUEFERElORyA9IFs2LCAxNTM2LCAzOTMyMTYsIDEwMDY2MzI5Nl07XG4gIHZhciBTSElGVCA9IFswLCA4LCAxNiwgMjRdO1xuICB2YXIgUkMgPSBbMSwgMCwgMzI4OTgsIDAsIDMyOTA2LCAyMTQ3NDgzNjQ4LCAyMTQ3NTE2NDE2LCAyMTQ3NDgzNjQ4LCAzMjkwNywgMCwgMjE0NzQ4MzY0OSxcbiAgICAwLCAyMTQ3NTE2NTQ1LCAyMTQ3NDgzNjQ4LCAzMjc3NywgMjE0NzQ4MzY0OCwgMTM4LCAwLCAxMzYsIDAsIDIxNDc1MTY0MjUsIDAsXG4gICAgMjE0NzQ4MzY1OCwgMCwgMjE0NzUxNjU1NSwgMCwgMTM5LCAyMTQ3NDgzNjQ4LCAzMjkwNSwgMjE0NzQ4MzY0OCwgMzI3NzEsXG4gICAgMjE0NzQ4MzY0OCwgMzI3NzAsIDIxNDc0ODM2NDgsIDEyOCwgMjE0NzQ4MzY0OCwgMzI3NzgsIDAsIDIxNDc0ODM2NTgsIDIxNDc0ODM2NDgsXG4gICAgMjE0NzUxNjU0NSwgMjE0NzQ4MzY0OCwgMzI4OTYsIDIxNDc0ODM2NDgsIDIxNDc0ODM2NDksIDAsIDIxNDc1MTY0MjQsIDIxNDc0ODM2NDhdO1xuICB2YXIgQklUUyA9IFsyMjQsIDI1NiwgMzg0LCA1MTJdO1xuICB2YXIgU0hBS0VfQklUUyA9IFsxMjgsIDI1Nl07XG4gIHZhciBPVVRQVVRfVFlQRVMgPSBbJ2hleCcsICdidWZmZXInLCAnYXJyYXlCdWZmZXInLCAnYXJyYXknLCAnZGlnZXN0J107XG4gIHZhciBDU0hBS0VfQllURVBBRCA9IHtcbiAgICAnMTI4JzogMTY4LFxuICAgICcyNTYnOiAxMzZcbiAgfTtcblxuICBpZiAocm9vdC5KU19TSEEzX05PX05PREVfSlMgfHwgIUFycmF5LmlzQXJyYXkpIHtcbiAgICBBcnJheS5pc0FycmF5ID0gZnVuY3Rpb24gKG9iaikge1xuICAgICAgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChvYmopID09PSAnW29iamVjdCBBcnJheV0nO1xuICAgIH07XG4gIH1cblxuICBpZiAoQVJSQVlfQlVGRkVSICYmIChyb290LkpTX1NIQTNfTk9fQVJSQVlfQlVGRkVSX0lTX1ZJRVcgfHwgIUFycmF5QnVmZmVyLmlzVmlldykpIHtcbiAgICBBcnJheUJ1ZmZlci5pc1ZpZXcgPSBmdW5jdGlvbiAob2JqKSB7XG4gICAgICByZXR1cm4gdHlwZW9mIG9iaiA9PT0gJ29iamVjdCcgJiYgb2JqLmJ1ZmZlciAmJiBvYmouYnVmZmVyLmNvbnN0cnVjdG9yID09PSBBcnJheUJ1ZmZlcjtcbiAgICB9O1xuICB9XG5cbiAgdmFyIGNyZWF0ZU91dHB1dE1ldGhvZCA9IGZ1bmN0aW9uIChiaXRzLCBwYWRkaW5nLCBvdXRwdXRUeXBlKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIChtZXNzYWdlKSB7XG4gICAgICByZXR1cm4gbmV3IEtlY2NhayhiaXRzLCBwYWRkaW5nLCBiaXRzKS51cGRhdGUobWVzc2FnZSlbb3V0cHV0VHlwZV0oKTtcbiAgICB9O1xuICB9O1xuXG4gIHZhciBjcmVhdGVTaGFrZU91dHB1dE1ldGhvZCA9IGZ1bmN0aW9uIChiaXRzLCBwYWRkaW5nLCBvdXRwdXRUeXBlKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIChtZXNzYWdlLCBvdXRwdXRCaXRzKSB7XG4gICAgICByZXR1cm4gbmV3IEtlY2NhayhiaXRzLCBwYWRkaW5nLCBvdXRwdXRCaXRzKS51cGRhdGUobWVzc2FnZSlbb3V0cHV0VHlwZV0oKTtcbiAgICB9O1xuICB9O1xuXG4gIHZhciBjcmVhdGVDc2hha2VPdXRwdXRNZXRob2QgPSBmdW5jdGlvbiAoYml0cywgcGFkZGluZywgb3V0cHV0VHlwZSkge1xuICAgIHJldHVybiBmdW5jdGlvbiAobWVzc2FnZSwgb3V0cHV0Qml0cywgbiwgcykge1xuICAgICAgcmV0dXJuIG1ldGhvZHNbJ2NzaGFrZScgKyBiaXRzXS51cGRhdGUobWVzc2FnZSwgb3V0cHV0Qml0cywgbiwgcylbb3V0cHV0VHlwZV0oKTtcbiAgICB9O1xuICB9O1xuXG4gIHZhciBjcmVhdGVLbWFjT3V0cHV0TWV0aG9kID0gZnVuY3Rpb24gKGJpdHMsIHBhZGRpbmcsIG91dHB1dFR5cGUpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKGtleSwgbWVzc2FnZSwgb3V0cHV0Qml0cywgcykge1xuICAgICAgcmV0dXJuIG1ldGhvZHNbJ2ttYWMnICsgYml0c10udXBkYXRlKGtleSwgbWVzc2FnZSwgb3V0cHV0Qml0cywgcylbb3V0cHV0VHlwZV0oKTtcbiAgICB9O1xuICB9O1xuXG4gIHZhciBjcmVhdGVPdXRwdXRNZXRob2RzID0gZnVuY3Rpb24gKG1ldGhvZCwgY3JlYXRlTWV0aG9kLCBiaXRzLCBwYWRkaW5nKSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBPVVRQVVRfVFlQRVMubGVuZ3RoOyArK2kpIHtcbiAgICAgIHZhciB0eXBlID0gT1VUUFVUX1RZUEVTW2ldO1xuICAgICAgbWV0aG9kW3R5cGVdID0gY3JlYXRlTWV0aG9kKGJpdHMsIHBhZGRpbmcsIHR5cGUpO1xuICAgIH1cbiAgICByZXR1cm4gbWV0aG9kO1xuICB9O1xuXG4gIHZhciBjcmVhdGVNZXRob2QgPSBmdW5jdGlvbiAoYml0cywgcGFkZGluZykge1xuICAgIHZhciBtZXRob2QgPSBjcmVhdGVPdXRwdXRNZXRob2QoYml0cywgcGFkZGluZywgJ2hleCcpO1xuICAgIG1ldGhvZC5jcmVhdGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gbmV3IEtlY2NhayhiaXRzLCBwYWRkaW5nLCBiaXRzKTtcbiAgICB9O1xuICAgIG1ldGhvZC51cGRhdGUgPSBmdW5jdGlvbiAobWVzc2FnZSkge1xuICAgICAgcmV0dXJuIG1ldGhvZC5jcmVhdGUoKS51cGRhdGUobWVzc2FnZSk7XG4gICAgfTtcbiAgICByZXR1cm4gY3JlYXRlT3V0cHV0TWV0aG9kcyhtZXRob2QsIGNyZWF0ZU91dHB1dE1ldGhvZCwgYml0cywgcGFkZGluZyk7XG4gIH07XG5cbiAgdmFyIGNyZWF0ZVNoYWtlTWV0aG9kID0gZnVuY3Rpb24gKGJpdHMsIHBhZGRpbmcpIHtcbiAgICB2YXIgbWV0aG9kID0gY3JlYXRlU2hha2VPdXRwdXRNZXRob2QoYml0cywgcGFkZGluZywgJ2hleCcpO1xuICAgIG1ldGhvZC5jcmVhdGUgPSBmdW5jdGlvbiAob3V0cHV0Qml0cykge1xuICAgICAgcmV0dXJuIG5ldyBLZWNjYWsoYml0cywgcGFkZGluZywgb3V0cHV0Qml0cyk7XG4gICAgfTtcbiAgICBtZXRob2QudXBkYXRlID0gZnVuY3Rpb24gKG1lc3NhZ2UsIG91dHB1dEJpdHMpIHtcbiAgICAgIHJldHVybiBtZXRob2QuY3JlYXRlKG91dHB1dEJpdHMpLnVwZGF0ZShtZXNzYWdlKTtcbiAgICB9O1xuICAgIHJldHVybiBjcmVhdGVPdXRwdXRNZXRob2RzKG1ldGhvZCwgY3JlYXRlU2hha2VPdXRwdXRNZXRob2QsIGJpdHMsIHBhZGRpbmcpO1xuICB9O1xuXG4gIHZhciBjcmVhdGVDc2hha2VNZXRob2QgPSBmdW5jdGlvbiAoYml0cywgcGFkZGluZykge1xuICAgIHZhciB3ID0gQ1NIQUtFX0JZVEVQQURbYml0c107XG4gICAgdmFyIG1ldGhvZCA9IGNyZWF0ZUNzaGFrZU91dHB1dE1ldGhvZChiaXRzLCBwYWRkaW5nLCAnaGV4Jyk7XG4gICAgbWV0aG9kLmNyZWF0ZSA9IGZ1bmN0aW9uIChvdXRwdXRCaXRzLCBuLCBzKSB7XG4gICAgICBpZiAoIW4gJiYgIXMpIHtcbiAgICAgICAgcmV0dXJuIG1ldGhvZHNbJ3NoYWtlJyArIGJpdHNdLmNyZWF0ZShvdXRwdXRCaXRzKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBuZXcgS2VjY2FrKGJpdHMsIHBhZGRpbmcsIG91dHB1dEJpdHMpLmJ5dGVwYWQoW24sIHNdLCB3KTtcbiAgICAgIH1cbiAgICB9O1xuICAgIG1ldGhvZC51cGRhdGUgPSBmdW5jdGlvbiAobWVzc2FnZSwgb3V0cHV0Qml0cywgbiwgcykge1xuICAgICAgcmV0dXJuIG1ldGhvZC5jcmVhdGUob3V0cHV0Qml0cywgbiwgcykudXBkYXRlKG1lc3NhZ2UpO1xuICAgIH07XG4gICAgcmV0dXJuIGNyZWF0ZU91dHB1dE1ldGhvZHMobWV0aG9kLCBjcmVhdGVDc2hha2VPdXRwdXRNZXRob2QsIGJpdHMsIHBhZGRpbmcpO1xuICB9O1xuXG4gIHZhciBjcmVhdGVLbWFjTWV0aG9kID0gZnVuY3Rpb24gKGJpdHMsIHBhZGRpbmcpIHtcbiAgICB2YXIgdyA9IENTSEFLRV9CWVRFUEFEW2JpdHNdO1xuICAgIHZhciBtZXRob2QgPSBjcmVhdGVLbWFjT3V0cHV0TWV0aG9kKGJpdHMsIHBhZGRpbmcsICdoZXgnKTtcbiAgICBtZXRob2QuY3JlYXRlID0gZnVuY3Rpb24gKGtleSwgb3V0cHV0Qml0cywgcykge1xuICAgICAgcmV0dXJuIG5ldyBLbWFjKGJpdHMsIHBhZGRpbmcsIG91dHB1dEJpdHMpLmJ5dGVwYWQoWydLTUFDJywgc10sIHcpLmJ5dGVwYWQoW2tleV0sIHcpO1xuICAgIH07XG4gICAgbWV0aG9kLnVwZGF0ZSA9IGZ1bmN0aW9uIChrZXksIG1lc3NhZ2UsIG91dHB1dEJpdHMsIHMpIHtcbiAgICAgIHJldHVybiBtZXRob2QuY3JlYXRlKGtleSwgb3V0cHV0Qml0cywgcykudXBkYXRlKG1lc3NhZ2UpO1xuICAgIH07XG4gICAgcmV0dXJuIGNyZWF0ZU91dHB1dE1ldGhvZHMobWV0aG9kLCBjcmVhdGVLbWFjT3V0cHV0TWV0aG9kLCBiaXRzLCBwYWRkaW5nKTtcbiAgfTtcblxuICB2YXIgYWxnb3JpdGhtcyA9IFtcbiAgICB7IG5hbWU6ICdrZWNjYWsnLCBwYWRkaW5nOiBLRUNDQUtfUEFERElORywgYml0czogQklUUywgY3JlYXRlTWV0aG9kOiBjcmVhdGVNZXRob2QgfSxcbiAgICB7IG5hbWU6ICdzaGEzJywgcGFkZGluZzogUEFERElORywgYml0czogQklUUywgY3JlYXRlTWV0aG9kOiBjcmVhdGVNZXRob2QgfSxcbiAgICB7IG5hbWU6ICdzaGFrZScsIHBhZGRpbmc6IFNIQUtFX1BBRERJTkcsIGJpdHM6IFNIQUtFX0JJVFMsIGNyZWF0ZU1ldGhvZDogY3JlYXRlU2hha2VNZXRob2QgfSxcbiAgICB7IG5hbWU6ICdjc2hha2UnLCBwYWRkaW5nOiBDU0hBS0VfUEFERElORywgYml0czogU0hBS0VfQklUUywgY3JlYXRlTWV0aG9kOiBjcmVhdGVDc2hha2VNZXRob2QgfSxcbiAgICB7IG5hbWU6ICdrbWFjJywgcGFkZGluZzogQ1NIQUtFX1BBRERJTkcsIGJpdHM6IFNIQUtFX0JJVFMsIGNyZWF0ZU1ldGhvZDogY3JlYXRlS21hY01ldGhvZCB9XG4gIF07XG5cbiAgdmFyIG1ldGhvZHMgPSB7fSwgbWV0aG9kTmFtZXMgPSBbXTtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IGFsZ29yaXRobXMubGVuZ3RoOyArK2kpIHtcbiAgICB2YXIgYWxnb3JpdGhtID0gYWxnb3JpdGhtc1tpXTtcbiAgICB2YXIgYml0cyA9IGFsZ29yaXRobS5iaXRzO1xuICAgIGZvciAodmFyIGogPSAwOyBqIDwgYml0cy5sZW5ndGg7ICsraikge1xuICAgICAgdmFyIG1ldGhvZE5hbWUgPSBhbGdvcml0aG0ubmFtZSArICdfJyArIGJpdHNbal07XG4gICAgICBtZXRob2ROYW1lcy5wdXNoKG1ldGhvZE5hbWUpO1xuICAgICAgbWV0aG9kc1ttZXRob2ROYW1lXSA9IGFsZ29yaXRobS5jcmVhdGVNZXRob2QoYml0c1tqXSwgYWxnb3JpdGhtLnBhZGRpbmcpO1xuICAgICAgaWYgKGFsZ29yaXRobS5uYW1lICE9PSAnc2hhMycpIHtcbiAgICAgICAgdmFyIG5ld01ldGhvZE5hbWUgPSBhbGdvcml0aG0ubmFtZSArIGJpdHNbal07XG4gICAgICAgIG1ldGhvZE5hbWVzLnB1c2gobmV3TWV0aG9kTmFtZSk7XG4gICAgICAgIG1ldGhvZHNbbmV3TWV0aG9kTmFtZV0gPSBtZXRob2RzW21ldGhvZE5hbWVdO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIEtlY2NhayhiaXRzLCBwYWRkaW5nLCBvdXRwdXRCaXRzKSB7XG4gICAgdGhpcy5ibG9ja3MgPSBbXTtcbiAgICB0aGlzLnMgPSBbXTtcbiAgICB0aGlzLnBhZGRpbmcgPSBwYWRkaW5nO1xuICAgIHRoaXMub3V0cHV0Qml0cyA9IG91dHB1dEJpdHM7XG4gICAgdGhpcy5yZXNldCA9IHRydWU7XG4gICAgdGhpcy5maW5hbGl6ZWQgPSBmYWxzZTtcbiAgICB0aGlzLmJsb2NrID0gMDtcbiAgICB0aGlzLnN0YXJ0ID0gMDtcbiAgICB0aGlzLmJsb2NrQ291bnQgPSAoMTYwMCAtIChiaXRzIDw8IDEpKSA+PiA1O1xuICAgIHRoaXMuYnl0ZUNvdW50ID0gdGhpcy5ibG9ja0NvdW50IDw8IDI7XG4gICAgdGhpcy5vdXRwdXRCbG9ja3MgPSBvdXRwdXRCaXRzID4+IDU7XG4gICAgdGhpcy5leHRyYUJ5dGVzID0gKG91dHB1dEJpdHMgJiAzMSkgPj4gMztcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgNTA7ICsraSkge1xuICAgICAgdGhpcy5zW2ldID0gMDtcbiAgICB9XG4gIH1cblxuICBLZWNjYWsucHJvdG90eXBlLnVwZGF0ZSA9IGZ1bmN0aW9uIChtZXNzYWdlKSB7XG4gICAgaWYgKHRoaXMuZmluYWxpemVkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoRklOQUxJWkVfRVJST1IpO1xuICAgIH1cbiAgICB2YXIgbm90U3RyaW5nLCB0eXBlID0gdHlwZW9mIG1lc3NhZ2U7XG4gICAgaWYgKHR5cGUgIT09ICdzdHJpbmcnKSB7XG4gICAgICBpZiAodHlwZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgaWYgKG1lc3NhZ2UgPT09IG51bGwpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoSU5QVVRfRVJST1IpO1xuICAgICAgICB9IGVsc2UgaWYgKEFSUkFZX0JVRkZFUiAmJiBtZXNzYWdlLmNvbnN0cnVjdG9yID09PSBBcnJheUJ1ZmZlcikge1xuICAgICAgICAgIG1lc3NhZ2UgPSBuZXcgVWludDhBcnJheShtZXNzYWdlKTtcbiAgICAgICAgfSBlbHNlIGlmICghQXJyYXkuaXNBcnJheShtZXNzYWdlKSkge1xuICAgICAgICAgIGlmICghQVJSQVlfQlVGRkVSIHx8ICFBcnJheUJ1ZmZlci5pc1ZpZXcobWVzc2FnZSkpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihJTlBVVF9FUlJPUik7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoSU5QVVRfRVJST1IpO1xuICAgICAgfVxuICAgICAgbm90U3RyaW5nID0gdHJ1ZTtcbiAgICB9XG4gICAgdmFyIGJsb2NrcyA9IHRoaXMuYmxvY2tzLCBieXRlQ291bnQgPSB0aGlzLmJ5dGVDb3VudCwgbGVuZ3RoID0gbWVzc2FnZS5sZW5ndGgsXG4gICAgICBibG9ja0NvdW50ID0gdGhpcy5ibG9ja0NvdW50LCBpbmRleCA9IDAsIHMgPSB0aGlzLnMsIGksIGNvZGU7XG5cbiAgICB3aGlsZSAoaW5kZXggPCBsZW5ndGgpIHtcbiAgICAgIGlmICh0aGlzLnJlc2V0KSB7XG4gICAgICAgIHRoaXMucmVzZXQgPSBmYWxzZTtcbiAgICAgICAgYmxvY2tzWzBdID0gdGhpcy5ibG9jaztcbiAgICAgICAgZm9yIChpID0gMTsgaSA8IGJsb2NrQ291bnQgKyAxOyArK2kpIHtcbiAgICAgICAgICBibG9ja3NbaV0gPSAwO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAobm90U3RyaW5nKSB7XG4gICAgICAgIGZvciAoaSA9IHRoaXMuc3RhcnQ7IGluZGV4IDwgbGVuZ3RoICYmIGkgPCBieXRlQ291bnQ7ICsraW5kZXgpIHtcbiAgICAgICAgICBibG9ja3NbaSA+PiAyXSB8PSBtZXNzYWdlW2luZGV4XSA8PCBTSElGVFtpKysgJiAzXTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZm9yIChpID0gdGhpcy5zdGFydDsgaW5kZXggPCBsZW5ndGggJiYgaSA8IGJ5dGVDb3VudDsgKytpbmRleCkge1xuICAgICAgICAgIGNvZGUgPSBtZXNzYWdlLmNoYXJDb2RlQXQoaW5kZXgpO1xuICAgICAgICAgIGlmIChjb2RlIDwgMHg4MCkge1xuICAgICAgICAgICAgYmxvY2tzW2kgPj4gMl0gfD0gY29kZSA8PCBTSElGVFtpKysgJiAzXTtcbiAgICAgICAgICB9IGVsc2UgaWYgKGNvZGUgPCAweDgwMCkge1xuICAgICAgICAgICAgYmxvY2tzW2kgPj4gMl0gfD0gKDB4YzAgfCAoY29kZSA+PiA2KSkgPDwgU0hJRlRbaSsrICYgM107XG4gICAgICAgICAgICBibG9ja3NbaSA+PiAyXSB8PSAoMHg4MCB8IChjb2RlICYgMHgzZikpIDw8IFNISUZUW2krKyAmIDNdO1xuICAgICAgICAgIH0gZWxzZSBpZiAoY29kZSA8IDB4ZDgwMCB8fCBjb2RlID49IDB4ZTAwMCkge1xuICAgICAgICAgICAgYmxvY2tzW2kgPj4gMl0gfD0gKDB4ZTAgfCAoY29kZSA+PiAxMikpIDw8IFNISUZUW2krKyAmIDNdO1xuICAgICAgICAgICAgYmxvY2tzW2kgPj4gMl0gfD0gKDB4ODAgfCAoKGNvZGUgPj4gNikgJiAweDNmKSkgPDwgU0hJRlRbaSsrICYgM107XG4gICAgICAgICAgICBibG9ja3NbaSA+PiAyXSB8PSAoMHg4MCB8IChjb2RlICYgMHgzZikpIDw8IFNISUZUW2krKyAmIDNdO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb2RlID0gMHgxMDAwMCArICgoKGNvZGUgJiAweDNmZikgPDwgMTApIHwgKG1lc3NhZ2UuY2hhckNvZGVBdCgrK2luZGV4KSAmIDB4M2ZmKSk7XG4gICAgICAgICAgICBibG9ja3NbaSA+PiAyXSB8PSAoMHhmMCB8IChjb2RlID4+IDE4KSkgPDwgU0hJRlRbaSsrICYgM107XG4gICAgICAgICAgICBibG9ja3NbaSA+PiAyXSB8PSAoMHg4MCB8ICgoY29kZSA+PiAxMikgJiAweDNmKSkgPDwgU0hJRlRbaSsrICYgM107XG4gICAgICAgICAgICBibG9ja3NbaSA+PiAyXSB8PSAoMHg4MCB8ICgoY29kZSA+PiA2KSAmIDB4M2YpKSA8PCBTSElGVFtpKysgJiAzXTtcbiAgICAgICAgICAgIGJsb2Nrc1tpID4+IDJdIHw9ICgweDgwIHwgKGNvZGUgJiAweDNmKSkgPDwgU0hJRlRbaSsrICYgM107XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICB0aGlzLmxhc3RCeXRlSW5kZXggPSBpO1xuICAgICAgaWYgKGkgPj0gYnl0ZUNvdW50KSB7XG4gICAgICAgIHRoaXMuc3RhcnQgPSBpIC0gYnl0ZUNvdW50O1xuICAgICAgICB0aGlzLmJsb2NrID0gYmxvY2tzW2Jsb2NrQ291bnRdO1xuICAgICAgICBmb3IgKGkgPSAwOyBpIDwgYmxvY2tDb3VudDsgKytpKSB7XG4gICAgICAgICAgc1tpXSBePSBibG9ja3NbaV07XG4gICAgICAgIH1cbiAgICAgICAgZihzKTtcbiAgICAgICAgdGhpcy5yZXNldCA9IHRydWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnN0YXJ0ID0gaTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgS2VjY2FrLnByb3RvdHlwZS5lbmNvZGUgPSBmdW5jdGlvbiAoeCwgcmlnaHQpIHtcbiAgICB2YXIgbyA9IHggJiAyNTUsIG4gPSAxO1xuICAgIHZhciBieXRlcyA9IFtvXTtcbiAgICB4ID0geCA+PiA4O1xuICAgIG8gPSB4ICYgMjU1O1xuICAgIHdoaWxlIChvID4gMCkge1xuICAgICAgYnl0ZXMudW5zaGlmdChvKTtcbiAgICAgIHggPSB4ID4+IDg7XG4gICAgICBvID0geCAmIDI1NTtcbiAgICAgICsrbjtcbiAgICB9XG4gICAgaWYgKHJpZ2h0KSB7XG4gICAgICBieXRlcy5wdXNoKG4pO1xuICAgIH0gZWxzZSB7XG4gICAgICBieXRlcy51bnNoaWZ0KG4pO1xuICAgIH1cbiAgICB0aGlzLnVwZGF0ZShieXRlcyk7XG4gICAgcmV0dXJuIGJ5dGVzLmxlbmd0aDtcbiAgfTtcblxuICBLZWNjYWsucHJvdG90eXBlLmVuY29kZVN0cmluZyA9IGZ1bmN0aW9uIChzdHIpIHtcbiAgICB2YXIgbm90U3RyaW5nLCB0eXBlID0gdHlwZW9mIHN0cjtcbiAgICBpZiAodHlwZSAhPT0gJ3N0cmluZycpIHtcbiAgICAgIGlmICh0eXBlID09PSAnb2JqZWN0Jykge1xuICAgICAgICBpZiAoc3RyID09PSBudWxsKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKElOUFVUX0VSUk9SKTtcbiAgICAgICAgfSBlbHNlIGlmIChBUlJBWV9CVUZGRVIgJiYgc3RyLmNvbnN0cnVjdG9yID09PSBBcnJheUJ1ZmZlcikge1xuICAgICAgICAgIHN0ciA9IG5ldyBVaW50OEFycmF5KHN0cik7XG4gICAgICAgIH0gZWxzZSBpZiAoIUFycmF5LmlzQXJyYXkoc3RyKSkge1xuICAgICAgICAgIGlmICghQVJSQVlfQlVGRkVSIHx8ICFBcnJheUJ1ZmZlci5pc1ZpZXcoc3RyKSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKElOUFVUX0VSUk9SKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihJTlBVVF9FUlJPUik7XG4gICAgICB9XG4gICAgICBub3RTdHJpbmcgPSB0cnVlO1xuICAgIH1cbiAgICB2YXIgYnl0ZXMgPSAwLCBsZW5ndGggPSBzdHIubGVuZ3RoO1xuICAgIGlmIChub3RTdHJpbmcpIHtcbiAgICAgIGJ5dGVzID0gbGVuZ3RoO1xuICAgIH0gZWxzZSB7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHN0ci5sZW5ndGg7ICsraSkge1xuICAgICAgICB2YXIgY29kZSA9IHN0ci5jaGFyQ29kZUF0KGkpO1xuICAgICAgICBpZiAoY29kZSA8IDB4ODApIHtcbiAgICAgICAgICBieXRlcyArPSAxO1xuICAgICAgICB9IGVsc2UgaWYgKGNvZGUgPCAweDgwMCkge1xuICAgICAgICAgIGJ5dGVzICs9IDI7XG4gICAgICAgIH0gZWxzZSBpZiAoY29kZSA8IDB4ZDgwMCB8fCBjb2RlID49IDB4ZTAwMCkge1xuICAgICAgICAgIGJ5dGVzICs9IDM7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29kZSA9IDB4MTAwMDAgKyAoKChjb2RlICYgMHgzZmYpIDw8IDEwKSB8IChzdHIuY2hhckNvZGVBdCgrK2kpICYgMHgzZmYpKTtcbiAgICAgICAgICBieXRlcyArPSA0O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGJ5dGVzICs9IHRoaXMuZW5jb2RlKGJ5dGVzICogOCk7XG4gICAgdGhpcy51cGRhdGUoc3RyKTtcbiAgICByZXR1cm4gYnl0ZXM7XG4gIH07XG5cbiAgS2VjY2FrLnByb3RvdHlwZS5ieXRlcGFkID0gZnVuY3Rpb24gKHN0cnMsIHcpIHtcbiAgICB2YXIgYnl0ZXMgPSB0aGlzLmVuY29kZSh3KTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHN0cnMubGVuZ3RoOyArK2kpIHtcbiAgICAgIGJ5dGVzICs9IHRoaXMuZW5jb2RlU3RyaW5nKHN0cnNbaV0pO1xuICAgIH1cbiAgICB2YXIgcGFkZGluZ0J5dGVzID0gdyAtIGJ5dGVzICUgdztcbiAgICB2YXIgemVyb3MgPSBbXTtcbiAgICB6ZXJvcy5sZW5ndGggPSBwYWRkaW5nQnl0ZXM7XG4gICAgdGhpcy51cGRhdGUoemVyb3MpO1xuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIEtlY2Nhay5wcm90b3R5cGUuZmluYWxpemUgPSBmdW5jdGlvbiAoKSB7XG4gICAgaWYgKHRoaXMuZmluYWxpemVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuZmluYWxpemVkID0gdHJ1ZTtcbiAgICB2YXIgYmxvY2tzID0gdGhpcy5ibG9ja3MsIGkgPSB0aGlzLmxhc3RCeXRlSW5kZXgsIGJsb2NrQ291bnQgPSB0aGlzLmJsb2NrQ291bnQsIHMgPSB0aGlzLnM7XG4gICAgYmxvY2tzW2kgPj4gMl0gfD0gdGhpcy5wYWRkaW5nW2kgJiAzXTtcbiAgICBpZiAodGhpcy5sYXN0Qnl0ZUluZGV4ID09PSB0aGlzLmJ5dGVDb3VudCkge1xuICAgICAgYmxvY2tzWzBdID0gYmxvY2tzW2Jsb2NrQ291bnRdO1xuICAgICAgZm9yIChpID0gMTsgaSA8IGJsb2NrQ291bnQgKyAxOyArK2kpIHtcbiAgICAgICAgYmxvY2tzW2ldID0gMDtcbiAgICAgIH1cbiAgICB9XG4gICAgYmxvY2tzW2Jsb2NrQ291bnQgLSAxXSB8PSAweDgwMDAwMDAwO1xuICAgIGZvciAoaSA9IDA7IGkgPCBibG9ja0NvdW50OyArK2kpIHtcbiAgICAgIHNbaV0gXj0gYmxvY2tzW2ldO1xuICAgIH1cbiAgICBmKHMpO1xuICB9O1xuXG4gIEtlY2Nhay5wcm90b3R5cGUudG9TdHJpbmcgPSBLZWNjYWsucHJvdG90eXBlLmhleCA9IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLmZpbmFsaXplKCk7XG5cbiAgICB2YXIgYmxvY2tDb3VudCA9IHRoaXMuYmxvY2tDb3VudCwgcyA9IHRoaXMucywgb3V0cHV0QmxvY2tzID0gdGhpcy5vdXRwdXRCbG9ja3MsXG4gICAgICBleHRyYUJ5dGVzID0gdGhpcy5leHRyYUJ5dGVzLCBpID0gMCwgaiA9IDA7XG4gICAgdmFyIGhleCA9ICcnLCBibG9jaztcbiAgICB3aGlsZSAoaiA8IG91dHB1dEJsb2Nrcykge1xuICAgICAgZm9yIChpID0gMDsgaSA8IGJsb2NrQ291bnQgJiYgaiA8IG91dHB1dEJsb2NrczsgKytpLCArK2opIHtcbiAgICAgICAgYmxvY2sgPSBzW2ldO1xuICAgICAgICBoZXggKz0gSEVYX0NIQVJTWyhibG9jayA+PiA0KSAmIDB4MEZdICsgSEVYX0NIQVJTW2Jsb2NrICYgMHgwRl0gK1xuICAgICAgICAgIEhFWF9DSEFSU1soYmxvY2sgPj4gMTIpICYgMHgwRl0gKyBIRVhfQ0hBUlNbKGJsb2NrID4+IDgpICYgMHgwRl0gK1xuICAgICAgICAgIEhFWF9DSEFSU1soYmxvY2sgPj4gMjApICYgMHgwRl0gKyBIRVhfQ0hBUlNbKGJsb2NrID4+IDE2KSAmIDB4MEZdICtcbiAgICAgICAgICBIRVhfQ0hBUlNbKGJsb2NrID4+IDI4KSAmIDB4MEZdICsgSEVYX0NIQVJTWyhibG9jayA+PiAyNCkgJiAweDBGXTtcbiAgICAgIH1cbiAgICAgIGlmIChqICUgYmxvY2tDb3VudCA9PT0gMCkge1xuICAgICAgICBmKHMpO1xuICAgICAgICBpID0gMDtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGV4dHJhQnl0ZXMpIHtcbiAgICAgIGJsb2NrID0gc1tpXTtcbiAgICAgIGhleCArPSBIRVhfQ0hBUlNbKGJsb2NrID4+IDQpICYgMHgwRl0gKyBIRVhfQ0hBUlNbYmxvY2sgJiAweDBGXTtcbiAgICAgIGlmIChleHRyYUJ5dGVzID4gMSkge1xuICAgICAgICBoZXggKz0gSEVYX0NIQVJTWyhibG9jayA+PiAxMikgJiAweDBGXSArIEhFWF9DSEFSU1soYmxvY2sgPj4gOCkgJiAweDBGXTtcbiAgICAgIH1cbiAgICAgIGlmIChleHRyYUJ5dGVzID4gMikge1xuICAgICAgICBoZXggKz0gSEVYX0NIQVJTWyhibG9jayA+PiAyMCkgJiAweDBGXSArIEhFWF9DSEFSU1soYmxvY2sgPj4gMTYpICYgMHgwRl07XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBoZXg7XG4gIH07XG5cbiAgS2VjY2FrLnByb3RvdHlwZS5hcnJheUJ1ZmZlciA9IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLmZpbmFsaXplKCk7XG5cbiAgICB2YXIgYmxvY2tDb3VudCA9IHRoaXMuYmxvY2tDb3VudCwgcyA9IHRoaXMucywgb3V0cHV0QmxvY2tzID0gdGhpcy5vdXRwdXRCbG9ja3MsXG4gICAgICBleHRyYUJ5dGVzID0gdGhpcy5leHRyYUJ5dGVzLCBpID0gMCwgaiA9IDA7XG4gICAgdmFyIGJ5dGVzID0gdGhpcy5vdXRwdXRCaXRzID4+IDM7XG4gICAgdmFyIGJ1ZmZlcjtcbiAgICBpZiAoZXh0cmFCeXRlcykge1xuICAgICAgYnVmZmVyID0gbmV3IEFycmF5QnVmZmVyKChvdXRwdXRCbG9ja3MgKyAxKSA8PCAyKTtcbiAgICB9IGVsc2Uge1xuICAgICAgYnVmZmVyID0gbmV3IEFycmF5QnVmZmVyKGJ5dGVzKTtcbiAgICB9XG4gICAgdmFyIGFycmF5ID0gbmV3IFVpbnQzMkFycmF5KGJ1ZmZlcik7XG4gICAgd2hpbGUgKGogPCBvdXRwdXRCbG9ja3MpIHtcbiAgICAgIGZvciAoaSA9IDA7IGkgPCBibG9ja0NvdW50ICYmIGogPCBvdXRwdXRCbG9ja3M7ICsraSwgKytqKSB7XG4gICAgICAgIGFycmF5W2pdID0gc1tpXTtcbiAgICAgIH1cbiAgICAgIGlmIChqICUgYmxvY2tDb3VudCA9PT0gMCkge1xuICAgICAgICBmKHMpO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoZXh0cmFCeXRlcykge1xuICAgICAgYXJyYXlbaV0gPSBzW2ldO1xuICAgICAgYnVmZmVyID0gYnVmZmVyLnNsaWNlKDAsIGJ5dGVzKTtcbiAgICB9XG4gICAgcmV0dXJuIGJ1ZmZlcjtcbiAgfTtcblxuICBLZWNjYWsucHJvdG90eXBlLmJ1ZmZlciA9IEtlY2Nhay5wcm90b3R5cGUuYXJyYXlCdWZmZXI7XG5cbiAgS2VjY2FrLnByb3RvdHlwZS5kaWdlc3QgPSBLZWNjYWsucHJvdG90eXBlLmFycmF5ID0gZnVuY3Rpb24gKCkge1xuICAgIHRoaXMuZmluYWxpemUoKTtcblxuICAgIHZhciBibG9ja0NvdW50ID0gdGhpcy5ibG9ja0NvdW50LCBzID0gdGhpcy5zLCBvdXRwdXRCbG9ja3MgPSB0aGlzLm91dHB1dEJsb2NrcyxcbiAgICAgIGV4dHJhQnl0ZXMgPSB0aGlzLmV4dHJhQnl0ZXMsIGkgPSAwLCBqID0gMDtcbiAgICB2YXIgYXJyYXkgPSBbXSwgb2Zmc2V0LCBibG9jaztcbiAgICB3aGlsZSAoaiA8IG91dHB1dEJsb2Nrcykge1xuICAgICAgZm9yIChpID0gMDsgaSA8IGJsb2NrQ291bnQgJiYgaiA8IG91dHB1dEJsb2NrczsgKytpLCArK2opIHtcbiAgICAgICAgb2Zmc2V0ID0gaiA8PCAyO1xuICAgICAgICBibG9jayA9IHNbaV07XG4gICAgICAgIGFycmF5W29mZnNldF0gPSBibG9jayAmIDB4RkY7XG4gICAgICAgIGFycmF5W29mZnNldCArIDFdID0gKGJsb2NrID4+IDgpICYgMHhGRjtcbiAgICAgICAgYXJyYXlbb2Zmc2V0ICsgMl0gPSAoYmxvY2sgPj4gMTYpICYgMHhGRjtcbiAgICAgICAgYXJyYXlbb2Zmc2V0ICsgM10gPSAoYmxvY2sgPj4gMjQpICYgMHhGRjtcbiAgICAgIH1cbiAgICAgIGlmIChqICUgYmxvY2tDb3VudCA9PT0gMCkge1xuICAgICAgICBmKHMpO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoZXh0cmFCeXRlcykge1xuICAgICAgb2Zmc2V0ID0gaiA8PCAyO1xuICAgICAgYmxvY2sgPSBzW2ldO1xuICAgICAgYXJyYXlbb2Zmc2V0XSA9IGJsb2NrICYgMHhGRjtcbiAgICAgIGlmIChleHRyYUJ5dGVzID4gMSkge1xuICAgICAgICBhcnJheVtvZmZzZXQgKyAxXSA9IChibG9jayA+PiA4KSAmIDB4RkY7XG4gICAgICB9XG4gICAgICBpZiAoZXh0cmFCeXRlcyA+IDIpIHtcbiAgICAgICAgYXJyYXlbb2Zmc2V0ICsgMl0gPSAoYmxvY2sgPj4gMTYpICYgMHhGRjtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGFycmF5O1xuICB9O1xuXG4gIGZ1bmN0aW9uIEttYWMoYml0cywgcGFkZGluZywgb3V0cHV0Qml0cykge1xuICAgIEtlY2Nhay5jYWxsKHRoaXMsIGJpdHMsIHBhZGRpbmcsIG91dHB1dEJpdHMpO1xuICB9XG5cbiAgS21hYy5wcm90b3R5cGUgPSBuZXcgS2VjY2FrKCk7XG5cbiAgS21hYy5wcm90b3R5cGUuZmluYWxpemUgPSBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5lbmNvZGUodGhpcy5vdXRwdXRCaXRzLCB0cnVlKTtcbiAgICByZXR1cm4gS2VjY2FrLnByb3RvdHlwZS5maW5hbGl6ZS5jYWxsKHRoaXMpO1xuICB9O1xuXG4gIHZhciBmID0gZnVuY3Rpb24gKHMpIHtcbiAgICB2YXIgaCwgbCwgbiwgYzAsIGMxLCBjMiwgYzMsIGM0LCBjNSwgYzYsIGM3LCBjOCwgYzksXG4gICAgICBiMCwgYjEsIGIyLCBiMywgYjQsIGI1LCBiNiwgYjcsIGI4LCBiOSwgYjEwLCBiMTEsIGIxMiwgYjEzLCBiMTQsIGIxNSwgYjE2LCBiMTcsXG4gICAgICBiMTgsIGIxOSwgYjIwLCBiMjEsIGIyMiwgYjIzLCBiMjQsIGIyNSwgYjI2LCBiMjcsIGIyOCwgYjI5LCBiMzAsIGIzMSwgYjMyLCBiMzMsXG4gICAgICBiMzQsIGIzNSwgYjM2LCBiMzcsIGIzOCwgYjM5LCBiNDAsIGI0MSwgYjQyLCBiNDMsIGI0NCwgYjQ1LCBiNDYsIGI0NywgYjQ4LCBiNDk7XG4gICAgZm9yIChuID0gMDsgbiA8IDQ4OyBuICs9IDIpIHtcbiAgICAgIGMwID0gc1swXSBeIHNbMTBdIF4gc1syMF0gXiBzWzMwXSBeIHNbNDBdO1xuICAgICAgYzEgPSBzWzFdIF4gc1sxMV0gXiBzWzIxXSBeIHNbMzFdIF4gc1s0MV07XG4gICAgICBjMiA9IHNbMl0gXiBzWzEyXSBeIHNbMjJdIF4gc1szMl0gXiBzWzQyXTtcbiAgICAgIGMzID0gc1szXSBeIHNbMTNdIF4gc1syM10gXiBzWzMzXSBeIHNbNDNdO1xuICAgICAgYzQgPSBzWzRdIF4gc1sxNF0gXiBzWzI0XSBeIHNbMzRdIF4gc1s0NF07XG4gICAgICBjNSA9IHNbNV0gXiBzWzE1XSBeIHNbMjVdIF4gc1szNV0gXiBzWzQ1XTtcbiAgICAgIGM2ID0gc1s2XSBeIHNbMTZdIF4gc1syNl0gXiBzWzM2XSBeIHNbNDZdO1xuICAgICAgYzcgPSBzWzddIF4gc1sxN10gXiBzWzI3XSBeIHNbMzddIF4gc1s0N107XG4gICAgICBjOCA9IHNbOF0gXiBzWzE4XSBeIHNbMjhdIF4gc1szOF0gXiBzWzQ4XTtcbiAgICAgIGM5ID0gc1s5XSBeIHNbMTldIF4gc1syOV0gXiBzWzM5XSBeIHNbNDldO1xuXG4gICAgICBoID0gYzggXiAoKGMyIDw8IDEpIHwgKGMzID4+PiAzMSkpO1xuICAgICAgbCA9IGM5IF4gKChjMyA8PCAxKSB8IChjMiA+Pj4gMzEpKTtcbiAgICAgIHNbMF0gXj0gaDtcbiAgICAgIHNbMV0gXj0gbDtcbiAgICAgIHNbMTBdIF49IGg7XG4gICAgICBzWzExXSBePSBsO1xuICAgICAgc1syMF0gXj0gaDtcbiAgICAgIHNbMjFdIF49IGw7XG4gICAgICBzWzMwXSBePSBoO1xuICAgICAgc1szMV0gXj0gbDtcbiAgICAgIHNbNDBdIF49IGg7XG4gICAgICBzWzQxXSBePSBsO1xuICAgICAgaCA9IGMwIF4gKChjNCA8PCAxKSB8IChjNSA+Pj4gMzEpKTtcbiAgICAgIGwgPSBjMSBeICgoYzUgPDwgMSkgfCAoYzQgPj4+IDMxKSk7XG4gICAgICBzWzJdIF49IGg7XG4gICAgICBzWzNdIF49IGw7XG4gICAgICBzWzEyXSBePSBoO1xuICAgICAgc1sxM10gXj0gbDtcbiAgICAgIHNbMjJdIF49IGg7XG4gICAgICBzWzIzXSBePSBsO1xuICAgICAgc1szMl0gXj0gaDtcbiAgICAgIHNbMzNdIF49IGw7XG4gICAgICBzWzQyXSBePSBoO1xuICAgICAgc1s0M10gXj0gbDtcbiAgICAgIGggPSBjMiBeICgoYzYgPDwgMSkgfCAoYzcgPj4+IDMxKSk7XG4gICAgICBsID0gYzMgXiAoKGM3IDw8IDEpIHwgKGM2ID4+PiAzMSkpO1xuICAgICAgc1s0XSBePSBoO1xuICAgICAgc1s1XSBePSBsO1xuICAgICAgc1sxNF0gXj0gaDtcbiAgICAgIHNbMTVdIF49IGw7XG4gICAgICBzWzI0XSBePSBoO1xuICAgICAgc1syNV0gXj0gbDtcbiAgICAgIHNbMzRdIF49IGg7XG4gICAgICBzWzM1XSBePSBsO1xuICAgICAgc1s0NF0gXj0gaDtcbiAgICAgIHNbNDVdIF49IGw7XG4gICAgICBoID0gYzQgXiAoKGM4IDw8IDEpIHwgKGM5ID4+PiAzMSkpO1xuICAgICAgbCA9IGM1IF4gKChjOSA8PCAxKSB8IChjOCA+Pj4gMzEpKTtcbiAgICAgIHNbNl0gXj0gaDtcbiAgICAgIHNbN10gXj0gbDtcbiAgICAgIHNbMTZdIF49IGg7XG4gICAgICBzWzE3XSBePSBsO1xuICAgICAgc1syNl0gXj0gaDtcbiAgICAgIHNbMjddIF49IGw7XG4gICAgICBzWzM2XSBePSBoO1xuICAgICAgc1szN10gXj0gbDtcbiAgICAgIHNbNDZdIF49IGg7XG4gICAgICBzWzQ3XSBePSBsO1xuICAgICAgaCA9IGM2IF4gKChjMCA8PCAxKSB8IChjMSA+Pj4gMzEpKTtcbiAgICAgIGwgPSBjNyBeICgoYzEgPDwgMSkgfCAoYzAgPj4+IDMxKSk7XG4gICAgICBzWzhdIF49IGg7XG4gICAgICBzWzldIF49IGw7XG4gICAgICBzWzE4XSBePSBoO1xuICAgICAgc1sxOV0gXj0gbDtcbiAgICAgIHNbMjhdIF49IGg7XG4gICAgICBzWzI5XSBePSBsO1xuICAgICAgc1szOF0gXj0gaDtcbiAgICAgIHNbMzldIF49IGw7XG4gICAgICBzWzQ4XSBePSBoO1xuICAgICAgc1s0OV0gXj0gbDtcblxuICAgICAgYjAgPSBzWzBdO1xuICAgICAgYjEgPSBzWzFdO1xuICAgICAgYjMyID0gKHNbMTFdIDw8IDQpIHwgKHNbMTBdID4+PiAyOCk7XG4gICAgICBiMzMgPSAoc1sxMF0gPDwgNCkgfCAoc1sxMV0gPj4+IDI4KTtcbiAgICAgIGIxNCA9IChzWzIwXSA8PCAzKSB8IChzWzIxXSA+Pj4gMjkpO1xuICAgICAgYjE1ID0gKHNbMjFdIDw8IDMpIHwgKHNbMjBdID4+PiAyOSk7XG4gICAgICBiNDYgPSAoc1szMV0gPDwgOSkgfCAoc1szMF0gPj4+IDIzKTtcbiAgICAgIGI0NyA9IChzWzMwXSA8PCA5KSB8IChzWzMxXSA+Pj4gMjMpO1xuICAgICAgYjI4ID0gKHNbNDBdIDw8IDE4KSB8IChzWzQxXSA+Pj4gMTQpO1xuICAgICAgYjI5ID0gKHNbNDFdIDw8IDE4KSB8IChzWzQwXSA+Pj4gMTQpO1xuICAgICAgYjIwID0gKHNbMl0gPDwgMSkgfCAoc1szXSA+Pj4gMzEpO1xuICAgICAgYjIxID0gKHNbM10gPDwgMSkgfCAoc1syXSA+Pj4gMzEpO1xuICAgICAgYjIgPSAoc1sxM10gPDwgMTIpIHwgKHNbMTJdID4+PiAyMCk7XG4gICAgICBiMyA9IChzWzEyXSA8PCAxMikgfCAoc1sxM10gPj4+IDIwKTtcbiAgICAgIGIzNCA9IChzWzIyXSA8PCAxMCkgfCAoc1syM10gPj4+IDIyKTtcbiAgICAgIGIzNSA9IChzWzIzXSA8PCAxMCkgfCAoc1syMl0gPj4+IDIyKTtcbiAgICAgIGIxNiA9IChzWzMzXSA8PCAxMykgfCAoc1szMl0gPj4+IDE5KTtcbiAgICAgIGIxNyA9IChzWzMyXSA8PCAxMykgfCAoc1szM10gPj4+IDE5KTtcbiAgICAgIGI0OCA9IChzWzQyXSA8PCAyKSB8IChzWzQzXSA+Pj4gMzApO1xuICAgICAgYjQ5ID0gKHNbNDNdIDw8IDIpIHwgKHNbNDJdID4+PiAzMCk7XG4gICAgICBiNDAgPSAoc1s1XSA8PCAzMCkgfCAoc1s0XSA+Pj4gMik7XG4gICAgICBiNDEgPSAoc1s0XSA8PCAzMCkgfCAoc1s1XSA+Pj4gMik7XG4gICAgICBiMjIgPSAoc1sxNF0gPDwgNikgfCAoc1sxNV0gPj4+IDI2KTtcbiAgICAgIGIyMyA9IChzWzE1XSA8PCA2KSB8IChzWzE0XSA+Pj4gMjYpO1xuICAgICAgYjQgPSAoc1syNV0gPDwgMTEpIHwgKHNbMjRdID4+PiAyMSk7XG4gICAgICBiNSA9IChzWzI0XSA8PCAxMSkgfCAoc1syNV0gPj4+IDIxKTtcbiAgICAgIGIzNiA9IChzWzM0XSA8PCAxNSkgfCAoc1szNV0gPj4+IDE3KTtcbiAgICAgIGIzNyA9IChzWzM1XSA8PCAxNSkgfCAoc1szNF0gPj4+IDE3KTtcbiAgICAgIGIxOCA9IChzWzQ1XSA8PCAyOSkgfCAoc1s0NF0gPj4+IDMpO1xuICAgICAgYjE5ID0gKHNbNDRdIDw8IDI5KSB8IChzWzQ1XSA+Pj4gMyk7XG4gICAgICBiMTAgPSAoc1s2XSA8PCAyOCkgfCAoc1s3XSA+Pj4gNCk7XG4gICAgICBiMTEgPSAoc1s3XSA8PCAyOCkgfCAoc1s2XSA+Pj4gNCk7XG4gICAgICBiNDIgPSAoc1sxN10gPDwgMjMpIHwgKHNbMTZdID4+PiA5KTtcbiAgICAgIGI0MyA9IChzWzE2XSA8PCAyMykgfCAoc1sxN10gPj4+IDkpO1xuICAgICAgYjI0ID0gKHNbMjZdIDw8IDI1KSB8IChzWzI3XSA+Pj4gNyk7XG4gICAgICBiMjUgPSAoc1syN10gPDwgMjUpIHwgKHNbMjZdID4+PiA3KTtcbiAgICAgIGI2ID0gKHNbMzZdIDw8IDIxKSB8IChzWzM3XSA+Pj4gMTEpO1xuICAgICAgYjcgPSAoc1szN10gPDwgMjEpIHwgKHNbMzZdID4+PiAxMSk7XG4gICAgICBiMzggPSAoc1s0N10gPDwgMjQpIHwgKHNbNDZdID4+PiA4KTtcbiAgICAgIGIzOSA9IChzWzQ2XSA8PCAyNCkgfCAoc1s0N10gPj4+IDgpO1xuICAgICAgYjMwID0gKHNbOF0gPDwgMjcpIHwgKHNbOV0gPj4+IDUpO1xuICAgICAgYjMxID0gKHNbOV0gPDwgMjcpIHwgKHNbOF0gPj4+IDUpO1xuICAgICAgYjEyID0gKHNbMThdIDw8IDIwKSB8IChzWzE5XSA+Pj4gMTIpO1xuICAgICAgYjEzID0gKHNbMTldIDw8IDIwKSB8IChzWzE4XSA+Pj4gMTIpO1xuICAgICAgYjQ0ID0gKHNbMjldIDw8IDcpIHwgKHNbMjhdID4+PiAyNSk7XG4gICAgICBiNDUgPSAoc1syOF0gPDwgNykgfCAoc1syOV0gPj4+IDI1KTtcbiAgICAgIGIyNiA9IChzWzM4XSA8PCA4KSB8IChzWzM5XSA+Pj4gMjQpO1xuICAgICAgYjI3ID0gKHNbMzldIDw8IDgpIHwgKHNbMzhdID4+PiAyNCk7XG4gICAgICBiOCA9IChzWzQ4XSA8PCAxNCkgfCAoc1s0OV0gPj4+IDE4KTtcbiAgICAgIGI5ID0gKHNbNDldIDw8IDE0KSB8IChzWzQ4XSA+Pj4gMTgpO1xuXG4gICAgICBzWzBdID0gYjAgXiAofmIyICYgYjQpO1xuICAgICAgc1sxXSA9IGIxIF4gKH5iMyAmIGI1KTtcbiAgICAgIHNbMTBdID0gYjEwIF4gKH5iMTIgJiBiMTQpO1xuICAgICAgc1sxMV0gPSBiMTEgXiAofmIxMyAmIGIxNSk7XG4gICAgICBzWzIwXSA9IGIyMCBeICh+YjIyICYgYjI0KTtcbiAgICAgIHNbMjFdID0gYjIxIF4gKH5iMjMgJiBiMjUpO1xuICAgICAgc1szMF0gPSBiMzAgXiAofmIzMiAmIGIzNCk7XG4gICAgICBzWzMxXSA9IGIzMSBeICh+YjMzICYgYjM1KTtcbiAgICAgIHNbNDBdID0gYjQwIF4gKH5iNDIgJiBiNDQpO1xuICAgICAgc1s0MV0gPSBiNDEgXiAofmI0MyAmIGI0NSk7XG4gICAgICBzWzJdID0gYjIgXiAofmI0ICYgYjYpO1xuICAgICAgc1szXSA9IGIzIF4gKH5iNSAmIGI3KTtcbiAgICAgIHNbMTJdID0gYjEyIF4gKH5iMTQgJiBiMTYpO1xuICAgICAgc1sxM10gPSBiMTMgXiAofmIxNSAmIGIxNyk7XG4gICAgICBzWzIyXSA9IGIyMiBeICh+YjI0ICYgYjI2KTtcbiAgICAgIHNbMjNdID0gYjIzIF4gKH5iMjUgJiBiMjcpO1xuICAgICAgc1szMl0gPSBiMzIgXiAofmIzNCAmIGIzNik7XG4gICAgICBzWzMzXSA9IGIzMyBeICh+YjM1ICYgYjM3KTtcbiAgICAgIHNbNDJdID0gYjQyIF4gKH5iNDQgJiBiNDYpO1xuICAgICAgc1s0M10gPSBiNDMgXiAofmI0NSAmIGI0Nyk7XG4gICAgICBzWzRdID0gYjQgXiAofmI2ICYgYjgpO1xuICAgICAgc1s1XSA9IGI1IF4gKH5iNyAmIGI5KTtcbiAgICAgIHNbMTRdID0gYjE0IF4gKH5iMTYgJiBiMTgpO1xuICAgICAgc1sxNV0gPSBiMTUgXiAofmIxNyAmIGIxOSk7XG4gICAgICBzWzI0XSA9IGIyNCBeICh+YjI2ICYgYjI4KTtcbiAgICAgIHNbMjVdID0gYjI1IF4gKH5iMjcgJiBiMjkpO1xuICAgICAgc1szNF0gPSBiMzQgXiAofmIzNiAmIGIzOCk7XG4gICAgICBzWzM1XSA9IGIzNSBeICh+YjM3ICYgYjM5KTtcbiAgICAgIHNbNDRdID0gYjQ0IF4gKH5iNDYgJiBiNDgpO1xuICAgICAgc1s0NV0gPSBiNDUgXiAofmI0NyAmIGI0OSk7XG4gICAgICBzWzZdID0gYjYgXiAofmI4ICYgYjApO1xuICAgICAgc1s3XSA9IGI3IF4gKH5iOSAmIGIxKTtcbiAgICAgIHNbMTZdID0gYjE2IF4gKH5iMTggJiBiMTApO1xuICAgICAgc1sxN10gPSBiMTcgXiAofmIxOSAmIGIxMSk7XG4gICAgICBzWzI2XSA9IGIyNiBeICh+YjI4ICYgYjIwKTtcbiAgICAgIHNbMjddID0gYjI3IF4gKH5iMjkgJiBiMjEpO1xuICAgICAgc1szNl0gPSBiMzYgXiAofmIzOCAmIGIzMCk7XG4gICAgICBzWzM3XSA9IGIzNyBeICh+YjM5ICYgYjMxKTtcbiAgICAgIHNbNDZdID0gYjQ2IF4gKH5iNDggJiBiNDApO1xuICAgICAgc1s0N10gPSBiNDcgXiAofmI0OSAmIGI0MSk7XG4gICAgICBzWzhdID0gYjggXiAofmIwICYgYjIpO1xuICAgICAgc1s5XSA9IGI5IF4gKH5iMSAmIGIzKTtcbiAgICAgIHNbMThdID0gYjE4IF4gKH5iMTAgJiBiMTIpO1xuICAgICAgc1sxOV0gPSBiMTkgXiAofmIxMSAmIGIxMyk7XG4gICAgICBzWzI4XSA9IGIyOCBeICh+YjIwICYgYjIyKTtcbiAgICAgIHNbMjldID0gYjI5IF4gKH5iMjEgJiBiMjMpO1xuICAgICAgc1szOF0gPSBiMzggXiAofmIzMCAmIGIzMik7XG4gICAgICBzWzM5XSA9IGIzOSBeICh+YjMxICYgYjMzKTtcbiAgICAgIHNbNDhdID0gYjQ4IF4gKH5iNDAgJiBiNDIpO1xuICAgICAgc1s0OV0gPSBiNDkgXiAofmI0MSAmIGI0Myk7XG5cbiAgICAgIHNbMF0gXj0gUkNbbl07XG4gICAgICBzWzFdIF49IFJDW24gKyAxXTtcbiAgICB9XG4gIH07XG5cbiAgaWYgKENPTU1PTl9KUykge1xuICAgIG1vZHVsZS5leHBvcnRzID0gbWV0aG9kcztcbiAgfSBlbHNlIHtcbiAgICBmb3IgKGkgPSAwOyBpIDwgbWV0aG9kTmFtZXMubGVuZ3RoOyArK2kpIHtcbiAgICAgIHJvb3RbbWV0aG9kTmFtZXNbaV1dID0gbWV0aG9kc1ttZXRob2ROYW1lc1tpXV07XG4gICAgfVxuICAgIGlmIChBTUQpIHtcbiAgICAgIGRlZmluZShmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBtZXRob2RzO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG59KSgpO1xuIiwiLypcbiAgICBDb3B5cmlnaHQgMjAyMiBpZGVuMyBhc3NvY2lhdGlvbi5cblxuICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHNuYXJranMuXG5cbiAgICBzbmFya2pzIGlzIGEgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yXG4gICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZVxuICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKVxuICAgIGFueSBsYXRlciB2ZXJzaW9uLlxuXG4gICAgc25hcmtqcyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWVxuICAgIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvclxuICAgIG1vcmUgZGV0YWlscy5cblxuICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nIHdpdGhcbiAgICBzbmFya2pzLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuKi9cblxuaW1wb3J0IHtTY2FsYXJ9IGZyb20gXCJmZmphdmFzY3JpcHRcIjtcbmltcG9ydCBqc1NoYTMgZnJvbSBcImpzLXNoYTNcIjtcbmNvbnN0IHsga2VjY2FrMjU2IH0gPSBqc1NoYTM7XG5cbmNvbnN0IFBPTFlOT01JQUwgPSAwO1xuY29uc3QgU0NBTEFSID0gMTtcblxuZXhwb3J0IGNsYXNzIEtlY2NhazI1NlRyYW5zY3JpcHQge1xuICAgIGNvbnN0cnVjdG9yKGN1cnZlKSB7XG4gICAgICAgIHRoaXMuRzEgPSBjdXJ2ZS5HMTtcbiAgICAgICAgdGhpcy5GciA9IGN1cnZlLkZyO1xuXG4gICAgICAgIHRoaXMucmVzZXQoKTtcbiAgICB9XG5cbiAgICByZXNldCgpIHtcbiAgICAgICAgdGhpcy5kYXRhID0gW107XG4gICAgfVxuXG4gICAgYWRkUG9sQ29tbWl0bWVudChwb2x5bm9taWFsQ29tbWl0bWVudCkge1xuICAgICAgICB0aGlzLmRhdGEucHVzaCh7dHlwZTogUE9MWU5PTUlBTCwgZGF0YTogcG9seW5vbWlhbENvbW1pdG1lbnR9KTtcbiAgICB9XG5cbiAgICBhZGRTY2FsYXIoc2NhbGFyKSB7XG4gICAgICAgIHRoaXMuZGF0YS5wdXNoKHt0eXBlOiBTQ0FMQVIsIGRhdGE6IHNjYWxhcn0pO1xuICAgIH1cblxuICAgIGdldENoYWxsZW5nZSgpIHtcbiAgICAgICAgaWYoMCA9PT0gdGhpcy5kYXRhLmxlbmd0aCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiS2VjY2FrMjU2VHJhbnNjcmlwdDogTm8gZGF0YSB0byBnZW5lcmF0ZSBhIHRyYW5zY3JpcHRcIik7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgblBvbHlub21pYWxzID0gMDtcbiAgICAgICAgbGV0IG5TY2FsYXJzID0gMDtcblxuICAgICAgICB0aGlzLmRhdGEuZm9yRWFjaChlbGVtZW50ID0+IFBPTFlOT01JQUwgPT09IGVsZW1lbnQudHlwZSA/IG5Qb2x5bm9taWFscysrIDogblNjYWxhcnMrKyk7XG5cbiAgICAgICAgbGV0IGJ1ZmZlciA9IG5ldyBVaW50OEFycmF5KG5TY2FsYXJzICogdGhpcy5Gci5uOCArIG5Qb2x5bm9taWFscyAqIHRoaXMuRzEuRi5uOCAqIDIpO1xuICAgICAgICBsZXQgb2Zmc2V0ID0gMDtcblxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuZGF0YS5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgaWYgKFBPTFlOT01JQUwgPT09IHRoaXMuZGF0YVtpXS50eXBlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5HMS50b1JwclVuY29tcHJlc3NlZChidWZmZXIsIG9mZnNldCwgdGhpcy5kYXRhW2ldLmRhdGEpO1xuICAgICAgICAgICAgICAgIG9mZnNldCArPSB0aGlzLkcxLkYubjggKiAyO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLkZyLnRvUnByQkUoYnVmZmVyLCBvZmZzZXQsIHRoaXMuZGF0YVtpXS5kYXRhKTtcbiAgICAgICAgICAgICAgICBvZmZzZXQgKz0gdGhpcy5Gci5uODtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHZhbHVlID0gU2NhbGFyLmZyb21ScHJCRShuZXcgVWludDhBcnJheShrZWNjYWsyNTYuYXJyYXlCdWZmZXIoYnVmZmVyKSkpO1xuICAgICAgICByZXR1cm4gdGhpcy5Gci5lKHZhbHVlKTtcbiAgICB9XG59IiwiLypcbiAgICBDb3B5cmlnaHQgMjAyMiBpZGVuMyBhc3NvY2lhdGlvbi5cblxuICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHNuYXJranMuXG5cbiAgICBzbmFya2pzIGlzIGEgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yXG4gICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZVxuICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKVxuICAgIGFueSBsYXRlciB2ZXJzaW9uLlxuXG4gICAgc25hcmtqcyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWVxuICAgIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvclxuICAgIG1vcmUgZGV0YWlscy5cblxuICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nIHdpdGhcbiAgICBzbmFya2pzLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuKi9cblxuZXhwb3J0IGNsYXNzIE11bFoge1xuICAgIHN0YXRpYyBnZXRaMShGcikge1xuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgRnIuemVybyxcbiAgICAgICAgICAgIEZyLmFkZChGci5lKC0xKSwgRnIud1syXSksXG4gICAgICAgICAgICBGci5lKC0yKSxcbiAgICAgICAgICAgIEZyLnN1YihGci5lKC0xKSwgRnIud1syXSksXG4gICAgICAgIF07XG4gICAgfVxuXG4gICAgc3RhdGljIGdldFoyKEZyKSB7XG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICBGci56ZXJvLFxuICAgICAgICAgICAgRnIuYWRkKEZyLnplcm8sIEZyLm11bChGci5lKC0yKSwgRnIud1syXSkpLFxuICAgICAgICAgICAgRnIuZSg0KSxcbiAgICAgICAgICAgIEZyLnN1YihGci56ZXJvLCBGci5tdWwoRnIuZSgtMiksIEZyLndbMl0pKSxcbiAgICAgICAgXTtcbiAgICB9XG5cbiAgICBzdGF0aWMgZ2V0WjMoRnIpIHtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIEZyLnplcm8sXG4gICAgICAgICAgICBGci5hZGQoRnIuZSgyKSwgRnIubXVsKEZyLmUoMiksIEZyLndbMl0pKSxcbiAgICAgICAgICAgIEZyLmUoLTgpLFxuICAgICAgICAgICAgRnIuc3ViKEZyLmUoMiksIEZyLm11bChGci5lKDIpLCBGci53WzJdKSksXG4gICAgICAgIF07XG5cbiAgICB9XG5cbiAgICBzdGF0aWMgbXVsMihhLCBiLCBhcCwgYnAsIHAsIEZyKSB7XG4gICAgICAgIGNvbnN0IFoxID0gdGhpcy5nZXRaMShGcik7XG4gICAgICAgIGxldCByLCByejtcblxuICAgICAgICBjb25zdCBhX2IgPSBGci5tdWwoYSwgYik7XG4gICAgICAgIGNvbnN0IGFfYnAgPSBGci5tdWwoYSwgYnApO1xuICAgICAgICBjb25zdCBhcF9iID0gRnIubXVsKGFwLCBiKTtcbiAgICAgICAgY29uc3QgYXBfYnAgPSBGci5tdWwoYXAsIGJwKTtcblxuICAgICAgICByID0gYV9iO1xuXG4gICAgICAgIGxldCBhMCA9IEZyLmFkZChhX2JwLCBhcF9iKTtcblxuICAgICAgICBsZXQgYTEgPSBhcF9icDtcblxuICAgICAgICByeiA9IGEwO1xuICAgICAgICBpZiAocCkge1xuICAgICAgICAgICAgcnogPSBGci5hZGQocnosIEZyLm11bChaMVtwXSwgYTEpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBbciwgcnpdO1xuICAgIH1cblxuICAgIHN0YXRpYyBtdWwzKGEsIGIsIGMsIGFwLCBicCwgY3AsIHAsIEZyKSB7XG4gICAgICAgIGNvbnN0IFoxID0gdGhpcy5nZXRaMShGcik7XG4gICAgICAgIGNvbnN0IFoyID0gdGhpcy5nZXRaMihGcik7XG4gICAgICAgIGxldCByLCByejtcblxuICAgICAgICBjb25zdCBhX2IgPSBGci5tdWwoYSwgYik7XG4gICAgICAgIGNvbnN0IGFfYnAgPSBGci5tdWwoYSwgYnApO1xuICAgICAgICBjb25zdCBhcF9iID0gRnIubXVsKGFwLCBiKTtcbiAgICAgICAgY29uc3QgYXBfYnAgPSBGci5tdWwoYXAsIGJwKTtcblxuICAgICAgICByID0gRnIubXVsKGFfYiwgYyk7XG5cbiAgICAgICAgbGV0IGEwID0gRnIubXVsKGFwX2IsIGMpO1xuICAgICAgICBhMCA9IEZyLmFkZChhMCwgRnIubXVsKGFfYnAsIGMpKTtcbiAgICAgICAgYTAgPSBGci5hZGQoYTAsIEZyLm11bChhX2IsIGNwKSk7XG5cbiAgICAgICAgbGV0IGExID0gRnIubXVsKGFwX2JwLCBjKTtcbiAgICAgICAgYTEgPSBGci5hZGQoYTEsIEZyLm11bChhX2JwLCBjcCkpO1xuICAgICAgICBhMSA9IEZyLmFkZChhMSwgRnIubXVsKGFwX2IsIGNwKSk7XG5cbiAgICAgICAgcnogPSBhMDtcbiAgICAgICAgaWYgKHApIHtcbiAgICAgICAgICAgIGNvbnN0IGEyID0gRnIubXVsKGFwX2JwLCBjcCk7XG4gICAgICAgICAgICByeiA9IEZyLmFkZChyeiwgRnIubXVsKFoxW3BdLCBhMSkpO1xuICAgICAgICAgICAgcnogPSBGci5hZGQocnosIEZyLm11bChaMltwXSwgYTIpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBbciwgcnpdO1xuICAgIH1cblxuICAgIHN0YXRpYyBtdWw0KGEsIGIsIGMsIGQsIGFwLCBicCwgY3AsIGRwLCBwLCBGcikge1xuICAgICAgICBjb25zdCBaMSA9IHRoaXMuZ2V0WjEoRnIpO1xuICAgICAgICBjb25zdCBaMiA9IHRoaXMuZ2V0WjIoRnIpO1xuICAgICAgICBjb25zdCBaMyA9IHRoaXMuZ2V0WjMoRnIpO1xuXG4gICAgICAgIGxldCByLCByejtcblxuICAgICAgICBjb25zdCBhX2IgPSBGci5tdWwoYSwgYik7XG4gICAgICAgIGNvbnN0IGFfYnAgPSBGci5tdWwoYSwgYnApO1xuICAgICAgICBjb25zdCBhcF9iID0gRnIubXVsKGFwLCBiKTtcbiAgICAgICAgY29uc3QgYXBfYnAgPSBGci5tdWwoYXAsIGJwKTtcblxuICAgICAgICBjb25zdCBjX2QgPSBGci5tdWwoYywgZCk7XG4gICAgICAgIGNvbnN0IGNfZHAgPSBGci5tdWwoYywgZHApO1xuICAgICAgICBjb25zdCBjcF9kID0gRnIubXVsKGNwLCBkKTtcbiAgICAgICAgY29uc3QgY3BfZHAgPSBGci5tdWwoY3AsIGRwKTtcblxuICAgICAgICByID0gRnIubXVsKGFfYiwgY19kKTtcblxuICAgICAgICBsZXQgYTAgPSBGci5tdWwoYXBfYiwgY19kKTtcbiAgICAgICAgYTAgPSBGci5hZGQoYTAsIEZyLm11bChhX2JwLCBjX2QpKTtcbiAgICAgICAgYTAgPSBGci5hZGQoYTAsIEZyLm11bChhX2IsIGNwX2QpKTtcbiAgICAgICAgYTAgPSBGci5hZGQoYTAsIEZyLm11bChhX2IsIGNfZHApKTtcblxuICAgICAgICBsZXQgYTEgPSBGci5tdWwoYXBfYnAsIGNfZCk7XG4gICAgICAgIGExID0gRnIuYWRkKGExLCBGci5tdWwoYXBfYiwgY3BfZCkpO1xuICAgICAgICBhMSA9IEZyLmFkZChhMSwgRnIubXVsKGFwX2IsIGNfZHApKTtcbiAgICAgICAgYTEgPSBGci5hZGQoYTEsIEZyLm11bChhX2JwLCBjcF9kKSk7XG4gICAgICAgIGExID0gRnIuYWRkKGExLCBGci5tdWwoYV9icCwgY19kcCkpO1xuICAgICAgICBhMSA9IEZyLmFkZChhMSwgRnIubXVsKGFfYiwgY3BfZHApKTtcblxuICAgICAgICBsZXQgYTIgPSBGci5tdWwoYV9icCwgY3BfZHApO1xuICAgICAgICBhMiA9IEZyLmFkZChhMiwgRnIubXVsKGFwX2IsIGNwX2RwKSk7XG4gICAgICAgIGEyID0gRnIuYWRkKGEyLCBGci5tdWwoYXBfYnAsIGNfZHApKTtcbiAgICAgICAgYTIgPSBGci5hZGQoYTIsIEZyLm11bChhcF9icCwgY3BfZCkpO1xuXG4gICAgICAgIGxldCBhMyA9IEZyLm11bChhcF9icCwgY3BfZHApO1xuXG4gICAgICAgIHJ6ID0gYTA7XG4gICAgICAgIGlmIChwKSB7XG4gICAgICAgICAgICByeiA9IEZyLmFkZChyeiwgRnIubXVsKFoxW3BdLCBhMSkpO1xuICAgICAgICAgICAgcnogPSBGci5hZGQocnosIEZyLm11bChaMltwXSwgYTIpKTtcbiAgICAgICAgICAgIHJ6ID0gRnIuYWRkKHJ6LCBGci5tdWwoWjNbcF0sIGEzKSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gW3IsIHJ6XTtcbiAgICB9XG59IiwiZXhwb3J0IGNvbnN0IFpLRVlfUExfTlNFQ1RJT05TID0gMTM7XG5cbmV4cG9ydCBjb25zdCBaS0VZX1BMX0hFQURFUl9TRUNUSU9OID0gMjtcbmV4cG9ydCBjb25zdCBaS0VZX1BMX0FERElUSU9OU19TRUNUSU9OID0gMztcbmV4cG9ydCBjb25zdCBaS0VZX1BMX0FfTUFQX1NFQ1RJT04gPSA0O1xuZXhwb3J0IGNvbnN0IFpLRVlfUExfQl9NQVBfU0VDVElPTiA9IDU7XG5leHBvcnQgY29uc3QgWktFWV9QTF9DX01BUF9TRUNUSU9OID0gNjtcbmV4cG9ydCBjb25zdCBaS0VZX1BMX1FNX1NFQ1RJT04gPSA3O1xuZXhwb3J0IGNvbnN0IFpLRVlfUExfUUxfU0VDVElPTiA9IDg7XG5leHBvcnQgY29uc3QgWktFWV9QTF9RUl9TRUNUSU9OID0gOTtcbmV4cG9ydCBjb25zdCBaS0VZX1BMX1FPX1NFQ1RJT04gPSAxMDtcbmV4cG9ydCBjb25zdCBaS0VZX1BMX1FDX1NFQ1RJT04gPSAxMTtcbmV4cG9ydCBjb25zdCBaS0VZX1BMX1NJR01BX1NFQ1RJT04gPSAxMjtcbmV4cG9ydCBjb25zdCBaS0VZX1BMX0xBR1JBTkdFX1NFQ1RJT04gPSAxMztcbmV4cG9ydCBjb25zdCBaS0VZX1BMX1BUQVVfU0VDVElPTiA9IDE0O1xuXG4iLCIvKlxuICAgIENvcHlyaWdodCAyMDIyIGlkZW4zIGFzc29jaWF0aW9uLlxuXG4gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2Ygc25hcmtqcy5cblxuICAgIHNuYXJranMgaXMgYSBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3JcbiAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlXG4gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pXG4gICAgYW55IGxhdGVyIHZlcnNpb24uXG5cbiAgICBzbmFya2pzIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZXG4gICAgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yXG4gICAgbW9yZSBkZXRhaWxzLlxuXG4gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcgd2l0aFxuICAgIHNuYXJranMuIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXG4qL1xuXG5pbXBvcnQge0JpZ0J1ZmZlcn0gZnJvbSBcImZmamF2YXNjcmlwdFwiO1xuXG5leHBvcnQgY2xhc3MgUG9seW5vbWlhbCB7XG4gICAgY29uc3RydWN0b3IoY29lZmZpY2llbnRzLCBjdXJ2ZSwgbG9nZ2VyKSB7XG4gICAgICAgIHRoaXMuY29lZiA9IGNvZWZmaWNpZW50cztcbiAgICAgICAgdGhpcy5jdXJ2ZSA9IGN1cnZlO1xuICAgICAgICB0aGlzLkZyID0gY3VydmUuRnI7XG4gICAgICAgIHRoaXMuRzEgPSBjdXJ2ZS5HMTtcbiAgICAgICAgdGhpcy5sb2dnZXIgPSBsb2dnZXI7XG4gICAgfVxuXG4gICAgc3RhdGljIGFzeW5jIGZyb21FdmFsdWF0aW9ucyhidWZmZXIsIGN1cnZlLCBsb2dnZXIpIHtcbiAgICAgICAgbGV0IGNvZWZmaWNpZW50cyA9IGF3YWl0IGN1cnZlLkZyLmlmZnQoYnVmZmVyKTtcblxuICAgICAgICByZXR1cm4gbmV3IFBvbHlub21pYWwoY29lZmZpY2llbnRzLCBjdXJ2ZSwgbG9nZ2VyKTtcbiAgICB9XG5cbiAgICBzdGF0aWMgZnJvbUNvZWZmaWNpZW50c0FycmF5KGFycmF5LCBjdXJ2ZSwgbG9nZ2VyKSB7XG4gICAgICAgIGNvbnN0IEZyID0gY3VydmUuRnI7XG4gICAgICAgIGxldCBidWZmID0gYXJyYXkubGVuZ3RoID4gMiA8PCAxNCA/XG4gICAgICAgICAgICBuZXcgQmlnQnVmZmVyKGFycmF5Lmxlbmd0aCAqIEZyLm44KSA6IG5ldyBVaW50OEFycmF5KGFycmF5Lmxlbmd0aCAqIEZyLm44KTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhcnJheS5sZW5ndGg7IGkrKykgYnVmZi5zZXQoYXJyYXlbaV0sIGkgKiBGci5uOCk7XG5cbiAgICAgICAgcmV0dXJuIG5ldyBQb2x5bm9taWFsKGJ1ZmYsIGN1cnZlLCBsb2dnZXIpO1xuICAgIH1cblxuICAgIHN0YXRpYyBmcm9tUG9seW5vbWlhbChwb2x5bm9taWFsLCBjdXJ2ZSwgbG9nZ2VyKSB7XG4gICAgICAgIGxldCBsZW5ndGggPSBwb2x5bm9taWFsLmxlbmd0aCgpO1xuICAgICAgICBsZXQgRnIgPSBjdXJ2ZS5GcjtcblxuICAgICAgICBsZXQgYnVmZiA9IGxlbmd0aCA+IDIgPDwgMTQgP1xuICAgICAgICAgICAgbmV3IEJpZ0J1ZmZlcihsZW5ndGggKiBGci5uOCkgOiBuZXcgVWludDhBcnJheShsZW5ndGggKiBGci5uOCk7XG4gICAgICAgIGJ1ZmYuc2V0KHBvbHlub21pYWwuY29lZi5zbGljZSgpLCAwKTtcblxuICAgICAgICByZXR1cm4gbmV3IFBvbHlub21pYWwoYnVmZiwgY3VydmUsIGxvZ2dlcik7XG4gICAgfVxuXG4gICAgaXNFcXVhbChwb2x5bm9taWFsKSB7XG4gICAgICAgIGNvbnN0IGRlZ3JlZSA9IHRoaXMuZGVncmVlKCk7XG4gICAgICAgIGlmIChkZWdyZWUgIT09IHBvbHlub21pYWwuZGVncmVlKCkpIHJldHVybiBmYWxzZTtcblxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGRlZ3JlZSArIDE7IGkrKykge1xuICAgICAgICAgICAgaWYgKCF0aGlzLkZyLmVxKHRoaXMuZ2V0Q29lZihpKSwgcG9seW5vbWlhbC5nZXRDb2VmKGkpKSkgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgYmxpbmRDb2VmZmljaWVudHMoYmxpbmRpbmdGYWN0b3JzKSB7XG4gICAgICAgIGJsaW5kaW5nRmFjdG9ycyA9IGJsaW5kaW5nRmFjdG9ycyB8fCBbXTtcblxuICAgICAgICBjb25zdCBibGluZGVkQ29lZmZpY2llbnRzID0gKHRoaXMubGVuZ3RoKCkgKyBibGluZGluZ0ZhY3RvcnMubGVuZ3RoKSA+IDIgPDwgMTQgP1xuICAgICAgICAgICAgbmV3IEJpZ0J1ZmZlcigodGhpcy5sZW5ndGgoKSArIGJsaW5kaW5nRmFjdG9ycy5sZW5ndGgpICogdGhpcy5Gci5uOCkgOlxuICAgICAgICAgICAgbmV3IFVpbnQ4QXJyYXkoKHRoaXMubGVuZ3RoKCkgKyBibGluZGluZ0ZhY3RvcnMubGVuZ3RoKSAqIHRoaXMuRnIubjgpO1xuXG4gICAgICAgIGJsaW5kZWRDb2VmZmljaWVudHMuc2V0KHRoaXMuY29lZiwgMCk7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYmxpbmRpbmdGYWN0b3JzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBibGluZGVkQ29lZmZpY2llbnRzLnNldChcbiAgICAgICAgICAgICAgICB0aGlzLkZyLmFkZChcbiAgICAgICAgICAgICAgICAgICAgYmxpbmRlZENvZWZmaWNpZW50cy5zbGljZSgodGhpcy5sZW5ndGgoKSArIGkpICogdGhpcy5Gci5uOCwgKHRoaXMubGVuZ3RoKCkgKyBpICsgMSkgKiB0aGlzLkZyLm44KSxcbiAgICAgICAgICAgICAgICAgICAgYmxpbmRpbmdGYWN0b3JzW2ldXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAodGhpcy5sZW5ndGgoKSArIGkpICogdGhpcy5Gci5uOFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGJsaW5kZWRDb2VmZmljaWVudHMuc2V0KFxuICAgICAgICAgICAgICAgIHRoaXMuRnIuc3ViKFxuICAgICAgICAgICAgICAgICAgICBibGluZGVkQ29lZmZpY2llbnRzLnNsaWNlKGkgKiB0aGlzLkZyLm44LCAoaSArIDEpICogdGhpcy5Gci5uOCksXG4gICAgICAgICAgICAgICAgICAgIGJsaW5kaW5nRmFjdG9yc1tpXVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgaSAqIHRoaXMuRnIubjhcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jb2VmID0gYmxpbmRlZENvZWZmaWNpZW50cztcbiAgICB9XG5cbiAgICBnZXRDb2VmKGluZGV4KSB7XG4gICAgICAgIGNvbnN0IGlfbjggPSBpbmRleCAqIHRoaXMuRnIubjg7XG5cbiAgICAgICAgaWYgKGlfbjggKyB0aGlzLkZyLm44ID4gdGhpcy5jb2VmLmJ5dGVMZW5ndGgpIHJldHVybiB0aGlzLkZyLnplcm87XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuY29lZi5zbGljZShpX244LCBpX244ICsgdGhpcy5Gci5uOCk7XG4gICAgfVxuXG4gICAgc2V0Q29lZihpbmRleCwgdmFsdWUpIHtcbiAgICAgICAgaWYgKGluZGV4ID4gKHRoaXMubGVuZ3RoKCkgLSAxKSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiQ29lZiBpbmRleCBpcyBub3QgYXZhaWxhYmxlXCIpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5jb2VmLnNldCh2YWx1ZSwgaW5kZXggKiB0aGlzLkZyLm44KTtcbiAgICB9XG5cbiAgICBzdGF0aWMgYXN5bmMgdG80VChidWZmZXIsIGRvbWFpblNpemUsIGJsaW5kaW5nRmFjdG9ycywgRnIpIHtcbiAgICAgICAgYmxpbmRpbmdGYWN0b3JzID0gYmxpbmRpbmdGYWN0b3JzIHx8IFtdO1xuICAgICAgICBsZXQgYSA9IGF3YWl0IEZyLmlmZnQoYnVmZmVyKTtcblxuICAgICAgICBjb25zdCBhNCA9IChkb21haW5TaXplICogNCkgPiAyIDw8IDE0ID9cbiAgICAgICAgICAgIG5ldyBCaWdCdWZmZXIoZG9tYWluU2l6ZSAqIDQgKiBGci5uOCkgOiBuZXcgVWludDhBcnJheShkb21haW5TaXplICogNCAqIEZyLm44KTtcbiAgICAgICAgYTQuc2V0KGEsIDApO1xuXG4gICAgICAgIGNvbnN0IEE0ID0gYXdhaXQgRnIuZmZ0KGE0KTtcblxuICAgICAgICBpZiAoYmxpbmRpbmdGYWN0b3JzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIFthLCBBNF07XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBhMSA9IGRvbWFpblNpemUgKyBibGluZGluZ0ZhY3RvcnMubGVuZ3RoID4gMiA8PCAxNCA/XG4gICAgICAgICAgICBuZXcgQmlnQnVmZmVyKChkb21haW5TaXplICsgYmxpbmRpbmdGYWN0b3JzLmxlbmd0aCkgKiBGci5uOCkgOlxuICAgICAgICAgICAgbmV3IFVpbnQ4QXJyYXkoKGRvbWFpblNpemUgKyBibGluZGluZ0ZhY3RvcnMubGVuZ3RoKSAqIEZyLm44KTtcblxuICAgICAgICBhMS5zZXQoYSwgMCk7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYmxpbmRpbmdGYWN0b3JzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBhMS5zZXQoXG4gICAgICAgICAgICAgICAgRnIuYWRkKFxuICAgICAgICAgICAgICAgICAgICBhMS5zbGljZSgoZG9tYWluU2l6ZSArIGkpICogRnIubjgsIChkb21haW5TaXplICsgaSArIDEpICogRnIubjgpLFxuICAgICAgICAgICAgICAgICAgICBibGluZGluZ0ZhY3RvcnNbaV1cbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIChkb21haW5TaXplICsgaSkgKiBGci5uOFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGExLnNldChcbiAgICAgICAgICAgICAgICBGci5zdWIoXG4gICAgICAgICAgICAgICAgICAgIGExLnNsaWNlKGkgKiBGci5uOCwgKGkgKyAxKSAqIEZyLm44KSxcbiAgICAgICAgICAgICAgICAgICAgYmxpbmRpbmdGYWN0b3JzW2ldXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBpICogRnIubjhcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gW2ExLCBBNF07XG4gICAgfVxuXG4gICAgbGVuZ3RoKCkge1xuICAgICAgICBsZXQgbGVuZ3RoID0gdGhpcy5jb2VmLmJ5dGVMZW5ndGggLyB0aGlzLkZyLm44O1xuICAgICAgICBpZiAobGVuZ3RoICE9PSBNYXRoLmZsb29yKHRoaXMuY29lZi5ieXRlTGVuZ3RoIC8gdGhpcy5Gci5uOCkpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIlBvbHlub21pYWwgY29lZmZpY2llbnRzIGJ1ZmZlciBoYXMgaW5jb3JyZWN0IHNpemVcIik7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKDAgPT09IGxlbmd0aCkge1xuICAgICAgICAgICAgaWYgKHRoaXMubG9nZ2VyKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5sb2dnZXIud2FybihcIlBvbHlub21pYWwgaGFzIGxlbmd0aCB6ZXJvXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBsZW5ndGg7XG4gICAgfVxuXG4gICAgZGVncmVlKCkge1xuICAgICAgICBmb3IgKGxldCBpID0gdGhpcy5sZW5ndGgoKSAtIDE7IGkgPiAwOyBpLS0pIHtcbiAgICAgICAgICAgIGNvbnN0IGlfbjggPSBpICogdGhpcy5Gci5uODtcbiAgICAgICAgICAgIGlmICghdGhpcy5Gci5lcSh0aGlzLkZyLnplcm8sIHRoaXMuY29lZi5zbGljZShpX244LCBpX244ICsgdGhpcy5Gci5uOCkpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gMDtcbiAgICB9XG5cbiAgICBldmFsdWF0ZShwb2ludCkge1xuICAgICAgICBsZXQgcmVzID0gdGhpcy5Gci56ZXJvO1xuXG4gICAgICAgIGZvciAobGV0IGkgPSB0aGlzLmRlZ3JlZSgpICsgMTsgaSA+IDA7IGktLSkge1xuICAgICAgICAgICAgbGV0IGlfbjggPSBpICogdGhpcy5Gci5uODtcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRDb2VmZmljaWVudCA9IHRoaXMuY29lZi5zbGljZShpX244IC0gdGhpcy5Gci5uOCwgaV9uOCk7XG4gICAgICAgICAgICByZXMgPSB0aGlzLkZyLmFkZChjdXJyZW50Q29lZmZpY2llbnQsIHRoaXMuRnIubXVsKHJlcywgcG9pbnQpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiByZXM7XG4gICAgfVxuXG4gICAgZmFzdEV2YWx1YXRlKHBvaW50KSB7XG4gICAgICAgIGNvbnN0IEZyID0gdGhpcy5GcjtcbiAgICAgICAgbGV0IG5UaHJlYWRzID0gMztcblxuICAgICAgICBsZXQgbkNvZWZzID0gdGhpcy5kZWdyZWUoKSArIDE7XG4gICAgICAgIGxldCBjb2Vmc1RocmVhZCA9IHBhcnNlSW50KG5Db2VmcyAvIG5UaHJlYWRzKTtcbiAgICAgICAgbGV0IHJlc2lkdWFsQ29lZnMgPSBuQ29lZnMgLSBjb2Vmc1RocmVhZCAqIG5UaHJlYWRzO1xuXG4gICAgICAgIGxldCByZXMgPSBbXTtcbiAgICAgICAgbGV0IHhOID0gW107XG5cbiAgICAgICAgeE5bMF0gPSBGci5vbmU7XG5cbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBuVGhyZWFkczsgaSsrKSB7XG4gICAgICAgICAgICByZXNbaV0gPSBGci56ZXJvO1xuXG4gICAgICAgICAgICBsZXQgbkNvZWZzID0gaSA9PT0gKG5UaHJlYWRzIC0gMSkgPyBjb2Vmc1RocmVhZCArIHJlc2lkdWFsQ29lZnMgOiBjb2Vmc1RocmVhZDtcbiAgICAgICAgICAgIGZvciAobGV0IGogPSBuQ29lZnM7IGogPiAwOyBqLS0pIHtcbiAgICAgICAgICAgICAgICByZXNbaV0gPSBGci5hZGQodGhpcy5nZXRDb2VmKChpICogY29lZnNUaHJlYWQpICsgaiAtIDEpLCBGci5tdWwocmVzW2ldLCBwb2ludCkpO1xuXG4gICAgICAgICAgICAgICAgaWYgKGkgPT09IDApIHhOWzBdID0gRnIubXVsKHhOWzBdLCBwb2ludCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBmb3IgKGxldCBpID0gMTsgaSA8IG5UaHJlYWRzOyBpKyspIHtcbiAgICAgICAgICAgIHJlc1swXSA9IEZyLmFkZChyZXNbMF0sIEZyLm11bCh4TltpIC0gMV0sIHJlc1tpXSkpO1xuICAgICAgICAgICAgeE5baV0gPSBGci5tdWwoeE5baSAtIDFdLCB4TlswXSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcmVzWzBdO1xuICAgIH1cblxuICAgIGFkZChwb2x5bm9taWFsLCBibGluZGluZ1ZhbHVlKSB7XG4gICAgICAgIGxldCBvdGhlciA9IGZhbHNlO1xuXG4gICAgICAgIGlmIChwb2x5bm9taWFsLmxlbmd0aCgpID4gdGhpcy5sZW5ndGgoKSkge1xuICAgICAgICAgICAgb3RoZXIgPSB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgdGhpc0xlbmd0aCA9IHRoaXMubGVuZ3RoKCk7XG4gICAgICAgIGNvbnN0IHBvbHlMZW5ndGggPSBwb2x5bm9taWFsLmxlbmd0aCgpO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IE1hdGgubWF4KHRoaXNMZW5ndGgsIHBvbHlMZW5ndGgpOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IGlfbjggPSBpICogdGhpcy5Gci5uODtcblxuICAgICAgICAgICAgY29uc3QgYSA9IGkgPCB0aGlzTGVuZ3RoID8gdGhpcy5jb2VmLnNsaWNlKGlfbjgsIGlfbjggKyB0aGlzLkZyLm44KSA6IHRoaXMuRnIuemVybztcbiAgICAgICAgICAgIGxldCBiID0gaSA8IHBvbHlMZW5ndGggPyBwb2x5bm9taWFsLmNvZWYuc2xpY2UoaV9uOCwgaV9uOCArIHRoaXMuRnIubjgpIDogdGhpcy5Gci56ZXJvO1xuXG4gICAgICAgICAgICBpZiAoYmxpbmRpbmdWYWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgYiA9IHRoaXMuRnIubXVsKGIsIGJsaW5kaW5nVmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG90aGVyKSB7XG4gICAgICAgICAgICAgICAgcG9seW5vbWlhbC5jb2VmLnNldCh0aGlzLkZyLmFkZChhLCBiKSwgaV9uOCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuY29lZi5zZXQodGhpcy5Gci5hZGQoYSwgYiksIGlfbjgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChvdGhlcikge1xuICAgICAgICAgICAgZGVsZXRlIHRoaXMuY29lZjtcbiAgICAgICAgICAgIHRoaXMuY29lZiA9IHBvbHlub21pYWwuY29lZjtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHN1Yihwb2x5bm9taWFsLCBibGluZGluZ1ZhbHVlKSB7XG4gICAgICAgIGxldCBvdGhlciA9IGZhbHNlO1xuXG4gICAgICAgIGlmIChwb2x5bm9taWFsLmxlbmd0aCgpID4gdGhpcy5sZW5ndGgoKSkge1xuICAgICAgICAgICAgb3RoZXIgPSB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgdGhpc0xlbmd0aCA9IHRoaXMubGVuZ3RoKCk7XG4gICAgICAgIGNvbnN0IHBvbHlMZW5ndGggPSBwb2x5bm9taWFsLmxlbmd0aCgpO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IE1hdGgubWF4KHRoaXNMZW5ndGgsIHBvbHlMZW5ndGgpOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IGlfbjggPSBpICogdGhpcy5Gci5uODtcblxuICAgICAgICAgICAgY29uc3QgYSA9IGkgPCB0aGlzTGVuZ3RoID8gdGhpcy5jb2VmLnNsaWNlKGlfbjgsIGlfbjggKyB0aGlzLkZyLm44KSA6IHRoaXMuRnIuemVybztcbiAgICAgICAgICAgIGxldCBiID0gaSA8IHBvbHlMZW5ndGggPyBwb2x5bm9taWFsLmNvZWYuc2xpY2UoaV9uOCwgaV9uOCArIHRoaXMuRnIubjgpIDogdGhpcy5Gci56ZXJvO1xuXG4gICAgICAgICAgICBpZiAoYmxpbmRpbmdWYWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgYiA9IHRoaXMuRnIubXVsKGIsIGJsaW5kaW5nVmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG90aGVyKSB7XG4gICAgICAgICAgICAgICAgcG9seW5vbWlhbC5jb2VmLnNldCh0aGlzLkZyLnN1YihhLCBiKSwgaV9uOCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuY29lZi5zZXQodGhpcy5Gci5zdWIoYSwgYiksIGlfbjgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChvdGhlcikge1xuICAgICAgICAgICAgZGVsZXRlIHRoaXMuY29lZjtcbiAgICAgICAgICAgIHRoaXMuY29lZiA9IHBvbHlub21pYWwuY29lZjtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG11bFNjYWxhcih2YWx1ZSkge1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMubGVuZ3RoKCk7IGkrKykge1xuICAgICAgICAgICAgY29uc3QgaV9uOCA9IGkgKiB0aGlzLkZyLm44O1xuXG4gICAgICAgICAgICB0aGlzLmNvZWYuc2V0KHRoaXMuRnIubXVsKHRoaXMuY29lZi5zbGljZShpX244LCBpX244ICsgdGhpcy5Gci5uOCksIHZhbHVlKSwgaV9uOCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBhZGRTY2FsYXIodmFsdWUpIHtcbiAgICAgICAgY29uc3QgY3VycmVudFZhbHVlID0gMCA9PT0gdGhpcy5sZW5ndGgoKSA/IHRoaXMuRnIuemVybyA6IHRoaXMuY29lZi5zbGljZSgwLCB0aGlzLkZyLm44KTtcbiAgICAgICAgdGhpcy5jb2VmLnNldCh0aGlzLkZyLmFkZChjdXJyZW50VmFsdWUsIHZhbHVlKSwgMCk7XG4gICAgfVxuXG4gICAgc3ViU2NhbGFyKHZhbHVlKSB7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRWYWx1ZSA9IDAgPT09IHRoaXMubGVuZ3RoKCkgPyB0aGlzLkZyLnplcm8gOiB0aGlzLmNvZWYuc2xpY2UoMCwgdGhpcy5Gci5uOCk7XG4gICAgICAgIHRoaXMuY29lZi5zZXQodGhpcy5Gci5zdWIoY3VycmVudFZhbHVlLCB2YWx1ZSksIDApO1xuICAgIH1cblxuICAgIC8vIE11bHRpcGx5IGN1cnJlbnQgcG9seW5vbWlhbCBieSB0aGUgcG9seW5vbWlhbCAoWCAtIHZhbHVlKVxuICAgIGJ5WFN1YlZhbHVlKHZhbHVlKSB7XG4gICAgICAgIGNvbnN0IEZyID0gdGhpcy5GcjtcbiAgICAgICAgY29uc3QgcmVzaXplID0gIUZyLmVxKEZyLnplcm8sIHRoaXMuZ2V0Q29lZih0aGlzLmxlbmd0aCgpIC0gMSkpO1xuXG4gICAgICAgIGNvbnN0IGxlbmd0aCA9IHJlc2l6ZSA/IHRoaXMubGVuZ3RoKCkgKyAxIDogdGhpcy5sZW5ndGgoKTtcbiAgICAgICAgY29uc3QgYnVmZiA9IGxlbmd0aCA+IDIgPDwgMTQgPyBuZXcgQmlnQnVmZmVyKGxlbmd0aCAqIEZyLm44KSA6IG5ldyBVaW50OEFycmF5KGxlbmd0aCAqIEZyLm44KTtcbiAgICAgICAgbGV0IHBvbCA9IG5ldyBQb2x5bm9taWFsKGJ1ZmYsIHRoaXMuY3VydmUsIHRoaXMubG9nZ2VyKTtcblxuICAgICAgICAvLyBTdGVwIDA6IFNldCBjdXJyZW50IGNvZWZmaWNpZW50cyB0byB0aGUgbmV3IGJ1ZmZlciBzaGlmdGVkIG9uZSBwb3NpdGlvblxuICAgICAgICBwb2wuY29lZi5zZXQodGhpcy5jb2VmLnNsaWNlKDAsIChsZW5ndGggLSAxKSAqIEZyLm44KSwgMzIpO1xuXG4gICAgICAgIC8vIFN0ZXAgMTogbXVsdGlwbHkgZWFjaCBjb2VmZmljaWVudCBieSAoLXZhbHVlKVxuICAgICAgICB0aGlzLm11bFNjYWxhcihGci5uZWcodmFsdWUpKTtcblxuICAgICAgICAvLyBTdGVwIDI6IEFkZCBjdXJyZW50IHBvbHlub21pYWwgdG8gZGVzdGluYXRpb24gcG9seW5vbWlhbFxuICAgICAgICBwb2wuYWRkKHRoaXMpO1xuXG4gICAgICAgIC8vIFN3YXAgYnVmZmVyc1xuICAgICAgICB0aGlzLmNvZWYgPSBwb2wuY29lZjtcbiAgICB9XG5cbiAgICAvLyBNdWx0aXBseSBjdXJyZW50IHBvbHlub21pYWwgYnkgdGhlIHBvbHlub21pYWwgKFhebiArIHZhbHVlKVxuICAgIGJ5WE5TdWJWYWx1ZShuLCB2YWx1ZSkge1xuICAgICAgICBjb25zdCBGciA9IHRoaXMuRnI7XG4gICAgICAgIGNvbnN0IHJlc2l6ZSA9ICEodGhpcy5sZW5ndGgoKSAtIG4gLSAxID49IHRoaXMuZGVncmVlKCkpO1xuXG4gICAgICAgIGNvbnN0IGxlbmd0aCA9IHJlc2l6ZSA/IHRoaXMubGVuZ3RoKCkgKyBuIDogdGhpcy5sZW5ndGgoKTtcbiAgICAgICAgY29uc3QgYnVmZiA9IGxlbmd0aCA+IDIgPDwgMTQgPyBuZXcgQmlnQnVmZmVyKGxlbmd0aCAqIEZyLm44KSA6IG5ldyBVaW50OEFycmF5KGxlbmd0aCAqIEZyLm44KTtcbiAgICAgICAgbGV0IHBvbCA9IG5ldyBQb2x5bm9taWFsKGJ1ZmYsIHRoaXMuY3VydmUsIHRoaXMubG9nZ2VyKTtcblxuICAgICAgICAvLyBTdGVwIDA6IFNldCBjdXJyZW50IGNvZWZmaWNpZW50cyB0byB0aGUgbmV3IGJ1ZmZlciBzaGlmdGVkIG9uZSBwb3NpdGlvblxuICAgICAgICBwb2wuY29lZi5zZXQodGhpcy5jb2VmLnNsaWNlKDAsICh0aGlzLmRlZ3JlZSgpICsgMSkgKiAzMiwgKSwgbiAqIDMyKTtcblxuICAgICAgICAvLyBTdGVwIDE6IG11bHRpcGx5IGVhY2ggY29lZmZpY2llbnQgYnkgKC0gdmFsdWUpXG4gICAgICAgIHRoaXMubXVsU2NhbGFyKHZhbHVlKTtcblxuICAgICAgICAvLyBTdGVwIDI6IEFkZCBjdXJyZW50IHBvbHlub21pYWwgdG8gZGVzdGluYXRpb24gcG9seW5vbWlhbFxuICAgICAgICBwb2wuYWRkKHRoaXMpO1xuXG4gICAgICAgIC8vIFN3YXAgYnVmZmVyc1xuICAgICAgICB0aGlzLmNvZWYgPSBwb2wuY29lZjtcbiAgICB9XG5cbiAgICAvLyBFdWNsaWRlYW4gZGl2aXNpb25cbiAgICBkaXZCeShwb2x5bm9taWFsKSB7XG4gICAgICAgIGNvbnN0IEZyID0gdGhpcy5GcjtcbiAgICAgICAgY29uc3QgZGVncmVlQSA9IHRoaXMuZGVncmVlKCk7XG4gICAgICAgIGNvbnN0IGRlZ3JlZUIgPSBwb2x5bm9taWFsLmRlZ3JlZSgpO1xuXG4gICAgICAgIGxldCBwb2xSID0gbmV3IFBvbHlub21pYWwodGhpcy5jb2VmLCB0aGlzLmN1cnZlLCB0aGlzLmxvZ2dlcik7XG5cbiAgICAgICAgdGhpcy5jb2VmID0gdGhpcy5sZW5ndGgoKSA+IDIgPDwgMTQgP1xuICAgICAgICAgICAgbmV3IEJpZ0J1ZmZlcih0aGlzLmxlbmd0aCgpICogRnIubjgpIDogbmV3IFVpbnQ4QXJyYXkodGhpcy5sZW5ndGgoKSAqIEZyLm44KTtcblxuICAgICAgICBmb3IgKGxldCBpID0gZGVncmVlQSAtIGRlZ3JlZUI7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgICAgICB0aGlzLnNldENvZWYoaSwgRnIuZGl2KHBvbFIuZ2V0Q29lZihpICsgZGVncmVlQiksIHBvbHlub21pYWwuZ2V0Q29lZihkZWdyZWVCKSkpO1xuICAgICAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPD0gZGVncmVlQjsgaisrKSB7XG4gICAgICAgICAgICAgICAgcG9sUi5zZXRDb2VmKGkgKyBqLCBGci5zdWIocG9sUi5nZXRDb2VmKGkgKyBqKSwgRnIubXVsKHRoaXMuZ2V0Q29lZihpKSwgcG9seW5vbWlhbC5nZXRDb2VmKGopKSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHBvbFI7XG4gICAgfVxuXG4gICAgLy8gRGl2aXNpb24gYnkgYSBQb2x5bm9taWFsIG9mIHRoZSBmb3JtICh4Xm0gLSBiZXRhKVxuICAgIGRpdkJ5TW9uaWMobSwgYmV0YSkge1xuICAgICAgICBjb25zdCBGciA9IHRoaXMuRnI7XG5cbiAgICAgICAgbGV0IGQgPSB0aGlzLmRlZ3JlZSgpO1xuXG4gICAgICAgIGxldCBidWZmZXIgPSB0aGlzLmxlbmd0aCgpID4gMiA8PCAxNCA/XG4gICAgICAgICAgICBuZXcgQmlnQnVmZmVyKHRoaXMubGVuZ3RoKCkgKiBGci5uOCkgOiBuZXcgVWludDhBcnJheSh0aGlzLmxlbmd0aCgpICogRnIubjgpO1xuICAgICAgICBsZXQgcXVvdGllbnQgPSBuZXcgUG9seW5vbWlhbChidWZmZXIsIHRoaXMuY3VydmUsIHRoaXMubG9nZ2VyKTtcblxuICAgICAgICBsZXQgYkFyciA9IFtdO1xuXG4gICAgICAgIC8vIEFkZCB0aGUgbSBsZWFkaW5nIGNvZWZmaWNpZW50cyBvZiB0aGlzIHRvIHF1b3RpZW50XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbTsgaSsrKSB7XG4gICAgICAgICAgICBxdW90aWVudC5zZXRDb2VmKChkIC0gaSkgLSBtLCB0aGlzLmdldENvZWYoZCAtIGkpKTtcbiAgICAgICAgICAgIGJBcnJbaV0gPSB0aGlzLmdldENvZWYoZCAtIGkpO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IG5UaHJlYWRzID0gbTtcblxuICAgICAgICBsZXQgaiA9IDA7XG4gICAgICAgIGZvciAobGV0IGsgPSAwOyBrIDwgblRocmVhZHM7IGsrKykge1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IGQgLSAyICogbSAtIGs7IGkgPj0gMDsgaSA9IGkgLSBuVGhyZWFkcykge1xuICAgICAgICAgICAgICAgIGlmIChpIDwgMCkgYnJlYWs7XG4gICAgICAgICAgICAgICAgbGV0IGlkeCA9IGs7XG4gICAgICAgICAgICAgICAgYkFycltpZHhdID0gRnIuYWRkKHRoaXMuZ2V0Q29lZihpICsgbSksIEZyLm11bChiQXJyW2lkeF0sIGJldGEpKTtcblxuICAgICAgICAgICAgICAgIHF1b3RpZW50LnNldENvZWYoaSwgYkFycltpZHhdKTtcbiAgICAgICAgICAgICAgICBqID0gKGogKyAxKSAlIG07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmNvZWYgPSBxdW90aWVudC5jb2VmO1xuICAgIH1cblxuICAgIGRpdkJ5VmFuaXNoaW5nKG4sIGJldGEpIHtcbiAgICAgICAgaWYgKHRoaXMuZGVncmVlKCkgPCBuKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJkaXZCeVZhbmlzaGluZyBwb2x5bm9taWFsIGRpdmlzb3IgbXVzdCBiZSBvZiBkZWdyZWUgbG93ZXIgdGhhbiB0aGUgZGl2aWRlbmQgcG9seW5vbWlhbFwiKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IEZyID0gdGhpcy5GcjtcblxuICAgICAgICBsZXQgcG9sUiA9IG5ldyBQb2x5bm9taWFsKHRoaXMuY29lZiwgdGhpcy5jdXJ2ZSwgdGhpcy5sb2dnZXIpO1xuXG4gICAgICAgIHRoaXMuY29lZiA9IHRoaXMubGVuZ3RoKCkgPiAyIDw8IDE0ID9cbiAgICAgICAgICAgIG5ldyBCaWdCdWZmZXIodGhpcy5sZW5ndGgoKSAqIEZyLm44KSA6IG5ldyBVaW50OEFycmF5KHRoaXMubGVuZ3RoKCkgKiBGci5uOCk7XG5cbiAgICAgICAgZm9yIChsZXQgaSA9IHRoaXMubGVuZ3RoKCkgLSAxOyBpID49IG47IGktLSkge1xuICAgICAgICAgICAgbGV0IGxlYWRpbmdDb2VmID0gcG9sUi5nZXRDb2VmKGkpO1xuICAgICAgICAgICAgaWYgKEZyLmVxKEZyLnplcm8sIGxlYWRpbmdDb2VmKSkgY29udGludWU7XG5cbiAgICAgICAgICAgIHBvbFIuc2V0Q29lZihpLCBGci56ZXJvKTtcbiAgICAgICAgICAgIHBvbFIuc2V0Q29lZihpIC0gbiwgRnIuYWRkKHBvbFIuZ2V0Q29lZihpIC0gbiksIEZyLm11bChiZXRhLCBsZWFkaW5nQ29lZikpKTtcbiAgICAgICAgICAgIHRoaXMuc2V0Q29lZihpIC0gbiwgRnIuYWRkKHRoaXMuZ2V0Q29lZihpIC0gbiksIGxlYWRpbmdDb2VmKSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcG9sUjtcbiAgICB9XG5cbiAgICBkaXZCeVZhbmlzaGluZzIobSwgYmV0YSkge1xuICAgICAgICBpZiAodGhpcy5kZWdyZWUoKSA8IG0pIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcImRpdkJ5VmFuaXNoaW5nIHBvbHlub21pYWwgZGl2aXNvciBtdXN0IGJlIG9mIGRlZ3JlZSBsb3dlciB0aGFuIHRoZSBkaXZpZGVuZCBwb2x5bm9taWFsXCIpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgRnIgPSB0aGlzLkZyO1xuXG4gICAgICAgIGxldCBwb2xSID0gbmV3IFBvbHlub21pYWwodGhpcy5jb2VmLCB0aGlzLmN1cnZlLCB0aGlzLmxvZ2dlcik7XG5cbiAgICAgICAgdGhpcy5jb2VmID0gdGhpcy5sZW5ndGgoKSA+IDIgPDwgMTQgP1xuICAgICAgICAgICAgbmV3IEJpZ0J1ZmZlcih0aGlzLmxlbmd0aCgpICogRnIubjgpIDogbmV3IFVpbnQ4QXJyYXkodGhpcy5sZW5ndGgoKSAqIEZyLm44KTtcblxuICAgICAgICBsZXQgblRocmVhZHMgPSAzO1xuICAgICAgICBsZXQgblRvdGFsID0gdGhpcy5sZW5ndGgoKSAtIG07XG4gICAgICAgIGxldCBuRWxlbWVudHNDaHVuayA9IE1hdGguZmxvb3IoblRvdGFsIC8gblRocmVhZHMpO1xuICAgICAgICBsZXQgbkVsZW1lbnRzTGFzdCA9IG5Ub3RhbCAtIChuVGhyZWFkcyAtIDEpICogbkVsZW1lbnRzQ2h1bms7XG5cbiAgICAgICAgY29uc29sZS5sb2coblRvdGFsKTtcbiAgICAgICAgY29uc29sZS5sb2cobkVsZW1lbnRzQ2h1bmsgKyBcIiAgXCIgKyBuRWxlbWVudHNMYXN0KTtcbiAgICAgICAgZm9yIChsZXQgayA9IDA7IGsgPCBuVGhyZWFkczsgaysrKSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcIj4gVGhyZWFkIFwiICsgayk7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gKGsgPT09IDAgPyBuRWxlbWVudHNMYXN0IDogbkVsZW1lbnRzQ2h1bmspOyBpID4gMDsgaS0tKSB7XG4gICAgICAgICAgICAgICAgbGV0IGlkeERzdCA9IGkgLSAxO1xuICAgICAgICAgICAgICAgIGlmIChrICE9PSAwKSBpZHhEc3QgKz0gKGsgLSAxKSAqIG5FbGVtZW50c0NodW5rICsgbkVsZW1lbnRzTGFzdDtcbiAgICAgICAgICAgICAgICBsZXQgaWR4U3JjID0gaWR4RHN0ICsgbTtcblxuICAgICAgICAgICAgICAgIGxldCBsZWFkaW5nQ29lZiA9IHBvbFIuZ2V0Q29lZihpZHhTcmMpO1xuICAgICAgICAgICAgICAgIGlmIChGci5lcShGci56ZXJvLCBsZWFkaW5nQ29lZikpIGNvbnRpbnVlO1xuXG4gICAgICAgICAgICAgICAgcG9sUi5zZXRDb2VmKGlkeFNyYywgRnIuemVybyk7XG4gICAgICAgICAgICAgICAgcG9sUi5zZXRDb2VmKGlkeERzdCwgRnIuYWRkKHBvbFIuZ2V0Q29lZihpZHhEc3QpLCBGci5tdWwoYmV0YSwgbGVhZGluZ0NvZWYpKSk7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRDb2VmKGlkeERzdCwgRnIuYWRkKHRoaXMuZ2V0Q29lZihpZHhEc3QpLCBsZWFkaW5nQ29lZikpO1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGlkeERzdCArIFwiIDwtLSBcIiArIGlkeFNyYyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnByaW50KCk7XG4gICAgICAgIHJldHVybiBwb2xSO1xuICAgIH1cblxuICAgIGZhc3REaXZCeVZhbmlzaGluZyhkYXRhKSB7XG4gICAgICAgIGNvbnN0IEZyID0gdGhpcy5GcjtcblxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGRhdGEubGVuZ3RoOyBpKyspIHtcblxuICAgICAgICAgICAgbGV0IG0gPSBkYXRhW2ldWzBdO1xuICAgICAgICAgICAgbGV0IGJldGEgPSBkYXRhW2ldWzFdO1xuXG4gICAgICAgICAgICBpZiAodGhpcy5kZWdyZWUoKSA8IG0pIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJkaXZCeVZhbmlzaGluZyBwb2x5bm9taWFsIGRpdmlzb3IgbXVzdCBiZSBvZiBkZWdyZWUgbG93ZXIgdGhhbiB0aGUgZGl2aWRlbmQgcG9seW5vbWlhbFwiKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgbGV0IG5UaHJlYWRzID0gNTtcbiAgICAgICAgICAgIGxldCBuRWxlbWVudHMgPSB0aGlzLmxlbmd0aCgpIC0gbTtcbiAgICAgICAgICAgIGxldCBuRWxlbWVudHNCdWNrZXQgPSBNYXRoLmZsb29yKG5FbGVtZW50cyAvIG5UaHJlYWRzIC8gbSk7XG4gICAgICAgICAgICBsZXQgbkVsZW1lbnRzQ2h1bmsgPSBuRWxlbWVudHNCdWNrZXQgKiBtO1xuICAgICAgICAgICAgbGV0IG5FbGVtZW50c0xhc3QgPSBuRWxlbWVudHMgLSBuVGhyZWFkcyAqIG5FbGVtZW50c0NodW5rO1xuXG4gICAgICAgICAgICAvL0luIEMrKyBpbXBsZW1lbnRhdGlvbiB0aGlzIGJ1ZmZlciB3aWxsIGJlIGFsbG9jYXRlZCBvbmx5IG9uY2Ugb3V0c2lkZSB0aGUgbG9vcFxuICAgICAgICAgICAgbGV0IHBvbFRtcCA9IG5ldyBQb2x5bm9taWFsKHRoaXMubGVuZ3RoKCkgPiAyIDw8IDE0ID9cbiAgICAgICAgICAgICAgICBuZXcgQmlnQnVmZmVyKHRoaXMubGVuZ3RoKCkgKiBGci5uOCkgOiBuZXcgVWludDhBcnJheSh0aGlzLmxlbmd0aCgpICogRnIubjgpLCB0aGlzLmN1cnZlLCB0aGlzLmxvZ2dlcik7XG5cbiAgICAgICAgICAgIGxldCBwdHIgPSB0aGlzLmNvZWY7XG4gICAgICAgICAgICB0aGlzLmNvZWYgPSBwb2xUbXAuY29lZjtcbiAgICAgICAgICAgIHBvbFRtcC5jb2VmID0gcHRyO1xuXG4gICAgICAgICAgICAvLyBTVEVQIDE6IFNldGVqYXIgZWxzIG0gdmFsb3JzIGRlbCBzZWfDvGVudCBidWNrZXQgYWwgY2h1bmsgYWN0dWFsLCBQQVJBTEVMwrdMSVRaQVJcbiAgICAgICAgICAgIGZvciAobGV0IGsgPSAwOyBrIDwgblRocmVhZHM7IGsrKykge1xuICAgICAgICAgICAgICAgIGxldCBpZHgwID0gKGsgKyAxKSAqIG5FbGVtZW50c0NodW5rICsgbkVsZW1lbnRzTGFzdDtcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG07IGkrKykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNldENvZWYoaWR4MCArIGkgLSBtLCBwb2xUbXAuZ2V0Q29lZihpZHgwICsgaSkpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbkVsZW1lbnRzQ2h1bmsgLSBtOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IG9mZnNldCA9IGlkeDAgLSBpIC0gMTtcbiAgICAgICAgICAgICAgICAgICAgbGV0IHZhbCA9IEZyLmFkZChwb2xUbXAuZ2V0Q29lZihvZmZzZXQpLCBGci5tdWwoYmV0YSwgdGhpcy5nZXRDb2VmKG9mZnNldCkpKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRDb2VmKG9mZnNldCAtIG0sIHZhbCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvL1NURVAgMjogU2V0ZWphciBlbHMgdmFsb3JzIGRlbCBlbGVtZW50cyBsYXN0IE5PIFBBUkFMwrdMRUxJVFpBUlxuICAgICAgICAgICAgbGV0IGlkeDAgPSBuRWxlbWVudHNMYXN0O1xuICAgICAgICAgICAgbGV0IHBlbmRpbmcgPSBuRWxlbWVudHNMYXN0O1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBtICYmIHBlbmRpbmc7IGkrKykge1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0Q29lZihpZHgwIC0gaSAtIDEsIHBvbFRtcC5nZXRDb2VmKGlkeDAgKyBtIC0gaSAtIDEpKTtcbiAgICAgICAgICAgICAgICBwZW5kaW5nLS07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcGVuZGluZzsgaSsrKSB7XG4gICAgICAgICAgICAgICAgbGV0IG9mZnNldCA9IGlkeDAgLSBpIC0gMTtcbiAgICAgICAgICAgICAgICBsZXQgdmFsID0gRnIuYWRkKHBvbFRtcC5nZXRDb2VmKG9mZnNldCksIEZyLm11bChiZXRhLCB0aGlzLmdldENvZWYob2Zmc2V0KSkpO1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0Q29lZihvZmZzZXQgLSBtLCB2YWwpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvL1N0ZXAgMzogY2FsY3VsYXIgYWN1bXVsYXRzIE5PICBQQVJBTEVMwrdMSVRaQVJcblxuICAgICAgICAgICAgbGV0IGFjYyA9IFtdO1xuICAgICAgICAgICAgbGV0IGJldGFQb3cgPSBGci5vbmU7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5FbGVtZW50c0J1Y2tldDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgYmV0YVBvdyA9IEZyLm11bChiZXRhUG93LCBiZXRhKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxldCBjdXJyZW50QmV0YSA9IEZyLm9uZTtcblxuICAgICAgICAgICAgZm9yIChsZXQgayA9IG5UaHJlYWRzOyBrID4gMDsgay0tKSB7XG4gICAgICAgICAgICAgICAgbGV0IGlkVGhyZWFkID0gayAtIDE7XG4gICAgICAgICAgICAgICAgbGV0IGlkeDAgPSBpZFRocmVhZCAqIG5FbGVtZW50c0NodW5rICsgbkVsZW1lbnRzTGFzdDtcbiAgICAgICAgICAgICAgICBhY2NbaWRUaHJlYWRdID0gW107XG5cbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG07IGkrKykge1xuICAgICAgICAgICAgICAgICAgICBhY2NbaWRUaHJlYWRdW2ldID0gdGhpcy5nZXRDb2VmKGlkeDAgKyBpKTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoayAhPT0gblRocmVhZHMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFjY1tpZFRocmVhZF1baV0gPSBGci5hZGQoYWNjW2lkVGhyZWFkXVtpXSwgRnIubXVsKGJldGFQb3csIGFjY1tpZFRocmVhZCArIDFdW2ldKSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY3VycmVudEJldGEgPSBGci5tdWwoY3VycmVudEJldGEsIGJldGFQb3cpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvL1NURVAgNCByZWNhbGN1bGFyICBQQVJBTEVMwrdMSVRaQVJcbiAgICAgICAgICAgIGZvciAobGV0IGsgPSAwOyBrIDwgblRocmVhZHM7IGsrKykge1xuXG4gICAgICAgICAgICAgICAgbGV0IGlkeDAgPSBrICogbkVsZW1lbnRzQ2h1bmsgKyBuRWxlbWVudHNMYXN0O1xuICAgICAgICAgICAgICAgIGxldCBjdXJyZW50QmV0YSA9IGJldGE7IC8vUXVhbiBob3Bhc3NlbSBhIEMrKyBpIGhvIHBhcmFsZWxpdHplbSBhcXVlc3RhIHZhcmlhYmxlIGhhIGRlIHNlciBwcml2YWRhXG4gICAgICAgICAgICAgICAgbGV0IGN1cnJlbnRNID0gbSAtIDE7XG5cbiAgICAgICAgICAgICAgICBsZXQgbGltaXQgPSBrID09PSAwID8gbkVsZW1lbnRzTGFzdCA6IG5FbGVtZW50c0NodW5rO1xuICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGltaXQ7IGkrKykge1xuICAgICAgICAgICAgICAgICAgICBsZXQgb2Zmc2V0ID0gaWR4MCAtIGkgLSAxO1xuICAgICAgICAgICAgICAgICAgICBsZXQgdmFsID0gRnIuYWRkKHRoaXMuZ2V0Q29lZihvZmZzZXQpLCBGci5tdWwoY3VycmVudEJldGEsIGFjY1trXVtjdXJyZW50TV0pKTtcblxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNldENvZWYob2Zmc2V0LCB2YWwpO1xuXG4gICAgICAgICAgICAgICAgICAgIC8vIFRvIGF2b2lkIG1vZHVsYXIgb3BlcmF0aW9ucyBpbiBlYWNoIGxvb3AuLi5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRNID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50TSA9IG0gLSAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudEJldGEgPSBGci5tdWwoY3VycmVudEJldGEsIGJldGEpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudE0tLTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuXG4gICAgLy8gRGl2aWRlIHBvbHlub21pYWwgYnkgWCAtIHZhbHVlXG4gICAgZGl2QnlYU3ViVmFsdWUodmFsdWUpIHtcbiAgICAgICAgY29uc3QgY29lZnMgPSB0aGlzLmxlbmd0aCgpID4gMiA8PCAxNCA/XG4gICAgICAgICAgICBuZXcgQmlnQnVmZmVyKHRoaXMubGVuZ3RoKCkgKiB0aGlzLkZyLm44KSA6IG5ldyBVaW50OEFycmF5KHRoaXMubGVuZ3RoKCkgKiB0aGlzLkZyLm44KTtcblxuICAgICAgICBjb2Vmcy5zZXQodGhpcy5Gci56ZXJvLCAodGhpcy5sZW5ndGgoKSAtIDEpICogdGhpcy5Gci5uOCk7XG4gICAgICAgIGNvZWZzLnNldCh0aGlzLmNvZWYuc2xpY2UoKHRoaXMubGVuZ3RoKCkgLSAxKSAqIHRoaXMuRnIubjgsIHRoaXMubGVuZ3RoKCkgKiB0aGlzLkZyLm44KSwgKHRoaXMubGVuZ3RoKCkgLSAyKSAqIHRoaXMuRnIubjgpO1xuICAgICAgICBmb3IgKGxldCBpID0gdGhpcy5sZW5ndGgoKSAtIDM7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgICAgICBsZXQgaV9uOCA9IGkgKiB0aGlzLkZyLm44O1xuICAgICAgICAgICAgY29lZnMuc2V0KFxuICAgICAgICAgICAgICAgIHRoaXMuRnIuYWRkKFxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvZWYuc2xpY2UoaV9uOCArIHRoaXMuRnIubjgsIGlfbjggKyAyICogdGhpcy5Gci5uOCksXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuRnIubXVsKHZhbHVlLCBjb2Vmcy5zbGljZShpX244ICsgdGhpcy5Gci5uOCwgaV9uOCArIDIgKiB0aGlzLkZyLm44KSlcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGkgKiB0aGlzLkZyLm44XG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIGlmICghdGhpcy5Gci5lcShcbiAgICAgICAgICAgIHRoaXMuY29lZi5zbGljZSgwLCB0aGlzLkZyLm44KSxcbiAgICAgICAgICAgIHRoaXMuRnIubXVsKHRoaXMuRnIubmVnKHZhbHVlKSwgY29lZnMuc2xpY2UoMCwgdGhpcy5Gci5uOCkpXG4gICAgICAgICkpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIlBvbHlub21pYWwgZG9lcyBub3QgZGl2aWRlXCIpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5jb2VmID0gY29lZnM7XG4gICAgfVxuXG4gICAgZGl2WmgoZG9tYWluU2l6ZSwgZXh0ZW5zaW9ucyA9IDQpIHtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBkb21haW5TaXplOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IGlfbjggPSBpICogdGhpcy5Gci5uODtcbiAgICAgICAgICAgIHRoaXMuY29lZi5zZXQodGhpcy5Gci5uZWcodGhpcy5jb2VmLnNsaWNlKGlfbjgsIGlfbjggKyB0aGlzLkZyLm44KSksIGlfbjgpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgdXBwZXJCb3VuZCA9IHRoaXMuY29lZi5ieXRlTGVuZ3RoIC8gdGhpcy5Gci5uODtcbiAgICAgICAgZm9yIChsZXQgaSA9IGRvbWFpblNpemU7IGkgPCB1cHBlckJvdW5kOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IGlfbjggPSBpICogdGhpcy5Gci5uODtcblxuICAgICAgICAgICAgY29uc3QgYSA9IHRoaXMuRnIuc3ViKFxuICAgICAgICAgICAgICAgIHRoaXMuY29lZi5zbGljZSgoaSAtIGRvbWFpblNpemUpICogdGhpcy5Gci5uOCwgKGkgLSBkb21haW5TaXplKSAqIHRoaXMuRnIubjggKyB0aGlzLkZyLm44KSxcbiAgICAgICAgICAgICAgICB0aGlzLmNvZWYuc2xpY2UoaV9uOCwgaV9uOCArIHRoaXMuRnIubjgpXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgdGhpcy5jb2VmLnNldChhLCBpX244KTtcbiAgICAgICAgICAgIGlmIChpID4gKGRvbWFpblNpemUgKiAoZXh0ZW5zaW9ucy0xKSAtIGV4dGVuc2lvbnMpKSB7XG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLkZyLmlzWmVybyhhKSkge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJQb2x5bm9taWFsIGlzIG5vdCBkaXZpc2libGVcIik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgZGl2QnlaZXJvZmllcihuLCBiZXRhKSB7XG4gICAgICAgIGxldCBGciA9IHRoaXMuRnI7XG4gICAgICAgIGNvbnN0IGludkJldGEgPSBGci5pbnYoYmV0YSk7XG4gICAgICAgIGNvbnN0IGludkJldGFOZWcgPSBGci5uZWcoaW52QmV0YSk7XG5cbiAgICAgICAgbGV0IGlzT25lID0gRnIuZXEoRnIub25lLCBpbnZCZXRhTmVnKTtcbiAgICAgICAgbGV0IGlzTmVnT25lID0gRnIuZXEoRnIubmVnb25lLCBpbnZCZXRhTmVnKTtcblxuICAgICAgICBpZiAoIWlzT25lKSB7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG47IGkrKykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGlfbjggPSBpICogdGhpcy5Gci5uODtcbiAgICAgICAgICAgICAgICBsZXQgZWxlbWVudDtcblxuICAgICAgICAgICAgICAgIC8vIElmIGludkJldGFOZWcgPT09IC0xIHdlJ2xsIHNhdmUgYSBtdWx0aXBsaWNhdGlvbiBjaGFuZ2luZyBpdCBieSBhIG5lZyBmdW5jdGlvbiBjYWxsXG4gICAgICAgICAgICAgICAgaWYgKGlzTmVnT25lKSB7XG4gICAgICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBGci5uZWcodGhpcy5jb2VmLnNsaWNlKGlfbjgsIGlfbjggKyB0aGlzLkZyLm44KSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgZWxlbWVudCA9IEZyLm11bChpbnZCZXRhTmVnLCB0aGlzLmNvZWYuc2xpY2UoaV9uOCwgaV9uOCArIHRoaXMuRnIubjgpKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0aGlzLmNvZWYuc2V0KGVsZW1lbnQsIGlfbjgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaXNPbmUgPSBGci5lcShGci5vbmUsIGludkJldGEpO1xuICAgICAgICBpc05lZ09uZSA9IEZyLmVxKEZyLm5lZ29uZSwgaW52QmV0YSk7XG5cbiAgICAgICAgZm9yIChsZXQgaSA9IG47IGkgPCB0aGlzLmxlbmd0aCgpOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IGlfbjggPSBpICogdGhpcy5Gci5uODtcbiAgICAgICAgICAgIGNvbnN0IGlfcHJldl9uOCA9IChpIC0gbikgKiB0aGlzLkZyLm44O1xuXG4gICAgICAgICAgICBsZXQgZWxlbWVudCA9IHRoaXMuRnIuc3ViKFxuICAgICAgICAgICAgICAgIHRoaXMuY29lZi5zbGljZShpX3ByZXZfbjgsIGlfcHJldl9uOCArIHRoaXMuRnIubjgpLFxuICAgICAgICAgICAgICAgIHRoaXMuY29lZi5zbGljZShpX244LCBpX244ICsgdGhpcy5Gci5uOClcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIC8vIElmIGludkJldGEgPT09IDEgd2UnbGwgbm90IGRvIGFueXRoaW5nXG4gICAgICAgICAgICBpZighaXNPbmUpIHtcbiAgICAgICAgICAgICAgICAvLyBJZiBpbnZCZXRhID09PSAtMSB3ZSdsbCBzYXZlIGEgbXVsdGlwbGljYXRpb24gY2hhbmdpbmcgaXQgYnkgYSBuZWcgZnVuY3Rpb24gY2FsbFxuICAgICAgICAgICAgICAgIGlmKGlzTmVnT25lKSB7XG4gICAgICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBGci5uZWcoZWxlbWVudCk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgZWxlbWVudCA9IEZyLm11bChpbnZCZXRhLCBlbGVtZW50KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuY29lZi5zZXQoZWxlbWVudCwgaV9uOCk7XG5cbiAgICAgICAgICAgIC8vIENoZWNrIGlmIHBvbHlub21pYWwgaXMgZGl2aXNpYmxlIGJ5IGNoZWNraW5nIGlmIG4gaGlnaCBjb2VmZmljaWVudHMgYXJlIHplcm9cbiAgICAgICAgICAgIGlmIChpID4gdGhpcy5sZW5ndGgoKSAtIG4gLSAxKSB7XG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLkZyLmlzWmVybyhlbGVtZW50KSkge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJQb2x5bm9taWFsIGlzIG5vdCBkaXZpc2libGVcIik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4vLyBmdW5jdGlvbiBkaXZpZGVCeVZhbmlzaGluZyhmLCBuLCBwKSB7XG4vLyAgICAgLy8gcG9seW5vbWlhbCBkaXZpc2lvbiBmKFgpIC8gKFhebiAtIDEpIHdpdGggcmVtYWluZGVyXG4vLyAgICAgLy8gdmVyeSBjaGVhcCwgMCBtdWx0aXBsaWNhdGlvbnNcbi8vICAgICAvLyBzdHJhdGVneTpcbi8vICAgICAvLyBzdGFydCB3aXRoIHEoWCkgPSAwLCByKFgpID0gZihYKVxuLy8gICAgIC8vIHRoZW4gc3RhcnQgY2hhbmdpbmcgcSwgciB3aGlsZSBwcmVzZXJ2aW5nIHRoZSBpZGVudGl0eTpcbi8vICAgICAvLyBmKFgpID0gcShYKSAqIChYXm4gLSAxKSArIHIoWClcbi8vICAgICAvLyBpbiBldmVyeSBzdGVwLCBtb3ZlIGhpZ2hlc3QtZGVncmVlIHRlcm0gb2YgciBpbnRvIHRoZSBwcm9kdWN0XG4vLyAgICAgLy8gPT4gciBldmVudHVhbGx5IGhhcyBkZWdyZWUgPCBuIGFuZCB3ZSdyZSBkb25lXG4vLyAgICAgbGV0IHEgPSBBcnJheShmLmxlbmd0aCkuZmlsbCgwbik7XG4vLyAgICAgbGV0IHIgPSBbLi4uZl07XG4vLyAgICAgZm9yIChsZXQgaSA9IGYubGVuZ3RoIC0gMTsgaSA+PSBuOyBpLS0pIHtcbi8vICAgICAgICAgbGV0IGxlYWRpbmdDb2VmZiA9IHJbaV07XG4vLyAgICAgICAgIGlmIChsZWFkaW5nQ29lZmYgPT09IDBuKSBjb250aW51ZTtcbi8vICAgICAgICAgcltpXSA9IDBuO1xuLy8gICAgICAgICByW2kgLSBuXSA9IG1vZChyW2kgLSBuXSArIGxlYWRpbmdDb2VmZiwgcCk7XG4vLyAgICAgICAgIHFbaSAtIG5dID0gbW9kKHFbaSAtIG5dICsgbGVhZGluZ0NvZWZmLCBwKTtcbi8vICAgICB9XG4vLyAgICAgcmV0dXJuIFtxLCByXTtcbi8vIH1cblxuICAgIGJ5WCgpIHtcbiAgICAgICAgY29uc3QgY29lZnMgPSAodGhpcy5sZW5ndGgoKSArIDEpID4gMiA8PCAxNCA/XG4gICAgICAgICAgICBuZXcgQmlnQnVmZmVyKHRoaXMuY29lZi5ieXRlTGVuZ3RoICsgdGhpcy5Gci5uOCkgOiBuZXcgVWludDhBcnJheSh0aGlzLmNvZWYuYnl0ZUxlbmd0aCArIHRoaXMuRnIubjgpO1xuICAgICAgICBjb2Vmcy5zZXQodGhpcy5Gci56ZXJvLCAwKTtcbiAgICAgICAgY29lZnMuc2V0KHRoaXMuY29lZiwgdGhpcy5Gci5uOCk7XG5cbiAgICAgICAgdGhpcy5jb2VmID0gY29lZnM7XG4gICAgfVxuXG4vLyBDb21wdXRlIGEgbmV3IHBvbHlub21pYWwgZih4Xm4pIGZyb20gZih4KVxuLy8gZih4KSAgID0gYV8wICsgYV8xwrd4ICsgYV8ywrd4XjIgKyAuLi4gKyBhX2rCt3healxuLy8gZih4Xm4pID0gYV8wICsgYV8xwrd4Xm4gKyBhXzLCt3heMm4gKyAuLi4gKyBhX2rCt3heam5cbiAgICBzdGF0aWNcbiAgICBhc3luYyBleHBYKHBvbHlub21pYWwsIG4sIHRydW5jYXRlID0gZmFsc2UpIHtcbiAgICAgICAgY29uc3QgRnIgPSBwb2x5bm9taWFsLkZyO1xuXG4gICAgICAgIGlmIChuIDwgMSkge1xuICAgICAgICAgICAgLy8gbiA9PSAwIG5vdCBhbGxvd2VkIGJlY2F1c2UgaXQgaGFzIG5vIHNlbnNlLCBidXQgaWYgaXQncyBuZWNlc3Nhcnkgd2UgaGF2ZSB0byByZXR1cm5cbiAgICAgICAgICAgIC8vIGEgemVybyBkZWdyZWUgcG9seW5vbWlhbCB3aXRoIGEgY29uc3RhbnQgY29lZmZpY2llbnQgZXF1YWxzIHRvIHRoZSBzdW0gb2YgYWxsIHRoZSBvcmlnaW5hbCBjb2VmZmljaWVudHNcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkNvbXB1dGUgYSBuZXcgcG9seW5vbWlhbCB0byBhIHplcm8gb3IgbmVnYXRpdmUgbnVtYmVyIGlzIG5vdCBhbGxvd2VkXCIpO1xuICAgICAgICB9IGVsc2UgaWYgKDEgPT09IG4pIHtcbiAgICAgICAgICAgIHJldHVybiBhd2FpdCBQb2x5bm9taWFsLmZyb21FdmFsdWF0aW9ucyhwb2x5bm9taWFsLmNvZWYsIGN1cnZlLCBwb2x5bm9taWFsLmxvZ2dlcik7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBsZW5ndGggaXMgdGhlIGxlbmd0aCBvZiBub24tY29uc3RhbnQgY29lZmZpY2llbnRzXG4gICAgICAgIC8vIGlmIHRydW5jYXRlID09PSB0cnVlLCB0aGUgaGlnaGVzdCB6ZXJvIGNvZWZmaWNpZW50cyAoaWYgZXhpc3QpIHdpbGwgYmUgcmVtb3ZlZFxuICAgICAgICBjb25zdCBsZW5ndGggPSB0cnVuY2F0ZSA/IHBvbHlub21pYWwuZGVncmVlKCkgOiAocG9seW5vbWlhbC5sZW5ndGgoKSAtIDEpO1xuICAgICAgICBjb25zdCBidWZmZXJEc3QgPSAobGVuZ3RoICogbiArIDEpID4gMiA8PCAxNCA/XG4gICAgICAgICAgICBuZXcgQmlnQnVmZmVyKChsZW5ndGggKiBuICsgMSkgKiBGci5uOCkgOiBuZXcgVWludDhBcnJheSgobGVuZ3RoICogbiArIDEpICogRnIubjgpO1xuXG4gICAgICAgIC8vIENvcHkgY29uc3RhbnQgY29lZmZpY2llbnQgYXMgaXMgYmVjYXVzZSBpcyBub3QgcmVsYXRlZCB0byB4XG4gICAgICAgIGJ1ZmZlckRzdC5zZXQocG9seW5vbWlhbC5nZXRDb2VmKDApLCAwKTtcblxuICAgICAgICBmb3IgKGxldCBpID0gMTsgaSA8PSBsZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgY29uc3QgaV9zRnIgPSBpICogRnIubjg7XG5cbiAgICAgICAgICAgIGNvbnN0IGNvZWYgPSBwb2x5bm9taWFsLmdldENvZWYoaSk7XG4gICAgICAgICAgICBidWZmZXJEc3Quc2V0KGNvZWYsIGlfc0ZyICogbik7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbmV3IFBvbHlub21pYWwoYnVmZmVyRHN0LCBwb2x5bm9taWFsLmN1cnZlLCBwb2x5bm9taWFsLmxvZ2dlcik7XG4gICAgfVxuXG4gICAgc3BsaXQobnVtUG9scywgZGVnUG9scywgYmxpbmRpbmdGYWN0b3JzKSB7XG4gICAgICAgIGlmIChudW1Qb2xzIDwgMSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBQb2x5bm9taWFscyBjYW4ndCBiZSBzcGxpdCBpbiAke251bVBvbHN9IHBhcnRzYCk7XG4gICAgICAgIH0gZWxzZSBpZiAoMSA9PT0gbnVtUG9scykge1xuICAgICAgICAgICAgcmV0dXJuIFt0aGlzXTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vYmxpbmRpbmcgZmFjdG9ycyBjYW4gYmUgdm9pZCBvciBtdXN0IGhhdmUgYSBsZW5ndGggb2YgbnVtUG9scyAtIDFcbiAgICAgICAgaWYgKDAgIT09IGJsaW5kaW5nRmFjdG9ycy5sZW5ndGggJiYgYmxpbmRpbmdGYWN0b3JzLmxlbmd0aCA8IG51bVBvbHMgLSAxKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEJsaW5kaW5nIGZhY3RvcnMgbGVuZ3RoIG11c3QgYmUgJHtudW1Qb2xzIC0gMX1gKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGNodW5rQnl0ZUxlbmd0aCA9IChkZWdQb2xzICsgMSkgKiB0aGlzLkZyLm44O1xuICAgICAgICBsZXQgcmVzID0gW107XG5cbiAgICAgICAgLy8gQ2hlY2sgcG9seW5vbWlhbCBjYW4gYmUgc3BsaXQgaW4gbnVtQ2h1bmtzIHBhcnRzIG9mIGNodW5rU2l6ZSBieXRlcy4uLlxuICAgICAgICBjb25zdCBudW1SZWFsUG9scyA9IE1hdGguY2VpbCgodGhpcy5kZWdyZWUoKSArIDEpICogdGhpcy5Gci5uOCAvIGNodW5rQnl0ZUxlbmd0aCk7XG4gICAgICAgIGlmIChudW1SZWFsUG9scyA8IG51bVBvbHMpIHtcbiAgICAgICAgICAgIC8vdGhyb3cgbmV3IEVycm9yKGBQb2x5bm9taWFsIGlzIHNob3J0IHRvIGJlIHNwbGl0IGluICR7bnVtUG9sc30gcGFydHMgb2YgJHtkZWdQb2xzfSBjb2VmZmljaWVudHMgZWFjaC5gKTtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSBudW1SZWFsUG9sczsgaSA8IG51bVBvbHM7IGkrKykge1xuICAgICAgICAgICAgICAgIHJlc1tpXSA9IG5ldyBQb2x5bm9taWFsKG5ldyBVaW50OEFycmF5KHRoaXMuRnIubjgpLCB0aGlzLmN1cnZlLCB0aGlzLmxvZ2dlcik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBudW1Qb2xzID0gTWF0aC5taW4obnVtUG9scywgbnVtUmVhbFBvbHMpO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG51bVBvbHM7IGkrKykge1xuICAgICAgICAgICAgY29uc3QgaXNMYXN0ID0gKG51bVBvbHMgLSAxKSA9PT0gaTtcbiAgICAgICAgICAgIGNvbnN0IGJ5dGVMZW5ndGggPSBpc0xhc3QgPyB0aGlzLmNvZWYuYnl0ZUxlbmd0aCAtICgobnVtUG9scyAtIDEpICogY2h1bmtCeXRlTGVuZ3RoKSA6IGNodW5rQnl0ZUxlbmd0aCArIHRoaXMuRnIubjg7XG5cbiAgICAgICAgICAgIGxldCBidWZmID0gKGJ5dGVMZW5ndGggLyB0aGlzLkZyLm44KSA+IDIgPDwgMTQgPyBuZXcgQmlnQnVmZmVyKGJ5dGVMZW5ndGgpIDogbmV3IFVpbnQ4QXJyYXkoYnl0ZUxlbmd0aCk7XG4gICAgICAgICAgICByZXNbaV0gPSBuZXcgUG9seW5vbWlhbChidWZmLCB0aGlzLmN1cnZlLCB0aGlzLmxvZ2dlcik7XG5cbiAgICAgICAgICAgIGNvbnN0IGZyID0gaSAqIGNodW5rQnl0ZUxlbmd0aDtcbiAgICAgICAgICAgIGNvbnN0IHRvID0gaXNMYXN0ID8gdGhpcy5jb2VmLmJ5dGVMZW5ndGggOiAoaSArIDEpICogY2h1bmtCeXRlTGVuZ3RoO1xuICAgICAgICAgICAgcmVzW2ldLmNvZWYuc2V0KHRoaXMuY29lZi5zbGljZShmciwgdG8pLCAwKTtcblxuICAgICAgICAgICAgLy8gQWRkIGEgYmxpbmRpbmcgZmFjdG9yIGFzIGhpZ2hlciBkZWdyZWVcbiAgICAgICAgICAgIGlmICghaXNMYXN0KSB7XG4gICAgICAgICAgICAgICAgcmVzW2ldLmNvZWYuc2V0KGJsaW5kaW5nRmFjdG9yc1tpXSwgY2h1bmtCeXRlTGVuZ3RoKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gU3ViIGJsaW5kaW5nIGZhY3RvciB0byB0aGUgbG93ZXN0IGRlZ3JlZVxuICAgICAgICAgICAgaWYgKDAgIT09IGkpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBsb3dlc3REZWdyZWUgPSB0aGlzLkZyLnN1YihyZXNbaV0uY29lZi5zbGljZSgwLCB0aGlzLkZyLm44KSwgYmxpbmRpbmdGYWN0b3JzW2kgLSAxXSk7XG4gICAgICAgICAgICAgICAgcmVzW2ldLmNvZWYuc2V0KGxvd2VzdERlZ3JlZSwgMCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChpc0xhc3QpIHtcbiAgICAgICAgICAgICAgICByZXNbaV0udHJ1bmNhdGUoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiByZXM7XG5cbiAgICAgICAgLy8gLy8gY29tcHV0ZSB0X2xvdyhYKVxuICAgICAgICAvLyBsZXQgcG9sVExvdyA9IG5ldyBCaWdCdWZmZXIoKGNodW5rU2l6ZSArIDEpICogbjhyKTtcbiAgICAgICAgLy8gcG9sVExvdy5zZXQodC5zbGljZSgwLCB6a2V5LmRvbWFpblNpemUgKiBuOHIpLCAwKTtcbiAgICAgICAgLy8gLy8gQWRkIGJsaW5kaW5nIHNjYWxhciBiXzEwIGFzIGEgbmV3IGNvZWZmaWNpZW50IG5cbiAgICAgICAgLy8gcG9sVExvdy5zZXQoY2guYlsxMF0sIHprZXkuZG9tYWluU2l6ZSAqIG44cik7XG4gICAgICAgIC8vXG4gICAgICAgIC8vIC8vIGNvbXB1dGUgdF9taWQoWClcbiAgICAgICAgLy8gbGV0IHBvbFRNaWQgPSBuZXcgQmlnQnVmZmVyKCh6a2V5LmRvbWFpblNpemUgKyAxKSAqIG44cik7XG4gICAgICAgIC8vIHBvbFRNaWQuc2V0KHQuc2xpY2UoemtleS5kb21haW5TaXplICogbjhyLCB6a2V5LmRvbWFpblNpemUgKiAyICogbjhyKSwgMCk7XG4gICAgICAgIC8vIC8vIFN1YnRyYWN0IGJsaW5kaW5nIHNjYWxhciBiXzEwIHRvIHRoZSBsb3dlc3QgY29lZmZpY2llbnQgb2YgdF9taWRcbiAgICAgICAgLy8gY29uc3QgbG93ZXN0TWlkID0gRnIuc3ViKHBvbFRNaWQuc2xpY2UoMCwgbjhyKSwgY2guYlsxMF0pO1xuICAgICAgICAvLyBwb2xUTWlkLnNldChsb3dlc3RNaWQsIDApO1xuICAgICAgICAvLyAvLyBBZGQgYmxpbmRpbmcgc2NhbGFyIGJfMTEgYXMgYSBuZXcgY29lZmZpY2llbnQgblxuICAgICAgICAvLyBwb2xUTWlkLnNldChjaC5iWzExXSwgemtleS5kb21haW5TaXplICogbjhyKTtcbiAgICAgICAgLy9cbiAgICAgICAgLy8gLy8gY29tcHV0ZSB0X2hpZ2goWClcbiAgICAgICAgLy8gbGV0IHBvbFRIaWdoID0gbmV3IEJpZ0J1ZmZlcigoemtleS5kb21haW5TaXplICsgNikgKiBuOHIpO1xuICAgICAgICAvLyBwb2xUSGlnaC5zZXQodC5zbGljZSh6a2V5LmRvbWFpblNpemUgKiAyICogbjhyLCAoemtleS5kb21haW5TaXplICogMyArIDYpICogbjhyKSwgMCk7XG4gICAgICAgIC8vIC8vU3VidHJhY3QgYmxpbmRpbmcgc2NhbGFyIGJfMTEgdG8gdGhlIGxvd2VzdCBjb2VmZmljaWVudCBvZiB0X2hpZ2hcbiAgICAgICAgLy8gY29uc3QgbG93ZXN0SGlnaCA9IEZyLnN1Yihwb2xUSGlnaC5zbGljZSgwLCBuOHIpLCBjaC5iWzExXSk7XG4gICAgICAgIC8vIHBvbFRIaWdoLnNldChsb3dlc3RIaWdoLCAwKTtcbiAgICAgICAgLy9cbiAgICAgICAgLy8gcHJvb2YuVDEgPSBhd2FpdCBleHBUYXUocG9sVExvdywgXCJtdWx0aWV4cCBUMVwiKTtcbiAgICAgICAgLy8gcHJvb2YuVDIgPSBhd2FpdCBleHBUYXUocG9sVE1pZCwgXCJtdWx0aWV4cCBUMlwiKTtcbiAgICAgICAgLy8gcHJvb2YuVDMgPSBhd2FpdCBleHBUYXUocG9sVEhpZ2gsIFwibXVsdGlleHAgVDNcIik7XG4gICAgfVxuXG4vLyBzcGxpdDIoZGVnUG9scywgYmxpbmRpbmdGYWN0b3JzKSB7XG4vLyAgICAgbGV0IGN1cnJlbnREZWdyZWUgPSB0aGlzLmRlZ3JlZSgpO1xuLy8gICAgIGNvbnN0IG51bUZpbGxlZFBvbHMgPSBNYXRoLmNlaWwoKGN1cnJlbnREZWdyZWUgKyAxKSAvIChkZWdQb2xzICsgMSkpO1xuLy9cbi8vICAgICAvL2JsaW5kaW5nIGZhY3RvcnMgY2FuIGJlIHZvaWQgb3IgbXVzdCBoYXZlIGEgbGVuZ3RoIG9mIG51bVBvbHMgLSAxXG4vLyAgICAgaWYgKDAgIT09IGJsaW5kaW5nRmFjdG9ycy5sZW5ndGggJiYgYmxpbmRpbmdGYWN0b3JzLmxlbmd0aCA8IG51bUZpbGxlZFBvbHMgLSAxKSB7XG4vLyAgICAgICAgIHRocm93IG5ldyBFcnJvcihgQmxpbmRpbmcgZmFjdG9ycyBsZW5ndGggbXVzdCBiZSAke251bUZpbGxlZFBvbHMgLSAxfWApO1xuLy8gICAgIH1cbi8vXG4vLyAgICAgY29uc3QgY2h1bmtCeXRlTGVuZ3RoID0gKGRlZ1BvbHMgKyAxKSAqIHRoaXMuRnIubjg7XG4vL1xuLy8gICAgIC8vIENoZWNrIHBvbHlub21pYWwgY2FuIGJlIHNwbGl0IGluIG51bUNodW5rcyBwYXJ0cyBvZiBjaHVua1NpemUgYnl0ZXMuLi5cbi8vICAgICBpZiAodGhpcy5jb2VmLmJ5dGVMZW5ndGggLyBjaHVua0J5dGVMZW5ndGggPD0gbnVtRmlsbGVkUG9scyAtIDEpIHtcbi8vICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBQb2x5bm9taWFsIGlzIHNob3J0IHRvIGJlIHNwbGl0IGluICR7bnVtRmlsbGVkUG9sc30gcGFydHMgb2YgJHtkZWdQb2xzfSBjb2VmZmljaWVudHMgZWFjaC5gKTtcbi8vICAgICB9XG4vL1xuLy8gICAgIGxldCByZXMgPSBbXTtcbi8vICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG51bUZpbGxlZFBvbHM7IGkrKykge1xuLy8gICAgICAgICBjb25zdCBpc0xhc3QgPSAobnVtRmlsbGVkUG9scyAtIDEpID09PSBpO1xuLy8gICAgICAgICBjb25zdCBieXRlTGVuZ3RoID0gaXNMYXN0ID8gKGN1cnJlbnREZWdyZWUgKyAxKSAqIHRoaXMuRnIubjggLSAoKG51bUZpbGxlZFBvbHMgLSAxKSAqIGNodW5rQnl0ZUxlbmd0aCkgOiBjaHVua0J5dGVMZW5ndGggKyB0aGlzLkZyLm44O1xuLy9cbi8vICAgICAgICAgcmVzW2ldID0gbmV3IFBvbHlub21pYWwobmV3IEJpZ0J1ZmZlcihieXRlTGVuZ3RoKSwgdGhpcy5GciwgdGhpcy5sb2dnZXIpO1xuLy8gICAgICAgICBjb25zdCBmciA9IGkgKiBjaHVua0J5dGVMZW5ndGg7XG4vLyAgICAgICAgIGNvbnN0IHRvID0gaXNMYXN0ID8gKGN1cnJlbnREZWdyZWUgKyAxKSAqIHRoaXMuRnIubjggOiAoaSArIDEpICogY2h1bmtCeXRlTGVuZ3RoO1xuLy8gICAgICAgICByZXNbaV0uY29lZi5zZXQodGhpcy5jb2VmLnNsaWNlKGZyLCB0byksIDApO1xuLy9cbi8vICAgICAgICAgLy8gQWRkIGEgYmxpbmRpbmcgZmFjdG9yIGFzIGhpZ2hlciBkZWdyZWVcbi8vICAgICAgICAgaWYgKCFpc0xhc3QpIHtcbi8vICAgICAgICAgICAgIHJlc1tpXS5jb2VmLnNldChibGluZGluZ0ZhY3RvcnNbaV0sIGNodW5rQnl0ZUxlbmd0aCk7XG4vLyAgICAgICAgIH1cbi8vXG4vLyAgICAgICAgIC8vIFN1YiBibGluZGluZyBmYWN0b3IgdG8gdGhlIGxvd2VzdCBkZWdyZWVcbi8vICAgICAgICAgaWYgKDAgIT09IGkpIHtcbi8vICAgICAgICAgICAgIGNvbnN0IGxvd2VzdERlZ3JlZSA9IHRoaXMuRnIuc3ViKHJlc1tpXS5jb2VmLnNsaWNlKDAsIHRoaXMuRnIubjgpLCBibGluZGluZ0ZhY3RvcnNbaSAtIDFdKTtcbi8vICAgICAgICAgICAgIHJlc1tpXS5jb2VmLnNldChsb3dlc3REZWdyZWUsIDApO1xuLy8gICAgICAgICB9XG4vLyAgICAgfVxuLy9cbi8vICAgICByZXR1cm4gcmVzO1xuLy8gfVxuXG4vLyBtZXJnZShwb2xzLCBvdmVybGFwID0gdHJ1ZSkge1xuLy8gICAgIGxldCBsZW5ndGggPSAwO1xuLy8gICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcG9scy5sZW5ndGg7IGkrKykge1xuLy8gICAgICAgICBsZW5ndGggKz0gcG9sc1tpXS5sZW5ndGgoKTtcbi8vICAgICB9XG4vL1xuLy8gICAgIGlmIChvdmVybGFwKSB7XG4vLyAgICAgICAgIGxlbmd0aCAtPSBwb2xzLmxlbmd0aCAtIDE7XG4vLyAgICAgfVxuLy9cbi8vICAgICBsZXQgcmVzID0gbmV3IFBvbHlub21pYWwobmV3IEJpZ0J1ZmZlcihsZW5ndGggKiB0aGlzLkZyLm44KSk7XG4vLyAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwb2xzLmxlbmd0aDsgaSsrKSB7XG4vLyAgICAgICAgIGNvbnN0IGJ5dGVMZW5ndGggPSBwb2xzW2ldLmNvZWYuYnl0ZUxlbmd0aDtcbi8vICAgICAgICAgaWYgKDAgPT09IGkpIHtcbi8vICAgICAgICAgICAgIHJlcy5jb2VmLnNldChwb2xzW2ldLmNvZWYsIDApO1xuLy8gICAgICAgICB9IGVsc2Uge1xuLy9cbi8vICAgICAgICAgfVxuLy8gICAgIH1cbi8vXG4vLyAgICAgcmV0dXJuIHJlcztcbi8vIH1cblxuICAgIHRydW5jYXRlKCkge1xuICAgICAgICBjb25zdCBkZWcgPSB0aGlzLmRlZ3JlZSgpO1xuICAgICAgICBpZiAoZGVnICsgMSA8IHRoaXMuY29lZi5ieXRlTGVuZ3RoIC8gdGhpcy5Gci5uOCkge1xuICAgICAgICAgICAgY29uc3QgbmV3Q29lZnMgPSAoZGVnICsgMSkgPiAyIDw8IDE0ID9cbiAgICAgICAgICAgICAgICBuZXcgQmlnQnVmZmVyKChkZWcgKyAxKSAqIHRoaXMuRnIubjgpIDogbmV3IFVpbnQ4QXJyYXkoKGRlZyArIDEpICogdGhpcy5Gci5uOCk7XG5cbiAgICAgICAgICAgIG5ld0NvZWZzLnNldCh0aGlzLmNvZWYuc2xpY2UoMCwgKGRlZyArIDEpICogdGhpcy5Gci5uOCksIDApO1xuICAgICAgICAgICAgdGhpcy5jb2VmID0gbmV3Q29lZnM7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzdGF0aWMgbGFncmFuZ2VQb2x5bm9taWFsSW50ZXJwb2xhdGlvbih4QXJyLCB5QXJyLCBjdXJ2ZSkge1xuICAgICAgICBjb25zdCBGciA9IGN1cnZlLkZyO1xuICAgICAgICBsZXQgcG9seW5vbWlhbCA9IGNvbXB1dGVMYWdyYW5nZVBvbHlub21pYWwoMCk7XG4gICAgICAgIGZvciAobGV0IGkgPSAxOyBpIDwgeEFyci5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgcG9seW5vbWlhbC5hZGQoY29tcHV0ZUxhZ3JhbmdlUG9seW5vbWlhbChpKSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcG9seW5vbWlhbDtcblxuICAgICAgICBmdW5jdGlvbiBjb21wdXRlTGFncmFuZ2VQb2x5bm9taWFsKGkpIHtcbiAgICAgICAgICAgIGxldCBwb2x5bm9taWFsO1xuXG4gICAgICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHhBcnIubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgICAgICAgICBpZiAoaiA9PT0gaSkgY29udGludWU7XG5cbiAgICAgICAgICAgICAgICBpZiAocG9seW5vbWlhbCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBidWZmID0gKHhBcnIubGVuZ3RoKSA+IDIgPDwgMTQgP1xuICAgICAgICAgICAgICAgICAgICAgICAgbmV3IEJpZ0J1ZmZlcigoeEFyci5sZW5ndGgpICogRnIubjgpIDogbmV3IFVpbnQ4QXJyYXkoKHhBcnIubGVuZ3RoKSAqIEZyLm44KTtcbiAgICAgICAgICAgICAgICAgICAgcG9seW5vbWlhbCA9IG5ldyBQb2x5bm9taWFsKGJ1ZmYsIGN1cnZlKTtcbiAgICAgICAgICAgICAgICAgICAgcG9seW5vbWlhbC5zZXRDb2VmKDAsIEZyLm5lZyh4QXJyW2pdKSk7XG4gICAgICAgICAgICAgICAgICAgIHBvbHlub21pYWwuc2V0Q29lZigxLCBGci5vbmUpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHBvbHlub21pYWwuYnlYU3ViVmFsdWUoeEFycltqXSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBsZXQgZGVub21pbmF0b3IgPSBwb2x5bm9taWFsLmV2YWx1YXRlKHhBcnJbaV0pO1xuICAgICAgICAgICAgZGVub21pbmF0b3IgPSBGci5pbnYoZGVub21pbmF0b3IpO1xuICAgICAgICAgICAgY29uc3QgbXVsRmFjdG9yID0gRnIubXVsKHlBcnJbaV0sIGRlbm9taW5hdG9yKTtcblxuICAgICAgICAgICAgcG9seW5vbWlhbC5tdWxTY2FsYXIobXVsRmFjdG9yKTtcblxuICAgICAgICAgICAgcmV0dXJuIHBvbHlub21pYWw7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzdGF0aWMgemVyb2ZpZXJQb2x5bm9taWFsKHhBcnIsIGN1cnZlKSB7XG4gICAgICAgIGNvbnN0IEZyID0gY3VydmUuRnI7XG4gICAgICAgIGxldCBidWZmID0gKHhBcnIubGVuZ3RoICsgMSkgPiAyIDw8IDE0ID9cbiAgICAgICAgICAgIG5ldyBCaWdCdWZmZXIoKHhBcnIubGVuZ3RoICsgMSkgKiBGci5uOCkgOiBuZXcgVWludDhBcnJheSgoeEFyci5sZW5ndGggKyAxKSAqIEZyLm44KTtcbiAgICAgICAgbGV0IHBvbHlub21pYWwgPSBuZXcgUG9seW5vbWlhbChidWZmLCBjdXJ2ZSk7XG5cbiAgICAgICAgLy8gQnVpbGQgYSB6ZXJvZmllciBwb2x5bm9taWFsIHdpdGggdGhlIGZvbGxvd2luZyBmb3JtOlxuICAgICAgICAvLyB6ZXJvZmllcihYKSA9IChYLXhBcnJbMF0pKFgteEFyclsxXSkuLi4oWC14QXJyW25dKVxuICAgICAgICBwb2x5bm9taWFsLnNldENvZWYoMCwgRnIubmVnKHhBcnJbMF0pKTtcbiAgICAgICAgcG9seW5vbWlhbC5zZXRDb2VmKDEsIEZyLm9uZSk7XG5cbiAgICAgICAgZm9yIChsZXQgaSA9IDE7IGkgPCB4QXJyLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBwb2x5bm9taWFsLmJ5WFN1YlZhbHVlKHhBcnJbaV0pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHBvbHlub21pYWw7XG4gICAgfVxuXG4gICAgcHJpbnQoKSB7XG4gICAgICAgIGNvbnN0IEZyID0gdGhpcy5GcjtcbiAgICAgICAgbGV0IHJlcyA9IFwiXCI7XG4gICAgICAgIGZvciAobGV0IGkgPSB0aGlzLmRlZ3JlZSgpOyBpID49IDA7IGktLSkge1xuICAgICAgICAgICAgY29uc3QgY29lZiA9IHRoaXMuZ2V0Q29lZihpKTtcbiAgICAgICAgICAgIGlmICghRnIuZXEoRnIuemVybywgY29lZikpIHtcbiAgICAgICAgICAgICAgICBpZiAoRnIuaXNOZWdhdGl2ZShjb2VmKSkge1xuICAgICAgICAgICAgICAgICAgICByZXMgKz0gXCIgLSBcIjtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGkgIT09IHRoaXMuZGVncmVlKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzICs9IFwiICsgXCI7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJlcyArPSBGci50b1N0cmluZyhjb2VmKTtcbiAgICAgICAgICAgICAgICBpZiAoaSA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzICs9IGkgPiAxID8gXCJ4XlwiICsgaSA6IFwieFwiO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBjb25zb2xlLmxvZyhyZXMpO1xuICAgIH1cblxuICAgIGFzeW5jIG11bHRpRXhwb25lbnRpYXRpb24oUFRhdSwgbmFtZSkge1xuICAgICAgICBjb25zdCBuID0gdGhpcy5jb2VmLmJ5dGVMZW5ndGggLyB0aGlzLkZyLm44O1xuICAgICAgICBjb25zdCBQVGF1TiA9IFBUYXUuc2xpY2UoMCwgbiAqIHRoaXMuRzEuRi5uOCAqIDIpO1xuICAgICAgICBjb25zdCBibSA9IGF3YWl0IHRoaXMuRnIuYmF0Y2hGcm9tTW9udGdvbWVyeSh0aGlzLmNvZWYpO1xuICAgICAgICBsZXQgcmVzID0gYXdhaXQgdGhpcy5HMS5tdWx0aUV4cEFmZmluZShQVGF1TiwgYm0sIHRoaXMubG9nZ2VyLCBuYW1lKTtcbiAgICAgICAgcmVzID0gdGhpcy5HMS50b0FmZmluZShyZXMpO1xuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH1cbn0iLCIvKlxuICAgIENvcHlyaWdodCAyMDIyIGlkZW4zIGFzc29jaWF0aW9uLlxuXG4gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2Ygc25hcmtqcy5cblxuICAgIHNuYXJranMgaXMgYSBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3JcbiAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlXG4gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pXG4gICAgYW55IGxhdGVyIHZlcnNpb24uXG5cbiAgICBzbmFya2pzIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZXG4gICAgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yXG4gICAgbW9yZSBkZXRhaWxzLlxuXG4gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcgd2l0aFxuICAgIHNuYXJranMuIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXG4qL1xuXG5pbXBvcnQge0JpZ0J1ZmZlcn0gZnJvbSBcImZmamF2YXNjcmlwdFwiO1xuXG5leHBvcnQgY2xhc3MgRXZhbHVhdGlvbnMge1xuICAgIGNvbnN0cnVjdG9yKGV2YWx1YXRpb25zLCBjdXJ2ZSwgbG9nZ2VyKSB7XG4gICAgICAgIHRoaXMuZXZhbCA9IGV2YWx1YXRpb25zO1xuICAgICAgICB0aGlzLmN1cnZlID0gY3VydmU7XG4gICAgICAgIHRoaXMuRnIgPSBjdXJ2ZS5GcjtcbiAgICAgICAgdGhpcy5sb2dnZXIgPSBsb2dnZXI7XG4gICAgfVxuXG4gICAgc3RhdGljIGFzeW5jIGZyb21Qb2x5bm9taWFsKHBvbHlub21pYWwsIGV4dGVuc2lvbiwgY3VydmUsIGxvZ2dlcikge1xuICAgICAgICBjb25zdCBjb2VmZmljaWVudHNOID0gbmV3IEJpZ0J1ZmZlcihwb2x5bm9taWFsLmxlbmd0aCgpICogZXh0ZW5zaW9uICogY3VydmUuRnIubjgpO1xuICAgICAgICBjb2VmZmljaWVudHNOLnNldChwb2x5bm9taWFsLmNvZWYsIDApO1xuXG4gICAgICAgIGNvbnN0IGV2YWx1YXRpb25zID0gYXdhaXQgY3VydmUuRnIuZmZ0KGNvZWZmaWNpZW50c04pO1xuXG4gICAgICAgIHJldHVybiBuZXcgRXZhbHVhdGlvbnMoZXZhbHVhdGlvbnMsIGN1cnZlLCBsb2dnZXIpO1xuICAgIH1cblxuICAgIGdldEV2YWx1YXRpb24oaW5kZXgpIHtcbiAgICAgICAgY29uc3QgaV9uOCA9IGluZGV4ICogdGhpcy5Gci5uODtcblxuICAgICAgICBpZiAoaV9uOCArIHRoaXMuRnIubjggPiB0aGlzLmV2YWwuYnl0ZUxlbmd0aCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiRXZhbHVhdGlvbnMuZ2V0RXZhbHVhdGlvbigpIG91dCBvZiBib3VuZHNcIik7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5ldmFsLnNsaWNlKGlfbjgsIGlfbjggKyB0aGlzLkZyLm44KTtcbiAgICB9XG5cbiAgICBsZW5ndGgoKSB7XG4gICAgICAgIGxldCBsZW5ndGggPSB0aGlzLmV2YWwuYnl0ZUxlbmd0aCAvIHRoaXMuRnIubjg7XG4gICAgICAgIGlmIChsZW5ndGggIT09IE1hdGguZmxvb3IodGhpcy5ldmFsLmJ5dGVMZW5ndGggLyB0aGlzLkZyLm44KSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiUG9seW5vbWlhbCBldmFsdWF0aW9ucyBidWZmZXIgaGFzIGluY29ycmVjdCBzaXplXCIpO1xuICAgICAgICB9XG4gICAgICAgIGlmICgwID09PSBsZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMubG9nZ2VyLndhcm4oXCJQb2x5bm9taWFsIGhhcyBsZW5ndGggemVyb1wiKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbGVuZ3RoO1xuICAgIH1cbn0iLCIvKlxuICAgIENvcHlyaWdodCAyMDIxIDBraW1zIGFzc29jaWF0aW9uLlxuXG4gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2Ygc25hcmtqcy5cblxuICAgIHNuYXJranMgaXMgYSBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3JcbiAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlXG4gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pXG4gICAgYW55IGxhdGVyIHZlcnNpb24uXG5cbiAgICBzbmFya2pzIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZXG4gICAgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yXG4gICAgbW9yZSBkZXRhaWxzLlxuXG4gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcgd2l0aFxuICAgIHNuYXJranMuIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXG4qL1xuXG4vKiBJbXBsZW1lbnRhdGlvbiBvZiB0aGlzIHBhcGVyOiBodHRwczovL2VwcmludC5pYWNyLm9yZy8yMDE5Lzk1My5wZGYgc2VjdGlvbiA4LjQgKi9cblxuaW1wb3J0ICogYXMgYmluRmlsZVV0aWxzIGZyb20gXCJAaWRlbjMvYmluZmlsZXV0aWxzXCI7XG5pbXBvcnQgKiBhcyB6a2V5VXRpbHMgZnJvbSBcIi4vemtleV91dGlscy5qc1wiO1xuaW1wb3J0ICogYXMgd3Ruc1V0aWxzIGZyb20gXCIuL3d0bnNfdXRpbHMuanNcIjtcbmltcG9ydCB7IFNjYWxhciwgdXRpbHMsIEJpZ0J1ZmZlciB9IGZyb20gXCJmZmphdmFzY3JpcHRcIjtcbmNvbnN0IHtzdHJpbmdpZnlCaWdJbnRzfSA9IHV0aWxzO1xuaW1wb3J0IHsgUHJvb2YgfSBmcm9tIFwiLi9wcm9vZi5qc1wiO1xuaW1wb3J0IHsgS2VjY2FrMjU2VHJhbnNjcmlwdCB9IGZyb20gXCIuL0tlY2NhazI1NlRyYW5zY3JpcHQuanNcIjtcbmltcG9ydCB7IE11bFogfSBmcm9tIFwiLi9tdWxfei5qc1wiO1xuaW1wb3J0IHsgIFpLRVlfUExfSEVBREVSX1NFQ1RJT04sXG4gICAgWktFWV9QTF9BRERJVElPTlNfU0VDVElPTixcbiAgICBaS0VZX1BMX0FfTUFQX1NFQ1RJT04sXG4gICAgWktFWV9QTF9CX01BUF9TRUNUSU9OLFxuICAgIFpLRVlfUExfQ19NQVBfU0VDVElPTixcbiAgICBaS0VZX1BMX1FNX1NFQ1RJT04sXG4gICAgWktFWV9QTF9RTF9TRUNUSU9OLFxuICAgIFpLRVlfUExfUVJfU0VDVElPTixcbiAgICBaS0VZX1BMX1FPX1NFQ1RJT04sXG4gICAgWktFWV9QTF9RQ19TRUNUSU9OLFxuICAgIFpLRVlfUExfU0lHTUFfU0VDVElPTixcbiAgICBaS0VZX1BMX0xBR1JBTkdFX1NFQ1RJT04sXG4gICAgWktFWV9QTF9QVEFVX1NFQ1RJT04sXG59IGZyb20gXCIuL3Bsb25rX2NvbnN0YW50cy5qc1wiO1xuaW1wb3J0IHsgUG9seW5vbWlhbCB9IGZyb20gXCIuL3BvbHlub21pYWwvcG9seW5vbWlhbC5qc1wiO1xuaW1wb3J0IHsgRXZhbHVhdGlvbnMgfSBmcm9tIFwiLi9wb2x5bm9taWFsL2V2YWx1YXRpb25zLmpzXCI7XG4gICAgXG5leHBvcnQgZGVmYXVsdCBhc3luYyBmdW5jdGlvbiBwbG9uazE2UHJvdmUoemtleUZpbGVOYW1lLCB3aXRuZXNzRmlsZU5hbWUsIGxvZ2dlciwgb3B0aW9ucykge1xuICAgIGNvbnN0IHtmZDogZmRXdG5zLCBzZWN0aW9uczogc2VjdGlvbnNXdG5zfSA9IGF3YWl0IGJpbkZpbGVVdGlscy5yZWFkQmluRmlsZSh3aXRuZXNzRmlsZU5hbWUsIFwid3Ruc1wiLCAyLCAxPDwyNSwgMTw8MjMpO1xuXG4gICAgLy8gUmVhZCB3aXRuZXNzIGZpbGVcbiAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZGVidWcoXCI+IFJlYWRpbmcgd2l0bmVzcyBmaWxlXCIpO1xuICAgIGNvbnN0IHd0bnMgPSBhd2FpdCB3dG5zVXRpbHMucmVhZEhlYWRlcihmZFd0bnMsIHNlY3Rpb25zV3Rucyk7XG5cbiAgICAvLyBSZWFkIHprZXkgZmlsZVxuICAgIGlmIChsb2dnZXIpIGxvZ2dlci5kZWJ1ZyhcIj4gUmVhZGluZyB6a2V5IGZpbGVcIik7XG4gICAgY29uc3Qge2ZkOiBmZFpLZXksIHNlY3Rpb25zOiB6a2V5U2VjdGlvbnN9ID0gYXdhaXQgYmluRmlsZVV0aWxzLnJlYWRCaW5GaWxlKHprZXlGaWxlTmFtZSwgXCJ6a2V5XCIsIDIsIDE8PDI1LCAxPDwyMyk7XG5cbiAgICBjb25zdCB6a2V5ID0gYXdhaXQgemtleVV0aWxzLnJlYWRIZWFkZXIoZmRaS2V5LCB6a2V5U2VjdGlvbnMsIHVuZGVmaW5lZCwgb3B0aW9ucyk7XG4gICAgaWYgKHprZXkucHJvdG9jb2wgIT0gXCJwbG9ua1wiKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcInprZXkgZmlsZSBpcyBub3QgcGxvbmtcIik7XG4gICAgfVxuXG4gICAgaWYgKCFTY2FsYXIuZXEoemtleS5yLCAgd3Rucy5xKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJDdXJ2ZSBvZiB0aGUgd2l0bmVzcyBkb2VzIG5vdCBtYXRjaCB0aGUgY3VydmUgb2YgdGhlIHByb3Zpbmcga2V5XCIpO1xuICAgIH1cblxuICAgIGlmICh3dG5zLm5XaXRuZXNzICE9IHprZXkublZhcnMgLXprZXkubkFkZGl0aW9ucykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgd2l0bmVzcyBsZW5ndGguIENpcmN1aXQ6ICR7emtleS5uVmFyc30sIHdpdG5lc3M6ICR7d3Rucy5uV2l0bmVzc30sICR7emtleS5uQWRkaXRpb25zfWApO1xuICAgIH1cblxuICAgIGNvbnN0IGN1cnZlID0gemtleS5jdXJ2ZTtcblxuICAgIGNvbnN0IEZyID0gY3VydmUuRnI7XG4gICAgY29uc3QgbjhyID0gY3VydmUuRnIubjg7XG4gICAgY29uc3Qgc0RvbWFpbiA9IHprZXkuZG9tYWluU2l6ZSAqIG44cjtcblxuICAgIGlmIChsb2dnZXIpIHtcbiAgICAgICAgbG9nZ2VyLmRlYnVnKFwiLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVwiKTtcbiAgICAgICAgbG9nZ2VyLmRlYnVnKFwiICBQTE9OSyBQUk9WRSBTRVRUSU5HU1wiKTtcbiAgICAgICAgbG9nZ2VyLmRlYnVnKGAgIEN1cnZlOiAgICAgICAgICR7Y3VydmUubmFtZX1gKTtcbiAgICAgICAgbG9nZ2VyLmRlYnVnKGAgIENpcmN1aXQgcG93ZXI6ICR7emtleS5wb3dlcn1gKTtcbiAgICAgICAgbG9nZ2VyLmRlYnVnKGAgIERvbWFpbiBzaXplOiAgICR7emtleS5kb21haW5TaXplfWApO1xuICAgICAgICBsb2dnZXIuZGVidWcoYCAgVmFyczogICAgICAgICAgJHt6a2V5Lm5WYXJzfWApO1xuICAgICAgICBsb2dnZXIuZGVidWcoYCAgUHVibGljIHZhcnM6ICAgJHt6a2V5Lm5QdWJsaWN9YCk7XG4gICAgICAgIGxvZ2dlci5kZWJ1ZyhgICBDb25zdHJhaW50czogICAke3prZXkubkNvbnN0cmFpbnRzfWApO1xuICAgICAgICBsb2dnZXIuZGVidWcoYCAgQWRkaXRpb25zOiAgICAgJHt6a2V5Lm5BZGRpdGlvbnN9YCk7XG4gICAgICAgIGxvZ2dlci5kZWJ1ZyhcIi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cIik7XG4gICAgfVxuXG4gICAgLy9SZWFkIHdpdG5lc3MgZGF0YVxuICAgIGlmIChsb2dnZXIpIGxvZ2dlci5kZWJ1ZyhcIj4gUmVhZGluZyB3aXRuZXNzIGZpbGUgZGF0YVwiKTtcbiAgICBjb25zdCBidWZmV2l0bmVzcyA9IGF3YWl0IGJpbkZpbGVVdGlscy5yZWFkU2VjdGlvbihmZFd0bnMsIHNlY3Rpb25zV3RucywgMik7XG5cbiAgICAvLyBGaXJzdCBlbGVtZW50IGluIHBsb25rIGlzIG5vdCB1c2VkIGFuZCBjYW4gYmUgYW55IHZhbHVlLiAoQnV0IGFsd2F5cyB0aGUgc2FtZSkuXG4gICAgLy8gV2Ugc2V0IGl0IHRvIHplcm8gdG8gZ28gZmFzdGVyIGluIHRoZSBleHBvbmVudGlhdGlvbnMuXG4gICAgYnVmZldpdG5lc3Muc2V0KEZyLnplcm8sIDApO1xuICAgIGNvbnN0IGJ1ZmZJbnRlcm5hbFdpdG5lc3MgPSBuZXcgQmlnQnVmZmVyKG44cip6a2V5Lm5BZGRpdGlvbnMpO1xuXG4gICAgbGV0IGJ1ZmZlcnMgPSB7fTtcbiAgICBsZXQgcG9seW5vbWlhbHMgPSB7fTtcbiAgICBsZXQgZXZhbHVhdGlvbnMgPSB7fTtcblxuICAgIGxldCBjaGFsbGVuZ2VzID0ge307XG4gICAgbGV0IHByb29mID0gbmV3IFByb29mKGN1cnZlLCBsb2dnZXIpO1xuICAgIGNvbnN0IHRyYW5zY3JpcHQgPSBuZXcgS2VjY2FrMjU2VHJhbnNjcmlwdChjdXJ2ZSk7XG5cbiAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZGVidWcoYD4gUmVhZGluZyBTZWN0aW9uICR7WktFWV9QTF9BRERJVElPTlNfU0VDVElPTn0uIEFkZGl0aW9uc2ApO1xuICAgIGF3YWl0IGNhbGN1bGF0ZUFkZGl0aW9ucygpO1xuXG4gICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmRlYnVnKGA+IFJlYWRpbmcgU2VjdGlvbiAke1pLRVlfUExfU0lHTUFfU0VDVElPTn0uIFNpZ21hMSwgU2lnbWEyICYgU2lnbWEgM2ApO1xuICAgIGlmIChsb2dnZXIpIGxvZ2dlci5kZWJ1ZyhcIsK3wrfCtyBSZWFkaW5nIFNpZ21hIHBvbHlub21pYWxzIFwiKTtcbiAgICBwb2x5bm9taWFscy5TaWdtYTEgPSBuZXcgUG9seW5vbWlhbChuZXcgQmlnQnVmZmVyKHNEb21haW4pLCBjdXJ2ZSwgbG9nZ2VyKTtcbiAgICBwb2x5bm9taWFscy5TaWdtYTIgPSBuZXcgUG9seW5vbWlhbChuZXcgQmlnQnVmZmVyKHNEb21haW4pLCBjdXJ2ZSwgbG9nZ2VyKTtcbiAgICBwb2x5bm9taWFscy5TaWdtYTMgPSBuZXcgUG9seW5vbWlhbChuZXcgQmlnQnVmZmVyKHNEb21haW4pLCBjdXJ2ZSwgbG9nZ2VyKTtcblxuICAgIGF3YWl0IGZkWktleS5yZWFkVG9CdWZmZXIocG9seW5vbWlhbHMuU2lnbWExLmNvZWYsIDAsIHNEb21haW4sIHprZXlTZWN0aW9uc1taS0VZX1BMX1NJR01BX1NFQ1RJT05dWzBdLnApO1xuICAgIGF3YWl0IGZkWktleS5yZWFkVG9CdWZmZXIocG9seW5vbWlhbHMuU2lnbWEyLmNvZWYsIDAsIHNEb21haW4sIHprZXlTZWN0aW9uc1taS0VZX1BMX1NJR01BX1NFQ1RJT05dWzBdLnAgKyA1ICogc0RvbWFpbik7XG4gICAgYXdhaXQgZmRaS2V5LnJlYWRUb0J1ZmZlcihwb2x5bm9taWFscy5TaWdtYTMuY29lZiwgMCwgc0RvbWFpbiwgemtleVNlY3Rpb25zW1pLRVlfUExfU0lHTUFfU0VDVElPTl1bMF0ucCArIDEwICogc0RvbWFpbik7XG5cbiAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZGVidWcoXCLCt8K3wrcgUmVhZGluZyBTaWdtYSBldmFsdWF0aW9uc1wiKTtcbiAgICBldmFsdWF0aW9ucy5TaWdtYTEgPSBuZXcgRXZhbHVhdGlvbnMobmV3IEJpZ0J1ZmZlcihzRG9tYWluICogNCksIGN1cnZlLCBsb2dnZXIpO1xuICAgIGV2YWx1YXRpb25zLlNpZ21hMiA9IG5ldyBFdmFsdWF0aW9ucyhuZXcgQmlnQnVmZmVyKHNEb21haW4gKiA0KSwgY3VydmUsIGxvZ2dlcik7XG4gICAgZXZhbHVhdGlvbnMuU2lnbWEzID0gbmV3IEV2YWx1YXRpb25zKG5ldyBCaWdCdWZmZXIoc0RvbWFpbiAqIDQpLCBjdXJ2ZSwgbG9nZ2VyKTtcblxuICAgIGF3YWl0IGZkWktleS5yZWFkVG9CdWZmZXIoZXZhbHVhdGlvbnMuU2lnbWExLmV2YWwsIDAsIHNEb21haW4gKiA0LCB6a2V5U2VjdGlvbnNbWktFWV9QTF9TSUdNQV9TRUNUSU9OXVswXS5wICsgc0RvbWFpbik7XG4gICAgYXdhaXQgZmRaS2V5LnJlYWRUb0J1ZmZlcihldmFsdWF0aW9ucy5TaWdtYTIuZXZhbCwgMCwgc0RvbWFpbiAqIDQsIHprZXlTZWN0aW9uc1taS0VZX1BMX1NJR01BX1NFQ1RJT05dWzBdLnAgKyA2ICogc0RvbWFpbik7XG4gICAgYXdhaXQgZmRaS2V5LnJlYWRUb0J1ZmZlcihldmFsdWF0aW9ucy5TaWdtYTMuZXZhbCwgMCwgc0RvbWFpbiAqIDQsIHprZXlTZWN0aW9uc1taS0VZX1BMX1NJR01BX1NFQ1RJT05dWzBdLnAgKyAxMSAqIHNEb21haW4pO1xuXG4gICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmRlYnVnKGA+IFJlYWRpbmcgU2VjdGlvbiAke1pLRVlfUExfUFRBVV9TRUNUSU9OfS4gUG93ZXJzIG9mIFRhdWApO1xuICAgIGNvbnN0IFBUYXUgPSBhd2FpdCBiaW5GaWxlVXRpbHMucmVhZFNlY3Rpb24oZmRaS2V5LCB6a2V5U2VjdGlvbnMsIFpLRVlfUExfUFRBVV9TRUNUSU9OKTtcblxuICAgIGxldCBwdWJsaWNTaWduYWxzID0gW107XG5cbiAgICBmb3IgKGxldCBpPTE7IGk8PSB6a2V5Lm5QdWJsaWM7IGkrKykge1xuICAgICAgICBjb25zdCBwdWIgPSBidWZmV2l0bmVzcy5zbGljZShpKkZyLm44LCBpKkZyLm44K0ZyLm44KTtcbiAgICAgICAgcHVibGljU2lnbmFscy5wdXNoKFNjYWxhci5mcm9tUnByTEUocHViKSk7XG4gICAgfVxuXG4gICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmRlYnVnKFwiXCIpO1xuICAgIGlmIChsb2dnZXIpIGxvZ2dlci5kZWJ1ZyhcIj4gUk9VTkQgMVwiKTtcbiAgICBhd2FpdCByb3VuZDEoKTtcblxuICAgIGlmIChsb2dnZXIpIGxvZ2dlci5kZWJ1ZyhcIj4gUk9VTkQgMlwiKTtcbiAgICBhd2FpdCByb3VuZDIoKTtcblxuICAgIGlmIChsb2dnZXIpIGxvZ2dlci5kZWJ1ZyhcIj4gUk9VTkQgM1wiKTtcbiAgICBhd2FpdCByb3VuZDMoKTtcblxuICAgIGlmIChsb2dnZXIpIGxvZ2dlci5kZWJ1ZyhcIj4gUk9VTkQgNFwiKTtcbiAgICBhd2FpdCByb3VuZDQoKTtcblxuICAgIGlmIChsb2dnZXIpIGxvZ2dlci5kZWJ1ZyhcIj4gUk9VTkQgNVwiKTtcbiAgICBhd2FpdCByb3VuZDUoKTtcblxuICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4gICAgLy8gRmluYWwgYWRqdXN0bWVudHMgLy9cbiAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuXG4gICAgYXdhaXQgZmRaS2V5LmNsb3NlKCk7XG4gICAgYXdhaXQgZmRXdG5zLmNsb3NlKCk7XG5cbiAgICAvLyBQcmVwYXJlIHByb29mXG4gICAgbGV0IF9wcm9vZiA9IHByb29mLnRvT2JqZWN0UHJvb2YoZmFsc2UpO1xuICAgIF9wcm9vZi5wcm90b2NvbCA9IFwicGxvbmtcIjtcbiAgICBfcHJvb2YuY3VydmUgPSBjdXJ2ZS5uYW1lO1xuICAgIFxuICAgIGlmIChsb2dnZXIpIGxvZ2dlci5kZWJ1ZyhcIlBMT05LIFBST1ZFUiBGSU5JU0hFRFwiKTtcblxuICAgIHJldHVybiB7XG4gICAgICAgIHByb29mOiBzdHJpbmdpZnlCaWdJbnRzKF9wcm9vZiksXG4gICAgICAgIHB1YmxpY1NpZ25hbHM6IHN0cmluZ2lmeUJpZ0ludHMocHVibGljU2lnbmFscylcbiAgICB9O1xuXG4gICAgYXN5bmMgZnVuY3Rpb24gY2FsY3VsYXRlQWRkaXRpb25zKCkge1xuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZGVidWcoXCLCt8K3wrcgQ29tcHV0aW5nIGFkZGl0aW9uc1wiKTtcbiAgICAgICAgY29uc3QgYWRkaXRpb25zQnVmZiA9IGF3YWl0IGJpbkZpbGVVdGlscy5yZWFkU2VjdGlvbihmZFpLZXksIHprZXlTZWN0aW9ucywgWktFWV9QTF9BRERJVElPTlNfU0VDVElPTik7XG5cbiAgICAgICAgLy8gc2l6ZXM6IHdpcmVJZF94ID0gNCBieXRlcyAoMzIgYml0cyksIGZhY3Rvcl94ID0gZmllbGQgc2l6ZSBiaXRzXG4gICAgICAgIC8vIEFkZGl0aW9uIGZvcm06IHdpcmVJZF9hIHdpcmVJZF9iIGZhY3Rvcl9hIGZhY3Rvcl9iIChzaXplIGlzIDQgKyA0ICsgc0ZyICsgc0ZyKVxuICAgICAgICBjb25zdCBzU3VtID0gOCArIG44ciAqIDI7XG5cbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB6a2V5Lm5BZGRpdGlvbnM7IGkrKykge1xuICAgICAgICAgICAgaWYgKGxvZ2dlciAmJiAoMCAhPT0gaSkgJiYgKGkgJSAxMDAwMDAgPT09IDApKSBsb2dnZXIuZGVidWcoYCAgICBhZGRpdGlvbiAke2l9LyR7emtleS5uQWRkaXRpb25zfWApO1xuXG4gICAgICAgICAgICAvLyBSZWFkIGFkZGl0aW9uIHZhbHVlc1xuICAgICAgICAgICAgbGV0IG9mZnNldCA9IGkgKiBzU3VtO1xuICAgICAgICAgICAgY29uc3Qgc2lnbmFsSWQxID0gcmVhZFVJbnQzMihhZGRpdGlvbnNCdWZmLCBvZmZzZXQpO1xuICAgICAgICAgICAgb2Zmc2V0ICs9IDQ7XG4gICAgICAgICAgICBjb25zdCBzaWduYWxJZDIgPSByZWFkVUludDMyKGFkZGl0aW9uc0J1ZmYsIG9mZnNldCk7XG4gICAgICAgICAgICBvZmZzZXQgKz0gNDtcbiAgICAgICAgICAgIGNvbnN0IGZhY3RvcjEgPSBhZGRpdGlvbnNCdWZmLnNsaWNlKG9mZnNldCwgb2Zmc2V0ICsgbjhyKTtcbiAgICAgICAgICAgIG9mZnNldCArPSBuOHI7XG4gICAgICAgICAgICBjb25zdCBmYWN0b3IyID0gYWRkaXRpb25zQnVmZi5zbGljZShvZmZzZXQsIG9mZnNldCArIG44cik7XG5cbiAgICAgICAgICAgIC8vIEdldCB3aXRuZXNzIHZhbHVlXG4gICAgICAgICAgICBjb25zdCB3aXRuZXNzMSA9IGdldFdpdG5lc3Moc2lnbmFsSWQxKTtcbiAgICAgICAgICAgIGNvbnN0IHdpdG5lc3MyID0gZ2V0V2l0bmVzcyhzaWduYWxJZDIpO1xuXG4gICAgICAgICAgICAvL0NhbGN1bGF0ZSBmaW5hbCByZXN1bHRcbiAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IEZyLmFkZChGci5tdWwoZmFjdG9yMSwgd2l0bmVzczEpLCBGci5tdWwoZmFjdG9yMiwgd2l0bmVzczIpKTtcblxuICAgICAgICAgICAgYnVmZkludGVybmFsV2l0bmVzcy5zZXQocmVzdWx0LCBuOHIgKiBpKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIHJlYWRVSW50MzIoYiwgbykge1xuICAgICAgICBjb25zdCBidWZmID0gYi5zbGljZShvLCBvKzQpO1xuICAgICAgICBjb25zdCBidWZmViA9IG5ldyBEYXRhVmlldyhidWZmLmJ1ZmZlciwgYnVmZi5ieXRlT2Zmc2V0LCBidWZmLmJ5dGVMZW5ndGgpO1xuICAgICAgICByZXR1cm4gYnVmZlYuZ2V0VWludDMyKDAsIHRydWUpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldFdpdG5lc3MoaWR4KSB7XG4gICAgICAgIGlmIChpZHggPCB6a2V5Lm5WYXJzLXprZXkubkFkZGl0aW9ucykge1xuICAgICAgICAgICAgcmV0dXJuIGJ1ZmZXaXRuZXNzLnNsaWNlKGlkeCpuOHIsIGlkeCpuOHIrbjhyKTtcbiAgICAgICAgfSBlbHNlIGlmIChpZHggPCB6a2V5Lm5WYXJzKSB7XG4gICAgICAgICAgICByZXR1cm4gYnVmZkludGVybmFsV2l0bmVzcy5zbGljZSgoaWR4IC0gKHprZXkublZhcnMtemtleS5uQWRkaXRpb25zKSkqbjhyLCAoaWR4LSh6a2V5Lm5WYXJzLXprZXkubkFkZGl0aW9ucykpKm44ciArIG44cik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gY3VydmUuRnIuemVybztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGFzeW5jIGZ1bmN0aW9uIHJvdW5kMSgpIHtcbiAgICAgICAgLy8gU1RFUCAxLjEgLSBHZW5lcmF0ZSByYW5kb20gYmxpbmRpbmcgc2NhbGFycyAoYjEsIC4uLiwgYjExKSDiiIggRlxuICAgICAgICBjaGFsbGVuZ2VzLmIgPSBbXTtcbiAgICAgICAgZm9yIChsZXQgaT0xOyBpPD0xMTsgaSsrKSB7XG4gICAgICAgICAgICBjaGFsbGVuZ2VzLmJbaV0gPSBjdXJ2ZS5Gci5yYW5kb20oKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFNURVAgMS4yIC0gQ29tcHV0ZSB3aXJlIHBvbHlub21pYWxzIGEoWCksIGIoWCkgYW5kIGMoWClcbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmRlYnVnKFwiPiBDb21wdXRpbmcgQSwgQiwgQyB3aXJlIHBvbHlub21pYWxzXCIpO1xuICAgICAgICBhd2FpdCBjb21wdXRlV2lyZVBvbHlub21pYWxzKCk7XG5cbiAgICAgICAgLy8gU1RFUCAxLjMgLSBDb21wdXRlIFthXV8xLCBbYl1fMSwgW2NdXzFcbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmRlYnVnKFwiPiBDb21wdXRpbmcgQSwgQiwgQyBNU01cIik7XG4gICAgICAgIGxldCBjb21taXRBID0gYXdhaXQgcG9seW5vbWlhbHMuQS5tdWx0aUV4cG9uZW50aWF0aW9uKFBUYXUsIFwiQVwiKTtcbiAgICAgICAgbGV0IGNvbW1pdEIgPSBhd2FpdCBwb2x5bm9taWFscy5CLm11bHRpRXhwb25lbnRpYXRpb24oUFRhdSwgXCJCXCIpO1xuICAgICAgICBsZXQgY29tbWl0QyA9IGF3YWl0IHBvbHlub21pYWxzLkMubXVsdGlFeHBvbmVudGlhdGlvbihQVGF1LCBcIkNcIik7XG5cbiAgICAgICAgLy8gRmlyc3Qgb3V0cHV0IG9mIHRoZSBwcm92ZXIgaXMgKFtBXV8xLCBbQl1fMSwgW0NdXzEpXG4gICAgICAgIHByb29mLmFkZFBvbHlub21pYWwoXCJBXCIsIGNvbW1pdEEpO1xuICAgICAgICBwcm9vZi5hZGRQb2x5bm9taWFsKFwiQlwiLCBjb21taXRCKTtcbiAgICAgICAgcHJvb2YuYWRkUG9seW5vbWlhbChcIkNcIiwgY29tbWl0Qyk7XG5cbiAgICAgICAgcmV0dXJuIDA7XG4gICAgfVxuXG4gICAgYXN5bmMgZnVuY3Rpb24gY29tcHV0ZVdpcmVQb2x5bm9taWFscygpIHtcbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmRlYnVnKFwiwrfCt8K3IFJlYWRpbmcgZGF0YSBmcm9tIHprZXkgZmlsZVwiKTtcblxuICAgICAgICAvLyBCdWlsZCBBLCBCIGFuZCBDIGV2YWx1YXRpb25zIGJ1ZmZlciBmcm9tIHprZXkgYW5kIHdpdG5lc3MgZmlsZXNcbiAgICAgICAgYnVmZmVycy5BID0gbmV3IEJpZ0J1ZmZlcihzRG9tYWluKTtcbiAgICAgICAgYnVmZmVycy5CID0gbmV3IEJpZ0J1ZmZlcihzRG9tYWluKTtcbiAgICAgICAgYnVmZmVycy5DID0gbmV3IEJpZ0J1ZmZlcihzRG9tYWluKTtcblxuICAgICAgICAvLyBSZWFkIHprZXkgZmlsZSB0byB0aGUgYnVmZmVyc1xuICAgICAgICBjb25zdCBhTWFwQnVmZiA9IGF3YWl0IGJpbkZpbGVVdGlscy5yZWFkU2VjdGlvbihmZFpLZXksIHprZXlTZWN0aW9ucywgWktFWV9QTF9BX01BUF9TRUNUSU9OKTtcbiAgICAgICAgY29uc3QgYk1hcEJ1ZmYgPSBhd2FpdCBiaW5GaWxlVXRpbHMucmVhZFNlY3Rpb24oZmRaS2V5LCB6a2V5U2VjdGlvbnMsIFpLRVlfUExfQl9NQVBfU0VDVElPTik7XG4gICAgICAgIGNvbnN0IGNNYXBCdWZmID0gYXdhaXQgYmluRmlsZVV0aWxzLnJlYWRTZWN0aW9uKGZkWktleSwgemtleVNlY3Rpb25zLCBaS0VZX1BMX0NfTUFQX1NFQ1RJT04pO1xuXG4gICAgICAgIC8vIENvbXB1dGUgYWxsIHdpdG5lc3MgZnJvbSBzaWduYWwgaWRzIGFuZCBzZXQgdGhlbSB0byBBLEIgJiBDIGJ1ZmZlcnNcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB6a2V5Lm5Db25zdHJhaW50czsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCBpX3NGciA9IGkgKiBuOHI7XG4gICAgICAgICAgICBjb25zdCBvZmZzZXQgPSBpICogNDtcblxuICAgICAgICAgICAgLy8gQ29tcHV0ZSBBIHZhbHVlIGZyb20gYSBzaWduYWwgaWRcbiAgICAgICAgICAgIGNvbnN0IHNpZ25hbElkQSA9IHJlYWRVSW50MzIoYU1hcEJ1ZmYsIG9mZnNldCk7XG4gICAgICAgICAgICBidWZmZXJzLkEuc2V0KGdldFdpdG5lc3Moc2lnbmFsSWRBKSwgaV9zRnIpO1xuXG4gICAgICAgICAgICAvLyBDb21wdXRlIEIgdmFsdWUgZnJvbSBhIHNpZ25hbCBpZFxuICAgICAgICAgICAgY29uc3Qgc2lnbmFsSWRCID0gcmVhZFVJbnQzMihiTWFwQnVmZiwgb2Zmc2V0KTtcbiAgICAgICAgICAgIGJ1ZmZlcnMuQi5zZXQoZ2V0V2l0bmVzcyhzaWduYWxJZEIpLCBpX3NGcik7XG5cbiAgICAgICAgICAgIC8vIENvbXB1dGUgQyB2YWx1ZSBmcm9tIGEgc2lnbmFsIGlkXG4gICAgICAgICAgICBjb25zdCBzaWduYWxJZEMgPSByZWFkVUludDMyKGNNYXBCdWZmLCBvZmZzZXQpO1xuICAgICAgICAgICAgYnVmZmVycy5DLnNldChnZXRXaXRuZXNzKHNpZ25hbElkQyksIGlfc0ZyKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGJ1ZmZlcnMuQSA9IGF3YWl0IEZyLmJhdGNoVG9Nb250Z29tZXJ5KGJ1ZmZlcnMuQSk7XG4gICAgICAgIGJ1ZmZlcnMuQiA9IGF3YWl0IEZyLmJhdGNoVG9Nb250Z29tZXJ5KGJ1ZmZlcnMuQik7XG4gICAgICAgIGJ1ZmZlcnMuQyA9IGF3YWl0IEZyLmJhdGNoVG9Nb250Z29tZXJ5KGJ1ZmZlcnMuQyk7XG5cbiAgICAgICAgLy8gQ29tcHV0ZSB0aGUgY29lZmZpY2llbnRzIG9mIHRoZSB3aXJlIHBvbHlub21pYWxzIGEoWCksIGIoWCkgYW5kIGMoWCkgZnJvbSBBLEIgJiBDIGJ1ZmZlcnNcbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmRlYnVnKFwiwrfCt8K3IENvbXB1dGluZyBBIGlmZnRcIik7XG4gICAgICAgIHBvbHlub21pYWxzLkEgPSBhd2FpdCBQb2x5bm9taWFsLmZyb21FdmFsdWF0aW9ucyhidWZmZXJzLkEsIGN1cnZlLCBsb2dnZXIpO1xuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZGVidWcoXCLCt8K3wrcgQ29tcHV0aW5nIEIgaWZmdFwiKTtcbiAgICAgICAgcG9seW5vbWlhbHMuQiA9IGF3YWl0IFBvbHlub21pYWwuZnJvbUV2YWx1YXRpb25zKGJ1ZmZlcnMuQiwgY3VydmUsIGxvZ2dlcik7XG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5kZWJ1ZyhcIsK3wrfCtyBDb21wdXRpbmcgQyBpZmZ0XCIpO1xuICAgICAgICBwb2x5bm9taWFscy5DID0gYXdhaXQgUG9seW5vbWlhbC5mcm9tRXZhbHVhdGlvbnMoYnVmZmVycy5DLCBjdXJ2ZSwgbG9nZ2VyKTtcblxuICAgICAgICAvLyBDb21wdXRlIGV4dGVuZGVkIGV2YWx1YXRpb25zIG9mIGEoWCksIGIoWCkgYW5kIGMoWCkgcG9seW5vbWlhbHNcbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmRlYnVnKFwiwrfCt8K3IENvbXB1dGluZyBBIGZmdFwiKTtcbiAgICAgICAgZXZhbHVhdGlvbnMuQSA9IGF3YWl0IEV2YWx1YXRpb25zLmZyb21Qb2x5bm9taWFsKHBvbHlub21pYWxzLkEsIDQsIGN1cnZlLCBsb2dnZXIpO1xuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZGVidWcoXCLCt8K3wrcgQ29tcHV0aW5nIEIgZmZ0XCIpO1xuICAgICAgICBldmFsdWF0aW9ucy5CID0gYXdhaXQgRXZhbHVhdGlvbnMuZnJvbVBvbHlub21pYWwocG9seW5vbWlhbHMuQiwgNCwgY3VydmUsIGxvZ2dlcik7XG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5kZWJ1ZyhcIsK3wrfCtyBDb21wdXRpbmcgQyBmZnRcIik7XG4gICAgICAgIGV2YWx1YXRpb25zLkMgPSBhd2FpdCBFdmFsdWF0aW9ucy5mcm9tUG9seW5vbWlhbChwb2x5bm9taWFscy5DLCA0LCBjdXJ2ZSwgbG9nZ2VyKTtcblxuICAgICAgICAvLyBCbGluZCBhKFgpLCBiKFgpIGFuZCBjKFgpIHBvbHlub21pYWxzIGNvZWZmaWNpZW50cyB3aXRoIGJsaW5kaW5nIHNjYWxhcnMgYlxuICAgICAgICBwb2x5bm9taWFscy5BLmJsaW5kQ29lZmZpY2llbnRzKFtjaGFsbGVuZ2VzLmJbMl0sIGNoYWxsZW5nZXMuYlsxXV0pO1xuICAgICAgICBwb2x5bm9taWFscy5CLmJsaW5kQ29lZmZpY2llbnRzKFtjaGFsbGVuZ2VzLmJbNF0sIGNoYWxsZW5nZXMuYlszXV0pO1xuICAgICAgICBwb2x5bm9taWFscy5DLmJsaW5kQ29lZmZpY2llbnRzKFtjaGFsbGVuZ2VzLmJbNl0sIGNoYWxsZW5nZXMuYls1XV0pO1xuXG4gICAgICAgIC8vIENoZWNrIGRlZ3JlZXNcbiAgICAgICAgaWYgKHBvbHlub21pYWxzLkEuZGVncmVlKCkgPj0gemtleS5kb21haW5TaXplICsgMikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiQSBQb2x5bm9taWFsIGlzIG5vdCB3ZWxsIGNhbGN1bGF0ZWRcIik7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHBvbHlub21pYWxzLkIuZGVncmVlKCkgPj0gemtleS5kb21haW5TaXplICsgMikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiQiBQb2x5bm9taWFsIGlzIG5vdCB3ZWxsIGNhbGN1bGF0ZWRcIik7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHBvbHlub21pYWxzLkMuZGVncmVlKCkgPj0gemtleS5kb21haW5TaXplICsgMikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiQyBQb2x5bm9taWFsIGlzIG5vdCB3ZWxsIGNhbGN1bGF0ZWRcIik7XG4gICAgICAgIH0gICAgICAgIFxuICAgIH1cblxuICAgIGFzeW5jIGZ1bmN0aW9uIHJvdW5kMigpIHtcbiAgICAgICAgLy8gU1RFUCAyLjEgLSBDb21wdXRlIHBlcm11dGF0aW9uIGNoYWxsZW5nZSBiZXRhIGFuZCBnYW1tYSDiiIggRlxuICAgICAgICAvLyBDb21wdXRlIHBlcm11dGF0aW9uIGNoYWxsZW5nZSBiZXRhXG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5kZWJ1ZyhcIj4gQ29tcHV0aW5nIGNoYWxsZW5nZXMgYmV0YSBhbmQgZ2FtbWFcIik7XG4gICAgICAgIHRyYW5zY3JpcHQucmVzZXQoKTtcblxuICAgICAgICB0cmFuc2NyaXB0LmFkZFBvbENvbW1pdG1lbnQoemtleS5RbSk7XG4gICAgICAgIHRyYW5zY3JpcHQuYWRkUG9sQ29tbWl0bWVudCh6a2V5LlFsKTtcbiAgICAgICAgdHJhbnNjcmlwdC5hZGRQb2xDb21taXRtZW50KHprZXkuUXIpO1xuICAgICAgICB0cmFuc2NyaXB0LmFkZFBvbENvbW1pdG1lbnQoemtleS5Rbyk7XG4gICAgICAgIHRyYW5zY3JpcHQuYWRkUG9sQ29tbWl0bWVudCh6a2V5LlFjKTtcbiAgICAgICAgdHJhbnNjcmlwdC5hZGRQb2xDb21taXRtZW50KHprZXkuUzEpO1xuICAgICAgICB0cmFuc2NyaXB0LmFkZFBvbENvbW1pdG1lbnQoemtleS5TMik7XG4gICAgICAgIHRyYW5zY3JpcHQuYWRkUG9sQ29tbWl0bWVudCh6a2V5LlMzKTtcblxuICAgICAgICAvLyBBZGQgQSB0byB0aGUgdHJhbnNjcmlwdFxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHprZXkublB1YmxpYzsgaSsrKSB7XG4gICAgICAgICAgICB0cmFuc2NyaXB0LmFkZFNjYWxhcihidWZmZXJzLkEuc2xpY2UoaSAqIG44ciwgaSAqIG44ciArIG44cikpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gQWRkIEEsIEIsIEMgdG8gdGhlIHRyYW5zY3JpcHRcbiAgICAgICAgdHJhbnNjcmlwdC5hZGRQb2xDb21taXRtZW50KHByb29mLmdldFBvbHlub21pYWwoXCJBXCIpKTtcbiAgICAgICAgdHJhbnNjcmlwdC5hZGRQb2xDb21taXRtZW50KHByb29mLmdldFBvbHlub21pYWwoXCJCXCIpKTtcbiAgICAgICAgdHJhbnNjcmlwdC5hZGRQb2xDb21taXRtZW50KHByb29mLmdldFBvbHlub21pYWwoXCJDXCIpKTtcblxuICAgICAgICBjaGFsbGVuZ2VzLmJldGEgPSB0cmFuc2NyaXB0LmdldENoYWxsZW5nZSgpO1xuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZGVidWcoXCLCt8K3wrcgY2hhbGxlbmdlcy5iZXRhOiBcIiArIEZyLnRvU3RyaW5nKGNoYWxsZW5nZXMuYmV0YSwgMTYpKTtcblxuICAgICAgICAvLyBDb21wdXRlIHBlcm11dGF0aW9uIGNoYWxsZW5nZSBnYW1tYVxuICAgICAgICB0cmFuc2NyaXB0LnJlc2V0KCk7XG4gICAgICAgIHRyYW5zY3JpcHQuYWRkU2NhbGFyKGNoYWxsZW5nZXMuYmV0YSk7XG4gICAgICAgIGNoYWxsZW5nZXMuZ2FtbWEgPSB0cmFuc2NyaXB0LmdldENoYWxsZW5nZSgpO1xuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZGVidWcoXCLCt8K3wrcgY2hhbGxlbmdlcy5nYW1tYTogXCIgKyBGci50b1N0cmluZyhjaGFsbGVuZ2VzLmdhbW1hLCAxNikpO1xuICAgIFxuICAgICAgICAvLyBTVEVQIDIuMiAtIENvbXB1dGUgcGVybXV0YXRpb24gcG9seW5vbWlhbCB6KFgpXG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5kZWJ1ZyhcIj4gQ29tcHV0aW5nIFogcG9seW5vbWlhbFwiKTtcbiAgICAgICAgYXdhaXQgY29tcHV0ZVooKTtcblxuICAgICAgICAvLyBTVEVQIDIuMyAtIENvbXB1dGUgcGVybXV0YXRpb24gW3pdXzFcbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmRlYnVnKFwiPiBDb21wdXRpbmcgWiBNU01cIik7XG4gICAgICAgIGxldCBjb21taXRaID0gYXdhaXQgcG9seW5vbWlhbHMuWi5tdWx0aUV4cG9uZW50aWF0aW9uKFBUYXUsIFwiWlwiKTtcblxuICAgICAgICAvLyBTZWNvbmQgb3V0cHV0IG9mIHRoZSBwcm92ZXIgaXMgKFtaXV8xKVxuICAgICAgICBwcm9vZi5hZGRQb2x5bm9taWFsKFwiWlwiLCBjb21taXRaKTtcbiAgICB9XG5cbiAgICBhc3luYyBmdW5jdGlvbiBjb21wdXRlWigpIHtcbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmRlYnVnKFwiwrfCt8K3IENvbXB1dGluZyBaIGV2YWx1YXRpb25zXCIpO1xuXG4gICAgICAgIGxldCBudW1BcnIgPSBuZXcgQmlnQnVmZmVyKHNEb21haW4pO1xuICAgICAgICBsZXQgZGVuQXJyID0gbmV3IEJpZ0J1ZmZlcihzRG9tYWluKTtcblxuICAgICAgICAvLyBTZXQgdGhlIGZpcnN0IHZhbHVlcyB0byAxXG4gICAgICAgIG51bUFyci5zZXQoRnIub25lLCAwKTtcbiAgICAgICAgZGVuQXJyLnNldChGci5vbmUsIDApO1xuXG4gICAgICAgIC8vIFNldCBpbml0aWFsIG9tZWdhXG4gICAgICAgIGxldCB3ID0gRnIub25lO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHprZXkuZG9tYWluU2l6ZTsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCBpX244ciA9IGkgKiBuOHI7XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIGNvbnN0IGEgPSBidWZmZXJzLkEuc2xpY2UoaV9uOHIsIGlfbjhyICsgbjhyKTtcbiAgICAgICAgICAgIGNvbnN0IGIgPSBidWZmZXJzLkIuc2xpY2UoaV9uOHIsIGlfbjhyICsgbjhyKTtcbiAgICAgICAgICAgIGNvbnN0IGMgPSBidWZmZXJzLkMuc2xpY2UoaV9uOHIsIGlfbjhyICsgbjhyKTtcblxuICAgICAgICAgICAgLy8gWihYKSA6PSBudW1BcnIgLyBkZW5BcnJcbiAgICAgICAgICAgIC8vIG51bUFyciA6PSAoYSArIGJldGHCt8+JICsgZ2FtbWEpKGIgKyBiZXRhwrfPicK3azEgKyBnYW1tYSkoYyArIGJldGHCt8+JwrdrMiArIGdhbW1hKVxuICAgICAgICAgICAgY29uc3QgYmV0YXcgPSBGci5tdWwoY2hhbGxlbmdlcy5iZXRhLCB3KTtcblxuICAgICAgICAgICAgbGV0IG4xID0gRnIuYWRkKGEsIGJldGF3KTtcbiAgICAgICAgICAgIG4xID0gRnIuYWRkKG4xLCBjaGFsbGVuZ2VzLmdhbW1hKTtcblxuICAgICAgICAgICAgbGV0IG4yID0gRnIuYWRkKGIsIEZyLm11bCh6a2V5LmsxLCBiZXRhdykpO1xuICAgICAgICAgICAgbjIgPSBGci5hZGQobjIsIGNoYWxsZW5nZXMuZ2FtbWEpO1xuXG4gICAgICAgICAgICBsZXQgbjMgPSBGci5hZGQoYywgRnIubXVsKHprZXkuazIsIGJldGF3KSk7XG4gICAgICAgICAgICBuMyA9IEZyLmFkZChuMywgY2hhbGxlbmdlcy5nYW1tYSk7XG5cbiAgICAgICAgICAgIGxldCBudW0gPSBGci5tdWwobjEsIEZyLm11bChuMiwgbjMpKTtcblxuICAgICAgICAgICAgLy8gZGVuQXJyIDo9IChhICsgYmV0YcK3c2lnbWExICsgZ2FtbWEpKGIgKyBiZXRhwrdzaWdtYTIgKyBnYW1tYSkoYyArIGJldGHCt3NpZ21hMyArIGdhbW1hKVxuICAgICAgICAgICAgbGV0IGQxID0gRnIuYWRkKGEsIEZyLm11bChldmFsdWF0aW9ucy5TaWdtYTEuZ2V0RXZhbHVhdGlvbihpICogNCksIGNoYWxsZW5nZXMuYmV0YSkpO1xuICAgICAgICAgICAgZDEgPSBGci5hZGQoZDEsIGNoYWxsZW5nZXMuZ2FtbWEpO1xuXG4gICAgICAgICAgICBsZXQgZDIgPSBGci5hZGQoYiwgRnIubXVsKGV2YWx1YXRpb25zLlNpZ21hMi5nZXRFdmFsdWF0aW9uKGkgKiA0KSwgY2hhbGxlbmdlcy5iZXRhKSk7XG4gICAgICAgICAgICBkMiA9IEZyLmFkZChkMiwgY2hhbGxlbmdlcy5nYW1tYSk7XG5cbiAgICAgICAgICAgIGxldCBkMyA9IEZyLmFkZChjLCBGci5tdWwoZXZhbHVhdGlvbnMuU2lnbWEzLmdldEV2YWx1YXRpb24oaSAqIDQpLCBjaGFsbGVuZ2VzLmJldGEpKTtcbiAgICAgICAgICAgIGQzID0gRnIuYWRkKGQzLCBjaGFsbGVuZ2VzLmdhbW1hKTtcblxuICAgICAgICAgICAgbGV0IGRlbiA9IEZyLm11bChkMSwgRnIubXVsKGQyLCBkMykpO1xuXG4gICAgICAgICAgICAvLyBNdWx0aXBseSBjdXJyZW50IG51bSB2YWx1ZSB3aXRoIHRoZSBwcmV2aW91cyBvbmUgc2F2ZWQgaW4gbnVtQXJyXG4gICAgICAgICAgICBudW0gPSBGci5tdWwobnVtQXJyLnNsaWNlKGlfbjhyLCBpX244ciArIG44ciksIG51bSk7XG4gICAgICAgICAgICBudW1BcnIuc2V0KG51bSwgKChpICsgMSkgJSB6a2V5LmRvbWFpblNpemUpICogbjhyKTtcblxuICAgICAgICAgICAgLy8gTXVsdGlwbHkgY3VycmVudCBkZW4gdmFsdWUgd2l0aCB0aGUgcHJldmlvdXMgb25lIHNhdmVkIGluIGRlbkFyclxuICAgICAgICAgICAgZGVuID0gRnIubXVsKGRlbkFyci5zbGljZShpX244ciwgaV9uOHIgKyBuOHIpLCBkZW4pO1xuICAgICAgICAgICAgZGVuQXJyLnNldChkZW4sICgoaSArIDEpICUgemtleS5kb21haW5TaXplKSAqIG44cik7XG5cbiAgICAgICAgICAgIHcgPSBGci5tdWwodywgRnIud1t6a2V5LnBvd2VyXSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBDb21wdXRlIHRoZSBpbnZlcnNlIG9mIGRlbkFyciB0byBjb21wdXRlIGluIHRoZSBuZXh0IGNvbW1hbmQgdGhlXG4gICAgICAgIC8vIGRpdmlzaW9uIG51bUFyci9kZW5BcnIgYnkgbXVsdGlwbHlpbmcgbnVtIMK3IDEvZGVuQXJyXG4gICAgICAgIGRlbkFyciA9IGF3YWl0IEZyLmJhdGNoSW52ZXJzZShkZW5BcnIpO1xuXG4gICAgICAgIC8vIFRPRE86IERvIGl0IGluIGFzc2VtYmx5IGFuZCBpbiBwYXJhbGxlbFxuICAgICAgICAvLyBNdWx0aXBseSBudW1BcnIgwrcgZGVuQXJyIHdoZXJlIGRlbkFyciB3YXMgaW52ZXJ0ZWQgaW4gdGhlIHByZXZpb3VzIGNvbW1hbmRcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB6a2V5LmRvbWFpblNpemU7IGkrKykge1xuICAgICAgICAgICAgY29uc3QgaV9zRnIgPSBpICogbjhyO1xuXG4gICAgICAgICAgICBjb25zdCB6ID0gRnIubXVsKG51bUFyci5zbGljZShpX3NGciwgaV9zRnIgKyBuOHIpLCBkZW5BcnIuc2xpY2UoaV9zRnIsIGlfc0ZyICsgbjhyKSk7XG4gICAgICAgICAgICBudW1BcnIuc2V0KHosIGlfc0ZyKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEZyb20gbm93IG9uIHRoZSB2YWx1ZXMgc2F2ZWQgb24gbnVtQXJyIHdpbGwgYmUgWihYKSBidWZmZXJcbiAgICAgICAgYnVmZmVycy5aID0gbnVtQXJyO1xuXG4gICAgICAgIGlmICghRnIuZXEobnVtQXJyLnNsaWNlKDAsIG44ciksIEZyLm9uZSkpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkNvcHkgY29uc3RyYWludHMgZG9lcyBub3QgbWF0Y2hcIik7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBDb21wdXRlIHBvbHlub21pYWwgY29lZmZpY2llbnRzIHooWCkgZnJvbSBidWZmZXJzLlpcbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmRlYnVnKFwiwrfCt8K3IENvbXB1dGluZyBaIGlmZnRcIik7XG4gICAgICAgIHBvbHlub21pYWxzLlogPSBhd2FpdCBQb2x5bm9taWFsLmZyb21FdmFsdWF0aW9ucyhidWZmZXJzLlosIGN1cnZlLCBsb2dnZXIpO1xuXG4gICAgICAgIC8vIENvbXB1dGUgZXh0ZW5kZWQgZXZhbHVhdGlvbnMgb2YgeihYKSBwb2x5bm9taWFsXG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5kZWJ1ZyhcIsK3wrfCtyBDb21wdXRpbmcgWiBmZnRcIik7XG4gICAgICAgIGV2YWx1YXRpb25zLlogPSBhd2FpdCBFdmFsdWF0aW9ucy5mcm9tUG9seW5vbWlhbChwb2x5bm9taWFscy5aLCA0LCBjdXJ2ZSwgbG9nZ2VyKTtcblxuICAgICAgICAvLyBCbGluZCB6KFgpIHBvbHlub21pYWwgY29lZmZpY2llbnRzIHdpdGggYmxpbmRpbmcgc2NhbGFycyBiXG4gICAgICAgIHBvbHlub21pYWxzLlouYmxpbmRDb2VmZmljaWVudHMoW2NoYWxsZW5nZXMuYls5XSwgY2hhbGxlbmdlcy5iWzhdLCBjaGFsbGVuZ2VzLmJbN11dKTtcblxuICAgICAgICAvLyBDaGVjayBkZWdyZWVcbiAgICAgICAgaWYgKHBvbHlub21pYWxzLlouZGVncmVlKCkgPj0gemtleS5kb21haW5TaXplICsgMykge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiWiBQb2x5bm9taWFsIGlzIG5vdCB3ZWxsIGNhbGN1bGF0ZWRcIik7XG4gICAgICAgIH1cblxuICAgICAgICBkZWxldGUgYnVmZmVycy5aO1xuICAgIH1cblxuICAgIGFzeW5jIGZ1bmN0aW9uIHJvdW5kMygpIHtcbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmRlYnVnKFwiPiBDb21wdXRpbmcgY2hhbGxlbmdlIGFscGhhXCIpO1xuXG4gICAgICAgIC8vIFNURVAgMy4xIC0gQ29tcHV0ZSBldmFsdWF0aW9uIGNoYWxsZW5nZSBhbHBoYSDiiIggRlxuICAgICAgICB0cmFuc2NyaXB0LnJlc2V0KCk7XG4gICAgICAgIHRyYW5zY3JpcHQuYWRkU2NhbGFyKGNoYWxsZW5nZXMuYmV0YSk7XG4gICAgICAgIHRyYW5zY3JpcHQuYWRkU2NhbGFyKGNoYWxsZW5nZXMuZ2FtbWEpO1xuICAgICAgICB0cmFuc2NyaXB0LmFkZFBvbENvbW1pdG1lbnQocHJvb2YuZ2V0UG9seW5vbWlhbChcIlpcIikpO1xuXG4gICAgICAgIGNoYWxsZW5nZXMuYWxwaGEgPSB0cmFuc2NyaXB0LmdldENoYWxsZW5nZSgpO1xuICAgICAgICBjaGFsbGVuZ2VzLmFscGhhMiA9IEZyLnNxdWFyZShjaGFsbGVuZ2VzLmFscGhhKTtcbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmRlYnVnKFwiwrfCt8K3IGNoYWxsZW5nZXMuYWxwaGE6IFwiICsgRnIudG9TdHJpbmcoY2hhbGxlbmdlcy5hbHBoYSwgMTYpKTtcblxuICAgICAgICAvLyBDb21wdXRlIHF1b3RpZW50IHBvbHlub21pYWwgVChYKVxuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZGVidWcoXCI+IENvbXB1dGluZyBUIHBvbHlub21pYWxcIik7XG4gICAgICAgIGF3YWl0IGNvbXB1dGVUKCk7XG5cbiAgICAgICAgLy8gQ29tcHV0ZSBbVDFdXzEsIFtUMl1fMSwgW1QzXV8xXG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5kZWJ1ZyhcIj4gQ29tcHV0aW5nIFQgTVNNXCIpO1xuICAgICAgICBsZXQgY29tbWl0VDEgPSBhd2FpdCBwb2x5bm9taWFscy5UMS5tdWx0aUV4cG9uZW50aWF0aW9uKFBUYXUsIFwiVDFcIik7XG4gICAgICAgIGxldCBjb21taXRUMiA9IGF3YWl0IHBvbHlub21pYWxzLlQyLm11bHRpRXhwb25lbnRpYXRpb24oUFRhdSwgXCJUMlwiKTtcbiAgICAgICAgbGV0IGNvbW1pdFQzID0gYXdhaXQgcG9seW5vbWlhbHMuVDMubXVsdGlFeHBvbmVudGlhdGlvbihQVGF1LCBcIlQzXCIpO1xuXG4gICAgICAgIC8vIFRoaXJkIG91dHB1dCBvZiB0aGUgcHJvdmVyIGlzIChbVDFdXzEsIFtUMl1fMSwgW1QzXV8xKVxuICAgICAgICBwcm9vZi5hZGRQb2x5bm9taWFsKFwiVDFcIiwgY29tbWl0VDEpO1xuICAgICAgICBwcm9vZi5hZGRQb2x5bm9taWFsKFwiVDJcIiwgY29tbWl0VDIpO1xuICAgICAgICBwcm9vZi5hZGRQb2x5bm9taWFsKFwiVDNcIiwgY29tbWl0VDMpOyAgICAgICAgXG4gICAgfVxuXG4gICAgYXN5bmMgZnVuY3Rpb24gY29tcHV0ZVQoKSB7XG4gICAgICAgIGlmIChsb2dnZXIpXG4gICAgICAgICAgICBsb2dnZXIuZGVidWcoYMK3wrfCtyBSZWFkaW5nIHNlY3Rpb25zICR7WktFWV9QTF9RTF9TRUNUSU9OfSwgJHtaS0VZX1BMX1FSX1NFQ1RJT059YCArXG4gICAgICAgICAgICAgICAgYCwgJHtaS0VZX1BMX1FNX1NFQ1RJT059LCAke1pLRVlfUExfUU9fU0VDVElPTn0sICR7WktFWV9QTF9RQ19TRUNUSU9OfS4gUSBzZWxlY3RvcnNgKTtcbiAgICAgICAgLy8gUmVzZXJ2ZSBtZW1vcnkgZm9yIFEncyBldmFsdWF0aW9uc1xuICAgICAgICBldmFsdWF0aW9ucy5RTCA9IG5ldyBFdmFsdWF0aW9ucyhuZXcgQmlnQnVmZmVyKHNEb21haW4gKiA0KSwgY3VydmUsIGxvZ2dlcik7XG4gICAgICAgIGV2YWx1YXRpb25zLlFSID0gbmV3IEV2YWx1YXRpb25zKG5ldyBCaWdCdWZmZXIoc0RvbWFpbiAqIDQpLCBjdXJ2ZSwgbG9nZ2VyKTtcbiAgICAgICAgZXZhbHVhdGlvbnMuUU0gPSBuZXcgRXZhbHVhdGlvbnMobmV3IEJpZ0J1ZmZlcihzRG9tYWluICogNCksIGN1cnZlLCBsb2dnZXIpO1xuICAgICAgICBldmFsdWF0aW9ucy5RTyA9IG5ldyBFdmFsdWF0aW9ucyhuZXcgQmlnQnVmZmVyKHNEb21haW4gKiA0KSwgY3VydmUsIGxvZ2dlcik7XG4gICAgICAgIGV2YWx1YXRpb25zLlFDID0gbmV3IEV2YWx1YXRpb25zKG5ldyBCaWdCdWZmZXIoc0RvbWFpbiAqIDQpLCBjdXJ2ZSwgbG9nZ2VyKTtcblxuICAgICAgICAvLyBSZWFkIFEncyBldmFsdWF0aW9ucyBmcm9tIHprZXkgZmlsZVxuICAgICAgICBhd2FpdCBmZFpLZXkucmVhZFRvQnVmZmVyKGV2YWx1YXRpb25zLlFMLmV2YWwsIDAsIHNEb21haW4gKiA0LCB6a2V5U2VjdGlvbnNbWktFWV9QTF9RTF9TRUNUSU9OXVswXS5wICsgc0RvbWFpbik7XG4gICAgICAgIGF3YWl0IGZkWktleS5yZWFkVG9CdWZmZXIoZXZhbHVhdGlvbnMuUVIuZXZhbCwgMCwgc0RvbWFpbiAqIDQsIHprZXlTZWN0aW9uc1taS0VZX1BMX1FSX1NFQ1RJT05dWzBdLnAgKyBzRG9tYWluKTtcbiAgICAgICAgYXdhaXQgZmRaS2V5LnJlYWRUb0J1ZmZlcihldmFsdWF0aW9ucy5RTS5ldmFsLCAwLCBzRG9tYWluICogNCwgemtleVNlY3Rpb25zW1pLRVlfUExfUU1fU0VDVElPTl1bMF0ucCArIHNEb21haW4pO1xuICAgICAgICBhd2FpdCBmZFpLZXkucmVhZFRvQnVmZmVyKGV2YWx1YXRpb25zLlFPLmV2YWwsIDAsIHNEb21haW4gKiA0LCB6a2V5U2VjdGlvbnNbWktFWV9QTF9RT19TRUNUSU9OXVswXS5wICsgc0RvbWFpbik7XG4gICAgICAgIGF3YWl0IGZkWktleS5yZWFkVG9CdWZmZXIoZXZhbHVhdGlvbnMuUUMuZXZhbCwgMCwgc0RvbWFpbiAqIDQsIHprZXlTZWN0aW9uc1taS0VZX1BMX1FDX1NFQ1RJT05dWzBdLnAgKyBzRG9tYWluKTtcblxuICAgICAgICAvLyBSZWFkIExhZ3JhbmdlIHBvbHlub21pYWxzICYgZXZhbHVhdGlvbnMgZnJvbSB6a2V5IGZpbGVcbiAgICAgICAgZXZhbHVhdGlvbnMuTGFncmFuZ2UgPSBuZXcgRXZhbHVhdGlvbnMobmV3IEJpZ0J1ZmZlcihzRG9tYWluICogNCAqIHprZXkublB1YmxpYyksIGN1cnZlLCBsb2dnZXIpO1xuXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgemtleS5uUHVibGljOyBpKyspIHtcbiAgICAgICAgICAgIGF3YWl0IGZkWktleS5yZWFkVG9CdWZmZXIoZXZhbHVhdGlvbnMuTGFncmFuZ2UuZXZhbCwgaSAqIHNEb21haW4gKiA0LCBzRG9tYWluICogNCwgemtleVNlY3Rpb25zW1pLRVlfUExfTEFHUkFOR0VfU0VDVElPTl1bMF0ucCArIGkgKiA1ICogc0RvbWFpbiArIHNEb21haW4pO1xuICAgICAgICB9XG5cbiAgICAgICAgYnVmZmVycy5UID0gbmV3IEJpZ0J1ZmZlcihzRG9tYWluICogNCk7XG4gICAgICAgIGJ1ZmZlcnMuVHogPSBuZXcgQmlnQnVmZmVyKHNEb21haW4gKiA0KTtcblxuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZGVidWcoXCLCt8K3wrcgQ29tcHV0aW5nIFQgZXZhbHVhdGlvbnNcIik7XG5cbiAgICAgICAgbGV0IHcgPSBGci5vbmU7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgemtleS5kb21haW5TaXplICogNDsgaSsrKSB7XG4gICAgICAgICAgICBpZiAobG9nZ2VyICYmICgwICE9PSBpKSAmJiAoaSAlIDEwMDAwMCA9PT0gMCkpXG4gICAgICAgICAgICAgICAgbG9nZ2VyLmRlYnVnKGAgICAgICBUIGV2YWx1YXRpb24gJHtpfS8ke3prZXkuZG9tYWluU2l6ZSAqIDR9YCk7XG5cbiAgICAgICAgICAgIGNvbnN0IGEgPSBldmFsdWF0aW9ucy5BLmdldEV2YWx1YXRpb24oaSk7XG4gICAgICAgICAgICBjb25zdCBiID0gZXZhbHVhdGlvbnMuQi5nZXRFdmFsdWF0aW9uKGkpO1xuICAgICAgICAgICAgY29uc3QgYyA9IGV2YWx1YXRpb25zLkMuZ2V0RXZhbHVhdGlvbihpKTtcbiAgICAgICAgICAgIGNvbnN0IHogPSBldmFsdWF0aW9ucy5aLmdldEV2YWx1YXRpb24oaSk7XG4gICAgICAgICAgICBjb25zdCB6dyA9IGV2YWx1YXRpb25zLlouZ2V0RXZhbHVhdGlvbigoemtleS5kb21haW5TaXplICogNCArIDQgKyBpKSAlICh6a2V5LmRvbWFpblNpemUgKiA0KSk7XG5cbiAgICAgICAgICAgIGNvbnN0IHFtID0gZXZhbHVhdGlvbnMuUU0uZ2V0RXZhbHVhdGlvbihpKTtcbiAgICAgICAgICAgIGNvbnN0IHFsID0gZXZhbHVhdGlvbnMuUUwuZ2V0RXZhbHVhdGlvbihpKTtcbiAgICAgICAgICAgIGNvbnN0IHFyID0gZXZhbHVhdGlvbnMuUVIuZ2V0RXZhbHVhdGlvbihpKTtcbiAgICAgICAgICAgIGNvbnN0IHFvID0gZXZhbHVhdGlvbnMuUU8uZ2V0RXZhbHVhdGlvbihpKTtcbiAgICAgICAgICAgIGNvbnN0IHFjID0gZXZhbHVhdGlvbnMuUUMuZ2V0RXZhbHVhdGlvbihpKTtcbiAgICAgICAgICAgIGNvbnN0IHMxID0gZXZhbHVhdGlvbnMuU2lnbWExLmdldEV2YWx1YXRpb24oaSk7XG4gICAgICAgICAgICBjb25zdCBzMiA9IGV2YWx1YXRpb25zLlNpZ21hMi5nZXRFdmFsdWF0aW9uKGkpO1xuICAgICAgICAgICAgY29uc3QgczMgPSBldmFsdWF0aW9ucy5TaWdtYTMuZ2V0RXZhbHVhdGlvbihpKTtcblxuICAgICAgICAgICAgY29uc3QgYXAgPSBGci5hZGQoY2hhbGxlbmdlcy5iWzJdLCBGci5tdWwoY2hhbGxlbmdlcy5iWzFdLCB3KSk7XG4gICAgICAgICAgICBjb25zdCBicCA9IEZyLmFkZChjaGFsbGVuZ2VzLmJbNF0sIEZyLm11bChjaGFsbGVuZ2VzLmJbM10sIHcpKTtcbiAgICAgICAgICAgIGNvbnN0IGNwID0gRnIuYWRkKGNoYWxsZW5nZXMuYls2XSwgRnIubXVsKGNoYWxsZW5nZXMuYls1XSwgdykpO1xuXG4gICAgICAgICAgICBjb25zdCB3MiA9IEZyLnNxdWFyZSh3KTtcbiAgICAgICAgICAgIGNvbnN0IHpwID0gRnIuYWRkKEZyLmFkZChGci5tdWwoY2hhbGxlbmdlcy5iWzddLCB3MiksIEZyLm11bChjaGFsbGVuZ2VzLmJbOF0sIHcpKSwgY2hhbGxlbmdlcy5iWzldKTtcbiAgICAgICAgICAgIGNvbnN0IHdXID0gRnIubXVsKHcsIEZyLndbemtleS5wb3dlcl0pO1xuICAgICAgICAgICAgY29uc3Qgd1cyID0gRnIuc3F1YXJlKHdXKTtcbiAgICAgICAgICAgIGNvbnN0IHpXcCA9IEZyLmFkZChGci5hZGQoRnIubXVsKGNoYWxsZW5nZXMuYls3XSwgd1cyKSwgRnIubXVsKGNoYWxsZW5nZXMuYls4XSwgd1cpKSwgY2hhbGxlbmdlcy5iWzldKTtcblxuICAgICAgICAgICAgbGV0IHBpID0gRnIuemVybztcbiAgICAgICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgemtleS5uUHVibGljOyBqKyspIHtcbiAgICAgICAgICAgICAgICBjb25zdCBvZmZzZXQgPSAoaiAqIDQgKiB6a2V5LmRvbWFpblNpemUpICsgaTtcblxuICAgICAgICAgICAgICAgIGNvbnN0IGxQb2wgPSBldmFsdWF0aW9ucy5MYWdyYW5nZS5nZXRFdmFsdWF0aW9uKG9mZnNldCk7XG4gICAgICAgICAgICAgICAgY29uc3QgYVZhbCA9IGJ1ZmZlcnMuQS5zbGljZShqICogbjhyLCAoaiArIDEpICogbjhyKTtcblxuICAgICAgICAgICAgICAgIHBpID0gRnIuc3ViKHBpLCBGci5tdWwobFBvbCwgYVZhbCkpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBlMSA6PSBhKFgpYihYKXFNKFgpICsgYShYKXFMKFgpICsgYihYKXFSKFgpICsgYyhYKXFPKFgpICsgUEkoWCkgKyBxQyhYKVxuICAgICAgICAgICAgbGV0IFtlMSwgZTF6XSA9IE11bFoubXVsMihhLCBiLCBhcCwgYnAsIGkgJSA0LCBGcik7XG4gICAgICAgICAgICBlMSA9IEZyLm11bChlMSwgcW0pO1xuICAgICAgICAgICAgZTF6ID0gRnIubXVsKGUxeiwgcW0pO1xuXG4gICAgICAgICAgICBlMSA9IEZyLmFkZChlMSwgRnIubXVsKGEsIHFsKSk7XG4gICAgICAgICAgICBlMXogPSBGci5hZGQoZTF6LCBGci5tdWwoYXAsIHFsKSk7XG5cbiAgICAgICAgICAgIGUxID0gRnIuYWRkKGUxLCBGci5tdWwoYiwgcXIpKTtcbiAgICAgICAgICAgIGUxeiA9IEZyLmFkZChlMXosIEZyLm11bChicCwgcXIpKTtcblxuICAgICAgICAgICAgZTEgPSBGci5hZGQoZTEsIEZyLm11bChjLCBxbykpO1xuICAgICAgICAgICAgZTF6ID0gRnIuYWRkKGUxeiwgRnIubXVsKGNwLCBxbykpO1xuXG4gICAgICAgICAgICBlMSA9IEZyLmFkZChlMSwgcGkpO1xuICAgICAgICAgICAgZTEgPSBGci5hZGQoZTEsIHFjKTtcblxuICAgICAgICAgICAgLy8gZTIgOj0gzrFbKGEoWCkgKyDOslggKyDOsykoYihYKSArIM6yazFYICsgzrMpKGMoWCkgKyDOsmsyWCArIM6zKXooWCldXG4gICAgICAgICAgICBjb25zdCBiZXRhdyA9IEZyLm11bChjaGFsbGVuZ2VzLmJldGEsIHcpO1xuICAgICAgICAgICAgbGV0IGUyYSA9IGE7XG4gICAgICAgICAgICBlMmEgPSBGci5hZGQoZTJhLCBiZXRhdyk7XG4gICAgICAgICAgICBlMmEgPSBGci5hZGQoZTJhLCBjaGFsbGVuZ2VzLmdhbW1hKTtcblxuICAgICAgICAgICAgbGV0IGUyYiA9IGI7XG4gICAgICAgICAgICBlMmIgPSBGci5hZGQoZTJiLCBGci5tdWwoYmV0YXcsIHprZXkuazEpKTtcbiAgICAgICAgICAgIGUyYiA9IEZyLmFkZChlMmIsIGNoYWxsZW5nZXMuZ2FtbWEpO1xuXG4gICAgICAgICAgICBsZXQgZTJjID0gYztcbiAgICAgICAgICAgIGUyYyA9IEZyLmFkZChlMmMsIEZyLm11bChiZXRhdywgemtleS5rMikpO1xuICAgICAgICAgICAgZTJjID0gRnIuYWRkKGUyYywgY2hhbGxlbmdlcy5nYW1tYSk7XG5cbiAgICAgICAgICAgIGxldCBlMmQgPSB6O1xuXG4gICAgICAgICAgICBsZXQgW2UyLCBlMnpdID0gTXVsWi5tdWw0KGUyYSwgZTJiLCBlMmMsIGUyZCwgYXAsIGJwLCBjcCwgenAsIGkgJSA0LCBGcik7XG4gICAgICAgICAgICBlMiA9IEZyLm11bChlMiwgY2hhbGxlbmdlcy5hbHBoYSk7XG4gICAgICAgICAgICBlMnogPSBGci5tdWwoZTJ6LCBjaGFsbGVuZ2VzLmFscGhhKTtcblxuICAgICAgICAgICAgLy8gZTMgOj0gzrFbKGEoWCkgKyDOslPPgzEoWCkgKyDOsykoYihYKSArIM6yU8+DMihYKSArIM6zKShjKFgpICsgzrJTz4MzKFgpICsgzrMpeihYz4kpXVxuICAgICAgICAgICAgbGV0IGUzYSA9IGE7XG4gICAgICAgICAgICBlM2EgPSBGci5hZGQoZTNhLCBGci5tdWwoY2hhbGxlbmdlcy5iZXRhLCBzMSkpO1xuICAgICAgICAgICAgZTNhID0gRnIuYWRkKGUzYSwgY2hhbGxlbmdlcy5nYW1tYSk7XG5cbiAgICAgICAgICAgIGxldCBlM2IgPSBiO1xuICAgICAgICAgICAgZTNiID0gRnIuYWRkKGUzYiwgRnIubXVsKGNoYWxsZW5nZXMuYmV0YSwgczIpKTtcbiAgICAgICAgICAgIGUzYiA9IEZyLmFkZChlM2IsIGNoYWxsZW5nZXMuZ2FtbWEpO1xuXG4gICAgICAgICAgICBsZXQgZTNjID0gYztcbiAgICAgICAgICAgIGUzYyA9IEZyLmFkZChlM2MsIEZyLm11bChjaGFsbGVuZ2VzLmJldGEsIHMzKSk7XG4gICAgICAgICAgICBlM2MgPSBGci5hZGQoZTNjLCBjaGFsbGVuZ2VzLmdhbW1hKTtcblxuICAgICAgICAgICAgbGV0IGUzZCA9IHp3O1xuICAgICAgICAgICAgbGV0IFtlMywgZTN6XSA9IE11bFoubXVsNChlM2EsIGUzYiwgZTNjLCBlM2QsIGFwLCBicCwgY3AsIHpXcCwgaSAlIDQsIEZyKTtcblxuICAgICAgICAgICAgZTMgPSBGci5tdWwoZTMsIGNoYWxsZW5nZXMuYWxwaGEpO1xuICAgICAgICAgICAgZTN6ID0gRnIubXVsKGUzeiwgY2hhbGxlbmdlcy5hbHBoYSk7XG5cbiAgICAgICAgICAgIC8vIGU0IDo9IM6xXjIoeihYKeKIkjEpTDEoWClcbiAgICAgICAgICAgIGxldCBlNCA9IEZyLnN1Yih6LCBGci5vbmUpO1xuICAgICAgICAgICAgZTQgPSBGci5tdWwoZTQsIGV2YWx1YXRpb25zLkxhZ3JhbmdlLmdldEV2YWx1YXRpb24oaSkpO1xuICAgICAgICAgICAgZTQgPSBGci5tdWwoZTQsIGNoYWxsZW5nZXMuYWxwaGEyKTtcblxuICAgICAgICAgICAgbGV0IGU0eiA9IEZyLm11bCh6cCwgZXZhbHVhdGlvbnMuTGFncmFuZ2UuZ2V0RXZhbHVhdGlvbihpKSk7XG4gICAgICAgICAgICBlNHogPSBGci5tdWwoZTR6LCBjaGFsbGVuZ2VzLmFscGhhMik7XG5cblxuICAgICAgICAgICAgbGV0IHQgPSBGci5hZGQoRnIuc3ViKEZyLmFkZChlMSwgZTIpLCBlMyksIGU0KTtcbiAgICAgICAgICAgIGxldCB0eiA9IEZyLmFkZChGci5zdWIoRnIuYWRkKGUxeiwgZTJ6KSwgZTN6KSwgZTR6KTtcblxuICAgICAgICAgICAgYnVmZmVycy5ULnNldCh0LCBpICogbjhyKTtcbiAgICAgICAgICAgIGJ1ZmZlcnMuVHouc2V0KHR6LCBpICogbjhyKTtcblxuICAgICAgICAgICAgdyA9IEZyLm11bCh3LCBGci53W3prZXkucG93ZXIgKyAyXSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBDb21wdXRlIHRoZSBjb2VmZmljaWVudHMgb2YgdGhlIHBvbHlub21pYWwgVDAoWCkgZnJvbSBidWZmZXJzLlQwXG4gICAgICAgIGlmIChsb2dnZXIpXG4gICAgICAgICAgICBsb2dnZXIuZGVidWcoXCLCt8K3wrcgQ29tcHV0aW5nIFQgaWZmdFwiKTtcbiAgICAgICAgcG9seW5vbWlhbHMuVCA9IGF3YWl0IFBvbHlub21pYWwuZnJvbUV2YWx1YXRpb25zKGJ1ZmZlcnMuVCwgY3VydmUsIGxvZ2dlcik7XG5cbiAgICAgICAgLy8gRGl2aWRlIHRoZSBwb2x5bm9taWFsIFQwIGJ5IFpfSChYKVxuICAgICAgICBpZiAobG9nZ2VyKVxuICAgICAgICAgICAgbG9nZ2VyLmRlYnVnKFwiwrfCt8K3IENvbXB1dGluZyBUIC8gWkhcIik7XG4gICAgICAgIHBvbHlub21pYWxzLlQuZGl2WmgoemtleS5kb21haW5TaXplLCA0KTtcblxuICAgICAgICAvLyBDb21wdXRlIHRoZSBjb2VmZmljaWVudHMgb2YgdGhlIHBvbHlub21pYWwgVHooWCkgZnJvbSBidWZmZXJzLlR6XG4gICAgICAgIGlmIChsb2dnZXIpXG4gICAgICAgICAgICBsb2dnZXIuZGVidWcoXCLCt8K3wrcgQ29tcHV0aW5nIFR6IGlmZnRcIik7XG4gICAgICAgIHBvbHlub21pYWxzLlR6ID0gYXdhaXQgUG9seW5vbWlhbC5mcm9tRXZhbHVhdGlvbnMoYnVmZmVycy5UeiwgY3VydmUsIGxvZ2dlcik7XG5cbiAgICAgICAgLy8gQWRkIHRoZSBwb2x5bm9taWFsIFQxeiB0byBUMSB0byBnZXQgdGhlIGZpbmFsIHBvbHlub21pYWwgVDFcbiAgICAgICAgcG9seW5vbWlhbHMuVC5hZGQocG9seW5vbWlhbHMuVHopO1xuXG4gICAgICAgIC8vIENoZWNrIGRlZ3JlZVxuICAgICAgICBpZiAocG9seW5vbWlhbHMuVC5kZWdyZWUoKSA+PSB6a2V5LmRvbWFpblNpemUgKiAzICsgNikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiVCBQb2x5bm9taWFsIGlzIG5vdCB3ZWxsIGNhbGN1bGF0ZWRcIik7XG4gICAgICAgIH1cblxuICAgICAgICAvLyB0KHgpIGhhcyBkZWdyZWUgM24gKyA1LCB3ZSBhcmUgZ29pbmcgdG8gc3BsaXQgdCh4KSBpbnRvIHRocmVlIHNtYWxsZXIgcG9seW5vbWlhbHM6XG4gICAgICAgIC8vIFQxJyBhbmQgVDInICB3aXRoIGEgZGVncmVlIDwgbiBhbmQgVDMnIHdpdGggYSBkZWdyZWUgbis1XG4gICAgICAgIC8vIHN1Y2ggdGhhdCB0KHgpID0gVDEnKFgpICsgWF5uIFQyJyhYKSArIFheezJufSBUMycoWClcbiAgICAgICAgLy8gVG8gcmFuZG9taXplIHRoZSBwYXJ0cyB3ZSB1c2UgYmxpbmRpbmcgc2NhbGFycyBiXzEwIGFuZCBiXzExIGluIGEgd2F5IHRoYXQgZG9lc24ndCBjaGFuZ2UgdChYKTpcbiAgICAgICAgLy8gVDEoWCkgPSBUMScoWCkgKyBiXzEwIFheblxuICAgICAgICAvLyBUMihYKSA9IFQyJyhYKSAtIGJfMTAgKyBiXzExIFheblxuICAgICAgICAvLyBUMyhYKSA9IFQzJyhYKSAtIGJfMTFcbiAgICAgICAgLy8gc3VjaCB0aGF0XG4gICAgICAgIC8vIHQoWCkgPSBUMShYKSArIFhebiBUMihYKSArIFheMm4gVDMoWClcbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmRlYnVnKFwiwrfCt8K3IENvbXB1dGluZyBUMSwgVDIsIFQzIHBvbHlub21pYWxzXCIpO1xuICAgICAgICBwb2x5bm9taWFscy5UMSA9IG5ldyBQb2x5bm9taWFsKG5ldyBCaWdCdWZmZXIoKHprZXkuZG9tYWluU2l6ZSArIDEpICogbjhyKSwgY3VydmUsIGxvZ2dlcik7XG4gICAgICAgIHBvbHlub21pYWxzLlQyID0gbmV3IFBvbHlub21pYWwobmV3IEJpZ0J1ZmZlcigoemtleS5kb21haW5TaXplICsgMSkgKiBuOHIpLCBjdXJ2ZSwgbG9nZ2VyKTtcbiAgICAgICAgcG9seW5vbWlhbHMuVDMgPSBuZXcgUG9seW5vbWlhbChuZXcgQmlnQnVmZmVyKCh6a2V5LmRvbWFpblNpemUgKyA2KSAqIG44ciksIGN1cnZlLCBsb2dnZXIpO1xuXG4gICAgICAgIHBvbHlub21pYWxzLlQxLmNvZWYuc2V0KHBvbHlub21pYWxzLlQuY29lZi5zbGljZSgwLCBzRG9tYWluKSwgMCk7XG4gICAgICAgIHBvbHlub21pYWxzLlQyLmNvZWYuc2V0KHBvbHlub21pYWxzLlQuY29lZi5zbGljZShzRG9tYWluLCBzRG9tYWluICogMiksIDApO1xuICAgICAgICBwb2x5bm9taWFscy5UMy5jb2VmLnNldChwb2x5bm9taWFscy5ULmNvZWYuc2xpY2Uoc0RvbWFpbiAqIDIsIHNEb21haW4gKiAzICsgNiAqIG44ciksIDApO1xuXG4gICAgICAgIC8vIEFkZCBibGluZGluZyBzY2FsYXIgYl8xMCBhcyBhIG5ldyBjb2VmZmljaWVudCBuXG4gICAgICAgIHBvbHlub21pYWxzLlQxLnNldENvZWYoemtleS5kb21haW5TaXplLCBjaGFsbGVuZ2VzLmJbMTBdKTtcblxuICAgICAgICAvLyBjb21wdXRlIHRfbWlkKFgpXG4gICAgICAgIC8vIFN1YnRyYWN0IGJsaW5kaW5nIHNjYWxhciBiXzEwIHRvIHRoZSBsb3dlc3QgY29lZmZpY2llbnQgb2YgdF9taWRcbiAgICAgICAgY29uc3QgbG93ZXN0TWlkID0gRnIuc3ViKHBvbHlub21pYWxzLlQyLmdldENvZWYoMCksIGNoYWxsZW5nZXMuYlsxMF0pO1xuICAgICAgICBwb2x5bm9taWFscy5UMi5zZXRDb2VmKDAsIGxvd2VzdE1pZCk7XG4gICAgICAgIHBvbHlub21pYWxzLlQyLnNldENvZWYoemtleS5kb21haW5TaXplLCBjaGFsbGVuZ2VzLmJbMTFdKTtcblxuICAgICAgICAvLyBjb21wdXRlIHRfaGlnaChYKVxuICAgICAgICAvL1N1YnRyYWN0IGJsaW5kaW5nIHNjYWxhciBiXzExIHRvIHRoZSBsb3dlc3QgY29lZmZpY2llbnQgb2YgdF9oaWdoXG4gICAgICAgIGNvbnN0IGxvd2VzdEhpZ2ggPSBGci5zdWIocG9seW5vbWlhbHMuVDMuZ2V0Q29lZigwKSwgY2hhbGxlbmdlcy5iWzExXSk7XG4gICAgICAgIHBvbHlub21pYWxzLlQzLnNldENvZWYoMCwgbG93ZXN0SGlnaCk7XG4gICAgfVxuXG4gICAgYXN5bmMgZnVuY3Rpb24gcm91bmQ0KCkge1xuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZGVidWcoXCI+IENvbXB1dGluZyBjaGFsbGVuZ2UgeGlcIik7XG5cbiAgICAgICAgLy8gU1RFUCA0LjEgLSBDb21wdXRlIGV2YWx1YXRpb24gY2hhbGxlbmdlIHhpIOKIiCBGXG4gICAgICAgIHRyYW5zY3JpcHQucmVzZXQoKTtcbiAgICAgICAgdHJhbnNjcmlwdC5hZGRTY2FsYXIoY2hhbGxlbmdlcy5hbHBoYSk7XG4gICAgICAgIHRyYW5zY3JpcHQuYWRkUG9sQ29tbWl0bWVudChwcm9vZi5nZXRQb2x5bm9taWFsKFwiVDFcIikpO1xuICAgICAgICB0cmFuc2NyaXB0LmFkZFBvbENvbW1pdG1lbnQocHJvb2YuZ2V0UG9seW5vbWlhbChcIlQyXCIpKTtcbiAgICAgICAgdHJhbnNjcmlwdC5hZGRQb2xDb21taXRtZW50KHByb29mLmdldFBvbHlub21pYWwoXCJUM1wiKSk7XG5cbiAgICAgICAgY2hhbGxlbmdlcy54aSA9IHRyYW5zY3JpcHQuZ2V0Q2hhbGxlbmdlKCk7XG4gICAgICAgIGNoYWxsZW5nZXMueGl3ID0gRnIubXVsKGNoYWxsZW5nZXMueGksIEZyLndbemtleS5wb3dlcl0pO1xuICAgICAgICBcbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmRlYnVnKFwiwrfCt8K3IGNoYWxsZW5nZXMueGk6IFwiICsgRnIudG9TdHJpbmcoY2hhbGxlbmdlcy54aSwgMTYpKTsgIFxuXG4gICAgICAgIC8vIEZvdXJ0aCBvdXRwdXQgb2YgdGhlIHByb3ZlciBpcyAoIGEoeGkpLCBiKHhpKSwgYyh4aSksIHMxKHhpKSwgczIoeGkpLCB6KHhpdykgKVxuICAgICAgICBwcm9vZi5hZGRFdmFsdWF0aW9uKFwiZXZhbF9hXCIsIHBvbHlub21pYWxzLkEuZXZhbHVhdGUoY2hhbGxlbmdlcy54aSkpO1xuICAgICAgICBwcm9vZi5hZGRFdmFsdWF0aW9uKFwiZXZhbF9iXCIsIHBvbHlub21pYWxzLkIuZXZhbHVhdGUoY2hhbGxlbmdlcy54aSkpO1xuICAgICAgICBwcm9vZi5hZGRFdmFsdWF0aW9uKFwiZXZhbF9jXCIsIHBvbHlub21pYWxzLkMuZXZhbHVhdGUoY2hhbGxlbmdlcy54aSkpO1xuICAgICAgICBwcm9vZi5hZGRFdmFsdWF0aW9uKFwiZXZhbF9zMVwiLCBwb2x5bm9taWFscy5TaWdtYTEuZXZhbHVhdGUoY2hhbGxlbmdlcy54aSkpO1xuICAgICAgICBwcm9vZi5hZGRFdmFsdWF0aW9uKFwiZXZhbF9zMlwiLCBwb2x5bm9taWFscy5TaWdtYTIuZXZhbHVhdGUoY2hhbGxlbmdlcy54aSkpO1xuICAgICAgICBwcm9vZi5hZGRFdmFsdWF0aW9uKFwiZXZhbF96d1wiLCBwb2x5bm9taWFscy5aLmV2YWx1YXRlKGNoYWxsZW5nZXMueGl3KSk7XG4gICAgfVxuXG4gICAgYXN5bmMgZnVuY3Rpb24gcm91bmQ1KCkge1xuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZGVidWcoXCI+IENvbXB1dGluZyBjaGFsbGVuZ2UgdlwiKTtcbiAgICAgICAgXG4gICAgICAgIC8vIFNURVAgNS4xIC0gQ29tcHV0ZSBldmFsdWF0aW9uIGNoYWxsZW5nZSB2IOKIiCBGXG4gICAgICAgIHRyYW5zY3JpcHQucmVzZXQoKTtcbiAgICAgICAgdHJhbnNjcmlwdC5hZGRTY2FsYXIoY2hhbGxlbmdlcy54aSk7XG4gICAgICAgIHRyYW5zY3JpcHQuYWRkU2NhbGFyKHByb29mLmdldEV2YWx1YXRpb24oXCJldmFsX2FcIikpO1xuICAgICAgICB0cmFuc2NyaXB0LmFkZFNjYWxhcihwcm9vZi5nZXRFdmFsdWF0aW9uKFwiZXZhbF9iXCIpKTtcbiAgICAgICAgdHJhbnNjcmlwdC5hZGRTY2FsYXIocHJvb2YuZ2V0RXZhbHVhdGlvbihcImV2YWxfY1wiKSk7XG4gICAgICAgIHRyYW5zY3JpcHQuYWRkU2NhbGFyKHByb29mLmdldEV2YWx1YXRpb24oXCJldmFsX3MxXCIpKTtcbiAgICAgICAgdHJhbnNjcmlwdC5hZGRTY2FsYXIocHJvb2YuZ2V0RXZhbHVhdGlvbihcImV2YWxfczJcIikpO1xuICAgICAgICB0cmFuc2NyaXB0LmFkZFNjYWxhcihwcm9vZi5nZXRFdmFsdWF0aW9uKFwiZXZhbF96d1wiKSk7XG5cbiAgICAgICAgY2hhbGxlbmdlcy52ID0gW107XG4gICAgICAgIGNoYWxsZW5nZXMudlsxXSA9IHRyYW5zY3JpcHQuZ2V0Q2hhbGxlbmdlKCk7XG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5kZWJ1ZyhcIsK3wrfCtyBjaGFsbGVuZ2VzLnY6IFwiICsgRnIudG9TdHJpbmcoY2hhbGxlbmdlcy52WzFdLCAxNikpO1xuXG4gICAgICAgIGZvciAobGV0IGkgPSAyOyBpIDwgNjsgaSsrKSB7XG4gICAgICAgICAgICBjaGFsbGVuZ2VzLnZbaV0gPSBGci5tdWwoY2hhbGxlbmdlcy52W2kgLSAxXSwgY2hhbGxlbmdlcy52WzFdKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFNURVAgNS4yIENvbXB1dGUgbGluZWFyaXNhdGlvbiBwb2x5bm9taWFsIHIoWClcbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmRlYnVnKFwiPiBDb21wdXRpbmcgbGluZWFyaXNhdGlvbiBwb2x5bm9taWFsIFIoWClcIik7XG4gICAgICAgIGF3YWl0IGNvbXB1dGVSKCk7XG5cbiAgICAgICAgLy9TVEVQIDUuMyBDb21wdXRlIG9wZW5pbmcgcHJvb2YgcG9seW5vbWlhbCBXeGkoWClcbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmRlYnVnKFwiPiBDb21wdXRpbmcgb3BlbmluZyBwcm9vZiBwb2x5bm9taWFsIFd4aShYKSBwb2x5bm9taWFsXCIpO1xuICAgICAgICBjb21wdXRlV3hpKCk7XG5cbiAgICAgICAgLy9TVEVQIDUuNCBDb21wdXRlIG9wZW5pbmcgcHJvb2YgcG9seW5vbWlhbCBXeGl3KFgpXG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5kZWJ1ZyhcIj4gQ29tcHV0aW5nIG9wZW5pbmcgcHJvb2YgcG9seW5vbWlhbCBXeGl3KFgpIHBvbHlub21pYWxcIik7XG4gICAgICAgIGNvbXB1dGVXeGl3KCk7XG5cbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmRlYnVnKFwiPiBDb21wdXRpbmcgV3hpLCBXeGl3IE1TTVwiKTtcbiAgICAgICAgbGV0IGNvbW1pdFd4aSA9IGF3YWl0IHBvbHlub21pYWxzLld4aS5tdWx0aUV4cG9uZW50aWF0aW9uKFBUYXUsIFwiV3hpXCIpO1xuICAgICAgICBsZXQgY29tbWl0V3hpdyA9IGF3YWl0IHBvbHlub21pYWxzLld4aXcubXVsdGlFeHBvbmVudGlhdGlvbihQVGF1LCBcIld4aXdcIik7XG5cbiAgICAgICAgLy8gRmlmdGggb3V0cHV0IG9mIHRoZSBwcm92ZXIgaXMgKFtXeGldXzEsIFtXeGl3XV8xKVxuICAgICAgICBwcm9vZi5hZGRQb2x5bm9taWFsKFwiV3hpXCIsIGNvbW1pdFd4aSk7XG4gICAgICAgIHByb29mLmFkZFBvbHlub21pYWwoXCJXeGl3XCIsIGNvbW1pdFd4aXcpO1xuICAgIH1cblxuICAgIGFzeW5jIGZ1bmN0aW9uIGNvbXB1dGVSKCkge1xuICAgICAgICBjb25zdCBGciA9IGN1cnZlLkZyO1xuICAgIFxuICAgICAgICAvLyBSZXNlcnZlIG1lbW9yeSBmb3IgUSdzIHBvbHlub21pYWxzXG4gICAgICAgIHBvbHlub21pYWxzLlFMID0gbmV3IFBvbHlub21pYWwobmV3IEJpZ0J1ZmZlcihzRG9tYWluKSwgY3VydmUsIGxvZ2dlcik7XG4gICAgICAgIHBvbHlub21pYWxzLlFSID0gbmV3IFBvbHlub21pYWwobmV3IEJpZ0J1ZmZlcihzRG9tYWluKSwgY3VydmUsIGxvZ2dlcik7XG4gICAgICAgIHBvbHlub21pYWxzLlFNID0gbmV3IFBvbHlub21pYWwobmV3IEJpZ0J1ZmZlcihzRG9tYWluKSwgY3VydmUsIGxvZ2dlcik7XG4gICAgICAgIHBvbHlub21pYWxzLlFPID0gbmV3IFBvbHlub21pYWwobmV3IEJpZ0J1ZmZlcihzRG9tYWluKSwgY3VydmUsIGxvZ2dlcik7XG4gICAgICAgIHBvbHlub21pYWxzLlFDID0gbmV3IFBvbHlub21pYWwobmV3IEJpZ0J1ZmZlcihzRG9tYWluKSwgY3VydmUsIGxvZ2dlcik7XG5cbiAgICAgICAgLy8gUmVhZCBRJ3MgZXZhbHVhdGlvbnMgZnJvbSB6a2V5IGZpbGVcbiAgICAgICAgYXdhaXQgZmRaS2V5LnJlYWRUb0J1ZmZlcihwb2x5bm9taWFscy5RTC5jb2VmLCAwLCBzRG9tYWluLCB6a2V5U2VjdGlvbnNbWktFWV9QTF9RTF9TRUNUSU9OXVswXS5wKTtcbiAgICAgICAgYXdhaXQgZmRaS2V5LnJlYWRUb0J1ZmZlcihwb2x5bm9taWFscy5RUi5jb2VmLCAwLCBzRG9tYWluLCB6a2V5U2VjdGlvbnNbWktFWV9QTF9RUl9TRUNUSU9OXVswXS5wKTtcbiAgICAgICAgYXdhaXQgZmRaS2V5LnJlYWRUb0J1ZmZlcihwb2x5bm9taWFscy5RTS5jb2VmLCAwLCBzRG9tYWluLCB6a2V5U2VjdGlvbnNbWktFWV9QTF9RTV9TRUNUSU9OXVswXS5wKTtcbiAgICAgICAgYXdhaXQgZmRaS2V5LnJlYWRUb0J1ZmZlcihwb2x5bm9taWFscy5RTy5jb2VmLCAwLCBzRG9tYWluLCB6a2V5U2VjdGlvbnNbWktFWV9QTF9RT19TRUNUSU9OXVswXS5wKTtcbiAgICAgICAgYXdhaXQgZmRaS2V5LnJlYWRUb0J1ZmZlcihwb2x5bm9taWFscy5RQy5jb2VmLCAwLCBzRG9tYWluLCB6a2V5U2VjdGlvbnNbWktFWV9QTF9RQ19TRUNUSU9OXVswXS5wKTsgICBcbiAgICAgICAgXG4gICAgICAgIGNoYWxsZW5nZXMueGluID0gY2hhbGxlbmdlcy54aTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB6a2V5LnBvd2VyOyBpKyspIHtcbiAgICAgICAgICAgIGNoYWxsZW5nZXMueGluID0gRnIuc3F1YXJlKGNoYWxsZW5nZXMueGluKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNoYWxsZW5nZXMuemggPSBGci5zdWIoY2hhbGxlbmdlcy54aW4sIEZyLm9uZSk7XG5cbiAgICAgICAgY29uc3QgTCA9IFtdO1xuXG4gICAgICAgIGNvbnN0IG4gPSBGci5lKHprZXkuZG9tYWluU2l6ZSk7XG4gICAgICAgIGxldCB3ID0gRnIub25lO1xuICAgICAgICBmb3IgKGxldCBpID0gMTsgaSA8PSBNYXRoLm1heCgxLCB6a2V5Lm5QdWJsaWMpOyBpKyspIHtcbiAgICAgICAgICAgIExbaV0gPSBGci5kaXYoRnIubXVsKHcsIGNoYWxsZW5nZXMuemgpLCBGci5tdWwobiwgRnIuc3ViKGNoYWxsZW5nZXMueGksIHcpKSk7XG4gICAgICAgICAgICB3ID0gRnIubXVsKHcsIEZyLndbemtleS5wb3dlcl0pO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZXZhbF9sMSA9IEZyLmRpdihcbiAgICAgICAgICAgIEZyLnN1YihjaGFsbGVuZ2VzLnhpbiwgRnIub25lKSxcbiAgICAgICAgICAgIEZyLm11bChuLCBGci5zdWIoY2hhbGxlbmdlcy54aSwgRnIub25lKSlcbiAgICAgICAgKTtcblxuICAgICAgICBpZiAobG9nZ2VyKSB7XG4gICAgICAgICAgICBsb2dnZXIuZGVidWcoXCJMYWdyYW5nZSBFdmFsdWF0aW9uczogXCIpO1xuICAgICAgICAgICAgZm9yIChsZXQgaT0xOyBpPEwubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICBsb2dnZXIuZGVidWcoYEwke2l9KHhpKT1gICsgRnIudG9TdHJpbmcoTFtpXSwgMTYpKTsgICAgXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgZXZhbF9waSA9IEZyLnplcm87XG4gICAgICAgIGZvciAobGV0IGk9MDsgaTxwdWJsaWNTaWduYWxzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCB3ID0gRnIuZShwdWJsaWNTaWduYWxzW2ldKTtcbiAgICAgICAgICAgIGV2YWxfcGkgPSBGci5zdWIoZXZhbF9waSwgRnIubXVsKHcsIExbaSsxXSkpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmRlYnVnKFwiUEk6IFwiICsgRnIudG9TdHJpbmcoZXZhbF9waSwgMTYpKTtcblxuICAgICAgICAvLyBDb21wdXRlIGNvbnN0YW50IHBhcnRzIG9mIFIoWClcbiAgICAgICAgY29uc3QgY29lZl9hYiA9IEZyLm11bChwcm9vZi5ldmFsdWF0aW9ucy5ldmFsX2EsIHByb29mLmV2YWx1YXRpb25zLmV2YWxfYik7XG5cbiAgICAgICAgbGV0IGUyYSA9IHByb29mLmV2YWx1YXRpb25zLmV2YWxfYTtcbiAgICAgICAgY29uc3QgYmV0YXhpID0gRnIubXVsKGNoYWxsZW5nZXMuYmV0YSwgY2hhbGxlbmdlcy54aSk7XG4gICAgICAgIGUyYSA9IEZyLmFkZChlMmEsIGJldGF4aSk7XG4gICAgICAgIGUyYSA9IEZyLmFkZChlMmEsIGNoYWxsZW5nZXMuZ2FtbWEpO1xuXG4gICAgICAgIGxldCBlMmIgPSBwcm9vZi5ldmFsdWF0aW9ucy5ldmFsX2I7XG4gICAgICAgIGUyYiA9IEZyLmFkZChlMmIsIEZyLm11bChiZXRheGksIHprZXkuazEpKTtcbiAgICAgICAgZTJiID0gRnIuYWRkKGUyYiwgY2hhbGxlbmdlcy5nYW1tYSk7XG5cbiAgICAgICAgbGV0IGUyYyA9IHByb29mLmV2YWx1YXRpb25zLmV2YWxfYztcbiAgICAgICAgZTJjID0gRnIuYWRkKGUyYywgRnIubXVsKGJldGF4aSwgemtleS5rMikpO1xuICAgICAgICBlMmMgPSBGci5hZGQoZTJjLCBjaGFsbGVuZ2VzLmdhbW1hKTtcblxuICAgICAgICBjb25zdCBlMiA9IEZyLm11bChGci5tdWwoRnIubXVsKGUyYSwgZTJiKSwgZTJjKSwgY2hhbGxlbmdlcy5hbHBoYSk7XG5cbiAgICAgICAgbGV0IGUzYSA9IHByb29mLmV2YWx1YXRpb25zLmV2YWxfYTtcbiAgICAgICAgZTNhID0gRnIuYWRkKGUzYSwgRnIubXVsKGNoYWxsZW5nZXMuYmV0YSwgcHJvb2YuZXZhbHVhdGlvbnMuZXZhbF9zMSkpO1xuICAgICAgICBlM2EgPSBGci5hZGQoZTNhLCBjaGFsbGVuZ2VzLmdhbW1hKTtcblxuICAgICAgICBsZXQgZTNiID0gcHJvb2YuZXZhbHVhdGlvbnMuZXZhbF9iO1xuICAgICAgICBlM2IgPSBGci5hZGQoZTNiLCBGci5tdWwoY2hhbGxlbmdlcy5iZXRhLCBwcm9vZi5ldmFsdWF0aW9ucy5ldmFsX3MyKSk7XG4gICAgICAgIGUzYiA9IEZyLmFkZChlM2IsIGNoYWxsZW5nZXMuZ2FtbWEpO1xuXG4gICAgICAgIGxldCBlMyA9IEZyLm11bChlM2EsIGUzYik7XG4gICAgICAgIGUzID0gRnIubXVsKGUzLCBwcm9vZi5ldmFsdWF0aW9ucy5ldmFsX3p3KTtcbiAgICAgICAgZTMgPSBGci5tdWwoZTMsIGNoYWxsZW5nZXMuYWxwaGEpO1xuXG4gICAgICAgIGNvbnN0IGU0ID0gRnIubXVsKGV2YWxfbDEsIGNoYWxsZW5nZXMuYWxwaGEyKTtcblxuICAgICAgICBwb2x5bm9taWFscy5SID0gbmV3IFBvbHlub21pYWwobmV3IEJpZ0J1ZmZlcigoemtleS5kb21haW5TaXplICsgNikgKiBuOHIpLCBjdXJ2ZSwgbG9nZ2VyKTtcblxuICAgICAgICBwb2x5bm9taWFscy5SLmFkZChwb2x5bm9taWFscy5RTSwgY29lZl9hYik7XG4gICAgICAgIHBvbHlub21pYWxzLlIuYWRkKHBvbHlub21pYWxzLlFMLCBwcm9vZi5ldmFsdWF0aW9ucy5ldmFsX2EpO1xuICAgICAgICBwb2x5bm9taWFscy5SLmFkZChwb2x5bm9taWFscy5RUiwgcHJvb2YuZXZhbHVhdGlvbnMuZXZhbF9iKTtcbiAgICAgICAgcG9seW5vbWlhbHMuUi5hZGQocG9seW5vbWlhbHMuUU8sIHByb29mLmV2YWx1YXRpb25zLmV2YWxfYyk7XG4gICAgICAgIHBvbHlub21pYWxzLlIuYWRkKHBvbHlub21pYWxzLlFDKTtcbiAgICAgICAgcG9seW5vbWlhbHMuUi5hZGQocG9seW5vbWlhbHMuWiwgZTIpO1xuICAgICAgICBwb2x5bm9taWFscy5SLnN1Yihwb2x5bm9taWFscy5TaWdtYTMsIEZyLm11bChlMywgY2hhbGxlbmdlcy5iZXRhKSk7XG4gICAgICAgIHBvbHlub21pYWxzLlIuYWRkKHBvbHlub21pYWxzLlosIGU0KTtcblxuICAgICAgICBsZXQgdG1wID0gUG9seW5vbWlhbC5mcm9tUG9seW5vbWlhbChwb2x5bm9taWFscy5UMywgY3VydmUsIGxvZ2dlcik7XG4gICAgICAgIHRtcC5tdWxTY2FsYXIoRnIuc3F1YXJlKGNoYWxsZW5nZXMueGluKSk7XG4gICAgICAgIHRtcC5hZGQocG9seW5vbWlhbHMuVDIsIGNoYWxsZW5nZXMueGluKTtcbiAgICAgICAgdG1wLmFkZChwb2x5bm9taWFscy5UMSk7XG4gICAgICAgIHRtcC5tdWxTY2FsYXIoY2hhbGxlbmdlcy56aCk7XG5cbiAgICAgICAgcG9seW5vbWlhbHMuUi5zdWIodG1wKTtcblxuICAgICAgICBsZXQgcjAgPSBGci5zdWIoZXZhbF9waSwgRnIubXVsKGUzLCBGci5hZGQocHJvb2YuZXZhbHVhdGlvbnMuZXZhbF9jLCBjaGFsbGVuZ2VzLmdhbW1hKSkpO1xuICAgICAgICByMCA9IEZyLnN1YihyMCwgZTQpO1xuXG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5kZWJ1ZyhcInIwOiBcIiArIEZyLnRvU3RyaW5nKHIwLCAxNikpO1xuXG4gICAgICAgIHBvbHlub21pYWxzLlIuYWRkU2NhbGFyKHIwKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBjb21wdXRlV3hpKCkge1xuICAgICAgICBwb2x5bm9taWFscy5XeGkgPSBuZXcgUG9seW5vbWlhbChuZXcgQmlnQnVmZmVyKHNEb21haW4gKyA2ICogbjhyKSwgY3VydmUsIGxvZ2dlcik7XG5cbiAgICAgICAgcG9seW5vbWlhbHMuV3hpLmFkZChwb2x5bm9taWFscy5SKTtcbiAgICAgICAgcG9seW5vbWlhbHMuV3hpLmFkZChwb2x5bm9taWFscy5BLCBjaGFsbGVuZ2VzLnZbMV0pO1xuICAgICAgICBwb2x5bm9taWFscy5XeGkuYWRkKHBvbHlub21pYWxzLkIsIGNoYWxsZW5nZXMudlsyXSk7XG4gICAgICAgIHBvbHlub21pYWxzLld4aS5hZGQocG9seW5vbWlhbHMuQywgY2hhbGxlbmdlcy52WzNdKTtcbiAgICAgICAgcG9seW5vbWlhbHMuV3hpLmFkZChwb2x5bm9taWFscy5TaWdtYTEsIGNoYWxsZW5nZXMudls0XSk7XG4gICAgICAgIHBvbHlub21pYWxzLld4aS5hZGQocG9seW5vbWlhbHMuU2lnbWEyLCBjaGFsbGVuZ2VzLnZbNV0pO1xuXG4gICAgICAgIHBvbHlub21pYWxzLld4aS5zdWJTY2FsYXIoRnIubXVsKGNoYWxsZW5nZXMudlsxXSwgcHJvb2YuZXZhbHVhdGlvbnMuZXZhbF9hKSk7XG4gICAgICAgIHBvbHlub21pYWxzLld4aS5zdWJTY2FsYXIoRnIubXVsKGNoYWxsZW5nZXMudlsyXSwgcHJvb2YuZXZhbHVhdGlvbnMuZXZhbF9iKSk7XG4gICAgICAgIHBvbHlub21pYWxzLld4aS5zdWJTY2FsYXIoRnIubXVsKGNoYWxsZW5nZXMudlszXSwgcHJvb2YuZXZhbHVhdGlvbnMuZXZhbF9jKSk7XG4gICAgICAgIHBvbHlub21pYWxzLld4aS5zdWJTY2FsYXIoRnIubXVsKGNoYWxsZW5nZXMudls0XSwgcHJvb2YuZXZhbHVhdGlvbnMuZXZhbF9zMSkpO1xuICAgICAgICBwb2x5bm9taWFscy5XeGkuc3ViU2NhbGFyKEZyLm11bChjaGFsbGVuZ2VzLnZbNV0sIHByb29mLmV2YWx1YXRpb25zLmV2YWxfczIpKTtcblxuICAgICAgICBwb2x5bm9taWFscy5XeGkuZGl2QnlaZXJvZmllcigxLCBjaGFsbGVuZ2VzLnhpKTtcbiAgICB9XG5cbiAgICBhc3luYyBmdW5jdGlvbiBjb21wdXRlV3hpdygpIHtcbiAgICAgICAgcG9seW5vbWlhbHMuV3hpdyA9IFBvbHlub21pYWwuZnJvbVBvbHlub21pYWwocG9seW5vbWlhbHMuWiwgY3VydmUsIGxvZ2dlcik7XG4gICAgICAgIHBvbHlub21pYWxzLld4aXcuc3ViU2NhbGFyKHByb29mLmV2YWx1YXRpb25zLmV2YWxfencpO1xuXG4gICAgICAgIHBvbHlub21pYWxzLld4aXcuZGl2QnlaZXJvZmllcigxLCBjaGFsbGVuZ2VzLnhpdyk7XG4gICAgfVxufVxuIiwiLypcbiAgICBDb3B5cmlnaHQgMjAyMSAwS0lNUyBhc3NvY2lhdGlvbi5cblxuICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHNuYXJrSlMuXG5cbiAgICBzbmFya0pTIGlzIGEgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdFxuICAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3JcbiAgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuXG4gICAgc25hcmtKUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVFxuICAgIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWVxuICAgIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpY1xuICAgIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cblxuICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gICAgYWxvbmcgd2l0aCBzbmFya0pTLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuKi9cblxuaW1wb3J0IHBsb25rX3Byb3ZlIGZyb20gXCIuL3Bsb25rX3Byb3ZlLmpzXCI7XG5pbXBvcnQgd3Ruc19jYWxjdWxhdGUgZnJvbSBcIi4vd3Ruc19jYWxjdWxhdGUuanNcIjtcbmltcG9ydCB7dXRpbHN9IGZyb20gXCJmZmphdmFzY3JpcHRcIjtcbmNvbnN0IHt1bnN0cmluZ2lmeUJpZ0ludHN9ID0gdXRpbHM7XG5cbmV4cG9ydCBkZWZhdWx0IGFzeW5jIGZ1bmN0aW9uIHBsb25rRnVsbFByb3ZlKF9pbnB1dCwgd2FzbUZpbGUsIHprZXlGaWxlTmFtZSwgbG9nZ2VyLCB3dG5zQ2FsY09wdGlvbnMsIHByb3Zlck9wdGlvbnMpIHtcbiAgICBjb25zdCBpbnB1dCA9IHVuc3RyaW5naWZ5QmlnSW50cyhfaW5wdXQpO1xuXG4gICAgY29uc3Qgd3Rucz0ge1xuICAgICAgICB0eXBlOiBcIm1lbVwiXG4gICAgfTtcbiAgICBhd2FpdCB3dG5zX2NhbGN1bGF0ZShpbnB1dCwgd2FzbUZpbGUsIHd0bnMsIHd0bnNDYWxjT3B0aW9ucyk7XG4gICAgcmV0dXJuIGF3YWl0IHBsb25rX3Byb3ZlKHprZXlGaWxlTmFtZSwgd3RucywgbG9nZ2VyLCBwcm92ZXJPcHRpb25zKTtcbn1cbiIsIi8qXG4gICAgQ29weXJpZ2h0IDIwMjEgMGtpbXMgYXNzb2NpYXRpb24uXG5cbiAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBzbmFya2pzLlxuXG4gICAgc25hcmtqcyBpcyBhIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vclxuICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGVcbiAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbilcbiAgICBhbnkgbGF0ZXIgdmVyc2lvbi5cblxuICAgIHNuYXJranMgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFlcbiAgICBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3JcbiAgICBtb3JlIGRldGFpbHMuXG5cbiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZyB3aXRoXG4gICAgc25hcmtqcy4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cbiovXG5cbi8qIEltcGxlbWVudGF0aW9uIG9mIHRoaXMgcGFwZXI6IGh0dHBzOi8vZXByaW50LmlhY3Iub3JnLzIwMTkvOTUzLnBkZiAqL1xuaW1wb3J0ICogYXMgY3VydmVzIGZyb20gXCIuL2N1cnZlcy5qc1wiO1xuaW1wb3J0IHsgIHV0aWxzIH0gICBmcm9tIFwiZmZqYXZhc2NyaXB0XCI7XG5jb25zdCB7dW5zdHJpbmdpZnlCaWdJbnRzfSA9IHV0aWxzO1xuaW1wb3J0IHsgS2VjY2FrMjU2VHJhbnNjcmlwdCB9IGZyb20gXCIuL0tlY2NhazI1NlRyYW5zY3JpcHQuanNcIjtcblxuXG5cbmV4cG9ydCBkZWZhdWx0IGFzeW5jIGZ1bmN0aW9uIHBsb25rVmVyaWZ5KF92a192ZXJpZmllciwgX3B1YmxpY1NpZ25hbHMsIF9wcm9vZiwgbG9nZ2VyKSB7XG4gICAgbGV0IHZrX3ZlcmlmaWVyID0gdW5zdHJpbmdpZnlCaWdJbnRzKF92a192ZXJpZmllcik7XG4gICAgX3Byb29mID0gdW5zdHJpbmdpZnlCaWdJbnRzKF9wcm9vZik7XG4gICAgbGV0IHB1YmxpY1NpZ25hbHMgPSB1bnN0cmluZ2lmeUJpZ0ludHMoX3B1YmxpY1NpZ25hbHMpO1xuXG4gICAgY29uc3QgY3VydmUgPSBhd2FpdCBjdXJ2ZXMuZ2V0Q3VydmVGcm9tTmFtZSh2a192ZXJpZmllci5jdXJ2ZSk7XG5cbiAgICBjb25zdCBGciA9IGN1cnZlLkZyO1xuICAgIGNvbnN0IEcxID0gY3VydmUuRzE7XG5cbiAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhcIlBMT05LIFZFUklGSUVSIFNUQVJURURcIik7XG5cbiAgICBsZXQgcHJvb2YgPSBmcm9tT2JqZWN0UHJvb2YoY3VydmUsX3Byb29mKTtcbiAgICB2a192ZXJpZmllciA9IGZyb21PYmplY3RWayhjdXJ2ZSwgdmtfdmVyaWZpZXIpO1xuXG4gICAgaWYgKCFpc1dlbGxDb25zdHJ1Y3RlZChjdXJ2ZSwgcHJvb2YpKSB7XG4gICAgICAgIGxvZ2dlci5lcnJvcihcIlByb29mIGlzIG5vdCB3ZWxsIGNvbnN0cnVjdGVkXCIpO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgaWYgKHB1YmxpY1NpZ25hbHMubGVuZ3RoICE9IHZrX3ZlcmlmaWVyLm5QdWJsaWMpIHtcbiAgICAgICAgbG9nZ2VyLmVycm9yKFwiSW52YWxpZCBudW1iZXIgb2YgcHVibGljIGlucHV0c1wiKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBjb25zdCBjaGFsbGVuZ2VzID0gY2FsY3VsYXRlY2hhbGxlbmdlcyhjdXJ2ZSwgcHJvb2YsIHB1YmxpY1NpZ25hbHMsIHZrX3ZlcmlmaWVyKTtcbiAgICBcbiAgICBpZiAobG9nZ2VyKSB7XG4gICAgICAgIGxvZ2dlci5kZWJ1ZyhcImJldGE6IFwiICsgRnIudG9TdHJpbmcoY2hhbGxlbmdlcy5iZXRhLCAxNikpOyAgICBcbiAgICAgICAgbG9nZ2VyLmRlYnVnKFwiZ2FtbWE6IFwiICsgRnIudG9TdHJpbmcoY2hhbGxlbmdlcy5nYW1tYSwgMTYpKTsgICAgXG4gICAgICAgIGxvZ2dlci5kZWJ1ZyhcImFscGhhOiBcIiArIEZyLnRvU3RyaW5nKGNoYWxsZW5nZXMuYWxwaGEsIDE2KSk7ICAgIFxuICAgICAgICBsb2dnZXIuZGVidWcoXCJ4aTogXCIgKyBGci50b1N0cmluZyhjaGFsbGVuZ2VzLnhpLCAxNikpO1xuICAgICAgICBmb3IobGV0IGk9MTtpPDY7aSsrKSB7XG4gICAgICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZGVidWcoXCJ2OiBcIiArIEZyLnRvU3RyaW5nKGNoYWxsZW5nZXMudltpXSwgMTYpKTtcbiAgICAgICAgfVxuICAgICAgICBsb2dnZXIuZGVidWcoXCJ1OiBcIiArIEZyLnRvU3RyaW5nKGNoYWxsZW5nZXMudSwgMTYpKTsgICAgXG4gICAgfVxuICAgIGNvbnN0IEwgPSBjYWxjdWxhdGVMYWdyYW5nZUV2YWx1YXRpb25zKGN1cnZlLCBjaGFsbGVuZ2VzLCB2a192ZXJpZmllcik7XG4gICAgaWYgKGxvZ2dlcikge1xuICAgICAgICBmb3IgKGxldCBpPTE7IGk8TC5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgbG9nZ2VyLmRlYnVnKGBMJHtpfSh4aSk9YCArIEZyLnRvU3RyaW5nKExbaV0sIDE2KSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgXG4gICAgaWYgKHB1YmxpY1NpZ25hbHMubGVuZ3RoICE9IHZrX3ZlcmlmaWVyLm5QdWJsaWMpIHtcbiAgICAgICAgbG9nZ2VyLmVycm9yKFwiTnVtYmVyIG9mIHB1YmxpYyBzaWduYWxzIGRvZXMgbm90IG1hdGNoIHdpdGggdmtcIik7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBjb25zdCBwaSA9IGNhbGN1bGF0ZVBJKGN1cnZlLCBwdWJsaWNTaWduYWxzLCBMKTtcbiAgICBpZiAobG9nZ2VyKSB7XG4gICAgICAgIGxvZ2dlci5kZWJ1ZyhcIlBJKHhpKTogXCIgKyBGci50b1N0cmluZyhwaSwgMTYpKTtcbiAgICB9XG4gICAgXG4gICAgY29uc3QgcjAgPSBjYWxjdWxhdGVSMChjdXJ2ZSwgcHJvb2YsIGNoYWxsZW5nZXMsIHBpLCBMWzFdKTtcbiAgICBpZiAobG9nZ2VyKSB7XG4gICAgICAgIGxvZ2dlci5kZWJ1ZyhcInIwOiBcIiArIEZyLnRvU3RyaW5nKHIwLCAxNikpO1xuICAgIH1cblxuICAgIGNvbnN0IEQgPSBjYWxjdWxhdGVEKGN1cnZlLCBwcm9vZiwgY2hhbGxlbmdlcywgdmtfdmVyaWZpZXIsIExbMV0pO1xuICAgIGlmIChsb2dnZXIpIHtcbiAgICAgICAgbG9nZ2VyLmRlYnVnKFwiRDogXCIgKyBHMS50b1N0cmluZyhHMS50b0FmZmluZShEKSwgMTYpKTtcbiAgICB9XG5cbiAgICBjb25zdCBGID0gY2FsY3VsYXRlRihjdXJ2ZSwgcHJvb2YsIGNoYWxsZW5nZXMsIHZrX3ZlcmlmaWVyLCBEKTtcbiAgICBpZiAobG9nZ2VyKSB7XG4gICAgICAgIGxvZ2dlci5kZWJ1ZyhcIkY6IFwiICsgRzEudG9TdHJpbmcoRzEudG9BZmZpbmUoRiksIDE2KSk7XG4gICAgfVxuXG4gICAgY29uc3QgRSA9IGNhbGN1bGF0ZUUoY3VydmUsIHByb29mLCBjaGFsbGVuZ2VzLCByMCk7XG4gICAgaWYgKGxvZ2dlcikge1xuICAgICAgICBsb2dnZXIuZGVidWcoXCJFOiBcIiArIEcxLnRvU3RyaW5nKEcxLnRvQWZmaW5lKEUpLCAxNikpO1xuICAgIH1cblxuICAgIGNvbnN0IHJlcyA9IGF3YWl0IGlzVmFsaWRQYWlyaW5nKGN1cnZlLCBwcm9vZiwgY2hhbGxlbmdlcywgdmtfdmVyaWZpZXIsIEUsIEYpO1xuXG4gICAgaWYgKGxvZ2dlcikge1xuICAgICAgICBpZiAocmVzKSB7XG4gICAgICAgICAgICBsb2dnZXIuaW5mbyhcIk9LIVwiKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGxvZ2dlci53YXJuKFwiSW52YWxpZCBQcm9vZlwiKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiByZXM7XG59XG5cblxuZnVuY3Rpb24gZnJvbU9iamVjdFByb29mKGN1cnZlLCBwcm9vZikge1xuICAgIGNvbnN0IEcxID0gY3VydmUuRzE7XG4gICAgY29uc3QgRnIgPSBjdXJ2ZS5GcjtcbiAgICBjb25zdCByZXMgPSB7fTtcbiAgICByZXMuQSA9IEcxLmZyb21PYmplY3QocHJvb2YuQSk7XG4gICAgcmVzLkIgPSBHMS5mcm9tT2JqZWN0KHByb29mLkIpO1xuICAgIHJlcy5DID0gRzEuZnJvbU9iamVjdChwcm9vZi5DKTtcbiAgICByZXMuWiA9IEcxLmZyb21PYmplY3QocHJvb2YuWik7XG4gICAgcmVzLlQxID0gRzEuZnJvbU9iamVjdChwcm9vZi5UMSk7XG4gICAgcmVzLlQyID0gRzEuZnJvbU9iamVjdChwcm9vZi5UMik7XG4gICAgcmVzLlQzID0gRzEuZnJvbU9iamVjdChwcm9vZi5UMyk7XG4gICAgcmVzLmV2YWxfYSA9IEZyLmZyb21PYmplY3QocHJvb2YuZXZhbF9hKTtcbiAgICByZXMuZXZhbF9iID0gRnIuZnJvbU9iamVjdChwcm9vZi5ldmFsX2IpO1xuICAgIHJlcy5ldmFsX2MgPSBGci5mcm9tT2JqZWN0KHByb29mLmV2YWxfYyk7XG4gICAgcmVzLmV2YWxfencgPSBGci5mcm9tT2JqZWN0KHByb29mLmV2YWxfencpO1xuICAgIHJlcy5ldmFsX3MxID0gRnIuZnJvbU9iamVjdChwcm9vZi5ldmFsX3MxKTtcbiAgICByZXMuZXZhbF9zMiA9IEZyLmZyb21PYmplY3QocHJvb2YuZXZhbF9zMik7XG4gICAgcmVzLld4aSA9IEcxLmZyb21PYmplY3QocHJvb2YuV3hpKTtcbiAgICByZXMuV3hpdyA9IEcxLmZyb21PYmplY3QocHJvb2YuV3hpdyk7XG4gICAgcmV0dXJuIHJlcztcbn1cblxuZnVuY3Rpb24gZnJvbU9iamVjdFZrKGN1cnZlLCB2aykge1xuICAgIGNvbnN0IEcxID0gY3VydmUuRzE7XG4gICAgY29uc3QgRzIgPSBjdXJ2ZS5HMjtcbiAgICBjb25zdCBGciA9IGN1cnZlLkZyO1xuICAgIGNvbnN0IHJlcyA9IHZrO1xuICAgIHJlcy5RbSA9IEcxLmZyb21PYmplY3QodmsuUW0pO1xuICAgIHJlcy5RbCA9IEcxLmZyb21PYmplY3QodmsuUWwpO1xuICAgIHJlcy5RciA9IEcxLmZyb21PYmplY3QodmsuUXIpO1xuICAgIHJlcy5RbyA9IEcxLmZyb21PYmplY3QodmsuUW8pO1xuICAgIHJlcy5RYyA9IEcxLmZyb21PYmplY3QodmsuUWMpO1xuICAgIHJlcy5TMSA9IEcxLmZyb21PYmplY3QodmsuUzEpO1xuICAgIHJlcy5TMiA9IEcxLmZyb21PYmplY3QodmsuUzIpO1xuICAgIHJlcy5TMyA9IEcxLmZyb21PYmplY3QodmsuUzMpO1xuICAgIHJlcy5rMSA9IEZyLmZyb21PYmplY3QodmsuazEpO1xuICAgIHJlcy5rMiA9IEZyLmZyb21PYmplY3QodmsuazIpO1xuICAgIHJlcy5YXzIgPSBHMi5mcm9tT2JqZWN0KHZrLlhfMik7XG5cbiAgICByZXR1cm4gcmVzO1xufVxuXG5mdW5jdGlvbiBpc1dlbGxDb25zdHJ1Y3RlZChjdXJ2ZSwgcHJvb2YpIHtcbiAgICBjb25zdCBHMSA9IGN1cnZlLkcxO1xuICAgIGlmICghRzEuaXNWYWxpZChwcm9vZi5BKSkgcmV0dXJuIGZhbHNlO1xuICAgIGlmICghRzEuaXNWYWxpZChwcm9vZi5CKSkgcmV0dXJuIGZhbHNlO1xuICAgIGlmICghRzEuaXNWYWxpZChwcm9vZi5DKSkgcmV0dXJuIGZhbHNlO1xuICAgIGlmICghRzEuaXNWYWxpZChwcm9vZi5aKSkgcmV0dXJuIGZhbHNlO1xuICAgIGlmICghRzEuaXNWYWxpZChwcm9vZi5UMSkpIHJldHVybiBmYWxzZTtcbiAgICBpZiAoIUcxLmlzVmFsaWQocHJvb2YuVDIpKSByZXR1cm4gZmFsc2U7XG4gICAgaWYgKCFHMS5pc1ZhbGlkKHByb29mLlQzKSkgcmV0dXJuIGZhbHNlO1xuICAgIGlmICghRzEuaXNWYWxpZChwcm9vZi5XeGkpKSByZXR1cm4gZmFsc2U7XG4gICAgaWYgKCFHMS5pc1ZhbGlkKHByb29mLld4aXcpKSByZXR1cm4gZmFsc2U7XG4gICAgcmV0dXJuIHRydWU7XG59XG5cbmZ1bmN0aW9uIGNhbGN1bGF0ZWNoYWxsZW5nZXMoY3VydmUsIHByb29mLCBwdWJsaWNTaWduYWxzLCB2aykge1xuICAgIGNvbnN0IEZyID0gY3VydmUuRnI7XG4gICAgY29uc3QgcmVzID0ge307XG4gICAgY29uc3QgdHJhbnNjcmlwdCA9IG5ldyBLZWNjYWsyNTZUcmFuc2NyaXB0KGN1cnZlKTtcblxuICAgIC8vIENoYWxsZW5nZSByb3VuZCAyOiBiZXRhIGFuZCBnYW1tYVxuICAgIHRyYW5zY3JpcHQuYWRkUG9sQ29tbWl0bWVudCh2ay5RbSk7XG4gICAgdHJhbnNjcmlwdC5hZGRQb2xDb21taXRtZW50KHZrLlFsKTtcbiAgICB0cmFuc2NyaXB0LmFkZFBvbENvbW1pdG1lbnQodmsuUXIpO1xuICAgIHRyYW5zY3JpcHQuYWRkUG9sQ29tbWl0bWVudCh2ay5Rbyk7XG4gICAgdHJhbnNjcmlwdC5hZGRQb2xDb21taXRtZW50KHZrLlFjKTtcbiAgICB0cmFuc2NyaXB0LmFkZFBvbENvbW1pdG1lbnQodmsuUzEpO1xuICAgIHRyYW5zY3JpcHQuYWRkUG9sQ29tbWl0bWVudCh2ay5TMik7XG4gICAgdHJhbnNjcmlwdC5hZGRQb2xDb21taXRtZW50KHZrLlMzKTtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcHVibGljU2lnbmFscy5sZW5ndGg7IGkrKykge1xuICAgICAgICB0cmFuc2NyaXB0LmFkZFNjYWxhcihGci5lKHB1YmxpY1NpZ25hbHNbaV0pKTtcbiAgICB9XG5cbiAgICB0cmFuc2NyaXB0LmFkZFBvbENvbW1pdG1lbnQocHJvb2YuQSk7XG4gICAgdHJhbnNjcmlwdC5hZGRQb2xDb21taXRtZW50KHByb29mLkIpO1xuICAgIHRyYW5zY3JpcHQuYWRkUG9sQ29tbWl0bWVudChwcm9vZi5DKTtcblxuICAgIHJlcy5iZXRhID0gdHJhbnNjcmlwdC5nZXRDaGFsbGVuZ2UoKTtcblxuICAgIHRyYW5zY3JpcHQucmVzZXQoKTtcbiAgICB0cmFuc2NyaXB0LmFkZFNjYWxhcihyZXMuYmV0YSk7XG4gICAgcmVzLmdhbW1hID0gdHJhbnNjcmlwdC5nZXRDaGFsbGVuZ2UoKTtcblxuICAgIC8vIENoYWxsZW5nZSByb3VuZCAzOiBhbHBoYVxuICAgIHRyYW5zY3JpcHQucmVzZXQoKTtcbiAgICB0cmFuc2NyaXB0LmFkZFNjYWxhcihyZXMuYmV0YSk7XG4gICAgdHJhbnNjcmlwdC5hZGRTY2FsYXIocmVzLmdhbW1hKTtcbiAgICB0cmFuc2NyaXB0LmFkZFBvbENvbW1pdG1lbnQocHJvb2YuWik7XG4gICAgcmVzLmFscGhhID0gdHJhbnNjcmlwdC5nZXRDaGFsbGVuZ2UoKTtcblxuICAgIC8vIENoYWxsZW5nZSByb3VuZCA0OiB4aVxuICAgIHRyYW5zY3JpcHQucmVzZXQoKTtcbiAgICB0cmFuc2NyaXB0LmFkZFNjYWxhcihyZXMuYWxwaGEpO1xuICAgIHRyYW5zY3JpcHQuYWRkUG9sQ29tbWl0bWVudChwcm9vZi5UMSk7XG4gICAgdHJhbnNjcmlwdC5hZGRQb2xDb21taXRtZW50KHByb29mLlQyKTtcbiAgICB0cmFuc2NyaXB0LmFkZFBvbENvbW1pdG1lbnQocHJvb2YuVDMpO1xuICAgIHJlcy54aSA9IHRyYW5zY3JpcHQuZ2V0Q2hhbGxlbmdlKCk7XG4gICAgXG4gICAgLy8gQ2hhbGxlbmdlIHJvdW5kIDU6IHZcbiAgICB0cmFuc2NyaXB0LnJlc2V0KCk7XG4gICAgdHJhbnNjcmlwdC5hZGRTY2FsYXIocmVzLnhpKTtcbiAgICB0cmFuc2NyaXB0LmFkZFNjYWxhcihwcm9vZi5ldmFsX2EpO1xuICAgIHRyYW5zY3JpcHQuYWRkU2NhbGFyKHByb29mLmV2YWxfYik7XG4gICAgdHJhbnNjcmlwdC5hZGRTY2FsYXIocHJvb2YuZXZhbF9jKTtcbiAgICB0cmFuc2NyaXB0LmFkZFNjYWxhcihwcm9vZi5ldmFsX3MxKTtcbiAgICB0cmFuc2NyaXB0LmFkZFNjYWxhcihwcm9vZi5ldmFsX3MyKTtcbiAgICB0cmFuc2NyaXB0LmFkZFNjYWxhcihwcm9vZi5ldmFsX3p3KTtcbiAgICByZXMudiA9IFtdO1xuICAgIHJlcy52WzFdID0gdHJhbnNjcmlwdC5nZXRDaGFsbGVuZ2UoKTtcblxuICAgIGZvciAobGV0IGk9MjsgaTw2OyBpKysgKSByZXMudltpXSA9IEZyLm11bChyZXMudltpLTFdLCByZXMudlsxXSk7XG5cbiAgICAvLyBDaGFsbGVuZ2U6IHVcbiAgICB0cmFuc2NyaXB0LnJlc2V0KCk7XG4gICAgdHJhbnNjcmlwdC5hZGRQb2xDb21taXRtZW50KHByb29mLld4aSk7XG4gICAgdHJhbnNjcmlwdC5hZGRQb2xDb21taXRtZW50KHByb29mLld4aXcpO1xuICAgIHJlcy51ID0gdHJhbnNjcmlwdC5nZXRDaGFsbGVuZ2UoKTtcblxuICAgIHJldHVybiByZXM7XG59XG5cbmZ1bmN0aW9uIGNhbGN1bGF0ZUxhZ3JhbmdlRXZhbHVhdGlvbnMoY3VydmUsIGNoYWxsZW5nZXMsIHZrKSB7XG4gICAgY29uc3QgRnIgPSBjdXJ2ZS5GcjtcblxuICAgIGxldCB4aW4gPSBjaGFsbGVuZ2VzLnhpO1xuICAgIGxldCBkb21haW5TaXplID0gMTtcbiAgICBmb3IgKGxldCBpPTA7IGk8dmsucG93ZXI7IGkrKykge1xuICAgICAgICB4aW4gPSBGci5zcXVhcmUoeGluKTtcbiAgICAgICAgZG9tYWluU2l6ZSAqPSAyO1xuICAgIH1cbiAgICBjaGFsbGVuZ2VzLnhpbiA9IHhpbjtcblxuICAgIGNoYWxsZW5nZXMuemggPSBGci5zdWIoeGluLCBGci5vbmUpO1xuXG4gICAgY29uc3QgTCA9IFtdO1xuXG4gICAgY29uc3QgbiA9IEZyLmUoZG9tYWluU2l6ZSk7XG4gICAgbGV0IHcgPSBGci5vbmU7XG4gICAgZm9yIChsZXQgaT0xOyBpPD1NYXRoLm1heCgxLCB2ay5uUHVibGljKTsgaSsrKSB7XG4gICAgICAgIExbaV0gPSBGci5kaXYoRnIubXVsKHcsIGNoYWxsZW5nZXMuemgpLCBGci5tdWwobiwgRnIuc3ViKGNoYWxsZW5nZXMueGksIHcpKSk7XG4gICAgICAgIHcgPSBGci5tdWwodywgRnIud1t2ay5wb3dlcl0pO1xuICAgIH1cblxuICAgIHJldHVybiBMO1xufVxuXG5mdW5jdGlvbiBjYWxjdWxhdGVQSShjdXJ2ZSwgcHVibGljU2lnbmFscywgTCkge1xuICAgIGNvbnN0IEZyID0gY3VydmUuRnI7XG5cbiAgICBsZXQgcGkgPSBGci56ZXJvO1xuICAgIGZvciAobGV0IGk9MDsgaTxwdWJsaWNTaWduYWxzLmxlbmd0aDsgaSsrKSB7ICAgICAgICBcbiAgICAgICAgY29uc3QgdyA9IEZyLmUocHVibGljU2lnbmFsc1tpXSk7XG4gICAgICAgIHBpID0gRnIuc3ViKHBpLCBGci5tdWwodywgTFtpKzFdKSk7XG4gICAgfVxuICAgIHJldHVybiBwaTtcbn1cblxuZnVuY3Rpb24gY2FsY3VsYXRlUjAoY3VydmUsIHByb29mLCBjaGFsbGVuZ2VzLCBwaSwgbDEpIHtcbiAgICBjb25zdCBGciA9IGN1cnZlLkZyO1xuXG4gICAgY29uc3QgZTEgPSBwaTtcblxuICAgIGNvbnN0IGUyID0gRnIubXVsKGwxLCBGci5zcXVhcmUoY2hhbGxlbmdlcy5hbHBoYSkpO1xuXG4gICAgbGV0IGUzYSA9IEZyLmFkZChwcm9vZi5ldmFsX2EsIEZyLm11bChjaGFsbGVuZ2VzLmJldGEsIHByb29mLmV2YWxfczEpKTtcbiAgICBlM2EgPSBGci5hZGQoZTNhLCBjaGFsbGVuZ2VzLmdhbW1hKTtcblxuICAgIGxldCBlM2IgPSBGci5hZGQocHJvb2YuZXZhbF9iLCBGci5tdWwoY2hhbGxlbmdlcy5iZXRhLCBwcm9vZi5ldmFsX3MyKSk7XG4gICAgZTNiID0gRnIuYWRkKGUzYiwgY2hhbGxlbmdlcy5nYW1tYSk7XG5cbiAgICBsZXQgZTNjID0gRnIuYWRkKHByb29mLmV2YWxfYywgY2hhbGxlbmdlcy5nYW1tYSk7XG5cbiAgICBsZXQgZTMgPSBGci5tdWwoRnIubXVsKGUzYSwgZTNiKSwgZTNjKTtcbiAgICBlMyA9IEZyLm11bChlMywgcHJvb2YuZXZhbF96dyk7XG4gICAgZTMgPSBGci5tdWwoZTMsIGNoYWxsZW5nZXMuYWxwaGEpO1xuXG4gICAgY29uc3QgcjAgPSBGci5zdWIoRnIuc3ViKGUxLCBlMiksIGUzKTtcblxuICAgIHJldHVybiByMDtcbn1cblxuZnVuY3Rpb24gY2FsY3VsYXRlRChjdXJ2ZSwgcHJvb2YsIGNoYWxsZW5nZXMsIHZrLCBsMSkge1xuICAgIGNvbnN0IEcxID0gY3VydmUuRzE7XG4gICAgY29uc3QgRnIgPSBjdXJ2ZS5GcjtcbiAgICBcbiAgICBsZXQgZDEgPSBHMS50aW1lc0ZyKHZrLlFtLCBGci5tdWwocHJvb2YuZXZhbF9hLCBwcm9vZi5ldmFsX2IpKTtcbiAgICBkMSA9IEcxLmFkZChkMSwgRzEudGltZXNGcih2ay5RbCwgcHJvb2YuZXZhbF9hKSk7XG4gICAgZDEgPSBHMS5hZGQoZDEsIEcxLnRpbWVzRnIodmsuUXIsIHByb29mLmV2YWxfYikpO1xuICAgIGQxID0gRzEuYWRkKGQxLCBHMS50aW1lc0ZyKHZrLlFvLCBwcm9vZi5ldmFsX2MpKTtcbiAgICBkMSA9IEcxLmFkZChkMSwgdmsuUWMpO1xuXG4gICAgY29uc3QgYmV0YXhpID0gRnIubXVsKGNoYWxsZW5nZXMuYmV0YSwgY2hhbGxlbmdlcy54aSk7XG5cbiAgICBjb25zdCBkMmExID0gRnIuYWRkKEZyLmFkZChwcm9vZi5ldmFsX2EsIGJldGF4aSksIGNoYWxsZW5nZXMuZ2FtbWEpO1xuICAgIGNvbnN0IGQyYTIgPSBGci5hZGQoRnIuYWRkKHByb29mLmV2YWxfYiwgRnIubXVsKGJldGF4aSwgdmsuazEpKSwgY2hhbGxlbmdlcy5nYW1tYSk7XG4gICAgY29uc3QgZDJhMyA9IEZyLmFkZChGci5hZGQocHJvb2YuZXZhbF9jLCBGci5tdWwoYmV0YXhpLCB2ay5rMikpLCBjaGFsbGVuZ2VzLmdhbW1hKTtcblxuICAgIGNvbnN0IGQyYSA9IEZyLm11bChGci5tdWwoRnIubXVsKGQyYTEsIGQyYTIpLCBkMmEzKSwgY2hhbGxlbmdlcy5hbHBoYSk7XG5cbiAgICBjb25zdCBkMmIgPSBGci5tdWwobDEsIEZyLnNxdWFyZShjaGFsbGVuZ2VzLmFscGhhKSk7XG5cbiAgICBjb25zdCBkMiA9IEcxLnRpbWVzRnIocHJvb2YuWiwgRnIuYWRkKEZyLmFkZChkMmEsIGQyYiksIGNoYWxsZW5nZXMudSkpO1xuXG4gICAgY29uc3QgZDNhID0gRnIuYWRkKEZyLmFkZChwcm9vZi5ldmFsX2EsIEZyLm11bChjaGFsbGVuZ2VzLmJldGEsIHByb29mLmV2YWxfczEpKSwgY2hhbGxlbmdlcy5nYW1tYSk7XG4gICAgY29uc3QgZDNiID0gRnIuYWRkKEZyLmFkZChwcm9vZi5ldmFsX2IsIEZyLm11bChjaGFsbGVuZ2VzLmJldGEsIHByb29mLmV2YWxfczIpKSwgY2hhbGxlbmdlcy5nYW1tYSk7XG4gICAgY29uc3QgZDNjID0gRnIubXVsKEZyLm11bChjaGFsbGVuZ2VzLmFscGhhLCBjaGFsbGVuZ2VzLmJldGEpLCBwcm9vZi5ldmFsX3p3KTtcblxuICAgIGNvbnN0IGQzID0gRzEudGltZXNGcih2ay5TMywgRnIubXVsKEZyLm11bChkM2EsIGQzYiksIGQzYykpO1xuICAgIFxuICAgIGNvbnN0IGQ0bG93ID0gcHJvb2YuVDE7XG4gICAgY29uc3QgZDRtaWQgPSBHMS50aW1lc0ZyKHByb29mLlQyLCBjaGFsbGVuZ2VzLnhpbik7XG4gICAgY29uc3QgZDRoaWdoID0gRzEudGltZXNGcihwcm9vZi5UMywgRnIuc3F1YXJlKGNoYWxsZW5nZXMueGluKSk7XG4gICAgbGV0IGQ0ID0gRzEuYWRkKGQ0bG93LCBHMS5hZGQoZDRtaWQsIGQ0aGlnaCkpO1xuICAgIGQ0ID0gRzEudGltZXNGcihkNCwgY2hhbGxlbmdlcy56aCk7XG5cbiAgICBjb25zdCBkID0gRzEuc3ViKEcxLnN1YihHMS5hZGQoZDEsIGQyKSwgZDMpLCBkNCk7XG5cbiAgICByZXR1cm4gZDtcbn1cblxuZnVuY3Rpb24gY2FsY3VsYXRlRihjdXJ2ZSwgcHJvb2YsIGNoYWxsZW5nZXMsIHZrLCBEKSB7XG4gICAgY29uc3QgRzEgPSBjdXJ2ZS5HMTtcblxuICAgIGxldCByZXMgPSBHMS5hZGQoRCwgRzEudGltZXNGcihwcm9vZi5BLCBjaGFsbGVuZ2VzLnZbMV0pKTtcbiAgICByZXMgPSBHMS5hZGQocmVzLCBHMS50aW1lc0ZyKHByb29mLkIsIGNoYWxsZW5nZXMudlsyXSkpO1xuICAgIHJlcyA9IEcxLmFkZChyZXMsIEcxLnRpbWVzRnIocHJvb2YuQywgY2hhbGxlbmdlcy52WzNdKSk7XG4gICAgcmVzID0gRzEuYWRkKHJlcywgRzEudGltZXNGcih2ay5TMSwgY2hhbGxlbmdlcy52WzRdKSk7XG4gICAgcmVzID0gRzEuYWRkKHJlcywgRzEudGltZXNGcih2ay5TMiwgY2hhbGxlbmdlcy52WzVdKSk7XG5cbiAgICByZXR1cm4gcmVzO1xufVxuXG5mdW5jdGlvbiBjYWxjdWxhdGVFKGN1cnZlLCBwcm9vZiwgY2hhbGxlbmdlcywgcjApIHtcbiAgICBjb25zdCBHMSA9IGN1cnZlLkcxO1xuICAgIGNvbnN0IEZyID0gY3VydmUuRnI7XG5cbiAgICBsZXQgZSA9IEZyLmFkZChGci5uZWcocjApLCBGci5tdWwoY2hhbGxlbmdlcy52WzFdLCBwcm9vZi5ldmFsX2EpKTtcbiAgICBlID0gRnIuYWRkKGUsIEZyLm11bChjaGFsbGVuZ2VzLnZbMl0sIHByb29mLmV2YWxfYikpO1xuICAgIGUgPSBGci5hZGQoZSwgRnIubXVsKGNoYWxsZW5nZXMudlszXSwgcHJvb2YuZXZhbF9jKSk7XG4gICAgZSA9IEZyLmFkZChlLCBGci5tdWwoY2hhbGxlbmdlcy52WzRdLCBwcm9vZi5ldmFsX3MxKSk7XG4gICAgZSA9IEZyLmFkZChlLCBGci5tdWwoY2hhbGxlbmdlcy52WzVdLCBwcm9vZi5ldmFsX3MyKSk7XG4gICAgZSA9IEZyLmFkZChlLCBGci5tdWwoY2hhbGxlbmdlcy51LCBwcm9vZi5ldmFsX3p3KSk7XG5cbiAgICBjb25zdCByZXMgPSBHMS50aW1lc0ZyKEcxLm9uZSwgZSk7XG5cbiAgICByZXR1cm4gcmVzO1xufVxuXG5hc3luYyBmdW5jdGlvbiBpc1ZhbGlkUGFpcmluZyhjdXJ2ZSwgcHJvb2YsIGNoYWxsZW5nZXMsIHZrLCBFLCBGKSB7XG4gICAgY29uc3QgRzEgPSBjdXJ2ZS5HMTtcbiAgICBjb25zdCBGciA9IGN1cnZlLkZyO1xuXG4gICAgbGV0IEExID0gcHJvb2YuV3hpO1xuICAgIEExID0gRzEuYWRkKEExLCBHMS50aW1lc0ZyKHByb29mLld4aXcsIGNoYWxsZW5nZXMudSkpO1xuXG4gICAgbGV0IEIxID0gRzEudGltZXNGcihwcm9vZi5XeGksIGNoYWxsZW5nZXMueGkpO1xuICAgIGNvbnN0IHMgPSBGci5tdWwoRnIubXVsKGNoYWxsZW5nZXMudSwgY2hhbGxlbmdlcy54aSksIEZyLndbdmsucG93ZXJdKTtcbiAgICBCMSA9IEcxLmFkZChCMSwgRzEudGltZXNGcihwcm9vZi5XeGl3LCBzKSk7XG4gICAgQjEgPSBHMS5hZGQoQjEsIEYpO1xuICAgIEIxID0gRzEuc3ViKEIxLCBFKTtcblxuICAgIGNvbnN0IHJlcyA9IGF3YWl0IGN1cnZlLnBhaXJpbmdFcShcbiAgICAgICAgRzEubmVnKEExKSAsIHZrLlhfMixcbiAgICAgICAgQjEgLCBjdXJ2ZS5HMi5vbmVcbiAgICApO1xuXG4gICAgcmV0dXJuIHJlcztcbn1cbiIsIi8qXG4gICAgQ29weXJpZ2h0IDIwMjEgMEtJTVMgYXNzb2NpYXRpb24uXG5cbiAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBzbmFya0pTLlxuXG4gICAgc25hcmtKUyBpcyBhIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXRcbiAgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yXG4gICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cblxuICAgIHNuYXJrSlMgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVRcbiAgICBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFlcbiAgICBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWNcbiAgICBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG5cbiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICAgIGFsb25nIHdpdGggc25hcmtKUy4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cbiovXG5cbmltcG9ydCB7IGdldEN1cnZlRnJvbU5hbWUgfSBmcm9tIFwiLi9jdXJ2ZXMuanNcIjtcbmltcG9ydCB7ICB1dGlscyB9ICAgZnJvbSBcImZmamF2YXNjcmlwdFwiO1xuY29uc3QgeyB1bnN0cmluZ2lmeUJpZ0ludHN9ID0gdXRpbHM7XG5cbmZ1bmN0aW9uIGkyaGV4KGkpIHtcbiAgICByZXR1cm4gKFwiMFwiICsgaS50b1N0cmluZygxNikpLnNsaWNlKC0yKTtcbn1cblxuZnVuY3Rpb24gcDI1NihuKSB7XG4gICAgbGV0IG5zdHIgPSBuLnRvU3RyaW5nKDE2KTtcbiAgICB3aGlsZSAobnN0ci5sZW5ndGggPCA2NCkgbnN0ciA9IFwiMFwiK25zdHI7XG4gICAgbnN0ciA9IGBcIjB4JHtuc3RyfVwiYDtcbiAgICByZXR1cm4gbnN0cjtcbn1cblxuZXhwb3J0IGRlZmF1bHQgYXN5bmMgZnVuY3Rpb24gcGxvbmtFeHBvcnRTb2xpZGl0eUNhbGxEYXRhKF9wcm9vZiwgX3B1Yikge1xuICAgIGNvbnN0IHByb29mID0gdW5zdHJpbmdpZnlCaWdJbnRzKF9wcm9vZik7XG4gICAgY29uc3QgcHViID0gdW5zdHJpbmdpZnlCaWdJbnRzKF9wdWIpO1xuXG4gICAgY29uc3QgY3VydmUgPSBhd2FpdCBnZXRDdXJ2ZUZyb21OYW1lKHByb29mLmN1cnZlKTtcbiAgICBjb25zdCBHMSA9IGN1cnZlLkcxO1xuICAgIGNvbnN0IEZyID0gY3VydmUuRnI7XG5cbiAgICBsZXQgaW5wdXRzID0gXCJcIjtcbiAgICBmb3IgKGxldCBpPTA7IGk8cHViLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGlmIChpbnB1dHMgIT0gXCJcIikgaW5wdXRzID0gaW5wdXRzICsgXCIsXCI7XG4gICAgICAgIGlucHV0cyA9IGlucHV0cyArIHAyNTYocHViW2ldKTtcbiAgICB9XG5cbiAgICByZXR1cm4gYFske3AyNTYocHJvb2YuQVswXSl9LCAke3AyNTYocHJvb2YuQVsxXSl9LGAgK1xuICAgIGAke3AyNTYocHJvb2YuQlswXSl9LCR7cDI1Nihwcm9vZi5CWzFdKX0sYCArXG4gICAgYCR7cDI1Nihwcm9vZi5DWzBdKX0sJHtwMjU2KHByb29mLkNbMV0pfSxgICtcbiAgICBgJHtwMjU2KHByb29mLlpbMF0pfSwke3AyNTYocHJvb2YuWlsxXSl9LGAgK1xuICAgIGAke3AyNTYocHJvb2YuVDFbMF0pfSwke3AyNTYocHJvb2YuVDFbMV0pfSxgICtcbiAgICBgJHtwMjU2KHByb29mLlQyWzBdKX0sJHtwMjU2KHByb29mLlQyWzFdKX0sYCArXG4gICAgYCR7cDI1Nihwcm9vZi5UM1swXSl9LCR7cDI1Nihwcm9vZi5UM1sxXSl9LGAgK1xuICAgIGAke3AyNTYocHJvb2YuV3hpWzBdKX0sJHtwMjU2KHByb29mLld4aVsxXSl9LGAgK1xuICAgIGAke3AyNTYocHJvb2YuV3hpd1swXSl9LCR7cDI1Nihwcm9vZi5XeGl3WzFdKX0sYCArXG4gICAgYCR7cDI1Nihwcm9vZi5ldmFsX2EpfSxgICsgXG4gICAgYCR7cDI1Nihwcm9vZi5ldmFsX2IpfSxgICsgXG4gICAgYCR7cDI1Nihwcm9vZi5ldmFsX2MpfSxgICsgXG4gICAgYCR7cDI1Nihwcm9vZi5ldmFsX3MxKX0sYCArIFxuICAgIGAke3AyNTYocHJvb2YuZXZhbF9zMil9LGAgKyBcbiAgICBgJHtwMjU2KHByb29mLmV2YWxfencpfV1gICsgXG4gICAgYFske2lucHV0c31dYDtcbn1cbiIsIi8qXG4gICAgQ29weXJpZ2h0IDIwMTggMEtJTVMgYXNzb2NpYXRpb24uXG5cbiAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBzbmFya0pTLlxuXG4gICAgc25hcmtKUyBpcyBhIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXRcbiAgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yXG4gICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cblxuICAgIHNuYXJrSlMgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVRcbiAgICBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFlcbiAgICBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWNcbiAgICBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG5cbiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICAgIGFsb25nIHdpdGggc25hcmtKUy4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cbiovXG5cbi8vIFpLRVkgY29uc3RhbnRzXG5leHBvcnQge2RlZmF1bHQgYXMgc2V0dXB9IGZyb20gXCIuL3Bsb25rX3NldHVwLmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgZnVsbFByb3ZlfSBmcm9tIFwiLi9wbG9ua19mdWxscHJvdmUuanNcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBwcm92ZX0gZnJvbSBcIi4vcGxvbmtfcHJvdmUuanNcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyB2ZXJpZnl9IGZyb20gXCIuL3Bsb25rX3ZlcmlmeS5qc1wiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIGV4cG9ydFNvbGlkaXR5Q2FsbERhdGF9IGZyb20gXCIuL3Bsb25rX2V4cG9ydHNvbGlkaXR5Y2FsbGRhdGEuanNcIjtcbiIsIi8qXG4gICAgQ29weXJpZ2h0IDIwMjIgaWRlbjMgYXNzb2NpYXRpb24uXG5cbiAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBzbmFya2pzLlxuXG4gICAgc25hcmtqcyBpcyBhIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vclxuICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGVcbiAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbilcbiAgICBhbnkgbGF0ZXIgdmVyc2lvbi5cblxuICAgIHNuYXJranMgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFlcbiAgICBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3JcbiAgICBtb3JlIGRldGFpbHMuXG5cbiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZyB3aXRoXG4gICAgc25hcmtqcy4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cbiovXG5cbi8vIFdlIGV4cG9ydCB0byB6a2V5IHRoZSBzaWduYWxzIGFuZCB2YWx1ZXMgb2YgdGhlIGEsIGIsIGMsIHFsLCBxciwgcW0sIHFvIGFuZCBxY1xuXG4vLyBhLCBiIGFuZCBjIGFyZSBzaWduYWxzIGlkICgzMi1iaXQgaW50ZWdlcnMpXG4vLyBxbCwgcXIsIHFtLCBxbyBhbmQgcWMgYXJlIGZpZWxkIHZhbHVlc1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0RkZsb25rQ29uc3RhbnRDb25zdHJhaW50KHNpZ25hbDEsIEZyKSB7XG4gICAgcmV0dXJuIFtzaWduYWwxLCAwLCAwLCBGci5vbmUsIEZyLnplcm8sIEZyLnplcm8sIEZyLnplcm8sIEZyLnplcm9dO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0RkZsb25rQWRkaXRpb25Db25zdHJhaW50KHNpZ25hbDEsIHNpZ25hbDIsIHNpZ25hbE91dCwgcWwsIHFyLCBxbSwgcW8sIHFjKSB7XG4gICAgcmV0dXJuIFtzaWduYWwxLCBzaWduYWwyLCBzaWduYWxPdXQsIHFsLCBxciwgcW0sIHFvLCBxY107XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRGRmxvbmtNdWx0aXBsaWNhdGlvbkNvbnN0cmFpbnQoc2lnbmFsMSwgc2lnbmFsMiwgc2lnbmFsT3V0LCBxbCwgcXIsIHFtLCBxbywgcWMsIEZyKSB7XG4gICAgcmV0dXJuIFtzaWduYWwxLCBzaWduYWwyLCBzaWduYWxPdXQsIHFsLCBxciwgcW0sIHFvLCBxY107XG59XG4iLCIvKlxuICAgIENvcHlyaWdodCAyMDIyIGlkZW4zIGFzc29jaWF0aW9uLlxuXG4gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2Ygc25hcmtqcy5cblxuICAgIHNuYXJranMgaXMgYSBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3JcbiAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlXG4gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pXG4gICAgYW55IGxhdGVyIHZlcnNpb24uXG5cbiAgICBzbmFya2pzIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZXG4gICAgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yXG4gICAgbW9yZSBkZXRhaWxzLlxuXG4gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcgd2l0aFxuICAgIHNuYXJranMuIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXG4qL1xuXG5jb25zdCBMSU5FQVJfQ09NQklOQVRJT05fTlVMTEFCTEUgPSAwO1xuY29uc3QgTElORUFSX0NPTUJJTkFUSU9OX0NPTlNUQU5UID0gMTtcbmNvbnN0IExJTkVBUl9DT01CSU5BVElPTl9WQVJJQUJMRSA9IDI7XG5cbmV4cG9ydCBjbGFzcyByMWNzQ29uc3RyYWludFByb2Nlc3NvciB7XG4gICAgY29uc3RydWN0b3IoRnIsIGZuR2V0Q29uc3RhbnRDb25zdHJhaW50LCBmbkdldEFkZGl0aW9uQ29uc3RyYWludCwgZm5HZXRNdWx0aXBsaWNhdGlvbkNvbnN0cmFpbnQsIGxvZ2dlcikge1xuICAgICAgICB0aGlzLkZyID0gRnI7XG4gICAgICAgIHRoaXMubG9nZ2VyID0gbG9nZ2VyO1xuICAgICAgICB0aGlzLmZuR2V0QWRkaXRpb25Db25zdHJhaW50ID0gZm5HZXRBZGRpdGlvbkNvbnN0cmFpbnQ7XG4gICAgICAgIHRoaXMuZm5HZXRNdWx0aXBsaWNhdGlvbkNvbnN0cmFpbnQgPSBmbkdldE11bHRpcGxpY2F0aW9uQ29uc3RyYWludDtcbiAgICB9XG5cbiAgICBwcm9jZXNzUjFjc0NvbnN0cmFpbnQoc2V0dGluZ3MsIGxjQSwgbGNCLCBsY0MpIHtcbiAgICAgICAgdGhpcy5ub3JtYWxpemVMaW5lYXJDb21iaW5hdGlvbihsY0EpO1xuICAgICAgICB0aGlzLm5vcm1hbGl6ZUxpbmVhckNvbWJpbmF0aW9uKGxjQik7XG4gICAgICAgIHRoaXMubm9ybWFsaXplTGluZWFyQ29tYmluYXRpb24obGNDKTtcblxuICAgICAgICBjb25zdCBsY3RBID0gdGhpcy5nZXRMaW5lYXJDb21iaW5hdGlvblR5cGUobGNBKTtcbiAgICAgICAgY29uc3QgbGN0QiA9IHRoaXMuZ2V0TGluZWFyQ29tYmluYXRpb25UeXBlKGxjQik7XG5cbiAgICAgICAgaWYgKChsY3RBID09PSBMSU5FQVJfQ09NQklOQVRJT05fTlVMTEFCTEUpIHx8IChsY3RCID09PSBMSU5FQVJfQ09NQklOQVRJT05fTlVMTEFCTEUpKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5wcm9jZXNzUjFjc0FkZGl0aW9uQ29uc3RyYWludChzZXR0aW5ncywgbGNDKTtcbiAgICAgICAgfSBlbHNlIGlmIChsY3RBID09PSBMSU5FQVJfQ09NQklOQVRJT05fQ09OU1RBTlQpIHtcbiAgICAgICAgICAgIGNvbnN0IGxjQ0MgPSB0aGlzLmpvaW5MaW5lYXJDb21iaW5hdGlvbnMobGNCLCBsY0MsIGxjQVswXSk7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5wcm9jZXNzUjFjc0FkZGl0aW9uQ29uc3RyYWludChzZXR0aW5ncywgbGNDQyk7XG4gICAgICAgIH0gZWxzZSBpZiAobGN0QiA9PT0gTElORUFSX0NPTUJJTkFUSU9OX0NPTlNUQU5UKSB7XG4gICAgICAgICAgICBjb25zdCBsY0NDID0gdGhpcy5qb2luTGluZWFyQ29tYmluYXRpb25zKGxjQSwgbGNDLCBsY0JbMF0pO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMucHJvY2Vzc1IxY3NBZGRpdGlvbkNvbnN0cmFpbnQoc2V0dGluZ3MsIGxjQ0MpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMucHJvY2Vzc1IxY3NNdWx0aXBsaWNhdGlvbkNvbnN0cmFpbnQoc2V0dGluZ3MsIGxjQSwgbGNCLCBsY0MpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ2V0TGluZWFyQ29tYmluYXRpb25UeXBlKGxpbkNvbSkge1xuICAgICAgICAvLyBsZXQgayA9IHRoaXMuRnIuemVybztcbiAgICAgICAgLy9cbiAgICAgICAgLy8gY29uc3Qgc2lnbmFsSWRzID0gT2JqZWN0LmtleXMobGluQ29tKTtcbiAgICAgICAgLy8gZm9yIChsZXQgaSA9IDA7IGkgPCBzaWduYWxJZHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgLy8gICAgIGlmIChzaWduYWxJZHNbaV0gPT09IFwiMFwiKSB7XG4gICAgICAgIC8vICAgICAgICAgayA9IHRoaXMuRnIuYWRkKGssIGxpbkNvbVtzaWduYWxJZHNbaV1dKTtcbiAgICAgICAgLy8gICAgIH0gZWxzZSB7XG4gICAgICAgIC8vICAgICAgICAgcmV0dXJuIExJTkVBUl9DT01CSU5BVElPTl9WQVJJQUJMRTtcbiAgICAgICAgLy8gICAgIH1cbiAgICAgICAgLy8gfVxuICAgICAgICAvL1xuICAgICAgICAvLyBpZiAoIXRoaXMuRnIuZXEoaywgdGhpcy5Gci56ZXJvKSkgcmV0dXJuIExJTkVBUl9DT01CSU5BVElPTl9DT05TVEFOVDtcbiAgICAgICAgLy9cbiAgICAgICAgLy8gcmV0dXJuIExJTkVBUl9DT01CSU5BVElPTl9OVUxMQUJMRTtcblxuICAgICAgICBsZXQgayA9IHRoaXMuRnIuemVybztcbiAgICAgICAgbGV0IG4gPSAwO1xuICAgICAgICBjb25zdCBzcyA9IE9iamVjdC5rZXlzKGxpbkNvbSk7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc3MubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGlmIChsaW5Db21bc3NbaV1dID09IDBuKSB7XG4gICAgICAgICAgICAgICAgZGVsZXRlIGxpbkNvbVtzc1tpXV07XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHNzW2ldID09IDApIHtcbiAgICAgICAgICAgICAgICBrID0gdGhpcy5Gci5hZGQoaywgbGluQ29tW3NzW2ldXSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIG4rKztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAobiA+IDApIHJldHVybiBMSU5FQVJfQ09NQklOQVRJT05fVkFSSUFCTEU7XG4gICAgICAgIGlmICghdGhpcy5Gci5pc1plcm8oaykpIHJldHVybiBMSU5FQVJfQ09NQklOQVRJT05fQ09OU1RBTlQ7XG4gICAgICAgIHJldHVybiBMSU5FQVJfQ09NQklOQVRJT05fTlVMTEFCTEU7XG4gICAgfVxuXG4gICAgbm9ybWFsaXplTGluZWFyQ29tYmluYXRpb24obGluQ29tKSB7XG4gICAgICAgIGNvbnN0IHNpZ25hbElkcyA9IE9iamVjdC5rZXlzKGxpbkNvbSk7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc2lnbmFsSWRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5Gci5pc1plcm8obGluQ29tW3NpZ25hbElkc1tpXV0pKSBkZWxldGUgbGluQ29tW3NpZ25hbElkc1tpXV07XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbGluQ29tO1xuICAgIH1cblxuICAgIGpvaW5MaW5lYXJDb21iaW5hdGlvbnMobGluQ29tMSwgbGluQ29tMiwgaykge1xuICAgICAgICBjb25zdCByZXMgPSB7fTtcblxuICAgICAgICAvLyBmb3IgKGxldCBzIGluIGxpbkNvbTEpIHtcbiAgICAgICAgLy8gICAgIGNvbnN0IHZhbCA9IHRoaXMuRnIubXVsKGssIGxpbkNvbTFbc10pO1xuICAgICAgICAvLyAgICAgcmVzW3NdID0gIShzIGluIHJlcykgPyB2YWwgOiB0aGlzLkZyLmFkZCh2YWwsIHJlc1tzXSk7XG4gICAgICAgIC8vIH1cbiAgICAgICAgLy9cbiAgICAgICAgLy8gZm9yIChsZXQgcyBpbiBsaW5Db20yKSB7XG4gICAgICAgIC8vICAgICBjb25zdCB2YWwgPSB0aGlzLkZyLm11bChrLCBsaW5Db20yW3NdKTtcbiAgICAgICAgLy8gICAgIHJlc1tzXSA9ICEocyBpbiByZXMpID8gdmFsIDogdGhpcy5Gci5hZGQodmFsLCByZXNbc10pO1xuICAgICAgICAvLyB9XG5cbiAgICAgICAgZm9yIChsZXQgcyBpbiBsaW5Db20xKSB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIHJlc1tzXSA9PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgICAgICAgICAgICAgcmVzW3NdID0gdGhpcy5Gci5tdWwoaywgbGluQ29tMVtzXSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJlc1tzXSA9IHRoaXMuRnIuYWRkKHJlc1tzXSwgdGhpcy5Gci5tdWwoaywgbGluQ29tMVtzXSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgZm9yIChsZXQgcyBpbiBsaW5Db20yKSB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIHJlc1tzXSA9PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgICAgICAgICAgICAgcmVzW3NdID0gbGluQ29tMltzXTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmVzW3NdID0gdGhpcy5Gci5hZGQocmVzW3NdLCBsaW5Db20yW3NdKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLm5vcm1hbGl6ZUxpbmVhckNvbWJpbmF0aW9uKHJlcyk7XG4gICAgfVxuXG4gICAgcmVkdWNlQ29lZnMoc2V0dGluZ3MsIGNvbnN0cmFpbnRzQXJyLCBhZGRpdGlvbnNBcnIsIGxpbkNvbSwgbWF4Qykge1xuICAgICAgICBjb25zdCByZXMgPSB7XG4gICAgICAgICAgICBrOiB0aGlzLkZyLnplcm8sXG4gICAgICAgICAgICBzaWduYWxzOiBbXSxcbiAgICAgICAgICAgIGNvZWZzOiBbXVxuICAgICAgICB9O1xuICAgICAgICBjb25zdCBjcyA9IFtdO1xuXG4gICAgICAgIGZvciAobGV0IHNpZ25hbElkIGluIGxpbkNvbSkge1xuICAgICAgICAgICAgaWYgKHNpZ25hbElkID09IDApIHtcbiAgICAgICAgICAgICAgICByZXMuayA9IHRoaXMuRnIuYWRkKHJlcy5rLCBsaW5Db21bc2lnbmFsSWRdKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobGluQ29tW3NpZ25hbElkXSAhPSAwbikge1xuICAgICAgICAgICAgICAgIGNzLnB1c2goW051bWJlcihzaWduYWxJZCksIGxpbkNvbVtzaWduYWxJZF1dKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHdoaWxlIChjcy5sZW5ndGggPiBtYXhDKSB7XG4gICAgICAgICAgICBjb25zdCBjMSA9IGNzLnNoaWZ0KCk7XG4gICAgICAgICAgICBjb25zdCBjMiA9IGNzLnNoaWZ0KCk7XG4gICAgICAgICAgICBjb25zdCBzbyA9IHNldHRpbmdzLm5WYXJzKys7XG5cbiAgICAgICAgICAgIGNvbnN0IGNvbnN0cmFpbnRzID0gdGhpcy5mbkdldEFkZGl0aW9uQ29uc3RyYWludChcbiAgICAgICAgICAgICAgICBjMVswXSwgYzJbMF0sIHNvLFxuICAgICAgICAgICAgICAgIHRoaXMuRnIubmVnKGMxWzFdKSwgdGhpcy5Gci5uZWcoYzJbMV0pLCB0aGlzLkZyLnplcm8sIHRoaXMuRnIub25lLCB0aGlzLkZyLnplcm8pO1xuXG4gICAgICAgICAgICBjb25zdHJhaW50c0Fyci5wdXNoKGNvbnN0cmFpbnRzKTtcbiAgICAgICAgICAgIGFkZGl0aW9uc0Fyci5wdXNoKFtjMVswXSwgYzJbMF0sIGMxWzFdLCBjMlsxXV0pO1xuXG4gICAgICAgICAgICBjcy5wdXNoKFtzbywgdGhpcy5Gci5vbmVdKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY3MubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIHJlcy5zaWduYWxzW2ldID0gY3NbaV1bMF07XG4gICAgICAgICAgICByZXMuY29lZnNbaV0gPSBjc1tpXVsxXTtcbiAgICAgICAgfVxuXG4gICAgICAgIHdoaWxlIChyZXMuY29lZnMubGVuZ3RoIDwgbWF4Qykge1xuICAgICAgICAgICAgcmVzLnNpZ25hbHMucHVzaCgwKTtcbiAgICAgICAgICAgIHJlcy5jb2Vmcy5wdXNoKHRoaXMuRnIuemVybyk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH1cblxuICAgIHByb2Nlc3NSMWNzQWRkaXRpb25Db25zdHJhaW50KHNldHRpbmdzLCBsaW5Db20pIHtcbiAgICAgICAgY29uc3QgY29uc3RyYWludHNBcnIgPSBbXTtcbiAgICAgICAgY29uc3QgYWRkaXRpb25zQXJyID0gW107XG5cbiAgICAgICAgY29uc3QgQyA9IHRoaXMucmVkdWNlQ29lZnMoc2V0dGluZ3MsIGNvbnN0cmFpbnRzQXJyLCBhZGRpdGlvbnNBcnIsIGxpbkNvbSwgMyk7XG5cbiAgICAgICAgY29uc3QgY29uc3RyYWludHMgPSB0aGlzLmZuR2V0QWRkaXRpb25Db25zdHJhaW50KFxuICAgICAgICAgICAgQy5zaWduYWxzWzBdLCBDLnNpZ25hbHNbMV0sIEMuc2lnbmFsc1syXSxcbiAgICAgICAgICAgIEMuY29lZnNbMF0sIEMuY29lZnNbMV0sIHRoaXMuRnIuemVybywgQy5jb2Vmc1syXSwgQy5rKTtcblxuICAgICAgICBjb25zdHJhaW50c0Fyci5wdXNoKGNvbnN0cmFpbnRzKTtcblxuICAgICAgICByZXR1cm4gW2NvbnN0cmFpbnRzQXJyLCBhZGRpdGlvbnNBcnJdO1xuICAgIH1cblxuICAgIHByb2Nlc3NSMWNzTXVsdGlwbGljYXRpb25Db25zdHJhaW50KHNldHRpbmdzLCBsY0EsIGxjQiwgbGNDKSB7XG4gICAgICAgIGNvbnN0IGNvbnN0cmFpbnRzQXJyID0gW107XG4gICAgICAgIGNvbnN0IGFkZGl0aW9uc0FyciA9IFtdO1xuXG4gICAgICAgIGNvbnN0IEEgPSB0aGlzLnJlZHVjZUNvZWZzKHNldHRpbmdzLCBjb25zdHJhaW50c0FyciwgYWRkaXRpb25zQXJyLCBsY0EsIDEpO1xuICAgICAgICBjb25zdCBCID0gdGhpcy5yZWR1Y2VDb2VmcyhzZXR0aW5ncywgY29uc3RyYWludHNBcnIsIGFkZGl0aW9uc0FyciwgbGNCLCAxKTtcbiAgICAgICAgY29uc3QgQyA9IHRoaXMucmVkdWNlQ29lZnMoc2V0dGluZ3MsIGNvbnN0cmFpbnRzQXJyLCBhZGRpdGlvbnNBcnIsIGxjQywgMSk7XG5cbiAgICAgICAgY29uc3QgY29uc3RyYWludHMgPSB0aGlzLmZuR2V0TXVsdGlwbGljYXRpb25Db25zdHJhaW50KFxuICAgICAgICAgICAgQS5zaWduYWxzWzBdLCBCLnNpZ25hbHNbMF0sIEMuc2lnbmFsc1swXSxcbiAgICAgICAgICAgIHRoaXMuRnIubXVsKEEuY29lZnNbMF0sIEIuayksXG4gICAgICAgICAgICB0aGlzLkZyLm11bChBLmssIEIuY29lZnNbMF0pLFxuICAgICAgICAgICAgdGhpcy5Gci5tdWwoQS5jb2Vmc1swXSwgQi5jb2Vmc1swXSksXG4gICAgICAgICAgICB0aGlzLkZyLm5lZyhDLmNvZWZzWzBdKSxcbiAgICAgICAgICAgIHRoaXMuRnIuc3ViKHRoaXMuRnIubXVsKEEuaywgQi5rKSwgQy5rKSk7XG5cbiAgICAgICAgY29uc3RyYWludHNBcnIucHVzaChjb25zdHJhaW50cyk7XG5cbiAgICAgICAgcmV0dXJuIFtjb25zdHJhaW50c0FyciwgYWRkaXRpb25zQXJyXTtcbiAgICB9XG59IiwiLypcbiAgICBDb3B5cmlnaHQgMjAyMiBpZGVuMyBhc3NvY2lhdGlvbi5cblxuICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHNuYXJranMuXG5cbiAgICBzbmFya2pzIGlzIGEgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yXG4gICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZVxuICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKVxuICAgIGFueSBsYXRlciB2ZXJzaW9uLlxuXG4gICAgc25hcmtqcyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWVxuICAgIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvclxuICAgIG1vcmUgZGV0YWlscy5cblxuICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nIHdpdGhcbiAgICBzbmFya2pzLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuKi9cblxuLy8gQ1BvbHlub21pYWwgaXMgYSBDb21iaW5lZCBQb2x5bm9taWFsIG9mIHRoZSB0eXBlIDpcbi8vIENQb2x5bm9taWFsKFgpIDo9IFBfMChYXm4pICsgWMK3UF8xKFhebikgKyAuLi4gKyBYXntuLTF9wrdQX3tuLTF9KFhebilcbi8vIFdlIGNhbiB1c2UgdGhpcyBjbGFzcyB0byBhdm9pZCB0aGUgYWxsb2NhdGlvbiBvZiBhIGJpZyBtZW1vcnkgYnVmZmVyXG4vLyBmb3IgdGhlIGNvZWZmaWNpZW50cyBiZWNhdXNlIGluIHNvbWUgY2FzZXMgYSBiaWcgbnVtYmVyIG9mIHRoZSBjb2VmZmljaWVudHMgYXJlIHplcm9cblxuaW1wb3J0IHtCaWdCdWZmZXJ9IGZyb20gXCJmZmphdmFzY3JpcHRcIjtcbmltcG9ydCB7bG9nMn0gZnJvbSBcIi4uL21pc2MuanNcIjtcbmltcG9ydCB7UG9seW5vbWlhbH0gZnJvbSBcIi4vcG9seW5vbWlhbC5qc1wiO1xuXG5leHBvcnQgY2xhc3MgQ1BvbHlub21pYWwge1xuICAgIGNvbnN0cnVjdG9yKG4sIGN1cnZlLCBsb2dnZXIpIHtcbiAgICAgICAgdGhpcy5uID0gbjtcbiAgICAgICAgdGhpcy5wb2x5bm9taWFscyA9IEFycmF5KG4pLmZpbGwodW5kZWZpbmVkKTtcbiAgICAgICAgdGhpcy5jdXJ2ZSA9IGN1cnZlO1xuICAgICAgICB0aGlzLkZyID0gY3VydmUuRnI7XG4gICAgICAgIHRoaXMuRzEgPSBjdXJ2ZS5HMTtcbiAgICAgICAgdGhpcy5sb2dnZXIgPSBsb2dnZXI7XG4gICAgfVxuXG4gICAgYWRkUG9seW5vbWlhbChwb3NpdGlvbiwgcG9seW5vbWlhbCkge1xuICAgICAgICBpZiAocG9zaXRpb24gPiB0aGlzLm4gLSAxKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJDUG9seW5vbWlhbDphZGRQb2x5bm9taWFsLCBjYW5ub3QgYWRkIGEgcG9seW5vbWlhbCB0byBhIHBvc2l0aW9uIGdyZWF0ZXIgdGhhbiBuLTFcIik7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnBvbHlub21pYWxzW3Bvc2l0aW9uXSA9IHBvbHlub21pYWw7XG4gICAgfVxuXG4gICAgZGVncmVlKCkge1xuICAgICAgICBsZXQgZGVncmVlcyA9IHRoaXMucG9seW5vbWlhbHMubWFwKFxuICAgICAgICAgICAgKHBvbHlub21pYWwsIGluZGV4KSA9PiBwb2x5bm9taWFsID09PSB1bmRlZmluZWQgPyAwIDogcG9seW5vbWlhbC5kZWdyZWUoKSAqIHRoaXMubiArIGluZGV4KTtcbiAgICAgICAgcmV0dXJuIE1hdGgubWF4KC4uLmRlZ3JlZXMpO1xuICAgIH1cblxuICAgIGdldFBvbHlub21pYWwoKSB7XG4gICAgICAgIGxldCBkZWdyZWVzID0gdGhpcy5wb2x5bm9taWFscy5tYXAocG9seW5vbWlhbCA9PiBwb2x5bm9taWFsID09PSB1bmRlZmluZWQgPyAwIDogcG9seW5vbWlhbC5kZWdyZWUoKSk7XG4gICAgICAgIGNvbnN0IG1heERlZ3JlZSA9IHRoaXMuZGVncmVlKCk7XG4gICAgICAgIGNvbnN0IGxlbmd0aEJ1ZmZlciA9IDIgKiogKGxvZzIobWF4RGVncmVlIC0gMSkgKyAxKTtcbiAgICAgICAgY29uc3Qgc0ZyID0gdGhpcy5Gci5uODtcblxuICAgICAgICBsZXQgcG9seW5vbWlhbCA9IG5ldyBQb2x5bm9taWFsKG5ldyBCaWdCdWZmZXIobGVuZ3RoQnVmZmVyICogc0ZyKSwgdGhpcy5jdXJ2ZSwgdGhpcy5sb2dnZXIpO1xuXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbWF4RGVncmVlOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IGlfbjggPSBpICogc0ZyO1xuICAgICAgICAgICAgY29uc3QgaV9zRnIgPSBpX244ICogdGhpcy5uO1xuXG4gICAgICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMubjsgaisrKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMucG9seW5vbWlhbHNbal0gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoaSA8PSBkZWdyZWVzW2pdKSBwb2x5bm9taWFsLmNvZWYuc2V0KHRoaXMucG9seW5vbWlhbHNbal0uY29lZi5zbGljZShpX244LCBpX244ICsgc0ZyKSwgaV9zRnIgKyBqICogc0ZyKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcG9seW5vbWlhbDtcbiAgICB9XG5cbiAgICBhc3luYyBtdWx0aUV4cG9uZW50aWF0aW9uKFBUYXUsIG5hbWUpIHtcbiAgICAgICAgbGV0IHBvbHlub21pYWwgPSB0aGlzLmdldFBvbHlub21pYWwoKTtcbiAgICAgICAgY29uc3QgbiA9IHBvbHlub21pYWwuY29lZi5ieXRlTGVuZ3RoIC8gdGhpcy5Gci5uODtcbiAgICAgICAgY29uc3QgUFRhdU4gPSBQVGF1LnNsaWNlKDAsIG4gKiB0aGlzLkcxLkYubjggKiAyKTtcbiAgICAgICAgY29uc3QgYm0gPSBhd2FpdCB0aGlzLkZyLmJhdGNoRnJvbU1vbnRnb21lcnkocG9seW5vbWlhbC5jb2VmKTtcbiAgICAgICAgbGV0IHJlcyA9IGF3YWl0IHRoaXMuRzEubXVsdGlFeHBBZmZpbmUoUFRhdU4sIGJtLCB0aGlzLmxvZ2dlciwgbmFtZSk7XG4gICAgICAgIHJlcyA9IHRoaXMuRzEudG9BZmZpbmUocmVzKTtcbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG59IiwiLypcbiAgICBDb3B5cmlnaHQgMjAyMiBpZGVuMyBhc3NvY2lhdGlvbi5cblxuICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHNuYXJranMuXG5cbiAgICBzbmFya2pzIGlzIGEgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yXG4gICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZVxuICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKVxuICAgIGFueSBsYXRlciB2ZXJzaW9uLlxuXG4gICAgc25hcmtqcyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWVxuICAgIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvclxuICAgIG1vcmUgZGV0YWlscy5cblxuICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nIHdpdGhcbiAgICBzbmFya2pzLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuKi9cblxuaW1wb3J0IHtyZWFkUjFjc0ZkfSBmcm9tIFwicjFjc2ZpbGVcIjtcbmltcG9ydCAqIGFzIHV0aWxzIGZyb20gXCIuL3Bvd2Vyc29mdGF1X3V0aWxzLmpzXCI7XG5pbXBvcnQge2NyZWF0ZUJpbkZpbGUsIGVuZFdyaXRlU2VjdGlvbiwgcmVhZEJpbkZpbGUsIHN0YXJ0V3JpdGVTZWN0aW9uLCB3cml0ZUJpZ0ludCx9IGZyb20gXCJAaWRlbjMvYmluZmlsZXV0aWxzXCI7XG5pbXBvcnQge2xvZzJ9IGZyb20gXCIuL21pc2MuanNcIjtcbmltcG9ydCB7QmlnQnVmZmVyLCBTY2FsYXJ9IGZyb20gXCJmZmphdmFzY3JpcHRcIjtcbmltcG9ydCBCaWdBcnJheSBmcm9tIFwiLi9iaWdhcnJheS5qc1wiO1xuaW1wb3J0IHtcbiAgICBaS0VZX0ZGX0hFQURFUl9TRUNUSU9OLFxuICAgIFpLRVlfRkZfQURESVRJT05TX1NFQ1RJT04sXG4gICAgWktFWV9GRl9BX01BUF9TRUNUSU9OLFxuICAgIFpLRVlfRkZfQl9NQVBfU0VDVElPTixcbiAgICBaS0VZX0ZGX0NfTUFQX1NFQ1RJT04sXG4gICAgWktFWV9GRl9RTF9TRUNUSU9OLFxuICAgIFpLRVlfRkZfUVJfU0VDVElPTixcbiAgICBaS0VZX0ZGX1FNX1NFQ1RJT04sXG4gICAgWktFWV9GRl9RT19TRUNUSU9OLFxuICAgIFpLRVlfRkZfUUNfU0VDVElPTixcbiAgICBaS0VZX0ZGX1NJR01BMV9TRUNUSU9OLFxuICAgIFpLRVlfRkZfU0lHTUEyX1NFQ1RJT04sXG4gICAgWktFWV9GRl9TSUdNQTNfU0VDVElPTixcbiAgICBaS0VZX0ZGX0xBR1JBTkdFX1NFQ1RJT04sXG4gICAgWktFWV9GRl9QVEFVX1NFQ1RJT04sXG4gICAgRkZfVF9QT0xfREVHX01JTixcbiAgICBaS0VZX0ZGX05TRUNUSU9OUyxcbiAgICBaS0VZX0ZGX0MwX1NFQ1RJT04sXG59IGZyb20gXCIuL2ZmbG9ua19jb25zdGFudHMuanNcIjtcbmltcG9ydCB7RkZMT05LX1BST1RPQ09MX0lELCBIRUFERVJfWktFWV9TRUNUSU9OfSBmcm9tIFwiLi96a2V5X2NvbnN0YW50cy5qc1wiO1xuaW1wb3J0IHtcbiAgICBnZXRGRmxvbmtBZGRpdGlvbkNvbnN0cmFpbnQsXG4gICAgZ2V0RkZsb25rQ29uc3RhbnRDb25zdHJhaW50LFxuICAgIGdldEZGbG9ua011bHRpcGxpY2F0aW9uQ29uc3RyYWludFxufSBmcm9tIFwiLi9wbG9ua19lcXVhdGlvbi5qc1wiO1xuaW1wb3J0IHtyMWNzQ29uc3RyYWludFByb2Nlc3Nvcn0gZnJvbSBcIi4vcjFjc19jb25zdHJhaW50X3Byb2Nlc3Nvci5qc1wiO1xuaW1wb3J0IHtQb2x5bm9taWFsfSBmcm9tIFwiLi9wb2x5bm9taWFsL3BvbHlub21pYWwuanNcIjtcbmltcG9ydCAqIGFzIGJpbkZpbGVVdGlscyBmcm9tIFwiQGlkZW4zL2JpbmZpbGV1dGlsc1wiO1xuaW1wb3J0IHtFdmFsdWF0aW9uc30gZnJvbSBcIi4vcG9seW5vbWlhbC9ldmFsdWF0aW9ucy5qc1wiO1xuaW1wb3J0IHtDUG9seW5vbWlhbH0gZnJvbSBcIi4vcG9seW5vbWlhbC9jcG9seW5vbWlhbC5qc1wiO1xuXG5cbmV4cG9ydCBkZWZhdWx0IGFzeW5jIGZ1bmN0aW9uIGZmbG9ua1NldHVwKHIxY3NGaWxlbmFtZSwgcHRhdUZpbGVuYW1lLCB6a2V5RmlsZW5hbWUsIGxvZ2dlcikge1xuICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKFwiRkZMT05LIFNFVFVQIFNUQVJURURcIik7XG5cbiAgICBpZiAoZ2xvYmFsVGhpcy5nYykgZ2xvYmFsVGhpcy5nYygpO1xuXG4gICAgLy8gUmVhZCBQVGF1IGZpbGVcbiAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhcIj4gUmVhZGluZyBQVGF1IGZpbGVcIik7XG4gICAgY29uc3Qge2ZkOiBmZFBUYXUsIHNlY3Rpb25zOiBwVGF1U2VjdGlvbnN9ID0gYXdhaXQgcmVhZEJpbkZpbGUocHRhdUZpbGVuYW1lLCBcInB0YXVcIiwgMSwgMSA8PCAyMiwgMSA8PCAyNCk7XG4gICAgaWYgKCFwVGF1U2VjdGlvbnNbMTJdKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIlBvd2VycyBvZiBUYXUgaXMgbm90IHdlbGwgcHJlcGFyZWQuIFNlY3Rpb24gMTIgbWlzc2luZy5cIik7XG4gICAgfVxuXG4gICAgLy8gR2V0IGN1cnZlIGRlZmluZWQgaW4gUFRhdVxuICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKFwiPiBHZXR0aW5nIGN1cnZlIGZyb20gUFRhdSBzZXR0aW5nc1wiKTtcbiAgICBjb25zdCB7Y3VydmV9ID0gYXdhaXQgdXRpbHMucmVhZFBUYXVIZWFkZXIoZmRQVGF1LCBwVGF1U2VjdGlvbnMpO1xuXG4gICAgLy8gUmVhZCByMWNzIGZpbGVcbiAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhcIj4gUmVhZGluZyByMWNzIGZpbGVcIik7XG4gICAgY29uc3Qge2ZkOiBmZFIxY3MsIHNlY3Rpb25zOiBzZWN0aW9uc1IxY3N9ID0gYXdhaXQgcmVhZEJpbkZpbGUocjFjc0ZpbGVuYW1lLCBcInIxY3NcIiwgMSwgMSA8PCAyMiwgMSA8PCAyNCk7XG4gICAgY29uc3QgcjFjcyA9IGF3YWl0IHJlYWRSMWNzRmQoZmRSMWNzLCBzZWN0aW9uc1IxY3MsIHtsb2FkQ29uc3RyYWludHM6IGZhbHNlLCBsb2FkQ3VzdG9tR2F0ZXM6IHRydWV9KTtcblxuICAgIC8vIFBvdGVudGlhbCBlcnJvciBjaGVja3NcbiAgICBpZiAocjFjcy5wcmltZSAhPT0gY3VydmUucikge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJyMWNzIGN1cnZlIGRvZXMgbm90IG1hdGNoIHBvd2VycyBvZiB0YXUgY2VyZW1vbnkgY3VydmVcIik7XG4gICAgfVxuXG4gICAgLy8gSW5pdGlhbGl6YXRpb25zXG4gICAgY29uc3QgRnIgPSBjdXJ2ZS5GcjtcblxuICAgIGNvbnN0IHNGciA9IGN1cnZlLkZyLm44O1xuICAgIGNvbnN0IHNHMSA9IGN1cnZlLkcxLkYubjggKiAyO1xuICAgIGNvbnN0IHNHMiA9IGN1cnZlLkcyLkYubjggKiAyO1xuXG4gICAgbGV0IHBvbHlub21pYWxzID0ge307XG4gICAgbGV0IGV2YWx1YXRpb25zID0ge307XG4gICAgbGV0IFBUYXU7XG5cbiAgICBsZXQgc2V0dGluZ3MgPSB7XG4gICAgICAgIG5WYXJzOiByMWNzLm5WYXJzLFxuICAgICAgICBuUHVibGljOiByMWNzLm5PdXRwdXRzICsgcjFjcy5uUHViSW5wdXRzXG4gICAgfTtcblxuICAgIGNvbnN0IHBsb25rQ29uc3RyYWludHMgPSBuZXcgQmlnQXJyYXkoKTtcbiAgICBsZXQgcGxvbmtBZGRpdGlvbnMgPSBuZXcgQmlnQXJyYXkoKTtcblxuICAgIC8vIFByb2Nlc3MgY29uc3RyYWludHMgaW5zaWRlIHIxY3NcbiAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhcIj4gUHJvY2Vzc2luZyBGRmxvbmsgY29uc3RyYWludHNcIik7XG4gICAgYXdhaXQgY29tcHV0ZUZGQ29uc3RyYWludHMoY3VydmUuRnIsIHIxY3MsIGxvZ2dlcik7XG4gICAgaWYgKGdsb2JhbFRoaXMuZ2MpIGdsb2JhbFRoaXMuZ2MoKTtcblxuICAgIC8vIEFzIHRoZSB0IHBvbHlub21pYWwgaXMgbis1IHdlIG5lZWQgYXQgbGVhc3QgYSBwb3dlciBvZiA0XG4gICAgLy9UT0RPIGNoZWNrISEhIVxuICAgIC8vIE5PVEUgOiBwbG9ua0NvbnN0cmFpbnRzICsgMiA9ICNjb25zdHJhaW50cyArIGJsaW5kaW5nIGNvZWZmaWNpZW50cyBmb3IgZWFjaCB3aXJlIHBvbHlub21pYWxcbiAgICBzZXR0aW5ncy5jaXJQb3dlciA9IE1hdGgubWF4KEZGX1RfUE9MX0RFR19NSU4sIGxvZzIoKHBsb25rQ29uc3RyYWludHMubGVuZ3RoICsgMikgLSAxKSArIDEpO1xuICAgIHNldHRpbmdzLmRvbWFpblNpemUgPSAyICoqIHNldHRpbmdzLmNpclBvd2VyO1xuXG4gICAgaWYgKHBUYXVTZWN0aW9uc1syXVswXS5zaXplIDwgKHNldHRpbmdzLmRvbWFpblNpemUgKiA5ICsgMTgpICogc0cxKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIlBvd2VycyBvZiBUYXUgaXMgbm90IGJpZyBlbm91Z2ggZm9yIHRoaXMgY2lyY3VpdCBzaXplLiBTZWN0aW9uIDIgdG9vIHNtYWxsLlwiKTtcbiAgICB9XG4gICAgaWYgKHBUYXVTZWN0aW9uc1szXVswXS5zaXplIDwgc0cyKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIlBvd2VycyBvZiBUYXUgaXMgbm90IHdlbGwgcHJlcGFyZWQuIFNlY3Rpb24gMyB0b28gc21hbGwuXCIpO1xuICAgIH1cblxuICAgIGlmIChsb2dnZXIpIHtcbiAgICAgICAgbG9nZ2VyLmluZm8oXCItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXCIpO1xuICAgICAgICBsb2dnZXIuaW5mbyhcIiAgRkZMT05LIFNFVFVQIFNFVFRJTkdTXCIpO1xuICAgICAgICBsb2dnZXIuaW5mbyhgICBDdXJ2ZTogICAgICAgICAke2N1cnZlLm5hbWV9YCk7XG4gICAgICAgIGxvZ2dlci5pbmZvKGAgIENpcmN1aXQgcG93ZXI6ICR7c2V0dGluZ3MuY2lyUG93ZXJ9YCk7XG4gICAgICAgIGxvZ2dlci5pbmZvKGAgIERvbWFpbiBzaXplOiAgICR7c2V0dGluZ3MuZG9tYWluU2l6ZX1gKTtcbiAgICAgICAgbG9nZ2VyLmluZm8oYCAgVmFyczogICAgICAgICAgJHtzZXR0aW5ncy5uVmFyc31gKTtcbiAgICAgICAgbG9nZ2VyLmluZm8oYCAgUHVibGljIHZhcnM6ICAgJHtzZXR0aW5ncy5uUHVibGljfWApO1xuICAgICAgICBsb2dnZXIuaW5mbyhgICBDb25zdHJhaW50czogICAke3Bsb25rQ29uc3RyYWludHMubGVuZ3RofWApO1xuICAgICAgICBsb2dnZXIuaW5mbyhgICBBZGRpdGlvbnM6ICAgICAke3Bsb25rQWRkaXRpb25zLmxlbmd0aH1gKTtcbiAgICAgICAgbG9nZ2VyLmluZm8oXCItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXCIpO1xuICAgIH1cblxuICAgIC8vIENvbXB1dGUgazEgYW5kIGsyIHRvIGJlIHVzZWQgaW4gdGhlIHBlcm11dGF0aW9uIGNoZWNrc1xuICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKFwiPiBjb21wdXRpbmcgazEgYW5kIGsyXCIpO1xuICAgIGNvbnN0IFtrMSwgazJdID0gY29tcHV0ZUsxSzIoKTtcblxuICAgIC8vIENvbXB1dGUgb21lZ2EgMyAodzMpIGFuZCBvbWVnYSA0ICh3NCkgdG8gYmUgdXNlZCBpbiB0aGUgcHJvdmVyIGFuZCB0aGUgdmVyaWZpZXJcbiAgICAvLyB3M14zID0gMSBhbmQgIHc0XjQgPSAxXG4gICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oXCI+IGNvbXB1dGluZyB3M1wiKTtcbiAgICBjb25zdCB3MyA9IGNvbXB1dGVXMygpO1xuICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKFwiPiBjb21wdXRpbmcgdzRcIik7XG4gICAgY29uc3QgdzQgPSBjb21wdXRlVzQoKTtcbiAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhcIj4gY29tcHV0aW5nIHc4XCIpO1xuICAgIGNvbnN0IHc4ID0gY29tcHV0ZVc4KCk7XG4gICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oXCI+IGNvbXB1dGluZyB3clwiKTtcbiAgICBjb25zdCB3ciA9IGdldE9tZWdhQ3ViaWNSb290KHNldHRpbmdzLmNpclBvd2VyLCBjdXJ2ZS5Gcik7XG5cbiAgICAvLyBXcml0ZSBvdXRwdXQgemtleSBmaWxlXG4gICAgYXdhaXQgd3JpdGVaa2V5RmlsZSgpO1xuXG4gICAgYXdhaXQgZmRSMWNzLmNsb3NlKCk7XG4gICAgYXdhaXQgZmRQVGF1LmNsb3NlKCk7XG5cbiAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhcIkZGTE9OSyBTRVRVUCBGSU5JU0hFRFwiKTtcblxuICAgIHJldHVybiAwO1xuXG4gICAgYXN5bmMgZnVuY3Rpb24gY29tcHV0ZUZGQ29uc3RyYWludHMoRnIsIHIxY3MsIGxvZ2dlcikge1xuICAgICAgICAvLyBBZGQgcHVibGljIGlucHV0cyBhbmQgb3V0cHV0c1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNldHRpbmdzLm5QdWJsaWM7IGkrKykge1xuICAgICAgICAgICAgcGxvbmtDb25zdHJhaW50cy5wdXNoKGdldEZGbG9ua0NvbnN0YW50Q29uc3RyYWludChpICsgMSwgRnIpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEFkZCBhbGwgY29uc3RyYWludHMgZnJvbSByMWNzIGZpbGVcbiAgICAgICAgY29uc3QgcjFjc1Byb2Nlc3NvciA9IG5ldyByMWNzQ29uc3RyYWludFByb2Nlc3NvcihGciwgZ2V0RkZsb25rQ29uc3RhbnRDb25zdHJhaW50LCBnZXRGRmxvbmtBZGRpdGlvbkNvbnN0cmFpbnQsIGdldEZGbG9ua011bHRpcGxpY2F0aW9uQ29uc3RyYWludCwgbG9nZ2VyKTtcblxuICAgICAgICBjb25zdCBiUjFjcyA9IGF3YWl0IGJpbkZpbGVVdGlscy5yZWFkU2VjdGlvbihmZFIxY3MsIHNlY3Rpb25zUjFjcywgMik7XG4gICAgICAgIGxldCBiUjFjc1BvcyA9IDA7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcjFjcy5uQ29uc3RyYWludHM7IGkrKykge1xuICAgICAgICAgICAgaWYgKChsb2dnZXIpICYmIChpICE9PSAwKSAmJiAoaSAlIDUwMDAwMCA9PT0gMCkpIHtcbiAgICAgICAgICAgICAgICBsb2dnZXIuaW5mbyhgICAgIHByb2Nlc3NpbmcgcjFjcyBjb25zdHJhaW50cyAke2l9LyR7cjFjcy5uQ29uc3RyYWludHN9YCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBbY29uc3RyYWludHMsIGFkZGl0aW9uc10gPSByMWNzUHJvY2Vzc29yLnByb2Nlc3NSMWNzQ29uc3RyYWludChzZXR0aW5ncywgLi4ucmVhZENvbnN0cmFpbnQoKSk7XG5cbiAgICAgICAgICAgIHBsb25rQ29uc3RyYWludHMucHVzaCguLi5jb25zdHJhaW50cyk7XG4gICAgICAgICAgICBwbG9ua0FkZGl0aW9ucy5wdXNoKC4uLmFkZGl0aW9ucyk7XG4gICAgICAgIH1cblxuICAgICAgICBmdW5jdGlvbiByZWFkQ29uc3RyYWludCgpIHtcbiAgICAgICAgICAgIGNvbnN0IGMgPSBbXTtcbiAgICAgICAgICAgIGNbMF0gPSByZWFkTEMoKTtcbiAgICAgICAgICAgIGNbMV0gPSByZWFkTEMoKTtcbiAgICAgICAgICAgIGNbMl0gPSByZWFkTEMoKTtcbiAgICAgICAgICAgIHJldHVybiBjO1xuICAgICAgICB9XG5cbiAgICAgICAgZnVuY3Rpb24gcmVhZExDKCkge1xuICAgICAgICAgICAgY29uc3QgbGMgPSB7fTtcblxuICAgICAgICAgICAgY29uc3QgYnVmZlVMMzIgPSBiUjFjcy5zbGljZShiUjFjc1BvcywgYlIxY3NQb3MgKyA0KTtcbiAgICAgICAgICAgIGJSMWNzUG9zICs9IDQ7XG4gICAgICAgICAgICBjb25zdCBidWZmVUwzMlYgPSBuZXcgRGF0YVZpZXcoYnVmZlVMMzIuYnVmZmVyKTtcbiAgICAgICAgICAgIGNvbnN0IG5JZHggPSBidWZmVUwzMlYuZ2V0VWludDMyKDAsIHRydWUpO1xuXG4gICAgICAgICAgICBjb25zdCBidWZmID0gYlIxY3Muc2xpY2UoYlIxY3NQb3MsIGJSMWNzUG9zICsgKDQgKyByMWNzLm44KSAqIG5JZHgpO1xuICAgICAgICAgICAgYlIxY3NQb3MgKz0gKDQgKyByMWNzLm44KSAqIG5JZHg7XG4gICAgICAgICAgICBjb25zdCBidWZmViA9IG5ldyBEYXRhVmlldyhidWZmLmJ1ZmZlcik7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5JZHg7IGkrKykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGlkeCA9IGJ1ZmZWLmdldFVpbnQzMihpICogKDQgKyByMWNzLm44KSwgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgY29uc3QgdmFsID0gcjFjcy5GLmZyb21ScHJMRShidWZmLCBpICogKDQgKyByMWNzLm44KSArIDQpO1xuICAgICAgICAgICAgICAgIGxjW2lkeF0gPSB2YWw7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gbGM7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gMDtcbiAgICB9XG5cbiAgICBhc3luYyBmdW5jdGlvbiB3cml0ZVprZXlGaWxlKCkge1xuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhcIj4gV3JpdGluZyB0aGUgemtleSBmaWxlXCIpO1xuICAgICAgICBjb25zdCBmZFpLZXkgPSBhd2FpdCBjcmVhdGVCaW5GaWxlKHprZXlGaWxlbmFtZSwgXCJ6a2V5XCIsIDEsIFpLRVlfRkZfTlNFQ1RJT05TLCAxIDw8IDIyLCAxIDw8IDI0KTtcblxuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhgwrfCt8K3IFdyaXRpbmcgU2VjdGlvbiAke0hFQURFUl9aS0VZX1NFQ1RJT059LiBaa2V5IEhlYWRlcmApO1xuICAgICAgICBhd2FpdCB3cml0ZVprZXlIZWFkZXIoZmRaS2V5KTtcblxuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhgwrfCt8K3IFdyaXRpbmcgU2VjdGlvbiAke1pLRVlfRkZfQURESVRJT05TX1NFQ1RJT059LiBBZGRpdGlvbnNgKTtcbiAgICAgICAgYXdhaXQgd3JpdGVBZGRpdGlvbnMoZmRaS2V5KTtcbiAgICAgICAgaWYgKGdsb2JhbFRoaXMuZ2MpIGdsb2JhbFRoaXMuZ2MoKTtcblxuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhgwrfCt8K3IFdyaXRpbmcgU2VjdGlvbiAke1pLRVlfRkZfQV9NQVBfU0VDVElPTn0uIEEgTWFwYCk7XG4gICAgICAgIGF3YWl0IHdyaXRlV2l0bmVzc01hcChmZFpLZXksIFpLRVlfRkZfQV9NQVBfU0VDVElPTiwgMCwgXCJBIG1hcFwiKTtcbiAgICAgICAgaWYgKGdsb2JhbFRoaXMuZ2MpIGdsb2JhbFRoaXMuZ2MoKTtcblxuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhgwrfCt8K3IFdyaXRpbmcgU2VjdGlvbiAke1pLRVlfRkZfQl9NQVBfU0VDVElPTn0uIEIgTWFwYCk7XG4gICAgICAgIGF3YWl0IHdyaXRlV2l0bmVzc01hcChmZFpLZXksIFpLRVlfRkZfQl9NQVBfU0VDVElPTiwgMSwgXCJCIG1hcFwiKTtcbiAgICAgICAgaWYgKGdsb2JhbFRoaXMuZ2MpIGdsb2JhbFRoaXMuZ2MoKTtcblxuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhgwrfCt8K3IFdyaXRpbmcgU2VjdGlvbiAke1pLRVlfRkZfQ19NQVBfU0VDVElPTn0uIEMgTWFwYCk7XG4gICAgICAgIGF3YWl0IHdyaXRlV2l0bmVzc01hcChmZFpLZXksIFpLRVlfRkZfQ19NQVBfU0VDVElPTiwgMiwgXCJDIG1hcFwiKTtcbiAgICAgICAgaWYgKGdsb2JhbFRoaXMuZ2MpIGdsb2JhbFRoaXMuZ2MoKTtcblxuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhgwrfCt8K3IFdyaXRpbmcgU2VjdGlvbiAke1pLRVlfRkZfUUxfU0VDVElPTn0uIFFMYCk7XG4gICAgICAgIGF3YWl0IHdyaXRlUU1hcChmZFpLZXksIFpLRVlfRkZfUUxfU0VDVElPTiwgMywgXCJRTFwiKTtcbiAgICAgICAgaWYgKGdsb2JhbFRoaXMuZ2MpIGdsb2JhbFRoaXMuZ2MoKTtcblxuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhgwrfCt8K3IFdyaXRpbmcgU2VjdGlvbiAke1pLRVlfRkZfUVJfU0VDVElPTn0uIFFSYCk7XG4gICAgICAgIGF3YWl0IHdyaXRlUU1hcChmZFpLZXksIFpLRVlfRkZfUVJfU0VDVElPTiwgNCwgXCJRUlwiKTtcbiAgICAgICAgaWYgKGdsb2JhbFRoaXMuZ2MpIGdsb2JhbFRoaXMuZ2MoKTtcblxuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhgwrfCt8K3IFdyaXRpbmcgU2VjdGlvbiAke1pLRVlfRkZfUU1fU0VDVElPTn0uIFFNYCk7XG4gICAgICAgIGF3YWl0IHdyaXRlUU1hcChmZFpLZXksIFpLRVlfRkZfUU1fU0VDVElPTiwgNSwgXCJRTVwiKTtcbiAgICAgICAgaWYgKGdsb2JhbFRoaXMuZ2MpIGdsb2JhbFRoaXMuZ2MoKTtcblxuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhgwrfCt8K3IFdyaXRpbmcgU2VjdGlvbiAke1pLRVlfRkZfUU9fU0VDVElPTn0uIFFPYCk7XG4gICAgICAgIGF3YWl0IHdyaXRlUU1hcChmZFpLZXksIFpLRVlfRkZfUU9fU0VDVElPTiwgNiwgXCJRT1wiKTtcbiAgICAgICAgaWYgKGdsb2JhbFRoaXMuZ2MpIGdsb2JhbFRoaXMuZ2MoKTtcblxuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhgwrfCt8K3IFdyaXRpbmcgU2VjdGlvbiAke1pLRVlfRkZfUUNfU0VDVElPTn0uIFFDYCk7XG4gICAgICAgIGF3YWl0IHdyaXRlUU1hcChmZFpLZXksIFpLRVlfRkZfUUNfU0VDVElPTiwgNywgXCJRQ1wiKTtcbiAgICAgICAgaWYgKGdsb2JhbFRoaXMuZ2MpIGdsb2JhbFRoaXMuZ2MoKTtcblxuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhgwrfCt8K3IFdyaXRpbmcgU2VjdGlvbnMgJHtaS0VZX0ZGX1NJR01BMV9TRUNUSU9OfSwke1pLRVlfRkZfU0lHTUEyX1NFQ1RJT059LCR7WktFWV9GRl9TSUdNQTNfU0VDVElPTn0uIFNpZ21hMSwgU2lnbWEyICYgU2lnbWEgM2ApO1xuICAgICAgICBhd2FpdCB3cml0ZVNpZ21hKGZkWktleSk7XG4gICAgICAgIGlmIChnbG9iYWxUaGlzLmdjKSBnbG9iYWxUaGlzLmdjKCk7XG5cbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oYMK3wrfCtyBXcml0aW5nIFNlY3Rpb24gJHtaS0VZX0ZGX0xBR1JBTkdFX1NFQ1RJT059LiBMYWdyYW5nZSBQb2x5bm9taWFsc2ApO1xuICAgICAgICBhd2FpdCB3cml0ZUxhZ3JhbmdlUG9seW5vbWlhbHMoZmRaS2V5KTtcbiAgICAgICAgaWYgKGdsb2JhbFRoaXMuZ2MpIGdsb2JhbFRoaXMuZ2MoKTtcblxuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhgwrfCt8K3IFdyaXRpbmcgU2VjdGlvbiAke1pLRVlfRkZfUFRBVV9TRUNUSU9OfS4gUG93ZXJzIG9mIFRhdWApO1xuICAgICAgICBhd2FpdCB3cml0ZVB0YXUoZmRaS2V5KTtcbiAgICAgICAgaWYgKGdsb2JhbFRoaXMuZ2MpIGdsb2JhbFRoaXMuZ2MoKTtcblxuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhgwrfCt8K3IFdyaXRpbmcgU2VjdGlvbiAke1pLRVlfRkZfQzBfU0VDVElPTn0uIEMwYCk7XG4gICAgICAgIGF3YWl0IHdyaXRlQzAoZmRaS2V5KTtcbiAgICAgICAgaWYgKGdsb2JhbFRoaXMuZ2MpIGdsb2JhbFRoaXMuZ2MoKTtcblxuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhgwrfCt8K3IFdyaXRpbmcgU2VjdGlvbiAke1pLRVlfRkZfSEVBREVSX1NFQ1RJT059LiBGRmxvbmsgSGVhZGVyYCk7XG4gICAgICAgIGF3YWl0IHdyaXRlRkZsb25rSGVhZGVyKGZkWktleSk7XG4gICAgICAgIGlmIChnbG9iYWxUaGlzLmdjKSBnbG9iYWxUaGlzLmdjKCk7XG5cbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oXCI+IFdyaXRpbmcgdGhlIHprZXkgZmlsZSBmaW5pc2hlZFwiKTtcblxuICAgICAgICBhd2FpdCBmZFpLZXkuY2xvc2UoKTtcbiAgICB9XG5cbiAgICBhc3luYyBmdW5jdGlvbiB3cml0ZVprZXlIZWFkZXIoZmRaS2V5KSB7XG4gICAgICAgIGF3YWl0IHN0YXJ0V3JpdGVTZWN0aW9uKGZkWktleSwgSEVBREVSX1pLRVlfU0VDVElPTik7XG4gICAgICAgIGF3YWl0IGZkWktleS53cml0ZVVMRTMyKEZGTE9OS19QUk9UT0NPTF9JRCk7XG4gICAgICAgIGF3YWl0IGVuZFdyaXRlU2VjdGlvbihmZFpLZXkpO1xuICAgIH1cblxuICAgIGFzeW5jIGZ1bmN0aW9uIHdyaXRlQWRkaXRpb25zKGZkWktleSkge1xuICAgICAgICBhd2FpdCBzdGFydFdyaXRlU2VjdGlvbihmZFpLZXksIFpLRVlfRkZfQURESVRJT05TX1NFQ1RJT04pO1xuXG4gICAgICAgIC8vIFdyaXR0ZW4gdmFsdWVzIGFyZSAyICogMzIgYml0IGludGVnZXJzICgyICogNCBieXRlcykgKyAyIGZpZWxkIHNpemUgdmFsdWVzICggMiAqIHNGciBieXRlcylcbiAgICAgICAgY29uc3QgYnVmZk91dCA9IG5ldyBVaW50OEFycmF5KDggKyAyICogc0ZyKTtcbiAgICAgICAgY29uc3QgYnVmZk91dFYgPSBuZXcgRGF0YVZpZXcoYnVmZk91dC5idWZmZXIpO1xuXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcGxvbmtBZGRpdGlvbnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGlmICgobG9nZ2VyKSAmJiAoaSAhPT0gMCkgJiYgKGkgJSA1MDAwMDAgPT09IDApKSBsb2dnZXIuaW5mbyhgICAgICAgd3JpdGluZyBBZGRpdGlvbnM6ICR7aX0vJHtwbG9ua0FkZGl0aW9ucy5sZW5ndGh9YCk7XG5cbiAgICAgICAgICAgIGNvbnN0IGFkZGl0aW9uID0gcGxvbmtBZGRpdGlvbnNbaV07XG5cbiAgICAgICAgICAgIGJ1ZmZPdXRWLnNldFVpbnQzMigwLCBhZGRpdGlvblswXSwgdHJ1ZSk7XG4gICAgICAgICAgICBidWZmT3V0Vi5zZXRVaW50MzIoNCwgYWRkaXRpb25bMV0sIHRydWUpO1xuICAgICAgICAgICAgYnVmZk91dC5zZXQoYWRkaXRpb25bMl0sIDgpO1xuICAgICAgICAgICAgYnVmZk91dC5zZXQoYWRkaXRpb25bM10sIDggKyBzRnIpO1xuXG4gICAgICAgICAgICBhd2FpdCBmZFpLZXkud3JpdGUoYnVmZk91dCk7XG4gICAgICAgIH1cbiAgICAgICAgYXdhaXQgZW5kV3JpdGVTZWN0aW9uKGZkWktleSk7XG4gICAgfVxuXG4gICAgYXN5bmMgZnVuY3Rpb24gd3JpdGVXaXRuZXNzTWFwKGZkWktleSwgc2VjdGlvbk51bSwgcG9zQ29uc3RyYWludCwgbmFtZSkge1xuICAgICAgICBhd2FpdCBzdGFydFdyaXRlU2VjdGlvbihmZFpLZXksIHNlY3Rpb25OdW0pO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHBsb25rQ29uc3RyYWludHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGlmIChsb2dnZXIgJiYgKGkgIT09IDApICYmIChpICUgNTAwMDAwID09PSAwKSkge1xuICAgICAgICAgICAgICAgIGxvZ2dlci5pbmZvKGAgICAgICB3cml0aW5nIHdpdG5lc3MgJHtuYW1lfTogJHtpfS8ke3Bsb25rQ29uc3RyYWludHMubGVuZ3RofWApO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBhd2FpdCBmZFpLZXkud3JpdGVVTEUzMihwbG9ua0NvbnN0cmFpbnRzW2ldW3Bvc0NvbnN0cmFpbnRdKTtcbiAgICAgICAgfVxuICAgICAgICBhd2FpdCBlbmRXcml0ZVNlY3Rpb24oZmRaS2V5KTtcbiAgICB9XG5cbiAgICBhc3luYyBmdW5jdGlvbiB3cml0ZVFNYXAoZmRaS2V5LCBzZWN0aW9uTnVtLCBwb3NDb25zdHJhaW50LCBuYW1lKSB7XG4gICAgICAgIC8vIENvbXB1dGUgUSBmcm9tIHEgZXZhbHVhdGlvbnNcbiAgICAgICAgbGV0IFEgPSBuZXcgQmlnQnVmZmVyKHNldHRpbmdzLmRvbWFpblNpemUgKiBzRnIpO1xuXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcGxvbmtDb25zdHJhaW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgUS5zZXQocGxvbmtDb25zdHJhaW50c1tpXVtwb3NDb25zdHJhaW50XSwgaSAqIHNGcik7XG4gICAgICAgICAgICBpZiAoKGxvZ2dlcikgJiYgKGkgIT09IDApICYmIChpICUgNTAwMDAwID09PSAwKSkge1xuICAgICAgICAgICAgICAgIGxvZ2dlci5pbmZvKGAgICAgICB3cml0aW5nICR7bmFtZX06ICR7aX0vJHtwbG9ua0NvbnN0cmFpbnRzLmxlbmd0aH1gKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHBvbHlub21pYWxzW25hbWVdID0gYXdhaXQgUG9seW5vbWlhbC5mcm9tRXZhbHVhdGlvbnMoUSwgY3VydmUsIGxvZ2dlcik7XG4gICAgICAgIGV2YWx1YXRpb25zW25hbWVdID0gYXdhaXQgRXZhbHVhdGlvbnMuZnJvbVBvbHlub21pYWwocG9seW5vbWlhbHNbbmFtZV0sIDQsIGN1cnZlLCBsb2dnZXIpO1xuXG4gICAgICAgIC8vIFdyaXRlIFEgY29lZmZpY2llbnRzIGFuZCBldmFsdWF0aW9uc1xuICAgICAgICBhd2FpdCBzdGFydFdyaXRlU2VjdGlvbihmZFpLZXksIHNlY3Rpb25OdW0pO1xuICAgICAgICBhd2FpdCBmZFpLZXkud3JpdGUocG9seW5vbWlhbHNbbmFtZV0uY29lZik7XG4gICAgICAgIGF3YWl0IGZkWktleS53cml0ZShldmFsdWF0aW9uc1tuYW1lXS5ldmFsKTtcbiAgICAgICAgYXdhaXQgZW5kV3JpdGVTZWN0aW9uKGZkWktleSk7XG4gICAgfVxuXG4gICAgYXN5bmMgZnVuY3Rpb24gd3JpdGVTaWdtYShmZFpLZXkpIHtcbiAgICAgICAgLy8gQ29tcHV0ZSBzaWdtYVxuICAgICAgICBjb25zdCBzaWdtYSA9IG5ldyBCaWdCdWZmZXIoc0ZyICogc2V0dGluZ3MuZG9tYWluU2l6ZSAqIDMpO1xuICAgICAgICBjb25zdCBsYXN0U2VlbiA9IG5ldyBCaWdBcnJheShzZXR0aW5ncy5uVmFycyk7XG4gICAgICAgIGNvbnN0IGZpcnN0UG9zID0gbmV3IEJpZ0FycmF5KHNldHRpbmdzLm5WYXJzKTtcblxuICAgICAgICBsZXQgdyA9IEZyLm9uZTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzZXR0aW5ncy5kb21haW5TaXplOyBpKyspIHtcbiAgICAgICAgICAgIGlmIChpIDwgcGxvbmtDb25zdHJhaW50cy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICBidWlsZFNpZ21hKHBsb25rQ29uc3RyYWludHNbaV1bMF0sIGkpO1xuICAgICAgICAgICAgICAgIGJ1aWxkU2lnbWEocGxvbmtDb25zdHJhaW50c1tpXVsxXSwgc2V0dGluZ3MuZG9tYWluU2l6ZSArIGkpO1xuICAgICAgICAgICAgICAgIGJ1aWxkU2lnbWEocGxvbmtDb25zdHJhaW50c1tpXVsyXSwgc2V0dGluZ3MuZG9tYWluU2l6ZSAqIDIgKyBpKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaSA8IHNldHRpbmdzLmRvbWFpblNpemUgLSAyKSB7XG4gICAgICAgICAgICAgICAgYnVpbGRTaWdtYSgwLCBpKTtcbiAgICAgICAgICAgICAgICBidWlsZFNpZ21hKDAsIHNldHRpbmdzLmRvbWFpblNpemUgKyBpKTtcbiAgICAgICAgICAgICAgICBidWlsZFNpZ21hKDAsIHNldHRpbmdzLmRvbWFpblNpemUgKiAyICsgaSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHNpZ21hLnNldCh3LCBpICogc0ZyKTtcbiAgICAgICAgICAgICAgICBzaWdtYS5zZXQoRnIubXVsKHcsIGsxKSwgKHNldHRpbmdzLmRvbWFpblNpemUgKyBpKSAqIHNGcik7XG4gICAgICAgICAgICAgICAgc2lnbWEuc2V0KEZyLm11bCh3LCBrMiksIChzZXR0aW5ncy5kb21haW5TaXplICogMiArIGkpICogc0ZyKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdyA9IEZyLm11bCh3LCBGci53W3NldHRpbmdzLmNpclBvd2VyXSk7XG5cbiAgICAgICAgICAgIGlmICgobG9nZ2VyKSAmJiAoaSAhPT0gMCkgJiYgKGkgJSA1MDAwMDAgPT09IDApKSB7XG4gICAgICAgICAgICAgICAgbG9nZ2VyLmluZm8oYCAgICAgIHdyaXRpbmcgc2lnbWEgcGhhc2UxOiAke2l9LyR7cGxvbmtDb25zdHJhaW50cy5sZW5ndGh9YCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNldHRpbmdzLm5WYXJzOyBpKyspIHtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgZmlyc3RQb3NbaV0gIT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgICAgICAgICAgICBzaWdtYS5zZXQobGFzdFNlZW5baV0sIGZpcnN0UG9zW2ldICogc0ZyKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgLy8gdGhyb3cgbmV3IEVycm9yKFwiVmFyaWFibGUgbm90IHVzZWRcIik7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCJWYXJpYWJsZSBub3QgdXNlZFwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICgobG9nZ2VyKSAmJiAoaSAhPT0gMCkgJiYgKGkgJSA1MDAwMDAgPT09IDApKSBsb2dnZXIuaW5mbyhgICAgICAgd3JpdGluZyBzaWdtYSBwaGFzZTI6ICR7aX0vJHtzZXR0aW5ncy5uVmFyc31gKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChnbG9iYWxUaGlzLmdjKSBnbG9iYWxUaGlzLmdjKCk7XG5cbiAgICAgICAgLy8gV3JpdGUgc2lnbWEgY29lZmZpY2llbnRzIGFuZCBldmFsdWF0aW9uc1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IDM7IGkrKykge1xuICAgICAgICAgICAgY29uc3Qgc2VjdGlvbklkID0gMCA9PT0gaSA/IFpLRVlfRkZfU0lHTUExX1NFQ1RJT04gOiAxID09PSBpID8gWktFWV9GRl9TSUdNQTJfU0VDVElPTiA6IFpLRVlfRkZfU0lHTUEzX1NFQ1RJT047XG5cbiAgICAgICAgICAgIGxldCBuYW1lID0gXCJTXCIgKyAoaSArIDEpO1xuICAgICAgICAgICAgcG9seW5vbWlhbHNbbmFtZV0gPSBhd2FpdCBQb2x5bm9taWFsLmZyb21FdmFsdWF0aW9ucyhzaWdtYS5zbGljZShzZXR0aW5ncy5kb21haW5TaXplICogc0ZyICogaSwgc2V0dGluZ3MuZG9tYWluU2l6ZSAqIHNGciAqIChpICsgMSkpLCBjdXJ2ZSwgbG9nZ2VyKTtcbiAgICAgICAgICAgIGV2YWx1YXRpb25zW25hbWVdID0gYXdhaXQgRXZhbHVhdGlvbnMuZnJvbVBvbHlub21pYWwocG9seW5vbWlhbHNbbmFtZV0sIDQsIGN1cnZlLCBsb2dnZXIpO1xuICAgICAgICAgICAgYXdhaXQgc3RhcnRXcml0ZVNlY3Rpb24oZmRaS2V5LCBzZWN0aW9uSWQpO1xuICAgICAgICAgICAgYXdhaXQgZmRaS2V5LndyaXRlKHBvbHlub21pYWxzW25hbWVdLmNvZWYpO1xuICAgICAgICAgICAgYXdhaXQgZmRaS2V5LndyaXRlKGV2YWx1YXRpb25zW25hbWVdLmV2YWwpO1xuICAgICAgICAgICAgYXdhaXQgZW5kV3JpdGVTZWN0aW9uKGZkWktleSk7XG5cbiAgICAgICAgICAgIGlmIChnbG9iYWxUaGlzLmdjKSBnbG9iYWxUaGlzLmdjKCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gMDtcblxuICAgICAgICBmdW5jdGlvbiBidWlsZFNpZ21hKHNpZ25hbElkLCBpZHgpIHtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgbGFzdFNlZW5bc2lnbmFsSWRdID09PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgICAgICAgICAgICAgZmlyc3RQb3Nbc2lnbmFsSWRdID0gaWR4O1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBzaWdtYS5zZXQobGFzdFNlZW5bc2lnbmFsSWRdLCBpZHggKiBzRnIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbGV0IHY7XG4gICAgICAgICAgICBpZiAoaWR4IDwgc2V0dGluZ3MuZG9tYWluU2l6ZSkge1xuICAgICAgICAgICAgICAgIHYgPSB3O1xuICAgICAgICAgICAgfSBlbHNlIGlmIChpZHggPCAyICogc2V0dGluZ3MuZG9tYWluU2l6ZSkge1xuICAgICAgICAgICAgICAgIHYgPSBGci5tdWwodywgazEpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB2ID0gRnIubXVsKHcsIGsyKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgbGFzdFNlZW5bc2lnbmFsSWRdID0gdjtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGFzeW5jIGZ1bmN0aW9uIHdyaXRlTGFncmFuZ2VQb2x5bm9taWFscyhmZFpLZXkpIHtcbiAgICAgICAgYXdhaXQgc3RhcnRXcml0ZVNlY3Rpb24oZmRaS2V5LCBaS0VZX0ZGX0xBR1JBTkdFX1NFQ1RJT04pO1xuXG4gICAgICAgIGNvbnN0IGwgPSBNYXRoLm1heChzZXR0aW5ncy5uUHVibGljLCAxKTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsOyBpKyspIHtcbiAgICAgICAgICAgIGxldCBidWZmID0gbmV3IEJpZ0J1ZmZlcihzZXR0aW5ncy5kb21haW5TaXplICogc0ZyKTtcbiAgICAgICAgICAgIGJ1ZmYuc2V0KEZyLm9uZSwgaSAqIHNGcik7XG5cbiAgICAgICAgICAgIGF3YWl0IHdyaXRlUDQoZmRaS2V5LCBidWZmKTtcbiAgICAgICAgfVxuICAgICAgICBhd2FpdCBlbmRXcml0ZVNlY3Rpb24oZmRaS2V5KTtcbiAgICB9XG5cbiAgICBhc3luYyBmdW5jdGlvbiB3cml0ZVB0YXUoZmRaS2V5KSB7XG4gICAgICAgIGF3YWl0IHN0YXJ0V3JpdGVTZWN0aW9uKGZkWktleSwgWktFWV9GRl9QVEFVX1NFQ1RJT04pO1xuXG4gICAgICAgIC8vIGRvbWFpblNpemUgKiA5ICsgMTggPSBtYXhpbXVtIFNSUyBsZW5ndGggbmVlZGVkLCBzcGVjaWZpY2FsbHkgdG8gY29tbWl0IEMyXG4gICAgICAgIFBUYXUgPSBuZXcgQmlnQnVmZmVyKChzZXR0aW5ncy5kb21haW5TaXplICogOSArIDE4KSAqIHNHMSk7XG4gICAgICAgIGF3YWl0IGZkUFRhdS5yZWFkVG9CdWZmZXIoUFRhdSwgMCwgKHNldHRpbmdzLmRvbWFpblNpemUgKiA5ICsgMTgpICogc0cxLCBwVGF1U2VjdGlvbnNbMl1bMF0ucCk7XG5cbiAgICAgICAgYXdhaXQgZmRaS2V5LndyaXRlKFBUYXUpO1xuICAgICAgICBhd2FpdCBlbmRXcml0ZVNlY3Rpb24oZmRaS2V5KTtcbiAgICB9XG5cbiAgICBhc3luYyBmdW5jdGlvbiB3cml0ZUMwKGZkWktleSkge1xuICAgICAgICAvLyBDMChYKSA6PSBRTChYXjgpICsgWCDCtyBRUihYXjgpICsgWF4yIMK3IFFPKFheOCkgKyBYXjMgwrcgUU0oWF44KSArIFheNCDCtyBRQyhYXjgpXG4gICAgICAgIC8vICAgICAgICAgICAgKyBYXjUgwrcgU0lHTUExKFheOCkgKyBYXjYgwrcgU0lHTUEyKFheOCkgKyBYXjcgwrcgU0lHTUEzKFheOClcbiAgICAgICAgbGV0IEMwID0gbmV3IENQb2x5bm9taWFsKDgsIGN1cnZlLCBsb2dnZXIpO1xuICAgICAgICBDMC5hZGRQb2x5bm9taWFsKDAsIHBvbHlub21pYWxzLlFMKTtcbiAgICAgICAgQzAuYWRkUG9seW5vbWlhbCgxLCBwb2x5bm9taWFscy5RUik7XG4gICAgICAgIEMwLmFkZFBvbHlub21pYWwoMiwgcG9seW5vbWlhbHMuUU8pO1xuICAgICAgICBDMC5hZGRQb2x5bm9taWFsKDMsIHBvbHlub21pYWxzLlFNKTtcbiAgICAgICAgQzAuYWRkUG9seW5vbWlhbCg0LCBwb2x5bm9taWFscy5RQyk7XG4gICAgICAgIEMwLmFkZFBvbHlub21pYWwoNSwgcG9seW5vbWlhbHMuUzEpO1xuICAgICAgICBDMC5hZGRQb2x5bm9taWFsKDYsIHBvbHlub21pYWxzLlMyKTtcbiAgICAgICAgQzAuYWRkUG9seW5vbWlhbCg3LCBwb2x5bm9taWFscy5TMyk7XG5cbiAgICAgICAgcG9seW5vbWlhbHMuQzAgPSBDMC5nZXRQb2x5bm9taWFsKCk7XG5cbiAgICAgICAgLy8gQ2hlY2sgZGVncmVlXG4gICAgICAgIGlmIChwb2x5bm9taWFscy5DMC5kZWdyZWUoKSA+PSA4ICogc2V0dGluZ3MuZG9tYWluU2l6ZSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiQzAgUG9seW5vbWlhbCBpcyBub3Qgd2VsbCBjYWxjdWxhdGVkXCIpO1xuICAgICAgICB9XG5cbiAgICAgICAgYXdhaXQgc3RhcnRXcml0ZVNlY3Rpb24oZmRaS2V5LCBaS0VZX0ZGX0MwX1NFQ1RJT04pO1xuICAgICAgICBhd2FpdCBmZFpLZXkud3JpdGUocG9seW5vbWlhbHMuQzAuY29lZik7XG4gICAgICAgIGF3YWl0IGVuZFdyaXRlU2VjdGlvbihmZFpLZXkpO1xuICAgIH1cblxuICAgIGFzeW5jIGZ1bmN0aW9uIHdyaXRlRkZsb25rSGVhZGVyKGZkWktleSkge1xuICAgICAgICBhd2FpdCBzdGFydFdyaXRlU2VjdGlvbihmZFpLZXksIFpLRVlfRkZfSEVBREVSX1NFQ1RJT04pO1xuXG4gICAgICAgIGNvbnN0IHByaW1lUSA9IGN1cnZlLnE7XG4gICAgICAgIGNvbnN0IG44cSA9IChNYXRoLmZsb29yKChTY2FsYXIuYml0TGVuZ3RoKHByaW1lUSkgLSAxKSAvIDY0KSArIDEpICogODtcbiAgICAgICAgYXdhaXQgZmRaS2V5LndyaXRlVUxFMzIobjhxKTtcbiAgICAgICAgYXdhaXQgd3JpdGVCaWdJbnQoZmRaS2V5LCBwcmltZVEsIG44cSk7XG5cbiAgICAgICAgY29uc3QgcHJpbWVSID0gY3VydmUucjtcbiAgICAgICAgY29uc3QgbjhyID0gKE1hdGguZmxvb3IoKFNjYWxhci5iaXRMZW5ndGgocHJpbWVSKSAtIDEpIC8gNjQpICsgMSkgKiA4O1xuICAgICAgICBhd2FpdCBmZFpLZXkud3JpdGVVTEUzMihuOHIpO1xuICAgICAgICBhd2FpdCB3cml0ZUJpZ0ludChmZFpLZXksIHByaW1lUiwgbjhyKTtcblxuICAgICAgICAvLyBUb3RhbCBudW1iZXIgb2YgcjFjcyB2YXJzXG4gICAgICAgIGF3YWl0IGZkWktleS53cml0ZVVMRTMyKHNldHRpbmdzLm5WYXJzKTtcbiAgICAgICAgLy8gVG90YWwgbnVtYmVyIG9mIHIxY3MgcHVibGljIHZhcnMgPSBvdXRwdXRzICsgcHVibGljIGlucHV0c1xuICAgICAgICBhd2FpdCBmZFpLZXkud3JpdGVVTEUzMihzZXR0aW5ncy5uUHVibGljKTtcbiAgICAgICAgYXdhaXQgZmRaS2V5LndyaXRlVUxFMzIoc2V0dGluZ3MuZG9tYWluU2l6ZSk7XG4gICAgICAgIGF3YWl0IGZkWktleS53cml0ZVVMRTMyKHBsb25rQWRkaXRpb25zLmxlbmd0aCk7XG4gICAgICAgIGF3YWl0IGZkWktleS53cml0ZVVMRTMyKHBsb25rQ29uc3RyYWludHMubGVuZ3RoKTtcblxuICAgICAgICBhd2FpdCBmZFpLZXkud3JpdGUoazEpO1xuICAgICAgICBhd2FpdCBmZFpLZXkud3JpdGUoazIpO1xuXG4gICAgICAgIGF3YWl0IGZkWktleS53cml0ZSh3Myk7XG4gICAgICAgIGF3YWl0IGZkWktleS53cml0ZSh3NCk7XG4gICAgICAgIGF3YWl0IGZkWktleS53cml0ZSh3OCk7XG4gICAgICAgIGF3YWl0IGZkWktleS53cml0ZSh3cik7XG5cbiAgICAgICAgbGV0IGJYXzI7XG4gICAgICAgIGJYXzIgPSBhd2FpdCBmZFBUYXUucmVhZChzRzIsIHBUYXVTZWN0aW9uc1szXVswXS5wICsgc0cyKTtcbiAgICAgICAgYXdhaXQgZmRaS2V5LndyaXRlKGJYXzIpO1xuXG4gICAgICAgIGxldCBjb21taXRDMCA9IGF3YWl0IHBvbHlub21pYWxzLkMwLm11bHRpRXhwb25lbnRpYXRpb24oUFRhdSwgXCJDMFwiKTtcbiAgICAgICAgYXdhaXQgZmRaS2V5LndyaXRlKGNvbW1pdEMwKTtcblxuICAgICAgICBhd2FpdCBlbmRXcml0ZVNlY3Rpb24oZmRaS2V5KTtcbiAgICB9XG5cbiAgICBhc3luYyBmdW5jdGlvbiB3cml0ZVA0KGZkWktleSwgYnVmZikge1xuICAgICAgICBjb25zdCBbY29lZmZpY2llbnRzLCBldmFsdWF0aW9uczRdID0gYXdhaXQgUG9seW5vbWlhbC50bzRUKGJ1ZmYsIHNldHRpbmdzLmRvbWFpblNpemUsIFtdLCBGcik7XG4gICAgICAgIGF3YWl0IGZkWktleS53cml0ZShjb2VmZmljaWVudHMpO1xuICAgICAgICBhd2FpdCBmZFpLZXkud3JpdGUoZXZhbHVhdGlvbnM0KTtcblxuICAgICAgICByZXR1cm4gW2NvZWZmaWNpZW50cywgZXZhbHVhdGlvbnM0XTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBjb21wdXRlSzFLMigpIHtcbiAgICAgICAgbGV0IGsxID0gRnIudHdvO1xuICAgICAgICB3aGlsZSAoaXNJbmNsdWRlZChrMSwgW10sIHNldHRpbmdzLmNpclBvd2VyKSkgRnIuYWRkKGsxLCBGci5vbmUpO1xuICAgICAgICBsZXQgazIgPSBGci5hZGQoazEsIEZyLm9uZSk7XG4gICAgICAgIHdoaWxlIChpc0luY2x1ZGVkKGsyLCBbazFdLCBzZXR0aW5ncy5jaXJQb3dlcikpIEZyLmFkZChrMiwgRnIub25lKTtcbiAgICAgICAgcmV0dXJuIFtrMSwgazJdO1xuXG4gICAgICAgIGZ1bmN0aW9uIGlzSW5jbHVkZWQoaywga0FyciwgcG93KSB7XG4gICAgICAgICAgICBjb25zdCBkb21haW5TaXplID0gMiAqKiBwb3c7XG4gICAgICAgICAgICBsZXQgdyA9IEZyLm9uZTtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZG9tYWluU2l6ZTsgaSsrKSB7XG4gICAgICAgICAgICAgICAgaWYgKEZyLmVxKGssIHcpKSByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IGtBcnIubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKEZyLmVxKGssIEZyLm11bChrQXJyW2pdLCB3KSkpIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB3ID0gRnIubXVsKHcsIEZyLndbcG93XSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBjb21wdXRlVzMoKSB7XG4gICAgICAgIGxldCBnZW5lcmF0b3IgPSBGci5lKDMxNjI0KTtcblxuICAgICAgICAvLyBFeHBvbmVudCBpcyBvcmRlcihyIC0gMSkgLyAzXG4gICAgICAgIGxldCBvcmRlclJzdWIxID0gMzY0ODA0MDQ3ODYzOTg3OTIwMzcwNzczNDI5MDg3NjIxMjUxNDc1ODA2MDczMzQwMjY3MjM5MDYxNjM2NzM2NDQyOTMwMTQxNTkzNm47XG4gICAgICAgIGxldCBleHBvbmVudCA9IFNjYWxhci5kaXYob3JkZXJSc3ViMSwgU2NhbGFyLmUoMykpO1xuXG4gICAgICAgIHJldHVybiBGci5leHAoZ2VuZXJhdG9yLCBleHBvbmVudCk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY29tcHV0ZVc0KCkge1xuICAgICAgICByZXR1cm4gRnIud1syXTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBjb21wdXRlVzgoKSB7XG4gICAgICAgIHJldHVybiBGci53WzNdO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldE9tZWdhQ3ViaWNSb290KHBvd2VyLCBGcikge1xuICAgICAgICAvLyBIYXJkY29yZGVkIDN0aC1yb290IG9mIEZyLndbMjhdXG4gICAgICAgIGNvbnN0IGZpcnN0Um9vdCA9IEZyLmUoNDY3Nzk5MTY1ODg2MDY5NjEwMDM2MDQ2ODY2Nzk5MjY0MDI2NDgxMzQ0Mjk5MDc5MDExNzYyMDI2Nzc0NTMzNzc0MzQ1OTg4MDgwbik7XG5cbiAgICAgICAgcmV0dXJuIEZyLmV4cChmaXJzdFJvb3QsIDIgKiogKDI4IC0gcG93ZXIpKTtcbiAgICB9XG59XG5cblxuIiwiLypcbiAgICBDb3B5cmlnaHQgMjAyMiBpZGVuMyBhc3NvY2lhdGlvbi5cblxuICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHNuYXJranMuXG5cbiAgICBzbmFya2pzIGlzIGEgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yXG4gICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZVxuICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKVxuICAgIGFueSBsYXRlciB2ZXJzaW9uLlxuXG4gICAgc25hcmtqcyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWVxuICAgIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvclxuICAgIG1vcmUgZGV0YWlscy5cblxuICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nIHdpdGhcbiAgICBzbmFya2pzLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuKi9cblxuaW1wb3J0ICogYXMgYmluRmlsZVV0aWxzIGZyb20gXCJAaWRlbjMvYmluZmlsZXV0aWxzXCI7XG5pbXBvcnQgKiBhcyB6a2V5VXRpbHMgZnJvbSBcIi4vemtleV91dGlscy5qc1wiO1xuaW1wb3J0ICogYXMgd3Ruc1V0aWxzIGZyb20gXCIuL3d0bnNfdXRpbHMuanNcIjtcbmltcG9ydCB7IEJpZ0J1ZmZlciwgU2NhbGFyLCB1dGlscyB9IGZyb20gXCJmZmphdmFzY3JpcHRcIjtcbmltcG9ydCB7IEZGTE9OS19QUk9UT0NPTF9JRCB9IGZyb20gXCIuL3prZXlfY29uc3RhbnRzLmpzXCI7XG5pbXBvcnQge1xuICAgIFpLRVlfRkZfQV9NQVBfU0VDVElPTixcbiAgICBaS0VZX0ZGX0FERElUSU9OU19TRUNUSU9OLFxuICAgIFpLRVlfRkZfQl9NQVBfU0VDVElPTixcbiAgICBaS0VZX0ZGX0MwX1NFQ1RJT04sXG4gICAgWktFWV9GRl9DX01BUF9TRUNUSU9OLFxuICAgIFpLRVlfRkZfTEFHUkFOR0VfU0VDVElPTixcbiAgICBaS0VZX0ZGX1BUQVVfU0VDVElPTixcbiAgICBaS0VZX0ZGX1FDX1NFQ1RJT04sXG4gICAgWktFWV9GRl9RTF9TRUNUSU9OLFxuICAgIFpLRVlfRkZfUU1fU0VDVElPTixcbiAgICBaS0VZX0ZGX1FPX1NFQ1RJT04sXG4gICAgWktFWV9GRl9RUl9TRUNUSU9OLFxuICAgIFpLRVlfRkZfU0lHTUExX1NFQ1RJT04sXG4gICAgWktFWV9GRl9TSUdNQTJfU0VDVElPTixcbiAgICBaS0VZX0ZGX1NJR01BM19TRUNUSU9OLFxufSBmcm9tIFwiLi9mZmxvbmtfY29uc3RhbnRzLmpzXCI7XG5pbXBvcnQgeyBLZWNjYWsyNTZUcmFuc2NyaXB0IH0gZnJvbSBcIi4vS2VjY2FrMjU2VHJhbnNjcmlwdC5qc1wiO1xuaW1wb3J0IHsgUHJvb2YgfSBmcm9tIFwiLi9wcm9vZi5qc1wiO1xuaW1wb3J0IHsgUG9seW5vbWlhbCB9IGZyb20gXCIuL3BvbHlub21pYWwvcG9seW5vbWlhbC5qc1wiO1xuaW1wb3J0IHsgRXZhbHVhdGlvbnMgfSBmcm9tIFwiLi9wb2x5bm9taWFsL2V2YWx1YXRpb25zLmpzXCI7XG5pbXBvcnQgeyBDUG9seW5vbWlhbCB9IGZyb20gXCIuL3BvbHlub21pYWwvY3BvbHlub21pYWwuanNcIjtcblxuY29uc3QgeyBzdHJpbmdpZnlCaWdJbnRzIH0gPSB1dGlscztcblxuXG5leHBvcnQgZGVmYXVsdCBhc3luYyBmdW5jdGlvbiBmZmxvbmtQcm92ZSh6a2V5RmlsZU5hbWUsIHdpdG5lc3NGaWxlTmFtZSwgbG9nZ2VyLCBvcHRpb25zKSB7XG4gICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oXCJGRkxPTksgUFJPVkVSIFNUQVJURURcIik7XG5cbiAgICAvLyBSZWFkIHdpdG5lc3MgZmlsZVxuICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKFwiPiBSZWFkaW5nIHdpdG5lc3MgZmlsZVwiKTtcbiAgICBjb25zdCB7XG4gICAgICAgIGZkOiBmZFd0bnMsXG4gICAgICAgIHNlY3Rpb25zOiB3dG5zU2VjdGlvbnNcbiAgICB9ID0gYXdhaXQgYmluRmlsZVV0aWxzLnJlYWRCaW5GaWxlKHdpdG5lc3NGaWxlTmFtZSwgXCJ3dG5zXCIsIDIsIDEgPDwgMjUsIDEgPDwgMjMpO1xuICAgIGNvbnN0IHd0bnMgPSBhd2FpdCB3dG5zVXRpbHMucmVhZEhlYWRlcihmZFd0bnMsIHd0bnNTZWN0aW9ucyk7XG5cbiAgICAvL1JlYWQgemtleSBmaWxlXG4gICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oXCI+IFJlYWRpbmcgemtleSBmaWxlXCIpO1xuICAgIGNvbnN0IHtcbiAgICAgICAgZmQ6IGZkWktleSxcbiAgICAgICAgc2VjdGlvbnM6IHprZXlTZWN0aW9uc1xuICAgIH0gPSBhd2FpdCBiaW5GaWxlVXRpbHMucmVhZEJpbkZpbGUoemtleUZpbGVOYW1lLCBcInprZXlcIiwgMiwgMSA8PCAyNSwgMSA8PCAyMyk7XG5cbiAgICBjb25zdCB6a2V5ID0gYXdhaXQgemtleVV0aWxzLnJlYWRIZWFkZXIoZmRaS2V5LCB6a2V5U2VjdGlvbnMsIHVuZGVmaW5lZCwgb3B0aW9ucyk7XG5cbiAgICBpZiAoemtleS5wcm90b2NvbElkICE9PSBGRkxPTktfUFJPVE9DT0xfSUQpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiemtleSBmaWxlIGlzIG5vdCBmZmxvbmtcIik7XG4gICAgfVxuXG4gICAgaWYgKCFTY2FsYXIuZXEoemtleS5yLCB3dG5zLnEpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIkN1cnZlIG9mIHRoZSB3aXRuZXNzIGRvZXMgbm90IG1hdGNoIHRoZSBjdXJ2ZSBvZiB0aGUgcHJvdmluZyBrZXlcIik7XG4gICAgfVxuXG4gICAgaWYgKHd0bnMubldpdG5lc3MgIT09IHprZXkublZhcnMgLSB6a2V5Lm5BZGRpdGlvbnMpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIHdpdG5lc3MgbGVuZ3RoLiBDaXJjdWl0OiAke3prZXkublZhcnN9LCB3aXRuZXNzOiAke3d0bnMubldpdG5lc3N9LCAke3prZXkubkFkZGl0aW9uc31gKTtcbiAgICB9XG5cbiAgICBjb25zdCBjdXJ2ZSA9IHprZXkuY3VydmU7XG5cbiAgICBjb25zdCBGciA9IGN1cnZlLkZyO1xuXG4gICAgY29uc3Qgc0ZyID0gY3VydmUuRnIubjg7XG4gICAgY29uc3Qgc0cxID0gY3VydmUuRzEuRi5uOCAqIDI7XG4gICAgY29uc3Qgc0RvbWFpbiA9IHprZXkuZG9tYWluU2l6ZSAqIHNGcjtcblxuICAgIGlmIChsb2dnZXIpIHtcbiAgICAgICAgbG9nZ2VyLmluZm8oXCItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXCIpO1xuICAgICAgICBsb2dnZXIuaW5mbyhcIiAgRkZMT05LIFBST1ZFIFNFVFRJTkdTXCIpO1xuICAgICAgICBsb2dnZXIuaW5mbyhgICBDdXJ2ZTogICAgICAgICAke2N1cnZlLm5hbWV9YCk7XG4gICAgICAgIGxvZ2dlci5pbmZvKGAgIENpcmN1aXQgcG93ZXI6ICR7emtleS5wb3dlcn1gKTtcbiAgICAgICAgbG9nZ2VyLmluZm8oYCAgRG9tYWluIHNpemU6ICAgJHt6a2V5LmRvbWFpblNpemV9YCk7XG4gICAgICAgIGxvZ2dlci5pbmZvKGAgIFZhcnM6ICAgICAgICAgICR7emtleS5uVmFyc31gKTtcbiAgICAgICAgbG9nZ2VyLmluZm8oYCAgUHVibGljIHZhcnM6ICAgJHt6a2V5Lm5QdWJsaWN9YCk7XG4gICAgICAgIGxvZ2dlci5pbmZvKGAgIENvbnN0cmFpbnRzOiAgICR7emtleS5uQ29uc3RyYWludHN9YCk7XG4gICAgICAgIGxvZ2dlci5pbmZvKGAgIEFkZGl0aW9uczogICAgICR7emtleS5uQWRkaXRpb25zfWApO1xuICAgICAgICBsb2dnZXIuaW5mbyhcIi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cIik7XG4gICAgfVxuXG4gICAgLy9SZWFkIHdpdG5lc3MgZGF0YVxuICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKFwiPiBSZWFkaW5nIHdpdG5lc3MgZmlsZSBkYXRhXCIpO1xuICAgIGNvbnN0IGJ1ZmZXaXRuZXNzID0gYXdhaXQgYmluRmlsZVV0aWxzLnJlYWRTZWN0aW9uKGZkV3Rucywgd3Ruc1NlY3Rpb25zLCAyKTtcbiAgICBhd2FpdCBmZFd0bnMuY2xvc2UoKTtcblxuICAgIC8vIEZpcnN0IGVsZW1lbnQgaW4gcGxvbmsgaXMgbm90IHVzZWQgYW5kIGNhbiBiZSBhbnkgdmFsdWUuIChCdXQgYWx3YXlzIHRoZSBzYW1lKS5cbiAgICAvLyBXZSBzZXQgaXQgdG8gemVybyB0byBnbyBmYXN0ZXIgaW4gdGhlIGV4cG9uZW50aWF0aW9ucy5cbiAgICBidWZmV2l0bmVzcy5zZXQoRnIuemVybywgMCk7XG4gICAgY29uc3QgYnVmZkludGVybmFsV2l0bmVzcyA9IG5ldyBCaWdCdWZmZXIoemtleS5uQWRkaXRpb25zICogc0ZyKTtcblxuICAgIGxldCBidWZmZXJzID0ge307XG4gICAgbGV0IHBvbHlub21pYWxzID0ge307XG4gICAgbGV0IGV2YWx1YXRpb25zID0ge307XG5cbiAgICAvLyBUbyBkaXZpZGUgcHJpbWUgZmllbGRzIHRoZSBFeHRlbmRlZCBFdWNsaWRlYW4gQWxnb3JpdGhtIGZvciBjb21wdXRpbmcgbW9kdWxhciBpbnZlcnNlcyBpcyBuZWVkZWQuXG4gICAgLy8gTk9URTogVGhpcyBpcyB0aGUgZXF1aXZhbGVudCBvZiBjb21wdXRlIDEvZGVub21pbmF0b3IgYW5kIHRoZW4gbXVsdGlwbHkgaXQgYnkgdGhlIG51bWVyYXRvci5cbiAgICAvLyBUaGUgRXh0ZW5kZWQgRXVjbGlkZWFuIEFsZ29yaXRobSBpcyBleHBlbnNpdmUgaW4gdGVybXMgb2YgY29tcHV0YXRpb24uXG4gICAgLy8gRm9yIHRoZSBzcGVjaWFsIGNhc2Ugd2hlcmUgd2UgbmVlZCB0byBkbyBtYW55IG1vZHVsYXIgaW52ZXJzZXMsIHRoZXJlJ3MgYSBzaW1wbGUgbWF0aGVtYXRpY2FsIHRyaWNrXG4gICAgLy8gdGhhdCBhbGxvd3MgdXMgdG8gY29tcHV0ZSBtYW55IGludmVyc2VzLCBjYWxsZWQgTW9udGdvbWVyeSBiYXRjaCBpbnZlcnNpb24uXG4gICAgLy8gTW9yZSBpbmZvOiBodHRwczovL3ZpdGFsaWsuY2EvZ2VuZXJhbC8yMDE4LzA3LzIxL3N0YXJrc19wYXJ0XzMuaHRtbFxuICAgIC8vIE1vbnRnb21lcnkgYmF0Y2ggaW52ZXJzaW9uIHJlZHVjZXMgdGhlIG4gaW52ZXJzZSBjb21wdXRhdGlvbnMgdG8gYSBzaW5nbGUgb25lXG4gICAgLy8gVG8gc2F2ZSB0aGlzIChzaW5nbGUpIGludmVyc2UgY29tcHV0YXRpb24gb24tY2hhaW4sIHdpbGwgY29tcHV0ZSBpdCBpbiBwcm92aW5nIHRpbWUgYW5kIHNlbmQgaXQgdG8gdGhlIHZlcmlmaWVyLlxuICAgIC8vIFRoZSB2ZXJpZmllciB3aWxsIGhhdmUgdG8gY2hlY2s6XG4gICAgLy8gMSkgdGhlIGRlbm9taW5hdG9yIGlzIGNvcnJlY3QgbXVsdGlwbHlpbmcgYnkgaGltc2VsZiBub24taW52ZXJ0ZWQgLT4gYSAqIDEvYSA9PSAxXG4gICAgLy8gMikgY29tcHV0ZSB0aGUgcmVzdCBvZiB0aGUgZGVub21pbmF0b3JzIHVzaW5nIHRoZSBNb250Z29tZXJ5IGJhdGNoIGludmVyc2lvblxuICAgIC8vIFRoZSBpbnZlcnNpb25zIGFyZTpcbiAgICAvLyAgIMK3IGRlbm9taW5hdG9yIG5lZWRlZCBpbiBzdGVwIDggYW5kIDkgb2YgdGhlIHZlcmlmaWVyIHRvIG11bHRpcGx5IGJ5IDEvWl9IKHhpKVxuICAgIC8vICAgwrcgZGVub21pbmF0b3IgbmVlZGVkIGluIHN0ZXAgMTAgYW5kIDExIG9mIHRoZSB2ZXJpZmllclxuICAgIC8vICAgwrcgZGVub21pbmF0b3IgbmVlZGVkIGluIHRoZSB2ZXJpZmllciB3aGVuIGNvbXB1dGluZyBMX2lee1MxfShYKSBhbmQgTF9pXntTMn0oWClcbiAgICAvLyAgIMK3IExfaSBpPTEgdG8gbnVtIHB1YmxpYyBpbnB1dHMsIG5lZWRlZCBpbiBzdGVwIDYgYW5kIDcgb2YgdGhlIHZlcmlmaWVyIHRvIGNvbXB1dGUgTF8xKHhpKSBhbmQgUEkoeGkpXG4gICAgbGV0IHRvSW52ZXJzZSA9IHt9O1xuXG4gICAgbGV0IGNoYWxsZW5nZXMgPSB7fTtcbiAgICBsZXQgcm9vdHMgPSB7fTtcblxuICAgIGxldCBwcm9vZiA9IG5ldyBQcm9vZihjdXJ2ZSwgbG9nZ2VyKTtcblxuICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKGA+IFJlYWRpbmcgU2VjdGlvbiAke1pLRVlfRkZfQURESVRJT05TX1NFQ1RJT059LiBBZGRpdGlvbnNgKTtcbiAgICBhd2FpdCBjYWxjdWxhdGVBZGRpdGlvbnMoKTtcblxuICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKGA+IFJlYWRpbmcgU2VjdGlvbnMgJHtaS0VZX0ZGX1NJR01BMV9TRUNUSU9OfSwke1pLRVlfRkZfU0lHTUEyX1NFQ1RJT059LCR7WktFWV9GRl9TSUdNQTNfU0VDVElPTn0uIFNpZ21hMSwgU2lnbWEyICYgU2lnbWEgM2ApO1xuICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKFwiwrfCt8K3IFJlYWRpbmcgU2lnbWEgcG9seW5vbWlhbHMgXCIpO1xuICAgIHBvbHlub21pYWxzLlNpZ21hMSA9IG5ldyBQb2x5bm9taWFsKG5ldyBCaWdCdWZmZXIoc0RvbWFpbiksIGN1cnZlLCBsb2dnZXIpO1xuICAgIHBvbHlub21pYWxzLlNpZ21hMiA9IG5ldyBQb2x5bm9taWFsKG5ldyBCaWdCdWZmZXIoc0RvbWFpbiksIGN1cnZlLCBsb2dnZXIpO1xuICAgIHBvbHlub21pYWxzLlNpZ21hMyA9IG5ldyBQb2x5bm9taWFsKG5ldyBCaWdCdWZmZXIoc0RvbWFpbiksIGN1cnZlLCBsb2dnZXIpO1xuXG4gICAgYXdhaXQgZmRaS2V5LnJlYWRUb0J1ZmZlcihwb2x5bm9taWFscy5TaWdtYTEuY29lZiwgMCwgc0RvbWFpbiwgemtleVNlY3Rpb25zW1pLRVlfRkZfU0lHTUExX1NFQ1RJT05dWzBdLnApO1xuICAgIGF3YWl0IGZkWktleS5yZWFkVG9CdWZmZXIocG9seW5vbWlhbHMuU2lnbWEyLmNvZWYsIDAsIHNEb21haW4sIHprZXlTZWN0aW9uc1taS0VZX0ZGX1NJR01BMl9TRUNUSU9OXVswXS5wKTtcbiAgICBhd2FpdCBmZFpLZXkucmVhZFRvQnVmZmVyKHBvbHlub21pYWxzLlNpZ21hMy5jb2VmLCAwLCBzRG9tYWluLCB6a2V5U2VjdGlvbnNbWktFWV9GRl9TSUdNQTNfU0VDVElPTl1bMF0ucCk7XG5cbiAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhcIsK3wrfCtyBSZWFkaW5nIFNpZ21hIGV2YWx1YXRpb25zXCIpO1xuICAgIGV2YWx1YXRpb25zLlNpZ21hMSA9IG5ldyBFdmFsdWF0aW9ucyhuZXcgQmlnQnVmZmVyKHNEb21haW4gKiA0KSwgY3VydmUsIGxvZ2dlcik7XG4gICAgZXZhbHVhdGlvbnMuU2lnbWEyID0gbmV3IEV2YWx1YXRpb25zKG5ldyBCaWdCdWZmZXIoc0RvbWFpbiAqIDQpLCBjdXJ2ZSwgbG9nZ2VyKTtcbiAgICBldmFsdWF0aW9ucy5TaWdtYTMgPSBuZXcgRXZhbHVhdGlvbnMobmV3IEJpZ0J1ZmZlcihzRG9tYWluICogNCksIGN1cnZlLCBsb2dnZXIpO1xuXG4gICAgYXdhaXQgZmRaS2V5LnJlYWRUb0J1ZmZlcihldmFsdWF0aW9ucy5TaWdtYTEuZXZhbCwgMCwgc0RvbWFpbiAqIDQsIHprZXlTZWN0aW9uc1taS0VZX0ZGX1NJR01BMV9TRUNUSU9OXVswXS5wICsgc0RvbWFpbik7XG4gICAgYXdhaXQgZmRaS2V5LnJlYWRUb0J1ZmZlcihldmFsdWF0aW9ucy5TaWdtYTIuZXZhbCwgMCwgc0RvbWFpbiAqIDQsIHprZXlTZWN0aW9uc1taS0VZX0ZGX1NJR01BMl9TRUNUSU9OXVswXS5wICsgc0RvbWFpbik7XG4gICAgYXdhaXQgZmRaS2V5LnJlYWRUb0J1ZmZlcihldmFsdWF0aW9ucy5TaWdtYTMuZXZhbCwgMCwgc0RvbWFpbiAqIDQsIHprZXlTZWN0aW9uc1taS0VZX0ZGX1NJR01BM19TRUNUSU9OXVswXS5wICsgc0RvbWFpbik7XG5cbiAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhgPiBSZWFkaW5nIFNlY3Rpb24gJHtaS0VZX0ZGX1BUQVVfU0VDVElPTn0uIFBvd2VycyBvZiBUYXVgKTtcbiAgICBjb25zdCBQVGF1ID0gbmV3IEJpZ0J1ZmZlcih6a2V5LmRvbWFpblNpemUgKiAxNiAqIHNHMSk7XG4gICAgLy8gZG9tYWluU2l6ZSAqIDkgKyAxOCA9IFNSUyBsZW5ndGggaW4gdGhlIHprZXkgc2F2ZWQgaW4gc2V0dXAgcHJvY2Vzcy5cbiAgICAvLyBpdCBjb3JyZXNwb25kcyB0byB0aGUgbWF4aW11bSBTUlMgbGVuZ3RoIG5lZWRlZCwgc3BlY2lmaWNhbGx5IHRvIGNvbW1pdCBDMlxuICAgIC8vIG5vdGljZSB0aGF0IHRoZSByZXNlcnZlZCBidWZmZXJzIHNpemUgaXMgemtleS5kb21haW5TaXplICogMTYgKiBzRzEgYmVjYXVzZSBhIHBvd2VyIG9mIHR3byBidWZmZXIgc2l6ZSBpcyBuZWVkZWRcbiAgICAvLyB0aGUgcmVtYWluaW5nIGJ1ZmZlciBub3QgZmlsbGVkIGZyb20gU1JTIGFyZSBzZXQgdG8gMFxuICAgIGF3YWl0IGZkWktleS5yZWFkVG9CdWZmZXIoUFRhdSwgMCwgKHprZXkuZG9tYWluU2l6ZSAqIDkgKyAxOCkgKiBzRzEsIHprZXlTZWN0aW9uc1taS0VZX0ZGX1BUQVVfU0VDVElPTl1bMF0ucCk7XG5cbiAgICAvLyBTVEFSVCBGRkxPTksgUFJPVkVSIFBST1RPQ09MXG4gICAgaWYgKGdsb2JhbFRoaXMuZ2MpIGdsb2JhbFRoaXMuZ2MoKTtcblxuICAgIC8vIFJPVU5EIDEuIENvbXB1dGUgQzEoWCkgcG9seW5vbWlhbFxuICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKFwiXCIpO1xuICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKFwiPiBST1VORCAxXCIpO1xuICAgIGF3YWl0IHJvdW5kMSgpO1xuXG4gICAgZGVsZXRlIHBvbHlub21pYWxzLlQwO1xuICAgIGRlbGV0ZSBldmFsdWF0aW9ucy5RTDtcbiAgICBkZWxldGUgZXZhbHVhdGlvbnMuUVI7XG4gICAgZGVsZXRlIGV2YWx1YXRpb25zLlFNO1xuICAgIGRlbGV0ZSBldmFsdWF0aW9ucy5RTztcbiAgICBkZWxldGUgZXZhbHVhdGlvbnMuUUM7XG4gICAgaWYgKGdsb2JhbFRoaXMuZ2MpIGdsb2JhbFRoaXMuZ2MoKTtcblxuICAgIC8vIFJPVU5EIDIuIENvbXB1dGUgQzIoWCkgcG9seW5vbWlhbFxuICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKFwiPiBST1VORCAyXCIpO1xuICAgIGF3YWl0IHJvdW5kMigpO1xuXG4gICAgZGVsZXRlIGJ1ZmZlcnMuQTtcbiAgICBkZWxldGUgYnVmZmVycy5CO1xuICAgIGRlbGV0ZSBidWZmZXJzLkM7XG4gICAgZGVsZXRlIGV2YWx1YXRpb25zLkE7XG4gICAgZGVsZXRlIGV2YWx1YXRpb25zLkI7XG4gICAgZGVsZXRlIGV2YWx1YXRpb25zLkM7XG4gICAgZGVsZXRlIGV2YWx1YXRpb25zLlNpZ21hMTtcbiAgICBkZWxldGUgZXZhbHVhdGlvbnMuU2lnbWEyO1xuICAgIGRlbGV0ZSBldmFsdWF0aW9ucy5TaWdtYTM7XG4gICAgZGVsZXRlIGV2YWx1YXRpb25zLmxhZ3JhbmdlMTtcbiAgICBkZWxldGUgZXZhbHVhdGlvbnMuWjtcbiAgICBpZiAoZ2xvYmFsVGhpcy5nYykgZ2xvYmFsVGhpcy5nYygpO1xuXG4gICAgLy8gUk9VTkQgMy4gQ29tcHV0ZSBvcGVuaW5nIGV2YWx1YXRpb25zXG4gICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oXCI+IFJPVU5EIDNcIik7XG4gICAgYXdhaXQgcm91bmQzKCk7XG5cbiAgICBkZWxldGUgcG9seW5vbWlhbHMuQTtcbiAgICBkZWxldGUgcG9seW5vbWlhbHMuQjtcbiAgICBkZWxldGUgcG9seW5vbWlhbHMuQztcbiAgICBkZWxldGUgcG9seW5vbWlhbHMuWjtcbiAgICBkZWxldGUgcG9seW5vbWlhbHMuVDE7XG4gICAgZGVsZXRlIHBvbHlub21pYWxzLlQyO1xuICAgIGRlbGV0ZSBwb2x5bm9taWFscy5TaWdtYTE7XG4gICAgZGVsZXRlIHBvbHlub21pYWxzLlNpZ21hMjtcbiAgICBkZWxldGUgcG9seW5vbWlhbHMuU2lnbWEzO1xuICAgIGRlbGV0ZSBwb2x5bm9taWFscy5RTDtcbiAgICBkZWxldGUgcG9seW5vbWlhbHMuUVI7XG4gICAgZGVsZXRlIHBvbHlub21pYWxzLlFNO1xuICAgIGRlbGV0ZSBwb2x5bm9taWFscy5RQztcbiAgICBkZWxldGUgcG9seW5vbWlhbHMuUU87XG4gICAgaWYgKGdsb2JhbFRoaXMuZ2MpIGdsb2JhbFRoaXMuZ2MoKTtcblxuICAgIC8vIFJPVU5EIDQuIENvbXB1dGUgVyhYKSBwb2x5bm9taWFsXG4gICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oXCI+IFJPVU5EIDRcIik7XG4gICAgYXdhaXQgcm91bmQ0KCk7XG4gICAgaWYgKGdsb2JhbFRoaXMuZ2MpIGdsb2JhbFRoaXMuZ2MoKTtcblxuICAgIC8vIFJPVU5EIDUuIENvbXB1dGUgVycoWCkgcG9seW5vbWlhbFxuICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKFwiPiBST1VORCA1XCIpO1xuICAgIGF3YWl0IHJvdW5kNSgpO1xuXG4gICAgZGVsZXRlIHBvbHlub21pYWxzLkMwO1xuICAgIGRlbGV0ZSBwb2x5bm9taWFscy5DMTtcbiAgICBkZWxldGUgcG9seW5vbWlhbHMuQzI7XG4gICAgZGVsZXRlIHBvbHlub21pYWxzLlIxO1xuICAgIGRlbGV0ZSBwb2x5bm9taWFscy5SMjtcbiAgICBkZWxldGUgcG9seW5vbWlhbHMuRjtcbiAgICBkZWxldGUgcG9seW5vbWlhbHMuTDtcbiAgICBkZWxldGUgcG9seW5vbWlhbHMuWlQ7XG4gICAgZGVsZXRlIHBvbHlub21pYWxzLlpUUzI7XG4gICAgYXdhaXQgZmRaS2V5LmNsb3NlKCk7XG4gICAgaWYgKGdsb2JhbFRoaXMuZ2MpIGdsb2JhbFRoaXMuZ2MoKTtcblxuICAgIHByb29mLmFkZEV2YWx1YXRpb24oXCJpbnZcIiwgZ2V0TW9udGdvbWVyeUJhdGNoZWRJbnZlcnNlKCkpO1xuXG4gICAgLy8gUHJlcGFyZSBwcm9vZlxuICAgIGxldCBfcHJvb2YgPSBwcm9vZi50b09iamVjdFByb29mKCk7XG4gICAgX3Byb29mLnByb3RvY29sID0gXCJmZmxvbmtcIjtcbiAgICBfcHJvb2YuY3VydmUgPSBjdXJ2ZS5uYW1lO1xuXG4gICAgLy8gUHJlcGFyZSBwdWJsaWMgaW5wdXRzXG4gICAgbGV0IHB1YmxpY1NpZ25hbHMgPSBbXTtcblxuICAgIGZvciAobGV0IGkgPSAxOyBpIDw9IHprZXkublB1YmxpYzsgaSsrKSB7XG4gICAgICAgIGNvbnN0IGlfc0ZyID0gaSAqIHNGcjtcblxuICAgICAgICBjb25zdCBwdWIgPSBidWZmV2l0bmVzcy5zbGljZShpX3NGciwgaV9zRnIgKyBzRnIpO1xuICAgICAgICBwdWJsaWNTaWduYWxzLnB1c2goU2NhbGFyLmZyb21ScHJMRShwdWIpKTtcbiAgICB9XG5cbiAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhcIkZGTE9OSyBQUk9WRVIgRklOSVNIRURcIik7XG5cbiAgICByZXR1cm4ge1xuICAgICAgICBwcm9vZjogc3RyaW5naWZ5QmlnSW50cyhfcHJvb2YpLFxuICAgICAgICBwdWJsaWNTaWduYWxzOiBzdHJpbmdpZnlCaWdJbnRzKHB1YmxpY1NpZ25hbHMpXG4gICAgfTtcblxuICAgIGFzeW5jIGZ1bmN0aW9uIGNhbGN1bGF0ZUFkZGl0aW9ucygpIHtcbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oXCLCt8K3wrcgQ29tcHV0aW5nIGFkZGl0aW9uc1wiKTtcbiAgICAgICAgY29uc3QgYWRkaXRpb25zQnVmZiA9IGF3YWl0IGJpbkZpbGVVdGlscy5yZWFkU2VjdGlvbihmZFpLZXksIHprZXlTZWN0aW9ucywgWktFWV9GRl9BRERJVElPTlNfU0VDVElPTik7XG5cbiAgICAgICAgLy8gc2l6ZXM6IHdpcmVJZF94ID0gNCBieXRlcyAoMzIgYml0cyksIGZhY3Rvcl94ID0gZmllbGQgc2l6ZSBiaXRzXG4gICAgICAgIC8vIEFkZGl0aW9uIGZvcm06IHdpcmVJZF9hIHdpcmVJZF9iIGZhY3Rvcl9hIGZhY3Rvcl9iIChzaXplIGlzIDQgKyA0ICsgc0ZyICsgc0ZyKVxuICAgICAgICBjb25zdCBzU3VtID0gOCArIHNGciAqIDI7XG5cbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB6a2V5Lm5BZGRpdGlvbnM7IGkrKykge1xuICAgICAgICAgICAgaWYgKGxvZ2dlciAmJiAoMCAhPT0gaSkgJiYgKGkgJSAxMDAwMDAgPT09IDApKSBsb2dnZXIuaW5mbyhgICAgIGFkZGl0aW9uICR7aX0vJHt6a2V5Lm5BZGRpdGlvbnN9YCk7XG5cbiAgICAgICAgICAgIC8vIFJlYWQgYWRkaXRpb24gdmFsdWVzXG4gICAgICAgICAgICBsZXQgb2Zmc2V0ID0gaSAqIHNTdW07XG4gICAgICAgICAgICBjb25zdCBzaWduYWxJZDEgPSByZWFkVUludDMyKGFkZGl0aW9uc0J1ZmYsIG9mZnNldCk7XG4gICAgICAgICAgICBvZmZzZXQgKz0gNDtcbiAgICAgICAgICAgIGNvbnN0IHNpZ25hbElkMiA9IHJlYWRVSW50MzIoYWRkaXRpb25zQnVmZiwgb2Zmc2V0KTtcbiAgICAgICAgICAgIG9mZnNldCArPSA0O1xuICAgICAgICAgICAgY29uc3QgZmFjdG9yMSA9IGFkZGl0aW9uc0J1ZmYuc2xpY2Uob2Zmc2V0LCBvZmZzZXQgKyBzRnIpO1xuICAgICAgICAgICAgb2Zmc2V0ICs9IHNGcjtcbiAgICAgICAgICAgIGNvbnN0IGZhY3RvcjIgPSBhZGRpdGlvbnNCdWZmLnNsaWNlKG9mZnNldCwgb2Zmc2V0ICsgc0ZyKTtcblxuICAgICAgICAgICAgLy8gR2V0IHdpdG5lc3MgdmFsdWVcbiAgICAgICAgICAgIGNvbnN0IHdpdG5lc3MxID0gZ2V0V2l0bmVzcyhzaWduYWxJZDEpO1xuICAgICAgICAgICAgY29uc3Qgd2l0bmVzczIgPSBnZXRXaXRuZXNzKHNpZ25hbElkMik7XG5cbiAgICAgICAgICAgIC8vQ2FsY3VsYXRlIGZpbmFsIHJlc3VsdFxuICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gRnIuYWRkKEZyLm11bChmYWN0b3IxLCB3aXRuZXNzMSksIEZyLm11bChmYWN0b3IyLCB3aXRuZXNzMikpO1xuXG4gICAgICAgICAgICBidWZmSW50ZXJuYWxXaXRuZXNzLnNldChyZXN1bHQsIHNGciAqIGkpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcmVhZFVJbnQzMihiLCBvKSB7XG4gICAgICAgIGNvbnN0IGJ1ZmYgPSBiLnNsaWNlKG8sIG8gKyA0KTtcbiAgICAgICAgY29uc3QgYnVmZlYgPSBuZXcgRGF0YVZpZXcoYnVmZi5idWZmZXIsIGJ1ZmYuYnl0ZU9mZnNldCwgYnVmZi5ieXRlTGVuZ3RoKTtcbiAgICAgICAgcmV0dXJuIGJ1ZmZWLmdldFVpbnQzMigwLCB0cnVlKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRXaXRuZXNzKGlkeCkge1xuICAgICAgICBsZXQgZGlmZiA9IHprZXkublZhcnMgLSB6a2V5Lm5BZGRpdGlvbnM7XG4gICAgICAgIGlmIChpZHggPCBkaWZmKSB7XG4gICAgICAgICAgICByZXR1cm4gYnVmZldpdG5lc3Muc2xpY2UoaWR4ICogc0ZyLCBpZHggKiBzRnIgKyBzRnIpO1xuICAgICAgICB9IGVsc2UgaWYgKGlkeCA8IHprZXkublZhcnMpIHtcbiAgICAgICAgICAgIGNvbnN0IG9mZnNldCA9IChpZHggLSBkaWZmKSAqIHNGcjtcbiAgICAgICAgICAgIHJldHVybiBidWZmSW50ZXJuYWxXaXRuZXNzLnNsaWNlKG9mZnNldCwgb2Zmc2V0ICsgc0ZyKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBGci56ZXJvO1xuICAgIH1cblxuICAgIGFzeW5jIGZ1bmN0aW9uIHJvdW5kMSgpIHtcbiAgICAgICAgLy8gU1RFUCAxLjEgLSBHZW5lcmF0ZSByYW5kb20gYmxpbmRpbmcgc2NhbGFycyAoYl8xLCAuLi4sIGI5KSDiiIggRlxuICAgICAgICBjaGFsbGVuZ2VzLmIgPSBbXTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDE7IGkgPD0gOTsgaSsrKSB7XG4gICAgICAgICAgICBjaGFsbGVuZ2VzLmJbaV0gPSBGci5yYW5kb20oKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFNURVAgMS4yIC0gQ29tcHV0ZSB3aXJlIHBvbHlub21pYWxzIGEoWCksIGIoWCkgYW5kIGMoWClcbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oXCI+IENvbXB1dGluZyBBLCBCLCBDIHdpcmUgcG9seW5vbWlhbHNcIik7XG4gICAgICAgIGF3YWl0IGNvbXB1dGVXaXJlUG9seW5vbWlhbHMoKTtcblxuICAgICAgICAvLyBTVEVQIDEuMyAtIENvbXB1dGUgdGhlIHF1b3RpZW50IHBvbHlub21pYWwgVDAoWClcbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oXCI+IENvbXB1dGluZyBUMCBwb2x5bm9taWFsXCIpO1xuICAgICAgICBhd2FpdCBjb21wdXRlVDAoKTtcblxuICAgICAgICAvLyBTVEVQIDEuNCAtIENvbXB1dGUgdGhlIEZGVC1zdHlsZSBjb21iaW5hdGlvbiBwb2x5bm9taWFsIEMxKFgpXG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKFwiPiBDb21wdXRpbmcgQzEgcG9seW5vbWlhbFwiKTtcbiAgICAgICAgYXdhaXQgY29tcHV0ZUMxKCk7XG5cbiAgICAgICAgLy8gVGhlIGZpcnN0IG91dHB1dCBvZiB0aGUgcHJvdmVyIGlzIChbQzFdXzEpXG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKFwiPiBDb21wdXRpbmcgQzEgbXVsdGkgZXhwb25lbnRpYXRpb25cIik7XG4gICAgICAgIGxldCBjb21taXRDMSA9IGF3YWl0IHBvbHlub21pYWxzLkMxLm11bHRpRXhwb25lbnRpYXRpb24oUFRhdSwgXCJDMVwiKTtcbiAgICAgICAgcHJvb2YuYWRkUG9seW5vbWlhbChcIkMxXCIsIGNvbW1pdEMxKTtcblxuICAgICAgICByZXR1cm4gMDtcblxuICAgICAgICBhc3luYyBmdW5jdGlvbiBjb21wdXRlV2lyZVBvbHlub21pYWxzKCkge1xuICAgICAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oXCLCt8K3wrcgUmVhZGluZyBkYXRhIGZyb20gemtleSBmaWxlXCIpO1xuICAgICAgICAgICAgLy8gQnVpbGQgQSwgQiBhbmQgQyBldmFsdWF0aW9ucyBidWZmZXIgZnJvbSB6a2V5IGFuZCB3aXRuZXNzIGZpbGVzXG4gICAgICAgICAgICBidWZmZXJzLkEgPSBuZXcgQmlnQnVmZmVyKHNEb21haW4pO1xuICAgICAgICAgICAgYnVmZmVycy5CID0gbmV3IEJpZ0J1ZmZlcihzRG9tYWluKTtcbiAgICAgICAgICAgIGJ1ZmZlcnMuQyA9IG5ldyBCaWdCdWZmZXIoc0RvbWFpbik7XG5cbiAgICAgICAgICAgIC8vIFJlYWQgemtleSBzZWN0aW9ucyBhbmQgZmlsbCB0aGUgYnVmZmVyc1xuICAgICAgICAgICAgY29uc3QgYU1hcEJ1ZmYgPSBhd2FpdCBiaW5GaWxlVXRpbHMucmVhZFNlY3Rpb24oZmRaS2V5LCB6a2V5U2VjdGlvbnMsIFpLRVlfRkZfQV9NQVBfU0VDVElPTik7XG4gICAgICAgICAgICBjb25zdCBiTWFwQnVmZiA9IGF3YWl0IGJpbkZpbGVVdGlscy5yZWFkU2VjdGlvbihmZFpLZXksIHprZXlTZWN0aW9ucywgWktFWV9GRl9CX01BUF9TRUNUSU9OKTtcbiAgICAgICAgICAgIGNvbnN0IGNNYXBCdWZmID0gYXdhaXQgYmluRmlsZVV0aWxzLnJlYWRTZWN0aW9uKGZkWktleSwgemtleVNlY3Rpb25zLCBaS0VZX0ZGX0NfTUFQX1NFQ1RJT04pO1xuXG4gICAgICAgICAgICAvLyBDb21wdXRlIGFsbCB3aXRuZXNzIGZyb20gc2lnbmFsIGlkcyBhbmQgc2V0IHRoZW0gdG8gQSxCICYgQyBidWZmZXJzXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHprZXkubkNvbnN0cmFpbnRzOyBpKyspIHtcbiAgICAgICAgICAgICAgICBjb25zdCBpX3NGciA9IGkgKiBzRnI7XG4gICAgICAgICAgICAgICAgY29uc3Qgb2Zmc2V0ID0gaSAqIDQ7XG5cbiAgICAgICAgICAgICAgICAvLyBDb21wdXRlIEEgdmFsdWUgZnJvbSBhIHNpZ25hbCBpZFxuICAgICAgICAgICAgICAgIGNvbnN0IHNpZ25hbElkQSA9IHJlYWRVSW50MzIoYU1hcEJ1ZmYsIG9mZnNldCk7XG4gICAgICAgICAgICAgICAgYnVmZmVycy5BLnNldChnZXRXaXRuZXNzKHNpZ25hbElkQSksIGlfc0ZyKTtcblxuICAgICAgICAgICAgICAgIC8vIENvbXB1dGUgQiB2YWx1ZSBmcm9tIGEgc2lnbmFsIGlkXG4gICAgICAgICAgICAgICAgY29uc3Qgc2lnbmFsSWRCID0gcmVhZFVJbnQzMihiTWFwQnVmZiwgb2Zmc2V0KTtcbiAgICAgICAgICAgICAgICBidWZmZXJzLkIuc2V0KGdldFdpdG5lc3Moc2lnbmFsSWRCKSwgaV9zRnIpO1xuXG4gICAgICAgICAgICAgICAgLy8gQ29tcHV0ZSBDIHZhbHVlIGZyb20gYSBzaWduYWwgaWRcbiAgICAgICAgICAgICAgICBjb25zdCBzaWduYWxJZEMgPSByZWFkVUludDMyKGNNYXBCdWZmLCBvZmZzZXQpO1xuICAgICAgICAgICAgICAgIGJ1ZmZlcnMuQy5zZXQoZ2V0V2l0bmVzcyhzaWduYWxJZEMpLCBpX3NGcik7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIEJsaW5kIGEoWCksIGIoWCkgYW5kIGMoWCkgcG9seW5vbWlhbHMgY29lZmZpY2llbnRzIHdpdGggYmxpbmRpbmcgc2NhbGFycyBiXG4gICAgICAgICAgICBidWZmZXJzLkEuc2V0KGNoYWxsZW5nZXMuYlsxXSwgc0RvbWFpbiAtIDY0KTtcbiAgICAgICAgICAgIGJ1ZmZlcnMuQS5zZXQoY2hhbGxlbmdlcy5iWzJdLCBzRG9tYWluIC0gMzIpO1xuICAgICAgICAgICAgYnVmZmVycy5CLnNldChjaGFsbGVuZ2VzLmJbM10sIHNEb21haW4gLSA2NCk7XG4gICAgICAgICAgICBidWZmZXJzLkIuc2V0KGNoYWxsZW5nZXMuYls0XSwgc0RvbWFpbiAtIDMyKTtcbiAgICAgICAgICAgIGJ1ZmZlcnMuQy5zZXQoY2hhbGxlbmdlcy5iWzVdLCBzRG9tYWluIC0gNjQpO1xuICAgICAgICAgICAgYnVmZmVycy5DLnNldChjaGFsbGVuZ2VzLmJbNl0sIHNEb21haW4gLSAzMik7XG5cbiAgICAgICAgICAgIGJ1ZmZlcnMuQSA9IGF3YWl0IEZyLmJhdGNoVG9Nb250Z29tZXJ5KGJ1ZmZlcnMuQSk7XG4gICAgICAgICAgICBidWZmZXJzLkIgPSBhd2FpdCBGci5iYXRjaFRvTW9udGdvbWVyeShidWZmZXJzLkIpO1xuICAgICAgICAgICAgYnVmZmVycy5DID0gYXdhaXQgRnIuYmF0Y2hUb01vbnRnb21lcnkoYnVmZmVycy5DKTtcblxuICAgICAgICAgICAgLy8gQ29tcHV0ZSB0aGUgY29lZmZpY2llbnRzIG9mIHRoZSB3aXJlIHBvbHlub21pYWxzIGEoWCksIGIoWCkgYW5kIGMoWCkgZnJvbSBBLEIgJiBDIGJ1ZmZlcnNcbiAgICAgICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKFwiwrfCt8K3IENvbXB1dGluZyBBIGlmZnRcIik7XG4gICAgICAgICAgICBwb2x5bm9taWFscy5BID0gYXdhaXQgUG9seW5vbWlhbC5mcm9tRXZhbHVhdGlvbnMoYnVmZmVycy5BLCBjdXJ2ZSwgbG9nZ2VyKTtcbiAgICAgICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKFwiwrfCt8K3IENvbXB1dGluZyBCIGlmZnRcIik7XG4gICAgICAgICAgICBwb2x5bm9taWFscy5CID0gYXdhaXQgUG9seW5vbWlhbC5mcm9tRXZhbHVhdGlvbnMoYnVmZmVycy5CLCBjdXJ2ZSwgbG9nZ2VyKTtcbiAgICAgICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKFwiwrfCt8K3IENvbXB1dGluZyBDIGlmZnRcIik7XG4gICAgICAgICAgICBwb2x5bm9taWFscy5DID0gYXdhaXQgUG9seW5vbWlhbC5mcm9tRXZhbHVhdGlvbnMoYnVmZmVycy5DLCBjdXJ2ZSwgbG9nZ2VyKTtcblxuICAgICAgICAgICAgLy8gQ29tcHV0ZSBleHRlbmRlZCBldmFsdWF0aW9ucyBvZiBhKFgpLCBiKFgpIGFuZCBjKFgpIHBvbHlub21pYWxzXG4gICAgICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhcIsK3wrfCtyBDb21wdXRpbmcgQSBmZnRcIik7XG4gICAgICAgICAgICBldmFsdWF0aW9ucy5BID0gYXdhaXQgRXZhbHVhdGlvbnMuZnJvbVBvbHlub21pYWwocG9seW5vbWlhbHMuQSwgNCwgY3VydmUsIGxvZ2dlcik7XG4gICAgICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhcIsK3wrfCtyBDb21wdXRpbmcgQiBmZnRcIik7XG4gICAgICAgICAgICBldmFsdWF0aW9ucy5CID0gYXdhaXQgRXZhbHVhdGlvbnMuZnJvbVBvbHlub21pYWwocG9seW5vbWlhbHMuQiwgNCwgY3VydmUsIGxvZ2dlcik7XG4gICAgICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhcIsK3wrfCtyBDb21wdXRpbmcgQyBmZnRcIik7XG4gICAgICAgICAgICBldmFsdWF0aW9ucy5DID0gYXdhaXQgRXZhbHVhdGlvbnMuZnJvbVBvbHlub21pYWwocG9seW5vbWlhbHMuQywgNCwgY3VydmUsIGxvZ2dlcik7XG5cbiAgICAgICAgICAgIC8vIENoZWNrIGRlZ3JlZXNcbiAgICAgICAgICAgIGlmIChwb2x5bm9taWFscy5BLmRlZ3JlZSgpID49IHprZXkuZG9tYWluU2l6ZSkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkEgUG9seW5vbWlhbCBpcyBub3Qgd2VsbCBjYWxjdWxhdGVkXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHBvbHlub21pYWxzLkIuZGVncmVlKCkgPj0gemtleS5kb21haW5TaXplKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiQiBQb2x5bm9taWFsIGlzIG5vdCB3ZWxsIGNhbGN1bGF0ZWRcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAocG9seW5vbWlhbHMuQy5kZWdyZWUoKSA+PSB6a2V5LmRvbWFpblNpemUpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJDIFBvbHlub21pYWwgaXMgbm90IHdlbGwgY2FsY3VsYXRlZFwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGFzeW5jIGZ1bmN0aW9uIGNvbXB1dGVUMCgpIHtcbiAgICAgICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKGDCt8K3wrcgUmVhZGluZyBzZWN0aW9ucyAke1pLRVlfRkZfUUxfU0VDVElPTn0sICR7WktFWV9GRl9RUl9TRUNUSU9OfWAgK1xuICAgICAgICAgICAgICAgIGAsICR7WktFWV9GRl9RTV9TRUNUSU9OfSwgJHtaS0VZX0ZGX1FPX1NFQ1RJT059LCAke1pLRVlfRkZfUUNfU0VDVElPTn0uIFEgc2VsZWN0b3JzYCk7XG4gICAgICAgICAgICAvLyBSZXNlcnZlIG1lbW9yeSBmb3IgUSdzIGV2YWx1YXRpb25zXG4gICAgICAgICAgICBldmFsdWF0aW9ucy5RTCA9IG5ldyBFdmFsdWF0aW9ucyhuZXcgQmlnQnVmZmVyKHNEb21haW4gKiA0KSwgY3VydmUsIGxvZ2dlcik7XG4gICAgICAgICAgICBldmFsdWF0aW9ucy5RUiA9IG5ldyBFdmFsdWF0aW9ucyhuZXcgQmlnQnVmZmVyKHNEb21haW4gKiA0KSwgY3VydmUsIGxvZ2dlcik7XG4gICAgICAgICAgICBldmFsdWF0aW9ucy5RTSA9IG5ldyBFdmFsdWF0aW9ucyhuZXcgQmlnQnVmZmVyKHNEb21haW4gKiA0KSwgY3VydmUsIGxvZ2dlcik7XG4gICAgICAgICAgICBldmFsdWF0aW9ucy5RTyA9IG5ldyBFdmFsdWF0aW9ucyhuZXcgQmlnQnVmZmVyKHNEb21haW4gKiA0KSwgY3VydmUsIGxvZ2dlcik7XG4gICAgICAgICAgICBldmFsdWF0aW9ucy5RQyA9IG5ldyBFdmFsdWF0aW9ucyhuZXcgQmlnQnVmZmVyKHNEb21haW4gKiA0KSwgY3VydmUsIGxvZ2dlcik7XG5cbiAgICAgICAgICAgIC8vIFJlYWQgUSdzIGV2YWx1YXRpb25zIGZyb20gemtleSBmaWxlXG4gICAgICAgICAgICBhd2FpdCBmZFpLZXkucmVhZFRvQnVmZmVyKGV2YWx1YXRpb25zLlFMLmV2YWwsIDAsIHNEb21haW4gKiA0LCB6a2V5U2VjdGlvbnNbWktFWV9GRl9RTF9TRUNUSU9OXVswXS5wICsgc0RvbWFpbik7XG4gICAgICAgICAgICBhd2FpdCBmZFpLZXkucmVhZFRvQnVmZmVyKGV2YWx1YXRpb25zLlFSLmV2YWwsIDAsIHNEb21haW4gKiA0LCB6a2V5U2VjdGlvbnNbWktFWV9GRl9RUl9TRUNUSU9OXVswXS5wICsgc0RvbWFpbik7XG4gICAgICAgICAgICBhd2FpdCBmZFpLZXkucmVhZFRvQnVmZmVyKGV2YWx1YXRpb25zLlFNLmV2YWwsIDAsIHNEb21haW4gKiA0LCB6a2V5U2VjdGlvbnNbWktFWV9GRl9RTV9TRUNUSU9OXVswXS5wICsgc0RvbWFpbik7XG4gICAgICAgICAgICBhd2FpdCBmZFpLZXkucmVhZFRvQnVmZmVyKGV2YWx1YXRpb25zLlFPLmV2YWwsIDAsIHNEb21haW4gKiA0LCB6a2V5U2VjdGlvbnNbWktFWV9GRl9RT19TRUNUSU9OXVswXS5wICsgc0RvbWFpbik7XG4gICAgICAgICAgICBhd2FpdCBmZFpLZXkucmVhZFRvQnVmZmVyKGV2YWx1YXRpb25zLlFDLmV2YWwsIDAsIHNEb21haW4gKiA0LCB6a2V5U2VjdGlvbnNbWktFWV9GRl9RQ19TRUNUSU9OXVswXS5wICsgc0RvbWFpbik7XG5cbiAgICAgICAgICAgIC8vIFJlYWQgTGFncmFuZ2UgcG9seW5vbWlhbHMgJiBldmFsdWF0aW9ucyBmcm9tIHprZXkgZmlsZVxuICAgICAgICAgICAgY29uc3QgbGFncmFuZ2VQb2x5bm9taWFscyA9IGF3YWl0IGJpbkZpbGVVdGlscy5yZWFkU2VjdGlvbihmZFpLZXksIHprZXlTZWN0aW9ucywgWktFWV9GRl9MQUdSQU5HRV9TRUNUSU9OKTtcbiAgICAgICAgICAgIGV2YWx1YXRpb25zLmxhZ3JhbmdlMSA9IG5ldyBFdmFsdWF0aW9ucyhsYWdyYW5nZVBvbHlub21pYWxzLCBjdXJ2ZSwgbG9nZ2VyKTtcblxuICAgICAgICAgICAgLy8gUmVzZXJ2ZSBtZW1vcnkgZm9yIGJ1ZmZlcnMgVDBcbiAgICAgICAgICAgIGJ1ZmZlcnMuVDAgPSBuZXcgQmlnQnVmZmVyKHNEb21haW4gKiA0KTtcblxuICAgICAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oXCLCt8K3wrcgQ29tcHV0aW5nIFQwIGV2YWx1YXRpb25zXCIpO1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB6a2V5LmRvbWFpblNpemUgKiA0OyBpKyspIHtcbiAgICAgICAgICAgICAgICBpZiAobG9nZ2VyICYmICgwICE9PSBpKSAmJiAoaSAlIDEwMDAwMCA9PT0gMCkpIGxvZ2dlci5pbmZvKGAgICAgICBUMCBldmFsdWF0aW9uICR7aX0vJHt6a2V5LmRvbWFpblNpemUgKiA0fWApO1xuXG4gICAgICAgICAgICAgICAgLy8gR2V0IHJlbGF0ZWQgZXZhbHVhdGlvbnMgdG8gY29tcHV0ZSBjdXJyZW50IFQwIGV2YWx1YXRpb25cbiAgICAgICAgICAgICAgICBjb25zdCBhID0gZXZhbHVhdGlvbnMuQS5nZXRFdmFsdWF0aW9uKGkpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGIgPSBldmFsdWF0aW9ucy5CLmdldEV2YWx1YXRpb24oaSk7XG4gICAgICAgICAgICAgICAgY29uc3QgYyA9IGV2YWx1YXRpb25zLkMuZ2V0RXZhbHVhdGlvbihpKTtcblxuICAgICAgICAgICAgICAgIGNvbnN0IHFsID0gZXZhbHVhdGlvbnMuUUwuZ2V0RXZhbHVhdGlvbihpKTtcbiAgICAgICAgICAgICAgICBjb25zdCBxciA9IGV2YWx1YXRpb25zLlFSLmdldEV2YWx1YXRpb24oaSk7XG4gICAgICAgICAgICAgICAgY29uc3QgcW0gPSBldmFsdWF0aW9ucy5RTS5nZXRFdmFsdWF0aW9uKGkpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHFvID0gZXZhbHVhdGlvbnMuUU8uZ2V0RXZhbHVhdGlvbihpKTtcbiAgICAgICAgICAgICAgICBjb25zdCBxYyA9IGV2YWx1YXRpb25zLlFDLmdldEV2YWx1YXRpb24oaSk7XG5cbiAgICAgICAgICAgICAgICAvLyBDb21wdXRlIGN1cnJlbnQgcHVibGljIGlucHV0XG4gICAgICAgICAgICAgICAgbGV0IHBpID0gRnIuemVybztcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHprZXkublB1YmxpYzsgaisrKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG9mZnNldCA9IChqICogNSAqIHprZXkuZG9tYWluU2l6ZSkgKyB6a2V5LmRvbWFpblNpemUgKyBpO1xuXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGxQb2wgPSBldmFsdWF0aW9ucy5sYWdyYW5nZTEuZ2V0RXZhbHVhdGlvbihvZmZzZXQpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBhVmFsID0gYnVmZmVycy5BLnNsaWNlKGogKiBzRnIsIChqICsgMSkgKiBzRnIpO1xuXG4gICAgICAgICAgICAgICAgICAgIHBpID0gRnIuc3ViKHBpLCBGci5tdWwobFBvbCwgYVZhbCkpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIC8vVDAoWCkgPSBbcV9MKFgpwrdhKFgpICsgcV9SKFgpwrdiKFgpICsgcV9NKFgpwrdhKFgpwrdiKFgpICsgcV9PKFgpwrdjKFgpICsgcV9DKFgpICsgUEkoWCldIMK3IDEvWl9IKFgpXG4gICAgICAgICAgICAgICAgLy8gQ29tcHV0ZSBmaXJzdCBUMChYKcK3Wl9IKFgpLCBzbyBkaXZpZGUgbGF0ZXIgdGhlIHJlc3VsdGluZyBwb2x5bm9taWFsIGJ5IFpfSChYKVxuICAgICAgICAgICAgICAgIC8vIGV4cHJlc3Npb24gMSAtPiBxX0woWCnCt2EoWClcbiAgICAgICAgICAgICAgICBjb25zdCBlMSA9IEZyLm11bChhLCBxbCk7XG5cbiAgICAgICAgICAgICAgICAvLyBleHByZXNzaW9uIDIgLT4gcV9SKFgpwrdiKFgpXG4gICAgICAgICAgICAgICAgY29uc3QgZTIgPSBGci5tdWwoYiwgcXIpO1xuXG4gICAgICAgICAgICAgICAgLy8gZXhwcmVzc2lvbiAzIC0+IHFfTShYKcK3YShYKcK3YihYKVxuICAgICAgICAgICAgICAgIGNvbnN0IGUzID0gRnIubXVsKEZyLm11bChhLCBiKSwgcW0pO1xuXG4gICAgICAgICAgICAgICAgLy8gZXhwcmVzc2lvbiA0IC0+IHFfTyhYKcK3YyhYKVxuICAgICAgICAgICAgICAgIGNvbnN0IGU0ID0gRnIubXVsKGMsIHFvKTtcblxuICAgICAgICAgICAgICAgIC8vIHQwID0gZXhwcmVzc2lvbnMgMSArIGV4cHJlc3Npb24gMiArIGV4cHJlc3Npb24gMyArIGV4cHJlc3Npb24gNCArIHFjICsgcGlcbiAgICAgICAgICAgICAgICBjb25zdCB0MCA9IEZyLmFkZChlMSwgRnIuYWRkKGUyLCBGci5hZGQoZTMsIEZyLmFkZChlNCwgRnIuYWRkKHFjLCBwaSkpKSkpO1xuXG4gICAgICAgICAgICAgICAgYnVmZmVycy5UMC5zZXQodDAsIGkgKiBzRnIpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhcImJ1ZmZlciBUMDogXCIgKyBidWZmZXJzLlQwLmJ5dGVMZW5ndGggLyBzRnIpO1xuXG4gICAgICAgICAgICAvLyBDb21wdXRlIHRoZSBjb2VmZmljaWVudHMgb2YgdGhlIHBvbHlub21pYWwgVDAoWCkgZnJvbSBidWZmZXJzLlQwXG4gICAgICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhcIsK3wrfCtyBDb21wdXRpbmcgVDAgaWZmdFwiKTtcbiAgICAgICAgICAgIHBvbHlub21pYWxzLlQwID0gYXdhaXQgUG9seW5vbWlhbC5mcm9tRXZhbHVhdGlvbnMoYnVmZmVycy5UMCwgY3VydmUsIGxvZ2dlcik7XG5cbiAgICAgICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKFwiVDAgbGVuZ3RoOiBcIiArIHBvbHlub21pYWxzLlQwLmxlbmd0aCgpKTtcbiAgICAgICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKFwiVDAgZGVncmVlOiBcIiArIHBvbHlub21pYWxzLlQwLmRlZ3JlZSgpKTtcblxuICAgICAgICAgICAgLy8gRGl2aWRlIHRoZSBwb2x5bm9taWFsIFQwIGJ5IFpfSChYKVxuICAgICAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oXCLCt8K3wrcgQ29tcHV0aW5nIFQwIC8gWkhcIik7XG4gICAgICAgICAgICBwb2x5bm9taWFscy5UMC5kaXZCeVplcm9maWVyKHprZXkuZG9tYWluU2l6ZSwgRnIub25lKTtcblxuICAgICAgICAgICAgLy8gQ2hlY2sgZGVncmVlXG4gICAgICAgICAgICBpZiAocG9seW5vbWlhbHMuVDAuZGVncmVlKCkgPj0gMiAqIHprZXkuZG9tYWluU2l6ZSAtIDIpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFQwIFBvbHlub21pYWwgaXMgbm90IHdlbGwgY2FsY3VsYXRlZCAoZGVncmVlIGlzICR7cG9seW5vbWlhbHMuVDAuZGVncmVlKCl9IGFuZCBtdXN0IGJlIGxlc3MgdGhhbiAkezIgKiB6a2V5LmRvbWFpblNpemUgKyAyfWApO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBkZWxldGUgYnVmZmVycy5UMDtcbiAgICAgICAgfVxuXG4gICAgICAgIGFzeW5jIGZ1bmN0aW9uIGNvbXB1dGVDMSgpIHtcbiAgICAgICAgICAgIGxldCBDMSA9IG5ldyBDUG9seW5vbWlhbCg0LCBjdXJ2ZSwgbG9nZ2VyKTtcbiAgICAgICAgICAgIEMxLmFkZFBvbHlub21pYWwoMCwgcG9seW5vbWlhbHMuQSk7XG4gICAgICAgICAgICBDMS5hZGRQb2x5bm9taWFsKDEsIHBvbHlub21pYWxzLkIpO1xuICAgICAgICAgICAgQzEuYWRkUG9seW5vbWlhbCgyLCBwb2x5bm9taWFscy5DKTtcbiAgICAgICAgICAgIEMxLmFkZFBvbHlub21pYWwoMywgcG9seW5vbWlhbHMuVDApO1xuXG4gICAgICAgICAgICBwb2x5bm9taWFscy5DMSA9IEMxLmdldFBvbHlub21pYWwoKTtcblxuICAgICAgICAgICAgLy8gQ2hlY2sgZGVncmVlXG4gICAgICAgICAgICBpZiAocG9seW5vbWlhbHMuQzEuZGVncmVlKCkgPj0gOCAqIHprZXkuZG9tYWluU2l6ZSAtIDgpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJDMSBQb2x5bm9taWFsIGlzIG5vdCB3ZWxsIGNhbGN1bGF0ZWRcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBhc3luYyBmdW5jdGlvbiByb3VuZDIoKSB7XG4gICAgICAgIC8vIFNURVAgMi4xIC0gQ29tcHV0ZSBwZXJtdXRhdGlvbiBjaGFsbGVuZ2UgYmV0YSBhbmQgZ2FtbWEg4oiIIEZcbiAgICAgICAgLy8gQ29tcHV0ZSBwZXJtdXRhdGlvbiBjaGFsbGVuZ2UgYmV0YVxuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhcIj4gQ29tcHV0aW5nIGNoYWxsZW5nZXMgYmV0YSBhbmQgZ2FtbWFcIik7XG4gICAgICAgIGNvbnN0IHRyYW5zY3JpcHQgPSBuZXcgS2VjY2FrMjU2VHJhbnNjcmlwdChjdXJ2ZSk7XG5cbiAgICAgICAgLy8gQWRkIEMwIHRvIHRoZSB0cmFuc2NyaXB0XG4gICAgICAgIHRyYW5zY3JpcHQuYWRkUG9sQ29tbWl0bWVudCh6a2V5LkMwKTtcblxuICAgICAgICAvLyBBZGQgQSB0byB0aGUgdHJhbnNjcmlwdFxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHprZXkublB1YmxpYzsgaSsrKSB7XG4gICAgICAgICAgICB0cmFuc2NyaXB0LmFkZFNjYWxhcihidWZmZXJzLkEuc2xpY2UoaSAqIHNGciwgaSAqIHNGciArIHNGcikpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gQWRkIEMxIHRvIHRoZSB0cmFuc2NyaXB0XG4gICAgICAgIHRyYW5zY3JpcHQuYWRkUG9sQ29tbWl0bWVudChwcm9vZi5nZXRQb2x5bm9taWFsKFwiQzFcIikpO1xuXG4gICAgICAgIGNoYWxsZW5nZXMuYmV0YSA9IHRyYW5zY3JpcHQuZ2V0Q2hhbGxlbmdlKCk7XG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKFwiwrfCt8K3IGNoYWxsZW5nZXMuYmV0YTogXCIgKyBGci50b1N0cmluZyhjaGFsbGVuZ2VzLmJldGEpKTtcblxuICAgICAgICAvLyBDb21wdXRlIHBlcm11dGF0aW9uIGNoYWxsZW5nZSBnYW1tYVxuICAgICAgICB0cmFuc2NyaXB0LnJlc2V0KCk7XG4gICAgICAgIHRyYW5zY3JpcHQuYWRkU2NhbGFyKGNoYWxsZW5nZXMuYmV0YSk7XG4gICAgICAgIGNoYWxsZW5nZXMuZ2FtbWEgPSB0cmFuc2NyaXB0LmdldENoYWxsZW5nZSgpO1xuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhcIsK3wrfCtyBjaGFsbGVuZ2VzLmdhbW1hOiBcIiArIEZyLnRvU3RyaW5nKGNoYWxsZW5nZXMuZ2FtbWEpKTtcblxuICAgICAgICAvLyBTVEVQIDIuMiAtIENvbXB1dGUgcGVybXV0YXRpb24gcG9seW5vbWlhbCB6KFgpXG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKFwiPiBDb21wdXRpbmcgWiBwb2x5bm9taWFsXCIpO1xuICAgICAgICBhd2FpdCBjb21wdXRlWigpO1xuXG4gICAgICAgIC8vIFNURVAgMi4zIC0gQ29tcHV0ZSBxdW90aWVudCBwb2x5bm9taWFsIFQxKFgpIGFuZCBUMihYKVxuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhcIj4gQ29tcHV0aW5nIFQxIHBvbHlub21pYWxcIik7XG4gICAgICAgIGF3YWl0IGNvbXB1dGVUMSgpO1xuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhcIj4gQ29tcHV0aW5nIFQyIHBvbHlub21pYWxcIik7XG4gICAgICAgIGF3YWl0IGNvbXB1dGVUMigpO1xuXG4gICAgICAgIC8vIFNURVAgMi40IC0gQ29tcHV0ZSB0aGUgRkZULXN0eWxlIGNvbWJpbmF0aW9uIHBvbHlub21pYWwgQzIoWClcbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oXCI+IENvbXB1dGluZyBDMiBwb2x5bm9taWFsXCIpO1xuICAgICAgICBhd2FpdCBjb21wdXRlQzIoKTtcblxuICAgICAgICAvLyBUaGUgc2Vjb25kIG91dHB1dCBvZiB0aGUgcHJvdmVyIGlzIChbQzJdXzEpXG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKFwiPiBDb21wdXRpbmcgQzIgbXVsdGkgZXhwb25lbnRpYXRpb25cIik7XG4gICAgICAgIGxldCBjb21taXRDMiA9IGF3YWl0IHBvbHlub21pYWxzLkMyLm11bHRpRXhwb25lbnRpYXRpb24oUFRhdSwgXCJDMlwiKTtcbiAgICAgICAgcHJvb2YuYWRkUG9seW5vbWlhbChcIkMyXCIsIGNvbW1pdEMyKTtcblxuICAgICAgICByZXR1cm4gMDtcblxuICAgICAgICBhc3luYyBmdW5jdGlvbiBjb21wdXRlWigpIHtcbiAgICAgICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKFwiwrfCt8K3IENvbXB1dGluZyBaIGV2YWx1YXRpb25zXCIpO1xuXG4gICAgICAgICAgICBsZXQgbnVtQXJyID0gbmV3IEJpZ0J1ZmZlcihzRG9tYWluKTtcbiAgICAgICAgICAgIGxldCBkZW5BcnIgPSBuZXcgQmlnQnVmZmVyKHNEb21haW4pO1xuXG4gICAgICAgICAgICAvLyBTZXQgdGhlIGZpcnN0IHZhbHVlcyB0byAxXG4gICAgICAgICAgICBudW1BcnIuc2V0KEZyLm9uZSwgMCk7XG4gICAgICAgICAgICBkZW5BcnIuc2V0KEZyLm9uZSwgMCk7XG5cbiAgICAgICAgICAgIC8vIFNldCBpbml0aWFsIG9tZWdhXG4gICAgICAgICAgICBsZXQgdyA9IEZyLm9uZTtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgemtleS5kb21haW5TaXplOyBpKyspIHtcbiAgICAgICAgICAgICAgICBpZiAobG9nZ2VyICYmICgwICE9PSBpKSAmJiAoaSAlIDEwMDAwMCA9PT0gMCkpIGxvZ2dlci5pbmZvKGAgICAgWiBldmFsdWF0aW9uICR7aX0vJHt6a2V5LmRvbWFpblNpemV9YCk7XG4gICAgICAgICAgICAgICAgY29uc3QgaV9zRnIgPSBpICogc0ZyO1xuXG4gICAgICAgICAgICAgICAgLy8gWihYKSA6PSBudW1BcnIgLyBkZW5BcnJcbiAgICAgICAgICAgICAgICAvLyBudW1BcnIgOj0gKGEgKyBiZXRhwrfPiSArIGdhbW1hKShiICsgYmV0YcK3z4nCt2sxICsgZ2FtbWEpKGMgKyBiZXRhwrfPicK3azIgKyBnYW1tYSlcbiAgICAgICAgICAgICAgICBjb25zdCBiZXRhdyA9IEZyLm11bChjaGFsbGVuZ2VzLmJldGEsIHcpO1xuXG4gICAgICAgICAgICAgICAgbGV0IG51bTEgPSBidWZmZXJzLkEuc2xpY2UoaV9zRnIsIGlfc0ZyICsgc0ZyKTtcbiAgICAgICAgICAgICAgICBudW0xID0gRnIuYWRkKG51bTEsIGJldGF3KTtcbiAgICAgICAgICAgICAgICBudW0xID0gRnIuYWRkKG51bTEsIGNoYWxsZW5nZXMuZ2FtbWEpO1xuXG4gICAgICAgICAgICAgICAgbGV0IG51bTIgPSBidWZmZXJzLkIuc2xpY2UoaV9zRnIsIGlfc0ZyICsgc0ZyKTtcbiAgICAgICAgICAgICAgICBudW0yID0gRnIuYWRkKG51bTIsIEZyLm11bCh6a2V5LmsxLCBiZXRhdykpO1xuICAgICAgICAgICAgICAgIG51bTIgPSBGci5hZGQobnVtMiwgY2hhbGxlbmdlcy5nYW1tYSk7XG5cbiAgICAgICAgICAgICAgICBsZXQgbnVtMyA9IGJ1ZmZlcnMuQy5zbGljZShpX3NGciwgaV9zRnIgKyBzRnIpO1xuICAgICAgICAgICAgICAgIG51bTMgPSBGci5hZGQobnVtMywgRnIubXVsKHprZXkuazIsIGJldGF3KSk7XG4gICAgICAgICAgICAgICAgbnVtMyA9IEZyLmFkZChudW0zLCBjaGFsbGVuZ2VzLmdhbW1hKTtcblxuICAgICAgICAgICAgICAgIGxldCBudW0gPSBGci5tdWwobnVtMSwgRnIubXVsKG51bTIsIG51bTMpKTtcblxuICAgICAgICAgICAgICAgIC8vIGRlbkFyciA6PSAoYSArIGJldGHCt3NpZ21hMSArIGdhbW1hKShiICsgYmV0YcK3c2lnbWEyICsgZ2FtbWEpKGMgKyBiZXRhwrdzaWdtYTMgKyBnYW1tYSlcbiAgICAgICAgICAgICAgICBsZXQgZGVuMSA9IGJ1ZmZlcnMuQS5zbGljZShpX3NGciwgaV9zRnIgKyBzRnIpO1xuICAgICAgICAgICAgICAgIGRlbjEgPSBGci5hZGQoZGVuMSwgRnIubXVsKGNoYWxsZW5nZXMuYmV0YSwgZXZhbHVhdGlvbnMuU2lnbWExLmdldEV2YWx1YXRpb24oaSAqIDQpKSk7XG4gICAgICAgICAgICAgICAgZGVuMSA9IEZyLmFkZChkZW4xLCBjaGFsbGVuZ2VzLmdhbW1hKTtcblxuICAgICAgICAgICAgICAgIGxldCBkZW4yID0gYnVmZmVycy5CLnNsaWNlKGlfc0ZyLCBpX3NGciArIHNGcik7XG4gICAgICAgICAgICAgICAgZGVuMiA9IEZyLmFkZChkZW4yLCBGci5tdWwoY2hhbGxlbmdlcy5iZXRhLCBldmFsdWF0aW9ucy5TaWdtYTIuZ2V0RXZhbHVhdGlvbihpICogNCkpKTtcbiAgICAgICAgICAgICAgICBkZW4yID0gRnIuYWRkKGRlbjIsIGNoYWxsZW5nZXMuZ2FtbWEpO1xuXG4gICAgICAgICAgICAgICAgbGV0IGRlbjMgPSBidWZmZXJzLkMuc2xpY2UoaV9zRnIsIGlfc0ZyICsgc0ZyKTtcbiAgICAgICAgICAgICAgICBkZW4zID0gRnIuYWRkKGRlbjMsIEZyLm11bChjaGFsbGVuZ2VzLmJldGEsIGV2YWx1YXRpb25zLlNpZ21hMy5nZXRFdmFsdWF0aW9uKGkgKiA0KSkpO1xuICAgICAgICAgICAgICAgIGRlbjMgPSBGci5hZGQoZGVuMywgY2hhbGxlbmdlcy5nYW1tYSk7XG5cbiAgICAgICAgICAgICAgICBsZXQgZGVuID0gRnIubXVsKGRlbjEsIEZyLm11bChkZW4yLCBkZW4zKSk7XG5cbiAgICAgICAgICAgICAgICAvLyBNdWx0aXBseSBjdXJyZW50IG51bSB2YWx1ZSB3aXRoIHRoZSBwcmV2aW91cyBvbmUgc2F2ZWQgaW4gbnVtQXJyXG4gICAgICAgICAgICAgICAgbnVtID0gRnIubXVsKG51bUFyci5zbGljZShpX3NGciwgaV9zRnIgKyBzRnIpLCBudW0pO1xuICAgICAgICAgICAgICAgIG51bUFyci5zZXQobnVtLCAoKGkgKyAxKSAlIHprZXkuZG9tYWluU2l6ZSkgKiBzRnIpO1xuXG4gICAgICAgICAgICAgICAgLy8gTXVsdGlwbHkgY3VycmVudCBkZW4gdmFsdWUgd2l0aCB0aGUgcHJldmlvdXMgb25lIHNhdmVkIGluIGRlbkFyclxuICAgICAgICAgICAgICAgIGRlbiA9IEZyLm11bChkZW5BcnIuc2xpY2UoaV9zRnIsIGlfc0ZyICsgc0ZyKSwgZGVuKTtcbiAgICAgICAgICAgICAgICBkZW5BcnIuc2V0KGRlbiwgKChpICsgMSkgJSB6a2V5LmRvbWFpblNpemUpICogc0ZyKTtcblxuICAgICAgICAgICAgICAgIC8vIE5leHQgb21lZ2FcbiAgICAgICAgICAgICAgICB3ID0gRnIubXVsKHcsIEZyLndbemtleS5wb3dlcl0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gQ29tcHV0ZSB0aGUgaW52ZXJzZSBvZiBkZW5BcnIgdG8gY29tcHV0ZSBpbiB0aGUgbmV4dCBjb21tYW5kIHRoZVxuICAgICAgICAgICAgLy8gZGl2aXNpb24gbnVtQXJyL2RlbkFyciBieSBtdWx0aXBseWluZyBudW0gwrcgMS9kZW5BcnJcbiAgICAgICAgICAgIGRlbkFyciA9IGF3YWl0IEZyLmJhdGNoSW52ZXJzZShkZW5BcnIpO1xuXG4gICAgICAgICAgICAvLyBUT0RPOiBEbyBpdCBpbiBhc3NlbWJseSBhbmQgaW4gcGFyYWxsZWxcbiAgICAgICAgICAgIC8vIE11bHRpcGx5IG51bUFyciDCtyBkZW5BcnIgd2hlcmUgZGVuQXJyIHdhcyBpbnZlcnRlZCBpbiB0aGUgcHJldmlvdXMgY29tbWFuZFxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB6a2V5LmRvbWFpblNpemU7IGkrKykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGlfc0ZyID0gaSAqIHNGcjtcblxuICAgICAgICAgICAgICAgIGNvbnN0IHogPSBGci5tdWwobnVtQXJyLnNsaWNlKGlfc0ZyLCBpX3NGciArIHNGciksIGRlbkFyci5zbGljZShpX3NGciwgaV9zRnIgKyBzRnIpKTtcbiAgICAgICAgICAgICAgICBudW1BcnIuc2V0KHosIGlfc0ZyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIEZyb20gbm93IG9uIHRoZSB2YWx1ZXMgc2F2ZWQgb24gbnVtQXJyIHdpbGwgYmUgWihYKSBidWZmZXJcbiAgICAgICAgICAgIGJ1ZmZlcnMuWiA9IG51bUFycjtcblxuICAgICAgICAgICAgaWYgKCFGci5lcShudW1BcnIuc2xpY2UoMCwgc0ZyKSwgRnIub25lKSkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkNvcHkgY29uc3RyYWludHMgZG9lcyBub3QgbWF0Y2hcIik7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIENvbXB1dGUgcG9seW5vbWlhbCBjb2VmZmljaWVudHMgeihYKSBmcm9tIGJ1ZmZlcnMuWlxuICAgICAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oXCLCt8K3wrcgQ29tcHV0aW5nIFogaWZmdFwiKTtcbiAgICAgICAgICAgIHBvbHlub21pYWxzLlogPSBhd2FpdCBQb2x5bm9taWFsLmZyb21FdmFsdWF0aW9ucyhidWZmZXJzLlosIGN1cnZlLCBsb2dnZXIpO1xuXG4gICAgICAgICAgICAvLyBDb21wdXRlIGV4dGVuZGVkIGV2YWx1YXRpb25zIG9mIHooWCkgcG9seW5vbWlhbFxuICAgICAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oXCLCt8K3wrcgQ29tcHV0aW5nIFogZmZ0XCIpO1xuICAgICAgICAgICAgZXZhbHVhdGlvbnMuWiA9IGF3YWl0IEV2YWx1YXRpb25zLmZyb21Qb2x5bm9taWFsKHBvbHlub21pYWxzLlosIDQsIGN1cnZlLCBsb2dnZXIpO1xuXG4gICAgICAgICAgICAvLyBCbGluZCB6KFgpIHBvbHlub21pYWwgY29lZmZpY2llbnRzIHdpdGggYmxpbmRpbmcgc2NhbGFycyBiXG4gICAgICAgICAgICBwb2x5bm9taWFscy5aLmJsaW5kQ29lZmZpY2llbnRzKFtjaGFsbGVuZ2VzLmJbOV0sIGNoYWxsZW5nZXMuYls4XSwgY2hhbGxlbmdlcy5iWzddXSk7XG5cbiAgICAgICAgICAgIC8vIENoZWNrIGRlZ3JlZVxuICAgICAgICAgICAgaWYgKHBvbHlub21pYWxzLlouZGVncmVlKCkgPj0gemtleS5kb21haW5TaXplICsgMykge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIlogUG9seW5vbWlhbCBpcyBub3Qgd2VsbCBjYWxjdWxhdGVkXCIpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBkZWxldGUgYnVmZmVycy5aO1xuICAgICAgICB9XG5cbiAgICAgICAgYXN5bmMgZnVuY3Rpb24gY29tcHV0ZVQxKCkge1xuICAgICAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oXCLCt8K3wrcgQ29tcHV0aW5nIFQxIGV2YWx1YXRpb25zXCIpO1xuXG4gICAgICAgICAgICBidWZmZXJzLlQxID0gbmV3IEJpZ0J1ZmZlcihzRG9tYWluICogMik7XG4gICAgICAgICAgICBidWZmZXJzLlQxeiA9IG5ldyBCaWdCdWZmZXIoc0RvbWFpbiAqIDIpO1xuXG4gICAgICAgICAgICAvLyBTZXQgaW5pdGlhbCBvbWVnYVxuICAgICAgICAgICAgbGV0IG9tZWdhID0gRnIub25lO1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB6a2V5LmRvbWFpblNpemUgKiAyOyBpKyspIHtcbiAgICAgICAgICAgICAgICBpZiAobG9nZ2VyICYmICgwICE9PSBpKSAmJiAoaSAlIDEwMDAwMCA9PT0gMCkpIGxvZ2dlci5pbmZvKGAgICAgVDEgZXZhbHVhdGlvbiAke2l9LyR7emtleS5kb21haW5TaXplICogNH1gKTtcblxuICAgICAgICAgICAgICAgIGNvbnN0IG9tZWdhMiA9IEZyLnNxdWFyZShvbWVnYSk7XG5cbiAgICAgICAgICAgICAgICBjb25zdCB6ID0gZXZhbHVhdGlvbnMuWi5nZXRFdmFsdWF0aW9uKGkgKiAyKTtcbiAgICAgICAgICAgICAgICBjb25zdCB6cCA9IEZyLmFkZChGci5hZGQoRnIubXVsKGNoYWxsZW5nZXMuYls3XSwgb21lZ2EyKSwgRnIubXVsKGNoYWxsZW5nZXMuYls4XSwgb21lZ2EpKSwgY2hhbGxlbmdlcy5iWzldKTtcblxuICAgICAgICAgICAgICAgIC8vIFQxKFgpIDo9ICh6KFgpIC0gMSkgwrcgTF8xKFgpXG4gICAgICAgICAgICAgICAgLy8gQ29tcHV0ZSBmaXJzdCBUMShYKcK3Wl9IKFgpLCBzbyBkaXZpZGUgbGF0ZXIgdGhlIHJlc3VsdGluZyBwb2x5bm9taWFsIGJ5IFpfSChYKVxuICAgICAgICAgICAgICAgIGNvbnN0IGxhZ3JhbmdlMSA9IGV2YWx1YXRpb25zLmxhZ3JhbmdlMS5nZXRFdmFsdWF0aW9uKHprZXkuZG9tYWluU2l6ZSArIGkgKiAyKTtcbiAgICAgICAgICAgICAgICBsZXQgdDEgPSBGci5tdWwoRnIuc3ViKHosIEZyLm9uZSksIGxhZ3JhbmdlMSk7XG4gICAgICAgICAgICAgICAgbGV0IHQxeiA9IEZyLm11bCh6cCwgbGFncmFuZ2UxKTtcblxuICAgICAgICAgICAgICAgIGJ1ZmZlcnMuVDEuc2V0KHQxLCBpICogc0ZyKTtcbiAgICAgICAgICAgICAgICBidWZmZXJzLlQxei5zZXQodDF6LCBpICogc0ZyKTtcblxuICAgICAgICAgICAgICAgIC8vIENvbXB1dGUgbmV4dCBvbWVnYVxuICAgICAgICAgICAgICAgIG9tZWdhID0gRnIubXVsKG9tZWdhLCBGci53W3prZXkucG93ZXIgKyAxXSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIENvbXB1dGUgdGhlIGNvZWZmaWNpZW50cyBvZiB0aGUgcG9seW5vbWlhbCBUMShYKSBmcm9tIGJ1ZmZlcnMuVDFcbiAgICAgICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKFwiwrfCt8K3IENvbXB1dGluZyBUMSBpZmZ0XCIpO1xuICAgICAgICAgICAgcG9seW5vbWlhbHMuVDEgPSBhd2FpdCBQb2x5bm9taWFsLmZyb21FdmFsdWF0aW9ucyhidWZmZXJzLlQxLCBjdXJ2ZSwgbG9nZ2VyKTtcblxuICAgICAgICAgICAgLy8gRGl2aWRlIHRoZSBwb2x5bm9taWFsIFQxIGJ5IFpfSChYKVxuICAgICAgICAgICAgcG9seW5vbWlhbHMuVDEuZGl2QnlaZXJvZmllcih6a2V5LmRvbWFpblNpemUsIEZyLm9uZSk7XG5cbiAgICAgICAgICAgIC8vIENvbXB1dGUgdGhlIGNvZWZmaWNpZW50cyBvZiB0aGUgcG9seW5vbWlhbCBUMXooWCkgZnJvbSBidWZmZXJzLlQxelxuICAgICAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oXCLCt8K3wrcgQ29tcHV0aW5nIFQxeiBpZmZ0XCIpO1xuICAgICAgICAgICAgcG9seW5vbWlhbHMuVDF6ID0gYXdhaXQgUG9seW5vbWlhbC5mcm9tRXZhbHVhdGlvbnMoYnVmZmVycy5UMXosIGN1cnZlLCBsb2dnZXIpO1xuXG4gICAgICAgICAgICAvLyBBZGQgdGhlIHBvbHlub21pYWwgVDF6IHRvIFQxIHRvIGdldCB0aGUgZmluYWwgcG9seW5vbWlhbCBUMVxuICAgICAgICAgICAgcG9seW5vbWlhbHMuVDEuYWRkKHBvbHlub21pYWxzLlQxeik7XG5cbiAgICAgICAgICAgIC8vIENoZWNrIGRlZ3JlZVxuICAgICAgICAgICAgaWYgKHBvbHlub21pYWxzLlQxLmRlZ3JlZSgpID49IHprZXkuZG9tYWluU2l6ZSArIDIpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJUMSBQb2x5bm9taWFsIGlzIG5vdCB3ZWxsIGNhbGN1bGF0ZWRcIik7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGRlbGV0ZSBidWZmZXJzLlQxO1xuICAgICAgICAgICAgZGVsZXRlIGJ1ZmZlcnMuVDF6O1xuICAgICAgICAgICAgZGVsZXRlIHBvbHlub21pYWxzLlQxejtcbiAgICAgICAgfVxuXG4gICAgICAgIGFzeW5jIGZ1bmN0aW9uIGNvbXB1dGVUMigpIHtcbiAgICAgICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKFwiwrfCt8K3IENvbXB1dGluZyBUMiBldmFsdWF0aW9uc1wiKTtcblxuICAgICAgICAgICAgYnVmZmVycy5UMiA9IG5ldyBCaWdCdWZmZXIoc0RvbWFpbiAqIDQpO1xuICAgICAgICAgICAgYnVmZmVycy5UMnogPSBuZXcgQmlnQnVmZmVyKHNEb21haW4gKiA0KTtcblxuICAgICAgICAgICAgLy8gU2V0IGluaXRpYWwgb21lZ2FcbiAgICAgICAgICAgIGxldCBvbWVnYSA9IEZyLm9uZTtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgemtleS5kb21haW5TaXplICogNDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgaWYgKGxvZ2dlciAmJiAoMCAhPT0gaSkgJiYgKGkgJSAxMDAwMDAgPT09IDApKSBsb2dnZXIuaW5mbyhgICAgIFQyIGV2YWx1YXRpb24gJHtpfS8ke3prZXkuZG9tYWluU2l6ZSAqIDR9YCk7XG5cbiAgICAgICAgICAgICAgICBjb25zdCBvbWVnYTIgPSBGci5zcXVhcmUob21lZ2EpO1xuICAgICAgICAgICAgICAgIGNvbnN0IG9tZWdhVyA9IEZyLm11bChvbWVnYSwgRnIud1t6a2V5LnBvd2VyXSk7XG4gICAgICAgICAgICAgICAgY29uc3Qgb21lZ2FXMiA9IEZyLnNxdWFyZShvbWVnYVcpO1xuXG4gICAgICAgICAgICAgICAgY29uc3QgYSA9IGV2YWx1YXRpb25zLkEuZ2V0RXZhbHVhdGlvbihpKTtcbiAgICAgICAgICAgICAgICBjb25zdCBiID0gZXZhbHVhdGlvbnMuQi5nZXRFdmFsdWF0aW9uKGkpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGMgPSBldmFsdWF0aW9ucy5DLmdldEV2YWx1YXRpb24oaSk7XG4gICAgICAgICAgICAgICAgY29uc3QgeiA9IGV2YWx1YXRpb25zLlouZ2V0RXZhbHVhdGlvbihpKTtcbiAgICAgICAgICAgICAgICBjb25zdCB6VyA9IGV2YWx1YXRpb25zLlouZ2V0RXZhbHVhdGlvbigoemtleS5kb21haW5TaXplICogNCArIDQgKyBpKSAlICh6a2V5LmRvbWFpblNpemUgKiA0KSk7XG5cbiAgICAgICAgICAgICAgICBjb25zdCB6cCA9IEZyLmFkZChGci5hZGQoRnIubXVsKGNoYWxsZW5nZXMuYls3XSwgb21lZ2EyKSwgRnIubXVsKGNoYWxsZW5nZXMuYls4XSwgb21lZ2EpKSwgY2hhbGxlbmdlcy5iWzldKTtcbiAgICAgICAgICAgICAgICBjb25zdCB6V3AgPSBGci5hZGQoRnIuYWRkKEZyLm11bChjaGFsbGVuZ2VzLmJbN10sIG9tZWdhVzIpLCBGci5tdWwoY2hhbGxlbmdlcy5iWzhdLCBvbWVnYVcpKSwgY2hhbGxlbmdlcy5iWzldKTtcblxuICAgICAgICAgICAgICAgIGNvbnN0IHNpZ21hMSA9IGV2YWx1YXRpb25zLlNpZ21hMS5nZXRFdmFsdWF0aW9uKGkpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHNpZ21hMiA9IGV2YWx1YXRpb25zLlNpZ21hMi5nZXRFdmFsdWF0aW9uKGkpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHNpZ21hMyA9IGV2YWx1YXRpb25zLlNpZ21hMy5nZXRFdmFsdWF0aW9uKGkpO1xuXG4gICAgICAgICAgICAgICAgLy8gVDIoWCkgOj0gWyAoYShYKSArIGJldGHCt1ggKyBnYW1tYSkoYihYKSArIGJldGHCt2sxwrdYICsgZ2FtbWEpKGMoWCkgKyBiZXRhwrdrMsK3WCArIGdhbW1hKXooWClcbiAgICAgICAgICAgICAgICAvLyAgICAgICAgICAgLShhKFgpICsgYmV0YcK3c2lnbWExKFgpICsgZ2FtbWEpKGIoWCkgKyBiZXRhwrdzaWdtYTIoWCkgKyBnYW1tYSkoYyhYKSArIGJldGHCt3NpZ21hMyhYKSArIGdhbW1hKXooWM+JKV0gwrcgMS9aX0goWClcbiAgICAgICAgICAgICAgICAvLyBDb21wdXRlIGZpcnN0IFQyKFgpwrdaX0goWCksIHNvIGRpdmlkZSBsYXRlciB0aGUgcmVzdWx0aW5nIHBvbHlub21pYWwgYnkgWl9IKFgpXG5cbiAgICAgICAgICAgICAgICAvLyBleHByZXNzaW9uIDEgLT4gKGEoWCkgKyBiZXRhwrdYICsgZ2FtbWEpKGIoWCkgKyBiZXRhwrdrMcK3WCArIGdhbW1hKShjKFgpICsgYmV0YcK3azLCt1ggKyBnYW1tYSl6KFgpXG4gICAgICAgICAgICAgICAgY29uc3QgYmV0YVggPSBGci5tdWwoY2hhbGxlbmdlcy5iZXRhLCBvbWVnYSk7XG5cbiAgICAgICAgICAgICAgICBsZXQgZTExID0gRnIuYWRkKGEsIGJldGFYKTtcbiAgICAgICAgICAgICAgICBlMTEgPSBGci5hZGQoZTExLCBjaGFsbGVuZ2VzLmdhbW1hKTtcblxuICAgICAgICAgICAgICAgIGxldCBlMTIgPSBGci5hZGQoYiwgRnIubXVsKGJldGFYLCB6a2V5LmsxKSk7XG4gICAgICAgICAgICAgICAgZTEyID0gRnIuYWRkKGUxMiwgY2hhbGxlbmdlcy5nYW1tYSk7XG5cbiAgICAgICAgICAgICAgICBsZXQgZTEzID0gRnIuYWRkKGMsIEZyLm11bChiZXRhWCwgemtleS5rMikpO1xuICAgICAgICAgICAgICAgIGUxMyA9IEZyLmFkZChlMTMsIGNoYWxsZW5nZXMuZ2FtbWEpO1xuXG4gICAgICAgICAgICAgICAgbGV0IGUxID0gRnIubXVsKEZyLm11bChGci5tdWwoZTExLCBlMTIpLCBlMTMpLCB6KTtcbiAgICAgICAgICAgICAgICBsZXQgZTF6ID0gRnIubXVsKEZyLm11bChGci5tdWwoZTExLCBlMTIpLCBlMTMpLCB6cCk7XG4gICAgICAgICAgICAgICAgLy8gY29uc3QgW2UxLCBlMXpdID0gTXVsWi5tdWw0KGUxMSwgZTEyLCBlMTMsIHosIGFwLCBicCwgY3AsIHpwLCBpICUgNCwgRnIpO1xuXG4gICAgICAgICAgICAgICAgLy8gZXhwcmVzc2lvbiAyIC0+IChhKFgpICsgYmV0YcK3c2lnbWExKFgpICsgZ2FtbWEpKGIoWCkgKyBiZXRhwrdzaWdtYTIoWCkgKyBnYW1tYSkoYyhYKSArIGJldGHCt3NpZ21hMyhYKSArIGdhbW1hKXooWM+JKVxuICAgICAgICAgICAgICAgIGxldCBlMjEgPSBGci5hZGQoYSwgRnIubXVsKGNoYWxsZW5nZXMuYmV0YSwgc2lnbWExKSk7XG4gICAgICAgICAgICAgICAgZTIxID0gRnIuYWRkKGUyMSwgY2hhbGxlbmdlcy5nYW1tYSk7XG5cbiAgICAgICAgICAgICAgICBsZXQgZTIyID0gRnIuYWRkKGIsIEZyLm11bChjaGFsbGVuZ2VzLmJldGEsIHNpZ21hMikpO1xuICAgICAgICAgICAgICAgIGUyMiA9IEZyLmFkZChlMjIsIGNoYWxsZW5nZXMuZ2FtbWEpO1xuXG4gICAgICAgICAgICAgICAgbGV0IGUyMyA9IEZyLmFkZChjLCBGci5tdWwoY2hhbGxlbmdlcy5iZXRhLCBzaWdtYTMpKTtcbiAgICAgICAgICAgICAgICBlMjMgPSBGci5hZGQoZTIzLCBjaGFsbGVuZ2VzLmdhbW1hKTtcblxuICAgICAgICAgICAgICAgIGxldCBlMiA9IEZyLm11bChGci5tdWwoRnIubXVsKGUyMSwgZTIyKSwgZTIzKSwgelcpO1xuICAgICAgICAgICAgICAgIGxldCBlMnogPSBGci5tdWwoRnIubXVsKEZyLm11bChlMjEsIGUyMiksIGUyMyksIHpXcCk7XG4gICAgICAgICAgICAgICAgLy8gY29uc3QgW2UyLCBlMnpdID0gTXVsWi5tdWw0KGUyMSwgZTIyLCBlMjMsIHpXLCBhcCwgYnAsIGNwLCB6V3AsIGkgJSA0LCBGcik7XG5cbiAgICAgICAgICAgICAgICBsZXQgdDIgPSBGci5zdWIoZTEsIGUyKTtcbiAgICAgICAgICAgICAgICBsZXQgdDJ6ID0gRnIuc3ViKGUxeiwgZTJ6KTtcblxuICAgICAgICAgICAgICAgIGJ1ZmZlcnMuVDIuc2V0KHQyLCBpICogc0ZyKTtcbiAgICAgICAgICAgICAgICBidWZmZXJzLlQyei5zZXQodDJ6LCBpICogc0ZyKTtcblxuICAgICAgICAgICAgICAgIC8vIENvbXB1dGUgbmV4dCBvbWVnYVxuICAgICAgICAgICAgICAgIG9tZWdhID0gRnIubXVsKG9tZWdhLCBGci53W3prZXkucG93ZXIgKyAyXSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIENvbXB1dGUgdGhlIGNvZWZmaWNpZW50cyBvZiB0aGUgcG9seW5vbWlhbCBUMihYKSBmcm9tIGJ1ZmZlcnMuVDJcbiAgICAgICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKFwiwrfCt8K3IENvbXB1dGluZyBUMiBpZmZ0XCIpO1xuICAgICAgICAgICAgcG9seW5vbWlhbHMuVDIgPSBhd2FpdCBQb2x5bm9taWFsLmZyb21FdmFsdWF0aW9ucyhidWZmZXJzLlQyLCBjdXJ2ZSwgbG9nZ2VyKTtcblxuICAgICAgICAgICAgLy8gRGl2aWRlIHRoZSBwb2x5bm9taWFsIFQyIGJ5IFpfSChYKVxuICAgICAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oXCLCt8K3wrcgQ29tcHV0aW5nIFQyIC8gWkhcIik7XG4gICAgICAgICAgICBwb2x5bm9taWFscy5UMi5kaXZCeVplcm9maWVyKHprZXkuZG9tYWluU2l6ZSwgRnIub25lKTtcblxuICAgICAgICAgICAgLy8gQ29tcHV0ZSB0aGUgY29lZmZpY2llbnRzIG9mIHRoZSBwb2x5bm9taWFsIFQyeihYKSBmcm9tIGJ1ZmZlcnMuVDJ6XG4gICAgICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhcIsK3wrfCtyBDb21wdXRpbmcgVDJ6IGlmZnRcIik7XG4gICAgICAgICAgICBwb2x5bm9taWFscy5UMnogPSBhd2FpdCBQb2x5bm9taWFsLmZyb21FdmFsdWF0aW9ucyhidWZmZXJzLlQyeiwgY3VydmUsIGxvZ2dlcik7XG5cbiAgICAgICAgICAgIC8vIEFkZCB0aGUgcG9seW5vbWlhbCBUMnogdG8gVDIgdG8gZ2V0IHRoZSBmaW5hbCBwb2x5bm9taWFsIFQyXG4gICAgICAgICAgICBwb2x5bm9taWFscy5UMi5hZGQocG9seW5vbWlhbHMuVDJ6KTtcblxuICAgICAgICAgICAgLy8gQ2hlY2sgZGVncmVlXG4gICAgICAgICAgICBpZiAocG9seW5vbWlhbHMuVDIuZGVncmVlKCkgPj0gMyAqIHprZXkuZG9tYWluU2l6ZSkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIlQyIFBvbHlub21pYWwgaXMgbm90IHdlbGwgY2FsY3VsYXRlZFwiKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZGVsZXRlIGJ1ZmZlcnMuVDI7XG4gICAgICAgICAgICBkZWxldGUgYnVmZmVycy5UMno7XG4gICAgICAgICAgICBkZWxldGUgcG9seW5vbWlhbHMuVDJ6O1xuICAgICAgICB9XG5cbiAgICAgICAgYXN5bmMgZnVuY3Rpb24gY29tcHV0ZUMyKCkge1xuICAgICAgICAgICAgbGV0IEMyID0gbmV3IENQb2x5bm9taWFsKDMsIGN1cnZlLCBsb2dnZXIpO1xuICAgICAgICAgICAgQzIuYWRkUG9seW5vbWlhbCgwLCBwb2x5bm9taWFscy5aKTtcbiAgICAgICAgICAgIEMyLmFkZFBvbHlub21pYWwoMSwgcG9seW5vbWlhbHMuVDEpO1xuICAgICAgICAgICAgQzIuYWRkUG9seW5vbWlhbCgyLCBwb2x5bm9taWFscy5UMik7XG5cbiAgICAgICAgICAgIHBvbHlub21pYWxzLkMyID0gQzIuZ2V0UG9seW5vbWlhbCgpO1xuXG4gICAgICAgICAgICAvLyBDaGVjayBkZWdyZWVcbiAgICAgICAgICAgIGlmIChwb2x5bm9taWFscy5DMi5kZWdyZWUoKSA+PSA5ICogemtleS5kb21haW5TaXplKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiQzIgUG9seW5vbWlhbCBpcyBub3Qgd2VsbCBjYWxjdWxhdGVkXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgYXN5bmMgZnVuY3Rpb24gcm91bmQzKCkge1xuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhcIj4gQ29tcHV0aW5nIGNoYWxsZW5nZSB4aVwiKTtcbiAgICAgICAgLy8gU1RFUCAzLjEgLSBDb21wdXRlIGV2YWx1YXRpb24gY2hhbGxlbmdlIHhpIOKIiCBTXG4gICAgICAgIGNvbnN0IHRyYW5zY3JpcHQgPSBuZXcgS2VjY2FrMjU2VHJhbnNjcmlwdChjdXJ2ZSk7XG4gICAgICAgIHRyYW5zY3JpcHQuYWRkU2NhbGFyKGNoYWxsZW5nZXMuZ2FtbWEpO1xuICAgICAgICB0cmFuc2NyaXB0LmFkZFBvbENvbW1pdG1lbnQocHJvb2YuZ2V0UG9seW5vbWlhbChcIkMyXCIpKTtcblxuICAgICAgICAvLyBPYnRhaW4gYSB4aV9zZWVkZXIgZnJvbSB0aGUgdHJhbnNjcmlwdFxuICAgICAgICAvLyBUbyBmb3JjZSBoMV40ID0geGksIGgyXjMgPSB4aSBhbmQgaF8zXjIgPSB4ac+JXG4gICAgICAgIC8vIHdlIGNvbXB1dGUgeGkgPSB4aV9zZWVkZXJeMTIsIGgxID0geGlfc2VlZGVyXjMsIGgyID0geGlfc2VlZGVyXjQgYW5kIGgzID0geGlfc2VlZGVyXjZcbiAgICAgICAgY2hhbGxlbmdlcy54aVNlZWQgPSB0cmFuc2NyaXB0LmdldENoYWxsZW5nZSgpO1xuICAgICAgICBjb25zdCB4aVNlZWQyID0gRnIuc3F1YXJlKGNoYWxsZW5nZXMueGlTZWVkKTtcblxuICAgICAgICAvLyBDb21wdXRlIG9tZWdhOCwgb21lZ2E0IGFuZCBvbWVnYTNcbiAgICAgICAgcm9vdHMudzggPSBbXTtcbiAgICAgICAgcm9vdHMudzhbMF0gPSBGci5vbmU7XG4gICAgICAgIGZvciAobGV0IGkgPSAxOyBpIDwgODsgaSsrKSB7XG4gICAgICAgICAgICByb290cy53OFtpXSA9IEZyLm11bChyb290cy53OFtpIC0gMV0sIHprZXkudzgpO1xuICAgICAgICB9XG5cbiAgICAgICAgcm9vdHMudzQgPSBbXTtcbiAgICAgICAgcm9vdHMudzRbMF0gPSBGci5vbmU7XG4gICAgICAgIGZvciAobGV0IGkgPSAxOyBpIDwgNDsgaSsrKSB7XG4gICAgICAgICAgICByb290cy53NFtpXSA9IEZyLm11bChyb290cy53NFtpIC0gMV0sIHprZXkudzQpO1xuICAgICAgICB9XG5cbiAgICAgICAgcm9vdHMudzMgPSBbXTtcbiAgICAgICAgcm9vdHMudzNbMF0gPSBGci5vbmU7XG4gICAgICAgIHJvb3RzLnczWzFdID0gemtleS53MztcbiAgICAgICAgcm9vdHMudzNbMl0gPSBGci5zcXVhcmUoemtleS53Myk7XG5cbiAgICAgICAgLy8gQ29tcHV0ZSBoMCA9IHhpU2VlZGVyXjNcbiAgICAgICAgcm9vdHMuUzAgPSB7fTtcbiAgICAgICAgcm9vdHMuUzAuaDB3OCA9IFtdO1xuICAgICAgICByb290cy5TMC5oMHc4WzBdID0gRnIubXVsKHhpU2VlZDIsIGNoYWxsZW5nZXMueGlTZWVkKTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDE7IGkgPCA4OyBpKyspIHtcbiAgICAgICAgICAgIHJvb3RzLlMwLmgwdzhbaV0gPSBGci5tdWwocm9vdHMuUzAuaDB3OFswXSwgcm9vdHMudzhbaV0pO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gQ29tcHV0ZSBoMSA9IHhpX3NlZWRlcl42XG4gICAgICAgIHJvb3RzLlMxID0ge307XG4gICAgICAgIHJvb3RzLlMxLmgxdzQgPSBbXTtcbiAgICAgICAgcm9vdHMuUzEuaDF3NFswXSA9IEZyLnNxdWFyZShyb290cy5TMC5oMHc4WzBdKTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDE7IGkgPCA0OyBpKyspIHtcbiAgICAgICAgICAgIHJvb3RzLlMxLmgxdzRbaV0gPSBGci5tdWwocm9vdHMuUzEuaDF3NFswXSwgcm9vdHMudzRbaV0pO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gQ29tcHV0ZSBoMiA9IHhpX3NlZWRlcl44XG4gICAgICAgIHJvb3RzLlMyID0ge307XG4gICAgICAgIHJvb3RzLlMyLmgydzMgPSBbXTtcbiAgICAgICAgcm9vdHMuUzIuaDJ3M1swXSA9IEZyLm11bChyb290cy5TMS5oMXc0WzBdLCB4aVNlZWQyKTtcbiAgICAgICAgcm9vdHMuUzIuaDJ3M1sxXSA9IEZyLm11bChyb290cy5TMi5oMnczWzBdLCByb290cy53M1sxXSk7XG4gICAgICAgIHJvb3RzLlMyLmgydzNbMl0gPSBGci5tdWwocm9vdHMuUzIuaDJ3M1swXSwgcm9vdHMudzNbMl0pO1xuXG4gICAgICAgIHJvb3RzLlMyLmgzdzMgPSBbXTtcbiAgICAgICAgLy8gTXVsdGlwbHkgaDMgYnkgdGhpcmQtcm9vdC1vbWVnYSB0byBvYnRhaW4gaF8zXjMgPSB4ac+JXG4gICAgICAgIC8vIFNvLCBoMyA9IHhpX3NlZWRlcl44IM+JXnsxLzN9XG4gICAgICAgIHJvb3RzLlMyLmgzdzNbMF0gPSBGci5tdWwocm9vdHMuUzIuaDJ3M1swXSwgemtleS53cik7XG4gICAgICAgIHJvb3RzLlMyLmgzdzNbMV0gPSBGci5tdWwocm9vdHMuUzIuaDN3M1swXSwgcm9vdHMudzNbMV0pO1xuICAgICAgICByb290cy5TMi5oM3czWzJdID0gRnIubXVsKHJvb3RzLlMyLmgzdzNbMF0sIHJvb3RzLnczWzJdKTtcblxuICAgICAgICAvLyBDb21wdXRlIHhpID0geGlfc2VlZGVyXjI0XG4gICAgICAgIGNoYWxsZW5nZXMueGkgPSBGci5tdWwoRnIuc3F1YXJlKHJvb3RzLlMyLmgydzNbMF0pLCByb290cy5TMi5oMnczWzBdKTtcblxuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhcIsK3wrfCtyBjaGFsbGVuZ2VzLnhpOiBcIiArIEZyLnRvU3RyaW5nKGNoYWxsZW5nZXMueGkpKTtcblxuICAgICAgICAvLyBSZXNlcnZlIG1lbW9yeSBmb3IgUSdzIHBvbHlub21pYWxzXG4gICAgICAgIHBvbHlub21pYWxzLlFMID0gbmV3IFBvbHlub21pYWwobmV3IEJpZ0J1ZmZlcihzRG9tYWluKSwgY3VydmUsIGxvZ2dlcik7XG4gICAgICAgIHBvbHlub21pYWxzLlFSID0gbmV3IFBvbHlub21pYWwobmV3IEJpZ0J1ZmZlcihzRG9tYWluKSwgY3VydmUsIGxvZ2dlcik7XG4gICAgICAgIHBvbHlub21pYWxzLlFNID0gbmV3IFBvbHlub21pYWwobmV3IEJpZ0J1ZmZlcihzRG9tYWluKSwgY3VydmUsIGxvZ2dlcik7XG4gICAgICAgIHBvbHlub21pYWxzLlFPID0gbmV3IFBvbHlub21pYWwobmV3IEJpZ0J1ZmZlcihzRG9tYWluKSwgY3VydmUsIGxvZ2dlcik7XG4gICAgICAgIHBvbHlub21pYWxzLlFDID0gbmV3IFBvbHlub21pYWwobmV3IEJpZ0J1ZmZlcihzRG9tYWluKSwgY3VydmUsIGxvZ2dlcik7XG5cbiAgICAgICAgLy8gUmVhZCBRJ3MgZXZhbHVhdGlvbnMgZnJvbSB6a2V5IGZpbGVcbiAgICAgICAgYXdhaXQgZmRaS2V5LnJlYWRUb0J1ZmZlcihwb2x5bm9taWFscy5RTC5jb2VmLCAwLCBzRG9tYWluLCB6a2V5U2VjdGlvbnNbWktFWV9GRl9RTF9TRUNUSU9OXVswXS5wKTtcbiAgICAgICAgYXdhaXQgZmRaS2V5LnJlYWRUb0J1ZmZlcihwb2x5bm9taWFscy5RUi5jb2VmLCAwLCBzRG9tYWluLCB6a2V5U2VjdGlvbnNbWktFWV9GRl9RUl9TRUNUSU9OXVswXS5wKTtcbiAgICAgICAgYXdhaXQgZmRaS2V5LnJlYWRUb0J1ZmZlcihwb2x5bm9taWFscy5RTS5jb2VmLCAwLCBzRG9tYWluLCB6a2V5U2VjdGlvbnNbWktFWV9GRl9RTV9TRUNUSU9OXVswXS5wKTtcbiAgICAgICAgYXdhaXQgZmRaS2V5LnJlYWRUb0J1ZmZlcihwb2x5bm9taWFscy5RTy5jb2VmLCAwLCBzRG9tYWluLCB6a2V5U2VjdGlvbnNbWktFWV9GRl9RT19TRUNUSU9OXVswXS5wKTtcbiAgICAgICAgYXdhaXQgZmRaS2V5LnJlYWRUb0J1ZmZlcihwb2x5bm9taWFscy5RQy5jb2VmLCAwLCBzRG9tYWluLCB6a2V5U2VjdGlvbnNbWktFWV9GRl9RQ19TRUNUSU9OXVswXS5wKTtcblxuICAgICAgICAvLyBTVEVQIDMuMiAtIENvbXB1dGUgb3BlbmluZyBldmFsdWF0aW9ucyBhbmQgYWRkIHRoZW0gdG8gdGhlIHByb29mICh0aGlyZCBvdXRwdXQgb2YgdGhlIHByb3ZlcilcbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oXCLCt8K3wrcgQ29tcHV0aW5nIGV2YWx1YXRpb25zXCIpO1xuICAgICAgICBwcm9vZi5hZGRFdmFsdWF0aW9uKFwicWxcIiwgcG9seW5vbWlhbHMuUUwuZXZhbHVhdGUoY2hhbGxlbmdlcy54aSkpO1xuICAgICAgICBwcm9vZi5hZGRFdmFsdWF0aW9uKFwicXJcIiwgcG9seW5vbWlhbHMuUVIuZXZhbHVhdGUoY2hhbGxlbmdlcy54aSkpO1xuICAgICAgICBwcm9vZi5hZGRFdmFsdWF0aW9uKFwicW1cIiwgcG9seW5vbWlhbHMuUU0uZXZhbHVhdGUoY2hhbGxlbmdlcy54aSkpO1xuICAgICAgICBwcm9vZi5hZGRFdmFsdWF0aW9uKFwicW9cIiwgcG9seW5vbWlhbHMuUU8uZXZhbHVhdGUoY2hhbGxlbmdlcy54aSkpO1xuICAgICAgICBwcm9vZi5hZGRFdmFsdWF0aW9uKFwicWNcIiwgcG9seW5vbWlhbHMuUUMuZXZhbHVhdGUoY2hhbGxlbmdlcy54aSkpO1xuICAgICAgICBwcm9vZi5hZGRFdmFsdWF0aW9uKFwiczFcIiwgcG9seW5vbWlhbHMuU2lnbWExLmV2YWx1YXRlKGNoYWxsZW5nZXMueGkpKTtcbiAgICAgICAgcHJvb2YuYWRkRXZhbHVhdGlvbihcInMyXCIsIHBvbHlub21pYWxzLlNpZ21hMi5ldmFsdWF0ZShjaGFsbGVuZ2VzLnhpKSk7XG4gICAgICAgIHByb29mLmFkZEV2YWx1YXRpb24oXCJzM1wiLCBwb2x5bm9taWFscy5TaWdtYTMuZXZhbHVhdGUoY2hhbGxlbmdlcy54aSkpO1xuICAgICAgICBwcm9vZi5hZGRFdmFsdWF0aW9uKFwiYVwiLCBwb2x5bm9taWFscy5BLmV2YWx1YXRlKGNoYWxsZW5nZXMueGkpKTtcbiAgICAgICAgcHJvb2YuYWRkRXZhbHVhdGlvbihcImJcIiwgcG9seW5vbWlhbHMuQi5ldmFsdWF0ZShjaGFsbGVuZ2VzLnhpKSk7XG4gICAgICAgIHByb29mLmFkZEV2YWx1YXRpb24oXCJjXCIsIHBvbHlub21pYWxzLkMuZXZhbHVhdGUoY2hhbGxlbmdlcy54aSkpO1xuICAgICAgICBwcm9vZi5hZGRFdmFsdWF0aW9uKFwielwiLCBwb2x5bm9taWFscy5aLmV2YWx1YXRlKGNoYWxsZW5nZXMueGkpKTtcblxuICAgICAgICBjaGFsbGVuZ2VzLnhpdyA9IEZyLm11bChjaGFsbGVuZ2VzLnhpLCBGci53W3prZXkucG93ZXJdKTtcbiAgICAgICAgcHJvb2YuYWRkRXZhbHVhdGlvbihcInp3XCIsIHBvbHlub21pYWxzLlouZXZhbHVhdGUoY2hhbGxlbmdlcy54aXcpKTtcbiAgICAgICAgcHJvb2YuYWRkRXZhbHVhdGlvbihcInQxd1wiLCBwb2x5bm9taWFscy5UMS5ldmFsdWF0ZShjaGFsbGVuZ2VzLnhpdykpO1xuICAgICAgICBwcm9vZi5hZGRFdmFsdWF0aW9uKFwidDJ3XCIsIHBvbHlub21pYWxzLlQyLmV2YWx1YXRlKGNoYWxsZW5nZXMueGl3KSk7XG4gICAgfVxuXG4gICAgYXN5bmMgZnVuY3Rpb24gcm91bmQ0KCkge1xuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhcIj4gQ29tcHV0aW5nIGNoYWxsZW5nZSBhbHBoYVwiKTtcbiAgICAgICAgLy8gU1RFUCA0LjEgLSBDb21wdXRlIGNoYWxsZW5nZSBhbHBoYSDiiIggRlxuICAgICAgICBjb25zdCB0cmFuc2NyaXB0ID0gbmV3IEtlY2NhazI1NlRyYW5zY3JpcHQoY3VydmUpO1xuICAgICAgICB0cmFuc2NyaXB0LmFkZFNjYWxhcihjaGFsbGVuZ2VzLnhpU2VlZCk7XG4gICAgICAgIHRyYW5zY3JpcHQuYWRkU2NhbGFyKHByb29mLmdldEV2YWx1YXRpb24oXCJxbFwiKSk7XG4gICAgICAgIHRyYW5zY3JpcHQuYWRkU2NhbGFyKHByb29mLmdldEV2YWx1YXRpb24oXCJxclwiKSk7XG4gICAgICAgIHRyYW5zY3JpcHQuYWRkU2NhbGFyKHByb29mLmdldEV2YWx1YXRpb24oXCJxbVwiKSk7XG4gICAgICAgIHRyYW5zY3JpcHQuYWRkU2NhbGFyKHByb29mLmdldEV2YWx1YXRpb24oXCJxb1wiKSk7XG4gICAgICAgIHRyYW5zY3JpcHQuYWRkU2NhbGFyKHByb29mLmdldEV2YWx1YXRpb24oXCJxY1wiKSk7XG4gICAgICAgIHRyYW5zY3JpcHQuYWRkU2NhbGFyKHByb29mLmdldEV2YWx1YXRpb24oXCJzMVwiKSk7XG4gICAgICAgIHRyYW5zY3JpcHQuYWRkU2NhbGFyKHByb29mLmdldEV2YWx1YXRpb24oXCJzMlwiKSk7XG4gICAgICAgIHRyYW5zY3JpcHQuYWRkU2NhbGFyKHByb29mLmdldEV2YWx1YXRpb24oXCJzM1wiKSk7XG4gICAgICAgIHRyYW5zY3JpcHQuYWRkU2NhbGFyKHByb29mLmdldEV2YWx1YXRpb24oXCJhXCIpKTtcbiAgICAgICAgdHJhbnNjcmlwdC5hZGRTY2FsYXIocHJvb2YuZ2V0RXZhbHVhdGlvbihcImJcIikpO1xuICAgICAgICB0cmFuc2NyaXB0LmFkZFNjYWxhcihwcm9vZi5nZXRFdmFsdWF0aW9uKFwiY1wiKSk7XG4gICAgICAgIHRyYW5zY3JpcHQuYWRkU2NhbGFyKHByb29mLmdldEV2YWx1YXRpb24oXCJ6XCIpKTtcbiAgICAgICAgdHJhbnNjcmlwdC5hZGRTY2FsYXIocHJvb2YuZ2V0RXZhbHVhdGlvbihcInp3XCIpKTtcbiAgICAgICAgdHJhbnNjcmlwdC5hZGRTY2FsYXIocHJvb2YuZ2V0RXZhbHVhdGlvbihcInQxd1wiKSk7XG4gICAgICAgIHRyYW5zY3JpcHQuYWRkU2NhbGFyKHByb29mLmdldEV2YWx1YXRpb24oXCJ0MndcIikpO1xuICAgICAgICBjaGFsbGVuZ2VzLmFscGhhID0gdHJhbnNjcmlwdC5nZXRDaGFsbGVuZ2UoKTtcbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oXCLCt8K3wrcgY2hhbGxlbmdlcy5hbHBoYTogXCIgKyBGci50b1N0cmluZyhjaGFsbGVuZ2VzLmFscGhhKSk7XG5cbiAgICAgICAgLy8gU1RFUCA0LjIgLSBDb21wdXRlIEYoWClcbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oXCI+IFJlYWRpbmcgQzAgcG9seW5vbWlhbFwiKTtcbiAgICAgICAgcG9seW5vbWlhbHMuQzAgPSBuZXcgUG9seW5vbWlhbChuZXcgQmlnQnVmZmVyKHNEb21haW4gKiA4KSwgY3VydmUsIGxvZ2dlcik7XG4gICAgICAgIGF3YWl0IGZkWktleS5yZWFkVG9CdWZmZXIocG9seW5vbWlhbHMuQzAuY29lZiwgMCwgc0RvbWFpbiAqIDgsIHprZXlTZWN0aW9uc1taS0VZX0ZGX0MwX1NFQ1RJT05dWzBdLnApO1xuXG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKFwiPiBDb21wdXRpbmcgUjAgcG9seW5vbWlhbFwiKTtcbiAgICAgICAgY29tcHV0ZVIwKCk7XG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKFwiPiBDb21wdXRpbmcgUjEgcG9seW5vbWlhbFwiKTtcbiAgICAgICAgY29tcHV0ZVIxKCk7XG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKFwiPiBDb21wdXRpbmcgUjIgcG9seW5vbWlhbFwiKTtcbiAgICAgICAgY29tcHV0ZVIyKCk7XG5cbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oXCI+IENvbXB1dGluZyBGIHBvbHlub21pYWxcIik7XG4gICAgICAgIGF3YWl0IGNvbXB1dGVGKCk7XG5cbiAgICAgICAgLy8gVGhlIGZvdXJ0aCBvdXRwdXQgb2YgdGhlIHByb3ZlciBpcyAoW1cxXV8xKSwgd2hlcmUgVzE6PShmL1pfdCkoeClcbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oXCI+IENvbXB1dGluZyBXMSBtdWx0aSBleHBvbmVudGlhdGlvblwiKTtcbiAgICAgICAgbGV0IGNvbW1pdFcxID0gYXdhaXQgcG9seW5vbWlhbHMuRi5tdWx0aUV4cG9uZW50aWF0aW9uKFBUYXUsIFwiVzFcIik7XG4gICAgICAgIHByb29mLmFkZFBvbHlub21pYWwoXCJXMVwiLCBjb21taXRXMSk7XG5cbiAgICAgICAgcmV0dXJuIDA7XG5cbiAgICAgICAgZnVuY3Rpb24gY29tcHV0ZVIwKCkge1xuICAgICAgICAgICAgLy8gQ09NUFVURSBSMFxuICAgICAgICAgICAgLy8gQ29tcHV0ZSB0aGUgY29lZmZpY2llbnRzIG9mIFIwKFgpIGZyb20gOCBldmFsdWF0aW9ucyB1c2luZyBsYWdyYW5nZSBpbnRlcnBvbGF0aW9uLiBSMChYKSDiiIggRl97PDh9W1hdXG4gICAgICAgICAgICAvLyBXZSBkZWNpZGUgdG8gdXNlIExhZ3JhbmdlIGludGVycG9sYXRpb25zIGJlY2F1c2UgdGhlIFIwIGRlZ3JlZSBpcyB2ZXJ5IHNtYWxsIChkZWcoUjApPT09NyksXG4gICAgICAgICAgICAvLyBhbmQgd2Ugd2VyZSBub3QgYWJsZSB0byBjb21wdXRlIGl0IHVzaW5nIGN1cnJlbnQgaWZmdCBpbXBsZW1lbnRhdGlvbiBiZWNhdXNlIHRoZSBvbWVnYSBhcmUgZGlmZmVyZW50XG4gICAgICAgICAgICBwb2x5bm9taWFscy5SMCA9IFBvbHlub21pYWwubGFncmFuZ2VQb2x5bm9taWFsSW50ZXJwb2xhdGlvbihcbiAgICAgICAgICAgICAgICBbcm9vdHMuUzAuaDB3OFswXSwgcm9vdHMuUzAuaDB3OFsxXSwgcm9vdHMuUzAuaDB3OFsyXSwgcm9vdHMuUzAuaDB3OFszXSxcbiAgICAgICAgICAgICAgICAgICAgcm9vdHMuUzAuaDB3OFs0XSwgcm9vdHMuUzAuaDB3OFs1XSwgcm9vdHMuUzAuaDB3OFs2XSwgcm9vdHMuUzAuaDB3OFs3XV0sXG4gICAgICAgICAgICAgICAgW3BvbHlub21pYWxzLkMwLmV2YWx1YXRlKHJvb3RzLlMwLmgwdzhbMF0pLCBwb2x5bm9taWFscy5DMC5ldmFsdWF0ZShyb290cy5TMC5oMHc4WzFdKSxcbiAgICAgICAgICAgICAgICAgICAgcG9seW5vbWlhbHMuQzAuZXZhbHVhdGUocm9vdHMuUzAuaDB3OFsyXSksIHBvbHlub21pYWxzLkMwLmV2YWx1YXRlKHJvb3RzLlMwLmgwdzhbM10pLFxuICAgICAgICAgICAgICAgICAgICBwb2x5bm9taWFscy5DMC5ldmFsdWF0ZShyb290cy5TMC5oMHc4WzRdKSwgcG9seW5vbWlhbHMuQzAuZXZhbHVhdGUocm9vdHMuUzAuaDB3OFs1XSksXG4gICAgICAgICAgICAgICAgICAgIHBvbHlub21pYWxzLkMwLmV2YWx1YXRlKHJvb3RzLlMwLmgwdzhbNl0pLCBwb2x5bm9taWFscy5DMC5ldmFsdWF0ZShyb290cy5TMC5oMHc4WzddKV0sIGN1cnZlKTtcblxuICAgICAgICAgICAgLy8gQ2hlY2sgdGhlIGRlZ3JlZSBvZiByMChYKSA8IDhcbiAgICAgICAgICAgIGlmIChwb2x5bm9taWFscy5SMC5kZWdyZWUoKSA+IDcpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJSMCBQb2x5bm9taWFsIGlzIG5vdCB3ZWxsIGNhbGN1bGF0ZWRcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBmdW5jdGlvbiBjb21wdXRlUjEoKSB7XG4gICAgICAgICAgICAvLyBDT01QVVRFIFIxXG4gICAgICAgICAgICAvLyBDb21wdXRlIHRoZSBjb2VmZmljaWVudHMgb2YgUjEoWCkgZnJvbSA0IGV2YWx1YXRpb25zIHVzaW5nIGxhZ3JhbmdlIGludGVycG9sYXRpb24uIFIxKFgpIOKIiCBGX3s8NH1bWF1cbiAgICAgICAgICAgIC8vIFdlIGRlY2lkZSB0byB1c2UgTGFncmFuZ2UgaW50ZXJwb2xhdGlvbnMgYmVjYXVzZSB0aGUgUjEgZGVncmVlIGlzIHZlcnkgc21hbGwgKGRlZyhSMSk9PT0zKSxcbiAgICAgICAgICAgIC8vIGFuZCB3ZSB3ZXJlIG5vdCBhYmxlIHRvIGNvbXB1dGUgaXQgdXNpbmcgY3VycmVudCBpZmZ0IGltcGxlbWVudGF0aW9uIGJlY2F1c2UgdGhlIG9tZWdhIGFyZSBkaWZmZXJlbnRcbiAgICAgICAgICAgIHBvbHlub21pYWxzLlIxID0gUG9seW5vbWlhbC5sYWdyYW5nZVBvbHlub21pYWxJbnRlcnBvbGF0aW9uKFxuICAgICAgICAgICAgICAgIFtyb290cy5TMS5oMXc0WzBdLCByb290cy5TMS5oMXc0WzFdLCByb290cy5TMS5oMXc0WzJdLCByb290cy5TMS5oMXc0WzNdXSxcbiAgICAgICAgICAgICAgICBbcG9seW5vbWlhbHMuQzEuZXZhbHVhdGUocm9vdHMuUzEuaDF3NFswXSksIHBvbHlub21pYWxzLkMxLmV2YWx1YXRlKHJvb3RzLlMxLmgxdzRbMV0pLFxuICAgICAgICAgICAgICAgICAgICBwb2x5bm9taWFscy5DMS5ldmFsdWF0ZShyb290cy5TMS5oMXc0WzJdKSwgcG9seW5vbWlhbHMuQzEuZXZhbHVhdGUocm9vdHMuUzEuaDF3NFszXSldLCBjdXJ2ZSk7XG5cbiAgICAgICAgICAgIC8vIENoZWNrIHRoZSBkZWdyZWUgb2YgcjEoWCkgPCA0XG4gICAgICAgICAgICBpZiAocG9seW5vbWlhbHMuUjEuZGVncmVlKCkgPiAzKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiUjEgUG9seW5vbWlhbCBpcyBub3Qgd2VsbCBjYWxjdWxhdGVkXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgZnVuY3Rpb24gY29tcHV0ZVIyKCkge1xuICAgICAgICAgICAgLy8gQ09NUFVURSBSMlxuICAgICAgICAgICAgLy8gQ29tcHV0ZSB0aGUgY29lZmZpY2llbnRzIG9mIHIyKFgpIGZyb20gNiBldmFsdWF0aW9ucyB1c2luZyBsYWdyYW5nZSBpbnRlcnBvbGF0aW9uLiByMihYKSDiiIggRl97PDZ9W1hdXG4gICAgICAgICAgICAvLyBXZSBkZWNpZGUgdG8gdXNlIExhZ3JhbmdlIGludGVycG9sYXRpb25zIGJlY2F1c2UgdGhlIFIyLmRlZ3JlZSBpcyB2ZXJ5IHNtYWxsIChkZWcoUjIpPT09NSksXG4gICAgICAgICAgICAvLyBhbmQgd2Ugd2VyZSBub3QgYWJsZSB0byBjb21wdXRlIGl0IHVzaW5nIGN1cnJlbnQgaWZmdCBpbXBsZW1lbnRhdGlvbiBiZWNhdXNlIHRoZSBvbWVnYSBhcmUgZGlmZmVyZW50XG4gICAgICAgICAgICBwb2x5bm9taWFscy5SMiA9IFBvbHlub21pYWwubGFncmFuZ2VQb2x5bm9taWFsSW50ZXJwb2xhdGlvbihcbiAgICAgICAgICAgICAgICBbcm9vdHMuUzIuaDJ3M1swXSwgcm9vdHMuUzIuaDJ3M1sxXSwgcm9vdHMuUzIuaDJ3M1syXSxcbiAgICAgICAgICAgICAgICAgICAgcm9vdHMuUzIuaDN3M1swXSwgcm9vdHMuUzIuaDN3M1sxXSwgcm9vdHMuUzIuaDN3M1syXV0sXG4gICAgICAgICAgICAgICAgW3BvbHlub21pYWxzLkMyLmV2YWx1YXRlKHJvb3RzLlMyLmgydzNbMF0pLCBwb2x5bm9taWFscy5DMi5ldmFsdWF0ZShyb290cy5TMi5oMnczWzFdKSxcbiAgICAgICAgICAgICAgICAgICAgcG9seW5vbWlhbHMuQzIuZXZhbHVhdGUocm9vdHMuUzIuaDJ3M1syXSksIHBvbHlub21pYWxzLkMyLmV2YWx1YXRlKHJvb3RzLlMyLmgzdzNbMF0pLFxuICAgICAgICAgICAgICAgICAgICBwb2x5bm9taWFscy5DMi5ldmFsdWF0ZShyb290cy5TMi5oM3czWzFdKSwgcG9seW5vbWlhbHMuQzIuZXZhbHVhdGUocm9vdHMuUzIuaDN3M1syXSldLCBjdXJ2ZSk7XG5cbiAgICAgICAgICAgIC8vIENoZWNrIHRoZSBkZWdyZWUgb2YgcjIoWCkgPCA2XG4gICAgICAgICAgICBpZiAocG9seW5vbWlhbHMuUjIuZGVncmVlKCkgPiA1KSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiUjIgUG9seW5vbWlhbCBpcyBub3Qgd2VsbCBjYWxjdWxhdGVkXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgYXN5bmMgZnVuY3Rpb24gY29tcHV0ZUYoKSB7XG4gICAgICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhcIsK3wrfCtyBDb21wdXRpbmcgRiBwb2x5bm9taWFsXCIpO1xuXG4gICAgICAgICAgICAvLyBDT01QVVRFIEYoWClcbiAgICAgICAgICAgIHBvbHlub21pYWxzLkYgPSBQb2x5bm9taWFsLmZyb21Qb2x5bm9taWFsKHBvbHlub21pYWxzLkMwLCBjdXJ2ZSwgbG9nZ2VyKTtcbiAgICAgICAgICAgIHBvbHlub21pYWxzLkYuc3ViKHBvbHlub21pYWxzLlIwKTtcbiAgICAgICAgICAgIHBvbHlub21pYWxzLkYuZGl2QnlaZXJvZmllcig4LCBjaGFsbGVuZ2VzLnhpKTtcblxuICAgICAgICAgICAgbGV0IGYyID0gUG9seW5vbWlhbC5mcm9tUG9seW5vbWlhbChwb2x5bm9taWFscy5DMSwgY3VydmUsIGxvZ2dlcik7XG4gICAgICAgICAgICBmMi5zdWIocG9seW5vbWlhbHMuUjEpO1xuICAgICAgICAgICAgZjIubXVsU2NhbGFyKGNoYWxsZW5nZXMuYWxwaGEpO1xuICAgICAgICAgICAgZjIuZGl2QnlaZXJvZmllcig0LCBjaGFsbGVuZ2VzLnhpKTtcblxuICAgICAgICAgICAgbGV0IGYzID0gUG9seW5vbWlhbC5mcm9tUG9seW5vbWlhbChwb2x5bm9taWFscy5DMiwgY3VydmUsIGxvZ2dlcik7XG4gICAgICAgICAgICBmMy5zdWIocG9seW5vbWlhbHMuUjIpO1xuICAgICAgICAgICAgZjMubXVsU2NhbGFyKEZyLnNxdWFyZShjaGFsbGVuZ2VzLmFscGhhKSk7XG4gICAgICAgICAgICBmMy5kaXZCeVplcm9maWVyKDMsIGNoYWxsZW5nZXMueGkpO1xuICAgICAgICAgICAgZjMuZGl2QnlaZXJvZmllcigzLCBjaGFsbGVuZ2VzLnhpdyk7XG5cbiAgICAgICAgICAgIHBvbHlub21pYWxzLkYuYWRkKGYyKTtcbiAgICAgICAgICAgIHBvbHlub21pYWxzLkYuYWRkKGYzKTtcblxuICAgICAgICAgICAgaWYgKHBvbHlub21pYWxzLkYuZGVncmVlKCkgPj0gOSAqIHprZXkuZG9tYWluU2l6ZSAtIDYpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJGIFBvbHlub21pYWwgaXMgbm90IHdlbGwgY2FsY3VsYXRlZFwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIGFzeW5jIGZ1bmN0aW9uIHJvdW5kNSgpIHtcbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oXCI+IENvbXB1dGluZyBjaGFsbGVuZ2UgeVwiKTtcblxuICAgICAgICAvLyBTVEVQIDUuMSAtIENvbXB1dGUgcmFuZG9tIGV2YWx1YXRpb24gcG9pbnQgeSDiiIggRlxuICAgICAgICBjb25zdCB0cmFuc2NyaXB0ID0gbmV3IEtlY2NhazI1NlRyYW5zY3JpcHQoY3VydmUpO1xuICAgICAgICB0cmFuc2NyaXB0LmFkZFNjYWxhcihjaGFsbGVuZ2VzLmFscGhhKTtcbiAgICAgICAgdHJhbnNjcmlwdC5hZGRQb2xDb21taXRtZW50KHByb29mLmdldFBvbHlub21pYWwoXCJXMVwiKSk7XG5cbiAgICAgICAgY2hhbGxlbmdlcy55ID0gdHJhbnNjcmlwdC5nZXRDaGFsbGVuZ2UoKTtcbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oXCLCt8K3wrcgY2hhbGxlbmdlcy55OiBcIiArIEZyLnRvU3RyaW5nKGNoYWxsZW5nZXMueSkpO1xuXG4gICAgICAgIC8vIFNURVAgNS4yIC0gQ29tcHV0ZSBMKFgpXG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKFwiPiBDb21wdXRpbmcgTCBwb2x5bm9taWFsXCIpO1xuICAgICAgICBhd2FpdCBjb21wdXRlTCgpO1xuXG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKFwiPiBDb21wdXRpbmcgWlRTMiBwb2x5bm9taWFsXCIpO1xuICAgICAgICBhd2FpdCBjb21wdXRlWlRTMigpO1xuXG4gICAgICAgIGxldCBaVFMyWSA9IHBvbHlub21pYWxzLlpUUzIuZXZhbHVhdGUoY2hhbGxlbmdlcy55KTtcbiAgICAgICAgWlRTMlkgPSBGci5pbnYoWlRTMlkpO1xuICAgICAgICBwb2x5bm9taWFscy5MLm11bFNjYWxhcihaVFMyWSk7XG5cbiAgICAgICAgY29uc3QgcG9sRGl2aWRlbmQgPSBQb2x5bm9taWFsLmZyb21Db2VmZmljaWVudHNBcnJheShbRnIubmVnKGNoYWxsZW5nZXMueSksIEZyLm9uZV0sIGN1cnZlKTtcbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oXCI+IENvbXB1dGluZyBXJyA9IEwgLyBaVFMyIHBvbHlub21pYWxcIik7XG4gICAgICAgIGNvbnN0IHBvbFJlbWFpbmRlciA9IHBvbHlub21pYWxzLkwuZGl2QnkocG9sRGl2aWRlbmQpO1xuXG4gICAgICAgIC8vQ2hlY2sgcG9sUmVtaW5kZXIgZGVncmVlIGlzIGVxdWFsIHRvIHplcm9cbiAgICAgICAgaWYgKHBvbFJlbWFpbmRlci5kZWdyZWUoKSA+IDApIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgRGVncmVlIG9mIEwoWCkvKFpUUzIoeSkoWC15KSkgcmVtYWluZGVyIGlzICR7cG9sUmVtYWluZGVyLmRlZ3JlZSgpfSBhbmQgc2hvdWxkIGJlIDBgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChwb2x5bm9taWFscy5MLmRlZ3JlZSgpID49IDkgKiB6a2V5LmRvbWFpblNpemUgLSAxKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJEZWdyZWUgb2YgTChYKS8oWlRTMih5KShYLXkpKSBpcyBub3QgY29ycmVjdFwiKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFRoZSBmaWZ0aCBvdXRwdXQgb2YgdGhlIHByb3ZlciBpcyAoW1cyXV8xKSwgd2hlcmUgVzI6PShmL1pfdCkoeClcbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oXCI+IENvbXB1dGluZyBXJyBtdWx0aSBleHBvbmVudGlhdGlvblwiKTtcbiAgICAgICAgbGV0IGNvbW1pdFcyID0gYXdhaXQgcG9seW5vbWlhbHMuTC5tdWx0aUV4cG9uZW50aWF0aW9uKFBUYXUsIFwiVzJcIik7XG4gICAgICAgIHByb29mLmFkZFBvbHlub21pYWwoXCJXMlwiLCBjb21taXRXMik7XG5cbiAgICAgICAgcmV0dXJuIDA7XG5cbiAgICAgICAgYXN5bmMgZnVuY3Rpb24gY29tcHV0ZUwoKSB7XG4gICAgICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhcIsK3wrfCtyBDb21wdXRpbmcgTCBwb2x5bm9taWFsXCIpO1xuXG4gICAgICAgICAgICBjb25zdCBldmFsUjBZID0gcG9seW5vbWlhbHMuUjAuZXZhbHVhdGUoY2hhbGxlbmdlcy55KTtcbiAgICAgICAgICAgIGNvbnN0IGV2YWxSMVkgPSBwb2x5bm9taWFscy5SMS5ldmFsdWF0ZShjaGFsbGVuZ2VzLnkpO1xuICAgICAgICAgICAgY29uc3QgZXZhbFIyWSA9IHBvbHlub21pYWxzLlIyLmV2YWx1YXRlKGNoYWxsZW5nZXMueSk7XG5cbiAgICAgICAgICAgIGxldCBtdWxMMCA9IEZyLnN1YihjaGFsbGVuZ2VzLnksIHJvb3RzLlMwLmgwdzhbMF0pO1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDE7IGkgPCA4OyBpKyspIHtcbiAgICAgICAgICAgICAgICBtdWxMMCA9IEZyLm11bChtdWxMMCwgRnIuc3ViKGNoYWxsZW5nZXMueSwgcm9vdHMuUzAuaDB3OFtpXSkpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBsZXQgbXVsTDEgPSBGci5zdWIoY2hhbGxlbmdlcy55LCByb290cy5TMS5oMXc0WzBdKTtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAxOyBpIDwgNDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgbXVsTDEgPSBGci5tdWwobXVsTDEsIEZyLnN1YihjaGFsbGVuZ2VzLnksIHJvb3RzLlMxLmgxdzRbaV0pKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgbGV0IG11bEwyID0gRnIuc3ViKGNoYWxsZW5nZXMueSwgcm9vdHMuUzIuaDJ3M1swXSk7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMTsgaSA8IDM7IGkrKykge1xuICAgICAgICAgICAgICAgIG11bEwyID0gRnIubXVsKG11bEwyLCBGci5zdWIoY2hhbGxlbmdlcy55LCByb290cy5TMi5oMnczW2ldKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IDM7IGkrKykge1xuICAgICAgICAgICAgICAgIG11bEwyID0gRnIubXVsKG11bEwyLCBGci5zdWIoY2hhbGxlbmdlcy55LCByb290cy5TMi5oM3czW2ldKSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGxldCBwcmVMMCA9IEZyLm11bChtdWxMMSwgbXVsTDIpO1xuICAgICAgICAgICAgbGV0IHByZUwxID0gRnIubXVsKGNoYWxsZW5nZXMuYWxwaGEsIEZyLm11bChtdWxMMCwgbXVsTDIpKTtcbiAgICAgICAgICAgIGxldCBwcmVMMiA9IEZyLm11bChGci5zcXVhcmUoY2hhbGxlbmdlcy5hbHBoYSksIEZyLm11bChtdWxMMCwgbXVsTDEpKTtcblxuICAgICAgICAgICAgdG9JbnZlcnNlW1wiZGVuSDFcIl0gPSBtdWxMMTtcbiAgICAgICAgICAgIHRvSW52ZXJzZVtcImRlbkgyXCJdID0gbXVsTDI7XG5cbiAgICAgICAgICAgIC8vIENPTVBVVEUgTChYKVxuICAgICAgICAgICAgcG9seW5vbWlhbHMuTCA9IFBvbHlub21pYWwuZnJvbVBvbHlub21pYWwocG9seW5vbWlhbHMuQzAsIGN1cnZlLCBsb2dnZXIpO1xuICAgICAgICAgICAgcG9seW5vbWlhbHMuTC5zdWJTY2FsYXIoZXZhbFIwWSk7XG4gICAgICAgICAgICBwb2x5bm9taWFscy5MLm11bFNjYWxhcihwcmVMMCk7XG5cbiAgICAgICAgICAgIGxldCBsMiA9IFBvbHlub21pYWwuZnJvbVBvbHlub21pYWwocG9seW5vbWlhbHMuQzEsIGN1cnZlLCBsb2dnZXIpO1xuICAgICAgICAgICAgbDIuc3ViU2NhbGFyKGV2YWxSMVkpO1xuICAgICAgICAgICAgbDIubXVsU2NhbGFyKHByZUwxKTtcblxuICAgICAgICAgICAgbGV0IGwzID0gUG9seW5vbWlhbC5mcm9tUG9seW5vbWlhbChwb2x5bm9taWFscy5DMiwgY3VydmUsIGxvZ2dlcik7XG4gICAgICAgICAgICBsMy5zdWJTY2FsYXIoZXZhbFIyWSk7XG4gICAgICAgICAgICBsMy5tdWxTY2FsYXIocHJlTDIpO1xuXG4gICAgICAgICAgICBwb2x5bm9taWFscy5MLmFkZChsMik7XG4gICAgICAgICAgICBwb2x5bm9taWFscy5MLmFkZChsMyk7XG5cbiAgICAgICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKFwiPiBDb21wdXRpbmcgWlQgcG9seW5vbWlhbFwiKTtcbiAgICAgICAgICAgIGF3YWl0IGNvbXB1dGVaVCgpO1xuXG4gICAgICAgICAgICBjb25zdCBldmFsWlRZID0gcG9seW5vbWlhbHMuWlQuZXZhbHVhdGUoY2hhbGxlbmdlcy55KTtcbiAgICAgICAgICAgIHBvbHlub21pYWxzLkYubXVsU2NhbGFyKGV2YWxaVFkpO1xuICAgICAgICAgICAgcG9seW5vbWlhbHMuTC5zdWIocG9seW5vbWlhbHMuRik7XG5cbiAgICAgICAgICAgIC8vIENoZWNrIGRlZ3JlZVxuICAgICAgICAgICAgaWYgKHBvbHlub21pYWxzLkwuZGVncmVlKCkgPj0gOSAqIHprZXkuZG9tYWluU2l6ZSkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkwgUG9seW5vbWlhbCBpcyBub3Qgd2VsbCBjYWxjdWxhdGVkXCIpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBkZWxldGUgYnVmZmVycy5MO1xuICAgICAgICB9XG5cbiAgICAgICAgYXN5bmMgZnVuY3Rpb24gY29tcHV0ZVpUKCkge1xuICAgICAgICAgICAgcG9seW5vbWlhbHMuWlQgPSBQb2x5bm9taWFsLnplcm9maWVyUG9seW5vbWlhbChcbiAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgIHJvb3RzLlMwLmgwdzhbMF0sIHJvb3RzLlMwLmgwdzhbMV0sIHJvb3RzLlMwLmgwdzhbMl0sIHJvb3RzLlMwLmgwdzhbM10sXG4gICAgICAgICAgICAgICAgICAgIHJvb3RzLlMwLmgwdzhbNF0sIHJvb3RzLlMwLmgwdzhbNV0sIHJvb3RzLlMwLmgwdzhbNl0sIHJvb3RzLlMwLmgwdzhbN10sXG4gICAgICAgICAgICAgICAgICAgIHJvb3RzLlMxLmgxdzRbMF0sIHJvb3RzLlMxLmgxdzRbMV0sIHJvb3RzLlMxLmgxdzRbMl0sIHJvb3RzLlMxLmgxdzRbM10sXG4gICAgICAgICAgICAgICAgICAgIHJvb3RzLlMyLmgydzNbMF0sIHJvb3RzLlMyLmgydzNbMV0sIHJvb3RzLlMyLmgydzNbMl0sXG4gICAgICAgICAgICAgICAgICAgIHJvb3RzLlMyLmgzdzNbMF0sIHJvb3RzLlMyLmgzdzNbMV0sIHJvb3RzLlMyLmgzdzNbMl1dLCBjdXJ2ZSk7XG4gICAgICAgIH1cblxuICAgICAgICBhc3luYyBmdW5jdGlvbiBjb21wdXRlWlRTMigpIHtcbiAgICAgICAgICAgIHBvbHlub21pYWxzLlpUUzIgPSBQb2x5bm9taWFsLnplcm9maWVyUG9seW5vbWlhbChcbiAgICAgICAgICAgICAgICBbcm9vdHMuUzEuaDF3NFswXSwgcm9vdHMuUzEuaDF3NFsxXSwgcm9vdHMuUzEuaDF3NFsyXSwgcm9vdHMuUzEuaDF3NFszXSxcbiAgICAgICAgICAgICAgICAgICAgcm9vdHMuUzIuaDJ3M1swXSwgcm9vdHMuUzIuaDJ3M1sxXSwgcm9vdHMuUzIuaDJ3M1syXSxcbiAgICAgICAgICAgICAgICAgICAgcm9vdHMuUzIuaDN3M1swXSwgcm9vdHMuUzIuaDN3M1sxXSwgcm9vdHMuUzIuaDN3M1syXV0sIGN1cnZlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldE1vbnRnb21lcnlCYXRjaGVkSW52ZXJzZSgpIHtcbiAgICAgICAgLy8gICDCtyBkZW5vbWluYXRvciBuZWVkZWQgaW4gc3RlcCA4IGFuZCA5IG9mIHRoZSB2ZXJpZmllciB0byBtdWx0aXBseSBieSAxL1pfSCh4aSlcbiAgICAgICAgbGV0IHhpTiA9IGNoYWxsZW5nZXMueGk7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgemtleS5wb3dlcjsgaSsrKSB7XG4gICAgICAgICAgICB4aU4gPSBGci5zcXVhcmUoeGlOKTtcbiAgICAgICAgfVxuICAgICAgICB0b0ludmVyc2VbXCJ6aFwiXSA9IEZyLnN1Yih4aU4sIEZyLm9uZSk7XG5cbiAgICAgICAgLy8gICDCtyBkZW5vbWluYXRvciBuZWVkZWQgaW4gc3RlcCAxMCBhbmQgMTEgb2YgdGhlIHZlcmlmaWVyXG4gICAgICAgIC8vICAgICB0b0ludmVyc2UuZGVuSDEgJiB0b0ludmVyc2UuZGVuSDIgIC0+IENvbXB1dGVkIGluIHJvdW5kNSwgY29tcHV0ZUwoKVxuXG4gICAgICAgIC8vICAgwrcgZGVub21pbmF0b3IgbmVlZGVkIGluIHRoZSB2ZXJpZmllciB3aGVuIGNvbXB1dGluZyBMX2lee1MwfShYKSwgTF9pXntTMX0oWCkgYW5kIExfaV57UzJ9KFgpXG4gICAgICAgIGNvbXB1dGVMaVMwKHRvSW52ZXJzZSwgcm9vdHMuUzAuaDB3OCwgY2hhbGxlbmdlcy55LCBjdXJ2ZSk7XG5cbiAgICAgICAgY29tcHV0ZUxpUzEodG9JbnZlcnNlLCByb290cy5TMS5oMXc0LCBjaGFsbGVuZ2VzLnksIGN1cnZlKTtcblxuICAgICAgICBjb21wdXRlTGlTMih0b0ludmVyc2UsIHJvb3RzLlMyLmgydzMsIHJvb3RzLlMyLmgzdzMsIGNoYWxsZW5nZXMueSwgY2hhbGxlbmdlcy54aSwgY2hhbGxlbmdlcy54aXcsIGN1cnZlKTtcblxuICAgICAgICAvLyAgIMK3IExfaSBpPTEgdG8gbnVtIHB1YmxpYyBpbnB1dHMsIG5lZWRlZCBpbiBzdGVwIDYgYW5kIDcgb2YgdGhlIHZlcmlmaWVyIHRvIGNvbXB1dGUgTF8xKHhpKSBhbmQgUEkoeGkpXG4gICAgICAgIGNvbnN0IHNpemUgPSBNYXRoLm1heCgxLCB6a2V5Lm5QdWJsaWMpO1xuXG4gICAgICAgIGxldCB3ID0gRnIub25lO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNpemU7IGkrKykge1xuICAgICAgICAgICAgdG9JbnZlcnNlW1wiTGlfXCIgKyAoaSArIDEpXSA9IEZyLm11bChGci5lKHprZXkuZG9tYWluU2l6ZSksIEZyLnN1YihjaGFsbGVuZ2VzLnhpLCB3KSk7XG4gICAgICAgICAgICB3ID0gRnIubXVsKHcsIEZyLndbemtleS5wb3dlcl0pO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IG11bEFjY3VtdWxhdG9yID0gRnIub25lO1xuICAgICAgICBmb3IgKGNvbnN0IGVsZW1lbnQgb2YgT2JqZWN0LnZhbHVlcyh0b0ludmVyc2UpKSB7XG4gICAgICAgICAgICBpZihBcnJheS5pc0FycmF5KGVsZW1lbnQpKSB7XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBzdWJFbGVtZW50IG9mIGVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgbXVsQWNjdW11bGF0b3IgPSBGci5tdWwobXVsQWNjdW11bGF0b3IsIHN1YkVsZW1lbnQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgbXVsQWNjdW11bGF0b3IgPSBGci5tdWwobXVsQWNjdW11bGF0b3IsIGVsZW1lbnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBGci5pbnYobXVsQWNjdW11bGF0b3IpO1xuXG4gICAgICAgIFxuICAgICAgICBmdW5jdGlvbiBjb21wdXRlTGlTMCh0b0ludmVyc2UsIHJvb3RzLCB4LCBjdXJ2ZSkge1xuICAgICAgICAgICAgY29uc3QgRnIgPSBjdXJ2ZS5GcjtcbiAgICAgICAgICAgIGNvbnN0IGxlbiA9IHJvb3RzLmxlbmd0aDtcbiAgICAgICAgXG4gICAgICAgICAgICBjb25zdCBkZW4xID0gRnIubXVsKEZyLmUobGVuKSwgRnIuZXhwKHJvb3RzWzBdLCBsZW4gLSAyKSk7XG4gICAgICAgIFxuICAgICAgICAgICAgY29uc3QgTGkgPSBbXTtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgICAgICAgICAgICBjb25zdCBkZW4yID0gcm9vdHNbKChsZW4gLSAxKSAqIGkpICUgbGVuXTtcbiAgICAgICAgICAgICAgICBjb25zdCBkZW4zID0gRnIuc3ViKHgsIHJvb3RzW2ldKTtcbiAgICAgICAgXG4gICAgICAgICAgICAgICAgdG9JbnZlcnNlW1tcIkxpUzBfXCIgKyAoaSArIDEpXV0gPSBGci5tdWwoRnIubXVsKGRlbjEsIGRlbjIpLCBkZW4zKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgXG4gICAgICAgICAgICByZXR1cm4gTGk7XG4gICAgICAgIH1cblxuICAgICAgICBmdW5jdGlvbiBjb21wdXRlTGlTMSh0b0ludmVyc2UsIHJvb3RzLCB4LCBjdXJ2ZSkge1xuICAgICAgICAgICAgY29uc3QgRnIgPSBjdXJ2ZS5GcjtcbiAgICAgICAgICAgIGNvbnN0IGxlbiA9IHJvb3RzLmxlbmd0aDtcbiAgICAgICAgXG4gICAgICAgICAgICBjb25zdCBkZW4xID0gRnIubXVsKEZyLmUobGVuKSwgRnIuZXhwKHJvb3RzWzBdLCBsZW4gLSAyKSk7XG4gICAgICAgIFxuICAgICAgICAgICAgY29uc3QgTGkgPSBbXTtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgICAgICAgICAgICBjb25zdCBkZW4yID0gcm9vdHNbKChsZW4gLSAxKSAqIGkpICUgbGVuXTtcbiAgICAgICAgICAgICAgICBjb25zdCBkZW4zID0gRnIuc3ViKHgsIHJvb3RzW2ldKTtcbiAgICAgICAgXG4gICAgICAgICAgICAgICAgdG9JbnZlcnNlW1tcIkxpUzFfXCIgKyAoaSArIDEpXV0gPSBGci5tdWwoRnIubXVsKGRlbjEsIGRlbjIpLCBkZW4zKTtcblxuICAgICAgICAgICAgfVxuICAgICAgICBcbiAgICAgICAgICAgIHJldHVybiBMaTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZ1bmN0aW9uIGNvbXB1dGVMaVMyKHRvSW52ZXJzZSwgUzIsIFMycCwgdmFsdWUsIHhpLCB4aXcsIGN1cnZlKSB7XG4gICAgICAgICAgICBjb25zdCBGciA9IGN1cnZlLkZyO1xuICAgICAgICBcbiAgICAgICAgICAgIGNvbnN0IExpID0gW107XG4gICAgICAgIFxuICAgICAgICAgICAgY29uc3QgXzNoMiA9IEZyLm11bChGci5lKDMpLCBTMlswXSk7XG4gICAgICAgICAgICBjb25zdCB4aXN1YnhpdyA9IEZyLnN1Yih4aSwgeGl3KTtcbiAgICAgICAgICAgIGxldCBkZW4xID0gRnIubXVsKF8zaDIsIHhpc3VieGl3KTtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMzsgaSsrKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZGVuMiA9IFMyWzIgKiBpICUgM107XG4gICAgICAgICAgICAgICAgY29uc3QgZGVuMyA9IEZyLnN1Yih2YWx1ZSwgUzJbaV0pO1xuICAgICAgICBcbiAgICAgICAgICAgICAgICB0b0ludmVyc2VbW1wiTGlTMl9cIiArIChpICsgMSldXSA9IEZyLm11bChkZW4xLEZyLm11bChkZW4yLCBkZW4zKSk7XG4gICAgICAgICAgICAgICAgXG4gICAgICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICAgICAgY29uc3QgXzNoMyA9IEZyLm11bChGci5lKDMpLCBTMnBbMF0pO1xuICAgICAgICAgICAgY29uc3QgeGl3c3VieGkgPSBGci5zdWIoeGl3LCB4aSk7XG4gICAgICAgICAgICBkZW4xID0gRnIubXVsKF8zaDMsIHhpd3N1YnhpKTtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMzsgaSsrKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZGVuMiA9IFMycFsyICogaSAlIDNdO1xuICAgICAgICAgICAgICAgIGNvbnN0IGRlbjMgPSBGci5zdWIodmFsdWUsIFMycFtpXSk7XG4gICAgICAgIFxuICAgICAgICAgICAgICAgIHRvSW52ZXJzZVtbXCJMaVMyX1wiICsgKGkgKyAxICsgMyldXSA9IEZyLm11bChkZW4xLEZyLm11bChkZW4yLCBkZW4zKSk7ICAgIFxuICAgICAgICAgICAgfVxuICAgICAgICBcbiAgICAgICAgICAgIHJldHVybiBMaTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIi8qXG4gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2Ygc25hcmtqcy5cblxuICAgIHNuYXJranMgaXMgYSBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3JcbiAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlXG4gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pXG4gICAgYW55IGxhdGVyIHZlcnNpb24uXG5cbiAgICBzbmFya2pzIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZXG4gICAgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yXG4gICAgbW9yZSBkZXRhaWxzLlxuXG4gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcgd2l0aFxuICAgIHNuYXJranMuIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXG4qL1xuXG5pbXBvcnQgZmZsb25rUHJvdmUgZnJvbSBcIi4vZmZsb25rX3Byb3ZlLmpzXCI7XG5pbXBvcnQgd3Ruc19jYWxjdWxhdGUgZnJvbSBcIi4vd3Ruc19jYWxjdWxhdGUuanNcIjtcbmltcG9ydCB7dXRpbHN9IGZyb20gXCJmZmphdmFzY3JpcHRcIjtcbmNvbnN0IHt1bnN0cmluZ2lmeUJpZ0ludHN9ID0gdXRpbHM7XG5cbmV4cG9ydCBkZWZhdWx0IGFzeW5jIGZ1bmN0aW9uIGZmbG9ua0Z1bGxQcm92ZShfaW5wdXQsIHdhc21GaWxlbmFtZSwgemtleUZpbGVuYW1lLCBsb2dnZXIsIHd0bnNDYWxjT3B0aW9ucywgcHJvdmVyT3B0aW9ucykge1xuICAgIGNvbnN0IGlucHV0ID0gdW5zdHJpbmdpZnlCaWdJbnRzKF9pbnB1dCk7XG5cbiAgICBjb25zdCB3dG5zPSB7dHlwZTogXCJtZW1cIn07XG5cbiAgICAvLyBDb21wdXRlIHRoZSB3aXRuZXNzXG4gICAgYXdhaXQgd3Ruc19jYWxjdWxhdGUoaW5wdXQsIHdhc21GaWxlbmFtZSwgd3Rucywgd3Ruc0NhbGNPcHRpb25zKTtcblxuICAgIC8vIENvbXB1dGUgdGhlIHByb29mXG4gICAgcmV0dXJuIGF3YWl0IGZmbG9ua1Byb3ZlKHprZXlGaWxlbmFtZSwgd3RucywgbG9nZ2VyLCBwcm92ZXJPcHRpb25zKTtcbn0iLCIvKlxuICAgIENvcHlyaWdodCAyMDIyIGlkZW4zIGFzc29jaWF0aW9uLlxuXG4gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2Ygc25hcmtqcy5cblxuICAgIHNuYXJranMgaXMgYSBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3JcbiAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlXG4gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pXG4gICAgYW55IGxhdGVyIHZlcnNpb24uXG5cbiAgICBzbmFya2pzIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZXG4gICAgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yXG4gICAgbW9yZSBkZXRhaWxzLlxuXG4gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcgd2l0aFxuICAgIHNuYXJranMuIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXG4qL1xuXG5pbXBvcnQgKiBhcyBjdXJ2ZXMgZnJvbSBcIi4vY3VydmVzLmpzXCI7XG5pbXBvcnQgeyBCaWdCdWZmZXIsIHV0aWxzIH0gZnJvbSBcImZmamF2YXNjcmlwdFwiO1xuaW1wb3J0IHsgUHJvb2YgfSBmcm9tIFwiLi9wcm9vZi5qc1wiO1xuaW1wb3J0IHsgS2VjY2FrMjU2VHJhbnNjcmlwdCB9IGZyb20gXCIuL0tlY2NhazI1NlRyYW5zY3JpcHQuanNcIjtcbmltcG9ydCB7IFNjYWxhciB9IGZyb20gXCJmZmphdmFzY3JpcHRcIjtcblxuY29uc3QgeyB1bnN0cmluZ2lmeUJpZ0ludHMgfSA9IHV0aWxzO1xuXG5leHBvcnQgZGVmYXVsdCBhc3luYyBmdW5jdGlvbiBmZmxvbmtWZXJpZnkoX3ZrX3ZlcmlmaWVyLCBfcHVibGljU2lnbmFscywgX3Byb29mLCBsb2dnZXIpIHtcbiAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhcIkZGTE9OSyBWRVJJRklFUiBTVEFSVEVEXCIpO1xuXG4gICAgX3ZrX3ZlcmlmaWVyID0gdW5zdHJpbmdpZnlCaWdJbnRzKF92a192ZXJpZmllcik7XG4gICAgX3Byb29mID0gdW5zdHJpbmdpZnlCaWdJbnRzKF9wcm9vZik7XG5cbiAgICBjb25zdCBjdXJ2ZSA9IGF3YWl0IGN1cnZlcy5nZXRDdXJ2ZUZyb21OYW1lKF92a192ZXJpZmllci5jdXJ2ZSk7XG5cbiAgICBjb25zdCB2ayA9IGZyb21PYmplY3RWayhjdXJ2ZSwgX3ZrX3ZlcmlmaWVyKTtcblxuICAgIC8vIFRPRE8gPz8/IENvbXB1dGUgd3JeMyBhbmQgY2hlY2sgaWYgaXQgbWF0Y2hlcyB3aXRoIHdcblxuICAgIGNvbnN0IHByb29mID0gbmV3IFByb29mKGN1cnZlLCBsb2dnZXIpO1xuICAgIHByb29mLmZyb21PYmplY3RQcm9vZihfcHJvb2YpO1xuXG4gICAgY29uc3QgcHVibGljU2lnbmFscyA9IHVuc3RyaW5naWZ5QmlnSW50cyhfcHVibGljU2lnbmFscyk7XG5cbiAgICBpZiAocHVibGljU2lnbmFscy5sZW5ndGggIT09IHZrLm5QdWJsaWMpIHtcbiAgICAgICAgbG9nZ2VyLmVycm9yKFwiTnVtYmVyIG9mIHB1YmxpYyBzaWduYWxzIGRvZXMgbm90IG1hdGNoIHdpdGggdmtcIik7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBjb25zdCBGciA9IGN1cnZlLkZyO1xuXG4gICAgaWYgKGxvZ2dlcikge1xuICAgICAgICBsb2dnZXIuaW5mbyhcIi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cIik7XG4gICAgICAgIGxvZ2dlci5pbmZvKFwiICBGRkxPTksgVkVSSUZZIFNFVFRJTkdTXCIpO1xuICAgICAgICBsb2dnZXIuaW5mbyhgICBDdXJ2ZTogICAgICAgICAke2N1cnZlLm5hbWV9YCk7XG4gICAgICAgIGxvZ2dlci5pbmZvKGAgIENpcmN1aXQgcG93ZXI6ICR7dmsucG93ZXJ9YCk7XG4gICAgICAgIGxvZ2dlci5pbmZvKGAgIERvbWFpbiBzaXplOiAgICR7MiAqKiB2ay5wb3dlcn1gKTtcbiAgICAgICAgbG9nZ2VyLmluZm8oYCAgUHVibGljIHZhcnM6ICAgJHt2ay5uUHVibGljfWApO1xuICAgICAgICBsb2dnZXIuaW5mbyhcIi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cIik7XG4gICAgfVxuXG4gICAgLy8gU1RFUCAxIC0gVmFsaWRhdGUgdGhhdCBhbGwgcG9seW5vbWlhbCBjb21taXRtZW50cyDiiIggR18xXG4gICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oXCI+IENoZWNraW5nIGNvbW1pdG1lbnRzIGJlbG9uZyB0byBHMVwiKTtcbiAgICBpZiAoIWNvbW1pdG1lbnRzQmVsb25nVG9HMShjdXJ2ZSwgcHJvb2YsIHZrKSkge1xuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZXJyb3IoXCJQcm9vZiBjb21taXRtZW50cyBhcmUgbm90IHZhbGlkXCIpO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgLy8gU1RFUCAyIC0gVmFsaWRhdGUgdGhhdCBhbGwgZXZhbHVhdGlvbnMg4oiIIEZcbiAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhcIj4gQ2hlY2tpbmcgZXZhbHVhdGlvbnMgYmVsb25nIHRvIEZcIik7XG4gICAgaWYgKCFldmFsdWF0aW9uc0FyZVZhbGlkKGN1cnZlLCBwcm9vZikpIHtcbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmVycm9yKFwiUHJvb2YgZXZhbHVhdGlvbnMgYXJlIG5vdCB2YWxpZC5cIik7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvLyBTVEVQIDMgLSBWYWxpZGF0ZSB0aGF0IHdfaSDiiIggRiBmb3IgaSDiiIggW2xdXG4gICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oXCI+IENoZWNraW5nIHB1YmxpYyBpbnB1dHMgYmVsb25nIHRvIEZcIik7XG4gICAgaWYgKCFwdWJsaWNJbnB1dHNBcmVWYWxpZChjdXJ2ZSwgcHVibGljU2lnbmFscykpIHtcbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmVycm9yKFwiUHVibGljIGlucHV0cyBhcmUgbm90IHZhbGlkLlwiKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIC8vIFNURVAgNCAtIENvbXB1dGUgdGhlIGNoYWxsZW5nZXM6IGJldGEsIGdhbW1hLCB4aSwgYWxwaGEgYW5kIHkg4oiIIEZcbiAgICAvLyBhcyBpbiBwcm92ZXIgZGVzY3JpcHRpb24sIGZyb20gdGhlIGNvbW1vbiBwcmVwcm9jZXNzZWQgaW5wdXRzLCBwdWJsaWMgaW5wdXRzIGFuZCBlbGVtZW50cyBvZiDPgF9TTkFSS1xuICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKFwiPiBDb21wdXRpbmcgY2hhbGxlbmdlc1wiKTtcbiAgICBjb25zdCB7IGNoYWxsZW5nZXMsIHJvb3RzIH0gPSBjb21wdXRlQ2hhbGxlbmdlcyhjdXJ2ZSwgcHJvb2YsIHZrLCBwdWJsaWNTaWduYWxzLCBsb2dnZXIpO1xuXG4gICAgLy8gU1RFUCA1IC0gQ29tcHV0ZSB0aGUgemVybyBwb2x5bm9taWFsIGV2YWx1YXRpb24gWl9IKHhpKSA9IHhpXm4gLSAxXG4gICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oXCI+IENvbXB1dGluZyBaZXJvIHBvbHlub21pYWwgZXZhbHVhdGlvbiBaX0goeGkpXCIpO1xuICAgIGNoYWxsZW5nZXMuemggPSBGci5zdWIoY2hhbGxlbmdlcy54aU4sIEZyLm9uZSk7XG4gICAgY2hhbGxlbmdlcy5pbnZ6aCA9IEZyLmludihjaGFsbGVuZ2VzLnpoKTtcblxuICAgIC8vIFNURVAgNiAtIENvbXB1dGUgdGhlIGxhZ3JhbmdlIHBvbHlub21pYWwgZXZhbHVhdGlvbiBMXzEoeGkpXG4gICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oXCI+IENvbXB1dGluZyBMYWdyYW5nZSBldmFsdWF0aW9uc1wiKTtcbiAgICBjb25zdCBsYWdyYW5nZUV2YWxzID0gYXdhaXQgY29tcHV0ZUxhZ3JhbmdlRXZhbHVhdGlvbnMoY3VydmUsIGNoYWxsZW5nZXMsIHZrKTtcblxuICAgIC8vIFNURVAgNyAtIENvbXB1dGUgcHVibGljIGlucHV0IGV2YWx1YXRpb24gUEkoeGkpXG4gICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oXCI+IENvbXB1dGluZyBwb2x5bm9taWFsIGlkZW50aXRpZXMgUEkoWClcIik7XG4gICAgY29uc3QgcGkgPSBjYWxjdWxhdGVQSShjdXJ2ZSwgcHVibGljU2lnbmFscywgbGFncmFuZ2VFdmFscyk7XG5cbiAgICAvLyBTVEVQIDggLSBDb21wdXRlIHBvbHlub21pYWwgcjAg4oiIIEZfezw0fVtYXVxuICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKFwiPiBDb21wdXRpbmcgcjAoeSlcIik7XG4gICAgY29uc3QgcjAgPSBjb21wdXRlUjAocHJvb2YsIGNoYWxsZW5nZXMsIHJvb3RzLCBjdXJ2ZSwgbG9nZ2VyKTtcblxuICAgIC8vIFNURVAgOSAtIENvbXB1dGUgcG9seW5vbWlhbCByMSDiiIggRl97PDR9W1hdXG4gICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oXCI+IENvbXB1dGluZyByMSh5KVwiKTtcbiAgICBjb25zdCByMSA9IGNvbXB1dGVSMShwcm9vZiwgY2hhbGxlbmdlcywgcm9vdHMsIHBpLCBjdXJ2ZSwgbG9nZ2VyKTtcblxuICAgIC8vIFNURVAgOSAtIENvbXB1dGUgcG9seW5vbWlhbCByMiDiiIggRl97PDZ9W1hdXG4gICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oXCI+IENvbXB1dGluZyByMih5KVwiKTtcbiAgICBjb25zdCByMiA9IGNvbXB1dGVSMihwcm9vZiwgY2hhbGxlbmdlcywgcm9vdHMsIGxhZ3JhbmdlRXZhbHNbMV0sIHZrLCBjdXJ2ZSwgbG9nZ2VyKTtcblxuICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKFwiPiBDb21wdXRpbmcgRlwiKTtcbiAgICBjb25zdCBGID0gY29tcHV0ZUYoY3VydmUsIHByb29mLCB2aywgY2hhbGxlbmdlcywgcm9vdHMpO1xuXG4gICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oXCI+IENvbXB1dGluZyBFXCIpO1xuICAgIGNvbnN0IEUgPSBjb21wdXRlRShjdXJ2ZSwgcHJvb2YsIGNoYWxsZW5nZXMsIHZrLCByMCwgcjEsIHIyKTtcblxuICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKFwiPiBDb21wdXRpbmcgSlwiKTtcbiAgICBjb25zdCBKID0gY29tcHV0ZUooY3VydmUsIHByb29mLCBjaGFsbGVuZ2VzKTtcblxuICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKFwiPiBWYWxpZGF0ZSBhbGwgZXZhbHVhdGlvbnMgd2l0aCBhIHBhaXJpbmdcIik7XG4gICAgY29uc3QgcmVzID0gYXdhaXQgaXNWYWxpZFBhaXJpbmcoY3VydmUsIHByb29mLCBjaGFsbGVuZ2VzLCB2aywgRiwgRSwgSik7XG5cbiAgICBpZiAobG9nZ2VyKSB7XG4gICAgICAgIGlmIChyZXMpIHtcbiAgICAgICAgICAgIGxvZ2dlci5pbmZvKFwiUFJPT0YgVkVSSUZJRUQgU1VDQ0VTU0ZVTExZXCIpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbG9nZ2VyLndhcm4oXCJJbnZhbGlkIFByb29mXCIpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oXCJGRkxPTksgVkVSSUZJRVIgRklOSVNIRURcIik7XG5cbiAgICByZXR1cm4gcmVzO1xuXG59XG5cbmZ1bmN0aW9uIGZyb21PYmplY3RWayhjdXJ2ZSwgdmspIHtcbiAgICBjb25zdCByZXMgPSB2aztcbiAgICByZXMuazEgPSBjdXJ2ZS5Gci5mcm9tT2JqZWN0KHZrLmsxKTtcbiAgICByZXMuazIgPSBjdXJ2ZS5Gci5mcm9tT2JqZWN0KHZrLmsyKTtcbiAgICByZXMudyA9IGN1cnZlLkZyLmZyb21PYmplY3Qodmsudyk7XG4gICAgLy8gcmVzLndXID0gY3VydmUuRnIuZnJvbU9iamVjdCh2ay53Vyk7XG4gICAgcmVzLnczID0gY3VydmUuRnIuZnJvbU9iamVjdCh2ay53Myk7XG4gICAgcmVzLnc0ID0gY3VydmUuRnIuZnJvbU9iamVjdCh2ay53NCk7XG4gICAgcmVzLnc4ID0gY3VydmUuRnIuZnJvbU9iamVjdCh2ay53OCk7XG4gICAgcmVzLndyID0gY3VydmUuRnIuZnJvbU9iamVjdCh2ay53cik7XG4gICAgcmVzLlhfMiA9IGN1cnZlLkcyLmZyb21PYmplY3QodmsuWF8yKTtcbiAgICByZXMuQzAgPSBjdXJ2ZS5HMS5mcm9tT2JqZWN0KHZrLkMwKTtcbiAgICByZXR1cm4gcmVzO1xufVxuXG5mdW5jdGlvbiBjb21taXRtZW50c0JlbG9uZ1RvRzEoY3VydmUsIHByb29mLCB2aykge1xuICAgIGNvbnN0IEcxID0gY3VydmUuRzE7XG4gICAgcmV0dXJuIEcxLmlzVmFsaWQocHJvb2YucG9seW5vbWlhbHMuQzEpXG4gICAgICAgICYmIEcxLmlzVmFsaWQocHJvb2YucG9seW5vbWlhbHMuQzIpXG4gICAgICAgICYmIEcxLmlzVmFsaWQocHJvb2YucG9seW5vbWlhbHMuVzEpXG4gICAgICAgICYmIEcxLmlzVmFsaWQocHJvb2YucG9seW5vbWlhbHMuVzIpXG4gICAgICAgICYmIEcxLmlzVmFsaWQodmsuQzApO1xufVxuXG5mdW5jdGlvbiBjaGVja1ZhbHVlQmVsb25nVG9GaWVsZChjdXJ2ZSwgdmFsdWUpIHtcbiAgICByZXR1cm4gU2NhbGFyLmx0KHZhbHVlLCBjdXJ2ZS5yKTtcbn1cblxuZnVuY3Rpb24gY2hlY2tFdmFsdWF0aW9uSXNWYWxpZChjdXJ2ZSwgZXZhbHVhdGlvbikge1xuICAgIHJldHVybiBjaGVja1ZhbHVlQmVsb25nVG9GaWVsZChjdXJ2ZSwgU2NhbGFyLmZyb21ScHJMRShldmFsdWF0aW9uKSk7XG59XG5cbmZ1bmN0aW9uIGV2YWx1YXRpb25zQXJlVmFsaWQoY3VydmUsIHByb29mKSB7XG4gICAgcmV0dXJuIGNoZWNrRXZhbHVhdGlvbklzVmFsaWQoY3VydmUsIHByb29mLmV2YWx1YXRpb25zLnFsKVxuICAgICAgICAmJiBjaGVja0V2YWx1YXRpb25Jc1ZhbGlkKGN1cnZlLCBwcm9vZi5ldmFsdWF0aW9ucy5xcilcbiAgICAgICAgJiYgY2hlY2tFdmFsdWF0aW9uSXNWYWxpZChjdXJ2ZSwgcHJvb2YuZXZhbHVhdGlvbnMucW0pXG4gICAgICAgICYmIGNoZWNrRXZhbHVhdGlvbklzVmFsaWQoY3VydmUsIHByb29mLmV2YWx1YXRpb25zLnFvKVxuICAgICAgICAmJiBjaGVja0V2YWx1YXRpb25Jc1ZhbGlkKGN1cnZlLCBwcm9vZi5ldmFsdWF0aW9ucy5xYylcbiAgICAgICAgJiYgY2hlY2tFdmFsdWF0aW9uSXNWYWxpZChjdXJ2ZSwgcHJvb2YuZXZhbHVhdGlvbnMuczEpXG4gICAgICAgICYmIGNoZWNrRXZhbHVhdGlvbklzVmFsaWQoY3VydmUsIHByb29mLmV2YWx1YXRpb25zLnMyKVxuICAgICAgICAmJiBjaGVja0V2YWx1YXRpb25Jc1ZhbGlkKGN1cnZlLCBwcm9vZi5ldmFsdWF0aW9ucy5zMylcbiAgICAgICAgJiYgY2hlY2tFdmFsdWF0aW9uSXNWYWxpZChjdXJ2ZSwgcHJvb2YuZXZhbHVhdGlvbnMuYSlcbiAgICAgICAgJiYgY2hlY2tFdmFsdWF0aW9uSXNWYWxpZChjdXJ2ZSwgcHJvb2YuZXZhbHVhdGlvbnMuYilcbiAgICAgICAgJiYgY2hlY2tFdmFsdWF0aW9uSXNWYWxpZChjdXJ2ZSwgcHJvb2YuZXZhbHVhdGlvbnMuYylcbiAgICAgICAgJiYgY2hlY2tFdmFsdWF0aW9uSXNWYWxpZChjdXJ2ZSwgcHJvb2YuZXZhbHVhdGlvbnMueilcbiAgICAgICAgJiYgY2hlY2tFdmFsdWF0aW9uSXNWYWxpZChjdXJ2ZSwgcHJvb2YuZXZhbHVhdGlvbnMuencpXG4gICAgICAgICYmIGNoZWNrRXZhbHVhdGlvbklzVmFsaWQoY3VydmUsIHByb29mLmV2YWx1YXRpb25zLnQxdylcbiAgICAgICAgJiYgY2hlY2tFdmFsdWF0aW9uSXNWYWxpZChjdXJ2ZSwgcHJvb2YuZXZhbHVhdGlvbnMudDJ3KTtcbn1cblxuZnVuY3Rpb24gcHVibGljSW5wdXRzQXJlVmFsaWQoY3VydmUsIHB1YmxpY0lucHV0cykge1xuICAgIGZvcihsZXQgaSA9IDA7IGkgPCBwdWJsaWNJbnB1dHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgaWYoIWNoZWNrVmFsdWVCZWxvbmdUb0ZpZWxkKGN1cnZlLCBwdWJsaWNJbnB1dHNbaV0pKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG59XG5cbmZ1bmN0aW9uIGNvbXB1dGVDaGFsbGVuZ2VzKGN1cnZlLCBwcm9vZiwgdmssIHB1YmxpY1NpZ25hbHMsIGxvZ2dlcikge1xuICAgIGNvbnN0IEZyID0gY3VydmUuRnI7XG5cbiAgICBjb25zdCBjaGFsbGVuZ2VzID0ge307XG4gICAgY29uc3Qgcm9vdHMgPSB7fTtcbiAgICBjb25zdCB0cmFuc2NyaXB0ID0gbmV3IEtlY2NhazI1NlRyYW5zY3JpcHQoY3VydmUpO1xuXG4gICAgLy8gQWRkIEMwIHRvIHRoZSB0cmFuc2NyaXB0XG4gICAgdHJhbnNjcmlwdC5hZGRQb2xDb21taXRtZW50KHZrLkMwKTtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcHVibGljU2lnbmFscy5sZW5ndGg7IGkrKykge1xuICAgICAgICB0cmFuc2NyaXB0LmFkZFNjYWxhcihGci5lKHB1YmxpY1NpZ25hbHNbaV0pKTtcbiAgICB9XG5cbiAgICB0cmFuc2NyaXB0LmFkZFBvbENvbW1pdG1lbnQocHJvb2YucG9seW5vbWlhbHMuQzEpO1xuICAgIGNoYWxsZW5nZXMuYmV0YSA9IHRyYW5zY3JpcHQuZ2V0Q2hhbGxlbmdlKCk7XG4gICAgdHJhbnNjcmlwdC5yZXNldCgpO1xuXG4gICAgdHJhbnNjcmlwdC5hZGRTY2FsYXIoY2hhbGxlbmdlcy5iZXRhKTtcbiAgICBjaGFsbGVuZ2VzLmdhbW1hID0gdHJhbnNjcmlwdC5nZXRDaGFsbGVuZ2UoKTtcblxuICAgIHRyYW5zY3JpcHQucmVzZXQoKTtcbiAgICB0cmFuc2NyaXB0LmFkZFNjYWxhcihjaGFsbGVuZ2VzLmdhbW1hKTtcbiAgICB0cmFuc2NyaXB0LmFkZFBvbENvbW1pdG1lbnQocHJvb2YucG9seW5vbWlhbHMuQzIpO1xuICAgIGNvbnN0IHhpU2VlZCA9IHRyYW5zY3JpcHQuZ2V0Q2hhbGxlbmdlKCk7XG4gICAgY29uc3QgeGlTZWVkMiA9IEZyLnNxdWFyZSh4aVNlZWQpO1xuXG4gICAgbGV0IHc4ID0gW107XG4gICAgdzhbMV0gPSB2ay53ODtcbiAgICB3OFsyXSA9IEZyLnNxdWFyZSh2ay53OCk7XG4gICAgdzhbM10gPSBGci5tdWwodzhbMl0sIHZrLnc4KTtcbiAgICB3OFs0XSA9IEZyLm11bCh3OFszXSwgdmsudzgpO1xuICAgIHc4WzVdID0gRnIubXVsKHc4WzRdLCB2ay53OCk7XG4gICAgdzhbNl0gPSBGci5tdWwodzhbNV0sIHZrLnc4KTtcbiAgICB3OFs3XSA9IEZyLm11bCh3OFs2XSwgdmsudzgpO1xuICAgIGxldCB3NCA9IFtdO1xuICAgIHc0WzFdID0gdmsudzQ7XG4gICAgdzRbMl0gPSBGci5zcXVhcmUodmsudzQpO1xuICAgIHc0WzNdID0gRnIubXVsKHc0WzJdLCB2ay53NCk7XG4gICAgbGV0IHczID0gW107XG4gICAgdzNbMV0gPSB2ay53MztcbiAgICB3M1syXSA9IEZyLnNxdWFyZSh2ay53Myk7XG5cbiAgICAvLyBjb25zdCB3NF8yID0gRnIuc3F1YXJlKHZrLnc0KTtcbiAgICAvLyBjb25zdCB3NF8zID0gRnIubXVsKHc0XzIsIHZrLnc0KTtcbiAgICAvLyBjb25zdCB3M18yID0gRnIuc3F1YXJlKHZrLnczKTtcblxuICAgIC8vIENvbXB1dGUgaDAgPSB4aVNlZWRlcl4zXG4gICAgcm9vdHMuUzAgPSB7fTtcbiAgICByb290cy5TMC5oMHc4ID0gW107XG4gICAgcm9vdHMuUzAuaDB3OFswXSA9IEZyLm11bCh4aVNlZWQyLCB4aVNlZWQpO1xuICAgIGZvciAobGV0IGkgPSAxOyBpIDwgODsgaSsrKSB7XG4gICAgICAgIHJvb3RzLlMwLmgwdzhbaV0gPSBGci5tdWwocm9vdHMuUzAuaDB3OFswXSwgdzhbaV0pO1xuICAgIH1cblxuICAgIC8vIENvbXB1dGUgaDEgPSB4aV9zZWVkZXJeNlxuICAgIHJvb3RzLlMxID0ge307XG4gICAgcm9vdHMuUzEuaDF3NCA9IFtdO1xuICAgIHJvb3RzLlMxLmgxdzRbMF0gPSBGci5zcXVhcmUocm9vdHMuUzAuaDB3OFswXSk7XG4gICAgZm9yIChsZXQgaSA9IDE7IGkgPCA0OyBpKyspIHtcbiAgICAgICAgcm9vdHMuUzEuaDF3NFtpXSA9IEZyLm11bChyb290cy5TMS5oMXc0WzBdLCB3NFtpXSk7XG4gICAgfVxuXG4gICAgLy8gQ29tcHV0ZSBoMiA9IHhpX3NlZWRlcl44XG4gICAgcm9vdHMuUzIgPSB7fTtcbiAgICByb290cy5TMi5oMnczID0gW107XG4gICAgcm9vdHMuUzIuaDJ3M1swXSA9IEZyLm11bChyb290cy5TMS5oMXc0WzBdLCB4aVNlZWQyKTtcbiAgICByb290cy5TMi5oMnczWzFdID0gRnIubXVsKHJvb3RzLlMyLmgydzNbMF0sIHczWzFdKTtcbiAgICByb290cy5TMi5oMnczWzJdID0gRnIubXVsKHJvb3RzLlMyLmgydzNbMF0sIHczWzJdKTtcblxuICAgIHJvb3RzLlMyLmgzdzMgPSBbXTtcbiAgICAvLyBNdWx0aXBseSBoMyBieSB0aGlyZC1yb290LW9tZWdhIHRvIG9idGFpbiBoXzNeMyA9IHhpz4lcbiAgICAvLyBTbywgaDMgPSB4aV9zZWVkZXJeOCDPiV57MS8zfVxuICAgIHJvb3RzLlMyLmgzdzNbMF0gPSBGci5tdWwocm9vdHMuUzIuaDJ3M1swXSwgdmsud3IpO1xuICAgIHJvb3RzLlMyLmgzdzNbMV0gPSBGci5tdWwocm9vdHMuUzIuaDN3M1swXSwgdzNbMV0pO1xuICAgIHJvb3RzLlMyLmgzdzNbMl0gPSBGci5tdWwocm9vdHMuUzIuaDN3M1swXSwgdzNbMl0pO1xuXG4gICAgLy8gQ29tcHV0ZSB4aSA9IHhpX3NlZWRlcl4xMlxuICAgIGNoYWxsZW5nZXMueGkgPSBGci5tdWwoRnIuc3F1YXJlKHJvb3RzLlMyLmgydzNbMF0pLCByb290cy5TMi5oMnczWzBdKTtcbiAgICBjaGFsbGVuZ2VzLnhpdyA9IEZyLm11bChjaGFsbGVuZ2VzLnhpLCBGci53W3ZrLnBvd2VyXSk7XG5cbiAgICBjaGFsbGVuZ2VzLnhpTiA9IGNoYWxsZW5nZXMueGk7XG4gICAgdmsuZG9tYWluU2l6ZSA9IDE7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB2ay5wb3dlcjsgaSsrKSB7XG4gICAgICAgIGNoYWxsZW5nZXMueGlOID0gRnIuc3F1YXJlKGNoYWxsZW5nZXMueGlOKTtcbiAgICAgICAgdmsuZG9tYWluU2l6ZSAqPSAyO1xuICAgIH1cblxuICAgIHRyYW5zY3JpcHQucmVzZXQoKTtcbiAgICB0cmFuc2NyaXB0LmFkZFNjYWxhcih4aVNlZWQpO1xuICAgIHRyYW5zY3JpcHQuYWRkU2NhbGFyKHByb29mLmV2YWx1YXRpb25zLnFsKTtcbiAgICB0cmFuc2NyaXB0LmFkZFNjYWxhcihwcm9vZi5ldmFsdWF0aW9ucy5xcik7XG4gICAgdHJhbnNjcmlwdC5hZGRTY2FsYXIocHJvb2YuZXZhbHVhdGlvbnMucW0pO1xuICAgIHRyYW5zY3JpcHQuYWRkU2NhbGFyKHByb29mLmV2YWx1YXRpb25zLnFvKTtcbiAgICB0cmFuc2NyaXB0LmFkZFNjYWxhcihwcm9vZi5ldmFsdWF0aW9ucy5xYyk7XG4gICAgdHJhbnNjcmlwdC5hZGRTY2FsYXIocHJvb2YuZXZhbHVhdGlvbnMuczEpO1xuICAgIHRyYW5zY3JpcHQuYWRkU2NhbGFyKHByb29mLmV2YWx1YXRpb25zLnMyKTtcbiAgICB0cmFuc2NyaXB0LmFkZFNjYWxhcihwcm9vZi5ldmFsdWF0aW9ucy5zMyk7XG4gICAgdHJhbnNjcmlwdC5hZGRTY2FsYXIocHJvb2YuZXZhbHVhdGlvbnMuYSk7XG4gICAgdHJhbnNjcmlwdC5hZGRTY2FsYXIocHJvb2YuZXZhbHVhdGlvbnMuYik7XG4gICAgdHJhbnNjcmlwdC5hZGRTY2FsYXIocHJvb2YuZXZhbHVhdGlvbnMuYyk7XG4gICAgdHJhbnNjcmlwdC5hZGRTY2FsYXIocHJvb2YuZXZhbHVhdGlvbnMueik7XG4gICAgdHJhbnNjcmlwdC5hZGRTY2FsYXIocHJvb2YuZXZhbHVhdGlvbnMuencpO1xuICAgIHRyYW5zY3JpcHQuYWRkU2NhbGFyKHByb29mLmV2YWx1YXRpb25zLnQxdyk7XG4gICAgdHJhbnNjcmlwdC5hZGRTY2FsYXIocHJvb2YuZXZhbHVhdGlvbnMudDJ3KTtcbiAgICBjaGFsbGVuZ2VzLmFscGhhID0gdHJhbnNjcmlwdC5nZXRDaGFsbGVuZ2UoKTtcblxuICAgIHRyYW5zY3JpcHQucmVzZXQoKTtcbiAgICB0cmFuc2NyaXB0LmFkZFNjYWxhcihjaGFsbGVuZ2VzLmFscGhhKTtcbiAgICB0cmFuc2NyaXB0LmFkZFBvbENvbW1pdG1lbnQocHJvb2YucG9seW5vbWlhbHMuVzEpO1xuICAgIGNoYWxsZW5nZXMueSA9IHRyYW5zY3JpcHQuZ2V0Q2hhbGxlbmdlKCk7XG5cbiAgICBpZiAobG9nZ2VyKSB7XG4gICAgICAgIGxvZ2dlci5pbmZvKFwiwrfCt8K3IGNoYWxsZW5nZXMuYmV0YTogIFwiICsgRnIudG9TdHJpbmcoY2hhbGxlbmdlcy5iZXRhKSk7XG4gICAgICAgIGxvZ2dlci5pbmZvKFwiwrfCt8K3IGNoYWxsZW5nZXMuZ2FtbWE6IFwiICsgRnIudG9TdHJpbmcoY2hhbGxlbmdlcy5nYW1tYSkpO1xuICAgICAgICBsb2dnZXIuaW5mbyhcIsK3wrfCtyBjaGFsbGVuZ2VzLnhpOiAgICBcIiArIEZyLnRvU3RyaW5nKGNoYWxsZW5nZXMueGkpKTtcbiAgICAgICAgbG9nZ2VyLmluZm8oXCLCt8K3wrcgY2hhbGxlbmdlcy5hbHBoYTogXCIgKyBGci50b1N0cmluZyhjaGFsbGVuZ2VzLmFscGhhKSk7XG4gICAgICAgIGxvZ2dlci5pbmZvKFwiwrfCt8K3IGNoYWxsZW5nZXMueTogICAgIFwiICsgRnIudG9TdHJpbmcoY2hhbGxlbmdlcy55KSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHsgY2hhbGxlbmdlczogY2hhbGxlbmdlcywgcm9vdHM6IHJvb3RzIH07XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGNvbXB1dGVMYWdyYW5nZUV2YWx1YXRpb25zKGN1cnZlLCBjaGFsbGVuZ2VzLCB2aykge1xuICAgIGNvbnN0IEZyID0gY3VydmUuRnI7XG5cbiAgICBjb25zdCBzaXplID0gTWF0aC5tYXgoMSwgdmsublB1YmxpYyk7XG4gICAgY29uc3QgbnVtQXJyID0gbmV3IEJpZ0J1ZmZlcihzaXplICogRnIubjgpO1xuICAgIGxldCBkZW5BcnIgPSBuZXcgQmlnQnVmZmVyKHNpemUgKiBGci5uOCk7XG5cbiAgICBsZXQgdyA9IEZyLm9uZTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNpemU7IGkrKykge1xuICAgICAgICBjb25zdCBpX3NGciA9IGkgKiBGci5uODtcbiAgICAgICAgbnVtQXJyLnNldChGci5tdWwodywgY2hhbGxlbmdlcy56aCksIGlfc0ZyKTtcbiAgICAgICAgZGVuQXJyLnNldChGci5tdWwoRnIuZSh2ay5kb21haW5TaXplKSwgRnIuc3ViKGNoYWxsZW5nZXMueGksIHcpKSwgaV9zRnIpO1xuICAgICAgICB3ID0gRnIubXVsKHcsIHZrLncpO1xuICAgIH1cblxuICAgIGRlbkFyciA9IGF3YWl0IEZyLmJhdGNoSW52ZXJzZShkZW5BcnIpO1xuXG4gICAgbGV0IEwgPSBbXTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNpemU7IGkrKykge1xuICAgICAgICBjb25zdCBpX3NGciA9IGkgKiBGci5uODtcbiAgICAgICAgTFtpICsgMV0gPSBGci5tdWwobnVtQXJyLnNsaWNlKGlfc0ZyLCBpX3NGciArIEZyLm44KSwgZGVuQXJyLnNsaWNlKGlfc0ZyLCBpX3NGciArIEZyLm44KSk7XG4gICAgfVxuICAgIHJldHVybiBMO1xufVxuXG5mdW5jdGlvbiBjYWxjdWxhdGVQSShjdXJ2ZSwgcHVibGljU2lnbmFscywgbGFncmFuZ2VFdmFscykge1xuICAgIGNvbnN0IEZyID0gY3VydmUuRnI7XG5cbiAgICBsZXQgcGkgPSBGci56ZXJvO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcHVibGljU2lnbmFscy5sZW5ndGg7IGkrKykge1xuICAgICAgICBjb25zdCB3ID0gRnIuZShwdWJsaWNTaWduYWxzW2ldKTtcbiAgICAgICAgcGkgPSBGci5zdWIocGksIEZyLm11bCh3LCBsYWdyYW5nZUV2YWxzW2kgKyAxXSkpO1xuICAgIH1cbiAgICByZXR1cm4gcGk7XG59XG5cbmZ1bmN0aW9uIGNvbXB1dGVSMChwcm9vZiwgY2hhbGxlbmdlcywgcm9vdHMsIGN1cnZlLCBsb2dnZXIpIHtcbiAgICBjb25zdCBGciA9IGN1cnZlLkZyO1xuXG4gICAgY29uc3QgTGkgPSBjb21wdXRlTGFncmFuZ2VMaVNpKHJvb3RzLlMwLmgwdzgsIGNoYWxsZW5nZXMueSwgY2hhbGxlbmdlcy54aSwgY3VydmUpO1xuXG4gICAgLy8gcjAoeSkgPSDiiJFfMV44IENfMChoXzAgz4lfOF57aS0xfSkgTF9pKHkpLiBUbyB0aGlzIGVuZCB3ZSBuZWVkIHRvIGNvbXB1dGVcblxuICAgIC8vIENvbXB1dGUgdGhlIDggQzAgdmFsdWVzXG4gICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oXCLCt8K3wrcgQ29tcHV0aW5nIHIwKHkpXCIpO1xuXG4gICAgbGV0IHJlcyA9IEZyLnplcm87XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCA4OyBpKyspIHtcbiAgICAgICAgbGV0IGNvZWZWYWx1ZXMgPSBbXTtcbiAgICAgICAgY29lZlZhbHVlc1sxXSA9IHJvb3RzLlMwLmgwdzhbaV07XG4gICAgICAgIGZvciAobGV0IGogPSAyOyBqIDwgODsgaisrKSB7XG4gICAgICAgICAgICBjb2VmVmFsdWVzW2pdID0gRnIubXVsKGNvZWZWYWx1ZXNbaiAtIDFdLCByb290cy5TMC5oMHc4W2ldKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBjMCA9IEZyLmFkZChwcm9vZi5ldmFsdWF0aW9ucy5xbCwgRnIubXVsKHByb29mLmV2YWx1YXRpb25zLnFyLCBjb2VmVmFsdWVzWzFdKSk7XG4gICAgICAgIGMwID0gRnIuYWRkKGMwLCBGci5tdWwocHJvb2YuZXZhbHVhdGlvbnMucW8sIGNvZWZWYWx1ZXNbMl0pKTtcbiAgICAgICAgYzAgPSBGci5hZGQoYzAsIEZyLm11bChwcm9vZi5ldmFsdWF0aW9ucy5xbSwgY29lZlZhbHVlc1szXSkpO1xuICAgICAgICBjMCA9IEZyLmFkZChjMCwgRnIubXVsKHByb29mLmV2YWx1YXRpb25zLnFjLCBjb2VmVmFsdWVzWzRdKSk7XG4gICAgICAgIGMwID0gRnIuYWRkKGMwLCBGci5tdWwocHJvb2YuZXZhbHVhdGlvbnMuczEsIGNvZWZWYWx1ZXNbNV0pKTtcbiAgICAgICAgYzAgPSBGci5hZGQoYzAsIEZyLm11bChwcm9vZi5ldmFsdWF0aW9ucy5zMiwgY29lZlZhbHVlc1s2XSkpO1xuICAgICAgICBjMCA9IEZyLmFkZChjMCwgRnIubXVsKHByb29mLmV2YWx1YXRpb25zLnMzLCBjb2VmVmFsdWVzWzddKSk7XG5cbiAgICAgICAgcmVzID0gRnIuYWRkKHJlcywgRnIubXVsKGMwLCBMaVtpXSkpO1xuICAgIH1cblxuICAgIHJldHVybiByZXM7XG59XG5cbmZ1bmN0aW9uIGNvbXB1dGVSMShwcm9vZiwgY2hhbGxlbmdlcywgcm9vdHMsIHBpLCBjdXJ2ZSwgbG9nZ2VyKSB7XG4gICAgY29uc3QgRnIgPSBjdXJ2ZS5GcjtcblxuICAgIGNvbnN0IExpID0gY29tcHV0ZUxhZ3JhbmdlTGlTaShyb290cy5TMS5oMXc0LCBjaGFsbGVuZ2VzLnksIGNoYWxsZW5nZXMueGksIGN1cnZlKTtcblxuICAgIC8vIHIxKHkpID0g4oiRXzFeNCBDXzEoaF8xIM+JXzRee2ktMX0pIExfaSh5KS4gVG8gdGhpcyBlbmQgd2UgbmVlZCB0byBjb21wdXRlXG4gICAgLy8gWjEgPSB7QzEoaF8xfSwgQzEoaF8xIM+JXzQpLCBDMShoXzEgz4lfNF4yKSwgQzEoaF8xIM+JXzReMyl9XG4gICAgLy8gd2hlcmUgQ18xKGhfMSDPiV80XntpLTF9KSA9IGV2YWwuYSArIGhfMSDPiV80XmkgZXZhbC5iICsgKGhfMSDPiV80XmkpXjIgZXZhbC5jICsgKGhfMSDPiV80XmkpXjMgVDAoeGkpLFxuICAgIC8vIHdoZXJlIFQwKHhpKSA9IFsgcUzCt2EgKyBxUsK3YiArIHFNwrdhwrdiICsgcU/Ct2MgKyBxQyArIFBJKHhpKSBdIC8gWl9IKHhpKVxuXG4gICAgLy8gQ29tcHV0ZSBUMCh4aSlcbiAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhcIsK3wrfCtyBDb21wdXRpbmcgVDAoeGkpXCIpO1xuICAgIGxldCB0MCA9IEZyLm11bChwcm9vZi5ldmFsdWF0aW9ucy5xbCwgcHJvb2YuZXZhbHVhdGlvbnMuYSk7XG4gICAgdDAgPSBGci5hZGQodDAsIEZyLm11bChwcm9vZi5ldmFsdWF0aW9ucy5xciwgcHJvb2YuZXZhbHVhdGlvbnMuYikpO1xuICAgIHQwID0gRnIuYWRkKHQwLCBGci5tdWwocHJvb2YuZXZhbHVhdGlvbnMucW0sIEZyLm11bChwcm9vZi5ldmFsdWF0aW9ucy5hLCBwcm9vZi5ldmFsdWF0aW9ucy5iKSkpO1xuICAgIHQwID0gRnIuYWRkKHQwLCBGci5tdWwocHJvb2YuZXZhbHVhdGlvbnMucW8sIHByb29mLmV2YWx1YXRpb25zLmMpKTtcbiAgICB0MCA9IEZyLmFkZCh0MCwgcHJvb2YuZXZhbHVhdGlvbnMucWMpO1xuICAgIHQwID0gRnIuYWRkKHQwLCBwaSk7XG4gICAgdDAgPSBGci5tdWwodDAsIGNoYWxsZW5nZXMuaW52emgpO1xuXG4gICAgLy8gQ29tcHV0ZSB0aGUgNCBDMSB2YWx1ZXNcbiAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhcIsK3wrfCtyBDb21wdXRpbmcgQzEoaF8xz4lfNF5pKSB2YWx1ZXNcIik7XG5cbiAgICBsZXQgcmVzID0gRnIuemVybztcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IDQ7IGkrKykge1xuICAgICAgICBsZXQgYzEgPSBwcm9vZi5ldmFsdWF0aW9ucy5hO1xuICAgICAgICBjMSA9IEZyLmFkZChjMSwgRnIubXVsKHJvb3RzLlMxLmgxdzRbaV0sIHByb29mLmV2YWx1YXRpb25zLmIpKTtcbiAgICAgICAgY29uc3QgaDF3NFNxdWFyZWQgPSBGci5zcXVhcmUocm9vdHMuUzEuaDF3NFtpXSk7XG4gICAgICAgIGMxID0gRnIuYWRkKGMxLCBGci5tdWwoaDF3NFNxdWFyZWQsIHByb29mLmV2YWx1YXRpb25zLmMpKTtcbiAgICAgICAgYzEgPSBGci5hZGQoYzEsIEZyLm11bChGci5tdWwoaDF3NFNxdWFyZWQsIHJvb3RzLlMxLmgxdzRbaV0pLCB0MCkpO1xuXG4gICAgICAgIHJlcyA9IEZyLmFkZChyZXMsIEZyLm11bChjMSwgTGlbaV0pKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzO1xufVxuXG5mdW5jdGlvbiBjb21wdXRlUjIocHJvb2YsIGNoYWxsZW5nZXMsIHJvb3RzLCBsYWdyYW5nZTEsIHZrLCBjdXJ2ZSwgbG9nZ2VyKSB7XG4gICAgY29uc3QgRnIgPSBjdXJ2ZS5GcjtcblxuICAgIGNvbnN0IExpUzIgPSBjb21wdXRlTGFncmFuZ2VMaVMyKFtyb290cy5TMi5oMnczLCByb290cy5TMi5oM3czXSwgY2hhbGxlbmdlcy55LCBjaGFsbGVuZ2VzLnhpLCBjaGFsbGVuZ2VzLnhpdywgY3VydmUpO1xuXG4gICAgLy8gcjIoeSkgPSDiiJFfMV4zIENfMihoXzIgz4lfM157aS0xfSkgTF9pKHkpICsg4oiRXzFeMyBDXzIoaF8zIM+JXzNee2ktMX0pIExfe2krM30oeSkuIFRvIHRoaXMgZW5kIHdlIG5lZWQgdG8gY29tcHV0ZVxuICAgIC8vIFoyID0ge1tDMihoXzJ9LCBDMihoXzIgz4lfMyksIEMyKGhfMiDPiV8zXjIpXSwgW0MyKGhfM30sIEMyKGhfMyDPiV8zKSwgQzIoaF8zIM+JXzNeMildfVxuICAgIC8vIHdoZXJlIENfMihoXzIgz4lfM157aS0xfSkgPSBldmFsLnogKyBoXzIgz4lfMl5pIFQxKHhpKSArIChoXzIgz4lfM15pKV4yIFQyKHhpKSxcbiAgICAvLyB3aGVyZSBDXzIoaF8zIM+JXzNee2ktMX0pID0gZXZhbC56ICsgaF8zIM+JXzJeaSBUMSh4aSkgKyAoaF8zIM+JXzNeaSleMiBUMih4aSksXG4gICAgLy8gd2hlcmUgVDEoeGkpID0gWyBMXzEoeGkpKHotMSldIC8gWl9IKHhpKVxuICAgIC8vIGFuZCBUMih4aSkgPSBbICAoYSArIGJldGHCt3hpICsgZ2FtbWEpKGIgKyBiZXRhwrd4acK3azEgKyBnYW1tYSkoYyArIGJldGHCt3hpwrdrMiArIGdhbW1hKXpcbiAgICAvLyAgICAgICAgICAgICAgIC0gKGEgKyBiZXRhwrdzaWdtYTEgKyBnYW1tYSkoYiArIGJldGHCt3NpZ21hMiArIGdhbW1hKShjICsgYmV0YcK3c2lnbWEzICsgZ2FtbWEpes+JICBdIC8gWl9IKHhpKVxuXG4gICAgLy8gQ29tcHV0ZSBUMSh4aSlcbiAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhcIsK3wrfCtyBDb21wdXRpbmcgVDEoeGkpXCIpO1xuICAgIGxldCB0MSA9IEZyLnN1Yihwcm9vZi5ldmFsdWF0aW9ucy56LCBGci5vbmUpO1xuICAgIHQxID0gRnIubXVsKHQxLCBsYWdyYW5nZTEpO1xuICAgIHQxID0gRnIubXVsKHQxLCBjaGFsbGVuZ2VzLmludnpoKTtcblxuICAgIC8vIENvbXB1dGUgVDIoeGkpXG4gICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oXCLCt8K3wrcgQ29tcHV0aW5nIFQyKHhpKVwiKTtcbiAgICBjb25zdCBiZXRheGkgPSBGci5tdWwoY2hhbGxlbmdlcy5iZXRhLCBjaGFsbGVuZ2VzLnhpKTtcbiAgICBjb25zdCB0MjExID0gRnIuYWRkKHByb29mLmV2YWx1YXRpb25zLmEsIEZyLmFkZChiZXRheGksIGNoYWxsZW5nZXMuZ2FtbWEpKTtcbiAgICBjb25zdCB0MjEyID0gRnIuYWRkKHByb29mLmV2YWx1YXRpb25zLmIsIEZyLmFkZChGci5tdWwoYmV0YXhpLCB2ay5rMSksIGNoYWxsZW5nZXMuZ2FtbWEpKTtcbiAgICBjb25zdCB0MjEzID0gRnIuYWRkKHByb29mLmV2YWx1YXRpb25zLmMsIEZyLmFkZChGci5tdWwoYmV0YXhpLCB2ay5rMiksIGNoYWxsZW5nZXMuZ2FtbWEpKTtcbiAgICBjb25zdCB0MjEgPSBGci5tdWwodDIxMSwgRnIubXVsKHQyMTIsIEZyLm11bCh0MjEzLCBwcm9vZi5ldmFsdWF0aW9ucy56KSkpO1xuXG4gICAgY29uc3QgdDIyMSA9IEZyLmFkZChwcm9vZi5ldmFsdWF0aW9ucy5hLCBGci5hZGQoRnIubXVsKGNoYWxsZW5nZXMuYmV0YSwgcHJvb2YuZXZhbHVhdGlvbnMuczEpLCBjaGFsbGVuZ2VzLmdhbW1hKSk7XG4gICAgY29uc3QgdDIyMiA9IEZyLmFkZChwcm9vZi5ldmFsdWF0aW9ucy5iLCBGci5hZGQoRnIubXVsKGNoYWxsZW5nZXMuYmV0YSwgcHJvb2YuZXZhbHVhdGlvbnMuczIpLCBjaGFsbGVuZ2VzLmdhbW1hKSk7XG4gICAgY29uc3QgdDIyMyA9IEZyLmFkZChwcm9vZi5ldmFsdWF0aW9ucy5jLCBGci5hZGQoRnIubXVsKGNoYWxsZW5nZXMuYmV0YSwgcHJvb2YuZXZhbHVhdGlvbnMuczMpLCBjaGFsbGVuZ2VzLmdhbW1hKSk7XG4gICAgY29uc3QgdDIyID0gRnIubXVsKHQyMjEsIEZyLm11bCh0MjIyLCBGci5tdWwodDIyMywgcHJvb2YuZXZhbHVhdGlvbnMuencpKSk7XG5cbiAgICBsZXQgdDIgPSBGci5zdWIodDIxLCB0MjIpO1xuICAgIHQyID0gRnIubXVsKHQyLCBjaGFsbGVuZ2VzLmludnpoKTtcblxuICAgIC8vIENvbXB1dGUgdGhlIDYgQzIgdmFsdWVzXG4gICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oXCLCt8K3wrcgQ29tcHV0aW5nIEMyKGhfMs+JXzNeaSkgdmFsdWVzXCIpO1xuICAgIGxldCByZXMgPSBGci56ZXJvO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMzsgaSsrKSB7XG4gICAgICAgIGxldCBjMiA9IEZyLmFkZChwcm9vZi5ldmFsdWF0aW9ucy56LCBGci5tdWwocm9vdHMuUzIuaDJ3M1tpXSwgdDEpKTtcbiAgICAgICAgYzIgPSBGci5hZGQoYzIsIEZyLm11bChGci5zcXVhcmUocm9vdHMuUzIuaDJ3M1tpXSksIHQyKSk7XG5cbiAgICAgICAgcmVzID0gRnIuYWRkKHJlcywgRnIubXVsKGMyLCBMaVMyW2ldKSk7XG4gICAgfVxuXG4gICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oXCLCt8K3wrcgQ29tcHV0aW5nIEMyKGhfM8+JXzNeaSkgdmFsdWVzXCIpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMzsgaSsrKSB7XG4gICAgICAgIGxldCBjMiA9IEZyLmFkZChwcm9vZi5ldmFsdWF0aW9ucy56dywgRnIubXVsKHJvb3RzLlMyLmgzdzNbaV0sIHByb29mLmV2YWx1YXRpb25zLnQxdykpO1xuICAgICAgICBjMiA9IEZyLmFkZChjMiwgRnIubXVsKEZyLnNxdWFyZShyb290cy5TMi5oM3czW2ldKSwgcHJvb2YuZXZhbHVhdGlvbnMudDJ3KSk7XG5cbiAgICAgICAgcmVzID0gRnIuYWRkKHJlcywgRnIubXVsKGMyLCBMaVMyW2kgKyAzXSkpO1xuICAgIH1cblxuICAgIHJldHVybiByZXM7XG59XG5cbmZ1bmN0aW9uIGNvbXB1dGVGKGN1cnZlLCBwcm9vZiwgdmssIGNoYWxsZW5nZXMsIHJvb3RzKSB7XG4gICAgY29uc3QgRzEgPSBjdXJ2ZS5HMTtcbiAgICBjb25zdCBGciA9IGN1cnZlLkZyO1xuXG4gICAgbGV0IG11bEgwID0gRnIuc3ViKGNoYWxsZW5nZXMueSwgcm9vdHMuUzAuaDB3OFswXSk7XG4gICAgZm9yIChsZXQgaSA9IDE7IGkgPCA4OyBpKyspIHtcbiAgICAgICAgbXVsSDAgPSBGci5tdWwobXVsSDAsIEZyLnN1YihjaGFsbGVuZ2VzLnksIHJvb3RzLlMwLmgwdzhbaV0pKTtcbiAgICB9XG5cbiAgICBjaGFsbGVuZ2VzLnRlbXAgPSBtdWxIMDtcblxuICAgIGxldCBtdWxIMSA9IEZyLnN1YihjaGFsbGVuZ2VzLnksIHJvb3RzLlMxLmgxdzRbMF0pO1xuICAgIGZvciAobGV0IGkgPSAxOyBpIDwgNDsgaSsrKSB7XG4gICAgICAgIG11bEgxID0gRnIubXVsKG11bEgxLCBGci5zdWIoY2hhbGxlbmdlcy55LCByb290cy5TMS5oMXc0W2ldKSk7XG4gICAgfVxuXG4gICAgbGV0IG11bEgyID0gRnIuc3ViKGNoYWxsZW5nZXMueSwgcm9vdHMuUzIuaDJ3M1swXSk7XG4gICAgZm9yIChsZXQgaSA9IDE7IGkgPCAzOyBpKyspIHtcbiAgICAgICAgbXVsSDIgPSBGci5tdWwobXVsSDIsIEZyLnN1YihjaGFsbGVuZ2VzLnksIHJvb3RzLlMyLmgydzNbaV0pKTtcbiAgICB9XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCAzOyBpKyspIHtcbiAgICAgICAgbXVsSDIgPSBGci5tdWwobXVsSDIsIEZyLnN1YihjaGFsbGVuZ2VzLnksIHJvb3RzLlMyLmgzdzNbaV0pKTtcbiAgICB9XG5cbiAgICBjaGFsbGVuZ2VzLnF1b3RpZW50MSA9IEZyLm11bChjaGFsbGVuZ2VzLmFscGhhLCBGci5kaXYobXVsSDAsIG11bEgxKSk7XG4gICAgY2hhbGxlbmdlcy5xdW90aWVudDIgPSBGci5tdWwoRnIuc3F1YXJlKGNoYWxsZW5nZXMuYWxwaGEpLCBGci5kaXYobXVsSDAsIG11bEgyKSk7XG5cbiAgICBsZXQgRjIgPSBHMS50aW1lc0ZyKHByb29mLnBvbHlub21pYWxzLkMxLCBjaGFsbGVuZ2VzLnF1b3RpZW50MSk7XG4gICAgbGV0IEYzID0gRzEudGltZXNGcihwcm9vZi5wb2x5bm9taWFscy5DMiwgY2hhbGxlbmdlcy5xdW90aWVudDIpO1xuXG4gICAgcmV0dXJuIEcxLmFkZCh2ay5DMCwgRzEuYWRkKEYyLCBGMykpO1xufVxuXG5mdW5jdGlvbiBjb21wdXRlRShjdXJ2ZSwgcHJvb2YsIGNoYWxsZW5nZXMsIHZrLCByMCwgcjEsIHIyKSB7XG4gICAgY29uc3QgRzEgPSBjdXJ2ZS5HMTtcbiAgICBjb25zdCBGciA9IGN1cnZlLkZyO1xuXG4gICAgbGV0IEUyID0gRnIubXVsKHIxLCBjaGFsbGVuZ2VzLnF1b3RpZW50MSk7XG4gICAgbGV0IEUzID0gRnIubXVsKHIyLCBjaGFsbGVuZ2VzLnF1b3RpZW50Mik7XG5cbiAgICByZXR1cm4gRzEudGltZXNGcihHMS5vbmUsIEZyLmFkZChyMCwgRnIuYWRkKEUyLCBFMykpKTtcbn1cblxuZnVuY3Rpb24gY29tcHV0ZUooY3VydmUsIHByb29mLCBjaGFsbGVuZ2VzKSB7XG4gICAgY29uc3QgRzEgPSBjdXJ2ZS5HMTtcblxuICAgIHJldHVybiBHMS50aW1lc0ZyKHByb29mLnBvbHlub21pYWxzLlcxLCBjaGFsbGVuZ2VzLnRlbXApO1xufVxuXG5hc3luYyBmdW5jdGlvbiBpc1ZhbGlkUGFpcmluZyhjdXJ2ZSwgcHJvb2YsIGNoYWxsZW5nZXMsIHZrLCBGLCBFLCBKKSB7XG4gICAgY29uc3QgRzEgPSBjdXJ2ZS5HMTtcblxuICAgIGxldCBBMSA9IEcxLnRpbWVzRnIocHJvb2YucG9seW5vbWlhbHMuVzIsIGNoYWxsZW5nZXMueSk7XG4gICAgQTEgPSBHMS5hZGQoRzEuc3ViKEcxLnN1YihGLCBFKSwgSiksIEExKTtcbiAgICBjb25zdCBBMiA9IGN1cnZlLkcyLm9uZTtcblxuICAgIGNvbnN0IEIxID0gcHJvb2YucG9seW5vbWlhbHMuVzI7XG4gICAgY29uc3QgQjIgPSB2ay5YXzI7XG5cbiAgICByZXR1cm4gYXdhaXQgY3VydmUucGFpcmluZ0VxKEcxLm5lZyhBMSksIEEyLCBCMSwgQjIpO1xufVxuXG5cbmV4cG9ydCBmdW5jdGlvbiBjb21wdXRlTGFncmFuZ2VMaVNpKHJvb3RzLCB4LCB4aSwgY3VydmUpIHtcbiAgICBjb25zdCBGciA9IGN1cnZlLkZyO1xuICAgIGNvbnN0IGxlbiA9IHJvb3RzLmxlbmd0aDtcblxuICAgIGNvbnN0IG51bSA9IEZyLnN1YihGci5leHAoeCwgbGVuKSwgeGkpO1xuICAgIGNvbnN0IGRlbjEgPSBGci5tdWwoRnIuZShsZW4pLCBGci5leHAocm9vdHNbMF0sIGxlbiAtIDIpKTtcblxuICAgIGNvbnN0IExpID0gW107XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgICAgICBjb25zdCBkZW4yID0gcm9vdHNbKChsZW4gLSAxKSAqIGkpICUgbGVuXTtcbiAgICAgICAgY29uc3QgZGVuMyA9IEZyLnN1Yih4LCByb290c1tpXSk7XG5cbiAgICAgICAgTGlbaV0gPSBGci5kaXYobnVtLCBGci5tdWwoRnIubXVsKGRlbjEsIGRlbjIpLCBkZW4zKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIExpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY29tcHV0ZUxhZ3JhbmdlTGlTMihyb290cywgdmFsdWUsIHhpMCwgeGkxLCBjdXJ2ZSkge1xuICAgIGNvbnN0IEZyID0gY3VydmUuRnI7XG5cbiAgICBjb25zdCBMaSA9IFtdO1xuXG4gICAgY29uc3QgbGVuID0gcm9vdHNbMF0ubGVuZ3RoO1xuICAgIGNvbnN0IG4gPSBsZW4gKiByb290cy5sZW5ndGg7XG5cbiAgICBjb25zdCBudW0xID0gRnIuZXhwKHZhbHVlLCBuKTtcbiAgICBjb25zdCBudW0yID0gRnIubXVsKEZyLmFkZCh4aTAsIHhpMSksIEZyLmV4cCh2YWx1ZSwgbGVuKSk7XG4gICAgY29uc3QgbnVtMyA9IEZyLm11bCh4aTAsIHhpMSk7XG4gICAgY29uc3QgbnVtID0gRnIuYWRkKEZyLnN1YihudW0xLCBudW0yKSwgbnVtMyk7XG5cbiAgICBsZXQgZGVuMSA9IEZyLm11bChGci5tdWwoRnIuZShsZW4pLCByb290c1swXVswXSksIEZyLnN1Yih4aTAsIHhpMSkpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgICAgY29uc3QgZGVuMiA9IHJvb3RzWzBdWyhsZW4gLSAxKSAqIGkgJSBsZW5dO1xuICAgICAgICBjb25zdCBkZW4zID0gRnIuc3ViKHZhbHVlLCByb290c1swXVtpXSk7XG5cbiAgICAgICAgY29uc3QgZGVuID0gRnIubXVsKGRlbjEsRnIubXVsKGRlbjIsIGRlbjMpKTtcblxuICAgICAgICBMaVtpXSA9IEZyLmRpdihudW0sIGRlbik7XG4gICAgfVxuXG4gICAgZGVuMSA9IEZyLm11bChGci5tdWwoRnIuZShsZW4pLCByb290c1sxXVswXSksIEZyLnN1Yih4aTEsIHhpMCkpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgICAgY29uc3QgZGVuMiA9IHJvb3RzWzFdWyhsZW4gLSAxKSAqIGkgJSBsZW5dO1xuICAgICAgICBjb25zdCBkZW4zID0gRnIuc3ViKHZhbHVlLCByb290c1sxXVtpXSk7XG5cbiAgICAgICAgY29uc3QgZGVuID0gRnIubXVsKGRlbjEsRnIubXVsKGRlbjIsIGRlbjMpKTtcblxuICAgICAgICBMaVtpICsgbGVuXSA9IEZyLmRpdihudW0sIGRlbik7XG4gICAgfVxuXG4gICAgcmV0dXJuIExpO1xufVxuIiwiLypcbiAgICBDb3B5cmlnaHQgMjAyMSAwS0lNUyBhc3NvY2lhdGlvbi5cblxuICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHNuYXJrSlMuXG5cbiAgICBzbmFya0pTIGlzIGEgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdFxuICAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3JcbiAgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuXG4gICAgc25hcmtKUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVFxuICAgIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWVxuICAgIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpY1xuICAgIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cblxuICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gICAgYWxvbmcgd2l0aCBzbmFya0pTLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuKi9cblxuaW1wb3J0IHtnZXRDdXJ2ZUZyb21OYW1lfSBmcm9tIFwiLi9jdXJ2ZXMuanNcIjtcbmltcG9ydCB7dXRpbHN9IGZyb20gXCJmZmphdmFzY3JpcHRcIjtcblxuY29uc3Qge3Vuc3RyaW5naWZ5QmlnSW50c30gPSB1dGlscztcblxuZnVuY3Rpb24gaTJoZXgoaSkge1xuICAgIHJldHVybiAoXCIwXCIgKyBpLnRvU3RyaW5nKDE2KSkuc2xpY2UoLTIpO1xufVxuXG5mdW5jdGlvbiBwMjU2KG4pIHtcbiAgICBsZXQgbnN0ciA9IG4udG9TdHJpbmcoMTYpO1xuICAgIHdoaWxlIChuc3RyLmxlbmd0aCA8IDY0KSBuc3RyID0gXCIwXCIgKyBuc3RyO1xuICAgIG5zdHIgPSBgMHgke25zdHJ9YDtcbiAgICByZXR1cm4gbnN0cjtcbn1cblxuZXhwb3J0IGRlZmF1bHQgYXN5bmMgZnVuY3Rpb24gZmZsb25rRXhwb3J0Q2FsbERhdGEoX3B1YiwgX3Byb29mKSB7XG4gICAgY29uc3QgcHJvb2YgPSB1bnN0cmluZ2lmeUJpZ0ludHMoX3Byb29mKTtcbiAgICBjb25zdCBwdWIgPSB1bnN0cmluZ2lmeUJpZ0ludHMoX3B1Yik7XG5cbiAgICBjb25zdCBjdXJ2ZSA9IGF3YWl0IGdldEN1cnZlRnJvbU5hbWUocHJvb2YuY3VydmUpO1xuICAgIGNvbnN0IEcxID0gY3VydmUuRzE7XG4gICAgY29uc3QgRnIgPSBjdXJ2ZS5GcjtcblxuICAgIGxldCBpbnB1dHMgPSBcIlwiO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcHViLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGlmIChpbnB1dHMgIT09IFwiXCIpIGlucHV0cyA9IGlucHV0cyArIFwiLFwiO1xuICAgICAgICBpbnB1dHMgPSBpbnB1dHMgKyBwMjU2KHB1YltpXSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGBbJHtwMjU2KHByb29mLnBvbHlub21pYWxzLkMxWzBdKX0sICR7cDI1Nihwcm9vZi5wb2x5bm9taWFscy5DMVsxXSl9LGAgK1xuICAgIGAke3AyNTYocHJvb2YucG9seW5vbWlhbHMuQzJbMF0pfSwke3AyNTYocHJvb2YucG9seW5vbWlhbHMuQzJbMV0pfSxgICtcbiAgICBgJHtwMjU2KHByb29mLnBvbHlub21pYWxzLlcxWzBdKX0sJHtwMjU2KHByb29mLnBvbHlub21pYWxzLlcxWzFdKX0sYCArXG4gICAgYCR7cDI1Nihwcm9vZi5wb2x5bm9taWFscy5XMlswXSl9LCR7cDI1Nihwcm9vZi5wb2x5bm9taWFscy5XMlsxXSl9LGAgK1xuICAgIGAke3AyNTYocHJvb2YuZXZhbHVhdGlvbnMucWwpfSwke3AyNTYocHJvb2YuZXZhbHVhdGlvbnMucXIpfSwke3AyNTYocHJvb2YuZXZhbHVhdGlvbnMucW0pfSxgICtcbiAgICBgJHtwMjU2KHByb29mLmV2YWx1YXRpb25zLnFvKX0sJHtwMjU2KHByb29mLmV2YWx1YXRpb25zLnFjKX0sJHtwMjU2KHByb29mLmV2YWx1YXRpb25zLnMxKX0sYCArXG4gICAgYCR7cDI1Nihwcm9vZi5ldmFsdWF0aW9ucy5zMil9LCR7cDI1Nihwcm9vZi5ldmFsdWF0aW9ucy5zMyl9LCR7cDI1Nihwcm9vZi5ldmFsdWF0aW9ucy5hKX0sYCArXG4gICAgYCR7cDI1Nihwcm9vZi5ldmFsdWF0aW9ucy5iKX0sJHtwMjU2KHByb29mLmV2YWx1YXRpb25zLmMpfSwke3AyNTYocHJvb2YuZXZhbHVhdGlvbnMueil9LGAgK1xuICAgIGAke3AyNTYocHJvb2YuZXZhbHVhdGlvbnMuencpfSwke3AyNTYocHJvb2YuZXZhbHVhdGlvbnMudDF3KX0sJHtwMjU2KHByb29mLmV2YWx1YXRpb25zLnQydyl9LGAgK1xuICAgIGAke3AyNTYocHJvb2YuZXZhbHVhdGlvbnMuaW52KX1dLGAgK1xuICAgIGBbJHtpbnB1dHN9XWA7XG59XG4iLCIvKlxuICAgIENvcHlyaWdodCAyMDIyIGlkZW4zIGFzc29jaWF0aW9uLlxuXG4gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2Ygc25hcmtqcy5cblxuICAgIHNuYXJranMgaXMgYSBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3JcbiAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlXG4gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pXG4gICAgYW55IGxhdGVyIHZlcnNpb24uXG5cbiAgICBzbmFya2pzIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZXG4gICAgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yXG4gICAgbW9yZSBkZXRhaWxzLlxuXG4gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcgd2l0aFxuICAgIHNuYXJranMuIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXG4qL1xuXG5leHBvcnQgeyBkZWZhdWx0IGFzIHNldHVwIH0gZnJvbSBcIi4vZmZsb25rX3NldHVwLmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHByb3ZlIH0gZnJvbSBcIi4vZmZsb25rX3Byb3ZlLmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGZ1bGxQcm92ZSB9IGZyb20gXCIuL2ZmbG9ua19mdWxsX3Byb3ZlLmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHZlcmlmeSB9IGZyb20gXCIuL2ZmbG9ua192ZXJpZnkuanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgZXhwb3J0U29saWRpdHlWZXJpZmllciB9IGZyb20gXCIuL2ZmbG9ua19leHBvcnRfc29saWRpdHlfdmVyaWZpZXIuanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgZXhwb3J0U29saWRpdHlDYWxsRGF0YSB9IGZyb20gXCIuL2ZmbG9ua19leHBvcnRfY2FsbGRhdGEuanNcIjtcbiJdLCJuYW1lcyI6WyJ0b1N0cmluZyIsImdldFJhbmRvbUJ5dGVzIiwic3RyaW5naWZ5QmlnSW50cyIsInVuc3RyaW5naWZ5QmlnSW50cyIsImxvZzIiLCJQQUdFX1NJWkUiLCJibHMxMjM4MXIiLCJibjEyOHIiLCJnZXRDdXJ2ZUZyb21SIiwiY3JlYXRlTmV3IiwicmVhZEV4aXN0aW5nIiwidG1wQnVmZjMyIiwidG1wQnVmZjMydiIsInRtcEJ1ZmY2NCIsInRtcEJ1ZmY2NHYiLCJtZW1GaWxlLmNyZWF0ZU5ldyIsImJpZ01lbUZpbGUuY3JlYXRlTmV3IiwibWVtRmlsZS5yZWFkRXhpc3RpbmciLCJiaWdNZW1GaWxlLnJlYWRFeGlzdGluZyIsImZhc3RGaWxlLnJlYWRFeGlzdGluZyIsImZhc3RGaWxlLmNyZWF0ZU92ZXJyaWRlIiwiYXNzZXJ0IiwiYnl0ZUxlbmd0aCIsIndyaXRlIiwiYXNjaWkiLCJyZXF1aXJlJCQwIiwiYmFzZTY0IiwicmVxdWlyZSQkMSIsImhleCIsInJlcXVpcmUkJDIiLCJ1dGY4IiwicmVxdWlyZSQkMyIsInV0ZjE2bGUiLCJyZXF1aXJlJCQ0IiwiYmxha2UyYldhc21Nb2R1bGUiLCJibGFrZTJiV2FzbSIsIkJsYWtlMmIiLCJzYW1lUmF0aW8iLCJiaW5GaWxlVXRpbHMuc3RhcnRXcml0ZVNlY3Rpb24iLCJiaW5GaWxlVXRpbHMuZW5kV3JpdGVTZWN0aW9uIiwiZ2V0Q3VydmUiLCJiaW5GaWxlVXRpbHMud3JpdGVCaWdJbnQiLCJyZWFkSGVhZGVyIiwiYmluRmlsZVV0aWxzLnN0YXJ0UmVhZFVuaXF1ZVNlY3Rpb24iLCJiaW5GaWxlVXRpbHMuZW5kUmVhZFNlY3Rpb24iLCJiaW5GaWxlVXRpbHMucmVhZEJpZ0ludCIsImJpbkZpbGVVdGlscy5yZWFkQmluRmlsZSIsIkYxRmllbGQiLCJyZWFkQ29udHJpYnV0aW9uIiwid3JpdGVDb250cmlidXRpb24iLCJ3dG5zVXRpbHMucmVhZEhlYWRlciIsInprZXlVdGlscy5yZWFkSGVhZGVyIiwiYmluRmlsZVV0aWxzLnJlYWRTZWN0aW9uIiwiV2l0bmVzc0NhbGN1bGF0b3JCdWlsZGVyIiwiYmluRmlsZVV0aWxzLmNyZWF0ZUJpbkZpbGUiLCJ3dG5zVXRpbHMud3JpdGVCaW4iLCJ3dG5zX2NhbGN1bGF0ZSIsImdyb3RoMTZfcHJvdmUiLCJjdXJ2ZXMuZ2V0Q3VydmVGcm9tTmFtZSIsInB1YmxpY0lucHV0c0FyZVZhbGlkIiwiaXNXZWxsQ29uc3RydWN0ZWQiLCJwMjU2IiwiYmxha2UyYiIsIm1pc2Mucm5nRnJvbUJlYWNvblBhcmFtcyIsImtleVBhaXIuY3JlYXRlUFRhdUtleSIsInB0YXVVdGlscy53cml0ZVBUYXVIZWFkZXIiLCJwdGF1VXRpbHMuY2FsY3VsYXRlRmlyc3RDaGFsbGVuZ2VIYXNoIiwibWlzYy5mb3JtYXRIYXNoIiwidXRpbHMucmVhZFBUYXVIZWFkZXIiLCJ1dGlscy5yZWFkQ29udHJpYnV0aW9ucyIsInV0aWxzLmNhbGN1bGF0ZUZpcnN0Q2hhbGxlbmdlSGFzaCIsIm1pc2MuaGFzaElzRXF1YWwiLCJ1dGlscy53cml0ZVBUYXVIZWFkZXIiLCJ1dGlscy5mcm9tUHRhdVB1YktleVJwciIsInV0aWxzLndyaXRlQ29udHJpYnV0aW9ucyIsIm1pc2Muc2FtZVJhdGlvIiwidXRpbHMua2V5RnJvbUJlYWNvbiIsImtleVBhaXIuZ2V0RzJzcCIsInV0aWxzLnRvUHRhdVB1YktleVJwciIsIm1pc2MuYnl0ZUFycmF5MmhleCIsIm1pc2MuZ2V0UmFuZG9tQnl0ZXMiLCJtaXNjLnJlYWRVSW50MzJCRSIsIm1pc2MuZ2V0UmFuZG9tUm5nIiwiYmVhY29uIiwibWlzYy5oZXgyQnl0ZUFycmF5IiwiYmluRmlsZVV0aWxzLmNvcHlTZWN0aW9uIiwiU1VCQVJSQVlfU0laRSIsIkJpZ0FycmF5SGFuZGxlciIsIl9CaWdBcnJheSIsIkJpZ0FycmF5IiwibG9hZFN5bXMiLCJ3dG5zVXRpbHMud3JpdGUiLCJjdXJ2ZXMuZ2V0Q3VydmVGcm9tUiIsInprZXlVdGlscy5yZWFkTVBDUGFyYW1zIiwiemtleVV0aWxzLndyaXRlSGVhZGVyIiwiemtleVV0aWxzLndyaXRlTVBDUGFyYW1zIiwibWlzYy5jbG9uZUhhc2hlciIsImJpbkZpbGVVdGlscy5zZWN0aW9uSXNFcXVhbCIsInV0aWxzLmhhc2hQdWJLZXkiLCJ1dGlscy5oYXNoRzEiLCJleHBvcnRWZXJpZmljYXRpb25LZXkiLCJmZmxvbmtFeHBvcnRTb2xpZGl0eVZlcmlmaWVyQ21kIiwiZ2xvYmFsIiwicGxvbmtfcHJvdmUiLCJmcm9tT2JqZWN0VmsiLCJjYWxjdWxhdGVQSSIsImlzVmFsaWRQYWlyaW5nIl0sIm1hcHBpbmdzIjoiOzs7SUFBQTtJQUNBLE1BQU0sTUFBTSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUs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QyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDM0YsSUFBSSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzVDLElBQUksS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxVQUFVLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDM0YsQ0FBQztBQUNEO0lBQ0E7SUFDQSxTQUFTLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUU7SUFDakMsSUFBSSxNQUFNLENBQUMsR0FBRyxTQUFTLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUN6QyxJQUFJLE1BQU0sQ0FBQyxHQUFHLElBQUksUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLFVBQVUsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDakUsSUFBSSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDNUMsSUFBSSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDbkgsSUFBSSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUMxQyxDQUFDO0FBQ0Q7SUFDQTtJQUNBLFNBQVMsU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFO0lBQ2hDLElBQUksRUFBRSxHQUFHLEVBQUUsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDO0lBQy9CLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDZixJQUFJLE1BQU0sQ0FBQyxHQUFHLElBQUksV0FBVyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLFVBQVUsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3RFLElBQUksTUFBTSxDQUFDLEdBQUcsSUFBSSxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzlCLElBQUksQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO0lBQzdFLElBQUksT0FBTyxVQUFVLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUN0QyxDQUFDO0FBQ0Q7SUFDQTtJQUNBLFNBQVMsU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFO0lBQ2hDLElBQUksRUFBRSxHQUFHLEVBQUUsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDO0lBQy9CLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDZixJQUFJLE1BQU0sQ0FBQyxHQUFHLElBQUksUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLFVBQVUsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDakUsSUFBSSxNQUFNLENBQUMsR0FBRyxJQUFJLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDOUIsSUFBSSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtJQUMvQixRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDckUsS0FBSztJQUNMLElBQUksT0FBTyxVQUFVLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUN0QyxDQUFDO0FBQ0Q7SUFDQSxTQUFTQSxVQUFRLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRTtJQUM1QixJQUFJLE9BQU8sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM3QixDQUFDO0FBQ0Q7SUFD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LENBQUM7SUFDakQsS0FBSztBQUNMO0lBQ0EsSUFBSSxDQUFDLENBQUMsVUFBVSxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMzQztJQUNBLElBQUksQ0FBQyxDQUFDLElBQUksR0FBRyxTQUFTLENBQUMsRUFBRTtJQUN6QixRQUFRLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQztJQUNyQixRQUFRLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDdkMsUUFBUSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDdkMsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQ3JFLFFBQVEsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsT0FBTyxJQUFJLENBQUM7QUFDNUM7SUFDQSxRQUFRLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUM7SUFDekIsUUFBUSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUM1QixRQUFRLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzVCLFFBQVEsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQztJQUN6QixRQUFRLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENB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Q0FBQztJQUNyQixTQUFTO0lBQ1QsS0FBSyxDQUFDO0FBQ047SUFDQSxJQUFJLENBQUMsQ0FBQyxJQUFJLEdBQUcsU0FBUyxDQUFDLEVBQUU7SUFDekIsUUFBUSxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUM7SUFDdkIsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDeEMsUUFBUSxNQUFNLElBQUksR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDNUMsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ3JELFFBQVEsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsT0FBTyxJQUFJLENBQUM7SUFDNUMsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNoQyxRQUFRLElBQUksQ0FBQyxDQUFDO0lBQ2QsUUFBUSxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsRUFBRTtJQUNsQyxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUMvQyxTQUFTLE1BQU07SUFDZixZQUFZLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUM1RCxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUM3QixTQUFTO0lBQ1QsUUFBUSxPQUFPLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMvQyxLQUFLLENBQUM7SUFDTixDQUFDO0FBQ0Q7QUFDQTtJQUNBLFNBQVMsWUFBWSxDQUFDLENBQUMsRUFBRTtJQUN6QixJQUFJLENBQUMsQ0FBQyxJQUFJLEdBQUcsV0FBVztJQUN4QixRQUFRLE1BQU0sSUFBSSxLQUFLLENBQUMsNEJBQTRCLENBQUMsQ0FBQztJQUN0RCxLQUFLLENBQUM7SUFDTixDQUFDO0FBQ0Q7SUFDQSxTQUFTLFlBQVksQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFO0FBQ3RDO0lBQ0EsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNsQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2xDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDNUQ7SUFDQSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2xDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDbEMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxJQUFJLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUMzRDtJQUNBLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDbEMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNsQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ3pEO0lBQ0EsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNsQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2xDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDekQsQ0FBQztBQUNEO0lBQ0EsU0FBUyxXQUFXLENBQUMsRUFBRSxFQUFFO0lBQ3pCLElBQUksWUFBWSxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNqQyxJQUFJLFlBQVksQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDakMsSUFBSSxZQUFZLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2pDLElBQUksWUFBWSxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUNqQztJQUNBLElBQUksWUFBWSxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNqQyxJQUFJLFlBQVksQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDakMsSUFBSSxZQUFZLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2pDLElBQUksWUFBWSxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNqQyxDQUFDO0FBQ0Q7SUFDQSxNQUFNLE1BQU0sQ0FBQztBQUNiO0lBQ0EsSUFBSSxXQUFXLENBQUMsSUFBSSxFQUFFO0lBQ3RCLFFBQVEsSUFBSSxHQUFHLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN6QyxRQUFRLElBQUksQ0FBQyxLQUFLLEdBQUc7SUFDckIsWUFBWSxVQUFVO0lBQ3RCLFlBQVksVUFBVTtJQUN0QixZQUFZLFVBQVU7SUFDdEIsWUFBWSxVQUFVO0lBQ3RCLFlBQVksSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNuQixZQUFZLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDbkIsWUFBWSxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ25CLFlBQVksSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNuQixZQUFZLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDbkIsWUFBWSxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ25CLFlBQVksSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNuQixZQUFZLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDbkIsWUFBWSxDQUFDO0lBQ2IsWUFBWSxDQUFDO0lBQ2IsWUFBWSxDQUFDO0lBQ2IsWUFBWSxDQUFDO0lBQ2IsU0FBUyxDQUFDO0lBQ1YsUUFBUSxJQUFJLENBQUMsR0FBRyxHQUFHLEVBQUUsQ0FBQztJQUN0QixRQUFRLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDbEMsS0FBSztBQUNMO0lBQ0EsSUFBSSxPQUFPLEdBQUc7SUFDZCxRQUFRLElBQUksSUFBSSxDQUFDLEdBQUcsSUFBSSxFQUFFLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQzFDLFFBQVEsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBQ3JDLEtBQUs7QUFDTDtJQUNBLElBQUksT0FBTyxHQUFHO0lBQ2QsUUFBUSxPQUFPLEdBQUcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxFQUFFLFdBQVcsQ0FBQyxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO0lBQ3JFLEtBQUs7QUFDTDtJQUNBLElBQUksUUFBUSxHQUFHO0lBQ2YsUUFBUSxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDekMsS0FBSztBQUNMO0lBQ0EsSUFBSSxNQUFNLEdBQUc7SUFDYjtJQUNBLFFBQVEsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDOUQ7SUFDQTtJQUNBLFFBQVEsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3hEO0lBQ0E7SUFDQSxRQUFRLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDckY7SUFDQSxRQUFRLElBQUksQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDO0FBQ3JCO0lBQ0EsUUFBUSxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3BELFFBQVEsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxPQUFPO0lBQ3hDLFFBQVEsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FB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QVksSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUM7SUFDbkMsU0FBUztJQUNULEtBQUs7QUFDTDtJQUNBLElBQUksR0FBRyxDQUFDLENBQUMsRUFBRTtJQUNYLFFBQVEsSUFBSSxDQUFDLENBQUMsTUFBTSxJQUFJLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUNwQyxRQUFRLE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMxQyxRQUFRLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDN0I7SUFDQSxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBSSxJQUFJLENBQUM7SUFDNUIsUUFBUSxJQUFJLENBQUMsQ0FBQyxNQUFNLElBQUksQ0FBQyxFQUFFO0lBQzNCLFlBQVksTUFBTSxJQUFJLEtBQUssQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDO0lBQzFELFNBQVM7SUFDVCxRQUFRLE1BQU0sR0FBRyxHQUFHLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDL0MsUUFBUSxPQUFPLEdBQUcsQ0FBQztJQUNuQixLQUFLO0FBQ0w7SUFDQSxJQUFJLElBQUksQ0FBQyxDQUFDLEVBQUU7QUFDWjtJQUNBLFFBQVEsSUFBSSxDQUFDLENBQUMsTUFBTSxJQUFJLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUNwQyxRQUFRLE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMxQyxRQUFRLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDN0IsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDO0lBQzVCLFFBQVEsSUFBSSxDQUFDLENBQUMsTUFBTSxJQUFJLENBQUMsRUFBRTtJQUMzQixZ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QUM7QUFDNUQ7SUFDQSxJQUFJLE1BQU0sR0FBRyxHQUFHLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzdCO0lBQ0EsSUFBSSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsRUFBRSxFQUFFO0lBQ2hDLFFBQVEsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN2RSxRQUFRLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzdFLEtBQUs7QUFDTDtJQUNBLElBQUksT0FBTyxHQUFHLENBQUM7SUFDZixDQUFDO0FBQ0Q7SUFDQTtBQUNBO0lBQ0EsTUFBTSxPQUFPLENBQUM7SUFDZCxJQUFJLFdBQVcsQ0FBQyxDQUFDLEVBQUU7SUFDbkIsUUFBUSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztJQUN2QixRQUFRLElBQUksQ0FBQyxHQUFHLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzdCLFFBQVEsSUFBSSxDQUFDLElBQUksR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDOUIsUUFBUSxJQUFJLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMzQixRQUFRLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ25CLFFBQVEsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUM7SUFDdEMsUUFBUSxJQUFJLENBQUMsR0FBRyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM3QixRQUFRLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDO0lBQ3ZDLFFBQVEsSUFBSSxDQUFDLFNBQVMsR0FBRyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzdDLFFBQVEsSUFBSSxDQUFDLElBQUksR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDO0FBQ3BFO0lBQ0EsUUFBUSxJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDM0QsUUFBUSxJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQzlCLFFBQVEsSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUM3QixRQUFRLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDekQsUUFBUSxJQUFJLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ25DO0lBQ0EsUUFBUSxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUM7SUFDMUMsUUFBUSxJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUM7SUFDNUIsUUFBUSxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDdEMsUUFBUSxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFO0lBQ3pDLFlBQVksSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUM7SUFDM0MsWUFBWSxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3RDLFNBQVM7QUFDVDtBQUNBO0lBQ0EsUUFBUSxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNuQixRQUFRLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztBQUM3QjtJQUNBLFFBQVEsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsS0FBSyxJQUFJLENBQUMsSUFBSSxFQUFFO0lBQ2pELFlBQVksSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNoQyxZQUFZLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDO0lBQ3hDLFNBQVM7QUFDVDtJQUNBLFFBQVEsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ25EO0lBQ0EsUUFBUSxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDeEI7SUFDQSxRQUFRLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxHQUFHLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0FBQzVEO0lBQ0EsUUFBUSxJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDL0MsUUFBUSxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDakQsUUFBUSxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQzVCLFFBQVEsSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztJQUM5QjtJQUNBLFFBQVEsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUMzQyxRQUFRLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDL0MsS0FBSztBQUNMO0lBQ0EsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRTtJQUNYLFFBQVEsSUFBSSxHQUFHLENBQUM7SUFDaEIsUUFBUSxJQUFJLENBQUMsQ0FBQyxFQUFFO0lBQ2hCLFlBQVksR0FBRyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM1QixTQUFTLE1BQU0sSUFBSSxDQUFDLEVBQUUsRUFBRSxFQUFFO0lBQzFCLFlBQVksR0FBRyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDakMsU0FBUztJQUNULFFBQVEsSUFBSSxHQUFHLEdBQUcsQ0FBQyxFQUFFO0lBQ3JCLFlBQVksSUFBSSxJQUFJLEdBQUcsQ0FBQyxHQUFHLENBQUM7SUFDNUIsWUFBWSxJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsQ0FBQyxFQUFFLElBQUksR0FBRyxJQUFJLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNyRCxZQUFZLE9BQU8sSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUM7SUFDakMsU0FBUyxNQUFNO0lBQ2YsWUFBWSxPQUFPLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDO0lBQ3JELFNBQVM7QUFDVDtJQUNBLEtBQUs7QUFDTDtJQUNBLElBQUksR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUU7SUFDZCxRQUFRLE1BQU0sR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDMUIsUUFBUSxPQUFPLEdBQUcsSUFBSSxJQUFJLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQztJQUNoRCxLQUFLO0FBQ0w7SUFDQSxJQUFJLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFO0lBQ2QsUUFBUSxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMzQyxLQUFLO0FBQ0w7SUFDQSxJQUFJLEdBQUcsQ0FBQyxDQUFDLEVBQUU7SUFDWCxRQUFRLE9BQU8sQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNoQyxLQUFLO0FBQ0w7SUFDQSxJQUFJLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFO0lBQ2QsUUFBUSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQzVCLEtBQUs7QUFDTDtJQUNBLElBQUksU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUU7SUFDdkIsUUFBUSxPQUFPLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQztJQUMzQyxLQUFLO0FBQ0w7SUFDQSxJQUFJLE1BQU0sQ0FBQyxDQUFDLEVBQUU7SUFDZCxRQUFRLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDOUIsS0FBSztBQUNMO0lBQ0EsSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRTtJQUNiLFFBQVEsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3BCLEtBQUs7QUFDTDtJQUNBLElBQUksR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUU7SUFDZCxRQUFRLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNwQixLQUFLO0FBQ0w7SUFDQSxJQUFJLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFO0lBQ2IsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNwRCxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3BELFFBQVEsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDO0lBQ3ZCLEtBQUs7QUFDTDtJQUNBLElBQUksRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUU7SUFDYixRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3BELFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENB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QUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRTtJQUN6QixRQUFRLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzFELEtBQUs7QUFDTDtJQUNBLElBQUksUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFO0lBQ3pCLFFBQVEsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDMUQsS0FBSztBQUNMO0FBQ0E7SUFDQTtJQUNBLElBQUksU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUU7SUFDdkIsUUFBUSxPQUFPLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUMzQyxLQUFLO0FBQ0w7SUFDQTtJQUNBLElBQUksU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUU7SUFDdkIsUUFBUSxPQUFPLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUMzQyxLQUFLO0FBQ0w7SUFDQSxJQUFJLFVBQVUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFO0lBQ3hCLFFBQVEsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUMxRCxLQUFLO0FBQ0w7SUFDQSxJQUFJLFVBQVUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFO0lBQ3hCLFFBQVEsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUFFLElBQUks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QUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ2hDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDbEMsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNqQyxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQy9CLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDbkMsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLFVBQVUsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUN0QyxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQ25DO0lBQ0EsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsY0FBYyxFQUFFLENBQUM7QUFDckM7SUFDQSxRQUFRLE1BQU0sSUFBSSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ25ELFFBQVEsTUFBTSxJQUFJLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDbkQsUUFBUSxNQUFNLElBQUksR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNuRCxRQUFRLE1BQU0sSUFBSSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ25ELFFBQVEsTUFBTSxJQUFJLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDbkQsUUFBUSxNQUFNLElBQUksR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFD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SUFDM0MsWUFBWSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJO0lBQzFCLGdCQUFnQixDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO0FBQ3pFO0lBQ0EsZ0JBQWdCLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQ3JHO0lBQ0EsZ0JBQWdCLENBQUMsQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDeEYsZ0JBQWdCLENBQUMsQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDeEYsZ0JBQWdCLENBQUMsQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFDekYsZ0JBQWdCLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDM0UsZ0JBQWdCLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3ZCLGFBQWEsQ0FBQztJQUNkLFNBQVMsQ0FBQztJQUNWLEtBQUssTUFBTTtJQUNYLFFBQVEsQ0FBQyxDQUFDLE9BQU87SUFDakIsWUFBWSxDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ25ELFlBQVksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNuRCxZQUFZLENBQUMsQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDbkQsWUFBWSxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzNDLFlBQVksQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSTtJQUMxQixnQkFBZ0IsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztBQUN6RTtJQUNBLGdCQUFnQixDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUNyRztJQUNBLGdCQUFnQixDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3hGLGdCQUFnQixDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3hGLGdCQUFnQixDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBQ3pGLGdCQUFnQixDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzNFLGdCQUFnQixDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN2QixhQUFhLENBQUM7SUFDZCxTQUFTLENBQUM7SUFDVixLQUFLO0lBQ0wsQ0FBQztBQUNEO0lBQ0EsSUFBSSxNQUFNLEdBQUcsRUFBRSxDQUFDO0FBQ2hCO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7QUFDQTtJQUNBLFNBQVMsT0FBTyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUU7SUFDdkIsSUFBSSxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ3hDLENBQUM7QUFDRDtJQUNBLFNBQVMsUUFBUSxDQUFDLENBQUMsRUFBRTtJQUNyQixJQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNqQixDQUFDO0FBQ0Q7SUFDQSxTQUFTLE9BQU8sQ0FBQyxDQUFDLEVBQUU7SUFDcEIsSUFBSSxPQUFPLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxDQUFDO0lBQ3pCLENBQUM7QUFDRDtJQUNBLFNBQVMsTUFBTSxDQUFDLENBQUMsRUFBRTtJQUNuQixJQUFJLE9BQU8sQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFLENBQUM7SUFDekIsQ0FBQztBQUNEO0lBQ0EsU0FBUyxZQUFZLENBQUMsQ0FBQyxFQUFFO0lBQ3pCLElBQUksT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDO0lBQ2xCLENBQUM7QUFDRDtJQUNBLFNBQVMsVUFBVSxDQUFDLENBQUMsRUFBRTtJQUN2QixJQUFJLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQztJQUNsQixDQUFDO0FBQ0Q7SUFDQSxTQUFTLFdBQVcsQ0FBQyxDQUFDLEVBQUU7SUFDeEIsSUFBSSxJQUFJLFlBQVksQ0FBQyxDQUFDLENBQUMsRUFBRTtJQUN6QixRQUFRLE9BQU8sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0lBQ3hDLEtBQUssTUFBTTtJQUNYLFFBQVEsT0FBTyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQztJQUNwQyxLQUFLO0lBQ0wsQ0FBQztBQUNEO0lBQ0EsU0FBUyxHQUFHLENBQUMsQ0FBQyxFQUFFO0lBQ2hCLElBQUksT0FBTyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUMzQixDQUFDO0FBQ0Q7SUFDQSxTQUFTLE1BQU0sQ0FBQyxDQUFDLEVBQUU7SUFDbkIsSUFBSSxPQUFPLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDekIsQ0FBQztBQUNEO0lBQ0EsU0FBUyxRQUFRLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRTtJQUN4QixJQUFJLElBQUksQ0FBQyxHQUFHLEVBQUUsRUFBRSxJQUFJLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsSUFBSSxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQztJQUNqRSxJQUFJLE9BQU8sSUFBSSxLQUFLLEVBQUUsRUFBRTtJQUN4QixRQUFRLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDO0lBQ3JCLFFBQVEsS0FBSyxHQUFHLENBQUMsQ0FBQztJQUNsQixRQUFRLEtBQUssR0FBRyxDQUFDLENBQUM7SUFDbEIsUUFBUSxDQUFDLEdBQUcsSUFBSSxDQUFDO0lBQ2pCLFFBQVEsQ0FBQyxHQUFHLElBQUksQ0FBQztJQUNqQixRQUFRLElBQUksR0FBRyxLQUFLLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDO0lBQ2xDLFFBQVEsSUFBSSxHQUFHLEtBQUssSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUM7SUFDbEMsS0FBSztJQUNMLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxNQUFNLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsR0FBRyxPQUFPLEdBQUcsQ0FBQyxDQUFDLFFBQVEsRUFBRSxHQUFHLG1CQUFtQixDQUFDLENBQUM7SUFDakcsSUFBSSxJQUFJLE9BQU8sQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUU7SUFDL0IsUUFBUSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNsQixLQUFLO0lBQ0wsSUFBSSxJQUFJLFlBQVksQ0FBQyxDQUFDLENBQUMsRUFBRTtJQUN6QixRQUFRLE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFDbEIsS0FBSztJQUNMLElBQUksT0FBTyxDQUFDLENBQUM7SUFDYixDQUFDO0FBQ0Q7SUFDQSxTQUFTLFFBQVEsQ0FBQyxDQUFDLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRTtJQUMvQixJQUFJLElBQUksR0FBRyxLQUFLLEVBQUUsRUFBRSxNQUFNLElBQUksS0FBSyxDQUFDLG1DQUFtQyxDQUFDLENBQUM7SUFDekUsSUFBSSxJQUFJLENBQUMsR0FBRyxFQUFFO0lBQ2QsUUFBUSxJQUFJLEdBQUcsQ0FBQyxHQUFHLEdBQUcsQ0FBQztJQUN2QixJQUFJLElBQUksWUFBWSxDQUFDLEdBQUcsQ0FBQyxFQUFFO0lBQzNCLFFBQVEsR0FBRyxHQUFHLEdBQUcsR0FBRyxDQUFDLEVBQUUsQ0FBQztJQUN4QixRQUFRLElBQUksR0FBRyxRQUFRLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ25DLEtBQUs7SUFDTCxJQUFJLE9BQU8sVUFBVSxDQUFDLEdBQUcsQ0FBQyxFQUFFO0lBQzVCLFFBQVEsSUFBSSxJQUFJLEtBQUssRUFBRSxFQUFFLE9BQU8sRUFBRSxDQUFDO0lBQ25DLFFBQVEsSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLEdBQUcsR0FBRyxDQUFDO0lBQzdDLFFBQVEsR0FBRyxHQUFHLEdBQUcsR0FBRyxFQUFFLENBQUM7SUFDdkIsUUFBUSxJQUFJLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLEdBQUcsQ0FBQztJQUNwQyxLQUFLO0lBQ0wsSUFBSSxPQUFPLENBQUMsQ0FBQztJQUNiLENBQUM7QUFDRDtJQUNBLFNBQVMsVUFBVSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUU7SUFDMUIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDekIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDekIsSUFBSSxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ3hDLENBQUM7QUFDRDtJQUNBLFNBQVMsYUFBYSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUU7SUFDN0IsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFLEVBQUUsT0FBTyxLQUFLLENBQUM7SUFDL0IsSUFBSSxJQUFJLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxPQUFPLElBQUksQ0FBQztJQUMvQixJQUFJLElBQUksVUFBVSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsT0FBTyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbEQsSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ3hCLENBQUM7QUFDRDtJQUNBLFNBQVMsWUFBWSxDQUFDLENBQUMsRUFBRTtJQUN6QixJQUFJLElBQUksQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNuQixJQUFJLElBQUksTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLE9BQU8sS0FBSyxDQUFDO0lBQ2hDLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsRUFBRSxPQUFPLElBQUksQ0FBQztJQUN0RCxJQUFJLElBQUksTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLGFBQWEsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksYUFBYSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxPQUFPLEtBQUssQ0FBQztJQUNoRixJQUFJLElBQUksQ0FBQyxHQUFHLEdBQUcsRUFBRSxPQUFPLElBQUksQ0FBQztJQUM3QjtJQUNBLENBQUM7QUFDRDtJQUNBLFNBQVMsSUFBSSxDQUFDLENBQUMsRUFBRTtJQUNqQixJQUFJLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQztJQUNsQixDQUFDO0FBQ0Q7SUFDQSxTQUFTLGVBQWUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFO0lBQy9CLElBQUksSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUN2QixRQUFRLENBQUMsR0FBRyxLQUFLO0lBQ2pCLFFBQVEsQ0FBQyxHQUFHLENBQUM7SUFDYixRQUFRLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2hCLElBQUksT0FBTyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUM7SUFDdEMsSUFBSSxJQUFJLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO0lBQ3pDLFFBQVEsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLFNBQVM7SUFDL0IsUUFBUSxDQUFDLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDekMsUUFBUSxJQUFJLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssS0FBSyxFQUFFLFNBQVM7SUFDL0MsUUFBUSxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7SUFDckMsWUFBWSxDQUFDLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNoQyxZQUFZLElBQUksTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLE9BQU8sS0FBSyxDQUFDO0lBQ3hDLFlBQVksSUFBSSxDQUFDLEtBQUssS0FBSyxFQUFFLFNBQVMsSUFBSSxDQUFDO0lBQzNDLFNBQVM7SUFDVCxRQUFRLE9BQU8sS0FBSyxDQUFDO0lBQ3JCLEtBQUs7SUFDTCxJQUFJLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7QUFDRDtJQUNBLFNBQVMsU0FBUyxDQUFDLENBQUMsRUFBRTtJQUN0QixJQUFJLElBQUksT0FBTyxHQUFHLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNsQyxJQUFJLElBQUksT0FBTyxLQUFLLFNBQVMsRUFBRSxPQUFPLE9BQU8sQ0FBQztJQUM5QyxJQUFJLElBQUksQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNuQixJQUFJLElBQUksSUFBSSxHQUFHLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM5QixJQUFJLElBQUksSUFBSSxJQUFJLEVBQUU7SUFDbEIsUUFBUSxPQUFPLGVBQWUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDaEYsSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMxQyxJQUFJLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDNUIsSUFBSSxLQUFLLElBQUksQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7SUFDeEMsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM5QixLQUFLO0lBQ0wsSUFBSSxPQUFPLGVBQWUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDakMsQ0FBQztBQUNEO0lBQ0EsTUFBTSxDQUFDLFNBQVMsR0FBRyxXQUFXLENBQUM7SUFDL0IsTUFBTSxDQUFDLEtBQUssR0FBRyxPQUFPLENBQUM7SUFDdkIsTUFBTSxDQUFDLFVBQVUsR0FBRyxZQUFZLENBQUM7SUFDakMsTUFBTSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUM7SUFDakIsTUFBTSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7SUFDdkIsTUFBTSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7SUFDekIsTUFBTSxDQUFDLE1BQU0sR0FBRyxRQUFRLENBQUM7SUFDekIsTUFBTSxDQUFDLE1BQU0sR0FBRyxRQUFRLENBQUM7SUFDekIsTUFBTSxDQUFDLE9BQU8sR0FBRyxTQUFTLENBQUM7SUFDM0IsTUFBTSxDQUFDLE1BQU0sR0FBRyxRQUFRLENBQUM7QUFDekI7SUFDQTtJQUNBO0FBQ0E7SUFDQTtBQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7QUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0FBQ0E7SUFDQTtJQUNBO0lBQ0E7QUFDQTtJQUNBLE1BQU0sUUFBUSxHQUFHLFNBQVMsQ0FBQztJQUMzQixNQUFNLE9BQU8sR0FBRyxPQUFPLENBQUM7SUFDeEIsTUFBTSxVQUFVLEdBQUcsaUJBQWlCLENBQUM7SUFDckMsTUFBTSxtQkFBbUIsR0FBRyxrQkFBa0IsQ0FBQztJQUMvQyxNQUFNLHNCQUFzQixHQUFHLHFCQUFxQixDQUFDO0lBQ3JELE1BQU0sWUFBWSxHQUFHLGFBQWEsQ0FBQztJQUNuQyxNQUFNLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLEdBQUcsTUFBTSxDQUFDO0FBQy9HO0lBQ0EsSUFBSSxTQUFTLEdBQUcsU0FBUyxRQUFRLENBQUMsTUFBTSxFQUFFLEVBQUUsRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFO0lBQ25FLElBQUksTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3pCLElBQUksTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUM1RCxJQUFJLE1BQU0sR0FBRyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDdEIsSUFBSSxNQUFNLEVBQUUsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ3JCO0lBQ0EsSUFBSSxNQUFNLE1BQU0sR0FBRyxPQUFPLElBQUksS0FBSyxDQUFDO0lBQ3BDLElBQUksSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFLE9BQU8sTUFBTSxDQUFDO0FBQzlDO0lBQ0EsSUFBSSxNQUFNLFNBQVMsR0FBRyxRQUFRLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxVQUFVLENBQUMsQ0FBQztJQUN4RCxJQUFJLE1BQU0sRUFBRSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDL0Q7SUFDQSxJQUFJLE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsRUFBRSxJQUFJLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUMzRixJQUFJLE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3RGLElBQUksTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQy9ELElBQUksTUFBTSxTQUFTLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQztJQUM3QixJQUFJLE1BQU0sRUFBRSxHQUFHLFNBQVMsSUFBSSxFQUFFLENBQUM7SUFDL0IsSUFBSSxNQUFNLEVBQUUsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxPQUFPLENBQUMsY0FBYyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ2hFO0lBQ0EsSUFBSSxNQUFNLFNBQVMsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDO0lBQzlCLElBQUksTUFBTSxTQUFTLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsT0FBTyxDQUFDLGNBQWMsQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUM5RTtJQUNBLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsR0FBRztJQUM3QixRQUFRLEVBQUUsRUFBRSxFQUFFO0lBQ2QsUUFBUSxHQUFHLEVBQUUsR0FBRztJQUNoQixRQUFRLEdBQUcsRUFBRSxHQUFHO0lBQ2hCLFFBQVEsQ0FBQyxFQUFFLENBQUM7SUFDWixRQUFRLElBQUksRUFBRSxJQUFJO0lBQ2xCLFFBQVEsS0FBSyxFQUFFLEtBQUs7SUFDcEIsUUFBUSxTQUFTLEVBQUUsU0FBUztJQUM1QixLQUFLLENBQUM7QUFDTjtJQUNBLElBQUksU0FBUyxRQUFRLEdBQUc7SUFDeEIsUUFBUSxNQUFNLENBQUMsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNwRCxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQ2hDO0lBQ0EsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsY0FBYyxFQUFFLENBQUM7QUFDckM7SUFDQSxRQUFRLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsT0FBTyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDcEYsS0FBSztBQUNMO0lBQ0EsSUFBSSxTQUFTLFFBQVEsR0FBRztJQUN4QixRQUFRLE1BQU0sQ0FBQyxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3BELFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDL0IsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUMvQixRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQy9CO0lBQ0EsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsY0FBYyxFQUFFLENBQUM7QUFDckM7SUFDQSxRQUFRLENBQUMsQ0FBQyxPQUFPO0lBQ2pCLFlBQVksQ0FBQyxDQUFDLEVBQUU7SUFDaEIsZ0JBQWdCLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUM1RixnQkFBZ0IsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUNuRyxnQkFBZ0IsQ0FBQyxDQUFDLEVBQUU7SUFDcEIsb0JBQW9CLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLEdBQUc7SUFDaEYsb0JBQW9CLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDdkcsaUJBQWlCO0lBQ2pCLGFBQWE7SUFDYixTQUFTLENBQUM7SUFDVixLQUFLO0FBQ0w7SUFDQSxJQUFJLFNBQVMsUUFBUSxHQUFHO0lBQ3hCLFFBQVEsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDcEQsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUMvQixRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQy9CLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDL0I7SUFDQSxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxjQUFjLEVBQUUsQ0FBQztBQUNyQztJQUNBLFFBQVEsQ0FBQyxDQUFDLE9BQU87SUFDakIsWUFBWSxDQUFDLENBQUMsRUFBRTtJQUNoQixnQkFBZ0IsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzVGLGdCQUFnQixDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ3BHLGFBQWE7SUFDYixTQUFTLENBQUM7SUFDVixLQUFLO0FBQ0w7SUFDQSxJQUFJLFNBQVMsUUFBUSxHQUFHO0lBQ3hCLFFBQVEsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDcEQsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUMvQixRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQy9CO0lBQ0EsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsY0FBYyxFQUFFLENBQUM7QUFDckM7SUFDQSxRQUFRLENBQUMsQ0FBQyxPQUFPO0lBQ2pCLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3pGLFNBQVMsQ0FBQztJQUNWLEtBQUs7QUFDTDtBQUNBO0lBQ0EsSUFBSSxTQUFTLGVBQWUsR0FBRztJQUMvQixRQUFRLE1BQU0sQ0FBQyxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQzNELFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDL0IsUUFBUSxDQUFDLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQy9CO0lBQ0EsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsY0FBYyxFQUFFLENBQUM7QUFDckM7SUFDQSxRQUFRLE1BQU0sR0FBRyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ2xEO0lBQ0EsUUFBUSxDQUFDLENBQUMsT0FBTztJQUNqQixZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLGlCQUFpQixFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxDQUFDO0lBQ3BFLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxFQUFFO0lBQ3BFLFNBQVMsQ0FBQztJQUNWLEtBQUs7QUFDTDtJQUNBLElBQUksU0FBUyxTQUFTLEdBQUc7SUFDekIsUUFBUSxNQUFNLENBQUMsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNyRCxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQy9CLFFBQVEsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUMvQjtJQUNBLFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLGNBQWMsRUFBRSxDQUFDO0FBQ3JDO0lBQ0EsUUFBUSxNQUFNLEdBQUcsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUNsRDtJQUNBLFFBQVEsQ0FBQyxDQUFDLE9BQU87SUFDakIsWUFBWSxDQUFDLENBQUMsRUFBRTtJQUNoQixnQkFBZ0IsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDOUQsZ0JBQWdCLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNyQyxhQUFhO0lBQ2IsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxpQkFBaUIsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsQ0FBQztJQUNwRSxZQUFZLENBQUMsQ0FBQyxFQUFFO0lBQ2hCLGdCQUFnQixDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDdkUsZ0JBQWdCLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3RDLGFBQWE7SUFDYixZQUFZLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNqQyxTQUFTLENBQUM7SUFDVixLQUFLO0FBQ0w7QUFDQTtJQUNBLElBQUksU0FBUyxZQUFZLEdBQUc7SUFDNUIsUUFBUSxNQUFNLE9BQU8sR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDaEQ7SUFDQSxRQUFRLE1BQU0sQ0FBQyxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ3hELFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDL0IsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUMvQixRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ2xDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDL0IsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztBQUMvQjtJQUNBLFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLGNBQWMsRUFBRSxDQUFDO0FBQ3JDO0lBQ0EsUUFBUSxNQUFNLElBQUksR0FBRyxNQUFNLENBQUMsWUFBWSxHQUFHLFFBQVEsQ0FBQyxDQUFDLEVBQUUsWUFBWSxDQUFDLENBQUMsQ0FBQztBQUN0RTtJQUNBLFFBQVEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN6RDtJQUNBLFFBQVEsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRTtJQUNsQyxZQUFZLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDdkQ7SUFDQSxZQUFZLENBQUMsQ0FBQyxPQUFPO0lBQ3JCLGdCQUFnQixDQUFDLENBQUMsUUFBUTtJQUMxQixvQkFBb0IsR0FBRztJQUN2QixvQkFBb0IsQ0FBQyxDQUFDLE9BQU87SUFDN0Isd0JBQXdCLENBQUMsQ0FBQyxPQUFPO0lBQ2pDLDRCQUE0QixDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNoRSw0QkFBNEIsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUM7SUFDOUMseUJBQXlCO0lBQ3pCLHdCQUF3QixDQUFDLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQztJQUNqRCxxQkFBcUI7SUFDckIsaUJBQWlCO0lBQ2pCLGFBQWEsQ0FBQztBQUNkO0lBQ0EsWUFBWSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFO0FBQ3RDO0lBQ0EsZ0JBQWdCLENBQUMsQ0FBQyxPQUFPO0lBQ3pCLG9CQUFvQixDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUc7SUFDbEMsd0JBQXdCLENBQUMsQ0FBQyxPQUFPO0lBQ2pDLDRCQUE0QixDQUFDLENBQUMsT0FBTztJQUNyQyxnQ0FBZ0MsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDeEUsZ0NBQWdDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzdFLDZCQUE2QjtJQUM3Qiw0QkFBNEIsQ0FBQyxDQUFDLE9BQU87SUFDckMsZ0NBQWdDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3BFLGdDQUFnQyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQztJQUMvQyw2QkFBNkI7SUFDN0IseUJBQXlCO0lBQ3pCLHFCQUFxQjtJQUNyQixpQkFBaUIsQ0FBQztBQUNsQjtJQUNBLGdCQUFnQixDQUFDLENBQUMsT0FBTztJQUN6QixvQkFBb0IsQ0FBQyxDQUFDLFdBQVc7SUFDakMsd0JBQXdCLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDO0lBQ3ZDLHdCQUF3QixDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUMvQix3QkFBd0IsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUM7SUFDdkMscUJBQXFCO0lBQ3JCLGlCQUFpQixDQUFDO0lBQ2xCLGFBQWE7QUFDYjtJQUNBLFlBQVksQ0FBQyxDQUFDLE9BQU87SUFDckIsZ0JBQWdCLENBQUMsQ0FBQyxXQUFXO0lBQzdCLG9CQUFvQixDQUFDLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQztJQUN4QyxvQkFBb0IsQ0FBQyxDQUFDLENBQUM7SUFDdkIsb0JBQW9CLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2pFLGlCQUFpQjtJQUNqQixhQUFhLENBQUM7SUFDZCxTQUFTO0FBQ1Q7SUFDQSxRQUFRLENBQUMsQ0FBQyxPQUFPO0lBQ2pCLFlBQVksQ0FBQyxDQUFDLElBQUk7SUFDbEIsZ0JBQWdCLE1BQU0sQ0FBQyxNQUFNO0lBQzdCLGdCQUFnQixDQUFDLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQztJQUNwQyxnQkFBZ0IsQ0FBQyxDQUFDLE9BQU87SUFDekIsb0JBQW9CLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDO0lBQ25DLG9CQUFvQixDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDdEMsaUJBQWlCO0lBQ2pCLGdCQUFnQixDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQztJQUMvQixhQUFhO0lBQ2IsU0FBUyxDQUFDO0lBQ1YsS0FBSztBQUNMO0FBQ0E7QUFDQTtJQUNBLElBQUksU0FBUyxRQUFRLEdBQUc7QUFDeEI7SUFDQSxRQUFRLE1BQU0sQ0FBQyxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3BELFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDL0IsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUMvQixRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQy9CLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDaEMsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNoQyxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQ2xDO0FBQ0E7SUFDQSxRQUFRLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUU7SUFDakMsWUFBWSxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDckMsWUFBWSxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDckMsWUFBWSxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDckMsWUFBWSxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDckMsU0FBUztBQUNUO0lBQ0EsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsY0FBYyxFQUFFLENBQUM7QUFDckM7SUFDQSxRQUFRLE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxZQUFZLEdBQUcsUUFBUSxDQUFDLENBQUMsRUFBRSxZQUFZLENBQUMsQ0FBQyxDQUFDO0FBQ3RFO0lBQ0EsUUFBUSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3pEO0FBQ0E7SUFDQSxRQUFRLE1BQU0sS0FBSyxHQUFHLEVBQUUsQ0FBQztJQUN6QixRQUFRLE1BQU0sS0FBSyxHQUFHLEVBQUUsQ0FBQztJQUN6QixRQUFRLE1BQU0sS0FBSyxHQUFHLEVBQUUsQ0FBQztJQUN6QixRQUFRLFNBQVMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUU7SUFDN0IsWUFBWSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDcEIsWUFBWSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFO0lBQzNCLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM3RSxnQkFBZ0IsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQztJQUNoQyxhQUFhLE1BQU07SUFDbkIsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN0QyxhQUFhO0lBQ2IsWUFBWSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFO0lBQzNCLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM3RSxnQkFBZ0IsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQztJQUNoQyxhQUFhLE1BQU07SUFDbkIsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN0QyxhQUFhO0FBQ2I7SUFDQSxZQUFZLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUM7SUFDckMsU0FBUztBQUNUO0lBQ0EsUUFBUSxTQUFTLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFO0lBQzdCLFlBQVksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3BCLFlBQVksSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRTtJQUMzQixnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQy9FLGdCQUFnQixLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDO0lBQ2hDLGFBQWEsTUFBTTtJQUNuQixnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3RDLGFBQWE7SUFDYixZQUFZLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNsQztJQUNBLFlBQVksT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUNyQyxTQUFTO0FBQ1Q7QUFDQTtJQUNBLFFBQVEsSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDO0lBQ3RCLFFBQVEsSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDO0FBQ3RCO0lBQ0EsUUFBUSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7SUFDdEMsWUFBWSxLQUFLLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtJQUNuRSxnQkFBZ0IsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUM3QjtJQUNBLGdCQUFnQixDQUFDLENBQUMsT0FBTztJQUN6QixvQkFBb0IsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUFFO0lBQ2pDLHdCQUF3QixDQUFDLENBQUMsT0FBTztJQUNqQyw0QkFBNEIsQ0FBQyxDQUFDLE9BQU87SUFDckMsZ0NBQWdDLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO0lBQzlDLGdDQUFnQyxDQUFDLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQztJQUN2RCw2QkFBNkI7SUFDN0IsNEJBQTRCLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3RDLHlCQUF5QjtJQUN6QixxQkFBcUI7SUFDckIsaUJBQWlCLENBQUM7QUFDbEI7SUFDQSxnQkFBZ0IsQ0FBQyxDQUFDLE9BQU87SUFDekIsb0JBQW9CLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRTtJQUNqQyx3QkFBd0IsQ0FBQyxDQUFDLE9BQU87SUFDakMsNEJBQTRCLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO0lBQzFDLDRCQUE0QixDQUFDLENBQUMsU0FBUztJQUN2QyxnQ0FBZ0MsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7SUFDOUMsZ0NBQWdDLENBQUMsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDO0lBQy9DLDZCQUE2QjtJQUM3Qix5QkFBeUI7SUFDekIscUJBQXFCO0lBQ3JCLGlCQUFpQixDQUFDO0lBQ2xCLGFBQWE7QUFDYjtBQUNBO0lBQ0EsWUFBWSxLQUFLLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtJQUNuRSxnQkFBZ0IsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUM3QjtJQUNBLGdCQUFnQixDQUFDLENBQUMsT0FBTztJQUN6QixvQkFBb0IsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUFFO0lBQ2pDLHdCQUF3QixDQUFDLENBQUMsT0FBTztJQUNqQyw0QkFBNEIsQ0FBQyxDQUFDLE9BQU87SUFDckMsZ0NBQWdDLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO0lBQzlDLGdDQUFnQyxDQUFDLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQztJQUN2RCw2QkFBNkI7SUFDN0IsNEJBQTRCLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3RDLHlCQUF5QjtJQUN6QixxQkFBcUI7SUFDckIsaUJBQWlCLENBQUM7QUFDbEI7SUFDQSxnQkFBZ0IsQ0FBQyxDQUFDLE9BQU87SUFDekIsb0JBQW9CLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRTtJQUNqQyx3QkFBd0IsQ0FBQyxDQUFDLE9BQU87SUFDakMsNEJBQTRCLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO0lBQzFDLDRCQUE0QixDQUFDLENBQUMsU0FBUztJQUN2QyxnQ0FBZ0MsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7SUFDOUMsZ0NBQWdDLENBQUMsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDO0lBQy9DLDZCQUE2QjtJQUM3Qix5QkFBeUI7SUFDekIscUJBQXFCO0lBQ3JCLGlCQUFpQixDQUFDO0lBQ2xCLGFBQWE7SUFDYixZQUFZLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRTtJQUN2QixnQkFBZ0IsQ0FBQyxDQUFDLE9BQU87SUFDekIsb0JBQW9CLENBQUMsQ0FBQyxRQUFRO0lBQzlCLHdCQUF3QixHQUFHLENBQUMsQ0FBQztJQUM3Qix3QkFBd0IsQ0FBQyxDQUFDLE9BQU87SUFDakMsNEJBQTRCLENBQUMsQ0FBQyxPQUFPO0lBQ3JDLGdDQUFnQyxDQUFDLENBQUMsT0FBTztJQUN6QyxvQ0FBb0MsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7SUFDbEQsb0NBQW9DLENBQUMsQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDO0lBQzNELGlDQUFpQztJQUNqQyxnQ0FBZ0MsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUM7SUFDbEQsNkJBQTZCO0lBQzdCLDRCQUE0QixDQUFDLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQztJQUNyRCx5QkFBeUI7SUFDekIscUJBQXFCO0lBQ3JCLGlCQUFpQixDQUFDO0FBQ2xCO0FBQ0E7SUFDQSxnQkFBZ0IsQ0FBQyxDQUFDLE9BQU87SUFDekIsb0JBQW9CLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRTtJQUNqQyx3QkFBd0IsQ0FBQyxDQUFDLE9BQU87SUFDakMsNEJBQTRCLENBQUMsQ0FBQyxPQUFPO0lBQ3JDLGdDQUFnQyxDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztJQUM5QyxnQ0FBZ0MsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUM7SUFDdkQsNkJBQTZCO0lBQzdCLDRCQUE0QixLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN0Qyx5QkFBeUI7SUFDekIscUJBQXFCO0lBQ3JCLGlCQUFpQixDQUFDO0FBQ2xCO0lBQ0EsZ0JBQWdCLENBQUMsQ0FBQyxPQUFPO0lBQ3pCLG9CQUFvQixDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUU7SUFDakMsd0JBQXdCLENBQUMsQ0FBQyxPQUFPO0lBQ2pDLDRCQUE0QixDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztJQUMxQyw0QkFBNEIsQ0FBQyxDQUFDLFNBQVM7SUFDdkMsZ0NBQWdDLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO0lBQzlDLGdDQUFnQyxDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztJQUMvQyw2QkFBNkI7SUFDN0IseUJBQXlCO0lBQ3pCLHFCQUFxQjtJQUNyQixpQkFBaUIsQ0FBQztJQUNsQixhQUFhO0FBQ2I7QUFDQTtJQUNBLFlBQVksSUFBSSxDQUFDLEVBQUUsR0FBRyxFQUFFO0lBQ3hCLGdCQUFnQixDQUFDLENBQUMsT0FBTztJQUN6QixvQkFBb0IsQ0FBQyxDQUFDLFdBQVc7SUFDakMsd0JBQXdCLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDO0lBQ3ZDLHdCQUF3QixDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztJQUNqQyx3QkFBd0IsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7SUFDdEMscUJBQXFCO0lBQ3JCLGlCQUFpQixDQUFDO0lBQ2xCLGFBQWE7SUFDYixZQUFZLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ2hDLFlBQVksQ0FBQyxDQUFDLE9BQU87SUFDckIsZ0JBQWdCLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRTtJQUM3QixvQkFBb0IsQ0FBQyxDQUFDLFNBQVM7SUFDL0Isd0JBQXdCLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO0lBQ3RDLHdCQUF3QixDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztJQUN2QyxxQkFBcUI7SUFDckIsaUJBQWlCO0lBQ2pCLGFBQWEsQ0FBQztJQUNkLFNBQVM7SUFDVCxRQUFRLENBQUMsQ0FBQyxPQUFPO0lBQ2pCLFlBQVksQ0FBQyxDQUFDLFdBQVc7SUFDekIsZ0JBQWdCLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDO0lBQy9CLGdCQUFnQixHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdkIsZ0JBQWdCLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO0lBQzlCLGFBQWE7SUFDYixTQUFTLENBQUM7QUFDVjtJQUNBLFFBQVEsQ0FBQyxDQUFDLE9BQU87SUFDakIsWUFBWSxDQUFDLENBQUMsRUFBRTtJQUNoQixnQkFBZ0IsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzlDLGdCQUFnQixDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ25HLGdCQUFnQixDQUFDLENBQUMsRUFBRTtJQUNwQixvQkFBb0IsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsR0FBRztJQUNoRixvQkFBb0IsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUN2RyxpQkFBaUI7SUFDakIsYUFBYTtJQUNiLFNBQVMsQ0FBQztJQUNWLEtBQUs7QUFDTDtBQUNBO0lBQ0EsSUFBSSxTQUFTLFdBQVcsR0FBRztBQUMzQjtJQUNBLFFBQVEsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDdkQsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUMvQixRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQy9CLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDaEMsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNoQyxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3BDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDcEMsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQztBQUNsQztBQUNBO0lBQ0EsUUFBUSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFO0lBQ2pDLFlBQVksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3JDLFlBQVksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3JDLFlBQVksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3JDLFNBQVM7QUFDVDtJQUNBLFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLGNBQWMsRUFBRSxDQUFDO0FBQ3JDO0lBQ0EsUUFBUSxNQUFNLElBQUksR0FBRyxNQUFNLENBQUMsWUFBWSxHQUFHLFFBQVEsQ0FBQyxDQUFDLEVBQUUsWUFBWSxDQUFDLENBQUMsQ0FBQztBQUN0RTtJQUNBLFFBQVEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN6RDtBQUNBO0lBQ0EsUUFBUSxNQUFNLEtBQUssR0FBRyxFQUFFLENBQUM7SUFDekIsUUFBUSxNQUFNLEtBQUssR0FBRyxFQUFFLENBQUM7SUFDekIsUUFBUSxTQUFTLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFO0lBQzdCLFlBQVksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3BCLFlBQVksSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRTtJQUMzQixnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDN0UsZ0JBQWdCLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUM7SUFDaEMsYUFBYSxNQUFNO0lBQ25CLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdEMsYUFBYTtJQUNiLFlBQVksSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRTtJQUMzQixnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDN0UsZ0JBQWdCLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUM7SUFDaEMsYUFBYSxNQUFNO0lBQ25CLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdEMsYUFBYTtBQUNiO0lBQ0EsWUFBWSxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDO0lBQ3JDLFNBQVM7QUFDVDtJQUNBLFFBQVEsU0FBUyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRTtJQUM3QixZQUFZLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNwQixZQUFZLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUU7SUFDM0IsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUMvRSxnQkFBZ0IsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQztJQUNoQyxhQUFhLE1BQU07SUFDbkIsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN0QyxhQUFhO0lBQ2IsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDbEM7SUFDQSxZQUFZLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUM7SUFDckMsU0FBUztBQUNUO0FBQ0E7SUFDQSxRQUFRLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQztJQUN0QixRQUFRLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQztJQUN0QixRQUFRLElBQUksTUFBTSxHQUFHLFFBQVEsQ0FBQztJQUM5QixRQUFRLElBQUksTUFBTSxHQUFHLFFBQVEsQ0FBQztBQUM5QjtJQUNBLFFBQVEsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO0lBQ3RDLFlBQVksQ0FBQyxDQUFDLE9BQU87SUFDckIsZ0JBQWdCLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDOUMsZ0JBQWdCLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDOUMsYUFBYSxDQUFDO0lBQ2QsWUFBWSxLQUFLLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtJQUM1RSxnQkFBZ0IsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUM3QjtJQUNBLGdCQUFnQixDQUFDLENBQUMsT0FBTztJQUN6QixvQkFBb0IsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUFFO0lBQ2pDLHdCQUF3QixDQUFDLENBQUMsT0FBTztJQUNqQyw0QkFBNEIsQ0FBQyxDQUFDLE9BQU87SUFDckMsZ0NBQWdDLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO0lBQzlDLGdDQUFnQyxDQUFDLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQztJQUN2RCw2QkFBNkI7SUFDN0IsNEJBQTRCLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3RDLHlCQUF5QjtJQUN6QixxQkFBcUI7SUFDckIsaUJBQWlCLENBQUM7QUFDbEI7SUFDQSxnQkFBZ0IsQ0FBQyxDQUFDLE9BQU87SUFDekIsb0JBQW9CLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRTtJQUNqQyx3QkFBd0IsQ0FBQyxDQUFDLE9BQU87SUFDakMsNEJBQTRCLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO0lBQzFDLDRCQUE0QixDQUFDLENBQUMsU0FBUztJQUN2QyxnQ0FBZ0MsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7SUFDOUMsZ0NBQWdDLENBQUMsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDO0lBQy9DLDZCQUE2QjtJQUM3Qix5QkFBeUI7SUFDekIscUJBQXFCO0lBQ3JCLGlCQUFpQixDQUFDO0lBQ2xCLGFBQWE7QUFDYjtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsT0FBTztJQUNyQixnQkFBZ0IsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUFFO0lBQzdCLG9CQUFvQixDQUFDLENBQUMsT0FBTztJQUM3Qix3QkFBd0IsQ0FBQyxDQUFDLE9BQU87SUFDakMsNEJBQTRCLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO0lBQzFDLDRCQUE0QixDQUFDLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQztJQUNuRCx5QkFBeUI7SUFDekIsd0JBQXdCLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO0lBQ3RDLHFCQUFxQjtJQUNyQixpQkFBaUI7SUFDakIsYUFBYSxDQUFDO0FBQ2Q7SUFDQSxZQUFZLENBQUMsQ0FBQyxPQUFPO0lBQ3JCLGdCQUFnQixDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUU7SUFDN0Isb0JBQW9CLENBQUMsQ0FBQyxPQUFPO0lBQzdCLHdCQUF3QixDQUFDLENBQUMsT0FBTztJQUNqQyw0QkFBNEIsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7SUFDMUMsNEJBQTRCLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO0lBQzFDLHlCQUF5QjtJQUN6Qix3QkFBd0IsQ0FBQyxDQUFDLFNBQVM7SUFDbkMsNEJBQTRCLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO0lBQzFDLDRCQUE0QixDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztJQUMzQyx5QkFBeUI7SUFDekIscUJBQXFCO0lBQ3JCLGlCQUFpQjtJQUNqQixhQUFhLENBQUM7QUFDZDtJQUNBLFlBQVksSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRTtJQUMxQixnQkFBZ0IsQ0FBQyxDQUFDLE9BQU87SUFDekIsb0JBQW9CLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRTtJQUNqQyx3QkFBd0IsQ0FBQyxDQUFDLE9BQU87SUFDakMsNEJBQTRCLENBQUMsQ0FBQyxPQUFPO0lBQ3JDLGdDQUFnQyxDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztJQUM5QyxnQ0FBZ0MsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUM7SUFDdkQsNkJBQTZCO0lBQzdCLDRCQUE0QixLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzdDLHlCQUF5QjtJQUN6QixxQkFBcUI7SUFDckIsaUJBQWlCLENBQUM7QUFDbEI7SUFDQSxnQkFBZ0IsQ0FBQyxDQUFDLE9BQU87SUFDekIsb0JBQW9CLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRTtJQUNqQyx3QkFBd0IsQ0FBQyxDQUFDLE9BQU87SUFDakMsNEJBQTRCLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO0lBQzFDLDRCQUE0QixDQUFDLENBQUMsU0FBUztJQUN2QyxnQ0FBZ0MsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7SUFDOUMsZ0NBQWdDLENBQUMsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDO0lBQy9DLDZCQUE2QjtJQUM3Qix5QkFBeUI7SUFDekIscUJBQXFCO0lBQ3JCLGlCQUFpQixDQUFDO0lBQ2xCLGFBQWE7QUFDYjtJQUNBO0FBQ0E7SUFDQSxZQUFZLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRTtJQUNyQixnQkFBZ0IsQ0FBQyxDQUFDLE9BQU87SUFDekIsb0JBQW9CLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRTtJQUNqQyx3QkFBd0IsQ0FBQyxDQUFDLE9BQU87SUFDakMsNEJBQTRCLENBQUMsQ0FBQyxPQUFPO0lBQ3JDLGdDQUFnQyxDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztJQUM5QyxnQ0FBZ0MsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUM7SUFDdkQsNkJBQTZCO0lBQzdCLDRCQUE0QixDQUFDLENBQUMsT0FBTztJQUNyQyxnQ0FBZ0MsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUM7SUFDbEQsZ0NBQWdDLENBQUMsQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDO0lBQ3ZELDZCQUE2QjtJQUM3Qix5QkFBeUI7SUFDekIscUJBQXFCO0lBQ3JCLGlCQUFpQixDQUFDO0FBQ2xCO0lBQ0EsZ0JBQWdCLENBQUMsQ0FBQyxPQUFPO0lBQ3pCLG9CQUFvQixDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUU7SUFDakMsd0JBQXdCLENBQUMsQ0FBQyxPQUFPO0lBQ2pDLDRCQUE0QixDQUFDLENBQUMsT0FBTztJQUNyQyxnQ0FBZ0MsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7SUFDOUMsZ0NBQWdDLENBQUMsQ0FBQyxTQUFTO0lBQzNDLG9DQUFvQyxDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztJQUNsRCxvQ0FBb0MsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUM7SUFDbkQsaUNBQWlDO0lBQ2pDLDZCQUE2QjtJQUM3Qiw0QkFBNEIsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUM7SUFDOUMseUJBQXlCO0lBQ3pCLHFCQUFxQjtJQUNyQixpQkFBaUIsQ0FBQztJQUNsQixhQUFhO0FBQ2I7QUFDQTtJQUNBLFlBQVksS0FBSyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7SUFDbkUsZ0JBQWdCLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDN0I7SUFDQSxnQkFBZ0IsQ0FBQyxDQUFDLE9BQU87SUFDekIsb0JBQW9CLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRTtJQUNqQyx3QkFBd0IsQ0FBQyxDQUFDLE9BQU87SUFDakMsNEJBQTRCLENBQUMsQ0FBQyxPQUFPO0lBQ3JDLGdDQUFnQyxDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztJQUM5QyxnQ0FBZ0MsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUM7SUFDdkQsNkJBQTZCO0lBQzdCLDRCQUE0QixLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN0Qyx5QkFBeUI7SUFDekIscUJBQXFCO0lBQ3JCLGlCQUFpQixDQUFDO0FBQ2xCO0lBQ0EsZ0JBQWdCLENBQUMsQ0FBQyxPQUFPO0lBQ3pCLG9CQUFvQixDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUU7SUFDakMsd0JBQXdCLENBQUMsQ0FBQyxPQUFPO0lBQ2pDLDRCQUE0QixDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztJQUMxQyw0QkFBNEIsQ0FBQyxDQUFDLFNBQVM7SUFDdkMsZ0NBQWdDLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO0lBQzlDLGdDQUFnQyxDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztJQUMvQyw2QkFBNkI7SUFDN0IseUJBQXlCO0lBQ3pCLHFCQUFxQjtJQUNyQixpQkFBaUIsQ0FBQztJQUNsQixhQUFhO0lBQ2IsWUFBWSxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUU7SUFDdkIsZ0JBQWdCLENBQUMsQ0FBQyxPQUFPO0lBQ3pCLG9CQUFvQixDQUFDLENBQUMsUUFBUTtJQUM5Qix3QkFBd0IsR0FBRyxDQUFDLENBQUM7SUFDN0Isd0JBQXdCLENBQUMsQ0FBQyxPQUFPO0lBQ2pDLDRCQUE0QixDQUFDLENBQUMsT0FBTztJQUNyQyxnQ0FBZ0MsQ0FBQyxDQUFDLE9BQU87SUFDekMsb0NBQW9DLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO0lBQ2xELG9DQUFvQyxDQUFDLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQztJQUMzRCxpQ0FBaUM7SUFDakMsZ0NBQWdDLENBQUMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDO0lBQ2xELDZCQUE2QjtJQUM3Qiw0QkFBNEIsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUM7SUFDckQseUJBQXlCO0lBQ3pCLHFCQUFxQjtJQUNyQixpQkFBaUIsQ0FBQztBQUNsQjtBQUNBO0lBQ0EsZ0JBQWdCLENBQUMsQ0FBQyxPQUFPO0lBQ3pCLG9CQUFvQixDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUU7SUFDakMsd0JBQXdCLENBQUMsQ0FBQyxPQUFPO0lBQ2pDLDRCQUE0QixDQUFDLENBQUMsT0FBTztJQUNyQyxnQ0FBZ0MsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7SUFDOUMsZ0NBQWdDLENBQUMsQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDO0lBQ3ZELDZCQUE2QjtJQUM3Qiw0QkFBNEIsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdEMseUJBQXlCO0lBQ3pCLHFCQUFxQjtJQUNyQixpQkFBaUIsQ0FBQztBQUNsQjtJQUNBLGdCQUFnQixDQUFDLENBQUMsT0FBTztJQUN6QixvQkFBb0IsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUFFO0lBQ2pDLHdCQUF3QixDQUFDLENBQUMsT0FBTztJQUNqQyw0QkFBNEIsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7SUFDMUMsNEJBQTRCLENBQUMsQ0FBQyxTQUFTO0lBQ3ZDLGdDQUFnQyxDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztJQUM5QyxnQ0FBZ0MsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUM7SUFDL0MsNkJBQTZCO0lBQzdCLHlCQUF5QjtJQUN6QixxQkFBcUI7SUFDckIsaUJBQWlCLENBQUM7SUFDbEIsYUFBYTtBQUNiO0lBQ0EsWUFBWSxJQUFJLENBQUMsRUFBRSxHQUFHLEVBQUU7SUFDeEIsZ0JBQWdCLENBQUMsQ0FBQyxPQUFPO0lBQ3pCLG9CQUFvQixDQUFDLENBQUMsV0FBVztJQUNqQyx3QkFBd0IsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUM7SUFDdkMsd0JBQXdCLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDO0lBQ2pDLHdCQUF3QixDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztJQUN0QyxxQkFBcUI7SUFDckIsaUJBQWlCLENBQUM7SUFDbEIsYUFBYTtJQUNiLFlBQVksQ0FBQyxDQUFDLE9BQU87SUFDckIsZ0JBQWdCLENBQUMsQ0FBQyxRQUFRO0lBQzFCLG9CQUFvQixNQUFNO0lBQzFCLG9CQUFvQixDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztJQUNsQyxpQkFBaUI7SUFDakIsZ0JBQWdCLENBQUMsQ0FBQyxRQUFRO0lBQzFCLG9CQUFvQixNQUFNO0lBQzFCLG9CQUFvQixDQUFDLENBQUMsU0FBUztJQUMvQix3QkFBd0IsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUM7SUFDMUMsd0JBQXdCLENBQUMsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDO0lBQ3ZDLHFCQUFxQjtJQUNyQixpQkFBaUI7SUFDakIsYUFBYSxDQUFDO0lBQ2QsU0FBUztJQUNULFFBQVEsQ0FBQyxDQUFDLE9BQU87SUFDakIsWUFBWSxDQUFDLENBQUMsV0FBVztJQUN6QixnQkFBZ0IsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUM7SUFDL0IsZ0JBQWdCLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN2QixnQkFBZ0IsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUM7SUFDbEMsYUFBYTtJQUNiLFNBQVMsQ0FBQztBQUNWO0lBQ0EsUUFBUSxDQUFDLENBQUMsT0FBTztJQUNqQixZQUFZLENBQUMsQ0FBQyxFQUFFO0lBQ2hCLGdCQUFnQixDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDbEQsZ0JBQWdCLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDbkcsZ0JBQWdCLENBQUMsQ0FBQyxFQUFFO0lBQ3BCLG9CQUFvQixDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxHQUFHO0lBQ2hGLG9CQUFvQixDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ3ZHLGlCQUFpQjtJQUNqQixhQUFhO0lBQ2IsU0FBUyxDQUFDO0lBQ1YsS0FBSztBQUNMO0FBQ0E7SUFDQSxJQUFJLFNBQVMsY0FBYyxHQUFHO0lBQzlCLFFBQVEsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDMUQsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUMvQixRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQy9CO0lBQ0EsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsY0FBYyxFQUFFLENBQUM7QUFDckM7SUFDQSxRQUFRLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM5RixLQUFLO0FBQ0w7SUFDQSxJQUFJLFNBQVMsaUJBQWlCLEdBQUc7SUFDakMsUUFBUSxNQUFNLENBQUMsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUM3RCxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQy9CLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDL0I7SUFDQSxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxjQUFjLEVBQUUsQ0FBQztJQUNyQyxRQUFRLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM3RixLQUFLO0FBQ0w7SUFDQSxJQUFJLFNBQVMsbUJBQW1CLEdBQUc7QUFDbkM7SUFDQSxRQUFRLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3pDO0lBQ0EsUUFBUSxNQUFNLENBQUMsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBQy9ELFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDL0IsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztBQUMvQjtJQUNBLFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLGNBQWMsRUFBRSxDQUFDO0lBQ3JDLFFBQVEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxPQUFPLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNyRixRQUFRLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsT0FBTyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUN6RSxRQUFRLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbEYsS0FBSztBQUNMO0lBQ0EsSUFBSSxTQUFTLFlBQVksR0FBRztBQUM1QjtJQUNBLFFBQVEsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsVUFBVSxDQUFDLENBQUM7SUFDekQsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUMvQixRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQy9CO0lBQ0EsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDckMsUUFBUSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLGlCQUFpQixFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDeEYsUUFBUSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLGFBQWEsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDeEcsUUFBUSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLGVBQWUsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3RGLEtBQUs7QUFDTDtJQUNBO0FBQ0E7QUFDQTtJQUNBLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxDQUFDO0lBQ2xCLElBQUksSUFBSSxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUU7SUFDcEIsUUFBUSxPQUFPLFFBQVEsQ0FBQyxJQUFJLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxLQUFLLFNBQVMsRUFBRSxJQUFJLEdBQUcsSUFBSSxHQUFHLEVBQUUsQ0FBQztJQUNyRSxLQUFLO0FBQ0w7SUFDQSxJQUFJLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQztJQUNmLElBQUksSUFBSSxFQUFFLEdBQUcsU0FBUyxDQUFDO0FBQ3ZCO0lBQ0EsSUFBSSxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFO0lBQ3hDLFFBQVEsRUFBRSxFQUFFLENBQUM7SUFDYixRQUFRLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxDQUFDO0lBQ3RCLEtBQUs7SUFDTCxJQUFJLE1BQU0sRUFBRSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLE9BQU8sQ0FBQyxjQUFjLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDaEU7SUFDQSxJQUFJLE1BQU0sT0FBTyxHQUFHLFFBQVEsQ0FBQyxJQUFJLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzFDLElBQUksTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLENBQUMsT0FBTyxJQUFJLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDOUY7SUFDQSxJQUFJLE1BQU0sY0FBYyxHQUFHLENBQUMsRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLENBQUM7SUFDM0MsSUFBSSxNQUFNLGNBQWMsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxPQUFPLENBQUMsY0FBYyxDQUFDLGNBQWMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ3hGO0lBQ0EsSUFBSSxTQUFTLFNBQVMsR0FBRztBQUN6QjtJQUNBLFFBQVEsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDdEQsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUMvQixRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQy9CLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDL0IsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUMvQixRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQy9CO0lBQ0EsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsY0FBYyxFQUFFLENBQUM7QUFDckM7SUFDQSxRQUFRLE1BQU0sR0FBRyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdEMsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNoRCxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2hELFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDaEQsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNqRCxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ2hEO0lBQ0EsUUFBUSxDQUFDLENBQUMsT0FBTztBQUNqQjtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsRUFBRTtJQUNoQixnQkFBZ0IsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsU0FBUyxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDM0QsZ0JBQWdCLENBQUMsQ0FBQyxHQUFHO0lBQ3JCLG9CQUFvQixDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxPQUFPLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUM3RCxpQkFBaUI7SUFDakIsYUFBYTtBQUNiO0lBQ0EsWUFBWSxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzVDLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsT0FBTyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzdELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUN6RixZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDckc7SUFDQSxZQUFZLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUk7SUFDMUIsZ0JBQWdCLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFDMUQ7SUFDQSxnQkFBZ0IsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsU0FBUyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7SUFDakQsZ0JBQWdCLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDL0MsZ0JBQWdCLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUk7SUFDOUIsb0JBQW9CLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssRUFBRSxFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDL0Qsb0JBQW9CLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLFNBQVMsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFD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RyxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQy9CO0lBQ0EsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsY0FBYyxFQUFFLENBQUM7QUFDckM7SUFDQSxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDbkMsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ2pFLFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNsQyxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDbkMsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0FBQ2pFO0FBQ0E7SUFDQSxRQUFRLENBQUMsQ0FBQyxPQUFPO0lBQ2pCLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO0lBQ2pELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO0lBQ2pELFNBQVMsQ0FBQztJQUNWLEtBQUs7QUFDTDtJQUNBLElBQUksU0FBUyxXQUFXLEdBQUc7SUFDM0IsUUFBUSxNQUFNLENBQUMsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUN2RCxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQy9CLFFBQVEs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QUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNsQyxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNyRCxRQUFRLE1BQU0sS0FBSyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN4RCxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNyRCxRQUFRLE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3pDLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNwQyxRQUFRLE1BQU0sR0FBRyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDckMsUUFBUSxNQUFNLEdBQUcsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMxQyxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNyRCxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNwRDtJQUNBLFFBQVEsQ0FBQyxDQUFDLE9BQU87QUFDakI7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sRUFBRSxFQUFFLENBQUM7SUFDdkMsWUFBWSxDQUFD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LFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNuQyxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDakUsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNuRSxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDbkMsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ2pFLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7QUFDbkU7SUFDQSxRQUFRLENBQUMsQ0FBQyxPQUFPO0lBQ2pCLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2hELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2hELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2hELFNBQVMsQ0FBQztJQUNWLEtBQUs7QUFDTDtJQUNB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QyxFQUFFLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNuRSxRQUFRLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ3JFLFFBQVEsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNuQyxRQUFRLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDbkUsUUFBUSxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNyRSxRQUFRLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDcEMsUUFBUSxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ3BFLFFBQVEsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7QUFDdEU7SUFDQSxRQUFRLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ3BELFFBQVEsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDcEQsUUFBUSxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNwRCxRQUFRLE1BQU0sR0FBRyxHQUFHLEVBQUUsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ3JELFFBQVEsTUFBTSxHQUFHLEdBQUcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDckQsUUFBUSxNQUFNLEdBQUcsR0FBRyxFQUFFLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNyRCxRQUFRLE1BQU0sR0FBRyxHQUFHLEVBQUUsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ3JELFFBQVEsTUFBTSxHQUFHLEdBQUcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDckQsUUFBUSxNQUFNLEdBQUcsR0FBRyxFQUFFLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNyRCxRQUFRLE1BQU0sS0FBSyxHQUFHLEVBQUUsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ3ZELFFBQVEsTUFBTSxLQUFLLEdBQUcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDdkQsUUFBUSxNQUFNLEtBQUssR0FBRyxFQUFFLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUN2RCxRQUFRLE1BQU0sR0FBRyxHQUFHLEVBQUUsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0FBQ3JEO0FBQ0E7SUFDQSxRQUFRLENBQUMsQ0FBQyxPQUFPO0lBQ2pCLFlBQVksRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO0lBQ2pELFlBQVksRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO0lBQ2pELFlBQVksRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO0FBQ2pEO0lBQ0EsWUFBWSxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUM7SUFDbEQsWUFBWSxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUM7SUFDbEQsWUFBWSxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUM7SUFDbEQsWUFBWSxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUM7SUFDbEQsWUFBWSxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUM7SUFDbEQsWUFBWSxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUM7QUFDbEQ7SUFDQSxZQUFZLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEtBQUssQ0FBQztJQUN0RCxZQUFZLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEtBQUssQ0FBQztJQUN0RCxZQUFZLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEtBQUssQ0FBQztBQUN0RDtJQUNBLFlBQVksRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDO0lBQ3JELFlBQVksRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDO0lBQ3RELFlBQVksRUFBRSxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUM1QyxZQUFZLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztBQUNuRDtJQUNBLFlBQVksRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDO0lBQ3JELFlBQVksRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDO0lBQ3RELFlBQVksRUFBRSxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsRUFBRSxFQUFFLEdBQUcsQ0FBQztJQUM3QyxZQUFZLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQztBQUNwRDtJQUNBLFlBQVksRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDO0lBQ3JELFlBQVksRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDO0lBQ3RELFlBQVksRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ25ELFNBQVMsQ0FBQztBQUNWO0lBQ0EsS0FBSztBQUNMO0lBQ0EsSUFBSSxTQUFTLFdBQVcsR0FBRztJQUMzQixRQUFRLE1BQU0sQ0FBQyxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3ZELFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDL0IsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztBQUMvQjtJQUNBLFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLGNBQWMsRUFBRSxDQUFDO0FBQ3JDO0lBQ0EsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2xDLFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNoRSxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ2xFLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNuQyxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDakUsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztBQUNuRTtJQUNBLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDbkQsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNuRCxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ25ELFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDbkQsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNuRCxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ25ELFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7QUFDbkQ7QUFDQTtJQUNBLFFBQVEsQ0FBQyxDQUFDLE9BQU87QUFDakI7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO0lBQ2hELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO0lBQ2hELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0FBQ2xEO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7SUFDaEQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7SUFDakQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztBQUNqRDtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO0lBQ2hELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0FBQ2xEO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztBQUNoRDtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUMzQyxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztBQUNsRDtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUMzQyxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztBQUNsRDtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2xELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2xELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2xELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2xELFNBQVMsQ0FBQztBQUNWO0lBQ0EsS0FBSztBQUNMO0FBQ0E7SUFDQSxJQUFJLFNBQVMsaUJBQWlCLEdBQUc7SUFDakMsUUFBUSxNQUFNLENBQUMsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUM3RCxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQy9CLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDL0I7SUFDQSxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxjQUFjLEVBQUUsQ0FBQztBQUNyQztJQUNBLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNuQyxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFH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USxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ2pFLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDbkUsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ25DLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNqRSxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0FBQ25FO0lBQ0EsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNuRCxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ25ELFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDbkQsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNuRCxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ25ELFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDbkQsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNuRCxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ25ELFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDbkQsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNuRCxRQUFRLE1BQU0sR0FBRyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0FBQ3BEO0lBQ0EsUUFBUSxDQUFDLENBQUMsT0FBTztJQUNqQixZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQy9DLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDL0MsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUMvQyxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNoRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNoRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztBQUNoRDtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUMzQyxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztBQUNoRDtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUMzQyxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztBQUNoRDtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0FBQ2hEO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDaEQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxHQUFHLENBQUM7SUFDakQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLENBQUM7SUFDakQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQzNDLFlBQVksQ0FBQyxD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cEMsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLFVBQVUsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUN0QyxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsWUFBWSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3hDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDL0IsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLFVBQVUsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUN0QyxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsV0FBVyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3ZDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDaEMsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNyQyxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsVUFBVSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3RDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxXQUFXLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDdkMsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNwQyxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQy9CLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDL0IsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNwQyxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3BDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDakMsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLFdBQVcsRUFBRSxLQUFLLENBQUMsQ0FBQztBQUN2QztJQUNBLFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLGNBQWMsRUFBRSxDQUFDO0FBQ3JDO0lBQ0EsUUFBUSxDQUFDLENBQUMsT0FBTztJQUNqQixZQUFZLENBQUMsQ0FBQyxFQUFFO0lBQ2hCLGdCQUFnQixDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDMUMsZ0JBQWdCO0lBQ2hCLG9CQUFvQixHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLE9BQU8sRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2pFLG9CQUFvQixHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO0lBQ2hDLGlCQUFpQjtJQUNqQixhQUFhO0FBQ2I7SUFDQTtBQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsUUFBUTtJQUN0QixnQkFBZ0IsUUFBUTtJQUN4QixnQkFBZ0IsQ0FBQyxDQUFDLE9BQU87SUFDekIsb0JBQW9CLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO0lBQ2xDLG9CQUFvQixDQUFDLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQztJQUMzQyxpQkFBaUI7SUFDakIsYUFBYTtJQUNiLFlBQVksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDOUQsWUFBWSxDQUFDLENBQUMsU0FBUztJQUN2QixnQkFBZ0IsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7SUFDOUIsZ0JBQWdCLENBQUMsQ0FBQyxPQUFPO0lBQ3pCLG9CQUFvQixDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQztJQUN4QyxvQkFBb0IsQ0FBQyxDQUFDLE9BQU87SUFDN0Isd0JBQXdCLENBQUMsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDO0lBQzVDLHdCQUF3QixDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQztJQUN4QyxxQkFBcUI7SUFDckIsaUJBQWlCO0lBQ2pCLGFBQWE7QUFDYjtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzNDLFlBQVksQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSTtJQUMxQixnQkFBZ0IsQ0FBQyxDQUFDLEtBQUs7SUFDdkIsb0JBQW9CLENBQUM7SUFDckIsb0JBQW9CLENBQUMsQ0FBQyxNQUFNO0lBQzVCLHdCQUF3QixDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQztJQUN2Qyx3QkFBd0IsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUM7SUFDNUMscUJBQXFCO0lBQ3JCLGlCQUFpQjtBQUNqQjtJQUNBLGdCQUFnQixDQUFDLENBQUMsSUFBSTtJQUN0QixvQkFBb0IsTUFBTSxHQUFHLE9BQU87SUFDcEMsb0JBQW9CLENBQUMsQ0FBQyxPQUFPO0lBQzdCLHdCQUF3QixDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQztJQUM1Qyx3QkFBd0IsQ0FBQyxDQUFDLE9BQU87SUFDakMsNEJBQTRCLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDO0lBQzNDLDRCQUE0QixDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQztJQUM1Qyx5QkFBeUI7SUFDekIscUJBQXFCO0lBQ3JCLGlCQUFpQjtBQUNqQjtJQUNBLGdCQUFnQixDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzNFLGdCQUFnQixDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN2QixhQUFhLENBQUM7QUFDZDtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3RELFlBQVksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUMxRCxZQUFZLENBQUMsQ0FBQyxRQUFRLENBQUMsV0FBVztJQUNsQyxnQkFBZ0IsQ0FBQyxDQUFDLE9BQU87SUFDekIsb0JBQW9CLENBQUMsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDO0lBQzFDLG9CQUFvQixDQUFDLENBQUMsT0FBTztJQUM3Qix3QkFBd0IsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUM7SUFDdkMsd0JBQXdCLENBQUMsQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDO0lBQ2hELHFCQUFxQjtJQUNyQixpQkFBaUI7SUFDakIsYUFBYTtJQUNiLFlBQVksQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSTtJQUMxQixnQkFBZ0IsQ0FBQyxDQUFDLEtBQUs7SUFDdkIsb0JBQW9CLENBQUM7SUFDckIsb0JBQW9CLENBQUMsQ0FBQyxNQUFNO0lBQzVCLHdCQUF3QixDQUFDLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQztJQUM5Qyx3QkFBd0IsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUM7SUFDL0MscUJBQXFCO0lBQ3JCLGlCQUFpQjtBQUNqQjtJQUNBLGdCQUFnQixDQUFDLENBQUMsUUFBUTtJQUMxQixvQkFBb0IsS0FBSztJQUN6QixvQkFBb0IsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsV0FBVztJQUMvQyx3QkFBd0IsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUM7SUFDOUMsd0JBQXdCLENBQUMsQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDO0lBQ2hELHdCQUF3QixDQUFDLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQztJQUM5Qyx3QkFBd0IsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUM7SUFDL0MscUJBQXFCO0lBQ3JCLGlCQUFpQjtBQUNqQjtJQUNBLGdCQUFnQixDQUFDLENBQUMsRUFBRTtJQUNwQixvQkFBb0IsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUM7SUFDckMsb0JBQW9CO0lBQ3BCLHdCQUF3QixHQUFHLENBQUMsQ0FBQyxRQUFRO0lBQ3JDLDRCQUE0QixXQUFXO0lBQ3ZDLDRCQUE0QixDQUFDLENBQUMsT0FBTztJQUNyQyxnQ0FBZ0MsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUM7SUFDcEQsZ0NBQWdDLENBQUMsQ0FBQyxPQUFPO0lBQ3pDLG9DQUFvQyxDQUFDLENBQUMsT0FBTztJQUM3Qyx3Q0FBd0MsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUM7SUFDekQsd0NBQXdDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO0lBQ3RELHFDQUFxQztJQUNyQyxvQ0FBb0MsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUM7SUFDcEQsaUNBQWlDO0lBQ2pDLDZCQUE2QjtJQUM3Qix5QkFBeUI7SUFDekIsd0JBQXdCLEdBQUcsQ0FBQyxDQUFDLElBQUk7SUFDakMsNEJBQTRCLEtBQUs7SUFDakMsNEJBQTRCLENBQUMsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDO0lBQ25ELDRCQUE0QixDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQztJQUNoRCw0QkFBNEIsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUM7SUFDbkQseUJBQXlCO0lBQ3pCLHFCQUFxQjtJQUNyQixpQkFBaUI7QUFDakI7SUFDQSxnQkFBZ0IsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQztJQUNuRyxnQkFBZ0IsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUN2RixnQkFBZ0IsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDdkIsYUFBYSxDQUFDO0FBQ2Q7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLGNBQWMsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDMUYsWUFBWSxDQUFDLENBQUMsSUFBSTtJQUNsQixnQkFBZ0IsTUFBTSxHQUFHLE9BQU87SUFDaEMsZ0JBQWdCLENBQUMsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDO0lBQ3BDLGdCQUFnQixDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQztJQUNoQyxhQUFhO0FBQ2I7QUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLFNBQVM7SUFDdkIsZ0JBQWdCLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO0lBQzlCLGdCQUFnQixDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQztJQUNwQyxhQUFhO0FBQ2I7SUFDQSxTQUFTLENBQUM7SUFDVixLQUFLO0FBQ0w7SUFDQSxJQUFJLFNBQVMsYUFBYSxHQUFHO0lBQzdCLFFBQVEsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUM3QyxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3BDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxVQUFVLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDdEMsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLFlBQVksRUFBRSxLQUFLLENBQUMsQ0FBQztJQUN4QyxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQy9CLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDaEMsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLFdBQVcsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUN2QyxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsU0FBUyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3JDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxVQUFVLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDdEMsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLFdBQVcsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUN2QyxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3BDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDbkMsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUMvQixRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQy9CLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDcEMsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNwQyxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ2pDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxXQUFXLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDdkM7SUFDQSxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxjQUFjLEVBQUUsQ0FBQztBQUNyQztJQUNBLFFBQVEsTUFBTSxHQUFHLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDbkQ7SUFDQSxRQUFRLE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUM7SUFDckMsWUFBWSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRTtJQUM1QyxZQUFZLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFO0lBQzVDLFlBQVksRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUM7SUFDNUMsWUFBWSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQztJQUM1QyxTQUFTLENBQUMsQ0FBQztBQUNYO0lBQ0EsUUFBUSxDQUFDLENBQUMsT0FBTztJQUNqQixZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLE9BQU8sRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3RELFlBQVksQ0FBQyxDQUFDLEVBQUU7SUFDaEIsZ0JBQWdCLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUMxQyxnQkFBZ0IsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7SUFDekIsYUFBYTtJQUNiLFlBQVksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxPQUFPLEVBQUUsQ0FBQztJQUMxRixZQUFZLENBQUMsQ0FBQyxRQUFRO0lBQ3RCLGdCQUFnQixTQUFTO0lBQ3pCLGdCQUFnQixDQUFDLENBQUMsT0FBTztJQUN6QixvQkFBb0IsQ0FBQyxDQUFDLFNBQVM7SUFDL0Isd0JBQXdCLENBQUMsQ0FBQyxPQUFPO0lBQ2pDLDRCQUE0QixDQUFDLENBQUMsT0FBTztJQUNyQyxnQ0FBZ0MsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUM7SUFDeEQsZ0NBQWdDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO0lBQzlDLDZCQUE2QjtJQUM3Qiw0QkFBNEIsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7SUFDMUMseUJBQXlCO0lBQ3pCLHdCQUF3QixDQUFDLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQztJQUMvQyxxQkFBcUI7SUFDckIsb0JBQW9CLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO0lBQ2xDLGlCQUFpQjtJQUNqQixhQUFhO0FBQ2I7QUFDQTtJQUNBO0FBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxRQUFRO0lBQ3RCLGdCQUFnQixPQUFPO0lBQ3ZCLGdCQUFnQixDQUFDLENBQUMsT0FBTztJQUN6QixvQkFBb0IsQ0FBQyxDQUFDLE9BQU87SUFDN0Isd0JBQXdCLENBQUMsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDO0lBQzdDLHdCQUF3QixDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztJQUN0QyxxQkFBcUI7SUFDckIsb0JBQW9CLENBQUMsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDO0lBQzNDLGlCQUFpQjtJQUNqQixhQUFhO0lBQ2IsWUFBWSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJO0lBQzFCLGdCQUFnQixDQUFDLENBQUMsS0FBSztJQUN2QixvQkFBb0IsQ0FBQztJQUNyQixvQkFBb0IsQ0FBQyxDQUFDLFFBQVE7SUFDOUIsd0JBQXdCLENBQUMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDO0lBQzNDLHdCQUF3QixDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztJQUN0QyxxQkFBcUI7SUFDckIsaUJBQWlCO0FBQ2pCO0lBQ0E7SUFDQSxnQkFBZ0IsQ0FBQyxDQUFDLEVBQUU7SUFDcEIsb0JBQW9CLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsU0FBUyxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUMzRSxvQkFBb0I7SUFDcEIsd0JBQXdCLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMxRCx3QkFBd0IsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJO0lBQ3pDLDRCQUE0QixDQUFDLENBQUMsS0FBSztJQUNuQyxnQ0FBZ0MsQ0FBQztJQUNqQyxnQ0FBZ0MsQ0FBQyxDQUFDLE1BQU07SUFDeEMsb0NBQW9DLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDO0lBQ25ELG9DQUFvQyxDQUFDLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQztJQUMzRCxpQ0FBaUM7SUFDakMsNkJBQTZCO0FBQzdCO0lBQ0EsNEJBQTRCLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLFNBQVMsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDMUY7SUFDQSw0QkFBNEIsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN2Riw0QkFBNEIsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDbkMseUJBQXlCLENBQUM7SUFDMUIscUJBQXFCO0lBQ3JCLGlCQUFpQjtBQUNqQjtJQUNBLGdCQUFnQixDQUFDLENBQUMsSUFBSTtJQUN0QixvQkFBb0IsTUFBTSxHQUFHLFFBQVE7SUFDckMsb0JBQW9CLENBQUMsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDO0lBQ3hDLG9CQUFvQixDQUFDLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQztJQUMxQyxvQkFBb0IsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUM7SUFDNUMsb0JBQW9CLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDO0lBQ25DLG9CQUFvQixDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQztJQUN2QyxvQkFBb0IsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUM7SUFDM0Msb0JBQW9CLEdBQUc7SUFDdkIsaUJBQWlCO0FBQ2pCO0lBQ0EsZ0JBQWdCLENBQUMsQ0FBQyxJQUFJO0lBQ3RCLG9CQUFvQixNQUFNLEdBQUcsTUFBTTtJQUNuQyxvQkFBb0IsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUM7SUFDcEMsb0JBQW9CLEdBQUc7SUFDdkIsb0JBQW9CLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDO0lBQ3BDLGlCQUFpQjtJQUNqQixnQkFBZ0IsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztJQUM1RixnQkFBZ0IsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDdkIsYUFBYSxDQUFDO0lBQ2QsU0FBUyxDQUFDO0lBQ1YsS0FBSztBQUNMO0lBQ0EsSUFBSSxTQUFTLGdCQUFnQixHQUFHO0lBQ2hDLFFBQVEsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEdBQUcsY0FBYyxDQUFDLENBQUM7SUFDOUQsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNwQyxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQy9CLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDbEMsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNqQyxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ2pDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDbEM7SUFDQSxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxjQUFjLEVBQUUsQ0FBQztBQUNyQztJQUNBLFFBQVEsQ0FBQyxDQUFDLE9BQU87SUFDakIsWUFBWSxDQUFDLENBQUMsRUFBRTtJQUNoQixnQkFBZ0IsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDekQsZ0JBQWdCLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO0lBQ3pCLGFBQWE7SUFDYixZQUFZLENBQUMsQ0FBQyxRQUFRO0lBQ3RCLGdCQUFnQixNQUFNO0lBQ3RCLGdCQUFnQixDQUFDLENBQUMsT0FBTztJQUN6QixvQkFBb0IsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7SUFDbEMsb0JBQW9CLENBQUMsQ0FBQyxPQUFPO0lBQzdCLHdCQUF3QixDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQztJQUN2Qyx3QkFBd0IsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7SUFDdEMscUJBQXFCO0lBQ3JCLGlCQUFpQjtJQUNqQixhQUFhO0FBQ2I7SUFDQSxZQUFZLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDbkQsWUFBWSxDQUFDLENBQUMsUUFBUTtJQUN0QixnQkFBZ0IsS0FBSztJQUNyQixnQkFBZ0IsQ0FBQyxDQUFDLE9BQU87SUFDekIsb0JBQW9CLENBQUMsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDO0lBQ3hDLG9CQUFvQixDQUFDLENBQUMsT0FBTztJQUM3Qix3QkFBd0IsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUM7SUFDMUMsd0JBQXdCLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDO0lBQ3hDLHFCQUFxQjtJQUNyQixpQkFBaUI7SUFDakIsYUFBYTtJQUNiLFlBQVksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxNQUFNO0lBQzdCLGdCQUFnQixDQUFDLENBQUMsT0FBTztJQUN6QixvQkFBb0IsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUM7SUFDckMsb0JBQW9CLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDO0lBQ3BDLGlCQUFpQjtJQUNqQixhQUFhO0lBQ2IsWUFBWSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJO0lBQzFCLGdCQUFnQixDQUFDLENBQUMsS0FBSztJQUN2QixvQkFBb0IsQ0FBQztJQUNyQixvQkFBb0IsQ0FBQyxDQUFDLE1BQU07SUFDNUIsd0JBQXdCLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDO0lBQ3pDLHdCQUF3QixDQUFDLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQztJQUMxQyxxQkFBcUI7SUFDckIsaUJBQWlCO0lBQ2pCLGdCQUFnQixDQUFDLENBQUMsSUFBSTtJQUN0QixvQkFBb0IsTUFBTSxHQUFHLE1BQU07SUFDbkMsb0JBQW9CLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDO0lBQ3JDLG9CQUFvQixDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQztJQUNyQyxvQkFBb0IsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUM7SUFDckMsaUJBQWlCO0lBQ2pCLGdCQUFnQixDQUFDLENBQUMsSUFBSTtJQUN0QixvQkFBb0IsTUFBTSxHQUFHLE1BQU07SUFDbkMsb0JBQW9CLENBQUMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDO0lBQ3RDLG9CQUFvQixDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQztJQUNyQyxvQkFBb0IsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUM7SUFDdEMsaUJBQWlCO0lBQ2pCLGdCQUFnQixDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ2pGLGdCQUFnQixDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ2pGLGdCQUFnQixDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN2QixhQUFhLENBQUM7QUFDZDtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUk7SUFDbEIsZ0JBQWdCLE1BQU0sR0FBRyxjQUFjO0lBQ3ZDLGdCQUFnQixDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQztJQUNwQyxnQkFBZ0IsQ0FBQyxDQUFDLE9BQU87SUFDekIsb0JBQW9CLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDO0lBQ25DLG9CQUFvQixDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztJQUNsQyxpQkFBaUI7SUFDakIsYUFBYTtBQUNiO0lBQ0EsWUFBWSxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3ZFLFlBQVksQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSTtJQUMxQixnQkFBZ0IsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDdEQsZ0JBQWdCLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLFNBQVMsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDbEYsZ0JBQWdCLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDM0UsZ0JBQWdCLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3ZCLGFBQWEsQ0FBQztBQUNkO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDbkcsU0FBUyxDQUFDO0lBQ1YsS0FBSztBQUNMO0lBQ0EsSUFBSSxhQUFhLEVBQUUsQ0FBQztJQUNwQixJQUFJLGdCQUFnQixFQUFFLENBQUM7SUFDdkIsSUFBSSxpQkFBaUIsRUFBRSxDQUFDO0lBQ3hCLElBQUksYUFBYSxFQUFFLENBQUM7QUFDcEI7SUFDQSxJQUFJLE1BQU0sQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDbEMsSUFBSSxNQUFNLENBQUMsY0FBYyxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsQ0FBQztBQUM1QztBQUNBO0lBQ0EsQ0FBQyxDQUFDO0FBQ0Y7SUFDQTtJQUNBO0FBQ0E7SUFDQTtBQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7QUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0FBQ0E7SUFDQTtJQUNBO0lBQ0E7QUFDQTtJQUNBLE1BQU0sbUJBQW1CLEdBQUcsb0JBQW9CLENBQUM7SUFDakQ7SUFDQSxNQUFNLG9CQUFvQixHQUFHLHFCQUFxQixDQUFDO0lBQ25ELE1BQU0sZUFBZSxHQUFHLGNBQWMsQ0FBQztBQUN2QztJQUNBLElBQUksdUJBQXVCLEdBQUcsU0FBUyxVQUFVLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsRUFBRSxFQUFFO0FBQ25GO0FBQ0E7SUFDQSxJQUFJLE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUMsR0FBRyxDQUFDO0lBQ2hELElBQUksTUFBTSxFQUFFLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUNyQjtJQUNBLElBQUksSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFLE9BQU8sTUFBTSxDQUFDO0lBQzlDLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsR0FBRztJQUM3QixRQUFRLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUNsQixLQUFLLENBQUM7QUFDTjtJQUNBLElBQUksU0FBUyxXQUFXLEdBQUc7SUFDM0IsUUFBUSxNQUFNLENBQUMsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLE1BQU0sR0FBRyxTQUFTLENBQUMsQ0FBQztJQUN6RCxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ2hDLFFBQVEsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUMvQjtJQUNBLFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLGNBQWMsRUFBRSxDQUFDO0FBQ3JDO0lBQ0EsUUFBUSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJO0lBQ3hCLFlBQVksV0FBVyxHQUFHLFNBQVM7SUFDbkMsWUFBWSxDQUFDLENBQUMsT0FBTztJQUNyQixnQkFBZ0IsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUM7SUFDaEMsZ0JBQWdCLENBQUMsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNqQyxhQUFhO0lBQ2IsU0FBUyxDQUFDLENBQUM7SUFDWCxLQUFLO0lBQ0wsSUFBSSxTQUFTLGlCQUFpQixHQUFHO0lBQ2pDLFFBQVEsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEdBQUcsZUFBZSxDQUFDLENBQUM7SUFDL0QsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNoQyxRQUFRLENBQUMsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDL0I7SUFDQSxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxjQUFjLEVBQUUsQ0FBQztBQUNyQztJQUNBLFFBQVEsQ0FBQyxDQUFDLE9BQU87SUFDakIsWUFBWSxDQUFDLENBQUMsT0FBTztJQUNyQixnQkFBZ0IsQ0FBQyxDQUFDLElBQUk7SUFDdEIsb0JBQW9CLFdBQVcsR0FBRyxTQUFTO0lBQzNDLG9CQUFvQixDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQztJQUNwQyxpQkFBaUI7SUFDakIsZ0JBQWdCLENBQUMsQ0FBQyxJQUFJO0lBQ3RCLG9CQUFvQixXQUFXLEdBQUcsU0FBUztJQUMzQyxvQkFBb0IsQ0FBQyxDQUFDLE9BQU87SUFDN0Isd0JBQXdCLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDO0lBQ3hDLHdCQUF3QixDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztJQUN2QyxxQkFBcUI7SUFDckIsaUJBQWlCO0lBQ2pCLGFBQWE7SUFDYixTQUFTLENBQUM7SUFDVixLQUFLO0FBQ0w7SUFDQSxJQUFJLFNBQVMsU0FBUyxHQUFHO0lBQ3pCLFFBQVEsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEdBQUcsT0FBTyxDQUFDLENBQUM7SUFDdkQsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNoQyxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQ2hDO0lBQ0EsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsY0FBYyxFQUFFLENBQUM7QUFDckM7SUFDQSxRQUFRLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO0lBQ3BDLFlBQVksQ0FBQyxDQUFDLE9BQU87SUFDckIsZ0JBQWdCLENBQUMsQ0FBQyxTQUFTO0lBQzNCLG9CQUFvQixDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQztJQUNwQyxvQkFBb0IsQ0FBQyxDQUFDLENBQUM7SUFDdkIsb0JBQW9CLENBQUMsQ0FBQyxRQUFRO0lBQzlCLHdCQUF3QixDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQztJQUN4Qyx3QkFBd0IsQ0FBQyxDQUFDLENBQUM7SUFDM0IscUJBQXFCO0lBQ3JCLGlCQUFpQjtJQUNqQixhQUFhLENBQUM7SUFDZCxTQUFTO0lBQ1QsS0FBSztBQUNMO0FBQ0E7SUFDQSxJQUFJLFNBQVMsZUFBZSxHQUFHO0lBQy9CLFFBQVEsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEdBQUcsYUFBYSxDQUFDLENBQUM7SUFDN0QsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNoQyxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQ2hDO0lBQ0EsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsY0FBYyxFQUFFLENBQUM7QUFDckM7SUFDQSxRQUFRLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO0lBQ3BDLFlBQVksQ0FBQyxDQUFDLE9BQU87SUFDckIsZ0JBQWdCLENBQUMsQ0FBQyxTQUFTO0lBQzNCLG9CQUFvQixDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQztJQUNwQyxvQkFBb0IsQ0FBQyxDQUFDLENBQUM7SUFDdkIsb0JBQW9CLENBQUMsQ0FBQyxRQUFRO0lBQzlCLHdCQUF3QixDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQztJQUN4Qyx3QkFBd0IsQ0FBQyxDQUFDLENBQUM7SUFDM0IscUJBQXFCO0lBQ3JCLGlCQUFpQjtJQUNqQixhQUFhLENBQUM7SUFDZCxTQUFTO0FBQ1Q7SUFDQSxLQUFLO0FBQ0w7QUFDQTtJQUNBLElBQUksU0FBUyxTQUFTLEdBQUc7SUFDekIsUUFBUSxNQUFNLENBQUMsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLE1BQU0sR0FBRyxPQUFPLENBQUMsQ0FBQztJQUN2RCxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQ2hDO0lBQ0EsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsY0FBYyxFQUFFLENBQUM7QUFDckM7SUFDQSxRQUFRLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUk7SUFDeEIsWUFBWSxXQUFXLEdBQUcsT0FBTztJQUNqQyxZQUFZLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDO0lBQzVCLFNBQVMsQ0FBQyxDQUFDO0FBQ1g7SUFDQSxRQUFRLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUk7SUFDeEIsWUFBWSxXQUFXLEdBQUcsTUFBTTtJQUNoQyxZQUFZLENBQUMsQ0FBQyxPQUFPO0lBQ3JCLGdCQUFnQixDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQztJQUNoQyxnQkFBZ0IsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUM7SUFDL0IsYUFBYTtJQUNiLFNBQVMsQ0FBQyxDQUFDO0FBQ1g7SUFDQSxRQUFRLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUk7SUFDeEIsWUFBWSxXQUFXLEdBQUcsT0FBTztJQUNqQyxZQUFZLENBQUMsQ0FBQyxPQUFPO0lBQ3JCLGdCQUFnQixDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQztJQUNoQyxnQkFBZ0IsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2pDLGFBQWE7SUFDYixTQUFTLENBQUMsQ0FBQztJQUNYLEtBQUs7QUFDTDtBQUNBO0lBQ0EsSUFBSSxTQUFTLGVBQWUsR0FBRztJQUMvQixRQUFRLE1BQU0sQ0FBQyxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsTUFBTSxHQUFHLGFBQWEsQ0FBQyxDQUFDO0lBQzdELFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDaEM7SUFDQSxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxjQUFjLEVBQUUsQ0FBQztBQUNyQztJQUNBLFFBQVEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSTtJQUN4QixZQUFZLFdBQVcsR0FBRyxPQUFPO0lBQ2pDLFlBQVksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUM7SUFDNUIsU0FBUyxDQUFDLENBQUM7QUFDWDtJQUNBLFFBQVEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSTtJQUN4QixZQUFZLFdBQVcsR0FBRyxPQUFPO0lBQ2pDLFlBQVksQ0FBQyxDQUFDLE9BQU87SUFDckIsZ0JBQWdCLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDO0lBQ2hDLGdCQUFnQixDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztJQUMvQixhQUFhO0lBQ2IsU0FBUyxDQUFDLENBQUM7SUFDWCxLQUFLO0FBQ0w7SUFDQSxJQUFJLFNBQVMsT0FBTyxHQUFHO0lBQ3ZCLFFBQVEsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDLENBQUM7SUFDckQsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNoQyxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ2hDLFFBQVEsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMvQixRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ2hDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDaEM7SUFDQSxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxjQUFjLEVBQUUsQ0FBQztBQUNyQztJQUNBLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNwQyxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDaEUsUUFBUSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNwRixRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDcEMsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3BDLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNoRSxRQUFRLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3BGLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNwQztJQUNBLFFBQVEsTUFBTSxJQUFJLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDbkQsUUFBUSxNQUFNLElBQUksR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNuRCxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2pELFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDakQsUUFBUSxNQUFNLFFBQVEsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN2RCxRQUFRLE1BQU0sUUFBUSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3ZELFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDakQsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUNqRDtBQUNBO0lBQ0EsUUFBUSxDQUFDLENBQUMsT0FBTztJQUNqQixZQUFZLENBQUMsQ0FBQyxFQUFFO0lBQ2hCLGdCQUFnQixDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxTQUFTLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM1RCxnQkFBZ0IsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxTQUFTLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ3BFLGFBQWE7SUFDYixZQUFZLENBQUMsQ0FBQyxFQUFFO0lBQ2hCLGdCQUFnQixDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxTQUFTLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM1RCxnQkFBZ0IsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3JDLGFBQWE7SUFDYixZQUFZLENBQUMsQ0FBQyxFQUFFO0lBQ2hCLGdCQUFnQixDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxRQUFRLEVBQUUsRUFBRSxDQUFDO0lBQ2xELGdCQUFnQixDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLFVBQVUsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUN0RixhQUFhO0lBQ2IsWUFBWSxDQUFDLENBQUMsRUFBRTtJQUNoQixnQkFBZ0IsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsUUFBUSxFQUFFLEVBQUUsQ0FBQztJQUNsRCxnQkFBZ0IsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxVQUFVLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDdEYsYUFBYTtBQUNiO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxTQUFTLEVBQUUsRUFBRSxFQUFFLElBQUksQ0FBQztJQUNyRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLFNBQVMsRUFBRSxFQUFFLEVBQUUsSUFBSSxDQUFDO0lBQ3JELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUFDO0lBQ3RELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUFDO0lBQ3RELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsUUFBUSxDQUFDO0lBQzVELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsUUFBUSxDQUFDO0lBQzVELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsRUFBRSxDQUFDO0lBQzFELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsRUFBRSxDQUFDO0FBQzFEO0lBQ0EsWUFBWSxDQUFDLENBQUMsRUFBRTtJQUNoQixnQkFBZ0IsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDbkQsZ0JBQWdCLENBQUMsQ0FBQyxFQUFFO0lBQ3BCLG9CQUFvQixDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUN2RCxvQkFBb0IsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3pDLGlCQUFpQjtJQUNqQixhQUFhO0lBQ2IsWUFBWSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDakMsU0FBUyxDQUFDO0lBQ1YsS0FBSztBQUNMO0FBQ0E7SUFDQSxJQUFJLFNBQVMsWUFBWSxHQUFHO0lBQzVCLFFBQVEsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEdBQUcsVUFBVSxDQUFDLENBQUM7SUFDMUQsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNoQyxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ2hDLFFBQVEsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMvQixRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQ2hDO0lBQ0EsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsY0FBYyxFQUFFLENBQUM7QUFDckM7SUFDQSxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDcEMsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2hFLFFBQVEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDcEYsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3BDLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNwQyxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDaEU7SUFDQSxRQUFRLE1BQU0sSUFBSSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ25ELFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDakQsUUFBUSxNQUFNLFFBQVEsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN2RCxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ2pEO0lBQ0EsUUFBUSxDQUFDLENBQUMsT0FBTztJQUNqQixZQUFZLENBQUMsQ0FBQyxFQUFFO0lBQ2hCLGdCQUFnQixDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxTQUFTLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM1RCxnQkFBZ0IsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxlQUFlLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQzFFLGFBQWE7SUFDYixZQUFZLENBQUMsQ0FBQyxFQUFFO0lBQ2hCLGdCQUFnQixDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxlQUFlLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNsRSxnQkFBZ0IsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3JDLGFBQWE7SUFDYixZQUFZLENBQUMsQ0FBQyxFQUFFO0lBQ2hCLGdCQUFnQixDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxRQUFRLEVBQUUsRUFBRSxDQUFDO0lBQ2xELGdCQUFnQixDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLFdBQVcsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUN2RixhQUFhO0lBQ2IsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxTQUFTLEVBQUUsRUFBRSxFQUFFLElBQUksQ0FBQztJQUNyRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQztJQUN0RCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLFFBQVEsQ0FBQztJQUM1RCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsUUFBUSxFQUFFLEVBQUUsQ0FBQztBQUMxRDtJQUNBLFlBQVksQ0FBQyxDQUFDLEVBQUU7SUFDaEIsZ0JBQWdCLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ25ELGdCQUFnQixDQUFDLENBQUMsRUFBRTtJQUNwQixvQkFBb0IsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDdkQsb0JBQW9CLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN6QyxpQkFBaUI7SUFDakIsYUFBYTtJQUNiLFlBQVksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2pDLFNBQVMsQ0FBQztJQUNWLEtBQUs7QUFDTDtJQUNBLElBQUksU0FBUyxXQUFXLEdBQUc7SUFDM0IsUUFBUSxNQUFNLENBQUMsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLE1BQU0sR0FBRyxTQUFTLENBQUMsQ0FBQztJQUN6RCxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ2hDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDaEM7SUFDQSxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxjQUFjLEVBQUUsQ0FBQztBQUNyQztJQUNBLFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNuQyxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDL0QsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNqRSxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDcEMsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2hFLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDbEU7SUFDQSxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2hELFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDaEQsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNoRCxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2hELFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDaEQsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNoRCxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2hELFFBQVEsTUFBTSxNQUFNLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDckQ7SUFDQSxRQUFRLENBQUMsQ0FBQyxPQUFPO0lBQ2pCLFlBQVksQ0FBQyxDQUFDLEVBQUU7SUFDaEIsZ0JBQWdCLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLFNBQVMsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzVELGdCQUFnQjtJQUNoQixvQkFBb0IsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxPQUFPLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ25GLG9CQUFvQixHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO0lBQ2hDLGlCQUFpQjtJQUNqQixhQUFhO0lBQ2IsWUFBWSxDQUFDLENBQUMsRUFBRTtJQUNoQixnQkFBZ0IsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsUUFBUSxFQUFFLENBQUMsQ0FBQztJQUNqRCxnQkFBZ0I7SUFDaEIsb0JBQW9CLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxlQUFlLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDbEcsb0JBQW9CLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7SUFDaEMsaUJBQWlCO0lBQ2pCLGFBQWE7QUFDYjtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsU0FBUyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDakQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxTQUFTLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNqRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLFNBQVMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ2pEO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDakQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxTQUFTLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNqRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNqRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNqRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUNqRDtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2pELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2pELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsU0FBUyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDakQ7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUNqRDtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO0lBQ2xELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0FBQ25EO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxNQUFNLENBQUM7SUFDdEQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLENBQUM7SUFDaEUsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLENBQUM7QUFDaEU7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNuRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztJQUNuRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLEVBQUUsQ0FBQztBQUN4RDtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO0lBQ2xELFNBQVMsQ0FBQztJQUNWLEtBQUs7QUFDTDtBQUNBO0lBQ0EsSUFBSSxTQUFTLGlCQUFpQixHQUFHO0lBQ2pDLFFBQVEsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEdBQUcsZUFBZSxDQUFDLENBQUM7SUFDL0QsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNoQyxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQ2hDO0lBQ0EsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsY0FBYyxFQUFFLENBQUM7QUFDckM7SUFDQSxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbkMsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQy9ELFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNwQyxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDaEUsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNsRTtJQUNBLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDakQsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNqRCxRQUFRLE1BQU0sSUFBSSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ25ELFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDaEQsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNoRCxRQUFRLE1BQU0sU0FBUyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ3hEO0lBQ0EsUUFBUSxDQUFDLENBQUMsT0FBTztJQUNqQixZQUFZLENBQUMsQ0FBQyxFQUFFO0lBQ2hCLGdCQUFnQixDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxlQUFlLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNsRSxnQkFBZ0I7SUFDaEIsb0JBQW9CLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsYUFBYSxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN6RixvQkFBb0IsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztJQUNoQyxpQkFBaUI7SUFDakIsYUFBYTtBQUNiO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLFNBQVMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO0FBQ2xEO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLFNBQVMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO0FBQ2xEO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLFNBQVMsRUFBRSxFQUFFLEVBQUUsSUFBSSxDQUFDO0FBQ3JEO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNsRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLFNBQVMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2pELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ2xELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsTUFBTSxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ3BELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ2pEO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNuRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztBQUNsRDtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7QUFDbEQ7SUFDQTtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxTQUFTLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztJQUNsRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztJQUNuRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztBQUNuRDtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxTQUFTLENBQUM7SUFDL0QsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLENBQUM7SUFDekUsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLENB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QUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3BGLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNwQyxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDcEMsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2hFLFFBQVEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDcEYsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3BDLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNwQyxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDaEUsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNsRTtJQUNBLFFBQVEsTUFBTSxJQUFJLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDbkQsUUFBUSxNQUFNLElBQUksR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNuRCxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2pELFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDakQsUUFBUSxNQUFNLFFBQVEsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN2RCxRQUFRLE1BQU0sUUFBUSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3ZELFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDakQsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNqRCxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2hELFFBQVEsTUFBTSxXQUFXLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDMUQsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FB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LEVBQUUsQ0FBQztJQUNuRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztBQUNwRDtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDO0lBQ3RELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsTUFBTSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDO0FBQzdEO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDbkQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7SUFDbkQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUM7QUFDdkQ7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNwRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLFNBQVMsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ25ELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUFDO0lBQ3RELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUFDO0lBQ3RELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFB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WUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxXQUFXLENBQUM7SUFDN0QsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxTQUFTLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztJQUNsRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNwRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNsRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNqRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLENBQUMsQ0FBQztJQUNyRSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNsRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLFNBQVMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO0lBQ2xELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO0FBQ2xEO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7SUFDbkQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7QUFDcEQ7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQztJQUN0RCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQztBQUM3RDtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ25ELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO0lBQ25ELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDO0FBQ3ZEO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7SUFDbkQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxTQUFTLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNuRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQztJQUN0RCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNwRCxTQUFTLENBQUM7SUFDVixLQUFLO0FBQ0w7QUFDQTtJQUNBLElBQUksU0FBUyxjQUFjLEdBQUc7QUFDOUI7SUFDQSxRQUFRLE1BQU0sQ0FBQyxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsTUFBTSxHQUFHLFlBQVksQ0FBQyxDQUFDO0lBQzVELFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDaEMsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNoQyxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ2hDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDaEM7SUFDQSxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxjQUFjLEVBQUUsQ0FBQztBQUNyQztJQUNBLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNwQyxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDaEUsUUFBUSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNwRixRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDcEMsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2hFLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNwQyxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDaEUsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNsRTtJQUNBLFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDaEQsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNqRCxRQUFRLE1BQU0sV0FBVyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzFELFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDaEQsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNoRCxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2hELFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDakQsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNoRCxRQUFRLE1BQU0sRUFBRSxHQUFHLENB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LEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztJQUNsRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNwRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNsRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNqRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLENBQUMsQ0FBQztJQUNyRSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNsRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLFNBQVMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO0lBQ2xELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO0FBQ2xEO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7SUFDbkQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7QUFDcEQ7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQztJQUN0RCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQztBQUM3RDtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ25ELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO0lBQ25ELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDO0FBQ3ZEO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7SUFDbEQsU0FBUyxDQUFDO0lBQ1YsS0FBSztBQUNMO0lBQ0EsSUFBSSxTQUFTLFFBQVEsR0FBRztJQUN4QixRQUFRLE1BQU0sQ0FBQyxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxDQUFDO0lBQ3RELFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDaEMsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztBQUNoQztJQUNBLFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLGNBQWMsRUFBRSxDQUFDO0FBQ3JDO0lBQ0EsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ25DLFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUMvRCxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2pFLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNwQyxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDaEUsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNsRTtJQUNBLFFBQVEsQ0FBQyxDQUFDLE9BQU87SUFDakIsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxPQUFPLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztJQUNoRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO0lBQy9DLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsT0FBTyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7SUFDaEQsU0FBUyxDQUFDO0lBQ1YsS0FBSztBQUNMO0FBQ0E7SUFDQSxJQUFJLFNBQVMsY0FBYyxHQUFHO0lBQzlCLFFBQVEsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEdBQUcsWUFBWSxDQUFDLENBQUM7SUFDNUQsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNoQyxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQ2hDO0lBQ0EsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsY0FBYyxFQUFFLENBQUM7QUFDckM7SUFDQSxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbkMsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQy9ELFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNwQyxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDaEU7SUFDQSxRQUFRLENBQUMsQ0FBQyxPQUFPO0lBQ2pCLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsT0FBTyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7SUFDaEQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztJQUMvQyxTQUFTLENBQUM7SUFDVixLQUFLO0FBQ0w7QUFDQTtJQUNBLElBQUksU0FBUyxRQUFRLEdBQUc7SUFDeEIsUUFBUSxNQUFNLENBQUMsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsQ0FBQztJQUN0RCxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ2hDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDaEMsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztBQUNoQztJQUNBLFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLGNBQWMsRUFBRSxDQUFDO0FBQ3JDO0lBQ0EsUUFBUSxNQUFNLEdBQUcsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDcEQ7SUFDQSxRQUFRLENBQUMsQ0FBQyxPQUFPO0lBQ2pCLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsR0FBRyxDQUFDO0lBQzFELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDNUUsU0FBUyxDQUFDO0lBQ1YsS0FBSztBQUNMO0lBQ0EsSUFBSSxTQUFTLGFBQWEsR0FBRztJQUM3QixRQUFRLE1BQU0sQ0FBQyxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsTUFBTSxHQUFHLFdBQVcsQ0FBQyxDQUFDO0lBQzNELFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDaEMsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNoQyxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQ2hDO0lBQ0EsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsY0FBYyxFQUFFLENBQUM7QUFDckM7SUFDQSxRQUFRLE1BQU0sR0FBRyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNwRDtJQUNBLFFBQVEsQ0FBQyxDQUFDLE9BQU87SUFDakIsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxZQUFZLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxHQUFHLENBQUM7SUFDaEUsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxXQUFXLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNqRixTQUFTLENBQUM7SUFDVixLQUFLO0FBQ0w7QUFDQTtJQUNBLElBQUksU0FBUyxjQUFjLEdBQUc7SUFDOUIsUUFBUSxNQUFNLENBQUMsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLE1BQU0sR0FBRyxZQUFZLENBQUMsQ0FBQztJQUM1RCxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ2hDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDaEMsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztBQUNoQztJQUNBLFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLGNBQWMsRUFBRSxDQUFDO0FBQ3JDO0lBQ0EsUUFBUSxNQUFNLEdBQUcsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDcEQ7SUFDQSxRQUFRLENBQUMsQ0FBQyxPQUFPO0lBQ2pCLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsWUFBWSxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsR0FBRyxDQUFDO0lBQ2hFLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsWUFBWSxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbEYsU0FBUyxDQUFDO0lBQ1YsS0FBSztBQUNMO0lBQ0E7SUFDQSxJQUFJLFNBQVMsY0FBYyxHQUFHO0lBQzlCLFFBQVEsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEdBQUcsWUFBWSxDQUFDLENBQUM7SUFDNUQsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNoQyxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQ2hDO0lBQ0EsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsY0FBYyxFQUFFLENBQUM7QUFDckM7SUFDQSxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbkMsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQy9ELFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDakUsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3BDLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNoRSxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2xFO0FBQ0E7SUFDQSxRQUFRLE1BQU0sS0FBSyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3BELFFBQVEsTUFBTSxNQUFNLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDckQsUUFBUSxNQUFNLE1BQU0sR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUNyRDtJQUNBLFFBQVEsQ0FBQyxDQUFDLE9BQU87SUFDakIsWUFBWSxDQUFDLENBQUMsRUFBRTtJQUNoQixnQkFBZ0IsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsU0FBUyxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDNUQsZ0JBQWdCLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLE9BQU8sRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzFELGdCQUFnQjtJQUNoQixvQkFBb0IsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxVQUFVLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQztJQUNqRSxvQkFBb0IsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQztJQUNyRSxvQkFBb0IsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLENBQUM7SUFDMUUsb0JBQW9CLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsTUFBTSxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsRUFBRSxDQUFDO0lBQ2xFLG9CQUFvQixHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sRUFBRSxDQUFDLEVBQUUsTUFBTSxFQUFFLEVBQUUsQ0FBQztJQUNsRSxvQkFBb0IsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLEVBQUUsRUFBRSxDQUFDO0lBQ3ZELGlCQUFpQjtJQUNqQixhQUFhO0lBQ2IsU0FBUyxDQUFDO0lBQ1YsS0FBSztBQUNMO0FBQ0E7SUFDQTtJQUNBLElBQUksU0FBUyxhQUFhLEdBQUc7SUFDN0IsUUFBUSxNQUFNLENBQUMsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLE1BQU0sR0FBRyxXQUFXLENBQUMsQ0FBQztJQUMzRCxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ2hDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDaEM7SUFDQSxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxjQUFjLEVBQUUsQ0FBQztBQUNyQztJQUNBLFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNuQyxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDL0QsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNqRSxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDcEMsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ2hFO0FBQ0E7SUFDQSxRQUFRLE1BQU0sS0FBSyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3BELFFBQVEsTUFBTSxNQUFNLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDckQsUUFBUSxNQUFNLE1BQU0sR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUNyRDtJQUNBLFFBQVEsQ0FBQyxDQUFDLE9BQU87SUFDakIsWUFBWSxDQUFDLENBQUMsRUFBRTtJQUNoQixnQkFBZ0IsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsU0FBUyxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDNUQsZ0JBQWdCO0lBQ2hCLG9CQUFvQixHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLE9BQU8sRUFBRSxFQUFFLENBQUM7SUFDeEQsb0JBQW9CLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsT0FBTyxFQUFFLEVBQUUsQ0FBQztJQUN4RCxpQkFBaUI7SUFDakIsZ0JBQWdCO0lBQ2hCLG9CQUFvQixHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLFVBQVUsRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDO0lBQ2pFLG9CQUFvQixHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxDQUFDO0lBQ3JFLG9CQUFvQixHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sQ0FBQztJQUMxRSxvQkFBb0IsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxFQUFFLENBQUM7SUFDbEUsb0JBQW9CLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsTUFBTSxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsRUFBRSxDQUFDO0lBQ2xFLGlCQUFpQjtJQUNqQixhQUFhO0lBQ2IsU0FBUyxDQUFDO0lBQ1YsS0FBSztBQUNMO0FBQ0E7SUFDQSxJQUFJLFNBQVMsZUFBZSxHQUFHO0lBQy9CLFFBQVEsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEdBQUcsYUFBYSxDQUFDLENBQUM7SUFDN0QsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNoQyxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQ2hDO0lBQ0EsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsY0FBYyxFQUFFLENBQUM7QUFDckM7SUFDQSxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbkMsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQy9ELFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNwQyxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDaEUsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNsRTtJQUNBLFFBQVEsQ0FBQyxDQUFDLE9BQU87SUFDakIsWUFBWSxDQUFDLENBQUMsRUFBRTtJQUNoQixnQkFBZ0IsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsZUFBZSxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbEUsZ0JBQWdCLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLE9BQU8sRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzFELGdCQUFnQjtJQUNoQixvQkFBb0IsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLEVBQUUsRUFBRSxDQUFDO0lBQ3ZELG9CQUFvQixHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLE9BQU8sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO0lBQzNELG9CQUFvQixHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLE9BQU8sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO0lBQzNELGlCQUFpQjtJQUNqQixhQUFhO0lBQ2IsU0FBUyxDQUFDO0lBQ1YsS0FBSztBQUNMO0lBQ0EsSUFBSSxTQUFTLGtCQUFrQixHQUFHO0lBQ2xDLFFBQVEsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEdBQUcsZ0JBQWdCLENBQUMsQ0FBQztJQUNoRSxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ2pDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDL0IsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNsQyxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ2xDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDbEMsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNuQyxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ25DLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDL0I7SUFDQSxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxjQUFjLEVBQUUsQ0FBQztBQUNyQztJQUNBLFFBQVEsTUFBTSxHQUFHLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDbEQ7SUFDQSxRQUFRLENBQUMsQ0FBQyxPQUFPO0lBQ2pCLFlBQVksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDNUQsWUFBWSxDQUFDLENBQUMsU0FBUztJQUN2QixnQkFBZ0IsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7SUFDOUIsZ0JBQWdCLENBQUMsQ0FBQyxPQUFPO0lBQ3pCLG9CQUFvQixDQUFDLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQztJQUN0QyxvQkFBb0IsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDL0QsaUJBQWlCO0lBQ2pCLGFBQWE7QUFDYjtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUk7SUFDbEIsZ0JBQWdCLFdBQVcsR0FBRyxlQUFlO0lBQzdDLGdCQUFnQixDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDL0QsZ0JBQWdCLENBQUMsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNqQyxnQkFBZ0IsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUM7SUFDL0IsZ0JBQWdCLENBQUMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDO0lBQ2xDLGdCQUFnQixDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztJQUMvQixhQUFhO0FBQ2I7SUFDQSxZQUFZLENBQUMsQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDakQsWUFBWSxDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ25ELFlBQVksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNuRCxZQUFZLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDM0MsWUFBWSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJO0lBQzFCLGdCQUFnQixDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO0FBQ3pFO0lBQ0EsZ0JBQWdCLENBQUMsQ0FBQyxFQUFFO0lBQ3BCLG9CQUFvQixDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxTQUFTLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN4RSxvQkFBb0I7SUFDcEIsd0JBQXdCLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsT0FBTyxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDN0Usd0JBQXdCLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsT0FBTyxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDekcscUJBQXFCO0lBQ3JCLG9CQUFvQjtJQUNwQix3QkFBd0IsR0FBRyxDQUFDLENBQUMsSUFBSTtJQUNqQyw0QkFBNEIsV0FBVyxDQUFDLE1BQU07SUFDOUMsNEJBQTRCLENBQUMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDO0lBQy9DLDRCQUE0QixDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUMxRSw0QkFBNEIsR0FBRztJQUMvQix5QkFBeUI7SUFDekIsd0JBQXdCLEdBQUcsQ0FBQyxDQUFDLElBQUk7SUFDakMsNEJBQTRCLFdBQVcsQ0FBQyxTQUFTO0lBQ2pELDRCQUE0QixDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQztJQUMvQyw0QkFBNEIsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUM7SUFDL0MseUJBQXlCO0lBQ3pCLHdCQUF3QixHQUFHLENBQUMsQ0FBQyxJQUFJO0lBQ2pDLDRCQUE0QixXQUFXLENBQUMsTUFBTTtJQUM5Qyw0QkFBNEIsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUM7SUFDL0MsNEJBQTRCLENBQUMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDO0lBQzlDLDRCQUE0QixDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQztJQUMvQyx5QkFBeUI7SUFDekIsd0JBQXdCLEdBQUcsQ0FBQyxDQUFDLElBQUk7SUFDakMsNEJBQTRCLFdBQVcsQ0FBQyxNQUFNO0lBQzlDLDRCQUE0QixDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQztJQUMvQyw0QkFBNEIsR0FBRztJQUMvQiw0QkFBNEIsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDM0UseUJBQXlCO0lBQ3pCLHFCQUFxQjtJQUNyQixpQkFBaUI7QUFDakI7SUFDQSxnQkFBZ0IsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDcEYsZ0JBQWdCLENBQUMsQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3RGLGdCQUFnQixDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3BGLGdCQUFnQixDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzNFLGdCQUFnQixDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN2QixhQUFhLENBQUM7SUFDZCxZQUFZLENBQUMsQ0FBQyxTQUFTO0lBQ3ZCLGdCQUFnQixDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztJQUM5QixnQkFBZ0IsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUM7SUFDbEMsYUFBYTtJQUNiLFNBQVMsQ0FBQztJQUNWLEtBQUs7QUFDTDtBQUNBO0lBQ0E7SUFDQSxJQUFJLFNBQVMsaUJBQWlCLEdBQUc7SUFDakMsUUFBUSxNQUFNLENBQUMsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLE1BQU0sR0FBRyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQ2hFLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDakMsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUMvQixRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ2xDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDbkMsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQztBQUNsQztJQUNBLFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLGNBQWMsRUFBRSxDQUFDO0FBQ3JDO0lBQ0EsUUFBUSxDQUFDLENBQUMsT0FBTztJQUNqQixZQUFZLENBQUMsQ0FBQyxRQUFRO0lBQ3RCLGdCQUFnQixPQUFPO0lBQ3ZCLGdCQUFnQixDQUFDLENBQUMsT0FBTztJQUN6QixvQkFBb0IsQ0FBQyxDQUFDLE9BQU87SUFDN0Isd0JBQXdCLENBQUMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDO0lBQzFDLHdCQUF3QixDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQztJQUN2QyxxQkFBcUI7SUFDckIsb0JBQW9CLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO0lBQ2xDLGlCQUFpQjtJQUNqQixhQUFhO0lBQ2IsWUFBWSxDQUFDLENBQUMsUUFBUTtJQUN0QixnQkFBZ0IsTUFBTTtJQUN0QixnQkFBZ0IsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUM7SUFDakMsYUFBYTtJQUNiLFlBQVksQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSTtJQUMxQixnQkFBZ0IsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztJQUNqRixnQkFBZ0IsQ0FBQyxDQUFDLFVBQVU7SUFDNUIsb0JBQW9CLENBQUMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDO0lBQ3ZDLG9CQUFvQixDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDckQsaUJBQWlCO0lBQ2pCLGdCQUFnQixDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ25GLGdCQUFnQixDQUFDLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2pGLGdCQUFnQixDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN2QixhQUFhLENBQUM7SUFDZCxTQUFTLENBQUM7QUFDVjtJQUNBLEtBQUs7QUFDTDtJQUNBLElBQUksU0FBUyxXQUFXLEdBQUc7SUFDM0IsUUFBUSxNQUFNLENBQUMsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLE1BQU0sR0FBRyxTQUFTLENBQUMsQ0FBQztJQUN6RCxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ2pDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDbEM7SUFDQSxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxjQUFjLEVBQUUsQ0FBQztBQUNyQztJQUNBLFFBQVEsTUFBTSxHQUFHLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDbEQ7SUFDQSxRQUFRLENBQUMsQ0FBQyxPQUFPO0lBQ2pCLFlBQVksQ0FBQyxDQUFDLEVBQUU7SUFDaEIsZ0JBQWdCLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLGVBQWUsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ25FLGdCQUFnQjtJQUNoQixvQkFBb0IsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxPQUFPLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN4RSxvQkFBb0IsR0FBRyxDQUFDLENBQUMsVUFBVTtJQUNuQyx3QkFBd0IsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUM7SUFDMUMsd0JBQXdCLENBQUMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDO0lBQ3pDLHFCQUFxQjtJQUNyQixvQkFBb0IsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztJQUNoQyxpQkFBaUI7SUFDakIsYUFBYTtJQUNiLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsaUJBQWlCLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRSxHQUFHLENBQUM7SUFDM0UsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxnQkFBZ0IsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3ZGLFlBQVksQ0FBQyxDQUFDLEVBQUU7SUFDaEIsZ0JBQWdCLENBQUMsQ0FBQyxNQUFNO0lBQ3hCLG9CQUFvQixDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxPQUFPLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNoRyxvQkFBb0IsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNuQyxpQkFBaUI7SUFDakIsZ0JBQWdCLENBQUMsQ0FBQyxVQUFVO0lBQzVCLG9CQUFvQixDQUFDLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQztJQUN0QyxvQkFBb0IsQ0FBQyxDQUFDLE1BQU07SUFDNUIsd0JBQXdCLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN6RCx3QkFBd0IsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUM7SUFDekMscUJBQXFCO0lBQ3JCLGlCQUFpQjtJQUNqQixhQUFhO0lBQ2IsU0FBUyxDQUFDO0lBQ1YsS0FBSztBQUNMO0lBQ0EsSUFBSSxTQUFTLFdBQVcsR0FBRztJQUMzQixRQUFRLE1BQU0sQ0FBQyxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsTUFBTSxHQUFHLFNBQVMsQ0FBQyxDQUFDO0lBQ3pELFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDakMsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQztBQUNsQztJQUNBLFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLGNBQWMsRUFBRSxDQUFDO0FBQ3JDO0lBQ0EsUUFBUSxNQUFNLElBQUksR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN4QyxRQUFRLE1BQU0sR0FBRyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdEMsUUFBUSxNQUFNLElBQUksR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3ZDLFFBQVEsTUFBTSxJQUFJLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxJQUFJLEdBQUcsRUFBRSxDQUFDLENBQUM7QUFDNUM7SUFDQSxRQUFRLENBQUMsQ0FBQyxPQUFPO0lBQ2pCLFlBQVksQ0FBQyxDQUFDLEVBQUU7SUFDaEIsZ0JBQWdCLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLGVBQWUsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ25FLGdCQUFnQjtJQUNoQixvQkFBb0IsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxhQUFhLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN6RSxvQkFBb0IsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztJQUNoQyxpQkFBaUI7SUFDakIsYUFBYTtBQUNiO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyx1QkFBdUIsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFLEdBQUcsQ0FBQztBQUM1RTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsZ0JBQWdCLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN4RixZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLGdCQUFnQixFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDcEgsU0FBUyxDQUFDO0lBQ1YsS0FBSztBQUNMO0lBQ0EsSUFBSSxTQUFTLFdBQVcsR0FBRztJQUMzQixRQUFRLE1BQU0sQ0FBQyxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsTUFBTSxHQUFHLFNBQVMsQ0FBQyxDQUFDO0lBQ3pELFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDakMsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQztBQUNsQztJQUNBLFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLGNBQWMsRUFBRSxDQUFDO0FBQ3JDO0lBQ0EsUUFBUSxNQUFNLElBQUksR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN4QyxRQUFRLE1BQU0sR0FBRyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdEMsUUFBUSxNQUFNLElBQUksR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3ZDLFFBQVEsTUFBTSxJQUFJLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxJQUFJLEdBQUcsRUFBRSxDQUFDLENBQUM7QUFDNUM7SUFDQSxRQUFRLENBQUMsQ0FBQyxPQUFPO0lBQ2pCLFlBQVksQ0FBQyxDQUFDLEVBQUU7SUFDaEIsZ0JBQWdCLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM5RSxnQkFBZ0I7SUFDaEIsb0JBQW9CLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsYUFBYSxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDekUsb0JBQW9CLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7SUFDaEMsaUJBQWlCO0lBQ2pCLGFBQWE7SUFDYixZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLGdCQUFnQixFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUM7SUFDdkYsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxnQkFBZ0IsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDO0lBQ25ILFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcscUJBQXFCLEVBQUUsR0FBRyxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDNUUsU0FBUyxDQUFDO0lBQ1YsS0FBSztBQUNMO0lBQ0EsSUFBSSxTQUFTLFdBQVcsR0FBRztJQUMzQixRQUFRLE1BQU0sQ0FBQyxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsTUFBTSxHQUFHLFNBQVMsQ0FBQyxDQUFDO0lBQ3pELFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDakMsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNsQyxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsV0FBVyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3ZDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxVQUFVLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDdEM7SUFDQSxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxjQUFjLEVBQUUsQ0FBQztBQUNyQztJQUNBLFFBQVEsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDeEMsUUFBUSxNQUFNLElBQUksR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3ZDLFFBQVEsTUFBTSxJQUFJLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxJQUFJLEdBQUcsRUFBRSxDQUFDLENBQUM7QUFDNUM7SUFDQSxRQUFRLENBQUMsQ0FBQyxPQUFPO0lBQ2pCLFlBQVksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDckUsWUFBWSxDQUFDLENBQUMsRUFBRTtJQUNoQixnQkFBZ0IsQ0FBQyxDQUFDLE9BQU87SUFDekIsb0JBQW9CLENBQUMsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDO0lBQzNDLG9CQUFvQixDQUFDLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQztJQUNyQyxpQkFBaUI7SUFDakIsZ0JBQWdCO0lBQ2hCLG9CQUFvQixHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLGFBQWEsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3pFLG9CQUFvQixHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO0lBQ2hDLGlCQUFpQjtJQUNqQixhQUFhO0lBQ2IsWUFBWSxDQUFDLENBQUMsUUFBUTtJQUN0QixnQkFBZ0IsVUFBVTtJQUMxQixnQkFBZ0IsQ0FBQyxDQUFDLE9BQU87SUFDekIsb0JBQW9CLENBQUMsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDO0lBQzNDLG9CQUFvQixDQUFDLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQztJQUNyQyxpQkFBaUI7SUFDakIsYUFBYTtBQUNiO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxPQUFPLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRSxJQUFJLENBQUM7SUFDbEUsWUFBWSxDQUFDLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ3JGLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsZ0JBQWdCLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDO0lBQzFFLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsZUFBZSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQzNFO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxTQUFTLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsRUFBRSxJQUFJLENBQUM7SUFDckUsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsRUFBRSxJQUFJLEdBQUcsSUFBSSxDQUFDO0lBQ3pFLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsTUFBTSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQztBQUN0RTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsT0FBTyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUM7SUFDckQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQztBQUNwRDtJQUNBLFlBQVksQ0FBQyxDQUFDLEVBQUU7SUFDaEIsZ0JBQWdCLENBQUMs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QWMsRUFBRSxZQUFZLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxFQUFFO0lBQzVELFFBQVEsR0FBRyxPQUFPLENBQUMsY0FBYyxFQUFFLFlBQVksQ0FBQyxDQUFDLENBQUMsRUFBRSxNQUFNLEVBQUU7SUFDNUQsUUFBUSxHQUFHLE9BQU8sQ0FBQyxjQUFjLEVBQUUsWUFBWSxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRTtJQUM1RCxRQUFRLEdBQUcsT0FBTyxDQUFDLGNBQWMsRUFBRSxZQUFZLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxFQUFFO0lBQzVELFFBQVEsR0FBRyxPQUFPLENBQUMsY0FBYyxFQUFFLFlBQVksQ0FBQyxDQUFDLENBQUMsRUFBRSxNQUFNLEVBQUU7SUFDNUQsUUFBUSxHQUFHLE9BQU8sQ0FBQyxjQUFjLEVBQUUsWUFBWSxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRTtJQUM1RCxRQUFRLEdBQUcsT0FBTyxDQUFDLGNBQWMsRUFBRSxZQUFZLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxFQUFFO0lBQzVELFFBQVEsR0FBRyxPQUFPLENBQUMsY0FBYyxFQUFFLFlBQVksQ0FBQyxDQUFDLENBQUMsRUFBRSxNQUFNLEVBQUU7SUFDNUQsUUFBUSxHQUFHLE9BQU8sQ0FBQyxjQUFjLEVBQUUsWUFBWSxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRTtJQUM1RCxRQUFRLEdBQUcsT0FBTyxDQUFDLGNBQWMsRUFBRSxZQUFZLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxFQUFFO0lBQzVELFFBQVEsR0FBRyxPQUFPLENBQUMsY0FBYyxFQUFFLFlBQVksQ0FBQyxDQUFDLENBQUMsRUFBRSxNQUFNLEVBQUU7SUFDNUQsS0FBSyxDQUFDLENBQUM7QUFDUDtJQUNBLElBQUksTUFBTSxhQUFhLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQztJQUN2QyxRQUFRLEdBQUcsT0FBTyxDQUFDLGNBQWMsRUFBRSxZQUFZLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxFQUFFO0lBQzVE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Q0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7QUFDckU7SUFDQSxRQUFRLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDckMsUUFBUSxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3JFLFFBQVEsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7QUFDdkU7SUFDQSxRQUFRLE1BQU0sS0FBSyxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDM0MsUUFBUSxNQUFNLE1BQU0sR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQzNFLFFBQVEsTUFBTSxNQUFNLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7QUFDOUU7SUFDQSxRQUFRLE1BQU0sQ0FBQyxHQUFHLE1BQU0sQ0FBQztJQUN6QixRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3BELFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDcEQsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNwRCxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3BELFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDcEQsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNwRCxRQUFRLE1BQU0sR0FBRyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0FBQ3REO0lBQ0EsUUFBUSxDQUFDLENBQUMsT0FBTztJQUNqQjtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ2pELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ2hEO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNqRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUNoRDtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUMvQztJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUMvQztJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDL0M7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ2hEO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEdBQUcsQ0FBQztJQUNqRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNoRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUMvQyxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztBQUNqRDtBQUNBO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztBQUNoRDtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDakQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUM7SUFDakQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7SUFDbkQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7QUFDbkQ7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO0FBQ2pEO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsQ0FBQztJQUNsRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEtBQUssQ0FBQztJQUNwRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLEtBQUssQ0FBQztJQUN6RCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsRUFBRSxLQUFLLENBQUM7QUFDakY7QUFDQTtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsQ0FBQyxFQUFFLE1BQU0sQ0FBQztBQUNqRDtJQUNBO0lBQ0E7QUFDQTtJQUNBLFNBQVMsQ0FBQztJQUNWLEtBQUs7QUFDTDtBQUNBO0FBQ0E7SUFDQSxJQUFJLFNBQVMsbUJBQW1CLEdBQUc7SUFDbkMsUUFBUSxNQUFNLENBQUMsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRSxjQUFjLENBQUMsQ0FBQztJQUM3RCxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ2hDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDbkM7SUFDQSxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxjQUFjLEVBQUUsQ0FBQztBQUNyQztJQUNBLFFBQVEsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNyQyxRQUFRLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDckUsUUFBUSxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztBQUN2RTtJQUNBLFFBQVEsTUFBTSxLQUFLLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUMzQyxRQUFRLE1BQU0sTUFBTSxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDM0UsUUFBUSxNQUFNLE1BQU0sSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztBQUM5RTtJQUNBLFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDcEQsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNwRCxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3BELFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDcEQsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNwRCxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3BELFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDcEQsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNwRCxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3BELFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDcEQsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNyRCxRQUFRLE1BQU0sR0FBRyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0FBQ3REO0lBQ0EsUUFBUSxDQUFDLENBQUMsT0FBTztBQUNqQjtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ25FLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ2hEO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQ2hEO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQ2hEO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUMvQyxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUMvQztJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ3RFO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUMvQyxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUMvQztJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDL0MsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ2xFO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEdBQUcsQ0FBQztJQUNqRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNqRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQy9DLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO0FBQ2pEO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUMvQztJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztBQUNoRDtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztBQUNoRDtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUM7SUFDakQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxFQUFFLENBQUM7QUFDbEQ7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUks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VyxDQUFDLE1BQU0sRUFBRSxZQUFZLENBQUMsQ0FBQztJQUMzRCxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ2hDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDbkMsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNuQyxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQy9CO0lBQ0EsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsY0FBYyxFQUFFLENBQUM7QUFDckM7SUFDQSxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDcEM7SUFDQSxRQUFRLE1BQU0sRUFBRSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzFDLFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNsQyxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDbkMsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMxQyxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUM1QztJQUNBLFFBQVEsTUFBTSxHQUFHLEdBQUcsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNwRSxRQUFRLE1BQU0sR0FBRyxHQUFHLENBQUMsQ0FBQyxPQUFPLEVBQUUs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QyxRQUFRLE1BQU0sT0FBTyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDNUMsUUFBUSxNQUFNLE9BQU8sR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNuRCxRQUFRLE1BQU0sT0FBTyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNyRCxRQUFRLE1BQU0sT0FBTyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNyRCxRQUFRLE1BQU0sT0FBTyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNyRCxRQUFRLE1BQU0sUUFBUSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN0RDtJQUNBLFFBQVEsQ0FBQyxDQUFDLE9BQU87QUFDakI7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE9BQU8sRUFBRSxFQUFFLEVBQUUsT0FBTyxDQUFDO0lBQ3BELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsT0FBTyxFQUFFLE9BQU8sQ0FBQztJQUNoRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE9BQU8sRUFBRSxFQUFFLEVBQUUsT0FBTyxDQUFDO0lBQ3BELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsT0FBTyxFQUFFLE9BQU8sQ0FBQztJQUNoRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE9BQU8sRUFBRSxFQUFFLEVBQUUsT0FBTyxDQUFDO0lBQ3BELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsT0FBTyxFQUFFLFFBQVEsQ0FBQztJQUNqRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNyRCxTQUFTLENBQUM7SUFDVixLQUFLO0FBQ0w7SUFDQSxJQUFJLFNBQVMsYUFBYSxHQUFHO0lBQzdCLFFBQVEsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsWUFBWSxDQUFDLENBQUM7SUFDM0QsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNuQyxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3BDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDcEMsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztBQUNoQztJQUNBLFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLGNBQWMsRUFBRSxDQUFDO0FBQ3JDO0lBQ0EsUUFBUSxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3hDLFFBQVEsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUN6QyxRQUFRLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDekM7SUFDQSxRQUFRLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDckMsUUFBUSxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNuRSxRQUFRLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ25FLFFBQVEsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDbkUsUUFBUSxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNuRSxRQUFRLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ3BFO0lBQ0EsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNyRCxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3JELFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDckQsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNyRCxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3JELFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDckQsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNyRCxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3JELFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDckQsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNyRCxRQUFRLE1BQU0sR0FBRyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0FBQ3REO0lBQ0EsUUFBUSxDQUFDLENBQUMsT0FBTztBQUNqQjtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDbEQ7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNsRDtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2xEO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDbEQ7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNsRDtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2xELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0FBQ2xEO0FBQ0E7SUFDQTtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDbEQ7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNsRDtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUMxRSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNsRDtBQUNBO0lBQ0E7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2xEO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDbEQ7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNsRDtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUMxRTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2xEO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDbEQ7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNsRDtBQUNBO0FBQ0E7QUFDQTtJQUNBO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNsRDtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2xELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsR0FBRyxDQUFDO0lBQ25ELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDO0lBQ25EO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDbEQ7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztBQUNsRDtBQUNBO0lBQ0E7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2xEO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNsRDtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2xEO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDbEQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxHQUFHLENBQUM7SUFDbkQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLENBQUM7SUFDbkQ7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDMUU7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNsRDtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2xEO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDbEQ7QUFDQTtJQUNBO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNsRDtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2xEO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQzFFO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDbEQ7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNsRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsQ0FBQztJQUNuRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQztJQUNuRDtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2xEO0FBQ0E7SUFDQTtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDbEQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDbEQ7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNsRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNsRDtBQUNBO0lBQ0EsU0FBUyxDQUFDO0lBQ1YsS0FBSztBQUNMO0FBQ0E7SUFDQSxJQUFJLFNBQVMsZUFBZSxHQUFHO0lBQy9CLFFBQVEsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsYUFBYSxDQUFDLENBQUM7SUFDNUQsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNuQyxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ25DLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDL0IsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNuQyxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQy9CO0lBQ0EsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsY0FBYyxFQUFFLENBQUM7QUFDckM7SUFDQSxRQUFRLE1BQU0sT0FBTyxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDNUMsUUFBUSxNQUFNLE9BQU8sR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0FBQzVFO0lBQ0EsUUFBUSxNQUFNLEtBQUssSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzNDLFFBQVEsTUFBTSxNQUFNLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUMzRSxRQUFRLE1BQU0sTUFBTSxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0FBQzlFO0FBQ0E7SUFDQSxRQUFRLE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDekMsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3BDLFFBQVEsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN6QyxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDcEM7SUFDQSxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDbEM7QUFDQTtJQUNBLFFBQVEsQ0FBQyxDQUFDLE9BQU87SUFDakIsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsQ0FBQyxDQUFDO0FBQ3pDO0lBQ0EsWUFBWSxDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN2RjtJQUNBLFlBQVksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2xFLFlBQVksQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSTtBQUMxQjtBQUNBO0lBQ0EsZ0JBQWdCLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ25EO0lBQ0EsZ0JBQWdCLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE9BQU8sRUFBRSxNQUFNLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQztJQUMvRCxnQkFBZ0IsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsT0FBTyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsRUFBRSxDQUFDO0lBQ2hFLGdCQUFnQixDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxZQUFZLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQy9ELGdCQUFnQixDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO0FBQzdGO0lBQ0EsZ0JBQWdCLENBQUMsQ0FBQyxFQUFFO0lBQ3BCLG9CQUFvQixDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsZ0JBQWdCLENBQUM7SUFDcEUsb0JBQW9CO0lBQ3BCLHdCQUF3QixHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE9BQU8sRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLEVBQUUsQ0FBQztJQUMzRSx3QkFBd0IsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxPQUFPLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxFQUFFLENBQUM7QUFDM0U7SUFDQSx3QkFBd0IsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxZQUFZLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQzFFLHdCQUF3QixHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7QUFDeEc7SUFDQSxxQkFBcUI7SUFDckIsaUJBQWlCO0lBQ2pCLGdCQUFnQixDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztJQUN6RCxnQkFBZ0IsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMzRSxnQkFBZ0IsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDdkIsYUFBYSxDQUFDO0FBQ2Q7SUFDQSxTQUFTLENBQUM7QUFDVjtJQUNBLFFBQVEsQ0FBQyxDQUFDLE9BQU87SUFDakIsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxPQUFPLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxFQUFFLENBQUM7SUFDNUQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxPQUFPLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxFQUFFLENBQUM7SUFDNUQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxZQUFZLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQzNELFlBQVksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztBQUN6RjtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsT0FBTyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsRUFBRSxDQUFDO0lBQzVELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsT0FBTyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsRUFBRSxDQUFDO0lBQzVELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsWUFBWSxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUMzRCxZQUFZLENBQUMsQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7QUFDekY7SUFDQSxTQUFTLENBQUM7QUFDVjtJQUNBLEtBQUs7QUFDTDtBQUNBO0lBQ0EsSUFBSSxTQUFTLGlCQUFpQixDQUFDLENBQUMsRUFBRTtJQUNsQyxRQUFRLE1BQU0sR0FBRyxHQUFHO0lBQ3BCLFlBQVk7SUFDWixnQkFBZ0IsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ3hCLGdCQUFnQixDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDeEIsZ0JBQWdCLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUN4QixnQkFBZ0IsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ3hCLGdCQUFnQixDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDeEIsZ0JBQWdCLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUN4QixnQkFBZ0IsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ3hCLGdCQUFnQixDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDeEIsZ0JBQWdCLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUN4QixnQkFBZ0IsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ3hCLGdCQUFnQixDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDeEIsZ0JBQWdCLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUN4QixhQUFhO0lBQ2IsWUFBWTtJQUNaLGdCQUFnQixDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDeEIsZ0JBQWdCLENBQUMsNkVBQTZFLEVBQUUsOEVBQThFLENBQUM7SUFDL0ssZ0JBQWdCLENBQUMsOEVBQThFLEVBQUUsRUFBRSxDQUFDO0lBQ3BHLGdCQUFnQixDQUFDLDhFQUE4RSxFQUFFLDRFQUE0RSxDQUFDO0lBQzlLLGdCQUFnQixDQUFDLDhFQUE4RSxFQUFFLEVBQUUsQ0FBQztJQUNwRyxnQkFBZ0IsQ0FBQyw2RUFBNkUsRUFBRSw2RUFBNkUsQ0FBQztJQUM5SyxnQkFBZ0IsQ0FBQyw4RUFBOEUsRUFBRSxFQUFFLENBQUM7SUFDcEcsZ0JBQWdCLENBQUMsOEVBQThFLEVBQUUsNkVBQTZFLENBQUM7SUFDL0ssZ0JBQWdCLENBQUMsMkRBQTJELEVBQUUsRUFBRSxDQUFDO0lBQ2pGLGdCQUFnQixDQUFDLDhFQUE4RSxFQUFFLDhFQUE4RSxDQUFDO0lBQ2hMLGdCQUFnQixDQUFDLDJEQUEyRCxFQUFFLEVBQUUsQ0FBQztJQUNqRixnQkFBZ0IsQ0FBQyw4RUFBOEUsRUFBRSw4RUFBOEUsQ0FBQztJQUNoTCxhQUFhO0lBQ2IsU0FBUyxDQUFDO0FBQ1Y7SUFDQSxRQUFRLE1BQU0sRUFBRSxHQUFHO0lBQ25CLFlBQVk7SUFDWixnQkFBZ0IsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ3hCLGdCQUFnQixDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDeEIsZ0JBQWdCLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUN4QixnQkFBZ0IsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ3hCLGdCQUFnQixDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDeEIsZ0JBQWdCLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUN4QixhQUFhO0lBQ2IsWUFBWTtJQUNaLGdCQUFnQixDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDeEIsZ0JBQWdCLENBQUMsOEVBQThFLEVBQUUsOEVBQThFLENBQUM7SUFDaEwsZ0JBQWdCLENBQUMsOEVBQThFLEVBQUUsRUFBRSxDQUFDO0lBQ3BHLGdCQUFnQixDQUFDLDZFQUE2RSxFQUFFLDZFQUE2RSxDQUFDO0lBQzlLLGdCQUFnQixDQUFDLDJEQUEyRCxFQUFFLEVBQUUsQ0FBQztJQUNqRixnQkFBZ0IsQ0FBQyw4RUFBOEUsRUFBRSw2RUFBNkUsQ0FBQztJQUMvSyxhQUFhO0lBQ2IsWUFBWTtJQUNaLGdCQUFnQixDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDeEIsZ0JBQWdCLENBQUMsNkVBQTZFLEVBQUUsOEVBQThFLENBQUM7SUFDL0ssZ0JBQWdCLENBQUMsMkRBQTJELEVBQUUsRUFBRSxDQUFDO0lBQ2pGLGdCQUFnQixDQUFDLDZFQUE2RSxFQUFFLDhFQUE4RSxDQUFDO0lBQy9LLGdCQUFnQixDQUFDLDhFQUE4RSxFQUFFLEVBQUUsQ0FBQztJQUNwRyxnQkFBZ0IsQ0FBQyw4RUFBOEUsRUFBRSw2RUFBNkUsQ0FBQztJQUMvSyxhQUFhO0lBQ2IsU0FBUyxDQUFDO0FBQ1Y7SUFDQSxRQUFRLE1BQU0sQ0FBQyxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2pFLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDL0IsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztBQUMvQjtJQUNBLFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLGNBQWMsRUFBRSxDQUFDO0FBQ3JDO0lBQ0EsUUFBUSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO0lBQ2hDLFlBQVksTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDbkcsWUFBWSxNQUFNLEdBQUcsR0FBRyxDQUFDLENBQUM7SUFDMUIsWUFBWSxNQUFNLEdBQUcsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDbkYsWUFBWSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNuRyxZQUFZLE1BQU0sR0FBRyxHQUFHLENBQUMsQ0FBQztJQUMxQixZQUFZLE1BQU0sR0FBRyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNuRixZQUFZLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN6RSxZQUFZLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUM7SUFDdkMsZ0JBQWdCLEdBQUcsT0FBTyxDQUFDLGNBQWMsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDO0lBQ3BFLGdCQUFnQixHQUFHLE9BQU8sQ0FBQyxjQUFjLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQztJQUNwRSxhQUFhLENBQUMsQ0FBQztJQUNmLFlBQVksSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRTtJQUMxQixnQkFBZ0IsQ0FBQyxDQUFDLE9BQU87SUFDekIsb0JBQW9CLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE9BQU8sRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0lBQ3pELG9CQUFvQixDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztJQUN4RCxvQkFBb0IsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUN4RSxpQkFBaUIsQ0FBQztJQUNsQixhQUFhLE1BQU07SUFDbkIsZ0JBQWdCLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDaEYsYUFBYTtJQUNiLFNBQVM7QUFDVDtJQUNBLFFBQVEsU0FBUyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRTtJQUM1QixZQUFZLE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNyQyxZQUFZLE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNyQyxZQUFZLE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNyQyxZQUFZLE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNyQyxZQUFZLE1BQU0sR0FBRyxHQUFHO0lBQ3hCLGdCQUFnQixDQUFDLEdBQUcsR0FBRyxHQUFHLE1BQU0sR0FBRyxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUM7SUFDakQsZ0JBQWdCLENBQUMsR0FBRyxHQUFHLEdBQUcsTUFBTSxHQUFHLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQztJQUNqRCxhQUFhLENBQUM7SUFDZCxZQUFZLElBQUksWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzFELFlBQVksT0FBTyxHQUFHLENBQUM7SUFDdkIsU0FBUztBQUNUO0lBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtJQUNBLElBQUksU0FBUyxrQ0FBa0MsR0FBRztBQUNsRDtJQUNBLFFBQVEsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsaUNBQWlDLENBQUMsQ0FBQztJQUNoRixRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQy9CLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDL0I7SUFDQSxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxjQUFjLEVBQUUsQ0FBQztBQUNyQztJQUNBLFFBQVEsTUFBTSxHQUFHLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNwQyxRQUFRLE1BQU0sS0FBSyxHQUFHLEdBQUcsQ0FBQztJQUMxQixRQUFRLE1BQU0sS0FBSyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDeEQsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2xDLFFBQVEsTUFBTSxFQUFFLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN4QyxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDbEMsUUFBUSxNQUFNLEdBQUcsR0FBRyxDQUFDLENBQUM7SUFDdEIsUUFBUSxNQUFNLEdBQUcsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDM0MsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNwRCxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3BELFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7QUFDcEQ7SUFDQSxRQUFRLENBQUMsQ0FBQyxPQUFPO0lBQ2pCO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxPQUFPLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQztJQUNuRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDO0FBQ2xEO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLFVBQVUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO0FBQ2xEO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUMvQztJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsaUJBQWlCLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNwRDtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQy9DLFNBQVMsQ0FBQztJQUNWLEtBQUs7QUFDTDtJQUNBLElBQUksU0FBUyxxQkFBcUIsR0FBRztJQUNyQyxRQUFRLE1BQU0sQ0FBQyxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFLG9CQUFvQixDQUFDLENBQUM7SUFDbkUsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUMvQixRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQy9CO0lBQ0EsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsY0FBYyxFQUFFLENBQUM7QUFDckM7SUFDQSxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDbkMsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ25FLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDckUsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNyRSxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3JFLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7QUFDckU7SUFDQSxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDbkMsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ25FLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDckUsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNyRSxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3JFLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7QUFDckU7SUFDQSxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3JELFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDckQsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNyRCxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3JELFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDckQsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNyRCxRQUFRLE1BQU0sR0FBRyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3RELFFBQVEsTUFBTSxHQUFHLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7QUFDdEQ7QUFDQTtJQUNBLFFBQVEsQ0FBQyxDQUFDLE9BQU87SUFDakI7SUFDQTtJQUNBO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsQ0FBQztJQUNuRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsRUFBRSxFQUFFLENBQUM7SUFDMUUsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDbEQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxHQUFHLENBQUM7SUFDbkQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDbkQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0lBQzVFLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0lBQ3JELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDO0lBQ25ELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDO0FBQ3BEO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsQ0FBQztJQUNuRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsRUFBRSxFQUFFLENBQUM7SUFDMUUsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDbEQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxHQUFHLENBQUM7SUFDbkQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDbkQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0lBQzVFLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0lBQ3JELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDO0lBQ25ELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDO0FBQ3BEO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsQ0FBQztJQUNuRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsRUFBRSxFQUFFLENBQUM7SUFDMUUsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDbEQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxHQUFHLENBQUM7SUFDbkQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDbkQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0lBQzVFLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0lBQ3JELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDO0lBQ25ELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDO0FBQ3BEO0lBQ0E7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2xELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2xELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2xEO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDbEQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDbEQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7QUFDbEQ7SUFDQTtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLEVBQUUsR0FBRyxDQUFDO0lBQzVFLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ25ELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2xELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ25EO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDbEQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDbEQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUs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QVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN2QyxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3BELFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDcEQsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNwRCxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3BELFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDcEQsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNwRCxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3BELFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDcEQsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNwRCxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3BELFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDcEQsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNwRCxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3BELFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDcEQsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNwRCxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3BELFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDcEQsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNwRCxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3BELFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDcEQsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxL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QyxFQUFFLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxFQUFFLEVBQUU7QUFDeEM7SUFDQSxZQUFZLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsWUFBWSxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzlGLFlBQVksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxZQUFZLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDOUYsWUFBWSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLGFBQWEsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztBQUNyRztJQUNBLFlBQVksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ3JFLFNBQVM7QUFDVDtJQUNBLFFBQVEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxzQkFBc0IsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztBQUN4RTtJQUNBLFFBQVEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3BF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RUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ25FLFFBQVEsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDbkU7QUFDQTtJQUNBLFFBQVEsTUFBTSxRQUFRLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDM0QsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNyRCxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3JELFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDckQsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztBQUNyRDtJQUNBLFFBQVEsQ0FBQyxDQUFDLE9BQU87QUFDakI7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7QUFDakQ7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7QUFDakQ7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7QUFDakQ7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2xELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDakQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDbEQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7QUFDbEQ7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0FBQ2xEO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNsRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztBQUNsRDtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7QUFDbEQ7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7QUFDakQ7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxFQUFFLEVBQUUsRUFBRSxRQUFRLENBQUM7QUFDdkQ7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2xELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0FBQ2xEO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNsRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2pELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2xELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsRUFBRSxDQUFDO0FBQ3hEO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNsRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztBQUNsRDtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7QUFDbEQ7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0FBQ2xEO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztBQUNsRDtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7QUFDbEQ7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsRUFBRSxDQUFDO0FBQ3hEO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztBQUNsRDtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztBQUM5QztJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNqRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNsRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztBQUNsRDtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7QUFDbEQ7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0FBQ2xEO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztBQUNsRDtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLFFBQVEsRUFBRSxFQUFFLENBQUM7QUFDeEQ7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0FBQ2xEO0lBQ0EsU0FBUyxDQUFDO0lBQ1YsS0FBSztBQUNMO0lBQ0EsSUFBSSxTQUFTLGdCQUFnQixHQUFHO0lBQ2hDLFFBQVEsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsY0FBYyxDQUFDLENBQUM7SUFDN0QsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUMvQixRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQy9CLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDL0I7SUFDQSxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxjQUFjLEVBQUUsQ0FBQztBQUNyQztJQUNBLFFBQVEsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNwQyxRQUFRLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ25FLFFBQVEsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDbkU7SUFDQSxRQUFRLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDcEMsUUFBUSxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUNuRTtJQUNBLFFBQVEsTUFBTSxHQUFHLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNyQyxRQUFRLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ25FLFFBQVEsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDbkU7SUFDQSxRQUFRLE1BQU0sUUFBUSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQzNELFFBQVEsTUFBTSxRQUFRLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDM0QsUUFBUSxNQUFNLFNBQVMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUM1RCxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3JELFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDckQsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNyRCxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3JELFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDckQsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNyRCxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3JELFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7QUFDckQ7SUFDQSxRQUFRLENBQUMsQ0FBQyxPQUFPO0FBQ2pCO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsRUFBRSxFQUFFLEVBQUUsUUFBUSxDQUFDO0FBQ3ZEO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsRUFBRSxFQUFFLEVBQUUsUUFBUSxDQUFDO0FBQ3ZEO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztBQUN4RDtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDbEQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNqRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsUUFBUSxFQUFFLEVBQUUsQ0FBQztJQUN4RCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsUUFBUSxFQUFFLEVBQUUsQ0FBQztJQUN4RCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsUUFBUSxFQUFFLEVBQUUsQ0FBQztBQUN4RDtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7QUFDbEQ7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7QUFDakQ7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0FBQ2xEO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztBQUNsRDtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7QUFDbEQ7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2xELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0FBQ2xEO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztBQUNsRDtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7QUFDbEQ7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDakQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDbEQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDbEQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7QUFDbEQ7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2xELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDakQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLFFBQVEsRUFBRSxFQUFFLENBQUM7SUFDeEQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7QUFDbEQ7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsR0FBRyxDQUFDO0FBQ25EO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNsRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztBQUNsRDtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7QUFDbEQ7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0FBQ2xEO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztBQUNsRDtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztJQUNuRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLEdBQUcsQ0FBQztBQUMxRDtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLEVBQUUsRUFBRSxFQUFFLFNBQVMsQ0FBQztBQUN4RDtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxHQUFHLENBQUM7QUFDM0Q7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2xELFlB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LEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDekQsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNoQyxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ2pDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDaEM7SUFDQSxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxjQUFjLEVBQUUsQ0FBQztBQUNyQztJQUNBLFFBQVEsTUFBTSxJQUFJLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN0QyxRQUFRLE1BQU0sSUFBSSxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3hFLFFBQVEsTUFBTSxJQUFJLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDeEU7SUFDQSxRQUFRLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDdEM7SUFDQSxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDcEMsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN0RSxRQUFRLE1BQU0sR0FBRyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3ZFO0lBQ0EsUUFBUSxNQUFNLE9BQU8sR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDNUQsUUFBUSxNQUFNLE9BQU8sR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDNUQ7SUFDQSxRQUFRLENBQUMsQ0FBQyxPQUFPO0FBQ2pCO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxPQUFPLENBQUM7SUFDM0QsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxPQUFPLENBQUM7QUFDM0Q7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsR0FBRyxDQUFDO0FBQ3JEO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUN2RCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQztBQUNuRDtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxRQUFRLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztBQUNoRDtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDdkQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLENBQUM7SUFDbkQsU0FBUyxDQUFDO0lBQ1YsS0FBSztJQUNMLElBQUksV0FBVyxFQUFFLENBQUM7QUFDbEI7SUFDQSxJQUFJLFNBQVMsWUFBWSxHQUFHO0lBQzVCLFFBQVEsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxTQUFTLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDMUQsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNoQyxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ2pDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDakMsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztBQUNoQztJQUNBLFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLGNBQWMsRUFBRSxDQUFDO0FBQ3JDO0lBQ0EsUUFBUSxNQUFNLElBQUksR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3RDLFFBQVEsTUFBTSxJQUFJLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDeEUsUUFBUSxNQUFNLElBQUksR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN4RTtJQUNBLFFBQVEsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN0QyxRQUFRLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDdEM7SUFDQSxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDcEMsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN0RSxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3RFO0lBQ0EsUUFBUSxNQUFNLEdBQUcsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDeEQsUUFBUSxNQUFNLEdBQUcsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDeEQsUUFBUSxNQUFNLE9BQU8sR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDNUQsUUFBUSxNQUFNLE9BQU8sR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDNUQ7SUFDQSxRQUFRLENBQUMsQ0FBQyxPQUFPO0lBQ2pCO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxHQUFHLENBQUM7QUFDckQ7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsR0FBRyxDQUFDO0FBQ3JEO0FBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLE9BQU8sQ0FBQztJQUMzRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLE9BQU8sQ0FBQztBQUMzRDtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxFQUFFLENBQUM7SUFDdEQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDbEQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLENBQUM7QUFDbkQ7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsUUFBUSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDaEQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLENBQUM7QUFDbkQ7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2xELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxPQUFPLEVBQUUsRUFBRSxDQUFDO0lBQ3ZELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDO0lBQ25ELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDO0FBQ25EO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUN2RCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQztJQUNuRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQztBQUNuRDtBQUNBO0lBQ0EsU0FBUyxDQUFDO0lBQ1YsS0FBSztJQUNMLElBQUksWUFBWSxFQUFFLENBQUM7QUFDbkI7QUFDQTtJQUNBLElBQUksU0FBUyxjQUFjLEdBQUc7QUFDOUI7SUFDQSxRQUFRLE1BQU0sQ0FBQyxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsU0FBUyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQzNELFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDaEMsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNqQyxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ2pDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDakMsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztBQUNoQztJQUNBLFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLGNBQWMsRUFBRSxDQUFDO0FBQ3JDO0FBQ0E7SUFDQSxRQUFRLE1BQU0sSUFBSSxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdEMsUUFBUSxNQUFNLElBQUksR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN4RTtJQUNBLFFBQVEsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN0QyxRQUFRLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDdEMsUUFBUSxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3RDO0lBQ0EsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdkQsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdkQsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDdEQ7SUFDQSxRQUFRLE1BQU0sSUFBSSxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdEMsUUFBUSxNQUFNLElBQUksR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN4RTtJQUNBLFFBQVEsQ0FBQyxDQUFDLE9BQU87SUFDakI7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLFFBQVEsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7QUFDMUQ7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsT0FBTyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0FBQ3JEO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztBQUNqRDtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUM7QUFDeEQ7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsUUFBUSxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQztBQUMzRDtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxJQUFJLENBQUM7SUFDdEQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxJQUFJLENBQUM7QUFDdEQ7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsT0FBTyxFQUFFLEVBQUUsRUFBRSxJQUFJLENBQUM7QUFDakQ7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsUUFBUSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUM7QUFDcEQ7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUs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SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0FBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFLEtBQUssQ0FBQztJQUMxRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFLEtBQUssQ0FBQztJQUMxRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFLEtBQUssQ0FBQztJQUMxRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFLEtBQUssQ0FBQztBQUMxRDtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDOUQ7SUFDQSxTQUFTLENBQUM7QUFDVjtJQUNBLEtBQUs7SUFDTCxJQUFJLFFBQVEsRUFBRSxDQUFDO0FBQ2Y7SUFDQSxJQUFJLFNBQVMsZUFBZSxHQUFHO0lBQy9CLFFBQVEsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsYUFBYSxDQUFDLENBQUM7SUFDNUQsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNuQyxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ25DLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDL0IsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNuQyxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFF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QUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNuRyxZQUFZLE1BQU0sR0FBRyxHQUFHLENBQUMsQ0FBQztJQUMxQixZQUFZLE1BQU0sR0FBRyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNuRixZQUFZLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ25HLFlBQVksTUFBTSxHQUFHLEdBQUcsQ0FBQyxDQUFDO0lBQzFCLFlBQVksTUFBTSxHQUFHLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ25GLFlBQVksTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3pF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QyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ25FLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDckUsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNyRSxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3JFLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7QUFDckU7SUFDQSxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDbkMsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ25FLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDckUsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNyRSxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3JFLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7QUFDckU7SUFDQSxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3JELFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDckQsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNyRCxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3JELFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDckQsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNyRCxRQUFRLE1BQU0sR0FBRyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3RELFFBQVEsTUFBTSxHQUFHLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7QUFDdEQ7QUFDQTtJQUNBLFFBQVEsQ0FBQyxDQUFDLE9BQU87SUFDakI7SUFDQTtJQUNBO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsQ0FBQztJQUNuRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLFFBQVEsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2hELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2xELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsR0FBRyxDQUFDO0lBQ25ELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ25ELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsUUFBUSxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7SUFDbEQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7SUFDckQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLENBQUM7SUFDbkQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxFQUFFLENBQUM7QUFDcEQ7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsR0FBRyxDQUFDO0lBQ25ELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsUUFBUSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDaEQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDbEQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxHQUFHLENBQUM7SUFDbkQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDbkQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxRQUFRLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztJQUNsRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztJQUNyRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQztJQUNuRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQztBQUNwRDtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxHQUFHLENBQUM7SUFDbkQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxRQUFRLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNoRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNsRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsQ0FBQztJQUNuRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNuRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLFFBQVEsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0lBQ2xELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0lBQ3JELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDO0lBQ25ELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDO0FBQ3BEO0lBQ0E7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2xELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2xELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2xEO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDbEQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDbEQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7QUFDbEQ7SUFDQTtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLEVBQUUsR0FBRyxDQUFDO0lBQzVFLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ25ELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2xELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ25EO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDbEQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDbEQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7QUFDbEQ7SUFDQTtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFD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RDtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxvQkFBb0IsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0FBQ3pEO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztBQUNsRDtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxvQkFBb0IsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0FBQ3pEO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLFlBQVksRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0FBQ3BEO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNsRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztBQUNsRDtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxZQUFZLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztBQUNwRDtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7QUFDbEQ7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsZ0JBQWdCLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztBQUN4RDtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7QUFDbEQ7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdB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QUM7SUFDekQsUUFBUSxNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMzQyxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDcEMsUUFBUSxNQUFNLEdBQUcsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3JDLFFBQVEsTUFBTSxNQUFNLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN4QyxRQUFRLE1BQU0sTUFBTSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQy9DLFFBQVEsTUFBTSxHQUFHLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDNUMsUUFBUSxNQUFNLE1BQU0sR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMvQyxRQUFRLE1BQU0sTUFBTSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN0RCxRQUFRLE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzNDLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNwQyxRQUFRLE1BQU0sR0FBRyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDckMsUUFBUSxNQUFNLE1BQU0sR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3hDLFFBQVEsTUFBTSxNQUFNLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDL0MsUUFBUSxNQUFNLEdBQUcsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUM1QyxRQUFRLE1BQU0sTUFBTSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQy9DLFFBQVEsTUFBTSxNQUFNLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3RELFFBQVEsTUFBTSxHQUFHLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzlDO0FBQ0E7SUFDQSxRQUFRLENBQUMsQ0FBQyxPQUFPO0lBQ2pCLFlBQVksQ0FBQyxDQUFDLEVBQUU7SUFDaEIsZ0JBQWdCLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLGVBQWUsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3BFLGdCQUFnQixDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdEMsYUFBYTtJQUNiLFlBQVksQ0FBQyxDQUFDLEVBQUU7SUFDaEIsZ0JBQWdCLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ2hGLGdCQUFnQixDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdEMsYUFBYTtJQUNiLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsTUFBTSxDQUFDO0lBQ3hELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsTUFBTSxDQUFDO0FBQ3hEO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUM7SUFDNUQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQztBQUNuRDtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUM7SUFDbkQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUM7QUFDM0Q7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQztJQUMzRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sQ0FBQztJQUM5RCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxDQUFDO0FBQ3BEO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUM7SUFDM0QsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLENBQUM7SUFDOUQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sQ0FBQztBQUNwRDtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDO0lBQzNELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFT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UUFBUSxNQUFNLElBQUksR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2hHLFFBQVEsTUFBTSxLQUFLLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNsRztJQUNBLFFBQVEsTUFBTSxNQUFNLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNyRjtBQUNBO0lBQ0EsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ25DLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztBQUNuRTtJQUNBLFFBQVEsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDM0MsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3BDLFFBQVEsTUFBTSxHQUFHLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNyQyxRQUFRLE1BQU0sR0FBRyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQzVDO0lBQ0EsUUFBUSxNQUFNLElBQUksR0FBRyxNQUFNLENBQUMsS0FBSyxD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S0FBSyxFQUFFLEtBQUssU0FBUyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDdkMsUUFBUSxNQUFNLEdBQUcsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDO0FBQzFCO0lBQ0EsUUFBUSxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsR0FBR0EsV0FBUyxDQUFDLENBQUM7SUFDckQsUUFBUSxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUlBLFdBQVMsQ0FBQyxDQUFDO0FBQzVEO0lBQ0EsUUFBUSxJQUFJLENBQUMsU0FBUyxJQUFJLFFBQVEsSUFBSSxHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBQzdDLFlBQVksT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUNBLFdBQVMsRUFBRSxFQUFFLENBQUNBLFdBQVMsR0FBRyxHQUFHLENBQUMsQ0FBQztBQUNuRjtJQUNBLFFBQVEsSUFBSSxJQUFJLENBQUM7QUFDakI7SUFDQSxRQUFRLElBQUksQ0FBQyxHQUFHLFNBQVMsQ0FBQztJQUMxQixRQUFRLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBR0EsV0FBUyxDQUFDO0lBQy9CO0lBQ0EsUUFBUSxJQUFJLENBQUMsR0FBRyxHQUFHLENBQUM7SUFDcEIsUUFBUSxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUU7SUFDcEI7SUFDQSxZQUFZLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBR0EsV0FBUyxLQUFLQSxXQUFTLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM3RCxZQUFZLE1BQU0sT0FBTyxHQUFHLElBQUksVUFBVSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJ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USxJQUFJLENBQUMsU0FBUyxHQUFHLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN4QyxRQUFRLElBQUksQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBQzdEO0lBQ0EsUUFBUSxJQUFJLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDakMsUUFBUSxJQUFJLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDakMsUUFBUSxJQUFJLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDakMsUUFBUSxJQUFJLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsTUFBTSxHQUFHLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM5RCxRQUFRLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDeEQsUUFBUSxJQUFJLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM3RCxRQUFRLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDdkQ7SUFDQSxRQUFRLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDekMsUUFBUSxJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDaEQ7SUFDQSxRQUFRLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDcEMsUUFBUSxJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3BDO0lBQ0EsUUFBUSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxFQUFFLEVBQUU7SUFDbEMsWUFBWSxNQUFNLElBQUksS0FBSyxDQUFDLDRCQUE0QixDQUFDLENBQUM7SUFDMUQsU0FBUztBQUNUO0lBQ0EsUUFBUSxJQUFJLENBQUMsSUFBSSxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQzVDLFFBQVEsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDO0lBQzVCLFFBQVEsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM5QyxRQUFRLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUU7SUFDekMsWUFBWSxJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDcEQsWUFBWSxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM5QyxTQUFTO0FBQ1Q7SUFDQSxRQUFRLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLElBQUks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LFFBQVEsSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN0QyxRQUFRLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3RGLEtBQUs7QUFDTDtJQUNBLElBQUksR0FBRyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUU7SUFDbkIsUUFBUSxJQUFJLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3RDLFFBQVEsSUFBSSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDN0UsUUFBUSxPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ25ELEtBQUs7QUFDTDtJQUNBLElBQUksT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUU7SUFDdkIsUUFBUSxJQUFJLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3RDLFFBQVEsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdEYsS0FBSztBQUNMO0lBQ0EsSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMs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QUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3JDLFFBQVEsSUFBSSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLE1BQU0sR0FBRyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDOUQsUUFBUSxJQUFJLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDbkQsUUFBUSxJQUFJLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM3RCxRQUFRLElBQUksQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUNsRDtJQUNBLFFBQVEsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN6QyxRQUFRLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNoRDtJQUNBLEtBQUs7QUFDTDtJQUNBLElBQUksR0FBRyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFO0lBQ3RCLFFBQVEsSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN0QyxRQUFRLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDdEMsUUFBUSxJQUFJLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENB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QUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDdEMsUUFBUSxJQUFJLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdEcsUUFBUSxPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ25ELEtBQUs7QUFDTDtJQUNBLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUU7SUFDWixRQUFRLElBQUksQ0FBQyxZQUFZLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUM5QyxRQUFRLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLElBQUksQ0FBQyxDQUFDLEVBQUU7SUFDbkQsWUFBWSxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDekMsWUFBWSxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDekMsWUFBWSxNQUFNLEdBQUcsR0FBRyxJQUFJLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNwRCxZQUFZLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDeEIsWUFBWSxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVB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LENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDckMsUUFBUSxJQUFJLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNyQyxRQUFRLElBQUksQ0FBQyxJQUFJLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3JDLFFBQVEsSUFBSSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLE1BQU0sR0FBRyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDOUQsUUFBUSxJQUFJLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDbkQsUUFBUSxJQUFJLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM3RCxRQUFRLElBQUksQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUNsRDtJQUNBLFFBQVEsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN6QyxRQUFRLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNoRDtJQUNBLEtBQUs7QUFDTDtJQUNBLElBQUksR0FBRyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFO0lBQ3RCLFFBQVEsSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN0QyxRQUFRLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDdEMsUUFBUSxJQUFJLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3hGLFFBQVEsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNuRCxLQUFLO0FBQ0w7SUFDQSxJQUFJLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRTtJQUMxQixRQUFRLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDdEMsUUFBUSxJQUFJLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3RDLFFBQVEsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdEYsS0FBSztBQUNMO0lBQ0EsSUFBSSxHQUFHLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRTtJQUNuQixRQUFRLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDdEMsUUFBUSxJQUFJLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM3RSxRQUFRLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDbkQsS0FBSztBQUNMO0lBQ0EsSUFBSSxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRTtJQUN2QixRQUFRLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDdEMsUUFBUSxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN0RixLQUFLO0FBQ0w7QUFDQTtJQUNBLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUU7SUFDWixRQUFRLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3pDLEtBQUs7QUFDTDtJQUNBLElBQUksTUFBTSxDQUFDLENBQUMsRUFBRTtJQUNkLFFBQVEsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUMxQyxLQUFLO0FBQ0w7SUFDQSxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFO0lBQ2IsUUFBUSxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN0QyxLQUFLO0FBQ0w7SUFDQSxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFO0lBQ2IsUUFBUSxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN0QyxLQUFLO0FBQ0w7SUFDQSxJQUFJLEdBQUcsQ0FBQyxDQUFDLEVBQUU7SUFDWCxRQUFRLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDbkMsS0FBSztBQUNMO0lBQ0EsSUFBSSxHQUFHLENBQUMsQ0FBQyxFQUFFO0lBQ1gsUUFBUSxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3ZDLEtBQUs7QUFDTDtJQUNBLElBQUksVUFBVSxDQUFDLENBQUMsRUFBRTtJQUNsQixRQUFRLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDOUMsS0FBSztBQUNMO0lBQ0EsSUFBSSxZQUFZLENBQUMsQ0FBQyxFQUFFO0lBQ3BCLFFBQVEsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLGVBQWUsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUM1QyxLQUFLO0FBQ0w7SUFDQSxJQUFJLGNBQWMsQ0FBQyxDQUFDLEVBQUU7SUFDdEIsUUFBUSxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDOUMsS0FBSztBQUNMO0lBQ0EsSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRTtJQUNiLFFBQVEsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDdEMsS0FBSztBQUNMO0lBQ0EsSUFBSSxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRTtJQUNkLFFBQVEsSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN0QyxRQUFRLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDdEMsUUFBUSxJQUFJLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxVQUFVLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNqRixRQUFRLElBQUksQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDeEYsUUFBUSxPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ25ELEtBQUs7QUFDTDtJQUNBLElBQUksTUFBTSxDQUFDLENBQUMsRUFBRTtJQUNkLFFBQVEsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN0QyxLQUFLO0FBQ0w7SUFDQSxJQUFJLFFBQVEsQ0FBQyxDQUFDLEVBQUU7SUFDaEIsUUFBUSxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzVDLEtBQUs7QUFDTDtJQUNBLElBQUksSUFBSSxDQUFDLENBQUMsRUFBRTtJQUNaLFFBQVEsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNwQyxLQUFLO0FBQ0w7SUFDQSxJQUFJLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFO0lBQ2QsUUFBUSxJQUFJLEVBQUUsQ0FBQyxZQUFZLFVBQVUsQ0FBQyxFQUFFO0lBQ3hDLFlBQVksQ0FBQyxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMvQixTQUFTO0lBQ1QsUUFBUSxJQUFJLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3RDLFFBQVEsSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN0QyxRQUFRLElBQUksQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN0RyxRQUFRLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNoRCxLQUFLO0FBQ0w7SUFDQSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFO0lBQ1osUUFBUSxJQUFJLENBQUMsWUFBWSxVQUFVLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDOUMsUUFBUSxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBQyxFQUFFO0lBQ25ELFlBQVksTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3pDLFlBQVksTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3pDLFlBQVksTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3pDLFlBQVksTUFBTSxHQUFHLEdBQUcsSUFBSSxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDcEQsWUFBWSxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3hCLFlBQVksR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNuQyxZQUFZLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3JDLFlBQVksT0FBTyxHQUFHLENBQUM7SUFDdkIsU0FBUyxNQUFNO0lBQ2YsWUFBWSxNQUFNLElBQUksS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQzFDLFNBQVM7SUFDVCxLQUFLO0FBQ0w7SUFDQSxJQUFJLFFBQVEsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFO0lBQ3ZCLFFBQVEsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNqRSxRQUFRLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDM0UsUUFBUSxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ2hFLFFBQVEsT0FBTyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3ZDLEtBQUs7QUFDTDtJQUNBLElBQUksT0FBTyxDQUFDLEdBQUcsRUFBRTtJQUNqQixRQUFRLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3ZDLFFBQVEsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDdkMsUUFBUSxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN2QyxRQUFRLE1BQU0sR0FBRyxHQUFHLElBQUksVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2hELFFBQVEsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNwQixRQUFRLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDL0IsUUFBUSxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNqQyxRQUFRLE9BQU8sR0FBRyxDQUFDO0lBQ25CLEtBQUs7QUFDTDtJQUNBLElBQUksTUFBTSxHQUFHO0lBQ2IsUUFBUSxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQztJQUM1QyxLQUFLO0FBQ0w7SUFDQSxJQUFJLFFBQVEsQ0FBQyxDQUFDLEVBQUU7SUFDaEIsUUFBUSxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDMUQsUUFBUSxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDcEUsUUFBUSxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3RFLFFBQVEsT0FBTyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDNUIsS0FBSztBQUNMO0lBQ0EsSUFBSSxVQUFVLENBQUMsQ0FBQyxFQUFFO0lBQ2xCLFFBQVEsTUFBTSxJQUFJLEdBQUcsSUFBSSxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDakQsUUFBUSxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMzQyxRQUFRLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzNDLFFBQVEsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDM0MsUUFBUSxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3JCLFFBQVEsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNoQyxRQUFRLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2xDLFFBQVEsT0FBTyxJQUFJLENBQUM7SUFDcEIsS0FBSztBQUNMO0lBQ0EsSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUFFO0lBQ1YsUUFBUSxPQUFPLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDckMsS0FBSztBQUNMO0lBQ0EsSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUFFO0lBQ1YsUUFBUSxPQUFPLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDL0MsS0FBSztBQUNMO0lBQ0EsSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUFFO0lBQ1YsUUFBUSxPQUFPLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDcEMsS0FBSztBQUNMO0lBQ0EsQ0FBQztBQUNEO0lBQ0EsTUFBTSxTQUFTLENBQUM7QUFDaEI7SUFDQSxJQUFJLFdBQVcsQ0FBQyxFQUFFLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRTtJQUNwRCxRQUFRLElBQUksQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDO0lBQ3JCLFFBQVEsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7SUFDN0IsUUFBUSxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNuQjtJQUNBLFFBQVEsSUFBSSxDQUFDLElBQUksR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDckMsUUFBUSxJQUFJLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNyQyxRQUFRLElBQUksQ0FBQyxJQUFJLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3JDLFFBQVEsSUFBSSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLE1BQU0sR0FBRyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDOUQsUUFBUSxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN2RCxRQUFRLElBQUksQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEdBQUcsYUFBYSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3BFLFFBQVEsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDN0QsUUFBUSxJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2pELFFBQVEsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDO0lBQzFCLFFBQVEsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN2RCxRQUFRLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUN0QyxRQUFRLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUM1QztJQUNBLFFBQVEsSUFBSSxRQUFRLEVBQUU7SUFDdEIsWUFBWSxJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUMvQyxTQUFTO0FBQ1Q7SUFDQSxRQUFRLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDekMsUUFBUSxJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDaEQ7SUFDQSxRQUFRLElBQUksQ0FBQyxXQUFXLEdBQUcsaUJBQWlCLENBQUMsRUFBRSxFQUFFLE1BQU0sR0FBRyxjQUFjLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3hGLFFBQVEsSUFBSSxDQUFDLFdBQVcsR0FBRyxpQkFBaUIsQ0FBQyxFQUFFLEVBQUUsTUFBTSxHQUFHLGNBQWMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzFGLFFBQVEsSUFBSSxDQUFDLFdBQVcsR0FBRyxpQkFBaUIsQ0FBQyxFQUFFLEVBQUUsTUFBTSxHQUFHLGNBQWMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDeEYsUUFBUSxJQUFJLENBQUMsV0FBVyxHQUFHLGlCQUFpQixDQUFDLEVBQUUsRUFBRSxNQUFNLEdBQUcsY0FBYyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDMUYsUUFBUSxJQUFJLENBQUMsZUFBZSxHQUFHLGlCQUFpQixDQUFDLEVBQUUsRUFBRSxNQUFNLEdBQUcsa0JBQWtCLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNsRyxRQUFRLElBQUksQ0FBQyxhQUFhLEdBQUcsaUJBQWlCLENBQUMsRUFBRSxFQUFFLE1BQU0sR0FBRyxnQkFBZ0IsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzlGLEtBQUs7QUFDTDtJQUNBLElBQUksR0FBRyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFO0lBQ3RCLFFBQVEsSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN0QyxRQUFRLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDdEMsUUFBUSxJQUFJLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3hGLFFBQVEsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3ZELEtBQUs7QUFDTDtJQUNBLElBQUksT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFO0lBQzFCLFFBQVEsSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN0QyxRQUFRLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDdEMsUUFBUSxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2pHLEtBQUs7QUFDTDtJQUNBLElBQUksR0FBRyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUU7SUFDbkIsUUFBUSxJQUFJLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3RDLFFBQVEsSUFBSSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDN0UsUUFBUSxPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdkQsS0FBSztBQUNMO0lBQ0EsSUFBSSxTQUFTLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRTtJQUN6QixRQUFRLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDdEMsUUFBUSxJQUFJLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM3RSxRQUFRLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElB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QUUsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3JELEtBQUs7QUFDTDtJQUNBLElBQUksUUFBUSxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUU7SUFDdkIsUUFBUSxJQUFJLENBQUMsQ0FBQyxVQUFVLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFO0lBQ3pDLFlBQVksTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNwRSxZQUFZLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDOUUsWUFBWSxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ25FLFlBQVksT0FBTyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzFDLFNBQVMsTUFBTSxJQUFJLENBQUMsQ0FBQyxVQUFVLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFO0lBQ2hELFlBQVksTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFD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QUFDLElBQUksRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUNuQztJQUNBLFlBQVksTUFBTSxJQUFJLEdBQUcsRUFBRSxDQUFDO0FBQzVCO0lBQ0EsWUFBWSxNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDL0QsWUFBWSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQy9ELFlBQVksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7QUFDbkU7SUFDQSxZQUFZLE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbEUsWUFBWSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQy9ELFlBQVksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7QUFDbkU7SUFDQSxZQUFZLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUNoRTtJQUNBLFlBQVksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLEtBQUssQ0FBQyxJQUFJLEdBQUcsWUFBWSxFQUFFLE1BQU0sRUFBRTtJQUMvRSxnQkFBZ0IsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBQ3hCLGdCQUFnQixDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDeEIsYUFBYSxDQUFDLENBQUMsQ0FBQztBQUNoQjtJQUNBLFlBQVksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLEtBQUssQ0FBQyxJQUFJLEdBQUcsWUFBWSxFQUFFLE1BQU0sRUFBRTtJQUMvRSxnQkFBZ0IsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBQ3hCLGdCQUFnQixDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDeEIsYUFBYSxDQUFDLENBQUMsQ0FBQztBQUNoQjtJQUNBLFlBQVksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLEtBQUssQ0FBQyxJQUFJLEdBQUcsYUFBYSxFQUFFLE1BQU0sRUFBRTtJQUNoRixnQkFBZ0IsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBQ3hCLGdCQUFnQixDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDeEIsZ0JBQWdCLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztJQUN4QixhQUFhLENBQUMsQ0FBQyxDQUFDO0FBQ2hCO0lBQ0EsWUFBWSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUN0RTtJQUNBLFlBQVksVUFBVSxDQUFDLElBQUk7SUFDM0IsZ0JBQWdCLEVBQUUsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDO0lBQ3BDLGFBQWEsQ0FBQztJQUNkLFNBQVM7QUFDVDtBQUNBO0lBQ0EsUUFBUSxNQUFNLE1BQU0sR0FBRyxNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUM7QUFDckQ7SUFDQSxRQUFRLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUN6QixRQUFRLE1BQU0sSUFBSSxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUMzQyxRQUFRLEVBQUUsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUMxQztJQUNBLFFBQVEsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7SUFDNUMsWUFBWSxNQUFNLEdBQUcsR0FBRyxFQUFFLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ25ELFlBQVksRUFBRSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDekQsU0FBUztJQUNULFFBQVEsRUFBRSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksR0FBRyxzQkFBc0IsQ0FBQyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztBQUM3RTtJQUNBLFFBQVEsTUFBTSxHQUFHLEdBQUcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUN6QztJQUNBLFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFDMUQ7SUFDQSxRQUFRLEVBQUUsQ0FBQyxTQUFTLEVBQUUsQ0FBQztBQUN2QjtJQUNBLFFBQVEsT0FBTyxDQUFDLENBQUM7SUFDakIsS0FBSyxDQUFDO0FBQ047SUFDQSxJQUFJLEtBQUssQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDLEVBQUU7SUFDbEMsUUFBUSxJQUFJLENBQUMsRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQzlCLFFBQVEsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDeEMsUUFBUSxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDcEQsUUFBUSxJQUFJLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksR0FBRyxZQUFZLENBQUMsQ0FBQyxFQUFFLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDdkUsUUFBUSxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzNELFFBQVEsSUFBSSxDQUFDLEVBQUUsQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUM1QixRQUFRLE9BQU8sR0FBRyxDQUFDO0lBQ25CLEtBQUssQ0FBQztBQUNOO0lBQ0EsSUFBSSxLQUFLLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQyxFQUFFO0lBQ2xDLFFBQVEsSUFBSSxDQUFDLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUM5QixRQUFRLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3hDLFFBQVEsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3BELFFBQVEsSUFBSSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLEdBQUcsWUFBWSxDQUFDLENBQUMsRUFBRSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ3ZFLFFBQVEsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUMzRCxRQUFRLElBQUksQ0FBQyxFQUFFLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDNUIsUUFBUSxPQUFPLEdBQUcsQ0FBQztJQUNuQixLQUFLLENBQUM7QUFDTjtJQUNBLElBQUksS0FBSyxDQUFDLFVBQVUsR0FBRyxTQUFTLElBQUksRUFBRSxJQUFJLEVBQUU7SUFDNUMsUUFBUSxJQUFJLENBQUMsRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQzlCLFFBQVEsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDOUMsUUFBUSxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM5QyxRQUFRLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDL0MsUUFBUSxJQUFJLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksR0FBRyxhQUFhLENBQUMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ2hGLFFBQVEsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDdEQsUUFBUSxJQUFJLENBQUMsRUFBRSxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQzVCLFFBQVEsT0FBTyxHQUFHLENBQUM7SUFDbkIsS0FBSyxDQUFDO0FBQ047SUFDQSxJQUFJLEtBQUssQ0FBQyxtQkFBbUIsR0FBRyxTQUFTLENBQUMsRUFBRTtJQUM1QyxRQUFRLElBQUksQ0FBQyxFQUFFLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDOUIsUUFBUSxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN4QyxRQUFRLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDL0MsUUFBUSxJQUFJLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksR0FBRyxzQkFBc0IsQ0FBQyxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUMvRSxRQUFRLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3RELFFBQVEsSUFBSSxDQUFDLEVBQUUsQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUM1QixRQUFRLE9BQU8sR0FBRyxDQUFDO0lBQ25CLEtBQUssQ0FBQztBQUNOO0lBQ0EsQ0FBQztBQUNEO0lBQ0EsTUFBTSxPQUFPLEdBQUc7SUFDaEIsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQztJQUNwQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFO0lBQ3BDLElBQUksRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUU7SUFDcEMsSUFBSSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRTtJQUNwQyxDQUFDLENBQUM7QUFDRjtJQUNBLFNBQVMsYUFBYSxDQUFDLEtBQUssRUFBRSxTQUFTLEVBQUU7SUFDekMsSUFBSSxNQUFNLENBQUMsR0FBRyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDL0IsSUFBSSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQ3BCLElBQUksZUFBZSxjQUFjLENBQUMsU0FBUyxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRTtJQUNuRixRQUFRLEtBQUssR0FBRyxTQUFTLFlBQVksVUFBVSxDQUFDLEdBQUc7SUFDbkQsWUFBWSxJQUFJLE1BQU0sRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxPQUFPLENBQUMsMkNBQTJDLENBQUMsQ0FBQyxDQUFDO0lBQzlGLFlBQVksTUFBTSxJQUFJLEtBQUssQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLDJDQUEyQyxDQUFDLENBQUMsQ0FBQztJQUNyRixTQUFTO0lBQ1QsUUFBUSxLQUFLLEdBQUcsV0FBVyxZQUFZLFVBQVUsQ0FBQyxHQUFHO0lBQ3JELFlBQVksSUFBSSxNQUFNLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLDZDQUE2QyxDQUFDLENBQUMsQ0FBQztJQUNoRyxZQUFZLE1BQU0sSUFBSSxLQUFLLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyw2Q0FBNkMsQ0FBQyxDQUFDLENBQUM7SUFDdkYsU0FBUztJQUNULFFBQVEsTUFBTSxHQUFHLE1BQU0sSUFBSSxRQUFRLENBQUM7QUFDcEM7SUFDQSxRQUFRLElBQUksSUFBSSxDQUFDO0lBQ2pCLFFBQVEsSUFBSSxNQUFNLENBQUM7SUFDbkIsUUFBUSxJQUFJLFNBQVMsSUFBSSxJQUFJLEVBQUU7SUFDL0IsWUFBWSxJQUFJLE1BQU0sSUFBSSxRQUFRLEVBQUU7SUFDcEMsZ0JBQWdCLE1BQU0sR0FBRywwQkFBMEIsQ0FBQztJQUNwRCxnQkFBZ0IsSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNoQyxhQUFhLE1BQU07SUFDbkIsZ0JBQWdCLE1BQU0sR0FBRyxvQkFBb0IsQ0FBQztJQUM5QyxnQkFBZ0IsSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNoQyxhQUFhO0lBQ2IsU0FBUyxNQUFNLElBQUksU0FBUyxJQUFJLElBQUksRUFBRTtJQUN0QyxZQUFZLElBQUksTUFBTSxJQUFJLFFBQVEsRUFBRTtJQUNwQyxnQkFBZ0IsTUFBTSxHQUFHLDBCQUEwQixDQUFDO0lBQ3BELGdCQUFnQixJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2hDLGFBQWEsTUFBTTtJQUNuQixnQkFBZ0IsTUFBTSxHQUFHLG9CQUFvQixDQUFDO0lBQzlDLGdCQUFnQixJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2hDLGFBQWE7SUFDYixTQUFTLE1BQU07SUFDZixZQUFZLE1BQU0sSUFBSSxLQUFLLENBQUMsZUFBZSxDQUFDLENBQUM7SUFDN0MsU0FBUztJQUNULFFBQVEsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxDQUFDO0FBQ2hFO0lBQ0EsUUFBUSxJQUFJLE9BQU8sSUFBSSxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQ3hDLFFBQVEsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsVUFBVSxHQUFHLE9BQU8sQ0FBQyxDQUFDO0lBQ3JFLFFBQVEsSUFBSSxPQUFPLEdBQUcsT0FBTyxJQUFJLFdBQVcsQ0FBQyxVQUFVLEVBQUU7SUFDekQsWUFBWSxNQUFNLElBQUksS0FBSyxDQUFDLDRCQUE0QixDQUFDLENBQUM7SUFDMUQsU0FBUztBQUNUO0lBQ0EsUUFBUSxNQUFNLFlBQVksR0FBRyxPQUFPLENBQUNJLE1BQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBQ3BELFFBQVEsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLFlBQVksQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUN0RTtJQUNBLFFBQVEsTUFBTSxVQUFVLEdBQUcsRUFBRSxDQUFDO0lBQzlCLFFBQVEsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLEVBQUUsRUFBRTtJQUN0QyxZQUFZLE1BQU0sSUFBSSxHQUFHO0lBQ3pCLGdCQUFnQixDQUFDLEdBQUcsRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsU0FBUyxDQUFDO0lBQzFELGdCQUFnQixDQUFDLEdBQUcsRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsV0FBVyxDQUFDO0lBQzVELGdCQUFnQixDQUFDLEdBQUcsRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3JELGdCQUFnQixDQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUU7SUFDdEQsb0JBQW9CLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztJQUM1QixvQkFBb0IsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBQzVCLG9CQUFvQixDQUFDLEdBQUcsRUFBRSxPQUFPLENBQUM7SUFDbEMsb0JBQW9CLENBQUMsR0FBRyxFQUFFLE9BQU8sQ0FBQztJQUNsQyxvQkFBb0IsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLFlBQVksQ0FBQztJQUN6QyxvQkFBb0IsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxZQUFZLEVBQUUsWUFBWSxDQUFDLENBQUM7SUFDN0Usb0JBQW9CLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztJQUM1QixpQkFBaUIsQ0FBQztJQUNsQixnQkFBZ0IsQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzNELGFBQWEsQ0FBQztJQUNkLFlBQVksVUFBVSxDQUFDLElBQUk7SUFDM0IsZ0JBQWdCLENBQUMsQ0FBQyxFQUFFLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQztJQUN0QyxhQUFhLENBQUM7SUFDZCxTQUFTO0FBQ1Q7SUFDQSxRQUFRLE1BQU0sTUFBTSxHQUFHLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQztBQUNyRDtJQUNBLFFBQVEsSUFBSSxHQUFHLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUN6QixRQUFRLEtBQUssSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtJQUMvQyxZQUFZLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFO0lBQ2hDLGdCQUFnQixLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsWUFBWSxFQUFFLENBQUMsRUFBRSxFQUFFLEdBQUcsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3ZFLGFBQWE7SUFDYixZQUFZLEdBQUcsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMzQyxTQUFTO0FBQ1Q7SUFDQSxRQUFRLE9BQU8sR0FBRyxDQUFDO0lBQ25CLEtBQUs7QUFDTDtJQUNBLElBQUksZUFBZSxTQUFTLENBQUMsU0FBUyxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRTtJQUM5RSxRQUFRLE1BQU0sY0FBYyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDdkMsUUFBUSxNQUFNLGNBQWMsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3ZDLFFBQVEsSUFBSSxJQUFJLENBQUM7QUFDakI7SUFDQSxRQUFRLElBQUksU0FBUyxJQUFJLElBQUksRUFBRTtJQUMvQixZQUFZLElBQUksTUFBTSxJQUFJLFFBQVEsRUFBRTtJQUNwQyxnQkFBZ0IsSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNoQyxhQUFhLE1BQU07SUFDbkIsZ0JBQWdCLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDaEMsYUFBYTtJQUNiLFNBQVMsTUFBTSxJQUFJLFNBQVMsSUFBSSxJQUFJLEVBQUU7SUFDdEMsWUFBWSxJQUFJLE1BQU0sSUFBSSxRQUFRLEVBQUU7SUFDcEMsZ0JBQWdCLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDaEMsYUFBYSxNQUFNO0lBQ25CLGdCQUFnQixJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2hDLGFBQWE7SUFDYixTQUFTLE1BQU07SUFDZixZQUFZLE1BQU0sSUFBSSxLQUFLLENBQUMsZUFBZSxDQUFDLENBQUM7SUFDN0MsU0FBUztBQUNUO0lBQ0EsUUFBUSxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLENBQUM7SUFDaEUsUUFBUSxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxVQUFVLEdBQUcsT0FBTyxDQUFDLENBQUM7SUFDckUsUUFBUSxJQUFJLE9BQU8sR0FBRyxPQUFPLElBQUksV0FBVyxDQUFDLFVBQVUsRUFBRTtJQUN6RCxZQUFZLE1BQU0sSUFBSSxLQUFLLENBQUMsNEJBQTRCLENBQUMsQ0FBQztJQUMxRCxTQUFTO0FBQ1Q7SUFDQSxRQUFRLE1BQU0sWUFBWSxHQUFHLE9BQU8sQ0FBQ0EsTUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFDcEQsUUFBUSxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksWUFBWSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ3RFO0lBQ0EsUUFBUSxJQUFJLFNBQVMsQ0FBQztJQUN0QixRQUFRLFNBQVMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sSUFBSSxFQUFFLENBQUMsV0FBVyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFDcEUsUUFBUSxJQUFJLFNBQVMsQ0FBQyxjQUFjLEVBQUUsU0FBUyxHQUFHLGNBQWMsQ0FBQztJQUNqRSxRQUFRLElBQUksU0FBUyxDQUFDLGNBQWMsRUFBRSxTQUFTLEdBQUcsY0FBYyxDQUFDO0FBQ2pFO0lBQ0EsUUFBUSxNQUFNLFVBQVUsR0FBRyxFQUFFLENBQUM7SUFDOUIsUUFBUSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsSUFBSSxTQUFTLEVBQUU7SUFDakQsWUFBWSxJQUFJLE1BQU0sRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsZ0JBQWdCLEVBQUUsT0FBTyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNwRixZQUFZLE1BQU0sQ0FBQyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxHQUFHLENBQUMsRUFBRSxTQUFTLENBQUMsQ0FBQztJQUN0RCxZQUFZLE1BQU0sY0FBYyxHQUFHLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDdkUsWUFBWSxNQUFNLGdCQUFnQixHQUFHLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDakYsWUFBWSxVQUFVLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxjQUFjLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEtBQUs7SUFDbkgsZ0JBQWdCLElBQUksTUFBTSxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxjQUFjLEVBQUUsT0FBTyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN0RixnQkFBZ0IsT0FBTyxDQUFDLENBQUM7SUFDekIsYUFBYSxDQUFDLENBQUMsQ0FBQztJQUNoQixTQUFTO0FBQ1Q7SUFDQSxRQUFRLE1BQU0sTUFBTSxHQUFHLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQztBQUNyRDtJQUNBLFFBQVEsSUFBSSxHQUFHLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUN6QixRQUFRLEtBQUssSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtJQUMvQyxZQUFZLEdBQUcsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN4QyxTQUFTO0FBQ1Q7SUFDQSxRQUFRLE9BQU8sR0FBRyxDQUFDO0lBQ25CLEtBQUs7QUFDTDtJQUNBLElBQUksQ0FBQyxDQUFDLFFBQVEsR0FBRyxlQUFlLGNBQWMsQ0FBQyxTQUFTLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUU7SUFDeEYsUUFBUSxPQUFPLE1BQU0sU0FBUyxDQUFDLFNBQVMsRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQztJQUNwRixLQUFLLENBQUM7SUFDTixJQUFJLENBQUMsQ0FBQyxjQUFjLEdBQUcsZUFBZSxjQUFjLENBQUMsU0FBUyxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFO0lBQzlGLFFBQVEsT0FBTyxNQUFNLFNBQVMsQ0FBQyxTQUFTLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDbEYsS0FBSyxDQUFDO0lBQ04sQ0FBQztBQUNEO0lBQ0EsU0FBUyxRQUFRLENBQUMsS0FBSyxFQUFFLFNBQVMsRUFBRTtJQUNwQyxJQUFJLE1BQU0sQ0FBQyxHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUMvQixJQUFJLE1BQU0sRUFBRSxHQUFHLEtBQUssQ0FBQyxFQUFFLENBQUM7SUFDeEIsSUFBSSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQ3BCLElBQUksZUFBZSxJQUFJLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUU7QUFDM0U7SUFDQSxRQUFRLE1BQU0sR0FBRyxNQUFNLElBQUksUUFBUSxDQUFDO0lBQ3BDLFFBQVEsT0FBTyxHQUFHLE9BQU8sSUFBSSxRQUFRLENBQUM7SUFDdEMsUUFBUSxNQUFNLGVBQWUsR0FBRyxFQUFFLENBQUM7QUFDbkM7SUFDQSxRQUFRLElBQUksR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLFVBQVUsQ0FBQztJQUNsRixRQUFRLElBQUksU0FBUyxJQUFJLElBQUksRUFBRTtJQUMvQixZQUFZLElBQUksTUFBTSxJQUFJLFFBQVEsRUFBRTtJQUNwQyxnQkFBZ0IsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUMvQixnQkFBZ0IsUUFBUSxHQUFHLHFCQUFxQixDQUFDO0lBQ2pELGFBQWEsTUFBTTtJQUNuQixnQkFBZ0IsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUMvQixhQUFhO0lBQ2IsWUFBWSxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzVCLFlBQVksSUFBSSxPQUFPLEVBQUU7SUFDekIsZ0JBQWdCLFVBQVUsR0FBRyxjQUFjLENBQUM7SUFDNUMsYUFBYTtJQUNiLFlBQVksU0FBUyxHQUFHLGFBQWEsQ0FBQztJQUN0QyxZQUFZLFFBQVEsR0FBRyxZQUFZLENBQUM7QUFDcEM7SUFDQSxZQUFZLElBQUksT0FBTyxJQUFJLFFBQVEsRUFBRTtJQUNyQyxnQkFBZ0IsSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNoQyxnQkFBZ0IsU0FBUyxHQUFHLG1CQUFtQixDQUFDO0lBQ2hELGFBQWEsTUFBTTtJQUNuQixnQkFBZ0IsSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNoQyxhQUFhO0FBQ2I7SUFDQSxTQUFTLE1BQU0sSUFBSSxTQUFTLElBQUksSUFBSSxFQUFFO0lBQ3RDLFlBQVksSUFBSSxNQUFNLElBQUksUUFBUSxFQUFFO0lBQ3BDLGdCQUFnQixHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQy9CLGdCQUFnQixRQUFRLEdBQUcscUJBQXFCLENBQUM7SUFDakQsYUFBYSxNQUFNO0lBQ25CLGdCQUFnQixHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQy9CLGFBQWE7SUFDYixZQUFZLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDNUIsWUFBWSxJQUFJLE9BQU8sRUFBRTtJQUN6QixnQkFBZ0IsVUFBVSxHQUFHLGNBQWMsQ0FBQztJQUM1QyxhQUFhO0lBQ2IsWUFBWSxTQUFTLEdBQUcsYUFBYSxDQUFDO0lBQ3RDLFlBQVksUUFBUSxHQUFHLFlBQVksQ0FBQztJQUNwQyxZQUFZLElBQUksT0FBTyxJQUFJLFFBQVEsRUFBRTtJQUNyQyxnQkFBZ0IsSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNoQyxnQkFBZ0IsU0FBUyxHQUFHLG1CQUFtQixDQUFDO0lBQ2hELGFBQWEsTUFBTTtJQUNuQixnQkFBZ0IsSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNoQyxhQUFhO0lBQ2IsU0FBUyxNQUFNLElBQUksU0FBUyxJQUFJLElBQUksRUFBRTtJQUN0QyxZQUFZLEdBQUcsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQ3ZCLFlBQVksSUFBSSxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDeEIsWUFBWSxJQUFJLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUN4QixZQUFZLElBQUksT0FBTyxFQUFFO0lBQ3pCLGdCQUFnQixVQUFVLEdBQUcsY0FBYyxDQUFDO0lBQzVDLGFBQWE7SUFDYixZQUFZLFFBQVEsR0FBRyxZQUFZLENBQUM7SUFDcEMsWUFBWSxTQUFTLEdBQUcsYUFBYSxDQUFDO0lBQ3RDLFNBQVM7QUFDVDtBQUNBO0lBQ0EsUUFBUSxJQUFJLFdBQVcsR0FBRyxLQUFLLENBQUM7SUFDaEMsUUFBUSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUU7SUFDakMsWUFBWSxJQUFJLEdBQUcsWUFBWSxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQztJQUMzQyxZQUFZLFdBQVcsR0FBRyxJQUFJLENBQUM7SUFDL0IsU0FBUyxNQUFNO0lBQ2YsWUFBWSxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ2xELFNBQVM7QUFDVDtJQUNBLFFBQVEsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFVBQVUsR0FBRyxHQUFHLENBQUM7SUFDOUMsUUFBUSxNQUFNLElBQUksR0FBR0EsTUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQ25DO0lBQ0EsUUFBUSxLQUFLLENBQUMsQ0FBQyxJQUFJLElBQUksS0FBSyxPQUFPLEVBQUU7SUFDckMsWUFBWSxNQUFNLElBQUksS0FBSyxDQUFDLDJCQUEyQixFQUFFLENBQUM7SUFDMUQsU0FBUztBQUNUO0lBQ0EsUUFBUSxJQUFJLElBQUksSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRTtJQUM3QixZQUFZLElBQUksT0FBTyxDQUFDO0FBQ3hCO0lBQ0EsWUFBWSxJQUFJLE9BQU8sRUFBRTtJQUN6QixnQkFBZ0IsT0FBTyxJQUFJLE1BQU0sVUFBVSxDQUFDLElBQUksRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxTQUFTLENBQUMsQ0FBQztJQUN0RixhQUFhLE1BQU07SUFDbkIsZ0JBQWdCLE9BQU8sSUFBSSxNQUFNLE9BQU8sQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFDbkYsYUFBYTtBQUNiO0lBQ0EsWUFBWSxJQUFJLFdBQVcsRUFBRTtJQUM3QixnQkFBZ0IsT0FBTyxZQUFZLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ25ELGFBQWEsTUFBTTtJQUNuQixnQkFBZ0IsT0FBTyxPQUFPLENBQUM7SUFDL0IsYUFBYTtJQUNiLFNBQVM7QUFDVDtJQUNBLFFBQVEsSUFBSSxHQUFHLENBQUM7SUFDaEIsUUFBUSxJQUFJLE9BQU8sRUFBRTtJQUNyQixZQUFZLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUN4QyxTQUFTO0FBQ1Q7SUFDQSxRQUFRLElBQUksT0FBTyxDQUFDO0FBQ3BCO0lBQ0EsUUFBUSxlQUFlLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBQ25DO0lBQ0EsUUFBUSxJQUFJLE1BQU0sQ0FBQztJQUNuQixRQUFRLElBQUksYUFBYSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLGVBQWUsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUNwRSxRQUFRLElBQUksT0FBTyxHQUFHLE9BQU8sR0FBRyxhQUFhLENBQUM7QUFDOUM7SUFDQSxRQUFRLE9BQU8sQ0FBQyxPQUFPLEdBQUcsRUFBRSxDQUFDLFdBQVcsSUFBSSxhQUFhLEVBQUUsRUFBRSxDQUFDLEVBQUU7SUFDaEUsWUFBWSxPQUFPLElBQUksQ0FBQyxDQUFDO0lBQ3pCLFlBQVksYUFBYSxJQUFJLENBQUMsQ0FBQztJQUMvQixTQUFTO0FBQ1Q7SUFDQSxRQUFRLE1BQU0sT0FBTyxHQUFHQSxNQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7QUFDNUM7SUFDQSxRQUFRLE1BQU0sUUFBUSxHQUFHLEVBQUUsQ0FBQztJQUM1QixRQUFRLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLEVBQUU7SUFDekMsWUFBWSxJQUFJLE1BQU0sRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDN0YsWUFBWSxNQUFNLElBQUksR0FBRyxFQUFFLENBQUM7SUFDNUIsWUFBWSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQztJQUN2RSxZQUFZLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxhQUFhLEdBQUcsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLGFBQWEsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDaEcsWUFBWSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDO0lBQzdELFlBQVksSUFBSSxRQUFRLEVBQUU7SUFDMUIsZ0JBQWdCLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsTUFBTSxFQUFFLE1BQU0sQ0FBQyxRQUFRLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsYUFBYSxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDN0csYUFBYTtJQUNiLFlBQVksS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDLEVBQUUsRUFBRTtJQUMxQyxnQkFBZ0IsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUUsTUFBTSxDQUFDLFFBQVEsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxhQUFhLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM3RyxhQUFhO0FBQ2I7SUFDQSxZQUFZLElBQUksT0FBTyxFQUFFLElBQUksRUFBRTtJQUMvQixnQkFBZ0IsSUFBSSxVQUFVLEVBQUU7SUFDaEMsb0JBQW9CLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDcEUsb0JBQW9CLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxVQUFVLEdBQUcsTUFBTSxDQUFDO0lBQ3hFLHdCQUF3QixDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDaEMsd0JBQXdCLENBQUMsR0FBRyxFQUFFLGFBQWEsQ0FBQztJQUM1Qyx3QkFBd0IsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBQ2hDLHFCQUFxQixDQUFDLENBQUMsQ0FBQztJQUN4QixpQkFBaUI7SUFDakIsZ0JBQWdCLElBQUksU0FBUyxFQUFFO0lBQy9CLG9CQUFvQixJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLE1BQU0sRUFBRSxNQUFNLENBQUMsU0FBUyxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLGFBQWEsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2xILGlCQUFpQjtJQUNqQixnQkFBZ0IsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNqRixhQUFhLE1BQU07SUFDbkIsZ0JBQWdCLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUM7SUFDaEYsYUFBYTtJQUNiLFlBQVksUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsS0FBSztJQUM1RCxnQkFBZ0IsSUFBSSxNQUFNLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQy9GLGdCQUFnQixPQUFPLENBQUMsQ0FBQztJQUN6QixhQUFhLENBQUMsQ0FBQyxDQUFDO0lBQ2hCLFNBQVM7QUFDVDtJQUNBLFFBQVEsTUFBTSxHQUFHLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUM3QyxRQUFRLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNsRTtJQUNBLFFBQVEsS0FBSyxJQUFJLENBQUMsR0FBRyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLEVBQUU7SUFDaEQsWUFBWSxJQUFJLE1BQU0sRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdkYsWUFBWSxNQUFNLE9BQU8sR0FBRyxDQUFDLEtBQUssSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQzVDLFlBQVksTUFBTSxlQUFlLEdBQUcsT0FBTyxHQUFHLE9BQU8sQ0FBQztJQUN0RCxZQUFZLE1BQU0sVUFBVSxHQUFHLEVBQUUsQ0FBQztJQUNsQyxZQUFZLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxFQUFFLEVBQUU7SUFDMUMsZ0JBQWdCLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxlQUFlLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO0lBQ3pELG9CQUFvQixNQUFNLEtBQUssR0FBRyxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ3BFLG9CQUFvQixNQUFNLEdBQUcsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3hDLG9CQUFvQixNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsZUFBZSxHQUFHLENBQUMsQ0FBQztJQUNyRCxvQkFBb0IsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLGVBQWUsR0FBRyxDQUFDLEdBQUcsZUFBZSxDQUFDLENBQUMsQ0FBQztBQUN6RTtJQUNBLG9CQUFvQixNQUFNLElBQUksR0FBRyxFQUFFLENBQUM7SUFDcEMsb0JBQW9CLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDM0Usb0JBQW9CLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDM0Usb0JBQW9CLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDdEUsb0JBQW9CLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDcEUsb0JBQW9CLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxTQUFTLEdBQUcsTUFBTSxDQUFDO0lBQ3ZFLHdCQUF3QixDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDaEMsd0JBQXdCLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztJQUNoQyx3QkFBd0IsQ0FBQyxHQUFHLEVBQUUsYUFBYSxDQUFDO0lBQzVDLHdCQUF3QixDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDaEMsd0JBQXdCLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztJQUNoQyxxQkFBcUIsQ0FBQyxDQUFDLENBQUM7SUFDeEIsb0JBQW9CLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRTtJQUNqQyx3QkFBd0IsSUFBSSxVQUFVLEVBQUU7SUFDeEMsNEJBQTRCLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDNUUsNEJBQTRCLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxVQUFVLEdBQUcsTUFBTSxDQUFDO0lBQ2hGLGdDQUFnQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDeEMsZ0NBQWdDLENBQUMsR0FBRyxFQUFFLGFBQWEsQ0FBQztJQUNwRCxnQ0FBZ0MsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBQ3hDLDZCQUE2QixDQUFDLENBQUMsQ0FBQztJQUNoQyw0QkFBNEIsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLFVBQVUsR0FBRyxNQUFNLENBQUM7SUFDaEYsZ0NBQWdDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztJQUN4QyxnQ0FBZ0MsQ0FBQyxHQUFHLEVBQUUsYUFBYSxDQUFDO0lBQ3BELGdDQUFnQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDeEMsNkJBQTZCLENBQUMsQ0FBQyxDQUFDO0lBQ2hDLHlCQUF5QjtJQUN6Qix3QkFBd0IsSUFBSSxTQUFTLEVBQUU7SUFDdkMsNEJBQTRCLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsTUFBTSxFQUFFLE1BQU0sQ0FBQyxTQUFTLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsYUFBYSxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDMUgsNEJBQTRCLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsTUFBTSxFQUFFLE1BQU0sQ0FBQyxTQUFTLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsYUFBYSxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDMUgseUJBQXlCO0lBQ3pCLHdCQUF3QixJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ3pGLHdCQUF3QixJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ3pGLHFCQUFxQixNQUFNO0lBQzNCLHdCQUF3QixJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ3pGLHdCQUF3QixJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsQ0FB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QUUsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN0RCxZQUFZLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzNELFlBQVksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN0RCxZQUFZLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUM7SUFDbkUsWUFBWSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQzVELFlBQVksSUFBSSxRQUFRLEVBQUU7SUFDMUIsZ0JBQWdCLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsTUFBTSxFQUFFLE1BQU0sQ0FBQyxRQUFRLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDakcsZ0JBQWdCLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsTUFBTSxFQUFFLE1BQU0sQ0FBQyxRQUFRLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDakcsYUFBYTtJQUNiLFlBQVks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QUFFO0lBQ3RDLFlBQVksTUFBTSxJQUFJLEdBQUcsRUFBRSxDQUFDO0FBQzVCO0lBQ0EsWUFBWSxNQUFNLFVBQVUsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQztJQUM1RSxZQUFZLE1BQU0sRUFBRSxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsY0FBYyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxjQUFjLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDdkYsWUFBWSxNQUFNLEVBQUUsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLGNBQWMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsY0FBYyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3ZGLFlBQVksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUMzRCxZQUFZLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDM0QsWUFBWSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDO0lBQ25FLFlBQVksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUM1RCxZQUFZLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFO0lBQzVELGdCQUFnQixDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDeEIsZ0JBQWdCLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztJQUN4QixnQkFBZ0IsQ0FBQyxHQUFHLEVBQUUsY0FBYyxDQUFDO0lBQ3JDLGdCQUFnQixDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDeEIsZ0JBQWdCLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztJQUN4QixhQUFhLENBQUMsQ0FBQyxDQUFDO0lBQ2hCLFlBQVksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxjQUFjLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUM1RSxZQUFZLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsY0FBYyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDNUUsWUFBWSxVQUFVLENBQUMsSUFBSTtJQUMzQixnQkFBZ0IsRUFBRSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUM7SUFDcEMsYUFBYSxDQUFDO0FBQ2Q7SUFDQSxTQUFTO0FBQ1Q7QUFDQTtJQUNBLFFBQVEsTUFBTSxNQUFNLEdBQUcsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0FBQ3JEO0lBQ0EsUUFBUSxJQUFJLFlBQVksQ0FBQztJQUN6QixRQUFRLElBQUksWUFBWSxDQUFDO0lBQ3pCLFFBQVEsSUFBSSxLQUFLLFlBQVksU0FBUyxFQUFFO0lBQ3hDLFlBQVksWUFBWSxHQUFHLElBQUksU0FBUyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNyRCxZQUFZLFlBQVksR0FBRyxJQUFJLFNBQVMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDckQsU0FBUyxNQUFNO0lBQ2YsWUFBWSxZQUFZLEdBQUcsSUFBSSxVQUFVLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3RELFlBQVksWUFBWSxHQUFHLElBQUksVUFBVSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUN0RCxTQUFTO0FBQ1Q7SUFDQSxRQUFRLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNqQixRQUFRLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO0lBQzVDLFlBQVksWUFBWSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDOUMsWUFBWSxZQUFZLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUM5QyxZQUFZLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDO0lBQ3ZDLFNBQVM7QUFDVDtJQUNBLFFBQVEsT0FBTyxDQUFDLFlBQVksRUFBRSxZQUFZLENBQUMsQ0FBQztJQUM1QyxLQUFLLENBQUM7QUFDTjtBQUNBO0FBQ0E7SUFDQSxJQUFJLENBQUMsQ0FBQyxRQUFRLElBQUksZUFBZSxRQUFRLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRTtJQUN4RCxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUM1QixRQUFRLE1BQU0sS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUMvQixRQUFRLElBQUksTUFBTSxFQUFFLFVBQVUsQ0FBQztJQUMvQixRQUFRLElBQUksU0FBUyxJQUFJLElBQUksRUFBRTtJQUMvQixZQUFZLE1BQU0sR0FBRyxjQUFjLENBQUM7SUFDcEMsWUFBWSxVQUFVLEdBQUcsbUJBQW1CLENBQUM7SUFDN0MsU0FBUyxNQUFNLElBQUksU0FBUyxJQUFJLElBQUksRUFBRTtJQUN0QyxZQUFZLE1BQU0sR0FBRyxjQUFjLENBQUM7SUFDcEMsWUFBWSxVQUFVLEdBQUcsbUJBQW1CLENBQUM7SUFDN0MsU0FBUyxNQUFNO0lBQ2YsWUFBWSxNQUFNLElBQUksS0FBSyxDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBQzdDLFNBQVM7QUFDVDtJQUNBLFFBQVEsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsVUFBVSxHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBQ3pELFFBQVEsSUFBSSxPQUFPLElBQUksQ0FBQyxJQUFJQSxNQUFJLENBQUMsT0FBTyxDQUFDLEVBQUU7SUFDM0MsWUFBWSxNQUFNLElBQUksS0FBSyxDQUFDLDBCQUEwQixDQUFDLENBQUM7SUFDeEQsU0FBUztBQUNUO0lBQ0EsUUFBUSxNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUMsV0FBVyxDQUFDLENBQUM7QUFDcEU7SUFDQSxRQUFRLE1BQU0sVUFBVSxHQUFHLEVBQUUsQ0FBQztJQUM5QixRQUFRLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsV0FBVyxFQUFFLENBQUMsRUFBRSxFQUFFO0lBQzdDLFlBQVksSUFBSSxDQUFDLENBQUM7SUFDbEIsWUFBWSxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUMsV0FBVyxDQUFDLENBQUMsRUFBRTtJQUNyQyxnQkFBZ0IsQ0FBQyxHQUFHLGNBQWMsQ0FBQztJQUNuQyxhQUFhLE1BQU07SUFDbkIsZ0JBQWdCLENBQUMsR0FBRyxPQUFPLEdBQUcsQ0FBQyxDQUFDLGNBQWMsQ0FBQztJQUMvQyxhQUFhO0lBQ2IsWUFBWSxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUUsU0FBUztJQUMvQixZQUFZLE1BQU0sSUFBSSxHQUFHLEVBQUUsQ0FBQztJQUM1QixZQUFZLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsY0FBYyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ2xGLFlBQVksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMxRCxZQUFZLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDL0QsWUFBWSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRTtJQUM1RCxnQkFBZ0IsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBQ3hCLGdCQUFnQixDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDeEIsZ0JBQWdCLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztJQUN4QixhQUFhLENBQUMsQ0FBQyxDQUFDO0lBQ2hCLFlBQVksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUU7SUFDaEUsZ0JBQWdCLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztJQUN4QixnQkFBZ0IsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBQ3hCLGdCQUFnQixDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDeEIsYUFBYSxDQUFDLENBQUMsQ0FBQztJQUNoQixZQUFZLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDbEUsWUFBWSxVQUFVLENBQUMsSUFBSTtJQUMzQixnQkFBZ0IsRUFBRSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUM7SUFDcEMsYUFBYSxDQUFDO0FBQ2Q7SUFDQSxTQUFTO0FBQ1Q7SUFDQSxRQUFRLE1BQU0sTUFBTSxHQUFHLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQztBQUNyRDtJQUNBLFFBQVEsSUFBSSxXQUFXLENBQUM7SUFDeEIsUUFBUSxJQUFJLElBQUksWUFBWSxTQUFTLEVBQUU7SUFDdkMsWUFBWSxXQUFXLEdBQUcsSUFBSSxTQUFTLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3ZELFNBQVMsTUFBTTtJQUNmLFlBQVksV0FBVyxHQUFHLElBQUksVUFBVSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN4RCxTQUFTO0FBQ1Q7SUFDQSxRQUFRLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNqQixRQUFRLEtBQUssSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtJQUMvQyxZQUFZLFdBQVcsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzdDLFlBQVksQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUM7SUFDdkMsU0FBUztBQUNUO0lBQ0EsUUFBUSxPQUFPLFdBQVcsQ0FBQztJQUMzQixLQUFLLENBQUM7SUFDTixDQUFDO0FBQ0Q7SUFDQSxlQUFlLFdBQVcsQ0FBQyxNQUFNLEVBQUU7QUFDbkM7SUFDQSxJQUFJLE1BQU0sRUFBRSxHQUFHLE1BQU0sa0JBQWtCLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7QUFDMUU7QUFDQTtJQUNBLElBQUksTUFBTSxLQUFLLEdBQUcsRUFBRSxDQUFDO0FBQ3JCO0lBQ0EsSUFBSSxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO0lBQzFDLElBQUksS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztJQUMxQyxJQUFJLEtBQUssQ0FBQyxJQUFJLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQztJQUM3QixJQUFJLEtBQUssQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDO0lBQ2xCLElBQUksS0FBSyxDQUFDLFFBQVEsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUMxQyxJQUFJLEtBQUssQ0FBQyxRQUFRLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDMUMsSUFBSSxLQUFLLENBQUMsRUFBRSxHQUFHLElBQUksVUFBVSxDQUFDLEVBQUUsRUFBRSxLQUFLLEVBQUUsTUFBTSxDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDL0QsSUFBSSxLQUFLLENBQUMsRUFBRSxHQUFHLElBQUksVUFBVSxDQUFDLEVBQUUsRUFBRSxLQUFLLEVBQUUsTUFBTSxDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDL0QsSUFBSSxLQUFLLENBQUMsRUFBRSxHQUFHLElBQUksVUFBVSxDQUFDLEVBQUUsRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ25ELElBQUksS0FBSyxDQUFDLEVBQUUsR0FBRyxJQUFJLFNBQVMsQ0FBQyxFQUFFLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxFQUFFLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxN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QVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQy9HLFFBQVEsT0FBTyxDQUFDLElBQUksRUFBRSxHQUFHLFNBQVMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBQzNDLEtBQUs7QUFDTDtJQUNBLElBQUksV0FBVyxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFO0lBQzFDLFFBQVEsTUFBTSxNQUFNLEdBQUcsT0FBTyxJQUFJLENBQUMsQ0FBQztJQUNwQyxRQUFRLE1BQU0sS0FBSyxHQUFHLENBQUMsTUFBTSxLQUFLLFNBQVMsSUFBSSxDQUFDLEdBQUcsTUFBTSxDQUFDO0lBQzFELFFBQVEsT0FBTyxDQUFDLEdBQUcsT0FBTyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsR0FBRyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUMvRCxLQUFLO0FBQ0w7SUFDQSxJQUFJLFdBQVcsQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRTtJQUMxQyxRQUFRLE1BQU0sTUFBTSxHQUFHLE9BQU8sSUFBSSxDQUFDLENBQUM7SUFDcEMsUUFBUSxNQUFNLEtBQUssR0FBRyxDQUFDLE1BQU0sS0FBSyxTQUFTLElBQUksQ0FBQyxHQUFHLE1BQU0sQ0FBQztJQUMxRCxRQUFRLE9BQU8sQ0FBQyxHQUFHLE9BQU8sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEdBQUcsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDL0QsS0FBSztBQUNMO0lBQ0EsSUFBSSxZQUFZLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUU7SUFDM0MsUUFBUSxNQUFNLE1BQU0sR0FBRyxPQUFPLElBQUksQ0FBQyxDQUFDO0lBQ3BDLFFBQVEsTUFBTSxLQUFLLEdBQUcsQ0FBQyxNQUFNLEtBQUssU0FBUyxJQUFJLENBQUMsR0FBRyxNQUFNLENBQUM7SUFDMUQsUUFBUSxPQUFPLENBQUMsR0FBRyxPQUFPLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxHQUFHLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQy9ELEtBQUs7QUFDTDtJQUNBLElBQUksWUFBWSxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFO0lBQzNDLFFBQVEsTUFBTSxNQUFNLEdBQUcsT0FBTyxJQUFJLENBQUMsQ0FBQztJQUNwQyxRQUFRLE1BQU0sS0FBSyxHQUFHLENBQUMsTUFBTSxLQUFLLFNBQVMsSUFBSSxDQUFDLEdBQUcsTUFBTSxDQUFDO0lBQzFELFFBQVEsT0FBTyxDQUFDLEdBQUcsT0FBTyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsR0FBRyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUMvRCxLQUFLO0FBQ0w7SUFDQSxJQUFJLFlBQVksQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRTtJQUMzQyxRQUFRLE1BQU0sTUFBTSxHQUFHLE9BQU8sSUFBSSxDQUFDLENBQUM7SUFDcEMsUUFBUSxNQUFNLEtBQUssR0FBRyxDQUFDLE1BQU0sS0FBSyxTQUFTLElBQUksQ0FBQyxHQUFHLE1BQU0sQ0FBQztJQUMxRCxRQUFRLE9BQU8sQ0FBQyxHQUFHLE9BQU8sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEdBQUcsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDL0QsS0FBSztBQUNMO0lBQ0EsSUFBSSxZQUFZLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUU7SUFDM0MsUUFBUSxNQUFNLE1BQU0sR0FBRyxPQUFPLElBQUksQ0FBQyxDQUFDO0lBQ3BDLFFBQVEsTUFBTSxLQUFLLEdBQUcsQ0FBQyxNQUFNLEtBQUssU0FBUyxJQUFJLENBQUMsR0FBRyxNQUFNLENBQUM7SUFDMUQsUUFBUSxPQUFPLENBQUMsR0FBRyxPQUFPLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxHQUFHLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQy9ELEtBQUs7QUFDTDtJQUNBLElBQUksUUFBUSxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxF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QUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsRUFBRTtJQUM1QyxZQUFZLE1BQU0sR0FBRyxPQUFPLENBQUM7SUFDN0IsWUFBWSxLQUFLLEdBQUcsTUFBTSxDQUFDO0lBQzNCLFlBQVksT0FBTyxHQUFHLFFBQVEsQ0FBQztJQUMvQixTQUFTO0lBQ1QsUUFBUSxPQUFPLENBQUMsR0FBRyxPQUFPLEVBQUUsR0FBRyxPQUFPLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxHQUFHLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQzNFLEtBQUs7QUFDTDtJQUNBLElBQUksV0FBVyxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFO0lBQzFDLFFBQVEsTUFBTSxNQUFNLEdBQUcsT0FBTyxJQUFJLENBQUMsQ0FBQztJQUNwQyxRQUFRLE1BQU0sS0FBSyxHQUFHLENBQUMsTUFBTSxLQUFLLFNBQVMsSUFBSSxDQUFDLEdBQUcsTUFBTSxDQUFDO0lBQzFELFFBQVEsT0FBTyxDQUFDLEdBQUcsT0FBTyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsR0FBRyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUMvRCxLQUFLO0FBQ0w7SUFDQSxJQUFJLFdBQVcsQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRTtJQUMxQyxRQUFRLE1BQU0sTUFBTSxHQUFHLE9BQU8sSUFBSSxDQUFDLENBQUM7SUFDcEMsUUFBUSxNQUFNLEtBQUssR0FBRyxDQUFDLE1BQU0sS0FBSyxTQUFTLElBQUksQ0FBQyxHQUFHLE1BQU0sQ0FBQztJQUMxRCxRQUFRLE9BQU8sQ0FBQyxHQUFHLE9BQU8sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEdBQUcsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDL0QsS0FBSztBQUNMO0lBQ0EsSUFBSSxZQUFZLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUU7SUFDM0MsUUFBUSxNQUFNLE1BQU0sR0FBRyxPQUFPLElBQUksQ0FBQyxDQUFDO0lBQ3BDLFFBQVEsTUFBTSxLQUFLLEdBQUcsQ0FBQyxNQUFNLEtBQUssU0FBUyxJQUFJLENBQUMsR0FBRyxNQUFNLENBQUM7SUFDMUQsUUFBUSxPQUFPLENBQUMsR0FBRyxPQUFPLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxHQUFHLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQy9ELEtBQUs7QUFDTDtJQUNBLElBQUksWUFBWSxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFO0lBQzNDLFFBQVEsTUFBTSxNQUFNLEdBQUcsT0FBTyxJQUFJLENBQUMsQ0FBQztJQUNwQyxRQUFRLE1BQU0sS0FBSyxHQUFHLENBQUMsTUFBTSxLQUFLLFNBQVMsSUFBSSxDQUFDLEdBQUcsTUFBTSxDQUFDO0lBQzFELFFBQVEsT0FBTyxDQUFDLEdBQUcsT0FBTyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsR0FBRyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUMvRCxLQUFLO0FBQ0w7SUFDQSxJQUFJLFFBQVEsQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRTtJQUN2QyxRQUFRLE1BQU0sTUFBTSxHQUFHLE9BQU8sSUFBSSxDQUFDLENBQUM7SUFDcEMsUUFBUSxNQUFNLEtBQUssR0FBRyxDQUFDLE1BQU0sS0FBSyxTQUFTLElBQUksQ0FBQyxHQUFHLE1BQU0sQ0FBQztJQUMxRCxRQUFRLE9BQU8sQ0FBQyxHQUFHLE9BQU8sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEdBQUcsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDL0QsS0FBSztBQUNMO0lBQ0EsSUFBSSxTQUFTLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFO0lBQ2xELFFBQVEsSUFBSSxNQUFNLEVBQUUsS0FBSyxFQUFFLE9BQU8sQ0FBQztJQUNuQyxRQUFRLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRTtJQUNwQyxZQUFZ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QVM7SUFDVCxLQUFLO0FBQ0w7SUFDQSxJQUFJLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxPQUFPLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUFFO0lBQ3pELElBQUksSUFBSSxDQUFDLEdBQUcsSUFBSSxFQUFFO0lBQ2xCLFFBQVEsT0FBTyxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDOUQsS0FBSztJQUNMLElBQUksS0FBSyxDQUFDLE9BQU8sRUFBRSxRQUFRLEVBQUUsRUFBRSxPQUFPLENBQUMsR0FBRyxRQUFRLEVBQUUsSUFBSSxFQUFFLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRTtJQUNuRixJQUFJLEVBQUUsQ0FBQyxPQUFPLEVBQUUsRUFBRSxPQUFPLENBQUMsSUFBSSxFQUFFLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRTtJQUN6RCxJQUFJLEdBQUcsQ0FBQyxLQUFLLEVBQUUsRUFBRSxPQUFPLENBQUMsR0FBRyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUMsRUFBRTtJQUMzQyxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsRUFBRSxPQUFPLENBQUMsR0FBRyxLQUFLLEdBQUcsSUFBSSxDQUFDLENBQUMsRUFBRTtBQUM3QztJQUNBLElBQUksU0FBUyxDQUFDLEdBQUcsRUFBRSxFQUFFLE9BQU8sQ0FBQyxJQUFJLEVBQUUsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFO0lBQ3ZELElBQUksU0FBUyxDQUFDLEdBQUcsRUFBRSxFQUFFLE9BQU8sQ0FBQyxJQUFJLEVBQUUsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFO0FBQ3ZEO0FBQ0E7SUFDQSxJQUFJLE9BQU8sQ0FBQyxNQUFNLEVBQUUsRUFBRSxPQUFPLENBQUMsR0FBRyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUMsRUFBRTtJQUNqRCxJQUFJLE1BQU0sQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLEVBQUUsT0FBTyxDQUFDLEdBQUcsT0FBTyxFQUFFLEdBQUcsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQUU7SUFDdkUsSUFBSSxNQUFNLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxFQUFFLE9BQU8sQ0FBQyxHQUFHLE9BQU8sRUFBRSxHQUFHLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUFFO0lBQ3ZFLElBQUksUUFBUSxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsRUFBRSxPQUFPLENBQUMsR0FBRyxPQUFPLEVBQUUsR0FBRyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUMsRUFBRTtJQUN6RSxJQUFJLFFBQVEsQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLEVBQUUsT0FBTyxDQUFDLEdBQUcsT0FBTyxFQUFFLEdBQUcsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQUU7SUFDekUsSUFBSSxRQUFRLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxFQUFFLE9BQU8sQ0FBQyxHQUFHLE9BQU8sRUFBRSxHQUFHLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUFFO0lBQ3pFLElBQUksUUFBUSxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsRUFBRSxPQUFPLENBQUMsR0FBRyxPQUFPLEVBQUUsR0FBRyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUMsRUFBRTtJQUN6RSxJQUFJLFFBQVEsQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLEVBQUUsT0FBTyxDQUFDLEdBQUcsT0FBTyxFQUFFLEdBQUcsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQUU7SUFDekUsSUFBSSxRQUFRLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxFQUFFLE9BQU8sQ0FBQyxHQUFHLE9BQU8sRUFBRSxHQUFHLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUFFO0lBQ3pFLElBQUksUUFBUSxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsRUFBRSxPQUFPLENBQUMsR0FBRyxPQUFPLEVBQUUsR0FBRyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUMsRUFBRTtJQUN6RSxJQUFJLFFBQVEsQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLEVBQUUsT0FBTyxDQUFDLEdBQUcsT0FBTyxFQUFFLEdBQUcsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQUU7SUFDekUsSUFBSSxPQUFPLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxFQUFFLE9BQU8sQ0FBQyxHQUFHLE9BQU8sRUFBRSxHQUFHLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUFFO0lBQ3hFLElBQUksT0FBTyxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsRUFBRSxPQUFPLENBQUMsR0FBRyxPQUFPLEVBQUUsR0FBRyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUMsRUFBRTtJQUN4RSxJQUFJLE9BQU8sQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLEVBQUUsT0FBTyxDQUFDLEdBQUcsT0FBTyxFQUFFLEdBQUcsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQUU7SUFDeEUsSUFBSSxTQUFTLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxFQUFFLE9BQU8sQ0FBQyxHQUFHLE9BQU8sRUFBRSxHQUFHLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUFFO0lBQzFFLElBQUksU0FBUyxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsRUFBRSxPQUFPLENBQUMsR0FBRyxPQUFPLEVBQUUsR0FBRyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUMsRUFBRTtJQUMxRSxJQUFJLFNBQVMsQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLEVBQUUsT0FBTyxDQUFDLEdBQUcsT0FBTyxFQUFFLEdBQUcsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQUU7SUFDMUUsSUFBSSxTQUFTLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxFQUFFLE9BQU8sQ0FBQyxHQUFHLE9BQU8sRUFBRSxHQUFHLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUFFO0lBQzFFLElBQUksT0FBTyxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsRUFBRSxPQUFPLENBQUMsR0FBRyxPQUFPLEVBQUUsR0FBRyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUMsRUFBRTtJQUN4RSxJQUFJLE1BQU0sQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLEVBQUUsT0FBTyxDQUFDLEdBQUcsT0FBTyxFQUFFLEdBQUcsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQUU7SUFDdkUsSUFBSSxPQUFPLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxFQUFFLE9BQU8sQ0FBQyxHQUFHLE9BQU8sRUFBRSxHQUFHLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUFFO0lBQ3hFLElBQUksT0FBTyxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsRUFBRSxPQUFPLENBQUMsR0FBRyxPQUFPLEVBQUUsR0FBRyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUMsRUFBRTtJQUN4RSxJQUFJLFNBQVMsQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLEVBQUUsT0FBTyxDQUFDLEdBQUcsT0FBTyxFQUFFLEdBQUcsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQUU7SUFDMUUsSUFBSSxTQUFTLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxFQUFFLE9BQU8sQ0FBQyxHQUFHLE9BQU8sRUFBRSxHQUFHLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUFFO0lBQzFFLElBQUksZ0JBQWdCLENBQUMsT0FBTyxFQUFFLEVBQUUsT0FBTyxDQUFDLEdBQUcsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQUU7SUFDNUQsSUFBSSxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsRUFBRSxPQUFPLENBQUMsR0FBRyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUMsRUFBRTtJQUM1RCxJQUFJLE9BQU8sQ0FBQyxPQUFPLEVBQUUsRUFBRSxPQUFPLENBQUMsR0FBRyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUMsRUFBRTtJQUNuRCxJQUFJLE9BQU8sQ0FBQyxPQUFPLEVBQUUsRUFBRSxPQUFPLENBQUMsR0FBRyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUMsRUFBRTtBQUNuRDtJQUNBLElBQUksT0FBTyxDQUFDLE9BQU8sRUFBRSxFQUFFLE9BQU8sQ0FBQyxHQUFHLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUFFO0lBQ25ELElBQUksTUFBTSxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsRUFBRSxPQUFPLENBQUMsR0FBRyxPQUFPLEVBQUUsR0FBRyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUMsRUFBRTtJQUN2RSxJQUFJLE1BQU0sQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLEVBQUUsT0FBTyxDQUFDLEdBQUcsT0FBTyxFQUFFLEdBQUcsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQUU7SUFDdkUsSUFBSSxRQUFRLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxFQUFFLE9BQU8sQ0FBQyxHQUFHLE9BQU8sRUFBRSxHQUFHLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUFFO0lBQ3pFLElBQUksUUFBUSxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsRUFBRSxPQUFPLENBQUMsR0FBRyxPQUFPLEVBQUUsR0FBRyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUMsRUFBRTtJQUN6RSxJQUFJLFFBQVEsQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLEVBQUUsT0FBTyxDQUFDLEdBQUcsT0FBTyxFQUFFLEdBQUcsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQUU7SUFDekUsSUFBSSxRQUFRLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxFQUFFLE9BQU8sQ0FBQyxHQUFHLE9BQU8sRUFBRSxHQUFHLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUFFO0lBQ3pFLElBQUksUUFBUSxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsRUFBRSxPQUFPLENBQUMsR0FBRyxPQUFPLEVBQUUsR0FBRyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUMsRUFBRTtJQUN6RSxJQUFJLFFBQVEsQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLEVBQUUsT0FBTyxDQUFDLEdBQUcsT0FBTyxFQUFFLEdBQUcsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQUU7SUFDekUsSUFBSSxRQUFRLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxFQUFFLE9BQU8sQ0FBQyxHQUFHLE9BQU8sRUFBRSxHQUFHLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUFFO0lBQ3pFLElBQUksUUFBUSxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsRUFBRSxPQUFPLENBQUMsR0FBRyxPQUFPLEVBQUUsR0FBRyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUMsRUFBRTtJQUN6RSxJQUFJLE9BQU8sQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLEVBQUUsT0FBTyxDQUFDLEdBQUcsT0FBTyxFQUFFLEdBQUcsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQUU7SUFDeEUsSUFBSSxPQUFPLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxFQUFFLE9BQU8sQ0FBQyxHQUFHLE9BQU8sRUFBRSxHQUFHLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUFFO0lBQ3hFLElBQUksT0FBTyxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsRUFBRSxPQUFPLENBQUMsR0FBRyxPQUFPLEVBQUUsR0FBRyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUMsRUFBRTtJQUN4RSxJQUFJLFNBQVMsQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLEVBQUUsT0FBTyxDQUFDLEdBQUcsT0FBTyxFQUFFLEdBQUcsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQUU7SUFDMUUsSUFBSSxTQUFTLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxFQUFFLE9BQU8sQ0FBQyxHQUFHLE9BQU8sRUFBRSxHQUFHLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUFFO0lBQzFFLElBQUksU0FBUyxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsRUFBRSxPQUFPLENBQUMsR0FBRyxPQUFPLEVBQUUsR0FBRyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUMsRUFBRTtJQUMxRSxJQUFJLFNBQVMsQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLEVBQUUsT0FBTyxDQUFDLEdBQUcsT0FBTyxFQUFFLEdBQUcsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQUU7SUFDMUUsSUFBSSxPQUFPLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxFQUFFLE9BQU8sQ0FBQyxHQUFHLE9BQU8sRUFBRSxHQUFHLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUFFO0lBQ3hFLElBQUksTUFBTSxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsRUFBRSxPQUFPLENBQUMsR0FBRyxPQUFPLEVBQUUsR0FBRyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUMsRUFBRTtJQUN2RSxJQUFJLE9BQU8sQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLEVBQUUsT0FBTyxDQUFDLEdBQUcsT0FBTyxFQUFFLEdBQUcsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQUU7SUFDeEUsSUFBSSxPQUFPLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxFQUFFLE9BQU8sQ0FBQyxHQUFHLE9BQU8sRUFBRSxHQUFHLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUFFO0lBQ3hFLElBQUksU0FBUyxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsRUFBRSxPQUFPLENBQUMsR0FBRyxPQUFPLEVBQUUsR0FBRyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUMsRUFBRTtJQUMxRSxJQUFJLFNBQVMsQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLEVBQUUsT0FBTyxDQUFDLEdBQUcsT0FBTyxFQUFFLEdBQUcsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQUU7SUFDMUUsSUFBSSxRQUFRLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxFQUFFLE9BQU8sQ0FBQyxHQUFHLE9B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QUFNLEtBQUssQ0FBQyxJQUFJLEVBQUUsR0FBRyxFQUFFO0lBQzNCLFFBQVEsSUFBSSxJQUFJLENBQUMsVUFBVSxJQUFJLENBQUMsRUFBRSxPQUFPO0lBQ3pDLFFBQVEsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDO0lBQzFCO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBLFFBQVEsSUFBSSxPQUFPLEdBQUcsSUFBSSxXQUFXLEVBQUUsR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUM7SUFDdEQsUUFBUSxJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDO0lBQ3ZDLFFBQVEsSUFBSSxJQUFJLENBQUMsU0FBUyxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxTQUFTLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUM7SUFDM0YsUUFBUSxJQUFJLElBQUksQ0FBQyxZQUFZO0lBQzdCLFlBQVksTUFBTSxJQUFJLEtBQUssQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO0lBQ3RELFFBQVEsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzFELFFBQVEsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDaEY7SUFDQSxRQUFRLE1BQU0sWUFBWSxHQUFHLEVBQUUsQ0FBQztJQUNoQyxRQUFRLEtBQUssSUFBSSxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUMsRUFBRSxRQUFRLEVBQUUsQ0FBQyxFQUFFLEVBQUUsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDckYsUUFBUSxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7QUFDNUI7SUFDQSxR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LENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQzFEO0lBQ0EsUUFBUSxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDMUM7SUFDQSxRQUFRLE1BQU0sSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDekMsS0FBSztBQUNMO0FBQ0E7SUFDQSxJQUFJLE1BQU0sVUFBVSxDQUFDLENBQUMsRUFBRSxHQUFHLEVBQUU7SUFDN0IsUUFBUSxNQUFNLElBQUksR0FBRyxJQUFJLENBQUM7QUFDMUI7SUFDQSxRQUFRLE1BQU0sU0FBUyxHQUFHLElBQUksVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzVDLFFBQVEsTUFBTSxVQUFVLEdBQUcsSUFBSSxRQUFRLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQzFEO0lBQ0EsUUFBUSxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsVUFBVSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ3RELFFBQVEsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsV0FBVyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUM7QUFDcEU7SUFDQSxRQUFRLE1BQU0sSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDekMsS0FBSztBQUNMO0lBQ0EsSUFBSSxNQUFNLFNBQVMsQ0FBQyxHQUFHLEVBQUU7SUFDekIsUUFBUSxNQUFNLElBQUksR0FBRyxJQUFJLENBQUM7SUFDMUIsUUFBUSxNQUFNLENBQUMsR0FBRyxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBQzFDO0lBQ0EsUUFBUSxNQUFNLElBQUksR0FBRyxJQUFJLFdBQVcsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDL0M7SUFDQSxRQUFRLE9BQU8s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LElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLFdBQVcsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDO0FBQ3BFO0lBQ0EsUUFBUSxNQUFNLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ3pDLEtBQUs7QUFDTDtBQUNBO0lBQ0EsSUFBSSxNQUFNLFNBQVMsQ0FBQyxHQUFHLEVBQUU7SUFDekIsUUFBUSxNQUFNLElBQUksR0FBRyxJQUFJLENBQUM7SUFDMUIsUUFBUSxNQUFNLENBQUMsR0FBRyxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBQzFDO0lBQ0EsUUFBUSxNQUFNLElBQUksR0FBRyxJQUFJLFdBQVcsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDL0M7SUFDQSxRQUFRLE9BQU8sSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3ZCLEtBQUs7QUFDTDtJQUNBLElBQUksTUFBTSxTQUFTLENBQUMsR0FBRyxFQUFFO0lBQ3pCLFFBQVEsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDO0lBQzFCLFFBQVEsTUFBTSxDQUFDLEdBQUcsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztBQUMxQztJQUNBLFFBQVEsTUFBTSxJQUFJLEdBQUcsSUFBSSxRQUFRLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQzVDO0lBQ0EsUUFBUSxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3hDLEtBQUs7QUFDTDtJQUNBLElBQUksTUFBTSxTQUFTLENBQUMsR0FBRyxFQUFFO0lBQ3pCLFFBQVEsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDO0lBQzFCLFFBQVEsTUFBTSxDQUFDLEdBQUcsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztBQUMxQztJQUNBLFFBQVEsTUFBTSxJQUFJ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LEVBQUUsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDM0IsSUFBSSxNQUFNQyxlQUE0QixDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQzNDO0lBQ0E7SUFDQTtBQUNBO0lBQ0EsSUFBSSxNQUFNLEtBQUssR0FBRyxNQUFNQyxhQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3pDO0lBQ0EsSUFBSSxNQUFNRixpQkFBOEIsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDaEQsSUFBSSxNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQzNCLElBQUksTUFBTSxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUN4RTtJQUNBLElBQUksTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUMzQixJQUFJLE1BQU0sR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDeEU7SUFDQSxJQUFJLE1BQU0sRUFBRSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUM3QixJQUFJLE1BQU1HLFdBQXdCLENBQUMsRUFBRSxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQztJQUNwRCxJQUFJLE1BQU0sRUFBRSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUM3QixJQUFJLE1BQU1BLFdBQXdCLENBQUMsRUFBRSxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQztJQUNwRCxJQUFJLE1BQU0sRUFBRSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDcEMsSUFBSSxN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RSxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDNUQsSUFBSSxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sTUFBTSxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQzVELElBQUksSUFBSSxDQUFDLFVBQVUsR0FBRyxNQUFNLE1BQU0sQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsQ0FBQztJQUM3RCxJQUFJLElBQUksQ0FBQyxVQUFVLEdBQUcsTUFBTSxNQUFNLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDN0QsSUFBSSxJQUFJLENBQUMsVUFBVSxHQUFHLE1BQU0sTUFBTSxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQzdELElBQUksTUFBTUksY0FBMkIsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUMxQztJQUNBLElBQUksT0FBTyxJQUFJLENBQUM7QUFDaEI7SUFDQSxDQUFDO0FBQ0Q7SUFDQSxlQUFlLGVBQWUsQ0FBQyxFQUFFLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUU7SUFDaEUsSUFBSSxNQUFNLElBQUksR0FBRyxFQUFFLENBQUM7QUFDcEI7SUFDQSxJQUFJLElBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDO0FBQzVCO0lBQ0E7SUFDQTtJQUNBLElBQUksTUFBTUQsc0JBQW1DLENBQUMsRUFBRSxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUMvRCxJQUFJLE1BQU0sR0FBRyxHQUFHLE1BQU0sRUFBRSxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQ3JDLElBQUksSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUM7SUFDbkIsSUFBSSxJQUFJLENBQUMsQ0FBQyxHQUFHLE1BQU1FLFVBQXVCLENBQUMsRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBQ3BEO0lBQ0EsSUFBSSxNQUFNLEdBQUcsR0FBRyxNQUFNLEVBQUUsQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUNyQyxJQUFJLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDO0lBQ25CLElBQUksSUFBSSxDQUFDLENBQUMsR0FBRyxNQUFNQSxVQUF1QixDQUFDLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUNwRCxJQUFJLElBQUksQ0FBQyxLQUFLLEdBQUcsTUFBTUwsYUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDakQsSUFBSSxJQUFJLENBQUMsS0FBSyxHQUFHLE1BQU0sRUFBRSxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQ3RDLElBQUksSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLEVBQUUsQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUN4QyxJQUFJLElBQUksQ0FBQyxVQUFVLEdBQUcsTUFBTSxFQUFFLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDM0MsSUFBSSxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDdkMsSUFBSSxJQUFJLENBQUMsVUFBVSxHQUFHLE1BQU0sRUFBRSxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQzNDLElBQUksSUFBSSxDQUFDLFlBQVksR0FBRyxNQUFNLEVBQUUsQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUM3QyxJQUFJLElBQUksQ0FBQyxFQUFFLEdBQUcsTUFBTSxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2pDLElBQUksSUFBSSxDQUFDLEVBQUUsR0FBRyxNQUFNLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDakM7SUFDQSxJQUFJLElBQUksQ0FBQyxFQUFFLEdBQUcsTUFBTSxNQUFNLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDckQsSUFBSSxJQUFJLENBQUMsRUFBRSxHQUFHLE1BQU0sTUFBTSxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQ3JELElBQUksSUFBSSxDQUFDLEVBQUUsR0FBRyxNQUFNLE1BQU0sQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsQ0FBQztJQUNyRCxJQUFJLElBQUksQ0FBQyxFQUFFLEdBQUcsTUFBTSxNQUFNLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDckQsSUFBSSxJQUFJLENBQUMsRUFBRSxHQUFHLE1BQU0sTUFBTSxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQ3JELElBQUksSUFBSSxDQUFDLEVBQUUsR0FBRyxNQUFNLE1BQU0sQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsQ0FBQztJQUNyRCxJQUFJLElBQUksQ0FBQyxFQUFFLEdBQUcsTUFBTSxNQUFNLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDckQsSUFBSSxJQUFJLENBQUMsRUFBRSxHQUFHLE1BQU0sTUFBTSxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQ3JELElBQUksSUFBSSxDQUFDLEdBQUcsR0FBRyxNQUFNLE1BQU0sQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsQ0FBQztBQUN0RDtJQUNBLElBQUksTUFBTUksY0FBMkIsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUMxQztJQUNBLElBQUksT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztBQUNEO0lBQ0EsZUFBZSxnQkFBZ0IsQ0FBQyxFQUFFLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUU7SUFDakUsSUFBSSxNQUFNLElBQUksR0FBRyxFQUFFLENBQUM7QUFDcEI7SUFDQSxJQUFJLElBQUks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Q0FBQyxJQUFJLElBQUksRUFBRSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUN2RCxJQUFJLEtBQUssQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ3hFO0lBQ0EsSUFBSSxJQUFJLEdBQUcsRUFBRSxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQzFDLElBQUksSUFBSSxHQUFHLEVBQUUsQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQzNEO0lBQ0EsSUFBSSxLQUFLLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztBQUMxQztBQUNBO0lBQ0EsSUFBSSxLQUFLLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNuRSxJQUFJLEtBQUssQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDN0QsSUFBSSxLQUFLLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUMxRjtBQUNBO0lBQ0EsSUFBSSxJQUFJLGFBQWEsR0FBRyxFQUFFLENBQUM7QUFDM0I7SUFDQSxJQUFJLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsRUFBRSxFQUFFO0lBQ3pDLFFBQVEsTUFBTSxDQUFDLEdBQUcsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDNUQsUUFBUSxhQUFhLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNoRCxLQUFLO0FBQ0w7SUFDQSxJQUFJLEtBQUssQ0FBQyxJQUFJLEdBQUcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ3RELElBQUksS0FBSyxDQUFDLElBQUksR0FBRyxFQUFFLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDdEQsSUFBSSxLQUFLLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztBQUN0RDtJQUNBLElBQUksS0FBSyxDQUFDLFFBQVEsR0FBRyxTQUFTLENBQUM7SUFDL0IsSUFBSSxLQUFLLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUM7QUFDN0I7SUFDQSxJQUFJLE1BQU0sTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ3pCLElBQUksTUFBTSxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUM7QUFDekI7SUFDQSxJ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O0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0FBQ0E7SUFDQTtBQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0FBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtBQUNBO0lBQ0E7QUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtBQUNBO0lBQ0EsZUFBZSxPQUFPLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUU7SUFDckQsSUFBSSxNQUFNLGNBQWMsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDO0FBQ25DO0lBQ0EsSUFBSSxNQUFNLEVBQUUsR0FBRyxLQUFLLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUMzQixJQUFJLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQzdEO0lBQ0EsSUFBSSxNQUFNLFFBQVEsR0FBRyxFQUFFLENBQUM7QUFDeEI7SUFDQSxJQUFJLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxJQUFJLGNBQWMsRUFBRTtJQUNwRCxRQUFRLElBQUksTUFBTSxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDL0QsUUFBUSxNQUFNLENBQUMsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLFNBQVMsR0FBRyxDQUFDLEVBQUUsY0FBYyxDQUFDLENBQUM7QUFDekQ7SUFDQSxRQUFRLE1BQU0sSUFBSSxHQUFHLEVBQUUsQ0FBQztBQUN4QjtJQUNBLFFBQVEsTUFBTSxNQUFNLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNsRCxRQUFRLE1BQU0sTUFBTSxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDbEQsUUFBUSxNQUFNLE1BQU0sR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDO0FBQ2xEO0lBQ0EsUUFBUSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQzNELFFBQVEsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUMzRCxRQUFRLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDM0QsUUFBUSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNyRCxRQUFRLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FB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R0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMvRCxRQUFRLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLFlBQVksRUFBRSxDQUFDO0FBQy9EO0lBQ0EsUUFBUSxNQUFNLEdBQUcsR0FBRyxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDeEMsUUFBUSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRTtJQUMzQyxZQUFZLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNuRSxTQUFTO0FBQ1Q7SUFDQSxRQUFRLElBQUksQ0FBQyxLQUFLLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsV0FBVyxDQUFDLENBQUM7QUFDeEQ7SUFDQSxRQUFRLElBQUksQ0FBQyxFQUFFLEdBQUcsSUFBSTZDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDMUM7SUFDQSxRQUFRLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDeEQsUUFBUSxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ3RELFFBQVEsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxTQUFTLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNoRSxRQUFRLElBQUksQ0FB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LENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRUEsTUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUVBLE1BQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO0lBQzFILFFBQVEsQ0FBQyxDQUFDLEVBQUVBLE1BQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFQSxNQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUMzRCxRQUFRLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN0QjtJQUNBLElBQUksT0FBTyxDQUFDLENBQUM7SUFDYjs7SUM3Q0E7SUFDQTtBQUNBO0lBQ0E7QUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0FBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtBQUNBO0lBQ0E7SUFDQTtJQUNBOzs7Ozs7Ozs7O0lDakJBO0lBQ0E7QUFDQTtJQUNBO0FBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtBQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7QUFDQTtJQUNBO0lBQ0E7SUFDQTtBQUtBO0lBQ08sU0FBUyxRQUFRLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRTtJQUN0QyxJQUFJLE1BQU0sS0FBSyxHQUFHLElBQUksUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDOUUsSUFBSSxNQUFNLElBQUksR0FBRyxFQUFFLENBQUM7SUFDcEIsSUFBSSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENB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SUFDQSxJQUFJLE1BQU0sSUFBSSxHQUFHLE1BQU0sRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNsRTtJQUNBLElBQUksT0FBTyxpQkFBaUIsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxVQUFVLENBQUMsQ0FBQztJQUN6RCxDQUFDO0FBQ0Q7SUFDTyxTQUFTLGlCQUFpQixDQUFDLElBQUksRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRTtBQUNoRTtJQUNBLElBQUksTUFBTSxHQUFHLEdBQUc7SUFDaEIsUUFBUSxHQUFHLEVBQUUsRUFBRTtJQUNmLFFBQVEsS0FBSyxFQUFFLEVBQUU7SUFDakIsUUFBUSxJQUFJLEVBQUUsRUFBRTtJQUNoQixLQUFLLENBQUM7QUFDTjtJQUNBLElBQUksR0FBRyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEdBQUcsTUFBTSxFQUFFLENBQUM7SUFDNUIsSUFBSSxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssR0FBRyxNQUFNLEVBQUUsQ0FBQztJQUM3QixJQUFJLEdBQUcsQ0FBQyxLQUFLLENBQUMsSUFBSSxHQUFHLE1BQU0sRUFBRSxDQUFDO0lBQzlCLElBQUksR0FBRyxDQUFDLEtBQUssQ0FBQyxLQUFLLEdBQUcsTUFBTSxFQUFFLENBQUM7SUFDL0IsSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksR0FBRyxNQUFNLEVBQUUsQ0FBQztJQUM3QixJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxHQUFHLE1BQU0sRUFBRSxDQUFDO0lBQzlCLElBQUksR0FBRyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEdBQUcsTUFBTSxFQUFFLENBQUM7SUFDOUIsSUFBSSxHQUFHLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxNQUFNLEVBQUUsQ0FBQztJQUNoQyxJQUFJLEdB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O0lBQ3RFLEtBQUs7SUFDTCxJQUFJLE1BQU1DLGVBQTRCLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDM0M7SUFDQTtJQUNBO0lBQ0EsSUFBSSxNQUFNRCxpQkFBOEIsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDaEQsSUFBSSxNQUFNLE1BQU0sSUFBSSxDQUFDLElBQUksS0FBSyxDQUFDLENBQUM7SUFDaEMsSUFBSSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO0lBQ2xDLFFBQVEsTUFBTSxFQUFFLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQy9CLFFBQVEsSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ3RFLEtBQUs7SUFDTCxJQUFJLE1BQU1DLGVBQTRCLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDM0M7SUFDQTtJQUNBO0lBQ0EsSUFBSSxNQUFNRCxpQkFBOEIsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDaEQsSUFBSSxNQUFNLFVBQVUsSUFBSSxDQUFDLElBQUksS0FBSyxDQUFDLENBQUM7SUFDcEMsSUFBSSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsVUFBVSxFQUFFLENBQUMsRUFBRSxFQUFFO0lBQ3RDLFFBQVEsTUFBTSxFQUFFLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQy9CLFFBQVEsSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsY0FBYyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQzNFLEtBQUs7SUFDTCxJQUFJLE1BQU1DLGVBQTRCLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDM0M7SUFDQTtJQUNBO0lBQ0EsSUFBSSxNQUFNRCxpQkFBOEIsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDaEQsSUFBSSxNQUFNLFVBQVUsSUFBSSxDQUFDLElBQUksS0FBSyxDQUFDLENBQUM7SUFDcEMsSUFBSSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsVUFBVSxFQUFFLENBQUMsRUFBRSxFQUFFO0lBQ3RDLFFBQVEsTUFBTSxFQUFFLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQy9CLFFBQVEsSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsYUFBYSxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQzFFLEtBQUs7SUFDTCxJQUFJLE1BQU1DLGVBQTRCLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDM0M7SUFDQTtJQUNBO0lBQ0EsSUFBSSxNQUFNRCxpQkFBOEIsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDaEQsSUFBSSxNQUFNLEVBQUUsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDM0IsSUFBSSxNQUFNQyxlQUE0QixDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQzNDO0lBQ0E7SUFDQTtJQUNBLElBQUksTUFBTUQsaUJBQThCLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2hELElBQUksTUFBTSxFQUFFLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzNCLElBQUksTUFBTUMsZUFBNEIsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUMzQztJQUNBLElBQUksTUFBTSxFQUFFLENBQUMsS0FBSyxFQUFFLENBQUM7QUFDckI7SUFDQSxJQUFJLE1BQU0sa0JBQWtCLEdBQUcyQiwyQkFBcUMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBQzNGO0lBQ0EsSUFBSSxJQUFJLE1BQU0sRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDQyxVQUFlLENBQUMvQixtQkFBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLDBCQUEwQixDQUFDLENBQUMsQ0FBQztBQUNoRztJQUNBLElBQUksSUFBSSxNQUFNLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQytCLFVBQWUsQ0FBQyxrQkFBa0IsRUFBRSwwQkFBMEIsQ0FBQyxDQUFDLENBQUM7QUFDN0Y7SUFDQSxJQUFJLE9BQU8sa0JBQWtCLENBQUM7QUFDOUI7SUFDQTs7SUNqSkE7QUFhQTtJQUNlLGVBQWUsZUFBZSxDQUFDLFlBQVksRUFBRSxpQkFBaUIsRUFBRSxNQUFNLEVBQUU7SUFDdkYsSUFBSSxNQUFNL0IsbUJBQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUMxQixJQUFJLE1BQU0sQ0FBQyxFQUFFLEVBQUUsTUFBTSxFQUFFLFFBQVEsQ0FBQyxHQUFHLE1BQU1VLFdBQXdCLENBQUMsWUFBWSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQztBQUMzRjtJQUNBLElBQUksTUFBTSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsR0FBRyxNQUFNc0IsY0FBb0IsQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLENBQUM7QUFDeEU7SUFDQSxJQUFJLE1BQU0sYUFBYSxHQUFHLE1BQU1DLGlCQUF1QixDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDakYsSUFBSSxJQUFJLGdCQUFnQixFQUFFLGdCQUFnQixDQUFDO0lBQzNDLElBQUksSUFBSSxhQUFhLENBQUMsTUFBTSxJQUFJLENBQUMsRUFBRTtJQUNuQyxRQUFRLGdCQUFnQixHQUFHakMsbUJBQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUNoRCxRQUFRLGdCQUFnQixHQUFHa0MsMkJBQWlDLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQzNFLEtBQUssTUFBTTtJQUNYLFFBQVEsZ0JBQWdCLEdBQUcsYUFBYSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDO0lBQzlFLFFBQVEsZ0JBQWdCLEdBQUcsYUFBYSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDO0lBQy9FLEtBQUs7QUFDTDtJQUNBLElBQUksSUFBSSxNQUFNLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQ0gsVUFBZSxDQUFDLGdCQUFnQixFQUFFLHNCQUFzQixDQUFDLENBQUMsQ0FBQztBQUN2RjtJQUNBLElBQUksSUFBSSxNQUFNLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQ0EsVUFBZSxDQUFDLGdCQUFnQixFQUFFLHNCQUFzQixDQUFDLENBQUMsQ0FBQztBQUN2RjtBQUNBO0lBQ0EsSUFBSSxNQUFNLElBQUksR0FBRyxNQUFNL0MsY0FBdUIsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0FBQ2xFO0lBQ0EsSUFBSSxNQUFNLE1BQU0sR0FBR2dCLG1CQUFPLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDL0IsSUFBSSxNQUFNLElBQUksQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUN2QyxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztBQUNwQztJQUNBLElBQUksTUFBTSxhQUFhLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxLQUFLLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUMvRCxJQUFJLE1BQU0sYUFBYSxDQUFDLENBQUMsRUFBRSxJQUFJLEdBQUcsQ0FBQyxJQUFJLEtBQUssVUFBVSxPQUFPLENBQUMsQ0FBQztJQUMvRCxJQUFJLE1BQU0sYUFBYSxDQUFDLENBQUMsRUFBRSxJQUFJLEdBQUcsQ0FBQyxJQUFJLEtBQUssVUFBVSxZQUFZLENBQUMsQ0FBQztJQUNwRSxJQUFJLE1BQU0sYUFBYSxDQUFDLENBQUMsRUFBRSxJQUFJLEdBQUcsQ0FBQyxJQUFJLEtBQUssVUFBVSxXQUFXLENBQUMsQ0FBQztJQUNuRSxJQUFJLE1BQU0sYUFBYSxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxvQkFBb0IsUUFBUSxDQUFDLENBQUM7QUFDaEU7SUFDQSxJQUFJLE1BQU0sTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ3pCLElBQUksTUFBTSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7QUFDdkI7SUFDQSxJQUFJLE1BQU0sb0JBQW9CLEdBQUcsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDO0FBQ2pEO0lBQ0EsSUFBSSxJQUFJLENBQUNtQyxXQUFnQixFQUFFLGdCQUFnQixFQUFFLG9CQUFvQixDQUFDLEVBQUU7SUFDcEUsUUFBUSxJQUFJLE1BQU0sRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDSixVQUFlLENBQUMsb0JBQW9CLEVBQUUsOEJBQThCLENBQUMsQ0FBQyxDQUFDO0FBQ3ZHO0lBQ0EsUUFBUSxJQUFJLE1BQU0sRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLDJGQUEyRixDQUFDLENBQUM7SUFDOUgsUUFBUSxNQUFNLElBQUksS0FBSyxDQUFDLDJGQUEyRixDQUFDLENBQUM7SUFDckgsS0FBSztBQUNMO0lBQ0EsSUFBSSxPQUFPLGdCQUFnQixDQUFDO0FBQzVCO0lBQ0EsSUFBSSxlQUFlLGFBQWEsQ0FBQyxTQUFTLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUU7SUFDN0UsUUFBUSxNQUFNLENBQUMsR0FBRyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDbkMsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDNUIsUUFBUSxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztBQUNwRDtJQUNBLFFBQVEsTUFBTXhCLHNCQUFtQyxDQUFDLE1BQU0sRUFBRSxRQUFRLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFDL0UsUUFBUSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsR0FBRyxZQUFZLEVBQUU7SUFDcEQsWUFBWSxJQUFJLE1BQU0sRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsVUFBVSxFQUFFLFdBQVcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbEYsWUFBWSxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsWUFBWSxDQUFDLENBQUM7SUFDeEQsWUFBWSxJQUFJLElBQUksQ0FBQztJQUNyQixZQUFZLElBQUksR0FBRyxNQUFNLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzNDLFlBQVksSUFBSSxHQUFHLE1BQU0sQ0FBQyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM3QyxZQUFZLE1BQU0sSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNuQyxZQUFZLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDaEMsU0FBUztJQUNULFFBQVEsTUFBTUMsY0FBMkIsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNsRCxLQUFLO0FBQ0w7QUFDQTtJQUNBOztJQ2hGQTtJQUNBO0FBQ0E7SUFDQTtBQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7QUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0FBQ0E7SUFDQTtJQUNBO0lBQ0E7QUFPQTtJQUNlLGVBQWUsY0FBYyxDQUFDLGVBQWUsRUFBRSxvQkFBb0IsRUFBRSxlQUFlLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUU7QUFDakk7SUFDQSxJQUFJLE1BQU1SLG1CQUFPLENBQUMsS0FBSyxFQUFFLENBQUM7QUFDMUI7SUFDQSxJQUFJLE1BQU0sTUFBTSxHQUFHLElBQUksVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3RDLElBQUksS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDO0FBQzlDO0lBQ0EsSUFBSSxNQUFNLENBQUMsRUFBRSxFQUFFLEtBQUssRUFBRSxRQUFRLENBQUMsR0FBRyxNQUFNVSxXQUF3QixDQUFDLGVBQWUsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDN0YsSUFBSSxNQUFNLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxHQUFHLE1BQU1zQixjQUFvQixDQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsQ0FBQztJQUN2RSxJQUFJLE1BQU0sYUFBYSxHQUFHLE1BQU1DLGlCQUF1QixDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDaEYsSUFBSSxNQUFNLG1CQUFtQixHQUFHLEVBQUUsQ0FBQztBQUNuQztJQUNBLElBQUksSUFBSSxJQUFJLEVBQUUsbUJBQW1CLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztBQUM5QztJQUNBLElBQUksTUFBTSxHQUFHLEdBQUcsS0FBSyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzlCLElBQUksTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUM7SUFDN0IsSUFBSSxNQUFNLEdBQUcsR0FBRyxLQUFLLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDOUIsSUFBSSxNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQztBQUM3QjtJQUNBLElBQUksTUFBTSxVQUFVLEdBQUcsTUFBTWxELFlBQXFCLENBQUMsb0JBQW9CLENBQUMsQ0FBQztBQUN6RTtJQUNBLElBQUksS0FBSyxVQUFVLENBQUMsU0FBUztJQUM3QixRQUFRLEVBQUU7SUFDVixRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSTtJQUMvQixRQUFRLENBQUMsQ0FBQyxJQUFJLEtBQUssRUFBRSxJQUFJO0lBQ3pCLFFBQVEsQ0FBQyxDQUFDLElBQUksS0FBSyxFQUFFLElBQUk7SUFDekIsUUFBUSxDQUFDLENBQUMsSUFBSSxLQUFLLEVBQUUsSUFBSTtJQUN6QixRQUFRLElBQUk7SUFDWixRQUFRLEdBQUcsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUM7SUFDckIsUUFBUSxNQUFNLElBQUksS0FBSyxDQUFDLHFDQUFxQyxDQUFDLENBQUM7QUFDL0Q7SUFDQSxJQUFJLElBQUksaUJBQWlCLENBQUM7QUFDMUI7SUFDQSxJQUFJLElBQUksYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUU7SUFDaEMsUUFBUSxpQkFBaUIsR0FBRyxhQUFhLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUM7SUFDaEYsS0FBSyxNQUFNO0lBQ1gsUUFBUSxpQkFBaUIsR0FBR21ELDJCQUFpQyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDcEYsS0FBSztBQUNMO0lBQ0EsSUFBSSxNQUFNLEtBQUssR0FBRyxNQUFNaEIsYUFBMEIsQ0FBQyxlQUFlLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxZQUFZLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3BHLElBQUksTUFBTWtCLGVBQXFCLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztBQUNyRDtJQUNBLElBQUksTUFBTSx3QkFBd0IsR0FBRyxNQUFNLFVBQVUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDL0Q7SUFDQSxJQUFJLElBQUlELFdBQWdCLENBQUMsTUFBTSxDQUFDLGlCQUFpQixDQUFDLEVBQUU7SUFDcEQsUUFBUSxpQkFBaUIsR0FBRyx3QkFBd0IsQ0FBQztJQUNyRCxRQUFRLGFBQWEsQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLGFBQWEsR0FBRyxpQkFBaUIsQ0FBQztJQUNoRixLQUFLO0FBQ0w7SUFDQSxJQUFJLEdBQUcsQ0FBQ0EsV0FBZ0IsQ0FBQyx3QkFBd0IsQ0FBQyxpQkFBaUIsQ0FBQztJQUNwRSxRQUFRLE1BQU0sSUFBSSxLQUFLLENBQUMseUVBQXlFLENBQUMsQ0FBQztBQUNuRztJQUNBLElBQUksTUFBTSxjQUFjLEdBQUcsSUFBSW5DLG1CQUFPLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDM0MsSUFBSSxjQUFjLENBQUMsTUFBTSxDQUFDLHdCQUF3QixDQUFDLENBQUM7QUFDcEQ7SUFDQSxJQUFJLE1BQU0sYUFBYSxHQUFHLEVBQUUsQ0FBQztJQUM3QixJQUFJLElBQUksR0FBRyxDQUFDO0lBQ1osSUFBSSxHQUFHLEdBQUcsTUFBTSxjQUFjLENBQUMsVUFBVSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLEtBQUssSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDOUYsSUFBSSxtQkFBbUIsQ0FBQyxLQUFLLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3ZDLElBQUksR0FBRyxHQUFHLE1BQU0sY0FBYyxDQUFDLFVBQVUsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksS0FBSyxVQUFVLENBQUMsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDOUYsSUFBSSxtQkFBbUIsQ0FBQyxLQUFLLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3ZDLElBQUksR0FBRyxHQUFHLE1BQU0sY0FBYyxDQUFDLFVBQVUsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksS0FBSyxVQUFVLENBQUMsQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFDaEcsSUFBSSxtQkFBbUIsQ0FBQyxPQUFPLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3pDLElBQUksR0FBRyxHQUFHLE1BQU0sY0FBYyxDQUFDLFVBQVUsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksS0FBSyxVQUFVLENBQUMsQ0FBQyxDQUFDLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDL0YsSUFBSSxtQkFBbUIsQ0FBQyxNQUFNLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3hDLElBQUksR0FBRyxHQUFHLE1BQU0sY0FBYyxDQUFDLFVBQVUsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQy9GLElBQUksbUJBQW1CLENBQUMsTUFBTSxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN4QztJQUNBLElBQUksbUJBQW1CLENBQUMsV0FBVyxHQUFHLGNBQWMsQ0FBQyxjQUFjLEVBQUUsQ0FBQztBQUN0RTtBQUNBO0lBQ0EsSUFBSSxNQUFNLE9BQU8sR0FBRyxNQUFNLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDM0U7SUFDQSxJQUFJLG1CQUFtQixDQUFDLEdBQUcsR0FBR3FDLGlCQUF1QixDQUFDLE9BQU8sRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQ2hGO0lBQ0EsSUFBSSxjQUFjLENBQUMsTUFBTSxDQUFDLElBQUksVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFDbkQsSUFBSSxNQUFNLFlBQVksR0FBRyxjQUFjLENBQUMsTUFBTSxFQUFFLENBQUM7QUFDakQ7SUFDQSxJQUFJLElBQUksTUFBTSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUNOLFVBQWUsQ0FBQyxZQUFZLEVBQUUsdUNBQXVDLENBQUMsQ0FBQyxDQUFDO0FBQ3BHO0lBQ0EsSUFBSSxJQUFJLFlBQVksRUFBRTtJQUN0QixRQUFRLE1BQU0sbUJBQW1CLEdBQUcsSUFBSS9CLG1CQUFPLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDcEQsUUFBUSxtQkFBbUIsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7QUFDakQ7SUFDQSxRQUFRLE1BQU0sV0FBVyxDQUFDLG1CQUFtQixFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLEtBQUssSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxNQUFNLENBQUMsQ0FBQztJQUNyRyxRQUFRLE1BQU0sV0FBVyxDQUFDLG1CQUFtQixFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxLQUFLLFVBQVUsT0FBTyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ3JHLFFBQVEsTUFBTSxXQUFXLENBQUMsbUJBQW1CLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEtBQUssVUFBVSxZQUFZLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDMUcsUUFBUSxNQUFNLFdBQVcsQ0FBQyxtQkFBbUIsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksS0FBSyxVQUFVLFdBQVcsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUN6RyxRQUFRLE1BQU0sV0FBVyxDQUFDLG1CQUFtQixFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsb0JBQW9CLFFBQVEsRUFBRSxNQUFNLENBQUMsQ0FBQztBQUN0RztJQUNBLFFBQVEsbUJBQW1CLENBQUMsYUFBYSxHQUFHLG1CQUFtQixDQUFDLE1BQU0sRUFBRSxDQUFDO0FBQ3pFO0lBQ0EsUUFBUSxJQUFJLE1BQU0sRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDK0IsVUFBZSxDQUFDLG1CQUFtQixDQUFDLGFBQWEsRUFBRSx1QkFBdUIsQ0FBQyxDQUFDLENBQUM7SUFDN0csS0FBSyxNQUFNO0lBQ1gsUUFBUSxtQkFBbUIsQ0FBQyxhQUFhLEdBQUcsTUFBTSxDQUFDO0lBQ25ELEtBQUs7QUFDTDtJQUNBLElBQUksYUFBYSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0FBQzVDO0lBQ0EsSUFBSSxNQUFNTyxrQkFBd0IsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLGFBQWEsQ0FBQyxDQUFDO0FBQ2hFO0lBQ0EsSUFBSSxNQUFNLFVBQVUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUM3QixJQUFJLE1BQU0sS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ3hCLElBQUksTUFBTSxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUM7QUFDeEI7SUFDQSxJQUFJLE9BQU8sbUJBQW1CLENBQUMsYUFBYSxDQUFDO0FBQzdDO0lBQ0EsSUFBSSxlQUFlLGNBQWMsQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLFdBQVcsRUFBRTtJQUNsSCxRQUFRLElBQUksWUFBWSxFQUFFO0lBQzFCLFlBQVksT0FBTyxNQUFNLDBCQUEwQixDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFDcEksU0FBUyxNQUFNO0lBQ2YsWUFBWSxPQUFPLE1BQU0sNEJBQTRCLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxXQUFXLENBQUMsQ0FBQztJQUN0SSxTQUFTO0lBQ1QsS0FBSztBQUNMO0lBQ0EsSUFBSSxlQUFlLDBCQUEwQixDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsV0FBVyxFQUFFO0FBQzlIO0lBQ0EsUUFBUSxNQUFNLENBQUMsR0FBRyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDbkMsUUFBUSxNQUFNLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUMzQixRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUM1QjtJQUNBLFFBQVEsTUFBTSxjQUFjLEdBQUcsRUFBRSxDQUFDO0FBQ2xDO0lBQ0EsUUFBUSxNQUFNcEMsaUJBQThCLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQzlELFFBQVEsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDcEQ7SUFDQSxRQUFRLGFBQWEsQ0FBQyxTQUFTLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDO0FBQzVDO0lBQ0EsUUFBUSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsSUFBSSxZQUFZLEVBQUU7SUFDckQsWUFBWSxJQUFJLE1BQU0sRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsVUFBVSxFQUFFLFdBQVcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbEYsWUFBWSxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsWUFBWSxDQUFDLENBQUM7QUFDeEQ7SUFDQSxZQUFZLE1BQU0sS0FBSyxHQUFHLE1BQU0sTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUM7SUFDckQsWUFBWSxjQUFjLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3pDO0lBQ0EsWUFBWSxNQUFNLE9BQU8sR0FBRyxNQUFNLENBQUMsQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDdkQ7SUFDQSxZQUFZLE1BQU0sSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN0QyxZQUFZLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7SUFDOUQsZ0JBQWdCLE1BQU0sRUFBRSxHQUFHLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ25ELGdCQUFnQixJQUFJLENBQUMsRUFBRSxHQUFHLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFO0lBQzVDLG9CQUFvQixNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDL0Qsb0JBQW9CLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDM0MsaUJBQWlCO0lBQ2pCLGFBQWE7SUFDYixTQUFTO0FBQ1Q7SUFDQSxRQUFRLE1BQU1DLGVBQTRCLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDakQ7SUFDQSxRQUFRLE9BQU8sY0FBYyxDQUFDO0lBQzlCLEtBQUs7QUFDTDtBQUNBO0lBQ0EsSUFBSSxlQUFlLDRCQUE0QixDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsV0FBVyxFQUFFO0FBQ2hJO0lBQ0EsUUFBUSxNQUFNLENBQUMsR0FBRyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDbkMsUUFBUSxNQUFNLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztBQUMzQjtJQUNBLFFBQVEsTUFBTSxjQUFjLEdBQUcsRUFBRSxDQUFDO0FBQ2xDO0lBQ0EsUUFBUSxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQztBQUNyRDtJQUNBLFFBQVEsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLElBQUksWUFBWSxFQUFFO0lBQ3JELFlBQVksSUFBSSxNQUFNLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLFVBQVUsRUFBRSxXQUFXLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2xGLFlBQVksTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLFlBQVksQ0FBQyxDQUFDO0FBQ3hEO0lBQ0EsWUFBWSxNQUFNLEtBQUssR0FBRyxNQUFNLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDO0lBQ3JELFlBQVksY0FBYyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUN6QztJQUNBLFlBQVksS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLG9CQUFvQixDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtJQUM5RCxnQkFBZ0IsTUFBTSxFQUFFLEdBQUcsb0JBQW9CLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbkQsZ0JBQWdCLElBQUksQ0FBQyxFQUFFLEdBQUcsQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUU7SUFDNUMsb0JBQW9CLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ3JFLG9CQUFvQixjQUFjLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzNDLGlCQUFpQjtJQUNqQixhQUFhO0lBQ2IsU0FBUztBQUNUO0lBQ0EsUUFBUSxPQUFPLGNBQWMsQ0FBQztJQUM5QixLQUFLO0FBQ0w7QUFDQTtJQUNBLElBQUksZUFBZSxXQUFXLENBQUMsbUJBQW1CLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUU7QUFDOUc7SUFDQSxRQUFRLE1BQU0sQ0FBQyxHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNuQyxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUM1QixRQUFRLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQ3BEO0lBQ0EsUUFBUSxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDO0lBQ2hDLFFBQVEsSUFBSSxDQUFDLEdBQUcsR0FBRyxhQUFhLENBQUMsU0FBUyxDQUFDLENBQUM7QUFDNUM7SUFDQSxRQUFRLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxJQUFJLFlBQVksRUFBRTtJQUNyRCxZQUFZLElBQUksTUFBTSxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxRQUFRLEVBQUUsV0FBVyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNoRixZQUFZLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxZQUFZLENBQUMsQ0FBQztBQUN4RDtJQUNBLFlBQVksTUFBTSxPQUFPLEdBQUcsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztBQUNwRDtJQUNBLFlBQVksTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQ3ZEO0lBQ0EsWUFBWSxtQkFBbUIsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDOUMsU0FBUztBQUNUO0lBQ0EsUUFBUSxJQUFJLENBQUMsR0FBRyxHQUFHLE1BQU0sQ0FBQztJQUMxQixLQUFLO0FBQ0w7SUFDQTs7SUN0T0E7SUFDQTtBQUNBO0lBQ0E7QUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0FBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtBQUNBO0lBQ0E7SUFDQTtJQUNBO0lBUUEsTUFBTUYsV0FBUyxHQUFHc0MsV0FBYyxDQUFDO0FBQ2pDO0lBQ0EsZUFBZSxrQkFBa0IsQ0FBQyxLQUFLLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUU7SUFDNUQsSUFBSSxJQUFJLEVBQUUsQ0FBQztJQUNYLElBQUksSUFBSSxHQUFHLENBQUMsSUFBSSxJQUFJLENBQUMsRUFBRTtJQUN2QixRQUFRLE1BQU0sU0FBUyxHQUFHLE1BQU1DLGFBQW1CLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxhQUFhLEVBQUUsR0FBRyxDQUFDLFVBQVUsRUFBRSxHQUFHLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztBQUNySDtJQUNBLFFBQVEsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxTQUFTLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFO0lBQ2hFLFlBQVksSUFBSSxNQUFNLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLDhEQUE4RCxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLEdBQUcsQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQ3BJLFlBQVksT0FBTyxLQUFLLENBQUM7SUFDekIsU0FBUztJQUNULFFBQVEsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxTQUFTLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFO0lBQ2xFLFlBQVksSUFBSSxNQUFNLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLCtEQUErRCxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLEdBQUcsQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQ3JJLFlBQVksT0FBTyxLQUFLLENBQUM7SUFDekIsU0FBUztJQUNULFFBQVEsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxTQUFTLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFO0lBQ3BFLFlBQVksSUFBSSxNQUFNLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLGdFQUFnRSxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLEdBQUcsQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQ3RJLFlBQVksT0FBTyxLQUFLLENBQUM7SUFDekIsU0FBUztBQUNUO0lBQ0EsUUFBUSxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUU7SUFDcEUsWUFBWSxJQUFJLE1BQU0sRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsZ0VBQWdFLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsR0FBRyxDQUFDLElBQUksSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDdEksWUFBWSxPQUFPLEtBQUssQ0FBQztJQUN6QixTQUFTO0lBQ1QsUUFBUSxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLFNBQVMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEVBQUU7SUFDdEUsWUFBWSxJQUFJLE1BQU0sRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsaUVBQWlFLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsR0FBRyxDQUFDLElBQUksSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDdkksWUFBWSxPQUFPLEtBQUssQ0FBQztJQUN6QixTQUFTO0lBQ1QsUUFBUSxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLFNBQVMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEVBQUU7SUFDeEUsWUFBWSxJQUFJLE1BQU0sRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsa0VBQWtFLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsR0FBRyxDQUFDLElBQUksSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDeEksWUFBWSxPQUFPLEtBQUssQ0FBQztJQUN6QixTQUFTO0FBQ1Q7SUFDQSxRQUFRLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRTtJQUNsRSxZQUFZLElBQUksTUFBTSxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQywrREFBK0QsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxHQUFHLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUNySSxZQUFZLE9BQU8sS0FBSyxDQUFDO0lBQ3pCLFNBQVM7SUFDVCxRQUFRLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRTtJQUNwRSxZQUFZLElBQUksTUFBTSxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxnRUFBZ0UsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxHQUFHLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUN0SSxZQUFZLE9BQU8sS0FBSyxDQUFDO0lBQ3pCLFNBQVM7SUFDVCxRQUFRLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsU0FBUyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRTtJQUN0RSxZQUFZLElBQUksTUFBTSxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxpRUFBaUUsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxHQUFHLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUN2SSxZQUFZLE9BQU8sS0FBSyxDQUFDO0lBQ3pCLFNBQVM7SUFDVCxLQUFLO0FBQ0w7SUFDQSxJQUFJLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQ0MsT0FBZSxDQUFDLEtBQUssRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDLGFBQWEsRUFBRSxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUM5SCxJQUFJLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQ0EsT0FBZSxDQUFDLEtBQUssRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDLGFBQWEsRUFBRSxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUNwSSxJQUFJLEdBQUcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQ0EsT0FBZSxDQUFDLEtBQUssRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDLGFBQWEsRUFBRSxHQUFHLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztBQUNqSTtJQUNBLElBQUksRUFBRSxHQUFHLE1BQU14QyxXQUFTLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzVHLElBQUksSUFBSSxFQUFFLEtBQUssSUFBSSxFQUFFO0lBQ3JCLFFBQVEsSUFBSSxNQUFNLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxrQ0FBa0MsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDNUUsUUFBUSxPQUFPLEtBQUssQ0FBQztJQUNyQixLQUFLO0FBQ0w7SUFDQSxJQUFJLEVBQUUsR0FBRyxNQUFNQSxXQUFTLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3BILElBQUksSUFBSSxFQUFFLEtBQUssSUFBSSxFQUFFO0lBQ3JCLFFBQVEsSUFBSSxNQUFNLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxvQ0FBb0MsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDOUUsUUFBUSxPQUFPLEtBQUssQ0FBQztJQUNyQixLQUFLO0FBQ0w7SUFDQSxJQUFJLEVBQUUsR0FBRyxNQUFNQSxXQUFTLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2hILElBQUksSUFBSSxFQUFFLEtBQUssSUFBSSxFQUFFO0lBQ3JCLFFBQVEsSUFBSSxNQUFNLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxtQ0FBbUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDN0UsUUFBUSxPQUFPLEtBQUssQ0FBQztJQUNyQixLQUFLO0FBQ0w7SUFDQSxJQUFJLEVBQUUsR0FBRyxNQUFNQSxXQUFTLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDOUYsSUFBSSxJQUFJLEVBQUUsS0FBSyxJQUFJLEVBQUU7SUFDckIsUUFBUSxJQUFJLE1BQU0sRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLDZCQUE2QixDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsK0NBQStDLENBQUMsQ0FBQztJQUN2SCxRQUFRLE9BQU8sS0FBSyxDQUFDO0lBQ3JCLEtBQUs7QUFDTDtJQUNBLElBQUksRUFBRSxHQUFHLE1BQU1BLFdBQVMsQ0FBQyxLQUFLLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM3RixJQUFJLElBQUksRUFBRSxLQUFLLElBQUksRUFBRTtJQUNyQixRQUFRLElBQUksTUFBTSxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsNkJBQTZCLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQywrQ0FBK0MsQ0FBQyxDQUFDO0lBQ3ZILFFBQVEsT0FBTyxLQUFLLENBQUM7SUFDckIsS0FBSztBQUNMO0lBQ0EsSUFBSSxFQUFFLEdBQUcsTUFBTUEsV0FBUyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxPQUFPLEVBQUUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3RHLElBQUksSUFBSSxFQUFFLEtBQUssSUFBSSxFQUFFO0lBQ3JCLFFBQVEsSUFBSSxNQUFNLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQywrQkFBK0IsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLCtDQUErQyxDQUFDLENBQUM7SUFDekgsUUFBUSxPQUFPLEtBQUssQ0FBQztJQUNyQixLQUFLO0FBQ0w7SUFDQSxJQUFJLEVBQUUsR0FBRyxNQUFNQSxXQUFTLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDbEcsSUFBSSxJQUFJLEVBQUUsS0FBSyxJQUFJLEVBQUU7SUFDckIsUUFBUSxJQUFJLE1BQU0sRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLDhCQUE4QixDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsK0NBQStDLENBQUMsQ0FBQztJQUN4SCxRQUFRLE9BQU8sS0FBSyxDQUFDO0lBQ3JCLEtBQUs7QUFDTDtJQUNBLElBQUksRUFBRSxHQUFHLE1BQU1BLFdBQVMsQ0FBQyxLQUFLLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNqRyxJQUFJLElBQUksRUFBRSxLQUFLLElBQUksRUFBRTtJQUNyQixRQUFRLElBQUksTUFBTSxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsOEJBQThCLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyw4Q0FBOEMsQ0FBQyxDQUFDO0lBQ3ZILFFBQVEsT0FBTyxLQUFLLENBQUM7SUFDckIsS0FBSztBQUNMO0lBQ0EsSUFBSSxJQUFJLE1BQU0sRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLHdCQUF3QixDQUFDLENBQUM7SUFDdEQsSUFBSSxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0FBQ0Q7SUFDZSxlQUFlLE1BQU0sQ0FBQyxXQUFXLEVBQUUsTUFBTSxFQUFFO0lBQzFELElBQUksSUFBSSxFQUFFLENBQUM7SUFDWCxJQUFJLE1BQU1ELG1CQUFPLENBQUMsS0FBSyxFQUFFLENBQUM7QUFDMUI7SUFDQSxJQUFJLE1BQU0sQ0FBQyxFQUFFLEVBQUUsUUFBUSxDQUFDLEdBQUcsTUFBTVUsV0FBd0IsQ0FBQyxXQUFXLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2xGLElBQUksTUFBTSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsYUFBYSxDQUFDLEdBQUcsTUFBTXNCLGNBQW9CLENBQUMsRUFBRSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQ25GLElBQUksTUFBTSxNQUFNLEdBQUcsTUFBTUMsaUJBQXVCLENBQUMsRUFBRSxFQUFFLEtBQUssRUFBRSxRQUFRLENBQUMsQ0FBQztBQUN0RTtJQUNBLElBQUksSUFBSSxNQUFNLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDLENBQUM7SUFDbkQ7QUFDQTtJQUNBLElBQUksSUFBSSxNQUFNLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxxQ0FBcUMsQ0FBQyxDQUFDO0lBQ3BFLElBQUksTUFBTSxtQkFBbUIsR0FBRztJQUNoQyxRQUFRLEtBQUssRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDekIsUUFBUSxLQUFLLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3pCLFFBQVEsT0FBTyxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUMzQixRQUFRLE1BQU0sRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDMUIsUUFBUSxNQUFNLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzFCLFFBQVEsYUFBYSxFQUFFQywyQkFBaUMsQ0FBQyxLQUFLLEVBQUUsYUFBYSxFQUFFLE1BQU0sQ0FBQztJQUN0RixRQUFRLFlBQVksRUFBRWxDLG1CQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFO0lBQzFDLEtBQUssQ0FBQztBQUNOO0lBQ0EsSUFBSSxJQUFJLE1BQU0sQ0FBQyxNQUFNLElBQUksQ0FBQyxFQUFFO0lBQzVCLFFBQVEsSUFBSSxNQUFNLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxnRUFBZ0UsQ0FBQyxDQUFDO0lBQ25HLFFBQVEsT0FBTyxLQUFLLENBQUM7SUFDckIsS0FBSztBQUNMO0lBQ0EsSUFBSSxJQUFJLFNBQVMsQ0FBQztJQUNsQixJQUFJLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUU7SUFDekIsUUFBUSxTQUFTLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDNUMsS0FBSyxNQUFNO0lBQ1gsUUFBUSxTQUFTLEdBQUcsbUJBQW1CLENBQUM7SUFDeEMsS0FBSztJQUNMLElBQUksTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDN0MsSUFBSSxJQUFJLE1BQU0sRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLDJCQUEyQixDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3JGLElBQUksTUFBTSxHQUFHLEdBQUcsTUFBTSxrQkFBa0IsQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUM3RSxJQUFJLElBQUksQ0FBQyxHQUFHLEVBQUUsT0FBTyxLQUFLLENBQUM7QUFDM0I7QUFDQTtJQUNBLElBQUksTUFBTSxzQkFBc0IsR0FBR0EsbUJBQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUMvQyxJQUFJLHNCQUFzQixDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLENBQUM7QUFDekQ7SUFDQTtBQUNBO0lBQ0E7QUFDQTtJQUNBO0lBQ0EsSUFBSSxJQUFJLE1BQU0sRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLG9DQUFvQyxDQUFDLENBQUM7SUFDbkUsSUFBSSxNQUFNLEtBQUssR0FBRyxNQUFNLGNBQWMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUMsSUFBSSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUMzRixJQUFJLEVBQUUsR0FBRyxNQUFNQyxXQUFTLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxFQUFFLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDaEYsSUFBSSxJQUFJLEVBQUUsS0FBSyxJQUFJLEVBQUU7SUFDckIsUUFBUSxJQUFJLE1BQU0sRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLG9DQUFvQyxDQUFDLENBQUM7SUFDdkUsUUFBUSxPQUFPLEtBQUssQ0FBQztJQUNyQixLQUFLO0lBQ0wsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFO0lBQzNELFFBQVEsSUFBSSxNQUFNLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyx1REFBdUQsQ0FBQyxDQUFDO0lBQzFGLFFBQVEsT0FBTyxLQUFLLENBQUM7SUFDckIsS0FBSztJQUNMLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFO0lBQy9ELFFBQVEsSUFBSSxNQUFNLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxxRkFBcUYsQ0FBQyxDQUFDO0lBQ3hILFFBQVEsT0FBTyxLQUFLLENBQUM7SUFDckIsS0FBSztBQUNMO0lBQ0E7QUFDQTtJQUNBO0lBQ0EsSUFBSSxJQUFJLE1BQU0sRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLG9DQUFvQyxDQUFDLENBQUM7SUFDbkUsSUFBSSxNQUFNLEtBQUssR0FBRyxNQUFNLGNBQWMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxDQUFDLElBQUksS0FBSyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDO0lBQ3RGLElBQUksRUFBRSxHQUFHLE1BQU1BLFdBQVMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsUUFBUSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsRUFBRSxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNoRixJQUFJLElBQUksRUFBRSxLQUFLLElBQUksRUFBRTtJQUNyQixRQUFRLElBQUksTUFBTSxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsb0NBQW9DLENBQUMsQ0FBQztJQUN2RSxRQUFRLE9BQU8sS0FBSyxDQUFDO0lBQ3JCLEtBQUs7SUFDTCxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUU7SUFDM0QsUUFBUSxJQUFJLE1BQU0sRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLHVEQUF1RCxDQUFDLENBQUM7SUFDMUYsUUFBUSxPQUFPLEtBQUssQ0FBQztJQUNyQixLQUFLO0lBQ0wsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUU7SUFDL0QsUUFBUSxJQUFJLE1BQU0sRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLHFGQUFxRixDQUFDLENBQUM7SUFDeEgsUUFBUSxPQUFPLEtBQUssQ0FBQztJQUNyQixLQUFLO0FBQ0w7SUFDQTtJQUNBLElBQUksSUFBSSxNQUFNLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQywwQ0FBMEMsQ0FBQyxDQUFDO0lBQ3pFLElBQUksTUFBTSxXQUFXLEdBQUcsTUFBTSxjQUFjLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxZQUFZLEVBQUUsQ0FBQyxJQUFJLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQzdGLElBQUksRUFBRSxHQUFHLE1BQU1BLFdBQVMsQ0FBQyxLQUFLLEVBQUUsV0FBVyxDQUFDLEVBQUUsRUFBRSxXQUFXLENBQUMsRUFBRSxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM1RixJQUFJLElBQUksRUFBRSxLQUFLLElBQUksRUFBRTtJQUNyQixRQUFRLElBQUksTUFBTSxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMseUNBQXlDLENBQUMsQ0FBQztJQUM1RSxRQUFRLE9BQU8sS0FBSyxDQUFDO0lBQ3JCLEtBQUs7SUFDTCxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLFdBQVcsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRTtJQUN2RSxRQUFRLElBQUksTUFBTSxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMscUdBQXFHLENBQUMsQ0FBQztJQUN4SSxRQUFRLE9BQU8sS0FBSyxDQUFDO0lBQ3JCLEtBQUs7QUFDTDtJQUNBO0lBQ0EsSUFBSSxJQUFJLE1BQU0sRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLHlDQUF5QyxDQUFDLENBQUM7SUFDeEUsSUFBSSxNQUFNLFVBQVUsR0FBRyxNQUFNLGNBQWMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxDQUFDLElBQUksS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDM0YsSUFBSSxFQUFFLEdBQUcsTUFBTUEsV0FBUyxDQUFDLEtBQUssRUFBRSxVQUFVLENBQUMsRUFBRSxFQUFFLFVBQVUsQ0FBQyxFQUFFLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzFGLElBQUksSUFBSSxFQUFFLEtBQUssSUFBSSxFQUFFO0lBQ3JCLFFBQVEsSUFBSSxNQUFNLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyx3Q0FBd0MsQ0FBQyxDQUFDO0lBQzNFLFFBQVEsT0FBTyxLQUFLLENBQUM7SUFDckIsS0FBSztJQUNMLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsVUFBVSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFO0lBQ3JFLFFBQVEsSUFBSSxNQUFNLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxtR0FBbUcsQ0FBQyxDQUFDO0lBQ3RJLFFBQVEsT0FBTyxLQUFLLENBQUM7SUFDckIsS0FBSztBQUNMO0lBQ0E7SUFDQSxJQUFJLE1BQU0sTUFBTSxHQUFHLE1BQU0sb0JBQW9CLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDdEQsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsRUFBRTtJQUMvQyxRQUFRLElBQUksTUFBTSxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMscUZBQXFGLENBQUMsQ0FBQztJQUN4SCxRQUFRLE9BQU8sS0FBSyxDQUFDO0lBQ3JCLEtBQUs7QUFDTDtBQUNBO0lBQ0EsSUFBSSxNQUFNLG9CQUFvQixHQUFHLHNCQUFzQixDQUFDLE1BQU0sRUFBRSxDQUFDO0FBQ2pFO0lBQ0E7SUFDQSxJQUFJLElBQUksS0FBSyxJQUFJLGFBQWEsRUFBRTtJQUNoQyxRQUFRLElBQUksQ0FBQ2tDLFdBQWdCLENBQUMsb0JBQW9CLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxFQUFFO0lBQzVFLFlBQVksSUFBSSxNQUFNLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQywyR0FBMkcsQ0FBQyxDQUFDO0lBQ2xKLFlBQVksT0FBTyxLQUFLLENBQUM7SUFDekIsU0FBUztJQUNULEtBQUs7QUFDTDtJQUNBLElBQUksSUFBSSxNQUFNLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQ0osVUFBZSxDQUFDLG9CQUFvQixFQUFFLHVCQUF1QixDQUFDLENBQUMsQ0FBQztBQUM1RjtJQUNBO0FBQ0E7SUFDQSxJQUFJLGlCQUFpQixDQUFDLFFBQVEsRUFBRSxTQUFTLENBQUMsQ0FBQztJQUMzQyxJQUFJLEtBQUssSUFBSSxDQUFDLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtJQUM3QyxRQUFRLE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNuQyxRQUFRLE1BQU0sU0FBUyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLG1CQUFtQixDQUFDO0lBQ3JFLFFBQVEsTUFBTSxHQUFHLEdBQUcsTUFBTSxrQkFBa0IsQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUNqRixRQUFRLElBQUksQ0FBQyxHQUFHLEVBQUUsT0FBTyxLQUFLLENBQUM7SUFDL0IsUUFBUSxpQkFBaUIsQ0FBQyxRQUFRLEVBQUUsU0FBaUIsQ0FBQyxDQUFDO0lBQ3ZELEtBQUs7SUFDTCxJQUFJLElBQUksTUFBTSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsdURBQXVELENBQUMsQ0FBQztBQUNyRjtJQUNBLElBQUksSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFO0lBQ2xGLFFBQVEsSUFBSSxNQUFNLEVBQUUsTUFBTSxDQUFDLElBQUk7SUFDL0IsWUFBWSx3RUFBd0U7SUFDcEYsWUFBWSxrR0FBa0c7SUFDOUcsU0FBUyxDQUFDO0lBQ1YsS0FBSyxNQUFNO0lBQ1gsUUFBUSxJQUFJLEdBQUcsQ0FBQztJQUNoQixRQUFRLEdBQUcsR0FBRyxNQUFNLHlCQUF5QixDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLE9BQU8sRUFBRSxNQUFNLENBQUMsQ0FBQztJQUM1RSxRQUFRLElBQUksQ0FBQyxHQUFHLEVBQUUsT0FBTyxLQUFLLENBQUM7SUFDL0IsUUFBUSxHQUFHLEdBQUcsTUFBTSx5QkFBeUIsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxPQUFPLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDNUUsUUFBUSxJQUFJLENBQUMsR0FBRyxFQUFFLE9BQU8sS0FBSyxDQUFDO0lBQy9CLFFBQVEsR0FBRyxHQUFHLE1BQU0seUJBQXlCLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsWUFBWSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ2pGLFFBQVEsSUFBSSxDQUFDLEdBQUcsRUFBRSxPQUFPLEtBQUssQ0FBQztJQUMvQixRQUFRLEdBQUcsR0FBRyxNQUFNLHlCQUF5QixDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLFdBQVcsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUNoRixRQUFRLElBQUksQ0FBQyxHQUFHLEVBQUUsT0FBTyxLQUFLLENBQUM7SUFDL0IsS0FBSztBQUNMO0lBQ0EsSUFBSSxNQUFNLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztBQUNyQjtJQUNBLElBQUksSUFBSSxNQUFNLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0FBQ2pEO0lBQ0EsSUFBSSxPQUFPLElBQUksQ0FBQztBQUNoQjtJQUNBLElBQUksU0FBUyxpQkFBaUIsQ0FBQyxRQUFRLEVBQUUsU0FBUyxFQUFFO0lBQ3BELFFBQVEsSUFBSSxDQUFDLE1BQU0sRUFBRSxPQUFPO0lBQzVCLFFBQVEsTUFBTSxDQUFDLElBQUksQ0FBQyx1REFBdUQsQ0FBQyxDQUFDO0lBQzdFLFFBQVEsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLGNBQWMsRUFBRSxRQUFRLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxRQUFRLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMzRTtJQUNBLFFBQVEsTUFBTSxDQUFDLElBQUksQ0FBQ0EsVUFBZSxDQUFDLFFBQVEsQ0FBQyxhQUFhLEVBQUUsa0JBQWtCLENBQUMsQ0FBQyxDQUFDO0FBQ2pGO0lBQ0EsUUFBUSxNQUFNLEtBQUssSUFBSSxJQUFJLFVBQVUsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzNFLFFBQVFXLGVBQXFCLENBQUMsS0FBSyxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsUUFBUSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztBQUNwRTtJQUNBLFFBQVEsTUFBTSxjQUFjLEdBQUcxQyxtQkFBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzNDLFFBQVEsY0FBYyxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDNUQsUUFBUSxjQUFjLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3JDLFFBQVEsTUFBTSxZQUFZLEdBQUcsY0FBYyxDQUFDLE1BQU0sRUFBRSxDQUFDO0FBQ3JEO0lBQ0EsUUFBUSxNQUFNLENBQUMsSUFBSSxDQUFDK0IsVUFBZSxDQUFDLFlBQVksRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDLENBQUM7QUFDckU7SUFDQSxRQUFRLE1BQU0sQ0FBQyxJQUFJLENBQUNBLFVBQWUsQ0FBQyxTQUFTLENBQUMsYUFBYSxFQUFFLGdCQUFnQixDQUFDLENBQUMsQ0FBQztBQUNoRjtJQUNBLFFBQVEsSUFBSSxRQUFRLENBQUMsSUFBSSxJQUFJLENBQUMsRUFBRTtJQUNoQyxZQUFZLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxrQkFBa0IsRUFBRVksYUFBa0IsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDeEYsWUFBWSxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsdUJBQXVCLEVBQUUsUUFBUSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQy9FLFNBQVM7QUFDVDtJQUNBLEtBQUs7QUFDTDtJQUNBLElBQUksZUFBZSxvQkFBb0IsQ0FBQyxNQUFNLEVBQUU7SUFDaEQsUUFBUSxNQUFNLENBQUMsR0FBRyxLQUFLLENBQUMsRUFBRSxDQUFDO0lBQzNCLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzVCLFFBQVEsTUFBTSxNQUFNLEdBQUcsSUFBSSxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDMUM7SUFDQSxRQUFRLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEdBQUc7SUFDM0IsWUFBWSxNQUFNLENBQUMsS0FBSyxDQUFDLDRCQUE0QixDQUFDLENBQUM7SUFDdkQsWUFBWSxNQUFNLElBQUksS0FBSyxDQUFDLDRCQUE0QixDQUFDLENBQUM7SUFDMUQsU0FBUztJQUNULFFBQVEsSUFBSSxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRTtJQUNsQyxZQUFZLE1BQU0sQ0FBQyxLQUFLLENBQUMsNEJBQTRCLENBQUMsQ0FBQztJQUN2RCxZQUFZLE1BQU0sSUFBSSxLQUFLLENBQUMsdUNBQXVDLENBQUMsQ0FBQztJQUNyRSxTQUFTO0lBQ1QsUUFBUSxFQUFFLENBQUMsR0FBRyxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDbEM7SUFDQSxRQUFRLE1BQU0sSUFBSSxHQUFHLE1BQU0sRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUN2QyxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDckM7SUFDQSxRQUFRLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzFDLFFBQVEsc0JBQXNCLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQzlDO0lBQ0EsUUFBUSxPQUFPLENBQUMsQ0FBQztJQUNqQixLQUFLO0FBQ0w7SUFDQSxJQUFJLGVBQWUsY0FBYyxDQUFDLFNBQVMsRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLEVBQUU7SUFDNUcsUUFBUSxNQUFNLGNBQWMsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDO0lBQ3JDLFFBQVEsTUFBTSxDQUFDLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ25DLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzVCLFFBQVEsTUFBTXBDLHNCQUFtQyxDQUFDLEVBQUUsRUFBRSxRQUFRLEVBQUUsU0FBUyxDQUFDLENBQUM7QUFDM0U7SUFDQSxRQUFRLE1BQU0sY0FBYyxHQUFHLEVBQUUsQ0FBQztBQUNsQztJQUNBLFFBQVEsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUN4QixRQUFRLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUM7QUFDeEI7SUFDQSxRQUFRLElBQUksUUFBUSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUM7QUFDOUI7SUFDQSxRQUFRLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxJQUFJLGNBQWMsRUFBRTtJQUN0RCxZQUFZLElBQUksTUFBTSxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxrQkFBa0IsRUFBRSxXQUFXLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDM0YsWUFBWSxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sR0FBRyxDQUFDLEVBQUUsY0FBYyxDQUFDLENBQUM7SUFDNUQsWUFBWSxNQUFNLEtBQUssR0FBRyxNQUFNLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQzlDO0lBQ0EsWUFBWSxNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDdEQsWUFBWSxzQkFBc0IsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDbEQ7SUFDQSxZQUFZLE1BQU0sT0FBTyxHQUFHcUMsY0FBbUIsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDekQ7SUFDQSxZQUFZLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRTtJQUNyQixnQkFBZ0IsTUFBTSxTQUFTLEdBQUcsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDekQsZ0JBQWdCLE1BQU0sQ0FBQyxHQUFHQyxZQUFpQixDQUFDRCxjQUFtQixDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ3ZFO0lBQ0EsZ0JBQWdCLEVBQUUsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsV0FBVyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzNELGdCQUFnQixFQUFFLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM1RCxhQUFhO0FBQ2I7SUFDQSxZQUFZLE1BQU0sRUFBRSxHQUFHLE1BQU0sQ0FBQyxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDakYsWUFBWSxNQUFNLEVBQUUsR0FBRyxNQUFNLENBQUMsQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQztBQUN4RTtJQUNBLFlBQVksRUFBRSxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQy9CLFlBQVksRUFBRSxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQy9CO0lBQ0EsWUFBWSxRQUFRLEdBQUcsQ0FBQyxDQUFDLFVBQVUsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQ3REO0lBQ0EsWUFBWSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsb0JBQW9CLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO0lBQzlELGdCQUFnQixNQUFNLEVBQUUsR0FBRyxvQkFBb0IsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNuRCxnQkFBZ0IsSUFBSSxDQUFDLEVBQUUsR0FBRyxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRTtJQUM1QyxvQkFBb0IsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQzdELG9CQUFvQixjQUFjLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzNDLGlCQUFpQjtJQUNqQixhQUFhO0FBQ2I7SUFDQSxTQUFTO0lBQ1QsUUFBUSxNQUFNcEMsY0FBMkIsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUM5QztJQUNBLFFBQVEsT0FBTztJQUNmLFlBQVksRUFBRSxFQUFFLEVBQUU7SUFDbEIsWUFBWSxFQUFFLEVBQUUsRUFBRTtJQUNsQixZQUFZLGNBQWMsRUFBRSxjQUFjO0lBQzFDLFNBQVMsQ0FBQztBQUNWO0lBQ0EsS0FBSztBQUNMO0lBQ0EsSUFBSSxlQUFlLHlCQUF5QixDQUFDLEtBQUssRUFBRSxVQUFVLEVBQUUsZUFBZSxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUU7QUFDdEc7SUFDQSxRQUFRLElBQUksTUFBTSxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxtQ0FBbUMsRUFBRSxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUN6RixRQUFRLE1BQU0sQ0FBQyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMvQixRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUM1QjtJQUNBLFFBQVEsTUFBTSxJQUFJLEVBQUUsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDakMsUUFBUSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO0lBQ2hDLFlBQVksSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHcUMsWUFBaUIsQ0FBQ0QsY0FBbUIsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNuRSxTQUFTO0FBQ1Q7SUFDQSxRQUFRLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLEVBQUUsQ0FBQyxHQUFHLEVBQUU7SUFDdkMsWUFBWSxNQUFNLEdBQUcsR0FBRyxNQUFNLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM3QyxZQUFZLElBQUksQ0FBQyxHQUFHLEVBQUUsT0FBTyxLQUFLLENBQUM7SUFDbkMsU0FBUztBQUNUO0lBQ0EsUUFBUSxJQUFJLFVBQVUsSUFBSSxDQUFDLEVBQUU7SUFDN0IsWUFBWSxNQUFNLEdBQUcsR0FBRyxNQUFNLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbkQsWUFBWSxJQUFJLENBQUMsR0FBRyxFQUFFLE9BQU8sS0FBSyxDQUFDO0lBQ25DLFNBQVM7QUFDVDtJQUNBLFFBQVEsT0FBTyxJQUFJLENBQUM7QUFDcEI7SUFDQSxRQUFRLGVBQWUsV0FBVyxDQUFDLENBQUMsRUFBRTtJQUN0QyxZQUFZLElBQUksTUFBTSxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDdEQsWUFBWSxNQUFNLEdBQUcsR0FBRyxLQUFLLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUNwQyxZQUFZLE1BQU0sT0FBTyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbkMsWUFBWSxJQUFJLE1BQU0sR0FBRyxJQUFJLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNsRCxZQUFZLElBQUksS0FBSyxDQUFDO0FBQ3RCO0lBQ0EsWUFBWSxJQUFJLEdBQUcsR0FBRyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUN2QztJQUNBLFlBQVksSUFBSSxNQUFNLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLDhCQUE4QixFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQzlFLFlBQVksS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLEVBQUUsRUFBRTtJQUMxQyxnQkFBZ0IsSUFBSSxDQUFDLENBQUMsSUFBSSxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUU7SUFDdEQsb0JBQW9CLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDbEMsaUJBQWlCLE1BQU07SUFDdkIsb0JBQW9CLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDOUMsaUJBQWlCO0lBQ2pCLGFBQWE7QUFDYjtJQUNBLFlBQVksTUFBTSxHQUFHLElBQUksVUFBVSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLFVBQVUsRUFBRSxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7QUFDekY7SUFDQSxZQUFZLElBQUksTUFBTSxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUNyRSxZQUFZLE1BQU1yQyxzQkFBbUMsQ0FBQyxFQUFFLEVBQUUsUUFBUSxFQUFFLFVBQVUsQ0FBQyxDQUFDO0lBQ2hGLFlBQVksS0FBSyxHQUFHLElBQUksU0FBUyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUM5QyxZQUFZLElBQUksQ0FBQyxJQUFJLEtBQUssQ0FBQyxDQUFDLEVBQUU7SUFDOUIsZ0JBQWdCLE1BQU0sRUFBRSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNoRSxnQkFBZ0IsS0FBSyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLFVBQVUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDL0QsYUFBYSxNQUFNO0lBQ25CLGdCQUFnQixNQUFNLEVBQUUsQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLENBQUMsRUFBRSxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDNUQsYUFBYTtJQUNiLFlBQVksTUFBTUMsY0FBMkIsQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDeEQ7SUFDQSxZQUFZLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxDQUFDLGNBQWMsQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxXQUFXLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ2hHO0lBQ0EsWUFBWSxNQUFNLEdBQUcsSUFBSSxTQUFTLENBQUMsT0FBTyxHQUFHLEdBQUcsQ0FBQyxDQUFDO0FBQ2xEO0lBQ0EsWUFBWSxHQUFHLEdBQUcsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDbkM7SUFDQSxZQUFZLE1BQU0sS0FBSyxHQUFHLElBQUksVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzVDLFlBQVksTUFBTSxNQUFNLEdBQUcsSUFBSSxRQUFRLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ3REO0lBQ0EsWUFBWSxJQUFJLE1BQU0sRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsOEJBQThCLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDOUUsWUFBWSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsRUFBRSxFQUFFO0lBQzFDLGdCQUFnQixJQUFJLENBQUMsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRTtJQUN4RCxvQkFBb0IsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLE9BQU8sRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQzdELG9CQUFvQixNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDN0MsaUJBQWlCO0lBQ2pCLGFBQWE7QUFDYjtJQUNBLFlBQVksSUFBSSxNQUFNLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLGtCQUFrQixFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ2xFLFlBQVksTUFBTSxHQUFHLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUM5RCxZQUFZLElBQUksTUFBTSxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDcEQsWUFBWSxNQUFNLEdBQUcsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNoRCxZQUFZLElBQUksTUFBTSxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxvQkFBb0IsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUNwRSxZQUFZLE1BQU0sR0FBRyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUMsbUJBQW1CLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDaEU7SUFDQSxZQUFZLElBQUksTUFBTSxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyx1QkFBdUIsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUN2RSxZQUFZLE1BQU1ELHNCQUFtQyxDQUFDLEVBQUUsRUFBRSxRQUFRLEVBQUUsZUFBZSxDQUFDLENBQUM7SUFDckYsWUFBWSxFQUFFLENBQUMsR0FBRyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDdEMsWUFBWSxNQUFNLEVBQUUsQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLENBQUMsRUFBRSxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDeEQsWUFBWSxNQUFNQyxjQUEyQixDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUN4RDtJQUNBLFlBQVksTUFBTSxXQUFXLEdBQUcsTUFBTSxDQUFDLENBQUMsY0FBYyxDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLFdBQVcsR0FBRyxHQUFHLEdBQUcsQ0FBQyxHQUFHLGNBQWMsQ0FBQyxDQUFDO0FBQ3RIO0lBQ0EsWUFBWSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxNQUFNLEVBQUUsV0FBVyxDQUFDLEVBQUU7SUFDNUMsZ0JBQWdCLElBQUksTUFBTSxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsc0RBQXNELENBQUMsQ0FBQztJQUNqRyxnQkFBZ0IsT0FBTyxLQUFLLENBQUM7SUFDN0IsYUFBYTtBQUNiO0lBQ0EsWUFBWSxPQUFPLElBQUksQ0FBQztJQUN4QixTQUFTO0lBQ1QsS0FBSztJQUNMOztJQzdlQTtJQUNBO0FBQ0E7SUFDQTtBQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7QUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0FBQ0E7SUFDQTtJQUNBO0lBQ0E7QUFHQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtBQUNBO0lBQ08sZUFBZSxpQkFBaUIsQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUU7SUFDOUgsSUFBSSxNQUFNLGNBQWMsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ25DLElBQUksTUFBTSxDQUFDLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQy9CLElBQUksTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3hCLElBQUksTUFBTSxPQUFPLEdBQUcsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksR0FBRyxFQUFFLENBQUM7QUFDckQ7SUFDQSxJQUFJLE1BQU1ELHNCQUFtQyxDQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDMUUsSUFBSSxNQUFNTCxpQkFBOEIsQ0FBQyxLQUFLLEVBQUUsU0FBUyxDQUFDLENBQUM7QUFDM0Q7SUFDQSxJQUFJLElBQUksQ0FBQyxHQUFHLEtBQUssQ0FBQztJQUNsQixJQUFJLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxJQUFJLGNBQWMsRUFBRTtJQUNsRCxRQUFRLElBQUksTUFBTSxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxjQUFjLEVBQUUsV0FBVyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNsRixRQUFRLE1BQU0sQ0FBQyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxHQUFHLENBQUMsRUFBRSxjQUFjLENBQUMsQ0FBQztJQUN2RCxRQUFRLElBQUksSUFBSSxDQUFDO0lBQ2pCLFFBQVEsSUFBSSxHQUFHLE1BQU0sS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDdEMsUUFBUSxJQUFJLEdBQUcsTUFBTSxDQUFDLENBQUMsYUFBYSxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDbkQsUUFBUSxNQUFNLEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDaEMsUUFBUSxDQUFDLEdBQUcsS0FBSyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2xELEtBQUs7QUFDTDtJQUNBLElBQUksTUFBTUMsZUFBNEIsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM5QyxJQUFJLE1BQU1LLGNBQTJCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDN0MsQ0FBQztBQUNEO0FBQ0E7QUFDQTtJQUNPLGVBQWUsMEJBQTBCLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxjQUFjLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRTtJQUN0SixJQUFJLE1BQU0sQ0FBQyxHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUMvQixJQUFJLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN4QixJQUFJLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQy9DLElBQUksSUFBSSxDQUFDLEdBQUcsS0FBSyxDQUFDO0lBQ2xCLElBQUksS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sR0FBRyxDQUFDLEdBQUcsU0FBUyxFQUFFO0lBQzlDLFFBQVEsSUFBSSxNQUFNLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLGFBQWEsRUFBRSxXQUFXLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2pGLFFBQVEsTUFBTSxDQUFDLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLFNBQVMsRUFBRSxDQUFDO0lBQ2pELFFBQVEsTUFBTSxPQUFPLEdBQUcsTUFBTSxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztJQUNqRCxRQUFRLE1BQU0sU0FBUyxHQUFHLE1BQU0sQ0FBQyxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN2RCxRQUFRLE1BQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQyxDQUFDLGFBQWEsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ3BFLFFBQVEsSUFBSSxPQUFPLENBQUM7SUFDcEIsUUFBUSxJQUFJLFNBQVMsSUFBSSxZQUFZLEVBQUU7SUFDdkMsWUFBWSxPQUFPLEdBQUcsTUFBTSxDQUFDLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ3RELFNBQVMsTUFBTTtJQUNmLFlBQVksT0FBTyxHQUFHLE1BQU0sQ0FBQyxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUN0RCxTQUFTO0FBQ1Q7SUFDQSxRQUFRLElBQUksY0FBYyxFQUFFLGNBQWMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDM0QsUUFBUSxNQUFNLEtBQUssQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDbkMsUUFBUSxDQUFDLEdBQUcsS0FBSyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2xELEtBQUs7SUFDTDs7SUM1RUE7SUFDQTtBQUNBO0lBQ0E7QUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0FBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtBQUNBO0lBQ0E7SUFDQTtJQUNBO0FBMEJBO0lBQ2UsZUFBZSxtQkFBbUIsQ0FBQyxLQUFLLEVBQUUsaUJBQWlCLEVBQUUsZ0JBQWdCLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRTtJQUMvRyxJQUFJLE1BQU1SLG1CQUFPLENBQUMsS0FBSyxFQUFFLENBQUM7QUFDMUI7SUFDQSxJQUFJLE1BQU0sTUFBTSxHQUFHLE1BQU1qQixZQUFxQixDQUFDLGlCQUFpQixDQUFDLENBQUM7QUFDbEU7QUFDQTtJQUNBLElBQUksTUFBTSxHQUFHLEdBQUcsS0FBSyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNqQyxJQUFJLE1BQU0sR0FBRyxHQUFHLEtBQUssQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDakMsSUFBSSxNQUFNLFVBQVUsR0FBRyxDQUFDLE1BQU0sQ0FBQyxTQUFTLEdBQUcsR0FBRyxHQUFHLEVBQUUsR0FBRyxHQUFHLEtBQUssQ0FBQyxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQztJQUMzRSxJQUFJLElBQUksQ0FBQyxHQUFHLFVBQVUsQ0FBQztJQUN2QixJQUFJLElBQUksS0FBSyxHQUFHLENBQUMsQ0FBQztJQUNsQixJQUFJLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRTtJQUNoQixRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2pCLFFBQVEsS0FBSyxJQUFJLENBQUMsQ0FBQztJQUNuQixLQUFLO0FBQ0w7SUFDQSxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssSUFBSSxVQUFVLEVBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0lBQ3ZFLElBQUksSUFBSSxNQUFNLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUMxRDtJQUNBLElBQUksTUFBTSxHQUFHLEdBQUcsTUFBTStELFlBQWlCLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDakQ7SUFDQSxJQUFJLE1BQU0sSUFBSSxHQUFHLE1BQU05RCxjQUF1QixDQUFDLGdCQUFnQixDQUFDLENBQUM7QUFDakU7SUFDQTtJQUNBLElBQUksTUFBTSxlQUFlLEdBQUdnQixtQkFBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3hDLElBQUksS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUUsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxRQUFRLEVBQUU7SUFDM0QsUUFBUSxJQUFJLE1BQU0sRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQy9FLFFBQVEsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsU0FBUyxHQUFHLENBQUMsRUFBRSxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDbEUsUUFBUSxNQUFNLElBQUksR0FBRyxNQUFNLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDMUMsUUFBUSxlQUFlLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3JDLEtBQUs7QUFDTDtJQUNBLElBQUksTUFBTSxXQUFXLEdBQUcsTUFBTSxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNqRCxJQUFJLElBQUksTUFBTSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMrQixVQUFlLENBQUMsV0FBVyxFQUFFLGtDQUFrQyxDQUFDLENBQUMsQ0FBQztBQUM5RjtJQUNBLElBQUksTUFBTSxhQUFhLEdBQUcsZUFBZSxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQ25ELElBQUksSUFBSSxNQUFNLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQ0EsVUFBZSxDQUFDLGFBQWEsRUFBRSwwQkFBMEIsQ0FBQyxDQUFDLENBQUM7QUFDeEY7SUFDQSxJQUFJLE1BQU0sR0FBRyxHQUFHSCxhQUFxQixDQUFDLEtBQUssRUFBRSxhQUFhLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFDakU7SUFDQSxJQUFJLElBQUksTUFBTSxFQUFFO0lBQ2hCLFFBQVEsQ0FBQyxLQUFLLEVBQUUsT0FBTyxFQUFFLE1BQU0sQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsS0FBSztJQUNqRCxZQUFZLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLFNBQVMsR0FBRyxLQUFLLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDN0UsWUFBWSxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxVQUFVLEdBQUcsS0FBSyxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQy9FLFlBQVksTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsVUFBVSxHQUFHLEtBQUssQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUMvRSxZQUFZLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLFdBQVcsR0FBRyxLQUFLLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDakYsWUFBWSxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzdCLFNBQVMsQ0FBQyxDQUFDO0lBQ1gsS0FBSztBQUNMO0lBQ0EsSUFBSSxNQUFNLGNBQWMsR0FBRzVCLG1CQUFPLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDdkM7SUFDQSxJQUFJLE1BQU0sSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUNwQyxJQUFJLGNBQWMsQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7QUFDekM7SUFDQSxJQUFJLE1BQU0sMEJBQTBCLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxjQUFjLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLEdBQUcsTUFBTSxHQUFHLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxZQUFZLEVBQUUsT0FBTyxPQUFPLE1BQU0sRUFBRSxDQUFDO0lBQ3pLLElBQUksTUFBTSwwQkFBMEIsQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLGNBQWMsRUFBRSxLQUFLLEVBQUUsSUFBSSxHQUFHLENBQUMsSUFBSSxLQUFLLE9BQU8sS0FBSyxDQUFDLEVBQUUsQ0FBQyxHQUFHLE1BQU0sR0FBRyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsWUFBWSxFQUFFLE9BQU8sT0FBTyxNQUFNLEVBQUUsQ0FBQztJQUN6SyxJQUFJLE1BQU0sMEJBQTBCLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxjQUFjLEVBQUUsS0FBSyxFQUFFLElBQUksR0FBRyxDQUFDLElBQUksS0FBSyxPQUFPLEdBQUcsQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLENBQUM7SUFDekssSUFBSSxNQUFNLDBCQUEwQixDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsY0FBYyxFQUFFLEtBQUssRUFBRSxJQUFJLEdBQUcsQ0FBQyxJQUFJLEtBQUssT0FBTyxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxZQUFZLEVBQUUsV0FBVyxHQUFHLE1BQU0sRUFBRSxDQUFDO0lBQ3pLLElBQUksTUFBTSwwQkFBMEIsQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLGNBQWMsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUMsZUFBZSxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxZQUFZLEVBQUUsV0FBVyxHQUFHLE1BQU0sRUFBRSxDQUFDO0FBQ3ZLO0lBQ0E7SUFDQSxJQUFJLE1BQU0sT0FBTyxHQUFHLElBQUksVUFBVSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3BFLElBQUkwQyxlQUFxQixDQUFDLE9BQU8sRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUN6RCxJQUFJLE1BQU0sSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUM5QixJQUFJLGNBQWMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDbkMsSUFBSSxNQUFNLFlBQVksR0FBRyxjQUFjLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDakQsSUFBSSxJQUFJLE1BQU0sRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDWCxVQUFlLENBQUMsWUFBWSxFQUFFLDhCQUE4QixDQUFDLENBQUMsQ0FBQztBQUMzRjtJQUNBLElBQUksTUFBTSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDdkIsSUFBSSxNQUFNLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUN6Qjs7SUNuSEE7SUFDQTtBQUNBO0lBQ0E7QUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0FBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtBQUNBO0lBQ0E7SUFDQTtJQUNBO0FBTUE7SUFDZSxlQUFlZ0IsUUFBTSxDQUFDLGVBQWUsRUFBRSxlQUFlLEVBQUUsSUFBSSxHQUFHLGFBQWEsQ0FBQyxnQkFBZ0IsRUFBRSxNQUFNLEVBQUU7SUFDdEgsSUFBSSxNQUFNLFVBQVUsR0FBR0MsYUFBa0IsQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUN6RCxJQUFJLE9BQU8sQ0FBQyxVQUFVLENBQUMsVUFBVSxJQUFJLENBQUM7SUFDdEMsWUFBWSxVQUFVLENBQUMsVUFBVSxDQUFDLENBQUMsR0FBRyxhQUFhLENBQUMsTUFBTSxDQUFDO0lBQzNELElBQUk7SUFDSixRQUFRLElBQUksTUFBTSxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsZ0VBQWdFLENBQUMsQ0FBQztJQUNuRyxRQUFRLE9BQU8sS0FBSyxDQUFDO0lBQ3JCLEtBQUs7SUFDTCxJQUFJLElBQUksVUFBVSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUU7SUFDaEMsUUFBUSxJQUFJLE1BQU0sRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLDRDQUE0QyxDQUFDLENBQUM7SUFDL0UsUUFBUSxPQUFPLEtBQUssQ0FBQztJQUNyQixLQUFLO0FBQ0w7SUFDQSxJQUFJLGdCQUFnQixHQUFHLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQ2xELElBQUksSUFBSSxDQUFDLGdCQUFnQixDQUFDLEVBQUUsSUFBSSxnQkFBZ0IsQ0FBQyxFQUFFLENBQUMsRUFBRTtJQUN0RCxRQUFRLElBQUksTUFBTSxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsdURBQXVELENBQUMsQ0FBQztJQUMxRixRQUFRLE9BQU8sS0FBSyxDQUFDO0lBQ3JCLEtBQUs7QUFDTDtBQUNBO0lBQ0EsSUFBSSxNQUFNaEQsbUJBQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQztBQUMxQjtJQUNBLElBQUksTUFBTSxDQUFDLEVBQUUsRUFBRSxLQUFLLEVBQUUsUUFBUSxDQUFDLEdBQUcsTUFBTVUsV0FBd0IsQ0FBQyxlQUFlLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzdGLElBQUksTUFBTSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsYUFBYSxDQUFDLEdBQUcsTUFBTXNCLGNBQW9CLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQ3RGLElBQUksSUFBSSxLQUFLLElBQUksYUFBYSxFQUFFO0lBQ2hDLFFBQVEsSUFBSSxNQUFNLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyx3RUFBd0UsQ0FBQyxDQUFDO0lBQzNHLFFBQVEsT0FBTyxLQUFLLENBQUM7SUFDckIsS0FBSztJQUNMLElBQUksSUFBSSxRQUFRLENBQUMsRUFBRSxDQUFDLEVBQUU7SUFDdEIsUUFBUSxJQUFJLE1BQU0sRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLDZGQUE2RixDQUFDLENBQUM7SUFDL0gsS0FBSztJQUNMLElBQUksTUFBTSxhQUFhLEdBQUcsTUFBTUMsaUJBQXVCLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxRQUFRLENBQUMsQ0FBQztJQUNoRixJQUFJLE1BQU0sZUFBZSxHQUFHO0lBQzVCLFFBQVEsSUFBSSxFQUFFLElBQUk7SUFDbEIsUUFBUSxJQUFJLEVBQUUsQ0FBQztJQUNmLFFBQVEsZ0JBQWdCLEVBQUUsZ0JBQWdCO0lBQzFDLFFBQVEsVUFBVSxFQUFFLFVBQVU7SUFDOUIsS0FBSyxDQUFDO0FBQ047SUFDQSxJQUFJLElBQUksaUJBQWlCLENBQUM7QUFDMUI7SUFDQSxJQUFJLElBQUksYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUU7SUFDaEMsUUFBUSxpQkFBaUIsR0FBRyxhQUFhLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUM7SUFDaEYsS0FBSyxNQUFNO0lBQ1gsUUFBUSxpQkFBaUIsR0FBR0MsMkJBQWlDLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQztJQUNwRixLQUFLO0FBQ0w7SUFDQSxJQUFJLGVBQWUsQ0FBQyxHQUFHLEdBQUcsTUFBTU0sYUFBbUIsQ0FBQyxLQUFLLEVBQUUsaUJBQWlCLEVBQUUsVUFBVSxFQUFFLGdCQUFnQixDQUFDLENBQUM7QUFDNUc7SUFDQSxJQUFJLE1BQU0sY0FBYyxHQUFHLElBQUl4QyxtQkFBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzNDLElBQUksY0FBYyxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0FBQzdDO0lBQ0EsSUFBSSxNQUFNLEtBQUssR0FBRyxNQUFNa0IsYUFBMEIsQ0FBQyxlQUFlLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNsRixJQUFJLE1BQU1rQixlQUFxQixDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDckQ7SUFDQSxJQUFJLE1BQU0sYUFBYSxHQUFHLEVBQUUsQ0FBQztBQUM3QjtJQUNBLElBQUksSUFBSSxXQUFXLENBQUM7SUFDcEIsSUFBSSxXQUFXLEdBQUcsTUFBTSxjQUFjLENBQUMsQ0FBQyxFQUFFLElBQUksR0FBRyxDQUFDLENBQUMsSUFBSSxLQUFLLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxlQUFlLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxDQUFDO0lBQ3ZJLElBQUksZUFBZSxDQUFDLEtBQUssR0FBRyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDM0MsSUFBSSxXQUFXLEdBQUcsTUFBTSxjQUFjLENBQUMsQ0FBQyxFQUFFLElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxJQUFJLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLGVBQWUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLENBQUM7SUFDakksSUFBSSxlQUFlLENBQUMsS0FBSyxHQUFHLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMzQyxJQUFJLFdBQVcsR0FBRyxNQUFNLGNBQWMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLElBQUksZUFBZSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLGVBQWUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLENBQUM7SUFDekosSUFBSSxlQUFlLENBQUMsT0FBTyxHQUFHLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM3QyxJQUFJLFdBQVcsR0FBRyxNQUFNLGNBQWMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLElBQUksZUFBZSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLGVBQWUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLENBQUM7SUFDdkosSUFBSSxlQUFlLENBQUMsTUFBTSxHQUFHLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM1QyxJQUFJLFdBQVcsR0FBRyxNQUFNLGNBQWMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxHQUFHLENBQUMsRUFBRSxlQUFlLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsZUFBZSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsQ0FBQztJQUMzSSxJQUFJLGVBQWUsQ0FBQyxNQUFNLEdBQUcsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzVDO0lBQ0EsSUFBSSxlQUFlLENBQUMsV0FBVyxHQUFHLGNBQWMsQ0FBQyxjQUFjLEVBQUUsQ0FBQztBQUNsRTtJQUNBLElBQUksTUFBTSxPQUFPLEdBQUcsSUFBSSxVQUFVLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDcEU7SUFDQSxJQUFJTSxlQUFxQixDQUFDLE9BQU8sRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLGVBQWUsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDekU7SUFDQSxJQUFJLGNBQWMsQ0FBQyxNQUFNLENBQUMsSUFBSSxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUNuRCxJQUFJLE1BQU0sWUFBWSxHQUFHLGNBQWMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztBQUNqRDtJQUNBLElBQUksSUFBSSxNQUFNLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQ1gsVUFBZSxDQUFDLFlBQVksRUFBRSx1Q0FBdUMsQ0FBQyxDQUFDLENBQUM7QUFDcEc7SUFDQSxJQUFJLE1BQU0sbUJBQW1CLEdBQUcsSUFBSS9CLG1CQUFPLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDaEQsSUFBSSxtQkFBbUIsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7QUFDN0M7SUFDQSxJQUFJLE1BQU0sV0FBVyxDQUFDLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLEtBQUssSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxNQUFNLENBQUMsQ0FBQztJQUM1RSxJQUFJLE1BQU0sV0FBVyxDQUFDLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxLQUFLLFVBQVUsT0FBTyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQzVFLElBQUksTUFBTSxXQUFXLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEtBQUssVUFBVSxZQUFZLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDakYsSUFBSSxNQUFNLFdBQVcsQ0FBQyxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksS0FBSyxVQUFVLFdBQVcsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUNoRixJQUFJLE1BQU0sV0FBVyxDQUFDLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsb0JBQW9CLFFBQVEsRUFBRSxNQUFNLENBQUMsQ0FBQztBQUM3RTtJQUNBLElBQUksZUFBZSxDQUFDLGFBQWEsR0FBRyxtQkFBbUIsQ0FBQyxNQUFNLEVBQUUsQ0FBQztBQUNqRTtJQUNBLElBQUksSUFBSSxNQUFNLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQytCLFVBQWUsQ0FBQyxlQUFlLENBQUMsYUFBYSxFQUFFLHVCQUF1QixDQUFDLENBQUMsQ0FBQztBQUNyRztJQUNBLElBQUksYUFBYSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztBQUN4QztJQUNBLElBQUksTUFBTU8sa0JBQXdCLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxhQUFhLENBQUMsQ0FBQztBQUNoRTtJQUNBLElBQUksTUFBTSxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDeEIsSUFBSSxNQUFNLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQztBQUN4QjtJQUNBLElBQUksT0FBTyxZQUFZLENBQUM7QUFDeEI7SUFDQSxJQUFJLGVBQWUsY0FBYyxDQUFDLFNBQVMsRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRTtJQUNsRyxRQUFRLE1BQU0sR0FBRyxHQUFHLEVBQUUsQ0FBQztJQUN2QixRQUFRLEtBQUssQ0FBQyxHQUFHLEdBQUcsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUM3QztJQUNBLFFBQVEsTUFBTXBDLGlCQUE4QixDQUFDLEtBQUssRUFBRSxTQUFTLENBQUMsQ0FBQztBQUMvRDtJQUNBLFFBQVEsYUFBYSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUM7QUFDN0M7SUFDQSxRQUFRLE1BQU0sQ0FBQyxHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNuQyxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUM1QixRQUFRLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ25ELFFBQVEsSUFBSSxDQUFDLEdBQUcsS0FBSyxDQUFDO0lBQ3RCLFFBQVEsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sR0FBRyxDQUFDLEdBQUcsU0FBUyxFQUFFO0lBQ2xELFlBQVksSUFBSSxNQUFNLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLFlBQVksRUFBRSxXQUFXLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3BGLFlBQVksTUFBTSxDQUFDLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLFNBQVMsRUFBRSxDQUFDO0lBQ3JELFlBQVksTUFBTSxNQUFNLEdBQUcsTUFBTSxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztJQUNwRCxZQUFZLE1BQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQyxDQUFDLGFBQWEsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBQ3JFO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0FBQ0E7SUFDQSxZQUFZLE1BQU0sWUFBWSxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDekQsWUFBWSxNQUFNLFFBQVEsR0FBRyxNQUFNLENBQUMsQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLENBQUM7QUFDN0Q7SUFDQSxZQUFZLGNBQWMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDNUMsWUFBWSxNQUFNLFlBQVksQ0FBQztJQUMvQixZQUFZLElBQUksQ0FBQyxFQUFFLENBQUM7SUFDcEIsZ0JBQWdCLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxPQUFPLENBQUMsRUFBRSxDQUFDLEVBQUU7SUFDekQsb0JBQW9CLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDN0QsWUFBWSxDQUFDLEdBQUcsS0FBSyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3RELFNBQVM7QUFDVDtJQUNBLFFBQVEsTUFBTUMsZUFBNEIsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUNsRDtJQUNBLFFBQVEsT0FBTyxHQUFHLENBQUM7SUFDbkIsS0FBSztBQUNMO0FBQ0E7SUFDQSxJQUFJLGVBQWUsV0FBVyxDQUFDLElBQUksRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFO0FBQ3pGO0lBQ0EsUUFBUSxNQUFNLENBQUMsR0FBRyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDbkMsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDNUIsUUFBUSxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztBQUNwRDtJQUNBLFFBQVEsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQztJQUNoQyxRQUFRLElBQUksQ0FBQyxHQUFHLEdBQUcsYUFBYSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQzVDO0lBQ0EsUUFBUSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsSUFBSSxZQUFZLEVBQUU7SUFDckQsWUFBWSxJQUFJLE1BQU0sRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsUUFBUSxFQUFFLFdBQVcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDaEYsWUFBWSxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsWUFBWSxDQUFDLENBQUM7QUFDeEQ7SUFDQSxZQUFZLE1BQU0sT0FBTyxHQUFHLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7QUFDcEQ7SUFDQSxZQUFZLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUN2RDtJQUNBLFlBQVksbUJBQW1CLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzlDLFNBQVM7QUFDVDtJQUNBLFFBQVEsSUFBSSxDQUFDLEdBQUcsR0FBRyxNQUFNLENBQUM7SUFDMUIsS0FBSztJQUNMOztJQzlMQTtJQUNBO0FBQ0E7SUFDQTtBQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7QUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0FBQ0E7SUFDQTtJQUNBO0lBQ0E7QUFjQTtJQUNlLGVBQWUsVUFBVSxDQUFDLGVBQWUsRUFBRSxlQUFlLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUU7SUFDbEcsSUFBSSxNQUFNSCxtQkFBTyxDQUFDLEtBQUssRUFBRSxDQUFDO0FBQzFCO0lBQ0EsSUFBSSxNQUFNLENBQUMsRUFBRSxFQUFFLEtBQUssRUFBRSxRQUFRLENBQUMsR0FBRyxNQUFNVSxXQUF3QixDQUFDLGVBQWUsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDN0YsSUFBSSxNQUFNLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxhQUFhLENBQUMsR0FBRyxNQUFNc0IsY0FBb0IsQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDdEYsSUFBSSxJQUFJLEtBQUssSUFBSSxhQUFhLEVBQUU7SUFDaEMsUUFBUSxJQUFJLE1BQU0sRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLHdFQUF3RSxDQUFDLENBQUM7SUFDM0csUUFBUSxNQUFNLElBQUksS0FBSyxDQUFDLHdFQUF3RSxDQUFDLENBQUM7SUFDbEcsS0FBSztJQUNMLElBQUksSUFBSSxRQUFRLENBQUMsRUFBRSxDQUFDLEVBQUU7SUFDdEIsUUFBUSxJQUFJLE1BQU0sRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLHNHQUFzRyxDQUFDLENBQUM7SUFDeEksS0FBSztJQUNMLElBQUksTUFBTSxhQUFhLEdBQUcsTUFBTUMsaUJBQXVCLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxRQUFRLENBQUMsQ0FBQztJQUNoRixJQUFJLE1BQU0sZUFBZSxHQUFHO0lBQzVCLFFBQVEsSUFBSSxFQUFFLElBQUk7SUFDbEIsUUFBUSxJQUFJLEVBQUUsQ0FBQztJQUNmLEtBQUssQ0FBQztBQUNOO0lBQ0EsSUFBSSxJQUFJLGlCQUFpQixDQUFDO0FBQzFCO0lBQ0EsSUFBSSxNQUFNLEdBQUcsR0FBRyxNQUFNYSxZQUFpQixDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQ2pEO0lBQ0EsSUFBSSxJQUFJLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFO0lBQ2hDLFFBQVEsaUJBQWlCLEdBQUcsYUFBYSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDO0lBQ2hGLEtBQUssTUFBTTtJQUNYLFFBQVEsaUJBQWlCLEdBQUdaLDJCQUFpQyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDcEYsS0FBSztBQUNMO0lBQ0E7QUFDQTtBQUNBO0lBQ0EsSUFBSSxlQUFlLENBQUMsR0FBRyxHQUFHTixhQUFxQixDQUFDLEtBQUssRUFBRSxpQkFBaUIsRUFBRSxHQUFHLENBQUMsQ0FBQztBQUMvRTtBQUNBO0lBQ0EsSUFBSSxNQUFNLGNBQWMsR0FBRyxJQUFJNUIsbUJBQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUMzQyxJQUFJLGNBQWMsQ0FBQyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztBQUM3QztJQUNBLElBQUksTUFBTSxLQUFLLEdBQUcsTUFBTWtCLGFBQTBCLENBQUMsZUFBZSxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDbEYsSUFBSSxNQUFNa0IsZUFBcUIsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQ3JEO0lBQ0EsSUFBSSxNQUFNLGFBQWEsR0FBRyxFQUFFLENBQUM7QUFDN0I7SUFDQSxJQUFJLElBQUksV0FBVyxDQUFDO0lBQ3BCLElBQUksV0FBVyxHQUFHLE1BQU0sY0FBYyxDQUFDLENBQUMsRUFBRSxJQUFJLEdBQUcsQ0FBQyxDQUFDLElBQUksS0FBSyxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsZUFBZSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLE9BQU8sRUFBRSxDQUFDO0lBQy9ILElBQUksZUFBZSxDQUFDLEtBQUssR0FBRyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDM0MsSUFBSSxXQUFXLEdBQUcsTUFBTSxjQUFjLENBQUMsQ0FBQyxFQUFFLElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxJQUFJLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLGVBQWUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxPQUFPLEVBQUUsQ0FBQztJQUN6SCxJQUFJLGVBQWUsQ0FBQyxLQUFLLEdBQUcsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzNDLElBQUksV0FBVyxHQUFHLE1BQU0sY0FBYyxDQUFDLENBQUMsRUFBRSxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssSUFBSSxlQUFlLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsZUFBZSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLFlBQVksRUFBRSxDQUFDO0lBQ2pKLElBQUksZUFBZSxDQUFDLE9BQU8sR0FBRyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDN0MsSUFBSSxXQUFXLEdBQUcsTUFBTSxjQUFjLENBQUMsQ0FBQyxFQUFFLElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxJQUFJLGVBQWUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxlQUFlLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsV0FBVyxFQUFFLENBQUM7SUFDL0ksSUFBSSxlQUFlLENBQUMsTUFBTSxHQUFHLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM1QyxJQUFJLFdBQVcsR0FBRyxNQUFNLGNBQWMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxHQUFHLENBQUMsRUFBRSxlQUFlLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsZUFBZSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLFdBQVcsRUFBRSxDQUFDO0lBQ25JLElBQUksZUFBZSxDQUFDLE1BQU0sR0FBRyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDNUM7SUFDQSxJQUFJLGVBQWUsQ0FBQyxXQUFXLEdBQUcsY0FBYyxDQUFDLGNBQWMsRUFBRSxDQUFDO0FBQ2xFO0lBQ0EsSUFBSSxNQUFNLE9BQU8sR0FBRyxJQUFJLFVBQVUsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNwRTtJQUNBLElBQUlNLGVBQXFCLENBQUMsT0FBTyxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsZUFBZSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztBQUN6RTtJQUNBLElBQUksY0FBYyxDQUFDLE1BQU0sQ0FBQyxJQUFJLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBQ25ELElBQUksTUFBTSxZQUFZLEdBQUcsY0FBYyxDQUFDLE1BQU0sRUFBRSxDQUFDO0FBQ2pEO0lBQ0EsSUFBSSxJQUFJLE1BQU0sRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDWCxVQUFlLENBQUMsWUFBWSxFQUFFLHVDQUF1QyxDQUFDLENBQUMsQ0FBQztBQUNwRztJQUNBLElBQUksTUFBTSxtQkFBbUIsR0FBRyxJQUFJL0IsbUJBQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNoRCxJQUFJLG1CQUFtQixDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztBQUM3QztJQUNBLElBQUksTUFBTSxXQUFXLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksS0FBSyxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDcEUsSUFBSSxNQUFNLFdBQVcsQ0FBQyxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksS0FBSyxVQUFVLE9BQU8sQ0FBQyxDQUFDO0lBQ3BFLElBQUksTUFBTSxXQUFXLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEtBQUssVUFBVSxZQUFZLENBQUMsQ0FBQztJQUN6RSxJQUFJLE1BQU0sV0FBVyxDQUFDLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxLQUFLLFVBQVUsV0FBVyxDQUFDLENBQUM7SUFDeEUsSUFBSSxNQUFNLFdBQVcsQ0FBQyxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLG9CQUFvQixRQUFRLENBQUMsQ0FBQztBQUNyRTtJQUNBLElBQUksZUFBZSxDQUFDLGFBQWEsR0FBRyxtQkFBbUIsQ0FBQyxNQUFNLEVBQUUsQ0FBQztBQUNqRTtJQUNBLElBQUksSUFBSSxNQUFNLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQytCLFVBQWUsQ0FBQyxlQUFlLENBQUMsYUFBYSxFQUFFLHVCQUF1QixDQUFDLENBQUMsQ0FBQztBQUNyRztJQUNBLElBQUksYUFBYSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztBQUN4QztJQUNBLElBQUksTUFBTU8sa0JBQXdCLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxhQUFhLENBQUMsQ0FBQztBQUNoRTtJQUNBLElBQUksTUFBTSxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDeEIsSUFBSSxNQUFNLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQztBQUN4QjtJQUNBLElBQUksT0FBTyxZQUFZLENBQUM7QUFDeEI7SUFDQSxJQUFJLGVBQWUsY0FBYyxDQUFDLFNBQVMsRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsV0FBVyxFQUFFO0lBQzFGLFFBQVEsTUFBTSxHQUFHLEdBQUcsRUFBRSxDQUFDO0lBQ3ZCLFFBQVEsS0FBSyxDQUFDLEdBQUcsR0FBRyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzdDO0lBQ0EsUUFBUSxNQUFNcEMsaUJBQThCLENBQUMsS0FBSyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0FBQy9EO0lBQ0EsUUFBUSxhQUFhLENBQUMsU0FBUyxDQUFDLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQztBQUM3QztJQUNBLFFBQVEsTUFBTSxDQUFDLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ25DLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzVCLFFBQVEsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFDbkQsUUFBUSxJQUFJLENBQUMsR0FBRyxLQUFLLENBQUM7SUFDdEIsUUFBUSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxHQUFHLENBQUMsR0FBRyxTQUFTLEVBQUU7SUFDbEQsWUFBWSxJQUFJLE1BQU0sRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsWUFBWSxFQUFFLFdBQVcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDcEYsWUFBWSxNQUFNLENBQUMsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsU0FBUyxFQUFFLENBQUM7SUFDckQsWUFBWSxNQUFNLE1BQU0sR0FBRyxNQUFNLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBQ3BELFlBQVksTUFBTSxVQUFVLEdBQUcsTUFBTSxDQUFDLENBQUMsYUFBYSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFDckU7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7QUFDQTtJQUNBLFlBQVksTUFBTSxZQUFZLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUN6RCxZQUFZLE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQyxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsQ0FBQztBQUM3RDtJQUNBLFlBQVksY0FBYyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUM1QyxZQUFZLE1BQU0sWUFBWSxDQUFDO0lBQy9CLFlBQVksSUFBSSxDQUFDLEVBQUUsQ0FBQztJQUNwQixnQkFBZ0IsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxFQUFFLENBQUMsRUFBRTtJQUN6RCxvQkFBb0IsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUM3RCxZQUFZLENBQUMsR0FBRyxLQUFLLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdEQsU0FBUztBQUNUO0lBQ0EsUUFBUSxNQUFNQyxlQUE0QixDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ2xEO0lBQ0EsUUFBUSxPQUFPLEdBQUcsQ0FBQztJQUNuQixLQUFLO0FBQ0w7QUFDQTtJQUNBLElBQUksZUFBZSxXQUFXLENBQUMsSUFBSSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRTtBQUNqRjtJQUNBLFFBQVEsTUFBTSxDQUFDLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ25DLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzVCLFFBQVEsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDcEQ7SUFDQSxRQUFRLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUM7SUFDaEMsUUFBUSxJQUFJLENBQUMsR0FBRyxHQUFHLGFBQWEsQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUM1QztJQUNBLFFBQVEsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLElBQUksWUFBWSxFQUFFO0lBQ3JELFlBQVksSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLFFBQVEsRUFBRSxXQUFXLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDMUUsWUFBWSxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsWUFBWSxDQUFDLENBQUM7QUFDeEQ7SUFDQSxZQUFZLE1BQU0sT0FBTyxHQUFHLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7QUFDcEQ7SUFDQSxZQUFZLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUN2RDtJQUNBLFlBQVksbUJBQW1CLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzlDLFNBQVM7QUFDVDtJQUNBLFFBQVEsSUFBSSxDQUFDLEdBQUcsR0FBRyxNQUFNLENBQUM7SUFDMUIsS0FBSztBQUNMO0FBQ0E7SUFDQTs7SUN6TEE7SUFDQTtBQUNBO0lBQ0E7QUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0FBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtBQUNBO0lBQ0E7SUFDQTtJQUNBO0FBS0E7SUFDZSxlQUFlLGFBQWEsQ0FBQyxlQUFlLEVBQUUsZUFBZSxFQUFFLE1BQU0sRUFBRTtBQUN0RjtJQUNBLElBQUksTUFBTSxDQUFDLEVBQUUsRUFBRSxLQUFLLEVBQUUsUUFBUSxDQUFDLEdBQUcsTUFBTU8sV0FBd0IsQ0FBQyxlQUFlLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzdGLElBQUksTUFBTSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsR0FBRyxNQUFNc0IsY0FBb0IsQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLENBQUM7QUFDdkU7SUFDQSxJQUFJLE1BQU0sS0FBSyxHQUFHLE1BQU1kLGFBQTBCLENBQUMsZUFBZSxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDbkYsSUFBSSxNQUFNa0IsZUFBcUIsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQ3JEO0lBQ0EsSUFBSSxNQUFNYSxXQUF3QixDQUFDLEtBQUssRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzlELElBQUksTUFBTUEsV0FBd0IsQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztJQUM5RCxJQUFJLE1BQU1BLFdBQXdCLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDOUQsSUFBSSxNQUFNQSxXQUF3QixDQUFDLEtBQUssRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzlELElBQUksTUFBTUEsV0FBd0IsQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztJQUM5RCxJQUFJLE1BQU1BLFdBQXdCLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDOUQ7SUFDQSxJQUFJLE1BQU0sY0FBYyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxDQUFDO0lBQ2hELElBQUksTUFBTSxjQUFjLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLENBQUM7SUFDaEQsSUFBSSxNQUFNLGNBQWMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxZQUFZLEVBQUUsQ0FBQztJQUNyRCxJQUFJLE1BQU0sY0FBYyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxDQUFDO0FBQ3BEO0lBQ0EsSUFBSSxNQUFNLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUN4QixJQUFJLE1BQU0sS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDO0FBQ3hCO0lBQ0E7QUFDQTtJQUNBLElBQUksT0FBTztBQUNYO0lBQ0EsSUFBSSxlQUFlLGNBQWMsQ0FBQyxZQUFZLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUU7SUFDakYsUUFBUSxJQUFJLE1BQU0sRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLG9CQUFvQixDQUFDLFdBQVcsQ0FBQyxDQUFDO0FBQ25FO0lBQ0EsUUFBUSxNQUFNL0MsaUJBQThCLENBQUMsS0FBSyxFQUFFLFlBQVksQ0FBQyxDQUFDO0FBQ2xFO0lBQ0EsUUFBUSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxFQUFFO0lBQ3JDLFlBQVksTUFBTSxtQkFBbUIsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN6QyxTQUFTO0FBQ1Q7SUFDQSxRQUFRLElBQUksWUFBWSxJQUFJLENBQUMsRUFBRTtJQUMvQixZQUFZLE1BQU0sbUJBQW1CLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQy9DLFNBQVM7QUFDVDtJQUNBLFFBQVEsTUFBTUMsZUFBNEIsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUNsRDtBQUNBO0lBQ0EsUUFBUSxlQUFlLG1CQUFtQixDQUFDLENBQUMsRUFBRTtJQUM5QyxZQUFZLE1BQU0sT0FBTyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbkMsWUFBWSxNQUFNLENBQUMsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbEMsWUFBdUIsS0FBSyxDQUFDLEdBQUc7SUFDaEMsWUFBWSxNQUFNLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDbEMsWUFBMEIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRTtBQUNuQztJQUNBLFlBQVksSUFBSSxJQUFJLENBQUM7SUFDckIsWUFBWSxJQUFJLEdBQUcsSUFBSSxTQUFTLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQy9DO0lBQ0EsWUFBWSxNQUFNSSxzQkFBbUMsQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLFlBQVksQ0FBQyxDQUFDO0lBQ3JGLFlBQVksSUFBSSxDQUFDLFlBQVksSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRTtJQUNuRCxnQkFBZ0IsTUFBTSxLQUFLLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDO0lBQ3BFLGdCQUFnQixJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsVUFBVSxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQztJQUNqRSxhQUFhLE1BQU07SUFDbkIsZ0JBQWdCLE1BQU0sS0FBSyxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNoRSxhQUFhO0lBQ2IsWUFBWSxNQUFNQyxjQUEyQixDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQztBQUMzRDtBQUNBO0lBQ0EsWUFBWSxJQUFJLEdBQUcsTUFBTSxDQUFDLENBQUMsbUJBQW1CLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBQzlGLFlBQVksTUFBTSxLQUFLLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3BDO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtBQUNBO0lBQ0E7SUFDQTtBQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7QUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7QUFDQTtBQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7QUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQSxTQUFTO0lBQ1QsS0FBSztJQUNMOztJQzVJQTtJQUNBO0FBQ0E7SUFDQTtBQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7QUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0FBQ0E7SUFDQTtJQUNBO0lBQ0E7QUFJQTtJQUNlLGVBQWUsUUFBUSxDQUFDLFlBQVksRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFO0FBQ3ZFO0lBQ0EsSUFBSSxNQUFNLENBQUMsRUFBRSxFQUFFLEtBQUssRUFBRSxRQUFRLENBQUMsR0FBRyxNQUFNRSxXQUF3QixDQUFDLFlBQVksRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDMUYsSUFBSSxNQUFNLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxhQUFhLENBQUMsR0FBRyxNQUFNc0IsY0FBb0IsQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLENBQUM7QUFDdEY7SUFDQSxJQUFJLE1BQU0sR0FBRyxHQUFHLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDaEMsSUFBSSxNQUFNLEdBQUcsR0FBRyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ2hDO0lBQ0EsSUFBSSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsRUFBRSxFQUFFO0lBQ2hDLFFBQVEsTUFBTSxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNsQyxLQUFLO0FBQ0w7SUFDQSxJQUFJLE1BQU0sS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDO0FBQ3hCO0lBQ0EsSUFBSSxPQUFPLElBQUksQ0FBQztBQUNoQjtJQUNBLElBQUksZUFBZSxnQkFBZ0IsQ0FBQyxDQUFDLEVBQUU7QUFDdkM7SUFDQSxRQUFRLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUM5QixRQUFRLE9BQU8sRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsRUFBRSxHQUFHLEdBQUcsR0FBRyxFQUFFLENBQUM7QUFDMUM7SUFDQSxRQUFRLElBQUksTUFBTSxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsaUJBQWlCLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDdkQ7SUFDQSxRQUFRLE1BQU0sS0FBSyxHQUFHLE1BQU1kLGFBQTBCLENBQUMsUUFBUSxHQUFHLEVBQUUsR0FBRyxPQUFPLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUMvRixRQUFRLE1BQU1rQixlQUFxQixDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLGFBQWEsQ0FBQyxDQUFDO0FBQ3BFO0lBQ0EsUUFBUSxNQUFNYSxXQUF3QixDQUFDLEtBQUssRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEdBQUcsRUFBRSxDQUFDO0lBQ3pGLFFBQVEsTUFBTUEsV0FBd0IsQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDO0lBQ2xGLFFBQVEsTUFBTUEsV0FBd0IsQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDO0lBQ2xGLFFBQVEsTUFBTUEsV0FBd0IsQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDO0lBQ2xGLFFBQVEsTUFBTUEsV0FBd0IsQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUM7SUFDeEUsUUFBUSxNQUFNQSxXQUF3QixDQUFDLEtBQUssRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2xFLFFBQVEsTUFBTUEsV0FBd0IsQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQztJQUM5RixRQUFRLE1BQU1BLFdBQXdCLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLElBQUksR0FBRyxDQUFDLENBQUM7SUFDMUYsUUFBUSxNQUFNQSxXQUF3QixD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YUFBYSxDQUFDLENBQUM7SUFDckQsUUFBUSxNQUFNLElBQUksR0FBRyxHQUFHLEdBQUcsYUFBYSxDQUFDO0lBQ3pDLFFBQVEsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsU0FBUyxDQUFDO0lBQ2pFLEtBQUs7SUFDTCxJQUFJLFVBQVUsQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFO0lBQzNCLFFBQVEsR0FBRyxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUM1QixRQUFRLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxHQUFHLGFBQWEsQ0FBQyxDQUFDO0lBQ3JELFFBQVEsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUU7SUFDN0IsWUFBWSxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ3RELFNBQVM7SUFDVCxRQUFRLE1BQU0sSUFBSSxHQUFHLEdBQUcsR0FBRyxhQUFhLENBQUM7SUFDekMsUUFBUSxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLEtBQUssQ0FBQztJQUNyQyxRQUFRLElBQUksR0FBRyxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU0sR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ3BELFFBQVEsT0FBTyxJQUFJLENBQUM7SUFDcEIsS0FBSztJQUNMLElBQUksT0FBTyxHQUFHO0lBQ2QsUUFBUSxNQUFNLElBQUksR0FBRyxJQUFJLFFBQVEsRUFBRSxDQUFDO0lBQ3BDLFFBQVEsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO0lBQzlDLFlBQVksSUFBSSxJ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Q0FBQyxDQUFDLENBQUM7SUFDdkMsSUFBSSxNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQzNCLElBQUksTUFBTSxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUN4RTtJQUNBLElBQUksTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUMzQixJQUFJLE1BQU0sR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDeEUsSUFBSSxNQUFNLEVBQUUsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUN4RCxJQUFJLE1BQU0sR0FBRyxHQUFHLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQztBQUNsRTtJQUNBLElBQUksTUFBTSxNQUFNLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2pDLElBQUksTUFBTSxXQUFXLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQztJQUMzQyxJQUFJLE1BQU0sTUFBTSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNqQyxJQUFJLE1BQU0sV0FBVyxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDM0MsSUFBSSxNQUFNLE1BQU0sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3hDLElBQUksTUFBTSxNQUFNLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3JDLElBQUksTUFBTSxNQUFNLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0FBQ3hDO0lBQ0EsSUFBSSxJQUFJLE9BQU8sQ0FBQztJQUNoQixJQUFJLE9BQU8sR0FBRyxNQUFNLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMzRCxJQUFJLE1BQU0sTUFBTSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNoQyxJQUFJLE9BQU8sR0FBRyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ2xELElBQUksUUFBUSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUM3QjtJQUNBLElBQUksSUFBSSxNQUFNLENBQUM7SUFDZixJQUFJLE1BQU0sR0FBRyxNQUFNLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMxRCxJQUFJLE1BQU0sTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMvQixJQUFJLE1BQU0sR0FBRyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2hELElBQUksUUFBUSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUM1QjtJQUNBLElBQUksSUFBSSxNQUFNLENBQUM7SUFDZixJQUFJLE1BQU0sR0FBRyxNQUFNLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMxRCxJQUFJLE1BQU0sTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMvQixJQUFJLE1BQU0sR0FBRyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2hELElBQUksUUFBUSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUM1QjtJQUNBLElBQUksTUFBTSxHQUFHLEdBQUcsSUFBSSxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDcEMsSUFBSSxLQUFLLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDMUMsSUFBSSxNQUFNLEdBQUcsR0FBRyxJQUFJLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNwQyxJQUFJLEtBQUssQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMxQyxJQUFJLE1BQU0sSUFBSSxHQUFHLElBQUksVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3JDLElBQUksS0FBSyxDQUFDLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDcEQsSUFBSSxNQUFNLElBQUksR0FBRyxJQUFJLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNyQyxJQUFJLEtBQUssQ0FBQyxFQUFFLENBQUMsaUJBQWlCLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3BEO0lBQ0EsSUFBSSxNQUFNLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDNUIsSUFBSSxNQUFNLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDNUIsSUFBSSxNQUFNLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDNUIsSUFBSSxRQUFRLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzFCLElBQUksUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMxQixJQUFJLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDMUIsSUFBSSxNQUFNLGVBQWUsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUNsQztJQUNBLElBQUksSUFBSSxNQUFNLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUM1QyxJQUFJLElBQUksS0FBSyxHQUFHLE1BQU0sV0FBVyxDQUFDLE1BQU0sRUFBRSxZQUFZLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDM0Q7SUFDQSxJQUFJLE1BQU0sQ0FBQyxHQUFHLElBQUksUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN2QyxJQUFJLE1BQU0sRUFBRSxHQUFHLElBQUksUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN4QyxJQUFJLE1BQU0sRUFBRSxHQUFHLElBQUksUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN4QyxJQUFJLE1BQU0sQ0FBQyxHQUFHLElBQUksUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ25ELElBQUksTUFBTSxFQUFFLEdBQUcsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3BDO0lBQ0EsSUFBSSxJQUFJLE1BQU0sRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBQzdDLElBQUksSUFBSSxNQUFNLEdBQUcsTUFBTSxXQUFXLENBQUMsTUFBTSxFQUFFLFlBQVksRUFBRSxFQUFFLEVBQUUsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDbEcsSUFBSSxJQUFJLE1BQU0sRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBQzdDLElBQUksSUFBSSxNQUFNLEdBQUcsTUFBTSxXQUFXLENBQUMsTUFBTSxFQUFFLFlBQVksRUFBRSxFQUFFLEVBQUUsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDbEcsSUFBSSxJQUFJLE1BQU0sRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLENBQUM7SUFDbEQsSUFBSSxJQUFJLFdBQVcsR0FBRyxNQUFNLFdBQVcsQ0FBQyxNQUFNLEVBQUUsWUFBWSxFQUFFLEVBQUUsRUFBRSxDQUFDLFVBQVUsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN2RyxJQUFJLElBQUksTUFBTSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsQ0FBQztJQUNqRCxJQUFJLElBQUksVUFBVSxHQUFHLE1BQU0sV0FBVyxDQUFDLE1BQU0sRUFBRSxZQUFZLEVBQUUsRUFBRSxFQUFFLENBQUMsVUFBVSxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3RHO0lBQ0EsSUFBSSxNQUFNLGtCQUFrQixFQUFFLENBQUM7QUFDL0I7SUFDQSxJQUFJLE1BQU0scUJBQXFCLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDbkQ7SUFDQSxJQUFJLE1BQU0sT0FBTyxFQUFFLENBQUM7QUFDcEI7SUFDQSxJQUFJLE1BQU0sV0FBVyxFQUFFLENBQUM7QUFDeEI7SUFDQSxJQUFJLE1BQU0scUJBQXFCLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDakQsSUFBSSxNQUFNLHFCQUFxQixDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ2pELElBQUksTUFBTSxxQkFBcUIsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNuRCxJQUFJLE1BQU0scUJBQXFCLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDbkQ7SUFDQSxJQUFJLE1BQU0sTUFBTSxHQUFHLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUNyQztJQUNBLElBQUksTUFBTSxpQkFBaUIsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDeEMsSUFBSSxNQUFNLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDL0IsSUFBSSxNQUFNLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDL0IsSUFBSSxNQUFNLGVBQWUsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUNsQztJQUNBLElBQUksSUFBSSxNQUFNLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFLGdCQUFnQixDQUFDLENBQUMsQ0FBQztBQUNsRTtBQUNBO0lBQ0EsSUFBSSxNQUFNLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUN6QixJQUFJLE1BQU0sTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ3pCLElBQUksTUFBTSxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUM7QUFDekI7SUFDQSxJQUFJLE9BQU8sTUFBTSxDQUFDO0FBQ2xCO0lBQ0EsSUFBSSxlQUFlLE9BQU8sR0FBRztJQUM3QixRQUFRLE1BQU0saUJBQWlCLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzNDLFFBQVEsTUFBTSxPQUFPLEdBQUcsSUFBSSxTQUFTLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3RELFFBQVEsSUFBSSxRQUFRLEdBQUcsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUU7SUFDbkMsWUFBWSxJQUFJLE1BQU0sR0FBRyxNQUFNLFdBQVcsQ0FBQyxNQUFNLEVBQUUsWUFBWSxFQUFFLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzdHLFlBQVksS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLFVBQVUsRUFBRSxDQUFDLEVBQUUsRUFBRTtJQUM5QyxnQkFBZ0IsSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxrQkFBa0IsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNuRyxnQkFBZ0IsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsR0FBRyxHQUFHLEVBQUUsQ0FBQztJQUM1RSxnQkFBZ0IsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3pDLGFBQWE7SUFDYixTQUFTLE1BQU0sSUFBSSxRQUFRLElBQUksS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUU7SUFDM0MsWUFBWSxNQUFNLENBQUMsR0FBRyxZQUFZLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxHQUFHLENBQUM7SUFDM0UsWUFBWSxNQUFNLE1BQU0sQ0FBQyxZQUFZLENBQUMsT0FBTyxFQUFFLENBQUMsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDdEYsU0FBUyxNQUFNO0lBQ2YsWUFBWSxJQUFJLE1BQU0sRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDeEQsWUFBWSxNQUFNLElBQUksS0FBSyxDQUFDLGdDQUFnQyxDQUFDLENBQUM7SUFDOUQsU0FBUztJQUNULFFBQVEsTUFBTSxNQUFNLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3BDLFFBQVEsTUFBTSxlQUFlLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDdEMsS0FBSztBQUNMO0lBQ0EsSUFBSSxlQUFlLGtCQUFrQixHQUFHO0lBQ3hDLFFBQVEsTUFBTSxTQUFTLEdBQUcsSUFBSSxVQUFVLENBQUMsRUFBRSxHQUFHLEtBQUssQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDM0QsUUFBUSxNQUFNLFVBQVUsR0FBRyxJQUFJLFFBQVEsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDMUQsUUFBUSxNQUFNLElBQUksR0FBRyxJQUFJLFVBQVUsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2pELFFBQVEsS0FBSyxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2pEO0lBQ0EsUUFBUSxJQUFJLE9BQU8sR0FBRyxDQUFDLENBQUM7QUFDeEI7SUFDQSxRQUFRLFNBQVMsY0FBYyxHQUFHO0lBQ2xDLFlBQVksTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3pELFlBQVksT0FBTyxJQUFJLENBQUMsQ0FBQztJQUN6QixZQUFZLE1BQU0sS0FBSyxHQUFHLElBQUksUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNwRCxZQUFZLE9BQU8sS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDNUMsU0FBUztBQUNUO0lBQ0EsUUFBUSxNQUFNLEtBQUssR0FBRyxJQUFJLFFBQVEsRUFBRSxDQUFDO0lBQ3JDLFFBQVEsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQyxFQUFFLEVBQUU7SUFDaEQsWUFBWSxJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBQyxLQUFLLElBQUksQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLHdCQUF3QixFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM1RyxZQUFZLE1BQU0sRUFBRSxHQUFHLGNBQWMsRUFBRSxDQUFDO0lBQ3hDLFlBQVksS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRTtJQUNyQyxnQkFBZ0IsTUFBTSxDQUFDLEdBQUcsY0FBYyxFQUFFLENBQUM7SUFDM0MsZ0JBQWdCLE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQztJQUN0QyxnQkFBZ0IsT0FBTyxJQUFJLEtBQUssQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDO0FBQ3ZDO0lBQ0EsZ0JBQWdCLE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQztJQUNuQyxnQkFBZ0IsTUFBTSxFQUFFLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUNqQyxnQkFBZ0IsTUFBTSxHQUFHLEdBQUcsVUFBVSxDQUFDO0lBQ3ZDLGdCQUFnQixNQUFNLEVBQUUsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ2pDLGdCQUFnQixJQUFJLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDO0lBQzNELGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO0FBQzVDO0lBQ0EsZ0JBQWdCLElBQUksQ0FBQyxJQUFJLE9BQU8sRUFBRTtJQUNsQyxvQkFBb0IsSUFBSSxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxXQUFXLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztJQUNqRSxvQkFBb0IsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUNqRCxpQkFBaUIsTUFBTTtJQUN2QixvQkFBb0IsSUFBSSxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQyxLQUFLLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUM7SUFDdkYsb0JBQW9CLENBQUMsQ0FBQyxDQUFDLEdBQUcsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUM3RCxpQkFBaUI7SUFDakIsZ0JBQWdCLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQzdDLGFBQWE7QUFDYjtJQUNBLFlBQVksTUFBTSxFQUFFLEdBQUcsY0FBYyxFQUFFLENBQUM7SUFDeEMsWUFBWSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFO0lBQ3JDLGdCQUFnQixNQUFNLENBQUMsR0FBRyxjQUFjLEVBQUUsQ0FBQztJQUMzQyxnQkFBZ0IsTUFBTSxLQUFLLEdBQUcsT0FBTyxDQUFDO0lBQ3RDLGdCQUFnQixPQUFPLElBQUksS0FBSyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUM7QUFDdkM7SUFDQSxnQkFBZ0IsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDO0lBQ25DLGdCQUFnQixNQUFNLEVBQUUsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ2pDLGdCQUFnQixNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUM7SUFDbkMsZ0JBQWdCLE1BQU0sRUFBRSxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDakMsZ0JBQWdCLE1BQU0sR0FBRyxHQUFHLFdBQVcsQ0FBQztJQUN4QyxnQkFBZ0IsTUFBTSxFQUFFLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUNqQyxnQkFBZ0IsSUFBSSxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxXQUFXLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztJQUM3RCxnQkFBZ0IsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUM3QyxnQkFBZ0IsSUFBSSxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxXQUFXLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztJQUM3RCxnQkFBZ0IsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztBQUM3QztJQUNBLGdCQUFnQixJQUFJLENBQUMsSUFBSSxPQUFPLEVBQUU7SUFDbEMsb0JBQW9CLElBQUksT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssV0FBVyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUM7SUFDakUsb0JBQW9CLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDakQsaUJBQWlCLE1BQU07SUFDdkIsb0JBQW9CLElBQUksT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUMsS0FBSyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDO0lBQ3ZGLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDNUQsaUJBQWlCO0FBQ2pCO0lBQ0EsZ0JBQWdCLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQzdDLGFBQWE7QUFDYjtJQUNBLFlBQVksTUFBTSxFQUFFLEdBQUcsY0FBYyxFQUFFLENBQUM7SUFDeEMsWUFBWSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFO0lBQ3JDLGdCQUFnQixNQUFNLENBQUMsR0FBRyxjQUFjLEVBQUUsQ0FBQztJQUMzQyxnQkFBZ0IsTUFBTSxLQUFLLEdBQUcsT0FBTyxDQUFDO0lBQ3RDLGdCQUFnQixPQUFPLElBQUksS0FBSyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUM7QUFDdkM7SUFDQSxnQkFBZ0IsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDO0lBQ25DLGdCQUFnQixNQUFNLEVBQUUsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ2pDLGdCQUFnQixJQUFJLENBQUMsSUFBSSxPQUFPLEVBQUU7SUFDbEMsb0JBQW9CLElBQUksT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssV0FBVyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUM7SUFDakUsb0JBQW9CLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDakQsaUJBQWlCLE1BQU07SUFDdkIsb0JBQW9CLElBQUksT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUMsS0FBSyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDO0lBQ3ZGLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDNUQsaUJBQWlCO0lBQ2pCLGFBQWE7SUFDYixTQUFTO0FBQ1Q7SUFDQSxRQUFRLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxPQUFPLEdBQUcsQ0FBQyxFQUFFLEVBQUU7SUFDNUMsWUFBWSxNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUM7SUFDL0IsWUFBWSxNQUFNLEVBQUUsR0FBRyxHQUFHLEVBQUUsSUFBSSxDQUFDLFlBQVksR0FBRyxDQUFDLENBQUMsQ0FBQztJQUNuRCxZQUFZLE1BQU0sR0FBRyxHQUFHLFVBQVUsQ0FBQztJQUNuQyxZQUFZLE1BQU0sRUFBRSxHQUFHLEdBQUcsRUFBRSxJQUFJLENBQUMsWUFBWSxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ25ELFlBQVksSUFBSSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztJQUN2RCxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNyQyxZQUFZLElBQUksT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssV0FBVyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUM7SUFDekQsWUFBWSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdEMsWUFBWSxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxZQUFZLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDMUQsU0FBUztBQUNUO0FBQ0E7SUFDQSxRQUFRLE1BQU0saUJBQWlCLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQzNDO0lBQ0EsUUFBUSxNQUFNLFdBQVcsR0FBRyxJQUFJLFNBQVMsQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQzdFO0lBQ0EsUUFBUSxNQUFNLEtBQUssR0FBRyxJQUFJLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN4QyxRQUFRLE1BQU0sTUFBTSxHQUFHLElBQUksUUFBUSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNsRCxRQUFRLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDaEQsUUFBUSxXQUFXLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQy9CLFFBQVEsSUFBSSxRQUFRLEdBQUcsQ0FBQyxDQUFDO0lBQ3pCLFFBQVEsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7SUFDM0MsWUFBWSxJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBQyxNQUFNLElBQUksQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLGdCQUFnQixFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNoRyxZQUFZLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNoQyxTQUFTO0FBQ1Q7SUFDQSxRQUFRLE1BQU0sTUFBTSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUN4QyxRQUFRLE1BQU0sZUFBZSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ3RDO0lBQ0EsUUFBUSxTQUFTLFNBQVMsQ0FBQyxDQUFDLEVBQUU7SUFDOUIsWUFBWSxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDaEQsWUFBWSxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDaEQsWUFBWSxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDaEQsWUFBWSxJQUFJLENBQUMsQ0FBQztJQUNsQixZQUFZLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRTtJQUN6QixnQkFBZ0IsQ0FBQyxHQUFHLEtBQUssQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2pGLGFBQWEsTUFBTTtJQUNuQixnQkFBZ0IsQ0FBQyxHQUFHLEtBQUssQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNoRCxhQUFhO0lBQ2IsWUFBWSxNQUFNLEdBQUcsR0FBRyxLQUFLLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDN0MsWUFBWSxLQUFLLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ2pELFlBQVksV0FBVyxDQUFDLEdBQUcsQ0FBQyxTQUFTLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDakQsWUFBWSxRQUFRLElBQUksU0FBUyxDQUFDLE1BQU0sQ0FBQztJQUN6QyxTQUFTO0FBQ1Q7SUFDQSxLQUFLO0FBQ0w7SUFDQSxJQUFJLGVBQWUscUJBQXFCLENBQUMsU0FBUyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsV0FBVyxFQUFFO0lBQ2pGLFFBQVEsTUFBTSxVQUFVLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztJQUNoQyxRQUFRLE1BQU0sQ0FBQyxHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUNuQztJQUNBLFFBQVEsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUM1QixRQUFRLE1BQU0saUJBQWlCLENBQUMsTUFBTSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0FBQ25EO0lBQ0EsUUFBUSxJQUFJLFVBQVUsR0FBRyxFQUFFLENBQUM7QUFDNUI7SUFDQSxRQUFRLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNoQixRQUFRLE9BQU8sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUU7QUFDN0I7SUFDQSxZQUFZLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNwQixZQUFZLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLE1BQU0sSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxXQUFXLENBQUMsRUFBRTtJQUM3RCxnQkFBZ0IsSUFBSSxNQUFNLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLHFCQUFxQixFQUFFLFdBQVcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3JHLGdCQUFnQixJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDMUIsZ0JBQWdCLElBQUksRUFBRSxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ3RELGdCQUFnQixPQUFPLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUMsTUFBTSxNQUFNLEVBQUUsSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxVQUFVLENBQUMsRUFBRTtJQUN2SCxvQkFBb0IsRUFBRSxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDM0Qsb0JBQW9CLENBQUMsR0FBRyxDQUFDO0lBQ3pCLGlCQUFpQjtJQUNqQixnQkFBZ0IsTUFBTSxNQUFNLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ25ELGdCQUFnQixNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDN0IsZ0JBQWdCLFVBQVUsQ0FBQyxJQUFJLENBQUMsMkJBQTJCLENBQUMsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsV0FBVyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxLQUFLO0lBQ2pILG9CQUFvQixJQUFJLE1BQU0sR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsbUJBQW1CLEVBQUUsV0FBVyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDeEcsb0JBQW9CLE9BQU8sQ0FBQyxDQUFDO0lBQzdCLGlCQUFpQixDQUFDLENBQUMsQ0FBQztJQUNwQixnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN2QixnQkFBZ0IsQ0FBQyxFQUFFLENBQUM7SUFDcEIsYUFBYTtBQUNiO0lBQ0EsWUFBWSxNQUFNLE1BQU0sR0FBRyxNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUM7QUFDekQ7SUFDQSxZQUFZLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO0lBQ2hELGdCQUFnQixNQUFNLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDakQsZ0JBQWdCLE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMvRCxnQkFBZ0IsUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN0QyxhQUFhO0lBQ2IsWUFBWSxVQUFVLEdBQUcsRUFBRSxDQUFDO0FBQzVCO0lBQ0EsU0FBUztJQUNULFFBQVEsTUFBTSxlQUFlLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDdEM7SUFDQSxLQUFLO0FBQ0w7SUFDQSxJQUFJLGVBQWUsMkJBQTJCLENBQUMsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFO0lBQ3BGLFFBQVEsTUFBTSxDQUFDLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ25DLFFBQVEsTUFBTSxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzlCLFFBQVEsTUFBTSxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQy9CLFFBQVEsTUFBTSxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQy9CLFFBQVEsSUFBSSxLQUFLLEVBQUUsVUFBVSxFQUFFLGVBQWUsRUFBRSxNQUFNLENBQUM7SUFDdkQsUUFBUSxJQUFJLFNBQVMsSUFBSSxJQUFJLEVBQUU7SUFDL0IsWUFBWSxLQUFLLEdBQUcsdUJBQXVCLENBQUM7SUFDNUMsWUFBWSxVQUFVLEdBQUcsb0JBQW9CLENBQUM7SUFDOUMsWUFBWSxlQUFlLEdBQUcsbUJBQW1CLENBQUM7SUFDbEQsWUFBWSxNQUFNLEdBQUcsVUFBVSxDQUFDO0lBQ2hDLFNBQVMsTUFBTSxJQUFJLFNBQVMsSUFBSSxJQUFJLEVBQUU7SUFDdEMsWUFBWSxLQUFLLEdBQUcsdUJBQXVCLENBQUM7SUFDNUMsWUFBWSxVQUFVLEdBQUcsb0JBQW9CLENBQUM7SUFDOUMsWUFBWSxlQUFlLEdBQUcsbUJBQW1CLENBQUM7SUFDbEQsWUFBWSxNQUFNLEdBQUcsVUFBVSxDQUFDO0lBQ2hDLFNBQVMsTUFBTTtJQUNmLFlBQVksTUFBTSxJQUFJLEtBQUssQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUM3QyxTQUFTO0lBQ1QsUUFBUSxJQUFJLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDbkIsUUFBUSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxHQUFHLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0lBQzNFLFFBQVEsSUFBSSxNQUFNLEVBQUUsUUFBUSxDQUFDO0lBQzdCLFFBQVEsSUFBSSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRTtJQUN4QixZQUFZLE1BQU0sR0FBRyxJQUFJLFNBQVMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDN0MsWUFBWSxRQUFRLEdBQUcsSUFBSSxTQUFTLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDdEQsU0FBUyxNQUFNO0lBQ2YsWUFBWSxNQUFNLEdBQUcsSUFBSSxVQUFVLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzlDLFlBQVksUUFBUSxHQUFHLElBQUksVUFBVSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3ZELFNBQVM7SUFDVCxRQUFRLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNsQixRQUFRLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQztBQUNsQjtJQUNBLFFBQVEsTUFBTSxNQUFNLEdBQUc7SUFDdkIsWUFBWSxNQUFNO0lBQ2xCLFlBQVksTUFBTTtJQUNsQixZQUFZLFdBQVc7SUFDdkIsWUFBWSxVQUFVO0lBQ3RCLFNBQVMsQ0FBQztBQUNWO0lBQ0EsUUFBUSxNQUFNLElBQUksR0FBRyxJQUFJLFVBQVUsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2pELFFBQVEsS0FBSyxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2pEO0lBQ0EsUUFBUSxJQUFJLE1BQU0sR0FBRyxDQUFDLENBQUM7SUFDdkIsUUFBUSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtJQUN6QyxZQUFZLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsU0FBUztJQUNsQyxZQUFZLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO0lBQ2hELGdCQUFnQixJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLElBQUksQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLHNCQUFzQixFQUFFLFdBQVcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2hJLGdCQUFnQixNQUFNLENBQUMsR0FBRztJQUMxQixvQkFBb0IsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUs7SUFDOUMsd0JBQXdCLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDcEMsd0JBQXdCLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJO0lBQzNDLHFCQUFxQixFQUFFLE1BQU0sQ0FBQyxJQUFJO0lBQ2xDLGlCQUFpQixDQUFDO0lBQ2xCLGdCQUFnQixJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUU7SUFDckMsb0JBQW9CLFFBQVEsQ0FBQyxHQUFHO0lBQ2hDLHdCQUF3QixLQUFLLENBQUMsS0FBSztJQUNuQyw0QkFBNEIsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN4Qyw0QkFBNEIsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxFQUFFLENBQUMsRUFBRTtJQUN0RCx5QkFBeUI7SUFDekIsd0JBQXdCLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEVBQUU7SUFDMUMscUJBQXFCLENBQUM7SUFDdEIsaUJBQWlCLE1BQU07SUFDdkIsb0JBQW9CLFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzNELGlCQUFpQjtJQUNqQixnQkFBZ0IsTUFBTSxHQUFHLENBQUM7SUFDMUIsYUFBYTtJQUNiLFNBQVM7QUFDVDtJQUNBLFFBQVEsSUFBSSxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRTtJQUMxQixZQUFZLE1BQU0sSUFBSSxHQUFHLEVBQUUsQ0FBQztJQUM1QixZQUFZLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDL0QsWUFBWSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDO0lBQ2pFLFlBQVksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ3JFLFlBQVksRUFBRSxHQUFHLENBQUMsQ0FBQztJQUNuQixZQUFZLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDbkIsWUFBWSxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDdEIsWUFBWSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtJQUM3QyxnQkFBZ0IsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRTtJQUM3QixvQkFBb0IsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUU7SUFDcEUsd0JBQXdCLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsRUFBRSxDQUFDO0lBQzVDLHFCQUFxQixDQUFDLENBQUMsQ0FBQztJQUN4QixvQkFBb0IsRUFBRSxJQUFJLEtBQUssQ0FBQztJQUNoQyxvQkFBb0IsU0FBUztJQUM3QixpQkFBaUI7SUFDakIsZ0JBQWdCLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sSUFBSSxDQUFDLEVBQUU7SUFDeEMsb0JBQW9CLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFO0lBQ25FLHdCQUF3QixDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsTUFBTSxFQUFFLEVBQUUsQ0FBQztJQUM1Qyx3QkFBd0IsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxFQUFFLENBQUM7SUFDNUMsd0JBQXdCLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDO0lBQzFDLHdCQUF3QixDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsTUFBTSxFQUFFLEVBQUUsQ0FBQztJQUM1QyxxQkFBcUIsQ0FBQyxDQUFDLENBQUM7SUFDeEIsaUJBQWlCLE1BQU07SUFDdkIsb0JBQW9CLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFO0lBQ3hFLHdCQUF3QixDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsTUFBTSxFQUFFLEVBQUUsQ0FBQztJQUM1Qyx3QkFBd0IsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxFQUFFLENBQUM7SUFDNUMsd0JBQXdCLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDO0lBQzFDLHdCQUF3QixDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDO0lBQzVDLHdCQUF3QixDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsTUFBTSxFQUFFLEVBQUUsQ0FBQztJQUM1QyxxQkFBcUIsQ0FBQyxDQUFDLENBQUM7SUFDeEIsaUJBQWlCO0lBQ2pCLGdCQUFnQixFQUFFLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUM7SUFDekMsZ0JBQWdCLEVBQUUsSUFBSSxLQUFLLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDO0lBQ2hELGdCQUFnQixFQUFFLElBQUksS0FBSyxDQUFDO0lBQzVCLGFBQWE7SUFDYixZQUFZLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxlQUFlLEVBQUUsTUFBTSxFQUFFO0lBQ3JFLGdCQUFnQixDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDeEIsZ0JBQWdCLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxNQUFNLENBQUM7SUFDakMsZ0JBQWdCLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztJQUN4QixhQUFhLENBQUMsQ0FBQyxDQUFDO0lBQ2hCLFlBQVksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7QUFDM0U7SUFDQSxZQUFZLE1BQU0sR0FBRyxHQUFHLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDekQsWUFBWSxPQUFPLEdBQUcsQ0FBQztJQUN2QixTQUFTLE1BQU07SUFDZixZQUFZLElBQUksR0FBRyxHQUFHLE1BQU0sQ0FBQyxDQUFDLGNBQWMsQ0FBQyxNQUFNLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxXQUFXLENBQUMsQ0FBQztJQUNwRixZQUFZLEdBQUcsR0FBRyxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztJQUN0QyxZQUFZLE9BQU8sR0FBRyxDQUFDO0lBQ3ZCLFNBQVM7SUFDVCxLQUFLO0FBQ0w7QUFDQTtJQUNBLElBQUksZUFBZSxXQUFXLEdBQUc7SUFDakMsUUFBUSxNQUFNLFVBQVUsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDO0FBQ2pDO0lBQ0EsUUFBUSxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzlCO0lBQ0EsUUFBUSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsVUFBVSxFQUFFO0lBQ3RELFlBQVksSUFBSSxNQUFNLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLGdCQUFnQixFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzVFLFlBQVksTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxDQUFDO0lBQ3pELFlBQVksTUFBTSxnQkFBZ0IsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDekMsU0FBUztJQUNULEtBQUs7QUFDTDtJQUNBLElBQUksZUFBZSxnQkFBZ0IsQ0FBQyxNQUFNLEVBQUUsT0FBTyxFQUFFO0lBQ3JELFFBQVEsTUFBTSxLQUFLLEdBQUcsTUFBTSxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxHQUFHLEVBQUUsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLE1BQU0sR0FBRyxVQUFVLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDeEcsUUFBUSxNQUFNLEtBQUssR0FBRyxNQUFNLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLEdBQUcsRUFBRSxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN6RixRQUFRLE1BQU0sV0FBVyxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsV0FBVyxDQUFDO0lBQ2hELFFBQVEsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sR0FBRyxXQUFXLENBQUMsQ0FBQztJQUNuRSxRQUFRLE1BQU0sVUFBVSxHQUFHLEVBQUUsQ0FBQztJQUM5QixRQUFRLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxFQUFFLEVBQUU7SUFDMUMsWUFBWSxJQUFJLENBQUMsQ0FBQztJQUNsQixZQUFZLElBQUksQ0FBQyxFQUFFLFdBQVcsQ0FBQyxDQUFDLEVBQUU7SUFDbEMsZ0JBQWdCLENBQUMsR0FBRyxnQkFBZ0IsQ0FBQztJQUNyQyxhQUFhLE1BQU07SUFDbkIsZ0JBQWdCLENBQUMsR0FBRyxPQUFPLEdBQUcsQ0FBQyxDQUFDLGdCQUFnQixDQUFDO0lBQ2pELGFBQWE7SUFDYixZQUFZLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxTQUFTO0FBQy9CO0lBQ0EsWUFBWSxNQUFNLFFBQVEsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQzdGLFlBQVksTUFBTSxRQUFRLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUM3RixZQUFZLFVBQVUsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsUUFBUSxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUM7SUFDbkUsU0FBUztBQUNUO0FBQ0E7SUFDQSxRQUFRLE1BQU0sTUFBTSxHQUFHLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQztBQUNyRDtJQUNBLFFBQVEsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7SUFDNUMsWUFBWSxRQUFRLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzFDLFNBQVM7SUFDVCxLQUFLO0FBQ0w7SUFDQSxJQUFJLGVBQWUsaUJBQWlCLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRTtJQUNuRCxRQUFRLE1BQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDO0lBQzdDLFFBQVEsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN0QyxRQUFRLE1BQU0sSUFBSSxHQUFHLEVBQUUsQ0FBQztJQUN4QixRQUFRLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDMUQsUUFBUSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQzFELFFBQVEsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDOUQsUUFBUSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsRUFBRSxFQUFFO0lBQ3RDLFlBQVksSUFBSSxDQUFDLElBQUksQ0FBQztJQUN0QixnQkFBZ0IsR0FBRyxFQUFFLE1BQU07SUFDM0IsZ0JBQWdCLE1BQU0sRUFBRSxlQUFlO0lBQ3ZDLGdCQUFnQixNQUFNLEVBQUU7SUFDeEIsb0JBQW9CLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQztJQUMzQyxvQkFBb0IsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDO0lBQzNDLG9CQUFvQixDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUM7SUFDN0MsaUJBQWlCO0lBQ2pCLGFBQWEsQ0FBQyxDQUFDO0lBQ2YsU0FBUztJQUNULFFBQVEsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLG1CQUFtQixFQUFFLE1BQU0sRUFBRTtJQUNyRSxZQUFZLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztJQUNwQixZQUFZLENBQUMsR0FBRyxFQUFFLE9BQU8sQ0FBQztJQUMxQixZQUFZLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztJQUNwQixTQUFTLENBQUMsQ0FBQyxDQUFDO0lBQ1osUUFBUSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxFQUFFO0lBQ25FLFlBQVksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBQ3BCLFlBQVksQ0FBQyxHQUFHLEVBQUUsT0FBTyxDQUFDO0lBQzFCLFlBQVksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBQ3BCLFNBQVMsQ0FBQyxDQUFDLENBQUM7SUFDWixRQUFRLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDbEU7SUFDQSxRQUFRLE1BQU0sR0FBRyxHQUFHLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDckQ7SUFDQSxRQUFRLE9BQU8sR0FBRyxDQUFDO0lBQ25CLEtBQUs7QUFDTDtJQUNBLElBQUksU0FBUyxPQUFPLENBQUMsQ0FBQyxFQUFFO0lBQ3hCLFFBQVEsTUFBTSxJQUFJLEdBQUcsSUFBSSxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdkMsUUFBUSxNQUFNLEtBQUssR0FBRyxJQUFJLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ2xGLFFBQVEsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3JDLFFBQVEsUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM5QixLQUFLO0FBQ0w7SUFDQTs7SUNwa0JlLGVBQWUscUJBQXFCLENBQUMsUUFBUSxFQUFFLGFBQWEsRUFBRSxNQUFNLEVBQUU7QUFDckY7SUFDQSxJQUFJLE1BQU0sQ0FBQyxFQUFFLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxZQUFZLENBQUMsR0FBRyxNQUFNdEIsV0FBd0IsQ0FBQyxRQUFRLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3JHLElBQUksTUFBTSxJQUFJLEdBQUcsTUFBTUssWUFBb0IsQ0FBQyxNQUFNLEVBQUUsWUFBWSxDQUFDLENBQUM7SUFDbEUsSUFBSSxJQUFJLElBQUksQ0FBQyxRQUFRLElBQUksU0FBUyxFQUFFO0lBQ3BDLFFBQVEsTUFBTSxJQUFJLEtBQUssQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO0lBQ3BELEtBQUs7QUFDTDtJQUNBLElBQUksTUFBTSxLQUFLLEdBQUcsTUFBTVgsYUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN6QyxJQUFJLE1BQU0sR0FBRyxHQUFHLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDaEMsSUFBSSxNQUFNLEdBQUcsR0FBRyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ2hDO0lBQ0EsSUFBSSxNQUFNLFNBQVMsR0FBRyxNQUFNcUQsYUFBdUIsQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLFlBQVksQ0FBQyxDQUFDO0FBQ2pGO0lBQ0EsSUFBSSxNQUFNLFdBQVcsR0FBRyxNQUFNekUsY0FBdUIsQ0FBQyxhQUFhLENBQUMsQ0FBQztBQUNyRTtJQUNBO0lBQ0E7SUFDQTtJQUNBLElBQUksTUFBTSxPQUFPLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ25DLElBQUksTUFBTSxPQUFPLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ2xDLElBQUksTUFBTSxPQUFPLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ2xDLElBQUksTUFBTSxPQUFPLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ25DLElBQUksTUFBTSxPQUFPLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ25DLElBQUksTUFBTSxPQUFPLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0FBQ25DO0lBQ0E7SUFDQSxJQUFJLElBQUksV0FBVyxDQUFDO0lBQ3BCLElBQUksV0FBVyxHQUFHLE1BQU1nQyxXQUF3QixDQUFDLE1BQU0sRUFBRSxZQUFZLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDMUUsSUFBSSxXQUFXLEdBQUcsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUMsQ0FBQztBQUMxRDtJQUNBLElBQUksTUFBTSxlQUFlLENBQUMsSUFBSSxFQUFFLFdBQVcsQ0FBQyxDQUFDO0FBQzdDO0lBQ0E7SUFDQTtJQUNBO0lBQ0EsSUFBSSxNQUFNLGVBQWUsR0FBRyxNQUFNQSxXQUF3QixDQUFDLE1BQU0sRUFBRSxZQUFZLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDcEY7SUFDQSxJQUFJLElBQUksY0FBYyxDQUFDO0lBQ3ZCLElBQUksY0FBYyxHQUFHLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsZUFBZSxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDdkYsSUFBSSxjQUFjLEdBQUcsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxjQUFjLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDdko7SUFDQTtJQUNBLElBQUksY0FBYyxHQUFHLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLGNBQWMsQ0FBQyxVQUFVLEdBQUcsR0FBRyxDQUFDLENBQUM7SUFDOUUsSUFBSSxjQUFjLEdBQUcsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDLFdBQVcsQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUNoRSxJQUFJLE1BQU0sZUFBZSxDQUFDLElBQUksRUFBRSxjQUFjLENBQUMsQ0FBQztBQUNoRDtJQUNBO0lBQ0E7SUFDQTtJQUNBLElBQUksSUFBSSxVQUFVLENBQUM7SUFDbkIsSUFBSSxVQUFVLEdBQUcsTUFBTUEsV0FBd0IsQ0FBQyxNQUFNLEVBQUUsWUFBWSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3pFLElBQUksVUFBVSxHQUFHLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDeEQsSUFBSSxNQUFNLGVBQWUsQ0FBQyxJQUFJLEVBQUUsVUFBVSxDQUFDLENBQUM7QUFDNUM7SUFDQTtJQUNBO0lBQ0E7SUFDQSxJQUFJLElBQUksVUFBVSxDQUFDO0lBQ25CLElBQUksVUFBVSxHQUFHLE1BQU1BLFdBQXdCLENBQUMsTUFBTSxFQUFFLFlBQVksRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN6RSxJQUFJLFVBQVUsR0FBRyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ3hELElBQUksTUFBTSxlQUFlLENBQUMsSUFBSSxFQUFFLFVBQVUsQ0FBQyxDQUFDO0FBQzVDO0lBQ0E7SUFDQTtJQUNBO0lBQ0EsSUFBSSxJQUFJLFdBQVcsQ0FBQztJQUNwQixJQUFJLFdBQVcsR0FBRyxNQUFNQSxXQUF3QixDQUFDLE1BQU0sRUFBRSxZQUFZLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDMUUsSUFBSSxXQUFXLEdBQUcsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUMxRCxJQUFJLE1BQU0sZUFBZSxDQUFDLElBQUksRUFBRSxXQUFXLENBQUMsQ0FBQztBQUM3QztJQUNBO0lBQ0E7SUFDQTtJQUNBLElBQUksSUFBSSxXQUFXLENBQUM7SUFDcEIsSUFBSSxXQUFXLEdBQUcsTUFBTUEsV0FBd0IsQ0FBQyxNQUFNLEVBQUUsWUFBWSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzFFLElBQUksV0FBVyxHQUFHLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDMUQsSUFBSSxNQUFNLGVBQWUsQ0FBQyxJQUFJLEVBQUUsV0FBVyxDQUFDLENBQUM7QUFDN0M7SUFDQSxJQUFJLE1BQU0sV0FBVyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDOUMsSUFBSSxNQUFNLFFBQVEsQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ25EO0lBQ0EsSUFBSSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7SUFDekQsUUFBUSxNQUFNLENBQUMsR0FBRyxTQUFTLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzdDLFFBQVEsTUFBTSxPQUFPLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ3BDLFFBQVEsTUFBTSxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNwQyxRQUFRLE1BQU0sT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDckMsUUFBUSxNQUFNLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3RDLFFBQVEsTUFBTSxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUM5QyxLQUFLO0FBQ0w7SUFDQSxJQUFJLE1BQU0sTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ3pCLElBQUksTUFBTSxXQUFXLENBQUMsS0FBSyxFQUFFLENBQUM7QUFDOUI7SUFDQSxJQUFJLGVBQWUsT0FBTyxDQUFDLENBQUMsRUFBRTtJQUM5QixRQUFRLE1BQU0sSUFBSSxHQUFHLElBQUksVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3pDLFFBQVEsS0FBSyxDQUFDLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQy9DLFFBQVEsTUFBTSxXQUFXLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3RDLEtBQUs7QUFDTDtJQUNBLElBQUksZUFBZSxPQUFPLENBQUMsQ0FBQyxFQUFFO0lBQzlCLFFBQVEsTUFBTSxJQUFJLEdBQUcsSUFBSSxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDekMsUUFBUSxLQUFLLENBQUMsRUFBRSxDQUFDLGlCQUFpQixDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDL0MsUUFBUSxNQUFNLFdBQVcsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdEMsS0FBSztBQUNMO0lBQ0EsSUFBSSxlQUFlLGVBQWUsQ0FBQyxTQUFTLEVBQUUsSUFBSSxFQUFFO0lBQ3BELFFBQVEsSUFBSSxFQUFFLENBQUM7SUFDZixRQUFRLElBQUksU0FBUyxJQUFJLElBQUksRUFBRTtJQUMvQixZQUFZLEVBQUUsR0FBRyxHQUFHLENBQUM7SUFDckIsU0FBUyxNQUFNO0lBQ2YsWUFBWSxFQUFFLEdBQUcsR0FBRyxDQUFDO0lBQ3JCLFNBQVM7QUFDVDtJQUNBLFFBQVEsTUFBTSxRQUFRLEdBQUcsSUFBSSxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDM0MsUUFBUSxNQUFNLFNBQVMsR0FBRyxJQUFJLFFBQVEsQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxVQUFVLEVBQUUsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ2xHLFFBQVEsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLFVBQVUsR0FBRyxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDNUQ7SUFDQSxRQUFRLE1BQU0sV0FBVyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUMxQyxRQUFRLE1BQU0sV0FBVyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN0QyxLQUFLO0FBQ0w7SUFDQSxJQUFJLGVBQWUsUUFBUSxDQUFDLENBQUMsRUFBRTtJQUMvQixRQUFRLE1BQU0sUUFBUSxHQUFHLElBQUksVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzNDLFFBQVEsTUFBTSxTQUFTLEdBQUcsSUFBSSxRQUFRLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsVUFBVSxFQUFFLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNsRyxRQUFRLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztBQUN6QztJQUNBLFFBQVEsTUFBTSxXQUFXLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzFDLEtBQUs7QUFDTDtBQUNBO0FBQ0E7SUFDQTs7SUMxSUE7SUFDQTtBQUNBO0lBQ0E7QUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0FBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtBQUNBO0lBQ0E7SUFDQTtJQUNBO0FBT0E7SUFDZSxlQUFlLHFCQUFxQixDQUFDLFdBQVcsRUFBRSxhQUFhLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUU7QUFDM0c7SUFDQSxJQUFJLE1BQU0sQ0FBQyxFQUFFLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxlQUFlLENBQUMsR0FBRyxNQUFNTixXQUF3QixDQUFDLFdBQVcsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDOUcsSUFBSSxNQUFNLFVBQVUsR0FBRyxNQUFNSyxZQUFvQixDQUFDLFNBQVMsRUFBRSxlQUFlLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDckYsSUFBSSxJQUFJLFVBQVUsQ0FBQyxRQUFRLElBQUksU0FBUyxFQUFFO0lBQzFDLFFBQVEsTUFBTSxJQUFJLEtBQUssQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO0lBQ3BELEtBQUs7QUFDTDtJQUNBLElBQUksTUFBTSxLQUFLLEdBQUcsTUFBTVgsYUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMvQyxJQUFJLE1BQU0sR0FBRyxHQUFHLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDaEMsSUFBSSxNQUFNLEdBQUcsR0FBRyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ2hDO0lBQ0EsSUFBSSxNQUFNLFlBQVksR0FBRyxNQUFNcUQsYUFBdUIsQ0FBQyxTQUFTLEVBQUUsS0FBSyxFQUFFLGVBQWUsQ0FBQyxDQUFDO0lBQzFGLElBQUksTUFBTSxZQUFZLEdBQUcsRUFBRSxDQUFDO0FBQzVCO0lBQ0EsSUFBSSxNQUFNLFdBQVcsR0FBRyxNQUFNMUUsWUFBcUIsQ0FBQyxhQUFhLENBQUMsQ0FBQztBQUNuRTtJQUNBLElBQUksV0FBVyxDQUFDLEdBQUc7SUFDbkIsUUFBUSxHQUFHLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDO0lBQ3JCLFFBQVEsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxVQUFVLENBQUMsS0FBSztJQUNoQyxRQUFRLENBQUMsR0FBRyxHQUFHLEVBQUUsVUFBVSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7SUFDekMsUUFBUSxDQUFDLEdBQUcsR0FBRyxDQUFDLFVBQVUsQ0FBQyxLQUFLO0lBQ2hDLFFBQVEsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxVQUFVLENBQUMsS0FBSztJQUNoQyxRQUFRLENBQUMsR0FBRyxHQUFHLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQztBQUNqQztJQUNBO0lBQ0EsSUFBSSxZQUFZLENBQUMsTUFBTSxJQUFJLE1BQU0sV0FBVyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUN0RDtJQUNBLElBQUksTUFBTSxjQUFjLEdBQUcsTUFBTSxXQUFXLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDekQsSUFBSSxZQUFZLENBQUMsYUFBYSxHQUFHLEVBQUUsQ0FBQztJQUNwQyxJQUFJLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxjQUFjLEVBQUUsQ0FBQyxFQUFFLEVBQUU7SUFDekMsUUFBUSxNQUFNLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxFQUFFLEVBQUUsQ0FBQztJQUMvQixRQUFRLENBQUMsQ0FBQyxVQUFVLEdBQUcsTUFBTSxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDakQsUUFBUSxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksR0FBRyxNQUFNLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNqRCxRQUFRLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxHQUFHLE1BQU0sTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ2xELFFBQVEsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsTUFBTSxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDbkQsUUFBUSxDQUFDLENBQUMsVUFBVSxHQUFHLE1BQU0sV0FBVyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNsRCxRQUFRLElBQUksQ0FBQyxDQUFDLFlBQVksQ0FBQyxhQUFhLENBQUMsTUFBTSxFQUFFO0lBQ2pELFlBQVksQ0FBQyxDQUFDLElBQUksR0FBRyxZQUFZLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUN4RCxZQUFZLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUU7SUFDM0IsZ0JBQWdCLENBQUMsQ0FBQyxVQUFVLEdBQUcsWUFBWSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUM7SUFDeEUsZ0JBQWdCLENBQUMsQ0FBQyxnQkFBZ0IsR0FBRyxZQUFZLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDO0lBQ3BGLGFBQWE7SUFDYixZQUFZLElBQUksWUFBWSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUU7SUFDcEQsZ0JBQWdCLENBQUMsQ0FBQyxJQUFJLEdBQUcsWUFBWSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDNUQsYUFBYTtJQUNiLFNBQVM7SUFDVCxRQUFRLFlBQVksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzNDLEtBQUs7QUFDTDtJQUNBLElBQUksSUFBSSxDQUFDb0QsV0FBZ0IsQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFFLFlBQVksQ0FBQyxNQUFNLENBQUMsRUFBRTtJQUNyRSxRQUFRLElBQUksTUFBTSxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsOERBQThELENBQUMsQ0FBQztJQUNqRyxRQUFRLE9BQU8sS0FBSyxDQUFDO0lBQ3JCLEtBQUs7QUFDTDtJQUNBLElBQUksSUFBSSxZQUFZLENBQUMsYUFBYSxDQUFDLE1BQU0sR0FBRyxZQUFZLENBQUMsYUFBYSxDQUFDLE1BQU0sRUFBRTtJQUMvRSxRQUFRLElBQUksTUFBTSxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsdURBQXVELENBQUMsQ0FBQztJQUMxRixRQUFRLE9BQU8sS0FBSyxDQUFDO0lBQ3JCLEtBQUs7QUFDTDtJQUNBLElBQUksS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFlBQVksQ0FBQyxhQUFhLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO0lBQzVELFFBQVEsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFlBQVksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLEVBQUUsWUFBWSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFO0lBQ2hHLFlBQVksSUFBSSxNQUFNLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLHNCQUFzQixFQUFFLENBQUMsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDO0lBQ2xGLFlBQVksT0FBTyxLQUFLLENBQUM7SUFDekIsU0FBUztJQUNULEtBQUs7QUFDTDtBQUNBO0lBQ0E7SUFDQSxJQUFJLElBQUksSUFBSSxFQUFFO0lBQ2QsUUFBUSxLQUFLLElBQUksQ0FBQyxDQUFDLFlBQVksQ0FBQyxhQUFhLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxZQUFZLENBQUMsYUFBYSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtJQUNoRyxZQUFZLFlBQVksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztJQUN0RCxTQUFTO0lBQ1QsS0FBSztBQUNMO0lBQ0EsSUFBSSxNQUFNLFNBQVMsR0FBRyxNQUFNakIsYUFBMEIsQ0FBQyxXQUFXLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNuRixJQUFJLFdBQVcsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDO0FBQ3hCO0lBQ0E7SUFDQSxJQUFJLFdBQVcsQ0FBQyxHQUFHLElBQUksR0FBRyxDQUFDO0lBQzNCLElBQUksV0FBVyxDQUFDLEdBQUcsSUFBSSxHQUFHLENBQUM7SUFDM0IsSUFBSSxXQUFXLENBQUMsR0FBRyxJQUFJLEdBQUcsQ0FBQztJQUMzQixJQUFJLFdBQVcsQ0FBQyxHQUFHLElBQUksR0FBRyxDQUFDO0lBQzNCLElBQUksVUFBVSxDQUFDLFVBQVUsR0FBRyxNQUFNLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUN0RCxJQUFJLFVBQVUsQ0FBQyxVQUFVLEdBQUcsTUFBTSxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDdEQsSUFBSSxNQUFNd0MsV0FBcUIsQ0FBQyxTQUFTLEVBQUUsVUFBVSxDQUFDLENBQUM7QUFDdkQ7SUFDQTtJQUNBLElBQUksTUFBTSxHQUFHLEdBQUcsTUFBTSxXQUFXLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDOUMsSUFBSSxJQUFJLEdBQUcsSUFBSSxVQUFVLENBQUMsT0FBTyxFQUFFLENBQUMsRUFBRTtJQUN0QyxRQUFRLElBQUksTUFBTSxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsZ0NBQWdDLENBQUMsQ0FBQztJQUNuRSxRQUFRLE1BQU0sU0FBUyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ2xDLFFBQVEsT0FBTyxLQUFLLENBQUM7SUFDckIsS0FBSztJQUNMLElBQUksV0FBVyxDQUFDLEdBQUcsSUFBSSxHQUFHLEVBQUUsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNsRCxJQUFJLE1BQU1ULFdBQXdCLENBQUMsU0FBUyxFQUFFLGVBQWUsRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDN0U7SUFDQTtJQUNBLElBQUksTUFBTUEsV0FBd0IsQ0FBQyxTQUFTLEVBQUUsZUFBZSxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUM3RTtJQUNBO0lBQ0EsSUFBSSxNQUFNLEVBQUUsR0FBRyxNQUFNLFdBQVcsQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUM3QyxJQUFJLElBQUksRUFBRSxJQUFJLFVBQVUsQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUFFO0lBQ3ZDLFFBQVEsSUFBSSxNQUFNLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQywrQkFBK0IsQ0FBQyxDQUFDO0lBQ2xFLFFBQVEsTUFBTSxTQUFTLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDbEMsUUFBUSxPQUFPLEtBQUssQ0FBQztJQUNyQixLQUFLO0lBQ0wsSUFBSSxJQUFJLEtBQUssQ0FBQztJQUNkLElBQUksTUFBTSxRQUFRLEdBQUcsTUFBTSxXQUFXLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxVQUFVLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDM0UsSUFBSSxNQUFNLFVBQVUsR0FBRyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzVELElBQUksS0FBSyxHQUFHLElBQUksVUFBVSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDdEQsSUFBSSxLQUFLLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQzFCLElBQUksS0FBSyxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLEdBQUcsRUFBRSxVQUFVLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDakYsSUFBSSxNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDNUQsSUFBSSxNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDOUQsSUFBSSxLQUFLLEdBQUcsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQzNGLElBQUksS0FBSyxHQUFHLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDckUsSUFBSSxNQUFNL0MsaUJBQThCLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3ZELElBQUksTUFBTSxTQUFTLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2pDLElBQUksTUFBTUMsZUFBNEIsQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUNsRDtJQUNBO0lBQ0EsSUFBSSxNQUFNLEVBQUUsR0FBRyxNQUFNLFdBQVcsQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUM3QyxJQUFJLElBQUksRUFBRSxLQUFLLFVBQVUsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRTtJQUN2RCxRQUFRLElBQUksTUFBTSxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsK0JBQStCLENBQUMsQ0FBQztJQUNsRSxRQUFRLE1BQU0sU0FBUyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ2xDLFFBQVEsT0FBTyxLQUFLLENBQUM7SUFDckIsS0FBSztJQUNMLElBQUksSUFBSSxLQUFLLENBQUM7SUFDZCxJQUFJLEtBQUssR0FBRyxNQUFNLFdBQVcsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLFVBQVUsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2hGLElBQUksS0FBSyxHQUFHLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDOUMsSUFBSSxNQUFNRCxpQkFBOEIsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDdkQsSUFBSSxNQUFNLFNBQVMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDakMsSUFBSSxNQUFNQyxlQUE0QixDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQ2xEO0lBQ0E7SUFDQSxJQUFJLE1BQU0sRUFBRSxHQUFHLE1BQU0sV0FBVyxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQzdDLElBQUksSUFBSSxFQUFFLElBQUksVUFBVSxDQUFDLEtBQUssRUFBRTtJQUNoQyxRQUFRLElBQUksTUFBTSxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsK0JBQStCLENBQUMsQ0FBQztJQUNsRSxRQUFRLE1BQU0sU0FBUyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ2xDLFFBQVEsT0FBTyxLQUFLLENBQUM7SUFDckIsS0FBSztJQUNMLElBQUksV0FBVyxDQUFDLEdBQUcsSUFBSSxHQUFHLEVBQUUsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzlDLElBQUksTUFBTThDLFdBQXdCLENBQUMsU0FBUyxFQUFFLGVBQWUsRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDN0U7SUFDQTtJQUNBLElBQUksTUFBTSxHQUFHLEdBQUcsTUFBTSxXQUFXLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDOUMsSUFBSSxJQUFJLEdBQUcsSUFBSSxVQUFVLENBQUMsS0FBSyxFQUFFO0lBQ2pDLFFBQVEsSUFBSSxNQUFNLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxnQ0FBZ0MsQ0FBQyxDQUFDO0lBQ25FLFFBQVEsTUFBTSxTQUFTLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDbEMsUUFBUSxPQUFPLEtBQUssQ0FBQztJQUNyQixLQUFLO0lBQ0wsSUFBSSxXQUFXLENBQUMsR0FBRyxJQUFJLEdBQUcsRUFBRSxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDOUMsSUFBSSxNQUFNQSxXQUF3QixDQUFDLFNBQVMsRUFBRSxlQUFlLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQzdFO0lBQ0E7SUFDQSxJQUFJLE1BQU0sR0FBRyxHQUFHLE1BQU0sV0FBVyxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQzlDLElBQUksSUFBSSxHQUFHLElBQUksVUFBVSxDQUFDLEtBQUssRUFBRTtJQUNqQyxRQUFRLElBQUksTUFBTSxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsZ0NBQWdDLENBQUMsQ0FBQztJQUNuRSxRQUFRLE1BQU0sU0FBUyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ2xDLFFBQVEsT0FBTyxLQUFLLENBQUM7SUFDckIsS0FBSztJQUNMLElBQUksV0FBVyxDQUFDLEdBQUcsSUFBSSxHQUFHLEVBQUUsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzlDLElBQUksTUFBTUEsV0FBd0IsQ0FBQyxTQUFTLEVBQUUsZUFBZSxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUM3RTtJQUNBLElBQUksTUFBTVUsY0FBd0IsQ0FBQyxTQUFTLEVBQUUsS0FBSyxFQUFFLFlBQVksQ0FBQyxDQUFDO0FBQ25FO0lBQ0EsSUFBSSxNQUFNLFdBQVcsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUM5QixJQUFJLE1BQU0sU0FBUyxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQzVCLElBQUksTUFBTSxTQUFTLENBQUMsS0FBSyxFQUFFLENBQUM7QUFDNUI7SUFDQSxJQUFJLE9BQU8sSUFBSSxDQUFDO0FBQ2hCO0lBQ0EsSUFBSSxlQUFlLE1BQU0sQ0FBQyxFQUFFLEVBQUU7SUFDOUIsUUFBUSxNQUFNLElBQUksR0FBRyxNQUFNLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3BELFFBQVEsT0FBTyxLQUFLLENBQUMsRUFBRSxDQUFDLG1CQUFtQixDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNyRCxLQUFLO0FBQ0w7SUFDQSxJQUFJLGVBQWUsTUFBTSxDQUFDLEVBQUUsRUFBRTtJQUM5QixRQUFRLE1BQU0sSUFBSSxHQUFHLE1BQU0sRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDcEQsUUFBUSxPQUFPLEtBQUssQ0FBQyxFQUFFLENBQUMsbUJBQW1CLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3JELEtBQUs7QUFDTDtBQUNBO0lBQ0EsSUFBSSxTQUFTLG1CQUFtQixDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUU7SUFDekMsUUFBUSxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLFVBQVUsS0FBSyxFQUFFLENBQUMsVUFBVSxDQUFDLEVBQUUsT0FBTyxLQUFLLENBQUM7SUFDeEUsUUFBUSxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUssRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxPQUFPLEtBQUssQ0FBQztJQUN4RSxRQUFRLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxFQUFFLE9BQU8sS0FBSyxDQUFDO0lBQ3pFLFFBQVEsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEVBQUUsT0FBTyxLQUFLLENBQUM7SUFDMUUsUUFBUSxJQUFJLENBQUN4QixXQUFnQixDQUFDLEVBQUUsQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxFQUFFLE9BQU8sS0FBSyxDQUFDO0lBQzFFLFFBQVEsT0FBTyxJQUFJLENBQUM7SUFDcEIsS0FBSztBQUNMO0FBQ0E7SUFDQTs7SUMzTkE7SUFDQTtBQUNBO0lBQ0E7QUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0FBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtBQUNBO0lBQ0E7SUFDQTtJQUNBO0lBUUEsTUFBTSxTQUFTLEdBQUdJLFdBQWMsQ0FBQztBQUdqQztBQUNBO0FBQ0E7SUFDZSxlQUFlLG9CQUFvQixDQUFDLFlBQVksRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRTtBQUNyRztJQUNBLElBQUksSUFBSSxFQUFFLENBQUM7SUFDWCxJQUFJLE1BQU12QyxtQkFBTyxDQUFDLEtBQUssRUFBRSxDQUFDO0FBQzFCO0lBQ0EsSUFBSSxNQUFNLENBQUMsRUFBRSxFQUFFLFFBQVEsQ0FBQyxHQUFHLE1BQU1VLFdBQXdCLENBQUMsWUFBWSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNuRixJQUFJLE1BQU0sSUFBSSxHQUFHLE1BQU1LLFlBQW9CLENBQUMsRUFBRSxFQUFFLFFBQVEsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNqRSxJQUFJLElBQUksSUFBSSxDQUFDLFFBQVEsSUFBSSxTQUFTLEVBQUU7SUFDcEMsUUFBUSxNQUFNLElBQUksS0FBSyxDQUFDLDBCQUEwQixDQUFDLENBQUM7SUFDcEQsS0FBSztBQUNMO0lBQ0EsSUFBSSxNQUFNLEtBQUssR0FBRyxNQUFNWCxhQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3pDLElBQUksTUFBTSxHQUFHLEdBQUcsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUNoQztJQUNBLElBQUksTUFBTSxTQUFTLEdBQUcsTUFBTXFELGFBQXVCLENBQUMsRUFBRSxFQUFFLEtBQUssRUFBRSxRQUFRLENBQUMsQ0FBQztBQUN6RTtJQUNBLElBQUksTUFBTSxpQkFBaUIsR0FBR3pELG1CQUFPLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDMUMsSUFBSSxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQy9DLElBQUksSUFBSSxRQUFRLEdBQUcsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDOUIsSUFBSSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7SUFDekQsUUFBUSxNQUFNLENBQUMsR0FBRyxTQUFTLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzdDLFFBQVEsTUFBTSxTQUFTLEdBQUc0RCxXQUFnQixDQUFDLGlCQUFpQixDQUFDLENBQUM7QUFDOUQ7SUFDQSxRQUFRLE1BQU0sQ0FBQyxTQUFTLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDL0MsUUFBUSxNQUFNLENBQUMsU0FBUyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ2hEO0lBQ0EsUUFBUSxJQUFJLENBQUN6QixXQUFnQixDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUMsVUFBVSxDQUFDLEVBQUU7SUFDakUsWUFBWSxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQywyQkFBMkIsQ0FBQyxDQUFDLENBQUM7SUFDbkUsWUFBWSxPQUFPLEtBQUssQ0FBQztJQUN6QixTQUFTO0FBQ1Q7SUFDQSxRQUFRLE1BQU0sV0FBVyxHQUFHLFFBQVEsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0FBQzFEO0lBQ0EsUUFBUSxFQUFFLEdBQUcsTUFBTSxTQUFTLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLFdBQVcsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzlGLFFBQVEsSUFBSSxFQUFFLEtBQUssSUFBSSxFQUFFO0lBQ3pCLFlBQVksT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsb0RBQW9ELENBQUMsQ0FBQyxDQUFDO0lBQzVGLFlBQVksT0FBTyxLQUFLLENBQUM7SUFDekIsU0FBUztBQUNUO0lBQ0EsUUFBUSxFQUFFLEdBQUcsTUFBTSxTQUFTLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUMsVUFBVSxFQUFFLFdBQVcsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3pGLFFBQVEsSUFBSSxFQUFFLEtBQUssSUFBSSxFQUFFO0lBQ3pCLFlBQVksT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsNkNBQTZDLENBQUMsQ0FBQyxDQUFDO0lBQ3JGLFlBQVksT0FBTyxLQUFLLENBQUM7SUFDekIsU0FBUztBQUNUO0lBQ0EsUUFBUSxJQUFJLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxFQUFFO0lBQ3pCLFlBQVksTUFBTSxHQUFHLEdBQUcsTUFBTVIsbUJBQXdCLENBQUMsQ0FBQyxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUN6RixZQUFZLE1BQU0sZUFBZSxHQUFHLEtBQUssQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzFELFlBQVksTUFBTSxhQUFhLEdBQUcsS0FBSyxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUMzRSxZQUFZLE1BQU0sY0FBYyxHQUFHLEtBQUssQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLGFBQWEsRUFBRSxlQUFlLENBQUMsQ0FBQyxDQUFDO0lBQ3ZHLFlBQVksSUFBSSxLQUFLLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxJQUFJLEVBQUU7SUFDbkUsZ0JBQWdCLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLDBDQUEwQyxDQUFDLENBQUMsQ0FBQztJQUN0RixnQkFBZ0IsT0FBTyxLQUFLLENBQUM7SUFDN0IsYUFBYTtJQUNiLFlBQVksSUFBSSxLQUFLLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxjQUFjLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsS0FBSyxJQUFJLEVBQUU7SUFDckUsZ0JBQWdCLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLDJDQUEyQyxDQUFDLENBQUMsQ0FBQztJQUN2RixnQkFBZ0IsT0FBTyxLQUFLLENBQUM7SUFDN0IsYUFBYTtJQUNiLFNBQVM7QUFDVDtJQUNBLFFBQVEsVUFBVSxDQUFDLGlCQUFpQixFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztBQUNoRDtJQUNBLFFBQVEsTUFBTSxrQkFBa0IsR0FBRzNCLG1CQUFPLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDL0MsUUFBUSxVQUFVLENBQUMsa0JBQWtCLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ2pEO0lBQ0EsUUFBUSxDQUFDLENBQUMsZ0JBQWdCLEdBQUcsa0JBQWtCLENBQUMsTUFBTSxFQUFFLENBQUM7QUFDekQ7SUFDQSxRQUFRLFFBQVEsR0FBRyxDQUFDLENBQUMsVUFBVSxDQUFDO0lBQ2hDLEtBQUs7QUFDTDtBQUNBO0lBQ0EsSUFBSSxNQUFNLENBQUMsRUFBRSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsWUFBWSxDQUFDLEdBQUcsTUFBTVUsV0FBd0IsQ0FBQyxZQUFZLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3pHLElBQUksTUFBTSxRQUFRLEdBQUcsTUFBTUssWUFBb0IsQ0FBQyxNQUFNLEVBQUUsWUFBWSxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQzdFO0lBQ0EsSUFBSSxJQUFJLFFBQVEsQ0FBQyxRQUFRLElBQUksU0FBUyxFQUFFO0lBQ3hDLFFBQVEsTUFBTSxJQUFJLEtBQUssQ0FBQyw4QkFBOEIsQ0FBQyxDQUFDO0lBQ3hELEtBQUs7QUFDTDtJQUNBLElBQUksTUFBTSxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDekMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDMUMsV0FBVyxRQUFRLENBQUMsR0FBRyxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUM7SUFDcEMsV0FBVyxRQUFRLENBQUMsR0FBRyxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUM7SUFDcEMsSUFBSTtJQUNKLFFBQVEsSUFBSSxNQUFNLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDO0lBQy9ELFFBQVEsT0FBTyxLQUFLLENBQUM7SUFDckIsS0FBSztBQUNMO0lBQ0EsSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsS0FBSztJQUN2QyxXQUFXLFFBQVEsQ0FBQyxPQUFPLEtBQUssSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUM3QyxXQUFXLFFBQVEsQ0FBQyxVQUFVLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUNsRCxJQUFJO0lBQ0osUUFBUSxJQUFJLE1BQU0sRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLHdDQUF3QyxDQUFDLENBQUM7SUFDM0UsUUFBUSxPQUFPLEtBQUssQ0FBQztJQUNyQixLQUFLO0FBQ0w7SUFDQSxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLFFBQVEsQ0FBQyxVQUFVLENBQUMsRUFBRTtJQUM1RCxRQUFRLElBQUksTUFBTSxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsMEJBQTBCLENBQUMsQ0FBQztJQUM3RCxRQUFRLE9BQU8sS0FBSyxDQUFDO0lBQ3JCLEtBQUs7SUFDTCxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLFFBQVEsQ0FBQyxTQUFTLENBQUMsRUFBRTtJQUMxRCxRQUFRLElBQUksTUFBTSxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMseUJBQXlCLENBQUMsQ0FBQztJQUM1RCxRQUFRLE9BQU8sS0FBSyxDQUFDO0lBQ3JCLEtBQUs7SUFDTCxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLFFBQVEsQ0FBQyxTQUFTLENBQUMsRUFBRTtJQUMxRCxRQUFRLElBQUksTUFBTSxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMseUJBQXlCLENBQUMsQ0FBQztJQUM1RCxRQUFRLE9BQU8sS0FBSyxDQUFDO0lBQ3JCLEtBQUs7SUFDTCxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLFFBQVEsQ0FBQyxVQUFVLENBQUMsRUFBRTtJQUM1RCxRQUFRLElBQUksTUFBTSxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsMEJBQTBCLENBQUMsQ0FBQztJQUM3RCxRQUFRLE9BQU8sS0FBSyxDQUFDO0lBQ3JCLEtBQUs7SUFDTCxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLFFBQVEsQ0FBQyxFQUFFO0lBQ2pELFFBQVEsSUFBSSxNQUFNLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO0lBQzdELFFBQVEsT0FBTyxLQUFLLENBQUM7SUFDckIsS0FBSztJQUNMLElBQUksRUFBRSxHQUFHLE1BQU0sU0FBUyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxRQUFRLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUs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R0FBRyxDQUFDLENBQUMsQ0FBQztJQUMxRSxJQUFJLGVBQWUsQ0FBQyxLQUFLLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLGVBQWUsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNoSSxJQUFJQyxNQUFZLENBQUMsZ0JBQWdCLEVBQUUsS0FBSyxFQUFFLGVBQWUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdEUsSUFBSUEsTUFBWSxDQUFDLGdCQUFnQixFQUFFLEtBQUssRUFBRSxlQUFlLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3ZFLElBQUksZUFBZSxDQUFDLFVBQVUsR0FBRyxnQkFBZ0IsQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUMzRCxJQUFJLGVBQWUsQ0FBQyxLQUFLLENBQUMsS0FBSyxHQUFHLFFBQVEsQ0FBQyxLQUFLLEVBQUUsZUFBZSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQzlFLElBQUksZUFBZSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsZUFBZSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0FBQ2xJO0lBQ0EsSUFBSSxJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsZUFBZSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN0RixJQUFJLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxlQUFlLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFD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QyxDQUFDLENBQUMsQ0FBQztJQUN6QyxJQUFJLE1BQU0sR0FBRyxHQUFHLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFDbEM7SUFDQSxJQUFJLE1BQU0sU0FBUyxHQUFHLE1BQU0sS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUMzRTtJQUNBLElBQUksSUFBSSxJQUFJLEdBQUc7SUFDZixRQUFRLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUTtJQUMvQixRQUFRLEtBQUssRUFBRSxLQUFLLENBQUMsSUFBSTtJQUN6QixRQUFRLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTztBQUM3QjtJQUNBLFFBQVEsVUFBVSxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUM7QUFDdEQ7SUFDQSxRQUFRLFNBQVMsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQ3BELFFBQVEsVUFBVSxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUM7SUFDdEQsUUFBUSxVQUFVLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQztBQUN0RDtJQUNBLFFBQVEsZUFBZSxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQztJQUNyRCxLQUFLLENBQUM7QUFDTjtJQUNBO0lBQ0E7SUFDQSxJQUFJLE1BQU1HLHNCQUFtQyxDQUFDLEVBQUUsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDL0QsSUFBSSxJQUFJLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQztJQUNqQixJQUFJLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsRUFBRSxFQUFFO0lBQzVDLFFBQVEsTUFBTSxJQUFJLEdBQUcsTUFBTSxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3hDLFFBQVEsTUFBTSxDQUFDLEdBQUcsS0FBSyxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDMUMsUUFBUSxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN4QixLQUFLO0lBQ0wsSUFBSSxNQUFNQyxjQUEyQixDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQzFDO0lBQ0EsSUFBSSxJQUFJLEdBQUcxQyxrQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNsQztJQUNBLElBQUksT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztBQUNEO0FBQ0E7SUFDQSxlQUFlLE9BQU8sQ0FBQyxJQUFJLEVBQUU7SUFDN0IsSUFBSSxNQUFNLEtBQUssR0FBRyxNQUFNc0MsYUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN6QztJQUNBLElBQUksSUFBSSxJQUFJLEdBQUc7SUFDZixRQUFRLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUTtJQUMvQixRQUFRLEtBQUssRUFBRSxLQUFLLENBQUMsSUFBSTtJQUN6QixRQUFRLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTztJQUM3QixRQUFRLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSztBQUN6QjtJQUNBLFFBQVEsRUFBRSxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7SUFDdEMsUUFBUSxFQUFFLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztBQUN0QztJQUNBLFFBQVEsRUFBRSxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7SUFDdEMsUUFBUSxFQUFFLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztJQUN0QyxRQUFRLEVBQUUsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO0lBQ3RDLFFBQVEsRUFBRSxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7SUFDdEMsUUFBUSxFQUFFLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztJQUN0QyxRQUFRLEVBQUUsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO0lBQ3RDLFFBQVEsRUFBRSxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7SUFDdEMsUUFBUSxFQUFFLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztBQUN0QztJQUNBLFFBQVEsR0FBRyxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUM7QUFDeEM7SUFDQSxRQUFRLENBQUMsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDcEQsS0FBSyxDQUFDO0FBQ047SUFDQSxJQUFJLElBQUksR0FBR3RDLGtCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ2xDO0lBQ0EsSUFBSSxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0FBQ0Q7SUFDQSxlQUFlLGNBQWMsQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFO0lBQzVDLElBQUksTUFBTSxLQUFLLEdBQUcsTUFBTXNDLGFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDekM7SUFDQSxJQUFJLElBQUksSUFBSSxHQUFHO0lBQ2YsUUFBUSxRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVE7SUFDL0IsUUFBUSxLQUFLLEVBQUUsS0FBSyxDQUFDLElBQUk7SUFDekIsUUFBUSxPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU87SUFDN0IsUUFBUSxLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUs7QUFDekI7SUFDQSxRQUFRLEVBQUUsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO0lBQ3RDLFFBQVEsRUFBRSxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7QUFDdEM7SUFDQSxRQUFRLENBQUMsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDcEQ7SUFDQSxRQUFRLEVBQUUsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO0lBQ3RDLFFBQVEsRUFBRSxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7SUFDdEMsUUFBUSxFQUFFLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztJQUN0QyxRQUFRLEVBQUUsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO0FBQ3RDO0lBQ0EsUUFBUSxHQUFHLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQztBQUN4QztJQUNBLFFBQVEsRUFBRSxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7SUFDdEMsS0FBSyxDQUFDO0FBQ047SUFDQSxJQUFJLE9BQU90QyxrQkFBZ0IsQ0FBQyxJQUFJLENB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QUUsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ3hDLElBQUksSUFBSSxVQUFVLENBQUMsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDekMsSUFBSSxNQUFNLGVBQWUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ3hDLElBQUksSUFBSSxVQUFVLENBQUMsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDekMsSUFBSSxNQUFNLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ2hDLElBQUksSUFBSSxVQUFVLENBQUMsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDekMsSUFBSSxNQUFNLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ2hDLElBQUksSUFBSSxVQUFVLENBQUMsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDekMsSUFBSSxNQUFNLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ2hDLElBQUksSUFBSSxVQUFVLENBQUMsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDekMsSUFBSSxNQUFNLFNBQVMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ2pDLElBQUksSUFBSSxVQUFVLENBQUMsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDekMsSUFBSSxNQUFNLFNBQVMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ2pDLElBQUksSUFBSSxVQUFVLENBQUMsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDekMsSUFB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O0lBQzlCLFlBQVksTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN0RCxZQUFZLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDL0MsWUFBWSxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQy9DLFlBQVksTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDMUMsWUFBWSxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3JELFlBQVksZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDcEUsU0FBUztBQUNUO0lBQ0EsUUFBUSxTQUFTLHdCQUF3QixDQUFDLEVBQUUsRUFBRTtJQUM5QyxZQUFZLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUM7SUFDNUIsWUFBWSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDdEIsWUFBWSxNQUFNLEVBQUUsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3ZDLFlBQVksS0FBSyxJQUFJ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QUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzNELFlBQVksUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUMzRDtJQUNBO0lBQ0EsWUFBWSxPQUFPLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUM7SUFDakQsWUFBWSxPQUFPLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUM7SUFDakQsWUFBWSxNQUFNLE1BQU0sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDeEMsWUFBWSxJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMzRyxTQUFTO0lBQ1QsUUFBUSxNQUFNLGVBQWUsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN0QyxLQUFLO0FBQ0w7SUFDQSxJQUFJLGVBQWUsVUFBVSxDQUFDLFVBQVUsRUFBRSxJQUFJLEVBQUU7SUFDaEQsUUFBUSxNQUFNLEtBQUssR0FBRyxJQUFJLFNBQVMsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3RELFFBQVEsTUFBTSxZQUFZLElBQUksSUFBSSxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDdkQsUUFBUSxNQUFNLFFBQVEsR0FBRyxJQUFJLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNsRCxRQUFRLElBQUksQ0FBQyxH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QU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDL0I7SUFDQSxRQUFRLE1BQU0sTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQy9DLFFBQVEsTUFBTSxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDL0MsUUFBUSxNQUFNLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUMvQyxRQUFRLE1BQU0sTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQy9DLFFBQVEsTUFBTSxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDL0M7SUFDQSxRQUFRLE1BQU0sTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQy9DLFFBQVEsTUFBTSxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDL0MsUUFBUSxNQUFNLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUMvQztJQUNBLFFBQVEsSUFBSSxJQUFJLENBQUM7SUFDakIsUUFBUSxJQUFJLEdBQUcsTUFBTSxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDO0lBQ2xFLFFBQVEsTUFBTSxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ2pDO0lBQ0EsUUFBUSxNQUFNLGVBQWUsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN0QyxLQUFLO0FBQ0w7SUFDQSxJQUFJLFNBQVMsT0FBTyxHQUFHO0lBQ3ZCLFFBQVEsSUFBSSxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQztJQUN4QixRQUFRLE9BQU8sVUFBVSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsUUFBUSxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2hFLFFBQVEsSUFBSSxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3BDLFFBQVEsT0FBTyxVQUFVLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsUUFBUSxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2xFLFFBQVEsT0FBTyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztBQUN4QjtBQUNBO0lBQ0EsUUFBUSxTQUFTLFVBQVUsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRTtJQUMxQyxZQUFZLE1BQU0sVUFBVSxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUM7SUFDckMsWUFBWSxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDO0lBQzNCLFlBQVksS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFVBQVUsRUFBRSxDQUFDLEVBQUUsRUFBRTtJQUM3QyxnQkFBZ0IsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxPQUFPLElBQUksQ0FBQztJQUM3QyxnQkFBZ0IsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7SUFDbEQsb0JBQW9CLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxPQUFPLElBQUksQ0FBQztJQUNsRSxpQkFBaUI7SUFDakIsZ0JBQWdCLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDekMsYUFBYTtJQUNiLFlBQVksT0FBTyxLQUFLLENBQUM7SUFDekIsU0FBUztJQUNULEtBQUs7SUFDTDs7SUMxZkE7SUFDQTtBQUNBO0lBQ0E7QUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0FBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtBQUNBO0lBQ0E7SUFDQTtJQUNBO0FBQ0E7SUFDTyxNQUFNLEtBQUssQ0FBQztJQUNuQixJQUFJLFdBQVcsQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFO0lBQy9CLFFBQVEsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7SUFDM0IsUUFBUSxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztBQUM3QjtJQUNBLFFBQVEsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBQzFCLEtBQUs7QUFDTDtJQUNBLElBQUksVUFBVSxHQUFHO0lBQ2pCLFFBQVEsSUFBSSxDQUFDLFdBQVcsR0FBRyxFQUFFLENBQUM7SUFDOUIsUUFBUSxJQUFJLENBQUMsV0FBVyxHQUFHLEVBQUUsQ0FBQztJQUM5QixLQUFLO0FBQ0w7SUFDQSxJQUFJLGFBQWEsQ0FBQyxHQUFHLEVBQUUsVUFBVSxFQUFFO0lBQ25DLFFBQVEsSUFBSSxHQUFHLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRTtJQUNyQyxZQUFZLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsa0JBQWtCLEVBQUUsR0FBRyxDQUFDLHVCQUF1QixDQUFDLENBQUMsQ0FBQztJQUNoRixTQUFTO0lBQ1QsUUFBUSxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxHQUFHLFVBQVUsQ0FBQztJQUMzQyxLQUFLO0FBQ0w7SUFDQSxJQUFJLGFBQWEsQ0FBQyxHQUFHLEVBQUU7SUFDdkIsUUFBUSxJQUFJLEVBQUUsR0FBRyxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsRUFBRTtJQUN4QyxZQUFZLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsa0JBQWtCLEVBQUUsR0FBRyxDQUFDLHdCQUF3QixDQUFDLENBQUMsQ0FBQztJQUNqRixTQUFTO0lBQ1QsUUFBUSxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDckMsS0FBSztBQUNMO0lBQ0EsSUFBSSxhQUFhLENBQUMsR0FBRyxFQUFFLFVBQVUsRUFBRTtJQUNuQyxRQUFRLElBQUksR0FBRyxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUU7SUFDckMsWUFBWSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLG1CQUFtQixFQUFFLEdBQUcsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDLENBQUM7SUFDakYsU0FBUztJQUNULFFBQVEsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsR0FBRyxVQUFVLENBQUM7SUFDM0MsS0FBSztBQUNMO0lBQ0EsSUFBSSxhQUFhLENBQUMsR0FBRyxFQUFFO0lBQ3ZCLFFBQVEsSUFBSSxFQUFFLEdBQUcsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLEVBQUU7SUFDeEMsWUFBWSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLGtCQUFrQixFQUFFLEdBQUcsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDLENBQUM7SUFDakYsU0FBUztJQUNULFFBQVEsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3JDLEtBQUs7QUFDTDtJQUNBLElBQUksYUFBYSxDQUFDLFdBQVcsR0FBRyxJQUFJLEVBQUU7SUFDdEMsUUFBUSxJQUFJLEdBQUcsR0FBRyxXQUFXLEdBQUcsQ0FBQyxXQUFXLEVBQUUsRUFBRSxFQUFFLFdBQVcsRUFBRSxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUM7QUFDeEU7SUFDQSxRQUFRLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLElBQUk7SUFDckQsWUFBWSxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ3hFLFlBQVksR0FBRyxXQUFXLEVBQUU7SUFDNUIsZ0JBQWdCLEdBQUcsQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDO0lBQzdDLGFBQWEsTUFBTTtJQUNuQixnQkFBZ0IsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQztJQUNqQyxhQUFhO0lBQ2IsU0FBUyxDQUFDLENBQUM7QUFDWDtJQUNBLFFBQVEsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsSUFBSTtJQUNyRCxZQUFZLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDeEUsWUFBWSxHQUFHLFdBQVcsRUFBRTtJQUM1QixnQkFBZ0IsR0FBRyxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsR0FBRyxLQUFLLENBQUM7SUFDN0MsYUFBYSxNQUFNO0lBQ25CLGdCQUFnQixHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDO0lBQ2pDLGFBQWE7SUFDYixTQUFTLENBQUMsQ0FBQztBQUNYO0lBQ0EsUUFBUSxPQUFPLEdBQUcsQ0FBQztJQUNuQixLQUFLO0FBQ0w7SUFDQSxJQUFJLGVBQWUsQ0FBQyxXQUFXLEVBQUU7SUFDakMsUUFBUSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7QUFDMUI7SUFDQSxRQUFRLE1BQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLElBQUk7SUFDNUQsWUFBWSxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDM0YsU0FBUyxDQUFDLENBQUM7QUFDWDtJQUNBLFFBQVEsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsSUFBSTtJQUM1RCxZQUFZLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUMzRixTQUFTLENBQUMsQ0FBQztJQUNYLEtBQUs7SUFDTDs7Ozs7Ozs7Ozs7Ozs7SUN2RkE7SUFDQSxDQUFBLENBQUMsWUFBWTtBQUViO0lBQ0EsR0FBRSxJQUFJLFdBQVcsR0FBRyx1QkFBdUIsQ0FBQztJQUM1QyxHQUFFLElBQUksY0FBYyxHQUFHLHlCQUF5QixDQUFDO0lBQ2pELEdBQUUsSUFBSSxNQUFNLEdBQUcsT0FBTyxNQUFNLEtBQUssUUFBUSxDQUFDO09BQ3hDLElBQUksSUFBSSxHQUFHLE1BQU0sR0FBRyxNQUFNLEdBQUcsRUFBRSxDQUFDO0lBQ2xDLEdBQUUsSUFBSSxJQUFJLENBQUMsaUJBQWlCLEVBQUU7U0FDMUIsTUFBTSxHQUFHLEtBQUssQ0FBQztRQUNoQjtPQUNELElBQUksVUFBVSxHQUFHLENBQUMsTUFBTSxJQUFJLE9BQU8sSUFBSSxLQUFLLFFBQVEsQ0FBQztPQUNyRCxJQUFJLE9BQU8sR0FBRyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsSUFBSSxPQUFPLE9BQU8sS0FBSyxRQUFRLElBQUksT0FBTyxDQUFDLFFBQVEsSUFBSSxPQUFPLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQztPQUNuSCxJQUFJLE9BQU8sRUFBRTtTQUNYLElBQUksR0FBR2tDLGNBQU0sQ0FBQztRQUNmLE1BQU0sSUFBSSxVQUFVLEVBQUU7U0FDckIsSUFBSSxHQUFHLElBQUksQ0FBQztRQUNiO0lBQ0gsR0FBRSxJQUFJLFNBQVMsR0FBRyxDQUFDLElBQUksQ0FBQyxvQkFBb0IsSUFBSSxRQUFhLEtBQUssUUFBUSxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUM7SUFFN0YsR0FBRSxJQUFJLFlBQVksR0FBRyxDQUFDLElBQUksQ0FBQyx1QkFBdUIsSUFBSSxPQUFPLFdBQVcsS0FBSyxXQUFXLENBQUM7T0FDdkYsSUFBSSxTQUFTLEdBQUcsa0JBQWtCLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQy9DLEdBQUUsSUFBSSxhQUFhLEdBQUcsQ0FBQyxFQUFFLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxTQUFTLENBQUMsQ0FBQztJQUNyRCxHQUFFLElBQUksY0FBYyxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDbkQsR0FBRSxJQUFJLGNBQWMsR0FBRyxDQUFDLENBQUMsRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQ2pELEdBQUUsSUFBSSxPQUFPLEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxTQUFTLENBQUMsQ0FBQztJQUM3QyxHQUFFLElBQUksS0FBSyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7T0FDM0IsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsVUFBVTtTQUN2RixDQUFDLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxVQUFVLEVBQUUsQ0FBQztJQUMvRSxLQUFJLFVBQVUsRUFBRSxDQUFDLEVBQUUsVUFBVSxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsS0FBSztJQUMzRSxLQUFJLFVBQVUsRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxVQUFVLEVBQUUsVUFBVTtJQUNwRixLQUFJLFVBQVUsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsQ0FBQyxFQUFFLFVBQVUsRUFBRSxVQUFVLENBQUMsQ0FBQztJQUN0RixHQUFFLElBQUksSUFBSSxHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7T0FDaEMsSUFBSSxVQUFVLEdBQUcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDOUIsR0FBRSxJQUFJLFlBQVksR0FBRyxDQUFDLEtBQUssRUFBRSxRQUFRLEVBQUUsYUFBYSxFQUFFLE9BQU8sRUFBRSxRQUFRLENBQUMsQ0FBQztPQUN2RSxJQUFJLGNBQWMsR0FBRztTQUNuQixLQUFLLEVBQUUsR0FBRztTQUNWLEtBQUssRUFBRSxHQUFHO0lBQ2QsSUFBRyxDQUFDO0FBQ0o7T0FDRSxJQUFJLElBQUksQ0FBQyxrQkFBa0IsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUU7SUFDakQsS0FBSSxLQUFLLENBQUMsT0FBTyxHQUFHLFVBQVUsR0FBRyxFQUFFO0lBQ25DLE9BQU0sT0FBTyxNQUFNLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssZ0JBQWdCLENBQUM7SUFDdEUsTUFBSyxDQUFDO1FBQ0g7QUFDSDtJQUNBLEdBQUUsSUFBSSxZQUFZLEtBQUssSUFBSSxDQUFDLCtCQUErQixJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxFQUFFO0lBQ3JGLEtBQUksV0FBVyxDQUFDLE1BQU0sR0FBRyxVQUFVLEdBQUcsRUFBRTtJQUN4QyxPQUFNLE9BQU8sT0FBTyxHQUFHLEtBQUssUUFBUSxJQUFJLEdBQUcsQ0FBQyxNQUFNLElBQUksR0FBRyxDQUFDLE1BQU0sQ0FBQyxXQUFXLEtBQUssV0FBVyxDQUFDO0lBQzdGLE1BQUssQ0FBQztRQUNIO0FBQ0g7T0FDRSxJQUFJLGtCQUFrQixHQUFHLFVBQVUsSUFBSSxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUU7U0FDNUQsT0FBTyxVQUFVLE9BQU8sRUFBRTtJQUM5QixPQUFNLE9BQU8sSUFBSSxNQUFNLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztJQUMzRSxNQUFLLENBQUM7SUFDTixJQUFHLENBQUM7QUFDSjtPQUNFLElBQUksdUJBQXVCLEdBQUcsVUFBVSxJQUFJLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRTtJQUNyRSxLQUFJLE9BQU8sVUFBVSxPQUFPLEVBQUUsVUFBVSxFQUFFO0lBQzFDLE9BQU0sT0FBTyxJQUFJLE1BQU0sQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLFVBQVUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO0lBQ2pGLE1BQUssQ0FBQztJQUNOLElBQUcsQ0FBQztBQUNKO09BQ0UsSUFBSSx3QkFBd0IsR0FBRyxVQUFVLElBQUksRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFO1NBQ2xFLE9BQU8sVUFBVSxPQUFPLEVBQUUsVUFBVSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUU7V0FDMUMsT0FBTyxPQUFPLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsVUFBVSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO0lBQ3RGLE1BQUssQ0FBQztJQUNOLElBQUcsQ0FBQztBQUNKO09BQ0UsSUFBSSxzQkFBc0IsR0FBRyxVQUFVLElBQUksRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFO1NBQ2hFLE9BQU8sVUFBVSxHQUFHLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxDQUFDLEVBQUU7V0FDNUMsT0FBTyxPQUFPLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO0lBQ3RGLE1BQUssQ0FBQztJQUNOLElBQUcsQ0FBQztBQUNKO09BQ0UsSUFBSSxtQkFBbUIsR0FBRyxVQUFVLE1BQU0sRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRTtJQUMzRSxLQUFJLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxZQUFZLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxFQUFFO0lBQ2xELE9BQU0sSUFBSSxJQUFJLEdBQUcsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2pDLE9BQU0sTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLFlBQVksQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDO1VBQ2xEO1NBQ0QsT0FBTyxNQUFNLENBQUM7SUFDbEIsSUFBRyxDQUFDO0FBQ0o7SUFDQSxHQUFFLElBQUksWUFBWSxHQUFHLFVBQVUsSUFBSSxFQUFFLE9BQU8sRUFBRTtTQUMxQyxJQUFJLE1BQU0sR0FBRyxrQkFBa0IsQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQzFELEtBQUksTUFBTSxDQUFDLE1BQU0sR0FBRyxZQUFZO1dBQzFCLE9BQU8sSUFBSSxNQUFNLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQztJQUM3QyxNQUFLLENBQUM7SUFDTixLQUFJLE1BQU0sQ0FBQyxNQUFNLEdBQUcsVUFBVSxPQUFPLEVBQUU7V0FDakMsT0FBTyxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzdDLE1BQUssQ0FBQztTQUNGLE9BQU8sbUJBQW1CLENBQUMsTUFBTSxFQUFFLGtCQUFrQixFQUFFLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztJQUMxRSxJQUFHLENBQUM7QUFDSjtJQUNBLEdBQUUsSUFBSSxpQkFBaUIsR0FBRyxVQUFVLElBQUksRUFBRSxPQUFPLEVBQUU7U0FDL0MsSUFBSSxNQUFNLEdBQUcsdUJBQXVCLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQztJQUMvRCxLQUFJLE1BQU0sQ0FBQyxNQUFNLEdBQUcsVUFBVSxVQUFVLEVBQUU7V0FDcEMsT0FBTyxJQUFJLE1BQU0sQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLFVBQVUsQ0FBQyxDQUFDO0lBQ25ELE1BQUssQ0FBQztTQUNGLE1BQU0sQ0FBQyxNQUFNLEdBQUcsVUFBVSxPQUFPLEVBQUUsVUFBVSxFQUFFO0lBQ25ELE9BQU0sT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN2RCxNQUFLLENBQUM7U0FDRixPQUFPLG1CQUFtQixDQUFDLE1BQU0sRUFBRSx1QkFBdUIsRUFBRSxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDL0UsSUFBRyxDQUFDO0FBQ0o7SUFDQSxHQUFFLElBQUksa0JBQWtCLEdBQUcsVUFBVSxJQUFJLEVBQUUsT0FBTyxFQUFFO0lBQ3BELEtBQUksSUFBSSxDQUFDLEdBQUcsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQzdCLElBQUksTUFBTSxHQUFHLHdCQUF3QixDQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUM7U0FDNUQsTUFBTSxDQUFDLE1BQU0sR0FBRyxVQUFVLFVBQVUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFO0lBQ2hELE9BQU0sSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRTtJQUNwQixTQUFRLE9BQU8sT0FBTyxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDMUQsUUFBTyxNQUFNO2FBQ0wsT0FBTyxJQUFJLE1BQU0sQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLFVBQVUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUNqRTtJQUNQLE1BQUssQ0FBQztJQUNOLEtBQUksTUFBTSxDQUFDLE1BQU0sR0FBRyxVQUFVLE9BQU8sRUFBRSxVQUFVLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRTtJQUN6RCxPQUFNLE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUM3RCxNQUFLLENBQUM7U0FDRixPQUFPLG1CQUFtQixDQUFDLE1BQU0sRUFBRSx3QkFBd0IsRUFBRSxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDaEYsSUFBRyxDQUFDO0FBQ0o7SUFDQSxHQUFFLElBQUksZ0JBQWdCLEdBQUcsVUFBVSxJQUFJLEVBQUUsT0FBTyxFQUFFO0lBQ2xELEtBQUksSUFBSSxDQUFDLEdBQUcsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQzdCLElBQUksTUFBTSxHQUFHLHNCQUFzQixDQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUM7U0FDMUQsTUFBTSxDQUFDLE1BQU0sR0FBRyxVQUFVLEdBQUcsRUFBRSxVQUFVLEVBQUUsQ0FBQyxFQUFFO0lBQ2xELE9BQU0sT0FBTyxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLFVBQVUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUMzRixNQUFLLENBQUM7SUFDTixLQUFJLE1BQU0sQ0FBQyxNQUFNLEdBQUcsVUFBVSxHQUFHLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxDQUFDLEVBQUU7SUFDM0QsT0FBTSxPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDL0QsTUFBSyxDQUFDO1NBQ0YsT0FBTyxtQkFBbUIsQ0FBQyxNQUFNLEVBQUUsc0JBQXNCLEVBQUUsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQzlFLElBQUcsQ0FBQztBQUNKO09BQ0UsSUFBSSxVQUFVLEdBQUc7SUFDbkIsS0FBSSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUU7SUFDdkYsS0FBSSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUU7SUFDOUUsS0FBSSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxpQkFBaUIsRUFBRTtJQUNoRyxLQUFJLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsY0FBYyxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLGtCQUFrQixFQUFFO0lBQ25HLEtBQUksRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsZ0JBQWdCLEVBQUU7SUFDL0YsSUFBRyxDQUFDO0FBQ0o7T0FDRSxJQUFJLE9BQU8sR0FBRyxFQUFFLEVBQUUsV0FBVyxHQUFHLEVBQUUsQ0FBQztBQUNyQztJQUNBLEdBQUUsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLEVBQUU7SUFDOUMsS0FBSSxJQUFJLFNBQVMsR0FBRyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbEMsS0FBSSxJQUFJLElBQUksR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFDO0lBQzlCLEtBQUksS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLEVBQUU7SUFDMUMsT0FBTSxJQUFJLFVBQVUsR0FBRyxTQUFTLENBQUMsSUFBSSxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdEQsT0FBTSxXQUFXLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ25DLE9BQU0sT0FBTyxDQUFDLFVBQVUsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUMvRSxPQUFNLElBQUksU0FBUyxDQUFDLElBQUksS0FBSyxNQUFNLEVBQUU7YUFDN0IsSUFBSSxhQUFhLEdBQUcsU0FBUyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDckQsU0FBUSxXQUFXLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO2FBQ2hDLE9BQU8sQ0FBQyxhQUFhLENBQUMsR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDOUM7VUFDRjtRQUNGO0FBQ0g7T0FDRSxTQUFTLE1BQU0sQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRTtJQUM3QyxLQUFJLElBQUksQ0FBQyxNQUFNLEdBQUcsRUFBRSxDQUFDO0lBQ3JCLEtBQUksSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUM7SUFDaEIsS0FBSSxJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztJQUMzQixLQUFJLElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDO0lBQ2pDLEtBQUksSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7SUFDdEIsS0FBSSxJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztJQUMzQixLQUFJLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDO0lBQ25CLEtBQUksSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUM7SUFDbkIsS0FBSSxJQUFJLENBQUMsVUFBVSxHQUFHLENBQUMsSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDNUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsVUFBVSxJQUFJLENBQUMsQ0FBQztJQUMxQyxLQUFJLElBQUksQ0FBQyxZQUFZLEdBQUcsVUFBVSxJQUFJLENBQUMsQ0FBQztTQUNwQyxJQUFJLENBQUMsVUFBVSxHQUFHLENBQUMsVUFBVSxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDN0M7SUFDQSxLQUFJLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUU7V0FDM0IsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7VUFDZjtRQUNGO0FBQ0g7T0FDRSxNQUFNLENBQUMsU0FBUyxDQUFDLE1BQU0sR0FBRyxVQUFVLE9BQU8sRUFBRTtJQUMvQyxLQUFJLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRTtJQUN4QixPQUFNLE1BQU0sSUFBSSxLQUFLLENBQUMsY0FBYyxDQUFDLENBQUM7VUFDakM7SUFDTCxLQUFJLElBQUksU0FBUyxFQUFFLElBQUksR0FBRyxPQUFPLE9BQU8sQ0FBQztJQUN6QyxLQUFJLElBQUksSUFBSSxLQUFLLFFBQVEsRUFBRTtJQUMzQixPQUFNLElBQUksSUFBSSxLQUFLLFFBQVEsRUFBRTtJQUM3QixTQUFRLElBQUksT0FBTyxLQUFLLElBQUksRUFBRTtJQUM5QixXQUFVLE1BQU0sSUFBSSxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7Y0FDOUIsTUFBTSxJQUFJLFlBQVksSUFBSSxPQUFPLENBQUMsV0FBVyxLQUFLLFdBQVcsRUFBRTtJQUN4RSxXQUFVLE9BQU8sR0FBRyxJQUFJLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQztjQUNuQyxNQUFNLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFO2VBQ2xDLElBQUksQ0FBQyxZQUFZLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxFQUFFO0lBQzdELGFBQVksTUFBTSxJQUFJLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztnQkFDOUI7Y0FDRjtJQUNULFFBQU8sTUFBTTtJQUNiLFNBQVEsTUFBTSxJQUFJLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUM5QjtXQUNELFNBQVMsR0FBRyxJQUFJLENBQUM7VUFDbEI7SUFDTCxLQUFJLElBQUksTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsU0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUUsTUFBTSxHQUFHLE9BQU8sQ0FBQyxNQUFNO0lBQ2pGLE9BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxVQUFVLEVBQUUsS0FBSyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDO0FBQ25FO0lBQ0EsS0FBSSxPQUFPLEtBQUssR0FBRyxNQUFNLEVBQUU7SUFDM0IsT0FBTSxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUU7SUFDdEIsU0FBUSxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQzthQUNuQixNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztJQUMvQixTQUFRLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsVUFBVSxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRTtJQUM3QyxXQUFVLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7Y0FDZjtZQUNGO1dBQ0QsSUFBSSxTQUFTLEVBQUU7SUFDckIsU0FBUSxLQUFLLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssR0FBRyxNQUFNLElBQUksQ0FBQyxHQUFHLFNBQVMsRUFBRSxFQUFFLEtBQUssRUFBRTtJQUN2RSxXQUFVLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUssQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztjQUNwRDtJQUNULFFBQU8sTUFBTTtJQUNiLFNBQVEsS0FBSyxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLEdBQUcsTUFBTSxJQUFJLENBQUMsR0FBRyxTQUFTLEVBQUUsRUFBRSxLQUFLLEVBQUU7ZUFDN0QsSUFBSSxHQUFHLE9BQU8sQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDM0MsV0FBVSxJQUFJLElBQUksR0FBRyxJQUFJLEVBQUU7SUFDM0IsYUFBWSxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLElBQUksSUFBSSxLQUFLLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDckQsWUFBVyxNQUFNLElBQUksSUFBSSxHQUFHLEtBQUssRUFBRTtpQkFDdkIsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxDQUFDLEtBQUssS0FBSyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO2lCQUN6RCxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxLQUFLLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7Z0JBQzVELE1BQU0sSUFBSSxJQUFJLEdBQUcsTUFBTSxJQUFJLElBQUksSUFBSSxNQUFNLEVBQUU7aUJBQzFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksSUFBSSxJQUFJLEVBQUUsQ0FBQyxLQUFLLEtBQUssQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztpQkFDMUQsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLEtBQUssS0FBSyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO2lCQUNsRSxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxLQUFLLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDdkUsWUFBVyxNQUFNO2lCQUNMLElBQUksR0FBRyxPQUFPLElBQUksQ0FBQyxDQUFDLElBQUksR0FBRyxLQUFLLEtBQUssRUFBRSxLQUFLLE9BQU8sQ0FBQyxVQUFVLENBQUMsRUFBRSxLQUFLLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDO2lCQUNsRixNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksSUFBSSxFQUFFLENBQUMsS0FBSyxLQUFLLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7aUJBQzFELE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLElBQUksRUFBRSxJQUFJLElBQUksQ0FBQyxLQUFLLEtBQUssQ0FBQyxDQUFD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QUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUc7SUFDcEYsT0FBTSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHO0lBQ3BGLE9BQU0sR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0lBQ3JGLEtBQUksS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRTtXQUMxQixFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztXQUMxQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztXQUMxQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztXQUMxQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztXQUMxQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztXQUMxQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztXQUMxQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztXQUMxQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztXQUMxQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztXQUMxQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUNoRDtJQUNBLE9BQU0sQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDekMsT0FBTSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN6QyxPQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDaEIsT0FBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2hCLE9BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNqQixPQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDakIsT0FBTSxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2pCLE9BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNqQixPQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDakIsT0FBTSxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2pCLE9BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNqQixPQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDakIsT0FBTSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN6QyxPQUFNLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3pDLE9BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNoQixPQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDaEIsT0FBTSxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2pCLE9BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNqQixPQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDakIsT0FBTSxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2pCLE9BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNqQixPQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDakIsT0FBTSxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2pCLE9BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNqQixPQUFNLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3pDLE9BQU0sQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDekMsT0FBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2hCLE9BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNoQixPQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDakIsT0FBTSxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2pCLE9BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNqQixPQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDakIsT0FBTSxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2pCLE9BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNqQixPQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDakIsT0FBTSxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2pCLE9BQU0sQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDekMsT0FBTSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN6QyxPQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDaEIsT0FBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2hCLE9BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNqQixPQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDakIsT0FBTSxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2pCLE9BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNqQixPQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDakIsT0FBTSxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2pCLE9BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNqQixPQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDakIsT0FBTSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN6QyxPQUFNLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3pDLE9BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNoQixPQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDaEIsT0FBTSxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2pCLE9BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNqQixPQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDakIsT0FBTSxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2pCLE9BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNqQixPQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDakIsT0FBTSxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2pCLE9BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNqQjtJQUNBLE9BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNoQixPQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDaEIsT0FBTSxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUMxQyxPQUFNLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQzFDLE9BQU0sR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDMUMsT0FBTSxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUMxQyxPQUFNLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQzFDLE9BQU0sR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDMUMsT0FBTSxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUMzQyxPQUFNLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQzNDLE9BQU0sR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDeEMsT0FBTSxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUN4QyxPQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQzFDLE9BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDMUMsT0FBTSxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUMzQyxPQUFNLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQzNDLE9BQU0sR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDM0MsT0FBTSxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUMzQyxPQUFNLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQzFDLE9BQU0sR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDMUMsT0FBTSxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUN4QyxPQUFNLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ3hDLE9BQU0sR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDMUMsT0FBTSxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUMxQyxPQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQzFDLE9BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDMUMsT0FBTSxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUMzQyxPQUFNLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQzNDLE9BQU0sR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDMUMsT0FBTSxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUMxQyxPQUFNLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ3hDLE9BQU0sR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDeEMsT0FBTSxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUMxQyxPQUFNLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQzFDLE9BQU0sR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDMUMsT0FBTSxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUMxQyxPQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQzFDLE9BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDMUMsT0FBTSxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUMxQyxPQUFNLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQzFDLE9BQU0sR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDeEMsT0FBTSxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUN4QyxPQUFNLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQzNDLE9BQU0sR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDM0MsT0FBTSxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUMxQyxPQUFNLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQzFDLE9BQU0sR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDMUMsT0FBTSxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUMxQyxPQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQzFDLE9BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7QUFDMUM7SUFDQSxPQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDN0IsT0FBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBQzdCLE9BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQztJQUNqQyxPQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLENBQUM7SUFDakMsT0FBTSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxDQUFDO0lBQ2pDLE9BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQztJQUNqQyxPQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLENBQUM7SUFDakMsT0FBTSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxDQUFDO0lBQ2pDLE9BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQztJQUNqQyxPQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLENBQUM7SUFDakMsT0FBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBQzdCLE9BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztJQUM3QixPQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLENBQUM7SUFDakMsT0FBTSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxDQUFDO0lBQ2pDLE9BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQztJQUNqQyxPQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLENBQUM7SUFDakMsT0FBTSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxDQUFDO0lBQ2pDLE9BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQztJQUNqQyxPQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLENBQUM7SUFDakMsT0FBTSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxDQUFDO0lBQ2pDLE9BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztJQUM3QixPQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDN0IsT0FBTSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxDQUFDO0lBQ2pDLE9BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQztJQUNqQyxPQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLENBQUM7SUFDakMsT0FBTSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxDQUFDO0lBQ2pDLE9BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQztJQUNqQyxPQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLENBQUM7SUFDakMsT0FBTSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxDQUFDO0lBQ2pDLE9BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQztJQUNqQyxPQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDN0IsT0FBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBQzdCLE9BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQztJQUNqQyxPQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLENBQUM7SUFDakMsT0FBTSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxDQUFDO0lBQ2pDLE9BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQztJQUNqQyxPQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLENBQUM7SUFDakMsT0FBTSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxDQUFDO0lBQ2pDLE9BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQztJQUNqQyxPQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLENBQUM7SUFDakMsT0FBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBQzdCLE9BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztJQUM3QixPQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLENBQUM7SUFDakMsT0FBTSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxDQUFDO0lBQ2pDLE9BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQztJQUNqQyxPQUFNLENBQUMsQ0FBQyxFQUFFLENB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LENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3RELFNBQVMsQ0FBQztJQUNWLEtBQUs7QUFDTDtJQUNBLElBQUksT0FBTyxLQUFLLENBQUMsRUFBRSxFQUFFO0lBQ3JCLFFBQVEsT0FBTztJQUNmLFlBQVksRUFBRSxDQUFDLElBQUk7SUFDbkIsWUFBWSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNyRCxZQUFZLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDcEIsWUFBWSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNyRCxTQUFTLENBQUM7QUFDVjtJQUNBLEtBQUs7QUFDTDtJQUNBLElBQUksT0FBTyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUU7SUFDckMsUUFBUSxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2xDLFFBQVEsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDO0FBQ2xCO0lBQ0EsUUFBUSxNQUFNLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNqQyxRQUFRLE1BQU0sSUFBSSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ25DLFFBQVEsTUFBTSxJQUFJLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDbkMsUUFBUSxNQUFNLEtBQUssR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztBQUNyQztJQUNBLFFBQVEsQ0FBQyxHQUFHLEdBQUcsQ0FBQztBQUNoQjtJQUNBLFFBQVEsSUFBSSxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDcEM7SUFDQSxRQUFRLElBQUksRUFBRSxHQUFHLEtBQUssQ0FBQztBQUN2QjtJQUNBLFFBQVEsRUFBRSxHQUFHLEVBQUUsQ0FBQztJQUNoQixRQUFRLElBQUksQ0FBQyxFQUFFO0lBQ2YsWUFBWSxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUMvQyxTQUFTO0FBQ1Q7SUFDQSxRQUFRLE9BQU8sQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDdkIsS0FBSztBQUNMO0lBQ0EsSUFBSSxPQUFPLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFO0lBQzVDLFFBQVEsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNsQyxRQUFRLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDbEMsUUFBUSxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUM7QUFDbEI7SUFDQSxRQUFRLE1BQU0sR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2pDLFFBQVEsTUFBTSxJQUFJLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDbkMsUUFBUSxNQUFNLElBQUksR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNuQyxRQUFRLE1BQU0sS0FBSyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQ3JDO0lBQ0EsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDM0I7SUFDQSxRQUFRLElBQUksRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2pDLFFBQVEsRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDekMsUUFBUSxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUN6QztJQUNBLFFBQVEsSUFBSSxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDbEMsUUFBUSxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUMxQyxRQUFRLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQzFDO0lBQ0EsUUFBUSxFQUFFLEdBQUcsRUFBRSxDQUFDO0lBQ2hCLFFBQVEsSUFBSSxDQUFDLEVBQUU7SUFDZixZQUFZLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3pDLFlBQVksRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDL0MsWUFBWSxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUMvQyxTQUFTO0FBQ1Q7SUFDQSxRQUFRLE9BQU8sQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDdkIsS0FBSztBQUNMO0lBQ0EsSUFBSSxPQUFPLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUU7SUFDbkQsUUFBUSxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2xDLFFBQVEsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNsQyxRQUFRLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDbEM7SUFDQSxRQUFRLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQztBQUNsQjtJQUNBLFFBQVEsTUFBTSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDakMsUUFBUSxNQUFNLElBQUksR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNuQyxRQUFRLE1BQU0sSUFBSSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ25DLFFBQVEsTUFBTSxLQUFLLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDckM7SUFDQSxRQUFRLE1BQU0sR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2pDLFFBQVEsTUFBTSxJQUFJLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDbkMsUUFBUSxNQUFNLElBQUksR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNuQyxRQUFRLE1BQU0sS0FBSyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQ3JDO0lBQ0EsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFDN0I7SUFDQSxRQUFRLElBQUksRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ25DLFFBQVEsRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDM0MsUUFBUSxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUMzQyxRQUFRLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO0FBQzNDO0lBQ0EsUUFBUSxJQUFJLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQztJQUNwQyxRQUFRLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQzVDLFFBQVEsRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDNUMsUUFBUSxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUM1QyxRQUFRLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQzVDLFFBQVEsRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7QUFDNUM7SUFDQSxRQUFRLElBQUksRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3JDLFFBQVEsRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDN0MsUUFBUSxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUM3QyxRQUFRLEVBQUUsR0FB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O0lBQ3ZCLFFBQVEsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQztJQUMzQixRQUFRLE1BQU0sTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDeEU7SUFDQSxRQUFRLE1BQU0sTUFBTSxHQUFHLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUNsRSxRQUFRLE1BQU0sSUFBSSxHQUFHLE1BQU0sR0FBRyxDQUFDLElBQUksRUFBRSxHQUFHLElBQUksU0FBUyxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxVQUFVLENBQUMsTUFBTSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUN2RyxRQUFRLElBQUksR0FBRyxHQUFHLElBQUksVUFBVSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUNoRTtJQUNBO0lBQ0EsUUFBUSxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztBQUNuRTtJQUNBO0lBQ0EsUUFBUSxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztBQUN0QztJQUNBO0lBQ0EsUUFBUSxHQUFHLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3RCO0lBQ0E7SUFDQSxRQUFRLElBQUksQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQztJQUM3QixLQUFLO0FBQ0w7SUFDQTtJQUNBLElBQUksWUFBWSxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUU7SUFDM0IsUUFBUSxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDO0lBQzNCLFFBQVEsTUFBTSxNQUFNLEdBQUcsRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxHQUFHLENBQUMsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztBQUNqRTtJQUNBLFFBQVEsTUFBTSxNQUFNLEdBQUcsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQ2xFLFFBQVEsTUFBTSxJQUFJLEdBQUcsTUFBTSxHQUFHLENBQUMsSUFBSSxFQUFFLEdBQUcsSUFBSSxTQUFTLENBQUMsTUFBTSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLFVBQVUsQ0FBQyxNQUFNLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3ZHLFFBQVEsSUFBSSxHQUFHLEdBQUcsSUFBSSxVQUFVLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ2hFO0lBQ0E7SUFDQSxRQUFRLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLElBQUksRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO0FBQzdFO0lBQ0E7SUFDQSxRQUFRLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDOUI7SUFDQTtJQUNBLFFBQVEsR0FBRyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUN0QjtJQUNBO0lBQ0EsUUFBUSxJQUFJLENBQUMsSUFBSSxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUM7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QUMsd0ZBQXdGLENBQUMsQ0FBQztJQUN0SCxTQUFTO0FBQ1Q7SUFDQSxRQUFRLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUM7QUFDM0I7SUFDQSxRQUFRLElBQUksSUFBSSxHQUFHLElBQUksVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDdEU7SUFDQSxRQUFRLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsSUFBSSxFQUFFO0lBQzNDLFlBQVksSUFBSSxTQUFTLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLFVBQVUsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ3pGO0lBQ0EsUUFBUSxLQUFLLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtJQUNyRCxZQUFZLElBQUksV0FBVyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDOUMsWUFBWSxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSxXQUFXLENBQUMsRUFBRSxTQUFTO0FBQ3REO0lBQ0EsWUFBWSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDckMsWUFBWSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDeEYs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QUUsQ0FBQyxFQUFFO0lBQ3ZCLFlBQVksSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDO0lBQzFDLFlBQVksSUFBSSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUN2RSxTQUFTLEVBQUU7SUFDWCxZQUFZLE1BQU0sSUFBSSxLQUFLLENBQUMsNEJBQTRCLENBQUMsQ0FBQztJQUMxRCxTQUFTO0FBQ1Q7SUFDQSxRQUFRLElBQUksQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDO0lBQzFCLEtBQUs7QUFDTDtJQUNBLElBQUksS0FBSyxDQUFDLFVBQVUsRUFBRSxVQUFVLEdBQUcsQ0FBQyxFQUFFO0lBQ3RDLFFBQVEsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFVBQVUsRUFBRSxDQUFDLEVBQUUsRUFBRTtJQUM3QyxZQUFZLE1BQU0sSUFBSSxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUN4QyxZQUFZLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxJQUFJLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ3ZGLFNBQVM7QUFDVDtJQUNBLFFBQVEsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUM7SUFDN0QsUUFBUSxLQUFLLElBQUksQ0FBQyxHQUFHLFVBQVUsRUFBRSxDQUFDLEdBQUcs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QUksT0FBTyxrQkFBa0IsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFO0lBQzNDLFFBQVEsTUFBTSxFQUFFLEdBQUcsS0FBSyxDQUFDLEVBQUUsQ0FBQztJQUM1QixRQUFRLElBQUksSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUU7SUFDOUMsWUFBWSxJQUFJLFNBQVMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLFVBQVUsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNqRyxRQUFRLElBQUksVUFBVSxHQUFHLElBQUksVUFBVSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztBQUNyRDtJQUNBO0lBQ0E7SUFDQSxRQUFRLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMvQyxRQUFRLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUN0QztJQUNBLFFBQVEsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7SUFDOUMsWUFBWSxVQUFVLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzVDLFNBQVM7QUFDVDtJQUNBLFFBQVEsT0FBTyxVQUFVLENBQUM7SUFDMUIsS0FBSztBQUNMO0lBQ0EsSUFBSSxLQUFLLEdBQUc7SUFDWixRQUFRLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUM7SUFDM0IsUUFBUSxJQUFJLEdBQUcsR0FBRyxFQUFFLENBQUM7SUFDckIsUUFBUSxLQUFLLElBQUksQ0FB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QyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM3RyxJQUFJLE1BQU0sTUFBTSxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLFlBQVksQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsT0FBTyxDQUFDLENBQUM7SUFDM0gsSUFBSSxNQUFNLE1BQU0sQ0FBQyxZQUFZLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxZQUFZLENBQUMscUJBQXFCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLE9BQU8sQ0FBQyxDQUFDO0FBQzVIO0lBQ0EsSUFBSSxJQUFJLE1BQU0sRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLCtCQUErQixDQUFDLENBQUM7SUFDOUQsSUFBSSxXQUFXLENBQUMsTUFBTSxHQUFHLElBQUksV0FBVyxDQUFDLElBQUksU0FBUyxDQUFDLE9BQU8sR0FBRyxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDcEYsSUFBSSxXQUFXLENBQUMsTUFBTSxHQUFHLElBQUksV0FBVyxDQUFDLElBQUksU0FBUyxDQUFDLE9BQU8sR0FBRyxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDcEYsSUFBSSxXQUFXLENBQUMsTUFBTSxHQUFHLElBQUksV0FBVyxDQUFDLElBQUksU0FBUyxDQUFDLE9BQU8sR0FBRyxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDcEY7SUFDQSxJQUFJLE1BQU0sTUFBTSxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsT0FBTyxHQUFHLENBQUMsRUFBRSxZQUFZLENBQUMscUJBQXFCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FB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QUMsS0FBSyxDQUFDLEtBQUssRUFBRSxLQUFLLEdBQUcsR0FBRyxDQUFDLENBQUM7SUFDMUQsWUFBWSxNQUFNLENBQUMsR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsS0FBSyxHQUFHLEdBQUcsQ0FBQyxDQUFDO0FBQzFEO0lBQ0E7SUFDQTtJQUNBLFlBQVksTUFBTSxLQUFLLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ3JEO0lBQ0EsWUFBWSxJQUFJLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUN0QyxZQUFZLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDOUM7SUFDQSxZQUFZLElBQUksRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ3ZELFlBQVksRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUM5QztJQUNBLFlBQVksSUFBSSxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDdkQsWUFBWSxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQzlDO0lBQ0EsWUFBWSxJQUFJLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ2pEO0lBQ0E7SUFDQSxZQUFZLElBQUksRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ2pHLFlBQVksRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUM5QztJQUNBLFlBQVksSUFBSSxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDakcsWUFBWSxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQzlDO0lBQ0EsWUFBWSxJQUFJLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNqRyxZQUFZLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDOUM7SUFDQSxZQUFZLElBQUksR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDakQ7SUFDQTtJQUNBLFlBQVksR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsS0FBSyxHQUFHLEdBQUcsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ2hFLFlBQVksTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDLFVBQVUsSUFBSSxHQUFHLENBQUMsQ0FBQztBQUMvRDtJQUNBO0lBQ0EsWUFBWSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxLQUFLLEdBQUcsR0FBRyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDaEUsWUFBWSxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxJQUFJLENBQUMsVUFBVSxJQUFJLEdBQUcsQ0FBQyxDQUFDO0FBQy9EO0lBQ0EsWUFBWSxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUM1QyxTQUFTO0FBQ1Q7SUFDQTtJQUNBO0lBQ0EsUUFBUSxNQUFNLEdBQUcsTUFBTSxFQUFFLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQy9DO0lBQ0E7SUFDQTtJQUNBLFFBQVEsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxFQUFFLEVBQUU7SUFDbEQsWUFBWSxNQUFNLEtBQUssR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDO0FBQ2xDO0lBQ0EsWUFBWSxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLEtBQUssR0FBRyxHQUFHLENBQUMsRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxLQUFLLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUNqRyxZ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RSxHQUFHLFdBQVcsQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3ZELFlBQVksTUFBTSxFQUFFLEdBQUcsV0FBVyxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdkQsWUFBWSxNQUFNLEVBQUUsR0FBRyxXQUFXLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN2RCxZQUFZLE1BQU0sRUFBRSxHQUFHLFdBQVcsQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3ZELFlBQVksTUFBTSxFQUFFLEdBQUcsV0FBVyxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDM0QsWUFBWSxNQUFNLEVBQUUsR0FBRyxXQUFXLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMzRCxZQUFZLE1BQU0sRUFBRSxHQUFHLFdBQVcsQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzNEO0lBQ0EsWUFBWSxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDM0UsWUFBWSxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDM0UsWUFBWSxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDM0U7SUFDQSxZQUFZLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDcEMsWUFBWSxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNoSCxZQUFZLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDbkQsWUFBWSxNQUFNLEdBQUcsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3RDLFlBQVksTUFBTSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDbkg7SUFDQSxZQUFZLElBQUksRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUM7SUFDN0IsWUFBWSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLEVBQUUsRUFBRTtJQUNuRCxnQkFBZ0IsTUFBTSxNQUFNLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxVQUFVLElBQUksQ0FBQyxDQUFDO0FBQzdEO0lBQ0EsZ0JBQWdCLE1BQU0sSUFBSSxHQUFHLFdBQVcsQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3hFLGdCQUFnQixNQUFNLElBQUksR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQztBQUNyRTtJQUNBLGdCQUFnQixFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNwRCxhQUFhO0FBQ2I7SUFDQTtJQUNBLFlBQVksSUFBSSxDQUFDLEVBQUUsRUFBRSxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQy9ELFlBQVksRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ2hDLFlBQVksR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQ2xDO0lBQ0EsWUFBWSxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUMzQyxZQUFZLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQzlDO0lBQ0EsWUFBWSxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUMzQyxZQUFZLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQzlDO0lBQ0EsWUFBWSxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUMzQyxZQUFZLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQzlDO0lBQ0EsWUFBWSxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDaEMsWUFBWSxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDaEM7SUFDQTtJQUNBLFlBQVksTUFBTSxLQUFLLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3JELFlBQVksSUFBSSxHQUFHLEdBQUcsQ0FBQyxDQUFDO0lBQ3hCLFlBQVksR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3JDLFlBQVksR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUNoRDtJQUNBLFlBQVksSUFBSSxHQUFHLEdBQUcsQ0FBQyxDQUFDO0lBQ3hCLFlBQVksR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3RELFlBQVksR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUNoRDtJQUNBLFlBQVksSUFBSSxHQUFHLEdBQUcsQ0FBQyxDQUFDO0lBQ3hCLFlBQVksR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3RELFlBQVksR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUNoRDtJQUNBLFlBQVksSUFBSSxHQUFHLEdBQUcsQ0FBQyxDQUFDO0FBQ3hCO0lBQ0EsWUFBWSxJQUFJLENBQUMsRUFBRSxFQUFFLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3JGLFlBQVksRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM5QyxZQUFZLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDaEQ7SUFDQTtJQUNBLFlBQVksSUFBSSxHQUFHLEdBQUcsQ0FBQyxDQUFDO0lBQ3hCLFlBQVksR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzNELFlBQVksR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUNoRDtJQUNBLFlBQVksSUFBSSxHQUFHLEdBQUcsQ0FBQyxDQUFDO0lBQ3hCLFlBQVksR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzNELFlBQVksR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUNoRDtJQUNBLFlBQVksSUFBSSxHQUFHLEdBQUcsQ0FBQyxDQUFDO0lBQ3hCLFlBQVksR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzNELFlBQVksR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUNoRDtJQUNBLFlBQVksSUFBSSxHQUFHLEdBQUcsRUFBRSxDQUFDO0lBQ3pCLFlBQVksSUFBSSxDQUFDLEVBQUUsRUFBRSxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztBQUN0RjtJQUNBLFlBQVksRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM5QyxZQUFZLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdB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QyxPQUFPLEdBQUcsQ0FBQyxFQUFFLE9BQU8sR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ2pHO0lBQ0E7SUFDQSxRQUFRLFdBQVcsQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ2xFO0lBQ0E7SUFDQTtJQUNBLFFBQVEsTUFBTSxTQUFTLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDOUUsUUFBUSxXQUFXLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFDN0MsUUFBUSxXQUFXLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUNsRTtJQUNBO0lBQ0E7SUFDQSxRQUFRLE1BQU0sVUFBVSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQy9FLFFBQVEsV0FBVyxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxDQUFDO0lBQzlDLEtBQUs7QUFDTDtJQUNBLElBQUksZUFBZSxNQUFNLEdBQUc7SUFDNUIsUUFBUSxJQUFJLE1BQU0sRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLDBCQUEwQixDQUFDLENBQUM7QUFDN0Q7SUFDQTtJQUNBLFFBQVEsVUFBVSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQzNCLFFBQVEsVUFBVSxDQUFDLFNBQVMsQ0FBQyxV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O0lBQ3ZELFNBQVM7QUFDVDtJQUNBLFFBQVEsVUFBVSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3ZEO0lBQ0EsUUFBUSxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUM7QUFDckI7SUFDQSxRQUFRLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ3hDLFFBQVEsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQztJQUN2QixRQUFRLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7SUFDN0QsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN6RixZQUFZLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQzVDLFNBQVM7QUFDVDtJQUNBLFFBQVEsTUFBTSxPQUFPLEdBQUcsRUFBRSxDQUFDLEdBQUc7SUFDOUIsWUFBWSxFQUFFLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQztJQUMxQyxZQUFZLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDcEQsU0FBUyxDQUFDO0FBQ1Y7SUFDQSxRQUFRLElBQUksTUFBTSxFQUFFO0lBQ3BCLFlBQVksTUFBTSxDQUFDLEtBQUssQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO0lBQ25ELFlBQVksS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7SUFDM0MsZ0JBQWdCLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDbkUsYUFBYTtJQUNiLFNBQVM7QUFDVDtJQUNBLFFBQVEsSUFBSSxPQUFPLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQztJQUM5QixRQUFRLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxhQUFhLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO0lBQ25ELFlBQVksTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM3QyxZQUFZLE9BQU8sR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN6RCxTQUFTO0FBQ1Q7SUFDQSxRQUFRLElBQUksTUFBTSxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLEVBQUUsQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDcEU7SUFDQTtJQUNBLFFBQVEsTUFBTSxPQUFPLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ25GO0lBQ0EsUUFBUSxJQUFJLEdBQUcsR0FBRyxLQUFLLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQztJQUMzQyxRQUFRLE1BQU0sTUFBTSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDOUQsUUFBUSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDbEMsUUFBUSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQzVDO0lBQ0EsUUFBUSxJQUFJLEdBQUcsR0FBRyxLQUFLLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQztJQUMzQyxRQUFRLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNuRCxRQUFRLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDNUM7SUFDQSxRQUFRLElBQUksR0FBRyxHQUFHLEtBQUssQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDO0lBQzNDLFFBQVEsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ25ELFFBQVEsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUM1QztJQUNBLFFBQVEsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUMzRTtJQUNBLFFBQVEsSUFBSSxHQUFHLEdBQUcsS0FBSyxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUM7SUFDM0MsUUFBUSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUM5RSxRQUFRLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDNUM7SUFDQSxRQUFRLElBQUksR0FBRyxHQUFHLEtBQUssQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDO0lBQzNDLFFBQVEsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFDOUUsUUFBUSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQzVDO0lBQ0EsUUFBUSxJQUFJLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUNsQyxRQUFRLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxLQUFLLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ25ELFFBQVEsRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUMxQztJQUNBLFFBQVEsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ3REO0lBQ0EsUUFBUSxXQUFXLENBQUMsQ0FBQyxHQUFHLElBQUksVUFBVSxDQUFDLElBQUksU0FBUyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsR0FBRyxDQUFDLElBQUksR0FBRyxDQUFDLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBQ2xHO0lBQ0EsUUFBUSxXQUFXLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsRUFBRSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ25ELFFBQVEsV0FBVyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLEVBQUUsRUFBRSxLQUFLLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3BFLFFBQVEsV0FBVyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLEVBQUUsRUFBRSxLQUFLLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3BFLFFBQVEsV0FBVyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLEVBQUUsRUFBRSxLQUFLLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3BFLFFBQVEsV0FBVyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzFDLFFBQVEsV0FBVyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUM3QyxRQUFRLFdBQVcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDM0UsUUFBUSxXQUFXLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQzdDO0lBQ0EsUUFBUSxJQUFJLEdBQUcsR0FBRyxVQUFVLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQyxFQUFFLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQzNFLFFBQVEsR0FBRyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ2pELFFBQVEsR0FBRyxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsRUFBRSxFQUFFLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNoRCxRQUFRLEdBQUcsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2hDLFFBQVEsR0FBRyxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDckM7SUFDQSxRQUFRLFdBQVcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQy9CO0lBQ0EsUUFBUSxJQUFJLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDakcsUUFBUSxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDNUI7SUFDQSxRQUFRLElBQUksTUFBTSxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLEVBQUUsQ0FBQyxRQUFRLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDL0Q7SUFDQSxRQUFRLFdBQVcsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3BDLEtBQUs7QUFDTDtJQUNBLElBQUksU0FBUyxVQUFVLEdBQUc7SUFDMUIsUUFBUSxXQUFXLENBQUMsR0FBRyxHQUFHLElBQUksVUFBVSxDQUFDLElBQUksU0FBUyxDQUFDLE9BQU8sR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBQzFGO0lBQ0EsUUFBUSxXQUFXLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDM0MsUUFBUSxXQUFXLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM1RCxRQUFRLFdBQVcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzVELFFBQVEsV0FBVyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDNUQsUUFBUSxXQUFXLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNqRSxRQUFRLFdBQVcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2pFO0lBQ0EsUUFBUSxXQUFXLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3JGLFFBQVEsV0FBVyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMs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QUMsQ0FBQyxDQUFDO0lBQ3BFLFFBQVEsTUFBTSxDQUFDLEtBQUssQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDcEUsUUFBUSxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUM5RCxRQUFRLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7SUFDN0IsWUFBWSxJQUFJLE1BQU0sRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUMvRSxTQUFTO0lBQ1QsUUFBUSxNQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUM1RCxLQUFLO0lBQ0wsSUFBSSxNQUFNLENBQUMsR0FBRyw0QkFBNEIsQ0FBQyxLQUFLLEVBQUUsVUFBVSxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBQzNFLElBQUksSUFBSSxNQUFNLEVBQUU7SUFDaEIsUUFBUSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtJQUN2QyxZQUFZLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDL0QsU0FBUztJQUNULEtBQUs7SUFDTDtJQUNBLElBQUksSUFBSSxhQUFhLENBQUMsTUFBTSxJQUFJLFdBQVcsQ0FBQyxPQUFPLEVBQUU7SUFDckQsUUFBUSxNQUFNLENBQUMsS0FBSyxDQUFDLGlEQUFpRCxDQUFDLENBQUM7SUFDeEUsUUFBUSxPQUFPLEtBQUssQ0FBQztJQUNyQixLQUFLO0FBQ0w7SUFDQSxJQUFJLE1BQU0sRUFBRSxHQUFHQyxhQUFXLENBQUMsS0FBSyxFQUFFLGFBQWEsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNwRCxJQUFJLElBQUksTUFBTSxFQUFFO0lBQ2hCLFFBQVEsTUFBTSxDQUFDLEtBQUssQ0FBQyxVQUFVLEdBQUcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN2RCxLQUFLO0lBQ0w7SUFDQSxJQUFJLE1BQU0sRUFBRSxHQUFHLFdBQVcsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDL0QsSUFBSSxJQUFJLE1BQU0sRUFBRTtJQUNoQixRQUFRLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLEVBQUUsQ0FBQyxRQUFRLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDbkQsS0FBSztBQUNMO0lBQ0EsSUFBSSxNQUFNLENBQUMsR0FBRyxVQUFVLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3RFLElBQUksSUFBSSxNQUFNLEVBQUU7SUFDaEIsUUFBUSxNQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUM5RCxLQUFLO0FBQ0w7SUFDQSxJQUFJLE1BQU0sQ0FBQyxHQUFHLFVBQVUsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDbkUsSUFBSSxJQUFJLE1BQU0sRUFBRTtJQUNoQixRQUFRLE1BQU0sQ0FBQyxLQUFLLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzlELEtBQUs7QUFDTDtJQUNBLElBQUksTUFBTSxDQUFDLEdBQUcsVUFBVSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3ZELElBQUksSUFBSSxNQUFNLEVBQUU7SUFDaEIsUUFBUSxNQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUM5RCxLQUFLO0FBQ0w7SUFDQSxJQUFJLE1BQU0sR0FBRyxHQUFHLE1BQU1DLGdCQUFjLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUNsRjtJQUNBLElBQUksSUFBSSxNQUFNLEVBQUU7SUFDaEIsUUFBUSxJQUFJLEdBQUcsRUFBRTtJQUNqQixZQUFZLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDL0IsU0FBUyxNQUFNO0lBQ2YsWUFBWSxNQUFNLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBQ3pDLFNBQVM7SUFDVCxLQUFLO0FBQ0w7SUFDQSxJQUFJLE9BQU8sR0FBRyxDQUFDO0lBQ2YsQ0FBQztBQUNEO0FBQ0E7SUFDQSxTQUFTLGVBQWUsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFO0lBQ3ZDLElBQUksTUFBTSxFQUFFLEdBQUcsS0FBSyxDQUFDLEVBQUUsQ0FBQztJQUN4QixJQUFJLE1BQU0sRUFBRSxHQUFHLEtBQUssQ0FBQyxFQUFFLENBQUM7SUFDeEIsSUFBSSxNQUFNLEdBQUcsR0FBRyxFQUFFLENBQUM7SUFDbkIsSUFBSSxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ25DLElBQUksR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNuQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbkMsSUFBSSxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ25DLElBQUksR0FBRyxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNyQyxJQUFJLEdBQUcsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDckMsSUFBSSxHQUFHLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3JDLElBQUksR0FBRyxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUM3QyxJQUFJLEdBQUcsQ0FBQyxNQUFNLEdBQUcsRUFBRSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDN0MsSUFBSSxHQUFHLENBQUMsTUFBTSxHQUFHLEVBQUUsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzdDLElBQUksR0FBRyxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUMvQyxJQUFJLEdBQUcsQ0FBQyxPQUFPLEdBQUcsRUFBRSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDL0MsSUFBSSxHQUFHLENBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQy9DLElBQUksR0FBRyxDQUFDLEdBQUcsR0FBRyxFQUFFLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN2QyxJQUFJLEdBQUcsQ0FBQyxJQUFJLEdBQUcsRUFBRSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDekMsSUFBSSxPQUFPLEdBQUcsQ0FBQztJQUNmLENBQUM7QUFDRDtJQUNBLFNBQVNGLGNBQVksQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFO0lBQ2pDLElBQUksTUFBTSxFQUFFLEdBQUcsS0FBSyxDQUFDLEVBQUUsQ0FBQztJQUN4QixJQUFJLE1BQU0sRUFBRSxHQUFHLEtBQUssQ0FBQyxFQUFFLENBQUM7SUFDeEIsSUFBSSxNQUFNLEVBQUUsR0FBRyxLQUFLLENBQUMsRUFBRSxDQUFDO0lBQ3hCLElBQUksTUFBTSxHQUFHLEdBQUcsRUFBRSxDQUFDO0lBQ25CLElBQUksR0FBRyxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNsQyxJQUFJLEdBQUcsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDbEMsSUFBSSxHQUFHLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2xDLElBQUksR0FBRyxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNsQyxJQUFJLEdBQUcsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDbEMsSUFBSSxHQUFHLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2xDLElBQUksR0FBRyxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNsQyxJQUFJLEdBQUcsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDbEMsSUFBSSxHQUFHLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2xDLElBQUksR0FBRyxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNsQyxJQUFJLEdBQUcsQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDcEM7SUFDQSxJQUFJLE9BQU8sR0FBRyxDQUFDO0lBQ2YsQ0FBQztBQUNEO0lBQ0EsU0FBUyxpQkFBaUIsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFO0lBQ3pDLElBQUksTUFBTSxFQUFFLEdBQUcsS0FBSyxDQUFDLEVBQUUsQ0FBQztJQUN4QixJQUFJLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxPQUFPLEtBQUssQ0FBQztJQUMzQyxJQUFJLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxPQUFPLEtBQUssQ0FBQztJQUMzQyxJQUFJLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxPQUFPLEtBQUssQ0FBQztJQUMzQyxJQUFJLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFD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SUFDM0UsSUFBSSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3hDO0lBQ0EsSUFBSSxJQUFJLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBQzNFLElBQUksR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUN4QztJQUNBLElBQUksSUFBSSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUNyRDtJQUNBLElBQUksSUFBSSxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUMzQyxJQUFJLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDbkMsSUFBSSxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3RDO0lBQ0EsSUFBSSxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQzFDO0lBQ0EsSUFBSSxPQUFPLEVBQUUsQ0FBQztJQUNkLENBQUM7QUFDRDtJQUNBLFNBQVMsVUFBVSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUU7SUFDdEQsSUFBSSxNQUFNLEVBQUUsR0FBRyxLQUFLLENBQUMsRUFBRSxDQUFDO0lBQ3hCLElBQUksTUFBTSxFQUFFLEdBQUcsS0FBSyxDQUFDLEVBQUUsQ0FBQztJQUN4QjtJQUNBLElBQUksSUFBSSxFQUFFLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNuRSxJQUFJLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDckQsSUFBSSxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3JELElBQUksRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNyRCxJQUFJLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDM0I7SUFDQSxJQUFJLE1BQU0sTUFBTSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDMUQ7SUFDQSxJQUFJLE1BQU0sSUFBSSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxFQUFFLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN4RSxJQUFJLE1BQU0sSUFBSSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN2RixJQUFJLE1BQU0sSUFBSSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUN2RjtJQUNBLElBQUksTUFBTSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxFQUFFLElBQUksQ0FBQyxFQUFFLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUMzRTtJQUNBLElBQUksTUFBTSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztBQUN4RDtJQUNBLElBQUksTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDM0U7SUFDQSxJQUFJLE1BQU0sR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDdkcsSUFBSSxNQUFNLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3ZHLElBQUksTUFBTSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsVUFBVSxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUNqRjtJQUNBLElBQUksTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUNoRTtJQUNBLElBQUksTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLEVBQUUsQ0FBQztJQUMzQixJQUFJLE1BQU0sS0FBSyxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDdkQsSUFBSSxNQUFNLE1BQU0sR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUNuRSxJQUFJLElBQUksRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDbEQsSUFBSSxFQUFFLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ3ZDO0lBQ0EsSUFBSSxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDckQ7SUFDQSxJQUFJLE9BQU8sQ0FBQyxDQUFDO0lBQ2IsQ0FBQztBQUNEO0lBQ0EsU0FBUyxVQUFVLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRTtJQUNyRCxJQUFJLE1BQU0sRUFBRSxHQUFHLEtBQUssQ0FBQyxFQUFFLENBQUM7QUFDeEI7SUFDQSxJQUFJLElBQUksR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM5RCxJQUFJLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDNUQsSUFBSSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzVELElBQUksR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxD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QUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDOUMsSUFBSSxDQUFDLEVBQUVBLE1BQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFQSxNQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM5QyxJQUFJLENBQUMsRUFBRUEsTUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUVBLE1BQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzlDLElBQUksQ0FBQyxFQUFFQSxNQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRUEsTUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDaEQsSUFBSSxDQUFDLEVBQUVBLE1BQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFQSxNQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNoRCxJQUFJLENBQUMsRUFBRUEsTUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUVBLE1BQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2hELElBQUksQ0FBQyxFQUFFQSxNQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRUEsTUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFD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LFVBQVUsS0FBSyxTQUFTLEdBQUcsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDO0lBQ3hHLFFBQVEsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsT0FBTyxDQUFDLENBQUM7SUFDcEMsS0FBSztBQUNMO0lBQ0EsSUFBSSxhQUFhLEdBQUc7SUFDcEIsUUFBUSxJQUFJLE9BQU8sR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxVQUFVLElBQUksVUFBVSxLQUFLLFNBQVMsR0FBRyxDQUFDLEdBQUcsVUFBVSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFDN0csUUFBUSxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDeEMsUUFBUSxNQUFNLFlBQVksR0FBRyxDQUFDLEtBQUssSUFBSSxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUM1RCxRQUFRLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDO0FBQy9CO0lBQ0EsUUFBUSxJQUFJLFVBQVUsR0FBRyxJQUFJLFVBQVUsQ0FBQyxJQUFJLFNBQVMsQ0FBQyxZQUFZLEdBQUcsR0FBRyxDQUFDLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDcEc7SUFDQSxRQUFRLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxTQUFTLEVBQUUsQ0FBQyxFQUFFLEVBQUU7SUFDNUMsWUFBWSxNQUFNLElBQUksR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDO0lBQ2pDLFlBQVksTUFBTSxLQUFLLEdBQUcsSUFBSSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUM7QUFDeEM7SUFDQSxZQUFZLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFB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QUFDLENBQUM7SUFDekUsUUFBUSxJQUFJLFVBQVUsQ0FBQyxFQUFFLEVBQUUsVUFBVSxDQUFDLEVBQUUsRUFBRSxDQUFDO0FBQzNDO0lBQ0EsUUFBUSxJQUFJLE1BQU0sRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsb0JBQW9CLEVBQUUscUJBQXFCLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUN2RixRQUFRLE1BQU0sZUFBZSxDQUFDLE1BQU0sRUFBRSxxQkFBcUIsRUFBRSxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDekUsUUFBUSxJQUFJLFVBQVUsQ0FBQyxFQUFFLEVBQUUsVUFBVSxDQUFDLEVBQUUsRUFBRSxDQUFDO0FBQzNDO0lBQ0EsUUFBUSxJQUFJLE1BQU0sRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsb0JBQW9CLEVBQUUscUJBQXFCLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUN2RixRQUFRLE1BQU0sZUFBZSxDQUFDLE1BQU0sRUFBRSxxQkFBcUIsRUFBRSxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDekUsUUFBUSxJQUFJLFVBQVUsQ0FBQyxFQUFFLEVBQUUsVUFBVSxDQUFDLEVBQUUsRUFBRSxDQUFDO0FBQzNDO0lBQ0EsUUFBUSxJQUFJLE1BQU0sRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsb0JBQW9CLEVBQUUsa0JBQWtCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNqRixRQUFRLE1BQU0sU0FBUyxDQUFDLE1BQU0sRUFBRSxrQkFBa0IsRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDN0QsUUFBUSxJQUFJLFVBQVUsQ0FBQyxFQUFFLEVBQUUsVUFBVSxDQUFDLEVBQUUsRUFBRSxDQUFDO0FBQzNDO0lBQ0EsUUFBUSxJQUFJLE1BQU0sRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsb0JBQW9CLEVBQUUsa0JBQWtCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNqRixRQUFRLE1BQU0sU0FBUyxDQUFDLE1BQU0sRUFBRSxrQkFBa0IsRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDN0QsUUFBUSxJQUFJLFVBQVUsQ0FBQyxFQUFFLEVBQUUsVUFBVSxDQUFDLEVBQUUsRUFBRSxDQUFDO0FBQzNDO0lBQ0EsUUFBUSxJQUFJLE1BQU0sRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsb0JBQW9CLEVBQUUsa0JBQWtCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNqRixRQUFRLE1BQU0sU0FBUyxDQUFDLE1BQU0sRUFBRSxrQkFBa0IsRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDN0QsUUFBUSxJQUFJLFVBQVUsQ0FBQyxFQUFFLEVBQUUsVUFBVSxDQUFDLEVBQUUsRUFBRSxDQUFDO0FBQzNDO0lBQ0EsUUFBUSxJQUFJLE1BQU0sRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsb0JBQW9CLEVBQUUsa0JBQWtCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNqRixRQUFRLE1BQU0sU0FBUyxDQUFDLE1BQU0sRUFBRSxrQkFBa0IsRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDN0QsUUFBUSxJQUFJLFVBQVUsQ0FBQyxFQUFFLEVBQUUsVUFBVSxDQUFDLEVBQUUsRUFBRSxDQUFDO0FBQzNDO0lBQ0EsUUFBUSxJQUFJLE1BQU0sRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsb0JBQW9CLEVBQUUsa0JBQWtCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNqRixRQUFRLE1BQU0sU0FBUyxDQUFDLE1BQU0sRUFBRSxrQkFBa0IsRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDN0QsUUFBUSxJQUFJLFVBQVUsQ0FBQyxFQUFFLEVBQUUsVUFBVSxDQUFDLEVBQUUsRUFBRSxDQUFDO0FBQzNDO0lBQ0EsUUFBUSxJQUFJLE1BQU0sRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMscUJBQXFCLEVBQUUsc0JBQXNCLENBQUMsQ0FBQyxFQUFFLHNC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QUUsRUFBRSxVQUFVLENBQUMsRUFBRSxFQUFFLENBQUM7QUFDdkM7SUFDQTtJQUNBLElBQUksSUFBSSxNQUFNLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUN6QyxJQUFJLE1BQU0sTUFBTSxFQUFFLENBQUM7QUFDbkI7SUFDQSxJQUFJLE9BQU8sT0FBTyxDQUFDLENBQUMsQ0FBQztJQUNyQixJQUFJLE9BQU8sT0FBTyxDQUFDLENBQUMsQ0FBQztJQUNyQixJQUFJLE9BQU8sT0FBTyxDQUFDLENBQUMsQ0FBQztJQUNyQixJQUFJLE9BQU8sV0FBVyxDQUFDLENBQUMsQ0FBQztJQUN6QixJQUFJLE9BQU8sV0FBVyxDQUFDLENBQUMsQ0FBQztJQUN6QixJQUFJLE9BQU8sV0FBVyxDQUFDLENBQUMsQ0FBQztJQUN6QixJQUFJLE9BQU8sV0FBVyxDQUFDLE1BQU0sQ0FBQztJQUM5QixJQUFJLE9BQU8sV0FBVyxDQUFDLE1BQU0sQ0FBQztJQUM5QixJQUFJLE9BQU8sV0FBVyxDQUFDLE1BQU0sQ0FBQztJQUM5QixJQUFJLE9BQU8sV0FBVyxDQUFDLFNBQVMsQ0FBQztJQUNqQyxJQUFJLE9BQU8sV0FBVyxDQUFDLENBQUMsQ0FBQztJQUN6QixJQUFJLElBQUksVUFBVSxDQUFDLEVBQUUsRUFBRSxVQUFVLENBQUMsRUFBRSxFQUFFLENBQUM7QUFDdkM7SUFDQTtJQUNBLElBQUksSUFBSSxNQUFNLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUN6QyxJQUFJLE1BQU0sTUFBTSxFQUFFLENBQUM7QUFDbkI7SUFDQSxJQUFJLE9BQU8sV0FBVyxDQUFDLENBQUMsQ0FBQztJQUN6QixJQUFJLE9BQU8sV0FBVyxDQUFDLENBQUMsQ0FBQztJQUN6QixJQUFJLE9BQU8sV0FBVyxDQUFDLENBQUMsQ0FBQztJQUN6QixJQUFJLE9BQU8sV0FBVyxDQUFDLENBQUMsQ0FBQztJQUN6QixJQUFJLE9BQU8sV0FBVyxDQUFDLEVBQUUsQ0FBQztJQUMxQixJQUFJLE9BQU8s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YSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7QUFDL0Q7SUFDQSxRQUFRLFVBQVUsQ0FBQyxJQUFJLEdBQUcsVUFBVSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3BELFFBQVEsSUFBSSxNQUFNLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyx1QkFBdUIsR0FBRyxFQUFFLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0FBQ3hGO0lBQ0E7SUFDQSxRQUFRLFVBQVUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUMzQixRQUFRLFVBQVUsQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzlDLFFBQVEsVUFBVSxDQUFDLEtBQUssR0FBRyxVQUFVLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDckQsUUFBUSxJQUFJLE1BQU0sRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLHdCQUF3QixHQUFHLEVBQUUsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7QUFDMUY7SUFDQTtJQUNBLFFBQVEsSUFBSSxNQUFNLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO0lBQzVELFFBQVEsTUFBTSxRQUFRLEVBQUUsQ0FBQztBQUN6QjtJQUNBO0lBQ0EsUUFBUSxJQUFJLE1BQU0sRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLDJCQUEyQixDQUFDLENBQUM7SUFDN0QsUUFBUSxNQUFNLFNBQVMsRUFBRSxDQUFDO0lBQzFCLFFBQVEsSUFBSSxNQUFNLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxDQUFDO0lBQzdELFFBQVEsTUFBTSxTQUFTLEVBQUUsQ0FBQztBQUMxQjtJQUNBO0lBQ0EsUUFBUSxJQUFJLE1BQU0sRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLDJCQUEyQixDQUFDLENBQUM7SUFDN0QsUUFBUSxNQUFNLFNBQVMsRUFBRSxDQUFDO0FBQzFCO0lBQ0E7SUFDQSxRQUFRLElBQUksTUFBTSxF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QUssQ0FBQyxLQUFLLEVBQUUsS0FBSyxHQUFHLEdBQUcsQ0FBQyxDQUFDO0lBQy9ELGdCQUFnQixJQUFJLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLFdBQVcsQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdEcsZ0JBQWdCLElBQUksR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDdEQ7SUFDQSxnQkFBZ0IsSUFBSSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztBQUMzRDtJQUNBO0lBQ0EsZ0JBQWdCLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLEtBQUssR0FBRyxHQUFHLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUNwRSxnQkFBZ0IsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDLFVBQVUsSUFBSSxHQUFHLENBQUMsQ0FBQztBQUNuRTtJQUNBO0lBQ0EsZ0JBQWdCLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLEtBQUssR0FBRyxHQUFHLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUNwRSxnQkFBZ0IsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDLFVBQVUsSUFBSSxHQUFHLENBQUMsQ0FBQztBQUNuRTtJQUNBO0lBQ0EsZ0JBQWdCLENBQUMsR0FBRyxFQUFFLENBQUMsR0FB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LElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLFVBQVUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7SUFDMUQsZ0JBQWdCLElBQUksTUFBTSxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsTUFBTSxLQUFLLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxrQkFBa0IsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxVQUFVLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzVIO0lBQ0EsZ0JBQWdCLE1BQU0sTUFBTSxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDaEQ7SUFDQSxnQkFBZ0IsTUFBTSxDQUFDLEdBQUcsV0FBVyxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQzdELGdCQUFnQixNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUM1SDtJQUNBO0lBQ0E7SUFDQSxnQkFBZ0IsTUFBTSxTQUFTLEdBQUcsV0FBVyxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFVBQVUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDL0YsZ0JBQWdCLElBQUksRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFF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QUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDcEQ7SUFDQSxnQkFBZ0IsSUFBSSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDNUQsZ0JBQWdCLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDcEQ7SUFDQSxnQkFBZ0IsSUFBSSxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2xFLGdCQUFnQixJQUFJLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDcEU7QUFDQTtJQUNBO0lBQ0EsZ0JBQWdCLElBQUksR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3JFLGdCQUFnQixHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3BEO0lBQ0EsZ0JBQWdCLElBQUksR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3JFLGdCQUFnQixHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3BEO0lBQ0EsZ0JBQWdCLElBQUksR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3JFLGdCQUFnQixHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3BEO0lBQ0EsZ0JBQWdCLElBQUksRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNuRSxnQkFBZ0IsSUFBSSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ3JFO0FBQ0E7SUFDQSxnQkFBZ0IsSUFBSSxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDeEMsZ0JBQWdCLElBQUksR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBQzNDO0lBQ0EsZ0JBQWdCLE9BQU8sQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUM7SUFDNUMsZ0JBQWdCLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUM7QUFDOUM7SUFDQTtJQUNBLGdCQUFnQixLQUFLLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDNUQsYUFBYTtBQUNiO0lBQ0E7SUFDQSxZQUFZLElBQUksTUFBTSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsdUJBQXVCLENBQUMsQ0FBQztJQUM3RCxZQUFZLFdBQVcsQ0FBQyxFQUFFLEdBQUcsTUFBTSxVQUFVLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBQ3pGO0lBQ0E7SUFDQSxZQUFZLElBQUksTUFBTSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsdUJBQXVCLENBQUMsQ0FBQztJQUM3RCxZQUFZLFdBQVcsQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ2xFO0lBQ0E7SUFDQSxZQUFZLElBQUksTUFBTSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsd0JBQXdCLENBQUMsQ0FBQztJQUM5RCxZQUFZLFdBQVcsQ0FBQyxHQUFHLEdBQUcsTUFBTSxVQUFVLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBQzNGO0lBQ0E7SUFDQSxZQUFZLFdBQVcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNoRDtJQUNBO0lBQ0EsWUFBWSxJQUFJLFdBQVcsQ0FBQyxFQUFFLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxVQUFVLEVBQUU7SUFDaEUsZ0JBQWdCLE1BQU0sSUFBSSxLQUFLLENBQUMsc0NBQXNDLENBQUMsQ0FBQztJQUN4RSxhQUFhO0FBQ2I7SUFDQSxZQUFZLE9BQU8sT0FBTyxDQUFDLEVBQUUsQ0FBQztJQUM5QixZQUFZLE9BQU8sT0FBTyxDQUFDLEdBQUcsQ0FBQztJQUMvQixZQUFZLE9BQU8sV0FBVyxDQUFDLEdBQUcsQ0FBQztJQUNuQyxTQUFTO0FBQ1Q7SUFDQSxRQUFRLGVBQWUsU0FBUyxHQUFHO0lBQ25DLFlBQVksSUFBSSxFQUFFLEdBQUcsSUFBSSxXQUFXLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQztJQUN2RCxZQUFZLEVBQUUsQ0FBQyxhQUFhLENBQUMsQ0FBQyxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMvQyxZQUFZLEVBQUUsQ0FBQyxhQUFhLENBQUMsQ0FBQyxFQUFFLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNoRCxZQUFZLEVBQUUsQ0FBQyxhQUFhLENBQUMsQ0FBQyxFQUFFLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUNoRDtJQUNBLFlBQVksV0FBVyxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsYUFBYSxFQUFFLENBQUM7QUFDaEQ7SUFDQTtJQUNBLFlBQVksSUFBSSxXQUFXLENBQUMsRUFBRSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFO0lBQ2hFLGdCQUFnQixNQUFNLElBQUksS0FBSyxDQUFDLHNDQUFzQyxDQUFDLENBQUM7SUFDeEUsYUFBYTtJQUNiLFNBQVM7SUFDVCxLQUFLO0FBQ0w7SUFDQSxJQUFJLGVBQWUsTUFBTSxHQUFHO0lBQzVCLFFBQVEsSUFBSSxNQUFNLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO0lBQzVEO0lBQ0EsUUFBUSxNQUFNLFVBQVUsR0FBRyxJQUFJLG1CQUFtQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzFELFFBQVEsVUFBVSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDL0MsUUFBUSxVQUFVLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0FBQy9EO0lBQ0E7SUFDQTtJQUNBO0lBQ0EsUUFBUSxVQUFVLENBQUMsTUFBTSxHQUFHLFVBQVUsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN0RCxRQUFRLE1BQU0sT0FBTyxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ3JEO0lBQ0E7SUFDQSxRQUFRLEtBQUssQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDO0lBQ3RCLFFBQVEsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDO0lBQzdCLFFBQVEsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtJQUNwQyxZQUFZLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDM0QsU0FBUztBQUNUO0lBQ0EsUUFBUSxLQUFLLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQztJQUN0QixRQUFRLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQztJQUM3QixRQUFRLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7SUFDcEMsWUFBWSxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzNELFNBQVM7QUFDVDtJQUNBLFFBQVEsS0FBSyxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUM7SUFDdEIsUUFBUSxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUM7SUFDN0IsUUFBUSxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUM7SUFDOUIsUUFBUSxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ3pDO0lBQ0E7SUFDQSxRQUFRLEtBQUssQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDO0lBQ3RCLFFBQVEsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLEdBQUcsRUFBRSxDQUFDO0lBQzNCLFFBQVEsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzlELFFBQVEsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtJQUNwQyxZQUFZLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3JFLFNBQVM7QUFDVDtJQUNBO0lBQ0EsUUFBUSxLQUFLLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQztJQUN0QixRQUFRLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQztJQUMzQixRQUFRLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN2RCxRQUFRLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7SUFDcEMsWUFBWSxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNyRSxTQUFTO0FBQ1Q7SUFDQTtJQUNBLFFBQVEsS0FBSyxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUM7SUFDdEIsUUFBUSxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksR0FBRyxFQUFFLENBQUM7SUFDM0IsUUFBUSxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQzdELFFBQVEsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDakUsUUFBUSxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNqRTtJQUNBLFFBQVEsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLEdBQUcsRUFBRSxDQUFDO0lBQzNCO0lBQ0E7SUFDQSxRQUFRLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzdELFFBQVEsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDakUsUUFBUSxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNqRTtJQUNBO0lBQ0EsUUFBUSxVQUFVLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDOUU7SUFDQSxRQUFRLElBQUksTUFBTSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMscUJBQXFCLEdBQUcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUNwRjtJQUNBO0lBQ0EsUUFBUSxXQUFXLENBQUMsRUFBRSxHQUFHLElBQUksVUFBVSxDQUFDLElBQUksU0FBUyxDQUFDLE9BQU8sQ0FBQyxFQUFFLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQztJQUMvRSxRQUFRLFdBQVcsQ0FBQyxFQUFFLEdBQUcsSUFBSSxVQUFVLENBQUMsSUFBSSxTQUFTLENBQUMsT0FBTyxDQUFDLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQy9FLFFBQVEsV0FBVyxDQUFDLEVBQUUsR0FBRyxJQUFJLFVBQVUsQ0FBQyxJQUFJLFNBQVMsQ0FBQyxPQUFPLENBQUMsRUFBRSxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDL0UsUUFBUSxXQUFXLENBQUMsRUFBRSxHQUFHLElBQUksVUFBVSxDQUFDLElBQUksU0FBUyxDQUFDLE9BQU8sQ0FBQyxFQUFFLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQztJQUMvRSxRQUFRLFdBQVcsQ0FBQyxFQUFFLEdBQUcsSUFBSSxVQUFVLENBQUMsSUFBSSxTQUFTLENBQUMsT0FBTyxDQUFDLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBQy9FO0lBQ0E7SUFDQSxRQUFRLE1BQU0sTUFBTSxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLFlBQVksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzFHLFFBQVEsTUFBTSxNQUFNLENBQUMsWUFBWSxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUsWUFBWSxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDMUcsUUFBUSxNQUFNLE1BQU0sQ0FBQyxZQUFZLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxZQUFZLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMxRyxRQUFRLE1BQU0sTUFBTSxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLFlBQVksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzFHLFFBQVEsTUFBTSxNQUFNLENBQUMsWUFBWSxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUsWUFBWSxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDMUc7SUFDQTtJQUNBLFFBQVEsSUFBSSxNQUFNLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxDQUFDO0lBQzdELFFBQVEsS0FBSyxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsV0FBVyxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDMUUsUUFBUSxLQUFLLENBQUMsYUFBYSxDQUFDLElBQUksRUFBRSxXQUFXLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUMxRSxRQUFRLEtBQUssQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLFdBQVcsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzFFLFFBQVEsS0FBSyxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsV0FBVyxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDMUUsUUFBUSxLQUFLLENBQUMsYUFBYSxDQUFDLElBQUksRUFBRSxXQUFXLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUMxRSxRQUFRLEtBQUssQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLFdBQVcsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzlFLFFBQVEsS0FBSyxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsV0FBVyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDOUUsUUFBUSxLQUFLLENBQUMsYUFBYSxDQUFDLElBQUksRUFBRSxXQUFXLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUM5RSxRQUFRLEtBQUssQ0FBQyxhQUFhLENBQUMsR0FBRyxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3hFLFFBQVEsS0FBSyxDQUFDLGFBQWEsQ0FBQyxHQUFHLEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDeEUsUUFBUSxLQUFLLENBQUMsYUFBYSxDQUFDLEdBQUcsRUFBRSxXQUFXLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN4RSxRQUFRLEtBQUssQ0FBQyxhQUFhLENBQUMsR0FBRyxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ3hFO0lBQ0EsUUFBUSxVQUFVLENBQUMsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ2pFLFFBQVEsS0FBSyxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDMUUsUUFBUSxLQUFLLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxXQUFXLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUM1RSxRQUFRLEtBQUssQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLFdBQVcsQ0FBQyxFQUFF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LEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ3ZGLG9CQUFvQixLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMzRixnQkFBZ0IsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLFdBQVcsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3JHLG9CQUFvQixXQUFXLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLFdBQVcsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3hHLG9CQUFvQixXQUFXLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLFdBQVcsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3hHLG9CQUFvQixXQUFXLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLFdBQVcsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFD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LEdBQUcsS0FBSyxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3hDLElBQUksR0FBRyxDQUFDLEVBQUUsR0FBRyxLQUFLLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDeEMsSUFBSSxHQUFHLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN0QztJQUNBLElBQUksR0FBRyxDQUFDLEVBQUUsR0FBRyxLQUFLLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDeEMsSUFBSSxHQUFHLENBQUMsRUFBRSxHQUFHLEtBQUssQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUN4QyxJQUFJLEdBQUcsQ0FBQyxFQUFFLEdBQUcsS0FBSyxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3hDLElBQUksR0FBRyxDQUFDLEVBQUUsR0FBRyxLQUFLLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDeEMsSUFBSSxHQUFHLENBQUMsR0FBRyxHQUFHLEtBQUssQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUMxQyxJQUFJLEdBQUcsQ0FBQyxFQUFFLEdBQUcsS0FBSyxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3hDLElBQUksT0FBTyxHQUFHLENBQUM7SUFDZixDQUFDO0FBQ0Q7SUFDQSxTQUFTLHFCQUFxQixDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFO0lBQ2pELElBQUksTUFBTSxFQUFFLEdBQUcsS0FBSyxDQUFDLEVBQUUsQ0FBQztJQUN4QixJQUFJLE9BQU8sRUFBRSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQztJQUMzQyxXQUFXLEVBQUUsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUM7SUFDM0MsV0FBVyxFQUFFLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDO0lBQzNDLFdBQVcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQztJQUMzQyxXQUFXLEVBQUUsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzdCLENBQUM7QUFDRDtJQUNBLFNBQVMsdUJBQXVCLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRTtJQUMvQyxJQUFJLE9BQU8sTUFBTSxDQUFDLEVBQUUsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3JDLENBQUM7QUFDRDtJQUNBLFNBQVMsc0JBQXNCLENBQUMsS0FBSyxFQUFFLFVBQVUsRUFBRTtJQUNuRCxJQUFJLE9BQU8sdUJBQXVCLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztJQUN4RSxDQUFDO0FBQ0Q7SUFDQSxTQUFTLG1CQUFtQixDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUU7SUFDM0MsSUFBSSxPQUFPLHNCQUFzQixDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQztJQUM5RCxXQUFXLHNCQUFzQixDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQztJQUM5RCxXQUFXLHNCQUFzQixDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQztJQUM5RCxXQUFXLHNCQUFzQixDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQztJQUM5RCxXQUFXLHNCQUFzQixDQUFD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LENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNqQyxJQUFJLElBQUksRUFBRSxHQUFHLEVBQUUsQ0FBQztJQUNoQixJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDO0lBQ2xCLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzdCLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNqQyxJQUFJLElBQUksRUFBRSxHQUFHLEVBQUUsQ0FBQztJQUNoQixJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDO0lBQ2xCLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQzdCO0lBQ0E7SUFDQTtJQUNBO0FBQ0E7SUFDQTtJQUNBLElBQUksS0FBSyxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUM7SUFDbEIsSUFBSSxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksR0FBRyxFQUFFLENBQUM7SUFDdkIsSUFBSSxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsQ0FBQztJQUMvQyxJQUFJLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7SUFDaEMsUUFBUSxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzNELEtBQUs7QUFDTDtJQUNBO0lBQ0EsSUFBSSxLQUFLLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQztJQUNsQixJQUFJLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQztJQUN2QixJQUFJLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNuRCxJQUFJLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7SUFDaEMsUUFBUSxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzNELEtBQUs7QUFDTDtJQUNBO0lBQ0EsSUFBSSxLQUFLLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQztJQUNsQixJQUFJLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQztJQUN2QixJQUFJLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDekQsSUFBSSxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3ZELElBQUksS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN2RDtJQUNBLElBQUksS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLEdBQUcsRUFBRSxDQUFDO0lBQ3ZCO0lBQ0E7SUFDQSxJQUFJLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3ZELElBQUksS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN2RCxJQUFJLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDdkQ7SUFDQTtJQUNBLElBQUksVUFBVSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzFFLElBQUksVUFBVSxDQUFDLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztBQUMzRDtJQUNBLElBQUksVUFBVSxDQUFDLEdBQUcsR0FBRyxVQUFVLENBQUMsRUFBRSxDQUFDO0lBQ25DLElBQUksRUFBRSxDQUFDLFVBQVUsR0FBRyxDQUFDLENBQUM7SUFDdEIsSUFBSSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDLEVBQUUsRUFBRTtJQUN2QyxRQUFRLFVBQVUsQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDbkQsUUFBUSxFQUFFLENBQUMsVUFBVSxJQUFJLENBQUMsQ0FBQztJQUMzQixLQUFLO0FBQ0w7SUFDQSxJQUFJLFVBQVUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUN2QixJQUFJLFVBQVUsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDakMsSUFBSSxVQUFVLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDL0MsSUFBSSxVQUFVLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDL0MsSUFBSSxVQUFVLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDL0MsSUFBSSxVQUFVLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDL0MsSUFBSSxVQUFVLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDL0MsSUFBSSxVQUFVLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDL0MsSUFBSSxVQUFVLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDL0MsSUFBSSxVQUFVLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDL0MsSUFBSSxVQUFVLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDOUMsSUFBSSxVQUFVLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDOUMsSUFBSSxVQUFVLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDOUMsSUFBSSxVQUFVLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDOUMsSUFBSSxVQUFVLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDL0MsSUFBSSxVQUFVLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDaEQsSUFBSSxVQUFVLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDaEQsSUFBSSxVQUFVLENBQUMsS0FBSyxHQUFHLFVBQVUsQ0FBQyxZQUFZLEVBQUUsQ0FBQztBQUNqRDtJQUNBLElBQUksVUFBVSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ3ZCLElBQUksVUFBVSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDM0MsSUFBSSxVQUFVLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUN0RCxJQUFJLFVBQVUsQ0FBQyxDQUFDLEdBQUcsVUFBVSxDQUFDLFlBQVksRUFBRSxDQUFDO0FBQzdDO0lBQ0EsSUFBSSxJQUFJLE1BQU0sRUFBRTtJQUNoQixRQUFRLE1BQU0s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QUFJLENBQUMscUJBQXFCLENBQUMsQ0FBQztBQUNuRDtJQUNBLElBQUksSUFBSSxHQUFHLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQztJQUN0QixJQUFJLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7SUFDaEMsUUFBUSxJQUFJLFVBQVUsR0FBRyxFQUFFLENBQUM7SUFDNUIsUUFBUSxVQUFVLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDekMsUUFBUSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO0lBQ3BDLFlBQVksVUFBVSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3hFLFNBQVM7QUFDVDtJQUNBLFFBQVEsSUFBSSxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsRUFBRSxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDM0YsUUFBUSxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLEVBQUUsRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3JFLFFBQVEsRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxFQUFFLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNyRSxRQUFRLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsRUFBRSxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDckUsUUFBUSxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLEVBQUUsRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3JFLFFBQVEsRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxFQUFFLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNyRSxRQUFRLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsRUFBRSxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDckU7SUFDQSxRQUFRLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzdDLEtBQUs7QUFDTDtJQUNBLElBQUksT0FBTyxHQUFHLENBQUM7SUFDZixDQUFDO0FBQ0Q7SUFDQSxTQUFTLFNBQVMsQ0FBQyxLQUFLLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRTtJQUNoRSxJQUFJLE1BQU0sRUFBRSxHQUFHLEtBQUssQ0FBQyxFQUFFLENBQUM7QUFDeEI7SUFDQSxJQUFJLE1BQU0sRUFBRSxHQUFHLG1CQUFtQixDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLFVBQVUsQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQztBQUN0RjtJQUNBO0lBQ0E7SUFDQTtJQUNBO0FBQ0E7SUFDQTtJQUNBLElBQUksSUFBSSxNQUFNLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO0lBQ3BELElBQUksSUFBSSxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLEVBQUUsRUFBRSxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQy9ELElBQUksRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxFQUFFLEVBQUUsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3ZFLElBQUksRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNwRyxJQUFJLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsRUFBRSxFQUFFLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN2RSxJQUFJLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxLQUFLLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzFDLElBQUksRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3hCLElBQUksRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUN0QztJQUNBO0lBQ0EsSUFBSSxJQUFJLE1BQU0sRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLG1DQUFtQyxDQUFDLENBQUM7QUFDakU7SUFDQSxJQUFJLElBQUksR0FBRyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUM7SUFDdEIsSUFBSSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO0lBQ2hDLFFBQVEsSUFBSSxFQUFFLEdBQUcsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7SUFDckMsUUFBUSxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdkUsUUFBUSxNQUFNLFdBQVcsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDeEQsUUFBUSxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxXQUFXLEVBQUUsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2xFLFFBQVEsRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxXQUFXLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQzNFO0lBQ0EsUUFBUSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM3QyxLQUFLO0FBQ0w7SUFDQSxJQUFJLE9BQU8sR0FBRyxDQUFDO0lBQ2YsQ0FBQztBQUNEO0lBQ0EsU0FBUyxTQUFTLENBQUMsS0FBSyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFO0lBQzNFLElBQUksTUFBTSxFQUFFLEdBQUcsS0FBSyxDQUFDLEVBQUUsQ0FBQztBQUN4QjtJQUNBLElBQUksTUFBTSxJQUFJLEdBQUcsbUJBQW1CLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLFVBQVUsQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDLEVBQUUsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQ3pIO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7QUFDQTtJQUNBO0lBQ0EsSUFBSSxJQUFJLE1BQU0sRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLENBQUM7SUFDcEQsSUFBSSxJQUFJLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNqRCxJQUFJLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxTQUFTLENBQUMsQ0FBQztJQUMvQixJQUFJLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDdEM7SUFDQTtJQUNBLElBQUksSUFBSSxNQUFNLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO0lBQ3BELElBQUksTUFBTSxNQUFNLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUMxRCxJQUFJLE1BQU0sSUFBSSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDL0UsSUFBSSxNQUFNLElBQUksR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQzlGLElBQUksTUFBTSxJQUFJLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUM5RixJQUFJLE1BQU0sR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzlFO0lBQ0EsSUFBSSxNQUFNLElBQUksR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLEVBQUUsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDdEgsSUFBSSxNQUFNLElBQUksR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLEVBQUUsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDdEgsSUFBSSxNQUFNLElBQUksR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLEVBQUUsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDdEgsSUFBSSxNQUFNLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMvRTtJQUNBLElBQUksSUFBSSxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDOUIsSUFBSSxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3RDO0lBQ0E7SUFDQSxJQUFJLElBQUksTUFBTSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsbUNBQW1DLENBQUMsQ0FBQztJQUNqRSxJQUFJLElBQUksR0FBRyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUM7SUFDdEIsSUFBSSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO0lBQ2hDLFFBQVEsSUFBSSxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDM0UsUUFBUSxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUNqRTtJQUNBLFFBQVEsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDL0MsS0FBSztBQUNMO0lBQ0EsSUFBSSxJQUFJLE1BQU0sRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLG1DQUFtQyxDQUFDLENBQUM7SUFDakUsSUFBSSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO0lBQ2hDLFFBQVEsSUFBSSxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUMvRixRQUFRLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDcEY7SUFDQSxRQUFRLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNuRCxLQUFLO0FBQ0w7SUFDQSxJQUFJLE9BQU8sR0FBRyxDQUFDO0lBQ2YsQ0FBQztBQUNEO0lBQ0EsU0FBUyxRQUFRLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRTtJQUN2RCxJQUFJLE1BQU0sRUFBRSxHQUFHLEtBQUssQ0FBQyxFQUFFLENBQUM7SUFDeEIsSUFBSSxNQUFNLEVBQUUsR0FBRyxLQUFLLENBQUMsRUFBRSxDQUFDO0FBQ3hCO0lBQ0EsSUFBSSxJQUFJLEtBQUssR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN2RCxJQUFJLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7SUFDaEMsUUFBUSxLQUFLLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN0RSxLQUFLO0FBQ0w7SUFDQSxJQUFJLFVBQVUsQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDO0FBQzVCO0lBQ0EsSUFBSSxJQUFJLEtBQUssR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN2RCxJQUFJLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7SUFDaEMsUUFBUSxLQUFLLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN0RSxLQUFLO0FBQ0w7SUFDQSxJQUFJLElBQUksS0FBSyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3ZELElBQUksS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtJQUNoQyxRQUFRLEtBQUssR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3RFLEtBQUs7SUFDTCxJQUFJLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7SUFDaEMsUUFBUSxLQUFLLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN0RSxLQUFLO0FBQ0w7SUFDQSxJQUFJLFVBQVUsQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDMUUsSUFBSSxVQUFVLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztBQUNyRjtJQUNBLElBQUksSUFBSSxFQUFFLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLEVBQUUsRUFBRSxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDcEUsSUFBSSxJQUFJLEVBQUUsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsRUFBRSxFQUFFLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUNwRTtJQUNBLElBQUksT0FBTyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN6QyxDQUFDO0FBQ0Q7SUFDQSxTQUFTLFFBQVEsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUU7SUFDNUQsSUFBSSxNQUFNLEVBQUUsR0FBRyxLQUFLLENBQUMsRUFBRSxDQUFDO0lBQ3hCLElBQUksTUFBTSxFQUFFLEdBQUcsS0FBSyxDQUFDLEVBQUUsQ0FBQztBQUN4QjtJQUNBLElBQUksSUFBSSxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzlDLElBQUksSUFBSSxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQzlDO0lBQ0EsSUFBSSxPQUFPLEVBQUUsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDMUQsQ0FBQztBQUNEO0lBQ0EsU0FBUyxRQUFRLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUU7SUFDNUMsSUFBSSxNQUFNLEVBQUUsR0FBRyxLQUFLLENBQUMsRUFBRSxDQUFDO0FBQ3hCO0lBQ0EsSUFBSSxPQUFPLEVBQUUsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxFQUFFLEVBQUUsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzdELENBQUM7QUFDRDtJQUNBLGVBQWUsY0FBYyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRTtJQUNyRSxJQUFJLE1BQU0sRUFBRSxHQUFHLEtBQUssQ0FBQyxFQUFFLENBQUM7QUFDeEI7SUFDQSxJQUFJLElBQUksRUFBRSxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxFQUFFLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzVELElBQUksRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUM3QyxJQUFJLE1BQU0sRUFBRSxHQUFHLEtBQUss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LEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUNqRDtJQUNBLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUN4RSxJQUFJLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUU7SUFDbEMsUUFBUSxNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQztJQUNuRCxRQUFRLE1BQU0sSUFBSSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2hEO0lBQ0EsUUFBUSxNQUFNLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO0FBQ3BEO0lBQ0EsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDakMsS0FBSztBQUNMO0lBQ0EsSUFBSSxJQUFJLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVB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QUFDLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3hFLElBQUksQ0FBQyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDeEUsSUFBSSxDQUFDLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN4RSxJQUFJLENBQUMsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNoRyxJQUFJLENBQUMsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNoRyxJQUFJLENBQUMsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMvRixJQUFJLENBQUMsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM3RixJQUFJLENBQUMsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNsRyxJQUFJLENBQUMsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDdEMsSUFBSSxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbEI7O0lDNURBO0lBQ0E7QUFDQTtJQUNBO0FBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtBQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7QUFDQTtJQUNBO0lBQ0E7SUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7In0= diff --git a/build/snarkjs.min.js b/build/snarkjs.min.js index 6a3b831f..477c9a9c 100644 --- a/build/snarkjs.min.js +++ b/build/snarkjs.min.js @@ -1,4 +1,4 @@ -var snarkjs=function(t){"use strict";const e=[0,1,2,2,3,3,3,3,4,4,4,4,4,4,4,4];function a(t,e){return e&&10!=e?16==e?"0x"==t.slice(0,2)?BigInt(t):BigInt("0x"+t):void 0:BigInt(t)}const i=a;function o(t){const a=t.toString(16);return 4*(a.length-1)+e[parseInt(a[0],16)]}function n(t){return BigInt(t)>BigInt(e)}const c=r,d=s;function u(t){return(BigInt(t)&BigInt(1))==BigInt(1)}function g(t){let e=BigInt(t);const a=[];for(;e;)e&BigInt(1)?a.push(1):a.push(0),e>>=BigInt(1);return a}function f(t){if(t>BigInt(Number.MAX_SAFE_INTEGER))throw new Error("Number too big");return Number(t)}function h(t,e){return BigInt(t)+BigInt(e)}function _(t,e){return BigInt(t)-BigInt(e)}function p(t){return-BigInt(t)}function m(t,e){return BigInt(t)*BigInt(e)}function w(t,e){return BigInt(t)**BigInt(e)}function L(t,e){return BigInt(t)/BigInt(e)}function b(t,e){return BigInt(t)%BigInt(e)}function y(t,e){return BigInt(t)==BigInt(e)}function A(t,e){return BigInt(t)>BigInt(e)}function C(t,e){return BigInt(t)>=BigInt(e)}function I(t,e){return BigInt(t)&BigInt(e)}function F(t,e,a,i){const o="0000000"+a.toString(16),n=new Uint32Array(t.buffer,t.byteOffset+e,i/4),l=1+(4*(o.length-7)-1>>5);for(let t=0;t>5);for(let t=0;tn[n.length-e-1]=t.toString(16).padStart(8,"0"))),a(n.join(""),16)}function v(t,e,i){i=i||t.byteLength,e=e||0;const o=new DataView(t.buffer,t.byteOffset+e,i),n=new Array(i/4);for(let t=0;t=0?BigInt(t):-BigInt(t)},add:h,band:I,bitLength:o,bits:g,bor:function(t,e){return BigInt(t)|BigInt(e)},bxor:function(t,e){return BigInt(t)^BigInt(e)},div:L,e:i,eq:y,exp:function(t,e){return BigInt(t)**BigInt(e)},fromArray:function(t,e){let a=BigInt(0);e=BigInt(e);for(let i=0;i>=BigInt(1)}return a},neg:p,neq:function(t,e){return BigInt(t)!=BigInt(e)},one:G,pow:w,shiftLeft:r,shiftRight:s,shl:c,shr:d,square:function(t){return BigInt(t)*BigInt(t)},sub:_,toArray:function(t,e){const a=[];let i=BigInt(t);for(e=BigInt(e);i;)a.unshift(Number(i%e)),i/=e;return a},toLEBuff:S,toNumber:f,toRprBE:x,toRprLE:F,toString:B,zero:P});function T(t,e,a){if(l(a))return t.one;const i=g(a);if(0==i.length)return t.one;let o=e;for(let a=i.length-2;a>=0;a--)o=t.square(o),i[a]&&(o=t.mul(o,e));return o}function U(t){if(t.m%2==1)if(y(b(t.p,4),1))if(y(b(t.p,8),1))if(y(b(t.p,16),1))!function(t){t.sqrt_q=w(t.p,t.m),t.sqrt_s=0,t.sqrt_t=_(t.sqrt_q,1);for(;!u(t.sqrt_t);)t.sqrt_s=t.sqrt_s+1,t.sqrt_t=L(t.sqrt_t,2);let e=t.one;for(;t.eq(e,t.one);){const a=t.random();t.sqrt_z=t.pow(a,t.sqrt_t),e=t.pow(t.sqrt_z,2**(t.sqrt_s-1))}t.sqrt_tm1d2=L(_(t.sqrt_t,1),2),t.sqrt=function(t){const e=this;if(e.isZero(t))return e.zero;let a=e.pow(t,e.sqrt_tm1d2);const i=e.pow(e.mul(e.square(a),t),2**(e.sqrt_s-1));if(e.eq(i,e.negone))return null;let o=e.sqrt_s,n=e.mul(t,a),l=e.mul(n,a),r=e.sqrt_z;for(;!e.eq(l,e.one);){let t=e.square(l),i=1;for(;!e.eq(t,e.one);)t=e.square(t),i++;a=r;for(let t=0;t>>0,t[o]=(t[o]^t[e])>>>0,t[o]=(t[o]<<16|t[o]>>>16&65535)>>>0,t[i]=t[i]+t[o]>>>0,t[a]=(t[a]^t[i])>>>0,t[a]=(t[a]<<12|t[a]>>>20&4095)>>>0,t[e]=t[e]+t[a]>>>0,t[o]=(t[o]^t[e])>>>0,t[o]=(t[o]<<8|t[o]>>>24&255)>>>0,t[i]=t[i]+t[o]>>>0,t[a]=(t[a]^t[i])>>>0,t[a]=(t[a]<<7|t[a]>>>25&127)>>>0}class Q{constructor(t){t=t||[0,0,0,0,0,0,0,0],this.state=[1634760805,857760878,2036477234,1797285236,t[0],t[1],t[2],t[3],t[4],t[5],t[6],t[7],0,0,0,0],this.idx=16,this.buff=new Array(16)}nextU32(){return 16==this.idx&&this.update(),this.buff[this.idx++]}nextU64(){return h(m(this.nextU32(),4294967296),this.nextU32())}nextBool(){return 1==(1&this.nextU32())}update(){for(let t=0;t<16;t++)this.buff[t]=this.state[t];for(let e=0;e<10;e++)z(t=this.buff,0,4,8,12),z(t,1,5,9,13),z(t,2,6,10,14),z(t,3,7,11,15),z(t,0,5,10,15),z(t,1,6,11,12),z(t,2,7,8,13),z(t,3,4,9,14);var t;for(let t=0;t<16;t++)this.buff[t]=this.buff[t]+this.state[t]>>>0;this.idx=0,this.state[12]=this.state[12]+1>>>0,0==this.state[12]&&(this.state[13]=this.state[13]+1>>>0,0==this.state[13]&&(this.state[14]=this.state[14]+1>>>0,0==this.state[14]&&(this.state[15]=this.state[15]+1>>>0)))}}function q(t){let e=new Uint8Array(t);if(void 0!==globalThis.crypto)globalThis.crypto.getRandomValues(e);else for(let a=0;a>>0;return e}let M=null;function k(){return M||(M=new Q(function(){const t=q(32),e=new Uint32Array(t.buffer),a=[];for(let t=0;t<8;t++)a.push(e[t]);return a}()),M)}class R{constructor(t,e,a){this.F=e,this.G=t,this.opMulGF=a;let i=e.sqrt_t||e.t,o=e.sqrt_s||e.s,n=e.one;for(;e.eq(e.pow(n,e.half),e.one);)n=e.add(n,e.one);this.w=new Array(o+1),this.wi=new Array(o+1),this.w[o]=this.F.pow(n,i),this.wi[o]=this.F.inv(this.w[o]);let l=o-1;for(;l>=0;)this.w[l]=this.F.square(this.w[l+1]),this.wi[l]=this.F.square(this.wi[l+1]),l--;this.roots=[],this._setRoots(Math.min(o,15))}_setRoots(t){for(let e=t;e>=0&&!this.roots[e];e--){let t=this.F.one;const a=1<>1,r=N(t,e,a-1,i,2*o),s=N(t,e,a-1,i+o,2*o),c=new Array(n);for(let e=0;e>this.one,this.bitLength=o(this.p),this.mask=(this.one<>this.one;this.nqr=this.two;let a=this.pow(this.nqr,e);for(;!this.eq(a,this.negone);)this.nqr=this.nqr+this.one,a=this.pow(this.nqr,e);for(this.s=0,this.t=this.negone;(this.t&this.one)==this.zero;)this.s=this.s+1,this.t=this.t>>this.one;this.nqr_to_t=this.pow(this.nqr,this.t),U(this),this.FFT=new R(this,this,this.mul.bind(this)),this.fft=this.FFT.fft.bind(this.FFT),this.ifft=this.FFT.ifft.bind(this.FFT),this.w=this.FFT.w,this.wi=this.FFT.wi,this.shift=this.square(this.nqr),this.k=this.exp(this.nqr,2**this.s)}e(t,e){let a;if(e?16==e&&(a=BigInt("0x"+t)):a=BigInt(t),a<0){let t=-a;return t>=this.p&&(t%=this.p),this.p-t}return a>=this.p?a%this.p:a}add(t,e){const a=t+e;return a>=this.p?a-this.p:a}sub(t,e){return t>=e?t-e:this.p-e+t}neg(t){return t?this.p-t:t}mul(t,e){return t*e%this.p}mulScalar(t,e){return t*this.e(e)%this.p}square(t){return t*t%this.p}eq(t,e){return t==e}neq(t,e){return t!=e}lt(t,e){return(t>this.half?t-this.p:t)<(e>this.half?e-this.p:e)}gt(t,e){return(t>this.half?t-this.p:t)>(e>this.half?e-this.p:e)}leq(t,e){return(t>this.half?t-this.p:t)<=(e>this.half?e-this.p:e)}geq(t,e){return(t>this.half?t-this.p:t)>=(e>this.half?e-this.p:e)}div(t,e){return this.mul(t,this.inv(e))}idiv(t,e){if(!e)throw new Error("Division by zero");return t/e}inv(t){if(!t)throw new Error("Division by zero");let e=this.zero,a=this.p,i=this.one,o=t%this.p;for(;o;){let t=a/o;[e,i]=[i,e-t*i],[a,o]=[o,a-t*o]}return e=this.p?a-this.p:a}bor(t,e){const a=(t|e)&this.mask;return a>=this.p?a-this.p:a}bxor(t,e){const a=(t^e)&this.mask;return a>=this.p?a-this.p:a}bnot(t){const e=t^this.mask;return e>=this.p?e-this.p:e}shl(t,e){if(Number(e)=this.p?a-this.p:a}{const a=this.p-e;return Number(a)>a:this.zero}}shr(t,e){if(Number(e)>e;{const a=this.p-e;if(Number(a)=this.p?e-this.p:e}return 0}}land(t,e){return t&&e?this.one:this.zero}lor(t,e){return t||e?this.one:this.zero}lnot(t){return t?this.zero:this.one}sqrt_old(t){if(t==this.zero)return this.zero;if(this.pow(t,this.negone>>this.one)!=this.one)return null;let e=this.s,a=this.nqr_to_t,i=this.pow(t,this.t),o=this.pow(t,this.add(this.t,this.one)>>this.one);for(;i!=this.one;){let t=this.square(i),n=1;for(;t!=this.one;)n++,t=this.square(t);let l=a;for(let t=0;tthis.p>>this.one&&(o=this.neg(o)),o}normalize(t,e){if((t=BigInt(t,e))<0){let e=-t;return e>=this.p&&(e%=this.p),this.p-e}return t>=this.p?t%this.p:t}random(){const t=2*this.bitLength/8;let e=this.zero;for(let a=0;athis.half&&10==e){a="-"+(this.p-t).toString(e)}else a=t.toString(e);return a}isZero(t){return t==this.zero}fromRng(t){let e;do{e=this.zero;for(let a=0;a=this.p);return e=e*this.Ri%this.p,e}fft(t){return this.FFT.fft(t)}ifft(t){return this.FFT.ifft(t)}toRprLE(t,e,a){F(t,e,a,8*this.n64)}toRprBE(t,e,a){x(t,e,a,8*this.n64)}toRprBEM(t,e,a){return this.toRprBE(t,e,this.mul(this.R,a))}toRprLEM(t,e,a){return this.toRprLE(t,e,this.mul(this.R,a))}fromRprLE(t,e){return E(t,e,this.n8)}fromRprBE(t,e){return v(t,e,this.n8)}fromRprLEM(t,e){return this.mul(this.fromRprLE(t,e),this.Ri)}fromRprBEM(t,e){return this.mul(this.fromRprBE(t,e),this.Ri)}toObject(t){return t}}var V={bigInt2BytesLE:function(t,e){const a=Array(e);let i=BigInt(t);for(let t=0;t>=8n;return a},bigInt2U32LE:function(t,e){const a=Array(e);let i=BigInt(t);for(let t=0;t>=32n;return a},isOcamNum:function(t){return!!Array.isArray(t)&&(3==t.length&&("number"==typeof t[0]&&("number"==typeof t[1]&&!!Array.isArray(t[2]))))}},K=function(t,e,a,i,o,n,l){const r=t.addFunction(e);r.addParam("base","i32"),r.addParam("scalar","i32"),r.addParam("scalarLength","i32"),r.addParam("r","i32"),r.addLocal("i","i32"),r.addLocal("b","i32");const s=r.getCodeBuilder(),c=s.i32_const(t.alloc(a));r.addCode(s.if(s.i32_eqz(s.getLocal("scalarLength")),[...s.call(l,s.getLocal("r")),...s.ret([])])),r.addCode(s.call(n,s.getLocal("base"),c)),r.addCode(s.call(l,s.getLocal("r"))),r.addCode(s.setLocal("i",s.getLocal("scalarLength"))),r.addCode(s.block(s.loop(s.setLocal("i",s.i32_sub(s.getLocal("i"),s.i32_const(1))),s.setLocal("b",s.i32_load8_u(s.i32_add(s.getLocal("scalar"),s.getLocal("i")))),...function(){const t=[];for(let e=0;e<8;e++)t.push(...s.call(o,s.getLocal("r"),s.getLocal("r")),...s.if(s.i32_ge_u(s.getLocal("b"),s.i32_const(128>>e)),[...s.setLocal("b",s.i32_sub(s.getLocal("b"),s.i32_const(128>>e))),...s.call(i,s.getLocal("r"),c,s.getLocal("r"))]));return t}(),s.br_if(1,s.i32_eqz(s.getLocal("i"))),s.br(0))))},j=function(t,e){const a=8*t.modules[e].n64,i=t.addFunction(e+"_batchInverse");i.addParam("pIn","i32"),i.addParam("inStep","i32"),i.addParam("n","i32"),i.addParam("pOut","i32"),i.addParam("outStep","i32"),i.addLocal("itAux","i32"),i.addLocal("itIn","i32"),i.addLocal("itOut","i32"),i.addLocal("i","i32");const o=i.getCodeBuilder(),n=o.i32_const(t.alloc(a));i.addCode(o.setLocal("itAux",o.i32_load(o.i32_const(0))),o.i32_store(o.i32_const(0),o.i32_add(o.getLocal("itAux"),o.i32_mul(o.i32_add(o.getLocal("n"),o.i32_const(1)),o.i32_const(a))))),i.addCode(o.call(e+"_one",o.getLocal("itAux")),o.setLocal("itIn",o.getLocal("pIn")),o.setLocal("itAux",o.i32_add(o.getLocal("itAux"),o.i32_const(a))),o.setLocal("i",o.i32_const(0)),o.block(o.loop(o.br_if(1,o.i32_eq(o.getLocal("i"),o.getLocal("n"))),o.if(o.call(e+"_isZero",o.getLocal("itIn")),o.call(e+"_copy",o.i32_sub(o.getLocal("itAux"),o.i32_const(a)),o.getLocal("itAux")),o.call(e+"_mul",o.getLocal("itIn"),o.i32_sub(o.getLocal("itAux"),o.i32_const(a)),o.getLocal("itAux"))),o.setLocal("itIn",o.i32_add(o.getLocal("itIn"),o.getLocal("inStep"))),o.setLocal("itAux",o.i32_add(o.getLocal("itAux"),o.i32_const(a))),o.setLocal("i",o.i32_add(o.getLocal("i"),o.i32_const(1))),o.br(0))),o.setLocal("itIn",o.i32_sub(o.getLocal("itIn"),o.getLocal("inStep"))),o.setLocal("itAux",o.i32_sub(o.getLocal("itAux"),o.i32_const(a))),o.setLocal("itOut",o.i32_add(o.getLocal("pOut"),o.i32_mul(o.i32_sub(o.getLocal("n"),o.i32_const(1)),o.getLocal("outStep")))),o.call(e+"_inverse",o.getLocal("itAux"),o.getLocal("itAux")),o.block(o.loop(o.br_if(1,o.i32_eqz(o.getLocal("i"))),o.if(o.call(e+"_isZero",o.getLocal("itIn")),[...o.call(e+"_copy",o.getLocal("itAux"),o.i32_sub(o.getLocal("itAux"),o.i32_const(a))),...o.call(e+"_zero",o.getLocal("itOut"))],[...o.call(e+"_copy",o.i32_sub(o.getLocal("itAux"),o.i32_const(a)),n),...o.call(e+"_mul",o.getLocal("itAux"),o.getLocal("itIn"),o.i32_sub(o.getLocal("itAux"),o.i32_const(a))),...o.call(e+"_mul",o.getLocal("itAux"),n,o.getLocal("itOut"))]),o.setLocal("itIn",o.i32_sub(o.getLocal("itIn"),o.getLocal("inStep"))),o.setLocal("itOut",o.i32_sub(o.getLocal("itOut"),o.getLocal("outStep"))),o.setLocal("itAux",o.i32_sub(o.getLocal("itAux"),o.i32_const(a))),o.setLocal("i",o.i32_sub(o.getLocal("i"),o.i32_const(1))),o.br(0)))),i.addCode(o.i32_store(o.i32_const(0),o.getLocal("itAux")))};var H=function(t,e,a,i,o,n){void 0===n&&(n=ie?1:-1}function J(t){return t*t}function X(t){return t%2n!==0n}function tt(t){return t%2n===0n}function et(t){return t<0n}function at(t){return t>0n}function it(t){return et(t)?t.toString(2).length-1:t.toString(2).length}function ot(t){return t<0n?-t:t}function nt(t){return 1n===ot(t)}function lt(t,e){for(var a,i,o,n=0n,l=1n,r=e,s=ot(t);0n!==s;)a=r/s,i=n,o=r,n=l,r=s,l=i-a*l,s=o-a*s;if(!nt(r))throw new Error(t.toString()+" and "+e.toString()+" are not co-prime");return-1===Y(n,0n)&&(n+=e),et(t)?-n:n}function rt(t,e,a){if(0n===a)throw new Error("Cannot take modPow with modulus 0");var i=1n,o=t%a;for(et(e)&&(e*=-1n,o=lt(o,a));at(e);){if(0n===o)return 0n;X(e)&&(i=i*o%a),e/=2n,o=J(o)%a}return i}function st(t,e){return 0n!==e&&(!!nt(e)||(0===function(t,e){return(t=t>=0n?t:-t)===(e=e>=0n?e:-e)?0:t>e?1:-1}(e,2n)?tt(t):t%e===0n))}function ct(t,e){for(var a,i,o,n=function(t){return t-1n}(t),l=n,r=0;tt(l);)l/=2n,r++;t:for(i=0;i>1&&i>1,t>>1)))),e.addCode(a.setLocal(s,a.i64_add(a.getLocal(s),a.i64_shr_u(a.getLocal(r),a.i64_const(32)))))),t>0&&(e.addCode(a.setLocal(r,a.i64_add(a.i64_and(a.getLocal(r),a.i64_const(4294967295)),a.i64_and(a.getLocal(c),a.i64_const(4294967295))))),e.addCode(a.setLocal(s,a.i64_add(a.i64_add(a.getLocal(s),a.i64_shr_u(a.getLocal(r),a.i64_const(32))),a.getLocal(d))))),e.addCode(a.i64_store32(a.getLocal("r"),4*t,a.getLocal(r))),e.addCode(a.setLocal(c,a.getLocal(s)),a.setLocal(d,a.i64_shr_u(a.getLocal(c),a.i64_const(32))))}e.addCode(a.i64_store32(a.getLocal("r"),4*o*2-4,a.getLocal(c)))}(),function(){const e=t.addFunction(i+"_squareOld");e.addParam("x","i32"),e.addParam("r","i32");const a=e.getCodeBuilder();e.addCode(a.call(i+"_mul",a.getLocal("x"),a.getLocal("x"),a.getLocal("r")))}(),function(){!function(){const e=t.addFunction(i+"__mul1");e.addParam("px","i32"),e.addParam("y","i64"),e.addParam("pr","i32"),e.addLocal("c","i64");const a=e.getCodeBuilder();e.addCode(a.setLocal("c",a.i64_mul(a.i64_load32_u(a.getLocal("px"),0,0),a.getLocal("y")))),e.addCode(a.i64_store32(a.getLocal("pr"),0,0,a.getLocal("c")));for(let t=1;t>1n,p=t.alloc(r,ut.bigInt2BytesLE(_,r)),m=_+1n,w=t.alloc(r,ut.bigInt2BytesLE(m,r));t.modules[s]={pq:d,pR2:u,n64:n,q:o,pOne:g,pZero:f,pePlusOne:w};let L=2n;if(Lt(o))for(;wt(L,_,o)!==h;)L+=1n;let b=0,y=h;for(;!bt(y)&&0n!==y;)b++,y>>=1n;const A=t.alloc(r,ut.bigInt2BytesLE(y,r)),C=wt(L,y,o),I=t.alloc(ut.bigInt2BytesLE((C<>1n,x=t.alloc(r,ut.bigInt2BytesLE(F,r));return t.exportFunction(c+"_copy",s+"_copy"),t.exportFunction(c+"_zero",s+"_zero"),t.exportFunction(c+"_isZero",s+"_isZero"),t.exportFunction(c+"_eq",s+"_eq"),function(){const e=t.addFunction(s+"_isOne");e.addParam("x","i32"),e.setReturnType("i32");const a=e.getCodeBuilder();e.addCode(a.ret(a.call(c+"_eq",a.getLocal("x"),a.i32_const(g))))}(),function(){const e=t.addFunction(s+"_add");e.addParam("x","i32"),e.addParam("y","i32"),e.addParam("r","i32");const a=e.getCodeBuilder();e.addCode(a.if(a.call(c+"_add",a.getLocal("x"),a.getLocal("y"),a.getLocal("r")),a.drop(a.call(c+"_sub",a.getLocal("r"),a.i32_const(d),a.getLocal("r"))),a.if(a.call(c+"_gte",a.getLocal("r"),a.i32_const(d)),a.drop(a.call(c+"_sub",a.getLocal("r"),a.i32_const(d),a.getLocal("r"))))))}(),function(){const e=t.addFunction(s+"_sub");e.addParam("x","i32"),e.addParam("y","i32"),e.addParam("r","i32");const a=e.getCodeBuilder();e.addCode(a.if(a.call(c+"_sub",a.getLocal("x"),a.getLocal("y"),a.getLocal("r")),a.drop(a.call(c+"_add",a.getLocal("r"),a.i32_const(d),a.getLocal("r")))))}(),function(){const e=t.addFunction(s+"_neg");e.addParam("x","i32"),e.addParam("r","i32");const a=e.getCodeBuilder();e.addCode(a.call(s+"_sub",a.i32_const(f),a.getLocal("x"),a.getLocal("r")))}(),function(){const e=t.alloc(l*l*8),a=t.addFunction(s+"_mReduct");a.addParam("t","i32"),a.addParam("r","i32"),a.addLocal("np32","i64"),a.addLocal("c","i64"),a.addLocal("m","i64");const i=a.getCodeBuilder(),n=Number(0x100000000n-mt(o,0x100000000n));a.addCode(i.setLocal("np32",i.i64_const(n)));for(let t=0;t=l&&e.addCode(a.i64_store32(a.getLocal("r"),4*(t-l),a.getLocal(h))),[h,_]=[_,h],e.addCode(a.setLocal(_,a.i64_shr_u(a.getLocal(h),a.i64_const(32))))}e.addCode(a.i64_store32(a.getLocal("r"),4*l-4,a.getLocal(h))),e.addCode(a.if(a.i32_wrap_i64(a.getLocal(_)),a.drop(a.call(c+"_sub",a.getLocal("r"),a.i32_const(d),a.getLocal("r"))),a.if(a.call(c+"_gte",a.getLocal("r"),a.i32_const(d)),a.drop(a.call(c+"_sub",a.getLocal("r"),a.i32_const(d),a.getLocal("r"))))))}(),function(){const e=t.addFunction(s+"_square");e.addParam("x","i32"),e.addParam("r","i32"),e.addLocal("c0","i64"),e.addLocal("c1","i64"),e.addLocal("c0_old","i64"),e.addLocal("c1_old","i64"),e.addLocal("np32","i64");for(let t=0;t>1&&i>1,t>>1)))),e.addCode(a.setLocal(h,a.i64_add(a.getLocal(h),a.i64_shr_u(a.getLocal(f),a.i64_const(32)))))),t>0&&(e.addCode(a.setLocal(f,a.i64_add(a.i64_and(a.getLocal(f),a.i64_const(4294967295)),a.i64_and(a.getLocal(_),a.i64_const(4294967295))))),e.addCode(a.setLocal(h,a.i64_add(a.i64_add(a.getLocal(h),a.i64_shr_u(a.getLocal(f),a.i64_const(32))),a.getLocal(p)))));for(let i=Math.max(1,t-l+1);i<=t&&i=l&&e.addCode(a.i64_store32(a.getLocal("r"),4*(t-l),a.getLocal(f))),e.addCode(a.setLocal(_,a.getLocal(h)),a.setLocal(p,a.i64_shr_u(a.getLocal(_),a.i64_const(32))))}e.addCode(a.i64_store32(a.getLocal("r"),4*l-4,a.getLocal(_))),e.addCode(a.if(a.i32_wrap_i64(a.getLocal(p)),a.drop(a.call(c+"_sub",a.getLocal("r"),a.i32_const(d),a.getLocal("r"))),a.if(a.call(c+"_gte",a.getLocal("r"),a.i32_const(d)),a.drop(a.call(c+"_sub",a.getLocal("r"),a.i32_const(d),a.getLocal("r"))))))}(),function(){const e=t.addFunction(s+"_squareOld");e.addParam("x","i32"),e.addParam("r","i32");const a=e.getCodeBuilder();e.addCode(a.call(s+"_mul",a.getLocal("x"),a.getLocal("x"),a.getLocal("r")))}(),function(){const e=t.addFunction(s+"_toMontgomery");e.addParam("x","i32"),e.addParam("r","i32");const a=e.getCodeBuilder();e.addCode(a.call(s+"_mul",a.getLocal("x"),a.i32_const(u),a.getLocal("r")))}(),function(){const e=t.alloc(2*r),a=t.addFunction(s+"_fromMontgomery");a.addParam("x","i32"),a.addParam("r","i32");const i=a.getCodeBuilder();a.addCode(i.call(c+"_copy",i.getLocal("x"),i.i32_const(e))),a.addCode(i.call(c+"_zero",i.i32_const(e+r))),a.addCode(i.call(s+"_mReduct",i.i32_const(e),i.getLocal("r")))}(),function(){const e=t.addFunction(s+"_isNegative");e.addParam("x","i32"),e.setReturnType("i32");const a=e.getCodeBuilder(),i=a.i32_const(t.alloc(r));e.addCode(a.call(s+"_fromMontgomery",a.getLocal("x"),i),a.call(c+"_gte",i,a.i32_const(w)))}(),function(){const e=t.addFunction(s+"_sign");e.addParam("x","i32"),e.setReturnType("i32");const a=e.getCodeBuilder(),i=a.i32_const(t.alloc(r));e.addCode(a.if(a.call(c+"_isZero",a.getLocal("x")),a.ret(a.i32_const(0))),a.call(s+"_fromMontgomery",a.getLocal("x"),i),a.if(a.call(c+"_gte",i,a.i32_const(w)),a.ret(a.i32_const(-1))),a.ret(a.i32_const(1)))}(),function(){const e=t.addFunction(s+"_inverse");e.addParam("x","i32"),e.addParam("r","i32");const a=e.getCodeBuilder();e.addCode(a.call(s+"_fromMontgomery",a.getLocal("x"),a.getLocal("r"))),e.addCode(a.call(c+"_inverseMod",a.getLocal("r"),a.i32_const(d),a.getLocal("r"))),e.addCode(a.call(s+"_toMontgomery",a.getLocal("r"),a.getLocal("r")))}(),function(){const e=t.addFunction(s+"_one");e.addParam("pr","i32");const a=e.getCodeBuilder();e.addCode(a.call(c+"_copy",a.i32_const(g),a.getLocal("pr")))}(),function(){const e=t.addFunction(s+"_load");e.addParam("scalar","i32"),e.addParam("scalarLen","i32"),e.addParam("r","i32"),e.addLocal("p","i32"),e.addLocal("l","i32"),e.addLocal("i","i32"),e.addLocal("j","i32");const a=e.getCodeBuilder(),i=a.i32_const(t.alloc(r)),o=t.alloc(r),n=a.i32_const(o);e.addCode(a.call(c+"_zero",a.getLocal("r")),a.setLocal("i",a.i32_const(r)),a.setLocal("p",a.getLocal("scalar")),a.block(a.loop(a.br_if(1,a.i32_gt_u(a.getLocal("i"),a.getLocal("scalarLen"))),a.if(a.i32_eq(a.getLocal("i"),a.i32_const(r)),a.call(s+"_one",i),a.call(s+"_mul",i,a.i32_const(u),i)),a.call(s+"_mul",a.getLocal("p"),i,n),a.call(s+"_add",a.getLocal("r"),n,a.getLocal("r")),a.setLocal("p",a.i32_add(a.getLocal("p"),a.i32_const(r))),a.setLocal("i",a.i32_add(a.getLocal("i"),a.i32_const(r))),a.br(0))),a.setLocal("l",a.i32_rem_u(a.getLocal("scalarLen"),a.i32_const(r))),a.if(a.i32_eqz(a.getLocal("l")),a.ret([])),a.call(c+"_zero",n),a.setLocal("j",a.i32_const(0)),a.block(a.loop(a.br_if(1,a.i32_eq(a.getLocal("j"),a.getLocal("l"))),a.i32_store8(a.getLocal("j"),o,a.i32_load8_u(a.getLocal("p"))),a.setLocal("p",a.i32_add(a.getLocal("p"),a.i32_const(1))),a.setLocal("j",a.i32_add(a.getLocal("j"),a.i32_const(1))),a.br(0))),a.if(a.i32_eq(a.getLocal("i"),a.i32_const(r)),a.call(s+"_one",i),a.call(s+"_mul",i,a.i32_const(u),i)),a.call(s+"_mul",n,i,n),a.call(s+"_add",a.getLocal("r"),n,a.getLocal("r")))}(),function(){const e=t.addFunction(s+"_timesScalar");e.addParam("x","i32"),e.addParam("scalar","i32"),e.addParam("scalarLen","i32"),e.addParam("r","i32");const a=e.getCodeBuilder(),i=a.i32_const(t.alloc(r));e.addCode(a.call(s+"_load",a.getLocal("scalar"),a.getLocal("scalarLen"),i),a.call(s+"_toMontgomery",i,i),a.call(s+"_mul",a.getLocal("x"),i,a.getLocal("r")))}(),ft(t,s),ht(t,s+"_batchToMontgomery",s+"_toMontgomery",r,r),ht(t,s+"_batchFromMontgomery",s+"_fromMontgomery",r,r),ht(t,s+"_batchNeg",s+"_neg",r,r),_t(t,s+"_batchAdd",s+"_add",r,r),_t(t,s+"_batchSub",s+"_sub",r,r),_t(t,s+"_batchMul",s+"_mul",r,r),t.exportFunction(s+"_add"),t.exportFunction(s+"_sub"),t.exportFunction(s+"_neg"),t.exportFunction(s+"_isNegative"),t.exportFunction(s+"_isOne"),t.exportFunction(s+"_sign"),t.exportFunction(s+"_mReduct"),t.exportFunction(s+"_mul"),t.exportFunction(s+"_square"),t.exportFunction(s+"_squareOld"),t.exportFunction(s+"_fromMontgomery"),t.exportFunction(s+"_toMontgomery"),t.exportFunction(s+"_inverse"),t.exportFunction(s+"_one"),t.exportFunction(s+"_load"),t.exportFunction(s+"_timesScalar"),gt(t,s+"_exp",r,s+"_mul",s+"_square",c+"_copy",s+"_one"),t.exportFunction(s+"_exp"),t.exportFunction(s+"_batchInverse"),Lt(o)&&(!function(){const e=t.addFunction(s+"_sqrt");e.addParam("n","i32"),e.addParam("r","i32"),e.addLocal("m","i32"),e.addLocal("i","i32"),e.addLocal("j","i32");const a=e.getCodeBuilder(),i=a.i32_const(g),o=a.i32_const(t.alloc(r)),n=a.i32_const(t.alloc(r)),l=a.i32_const(t.alloc(r)),c=a.i32_const(t.alloc(r)),d=a.i32_const(t.alloc(r));e.addCode(a.if(a.call(s+"_isZero",a.getLocal("n")),a.ret(a.call(s+"_zero",a.getLocal("r")))),a.setLocal("m",a.i32_const(b)),a.call(s+"_copy",a.i32_const(I),o),a.call(s+"_exp",a.getLocal("n"),a.i32_const(A),a.i32_const(r),n),a.call(s+"_exp",a.getLocal("n"),a.i32_const(x),a.i32_const(r),l),a.block(a.loop(a.br_if(1,a.call(s+"_eq",n,i)),a.call(s+"_square",n,c),a.setLocal("i",a.i32_const(1)),a.block(a.loop(a.br_if(1,a.call(s+"_eq",c,i)),a.call(s+"_square",c,c),a.setLocal("i",a.i32_add(a.getLocal("i"),a.i32_const(1))),a.br(0))),a.call(s+"_copy",o,d),a.setLocal("j",a.i32_sub(a.i32_sub(a.getLocal("m"),a.getLocal("i")),a.i32_const(1))),a.block(a.loop(a.br_if(1,a.i32_eqz(a.getLocal("j"))),a.call(s+"_square",d,d),a.setLocal("j",a.i32_sub(a.getLocal("j"),a.i32_const(1))),a.br(0))),a.setLocal("m",a.getLocal("i")),a.call(s+"_square",d,o),a.call(s+"_mul",n,o,n),a.call(s+"_mul",l,d,l),a.br(0))),a.if(a.call(s+"_isNegative",l),a.call(s+"_neg",l,a.getLocal("r")),a.call(s+"_copy",l,a.getLocal("r"))))}(),function(){const e=t.addFunction(s+"_isSquare");e.addParam("n","i32"),e.setReturnType("i32");const a=e.getCodeBuilder(),i=a.i32_const(g),o=a.i32_const(t.alloc(r));e.addCode(a.if(a.call(s+"_isZero",a.getLocal("n")),a.ret(a.i32_const(1))),a.call(s+"_exp",a.getLocal("n"),a.i32_const(p),a.i32_const(r),o),a.call(s+"_eq",o,i))}(),t.exportFunction(s+"_sqrt"),t.exportFunction(s+"_isSquare")),t.exportFunction(s+"_batchToMontgomery"),t.exportFunction(s+"_batchFromMontgomery"),s};const Ct=At,{bitLength:It}=W;var Ft=function(t,e,a,i,o){const n=BigInt(e),l=Math.floor((It(n-1n)-1)/64)+1,r=8*l,s=a||"f1";if(t.modules[s])return s;t.modules[s]={n64:l};const c=o||"int",d=Ct(t,n,i,c),u=t.modules[d].pR2,g=t.modules[d].pq,f=t.modules[d].pePlusOne;return function(){const e=t.alloc(r),a=t.addFunction(s+"_mul");a.addParam("x","i32"),a.addParam("y","i32"),a.addParam("r","i32");const i=a.getCodeBuilder();a.addCode(i.call(d+"_mul",i.getLocal("x"),i.getLocal("y"),i.i32_const(e))),a.addCode(i.call(d+"_mul",i.i32_const(e),i.i32_const(u),i.getLocal("r")))}(),function(){const e=t.addFunction(s+"_square");e.addParam("x","i32"),e.addParam("r","i32");const a=e.getCodeBuilder();e.addCode(a.call(s+"_mul",a.getLocal("x"),a.getLocal("x"),a.getLocal("r")))}(),function(){const e=t.addFunction(s+"_inverse");e.addParam("x","i32"),e.addParam("r","i32");const a=e.getCodeBuilder();e.addCode(a.call(c+"_inverseMod",a.getLocal("x"),a.i32_const(g),a.getLocal("r")))}(),function(){const e=t.addFunction(s+"_isNegative");e.addParam("x","i32"),e.setReturnType("i32");const a=e.getCodeBuilder();e.addCode(a.call(c+"_gte",a.getLocal("x"),a.i32_const(f)))}(),t.exportFunction(d+"_add",s+"_add"),t.exportFunction(d+"_sub",s+"_sub"),t.exportFunction(d+"_neg",s+"_neg"),t.exportFunction(s+"_mul"),t.exportFunction(s+"_square"),t.exportFunction(s+"_inverse"),t.exportFunction(s+"_isNegative"),t.exportFunction(d+"_copy",s+"_copy"),t.exportFunction(d+"_zero",s+"_zero"),t.exportFunction(d+"_one",s+"_one"),t.exportFunction(d+"_isZero",s+"_isZero"),t.exportFunction(d+"_eq",s+"_eq"),s};const xt=K,Et=j,vt=V;var Bt=function(t,e,a,i){if(t.modules[a])return a;const o=8*t.modules[i].n64,n=t.modules[i].q;return t.modules[a]={n64:2*t.modules[i].n64},function(){const e=t.addFunction(a+"_isZero");e.addParam("x","i32"),e.setReturnType("i32");const n=e.getCodeBuilder(),l=n.getLocal("x"),r=n.i32_add(n.getLocal("x"),n.i32_const(o));e.addCode(n.i32_and(n.call(i+"_isZero",l),n.call(i+"_isZero",r)))}(),function(){const e=t.addFunction(a+"_isOne");e.addParam("x","i32"),e.setReturnType("i32");const n=e.getCodeBuilder(),l=n.getLocal("x"),r=n.i32_add(n.getLocal("x"),n.i32_const(o));e.addCode(n.ret(n.i32_and(n.call(i+"_isOne",l),n.call(i+"_isZero",r))))}(),function(){const e=t.addFunction(a+"_zero");e.addParam("x","i32");const n=e.getCodeBuilder(),l=n.getLocal("x"),r=n.i32_add(n.getLocal("x"),n.i32_const(o));e.addCode(n.call(i+"_zero",l),n.call(i+"_zero",r))}(),function(){const e=t.addFunction(a+"_one");e.addParam("x","i32");const n=e.getCodeBuilder(),l=n.getLocal("x"),r=n.i32_add(n.getLocal("x"),n.i32_const(o));e.addCode(n.call(i+"_one",l),n.call(i+"_zero",r))}(),function(){const e=t.addFunction(a+"_copy");e.addParam("x","i32"),e.addParam("r","i32");const n=e.getCodeBuilder(),l=n.getLocal("x"),r=n.i32_add(n.getLocal("x"),n.i32_const(o)),s=n.getLocal("r"),c=n.i32_add(n.getLocal("r"),n.i32_const(o));e.addCode(n.call(i+"_copy",l,s),n.call(i+"_copy",r,c))}(),function(){const n=t.addFunction(a+"_mul");n.addParam("x","i32"),n.addParam("y","i32"),n.addParam("r","i32");const l=n.getCodeBuilder(),r=l.getLocal("x"),s=l.i32_add(l.getLocal("x"),l.i32_const(o)),c=l.getLocal("y"),d=l.i32_add(l.getLocal("y"),l.i32_const(o)),u=l.getLocal("r"),g=l.i32_add(l.getLocal("r"),l.i32_const(o)),f=l.i32_const(t.alloc(o)),h=l.i32_const(t.alloc(o)),_=l.i32_const(t.alloc(o)),p=l.i32_const(t.alloc(o));n.addCode(l.call(i+"_mul",r,c,f),l.call(i+"_mul",s,d,h),l.call(i+"_add",r,s,_),l.call(i+"_add",c,d,p),l.call(i+"_mul",_,p,_),l.call(e,h,u),l.call(i+"_add",f,u,u),l.call(i+"_add",f,h,g),l.call(i+"_sub",_,g,g))}(),function(){const e=t.addFunction(a+"_mul1");e.addParam("x","i32"),e.addParam("y","i32"),e.addParam("r","i32");const n=e.getCodeBuilder(),l=n.getLocal("x"),r=n.i32_add(n.getLocal("x"),n.i32_const(o)),s=n.getLocal("y"),c=n.getLocal("r"),d=n.i32_add(n.getLocal("r"),n.i32_const(o));e.addCode(n.call(i+"_mul",l,s,c),n.call(i+"_mul",r,s,d))}(),function(){const n=t.addFunction(a+"_square");n.addParam("x","i32"),n.addParam("r","i32");const l=n.getCodeBuilder(),r=l.getLocal("x"),s=l.i32_add(l.getLocal("x"),l.i32_const(o)),c=l.getLocal("r"),d=l.i32_add(l.getLocal("r"),l.i32_const(o)),u=l.i32_const(t.alloc(o)),g=l.i32_const(t.alloc(o)),f=l.i32_const(t.alloc(o)),h=l.i32_const(t.alloc(o));n.addCode(l.call(i+"_mul",r,s,u),l.call(i+"_add",r,s,g),l.call(e,s,f),l.call(i+"_add",r,f,f),l.call(e,u,h),l.call(i+"_add",h,u,h),l.call(i+"_mul",g,f,c),l.call(i+"_sub",c,h,c),l.call(i+"_add",u,u,d))}(),function(){const e=t.addFunction(a+"_add");e.addParam("x","i32"),e.addParam("y","i32"),e.addParam("r","i32");const n=e.getCodeBuilder(),l=n.getLocal("x"),r=n.i32_add(n.getLocal("x"),n.i32_const(o)),s=n.getLocal("y"),c=n.i32_add(n.getLocal("y"),n.i32_const(o)),d=n.getLocal("r"),u=n.i32_add(n.getLocal("r"),n.i32_const(o));e.addCode(n.call(i+"_add",l,s,d),n.call(i+"_add",r,c,u))}(),function(){const e=t.addFunction(a+"_sub");e.addParam("x","i32"),e.addParam("y","i32"),e.addParam("r","i32");const n=e.getCodeBuilder(),l=n.getLocal("x"),r=n.i32_add(n.getLocal("x"),n.i32_const(o)),s=n.getLocal("y"),c=n.i32_add(n.getLocal("y"),n.i32_const(o)),d=n.getLocal("r"),u=n.i32_add(n.getLocal("r"),n.i32_const(o));e.addCode(n.call(i+"_sub",l,s,d),n.call(i+"_sub",r,c,u))}(),function(){const e=t.addFunction(a+"_neg");e.addParam("x","i32"),e.addParam("r","i32");const n=e.getCodeBuilder(),l=n.getLocal("x"),r=n.i32_add(n.getLocal("x"),n.i32_const(o)),s=n.getLocal("r"),c=n.i32_add(n.getLocal("r"),n.i32_const(o));e.addCode(n.call(i+"_neg",l,s),n.call(i+"_neg",r,c))}(),function(){const e=t.addFunction(a+"_conjugate");e.addParam("x","i32"),e.addParam("r","i32");const n=e.getCodeBuilder(),l=n.getLocal("x"),r=n.i32_add(n.getLocal("x"),n.i32_const(o)),s=n.getLocal("r"),c=n.i32_add(n.getLocal("r"),n.i32_const(o));e.addCode(n.call(i+"_copy",l,s),n.call(i+"_neg",r,c))}(),function(){const e=t.addFunction(a+"_toMontgomery");e.addParam("x","i32"),e.addParam("r","i32");const n=e.getCodeBuilder(),l=n.getLocal("x"),r=n.i32_add(n.getLocal("x"),n.i32_const(o)),s=n.getLocal("r"),c=n.i32_add(n.getLocal("r"),n.i32_const(o));e.addCode(n.call(i+"_toMontgomery",l,s),n.call(i+"_toMontgomery",r,c))}(),function(){const e=t.addFunction(a+"_fromMontgomery");e.addParam("x","i32"),e.addParam("r","i32");const n=e.getCodeBuilder(),l=n.getLocal("x"),r=n.i32_add(n.getLocal("x"),n.i32_const(o)),s=n.getLocal("r"),c=n.i32_add(n.getLocal("r"),n.i32_const(o));e.addCode(n.call(i+"_fromMontgomery",l,s),n.call(i+"_fromMontgomery",r,c))}(),function(){const e=t.addFunction(a+"_eq");e.addParam("x","i32"),e.addParam("y","i32"),e.setReturnType("i32");const n=e.getCodeBuilder(),l=n.getLocal("x"),r=n.i32_add(n.getLocal("x"),n.i32_const(o)),s=n.getLocal("y"),c=n.i32_add(n.getLocal("y"),n.i32_const(o));e.addCode(n.i32_and(n.call(i+"_eq",l,s),n.call(i+"_eq",r,c)))}(),function(){const n=t.addFunction(a+"_inverse");n.addParam("x","i32"),n.addParam("r","i32");const l=n.getCodeBuilder(),r=l.getLocal("x"),s=l.i32_add(l.getLocal("x"),l.i32_const(o)),c=l.getLocal("r"),d=l.i32_add(l.getLocal("r"),l.i32_const(o)),u=l.i32_const(t.alloc(o)),g=l.i32_const(t.alloc(o)),f=l.i32_const(t.alloc(o)),h=l.i32_const(t.alloc(o));n.addCode(l.call(i+"_square",r,u),l.call(i+"_square",s,g),l.call(e,g,f),l.call(i+"_sub",u,f,f),l.call(i+"_inverse",f,h),l.call(i+"_mul",r,h,c),l.call(i+"_mul",s,h,d),l.call(i+"_neg",d,d))}(),function(){const e=t.addFunction(a+"_timesScalar");e.addParam("x","i32"),e.addParam("scalar","i32"),e.addParam("scalarLen","i32"),e.addParam("r","i32");const n=e.getCodeBuilder(),l=n.getLocal("x"),r=n.i32_add(n.getLocal("x"),n.i32_const(o)),s=n.getLocal("r"),c=n.i32_add(n.getLocal("r"),n.i32_const(o));e.addCode(n.call(i+"_timesScalar",l,n.getLocal("scalar"),n.getLocal("scalarLen"),s),n.call(i+"_timesScalar",r,n.getLocal("scalar"),n.getLocal("scalarLen"),c))}(),function(){const e=t.addFunction(a+"_sign");e.addParam("x","i32"),e.addLocal("s","i32"),e.setReturnType("i32");const n=e.getCodeBuilder(),l=n.getLocal("x"),r=n.i32_add(n.getLocal("x"),n.i32_const(o));e.addCode(n.setLocal("s",n.call(i+"_sign",r)),n.if(n.getLocal("s"),n.ret(n.getLocal("s"))),n.ret(n.call(i+"_sign",l)))}(),function(){const e=t.addFunction(a+"_isNegative");e.addParam("x","i32"),e.setReturnType("i32");const n=e.getCodeBuilder(),l=n.getLocal("x"),r=n.i32_add(n.getLocal("x"),n.i32_const(o));e.addCode(n.if(n.call(i+"_isZero",r),n.ret(n.call(i+"_isNegative",l))),n.ret(n.call(i+"_isNegative",r)))}(),t.exportFunction(a+"_isZero"),t.exportFunction(a+"_isOne"),t.exportFunction(a+"_zero"),t.exportFunction(a+"_one"),t.exportFunction(a+"_copy"),t.exportFunction(a+"_mul"),t.exportFunction(a+"_mul1"),t.exportFunction(a+"_square"),t.exportFunction(a+"_add"),t.exportFunction(a+"_sub"),t.exportFunction(a+"_neg"),t.exportFunction(a+"_sign"),t.exportFunction(a+"_conjugate"),t.exportFunction(a+"_fromMontgomery"),t.exportFunction(a+"_toMontgomery"),t.exportFunction(a+"_eq"),t.exportFunction(a+"_inverse"),Et(t,a),xt(t,a+"_exp",2*o,a+"_mul",a+"_square",a+"_copy",a+"_one"),function(){const e=t.addFunction(a+"_sqrt");e.addParam("a","i32"),e.addParam("pr","i32");const l=e.getCodeBuilder(),r=l.i32_const(t.alloc(vt.bigInt2BytesLE((BigInt(n||0)-3n)/4n,o))),s=l.i32_const(t.alloc(vt.bigInt2BytesLE((BigInt(n||0)-1n)/2n,o))),c=l.getLocal("a"),d=l.i32_const(t.alloc(2*o)),u=l.i32_const(t.alloc(2*o)),g=l.i32_const(t.alloc(2*o)),f=t.alloc(2*o),h=l.i32_const(f),_=l.i32_const(f),p=l.i32_const(f+o),m=l.i32_const(t.alloc(2*o)),w=l.i32_const(t.alloc(2*o));e.addCode(l.call(a+"_one",h),l.call(a+"_neg",h,h),l.call(a+"_exp",c,r,l.i32_const(o),d),l.call(a+"_square",d,u),l.call(a+"_mul",c,u,u),l.call(a+"_conjugate",u,g),l.call(a+"_mul",g,u,g),l.if(l.call(a+"_eq",g,h),l.unreachable()),l.call(a+"_mul",d,c,m),l.if(l.call(a+"_eq",u,h),[...l.call(i+"_zero",_),...l.call(i+"_one",p),...l.call(a+"_mul",h,m,l.getLocal("pr"))],[...l.call(a+"_one",w),...l.call(a+"_add",w,u,w),...l.call(a+"_exp",w,s,l.i32_const(o),w),...l.call(a+"_mul",w,m,l.getLocal("pr"))]))}(),function(){const e=t.addFunction(a+"_isSquare");e.addParam("a","i32"),e.setReturnType("i32");const i=e.getCodeBuilder(),l=i.i32_const(t.alloc(vt.bigInt2BytesLE((BigInt(n||0)-3n)/4n,o))),r=i.getLocal("a"),s=i.i32_const(t.alloc(2*o)),c=i.i32_const(t.alloc(2*o)),d=i.i32_const(t.alloc(2*o)),u=t.alloc(2*o),g=i.i32_const(u);e.addCode(i.call(a+"_one",g),i.call(a+"_neg",g,g),i.call(a+"_exp",r,l,i.i32_const(o),s),i.call(a+"_square",s,c),i.call(a+"_mul",r,c,c),i.call(a+"_conjugate",c,d),i.call(a+"_mul",d,c,d),i.if(i.call(a+"_eq",d,g),i.ret(i.i32_const(0))),i.ret(i.i32_const(1)))}(),t.exportFunction(a+"_exp"),t.exportFunction(a+"_timesScalar"),t.exportFunction(a+"_batchInverse"),t.exportFunction(a+"_sqrt"),t.exportFunction(a+"_isSquare"),t.exportFunction(a+"_isNegative"),a};const St=K,Pt=j;var Gt=function(t,e,a,i){if(t.modules[a])return a;const o=8*t.modules[i].n64;return t.modules[a]={n64:3*t.modules[i].n64},function(){const e=t.addFunction(a+"_isZero");e.addParam("x","i32"),e.setReturnType("i32");const n=e.getCodeBuilder(),l=n.getLocal("x"),r=n.i32_add(n.getLocal("x"),n.i32_const(o)),s=n.i32_add(n.getLocal("x"),n.i32_const(2*o));e.addCode(n.i32_and(n.i32_and(n.call(i+"_isZero",l),n.call(i+"_isZero",r)),n.call(i+"_isZero",s)))}(),function(){const e=t.addFunction(a+"_isOne");e.addParam("x","i32"),e.setReturnType("i32");const n=e.getCodeBuilder(),l=n.getLocal("x"),r=n.i32_add(n.getLocal("x"),n.i32_const(o)),s=n.i32_add(n.getLocal("x"),n.i32_const(2*o));e.addCode(n.ret(n.i32_and(n.i32_and(n.call(i+"_isOne",l),n.call(i+"_isZero",r)),n.call(i+"_isZero",s))))}(),function(){const e=t.addFunction(a+"_zero");e.addParam("x","i32");const n=e.getCodeBuilder(),l=n.getLocal("x"),r=n.i32_add(n.getLocal("x"),n.i32_const(o)),s=n.i32_add(n.getLocal("x"),n.i32_const(2*o));e.addCode(n.call(i+"_zero",l),n.call(i+"_zero",r),n.call(i+"_zero",s))}(),function(){const e=t.addFunction(a+"_one");e.addParam("x","i32");const n=e.getCodeBuilder(),l=n.getLocal("x"),r=n.i32_add(n.getLocal("x"),n.i32_const(o)),s=n.i32_add(n.getLocal("x"),n.i32_const(2*o));e.addCode(n.call(i+"_one",l),n.call(i+"_zero",r),n.call(i+"_zero",s))}(),function(){const e=t.addFunction(a+"_copy");e.addParam("x","i32"),e.addParam("r","i32");const n=e.getCodeBuilder(),l=n.getLocal("x"),r=n.i32_add(n.getLocal("x"),n.i32_const(o)),s=n.i32_add(n.getLocal("x"),n.i32_const(2*o)),c=n.getLocal("r"),d=n.i32_add(n.getLocal("r"),n.i32_const(o)),u=n.i32_add(n.getLocal("r"),n.i32_const(2*o));e.addCode(n.call(i+"_copy",l,c),n.call(i+"_copy",r,d),n.call(i+"_copy",s,u))}(),function(){const n=t.addFunction(a+"_mul");n.addParam("x","i32"),n.addParam("y","i32"),n.addParam("r","i32");const l=n.getCodeBuilder(),r=l.getLocal("x"),s=l.i32_add(l.getLocal("x"),l.i32_const(o)),c=l.i32_add(l.getLocal("x"),l.i32_const(2*o)),d=l.getLocal("y"),u=l.i32_add(l.getLocal("y"),l.i32_const(o)),g=l.i32_add(l.getLocal("y"),l.i32_const(2*o)),f=l.getLocal("r"),h=l.i32_add(l.getLocal("r"),l.i32_const(o)),_=l.i32_add(l.getLocal("r"),l.i32_const(2*o)),p=l.i32_const(t.alloc(o)),m=l.i32_const(t.alloc(o)),w=l.i32_const(t.alloc(o)),L=l.i32_const(t.alloc(o)),b=l.i32_const(t.alloc(o)),y=l.i32_const(t.alloc(o)),A=l.i32_const(t.alloc(o)),C=l.i32_const(t.alloc(o)),I=l.i32_const(t.alloc(o)),F=l.i32_const(t.alloc(o)),x=l.i32_const(t.alloc(o)),E=l.i32_const(t.alloc(o)),v=l.i32_const(t.alloc(o));n.addCode(l.call(i+"_mul",r,d,p),l.call(i+"_mul",s,u,m),l.call(i+"_mul",c,g,w),l.call(i+"_add",r,s,L),l.call(i+"_add",d,u,b),l.call(i+"_add",r,c,y),l.call(i+"_add",d,g,A),l.call(i+"_add",s,c,C),l.call(i+"_add",u,g,I),l.call(i+"_add",p,m,F),l.call(i+"_add",p,w,x),l.call(i+"_add",m,w,E),l.call(i+"_mul",C,I,f),l.call(i+"_sub",f,E,f),l.call(e,f,f),l.call(i+"_add",p,f,f),l.call(i+"_mul",L,b,h),l.call(i+"_sub",h,F,h),l.call(e,w,v),l.call(i+"_add",h,v,h),l.call(i+"_mul",y,A,_),l.call(i+"_sub",_,x,_),l.call(i+"_add",_,m,_))}(),function(){const n=t.addFunction(a+"_square");n.addParam("x","i32"),n.addParam("r","i32");const l=n.getCodeBuilder(),r=l.getLocal("x"),s=l.i32_add(l.getLocal("x"),l.i32_const(o)),c=l.i32_add(l.getLocal("x"),l.i32_const(2*o)),d=l.getLocal("r"),u=l.i32_add(l.getLocal("r"),l.i32_const(o)),g=l.i32_add(l.getLocal("r"),l.i32_const(2*o)),f=l.i32_const(t.alloc(o)),h=l.i32_const(t.alloc(o)),_=l.i32_const(t.alloc(o)),p=l.i32_const(t.alloc(o)),m=l.i32_const(t.alloc(o)),w=l.i32_const(t.alloc(o)),L=l.i32_const(t.alloc(o));n.addCode(l.call(i+"_square",r,f),l.call(i+"_mul",r,s,h),l.call(i+"_add",h,h,_),l.call(i+"_sub",r,s,p),l.call(i+"_add",p,c,p),l.call(i+"_square",p,p),l.call(i+"_mul",s,c,m),l.call(i+"_add",m,m,w),l.call(i+"_square",c,L),l.call(e,w,d),l.call(i+"_add",f,d,d),l.call(e,L,u),l.call(i+"_add",_,u,u),l.call(i+"_add",f,L,g),l.call(i+"_sub",w,g,g),l.call(i+"_add",p,g,g),l.call(i+"_add",_,g,g))}(),function(){const e=t.addFunction(a+"_add");e.addParam("x","i32"),e.addParam("y","i32"),e.addParam("r","i32");const n=e.getCodeBuilder(),l=n.getLocal("x"),r=n.i32_add(n.getLocal("x"),n.i32_const(o)),s=n.i32_add(n.getLocal("x"),n.i32_const(2*o)),c=n.getLocal("y"),d=n.i32_add(n.getLocal("y"),n.i32_const(o)),u=n.i32_add(n.getLocal("y"),n.i32_const(2*o)),g=n.getLocal("r"),f=n.i32_add(n.getLocal("r"),n.i32_const(o)),h=n.i32_add(n.getLocal("r"),n.i32_const(2*o));e.addCode(n.call(i+"_add",l,c,g),n.call(i+"_add",r,d,f),n.call(i+"_add",s,u,h))}(),function(){const e=t.addFunction(a+"_sub");e.addParam("x","i32"),e.addParam("y","i32"),e.addParam("r","i32");const n=e.getCodeBuilder(),l=n.getLocal("x"),r=n.i32_add(n.getLocal("x"),n.i32_const(o)),s=n.i32_add(n.getLocal("x"),n.i32_const(2*o)),c=n.getLocal("y"),d=n.i32_add(n.getLocal("y"),n.i32_const(o)),u=n.i32_add(n.getLocal("y"),n.i32_const(2*o)),g=n.getLocal("r"),f=n.i32_add(n.getLocal("r"),n.i32_const(o)),h=n.i32_add(n.getLocal("r"),n.i32_const(2*o));e.addCode(n.call(i+"_sub",l,c,g),n.call(i+"_sub",r,d,f),n.call(i+"_sub",s,u,h))}(),function(){const e=t.addFunction(a+"_neg");e.addParam("x","i32"),e.addParam("r","i32");const n=e.getCodeBuilder(),l=n.getLocal("x"),r=n.i32_add(n.getLocal("x"),n.i32_const(o)),s=n.i32_add(n.getLocal("x"),n.i32_const(2*o)),c=n.getLocal("r"),d=n.i32_add(n.getLocal("r"),n.i32_const(o)),u=n.i32_add(n.getLocal("r"),n.i32_const(2*o));e.addCode(n.call(i+"_neg",l,c),n.call(i+"_neg",r,d),n.call(i+"_neg",s,u))}(),function(){const e=t.addFunction(a+"_sign");e.addParam("x","i32"),e.addLocal("s","i32"),e.setReturnType("i32");const n=e.getCodeBuilder(),l=n.getLocal("x"),r=n.i32_add(n.getLocal("x"),n.i32_const(o)),s=n.i32_add(n.getLocal("x"),n.i32_const(2*o));e.addCode(n.setLocal("s",n.call(i+"_sign",s)),n.if(n.getLocal("s"),n.ret(n.getLocal("s"))),n.setLocal("s",n.call(i+"_sign",r)),n.if(n.getLocal("s"),n.ret(n.getLocal("s"))),n.ret(n.call(i+"_sign",l)))}(),function(){const e=t.addFunction(a+"_toMontgomery");e.addParam("x","i32"),e.addParam("r","i32");const n=e.getCodeBuilder(),l=n.getLocal("x"),r=n.i32_add(n.getLocal("x"),n.i32_const(o)),s=n.i32_add(n.getLocal("x"),n.i32_const(2*o)),c=n.getLocal("r"),d=n.i32_add(n.getLocal("r"),n.i32_const(o)),u=n.i32_add(n.getLocal("r"),n.i32_const(2*o));e.addCode(n.call(i+"_toMontgomery",l,c),n.call(i+"_toMontgomery",r,d),n.call(i+"_toMontgomery",s,u))}(),function(){const e=t.addFunction(a+"_fromMontgomery");e.addParam("x","i32"),e.addParam("r","i32");const n=e.getCodeBuilder(),l=n.getLocal("x"),r=n.i32_add(n.getLocal("x"),n.i32_const(o)),s=n.i32_add(n.getLocal("x"),n.i32_const(2*o)),c=n.getLocal("r"),d=n.i32_add(n.getLocal("r"),n.i32_const(o)),u=n.i32_add(n.getLocal("r"),n.i32_const(2*o));e.addCode(n.call(i+"_fromMontgomery",l,c),n.call(i+"_fromMontgomery",r,d),n.call(i+"_fromMontgomery",s,u))}(),function(){const e=t.addFunction(a+"_eq");e.addParam("x","i32"),e.addParam("y","i32"),e.setReturnType("i32");const n=e.getCodeBuilder(),l=n.getLocal("x"),r=n.i32_add(n.getLocal("x"),n.i32_const(o)),s=n.i32_add(n.getLocal("x"),n.i32_const(2*o)),c=n.getLocal("y"),d=n.i32_add(n.getLocal("y"),n.i32_const(o)),u=n.i32_add(n.getLocal("y"),n.i32_const(2*o));e.addCode(n.i32_and(n.i32_and(n.call(i+"_eq",l,c),n.call(i+"_eq",r,d)),n.call(i+"_eq",s,u)))}(),function(){const n=t.addFunction(a+"_inverse");n.addParam("x","i32"),n.addParam("r","i32");const l=n.getCodeBuilder(),r=l.getLocal("x"),s=l.i32_add(l.getLocal("x"),l.i32_const(o)),c=l.i32_add(l.getLocal("x"),l.i32_const(2*o)),d=l.getLocal("r"),u=l.i32_add(l.getLocal("r"),l.i32_const(o)),g=l.i32_add(l.getLocal("r"),l.i32_const(2*o)),f=l.i32_const(t.alloc(o)),h=l.i32_const(t.alloc(o)),_=l.i32_const(t.alloc(o)),p=l.i32_const(t.alloc(o)),m=l.i32_const(t.alloc(o)),w=l.i32_const(t.alloc(o)),L=l.i32_const(t.alloc(o)),b=l.i32_const(t.alloc(o)),y=l.i32_const(t.alloc(o)),A=l.i32_const(t.alloc(o)),C=l.i32_const(t.alloc(o));n.addCode(l.call(i+"_square",r,f),l.call(i+"_square",s,h),l.call(i+"_square",c,_),l.call(i+"_mul",r,s,p),l.call(i+"_mul",r,c,m),l.call(i+"_mul",s,c,w),l.call(e,w,L),l.call(i+"_sub",f,L,L),l.call(e,_,b),l.call(i+"_sub",b,p,b),l.call(i+"_sub",h,m,y),l.call(i+"_mul",c,b,A),l.call(i+"_mul",s,y,C),l.call(i+"_add",A,C,A),l.call(e,A,A),l.call(i+"_mul",r,L,C),l.call(i+"_add",C,A,A),l.call(i+"_inverse",A,A),l.call(i+"_mul",A,L,d),l.call(i+"_mul",A,b,u),l.call(i+"_mul",A,y,g))}(),function(){const e=t.addFunction(a+"_timesScalar");e.addParam("x","i32"),e.addParam("scalar","i32"),e.addParam("scalarLen","i32"),e.addParam("r","i32");const n=e.getCodeBuilder(),l=n.getLocal("x"),r=n.i32_add(n.getLocal("x"),n.i32_const(o)),s=n.i32_add(n.getLocal("x"),n.i32_const(2*o)),c=n.getLocal("r"),d=n.i32_add(n.getLocal("r"),n.i32_const(o)),u=n.i32_add(n.getLocal("r"),n.i32_const(2*o));e.addCode(n.call(i+"_timesScalar",l,n.getLocal("scalar"),n.getLocal("scalarLen"),c),n.call(i+"_timesScalar",r,n.getLocal("scalar"),n.getLocal("scalarLen"),d),n.call(i+"_timesScalar",s,n.getLocal("scalar"),n.getLocal("scalarLen"),u))}(),function(){const e=t.addFunction(a+"_isNegative");e.addParam("x","i32"),e.setReturnType("i32");const n=e.getCodeBuilder(),l=n.getLocal("x"),r=n.i32_add(n.getLocal("x"),n.i32_const(o)),s=n.i32_add(n.getLocal("x"),n.i32_const(2*o));e.addCode(n.if(n.call(i+"_isZero",s),n.if(n.call(i+"_isZero",r),n.ret(n.call(i+"_isNegative",l)),n.ret(n.call(i+"_isNegative",r)))),n.ret(n.call(i+"_isNegative",s)))}(),t.exportFunction(a+"_isZero"),t.exportFunction(a+"_isOne"),t.exportFunction(a+"_zero"),t.exportFunction(a+"_one"),t.exportFunction(a+"_copy"),t.exportFunction(a+"_mul"),t.exportFunction(a+"_square"),t.exportFunction(a+"_add"),t.exportFunction(a+"_sub"),t.exportFunction(a+"_neg"),t.exportFunction(a+"_sign"),t.exportFunction(a+"_fromMontgomery"),t.exportFunction(a+"_toMontgomery"),t.exportFunction(a+"_eq"),t.exportFunction(a+"_inverse"),Pt(t,a),St(t,a+"_exp",3*o,a+"_mul",a+"_square",a+"_copy",a+"_one"),t.exportFunction(a+"_exp"),t.exportFunction(a+"_timesScalar"),t.exportFunction(a+"_batchInverse"),t.exportFunction(a+"_isNegative"),a};const Ot=function(t,e,a,i,o,n,l,r){const s=t.addFunction(e);s.addParam("base","i32"),s.addParam("scalar","i32"),s.addParam("scalarLength","i32"),s.addParam("r","i32"),s.addLocal("old0","i32"),s.addLocal("nbits","i32"),s.addLocal("i","i32"),s.addLocal("last","i32"),s.addLocal("cur","i32"),s.addLocal("carry","i32"),s.addLocal("p","i32");const c=s.getCodeBuilder(),d=c.i32_const(t.alloc(a));function u(t){return c.i32_and(c.i32_shr_u(c.i32_load(c.i32_add(c.getLocal("scalar"),c.i32_and(c.i32_shr_u(t,c.i32_const(3)),c.i32_const(4294967292)))),c.i32_and(t,c.i32_const(31))),c.i32_const(1))}function g(t){return[...c.i32_store8(c.getLocal("p"),c.i32_const(t)),...c.setLocal("p",c.i32_add(c.getLocal("p"),c.i32_const(1)))]}s.addCode(c.if(c.i32_eqz(c.getLocal("scalarLength")),[...c.call(r,c.getLocal("r")),...c.ret([])]),c.setLocal("nbits",c.i32_shl(c.getLocal("scalarLength"),c.i32_const(3))),c.setLocal("old0",c.i32_load(c.i32_const(0))),c.setLocal("p",c.getLocal("old0")),c.i32_store(c.i32_const(0),c.i32_and(c.i32_add(c.i32_add(c.getLocal("old0"),c.i32_const(32)),c.getLocal("nbits")),c.i32_const(4294967288))),c.setLocal("i",c.i32_const(1)),c.setLocal("last",u(c.i32_const(0))),c.setLocal("carry",c.i32_const(0)),c.block(c.loop(c.br_if(1,c.i32_eq(c.getLocal("i"),c.getLocal("nbits"))),c.setLocal("cur",u(c.getLocal("i"))),c.if(c.getLocal("last"),c.if(c.getLocal("cur"),c.if(c.getLocal("carry"),[...c.setLocal("last",c.i32_const(0)),...c.setLocal("carry",c.i32_const(1)),...g(1)],[...c.setLocal("last",c.i32_const(0)),...c.setLocal("carry",c.i32_const(1)),...g(255)]),c.if(c.getLocal("carry"),[...c.setLocal("last",c.i32_const(0)),...c.setLocal("carry",c.i32_const(1)),...g(255)],[...c.setLocal("last",c.i32_const(0)),...c.setLocal("carry",c.i32_const(0)),...g(1)])),c.if(c.getLocal("cur"),c.if(c.getLocal("carry"),[...c.setLocal("last",c.i32_const(0)),...c.setLocal("carry",c.i32_const(1)),...g(0)],[...c.setLocal("last",c.i32_const(1)),...c.setLocal("carry",c.i32_const(0)),...g(0)]),c.if(c.getLocal("carry"),[...c.setLocal("last",c.i32_const(1)),...c.setLocal("carry",c.i32_const(0)),...g(0)],[...c.setLocal("last",c.i32_const(0)),...c.setLocal("carry",c.i32_const(0)),...g(0)]))),c.setLocal("i",c.i32_add(c.getLocal("i"),c.i32_const(1))),c.br(0))),c.if(c.getLocal("last"),c.if(c.getLocal("carry"),[...g(255),...g(0),...g(1)],[...g(1)]),c.if(c.getLocal("carry"),[...g(0),...g(1)])),c.setLocal("p",c.i32_sub(c.getLocal("p"),c.i32_const(1))),c.call(l,c.getLocal("base"),d),c.call(r,c.getLocal("r")),c.block(c.loop(c.call(o,c.getLocal("r"),c.getLocal("r")),c.setLocal("cur",c.i32_load8_u(c.getLocal("p"))),c.if(c.getLocal("cur"),c.if(c.i32_eq(c.getLocal("cur"),c.i32_const(1)),c.call(i,c.getLocal("r"),d,c.getLocal("r")),c.call(n,c.getLocal("r"),d,c.getLocal("r")))),c.br_if(1,c.i32_eq(c.getLocal("old0"),c.getLocal("p"))),c.setLocal("p",c.i32_sub(c.getLocal("p"),c.i32_const(1))),c.br(0))),c.i32_store(c.i32_const(0),c.getLocal("old0")))},Tt=H,Ut=function(t,e,a,i,o){const n=8*t.modules[e].n64;function l(){const i=t.addFunction(a);i.addParam("pBases","i32"),i.addParam("pScalars","i32"),i.addParam("scalarSize","i32"),i.addParam("n","i32"),i.addParam("pr","i32"),i.addLocal("chunkSize","i32"),i.addLocal("nChunks","i32"),i.addLocal("itScalar","i32"),i.addLocal("endScalar","i32"),i.addLocal("itBase","i32"),i.addLocal("itBit","i32"),i.addLocal("i","i32"),i.addLocal("j","i32"),i.addLocal("nTable","i32"),i.addLocal("pTable","i32"),i.addLocal("idx","i32"),i.addLocal("pIdxTable","i32");const o=i.getCodeBuilder(),l=o.i32_const(t.alloc(n)),r=t.alloc([17,17,17,17,17,17,17,17,17,17,16,16,15,14,13,13,12,11,10,9,8,7,7,6,5,4,3,2,1,1,1,1]);i.addCode(o.call(e+"_zero",o.getLocal("pr")),o.if(o.i32_eqz(o.getLocal("n")),o.ret([])),o.setLocal("chunkSize",o.i32_load8_u(o.i32_clz(o.getLocal("n")),r)),o.setLocal("nChunks",o.i32_add(o.i32_div_u(o.i32_sub(o.i32_shl(o.getLocal("scalarSize"),o.i32_const(3)),o.i32_const(1)),o.getLocal("chunkSize")),o.i32_const(1))),o.setLocal("itBit",o.i32_mul(o.i32_sub(o.getLocal("nChunks"),o.i32_const(1)),o.getLocal("chunkSize"))),o.block(o.loop(o.br_if(1,o.i32_lt_s(o.getLocal("itBit"),o.i32_const(0))),o.if(o.i32_eqz(o.call(e+"_isZero",o.getLocal("pr"))),[...o.setLocal("j",o.i32_const(0)),...o.block(o.loop(o.br_if(1,o.i32_eq(o.getLocal("j"),o.getLocal("chunkSize"))),o.call(e+"_double",o.getLocal("pr"),o.getLocal("pr")),o.setLocal("j",o.i32_add(o.getLocal("j"),o.i32_const(1))),o.br(0)))]),o.call(a+"_chunk",o.getLocal("pBases"),o.getLocal("pScalars"),o.getLocal("scalarSize"),o.getLocal("n"),o.getLocal("itBit"),o.getLocal("chunkSize"),l),o.call(e+"_add",o.getLocal("pr"),l,o.getLocal("pr")),o.setLocal("itBit",o.i32_sub(o.getLocal("itBit"),o.getLocal("chunkSize"))),o.br(0))))}!function(){const e=t.addFunction(a+"_getChunk");e.addParam("pScalar","i32"),e.addParam("scalarSize","i32"),e.addParam("startBit","i32"),e.addParam("chunkSize","i32"),e.addLocal("bitsToEnd","i32"),e.addLocal("mask","i32"),e.setReturnType("i32");const i=e.getCodeBuilder();e.addCode(i.setLocal("bitsToEnd",i.i32_sub(i.i32_mul(i.getLocal("scalarSize"),i.i32_const(8)),i.getLocal("startBit"))),i.if(i.i32_gt_s(i.getLocal("chunkSize"),i.getLocal("bitsToEnd")),i.setLocal("mask",i.i32_sub(i.i32_shl(i.i32_const(1),i.getLocal("bitsToEnd")),i.i32_const(1))),i.setLocal("mask",i.i32_sub(i.i32_shl(i.i32_const(1),i.getLocal("chunkSize")),i.i32_const(1)))),i.i32_and(i.i32_shr_u(i.i32_load(i.i32_add(i.getLocal("pScalar"),i.i32_shr_u(i.getLocal("startBit"),i.i32_const(3))),0,0),i.i32_and(i.getLocal("startBit"),i.i32_const(7))),i.getLocal("mask")))}(),function(){const i=t.addFunction(a+"_reduceTable");i.addParam("pTable","i32"),i.addParam("p","i32"),i.addLocal("half","i32"),i.addLocal("it1","i32"),i.addLocal("it2","i32"),i.addLocal("pAcc","i32");const o=i.getCodeBuilder();i.addCode(o.if(o.i32_eq(o.getLocal("p"),o.i32_const(1)),o.ret([])),o.setLocal("half",o.i32_shl(o.i32_const(1),o.i32_sub(o.getLocal("p"),o.i32_const(1)))),o.setLocal("it1",o.getLocal("pTable")),o.setLocal("it2",o.i32_add(o.getLocal("pTable"),o.i32_mul(o.getLocal("half"),o.i32_const(n)))),o.setLocal("pAcc",o.i32_sub(o.getLocal("it2"),o.i32_const(n))),o.block(o.loop(o.br_if(1,o.i32_eq(o.getLocal("it1"),o.getLocal("pAcc"))),o.call(e+"_add",o.getLocal("it1"),o.getLocal("it2"),o.getLocal("it1")),o.call(e+"_add",o.getLocal("pAcc"),o.getLocal("it2"),o.getLocal("pAcc")),o.setLocal("it1",o.i32_add(o.getLocal("it1"),o.i32_const(n))),o.setLocal("it2",o.i32_add(o.getLocal("it2"),o.i32_const(n))),o.br(0))),o.call(a+"_reduceTable",o.getLocal("pTable"),o.i32_sub(o.getLocal("p"),o.i32_const(1))),o.setLocal("p",o.i32_sub(o.getLocal("p"),o.i32_const(1))),o.block(o.loop(o.br_if(1,o.i32_eqz(o.getLocal("p"))),o.call(e+"_double",o.getLocal("pAcc"),o.getLocal("pAcc")),o.setLocal("p",o.i32_sub(o.getLocal("p"),o.i32_const(1))),o.br(0))),o.call(e+"_add",o.getLocal("pTable"),o.getLocal("pAcc"),o.getLocal("pTable")))}(),function(){const l=t.addFunction(a+"_chunk");l.addParam("pBases","i32"),l.addParam("pScalars","i32"),l.addParam("scalarSize","i32"),l.addParam("n","i32"),l.addParam("startBit","i32"),l.addParam("chunkSize","i32"),l.addParam("pr","i32"),l.addLocal("nChunks","i32"),l.addLocal("itScalar","i32"),l.addLocal("endScalar","i32"),l.addLocal("itBase","i32"),l.addLocal("i","i32"),l.addLocal("j","i32"),l.addLocal("nTable","i32"),l.addLocal("pTable","i32"),l.addLocal("idx","i32"),l.addLocal("pIdxTable","i32");const r=l.getCodeBuilder();l.addCode(r.if(r.i32_eqz(r.getLocal("n")),[...r.call(e+"_zero",r.getLocal("pr")),...r.ret([])]),r.setLocal("nTable",r.i32_shl(r.i32_const(1),r.getLocal("chunkSize"))),r.setLocal("pTable",r.i32_load(r.i32_const(0))),r.i32_store(r.i32_const(0),r.i32_add(r.getLocal("pTable"),r.i32_mul(r.getLocal("nTable"),r.i32_const(n)))),r.setLocal("j",r.i32_const(0)),r.block(r.loop(r.br_if(1,r.i32_eq(r.getLocal("j"),r.getLocal("nTable"))),r.call(e+"_zero",r.i32_add(r.getLocal("pTable"),r.i32_mul(r.getLocal("j"),r.i32_const(n)))),r.setLocal("j",r.i32_add(r.getLocal("j"),r.i32_const(1))),r.br(0))),r.setLocal("itBase",r.getLocal("pBases")),r.setLocal("itScalar",r.getLocal("pScalars")),r.setLocal("endScalar",r.i32_add(r.getLocal("pScalars"),r.i32_mul(r.getLocal("n"),r.getLocal("scalarSize")))),r.block(r.loop(r.br_if(1,r.i32_eq(r.getLocal("itScalar"),r.getLocal("endScalar"))),r.setLocal("idx",r.call(a+"_getChunk",r.getLocal("itScalar"),r.getLocal("scalarSize"),r.getLocal("startBit"),r.getLocal("chunkSize"))),r.if(r.getLocal("idx"),[...r.setLocal("pIdxTable",r.i32_add(r.getLocal("pTable"),r.i32_mul(r.i32_sub(r.getLocal("idx"),r.i32_const(1)),r.i32_const(n)))),...r.call(i,r.getLocal("pIdxTable"),r.getLocal("itBase"),r.getLocal("pIdxTable"))]),r.setLocal("itScalar",r.i32_add(r.getLocal("itScalar"),r.getLocal("scalarSize"))),r.setLocal("itBase",r.i32_add(r.getLocal("itBase"),r.i32_const(o))),r.br(0))),r.call(a+"_reduceTable",r.getLocal("pTable"),r.getLocal("chunkSize")),r.call(e+"_copy",r.getLocal("pTable"),r.getLocal("pr")),r.i32_store(r.i32_const(0),r.getLocal("pTable")))}(),l(),t.exportFunction(a),t.exportFunction(a+"_chunk")};var zt=function(t,e,a,i){const o=t.modules[a].n64,n=8*o;if(t.modules[e])return e;return t.modules[e]={n64:3*o},function(){const i=t.addFunction(e+"_isZeroAffine");i.addParam("p1","i32"),i.setReturnType("i32");const o=i.getCodeBuilder();i.addCode(o.i32_and(o.call(a+"_isZero",o.getLocal("p1")),o.call(a+"_isZero",o.i32_add(o.getLocal("p1"),o.i32_const(n)))))}(),function(){const i=t.addFunction(e+"_isZero");i.addParam("p1","i32"),i.setReturnType("i32");const o=i.getCodeBuilder();i.addCode(o.call(a+"_isZero",o.i32_add(o.getLocal("p1"),o.i32_const(2*n))))}(),function(){const i=t.addFunction(e+"_zeroAffine");i.addParam("pr","i32");const o=i.getCodeBuilder();i.addCode(o.call(a+"_zero",o.getLocal("pr"))),i.addCode(o.call(a+"_zero",o.i32_add(o.getLocal("pr"),o.i32_const(n))))}(),function(){const i=t.addFunction(e+"_zero");i.addParam("pr","i32");const o=i.getCodeBuilder();i.addCode(o.call(a+"_zero",o.getLocal("pr"))),i.addCode(o.call(a+"_one",o.i32_add(o.getLocal("pr"),o.i32_const(n)))),i.addCode(o.call(a+"_zero",o.i32_add(o.getLocal("pr"),o.i32_const(2*n))))}(),function(){const a=t.addFunction(e+"_copyAffine");a.addParam("ps","i32"),a.addParam("pd","i32");const i=a.getCodeBuilder();for(let t=0;t<2*o;t++)a.addCode(i.i64_store(i.getLocal("pd"),8*t,i.i64_load(i.getLocal("ps"),8*t)))}(),function(){const a=t.addFunction(e+"_copy");a.addParam("ps","i32"),a.addParam("pd","i32");const i=a.getCodeBuilder();for(let t=0;t<3*o;t++)a.addCode(i.i64_store(i.getLocal("pd"),8*t,i.i64_load(i.getLocal("ps"),8*t)))}(),function(){const i=t.addFunction(e+"_toJacobian");i.addParam("p1","i32"),i.addParam("pr","i32");const o=i.getCodeBuilder(),l=o.getLocal("p1"),r=o.i32_add(o.getLocal("p1"),o.i32_const(n)),s=o.getLocal("pr"),c=o.i32_add(o.getLocal("pr"),o.i32_const(n)),d=o.i32_add(o.getLocal("pr"),o.i32_const(2*n));i.addCode(o.if(o.call(e+"_isZeroAffine",o.getLocal("p1")),o.call(e+"_zero",o.getLocal("pr")),[...o.call(a+"_one",d),...o.call(a+"_copy",r,c),...o.call(a+"_copy",l,s)]))}(),function(){const i=t.addFunction(e+"_eqAffine");i.addParam("p1","i32"),i.addParam("p2","i32"),i.setReturnType("i32"),i.addLocal("z1","i32");const o=i.getCodeBuilder();i.addCode(o.ret(o.i32_and(o.call(a+"_eq",o.getLocal("p1"),o.getLocal("p2")),o.call(a+"_eq",o.i32_add(o.getLocal("p1"),o.i32_const(n)),o.i32_add(o.getLocal("p2"),o.i32_const(n))))))}(),function(){const i=t.addFunction(e+"_eqMixed");i.addParam("p1","i32"),i.addParam("p2","i32"),i.setReturnType("i32"),i.addLocal("z1","i32");const o=i.getCodeBuilder(),l=o.getLocal("p1"),r=o.i32_add(o.getLocal("p1"),o.i32_const(n));i.addCode(o.setLocal("z1",o.i32_add(o.getLocal("p1"),o.i32_const(2*n))));const s=o.getLocal("z1"),c=o.getLocal("p2"),d=o.i32_add(o.getLocal("p2"),o.i32_const(n)),u=o.i32_const(t.alloc(n)),g=o.i32_const(t.alloc(n)),f=o.i32_const(t.alloc(n)),h=o.i32_const(t.alloc(n));i.addCode(o.if(o.call(e+"_isZero",o.getLocal("p1")),o.ret(o.call(e+"_isZeroAffine",o.getLocal("p2")))),o.if(o.call(e+"_isZeroAffine",o.getLocal("p2")),o.ret(o.i32_const(0))),o.if(o.call(a+"_isOne",s),o.ret(o.call(e+"_eqAffine",o.getLocal("p1"),o.getLocal("p2")))),o.call(a+"_square",s,u),o.call(a+"_mul",c,u,g),o.call(a+"_mul",s,u,f),o.call(a+"_mul",d,f,h),o.if(o.call(a+"_eq",l,g),o.if(o.call(a+"_eq",r,h),o.ret(o.i32_const(1)))),o.ret(o.i32_const(0)))}(),function(){const i=t.addFunction(e+"_eq");i.addParam("p1","i32"),i.addParam("p2","i32"),i.setReturnType("i32"),i.addLocal("z1","i32"),i.addLocal("z2","i32");const o=i.getCodeBuilder(),l=o.getLocal("p1"),r=o.i32_add(o.getLocal("p1"),o.i32_const(n));i.addCode(o.setLocal("z1",o.i32_add(o.getLocal("p1"),o.i32_const(2*n))));const s=o.getLocal("z1"),c=o.getLocal("p2"),d=o.i32_add(o.getLocal("p2"),o.i32_const(n));i.addCode(o.setLocal("z2",o.i32_add(o.getLocal("p2"),o.i32_const(2*n))));const u=o.getLocal("z2"),g=o.i32_const(t.alloc(n)),f=o.i32_const(t.alloc(n)),h=o.i32_const(t.alloc(n)),_=o.i32_const(t.alloc(n)),p=o.i32_const(t.alloc(n)),m=o.i32_const(t.alloc(n)),w=o.i32_const(t.alloc(n)),L=o.i32_const(t.alloc(n));i.addCode(o.if(o.call(e+"_isZero",o.getLocal("p1")),o.ret(o.call(e+"_isZero",o.getLocal("p2")))),o.if(o.call(e+"_isZero",o.getLocal("p2")),o.ret(o.i32_const(0))),o.if(o.call(a+"_isOne",s),o.ret(o.call(e+"_eqMixed",o.getLocal("p2"),o.getLocal("p1")))),o.if(o.call(a+"_isOne",u),o.ret(o.call(e+"_eqMixed",o.getLocal("p1"),o.getLocal("p2")))),o.call(a+"_square",s,g),o.call(a+"_square",u,f),o.call(a+"_mul",l,f,h),o.call(a+"_mul",c,g,_),o.call(a+"_mul",s,g,p),o.call(a+"_mul",u,f,m),o.call(a+"_mul",r,m,w),o.call(a+"_mul",d,p,L),o.if(o.call(a+"_eq",h,_),o.if(o.call(a+"_eq",w,L),o.ret(o.i32_const(1)))),o.ret(o.i32_const(0)))}(),function(){const i=t.addFunction(e+"_doubleAffine");i.addParam("p1","i32"),i.addParam("pr","i32");const o=i.getCodeBuilder(),l=o.getLocal("p1"),r=o.i32_add(o.getLocal("p1"),o.i32_const(n)),s=o.getLocal("pr"),c=o.i32_add(o.getLocal("pr"),o.i32_const(n)),d=o.i32_add(o.getLocal("pr"),o.i32_const(2*n)),u=o.i32_const(t.alloc(n)),g=o.i32_const(t.alloc(n)),f=o.i32_const(t.alloc(n)),h=o.i32_const(t.alloc(n)),_=o.i32_const(t.alloc(n)),p=o.i32_const(t.alloc(n));i.addCode(o.if(o.call(e+"_isZeroAffine",o.getLocal("p1")),[...o.call(e+"_toJacobian",o.getLocal("p1"),o.getLocal("pr")),...o.ret([])]),o.call(a+"_square",l,u),o.call(a+"_square",r,g),o.call(a+"_square",g,f),o.call(a+"_add",l,g,h),o.call(a+"_square",h,h),o.call(a+"_sub",h,u,h),o.call(a+"_sub",h,f,h),o.call(a+"_add",h,h,h),o.call(a+"_add",u,u,_),o.call(a+"_add",_,u,_),o.call(a+"_add",r,r,d),o.call(a+"_square",_,s),o.call(a+"_sub",s,h,s),o.call(a+"_sub",s,h,s),o.call(a+"_add",f,f,p),o.call(a+"_add",p,p,p),o.call(a+"_add",p,p,p),o.call(a+"_sub",h,s,c),o.call(a+"_mul",c,_,c),o.call(a+"_sub",c,p,c))}(),function(){const i=t.addFunction(e+"_double");i.addParam("p1","i32"),i.addParam("pr","i32");const o=i.getCodeBuilder(),l=o.getLocal("p1"),r=o.i32_add(o.getLocal("p1"),o.i32_const(n)),s=o.i32_add(o.getLocal("p1"),o.i32_const(2*n)),c=o.getLocal("pr"),d=o.i32_add(o.getLocal("pr"),o.i32_const(n)),u=o.i32_add(o.getLocal("pr"),o.i32_const(2*n)),g=o.i32_const(t.alloc(n)),f=o.i32_const(t.alloc(n)),h=o.i32_const(t.alloc(n)),_=o.i32_const(t.alloc(n)),p=o.i32_const(t.alloc(n)),m=o.i32_const(t.alloc(n)),w=o.i32_const(t.alloc(n)),L=o.i32_const(t.alloc(n));i.addCode(o.if(o.call(e+"_isZero",o.getLocal("p1")),[...o.call(e+"_copy",o.getLocal("p1"),o.getLocal("pr")),...o.ret([])]),o.if(o.call(a+"_isOne",s),[...o.ret(o.call(e+"_doubleAffine",o.getLocal("p1"),o.getLocal("pr"))),...o.ret([])]),o.call(a+"_square",l,g),o.call(a+"_square",r,f),o.call(a+"_square",f,h),o.call(a+"_add",l,f,_),o.call(a+"_square",_,_),o.call(a+"_sub",_,g,_),o.call(a+"_sub",_,h,_),o.call(a+"_add",_,_,_),o.call(a+"_add",g,g,p),o.call(a+"_add",p,g,p),o.call(a+"_square",p,m),o.call(a+"_mul",r,s,w),o.call(a+"_add",_,_,c),o.call(a+"_sub",m,c,c),o.call(a+"_add",h,h,L),o.call(a+"_add",L,L,L),o.call(a+"_add",L,L,L),o.call(a+"_sub",_,c,d),o.call(a+"_mul",d,p,d),o.call(a+"_sub",d,L,d),o.call(a+"_add",w,w,u))}(),function(){const i=t.addFunction(e+"_addAffine");i.addParam("p1","i32"),i.addParam("p2","i32"),i.addParam("pr","i32"),i.addLocal("z1","i32");const o=i.getCodeBuilder(),l=o.getLocal("p1"),r=o.i32_add(o.getLocal("p1"),o.i32_const(n));i.addCode(o.setLocal("z1",o.i32_add(o.getLocal("p1"),o.i32_const(2*n))));const s=o.getLocal("p2"),c=o.i32_add(o.getLocal("p2"),o.i32_const(n)),d=o.getLocal("pr"),u=o.i32_add(o.getLocal("pr"),o.i32_const(n)),g=o.i32_add(o.getLocal("pr"),o.i32_const(2*n)),f=o.i32_const(t.alloc(n)),h=o.i32_const(t.alloc(n)),_=o.i32_const(t.alloc(n)),p=o.i32_const(t.alloc(n)),m=o.i32_const(t.alloc(n)),w=o.i32_const(t.alloc(n)),L=o.i32_const(t.alloc(n)),b=o.i32_const(t.alloc(n)),y=o.i32_const(t.alloc(n)),A=o.i32_const(t.alloc(n));i.addCode(o.if(o.call(e+"_isZeroAffine",o.getLocal("p1")),[...o.call(e+"_copyAffine",o.getLocal("p2"),o.getLocal("pr")),...o.call(a+"_one",o.i32_add(o.getLocal("pr"),o.i32_const(2*n))),...o.ret([])]),o.if(o.call(e+"_isZeroAffine",o.getLocal("p2")),[...o.call(e+"_copyAffine",o.getLocal("p1"),o.getLocal("pr")),...o.call(a+"_one",o.i32_add(o.getLocal("pr"),o.i32_const(2*n))),...o.ret([])]),o.if(o.call(a+"_eq",l,s),o.if(o.call(a+"_eq",r,c),[...o.call(e+"_doubleAffine",o.getLocal("p2"),o.getLocal("pr")),...o.ret([])])),o.call(a+"_sub",s,l,f),o.call(a+"_sub",c,r,_),o.call(a+"_square",f,h),o.call(a+"_add",h,h,p),o.call(a+"_add",p,p,p),o.call(a+"_mul",f,p,m),o.call(a+"_add",_,_,w),o.call(a+"_mul",l,p,b),o.call(a+"_square",w,L),o.call(a+"_add",b,b,y),o.call(a+"_sub",L,m,d),o.call(a+"_sub",d,y,d),o.call(a+"_mul",r,m,A),o.call(a+"_add",A,A,A),o.call(a+"_sub",b,d,u),o.call(a+"_mul",u,w,u),o.call(a+"_sub",u,A,u),o.call(a+"_add",f,f,g))}(),function(){const i=t.addFunction(e+"_addMixed");i.addParam("p1","i32"),i.addParam("p2","i32"),i.addParam("pr","i32"),i.addLocal("z1","i32");const o=i.getCodeBuilder(),l=o.getLocal("p1"),r=o.i32_add(o.getLocal("p1"),o.i32_const(n));i.addCode(o.setLocal("z1",o.i32_add(o.getLocal("p1"),o.i32_const(2*n))));const s=o.getLocal("z1"),c=o.getLocal("p2"),d=o.i32_add(o.getLocal("p2"),o.i32_const(n)),u=o.getLocal("pr"),g=o.i32_add(o.getLocal("pr"),o.i32_const(n)),f=o.i32_add(o.getLocal("pr"),o.i32_const(2*n)),h=o.i32_const(t.alloc(n)),_=o.i32_const(t.alloc(n)),p=o.i32_const(t.alloc(n)),m=o.i32_const(t.alloc(n)),w=o.i32_const(t.alloc(n)),L=o.i32_const(t.alloc(n)),b=o.i32_const(t.alloc(n)),y=o.i32_const(t.alloc(n)),A=o.i32_const(t.alloc(n)),C=o.i32_const(t.alloc(n)),I=o.i32_const(t.alloc(n)),F=o.i32_const(t.alloc(n)),x=o.i32_const(t.alloc(n)),E=o.i32_const(t.alloc(n));i.addCode(o.if(o.call(e+"_isZero",o.getLocal("p1")),[...o.call(e+"_copyAffine",o.getLocal("p2"),o.getLocal("pr")),...o.call(a+"_one",o.i32_add(o.getLocal("pr"),o.i32_const(2*n))),...o.ret([])]),o.if(o.call(e+"_isZeroAffine",o.getLocal("p2")),[...o.call(e+"_copy",o.getLocal("p1"),o.getLocal("pr")),...o.ret([])]),o.if(o.call(a+"_isOne",s),[...o.call(e+"_addAffine",l,c,u),...o.ret([])]),o.call(a+"_square",s,h),o.call(a+"_mul",c,h,_),o.call(a+"_mul",s,h,p),o.call(a+"_mul",d,p,m),o.if(o.call(a+"_eq",l,_),o.if(o.call(a+"_eq",r,m),[...o.call(e+"_doubleAffine",o.getLocal("p2"),o.getLocal("pr")),...o.ret([])])),o.call(a+"_sub",_,l,w),o.call(a+"_sub",m,r,b),o.call(a+"_square",w,L),o.call(a+"_add",L,L,y),o.call(a+"_add",y,y,y),o.call(a+"_mul",w,y,A),o.call(a+"_add",b,b,C),o.call(a+"_mul",l,y,F),o.call(a+"_square",C,I),o.call(a+"_add",F,F,x),o.call(a+"_sub",I,A,u),o.call(a+"_sub",u,x,u),o.call(a+"_mul",r,A,E),o.call(a+"_add",E,E,E),o.call(a+"_sub",F,u,g),o.call(a+"_mul",g,C,g),o.call(a+"_sub",g,E,g),o.call(a+"_add",s,w,f),o.call(a+"_square",f,f),o.call(a+"_sub",f,h,f),o.call(a+"_sub",f,L,f))}(),function(){const i=t.addFunction(e+"_add");i.addParam("p1","i32"),i.addParam("p2","i32"),i.addParam("pr","i32"),i.addLocal("z1","i32"),i.addLocal("z2","i32");const o=i.getCodeBuilder(),l=o.getLocal("p1"),r=o.i32_add(o.getLocal("p1"),o.i32_const(n));i.addCode(o.setLocal("z1",o.i32_add(o.getLocal("p1"),o.i32_const(2*n))));const s=o.getLocal("z1"),c=o.getLocal("p2"),d=o.i32_add(o.getLocal("p2"),o.i32_const(n));i.addCode(o.setLocal("z2",o.i32_add(o.getLocal("p2"),o.i32_const(2*n))));const u=o.getLocal("z2"),g=o.getLocal("pr"),f=o.i32_add(o.getLocal("pr"),o.i32_const(n)),h=o.i32_add(o.getLocal("pr"),o.i32_const(2*n)),_=o.i32_const(t.alloc(n)),p=o.i32_const(t.alloc(n)),m=o.i32_const(t.alloc(n)),w=o.i32_const(t.alloc(n)),L=o.i32_const(t.alloc(n)),b=o.i32_const(t.alloc(n)),y=o.i32_const(t.alloc(n)),A=o.i32_const(t.alloc(n)),C=o.i32_const(t.alloc(n)),I=o.i32_const(t.alloc(n)),F=o.i32_const(t.alloc(n)),x=o.i32_const(t.alloc(n)),E=o.i32_const(t.alloc(n)),v=o.i32_const(t.alloc(n)),B=o.i32_const(t.alloc(n)),S=o.i32_const(t.alloc(n)),P=o.i32_const(t.alloc(n));i.addCode(o.if(o.call(e+"_isZero",o.getLocal("p1")),[...o.call(e+"_copy",o.getLocal("p2"),o.getLocal("pr")),...o.ret([])]),o.if(o.call(e+"_isZero",o.getLocal("p2")),[...o.call(e+"_copy",o.getLocal("p1"),o.getLocal("pr")),...o.ret([])]),o.if(o.call(a+"_isOne",s),[...o.call(e+"_addMixed",c,l,g),...o.ret([])]),o.if(o.call(a+"_isOne",u),[...o.call(e+"_addMixed",l,c,g),...o.ret([])]),o.call(a+"_square",s,_),o.call(a+"_square",u,p),o.call(a+"_mul",l,p,m),o.call(a+"_mul",c,_,w),o.call(a+"_mul",s,_,L),o.call(a+"_mul",u,p,b),o.call(a+"_mul",r,b,y),o.call(a+"_mul",d,L,A),o.if(o.call(a+"_eq",m,w),o.if(o.call(a+"_eq",y,A),[...o.call(e+"_double",o.getLocal("p1"),o.getLocal("pr")),...o.ret([])])),o.call(a+"_sub",w,m,C),o.call(a+"_sub",A,y,I),o.call(a+"_add",C,C,F),o.call(a+"_square",F,F),o.call(a+"_mul",C,F,x),o.call(a+"_add",I,I,E),o.call(a+"_mul",m,F,B),o.call(a+"_square",E,v),o.call(a+"_add",B,B,S),o.call(a+"_sub",v,x,g),o.call(a+"_sub",g,S,g),o.call(a+"_mul",y,x,P),o.call(a+"_add",P,P,P),o.call(a+"_sub",B,g,f),o.call(a+"_mul",f,E,f),o.call(a+"_sub",f,P,f),o.call(a+"_add",s,u,h),o.call(a+"_square",h,h),o.call(a+"_sub",h,_,h),o.call(a+"_sub",h,p,h),o.call(a+"_mul",h,C,h))}(),function(){const i=t.addFunction(e+"_negAffine");i.addParam("p1","i32"),i.addParam("pr","i32");const o=i.getCodeBuilder(),l=o.getLocal("p1"),r=o.i32_add(o.getLocal("p1"),o.i32_const(n)),s=o.getLocal("pr"),c=o.i32_add(o.getLocal("pr"),o.i32_const(n));i.addCode(o.call(a+"_copy",l,s),o.call(a+"_neg",r,c))}(),function(){const i=t.addFunction(e+"_neg");i.addParam("p1","i32"),i.addParam("pr","i32");const o=i.getCodeBuilder(),l=o.getLocal("p1"),r=o.i32_add(o.getLocal("p1"),o.i32_const(n)),s=o.i32_add(o.getLocal("p1"),o.i32_const(2*n)),c=o.getLocal("pr"),d=o.i32_add(o.getLocal("pr"),o.i32_const(n)),u=o.i32_add(o.getLocal("pr"),o.i32_const(2*n));i.addCode(o.call(a+"_copy",l,c),o.call(a+"_neg",r,d),o.call(a+"_copy",s,u))}(),function(){const a=t.addFunction(e+"_subAffine");a.addParam("p1","i32"),a.addParam("p2","i32"),a.addParam("pr","i32");const i=a.getCodeBuilder(),o=i.i32_const(t.alloc(3*n));a.addCode(i.call(e+"_negAffine",i.getLocal("p2"),o),i.call(e+"_addAffine",i.getLocal("p1"),o,i.getLocal("pr")))}(),function(){const a=t.addFunction(e+"_subMixed");a.addParam("p1","i32"),a.addParam("p2","i32"),a.addParam("pr","i32");const i=a.getCodeBuilder(),o=i.i32_const(t.alloc(3*n));a.addCode(i.call(e+"_negAffine",i.getLocal("p2"),o),i.call(e+"_addMixed",i.getLocal("p1"),o,i.getLocal("pr")))}(),function(){const a=t.addFunction(e+"_sub");a.addParam("p1","i32"),a.addParam("p2","i32"),a.addParam("pr","i32");const i=a.getCodeBuilder(),o=i.i32_const(t.alloc(3*n));a.addCode(i.call(e+"_neg",i.getLocal("p2"),o),i.call(e+"_add",i.getLocal("p1"),o,i.getLocal("pr")))}(),function(){const i=t.addFunction(e+"_fromMontgomeryAffine");i.addParam("p1","i32"),i.addParam("pr","i32");const o=i.getCodeBuilder();i.addCode(o.call(a+"_fromMontgomery",o.getLocal("p1"),o.getLocal("pr")));for(let t=1;t<2;t++)i.addCode(o.call(a+"_fromMontgomery",o.i32_add(o.getLocal("p1"),o.i32_const(t*n)),o.i32_add(o.getLocal("pr"),o.i32_const(t*n))))}(),function(){const i=t.addFunction(e+"_fromMontgomery");i.addParam("p1","i32"),i.addParam("pr","i32");const o=i.getCodeBuilder();i.addCode(o.call(a+"_fromMontgomery",o.getLocal("p1"),o.getLocal("pr")));for(let t=1;t<3;t++)i.addCode(o.call(a+"_fromMontgomery",o.i32_add(o.getLocal("p1"),o.i32_const(t*n)),o.i32_add(o.getLocal("pr"),o.i32_const(t*n))))}(),function(){const i=t.addFunction(e+"_toMontgomeryAffine");i.addParam("p1","i32"),i.addParam("pr","i32");const o=i.getCodeBuilder();i.addCode(o.call(a+"_toMontgomery",o.getLocal("p1"),o.getLocal("pr")));for(let t=1;t<2;t++)i.addCode(o.call(a+"_toMontgomery",o.i32_add(o.getLocal("p1"),o.i32_const(t*n)),o.i32_add(o.getLocal("pr"),o.i32_const(t*n))))}(),function(){const i=t.addFunction(e+"_toMontgomery");i.addParam("p1","i32"),i.addParam("pr","i32");const o=i.getCodeBuilder();i.addCode(o.call(a+"_toMontgomery",o.getLocal("p1"),o.getLocal("pr")));for(let t=1;t<3;t++)i.addCode(o.call(a+"_toMontgomery",o.i32_add(o.getLocal("p1"),o.i32_const(t*n)),o.i32_add(o.getLocal("pr"),o.i32_const(t*n))))}(),function(){const i=t.addFunction(e+"_toAffine");i.addParam("p1","i32"),i.addParam("pr","i32");const o=i.getCodeBuilder(),l=o.getLocal("p1"),r=o.i32_add(o.getLocal("p1"),o.i32_const(n)),s=o.i32_add(o.getLocal("p1"),o.i32_const(2*n)),c=o.getLocal("pr"),d=o.i32_add(o.getLocal("pr"),o.i32_const(n)),u=o.i32_const(t.alloc(n)),g=o.i32_const(t.alloc(n)),f=o.i32_const(t.alloc(n));i.addCode(o.if(o.call(e+"_isZero",o.getLocal("p1")),[...o.call(a+"_zero",c),...o.call(a+"_zero",d)],[...o.call(a+"_inverse",s,u),...o.call(a+"_square",u,g),...o.call(a+"_mul",u,g,f),...o.call(a+"_mul",l,g,c),...o.call(a+"_mul",r,f,d)]))}(),function(){const o=t.addFunction(e+"_inCurveAffine");o.addParam("pIn","i32"),o.setReturnType("i32");const l=o.getCodeBuilder(),r=l.getLocal("pIn"),s=l.i32_add(l.getLocal("pIn"),l.i32_const(n)),c=l.i32_const(t.alloc(n)),d=l.i32_const(t.alloc(n));o.addCode(l.call(a+"_square",s,c),l.call(a+"_square",r,d),l.call(a+"_mul",r,d,d),l.call(a+"_add",d,l.i32_const(i),d),l.ret(l.call(a+"_eq",c,d)))}(),function(){const a=t.addFunction(e+"_inCurve");a.addParam("pIn","i32"),a.setReturnType("i32");const i=a.getCodeBuilder(),o=i.i32_const(t.alloc(2*n));a.addCode(i.call(e+"_toAffine",i.getLocal("pIn"),o),i.ret(i.call(e+"_inCurveAffine",o)))}(),function(){const i=t.addFunction(e+"_batchToAffine");i.addParam("pIn","i32"),i.addParam("n","i32"),i.addParam("pOut","i32"),i.addLocal("pAux","i32"),i.addLocal("itIn","i32"),i.addLocal("itAux","i32"),i.addLocal("itOut","i32"),i.addLocal("i","i32");const o=i.getCodeBuilder(),l=o.i32_const(t.alloc(n));i.addCode(o.setLocal("pAux",o.i32_load(o.i32_const(0))),o.i32_store(o.i32_const(0),o.i32_add(o.getLocal("pAux"),o.i32_mul(o.getLocal("n"),o.i32_const(n)))),o.call(a+"_batchInverse",o.i32_add(o.getLocal("pIn"),o.i32_const(2*n)),o.i32_const(3*n),o.getLocal("n"),o.getLocal("pAux"),o.i32_const(n)),o.setLocal("itIn",o.getLocal("pIn")),o.setLocal("itAux",o.getLocal("pAux")),o.setLocal("itOut",o.getLocal("pOut")),o.setLocal("i",o.i32_const(0)),o.block(o.loop(o.br_if(1,o.i32_eq(o.getLocal("i"),o.getLocal("n"))),o.if(o.call(a+"_isZero",o.getLocal("itAux")),[...o.call(a+"_zero",o.getLocal("itOut")),...o.call(a+"_zero",o.i32_add(o.getLocal("itOut"),o.i32_const(n)))],[...o.call(a+"_mul",o.getLocal("itAux"),o.i32_add(o.getLocal("itIn"),o.i32_const(n)),l),...o.call(a+"_square",o.getLocal("itAux"),o.getLocal("itAux")),...o.call(a+"_mul",o.getLocal("itAux"),o.getLocal("itIn"),o.getLocal("itOut")),...o.call(a+"_mul",o.getLocal("itAux"),l,o.i32_add(o.getLocal("itOut"),o.i32_const(n)))]),o.setLocal("itIn",o.i32_add(o.getLocal("itIn"),o.i32_const(3*n))),o.setLocal("itOut",o.i32_add(o.getLocal("itOut"),o.i32_const(2*n))),o.setLocal("itAux",o.i32_add(o.getLocal("itAux"),o.i32_const(n))),o.setLocal("i",o.i32_add(o.getLocal("i"),o.i32_const(1))),o.br(0))),o.i32_store(o.i32_const(0),o.getLocal("pAux")))}(),function(){const i=t.addFunction(e+"_normalize");i.addParam("p1","i32"),i.addParam("pr","i32");const o=i.getCodeBuilder(),l=o.getLocal("p1"),r=o.i32_add(o.getLocal("p1"),o.i32_const(n)),s=o.i32_add(o.getLocal("p1"),o.i32_const(2*n)),c=o.getLocal("pr"),d=o.i32_add(o.getLocal("pr"),o.i32_const(n)),u=o.i32_add(o.getLocal("pr"),o.i32_const(2*n)),g=o.i32_const(t.alloc(n)),f=o.i32_const(t.alloc(n)),h=o.i32_const(t.alloc(n));i.addCode(o.if(o.call(e+"_isZero",o.getLocal("p1")),o.call(e+"_zero",o.getLocal("pr")),[...o.call(a+"_inverse",s,g),...o.call(a+"_square",g,f),...o.call(a+"_mul",g,f,h),...o.call(a+"_mul",l,f,c),...o.call(a+"_mul",r,h,d),...o.call(a+"_one",u)]))}(),function(){const a=t.addFunction(e+"__reverseBytes");a.addParam("pIn","i32"),a.addParam("n","i32"),a.addParam("pOut","i32"),a.addLocal("itOut","i32"),a.addLocal("itIn","i32");const i=a.getCodeBuilder();a.addCode(i.setLocal("itOut",i.i32_sub(i.i32_add(i.getLocal("pOut"),i.getLocal("n")),i.i32_const(1))),i.setLocal("itIn",i.getLocal("pIn")),i.block(i.loop(i.br_if(1,i.i32_lt_s(i.getLocal("itOut"),i.getLocal("pOut"))),i.i32_store8(i.getLocal("itOut"),i.i32_load8_u(i.getLocal("itIn"))),i.setLocal("itOut",i.i32_sub(i.getLocal("itOut"),i.i32_const(1))),i.setLocal("itIn",i.i32_add(i.getLocal("itIn"),i.i32_const(1))),i.br(0))))}(),function(){const a=t.addFunction(e+"_LEMtoU");a.addParam("pIn","i32"),a.addParam("pOut","i32");const i=a.getCodeBuilder(),o=t.alloc(2*n),l=i.i32_const(o),r=i.i32_const(o),s=i.i32_const(o+n);a.addCode(i.if(i.call(e+"_isZeroAffine",i.getLocal("pIn")),[...i.call(e+"_zeroAffine",i.getLocal("pOut")),...i.ret([])]),i.call(e+"_fromMontgomeryAffine",i.getLocal("pIn"),l),i.call(e+"__reverseBytes",r,i.i32_const(n),i.getLocal("pOut")),i.call(e+"__reverseBytes",s,i.i32_const(n),i.i32_add(i.getLocal("pOut"),i.i32_const(n))))}(),function(){const i=t.addFunction(e+"_LEMtoC");i.addParam("pIn","i32"),i.addParam("pOut","i32");const o=i.getCodeBuilder(),l=o.i32_const(t.alloc(n));i.addCode(o.if(o.call(e+"_isZeroAffine",o.getLocal("pIn")),[...o.call(a+"_zero",o.getLocal("pOut")),...o.i32_store8(o.getLocal("pOut"),o.i32_const(64)),...o.ret([])]),o.call(a+"_fromMontgomery",o.getLocal("pIn"),l),o.call(e+"__reverseBytes",l,o.i32_const(n),o.getLocal("pOut")),o.if(o.i32_eq(o.call(a+"_sign",o.i32_add(o.getLocal("pIn"),o.i32_const(n))),o.i32_const(-1)),o.i32_store8(o.getLocal("pOut"),o.i32_or(o.i32_load8_u(o.getLocal("pOut")),o.i32_const(128)))))}(),function(){const a=t.addFunction(e+"_UtoLEM");a.addParam("pIn","i32"),a.addParam("pOut","i32");const i=a.getCodeBuilder(),o=t.alloc(2*n),l=i.i32_const(o),r=i.i32_const(o),s=i.i32_const(o+n);a.addCode(i.if(i.i32_and(i.i32_load8_u(i.getLocal("pIn")),i.i32_const(64)),[...i.call(e+"_zeroAffine",i.getLocal("pOut")),...i.ret([])]),i.call(e+"__reverseBytes",i.getLocal("pIn"),i.i32_const(n),r),i.call(e+"__reverseBytes",i.i32_add(i.getLocal("pIn"),i.i32_const(n)),i.i32_const(n),s),i.call(e+"_toMontgomeryAffine",l,i.getLocal("pOut")))}(),function(){const o=t.addFunction(e+"_CtoLEM");o.addParam("pIn","i32"),o.addParam("pOut","i32"),o.addLocal("firstByte","i32"),o.addLocal("greatest","i32");const l=o.getCodeBuilder(),r=t.alloc(2*n),s=l.i32_const(r),c=l.i32_const(r+n);o.addCode(l.setLocal("firstByte",l.i32_load8_u(l.getLocal("pIn"))),l.if(l.i32_and(l.getLocal("firstByte"),l.i32_const(64)),[...l.call(e+"_zeroAffine",l.getLocal("pOut")),...l.ret([])]),l.setLocal("greatest",l.i32_and(l.getLocal("firstByte"),l.i32_const(128))),l.call(a+"_copy",l.getLocal("pIn"),c),l.i32_store8(c,l.i32_and(l.getLocal("firstByte"),l.i32_const(63))),l.call(e+"__reverseBytes",c,l.i32_const(n),s),l.call(a+"_toMontgomery",s,l.getLocal("pOut")),l.call(a+"_square",l.getLocal("pOut"),c),l.call(a+"_mul",l.getLocal("pOut"),c,c),l.call(a+"_add",c,l.i32_const(i),c),l.call(a+"_sqrt",c,c),l.call(a+"_neg",c,s),l.if(l.i32_eq(l.call(a+"_sign",c),l.i32_const(-1)),l.if(l.getLocal("greatest"),l.call(a+"_copy",c,l.i32_add(l.getLocal("pOut"),l.i32_const(n))),l.call(a+"_neg",c,l.i32_add(l.getLocal("pOut"),l.i32_const(n)))),l.if(l.getLocal("greatest"),l.call(a+"_neg",c,l.i32_add(l.getLocal("pOut"),l.i32_const(n))),l.call(a+"_copy",c,l.i32_add(l.getLocal("pOut"),l.i32_const(n))))))}(),Tt(t,e+"_batchLEMtoU",e+"_LEMtoU",2*n,2*n),Tt(t,e+"_batchLEMtoC",e+"_LEMtoC",2*n,n),Tt(t,e+"_batchUtoLEM",e+"_UtoLEM",2*n,2*n),Tt(t,e+"_batchCtoLEM",e+"_CtoLEM",n,2*n,!0),Tt(t,e+"_batchToJacobian",e+"_toJacobian",2*n,3*n,!0),Ut(t,e,e+"_multiexp",e+"_add",3*n),Ut(t,e,e+"_multiexpAffine",e+"_addMixed",2*n),Ot(t,e+"_timesScalar",3*n,e+"_add",e+"_double",e+"_sub",e+"_copy",e+"_zero"),Ot(t,e+"_timesScalarAffine",2*n,e+"_addMixed",e+"_double",e+"_subMixed",e+"_copyAffine",e+"_zero"),t.exportFunction(e+"_isZero"),t.exportFunction(e+"_isZeroAffine"),t.exportFunction(e+"_eq"),t.exportFunction(e+"_eqMixed"),t.exportFunction(e+"_eqAffine"),t.exportFunction(e+"_copy"),t.exportFunction(e+"_copyAffine"),t.exportFunction(e+"_zero"),t.exportFunction(e+"_zeroAffine"),t.exportFunction(e+"_double"),t.exportFunction(e+"_doubleAffine"),t.exportFunction(e+"_add"),t.exportFunction(e+"_addMixed"),t.exportFunction(e+"_addAffine"),t.exportFunction(e+"_neg"),t.exportFunction(e+"_negAffine"),t.exportFunction(e+"_sub"),t.exportFunction(e+"_subMixed"),t.exportFunction(e+"_subAffine"),t.exportFunction(e+"_fromMontgomery"),t.exportFunction(e+"_fromMontgomeryAffine"),t.exportFunction(e+"_toMontgomery"),t.exportFunction(e+"_toMontgomeryAffine"),t.exportFunction(e+"_timesScalar"),t.exportFunction(e+"_timesScalarAffine"),t.exportFunction(e+"_normalize"),t.exportFunction(e+"_LEMtoU"),t.exportFunction(e+"_LEMtoC"),t.exportFunction(e+"_UtoLEM"),t.exportFunction(e+"_CtoLEM"),t.exportFunction(e+"_batchLEMtoU"),t.exportFunction(e+"_batchLEMtoC"),t.exportFunction(e+"_batchUtoLEM"),t.exportFunction(e+"_batchCtoLEM"),t.exportFunction(e+"_toAffine"),t.exportFunction(e+"_toJacobian"),t.exportFunction(e+"_batchToAffine"),t.exportFunction(e+"_batchToJacobian"),t.exportFunction(e+"_inCurve"),t.exportFunction(e+"_inCurveAffine"),e};const{isOdd:Qt,modInv:qt,modPow:Mt}=W,kt=V;var Rt=function(t,e,a,i,o){const n=8*t.modules[i].n64,l=8*t.modules[a].n64,r=t.modules[i].q;let s=r-1n,c=0;for(;!Qt(s);)c++,s>>=1n;let d=2n;for(;1n===Mt(d,r>>1n,r);)d+=1n;const u=new Array(c+1);u[c]=Mt(d,s,r);let g=c-1;for(;g>=0;)u[g]=Mt(u[g+1],2n,r),g--;const f=[],h=(1n<>a);return e}const F=Array(256);for(let t=0;t<256;t++)F[t]=I(t);const x=t.alloc(F);function E(){const a=t.addFunction(e+"_fft");a.addParam("px","i32"),a.addParam("n","i32"),a.addLocal("bits","i32");const o=a.getCodeBuilder(),l=o.i32_const(t.alloc(n));a.addCode(o.setLocal("bits",o.call(e+"__log2",o.getLocal("n"))),o.call(i+"_one",l),o.call(e+"_rawfft",o.getLocal("px"),o.getLocal("bits"),o.i32_const(0),l))}!function(){const a=t.addFunction(e+"__rev");a.addParam("x","i32"),a.addParam("bits","i32"),a.setReturnType("i32");const i=a.getCodeBuilder();a.addCode(i.i32_rotl(i.i32_add(i.i32_add(i.i32_shl(i.i32_load8_u(i.i32_and(i.getLocal("x"),i.i32_const(255)),x,0),i.i32_const(24)),i.i32_shl(i.i32_load8_u(i.i32_and(i.i32_shr_u(i.getLocal("x"),i.i32_const(8)),i.i32_const(255)),x,0),i.i32_const(16))),i.i32_add(i.i32_shl(i.i32_load8_u(i.i32_and(i.i32_shr_u(i.getLocal("x"),i.i32_const(16)),i.i32_const(255)),x,0),i.i32_const(8)),i.i32_load8_u(i.i32_and(i.i32_shr_u(i.getLocal("x"),i.i32_const(24)),i.i32_const(255)),x,0))),i.getLocal("bits")))}(),function(){const i=t.addFunction(e+"__reversePermutation");i.addParam("px","i32"),i.addParam("bits","i32"),i.addLocal("n","i32"),i.addLocal("i","i32"),i.addLocal("ri","i32"),i.addLocal("idx1","i32"),i.addLocal("idx2","i32");const o=i.getCodeBuilder(),n=o.i32_const(t.alloc(l));i.addCode(o.setLocal("n",o.i32_shl(o.i32_const(1),o.getLocal("bits"))),o.setLocal("i",o.i32_const(0)),o.block(o.loop(o.br_if(1,o.i32_eq(o.getLocal("i"),o.getLocal("n"))),o.setLocal("idx1",o.i32_add(o.getLocal("px"),o.i32_mul(o.getLocal("i"),o.i32_const(l)))),o.setLocal("ri",o.call(e+"__rev",o.getLocal("i"),o.getLocal("bits"))),o.setLocal("idx2",o.i32_add(o.getLocal("px"),o.i32_mul(o.getLocal("ri"),o.i32_const(l)))),o.if(o.i32_lt_u(o.getLocal("i"),o.getLocal("ri")),[...o.call(a+"_copy",o.getLocal("idx1"),n),...o.call(a+"_copy",o.getLocal("idx2"),o.getLocal("idx1")),...o.call(a+"_copy",n,o.getLocal("idx2"))]),o.setLocal("i",o.i32_add(o.getLocal("i"),o.i32_const(1))),o.br(0))))}(),function(){const n=t.addFunction(e+"__fftFinal");n.addParam("px","i32"),n.addParam("bits","i32"),n.addParam("reverse","i32"),n.addParam("mulFactor","i32"),n.addLocal("n","i32"),n.addLocal("ndiv2","i32"),n.addLocal("pInv2","i32"),n.addLocal("i","i32"),n.addLocal("mask","i32"),n.addLocal("idx1","i32"),n.addLocal("idx2","i32");const r=n.getCodeBuilder(),s=r.i32_const(t.alloc(l));n.addCode(r.if(r.i32_and(r.i32_eqz(r.getLocal("reverse")),r.call(i+"_isOne",r.getLocal("mulFactor"))),r.ret([])),r.setLocal("n",r.i32_shl(r.i32_const(1),r.getLocal("bits"))),r.setLocal("mask",r.i32_sub(r.getLocal("n"),r.i32_const(1))),r.setLocal("i",r.i32_const(1)),r.setLocal("ndiv2",r.i32_shr_u(r.getLocal("n"),r.i32_const(1))),r.block(r.loop(r.br_if(1,r.i32_ge_u(r.getLocal("i"),r.getLocal("ndiv2"))),r.setLocal("idx1",r.i32_add(r.getLocal("px"),r.i32_mul(r.getLocal("i"),r.i32_const(l)))),r.setLocal("idx2",r.i32_add(r.getLocal("px"),r.i32_mul(r.i32_sub(r.getLocal("n"),r.getLocal("i")),r.i32_const(l)))),r.if(r.getLocal("reverse"),r.if(r.call(i+"_isOne",r.getLocal("mulFactor")),[...r.call(a+"_copy",r.getLocal("idx1"),s),...r.call(a+"_copy",r.getLocal("idx2"),r.getLocal("idx1")),...r.call(a+"_copy",s,r.getLocal("idx2"))],[...r.call(a+"_copy",r.getLocal("idx1"),s),...r.call(o,r.getLocal("idx2"),r.getLocal("mulFactor"),r.getLocal("idx1")),...r.call(o,s,r.getLocal("mulFactor"),r.getLocal("idx2"))]),r.if(r.call(i+"_isOne",r.getLocal("mulFactor")),[],[...r.call(o,r.getLocal("idx1"),r.getLocal("mulFactor"),r.getLocal("idx1")),...r.call(o,r.getLocal("idx2"),r.getLocal("mulFactor"),r.getLocal("idx2"))])),r.setLocal("i",r.i32_add(r.getLocal("i"),r.i32_const(1))),r.br(0))),r.if(r.call(i+"_isOne",r.getLocal("mulFactor")),[],[...r.call(o,r.getLocal("px"),r.getLocal("mulFactor"),r.getLocal("px")),...r.setLocal("idx2",r.i32_add(r.getLocal("px"),r.i32_mul(r.getLocal("ndiv2"),r.i32_const(l)))),...r.call(o,r.getLocal("idx2"),r.getLocal("mulFactor"),r.getLocal("idx2"))]))}(),function(){const r=t.addFunction(e+"_rawfft");r.addParam("px","i32"),r.addParam("bits","i32"),r.addParam("reverse","i32"),r.addParam("mulFactor","i32"),r.addLocal("s","i32"),r.addLocal("k","i32"),r.addLocal("j","i32"),r.addLocal("m","i32"),r.addLocal("mdiv2","i32"),r.addLocal("n","i32"),r.addLocal("pwm","i32"),r.addLocal("idx1","i32"),r.addLocal("idx2","i32");const s=r.getCodeBuilder(),c=s.i32_const(t.alloc(n)),d=s.i32_const(t.alloc(l)),u=s.i32_const(t.alloc(l));r.addCode(s.call(e+"__reversePermutation",s.getLocal("px"),s.getLocal("bits")),s.setLocal("n",s.i32_shl(s.i32_const(1),s.getLocal("bits"))),s.setLocal("s",s.i32_const(1)),s.block(s.loop(s.br_if(1,s.i32_gt_u(s.getLocal("s"),s.getLocal("bits"))),s.setLocal("m",s.i32_shl(s.i32_const(1),s.getLocal("s"))),s.setLocal("pwm",s.i32_add(s.i32_const(_),s.i32_mul(s.getLocal("s"),s.i32_const(n)))),s.setLocal("k",s.i32_const(0)),s.block(s.loop(s.br_if(1,s.i32_ge_u(s.getLocal("k"),s.getLocal("n"))),s.call(i+"_one",c),s.setLocal("mdiv2",s.i32_shr_u(s.getLocal("m"),s.i32_const(1))),s.setLocal("j",s.i32_const(0)),s.block(s.loop(s.br_if(1,s.i32_ge_u(s.getLocal("j"),s.getLocal("mdiv2"))),s.setLocal("idx1",s.i32_add(s.getLocal("px"),s.i32_mul(s.i32_add(s.getLocal("k"),s.getLocal("j")),s.i32_const(l)))),s.setLocal("idx2",s.i32_add(s.getLocal("idx1"),s.i32_mul(s.getLocal("mdiv2"),s.i32_const(l)))),s.call(o,s.getLocal("idx2"),c,d),s.call(a+"_copy",s.getLocal("idx1"),u),s.call(a+"_add",u,d,s.getLocal("idx1")),s.call(a+"_sub",u,d,s.getLocal("idx2")),s.call(i+"_mul",c,s.getLocal("pwm"),c),s.setLocal("j",s.i32_add(s.getLocal("j"),s.i32_const(1))),s.br(0))),s.setLocal("k",s.i32_add(s.getLocal("k"),s.getLocal("m"))),s.br(0))),s.setLocal("s",s.i32_add(s.getLocal("s"),s.i32_const(1))),s.br(0))),s.call(e+"__fftFinal",s.getLocal("px"),s.getLocal("bits"),s.getLocal("reverse"),s.getLocal("mulFactor")))}(),function(){const a=t.addFunction(e+"__log2");a.addParam("n","i32"),a.setReturnType("i32"),a.addLocal("bits","i32"),a.addLocal("aux","i32");const i=a.getCodeBuilder();a.addCode(i.setLocal("aux",i.i32_shr_u(i.getLocal("n"),i.i32_const(1)))),a.addCode(i.setLocal("bits",i.i32_const(0))),a.addCode(i.block(i.loop(i.br_if(1,i.i32_eqz(i.getLocal("aux"))),i.setLocal("aux",i.i32_shr_u(i.getLocal("aux"),i.i32_const(1))),i.setLocal("bits",i.i32_add(i.getLocal("bits"),i.i32_const(1))),i.br(0)))),a.addCode(i.if(i.i32_ne(i.getLocal("n"),i.i32_shl(i.i32_const(1),i.getLocal("bits"))),i.unreachable())),a.addCode(i.if(i.i32_gt_u(i.getLocal("bits"),i.i32_const(c)),i.unreachable())),a.addCode(i.getLocal("bits"))}(),E(),function(){const a=t.addFunction(e+"_ifft");a.addParam("px","i32"),a.addParam("n","i32"),a.addLocal("bits","i32"),a.addLocal("pInv2","i32");const i=a.getCodeBuilder();a.addCode(i.setLocal("bits",i.call(e+"__log2",i.getLocal("n"))),i.setLocal("pInv2",i.i32_add(i.i32_const(w),i.i32_mul(i.getLocal("bits"),i.i32_const(n)))),i.call(e+"_rawfft",i.getLocal("px"),i.getLocal("bits"),i.i32_const(1),i.getLocal("pInv2")))}(),function(){const r=t.addFunction(e+"_fftJoin");r.addParam("pBuff1","i32"),r.addParam("pBuff2","i32"),r.addParam("n","i32"),r.addParam("first","i32"),r.addParam("inc","i32"),r.addLocal("idx1","i32"),r.addLocal("idx2","i32"),r.addLocal("i","i32");const s=r.getCodeBuilder(),c=s.i32_const(t.alloc(n)),d=s.i32_const(t.alloc(l)),u=s.i32_const(t.alloc(l));r.addCode(s.call(i+"_copy",s.getLocal("first"),c),s.setLocal("i",s.i32_const(0)),s.block(s.loop(s.br_if(1,s.i32_eq(s.getLocal("i"),s.getLocal("n"))),s.setLocal("idx1",s.i32_add(s.getLocal("pBuff1"),s.i32_mul(s.getLocal("i"),s.i32_const(l)))),s.setLocal("idx2",s.i32_add(s.getLocal("pBuff2"),s.i32_mul(s.getLocal("i"),s.i32_const(l)))),s.call(o,s.getLocal("idx2"),c,d),s.call(a+"_copy",s.getLocal("idx1"),u),s.call(a+"_add",u,d,s.getLocal("idx1")),s.call(a+"_sub",u,d,s.getLocal("idx2")),s.call(i+"_mul",c,s.getLocal("inc"),c),s.setLocal("i",s.i32_add(s.getLocal("i"),s.i32_const(1))),s.br(0))))}(),function(){const r=t.addFunction(e+"_fftJoinExt");r.addParam("pBuff1","i32"),r.addParam("pBuff2","i32"),r.addParam("n","i32"),r.addParam("first","i32"),r.addParam("inc","i32"),r.addParam("totalBits","i32"),r.addLocal("idx1","i32"),r.addLocal("idx2","i32"),r.addLocal("i","i32"),r.addLocal("pShiftToM","i32");const s=r.getCodeBuilder(),c=s.i32_const(t.alloc(n)),d=s.i32_const(t.alloc(l));r.addCode(s.setLocal("pShiftToM",s.i32_add(s.i32_const(A),s.i32_mul(s.getLocal("totalBits"),s.i32_const(n)))),s.call(i+"_copy",s.getLocal("first"),c),s.setLocal("i",s.i32_const(0)),s.block(s.loop(s.br_if(1,s.i32_eq(s.getLocal("i"),s.getLocal("n"))),s.setLocal("idx1",s.i32_add(s.getLocal("pBuff1"),s.i32_mul(s.getLocal("i"),s.i32_const(l)))),s.setLocal("idx2",s.i32_add(s.getLocal("pBuff2"),s.i32_mul(s.getLocal("i"),s.i32_const(l)))),s.call(a+"_add",s.getLocal("idx1"),s.getLocal("idx2"),d),s.call(o,s.getLocal("idx2"),s.getLocal("pShiftToM"),s.getLocal("idx2")),s.call(a+"_add",s.getLocal("idx1"),s.getLocal("idx2"),s.getLocal("idx2")),s.call(o,s.getLocal("idx2"),c,s.getLocal("idx2")),s.call(a+"_copy",d,s.getLocal("idx1")),s.call(i+"_mul",c,s.getLocal("inc"),c),s.setLocal("i",s.i32_add(s.getLocal("i"),s.i32_const(1))),s.br(0))))}(),function(){const r=t.addFunction(e+"_fftJoinExtInv");r.addParam("pBuff1","i32"),r.addParam("pBuff2","i32"),r.addParam("n","i32"),r.addParam("first","i32"),r.addParam("inc","i32"),r.addParam("totalBits","i32"),r.addLocal("idx1","i32"),r.addLocal("idx2","i32"),r.addLocal("i","i32"),r.addLocal("pShiftToM","i32"),r.addLocal("pSConst","i32");const s=r.getCodeBuilder(),c=s.i32_const(t.alloc(n)),d=s.i32_const(t.alloc(l));r.addCode(s.setLocal("pShiftToM",s.i32_add(s.i32_const(A),s.i32_mul(s.getLocal("totalBits"),s.i32_const(n)))),s.setLocal("pSConst",s.i32_add(s.i32_const(C),s.i32_mul(s.getLocal("totalBits"),s.i32_const(n)))),s.call(i+"_copy",s.getLocal("first"),c),s.setLocal("i",s.i32_const(0)),s.block(s.loop(s.br_if(1,s.i32_eq(s.getLocal("i"),s.getLocal("n"))),s.setLocal("idx1",s.i32_add(s.getLocal("pBuff1"),s.i32_mul(s.getLocal("i"),s.i32_const(l)))),s.setLocal("idx2",s.i32_add(s.getLocal("pBuff2"),s.i32_mul(s.getLocal("i"),s.i32_const(l)))),s.call(o,s.getLocal("idx2"),c,d),s.call(a+"_sub",s.getLocal("idx1"),d,s.getLocal("idx2")),s.call(o,s.getLocal("idx2"),s.getLocal("pSConst"),s.getLocal("idx2")),s.call(o,s.getLocal("idx1"),s.getLocal("pShiftToM"),s.getLocal("idx1")),s.call(a+"_sub",d,s.getLocal("idx1"),s.getLocal("idx1")),s.call(o,s.getLocal("idx1"),s.getLocal("pSConst"),s.getLocal("idx1")),s.call(i+"_mul",c,s.getLocal("inc"),c),s.setLocal("i",s.i32_add(s.getLocal("i"),s.i32_const(1))),s.br(0))))}(),function(){const r=t.addFunction(e+"_fftMix");r.addParam("pBuff","i32"),r.addParam("n","i32"),r.addParam("exp","i32"),r.addLocal("nGroups","i32"),r.addLocal("nPerGroup","i32"),r.addLocal("nPerGroupDiv2","i32"),r.addLocal("pairOffset","i32"),r.addLocal("idx1","i32"),r.addLocal("idx2","i32"),r.addLocal("i","i32"),r.addLocal("j","i32"),r.addLocal("pwm","i32");const s=r.getCodeBuilder(),c=s.i32_const(t.alloc(n)),d=s.i32_const(t.alloc(l)),u=s.i32_const(t.alloc(l));r.addCode(s.setLocal("nPerGroup",s.i32_shl(s.i32_const(1),s.getLocal("exp"))),s.setLocal("nPerGroupDiv2",s.i32_shr_u(s.getLocal("nPerGroup"),s.i32_const(1))),s.setLocal("nGroups",s.i32_shr_u(s.getLocal("n"),s.getLocal("exp"))),s.setLocal("pairOffset",s.i32_mul(s.getLocal("nPerGroupDiv2"),s.i32_const(l))),s.setLocal("pwm",s.i32_add(s.i32_const(_),s.i32_mul(s.getLocal("exp"),s.i32_const(n)))),s.setLocal("i",s.i32_const(0)),s.block(s.loop(s.br_if(1,s.i32_eq(s.getLocal("i"),s.getLocal("nGroups"))),s.call(i+"_one",c),s.setLocal("j",s.i32_const(0)),s.block(s.loop(s.br_if(1,s.i32_eq(s.getLocal("j"),s.getLocal("nPerGroupDiv2"))),s.setLocal("idx1",s.i32_add(s.getLocal("pBuff"),s.i32_mul(s.i32_add(s.i32_mul(s.getLocal("i"),s.getLocal("nPerGroup")),s.getLocal("j")),s.i32_const(l)))),s.setLocal("idx2",s.i32_add(s.getLocal("idx1"),s.getLocal("pairOffset"))),s.call(o,s.getLocal("idx2"),c,d),s.call(a+"_copy",s.getLocal("idx1"),u),s.call(a+"_add",u,d,s.getLocal("idx1")),s.call(a+"_sub",u,d,s.getLocal("idx2")),s.call(i+"_mul",c,s.getLocal("pwm"),c),s.setLocal("j",s.i32_add(s.getLocal("j"),s.i32_const(1))),s.br(0))),s.setLocal("i",s.i32_add(s.getLocal("i"),s.i32_const(1))),s.br(0))))}(),function(){const i=t.addFunction(e+"_fftFinal");i.addParam("pBuff","i32"),i.addParam("n","i32"),i.addParam("factor","i32"),i.addLocal("idx1","i32"),i.addLocal("idx2","i32"),i.addLocal("i","i32"),i.addLocal("ndiv2","i32");const n=i.getCodeBuilder(),r=n.i32_const(t.alloc(l));i.addCode(n.setLocal("ndiv2",n.i32_shr_u(n.getLocal("n"),n.i32_const(1))),n.if(n.i32_and(n.getLocal("n"),n.i32_const(1)),n.call(o,n.i32_add(n.getLocal("pBuff"),n.i32_mul(n.getLocal("ndiv2"),n.i32_const(l))),n.getLocal("factor"),n.i32_add(n.getLocal("pBuff"),n.i32_mul(n.getLocal("ndiv2"),n.i32_const(l))))),n.setLocal("i",n.i32_const(0)),n.block(n.loop(n.br_if(1,n.i32_ge_u(n.getLocal("i"),n.getLocal("ndiv2"))),n.setLocal("idx1",n.i32_add(n.getLocal("pBuff"),n.i32_mul(n.getLocal("i"),n.i32_const(l)))),n.setLocal("idx2",n.i32_add(n.getLocal("pBuff"),n.i32_mul(n.i32_sub(n.i32_sub(n.getLocal("n"),n.i32_const(1)),n.getLocal("i")),n.i32_const(l)))),n.call(o,n.getLocal("idx2"),n.getLocal("factor"),r),n.call(o,n.getLocal("idx1"),n.getLocal("factor"),n.getLocal("idx2")),n.call(a+"_copy",r,n.getLocal("idx1")),n.setLocal("i",n.i32_add(n.getLocal("i"),n.i32_const(1))),n.br(0))))}(),function(){const r=t.addFunction(e+"_prepareLagrangeEvaluation");r.addParam("pBuff1","i32"),r.addParam("pBuff2","i32"),r.addParam("n","i32"),r.addParam("first","i32"),r.addParam("inc","i32"),r.addParam("totalBits","i32"),r.addLocal("idx1","i32"),r.addLocal("idx2","i32"),r.addLocal("i","i32"),r.addLocal("pShiftToM","i32"),r.addLocal("pSConst","i32");const s=r.getCodeBuilder(),c=s.i32_const(t.alloc(n)),d=s.i32_const(t.alloc(l));r.addCode(s.setLocal("pShiftToM",s.i32_add(s.i32_const(A),s.i32_mul(s.getLocal("totalBits"),s.i32_const(n)))),s.setLocal("pSConst",s.i32_add(s.i32_const(C),s.i32_mul(s.getLocal("totalBits"),s.i32_const(n)))),s.call(i+"_copy",s.getLocal("first"),c),s.setLocal("i",s.i32_const(0)),s.block(s.loop(s.br_if(1,s.i32_eq(s.getLocal("i"),s.getLocal("n"))),s.setLocal("idx1",s.i32_add(s.getLocal("pBuff1"),s.i32_mul(s.getLocal("i"),s.i32_const(l)))),s.setLocal("idx2",s.i32_add(s.getLocal("pBuff2"),s.i32_mul(s.getLocal("i"),s.i32_const(l)))),s.call(o,s.getLocal("idx1"),s.getLocal("pShiftToM"),d),s.call(a+"_sub",s.getLocal("idx2"),d,d),s.call(a+"_sub",s.getLocal("idx1"),s.getLocal("idx2"),s.getLocal("idx2")),s.call(o,d,s.getLocal("pSConst"),s.getLocal("idx1")),s.call(o,s.getLocal("idx2"),c,s.getLocal("idx2")),s.call(i+"_mul",c,s.getLocal("inc"),c),s.setLocal("i",s.i32_add(s.getLocal("i"),s.i32_const(1))),s.br(0))))}(),t.exportFunction(e+"_fft"),t.exportFunction(e+"_ifft"),t.exportFunction(e+"_rawfft"),t.exportFunction(e+"_fftJoin"),t.exportFunction(e+"_fftJoinExt"),t.exportFunction(e+"_fftJoinExtInv"),t.exportFunction(e+"_fftMix"),t.exportFunction(e+"_fftFinal"),t.exportFunction(e+"_prepareLagrangeEvaluation")},Dt=function(t,e,a){const i=8*t.modules[a].n64;return function(){const o=t.addFunction(e+"_zero");o.addParam("px","i32"),o.addParam("n","i32"),o.addLocal("lastp","i32"),o.addLocal("p","i32");const n=o.getCodeBuilder();o.addCode(n.setLocal("p",n.getLocal("px")),n.setLocal("lastp",n.i32_add(n.getLocal("px"),n.i32_mul(n.getLocal("n"),n.i32_const(i)))),n.block(n.loop(n.br_if(1,n.i32_eq(n.getLocal("p"),n.getLocal("lastp"))),n.call(a+"_zero",n.getLocal("p")),n.setLocal("p",n.i32_add(n.getLocal("p"),n.i32_const(i))),n.br(0))))}(),function(){const o=t.addFunction(e+"_constructLC");o.addParam("ppolynomials","i32"),o.addParam("psignals","i32"),o.addParam("nSignals","i32"),o.addParam("pres","i32"),o.addLocal("i","i32"),o.addLocal("j","i32"),o.addLocal("pp","i32"),o.addLocal("ps","i32"),o.addLocal("pd","i32"),o.addLocal("ncoefs","i32");const n=o.getCodeBuilder(),l=n.i32_const(t.alloc(i));o.addCode(n.setLocal("i",n.i32_const(0)),n.setLocal("pp",n.getLocal("ppolynomials")),n.setLocal("ps",n.getLocal("psignals")),n.block(n.loop(n.br_if(1,n.i32_eq(n.getLocal("i"),n.getLocal("nSignals"))),n.setLocal("ncoefs",n.i32_load(n.getLocal("pp"))),n.setLocal("pp",n.i32_add(n.getLocal("pp"),n.i32_const(4))),n.setLocal("j",n.i32_const(0)),n.block(n.loop(n.br_if(1,n.i32_eq(n.getLocal("j"),n.getLocal("ncoefs"))),n.setLocal("pd",n.i32_add(n.getLocal("pres"),n.i32_mul(n.i32_load(n.getLocal("pp")),n.i32_const(i)))),n.setLocal("pp",n.i32_add(n.getLocal("pp"),n.i32_const(4))),n.call(a+"_mul",n.getLocal("ps"),n.getLocal("pp"),l),n.call(a+"_add",l,n.getLocal("pd"),n.getLocal("pd")),n.setLocal("pp",n.i32_add(n.getLocal("pp"),n.i32_const(i))),n.setLocal("j",n.i32_add(n.getLocal("j"),n.i32_const(1))),n.br(0))),n.setLocal("ps",n.i32_add(n.getLocal("ps"),n.i32_const(i))),n.setLocal("i",n.i32_add(n.getLocal("i"),n.i32_const(1))),n.br(0))))}(),t.exportFunction(e+"_zero"),t.exportFunction(e+"_constructLC"),e},Nt=function(t,e,a){const i=8*t.modules[a].n64;return function(){const o=t.addFunction(e+"_buildABC");o.addParam("pCoefs","i32"),o.addParam("nCoefs","i32"),o.addParam("pWitness","i32"),o.addParam("pA","i32"),o.addParam("pB","i32"),o.addParam("pC","i32"),o.addParam("offsetOut","i32"),o.addParam("nOut","i32"),o.addParam("offsetWitness","i32"),o.addParam("nWitness","i32"),o.addLocal("it","i32"),o.addLocal("ita","i32"),o.addLocal("itb","i32"),o.addLocal("last","i32"),o.addLocal("m","i32"),o.addLocal("c","i32"),o.addLocal("s","i32"),o.addLocal("pOut","i32");const n=o.getCodeBuilder(),l=n.i32_const(t.alloc(i));o.addCode(n.setLocal("ita",n.getLocal("pA")),n.setLocal("itb",n.getLocal("pB")),n.setLocal("last",n.i32_add(n.getLocal("pA"),n.i32_mul(n.getLocal("nOut"),n.i32_const(i)))),n.block(n.loop(n.br_if(1,n.i32_eq(n.getLocal("ita"),n.getLocal("last"))),n.call(a+"_zero",n.getLocal("ita")),n.call(a+"_zero",n.getLocal("itb")),n.setLocal("ita",n.i32_add(n.getLocal("ita"),n.i32_const(i))),n.setLocal("itb",n.i32_add(n.getLocal("itb"),n.i32_const(i))),n.br(0))),n.setLocal("it",n.getLocal("pCoefs")),n.setLocal("last",n.i32_add(n.getLocal("pCoefs"),n.i32_mul(n.getLocal("nCoefs"),n.i32_const(i+12)))),n.block(n.loop(n.br_if(1,n.i32_eq(n.getLocal("it"),n.getLocal("last"))),n.setLocal("s",n.i32_load(n.getLocal("it"),8)),n.if(n.i32_or(n.i32_lt_u(n.getLocal("s"),n.getLocal("offsetWitness")),n.i32_ge_u(n.getLocal("s"),n.i32_add(n.getLocal("offsetWitness"),n.getLocal("nWitness")))),[...n.setLocal("it",n.i32_add(n.getLocal("it"),n.i32_const(i+12))),...n.br(1)]),n.setLocal("m",n.i32_load(n.getLocal("it"))),n.if(n.i32_eq(n.getLocal("m"),n.i32_const(0)),n.setLocal("pOut",n.getLocal("pA")),n.if(n.i32_eq(n.getLocal("m"),n.i32_const(1)),n.setLocal("pOut",n.getLocal("pB")),[...n.setLocal("it",n.i32_add(n.getLocal("it"),n.i32_const(i+12))),...n.br(1)])),n.setLocal("c",n.i32_load(n.getLocal("it"),4)),n.if(n.i32_or(n.i32_lt_u(n.getLocal("c"),n.getLocal("offsetOut")),n.i32_ge_u(n.getLocal("c"),n.i32_add(n.getLocal("offsetOut"),n.getLocal("nOut")))),[...n.setLocal("it",n.i32_add(n.getLocal("it"),n.i32_const(i+12))),...n.br(1)]),n.setLocal("pOut",n.i32_add(n.getLocal("pOut"),n.i32_mul(n.i32_sub(n.getLocal("c"),n.getLocal("offsetOut")),n.i32_const(i)))),n.call(a+"_mul",n.i32_add(n.getLocal("pWitness"),n.i32_mul(n.i32_sub(n.getLocal("s"),n.getLocal("offsetWitness")),n.i32_const(i))),n.i32_add(n.getLocal("it"),n.i32_const(12)),l),n.call(a+"_add",n.getLocal("pOut"),l,n.getLocal("pOut")),n.setLocal("it",n.i32_add(n.getLocal("it"),n.i32_const(i+12))),n.br(0))),n.setLocal("ita",n.getLocal("pA")),n.setLocal("itb",n.getLocal("pB")),n.setLocal("it",n.getLocal("pC")),n.setLocal("last",n.i32_add(n.getLocal("pA"),n.i32_mul(n.getLocal("nOut"),n.i32_const(i)))),n.block(n.loop(n.br_if(1,n.i32_eq(n.getLocal("ita"),n.getLocal("last"))),n.call(a+"_mul",n.getLocal("ita"),n.getLocal("itb"),n.getLocal("it")),n.setLocal("ita",n.i32_add(n.getLocal("ita"),n.i32_const(i))),n.setLocal("itb",n.i32_add(n.getLocal("itb"),n.i32_const(i))),n.setLocal("it",n.i32_add(n.getLocal("it"),n.i32_const(i))),n.br(0))))}(),function(){const o=t.addFunction(e+"_joinABC");o.addParam("pA","i32"),o.addParam("pB","i32"),o.addParam("pC","i32"),o.addParam("n","i32"),o.addParam("pP","i32"),o.addLocal("ita","i32"),o.addLocal("itb","i32"),o.addLocal("itc","i32"),o.addLocal("itp","i32"),o.addLocal("last","i32");const n=o.getCodeBuilder(),l=n.i32_const(t.alloc(i));o.addCode(n.setLocal("ita",n.getLocal("pA")),n.setLocal("itb",n.getLocal("pB")),n.setLocal("itc",n.getLocal("pC")),n.setLocal("itp",n.getLocal("pP")),n.setLocal("last",n.i32_add(n.getLocal("pA"),n.i32_mul(n.getLocal("n"),n.i32_const(i)))),n.block(n.loop(n.br_if(1,n.i32_eq(n.getLocal("ita"),n.getLocal("last"))),n.call(a+"_mul",n.getLocal("ita"),n.getLocal("itb"),l),n.call(a+"_sub",l,n.getLocal("itc"),n.getLocal("itp")),n.setLocal("ita",n.i32_add(n.getLocal("ita"),n.i32_const(i))),n.setLocal("itb",n.i32_add(n.getLocal("itb"),n.i32_const(i))),n.setLocal("itc",n.i32_add(n.getLocal("itc"),n.i32_const(i))),n.setLocal("itp",n.i32_add(n.getLocal("itp"),n.i32_const(i))),n.br(0))))}(),function(){const o=t.addFunction(e+"_batchAdd");o.addParam("pa","i32"),o.addParam("pb","i32"),o.addParam("n","i32"),o.addParam("pr","i32"),o.addLocal("ita","i32"),o.addLocal("itb","i32"),o.addLocal("itr","i32"),o.addLocal("last","i32");const n=o.getCodeBuilder();o.addCode(n.setLocal("ita",n.getLocal("pa")),n.setLocal("itb",n.getLocal("pb")),n.setLocal("itr",n.getLocal("pr")),n.setLocal("last",n.i32_add(n.getLocal("pa"),n.i32_mul(n.getLocal("n"),n.i32_const(i)))),n.block(n.loop(n.br_if(1,n.i32_eq(n.getLocal("ita"),n.getLocal("last"))),n.call(a+"_add",n.getLocal("ita"),n.getLocal("itb"),n.getLocal("itr")),n.setLocal("ita",n.i32_add(n.getLocal("ita"),n.i32_const(i))),n.setLocal("itb",n.i32_add(n.getLocal("itb"),n.i32_const(i))),n.setLocal("itr",n.i32_add(n.getLocal("itr"),n.i32_const(i))),n.br(0))))}(),t.exportFunction(e+"_buildABC"),t.exportFunction(e+"_joinABC"),t.exportFunction(e+"_batchAdd"),e},$t=function(t,e,a,i,o,n,l,r){const s=t.addFunction(e);s.addParam("pIn","i32"),s.addParam("n","i32"),s.addParam("pFirst","i32"),s.addParam("pInc","i32"),s.addParam("pOut","i32"),s.addLocal("pOldFree","i32"),s.addLocal("i","i32"),s.addLocal("pFrom","i32"),s.addLocal("pTo","i32");const c=s.getCodeBuilder(),d=c.i32_const(t.alloc(l));s.addCode(c.setLocal("pFrom",c.getLocal("pIn")),c.setLocal("pTo",c.getLocal("pOut"))),s.addCode(c.call(i+"_copy",c.getLocal("pFirst"),d)),s.addCode(c.setLocal("i",c.i32_const(0)),c.block(c.loop(c.br_if(1,c.i32_eq(c.getLocal("i"),c.getLocal("n"))),c.call(r,c.getLocal("pFrom"),d,c.getLocal("pTo")),c.setLocal("pFrom",c.i32_add(c.getLocal("pFrom"),c.i32_const(o))),c.setLocal("pTo",c.i32_add(c.getLocal("pTo"),c.i32_const(n))),c.call(i+"_mul",d,c.getLocal("pInc"),d),c.setLocal("i",c.i32_add(c.getLocal("i"),c.i32_const(1))),c.br(0)))),t.exportFunction(e)};const Vt=V,Kt=At,jt=Ft,Ht=Bt,Zt=Gt,Wt=zt,Yt=Rt,Jt=Dt,Xt=Nt,te=$t,{bitLength:ee,modInv:ae,isOdd:ie,isNegative:oe}=W;const ne=V,le=At,re=Ft,se=Bt,ce=Gt,de=zt,ue=Rt,ge=Dt,fe=Nt,he=$t,{bitLength:_e,isOdd:pe,isNegative:me}=W;var we=function(t,e){const a=e||"bn128";if(t.modules[a])return a;const i=21888242871839275222246405745257275088696311157297823662689037894645226208583n,o=21888242871839275222246405745257275088548364400416034343698204186575808495617n,n=Math.floor((ee(i-1n)-1)/64)+1,l=8*n,r=l,s=l,c=2*s,d=12*s,u=t.alloc(Vt.bigInt2BytesLE(o,r)),g=Kt(t,i,"f1m");jt(t,o,"fr","frm");const f=t.alloc(Vt.bigInt2BytesLE(L(3n),s)),h=Wt(t,"g1m","f1m",f);Yt(t,"frm","frm","frm","frm_mul"),Jt(t,"pol","frm"),Xt(t,"qap","frm");const _=Ht(t,"f1m_neg","f2m","f1m"),p=t.alloc([...Vt.bigInt2BytesLE(L(19485874751759354771024239261021720505790618469301721065564631296452457478373n),s),...Vt.bigInt2BytesLE(L(266929791119991161246907387137283842545076965332900288569378510910307636690n),s)]),m=Wt(t,"g2m","f2m",p);function w(e,a){const i=t.addFunction(e);i.addParam("pG","i32"),i.addParam("pFr","i32"),i.addParam("pr","i32");const o=i.getCodeBuilder(),n=o.i32_const(t.alloc(l));i.addCode(o.call("frm_fromMontgomery",o.getLocal("pFr"),n),o.call(a,o.getLocal("pG"),n,o.i32_const(l),o.getLocal("pr"))),t.exportFunction(e)}function L(t){return BigInt(t)*(1n<0n;)ie(e)?a.push(1):a.push(0),e>>=1n;return a}(29793968203157093288n),z=t.alloc(U),Q=3*c,q=U.length-1,M=U.reduce(((t,e)=>t+(0!=e?1:0)),0),k=6*l,R=3*l*2+(M+q+1)*Q;t.modules[a]={n64:n,pG1gen:y,pG1zero:C,pG1b:f,pG2gen:F,pG2zero:E,pG2b:p,pq:t.modules.f1m.pq,pr:u,pOneT:v,prePSize:k,preQSize:R,r:o.toString(),q:i.toString()};const D=4965661367192848881n;function N(e){const o=[[[1n,0n],[1n,0n],[1n,0n],[1n,0n],[1n,0n],[1n,0n],[1n,0n],[1n,0n],[1n,0n],[1n,0n],[1n,0n],[1n,0n]],[[1n,0n],[8376118865763821496583973867626364092589906065868298776909617916018768340080n,16469823323077808223889137241176536799009286646108169935659301613961712198316n],[21888242871839275220042445260109153167277707414472061641714758635765020556617n,0n],[11697423496358154304825782922584725312912383441159505038794027105778954184319n,303847389135065887422783454877609941456349188919719272345083954437860409601n],[21888242871839275220042445260109153167277707414472061641714758635765020556616n,0n],[3321304630594332808241809054958361220322477375291206261884409189760185844239n,5722266937896532885780051958958348231143373700109372999374820235121374419868n],[21888242871839275222246405745257275088696311157297823662689037894645226208582n,0n],[13512124006075453725662431877630910996106405091429524885779419978626457868503n,5418419548761466998357268504080738289687024511189653727029736280683514010267n],[2203960485148121921418603742825762020974279258880205651966n,0n],[10190819375481120917420622822672549775783927716138318623895010788866272024264n,21584395482704209334823622290379665147239961968378104390343953940207365798982n],[2203960485148121921418603742825762020974279258880205651967n,0n],[18566938241244942414004596690298913868373833782006617400804628704885040364344n,16165975933942742336466353786298926857552937457188450663314217659523851788715n]]],n=[[[1n,0n],[1n,0n],[1n,0n],[1n,0n],[1n,0n],[1n,0n]],[[1n,0n],[21575463638280843010398324269430826099269044274347216827212613867836435027261n,10307601595873709700152284273816112264069230130616436755625194854815875713954n],[21888242871839275220042445260109153167277707414472061641714758635765020556616n,0n],[3772000881919853776433695186713858239009073593817195771773381919316419345261n,2236595495967245188281701248203181795121068902605861227855261137820944008926n],[2203960485148121921418603742825762020974279258880205651966n,0n],[18429021223477853657660792034369865839114504446431234726392080002137598044644n,9344045779998320333812420223237981029506012124075525679208581902008406485703n]],[[1n,0n],[2581911344467009335267311115468803099551665605076196740867805258568234346338n,19937756971775647987995932169929341994314640652964949448313374472400716661030n],[2203960485148121921418603742825762020974279258880205651966n,0n],[5324479202449903542726783395506214481928257762400643279780343368557297135718n,16208900380737693084919495127334387981393726419856888799917914180988844123039n],[21888242871839275220042445260109153167277707414472061641714758635765020556616n,0n],[13981852324922362344252311234282257507216387789820983642040889267519694726527n,7629828391165209371577384193250820201684255241773809077146787135900891633097n]]],l=t.addFunction(a+"__frobeniusMap"+e);l.addParam("x","i32"),l.addParam("r","i32");const r=l.getCodeBuilder();for(let a=0;a<6;a++){const i=0==a?r.getLocal("x"):r.i32_add(r.getLocal("x"),r.i32_const(a*c)),u=i,f=r.i32_add(r.getLocal("x"),r.i32_const(a*c+s)),h=0==a?r.getLocal("r"):r.i32_add(r.getLocal("r"),r.i32_const(a*c)),p=h,m=r.i32_add(r.getLocal("r"),r.i32_const(a*c+s)),w=d(o[Math.floor(a/3)][e%12],n[a%3][e%6]),b=t.alloc([...Vt.bigInt2BytesLE(L(w[0]),32),...Vt.bigInt2BytesLE(L(w[1]),32)]);e%2==1?l.addCode(r.call(g+"_copy",u,p),r.call(g+"_neg",f,m),r.call(_+"_mul",h,r.i32_const(b),h)):l.addCode(r.call(_+"_mul",i,r.i32_const(b),h))}function d(t,e){const a=BigInt(t[0]),o=BigInt(t[1]),n=BigInt(e[0]),l=BigInt(e[1]),r=[(a*n-o*l)%i,(a*l+o*n)%i];return oe(r[0])&&(r[0]=r[0]+i),r}}function $(e,i){const o=function(t){let e=t;const a=[];for(;e>0n;){if(ie(e)){const t=2-Number(e%4n);a.push(t),e-=BigInt(t)}else a.push(0);e>>=1n}return a}(e).map((t=>-1==t?255:t)),n=t.alloc(o),l=t.addFunction(a+"__cyclotomicExp_"+i);l.addParam("x","i32"),l.addParam("r","i32"),l.addLocal("bit","i32"),l.addLocal("i","i32");const r=l.getCodeBuilder(),s=r.getLocal("x"),c=r.getLocal("r"),u=r.i32_const(t.alloc(d));l.addCode(r.call(T+"_conjugate",s,u),r.call(T+"_one",c),r.if(r.teeLocal("bit",r.i32_load8_s(r.i32_const(o.length-1),n)),r.if(r.i32_eq(r.getLocal("bit"),r.i32_const(1)),r.call(T+"_mul",c,s,c),r.call(T+"_mul",c,u,c))),r.setLocal("i",r.i32_const(o.length-2)),r.block(r.loop(r.call(a+"__cyclotomicSquare",c,c),r.if(r.teeLocal("bit",r.i32_load8_s(r.getLocal("i"),n)),r.if(r.i32_eq(r.getLocal("bit"),r.i32_const(1)),r.call(T+"_mul",c,s,c),r.call(T+"_mul",c,u,c))),r.br_if(1,r.i32_eqz(r.getLocal("i"))),r.setLocal("i",r.i32_sub(r.getLocal("i"),r.i32_const(1))),r.br(0))))}function V(){!function(){const e=t.addFunction(a+"__cyclotomicSquare");e.addParam("x","i32"),e.addParam("r","i32");const i=e.getCodeBuilder(),o=i.getLocal("x"),n=i.i32_add(i.getLocal("x"),i.i32_const(c)),l=i.i32_add(i.getLocal("x"),i.i32_const(2*c)),r=i.i32_add(i.getLocal("x"),i.i32_const(3*c)),s=i.i32_add(i.getLocal("x"),i.i32_const(4*c)),d=i.i32_add(i.getLocal("x"),i.i32_const(5*c)),u=i.getLocal("r"),g=i.i32_add(i.getLocal("r"),i.i32_const(c)),f=i.i32_add(i.getLocal("r"),i.i32_const(2*c)),h=i.i32_add(i.getLocal("r"),i.i32_const(3*c)),p=i.i32_add(i.getLocal("r"),i.i32_const(4*c)),m=i.i32_add(i.getLocal("r"),i.i32_const(5*c)),w=i.i32_const(t.alloc(c)),L=i.i32_const(t.alloc(c)),b=i.i32_const(t.alloc(c)),y=i.i32_const(t.alloc(c)),A=i.i32_const(t.alloc(c)),C=i.i32_const(t.alloc(c)),I=i.i32_const(t.alloc(c)),F=i.i32_const(t.alloc(c));e.addCode(i.call(_+"_mul",o,s,I),i.call(_+"_mul",s,i.i32_const(B),w),i.call(_+"_add",o,w,w),i.call(_+"_add",o,s,F),i.call(_+"_mul",F,w,w),i.call(_+"_mul",i.i32_const(B),I,F),i.call(_+"_add",I,F,F),i.call(_+"_sub",w,F,w),i.call(_+"_add",I,I,L),i.call(_+"_mul",r,l,I),i.call(_+"_mul",l,i.i32_const(B),b),i.call(_+"_add",r,b,b),i.call(_+"_add",r,l,F),i.call(_+"_mul",F,b,b),i.call(_+"_mul",i.i32_const(B),I,F),i.call(_+"_add",I,F,F),i.call(_+"_sub",b,F,b),i.call(_+"_add",I,I,y),i.call(_+"_mul",n,d,I),i.call(_+"_mul",d,i.i32_const(B),A),i.call(_+"_add",n,A,A),i.call(_+"_add",n,d,F),i.call(_+"_mul",F,A,A),i.call(_+"_mul",i.i32_const(B),I,F),i.call(_+"_add",I,F,F),i.call(_+"_sub",A,F,A),i.call(_+"_add",I,I,C),i.call(_+"_sub",w,o,u),i.call(_+"_add",u,u,u),i.call(_+"_add",w,u,u),i.call(_+"_add",L,s,p),i.call(_+"_add",p,p,p),i.call(_+"_add",L,p,p),i.call(_+"_mul",C,i.i32_const(P),F),i.call(_+"_add",F,r,h),i.call(_+"_add",h,h,h),i.call(_+"_add",F,h,h),i.call(_+"_sub",A,l,f),i.call(_+"_add",f,f,f),i.call(_+"_add",A,f,f),i.call(_+"_sub",b,n,g),i.call(_+"_add",g,g,g),i.call(_+"_add",b,g,g),i.call(_+"_add",y,d,m),i.call(_+"_add",m,m,m),i.call(_+"_add",y,m,m))}(),$(D,"w0");const e=t.addFunction(a+"__finalExponentiationLastChunk");e.addParam("x","i32"),e.addParam("r","i32");const i=e.getCodeBuilder(),o=i.getLocal("x"),n=i.getLocal("r"),l=i.i32_const(t.alloc(d)),r=i.i32_const(t.alloc(d)),s=i.i32_const(t.alloc(d)),u=i.i32_const(t.alloc(d)),g=i.i32_const(t.alloc(d)),f=i.i32_const(t.alloc(d)),h=i.i32_const(t.alloc(d)),p=i.i32_const(t.alloc(d)),m=i.i32_const(t.alloc(d)),w=i.i32_const(t.alloc(d)),L=i.i32_const(t.alloc(d)),b=i.i32_const(t.alloc(d)),y=i.i32_const(t.alloc(d)),A=i.i32_const(t.alloc(d)),C=i.i32_const(t.alloc(d)),I=i.i32_const(t.alloc(d)),F=i.i32_const(t.alloc(d)),x=i.i32_const(t.alloc(d)),E=i.i32_const(t.alloc(d)),v=i.i32_const(t.alloc(d)),S=i.i32_const(t.alloc(d));e.addCode(i.call(a+"__cyclotomicExp_w0",o,l),i.call(T+"_conjugate",l,l),i.call(a+"__cyclotomicSquare",l,r),i.call(a+"__cyclotomicSquare",r,s),i.call(T+"_mul",s,r,u),i.call(a+"__cyclotomicExp_w0",u,g),i.call(T+"_conjugate",g,g),i.call(a+"__cyclotomicSquare",g,f),i.call(a+"__cyclotomicExp_w0",f,h),i.call(T+"_conjugate",h,h),i.call(T+"_conjugate",u,p),i.call(T+"_conjugate",h,m),i.call(T+"_mul",m,g,w),i.call(T+"_mul",w,p,L),i.call(T+"_mul",L,r,b),i.call(T+"_mul",L,g,y),i.call(T+"_mul",y,o,A),i.call(a+"__frobeniusMap1",b,C),i.call(T+"_mul",C,A,I),i.call(a+"__frobeniusMap2",L,F),i.call(T+"_mul",F,I,x),i.call(T+"_conjugate",o,E),i.call(T+"_mul",E,b,v),i.call(a+"__frobeniusMap3",v,S),i.call(T+"_mul",S,x,n))}const K=t.alloc(k),j=t.alloc(R);function H(e){const i=t.addFunction(a+"_pairingEq"+e);for(let t=0;t0n;)pe(e)?a.push(1):a.push(0),e>>=1n;return a}(0xd201000000010000n),U=t.alloc(T),z=3*s,Q=T.length-1,q=T.reduce(((t,e)=>t+(0!=e?1:0)),0),M=6*l,k=3*l*2+(q+Q+1)*z,R=15132376222941642752n;function D(e){const a=[[[1n,0n],[1n,0n],[1n,0n],[1n,0n],[1n,0n],[1n,0n],[1n,0n],[1n,0n],[1n,0n],[1n,0n],[1n,0n],[1n,0n]],[[1n,0n],[3850754370037169011952147076051364057158807420970682438676050522613628423219637725072182697113062777891589506424760n,151655185184498381465642749684540099398075398968325446656007613510403227271200139370504932015952886146304766135027n],[793479390729215512621379701633421447060886740281060493010456487427281649075476305620758731620351n,0n],[2973677408986561043442465346520108879172042883009249989176415018091420807192182638567116318576472649347015917690530n,1028732146235106349975324479215795277384839936929757896155643118032610843298655225875571310552543014690878354869257n],[793479390729215512621379701633421447060886740281060493010456487427281649075476305620758731620350n,0n],[3125332594171059424908108096204648978570118281977575435832422631601824034463382777937621250592425535493320683825557n,877076961050607968509681729531255177986764537961432449499635504522207616027455086505066378536590128544573588734230n],[4002409555221667393417789825735904156556882819939007885332058136124031650490837864442687629129015664037894272559786n,0n],[151655185184498381465642749684540099398075398968325446656007613510403227271200139370504932015952886146304766135027n,3850754370037169011952147076051364057158807420970682438676050522613628423219637725072182697113062777891589506424760n],[4002409555221667392624310435006688643935503118305586438271171395842971157480381377015405980053539358417135540939436n,0n],[1028732146235106349975324479215795277384839936929757896155643118032610843298655225875571310552543014690878354869257n,2973677408986561043442465346520108879172042883009249989176415018091420807192182638567116318576472649347015917690530n],[4002409555221667392624310435006688643935503118305586438271171395842971157480381377015405980053539358417135540939437n,0n],[877076961050607968509681729531255177986764537961432449499635504522207616027455086505066378536590128544573588734230n,3125332594171059424908108096204648978570118281977575435832422631601824034463382777937621250592425535493320683825557n]]],o=[[[1n,0n],[1n,0n],[1n,0n],[1n,0n],[1n,0n],[1n,0n]],[[1n,0n],[0n,4002409555221667392624310435006688643935503118305586438271171395842971157480381377015405980053539358417135540939436n],[793479390729215512621379701633421447060886740281060493010456487427281649075476305620758731620350n,0n],[0n,1n],[4002409555221667392624310435006688643935503118305586438271171395842971157480381377015405980053539358417135540939436n,0n],[0n,793479390729215512621379701633421447060886740281060493010456487427281649075476305620758731620350n]],[[1n,0n],[4002409555221667392624310435006688643935503118305586438271171395842971157480381377015405980053539358417135540939437n,0n],[4002409555221667392624310435006688643935503118305586438271171395842971157480381377015405980053539358417135540939436n,0n],[4002409555221667393417789825735904156556882819939007885332058136124031650490837864442687629129015664037894272559786n,0n],[793479390729215512621379701633421447060886740281060493010456487427281649075476305620758731620350n,0n],[793479390729215512621379701633421447060886740281060493010456487427281649075476305620758731620351n,0n]]],n=t.addFunction(O+"_frobeniusMap"+e);n.addParam("x","i32"),n.addParam("r","i32");const c=n.getCodeBuilder();for(let i=0;i<6;i++){const u=0==i?c.getLocal("x"):c.i32_add(c.getLocal("x"),c.i32_const(i*s)),g=u,f=c.i32_add(c.getLocal("x"),c.i32_const(i*s+r)),_=0==i?c.getLocal("r"):c.i32_add(c.getLocal("r"),c.i32_const(i*s)),p=_,w=c.i32_add(c.getLocal("r"),c.i32_const(i*s+r)),L=d(a[Math.floor(i/3)][e%12],o[i%3][e%6]),b=t.alloc([...ne.bigInt2BytesLE(y(L[0]),l),...ne.bigInt2BytesLE(y(L[1]),l)]);e%2==1?n.addCode(c.call(h+"_copy",g,p),c.call(h+"_neg",f,w),c.call(m+"_mul",_,c.i32_const(b),_)):n.addCode(c.call(m+"_mul",u,c.i32_const(b),_))}function d(t,e){const a=t[0],o=t[1],n=e[0],l=e[1],r=[(a*n-o*l)%i,(a*l+o*n)%i];return me(r[0])&&(r[0]=r[0]+i),r}}function N(e,i,o){const n=function(t){let e=t;const a=[];for(;e>0n;){if(pe(e)){const t=2-Number(e%4n);a.push(t),e-=BigInt(t)}else a.push(0);e>>=1n}return a}(e).map((t=>-1==t?255:t)),l=t.alloc(n),r=t.addFunction(a+"__cyclotomicExp_"+o);r.addParam("x","i32"),r.addParam("r","i32"),r.addLocal("bit","i32"),r.addLocal("i","i32");const s=r.getCodeBuilder(),d=s.getLocal("x"),u=s.getLocal("r"),g=s.i32_const(t.alloc(c));r.addCode(s.call(O+"_conjugate",d,g),s.call(O+"_one",u),s.if(s.teeLocal("bit",s.i32_load8_s(s.i32_const(n.length-1),l)),s.if(s.i32_eq(s.getLocal("bit"),s.i32_const(1)),s.call(O+"_mul",u,d,u),s.call(O+"_mul",u,g,u))),s.setLocal("i",s.i32_const(n.length-2)),s.block(s.loop(s.call(a+"__cyclotomicSquare",u,u),s.if(s.teeLocal("bit",s.i32_load8_s(s.getLocal("i"),l)),s.if(s.i32_eq(s.getLocal("bit"),s.i32_const(1)),s.call(O+"_mul",u,d,u),s.call(O+"_mul",u,g,u))),s.br_if(1,s.i32_eqz(s.getLocal("i"))),s.setLocal("i",s.i32_sub(s.getLocal("i"),s.i32_const(1))),s.br(0)))),i&&r.addCode(s.call(O+"_conjugate",u,u))}t.modules[a]={n64q:n,n64r:d,n8q:l,n8r:u,pG1gen:C,pG1zero:F,pG1b:_,pG2gen:E,pG2zero:B,pG2b:w,pq:t.modules.f1m.pq,pr:f,pOneT:S,r:o,q:i,prePSize:M,preQSize:k},function(){const e=t.addFunction(G+"_mul1");e.addParam("pA","i32"),e.addParam("pC1","i32"),e.addParam("pR","i32");const a=e.getCodeBuilder(),i=a.getLocal("pA"),o=a.i32_add(a.getLocal("pA"),a.i32_const(2*r)),n=a.i32_add(a.getLocal("pA"),a.i32_const(4*r)),l=a.getLocal("pC1"),s=a.getLocal("pR"),c=a.i32_add(a.getLocal("pR"),a.i32_const(2*r)),d=a.i32_add(a.getLocal("pR"),a.i32_const(4*r)),u=a.i32_const(t.alloc(2*r)),g=a.i32_const(t.alloc(2*r));e.addCode(a.call(m+"_add",i,o,u),a.call(m+"_add",o,n,g),a.call(m+"_mul",o,l,d),a.call(m+"_mul",g,l,s),a.call(m+"_sub",s,d,s),a.call(m+"_mulNR",s,s),a.call(m+"_mul",u,l,c),a.call(m+"_sub",c,d,c))}(),function(){const e=t.addFunction(G+"_mul01");e.addParam("pA","i32"),e.addParam("pC0","i32"),e.addParam("pC1","i32"),e.addParam("pR","i32");const a=e.getCodeBuilder(),i=a.getLocal("pA"),o=a.i32_add(a.getLocal("pA"),a.i32_const(2*r)),n=a.i32_add(a.getLocal("pA"),a.i32_const(4*r)),l=a.getLocal("pC0"),s=a.getLocal("pC1"),c=a.getLocal("pR"),d=a.i32_add(a.getLocal("pR"),a.i32_const(2*r)),u=a.i32_add(a.getLocal("pR"),a.i32_const(4*r)),g=a.i32_const(t.alloc(2*r)),f=a.i32_const(t.alloc(2*r)),h=a.i32_const(t.alloc(2*r)),_=a.i32_const(t.alloc(2*r));e.addCode(a.call(m+"_mul",i,l,g),a.call(m+"_mul",o,s,f),a.call(m+"_add",i,o,h),a.call(m+"_add",i,n,_),a.call(m+"_add",o,n,c),a.call(m+"_mul",c,s,c),a.call(m+"_sub",c,f,c),a.call(m+"_mulNR",c,c),a.call(m+"_add",c,g,c),a.call(m+"_add",l,s,d),a.call(m+"_mul",d,h,d),a.call(m+"_sub",d,g,d),a.call(m+"_sub",d,f,d),a.call(m+"_mul",_,l,u),a.call(m+"_sub",u,g,u),a.call(m+"_add",u,f,u))}(),function(){const e=t.addFunction(O+"_mul014");e.addParam("pA","i32"),e.addParam("pC0","i32"),e.addParam("pC1","i32"),e.addParam("pC4","i32"),e.addParam("pR","i32");const a=e.getCodeBuilder(),i=a.getLocal("pA"),o=a.i32_add(a.getLocal("pA"),a.i32_const(6*r)),n=a.getLocal("pC0"),l=a.getLocal("pC1"),s=a.getLocal("pC4"),c=a.i32_const(t.alloc(6*r)),d=a.i32_const(t.alloc(6*r)),u=a.i32_const(t.alloc(2*r)),g=a.getLocal("pR"),f=a.i32_add(a.getLocal("pR"),a.i32_const(6*r));e.addCode(a.call(G+"_mul01",i,n,l,c),a.call(G+"_mul1",o,s,d),a.call(m+"_add",l,s,u),a.call(G+"_add",o,i,f),a.call(G+"_mul01",f,n,u,f),a.call(G+"_sub",f,c,f),a.call(G+"_sub",f,d,f),a.call(G+"_copy",d,g),a.call(G+"_mulNR",g,g),a.call(G+"_add",g,c,g))}(),function(){const e=t.addFunction(a+"_ell");e.addParam("pP","i32"),e.addParam("pCoefs","i32"),e.addParam("pF","i32");const i=e.getCodeBuilder(),o=i.getLocal("pP"),n=i.i32_add(i.getLocal("pP"),i.i32_const(l)),s=i.getLocal("pF"),c=i.getLocal("pCoefs"),d=i.i32_add(i.getLocal("pCoefs"),i.i32_const(r)),u=i.i32_add(i.getLocal("pCoefs"),i.i32_const(2*r)),g=i.i32_add(i.getLocal("pCoefs"),i.i32_const(3*r)),f=i.i32_add(i.getLocal("pCoefs"),i.i32_const(4*r)),_=t.alloc(2*r),p=i.i32_const(_),m=i.i32_const(_),w=i.i32_const(_+r),L=t.alloc(2*r),b=i.i32_const(L),y=i.i32_const(L),A=i.i32_const(L+r);e.addCode(i.call(h+"_mul",c,n,m),i.call(h+"_mul",d,n,w),i.call(h+"_mul",u,o,y),i.call(h+"_mul",g,o,A),i.call(O+"_mul014",s,f,b,p,s))}();const $=t.alloc(M),V=t.alloc(k);function K(e){const i=t.addFunction(a+"_pairingEq"+e);for(let t=0;t>=BigInt(32)):l+2<=e?(n.setUint16(l,Number(a&BigInt(65535)),!0),l+=2,a>>=BigInt(16)):(n.setUint8(l,Number(a&BigInt(255)),!0),l+=1,a>>=BigInt(8));if(a)throw new Error("Number does not fit in this length");return i}const ye=[];for(let t=0;t<256;t++)ye[t]=Ae(t,8);function Ae(t,e){let a=0,i=t;for(let t=0;t>=1;return a}function Ce(t,e){return(ye[t>>>24]|ye[t>>>16&255]<<8|ye[t>>>8&255]<<16|ye[255&t]<<24)>>>32-e}function Ie(t){return(0!=(4294901760&t)?(t&=4294901760,16):0)|(0!=(4278255360&t)?(t&=4278255360,8):0)|(0!=(4042322160&t)?(t&=4042322160,4):0)|(0!=(3435973836&t)?(t&=3435973836,2):0)|0!=(2863311530&t)}function Fe(t,e){const a=t.byteLength/e,i=Ie(a);if(a!=1<a){const i=t.slice(o*e,(o+1)*e);t.set(t.slice(a*e,(a+1)*e),o*e),t.set(i,a*e)}}}function xe(t,e){const a=new Uint8Array(e*t.length);for(let i=0;i0;)a>=4?(a-=4,e+=BigInt(o.getUint32(a))<=2?(a-=2,e+=BigInt(o.getUint16(a))<0;)n-4>=0?(n-=4,o.setUint32(n,Number(a&BigInt(4294967295))),a>>=BigInt(32)):n-2>=0?(n-=2,o.setUint16(n,Number(a&BigInt(65535))),a>>=BigInt(16)):(n-=1,o.setUint8(n,Number(a&BigInt(255))),a>>=BigInt(8));if(a)throw new Error("Number does not fit in this length");return i},bitReverse:Ce,buffReverseBits:Fe,buffer2array:Ee,leBuff2int:function(t){let e=BigInt(0),a=0;const i=new DataView(t.buffer,t.byteOffset,t.byteLength);for(;a{a[i]=t(e[i])})),a}return e},stringifyFElements:function t(e,a){if("bigint"==typeof a||void 0!==a.eq)return a.toString(10);if(a instanceof Uint8Array)return e.toString(e.e(a));if(Array.isArray(a))return a.map(t.bind(this,e));if("object"==typeof a){const i={};return Object.keys(a).forEach((o=>{i[o]=t(e,a[o])})),i}return a},unstringifyBigInts:function t(e){if("string"==typeof e&&/^[0-9]+$/.test(e))return BigInt(e);if("string"==typeof e&&/^0x[0-9a-fA-F]+$/.test(e))return BigInt(e);if(Array.isArray(e))return e.map(t);if("object"==typeof e){if(null===e)return null;const a={};return Object.keys(e).forEach((i=>{a[i]=t(e[i])})),a}return e},unstringifyFElements:function t(e,a){if("string"==typeof a&&/^[0-9]+$/.test(a))return e.e(a);if("string"==typeof a&&/^0x[0-9a-fA-F]+$/.test(a))return e.e(a);if(Array.isArray(a))return a.map(t.bind(this,e));if("object"==typeof a){if(null===a)return null;const i={};return Object.keys(a).forEach((o=>{i[o]=t(e,a[o])})),i}return a}});const Be=1<<30;class Se{constructor(t){this.buffers=[],this.byteLength=t;for(let e=0;e0;){const t=l+r>Be?Be-l:r,e=new Uint8Array(this.buffers[n].buffer,this.buffers[n].byteOffset+l,t);if(t==a)return e.slice();o||(o=a<=Be?new Uint8Array(a):new Se(a)),o.set(e,a-r),r-=t,n++,l=0}return o}set(t,e){void 0===e&&(e=0);const a=t.byteLength;if(0==a)return;const i=Math.floor(e/Be);if(i==Math.floor((e+a-1)/Be))return t instanceof Se&&1==t.buffers.length?this.buffers[i].set(t.buffers[0],e%Be):this.buffers[i].set(t,e%Be);let o=i,n=e%Be,l=a;for(;l>0;){const e=n+l>Be?Be-n:l,i=t.slice(a-l,a-l+e);new Uint8Array(this.buffers[o].buffer,this.buffers[o].byteOffset+n,e).set(i),l-=e,o++,n=0}}}function Pe(t,e,a,i){return async function(o){const n=Math.floor(o.byteLength/a);if(n*a!==o.byteLength)throw new Error("Invalid buffer size");const l=Math.floor(n/t.concurrency),r=[];for(let s=0;s=0;t--)this.w[t]=this.square(this.w[t+1]);if(!this.eq(this.w[0],this.one))throw new Error("Error calculating roots of unity");this.batchToMontgomery=Pe(t,e+"_batchToMontgomery",this.n8,this.n8),this.batchFromMontgomery=Pe(t,e+"_batchFromMontgomery",this.n8,this.n8)}op2(t,e,a){return this.tm.setBuff(this.pOp1,e),this.tm.setBuff(this.pOp2,a),this.tm.instance.exports[this.prefix+t](this.pOp1,this.pOp2,this.pOp3),this.tm.getBuff(this.pOp3,this.n8)}op2Bool(t,e,a){return this.tm.setBuff(this.pOp1,e),this.tm.setBuff(this.pOp2,a),!!this.tm.instance.exports[this.prefix+t](this.pOp1,this.pOp2)}op1(t,e){return this.tm.setBuff(this.pOp1,e),this.tm.instance.exports[this.prefix+t](this.pOp1,this.pOp3),this.tm.getBuff(this.pOp3,this.n8)}op1Bool(t,e){return this.tm.setBuff(this.pOp1,e),!!this.tm.instance.exports[this.prefix+t](this.pOp1,this.pOp3)}add(t,e){return this.op2("_add",t,e)}eq(t,e){return this.op2Bool("_eq",t,e)}isZero(t){return this.op1Bool("_isZero",t)}sub(t,e){return this.op2("_sub",t,e)}neg(t){return this.op1("_neg",t)}inv(t){return this.op1("_inverse",t)}toMontgomery(t){return this.op1("_toMontgomery",t)}fromMontgomery(t){return this.op1("_fromMontgomery",t)}mul(t,e){return this.op2("_mul",t,e)}div(t,e){return this.tm.setBuff(this.pOp1,t),this.tm.setBuff(this.pOp2,e),this.tm.instance.exports[this.prefix+"_inverse"](this.pOp2,this.pOp2),this.tm.instance.exports[this.prefix+"_mul"](this.pOp1,this.pOp2,this.pOp3),this.tm.getBuff(this.pOp3,this.n8)}square(t){return this.op1("_square",t)}isSquare(t){return this.op1Bool("_isSquare",t)}sqrt(t){return this.op1("_sqrt",t)}exp(t,e){return e instanceof Uint8Array||(e=S(i(e))),this.tm.setBuff(this.pOp1,t),this.tm.setBuff(this.pOp2,e),this.tm.instance.exports[this.prefix+"_exp"](this.pOp1,this.pOp2,e.byteLength,this.pOp3),this.tm.getBuff(this.pOp3,this.n8)}isNegative(t){return this.op1Bool("_isNegative",t)}e(t,e){if(t instanceof Uint8Array)return t;let a=i(t,e);n(a)?(a=p(a),A(a,this.p)&&(a=b(a,this.p)),a=_(this.p,a)):A(a,this.p)&&(a=b(a,this.p));const o=be(a,this.n8);return this.toMontgomery(o)}toString(t,e){return B(E(this.fromMontgomery(t),0),e)}fromRng(t){let e;const a=new Uint8Array(this.n8);do{e=P;for(let a=0;a{this.reject=e,this.resolve=t}))}}let qe;const Me='(function thread(self) {\n const MAXMEM = 32767;\n let instance;\n let memory;\n\n if (self) {\n self.onmessage = function(e) {\n let data;\n if (e.data) {\n data = e.data;\n } else {\n data = e;\n }\n\n if (data[0].cmd == "INIT") {\n init(data[0]).then(function() {\n self.postMessage(data.result);\n });\n } else if (data[0].cmd == "TERMINATE") {\n self.close();\n } else {\n const res = runTask(data);\n self.postMessage(res);\n }\n };\n }\n\n async function init(data) {\n const code = new Uint8Array(data.code);\n const wasmModule = await WebAssembly.compile(code);\n memory = new WebAssembly.Memory({initial:data.init, maximum: MAXMEM});\n\n instance = await WebAssembly.instantiate(wasmModule, {\n env: {\n "memory": memory\n }\n });\n }\n\n\n\n function alloc(length) {\n const u32 = new Uint32Array(memory.buffer, 0, 1);\n while (u32[0] & 3) u32[0]++; // Return always aligned pointers\n const res = u32[0];\n u32[0] += length;\n if (u32[0] + length > memory.buffer.byteLength) {\n const currentPages = memory.buffer.byteLength / 0x10000;\n let requiredPages = Math.floor((u32[0] + length) / 0x10000)+1;\n if (requiredPages>MAXMEM) requiredPages=MAXMEM;\n memory.grow(requiredPages-currentPages);\n }\n return res;\n }\n\n function allocBuffer(buffer) {\n const p = alloc(buffer.byteLength);\n setBuffer(p, buffer);\n return p;\n }\n\n function getBuffer(pointer, length) {\n const u8 = new Uint8Array(memory.buffer);\n return new Uint8Array(u8.buffer, u8.byteOffset + pointer, length);\n }\n\n function setBuffer(pointer, buffer) {\n const u8 = new Uint8Array(memory.buffer);\n u8.set(new Uint8Array(buffer), pointer);\n }\n\n function runTask(task) {\n if (task[0].cmd == "INIT") {\n return init(task[0]);\n }\n const ctx = {\n vars: [],\n out: []\n };\n const u32a = new Uint32Array(memory.buffer, 0, 1);\n const oldAlloc = u32a[0];\n for (let i=0; ii.buffer.byteLength){const o=i.buffer.byteLength/65536;let n=Math.floor((a[0]+t)/65536)+1;n>e&&(n=e),i.grow(n-o)}return o}function l(t){const e=n(t.byteLength);return s(e,t),e}function r(t,e){const a=new Uint8Array(i.buffer);return new Uint8Array(a.buffer,a.byteOffset+t,e)}function s(t,e){new Uint8Array(i.buffer).set(new Uint8Array(e),t)}function c(t){if("INIT"==t[0].cmd)return o(t[0]);const e={vars:[],out:[]},c=new Uint32Array(i.buffer,0,1)[0];for(let i=0;i64&&(e=64),a.concurrency=e;for(let t=0;t0;t++)if(0==this.working[t]){const e=this.actionQueue.shift();this.postAction(t,e.data,e.transfers,e.deferred)}}queueAction(t,e){const a=new Qe;if(this.singleThread){const e=this.taskManager(t);a.resolve(e)}else this.actionQueue.push({data:t,transfers:e,deferred:a}),this.processWorks();return a.promise}resetMemory(){this.u32[0]=this.initalPFree}allocBuff(t){const e=this.alloc(t.byteLength);return this.setBuff(e,t),e}getBuff(t,e){return this.u8.slice(t,t+e)}setBuff(t,e){this.u8.set(new Uint8Array(e),t)}alloc(t){for(;3&this.u32[0];)this.u32[0]++;const e=this.u32[0];return this.u32[0]+=t,e}async terminate(){for(let t=0;tsetTimeout(e,t))))}}function De(t,e){const a=t[e],i=t.Fr,o=t.tm;t[e].batchApplyKey=async function(t,n,l,r,s){let c,d,u,g,f;if(r=r||"affine",s=s||"affine","G1"==e)"jacobian"==r?(u=3*a.F.n8,c="g1m_batchApplyKey"):(u=2*a.F.n8,c="g1m_batchApplyKeyMixed"),g=3*a.F.n8,"jacobian"==s?f=3*a.F.n8:(d="g1m_batchToAffine",f=2*a.F.n8);else if("G2"==e)"jacobian"==r?(u=3*a.F.n8,c="g2m_batchApplyKey"):(u=2*a.F.n8,c="g2m_batchApplyKeyMixed"),g=3*a.F.n8,"jacobian"==s?f=3*a.F.n8:(d="g2m_batchToAffine",f=2*a.F.n8);else{if("Fr"!=e)throw new Error("Invalid group: "+e);c="frm_batchApplyKey",u=a.n8,g=a.n8,f=a.n8}const h=Math.floor(t.byteLength/u),_=Math.floor(h/o.concurrency),p=[];l=i.e(l);let m=i.e(n);for(let e=0;e=0;t--){if(!a.isZero(_))for(let t=0;tc&&(_=c),_<1024&&(_=1024);const p=[];for(let e=0;e(r&&r.debug(`Multiexp end: ${s}: ${e}/${u}`),t))))}const m=await Promise.all(p);let w=a.zero;for(let t=m.length-1;t>=0;t--)w=a.add(w,m[t]);return w}a.multiExp=async function(t,e,a,i){return await n(t,e,"jacobian",a,i)},a.multiExpAffine=async function(t,e,a,i){return await n(t,e,"affine",a,i)}}function Ve(t,e){const a=t[e],i=t.Fr,o=a.tm;async function n(t,r,s,c,d,u){s=s||"affine",c=c||"affine";let g,f,h,_,p,m,w,L;"G1"==e?("affine"==s?(g=2*a.F.n8,_="g1m_batchToJacobian"):g=3*a.F.n8,f=3*a.F.n8,r&&(L="g1m_fftFinal"),w="g1m_fftJoin",m="g1m_fftMix","affine"==c?(h=2*a.F.n8,p="g1m_batchToAffine"):h=3*a.F.n8):"G2"==e?("affine"==s?(g=2*a.F.n8,_="g2m_batchToJacobian"):g=3*a.F.n8,f=3*a.F.n8,r&&(L="g2m_fftFinal"),w="g2m_fftJoin",m="g2m_fftMix","affine"==c?(h=2*a.F.n8,p="g2m_batchToAffine"):h=3*a.F.n8):"Fr"==e&&(g=a.n8,f=a.n8,h=a.n8,r&&(L="frm_fftFinal"),m="frm_fftMix",w="frm_fftJoin");let b=!1;Array.isArray(t)?(t=xe(t,g),b=!0):t=t.slice(0,t.byteLength);const y=t.byteLength/g,A=Ie(y);if(1<1<<28?new Se(2*u[0].byteLength):new Uint8Array(2*u[0].byteLength);return g.set(u[0]),g.set(u[1],u[0].byteLength),g}(t,s,c,d,u):await async function(t,e,a,o,r){let s,c;s=t.slice(0,t.byteLength/2),c=t.slice(t.byteLength/2,t.byteLength);const d=[];[s,c]=await l(s,c,"fftJoinExt",i.one,i.shift,e,"jacobian",o,r),d.push(n(s,!1,"jacobian",a,o,r)),d.push(n(c,!1,"jacobian",a,o,r));const u=await Promise.all(d);let g;g=u[0].byteLength>1<<28?new Se(2*u[0].byteLength):new Uint8Array(2*u[0].byteLength);return g.set(u[0]),g.set(u[1],u[0].byteLength),g}(t,s,c,d,u),b?Ee(e,h):e}let C,I,F;r&&(C=i.inv(i.e(y))),Fe(t,g);let x=Math.min(16384,y),E=y/x;for(;E=16;)E*=2,x/=2;const v=Ie(x),B=[];for(let e=0;e(d&&d.debug(`${u}: fft ${A} mix end: ${e}/${E}`),t))))}F=await Promise.all(B);for(let t=0;t(d&&d.debug(`${u}: fft ${A} join ${t}/${A} ${l+1}/${e} ${r}/${a/2}`),i))))}const l=await Promise.all(n);for(let t=0;t0;e--)I.set(F[e],t),t+=x*h,delete F[e];I.set(F[0].slice(0,(x-1)*h),t),delete F[0]}else for(let t=0;t65536&&(b=65536);const y=[];for(let e=0;e(u&&u.debug(`${g}: fftJoinExt End: ${e}/${L}`),t))))}const A=await Promise.all(y);let C,I;L*p>1<<28?(C=new Se(L*p),I=new Se(L*p)):(C=new Uint8Array(L*p),I=new Uint8Array(L*p));let F=0;for(let t=0;ti.s+1)throw s&&s.error("lagrangeEvaluations input too big"),new Error("lagrangeEvaluations input too big");let f=t.slice(0,t.byteLength/2),h=t.slice(t.byteLength/2,t.byteLength);const _=i.exp(i.shift,u/2),p=i.inv(i.sub(i.one,_));[f,h]=await l(f,h,"prepareLagrangeEvaluation",p,i.shiftInv,o,"jacobian",s,c+" prep");const m=[];let w;return m.push(n(f,!0,"jacobian",r,s,c+" t0")),m.push(n(h,!0,"jacobian",r,s,c+" t1")),[f,h]=await Promise.all(m),w=f.byteLength>1<<28?new Se(2*f.byteLength):new Uint8Array(2*f.byteLength),w.set(f),w.set(h,f.byteLength),w},a.fftMix=async function(t){const n=3*a.F.n8;let l,r;if("G1"==e)l="g1m_fftMix",r="g1m_fftJoin";else if("G2"==e)l="g2m_fftMix",r="g2m_fftJoin";else{if("Fr"!=e)throw new Error("Invalid group");l="frm_fftMix",r="frm_fftJoin"}const s=Math.floor(t.byteLength/n),c=Ie(s);let d=1<=0;t--)f.set(g[t][0],h),h+=g[t][0].byteLength;return f}}async function Ke(t){const e=await ke(t.wasm,t.singleThread),a={};return a.q=i(t.wasm.q.toString()),a.r=i(t.wasm.r.toString()),a.name=t.name,a.tm=e,a.prePSize=t.wasm.prePSize,a.preQSize=t.wasm.preQSize,a.Fr=new Ge(e,"frm",t.n8r,t.r),a.F1=new Ge(e,"f1m",t.n8q,t.q),a.F2=new Oe(e,"f2m",a.F1),a.G1=new Ue(e,"g1m",a.F1,t.wasm.pG1gen,t.wasm.pG1b,t.cofactorG1),a.G2=new Ue(e,"g2m",a.F2,t.wasm.pG2gen,t.wasm.pG2b,t.cofactorG2),a.F6=new Te(e,"f6m",a.F2),a.F12=new Oe(e,"ftm",a.F6),a.Gt=a.F12,De(a,"G1"),De(a,"G2"),De(a,"Fr"),$e(a,"G1"),$e(a,"G2"),Ve(a,"G1"),Ve(a,"G2"),Ve(a,"Fr"),function(t){const e=t.tm;t.pairing=function(a,i){e.startSyncOp();const o=e.allocBuff(t.G1.toJacobian(a)),n=e.allocBuff(t.G2.toJacobian(i)),l=e.alloc(t.Gt.n8);e.instance.exports[t.name+"_pairing"](o,n,l);const r=e.getBuff(l,t.Gt.n8);return e.endSyncOp(),r},t.pairingEq=async function(){let a,i;arguments.length%2==1?(a=arguments[arguments.length-1],i=(arguments.length-1)/2):(a=t.Gt.one,i=arguments.length/2);const o=[];for(let a=0;a>8n&0xFFn)),e.push(Number(a>>16n&0xFFn)),e.push(Number(a>>24n&0xFFn)),e}function Ye(t){const e=function(t){for(var e=[],a=0;a>6,128|63&i):i<55296||i>=57344?e.push(224|i>>12,128|i>>6&63,128|63&i):(a++,i=65536+((1023&i)<<10|1023&t.charCodeAt(a)),e.push(240|i>>18,128|i>>12&63,128|i>>6&63,128|63&i))}return e}(t);return[...aa(e.length),...e]}function Je(t){const e=[];let a=je(t);if(He(a))throw new Error("Number cannot be negative");for(;!Ze(a);)e.push(Number(0x7Fn&a)),a>>=7n;0==e.length&&e.push(0);for(let t=0;t0xFFFFFFFFn)throw new Error("Number too big");if(e>0x7FFFFFFFn&&(e-=0x100000000n),e<-2147483648n)throw new Error("Number too small");return Xe(e)}function ea(t){let e=je(t);if(e>0xFFFFFFFFFFFFFFFFn)throw new Error("Number too big");if(e>0x7FFFFFFFFFFFFFFFn&&(e-=0x10000000000000000n),e<-9223372036854775808n)throw new Error("Number too small");return Xe(e)}function aa(t){let e=je(t);if(e>0xFFFFFFFFn)throw new Error("Number too big");return Je(e)}function ia(t){return Array.from(t,(function(t){return("0"+(255&t).toString(16)).slice(-2)})).join("")}class oa{constructor(t){this.func=t,this.functionName=t.functionName,this.module=t.module}setLocal(t,e){const a=this.func.localIdxByName[t];if(void 0===a)throw new Error(`Local Variable not defined: Function: ${this.functionName} local: ${t} `);return[...e,33,...aa(a)]}teeLocal(t,e){const a=this.func.localIdxByName[t];if(void 0===a)throw new Error(`Local Variable not defined: Function: ${this.functionName} local: ${t} `);return[...e,34,...aa(a)]}getLocal(t){const e=this.func.localIdxByName[t];if(void 0===e)throw new Error(`Local Variable not defined: Function: ${this.functionName} local: ${t} `);return[32,...aa(e)]}i64_load8_s(t,e,a){return[...t,48,void 0===a?0:a,...aa(e||0)]}i64_load8_u(t,e,a){return[...t,49,void 0===a?0:a,...aa(e||0)]}i64_load16_s(t,e,a){return[...t,50,void 0===a?1:a,...aa(e||0)]}i64_load16_u(t,e,a){return[...t,51,void 0===a?1:a,...aa(e||0)]}i64_load32_s(t,e,a){return[...t,52,void 0===a?2:a,...aa(e||0)]}i64_load32_u(t,e,a){return[...t,53,void 0===a?2:a,...aa(e||0)]}i64_load(t,e,a){return[...t,41,void 0===a?3:a,...aa(e||0)]}i64_store(t,e,a,i){let o,n,l;return Array.isArray(e)?(o=0,n=3,l=e):Array.isArray(a)?(o=e,n=3,l=a):Array.isArray(i)&&(o=e,n=a,l=i),[...t,...l,55,n,...aa(o)]}i64_store32(t,e,a,i){let o,n,l;return Array.isArray(e)?(o=0,n=2,l=e):Array.isArray(a)?(o=e,n=2,l=a):Array.isArray(i)&&(o=e,n=a,l=i),[...t,...l,62,n,...aa(o)]}i64_store16(t,e,a,i){let o,n,l;return Array.isArray(e)?(o=0,n=1,l=e):Array.isArray(a)?(o=e,n=1,l=a):Array.isArray(i)&&(o=e,n=a,l=i),[...t,...l,61,n,...aa(o)]}i64_store8(t,e,a,i){let o,n,l;return Array.isArray(e)?(o=0,n=0,l=e):Array.isArray(a)?(o=e,n=0,l=a):Array.isArray(i)&&(o=e,n=a,l=i),[...t,...l,60,n,...aa(o)]}i32_load8_s(t,e,a){return[...t,44,void 0===a?0:a,...aa(e||0)]}i32_load8_u(t,e,a){return[...t,45,void 0===a?0:a,...aa(e||0)]}i32_load16_s(t,e,a){return[...t,46,void 0===a?1:a,...aa(e||0)]}i32_load16_u(t,e,a){return[...t,47,void 0===a?1:a,...aa(e||0)]}i32_load(t,e,a){return[...t,40,void 0===a?2:a,...aa(e||0)]}i32_store(t,e,a,i){let o,n,l;return Array.isArray(e)?(o=0,n=2,l=e):Array.isArray(a)?(o=e,n=2,l=a):Array.isArray(i)&&(o=e,n=a,l=i),[...t,...l,54,n,...aa(o)]}i32_store16(t,e,a,i){let o,n,l;return Array.isArray(e)?(o=0,n=1,l=e):Array.isArray(a)?(o=e,n=1,l=a):Array.isArray(i)&&(o=e,n=a,l=i),[...t,...l,59,n,...aa(o)]}i32_store8(t,e,a,i){let o,n,l;return Array.isArray(e)?(o=0,n=0,l=e):Array.isArray(a)?(o=e,n=0,l=a):Array.isArray(i)&&(o=e,n=a,l=i),[...t,...l,58,n,...aa(o)]}call(t,...e){const a=this.module.functionIdxByName[t];if(void 0===a)throw new Error(`Function not defined: Function: ${t}`);return[...[].concat(...e),16,...aa(a)]}call_indirect(t,...e){return[...[].concat(...e),...t,17,0,0]}if(t,e,a){return a?[...t,4,64,...e,5,...a,11]:[...t,4,64,...e,11]}block(t){return[2,64,...t,11]}loop(...t){return[3,64,...[].concat(...t),11]}br_if(t,e){return[...e,13,...aa(t)]}br(t){return[12,...aa(t)]}ret(t){return[...t,15]}drop(t){return[...t,26]}i64_const(t){return[66,...ea(t)]}i32_const(t){return[65,...ta(t)]}i64_eqz(t){return[...t,80]}i64_eq(t,e){return[...t,...e,81]}i64_ne(t,e){return[...t,...e,82]}i64_lt_s(t,e){return[...t,...e,83]}i64_lt_u(t,e){return[...t,...e,84]}i64_gt_s(t,e){return[...t,...e,85]}i64_gt_u(t,e){return[...t,...e,86]}i64_le_s(t,e){return[...t,...e,87]}i64_le_u(t,e){return[...t,...e,88]}i64_ge_s(t,e){return[...t,...e,89]}i64_ge_u(t,e){return[...t,...e,90]}i64_add(t,e){return[...t,...e,124]}i64_sub(t,e){return[...t,...e,125]}i64_mul(t,e){return[...t,...e,126]}i64_div_s(t,e){return[...t,...e,127]}i64_div_u(t,e){return[...t,...e,128]}i64_rem_s(t,e){return[...t,...e,129]}i64_rem_u(t,e){return[...t,...e,130]}i64_and(t,e){return[...t,...e,131]}i64_or(t,e){return[...t,...e,132]}i64_xor(t,e){return[...t,...e,133]}i64_shl(t,e){return[...t,...e,134]}i64_shr_s(t,e){return[...t,...e,135]}i64_shr_u(t,e){return[...t,...e,136]}i64_extend_i32_s(t){return[...t,172]}i64_extend_i32_u(t){return[...t,173]}i64_clz(t){return[...t,121]}i64_ctz(t){return[...t,122]}i32_eqz(t){return[...t,69]}i32_eq(t,e){return[...t,...e,70]}i32_ne(t,e){return[...t,...e,71]}i32_lt_s(t,e){return[...t,...e,72]}i32_lt_u(t,e){return[...t,...e,73]}i32_gt_s(t,e){return[...t,...e,74]}i32_gt_u(t,e){return[...t,...e,75]}i32_le_s(t,e){return[...t,...e,76]}i32_le_u(t,e){return[...t,...e,77]}i32_ge_s(t,e){return[...t,...e,78]}i32_ge_u(t,e){return[...t,...e,79]}i32_add(t,e){return[...t,...e,106]}i32_sub(t,e){return[...t,...e,107]}i32_mul(t,e){return[...t,...e,108]}i32_div_s(t,e){return[...t,...e,109]}i32_div_u(t,e){return[...t,...e,110]}i32_rem_s(t,e){return[...t,...e,111]}i32_rem_u(t,e){return[...t,...e,112]}i32_and(t,e){return[...t,...e,113]}i32_or(t,e){return[...t,...e,114]}i32_xor(t,e){return[...t,...e,115]}i32_shl(t,e){return[...t,...e,116]}i32_shr_s(t,e){return[...t,...e,117]}i32_shr_u(t,e){return[...t,...e,118]}i32_rotl(t,e){return[...t,...e,119]}i32_rotr(t,e){return[...t,...e,120]}i32_wrap_i64(t){return[...t,167]}i32_clz(t){return[...t,103]}i32_ctz(t){return[...t,104]}unreachable(){return[0]}current_memory(){return[63,0]}comment(){return[]}}const na={i32:127,i64:126,f32:125,f64:124,anyfunc:112,func:96,emptyblock:64};class la{constructor(t,e,a,i,o){if("import"==a)this.fnType="import",this.moduleName=i,this.fieldName=o;else{if("internal"!=a)throw new Error("Invalid function fnType: "+a);this.fnType="internal"}this.module=t,this.fnName=e,this.params=[],this.locals=[],this.localIdxByName={},this.code=[],this.returnType=null,this.nextLocal=0}addParam(t,e){if(this.localIdxByName[t])throw new Error(`param already exists. Function: ${this.fnName}, Param: ${t} `);const a=this.nextLocal++;this.localIdxByName[t]=a,this.params.push({type:e})}addLocal(t,e,a){const i=a||1;if(this.localIdxByName[t])throw new Error(`local already exists. Function: ${this.fnName}, Param: ${t} `);const o=this.nextLocal++;this.localIdxByName[t]=o,this.locals.push({type:e,length:i})}setReturnType(t){if(this.returnType)throw new Error(`returnType already defined. Function: ${this.fnName}`);this.returnType=t}getSignature(){return[96,...[...aa(this.params.length),...this.params.map((t=>na[t.type]))],...this.returnType?[1,na[this.returnType]]:[0]]}getBody(){const t=this.locals.map((t=>[...aa(t.length),na[t.type]])),e=[...aa(this.locals.length),...[].concat(...t),...this.code,11];return[...aa(e.length),...e]}addCode(...t){this.code.push(...[].concat(...t))}getCodeBuilder(){return new oa(this)}}class ra{constructor(){this.functions=[],this.functionIdxByName={},this.nImportFunctions=0,this.nInternalFunctions=0,this.memory={pagesSize:1,moduleName:"env",fieldName:"memory"},this.free=8,this.datas=[],this.modules={},this.exports=[],this.functionsTable=[]}build(){return this._setSignatures(),new Uint8Array([...We(1836278016),...We(1),...this._buildType(),...this._buildImport(),...this._buildFunctionDeclarations(),...this._buildFunctionsTable(),...this._buildExports(),...this._buildElements(),...this._buildCode(),...this._buildData()])}addFunction(t){if(void 0!==this.functionIdxByName[t])throw new Error(`Function already defined: ${t}`);const e=this.functions.length;return this.functionIdxByName[t]=e,this.functions.push(new la(this,t,"internal")),this.nInternalFunctions++,this.functions[e]}addIimportFunction(t,e,a){if(void 0!==this.functionIdxByName[t])throw new Error(`Function already defined: ${t}`);if(this.functions.length>0&&"internal"==this.functions[this.functions.length-1].type)throw new Error(`Import functions must be declared before internal: ${t}`);let i=a||t;const o=this.functions.length;return this.functionIdxByName[t]=o,this.functions.push(new la(this,t,"import",e,i)),this.nImportFunctions++,this.functions[o]}setMemory(t,e,a){this.memory={pagesSize:t,moduleName:e||"env",fieldName:a||"memory"}}exportFunction(t,e){const a=e||t;if(void 0===this.functionIdxByName[t])throw new Error(`Function not defined: ${t}`);const i=this.functionIdxByName[t];a!=t&&(this.functionIdxByName[a]=i),this.exports.push({exportName:a,idx:i})}addFunctionToTable(t){const e=this.functionIdxByName[t];this.functionsTable.push(e)}addData(t,e){this.datas.push({offset:t,bytes:e})}alloc(t,e){let a,i;(Array.isArray(t)||ArrayBuffer.isView(t))&&void 0===e?(a=t.length,i=t):(a=t,i=e),a=1+(a-1>>3)<<3;const o=this.free;return this.free+=a,i&&this.addData(o,i),o}allocString(t){const e=(new globalThis.TextEncoder).encode(t);return this.alloc([...e,0])}_setSignatures(){this.signatures=[];const t={};if(this.functionsTable.length>0){const e=this.functions[this.functionsTable[0]].getSignature();t["s_"+ia(e)]=0,this.signatures.push(e)}for(let e=0;e{e.pendingLoads.push({page:t,resolve:a,reject:i})}));return e.__statusPage("After Load request: ",t),a}__statusPage(t,e){const a=[],i=this;if(!i.logHistory)return;a.push("=="+t+" "+e);let o="";for(let t=0;t "+e.history[t][a][i])}_triggerLoad(){const t=this;if(t.reading)return;if(0==t.pendingLoads.length)return;const e=Object.keys(t.pages),a=[];for(let i=0;i0&&(void 0!==t.pages[t.pendingLoads[0].page]||i>0||a.length>0);){const e=t.pendingLoads.shift();if(void 0!==t.pages[e.page]){t.pages[e.page].pendingOps++;const i=a.indexOf(e.page);i>=0&&a.splice(i,1),t.pages[e.page].loading?t.pages[e.page].loading.push(e):e.resolve(),t.__statusPage("After Load (cached): ",e.page)}else{if(i)i--;else{const e=a.shift();t.__statusPage("Before Unload: ",e),t.avBuffs.unshift(t.pages[e]),delete t.pages[e],t.__statusPage("After Unload: ",e)}e.page>=t.totalPages?(t.pages[e.page]=n(),e.resolve(),t.__statusPage("After Load (new): ",e.page)):(t.reading=!0,t.pages[e.page]=n(),t.pages[e.page].loading=[e],o.push(t.fd.read(t.pages[e.page].buff,0,t.pageSize,e.page*t.pageSize).then((a=>{t.pages[e.page].size=a.bytesRead;const i=t.pages[e.page].loading;delete t.pages[e.page].loading;for(let t=0;t{e.reject(t)}))),t.__statusPage("After Load (loading): ",e.page))}}function n(){if(t.avBuffs.length>0){const e=t.avBuffs.shift();return e.dirty=!1,e.pendingOps=1,e.size=0,e}return{dirty:!1,buff:new Uint8Array(t.pageSize),pendingOps:1,size:0}}Promise.all(o).then((()=>{t.reading=!1,t.pendingLoads.length>0&&setImmediate(t._triggerLoad.bind(t)),t._tryClose()}))}_triggerWrite(){const t=this;if(t.writing)return;const e=Object.keys(t.pages),a=[];for(let i=0;i{o.writing=!1}),(e=>{console.log("ERROR Writing: "+e),t.error=e,t._tryClose()}))))}t.writing&&Promise.all(a).then((()=>{t.writing=!1,setImmediate(t._triggerWrite.bind(t)),t._tryClose(),t.pendingLoads.length>0&&setImmediate(t._triggerLoad.bind(t))}))}_getDirtyPage(){for(let t in this.pages)if(this.pages[t].dirty)return t;return-1}async write(t,e){if(0==t.byteLength)return;const a=this;if(void 0===e&&(e=a.pos),a.pos=e+t.byteLength,a.totalSize0;){await n[l-i];const e=r+s>a.pageSize?a.pageSize-r:s,o=t.slice(t.byteLength-s,t.byteLength-s+e);new Uint8Array(a.pages[l].buff.buffer,r,e).set(o),a.pages[l].dirty=!0,a.pages[l].pendingOps--,a.pages[l].size=Math.max(r+e,a.pages[l].size),l>=a.totalPages&&(a.totalPages=l+1),s-=e,l++,r=0,a.writing||setImmediate(a._triggerWrite.bind(a))}}async read(t,e){let a=new Uint8Array(t);return await this.readToBuffer(a,0,t,e),a}async readToBuffer(t,e,a,i){if(0==a)return;const o=this;if(a>o.pageSize*o.maxPagesLoaded*.8){const t=Math.floor(1.1*a);this.maxPagesLoaded=Math.floor(t/o.pageSize)+1}if(void 0===i&&(i=o.pos),o.pos=i+a,o.pendingClose)throw new Error("Reading a closing file");const n=Math.floor(i/o.pageSize),l=Math.floor((i+a-1)/o.pageSize),r=[];for(let t=n;t<=l;t++)r.push(o._loadPage(t));o._triggerLoad();let s=n,c=i%o.pageSize,d=i+a>o.totalSize?a-(i+a-o.totalSize):a;for(;d>0;){await r[s-n],o.__statusPage("After Await (read): ",s);const i=c+d>o.pageSize?o.pageSize-c:d,l=new Uint8Array(o.pages[s].buff.buffer,o.pages[s].buff.byteOffset+c,i);t.set(l,e+a-d),o.pages[s].pendingOps--,o.__statusPage("After Op done: ",s),d-=i,s++,c=0,o.pendingLoads.length>0&&setImmediate(o._triggerLoad.bind(o))}this.pos=i+a}_tryClose(){const t=this;if(!t.pendingClose)return;t.error&&t.pendingCloseReject(t.error);t._getDirtyPage()>=0||t.writing||t.reading||t.pendingLoads.length>0||t.pendingClose()}close(){const t=this;if(t.pendingClose)throw new Error("Closing the file twice");return new Promise(((e,a)=>{t.pendingClose=e,t.pendingCloseReject=a,t._tryClose()})).then((()=>{t.fd.close()}),(e=>{throw t.fd.close(),e}))}async discard(){await this.close(),await ha.promises.unlink(this.fileName)}async writeULE32(t,e){const a=new Uint8Array(4);new DataView(a.buffer).setUint32(0,t,!0),await this.write(a,e)}async writeUBE32(t,e){const a=new Uint8Array(4);new DataView(a.buffer).setUint32(0,t,!1),await this.write(a,e)}async writeULE64(t,e){const a=new Uint8Array(8),i=new DataView(a.buffer);i.setUint32(0,4294967295&t,!0),i.setUint32(4,Math.floor(t/4294967296),!0),await this.write(a,e)}async readULE32(t){const e=await this.read(4,t);return new Uint32Array(e.buffer)[0]}async readUBE32(t){const e=await this.read(4,t);return new DataView(e.buffer).getUint32(0,!1)}async readULE64(t){const e=await this.read(8,t),a=new Uint32Array(e.buffer);return 4294967296*a[1]+a[0]}async readString(t){const e=this;if(e.pendingClose)throw new Error("Reading a closing file");let a=void 0===t?e.pos:t,i=Math.floor(a/e.pageSize),o=!1,n="";for(;!o;){let t=e._loadPage(i);e._triggerLoad(),await t,e.__statusPage("After Await (read): ",i);let l=a%e.pageSize;const r=new Uint8Array(e.pages[i].buff.buffer,e.pages[i].buff.byteOffset+l,e.pageSize-l);let s=r.findIndex((t=>0===t));o=-1!==s,o?(n+=(new TextDecoder).decode(r.slice(0,s)),e.pos=i*this.pageSize+l+s+1):(n+=(new TextDecoder).decode(r),e.pos=i*this.pageSize+l+r.length),e.pages[i].pendingOps--,e.__statusPage("After Op done: ",i),a=e.pos,i++,e.pendingLoads.length>0&&setImmediate(e._triggerLoad.bind(e))}return n}}const ma=new Uint8Array(4),wa=new DataView(ma.buffer),La=new Uint8Array(8),ba=new DataView(La.buffer);class ya{constructor(){this.pageSize=16384}_resizeIfNeeded(t){if(t>this.allocSize){const e=Math.max(this.allocSize+(1<<20),Math.floor(1.1*this.allocSize),t),a=new Uint8Array(e);a.set(this.o.data),this.o.data=a,this.allocSize=e}}async write(t,e){if(void 0===e&&(e=this.pos),this.readOnly)throw new Error("Writing a read only file");this._resizeIfNeeded(e+t.byteLength),this.o.data.set(t.slice(),e),e+t.byteLength>this.totalSize&&(this.totalSize=e+t.byteLength),this.pos=e+t.byteLength}async readToBuffer(t,e,a,i){if(void 0===i&&(i=this.pos),this.readOnly&&i+a>this.totalSize)throw new Error("Reading out of bounds");this._resizeIfNeeded(i+a);const o=new Uint8Array(this.o.data.buffer,this.o.data.byteOffset+i,a);t.set(o,e),this.pos=i+a}async read(t,e){const a=new Uint8Array(t);return await this.readToBuffer(a,0,t,e),a}close(){this.o.data.byteLength!=this.totalSize&&(this.o.data=this.o.data.slice(0,this.totalSize))}async discard(){}async writeULE32(t,e){wa.setUint32(0,t,!0),await this.write(ma,e)}async writeUBE32(t,e){wa.setUint32(0,t,!1),await this.write(ma,e)}async writeULE64(t,e){ba.setUint32(0,4294967295&t,!0),ba.setUint32(4,Math.floor(t/4294967296),!0),await this.write(La,e)}async readULE32(t){const e=await this.read(4,t);return new Uint32Array(e.buffer)[0]}async readUBE32(t){const e=await this.read(4,t);return new DataView(e.buffer).getUint32(0,!1)}async readULE64(t){const e=await this.read(8,t),a=new Uint32Array(e.buffer);return 4294967296*a[1]+a[0]}async readString(t){const e=this;let a=void 0===t?e.pos:t;if(a>this.totalSize){if(this.readOnly)throw new Error("Reading out of bounds");this._resizeIfNeeded(t)}const i=new Uint8Array(e.o.data.buffer,a,this.totalSize-a);let o=i.findIndex((t=>0===t)),n="";return-1!==o?(n=(new TextDecoder).decode(i.slice(0,o)),e.pos=a+o+1):e.pos=a,n}}const Aa=1<<22;const Ca=new Uint8Array(4),Ia=new DataView(Ca.buffer),Fa=new Uint8Array(8),xa=new DataView(Fa.buffer);class Ea{constructor(){this.pageSize=16384}_resizeIfNeeded(t){if(t<=this.totalSize)return;if(this.readOnly)throw new Error("Reading out of file bounds");const e=Math.floor((t-1)/Aa)+1;for(let a=Math.max(this.o.data.length-1,0);a0;){const e=o+n>Aa?Aa-o:n,l=t.slice(t.byteLength-n,t.byteLength-n+e);new Uint8Array(a.o.data[i].buffer,o,e).set(l),n-=e,i++,o=0}this.pos=e+t.byteLength}async readToBuffer(t,e,a,i){const o=this;if(void 0===i&&(i=o.pos),this.readOnly&&i+a>this.totalSize)throw new Error("Reading out of bounds");this._resizeIfNeeded(i+a);let n=Math.floor(i/Aa),l=i%Aa,r=a;for(;r>0;){const i=l+r>Aa?Aa-l:r,s=new Uint8Array(o.o.data[n].buffer,l,i);t.set(s,e+a-r),r-=i,n++,l=0}this.pos=i+a}async read(t,e){const a=new Uint8Array(t);return await this.readToBuffer(a,0,t,e),a}close(){}async discard(){}async writeULE32(t,e){Ia.setUint32(0,t,!0),await this.write(Ca,e)}async writeUBE32(t,e){Ia.setUint32(0,t,!1),await this.write(Ca,e)}async writeULE64(t,e){xa.setUint32(0,4294967295&t,!0),xa.setUint32(4,Math.floor(t/4294967296),!0),await this.write(Fa,e)}async readULE32(t){const e=await this.read(4,t);return new Uint32Array(e.buffer)[0]}async readUBE32(t){const e=await this.read(4,t);return new DataView(e.buffer).getUint32(0,!1)}async readULE64(t){const e=await this.read(8,t),a=new Uint32Array(e.buffer);return 4294967296*a[1]+a[0]}async readString(t){const e=this;let a=void 0===t?e.pos:t;if(a>this.totalSize){if(this.readOnly)throw new Error("Reading out of bounds");this._resizeIfNeeded(t)}let i=!1,o="";for(;!i;){let t=Math.floor(a/Aa),n=a%Aa;if(void 0===e.o.data[t])throw new Error("ERROR");let l=Math.min(2048,e.o.data[t].length-n);const r=new Uint8Array(e.o.data[t].buffer,n,l);let s=r.findIndex((t=>0===t));i=-1!==s,i?(o+=(new TextDecoder).decode(r.slice(0,s)),e.pos=t*Aa+n+s+1):(o+=(new TextDecoder).decode(r),e.pos=t*Aa+n+r.length),a=e.pos}return o}}const va=512,Ba=64,Sa=2,Pa=0,Ga=65536,Oa=8192;async function Ta(t,e,a){if("string"==typeof t&&(t={type:"file",fileName:t,cacheSize:e||Ga,pageSize:a||Oa}),"file"==t.type)return await _a(t.fileName,va|Ba|Sa,t.cacheSize,t.pageSize);if("mem"==t.type)return function(t){const e=t.initialSize||1<<20,a=new ya;return a.o=t,a.o.data=new Uint8Array(e),a.allocSize=e,a.totalSize=0,a.readOnly=!1,a.pos=0,a}(t);if("bigMem"==t.type)return function(t){const e=t.initialSize||0,a=new Ea;a.o=t;const i=e?Math.floor((e-1)/Aa)+1:0;a.o.data=[];for(let t=0;ta)throw new Error("Version not supported");const s=await n.readULE32();let c=[];for(let t=0;t1)throw new Error(t.fileName+": Section Duplicated "+a);t.pos=e[a][0].p,t.readingSection=e[a][0]}async function Ra(t,e){if(void 0===t.readingSection)throw new Error("Not reading a section");if(!e&&t.pos-t.readingSection.p!=t.readingSection.size)throw new Error("Invalid section size reading");delete t.readingSection}async function Da(t,e,a,i){const o=new Uint8Array(a);ga.toRprLE(o,0,e,a),await t.write(o,i)}async function Na(t,e,a){const i=await t.read(e,a);return ga.fromRprLE(i,0,e)}async function $a(t,e,a,i,o){void 0===o&&(o=e[i][0].size);const n=t.pageSize;await ka(t,e,i),await qa(a,i);for(let e=0;ee[a][0].size)throw new Error("Reading out of the range of the section");let n;return n=o<1<<30?new Uint8Array(o):new Se(o),await t.readToBuffer(n,0,o,e[a][0].p+i),n}async function Ka(t,e,a,i,o){const n=16*t.pageSize;if(await ka(t,e,o),await ka(a,i,o),e[o][0].size!=i[o][0].size)return!1;const l=e[o][0].size;for(let e=0;e=0)e=await sa();else{if(!(["BLS12381"].indexOf(a)>=0))throw new Error(`Curve not supported: ${t}`);e=await ca()}return e}var ti=Object.freeze({__proto__:null,getCurveFromR:Ya,getCurveFromQ:Ja,getCurveFromName:Xa}),ei="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},ai={exports:{}},ii=function t(e,a){if(!e){var i=new oi(a);throw Error.captureStackTrace&&Error.captureStackTrace(i,t),i}};class oi extends Error{}oi.prototype.name="AssertionError";var ni={exports:{}};function li(t){return t.length}var ri={byteLength:li,toString:function(t){const e=t.byteLength;let a="";for(let i=0;i1&&61===t.charCodeAt(e-1)&&e--,3*e>>>2}ci[45]=62,ci[95]=63;var ui={byteLength:di,toString:function(t){const e=t.byteLength;let a="";for(let i=0;i>2]+si[(3&t[i])<<4|t[i+1]>>4]+si[(15&t[i+1])<<2|t[i+2]>>6]+si[63&t[i+2]];return e%3==2?a=a.substring(0,a.length-1)+"=":e%3==1&&(a=a.substring(0,a.length-2)+"=="),a},write:function(t,e,a=0,i=di(e)){const o=Math.min(i,t.byteLength-a);for(let a=0,i=0;i>4,t[i++]=(15&n)<<4|l>>2,t[i++]=(3&l)<<6|63&r}return o}};function gi(t){return t.length>>>1}var fi={byteLength:gi,toString:function(t){const e=t.byteLength;t=new DataView(t.buffer,t.byteOffset,e);let a="",i=0;for(let o=e-e%4;i=48&&t<=57?t-48:t>=65&&t<=70?t-65+10:t>=97&&t<=102?t-97+10:void 0}function _i(t){let e=0;for(let a=0,i=t.length;a=55296&&o<=56319&&a+1=56320&&i<=57343){e+=4,a++;continue}}e+=o<=127?1:o<=2047?2:3}return e}let pi,mi;if("undefined"!=typeof TextDecoder){const t=new TextDecoder;pi=function(e){return t.decode(e)}}else pi=function(t){const e=t.byteLength;let a="",i=0;for(;i0){let e=0;for(;e>i,i-=6;i>=0;)t[l++]=128|a>>i&63,i-=6;n+=a>=65536?2:1}return o};var wi={byteLength:_i,toString:pi,write:mi};function Li(t){return 2*t.length}var bi,yi,Ai={byteLength:Li,toString:function(t){const e=t.byteLength;let a="";for(let i=0;i>8,l=o%256;t[a+2*i]=l,t[a+2*i+1]=n}return o}};!function(t,e){const a=ri,i=ui,o=fi,n=wi,l=Ai,r=255===new Uint8Array(Uint16Array.of(255).buffer)[0];function s(t){switch(t){case"ascii":return a;case"base64":return i;case"hex":return o;case"utf8":case"utf-8":case void 0:return n;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return l;default:throw new Error(`Unknown encoding: ${t}`)}}function c(t){return t instanceof Uint8Array}function d(t,e,a){return"string"==typeof t?function(t,e){const a=s(e),i=new Uint8Array(a.byteLength(t));return a.write(i,t,0,i.byteLength),i}(t,e):Array.isArray(t)?function(t){const e=new Uint8Array(t.length);return e.set(t),e}(t):ArrayBuffer.isView(t)?function(t){const e=new Uint8Array(t.byteLength);return e.set(t),e}(t):function(t,e,a){return new Uint8Array(t,e,a)}(t,e,a)}function u(t,e,a,i,o){if(0===t.byteLength)return-1;if("string"==typeof a?(i=a,a=0):void 0===a?a=o?0:t.length-1:a<0&&(a+=t.byteLength),a>=t.byteLength){if(o)return-1;a=t.byteLength-1}else if(a<0){if(!o)return-1;a=0}if("string"==typeof e)e=d(e,i);else if("number"==typeof e)return e&=255,o?t.indexOf(e,a):t.lastIndexOf(e,a);if(0===e.byteLength)return-1;if(o){let i=-1;for(let o=a;ot.byteLength&&(a=t.byteLength-e.byteLength);for(let i=a;i>=0;i--){let a=!0;for(let o=0;oo)return 1}return t.byteLength>e.byteLength?1:t.byteLengtht+e.byteLength),0));const a=new Uint8Array(e);let i=0;for(const e of t){if(i+e.byteLength>a.byteLength){const t=e.subarray(0,a.byteLength-i);return a.set(t,i),a}a.set(e,i),i+=e.byteLength}return a},copy:function(t,e,a=0,i=0,o=t.byteLength){if(o>0&&o=t.byteLength)throw new RangeError("sourceStart is out of range");if(o<0)throw new RangeError("sourceEnd is out of range");a>=e.byteLength&&(a=e.byteLength),o>t.byteLength&&(o=t.byteLength),e.byteLength-a=o||i<=a?"":(a<0&&(a=0),i>o&&(i=o),(0!==a||i{for(var t=new Uint8Array(128),e=0;e<64;e++)t[e<26?e+65:e<52?e+71:e<62?e-4:4*e-205]=e;return e=>{for(var a=e.length,i=new Uint8Array(3*(a-("="==e[a-1])-("="==e[a-2]))/4|0),o=0,n=0;o>4,i[n++]=r<<4|s>>2,i[n++]=s<<6|c}return i}})(),e=((t,e)=>function(){return e||(0,t[Object.keys(t)[0]])((e={exports:{}}).exports,e),e.exports})({"wasm-binary:./blake2b.wat"(e,a){a.exports=t("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")}}),a=e(),i=WebAssembly.compile(a);return bi=async t=>(await WebAssembly.instantiate(await i,t)).exports}()().then((t=>{Fi=t})),Ei=64,vi=[];ai.exports=Ui;var Bi=ai.exports.BYTES_MIN=16,Si=ai.exports.BYTES_MAX=64;ai.exports.BYTES=32;var Pi=ai.exports.KEYBYTES_MIN=16,Gi=ai.exports.KEYBYTES_MAX=64;ai.exports.KEYBYTES=32;var Oi=ai.exports.SALTBYTES=16,Ti=ai.exports.PERSONALBYTES=16;function Ui(t,e,a,i,o){if(!(this instanceof Ui))return new Ui(t,e,a,i,o);if(!Fi)throw new Error("WASM not loaded. Wait for Blake2b.ready(cb)");t||(t=32),!0!==o&&(Ci(t>=Bi,"digestLength must be at least "+Bi+", was given "+t),Ci(t<=Si,"digestLength must be at most "+Si+", was given "+t),null!=e&&(Ci(e instanceof Uint8Array,"key must be Uint8Array or Buffer"),Ci(e.length>=Pi,"key must be at least "+Pi+", was given "+e.length),Ci(e.length<=Gi,"key must be at least "+Gi+", was given "+e.length)),null!=a&&(Ci(a instanceof Uint8Array,"salt must be Uint8Array or Buffer"),Ci(a.length===Oi,"salt must be exactly "+Oi+", was given "+a.length)),null!=i&&(Ci(i instanceof Uint8Array,"personal must be Uint8Array or Buffer"),Ci(i.length===Ti,"personal must be exactly "+Ti+", was given "+i.length))),vi.length||(vi.push(Ei),Ei+=216),this.digestLength=t,this.finalized=!1,this.pointer=vi.pop(),this._memory=new Uint8Array(Fi.memory.buffer),this._memory.fill(0,0,64),this._memory[0]=this.digestLength,this._memory[1]=e?e.length:0,this._memory[2]=1,this._memory[3]=1,a&&this._memory.set(a,32),i&&this._memory.set(i,48),this.pointer+216>this._memory.length&&this._realloc(this.pointer+216),Fi.blake2b_init(this.pointer,this.digestLength),e&&(this.update(e),this._memory.fill(0,Ei,Ei+e.length),this._memory[this.pointer+200]=128)}function zi(){}function Qi(t){return(0!=(4294901760&t)?(t&=4294901760,16):0)|(0!=(4278255360&t)?(t&=4278255360,8):0)|(0!=(4042322160&t)?(t&=4042322160,4):0)|(0!=(3435973836&t)?(t&=3435973836,2):0)|0!=(2863311530&t)}function qi(t,e){const a=new DataView(t.buffer,t.byteOffset,t.byteLength);let i="";for(let t=0;t<4;t++){t>0&&(i+="\n"),i+="\t\t";for(let e=0;e<4;e++)e>0&&(i+=" "),i+=a.getUint32(16*t+4*e).toString(16).padStart(8,"0")}return e&&(i=e+"\n"+i),i}function Mi(t,e){if(t.byteLength!=e.byteLength)return!1;for(var a=new Int8Array(t),i=new Int8Array(e),o=0;o!=t.byteLength;o++)if(a[o]!=i[o])return!1;return!0}function ki(t){const e=t.getPartialHash(),a=ai.exports(64);return a.setPartialHash(e),a}async function Ri(t,e,a,i,o){if(t.G1.isZero(e))return!1;if(t.G1.isZero(a))return!1;if(t.G2.isZero(i))return!1;if(t.G2.isZero(o))return!1;return await t.pairingEq(e,o,t.G1.neg(a),i)}function Di(t){let e=new Uint8Array(t);return globalThis.crypto.getRandomValues(e),e}async function Ni(t){{const e=await globalThis.crypto.subtle.digest("SHA-256",t.buffer);return new Uint8Array(e)}}function $i(t,e){return new DataView(t.buffer).getUint32(e,!1)}async function Vi(t){for(;!t;)t=await window.prompt("Enter a random text. (Entropy): ","");const e=ai.exports(64);e.update(Di(64));const a=new TextEncoder;e.update(a.encode(t));const i=e.digest(),o=[];for(let t=0;t<8;t++)o[t]=$i(i,4*t);return new Q(o)}async function Ki(t,e){let a,i;e<32?(a=1<>>0,i=1):(a=4294967296,i=1<>>0);let o=t;for(let t=0;t{a[i]=Zi(t,e[i])})),a}return"bigint"==typeof e||void 0!==e.eq?e.toString(10):e}Ui.prototype._realloc=function(t){Fi.memory.grow(Math.max(0,Math.ceil(Math.abs(t-this._memory.length)/65536))),this._memory=new Uint8Array(Fi.memory.buffer)},Ui.prototype.update=function(t){return Ci(!1===this.finalized,"Hash instance finalized"),Ci(t instanceof Uint8Array,"input must be Uint8Array or Buffer"),Ei+t.length>this._memory.length&&this._realloc(Ei+t.length),this._memory.set(t,Ei),Fi.blake2b_update(this.pointer,Ei,Ei+t.length),this},Ui.prototype.digest=function(t){if(Ci(!1===this.finalized,"Hash instance finalized"),this.finalized=!0,vi.push(this.pointer),Fi.blake2b_final(this.pointer),!t||"binary"===t)return this._memory.slice(this.pointer+128,this.pointer+128+this.digestLength);if("string"==typeof t)return Ii.toString(this._memory,t,this.pointer+128,this.pointer+128+this.digestLength);Ci(t instanceof Uint8Array&&t.length>=this.digestLength,"input must be Uint8Array or Buffer");for(var e=0;et()),t):t(new Error("WebAssembly not supported"))},Ui.prototype.ready=Ui.ready,Ui.prototype.getPartialHash=function(){return this._memory.slice(this.pointer,this.pointer+216)},Ui.prototype.setPartialHash=function(t){this._memory.set(t,this.pointer)};const Wi=1,Yi=2,Ji=10,Xi=2,to=3,eo=4,ao=5,io=6,oo=7,no=8,lo=9,ro=10,so=11,co=12,uo=13,go=14,fo=15,ho=16,_o=17;async function po(t,e){await qa(t,1),await t.writeULE32(1),await Ma(t);const a=await Ja(e.q);await qa(t,2);const i=a.q,o=8*(Math.floor((ga.bitLength(i)-1)/64)+1),n=a.r,l=8*(Math.floor((ga.bitLength(n)-1)/64)+1);await t.writeULE32(o),await Da(t,i,o),await t.writeULE32(l),await Da(t,n,l),await t.writeULE32(e.nVars),await t.writeULE32(e.nPublic),await t.writeULE32(e.domainSize),await mo(t,a,e.vk_alpha_1),await mo(t,a,e.vk_beta_1),await wo(t,a,e.vk_beta_2),await wo(t,a,e.vk_gamma_2),await mo(t,a,e.vk_delta_1),await wo(t,a,e.vk_delta_2),await Ma(t)}async function mo(t,e,a){const i=new Uint8Array(2*e.G1.F.n8);e.G1.toRprLEM(i,0,a),await t.write(i)}async function wo(t,e,a){const i=new Uint8Array(2*e.G2.F.n8);e.G2.toRprLEM(i,0,a),await t.write(i)}async function Lo(t,e,a){const i=await t.read(2*e.G1.F.n8),o=e.G1.fromRprLEM(i,0);return a?e.G1.toObject(o):o}async function bo(t,e,a){const i=await t.read(2*e.G2.F.n8),o=e.G2.fromRprLEM(i,0);return a?e.G2.toObject(o):o}async function yo(t,e,a){await ka(t,e,1);const i=await t.readULE32();if(await Ra(t),i===Wi)return await async function(t,e,a){const i={protocol:"groth16"};await ka(t,e,2);const o=await t.readULE32();i.n8q=o,i.q=await Na(t,o);const n=await t.readULE32();return i.n8r=n,i.r=await Na(t,n),i.curve=await Ja(i.q),i.nVars=await t.readULE32(),i.nPublic=await t.readULE32(),i.domainSize=await t.readULE32(),i.power=Qi(i.domainSize),i.vk_alpha_1=await Lo(t,i.curve,a),i.vk_beta_1=await Lo(t,i.curve,a),i.vk_beta_2=await bo(t,i.curve,a),i.vk_gamma_2=await bo(t,i.curve,a),i.vk_delta_1=await Lo(t,i.curve,a),i.vk_delta_2=await bo(t,i.curve,a),await Ra(t),i}(t,e,a);if(i===Yi)return await async function(t,e,a){const i={protocol:"plonk"};await ka(t,e,2);const o=await t.readULE32();i.n8q=o,i.q=await Na(t,o);const n=await t.readULE32();return i.n8r=n,i.r=await Na(t,n),i.curve=await Ja(i.q),i.nVars=await t.readULE32(),i.nPublic=await t.readULE32(),i.domainSize=await t.readULE32(),i.power=Qi(i.domainSize),i.nAdditions=await t.readULE32(),i.nConstraints=await t.readULE32(),i.k1=await t.read(n),i.k2=await t.read(n),i.Qm=await Lo(t,i.curve,a),i.Ql=await Lo(t,i.curve,a),i.Qr=await Lo(t,i.curve,a),i.Qo=await Lo(t,i.curve,a),i.Qc=await Lo(t,i.curve,a),i.S1=await Lo(t,i.curve,a),i.S2=await Lo(t,i.curve,a),i.S3=await Lo(t,i.curve,a),i.X_2=await bo(t,i.curve,a),await Ra(t),i}(t,e,a);if(i===Ji)return await async function(t,e,a){const i={protocol:"fflonk"};i.protocolId=Ji,await ka(t,e,Xi);const o=await t.readULE32();i.n8q=o,i.q=await Na(t,o),i.curve=await Ja(i.q);const n=await t.readULE32();return i.n8r=n,i.r=await Na(t,n),i.nVars=await t.readULE32(),i.nPublic=await t.readULE32(),i.domainSize=await t.readULE32(),i.power=Qi(i.domainSize),i.nAdditions=await t.readULE32(),i.nConstraints=await t.readULE32(),i.k1=await t.read(n),i.k2=await t.read(n),i.w3=await t.read(n),i.w4=await t.read(n),i.w8=await t.read(n),i.wr=await t.read(n),i.X_2=await bo(t,i.curve,a),i.C0=await Lo(t,i.curve,a),await Ra(t),i}(t,e,a);throw new Error("Protocol not supported: ")}async function Ao(t,e,a){const i={delta:{}};i.deltaAfter=await Lo(t,e,a),i.delta.g1_s=await Lo(t,e,a),i.delta.g1_sx=await Lo(t,e,a),i.delta.g2_spx=await bo(t,e,a),i.transcript=await t.read(64),i.type=await t.readULE32();const o=await t.readULE32(),n=t.pos;let l=0;for(;t.pos-n0){const e=new Uint8Array(i);await t.writeULE32(e.byteLength),await t.write(e)}else await t.writeULE32(0)}async function Fo(t,e,a){await qa(t,10),await t.write(a.csHash),await t.writeULE32(a.contributions.length);for(let i=0;i0;)a.unshift(0),t--}return a}async function Uo(t,e){let a,i,o;e=e||{};let n=1,l=0,r=0,s=!1;if(t instanceof WebAssembly.Instance)a=t,s=!0;else{let s=32767;if(e.memorySize&&(s=parseInt(e.memorySize),s<0))throw new Error("Invalid memory size");let c=!1;for(;!c;)try{o=new WebAssembly.Memory({initial:s}),c=!0}catch(t){if(s<=1)throw t;console.warn("Could not allocate "+1024*s*64+" bytes. This may cause severe instability. Trying with "+1024*s*64/2+" bytes"),s=Math.floor(s/2)}const g=await WebAssembly.compile(t);let f="",h="";a=await WebAssembly.instantiate(g,{env:{memory:o},runtime:{exceptionHandler:function(t){let e;throw e=1===t?"Signal not found. ":2===t?"Too many signals set. ":3===t?"Signal already set. ":4===t?"Assert Failed. ":5===t?"Not enough memory. ":6===t?"Input signal array access exceeds the size. ":"Unknown error. ",console.error("ERROR: ",t,f),new Error(e+f)},printErrorMessage:function(){f+=d()+"\n"},writeBufferMessage:function(){const t=d();"\n"===t?(console.log(h),h=""):(""!==h&&(h+=" "),h+=t)},showSharedRWMemory:function(){const t=a.exports.getFieldNumLen32(),e=new Uint32Array(t);for(let i=0;i=2&&(l>=1||r>=7)){""!==h&&(h+=" ");const t=ga.fromArray(e,4294967296).toString();h+=t}else console.log(ga.fromArray(e,4294967296))},error:function(t,a,o,n,l,r){let s;throw s=7===t?u(a)+" "+i.getFr(n).toString()+" != "+i.getFr(l).toString()+" "+u(r):9===t?u(a)+" "+i.getFr(n).toString()+" "+u(l):5===t&&e.sym?u(a)+" "+e.sym.labelIdx2Name[l]:u(a)+" "+o+" "+n+" "+l+" "+r,console.log("ERROR: ",t,s),new Error(s)},log:function(t){console.log(i.getFr(t).toString())},logGetSignal:function(t,a){e.logGetSignal&&e.logGetSignal(t,i.getFr(a))},logSetSignal:function(t,a){e.logSetSignal&&e.logSetSignal(t,i.getFr(a))},logStartComponent:function(t){e.logStartComponent&&e.logStartComponent(t)},logFinishComponent:function(t){e.logFinishComponent&&e.logFinishComponent(t)}}})}"function"==typeof a.exports.getVersion&&(n=a.exports.getVersion()),"function"==typeof a.exports.getMinorVersion&&(l=a.exports.getMinorVersion()),"function"==typeof a.exports.getPatchVersion&&(r=a.exports.getPatchVersion());const c=e&&(e.sanityCheck||e.logGetSignal||e.logSetSignal||e.logStartComponent||e.logFinishComponent);if(2===n)i=new Qo(a,c);else{if(1!==n)throw new Error(`Unsupported circom version: ${n}`);if(s)throw new Error("Loading code from WebAssembly instance is not supported for circom version 1");i=new zo(o,a,c)}return i;function d(){let t="",e=a.exports.getMessageChar();for(;0!==e;)t+=String.fromCharCode(e),e=a.exports.getMessageChar();return t}function u(t){const e=new Uint8Array(o.buffer),a=[];for(let i=0;e[t+i]>0;i++)a.push(e[t+i]);return String.fromCharCode.apply(null,a)}}class zo{constructor(t,e,a){this.memory=t,this.i32=new Uint32Array(t.buffer),this.instance=e,this.n32=(this.instance.exports.getFrLen()>>2)-2;const i=this.instance.exports.getPRawPrime(),o=new Array(this.n32);for(let t=0;t>2)+t];this.prime=ga.fromArray(o,4294967296),this.Fr=new $(this.prime),this.mask32=ga.fromString("FFFFFFFF",16),this.NVars=this.instance.exports.getNVars(),this.n64=Math.floor((this.Fr.bitLength-1)/64)+1,this.R=this.Fr.e(ga.shiftLeft(1,64*this.n64)),this.RInv=this.Fr.inv(this.R),this.sanityCheck=a}circom_version(){return 1}async _doCalculateWitness(t,e){this.instance.exports.init(this.sanityCheck||e?1:0);const a=this.allocInt(),i=this.allocFr();Object.keys(t).forEach((e=>{const o=Oo(e),n=parseInt(o.slice(0,8),16),l=parseInt(o.slice(8,16),16);try{this.instance.exports.getSignalOffset32(a,0,n,l)}catch(t){throw new Error(`Signal ${e} is not an input of the circuit.`)}const r=this.getInt(a),s=Po(t[e]);for(let t=0;t>2]}setInt(t,e){this.i32[t>>2]=e}getFr(t){const e=this,a=t>>2;if(2147483648&e.i32[a+1]){const t=new Array(e.n32);for(let i=0;i>2]=o,void(a.i32[1+(t>>2)]=0)}a.i32[t>>2]=0,a.i32[1+(t>>2)]=2147483648;const n=ga.toArray(e,4294967296);for(let e=0;e>2)+e]=i>=0?n[i]:0}}}class Qo{constructor(t,e){this.instance=t,this.version=this.instance.exports.getVersion(),this.n32=this.instance.exports.getFieldNumLen32(),this.instance.exports.getRawPrime();const a=new Uint32Array(this.n32);for(let t=0;t{const a=Oo(e),o=parseInt(a.slice(0,8),16),n=parseInt(a.slice(8,16),16),l=Po(t[e]);if("function"==typeof this.instance.exports.getInputSignalSize){let t=this.instance.exports.getInputSignalSize(o,n);if(t<0)throw new Error(`Signal ${e} not found\n`);if(l.lengtht)throw new Error(`Too many values for input signal ${e}\n`)}for(let t=0;t1)throw new Error(t.fileName+": File has more than one header");t.pos=e[1][0].p;const a=await t.readULE32(),i=await t.read(a),o=ga.fromRprLE(i),n=await Ja(o);if(8*n.F1.n64!=a)throw new Error(t.fileName+": Invalid size");const l=await t.readULE32(),r=await t.readULE32();if(t.pos-e[1][0].p!=e[1][0].size)throw new Error("Invalid PTau header size");return{curve:n,power:l,ceremonyPower:r}}function Yo(t,e,a,i){const o={tau:{},alpha:{},beta:{}};return o.tau.g1_s=n(),o.tau.g1_sx=n(),o.alpha.g1_s=n(),o.alpha.g1_sx=n(),o.beta.g1_s=n(),o.beta.g1_sx=n(),o.tau.g2_spx=l(),o.alpha.g2_spx=l(),o.beta.g2_spx=l(),o;function n(){let o;return o=i?a.G1.fromRprLEM(t,e):a.G1.fromRprUncompressed(t,e),e+=2*a.G1.F.n8,o}function l(){let o;return o=i?a.G2.fromRprLEM(t,e):a.G2.fromRprUncompressed(t,e),e+=2*a.G2.F.n8,o}}function Jo(t,e,a,i,o){async function n(i){o?a.G1.toRprLEM(t,e,i):a.G1.toRprUncompressed(t,e,i),e+=2*a.F1.n8}async function l(i){o?a.G2.toRprLEM(t,e,i):a.G2.toRprUncompressed(t,e,i),e+=2*a.F2.n8}return n(i.tau.g1_s),n(i.tau.g1_sx),n(i.alpha.g1_s),n(i.alpha.g1_sx),n(i.beta.g1_s),n(i.beta.g1_sx),l(i.tau.g2_spx),l(i.alpha.g2_spx),l(i.beta.g2_spx),t}async function Xo(t,e){const a={};a.tauG1=await s(),a.tauG2=await c(),a.alphaG1=await s(),a.betaG1=await s(),a.betaG2=await c(),a.key=await async function(t,e,a){return Yo(await t.read(2*e.F1.n8*6+2*e.F2.n8*3),0,e,a)}(t,e,!0),a.partialHash=await t.read(216),a.nextChallenge=await t.read(64),a.type=await t.readULE32();const i=new Uint8Array(2*e.G1.F.n8*6+2*e.G2.F.n8*3);Jo(i,0,e,a.key,!1);const o=ai.exports(64);o.setPartialHash(a.partialHash),o.update(i),a.responseHash=o.digest();const n=await t.readULE32(),l=t.pos;let r=0;for(;t.pos-l1)throw new Error(t.fileName+": File has more than one contributions section");t.pos=a[7][0].p;const i=await t.readULE32(),o=[];for(let a=0;a0){const e=new Uint8Array(n);await t.writeULE32(e.byteLength),await t.write(e)}else await t.writeULE32(0);async function l(a){e.G1.toRprLEM(i,0,a),await t.write(i)}async function r(a){e.G2.toRprLEM(o,0,a),await t.write(o)}}async function an(t,e,a){await t.writeULE32(7);const i=t.pos;await t.writeULE64(0),await t.writeULE32(a.length);for(let i=0;i0?u[u.length-1].nextChallenge:on(c,d,n);const L=await Qa(a,"ptau",1,o?7:2);await Zo(L,c,d);const b=await m.read(64);if(Mi(l,w)&&(w=b,u[u.length-1].nextChallenge=w),!Mi(b,w))throw new Error("Wrong contribution. This contribution is not based on the previous hash");const y=new ai.exports(64);y.update(b);const A=[];let C;C=await x(m,L,"G1",2,2**d*2-1,[1],"tauG1"),g.tauG1=C[0],C=await x(m,L,"G2",3,2**d,[1],"tauG2"),g.tauG2=C[0],C=await x(m,L,"G1",4,2**d,[0],"alphaG1"),g.alphaG1=C[0],C=await x(m,L,"G1",5,2**d,[0],"betaG1"),g.betaG1=C[0],C=await x(m,L,"G2",6,1,[0],"betaG2"),g.betaG2=C[0],g.partialHash=y.getPartialHash();const I=await m.read(2*c.F1.n8*6+2*c.F2.n8*3);g.key=Yo(I,0,c,!1),y.update(new Uint8Array(I));const F=y.digest();if(n&&n.info(qi(F,"Contribution Response Hash imported: ")),o){const t=new ai.exports(64);t.update(F),await E(t,L,"G1",2,2**d*2-1,"tauG1",n),await E(t,L,"G2",3,2**d,"tauG2",n),await E(t,L,"G1",4,2**d,"alphaTauG1",n),await E(t,L,"G1",5,2**d,"betaTauG1",n),await E(t,L,"G2",6,1,"betaG2",n),g.nextChallenge=t.digest(),n&&n.info(qi(g.nextChallenge,"Next Challenge Hash: "))}else g.nextChallenge=l;return u.push(g),await an(L,c,u),await m.close(),await L.close(),await r.close(),g.nextChallenge;async function x(t,e,a,i,l,r,s){return o?await async function(t,e,a,i,o,l,r){const s=c[a],d=s.F.n8,u=2*s.F.n8,g=[];await qa(e,i);const f=Math.floor((1<<24)/u);A[i]=e.pos;for(let a=0;a=a&&e=e&&o1?s[s.length-2]:c;const u=s[s.length-1];if(e&&e.debug("Validating contribution #"+s[s.length-1].id),!await rn(n,u,d,e))return!1;const g=ai.exports(64);g.update(u.responseHash),e&&e.debug("Verifying powers in tau*G1 section");const f=await b(2,"G1","tauG1",2**l*2-1,[0,1],e);if(a=await ln(n,f.R1,f.R2,n.G2.g,u.tauG2),!0!==a)return e&&e.error("tauG1 section. Powers do not match"),!1;if(!n.G1.eq(n.G1.g,f.singularPoints[0]))return e&&e.error("First element of tau*G1 section must be the generator"),!1;if(!n.G1.eq(u.tauG1,f.singularPoints[1]))return e&&e.error("Second element of tau*G1 section does not match the one in the contribution section"),!1;e&&e.debug("Verifying powers in tau*G2 section");const h=await b(3,"G2","tauG2",2**l,[0,1],e);if(a=await ln(n,n.G1.g,u.tauG1,h.R1,h.R2),!0!==a)return e&&e.error("tauG2 section. Powers do not match"),!1;if(!n.G2.eq(n.G2.g,h.singularPoints[0]))return e&&e.error("First element of tau*G2 section must be the generator"),!1;if(!n.G2.eq(u.tauG2,h.singularPoints[1]))return e&&e.error("Second element of tau*G2 section does not match the one in the contribution section"),!1;e&&e.debug("Verifying powers in alpha*tau*G1 section");const _=await b(4,"G1","alphatauG1",2**l,[0],e);if(a=await ln(n,_.R1,_.R2,n.G2.g,u.tauG2),!0!==a)return e&&e.error("alphaTauG1 section. Powers do not match"),!1;if(!n.G1.eq(u.alphaG1,_.singularPoints[0]))return e&&e.error("First element of alpha*tau*G1 section (alpha*G1) does not match the one in the contribution section"),!1;e&&e.debug("Verifying powers in beta*tau*G1 section");const p=await b(5,"G1","betatauG1",2**l,[0],e);if(a=await ln(n,p.R1,p.R2,n.G2.g,u.tauG2),!0!==a)return e&&e.error("betaTauG1 section. Powers do not match"),!1;if(!n.G1.eq(u.betaG1,p.singularPoints[0]))return e&&e.error("First element of beta*tau*G1 section (beta*G1) does not match the one in the contribution section"),!1;const m=await async function(t){const e=n.G2,a=2*e.F.n8,l=new Uint8Array(a);if(!o[6])throw t.error("File has no BetaG2 section"),new Error("File has no BetaG2 section");if(o[6].length>1)throw t.error("File has no BetaG2 section"),new Error("File has more than one GetaG2 section");i.pos=o[6][0].p;const r=await i.read(a),s=e.fromRprLEM(r);return e.toRprUncompressed(l,0,s),g.update(l),s}(e);if(!n.G2.eq(u.betaG2,m))return e&&e.error("betaG2 element in betaG2 section does not match the one in the contribution section"),!1;const w=g.digest();if(l==r&&!Mi(w,u.nextChallenge))return e&&e.error("Hash of the values does not match the next challenge of the last contributor in the contributions section"),!1;e&&e.info(qi(w,"Next challenge hash: ")),L(u,d);for(let t=s.length-2;t>=0;t--){const a=s[t],i=t>0?s[t-1]:c;if(!await rn(n,a,i,e))return!1;L(a,i)}if(e&&e.info("-----------------------------------------------------"),o[12]&&o[13]&&o[14]&&o[15]){let t;if(t=await y("G1",2,12,"tauG1",e),!t)return!1;if(t=await y("G2",3,13,"tauG2",e),!t)return!1;if(t=await y("G1",4,14,"alphaTauG1",e),!t)return!1;if(t=await y("G1",5,15,"betaTauG1",e),!t)return!1}else e&&e.warn('this file does not contain phase2 precalculated values. Please run: \n snarkjs "powersoftau preparephase2" to prepare this file to be used in the phase2 ceremony.');return await i.close(),e&&e.info("Powers of Tau Ok!"),!0;function L(t,a){if(!e)return;e.info("-----------------------------------------------------"),e.info(`Contribution #${t.id}: ${t.name||""}`),e.info(qi(t.nextChallenge,"Next Challenge: "));const i=new Uint8Array(2*n.G1.F.n8*6+2*n.G2.F.n8*3);Jo(i,0,n,t.key,!1);const o=ai.exports(64);o.setPartialHash(t.partialHash),o.update(i);const l=o.digest();e.info(qi(l,"Response Hash:")),e.info(qi(a.nextChallenge,"Response Hash:")),1==t.type&&(e.info(`Beacon generator: ${Hi(t.beaconHash)}`),e.info(`Beacon iterations Exp: ${t.numIterationsExp}`))}async function b(t,e,a,l,r,s){const c=n[e],d=2*c.F.n8;await ka(i,o,t);const u=[];let f=c.zero,h=c.zero,_=c.zero;for(let t=0;t0){const t=c.fromRprLEM(o,0),e=$i(Di(4),0);f=c.add(f,c.timesScalar(_,e)),h=c.add(h,c.timesScalar(t,e))}const m=await c.multiExpAffine(o.slice(0,(e-1)*d),p),w=await c.multiExpAffine(o.slice(d),p);f=c.add(f,m),h=c.add(h,w),_=c.fromRprLEM(o,(e-1)*d);for(let a=0;a=t&&i1;)c/=2,d+=1;if(2**d!=s)throw new Error("Invalid file size");o&&o.debug("Power to tau size: "+d);const u=await Vi(i),g=await Ta(a),f=ai.exports(64);for(let t=0;t{o.debug(e+".g1_s: "+t.G1.toString(p[e].g1_s,16)),o.debug(e+".g1_sx: "+t.G1.toString(p[e].g1_sx,16)),o.debug(e+".g2_sp: "+t.G2.toString(p[e].g2_sp,16)),o.debug(e+".g2_spx: "+t.G2.toString(p[e].g2_spx,16)),o.debug("")}));const m=ai.exports(64);await g.write(_),m.update(_),await cn(n,g,m,t,"G1",2**d*2-1,t.Fr.one,p.tau.prvKey,"COMPRESSED","tauG1",o),await cn(n,g,m,t,"G2",2**d,t.Fr.one,p.tau.prvKey,"COMPRESSED","tauG2",o),await cn(n,g,m,t,"G1",2**d,p.alpha.prvKey,p.tau.prvKey,"COMPRESSED","alphaTauG1",o),await cn(n,g,m,t,"G1",2**d,p.beta.prvKey,p.tau.prvKey,"COMPRESSED","betaTauG1",o),await cn(n,g,m,t,"G2",1,p.beta.prvKey,p.tau.prvKey,"COMPRESSED","betaTauG2",o);const w=new Uint8Array(2*t.F1.n8*6+2*t.F2.n8*3);Jo(w,0,t,p,!1),await g.write(w),m.update(w);const L=m.digest();o&&o.info(qi(L,"Contribution Response Hash: ")),await g.close(),await n.close()},beacon:async function(t,e,a,i,o,n){const l=ji(i);if(0==l.byteLength||2*l.byteLength!=i.length)return n&&n.error("Invalid Beacon Hash. (It must be a valid hexadecimal sequence)"),!1;if(l.length>=256)return n&&n.error("Maximum length of beacon hash is 255 bytes"),!1;if((o=parseInt(o))<10||o>63)return n&&n.error("Invalid numIterationsExp. (Must be between 10 and 63)"),!1;await ai.exports.ready();const{fd:r,sections:s}=await za(t,"ptau",1),{curve:c,power:d,ceremonyPower:u}=await Wo(r,s);if(d!=u)return n&&n.error("This file has been reduced. You cannot contribute into a reduced file."),!1;s[12]&&n&&n.warn("Contributing into a file that has phase2 calculated. You will have to prepare phase2 again.");const g=await tn(r,c,s),f={name:a,type:1,numIterationsExp:o,beaconHash:l};let h;h=g.length>0?g[g.length-1].nextChallenge:on(c,d,n),f.key=await nn(c,h,l,o);const _=new ai.exports(64);_.update(h);const p=await Qa(e,"ptau",1,7);await Zo(p,c,d);const m=[];let w;w=await A(2,"G1",2**d*2-1,c.Fr.e(1),f.key.tau.prvKey,"tauG1",n),f.tauG1=w[1],w=await A(3,"G2",2**d,c.Fr.e(1),f.key.tau.prvKey,"tauG2",n),f.tauG2=w[1],w=await A(4,"G1",2**d,f.key.alpha.prvKey,f.key.tau.prvKey,"alphaTauG1",n),f.alphaG1=w[0],w=await A(5,"G1",2**d,f.key.beta.prvKey,f.key.tau.prvKey,"betaTauG1",n),f.betaG1=w[0],w=await A(6,"G2",1,f.key.beta.prvKey,f.key.tau.prvKey,"betaTauG2",n),f.betaG2=w[0],f.partialHash=_.getPartialHash();const L=new Uint8Array(2*c.F1.n8*6+2*c.F2.n8*3);Jo(L,0,c,f.key,!1),_.update(new Uint8Array(L));const b=_.digest();n&&n.info(qi(b,"Contribution Response Hash imported: "));const y=new ai.exports(64);return y.update(b),await C(p,"G1",2,2**d*2-1,"tauG1",n),await C(p,"G2",3,2**d,"tauG2",n),await C(p,"G1",4,2**d,"alphaTauG1",n),await C(p,"G1",5,2**d,"betaTauG1",n),await C(p,"G2",6,1,"betaG2",n),f.nextChallenge=y.digest(),n&&n.info(qi(f.nextChallenge,"Next Challenge Hash: ")),g.push(f),await an(p,c,g),await r.close(),await p.close(),b;async function A(t,e,a,i,o,n,l){const d=[];r.pos=s[t][0].p,await qa(p,t),m[t]=p.pos;const u=c[e],g=2*u.F.n8,f=Math.floor((1<<20)/g);let h=i;for(let t=0;t0?d[d.length-1].nextChallenge:on(r,s,o),u.key=Ho(r,g,f);const h=new ai.exports(64);h.update(g);const _=await Qa(e,"ptau",1,7);await Zo(_,r,s);const p=[];let m;m=await y(2,"G1",2**s*2-1,r.Fr.e(1),u.key.tau.prvKey,"tauG1"),u.tauG1=m[1],m=await y(3,"G2",2**s,r.Fr.e(1),u.key.tau.prvKey,"tauG2"),u.tauG2=m[1],m=await y(4,"G1",2**s,u.key.alpha.prvKey,u.key.tau.prvKey,"alphaTauG1"),u.alphaG1=m[0],m=await y(5,"G1",2**s,u.key.beta.prvKey,u.key.tau.prvKey,"betaTauG1"),u.betaG1=m[0],m=await y(6,"G2",1,u.key.beta.prvKey,u.key.tau.prvKey,"betaTauG2"),u.betaG2=m[0],u.partialHash=h.getPartialHash();const w=new Uint8Array(2*r.F1.n8*6+2*r.F2.n8*3);Jo(w,0,r,u.key,!1),h.update(new Uint8Array(w));const L=h.digest();o&&o.info(qi(L,"Contribution Response Hash imported: "));const b=new ai.exports(64);return b.update(L),await A(_,"G1",2,2**s*2-1,"tauG1"),await A(_,"G2",3,2**s,"tauG2"),await A(_,"G1",4,2**s,"alphaTauG1"),await A(_,"G1",5,2**s,"betaTauG1"),await A(_,"G2",6,1,"betaG2"),u.nextChallenge=b.digest(),o&&o.info(qi(u.nextChallenge,"Next Challenge Hash: ")),d.push(u),await an(_,r,d),await n.close(),await _.close(),L;async function y(t,e,a,i,s,c){const d=[];n.pos=l[t][0].p,await qa(_,t),p[t]=_.pos;const u=r[e],g=2*u.F.n8,f=Math.floor((1<<20)/g);let m=i;for(let t=0;t=this.length&&(this.length=t+1),!0}getKeys(){const t=new hn;for(let e=0;e1<<20?new hn:[];for(let t=0;t1<<20?new hn:[];for(let t=0;t1<<20?new hn:[];for(let t=0;t{let i="";return Object.keys(a).forEach((o=>{let n=e.varIdx2Name[o];"one"==n&&(n="1");let l=t.curve.Fr.toString(a[o]);"1"==l&&(l=""),"-1"==l&&(l="-"),""!=i&&"-"!=l[0]&&(l="+"+l),""!=i&&(l=" "+l),i=i+l+n})),i},n=`[ ${o(i[0])} ] * [ ${o(i[1])} ] - [ ${o(i[2])} ] = 0`;a&&a.info(n)}},info:async function(t,e){const a=await Ln(t);return ga.eq(a.prime,yn)?e&&e.info("Curve: bn-128"):ga.eq(a.prime,bn)?e&&e.info("Curve: bls12-381"):e&&e.info(`Unknown Curve. Prime: ${ga.toString(a.prime)}`),e&&e.info(`# of Wires: ${a.nVars}`),e&&e.info(`# of Constraints: ${a.nConstraints}`),e&&e.info(`# of Private Inputs: ${a.nPrvInputs}`),e&&e.info(`# of Public Inputs: ${a.nPubInputs}`),e&&e.info(`# of Labels: ${a.nLabels}`),e&&e.info(`# of Outputs: ${a.nOutputs}`),a},exportJson:async function(t,e){const a=await Ln(t,!0,!0,!0,e),i=a.curve.Fr;return delete a.curve,delete a.F,Zi(i,a)}});async function Cn(t){const e={labelIdx2Name:["one"],varIdx2Name:["one"],componentIdx2Name:[]},a=await Ua(t),i=await a.read(a.totalSize),o=new TextDecoder("utf-8").decode(i).split("\n");for(let t=0;t Reading r1cs file");const{fd:i,sections:o}=await za(t,"r1cs",1),n=await wn(i,o,{loadConstraints:!1,loadCustomGates:!1});a&&a.info("> Reading witness file");const{fd:l,sections:r}=await za(e,"wtns",2),s=await vo(l,r);if(!ga.eq(n.prime,s.q))throw new Error("Curve of the witness does not match the curve of the proving key");const c=await Va(l,r,2);await l.close();const d=(await Ya(n.prime)).Fr,u=d.n8,g=await Va(i,o,2);a&&(a.info("----------------------------"),a.info(" WITNESS CHECK"),a.info(` Curve: ${n.curve.name}`),a.info(` Vars (wires): ${n.nVars}`),a.info(` Outputs: ${n.nOutputs}`),a.info(` Public Inputs: ${n.nPubInputs}`),a.info(` Private Inputs: ${n.nPrvInputs}`),a.info(` Labels: ${n.nLabels}`),a.info(` Constraints: ${n.nConstraints}`),a.info(` Custom Gates: ${n.useCustomGates}`),a.info("----------------------------")),a&&a.info("> Checking witness correctness");let f=0,h=!0;for(let t=0;t{const i=function(t){return d.fromRprLE(c.slice(t*u,t*u+u))}(a),o=t[a];e=d.add(e,d.mul(i,o))})),e}function p(){const t={},e=g.slice(f,f+4);f+=4;const a=new DataView(e.buffer).getUint32(0,!0),i=g.slice(f,f+(4+n.n8)*a);f+=(4+n.n8)*a;const o=new DataView(i.buffer);for(let e=0;e=this.length&&(this.length=t+1),!0}getKeys(){const t=new Bn;for(let e=0;es)return i&&i.error(`circuit too big for this power of tau ceremony. ${u.nConstraints}*2 > 2**${s}`),-1;if(!l[12])return i&&i.error("Powers of tau is not prepared."),-1;const p=u.nOutputs+u.nPubInputs,m=2**_;await qa(g,1),await g.writeULE32(1),await Ma(g),await qa(g,2);const w=r.q,L=8*(Math.floor((ga.bitLength(w)-1)/64)+1),b=r.r,y=8*(Math.floor((ga.bitLength(b)-1)/64)+1),A=ga.mod(ga.shl(1,8*y),b),C=r.Fr.e(ga.mod(ga.mul(A,A),b));let I,F,x;await g.writeULE32(L),await Da(g,w,L),await g.writeULE32(y),await Da(g,b,y),await g.writeULE32(u.nVars),await g.writeULE32(p),await g.writeULE32(m),I=await n.read(f,l[4][0].p),await g.write(I),I=await r.G1.batchLEMtoU(I),o.update(I),F=await n.read(f,l[5][0].p),await g.write(F),F=await r.G1.batchLEMtoU(F),o.update(F),x=await n.read(h,l[6][0].p),await g.write(x),x=await r.G2.batchLEMtoU(x),o.update(x);const E=new Uint8Array(f);r.G1.toRprLEM(E,0,r.G1.g);const v=new Uint8Array(h);r.G2.toRprLEM(v,0,r.G2.g);const B=new Uint8Array(f);r.G1.toRprUncompressed(B,0,r.G1.g);const S=new Uint8Array(h);r.G2.toRprUncompressed(S,0,r.G2.g),await g.write(v),await g.write(E),await g.write(v),o.update(S),o.update(B),o.update(S),await Ma(g),i&&i.info("Reading r1cs");let P=await Va(c,d,2);const G=new Bn(u.nVars),O=new Bn(u.nVars),T=new Bn(u.nVars),U=new Bn(u.nVars-p-1),z=new Array(p+1);i&&i.info("Reading tauG1");let Q=await Va(n,l,12,(m-1)*f,m*f);i&&i.info("Reading tauG2");let q=await Va(n,l,13,(m-1)*h,m*h);i&&i.info("Reading alphatauG1");let M=await Va(n,l,14,(m-1)*f,m*f);i&&i.info("Reading betatauG1");let k=await Va(n,l,15,(m-1)*f,m*f);await async function(){const t=new Uint8Array(12+r.Fr.n8),e=new DataView(t.buffer),a=new Uint8Array(r.Fr.n8);r.Fr.toRprLE(a,0,r.Fr.e(1));let o=0;function n(){const t=P.slice(o,o+4);o+=4;return new DataView(t.buffer).getUint32(0,!0)}const l=new Bn;for(let t=0;t=0?r.Fr.fromRprLE(P.slice(i[3],i[3]+r.Fr.n8),0):r.Fr.fromRprLE(a,0);const n=r.Fr.mul(o,C);r.Fr.toRprLE(t,12,n),s.set(t,d),d+=t.length}await g.write(s),await Ma(g)}(),await D(3,"G1",z,"IC"),await async function(){await qa(g,9);const t=new Se(m*f);if(_(i&&i.debug(`Writing points end ${n}: ${d}/${a.length}`),t)))),c+=o,t++}const d=await Promise.all(s);for(let t=0;t32768?(f=new Se(_*n),h=new Se(_*r.Fr.n8)):(f=new Uint8Array(_*n),h=new Uint8Array(_*r.Fr.n8));let p=0,m=0;const w=[Q,q,M,k],L=new Uint8Array(r.Fr.n8);r.Fr.toRprLE(L,0,r.Fr.e(1));let b=0;for(let t=0;t=0?h.set(P.slice(e[t][o][2],e[t][o][2]+r.Fr.n8),b*r.Fr.n8):h.set(L,b*r.Fr.n8),b++;if(e.length>1){const t=[];t.push({cmd:"ALLOCSET",var:0,buff:f}),t.push({cmd:"ALLOCSET",var:1,buff:h}),t.push({cmd:"ALLOC",var:2,len:e.length*l}),p=0,m=0;let a=0;for(let i=0;i=0;t--){const e=d.contributions[t];i&&i.info("-------------------------"),i&&i.info(qi(e.contributionHash,`contribution #${t+1} ${e.name?e.name:""}:`)),1==e.type&&(i&&i.info(`Beacon generator: ${Hi(e.beaconHash)}`),i&&i.info(`Beacon iterations Exp: ${e.numIterationsExp}`))}return i&&i.info("-------------------------"),i&&i.info("ZKey Ok!"),!0;async function w(t,e){const a=2*s.G1.F.n8,i=t.byteLength/a,o=s.tm.concurrency,n=Math.floor(i/o),l=[];for(let a=0;a Detected protocol: "+o.protocol),"groth16"===o.protocol)n=await async function(t,e,a){const i=await Ja(t.q),o=2*i.G1.F.n8,n=await i.pairing(t.vk_alpha_1,t.vk_beta_2);let l={protocol:t.protocol,curve:i.name,nPublic:t.nPublic,vk_alpha_1:i.G1.toObject(t.vk_alpha_1),vk_beta_2:i.G2.toObject(t.vk_beta_2),vk_gamma_2:i.G2.toObject(t.vk_gamma_2),vk_delta_2:i.G2.toObject(t.vk_delta_2),vk_alphabeta_12:i.Gt.toObject(n)};await ka(e,a,3),l.IC=[];for(let a=0;a<=t.nPublic;a++){const t=await e.read(o),a=i.G1.toObject(t);l.IC.push(a)}return await Ra(e),l=On(l),l}(o,a,i);else if("plonk"===o.protocol)n=await async function(t){const e=await Ja(t.q);let a={protocol:t.protocol,curve:e.name,nPublic:t.nPublic,power:t.power,k1:e.Fr.toObject(t.k1),k2:e.Fr.toObject(t.k2),Qm:e.G1.toObject(t.Qm),Ql:e.G1.toObject(t.Ql),Qr:e.G1.toObject(t.Qr),Qo:e.G1.toObject(t.Qo),Qc:e.G1.toObject(t.Qc),S1:e.G1.toObject(t.S1),S2:e.G1.toObject(t.S2),S3:e.G1.toObject(t.S3),X_2:e.G2.toObject(t.X_2),w:e.Fr.toObject(e.Fr.w[t.power])};return a=On(a),a}(o);else{if(!o.protocolId||o.protocolId!==Ji)throw new Error("zkey file protocol unrecognized");n=await async function(t,e){const a=await Ja(t.q);let i={protocol:t.protocol,curve:a.name,nPublic:t.nPublic,power:t.power,k1:a.Fr.toObject(t.k1),k2:a.Fr.toObject(t.k2),w:a.Fr.toObject(a.Fr.w[t.power]),w3:a.Fr.toObject(t.w3),w4:a.Fr.toObject(t.w4),w8:a.Fr.toObject(t.w8),wr:a.Fr.toObject(t.wr),X_2:a.G2.toObject(t.X_2),C0:a.G1.toObject(t.C0)};return On(i)}(o)}return await a.close(),e&&e.info("EXPORT VERIFICATION KEY FINISHED"),n}var Un={};const{unstringifyBigInts:zn,stringifyBigInts:Qn}=fa;async function qn(t,e,a){a&&a.info("FFLONK EXPORT SOLIDITY VERIFIER STARTED");const i=await Xa(t.curve);let o=c(t.w3);t.w3_2=d(i.Fr.square(o));let n=c(t.w4);t.w4_2=d(i.Fr.square(n)),t.w4_3=d(i.Fr.mul(i.Fr.square(n),n));let l=c(t.w8),r=i.Fr.one;for(let e=1;e<8;e++)r=i.Fr.mul(r,l),t["w8_"+e]=d(r);let s=e[t.protocol];return a&&a.info("FFLONK EXPORT SOLIDITY VERIFIER FINISHED"),Un.render(s,t);function c(t){const e=zn(t);return i.Fr.fromObject(e)}function d(t){const e=i.Fr.toObject(t);return Qn(e)}}var Mn=Object.freeze({__proto__:null,newZKey:Sn,exportBellman:async function(t,e,a){const{fd:i,sections:o}=await za(t,"zkey",2),n=await yo(i,o);if("groth16"!=n.protocol)throw new Error("zkey file is not groth16");const l=await Ja(n.q),r=2*l.G1.F.n8,s=2*l.G2.F.n8,c=await Co(i,l,o),d=await Ta(e);let u;await w(n.vk_alpha_1),await w(n.vk_beta_1),await L(n.vk_beta_2),await L(n.vk_gamma_2),await w(n.vk_delta_1),await L(n.vk_delta_2),u=await Va(i,o,3),u=await l.G1.batchLEMtoU(u),await b("G1",u);const g=await Va(i,o,9);let f,h,_,p,m;f=await l.G1.fft(g,"affine","jacobian",a),f=await l.G1.batchApplyKey(f,l.Fr.neg(l.Fr.e(2)),l.Fr.w[n.power+1],"jacobian","affine",a),f=f.slice(0,f.byteLength-r),f=await l.G1.batchLEMtoU(f),await b("G1",f),h=await Va(i,o,8),h=await l.G1.batchLEMtoU(h),await b("G1",h),_=await Va(i,o,5),_=await l.G1.batchLEMtoU(_),await b("G1",_),p=await Va(i,o,6),p=await l.G1.batchLEMtoU(p),await b("G1",p),m=await Va(i,o,7),m=await l.G2.batchLEMtoU(m),await b("G2",m),await d.write(c.csHash),await async function(t){const e=new Uint8Array(4);new DataView(e.buffer,e.byteOffset,e.byteLength).setUint32(0,t,!1),await d.write(e)}(c.contributions.length);for(let t=0;tg.contributions.length)return o&&o.error("The impoerted file does not include new contributions"),!1;for(let t=0;t=256)return n&&n.error("Maximum length of beacon hash is 255 bytes"),!1;if((o=parseInt(o))<10||o>63)return n&&n.error("Invalid numIterationsExp. (Must be between 10 and 63)"),!1;const{fd:r,sections:s}=await za(t,"zkey",2),c=await yo(r,s);if("groth16"!=c.protocol)throw new Error("zkey file is not groth16");const d=await Ja(c.q),u=await Co(r,d,s),g=await Qa(e,"zkey",1,10),f=await Ki(l,o),h=ai.exports(64);h.update(u.csHash);for(let t=0;t{const i=this.curve.G1.toObject(this.polynomials[a]);t?e.polynomials[a]=i:e[a]=i})),Object.keys(this.evaluations).forEach((a=>{const i=this.curve.Fr.toObject(this.evaluations[a]);t?e.evaluations[a]=i:e[a]=i})),e}fromObjectProof(t){this.resetProof(),Object.keys(t.polynomials).forEach((e=>{this.polynomials[e]=this.curve.G1.fromObject(t.polynomials[e])})),Object.keys(t.evaluations).forEach((e=>{this.evaluations[e]=this.curve.Fr.fromObject(t.evaluations[e])}))}}var Rn,Dn={exports:{}}; +var snarkjs=function(t){"use strict";const e=[0,1,2,2,3,3,3,3,4,4,4,4,4,4,4,4];function a(t,e){return e&&10!=e?16==e?"0x"==t.slice(0,2)?BigInt(t):BigInt("0x"+t):void 0:BigInt(t)}const i=a;function o(t){const a=t.toString(16);return 4*(a.length-1)+e[parseInt(a[0],16)]}function n(t){return BigInt(t)>BigInt(e)}const c=r,d=s;function u(t){return(BigInt(t)&BigInt(1))==BigInt(1)}function g(t){let e=BigInt(t);const a=[];for(;e;)e&BigInt(1)?a.push(1):a.push(0),e>>=BigInt(1);return a}function f(t){if(t>BigInt(Number.MAX_SAFE_INTEGER))throw new Error("Number too big");return Number(t)}function h(t,e){return BigInt(t)+BigInt(e)}function _(t,e){return BigInt(t)-BigInt(e)}function p(t){return-BigInt(t)}function m(t,e){return BigInt(t)*BigInt(e)}function w(t,e){return BigInt(t)**BigInt(e)}function L(t,e){return BigInt(t)/BigInt(e)}function b(t,e){return BigInt(t)%BigInt(e)}function y(t,e){return BigInt(t)==BigInt(e)}function A(t,e){return BigInt(t)>BigInt(e)}function C(t,e){return BigInt(t)>=BigInt(e)}function I(t,e){return BigInt(t)&BigInt(e)}function F(t,e,a,i){const o="0000000"+a.toString(16),n=new Uint32Array(t.buffer,t.byteOffset+e,i/4),l=1+(4*(o.length-7)-1>>5);for(let t=0;t>5);for(let t=0;tn[n.length-e-1]=t.toString(16).padStart(8,"0"))),a(n.join(""),16)}function v(t,e,i){i=i||t.byteLength,e=e||0;const o=new DataView(t.buffer,t.byteOffset+e,i),n=new Array(i/4);for(let t=0;t=0?BigInt(t):-BigInt(t)},add:h,band:I,bitLength:o,bits:g,bor:function(t,e){return BigInt(t)|BigInt(e)},bxor:function(t,e){return BigInt(t)^BigInt(e)},div:L,e:i,eq:y,exp:function(t,e){return BigInt(t)**BigInt(e)},fromArray:function(t,e){let a=BigInt(0);e=BigInt(e);for(let i=0;i>=BigInt(1)}return a},neg:p,neq:function(t,e){return BigInt(t)!=BigInt(e)},one:G,pow:w,shiftLeft:r,shiftRight:s,shl:c,shr:d,square:function(t){return BigInt(t)*BigInt(t)},sub:_,toArray:function(t,e){const a=[];let i=BigInt(t);for(e=BigInt(e);i;)a.unshift(Number(i%e)),i/=e;return a},toLEBuff:S,toNumber:f,toRprBE:x,toRprLE:F,toString:B,zero:P});function T(t,e,a){if(l(a))return t.one;const i=g(a);if(0==i.length)return t.one;let o=e;for(let a=i.length-2;a>=0;a--)o=t.square(o),i[a]&&(o=t.mul(o,e));return o}function U(t){if(t.m%2==1)if(y(b(t.p,4),1))if(y(b(t.p,8),1))if(y(b(t.p,16),1))!function(t){t.sqrt_q=w(t.p,t.m),t.sqrt_s=0,t.sqrt_t=_(t.sqrt_q,1);for(;!u(t.sqrt_t);)t.sqrt_s=t.sqrt_s+1,t.sqrt_t=L(t.sqrt_t,2);let e=t.one;for(;t.eq(e,t.one);){const a=t.random();t.sqrt_z=t.pow(a,t.sqrt_t),e=t.pow(t.sqrt_z,2**(t.sqrt_s-1))}t.sqrt_tm1d2=L(_(t.sqrt_t,1),2),t.sqrt=function(t){const e=this;if(e.isZero(t))return e.zero;let a=e.pow(t,e.sqrt_tm1d2);const i=e.pow(e.mul(e.square(a),t),2**(e.sqrt_s-1));if(e.eq(i,e.negone))return null;let o=e.sqrt_s,n=e.mul(t,a),l=e.mul(n,a),r=e.sqrt_z;for(;!e.eq(l,e.one);){let t=e.square(l),i=1;for(;!e.eq(t,e.one);)t=e.square(t),i++;a=r;for(let t=0;t>>0,t[o]=(t[o]^t[e])>>>0,t[o]=(t[o]<<16|t[o]>>>16&65535)>>>0,t[i]=t[i]+t[o]>>>0,t[a]=(t[a]^t[i])>>>0,t[a]=(t[a]<<12|t[a]>>>20&4095)>>>0,t[e]=t[e]+t[a]>>>0,t[o]=(t[o]^t[e])>>>0,t[o]=(t[o]<<8|t[o]>>>24&255)>>>0,t[i]=t[i]+t[o]>>>0,t[a]=(t[a]^t[i])>>>0,t[a]=(t[a]<<7|t[a]>>>25&127)>>>0}class Q{constructor(t){t=t||[0,0,0,0,0,0,0,0],this.state=[1634760805,857760878,2036477234,1797285236,t[0],t[1],t[2],t[3],t[4],t[5],t[6],t[7],0,0,0,0],this.idx=16,this.buff=new Array(16)}nextU32(){return 16==this.idx&&this.update(),this.buff[this.idx++]}nextU64(){return h(m(this.nextU32(),4294967296),this.nextU32())}nextBool(){return 1==(1&this.nextU32())}update(){for(let t=0;t<16;t++)this.buff[t]=this.state[t];for(let e=0;e<10;e++)z(t=this.buff,0,4,8,12),z(t,1,5,9,13),z(t,2,6,10,14),z(t,3,7,11,15),z(t,0,5,10,15),z(t,1,6,11,12),z(t,2,7,8,13),z(t,3,4,9,14);var t;for(let t=0;t<16;t++)this.buff[t]=this.buff[t]+this.state[t]>>>0;this.idx=0,this.state[12]=this.state[12]+1>>>0,0==this.state[12]&&(this.state[13]=this.state[13]+1>>>0,0==this.state[13]&&(this.state[14]=this.state[14]+1>>>0,0==this.state[14]&&(this.state[15]=this.state[15]+1>>>0)))}}function q(t){let e=new Uint8Array(t);if(void 0!==globalThis.crypto)globalThis.crypto.getRandomValues(e);else for(let a=0;a>>0;return e}let M=null;function k(){return M||(M=new Q(function(){const t=q(32),e=new Uint32Array(t.buffer),a=[];for(let t=0;t<8;t++)a.push(e[t]);return a}()),M)}class R{constructor(t,e,a){this.F=e,this.G=t,this.opMulGF=a;let i=e.sqrt_t||e.t,o=e.sqrt_s||e.s,n=e.one;for(;e.eq(e.pow(n,e.half),e.one);)n=e.add(n,e.one);this.w=new Array(o+1),this.wi=new Array(o+1),this.w[o]=this.F.pow(n,i),this.wi[o]=this.F.inv(this.w[o]);let l=o-1;for(;l>=0;)this.w[l]=this.F.square(this.w[l+1]),this.wi[l]=this.F.square(this.wi[l+1]),l--;this.roots=[],this._setRoots(Math.min(o,15))}_setRoots(t){for(let e=t;e>=0&&!this.roots[e];e--){let t=this.F.one;const a=1<>1,r=N(t,e,a-1,i,2*o),s=N(t,e,a-1,i+o,2*o),c=new Array(n);for(let e=0;e>this.one,this.bitLength=o(this.p),this.mask=(this.one<>this.one;this.nqr=this.two;let a=this.pow(this.nqr,e);for(;!this.eq(a,this.negone);)this.nqr=this.nqr+this.one,a=this.pow(this.nqr,e);for(this.s=0,this.t=this.negone;(this.t&this.one)==this.zero;)this.s=this.s+1,this.t=this.t>>this.one;this.nqr_to_t=this.pow(this.nqr,this.t),U(this),this.FFT=new R(this,this,this.mul.bind(this)),this.fft=this.FFT.fft.bind(this.FFT),this.ifft=this.FFT.ifft.bind(this.FFT),this.w=this.FFT.w,this.wi=this.FFT.wi,this.shift=this.square(this.nqr),this.k=this.exp(this.nqr,2**this.s)}e(t,e){let a;if(e?16==e&&(a=BigInt("0x"+t)):a=BigInt(t),a<0){let t=-a;return t>=this.p&&(t%=this.p),this.p-t}return a>=this.p?a%this.p:a}add(t,e){const a=t+e;return a>=this.p?a-this.p:a}sub(t,e){return t>=e?t-e:this.p-e+t}neg(t){return t?this.p-t:t}mul(t,e){return t*e%this.p}mulScalar(t,e){return t*this.e(e)%this.p}square(t){return t*t%this.p}eq(t,e){return t==e}neq(t,e){return t!=e}lt(t,e){return(t>this.half?t-this.p:t)<(e>this.half?e-this.p:e)}gt(t,e){return(t>this.half?t-this.p:t)>(e>this.half?e-this.p:e)}leq(t,e){return(t>this.half?t-this.p:t)<=(e>this.half?e-this.p:e)}geq(t,e){return(t>this.half?t-this.p:t)>=(e>this.half?e-this.p:e)}div(t,e){return this.mul(t,this.inv(e))}idiv(t,e){if(!e)throw new Error("Division by zero");return t/e}inv(t){if(!t)throw new Error("Division by zero");let e=this.zero,a=this.p,i=this.one,o=t%this.p;for(;o;){let t=a/o;[e,i]=[i,e-t*i],[a,o]=[o,a-t*o]}return e=this.p?a-this.p:a}bor(t,e){const a=(t|e)&this.mask;return a>=this.p?a-this.p:a}bxor(t,e){const a=(t^e)&this.mask;return a>=this.p?a-this.p:a}bnot(t){const e=t^this.mask;return e>=this.p?e-this.p:e}shl(t,e){if(Number(e)=this.p?a-this.p:a}{const a=this.p-e;return Number(a)>a:this.zero}}shr(t,e){if(Number(e)>e;{const a=this.p-e;if(Number(a)=this.p?e-this.p:e}return 0}}land(t,e){return t&&e?this.one:this.zero}lor(t,e){return t||e?this.one:this.zero}lnot(t){return t?this.zero:this.one}sqrt_old(t){if(t==this.zero)return this.zero;if(this.pow(t,this.negone>>this.one)!=this.one)return null;let e=this.s,a=this.nqr_to_t,i=this.pow(t,this.t),o=this.pow(t,this.add(this.t,this.one)>>this.one);for(;i!=this.one;){let t=this.square(i),n=1;for(;t!=this.one;)n++,t=this.square(t);let l=a;for(let t=0;tthis.p>>this.one&&(o=this.neg(o)),o}normalize(t,e){if((t=BigInt(t,e))<0){let e=-t;return e>=this.p&&(e%=this.p),this.p-e}return t>=this.p?t%this.p:t}random(){const t=2*this.bitLength/8;let e=this.zero;for(let a=0;athis.half&&10==e){a="-"+(this.p-t).toString(e)}else a=t.toString(e);return a}isZero(t){return t==this.zero}fromRng(t){let e;do{e=this.zero;for(let a=0;a=this.p);return e=e*this.Ri%this.p,e}fft(t){return this.FFT.fft(t)}ifft(t){return this.FFT.ifft(t)}toRprLE(t,e,a){F(t,e,a,8*this.n64)}toRprBE(t,e,a){x(t,e,a,8*this.n64)}toRprBEM(t,e,a){return this.toRprBE(t,e,this.mul(this.R,a))}toRprLEM(t,e,a){return this.toRprLE(t,e,this.mul(this.R,a))}fromRprLE(t,e){return E(t,e,this.n8)}fromRprBE(t,e){return v(t,e,this.n8)}fromRprLEM(t,e){return this.mul(this.fromRprLE(t,e),this.Ri)}fromRprBEM(t,e){return this.mul(this.fromRprBE(t,e),this.Ri)}toObject(t){return t}}var V={bigInt2BytesLE:function(t,e){const a=Array(e);let i=BigInt(t);for(let t=0;t>=8n;return a},bigInt2U32LE:function(t,e){const a=Array(e);let i=BigInt(t);for(let t=0;t>=32n;return a},isOcamNum:function(t){return!!Array.isArray(t)&&(3==t.length&&("number"==typeof t[0]&&("number"==typeof t[1]&&!!Array.isArray(t[2]))))}},K=function(t,e,a,i,o,n,l){const r=t.addFunction(e);r.addParam("base","i32"),r.addParam("scalar","i32"),r.addParam("scalarLength","i32"),r.addParam("r","i32"),r.addLocal("i","i32"),r.addLocal("b","i32");const s=r.getCodeBuilder(),c=s.i32_const(t.alloc(a));r.addCode(s.if(s.i32_eqz(s.getLocal("scalarLength")),[...s.call(l,s.getLocal("r")),...s.ret([])])),r.addCode(s.call(n,s.getLocal("base"),c)),r.addCode(s.call(l,s.getLocal("r"))),r.addCode(s.setLocal("i",s.getLocal("scalarLength"))),r.addCode(s.block(s.loop(s.setLocal("i",s.i32_sub(s.getLocal("i"),s.i32_const(1))),s.setLocal("b",s.i32_load8_u(s.i32_add(s.getLocal("scalar"),s.getLocal("i")))),...function(){const t=[];for(let e=0;e<8;e++)t.push(...s.call(o,s.getLocal("r"),s.getLocal("r")),...s.if(s.i32_ge_u(s.getLocal("b"),s.i32_const(128>>e)),[...s.setLocal("b",s.i32_sub(s.getLocal("b"),s.i32_const(128>>e))),...s.call(i,s.getLocal("r"),c,s.getLocal("r"))]));return t}(),s.br_if(1,s.i32_eqz(s.getLocal("i"))),s.br(0))))},j=function(t,e){const a=8*t.modules[e].n64,i=t.addFunction(e+"_batchInverse");i.addParam("pIn","i32"),i.addParam("inStep","i32"),i.addParam("n","i32"),i.addParam("pOut","i32"),i.addParam("outStep","i32"),i.addLocal("itAux","i32"),i.addLocal("itIn","i32"),i.addLocal("itOut","i32"),i.addLocal("i","i32");const o=i.getCodeBuilder(),n=o.i32_const(t.alloc(a));i.addCode(o.setLocal("itAux",o.i32_load(o.i32_const(0))),o.i32_store(o.i32_const(0),o.i32_add(o.getLocal("itAux"),o.i32_mul(o.i32_add(o.getLocal("n"),o.i32_const(1)),o.i32_const(a))))),i.addCode(o.call(e+"_one",o.getLocal("itAux")),o.setLocal("itIn",o.getLocal("pIn")),o.setLocal("itAux",o.i32_add(o.getLocal("itAux"),o.i32_const(a))),o.setLocal("i",o.i32_const(0)),o.block(o.loop(o.br_if(1,o.i32_eq(o.getLocal("i"),o.getLocal("n"))),o.if(o.call(e+"_isZero",o.getLocal("itIn")),o.call(e+"_copy",o.i32_sub(o.getLocal("itAux"),o.i32_const(a)),o.getLocal("itAux")),o.call(e+"_mul",o.getLocal("itIn"),o.i32_sub(o.getLocal("itAux"),o.i32_const(a)),o.getLocal("itAux"))),o.setLocal("itIn",o.i32_add(o.getLocal("itIn"),o.getLocal("inStep"))),o.setLocal("itAux",o.i32_add(o.getLocal("itAux"),o.i32_const(a))),o.setLocal("i",o.i32_add(o.getLocal("i"),o.i32_const(1))),o.br(0))),o.setLocal("itIn",o.i32_sub(o.getLocal("itIn"),o.getLocal("inStep"))),o.setLocal("itAux",o.i32_sub(o.getLocal("itAux"),o.i32_const(a))),o.setLocal("itOut",o.i32_add(o.getLocal("pOut"),o.i32_mul(o.i32_sub(o.getLocal("n"),o.i32_const(1)),o.getLocal("outStep")))),o.call(e+"_inverse",o.getLocal("itAux"),o.getLocal("itAux")),o.block(o.loop(o.br_if(1,o.i32_eqz(o.getLocal("i"))),o.if(o.call(e+"_isZero",o.getLocal("itIn")),[...o.call(e+"_copy",o.getLocal("itAux"),o.i32_sub(o.getLocal("itAux"),o.i32_const(a))),...o.call(e+"_zero",o.getLocal("itOut"))],[...o.call(e+"_copy",o.i32_sub(o.getLocal("itAux"),o.i32_const(a)),n),...o.call(e+"_mul",o.getLocal("itAux"),o.getLocal("itIn"),o.i32_sub(o.getLocal("itAux"),o.i32_const(a))),...o.call(e+"_mul",o.getLocal("itAux"),n,o.getLocal("itOut"))]),o.setLocal("itIn",o.i32_sub(o.getLocal("itIn"),o.getLocal("inStep"))),o.setLocal("itOut",o.i32_sub(o.getLocal("itOut"),o.getLocal("outStep"))),o.setLocal("itAux",o.i32_sub(o.getLocal("itAux"),o.i32_const(a))),o.setLocal("i",o.i32_sub(o.getLocal("i"),o.i32_const(1))),o.br(0)))),i.addCode(o.i32_store(o.i32_const(0),o.getLocal("itAux")))};var H=function(t,e,a,i,o,n){void 0===n&&(n=ie?1:-1}function J(t){return t*t}function X(t){return t%2n!==0n}function tt(t){return t%2n===0n}function et(t){return t<0n}function at(t){return t>0n}function it(t){return et(t)?t.toString(2).length-1:t.toString(2).length}function ot(t){return t<0n?-t:t}function nt(t){return 1n===ot(t)}function lt(t,e){for(var a,i,o,n=0n,l=1n,r=e,s=ot(t);0n!==s;)a=r/s,i=n,o=r,n=l,r=s,l=i-a*l,s=o-a*s;if(!nt(r))throw new Error(t.toString()+" and "+e.toString()+" are not co-prime");return-1===Y(n,0n)&&(n+=e),et(t)?-n:n}function rt(t,e,a){if(0n===a)throw new Error("Cannot take modPow with modulus 0");var i=1n,o=t%a;for(et(e)&&(e*=-1n,o=lt(o,a));at(e);){if(0n===o)return 0n;X(e)&&(i=i*o%a),e/=2n,o=J(o)%a}return i}function st(t,e){return 0n!==e&&(!!nt(e)||(0===function(t,e){return(t=t>=0n?t:-t)===(e=e>=0n?e:-e)?0:t>e?1:-1}(e,2n)?tt(t):t%e===0n))}function ct(t,e){for(var a,i,o,n=function(t){return t-1n}(t),l=n,r=0;tt(l);)l/=2n,r++;t:for(i=0;i>1&&i>1,t>>1)))),e.addCode(a.setLocal(s,a.i64_add(a.getLocal(s),a.i64_shr_u(a.getLocal(r),a.i64_const(32)))))),t>0&&(e.addCode(a.setLocal(r,a.i64_add(a.i64_and(a.getLocal(r),a.i64_const(4294967295)),a.i64_and(a.getLocal(c),a.i64_const(4294967295))))),e.addCode(a.setLocal(s,a.i64_add(a.i64_add(a.getLocal(s),a.i64_shr_u(a.getLocal(r),a.i64_const(32))),a.getLocal(d))))),e.addCode(a.i64_store32(a.getLocal("r"),4*t,a.getLocal(r))),e.addCode(a.setLocal(c,a.getLocal(s)),a.setLocal(d,a.i64_shr_u(a.getLocal(c),a.i64_const(32))))}e.addCode(a.i64_store32(a.getLocal("r"),4*o*2-4,a.getLocal(c)))}(),function(){const e=t.addFunction(i+"_squareOld");e.addParam("x","i32"),e.addParam("r","i32");const a=e.getCodeBuilder();e.addCode(a.call(i+"_mul",a.getLocal("x"),a.getLocal("x"),a.getLocal("r")))}(),function(){!function(){const e=t.addFunction(i+"__mul1");e.addParam("px","i32"),e.addParam("y","i64"),e.addParam("pr","i32"),e.addLocal("c","i64");const a=e.getCodeBuilder();e.addCode(a.setLocal("c",a.i64_mul(a.i64_load32_u(a.getLocal("px"),0,0),a.getLocal("y")))),e.addCode(a.i64_store32(a.getLocal("pr"),0,0,a.getLocal("c")));for(let t=1;t>1n,p=t.alloc(r,ut.bigInt2BytesLE(_,r)),m=_+1n,w=t.alloc(r,ut.bigInt2BytesLE(m,r));t.modules[s]={pq:d,pR2:u,n64:n,q:o,pOne:g,pZero:f,pePlusOne:w};let L=2n;if(Lt(o))for(;wt(L,_,o)!==h;)L+=1n;let b=0,y=h;for(;!bt(y)&&0n!==y;)b++,y>>=1n;const A=t.alloc(r,ut.bigInt2BytesLE(y,r)),C=wt(L,y,o),I=t.alloc(ut.bigInt2BytesLE((C<>1n,x=t.alloc(r,ut.bigInt2BytesLE(F,r));return t.exportFunction(c+"_copy",s+"_copy"),t.exportFunction(c+"_zero",s+"_zero"),t.exportFunction(c+"_isZero",s+"_isZero"),t.exportFunction(c+"_eq",s+"_eq"),function(){const e=t.addFunction(s+"_isOne");e.addParam("x","i32"),e.setReturnType("i32");const a=e.getCodeBuilder();e.addCode(a.ret(a.call(c+"_eq",a.getLocal("x"),a.i32_const(g))))}(),function(){const e=t.addFunction(s+"_add");e.addParam("x","i32"),e.addParam("y","i32"),e.addParam("r","i32");const a=e.getCodeBuilder();e.addCode(a.if(a.call(c+"_add",a.getLocal("x"),a.getLocal("y"),a.getLocal("r")),a.drop(a.call(c+"_sub",a.getLocal("r"),a.i32_const(d),a.getLocal("r"))),a.if(a.call(c+"_gte",a.getLocal("r"),a.i32_const(d)),a.drop(a.call(c+"_sub",a.getLocal("r"),a.i32_const(d),a.getLocal("r"))))))}(),function(){const e=t.addFunction(s+"_sub");e.addParam("x","i32"),e.addParam("y","i32"),e.addParam("r","i32");const a=e.getCodeBuilder();e.addCode(a.if(a.call(c+"_sub",a.getLocal("x"),a.getLocal("y"),a.getLocal("r")),a.drop(a.call(c+"_add",a.getLocal("r"),a.i32_const(d),a.getLocal("r")))))}(),function(){const e=t.addFunction(s+"_neg");e.addParam("x","i32"),e.addParam("r","i32");const a=e.getCodeBuilder();e.addCode(a.call(s+"_sub",a.i32_const(f),a.getLocal("x"),a.getLocal("r")))}(),function(){const e=t.alloc(l*l*8),a=t.addFunction(s+"_mReduct");a.addParam("t","i32"),a.addParam("r","i32"),a.addLocal("np32","i64"),a.addLocal("c","i64"),a.addLocal("m","i64");const i=a.getCodeBuilder(),n=Number(0x100000000n-mt(o,0x100000000n));a.addCode(i.setLocal("np32",i.i64_const(n)));for(let t=0;t=l&&e.addCode(a.i64_store32(a.getLocal("r"),4*(t-l),a.getLocal(h))),[h,_]=[_,h],e.addCode(a.setLocal(_,a.i64_shr_u(a.getLocal(h),a.i64_const(32))))}e.addCode(a.i64_store32(a.getLocal("r"),4*l-4,a.getLocal(h))),e.addCode(a.if(a.i32_wrap_i64(a.getLocal(_)),a.drop(a.call(c+"_sub",a.getLocal("r"),a.i32_const(d),a.getLocal("r"))),a.if(a.call(c+"_gte",a.getLocal("r"),a.i32_const(d)),a.drop(a.call(c+"_sub",a.getLocal("r"),a.i32_const(d),a.getLocal("r"))))))}(),function(){const e=t.addFunction(s+"_square");e.addParam("x","i32"),e.addParam("r","i32"),e.addLocal("c0","i64"),e.addLocal("c1","i64"),e.addLocal("c0_old","i64"),e.addLocal("c1_old","i64"),e.addLocal("np32","i64");for(let t=0;t>1&&i>1,t>>1)))),e.addCode(a.setLocal(h,a.i64_add(a.getLocal(h),a.i64_shr_u(a.getLocal(f),a.i64_const(32)))))),t>0&&(e.addCode(a.setLocal(f,a.i64_add(a.i64_and(a.getLocal(f),a.i64_const(4294967295)),a.i64_and(a.getLocal(_),a.i64_const(4294967295))))),e.addCode(a.setLocal(h,a.i64_add(a.i64_add(a.getLocal(h),a.i64_shr_u(a.getLocal(f),a.i64_const(32))),a.getLocal(p)))));for(let i=Math.max(1,t-l+1);i<=t&&i=l&&e.addCode(a.i64_store32(a.getLocal("r"),4*(t-l),a.getLocal(f))),e.addCode(a.setLocal(_,a.getLocal(h)),a.setLocal(p,a.i64_shr_u(a.getLocal(_),a.i64_const(32))))}e.addCode(a.i64_store32(a.getLocal("r"),4*l-4,a.getLocal(_))),e.addCode(a.if(a.i32_wrap_i64(a.getLocal(p)),a.drop(a.call(c+"_sub",a.getLocal("r"),a.i32_const(d),a.getLocal("r"))),a.if(a.call(c+"_gte",a.getLocal("r"),a.i32_const(d)),a.drop(a.call(c+"_sub",a.getLocal("r"),a.i32_const(d),a.getLocal("r"))))))}(),function(){const e=t.addFunction(s+"_squareOld");e.addParam("x","i32"),e.addParam("r","i32");const a=e.getCodeBuilder();e.addCode(a.call(s+"_mul",a.getLocal("x"),a.getLocal("x"),a.getLocal("r")))}(),function(){const e=t.addFunction(s+"_toMontgomery");e.addParam("x","i32"),e.addParam("r","i32");const a=e.getCodeBuilder();e.addCode(a.call(s+"_mul",a.getLocal("x"),a.i32_const(u),a.getLocal("r")))}(),function(){const e=t.alloc(2*r),a=t.addFunction(s+"_fromMontgomery");a.addParam("x","i32"),a.addParam("r","i32");const i=a.getCodeBuilder();a.addCode(i.call(c+"_copy",i.getLocal("x"),i.i32_const(e))),a.addCode(i.call(c+"_zero",i.i32_const(e+r))),a.addCode(i.call(s+"_mReduct",i.i32_const(e),i.getLocal("r")))}(),function(){const e=t.addFunction(s+"_isNegative");e.addParam("x","i32"),e.setReturnType("i32");const a=e.getCodeBuilder(),i=a.i32_const(t.alloc(r));e.addCode(a.call(s+"_fromMontgomery",a.getLocal("x"),i),a.call(c+"_gte",i,a.i32_const(w)))}(),function(){const e=t.addFunction(s+"_sign");e.addParam("x","i32"),e.setReturnType("i32");const a=e.getCodeBuilder(),i=a.i32_const(t.alloc(r));e.addCode(a.if(a.call(c+"_isZero",a.getLocal("x")),a.ret(a.i32_const(0))),a.call(s+"_fromMontgomery",a.getLocal("x"),i),a.if(a.call(c+"_gte",i,a.i32_const(w)),a.ret(a.i32_const(-1))),a.ret(a.i32_const(1)))}(),function(){const e=t.addFunction(s+"_inverse");e.addParam("x","i32"),e.addParam("r","i32");const a=e.getCodeBuilder();e.addCode(a.call(s+"_fromMontgomery",a.getLocal("x"),a.getLocal("r"))),e.addCode(a.call(c+"_inverseMod",a.getLocal("r"),a.i32_const(d),a.getLocal("r"))),e.addCode(a.call(s+"_toMontgomery",a.getLocal("r"),a.getLocal("r")))}(),function(){const e=t.addFunction(s+"_one");e.addParam("pr","i32");const a=e.getCodeBuilder();e.addCode(a.call(c+"_copy",a.i32_const(g),a.getLocal("pr")))}(),function(){const e=t.addFunction(s+"_load");e.addParam("scalar","i32"),e.addParam("scalarLen","i32"),e.addParam("r","i32"),e.addLocal("p","i32"),e.addLocal("l","i32"),e.addLocal("i","i32"),e.addLocal("j","i32");const a=e.getCodeBuilder(),i=a.i32_const(t.alloc(r)),o=t.alloc(r),n=a.i32_const(o);e.addCode(a.call(c+"_zero",a.getLocal("r")),a.setLocal("i",a.i32_const(r)),a.setLocal("p",a.getLocal("scalar")),a.block(a.loop(a.br_if(1,a.i32_gt_u(a.getLocal("i"),a.getLocal("scalarLen"))),a.if(a.i32_eq(a.getLocal("i"),a.i32_const(r)),a.call(s+"_one",i),a.call(s+"_mul",i,a.i32_const(u),i)),a.call(s+"_mul",a.getLocal("p"),i,n),a.call(s+"_add",a.getLocal("r"),n,a.getLocal("r")),a.setLocal("p",a.i32_add(a.getLocal("p"),a.i32_const(r))),a.setLocal("i",a.i32_add(a.getLocal("i"),a.i32_const(r))),a.br(0))),a.setLocal("l",a.i32_rem_u(a.getLocal("scalarLen"),a.i32_const(r))),a.if(a.i32_eqz(a.getLocal("l")),a.ret([])),a.call(c+"_zero",n),a.setLocal("j",a.i32_const(0)),a.block(a.loop(a.br_if(1,a.i32_eq(a.getLocal("j"),a.getLocal("l"))),a.i32_store8(a.getLocal("j"),o,a.i32_load8_u(a.getLocal("p"))),a.setLocal("p",a.i32_add(a.getLocal("p"),a.i32_const(1))),a.setLocal("j",a.i32_add(a.getLocal("j"),a.i32_const(1))),a.br(0))),a.if(a.i32_eq(a.getLocal("i"),a.i32_const(r)),a.call(s+"_one",i),a.call(s+"_mul",i,a.i32_const(u),i)),a.call(s+"_mul",n,i,n),a.call(s+"_add",a.getLocal("r"),n,a.getLocal("r")))}(),function(){const e=t.addFunction(s+"_timesScalar");e.addParam("x","i32"),e.addParam("scalar","i32"),e.addParam("scalarLen","i32"),e.addParam("r","i32");const a=e.getCodeBuilder(),i=a.i32_const(t.alloc(r));e.addCode(a.call(s+"_load",a.getLocal("scalar"),a.getLocal("scalarLen"),i),a.call(s+"_toMontgomery",i,i),a.call(s+"_mul",a.getLocal("x"),i,a.getLocal("r")))}(),ft(t,s),ht(t,s+"_batchToMontgomery",s+"_toMontgomery",r,r),ht(t,s+"_batchFromMontgomery",s+"_fromMontgomery",r,r),ht(t,s+"_batchNeg",s+"_neg",r,r),_t(t,s+"_batchAdd",s+"_add",r,r),_t(t,s+"_batchSub",s+"_sub",r,r),_t(t,s+"_batchMul",s+"_mul",r,r),t.exportFunction(s+"_add"),t.exportFunction(s+"_sub"),t.exportFunction(s+"_neg"),t.exportFunction(s+"_isNegative"),t.exportFunction(s+"_isOne"),t.exportFunction(s+"_sign"),t.exportFunction(s+"_mReduct"),t.exportFunction(s+"_mul"),t.exportFunction(s+"_square"),t.exportFunction(s+"_squareOld"),t.exportFunction(s+"_fromMontgomery"),t.exportFunction(s+"_toMontgomery"),t.exportFunction(s+"_inverse"),t.exportFunction(s+"_one"),t.exportFunction(s+"_load"),t.exportFunction(s+"_timesScalar"),gt(t,s+"_exp",r,s+"_mul",s+"_square",c+"_copy",s+"_one"),t.exportFunction(s+"_exp"),t.exportFunction(s+"_batchInverse"),Lt(o)&&(!function(){const e=t.addFunction(s+"_sqrt");e.addParam("n","i32"),e.addParam("r","i32"),e.addLocal("m","i32"),e.addLocal("i","i32"),e.addLocal("j","i32");const a=e.getCodeBuilder(),i=a.i32_const(g),o=a.i32_const(t.alloc(r)),n=a.i32_const(t.alloc(r)),l=a.i32_const(t.alloc(r)),c=a.i32_const(t.alloc(r)),d=a.i32_const(t.alloc(r));e.addCode(a.if(a.call(s+"_isZero",a.getLocal("n")),a.ret(a.call(s+"_zero",a.getLocal("r")))),a.setLocal("m",a.i32_const(b)),a.call(s+"_copy",a.i32_const(I),o),a.call(s+"_exp",a.getLocal("n"),a.i32_const(A),a.i32_const(r),n),a.call(s+"_exp",a.getLocal("n"),a.i32_const(x),a.i32_const(r),l),a.block(a.loop(a.br_if(1,a.call(s+"_eq",n,i)),a.call(s+"_square",n,c),a.setLocal("i",a.i32_const(1)),a.block(a.loop(a.br_if(1,a.call(s+"_eq",c,i)),a.call(s+"_square",c,c),a.setLocal("i",a.i32_add(a.getLocal("i"),a.i32_const(1))),a.br(0))),a.call(s+"_copy",o,d),a.setLocal("j",a.i32_sub(a.i32_sub(a.getLocal("m"),a.getLocal("i")),a.i32_const(1))),a.block(a.loop(a.br_if(1,a.i32_eqz(a.getLocal("j"))),a.call(s+"_square",d,d),a.setLocal("j",a.i32_sub(a.getLocal("j"),a.i32_const(1))),a.br(0))),a.setLocal("m",a.getLocal("i")),a.call(s+"_square",d,o),a.call(s+"_mul",n,o,n),a.call(s+"_mul",l,d,l),a.br(0))),a.if(a.call(s+"_isNegative",l),a.call(s+"_neg",l,a.getLocal("r")),a.call(s+"_copy",l,a.getLocal("r"))))}(),function(){const e=t.addFunction(s+"_isSquare");e.addParam("n","i32"),e.setReturnType("i32");const a=e.getCodeBuilder(),i=a.i32_const(g),o=a.i32_const(t.alloc(r));e.addCode(a.if(a.call(s+"_isZero",a.getLocal("n")),a.ret(a.i32_const(1))),a.call(s+"_exp",a.getLocal("n"),a.i32_const(p),a.i32_const(r),o),a.call(s+"_eq",o,i))}(),t.exportFunction(s+"_sqrt"),t.exportFunction(s+"_isSquare")),t.exportFunction(s+"_batchToMontgomery"),t.exportFunction(s+"_batchFromMontgomery"),s};const Ct=At,{bitLength:It}=W;var Ft=function(t,e,a,i,o){const n=BigInt(e),l=Math.floor((It(n-1n)-1)/64)+1,r=8*l,s=a||"f1";if(t.modules[s])return s;t.modules[s]={n64:l};const c=o||"int",d=Ct(t,n,i,c),u=t.modules[d].pR2,g=t.modules[d].pq,f=t.modules[d].pePlusOne;return function(){const e=t.alloc(r),a=t.addFunction(s+"_mul");a.addParam("x","i32"),a.addParam("y","i32"),a.addParam("r","i32");const i=a.getCodeBuilder();a.addCode(i.call(d+"_mul",i.getLocal("x"),i.getLocal("y"),i.i32_const(e))),a.addCode(i.call(d+"_mul",i.i32_const(e),i.i32_const(u),i.getLocal("r")))}(),function(){const e=t.addFunction(s+"_square");e.addParam("x","i32"),e.addParam("r","i32");const a=e.getCodeBuilder();e.addCode(a.call(s+"_mul",a.getLocal("x"),a.getLocal("x"),a.getLocal("r")))}(),function(){const e=t.addFunction(s+"_inverse");e.addParam("x","i32"),e.addParam("r","i32");const a=e.getCodeBuilder();e.addCode(a.call(c+"_inverseMod",a.getLocal("x"),a.i32_const(g),a.getLocal("r")))}(),function(){const e=t.addFunction(s+"_isNegative");e.addParam("x","i32"),e.setReturnType("i32");const a=e.getCodeBuilder();e.addCode(a.call(c+"_gte",a.getLocal("x"),a.i32_const(f)))}(),t.exportFunction(d+"_add",s+"_add"),t.exportFunction(d+"_sub",s+"_sub"),t.exportFunction(d+"_neg",s+"_neg"),t.exportFunction(s+"_mul"),t.exportFunction(s+"_square"),t.exportFunction(s+"_inverse"),t.exportFunction(s+"_isNegative"),t.exportFunction(d+"_copy",s+"_copy"),t.exportFunction(d+"_zero",s+"_zero"),t.exportFunction(d+"_one",s+"_one"),t.exportFunction(d+"_isZero",s+"_isZero"),t.exportFunction(d+"_eq",s+"_eq"),s};const xt=K,Et=j,vt=V;var Bt=function(t,e,a,i){if(t.modules[a])return a;const o=8*t.modules[i].n64,n=t.modules[i].q;return t.modules[a]={n64:2*t.modules[i].n64},function(){const e=t.addFunction(a+"_isZero");e.addParam("x","i32"),e.setReturnType("i32");const n=e.getCodeBuilder(),l=n.getLocal("x"),r=n.i32_add(n.getLocal("x"),n.i32_const(o));e.addCode(n.i32_and(n.call(i+"_isZero",l),n.call(i+"_isZero",r)))}(),function(){const e=t.addFunction(a+"_isOne");e.addParam("x","i32"),e.setReturnType("i32");const n=e.getCodeBuilder(),l=n.getLocal("x"),r=n.i32_add(n.getLocal("x"),n.i32_const(o));e.addCode(n.ret(n.i32_and(n.call(i+"_isOne",l),n.call(i+"_isZero",r))))}(),function(){const e=t.addFunction(a+"_zero");e.addParam("x","i32");const n=e.getCodeBuilder(),l=n.getLocal("x"),r=n.i32_add(n.getLocal("x"),n.i32_const(o));e.addCode(n.call(i+"_zero",l),n.call(i+"_zero",r))}(),function(){const e=t.addFunction(a+"_one");e.addParam("x","i32");const n=e.getCodeBuilder(),l=n.getLocal("x"),r=n.i32_add(n.getLocal("x"),n.i32_const(o));e.addCode(n.call(i+"_one",l),n.call(i+"_zero",r))}(),function(){const e=t.addFunction(a+"_copy");e.addParam("x","i32"),e.addParam("r","i32");const n=e.getCodeBuilder(),l=n.getLocal("x"),r=n.i32_add(n.getLocal("x"),n.i32_const(o)),s=n.getLocal("r"),c=n.i32_add(n.getLocal("r"),n.i32_const(o));e.addCode(n.call(i+"_copy",l,s),n.call(i+"_copy",r,c))}(),function(){const n=t.addFunction(a+"_mul");n.addParam("x","i32"),n.addParam("y","i32"),n.addParam("r","i32");const l=n.getCodeBuilder(),r=l.getLocal("x"),s=l.i32_add(l.getLocal("x"),l.i32_const(o)),c=l.getLocal("y"),d=l.i32_add(l.getLocal("y"),l.i32_const(o)),u=l.getLocal("r"),g=l.i32_add(l.getLocal("r"),l.i32_const(o)),f=l.i32_const(t.alloc(o)),h=l.i32_const(t.alloc(o)),_=l.i32_const(t.alloc(o)),p=l.i32_const(t.alloc(o));n.addCode(l.call(i+"_mul",r,c,f),l.call(i+"_mul",s,d,h),l.call(i+"_add",r,s,_),l.call(i+"_add",c,d,p),l.call(i+"_mul",_,p,_),l.call(e,h,u),l.call(i+"_add",f,u,u),l.call(i+"_add",f,h,g),l.call(i+"_sub",_,g,g))}(),function(){const e=t.addFunction(a+"_mul1");e.addParam("x","i32"),e.addParam("y","i32"),e.addParam("r","i32");const n=e.getCodeBuilder(),l=n.getLocal("x"),r=n.i32_add(n.getLocal("x"),n.i32_const(o)),s=n.getLocal("y"),c=n.getLocal("r"),d=n.i32_add(n.getLocal("r"),n.i32_const(o));e.addCode(n.call(i+"_mul",l,s,c),n.call(i+"_mul",r,s,d))}(),function(){const n=t.addFunction(a+"_square");n.addParam("x","i32"),n.addParam("r","i32");const l=n.getCodeBuilder(),r=l.getLocal("x"),s=l.i32_add(l.getLocal("x"),l.i32_const(o)),c=l.getLocal("r"),d=l.i32_add(l.getLocal("r"),l.i32_const(o)),u=l.i32_const(t.alloc(o)),g=l.i32_const(t.alloc(o)),f=l.i32_const(t.alloc(o)),h=l.i32_const(t.alloc(o));n.addCode(l.call(i+"_mul",r,s,u),l.call(i+"_add",r,s,g),l.call(e,s,f),l.call(i+"_add",r,f,f),l.call(e,u,h),l.call(i+"_add",h,u,h),l.call(i+"_mul",g,f,c),l.call(i+"_sub",c,h,c),l.call(i+"_add",u,u,d))}(),function(){const e=t.addFunction(a+"_add");e.addParam("x","i32"),e.addParam("y","i32"),e.addParam("r","i32");const n=e.getCodeBuilder(),l=n.getLocal("x"),r=n.i32_add(n.getLocal("x"),n.i32_const(o)),s=n.getLocal("y"),c=n.i32_add(n.getLocal("y"),n.i32_const(o)),d=n.getLocal("r"),u=n.i32_add(n.getLocal("r"),n.i32_const(o));e.addCode(n.call(i+"_add",l,s,d),n.call(i+"_add",r,c,u))}(),function(){const e=t.addFunction(a+"_sub");e.addParam("x","i32"),e.addParam("y","i32"),e.addParam("r","i32");const n=e.getCodeBuilder(),l=n.getLocal("x"),r=n.i32_add(n.getLocal("x"),n.i32_const(o)),s=n.getLocal("y"),c=n.i32_add(n.getLocal("y"),n.i32_const(o)),d=n.getLocal("r"),u=n.i32_add(n.getLocal("r"),n.i32_const(o));e.addCode(n.call(i+"_sub",l,s,d),n.call(i+"_sub",r,c,u))}(),function(){const e=t.addFunction(a+"_neg");e.addParam("x","i32"),e.addParam("r","i32");const n=e.getCodeBuilder(),l=n.getLocal("x"),r=n.i32_add(n.getLocal("x"),n.i32_const(o)),s=n.getLocal("r"),c=n.i32_add(n.getLocal("r"),n.i32_const(o));e.addCode(n.call(i+"_neg",l,s),n.call(i+"_neg",r,c))}(),function(){const e=t.addFunction(a+"_conjugate");e.addParam("x","i32"),e.addParam("r","i32");const n=e.getCodeBuilder(),l=n.getLocal("x"),r=n.i32_add(n.getLocal("x"),n.i32_const(o)),s=n.getLocal("r"),c=n.i32_add(n.getLocal("r"),n.i32_const(o));e.addCode(n.call(i+"_copy",l,s),n.call(i+"_neg",r,c))}(),function(){const e=t.addFunction(a+"_toMontgomery");e.addParam("x","i32"),e.addParam("r","i32");const n=e.getCodeBuilder(),l=n.getLocal("x"),r=n.i32_add(n.getLocal("x"),n.i32_const(o)),s=n.getLocal("r"),c=n.i32_add(n.getLocal("r"),n.i32_const(o));e.addCode(n.call(i+"_toMontgomery",l,s),n.call(i+"_toMontgomery",r,c))}(),function(){const e=t.addFunction(a+"_fromMontgomery");e.addParam("x","i32"),e.addParam("r","i32");const n=e.getCodeBuilder(),l=n.getLocal("x"),r=n.i32_add(n.getLocal("x"),n.i32_const(o)),s=n.getLocal("r"),c=n.i32_add(n.getLocal("r"),n.i32_const(o));e.addCode(n.call(i+"_fromMontgomery",l,s),n.call(i+"_fromMontgomery",r,c))}(),function(){const e=t.addFunction(a+"_eq");e.addParam("x","i32"),e.addParam("y","i32"),e.setReturnType("i32");const n=e.getCodeBuilder(),l=n.getLocal("x"),r=n.i32_add(n.getLocal("x"),n.i32_const(o)),s=n.getLocal("y"),c=n.i32_add(n.getLocal("y"),n.i32_const(o));e.addCode(n.i32_and(n.call(i+"_eq",l,s),n.call(i+"_eq",r,c)))}(),function(){const n=t.addFunction(a+"_inverse");n.addParam("x","i32"),n.addParam("r","i32");const l=n.getCodeBuilder(),r=l.getLocal("x"),s=l.i32_add(l.getLocal("x"),l.i32_const(o)),c=l.getLocal("r"),d=l.i32_add(l.getLocal("r"),l.i32_const(o)),u=l.i32_const(t.alloc(o)),g=l.i32_const(t.alloc(o)),f=l.i32_const(t.alloc(o)),h=l.i32_const(t.alloc(o));n.addCode(l.call(i+"_square",r,u),l.call(i+"_square",s,g),l.call(e,g,f),l.call(i+"_sub",u,f,f),l.call(i+"_inverse",f,h),l.call(i+"_mul",r,h,c),l.call(i+"_mul",s,h,d),l.call(i+"_neg",d,d))}(),function(){const e=t.addFunction(a+"_timesScalar");e.addParam("x","i32"),e.addParam("scalar","i32"),e.addParam("scalarLen","i32"),e.addParam("r","i32");const n=e.getCodeBuilder(),l=n.getLocal("x"),r=n.i32_add(n.getLocal("x"),n.i32_const(o)),s=n.getLocal("r"),c=n.i32_add(n.getLocal("r"),n.i32_const(o));e.addCode(n.call(i+"_timesScalar",l,n.getLocal("scalar"),n.getLocal("scalarLen"),s),n.call(i+"_timesScalar",r,n.getLocal("scalar"),n.getLocal("scalarLen"),c))}(),function(){const e=t.addFunction(a+"_sign");e.addParam("x","i32"),e.addLocal("s","i32"),e.setReturnType("i32");const n=e.getCodeBuilder(),l=n.getLocal("x"),r=n.i32_add(n.getLocal("x"),n.i32_const(o));e.addCode(n.setLocal("s",n.call(i+"_sign",r)),n.if(n.getLocal("s"),n.ret(n.getLocal("s"))),n.ret(n.call(i+"_sign",l)))}(),function(){const e=t.addFunction(a+"_isNegative");e.addParam("x","i32"),e.setReturnType("i32");const n=e.getCodeBuilder(),l=n.getLocal("x"),r=n.i32_add(n.getLocal("x"),n.i32_const(o));e.addCode(n.if(n.call(i+"_isZero",r),n.ret(n.call(i+"_isNegative",l))),n.ret(n.call(i+"_isNegative",r)))}(),t.exportFunction(a+"_isZero"),t.exportFunction(a+"_isOne"),t.exportFunction(a+"_zero"),t.exportFunction(a+"_one"),t.exportFunction(a+"_copy"),t.exportFunction(a+"_mul"),t.exportFunction(a+"_mul1"),t.exportFunction(a+"_square"),t.exportFunction(a+"_add"),t.exportFunction(a+"_sub"),t.exportFunction(a+"_neg"),t.exportFunction(a+"_sign"),t.exportFunction(a+"_conjugate"),t.exportFunction(a+"_fromMontgomery"),t.exportFunction(a+"_toMontgomery"),t.exportFunction(a+"_eq"),t.exportFunction(a+"_inverse"),Et(t,a),xt(t,a+"_exp",2*o,a+"_mul",a+"_square",a+"_copy",a+"_one"),function(){const e=t.addFunction(a+"_sqrt");e.addParam("a","i32"),e.addParam("pr","i32");const l=e.getCodeBuilder(),r=l.i32_const(t.alloc(vt.bigInt2BytesLE((BigInt(n||0)-3n)/4n,o))),s=l.i32_const(t.alloc(vt.bigInt2BytesLE((BigInt(n||0)-1n)/2n,o))),c=l.getLocal("a"),d=l.i32_const(t.alloc(2*o)),u=l.i32_const(t.alloc(2*o)),g=l.i32_const(t.alloc(2*o)),f=t.alloc(2*o),h=l.i32_const(f),_=l.i32_const(f),p=l.i32_const(f+o),m=l.i32_const(t.alloc(2*o)),w=l.i32_const(t.alloc(2*o));e.addCode(l.call(a+"_one",h),l.call(a+"_neg",h,h),l.call(a+"_exp",c,r,l.i32_const(o),d),l.call(a+"_square",d,u),l.call(a+"_mul",c,u,u),l.call(a+"_conjugate",u,g),l.call(a+"_mul",g,u,g),l.if(l.call(a+"_eq",g,h),l.unreachable()),l.call(a+"_mul",d,c,m),l.if(l.call(a+"_eq",u,h),[...l.call(i+"_zero",_),...l.call(i+"_one",p),...l.call(a+"_mul",h,m,l.getLocal("pr"))],[...l.call(a+"_one",w),...l.call(a+"_add",w,u,w),...l.call(a+"_exp",w,s,l.i32_const(o),w),...l.call(a+"_mul",w,m,l.getLocal("pr"))]))}(),function(){const e=t.addFunction(a+"_isSquare");e.addParam("a","i32"),e.setReturnType("i32");const i=e.getCodeBuilder(),l=i.i32_const(t.alloc(vt.bigInt2BytesLE((BigInt(n||0)-3n)/4n,o))),r=i.getLocal("a"),s=i.i32_const(t.alloc(2*o)),c=i.i32_const(t.alloc(2*o)),d=i.i32_const(t.alloc(2*o)),u=t.alloc(2*o),g=i.i32_const(u);e.addCode(i.call(a+"_one",g),i.call(a+"_neg",g,g),i.call(a+"_exp",r,l,i.i32_const(o),s),i.call(a+"_square",s,c),i.call(a+"_mul",r,c,c),i.call(a+"_conjugate",c,d),i.call(a+"_mul",d,c,d),i.if(i.call(a+"_eq",d,g),i.ret(i.i32_const(0))),i.ret(i.i32_const(1)))}(),t.exportFunction(a+"_exp"),t.exportFunction(a+"_timesScalar"),t.exportFunction(a+"_batchInverse"),t.exportFunction(a+"_sqrt"),t.exportFunction(a+"_isSquare"),t.exportFunction(a+"_isNegative"),a};const St=K,Pt=j;var Gt=function(t,e,a,i){if(t.modules[a])return a;const o=8*t.modules[i].n64;return t.modules[a]={n64:3*t.modules[i].n64},function(){const e=t.addFunction(a+"_isZero");e.addParam("x","i32"),e.setReturnType("i32");const n=e.getCodeBuilder(),l=n.getLocal("x"),r=n.i32_add(n.getLocal("x"),n.i32_const(o)),s=n.i32_add(n.getLocal("x"),n.i32_const(2*o));e.addCode(n.i32_and(n.i32_and(n.call(i+"_isZero",l),n.call(i+"_isZero",r)),n.call(i+"_isZero",s)))}(),function(){const e=t.addFunction(a+"_isOne");e.addParam("x","i32"),e.setReturnType("i32");const n=e.getCodeBuilder(),l=n.getLocal("x"),r=n.i32_add(n.getLocal("x"),n.i32_const(o)),s=n.i32_add(n.getLocal("x"),n.i32_const(2*o));e.addCode(n.ret(n.i32_and(n.i32_and(n.call(i+"_isOne",l),n.call(i+"_isZero",r)),n.call(i+"_isZero",s))))}(),function(){const e=t.addFunction(a+"_zero");e.addParam("x","i32");const n=e.getCodeBuilder(),l=n.getLocal("x"),r=n.i32_add(n.getLocal("x"),n.i32_const(o)),s=n.i32_add(n.getLocal("x"),n.i32_const(2*o));e.addCode(n.call(i+"_zero",l),n.call(i+"_zero",r),n.call(i+"_zero",s))}(),function(){const e=t.addFunction(a+"_one");e.addParam("x","i32");const n=e.getCodeBuilder(),l=n.getLocal("x"),r=n.i32_add(n.getLocal("x"),n.i32_const(o)),s=n.i32_add(n.getLocal("x"),n.i32_const(2*o));e.addCode(n.call(i+"_one",l),n.call(i+"_zero",r),n.call(i+"_zero",s))}(),function(){const e=t.addFunction(a+"_copy");e.addParam("x","i32"),e.addParam("r","i32");const n=e.getCodeBuilder(),l=n.getLocal("x"),r=n.i32_add(n.getLocal("x"),n.i32_const(o)),s=n.i32_add(n.getLocal("x"),n.i32_const(2*o)),c=n.getLocal("r"),d=n.i32_add(n.getLocal("r"),n.i32_const(o)),u=n.i32_add(n.getLocal("r"),n.i32_const(2*o));e.addCode(n.call(i+"_copy",l,c),n.call(i+"_copy",r,d),n.call(i+"_copy",s,u))}(),function(){const n=t.addFunction(a+"_mul");n.addParam("x","i32"),n.addParam("y","i32"),n.addParam("r","i32");const l=n.getCodeBuilder(),r=l.getLocal("x"),s=l.i32_add(l.getLocal("x"),l.i32_const(o)),c=l.i32_add(l.getLocal("x"),l.i32_const(2*o)),d=l.getLocal("y"),u=l.i32_add(l.getLocal("y"),l.i32_const(o)),g=l.i32_add(l.getLocal("y"),l.i32_const(2*o)),f=l.getLocal("r"),h=l.i32_add(l.getLocal("r"),l.i32_const(o)),_=l.i32_add(l.getLocal("r"),l.i32_const(2*o)),p=l.i32_const(t.alloc(o)),m=l.i32_const(t.alloc(o)),w=l.i32_const(t.alloc(o)),L=l.i32_const(t.alloc(o)),b=l.i32_const(t.alloc(o)),y=l.i32_const(t.alloc(o)),A=l.i32_const(t.alloc(o)),C=l.i32_const(t.alloc(o)),I=l.i32_const(t.alloc(o)),F=l.i32_const(t.alloc(o)),x=l.i32_const(t.alloc(o)),E=l.i32_const(t.alloc(o)),v=l.i32_const(t.alloc(o));n.addCode(l.call(i+"_mul",r,d,p),l.call(i+"_mul",s,u,m),l.call(i+"_mul",c,g,w),l.call(i+"_add",r,s,L),l.call(i+"_add",d,u,b),l.call(i+"_add",r,c,y),l.call(i+"_add",d,g,A),l.call(i+"_add",s,c,C),l.call(i+"_add",u,g,I),l.call(i+"_add",p,m,F),l.call(i+"_add",p,w,x),l.call(i+"_add",m,w,E),l.call(i+"_mul",C,I,f),l.call(i+"_sub",f,E,f),l.call(e,f,f),l.call(i+"_add",p,f,f),l.call(i+"_mul",L,b,h),l.call(i+"_sub",h,F,h),l.call(e,w,v),l.call(i+"_add",h,v,h),l.call(i+"_mul",y,A,_),l.call(i+"_sub",_,x,_),l.call(i+"_add",_,m,_))}(),function(){const n=t.addFunction(a+"_square");n.addParam("x","i32"),n.addParam("r","i32");const l=n.getCodeBuilder(),r=l.getLocal("x"),s=l.i32_add(l.getLocal("x"),l.i32_const(o)),c=l.i32_add(l.getLocal("x"),l.i32_const(2*o)),d=l.getLocal("r"),u=l.i32_add(l.getLocal("r"),l.i32_const(o)),g=l.i32_add(l.getLocal("r"),l.i32_const(2*o)),f=l.i32_const(t.alloc(o)),h=l.i32_const(t.alloc(o)),_=l.i32_const(t.alloc(o)),p=l.i32_const(t.alloc(o)),m=l.i32_const(t.alloc(o)),w=l.i32_const(t.alloc(o)),L=l.i32_const(t.alloc(o));n.addCode(l.call(i+"_square",r,f),l.call(i+"_mul",r,s,h),l.call(i+"_add",h,h,_),l.call(i+"_sub",r,s,p),l.call(i+"_add",p,c,p),l.call(i+"_square",p,p),l.call(i+"_mul",s,c,m),l.call(i+"_add",m,m,w),l.call(i+"_square",c,L),l.call(e,w,d),l.call(i+"_add",f,d,d),l.call(e,L,u),l.call(i+"_add",_,u,u),l.call(i+"_add",f,L,g),l.call(i+"_sub",w,g,g),l.call(i+"_add",p,g,g),l.call(i+"_add",_,g,g))}(),function(){const e=t.addFunction(a+"_add");e.addParam("x","i32"),e.addParam("y","i32"),e.addParam("r","i32");const n=e.getCodeBuilder(),l=n.getLocal("x"),r=n.i32_add(n.getLocal("x"),n.i32_const(o)),s=n.i32_add(n.getLocal("x"),n.i32_const(2*o)),c=n.getLocal("y"),d=n.i32_add(n.getLocal("y"),n.i32_const(o)),u=n.i32_add(n.getLocal("y"),n.i32_const(2*o)),g=n.getLocal("r"),f=n.i32_add(n.getLocal("r"),n.i32_const(o)),h=n.i32_add(n.getLocal("r"),n.i32_const(2*o));e.addCode(n.call(i+"_add",l,c,g),n.call(i+"_add",r,d,f),n.call(i+"_add",s,u,h))}(),function(){const e=t.addFunction(a+"_sub");e.addParam("x","i32"),e.addParam("y","i32"),e.addParam("r","i32");const n=e.getCodeBuilder(),l=n.getLocal("x"),r=n.i32_add(n.getLocal("x"),n.i32_const(o)),s=n.i32_add(n.getLocal("x"),n.i32_const(2*o)),c=n.getLocal("y"),d=n.i32_add(n.getLocal("y"),n.i32_const(o)),u=n.i32_add(n.getLocal("y"),n.i32_const(2*o)),g=n.getLocal("r"),f=n.i32_add(n.getLocal("r"),n.i32_const(o)),h=n.i32_add(n.getLocal("r"),n.i32_const(2*o));e.addCode(n.call(i+"_sub",l,c,g),n.call(i+"_sub",r,d,f),n.call(i+"_sub",s,u,h))}(),function(){const e=t.addFunction(a+"_neg");e.addParam("x","i32"),e.addParam("r","i32");const n=e.getCodeBuilder(),l=n.getLocal("x"),r=n.i32_add(n.getLocal("x"),n.i32_const(o)),s=n.i32_add(n.getLocal("x"),n.i32_const(2*o)),c=n.getLocal("r"),d=n.i32_add(n.getLocal("r"),n.i32_const(o)),u=n.i32_add(n.getLocal("r"),n.i32_const(2*o));e.addCode(n.call(i+"_neg",l,c),n.call(i+"_neg",r,d),n.call(i+"_neg",s,u))}(),function(){const e=t.addFunction(a+"_sign");e.addParam("x","i32"),e.addLocal("s","i32"),e.setReturnType("i32");const n=e.getCodeBuilder(),l=n.getLocal("x"),r=n.i32_add(n.getLocal("x"),n.i32_const(o)),s=n.i32_add(n.getLocal("x"),n.i32_const(2*o));e.addCode(n.setLocal("s",n.call(i+"_sign",s)),n.if(n.getLocal("s"),n.ret(n.getLocal("s"))),n.setLocal("s",n.call(i+"_sign",r)),n.if(n.getLocal("s"),n.ret(n.getLocal("s"))),n.ret(n.call(i+"_sign",l)))}(),function(){const e=t.addFunction(a+"_toMontgomery");e.addParam("x","i32"),e.addParam("r","i32");const n=e.getCodeBuilder(),l=n.getLocal("x"),r=n.i32_add(n.getLocal("x"),n.i32_const(o)),s=n.i32_add(n.getLocal("x"),n.i32_const(2*o)),c=n.getLocal("r"),d=n.i32_add(n.getLocal("r"),n.i32_const(o)),u=n.i32_add(n.getLocal("r"),n.i32_const(2*o));e.addCode(n.call(i+"_toMontgomery",l,c),n.call(i+"_toMontgomery",r,d),n.call(i+"_toMontgomery",s,u))}(),function(){const e=t.addFunction(a+"_fromMontgomery");e.addParam("x","i32"),e.addParam("r","i32");const n=e.getCodeBuilder(),l=n.getLocal("x"),r=n.i32_add(n.getLocal("x"),n.i32_const(o)),s=n.i32_add(n.getLocal("x"),n.i32_const(2*o)),c=n.getLocal("r"),d=n.i32_add(n.getLocal("r"),n.i32_const(o)),u=n.i32_add(n.getLocal("r"),n.i32_const(2*o));e.addCode(n.call(i+"_fromMontgomery",l,c),n.call(i+"_fromMontgomery",r,d),n.call(i+"_fromMontgomery",s,u))}(),function(){const e=t.addFunction(a+"_eq");e.addParam("x","i32"),e.addParam("y","i32"),e.setReturnType("i32");const n=e.getCodeBuilder(),l=n.getLocal("x"),r=n.i32_add(n.getLocal("x"),n.i32_const(o)),s=n.i32_add(n.getLocal("x"),n.i32_const(2*o)),c=n.getLocal("y"),d=n.i32_add(n.getLocal("y"),n.i32_const(o)),u=n.i32_add(n.getLocal("y"),n.i32_const(2*o));e.addCode(n.i32_and(n.i32_and(n.call(i+"_eq",l,c),n.call(i+"_eq",r,d)),n.call(i+"_eq",s,u)))}(),function(){const n=t.addFunction(a+"_inverse");n.addParam("x","i32"),n.addParam("r","i32");const l=n.getCodeBuilder(),r=l.getLocal("x"),s=l.i32_add(l.getLocal("x"),l.i32_const(o)),c=l.i32_add(l.getLocal("x"),l.i32_const(2*o)),d=l.getLocal("r"),u=l.i32_add(l.getLocal("r"),l.i32_const(o)),g=l.i32_add(l.getLocal("r"),l.i32_const(2*o)),f=l.i32_const(t.alloc(o)),h=l.i32_const(t.alloc(o)),_=l.i32_const(t.alloc(o)),p=l.i32_const(t.alloc(o)),m=l.i32_const(t.alloc(o)),w=l.i32_const(t.alloc(o)),L=l.i32_const(t.alloc(o)),b=l.i32_const(t.alloc(o)),y=l.i32_const(t.alloc(o)),A=l.i32_const(t.alloc(o)),C=l.i32_const(t.alloc(o));n.addCode(l.call(i+"_square",r,f),l.call(i+"_square",s,h),l.call(i+"_square",c,_),l.call(i+"_mul",r,s,p),l.call(i+"_mul",r,c,m),l.call(i+"_mul",s,c,w),l.call(e,w,L),l.call(i+"_sub",f,L,L),l.call(e,_,b),l.call(i+"_sub",b,p,b),l.call(i+"_sub",h,m,y),l.call(i+"_mul",c,b,A),l.call(i+"_mul",s,y,C),l.call(i+"_add",A,C,A),l.call(e,A,A),l.call(i+"_mul",r,L,C),l.call(i+"_add",C,A,A),l.call(i+"_inverse",A,A),l.call(i+"_mul",A,L,d),l.call(i+"_mul",A,b,u),l.call(i+"_mul",A,y,g))}(),function(){const e=t.addFunction(a+"_timesScalar");e.addParam("x","i32"),e.addParam("scalar","i32"),e.addParam("scalarLen","i32"),e.addParam("r","i32");const n=e.getCodeBuilder(),l=n.getLocal("x"),r=n.i32_add(n.getLocal("x"),n.i32_const(o)),s=n.i32_add(n.getLocal("x"),n.i32_const(2*o)),c=n.getLocal("r"),d=n.i32_add(n.getLocal("r"),n.i32_const(o)),u=n.i32_add(n.getLocal("r"),n.i32_const(2*o));e.addCode(n.call(i+"_timesScalar",l,n.getLocal("scalar"),n.getLocal("scalarLen"),c),n.call(i+"_timesScalar",r,n.getLocal("scalar"),n.getLocal("scalarLen"),d),n.call(i+"_timesScalar",s,n.getLocal("scalar"),n.getLocal("scalarLen"),u))}(),function(){const e=t.addFunction(a+"_isNegative");e.addParam("x","i32"),e.setReturnType("i32");const n=e.getCodeBuilder(),l=n.getLocal("x"),r=n.i32_add(n.getLocal("x"),n.i32_const(o)),s=n.i32_add(n.getLocal("x"),n.i32_const(2*o));e.addCode(n.if(n.call(i+"_isZero",s),n.if(n.call(i+"_isZero",r),n.ret(n.call(i+"_isNegative",l)),n.ret(n.call(i+"_isNegative",r)))),n.ret(n.call(i+"_isNegative",s)))}(),t.exportFunction(a+"_isZero"),t.exportFunction(a+"_isOne"),t.exportFunction(a+"_zero"),t.exportFunction(a+"_one"),t.exportFunction(a+"_copy"),t.exportFunction(a+"_mul"),t.exportFunction(a+"_square"),t.exportFunction(a+"_add"),t.exportFunction(a+"_sub"),t.exportFunction(a+"_neg"),t.exportFunction(a+"_sign"),t.exportFunction(a+"_fromMontgomery"),t.exportFunction(a+"_toMontgomery"),t.exportFunction(a+"_eq"),t.exportFunction(a+"_inverse"),Pt(t,a),St(t,a+"_exp",3*o,a+"_mul",a+"_square",a+"_copy",a+"_one"),t.exportFunction(a+"_exp"),t.exportFunction(a+"_timesScalar"),t.exportFunction(a+"_batchInverse"),t.exportFunction(a+"_isNegative"),a};const Ot=function(t,e,a,i,o,n,l,r){const s=t.addFunction(e);s.addParam("base","i32"),s.addParam("scalar","i32"),s.addParam("scalarLength","i32"),s.addParam("r","i32"),s.addLocal("old0","i32"),s.addLocal("nbits","i32"),s.addLocal("i","i32"),s.addLocal("last","i32"),s.addLocal("cur","i32"),s.addLocal("carry","i32"),s.addLocal("p","i32");const c=s.getCodeBuilder(),d=c.i32_const(t.alloc(a));function u(t){return c.i32_and(c.i32_shr_u(c.i32_load(c.i32_add(c.getLocal("scalar"),c.i32_and(c.i32_shr_u(t,c.i32_const(3)),c.i32_const(4294967292)))),c.i32_and(t,c.i32_const(31))),c.i32_const(1))}function g(t){return[...c.i32_store8(c.getLocal("p"),c.i32_const(t)),...c.setLocal("p",c.i32_add(c.getLocal("p"),c.i32_const(1)))]}s.addCode(c.if(c.i32_eqz(c.getLocal("scalarLength")),[...c.call(r,c.getLocal("r")),...c.ret([])]),c.setLocal("nbits",c.i32_shl(c.getLocal("scalarLength"),c.i32_const(3))),c.setLocal("old0",c.i32_load(c.i32_const(0))),c.setLocal("p",c.getLocal("old0")),c.i32_store(c.i32_const(0),c.i32_and(c.i32_add(c.i32_add(c.getLocal("old0"),c.i32_const(32)),c.getLocal("nbits")),c.i32_const(4294967288))),c.setLocal("i",c.i32_const(1)),c.setLocal("last",u(c.i32_const(0))),c.setLocal("carry",c.i32_const(0)),c.block(c.loop(c.br_if(1,c.i32_eq(c.getLocal("i"),c.getLocal("nbits"))),c.setLocal("cur",u(c.getLocal("i"))),c.if(c.getLocal("last"),c.if(c.getLocal("cur"),c.if(c.getLocal("carry"),[...c.setLocal("last",c.i32_const(0)),...c.setLocal("carry",c.i32_const(1)),...g(1)],[...c.setLocal("last",c.i32_const(0)),...c.setLocal("carry",c.i32_const(1)),...g(255)]),c.if(c.getLocal("carry"),[...c.setLocal("last",c.i32_const(0)),...c.setLocal("carry",c.i32_const(1)),...g(255)],[...c.setLocal("last",c.i32_const(0)),...c.setLocal("carry",c.i32_const(0)),...g(1)])),c.if(c.getLocal("cur"),c.if(c.getLocal("carry"),[...c.setLocal("last",c.i32_const(0)),...c.setLocal("carry",c.i32_const(1)),...g(0)],[...c.setLocal("last",c.i32_const(1)),...c.setLocal("carry",c.i32_const(0)),...g(0)]),c.if(c.getLocal("carry"),[...c.setLocal("last",c.i32_const(1)),...c.setLocal("carry",c.i32_const(0)),...g(0)],[...c.setLocal("last",c.i32_const(0)),...c.setLocal("carry",c.i32_const(0)),...g(0)]))),c.setLocal("i",c.i32_add(c.getLocal("i"),c.i32_const(1))),c.br(0))),c.if(c.getLocal("last"),c.if(c.getLocal("carry"),[...g(255),...g(0),...g(1)],[...g(1)]),c.if(c.getLocal("carry"),[...g(0),...g(1)])),c.setLocal("p",c.i32_sub(c.getLocal("p"),c.i32_const(1))),c.call(l,c.getLocal("base"),d),c.call(r,c.getLocal("r")),c.block(c.loop(c.call(o,c.getLocal("r"),c.getLocal("r")),c.setLocal("cur",c.i32_load8_u(c.getLocal("p"))),c.if(c.getLocal("cur"),c.if(c.i32_eq(c.getLocal("cur"),c.i32_const(1)),c.call(i,c.getLocal("r"),d,c.getLocal("r")),c.call(n,c.getLocal("r"),d,c.getLocal("r")))),c.br_if(1,c.i32_eq(c.getLocal("old0"),c.getLocal("p"))),c.setLocal("p",c.i32_sub(c.getLocal("p"),c.i32_const(1))),c.br(0))),c.i32_store(c.i32_const(0),c.getLocal("old0")))},Tt=H,Ut=function(t,e,a,i,o){const n=8*t.modules[e].n64;function l(){const i=t.addFunction(a);i.addParam("pBases","i32"),i.addParam("pScalars","i32"),i.addParam("scalarSize","i32"),i.addParam("n","i32"),i.addParam("pr","i32"),i.addLocal("chunkSize","i32"),i.addLocal("nChunks","i32"),i.addLocal("itScalar","i32"),i.addLocal("endScalar","i32"),i.addLocal("itBase","i32"),i.addLocal("itBit","i32"),i.addLocal("i","i32"),i.addLocal("j","i32"),i.addLocal("nTable","i32"),i.addLocal("pTable","i32"),i.addLocal("idx","i32"),i.addLocal("pIdxTable","i32");const o=i.getCodeBuilder(),l=o.i32_const(t.alloc(n)),r=t.alloc([17,17,17,17,17,17,17,17,17,17,16,16,15,14,13,13,12,11,10,9,8,7,7,6,5,4,3,2,1,1,1,1]);i.addCode(o.call(e+"_zero",o.getLocal("pr")),o.if(o.i32_eqz(o.getLocal("n")),o.ret([])),o.setLocal("chunkSize",o.i32_load8_u(o.i32_clz(o.getLocal("n")),r)),o.setLocal("nChunks",o.i32_add(o.i32_div_u(o.i32_sub(o.i32_shl(o.getLocal("scalarSize"),o.i32_const(3)),o.i32_const(1)),o.getLocal("chunkSize")),o.i32_const(1))),o.setLocal("itBit",o.i32_mul(o.i32_sub(o.getLocal("nChunks"),o.i32_const(1)),o.getLocal("chunkSize"))),o.block(o.loop(o.br_if(1,o.i32_lt_s(o.getLocal("itBit"),o.i32_const(0))),o.if(o.i32_eqz(o.call(e+"_isZero",o.getLocal("pr"))),[...o.setLocal("j",o.i32_const(0)),...o.block(o.loop(o.br_if(1,o.i32_eq(o.getLocal("j"),o.getLocal("chunkSize"))),o.call(e+"_double",o.getLocal("pr"),o.getLocal("pr")),o.setLocal("j",o.i32_add(o.getLocal("j"),o.i32_const(1))),o.br(0)))]),o.call(a+"_chunk",o.getLocal("pBases"),o.getLocal("pScalars"),o.getLocal("scalarSize"),o.getLocal("n"),o.getLocal("itBit"),o.getLocal("chunkSize"),l),o.call(e+"_add",o.getLocal("pr"),l,o.getLocal("pr")),o.setLocal("itBit",o.i32_sub(o.getLocal("itBit"),o.getLocal("chunkSize"))),o.br(0))))}!function(){const e=t.addFunction(a+"_getChunk");e.addParam("pScalar","i32"),e.addParam("scalarSize","i32"),e.addParam("startBit","i32"),e.addParam("chunkSize","i32"),e.addLocal("bitsToEnd","i32"),e.addLocal("mask","i32"),e.setReturnType("i32");const i=e.getCodeBuilder();e.addCode(i.setLocal("bitsToEnd",i.i32_sub(i.i32_mul(i.getLocal("scalarSize"),i.i32_const(8)),i.getLocal("startBit"))),i.if(i.i32_gt_s(i.getLocal("chunkSize"),i.getLocal("bitsToEnd")),i.setLocal("mask",i.i32_sub(i.i32_shl(i.i32_const(1),i.getLocal("bitsToEnd")),i.i32_const(1))),i.setLocal("mask",i.i32_sub(i.i32_shl(i.i32_const(1),i.getLocal("chunkSize")),i.i32_const(1)))),i.i32_and(i.i32_shr_u(i.i32_load(i.i32_add(i.getLocal("pScalar"),i.i32_shr_u(i.getLocal("startBit"),i.i32_const(3))),0,0),i.i32_and(i.getLocal("startBit"),i.i32_const(7))),i.getLocal("mask")))}(),function(){const i=t.addFunction(a+"_reduceTable");i.addParam("pTable","i32"),i.addParam("p","i32"),i.addLocal("half","i32"),i.addLocal("it1","i32"),i.addLocal("it2","i32"),i.addLocal("pAcc","i32");const o=i.getCodeBuilder();i.addCode(o.if(o.i32_eq(o.getLocal("p"),o.i32_const(1)),o.ret([])),o.setLocal("half",o.i32_shl(o.i32_const(1),o.i32_sub(o.getLocal("p"),o.i32_const(1)))),o.setLocal("it1",o.getLocal("pTable")),o.setLocal("it2",o.i32_add(o.getLocal("pTable"),o.i32_mul(o.getLocal("half"),o.i32_const(n)))),o.setLocal("pAcc",o.i32_sub(o.getLocal("it2"),o.i32_const(n))),o.block(o.loop(o.br_if(1,o.i32_eq(o.getLocal("it1"),o.getLocal("pAcc"))),o.call(e+"_add",o.getLocal("it1"),o.getLocal("it2"),o.getLocal("it1")),o.call(e+"_add",o.getLocal("pAcc"),o.getLocal("it2"),o.getLocal("pAcc")),o.setLocal("it1",o.i32_add(o.getLocal("it1"),o.i32_const(n))),o.setLocal("it2",o.i32_add(o.getLocal("it2"),o.i32_const(n))),o.br(0))),o.call(a+"_reduceTable",o.getLocal("pTable"),o.i32_sub(o.getLocal("p"),o.i32_const(1))),o.setLocal("p",o.i32_sub(o.getLocal("p"),o.i32_const(1))),o.block(o.loop(o.br_if(1,o.i32_eqz(o.getLocal("p"))),o.call(e+"_double",o.getLocal("pAcc"),o.getLocal("pAcc")),o.setLocal("p",o.i32_sub(o.getLocal("p"),o.i32_const(1))),o.br(0))),o.call(e+"_add",o.getLocal("pTable"),o.getLocal("pAcc"),o.getLocal("pTable")))}(),function(){const l=t.addFunction(a+"_chunk");l.addParam("pBases","i32"),l.addParam("pScalars","i32"),l.addParam("scalarSize","i32"),l.addParam("n","i32"),l.addParam("startBit","i32"),l.addParam("chunkSize","i32"),l.addParam("pr","i32"),l.addLocal("nChunks","i32"),l.addLocal("itScalar","i32"),l.addLocal("endScalar","i32"),l.addLocal("itBase","i32"),l.addLocal("i","i32"),l.addLocal("j","i32"),l.addLocal("nTable","i32"),l.addLocal("pTable","i32"),l.addLocal("idx","i32"),l.addLocal("pIdxTable","i32");const r=l.getCodeBuilder();l.addCode(r.if(r.i32_eqz(r.getLocal("n")),[...r.call(e+"_zero",r.getLocal("pr")),...r.ret([])]),r.setLocal("nTable",r.i32_shl(r.i32_const(1),r.getLocal("chunkSize"))),r.setLocal("pTable",r.i32_load(r.i32_const(0))),r.i32_store(r.i32_const(0),r.i32_add(r.getLocal("pTable"),r.i32_mul(r.getLocal("nTable"),r.i32_const(n)))),r.setLocal("j",r.i32_const(0)),r.block(r.loop(r.br_if(1,r.i32_eq(r.getLocal("j"),r.getLocal("nTable"))),r.call(e+"_zero",r.i32_add(r.getLocal("pTable"),r.i32_mul(r.getLocal("j"),r.i32_const(n)))),r.setLocal("j",r.i32_add(r.getLocal("j"),r.i32_const(1))),r.br(0))),r.setLocal("itBase",r.getLocal("pBases")),r.setLocal("itScalar",r.getLocal("pScalars")),r.setLocal("endScalar",r.i32_add(r.getLocal("pScalars"),r.i32_mul(r.getLocal("n"),r.getLocal("scalarSize")))),r.block(r.loop(r.br_if(1,r.i32_eq(r.getLocal("itScalar"),r.getLocal("endScalar"))),r.setLocal("idx",r.call(a+"_getChunk",r.getLocal("itScalar"),r.getLocal("scalarSize"),r.getLocal("startBit"),r.getLocal("chunkSize"))),r.if(r.getLocal("idx"),[...r.setLocal("pIdxTable",r.i32_add(r.getLocal("pTable"),r.i32_mul(r.i32_sub(r.getLocal("idx"),r.i32_const(1)),r.i32_const(n)))),...r.call(i,r.getLocal("pIdxTable"),r.getLocal("itBase"),r.getLocal("pIdxTable"))]),r.setLocal("itScalar",r.i32_add(r.getLocal("itScalar"),r.getLocal("scalarSize"))),r.setLocal("itBase",r.i32_add(r.getLocal("itBase"),r.i32_const(o))),r.br(0))),r.call(a+"_reduceTable",r.getLocal("pTable"),r.getLocal("chunkSize")),r.call(e+"_copy",r.getLocal("pTable"),r.getLocal("pr")),r.i32_store(r.i32_const(0),r.getLocal("pTable")))}(),l(),t.exportFunction(a),t.exportFunction(a+"_chunk")};var zt=function(t,e,a,i){const o=t.modules[a].n64,n=8*o;if(t.modules[e])return e;return t.modules[e]={n64:3*o},function(){const i=t.addFunction(e+"_isZeroAffine");i.addParam("p1","i32"),i.setReturnType("i32");const o=i.getCodeBuilder();i.addCode(o.i32_and(o.call(a+"_isZero",o.getLocal("p1")),o.call(a+"_isZero",o.i32_add(o.getLocal("p1"),o.i32_const(n)))))}(),function(){const i=t.addFunction(e+"_isZero");i.addParam("p1","i32"),i.setReturnType("i32");const o=i.getCodeBuilder();i.addCode(o.call(a+"_isZero",o.i32_add(o.getLocal("p1"),o.i32_const(2*n))))}(),function(){const i=t.addFunction(e+"_zeroAffine");i.addParam("pr","i32");const o=i.getCodeBuilder();i.addCode(o.call(a+"_zero",o.getLocal("pr"))),i.addCode(o.call(a+"_zero",o.i32_add(o.getLocal("pr"),o.i32_const(n))))}(),function(){const i=t.addFunction(e+"_zero");i.addParam("pr","i32");const o=i.getCodeBuilder();i.addCode(o.call(a+"_zero",o.getLocal("pr"))),i.addCode(o.call(a+"_one",o.i32_add(o.getLocal("pr"),o.i32_const(n)))),i.addCode(o.call(a+"_zero",o.i32_add(o.getLocal("pr"),o.i32_const(2*n))))}(),function(){const a=t.addFunction(e+"_copyAffine");a.addParam("ps","i32"),a.addParam("pd","i32");const i=a.getCodeBuilder();for(let t=0;t<2*o;t++)a.addCode(i.i64_store(i.getLocal("pd"),8*t,i.i64_load(i.getLocal("ps"),8*t)))}(),function(){const a=t.addFunction(e+"_copy");a.addParam("ps","i32"),a.addParam("pd","i32");const i=a.getCodeBuilder();for(let t=0;t<3*o;t++)a.addCode(i.i64_store(i.getLocal("pd"),8*t,i.i64_load(i.getLocal("ps"),8*t)))}(),function(){const i=t.addFunction(e+"_toJacobian");i.addParam("p1","i32"),i.addParam("pr","i32");const o=i.getCodeBuilder(),l=o.getLocal("p1"),r=o.i32_add(o.getLocal("p1"),o.i32_const(n)),s=o.getLocal("pr"),c=o.i32_add(o.getLocal("pr"),o.i32_const(n)),d=o.i32_add(o.getLocal("pr"),o.i32_const(2*n));i.addCode(o.if(o.call(e+"_isZeroAffine",o.getLocal("p1")),o.call(e+"_zero",o.getLocal("pr")),[...o.call(a+"_one",d),...o.call(a+"_copy",r,c),...o.call(a+"_copy",l,s)]))}(),function(){const i=t.addFunction(e+"_eqAffine");i.addParam("p1","i32"),i.addParam("p2","i32"),i.setReturnType("i32"),i.addLocal("z1","i32");const o=i.getCodeBuilder();i.addCode(o.ret(o.i32_and(o.call(a+"_eq",o.getLocal("p1"),o.getLocal("p2")),o.call(a+"_eq",o.i32_add(o.getLocal("p1"),o.i32_const(n)),o.i32_add(o.getLocal("p2"),o.i32_const(n))))))}(),function(){const i=t.addFunction(e+"_eqMixed");i.addParam("p1","i32"),i.addParam("p2","i32"),i.setReturnType("i32"),i.addLocal("z1","i32");const o=i.getCodeBuilder(),l=o.getLocal("p1"),r=o.i32_add(o.getLocal("p1"),o.i32_const(n));i.addCode(o.setLocal("z1",o.i32_add(o.getLocal("p1"),o.i32_const(2*n))));const s=o.getLocal("z1"),c=o.getLocal("p2"),d=o.i32_add(o.getLocal("p2"),o.i32_const(n)),u=o.i32_const(t.alloc(n)),g=o.i32_const(t.alloc(n)),f=o.i32_const(t.alloc(n)),h=o.i32_const(t.alloc(n));i.addCode(o.if(o.call(e+"_isZero",o.getLocal("p1")),o.ret(o.call(e+"_isZeroAffine",o.getLocal("p2")))),o.if(o.call(e+"_isZeroAffine",o.getLocal("p2")),o.ret(o.i32_const(0))),o.if(o.call(a+"_isOne",s),o.ret(o.call(e+"_eqAffine",o.getLocal("p1"),o.getLocal("p2")))),o.call(a+"_square",s,u),o.call(a+"_mul",c,u,g),o.call(a+"_mul",s,u,f),o.call(a+"_mul",d,f,h),o.if(o.call(a+"_eq",l,g),o.if(o.call(a+"_eq",r,h),o.ret(o.i32_const(1)))),o.ret(o.i32_const(0)))}(),function(){const i=t.addFunction(e+"_eq");i.addParam("p1","i32"),i.addParam("p2","i32"),i.setReturnType("i32"),i.addLocal("z1","i32"),i.addLocal("z2","i32");const o=i.getCodeBuilder(),l=o.getLocal("p1"),r=o.i32_add(o.getLocal("p1"),o.i32_const(n));i.addCode(o.setLocal("z1",o.i32_add(o.getLocal("p1"),o.i32_const(2*n))));const s=o.getLocal("z1"),c=o.getLocal("p2"),d=o.i32_add(o.getLocal("p2"),o.i32_const(n));i.addCode(o.setLocal("z2",o.i32_add(o.getLocal("p2"),o.i32_const(2*n))));const u=o.getLocal("z2"),g=o.i32_const(t.alloc(n)),f=o.i32_const(t.alloc(n)),h=o.i32_const(t.alloc(n)),_=o.i32_const(t.alloc(n)),p=o.i32_const(t.alloc(n)),m=o.i32_const(t.alloc(n)),w=o.i32_const(t.alloc(n)),L=o.i32_const(t.alloc(n));i.addCode(o.if(o.call(e+"_isZero",o.getLocal("p1")),o.ret(o.call(e+"_isZero",o.getLocal("p2")))),o.if(o.call(e+"_isZero",o.getLocal("p2")),o.ret(o.i32_const(0))),o.if(o.call(a+"_isOne",s),o.ret(o.call(e+"_eqMixed",o.getLocal("p2"),o.getLocal("p1")))),o.if(o.call(a+"_isOne",u),o.ret(o.call(e+"_eqMixed",o.getLocal("p1"),o.getLocal("p2")))),o.call(a+"_square",s,g),o.call(a+"_square",u,f),o.call(a+"_mul",l,f,h),o.call(a+"_mul",c,g,_),o.call(a+"_mul",s,g,p),o.call(a+"_mul",u,f,m),o.call(a+"_mul",r,m,w),o.call(a+"_mul",d,p,L),o.if(o.call(a+"_eq",h,_),o.if(o.call(a+"_eq",w,L),o.ret(o.i32_const(1)))),o.ret(o.i32_const(0)))}(),function(){const i=t.addFunction(e+"_doubleAffine");i.addParam("p1","i32"),i.addParam("pr","i32");const o=i.getCodeBuilder(),l=o.getLocal("p1"),r=o.i32_add(o.getLocal("p1"),o.i32_const(n)),s=o.getLocal("pr"),c=o.i32_add(o.getLocal("pr"),o.i32_const(n)),d=o.i32_add(o.getLocal("pr"),o.i32_const(2*n)),u=o.i32_const(t.alloc(n)),g=o.i32_const(t.alloc(n)),f=o.i32_const(t.alloc(n)),h=o.i32_const(t.alloc(n)),_=o.i32_const(t.alloc(n)),p=o.i32_const(t.alloc(n));i.addCode(o.if(o.call(e+"_isZeroAffine",o.getLocal("p1")),[...o.call(e+"_toJacobian",o.getLocal("p1"),o.getLocal("pr")),...o.ret([])]),o.call(a+"_square",l,u),o.call(a+"_square",r,g),o.call(a+"_square",g,f),o.call(a+"_add",l,g,h),o.call(a+"_square",h,h),o.call(a+"_sub",h,u,h),o.call(a+"_sub",h,f,h),o.call(a+"_add",h,h,h),o.call(a+"_add",u,u,_),o.call(a+"_add",_,u,_),o.call(a+"_add",r,r,d),o.call(a+"_square",_,s),o.call(a+"_sub",s,h,s),o.call(a+"_sub",s,h,s),o.call(a+"_add",f,f,p),o.call(a+"_add",p,p,p),o.call(a+"_add",p,p,p),o.call(a+"_sub",h,s,c),o.call(a+"_mul",c,_,c),o.call(a+"_sub",c,p,c))}(),function(){const i=t.addFunction(e+"_double");i.addParam("p1","i32"),i.addParam("pr","i32");const o=i.getCodeBuilder(),l=o.getLocal("p1"),r=o.i32_add(o.getLocal("p1"),o.i32_const(n)),s=o.i32_add(o.getLocal("p1"),o.i32_const(2*n)),c=o.getLocal("pr"),d=o.i32_add(o.getLocal("pr"),o.i32_const(n)),u=o.i32_add(o.getLocal("pr"),o.i32_const(2*n)),g=o.i32_const(t.alloc(n)),f=o.i32_const(t.alloc(n)),h=o.i32_const(t.alloc(n)),_=o.i32_const(t.alloc(n)),p=o.i32_const(t.alloc(n)),m=o.i32_const(t.alloc(n)),w=o.i32_const(t.alloc(n)),L=o.i32_const(t.alloc(n));i.addCode(o.if(o.call(e+"_isZero",o.getLocal("p1")),[...o.call(e+"_copy",o.getLocal("p1"),o.getLocal("pr")),...o.ret([])]),o.if(o.call(a+"_isOne",s),[...o.ret(o.call(e+"_doubleAffine",o.getLocal("p1"),o.getLocal("pr"))),...o.ret([])]),o.call(a+"_square",l,g),o.call(a+"_square",r,f),o.call(a+"_square",f,h),o.call(a+"_add",l,f,_),o.call(a+"_square",_,_),o.call(a+"_sub",_,g,_),o.call(a+"_sub",_,h,_),o.call(a+"_add",_,_,_),o.call(a+"_add",g,g,p),o.call(a+"_add",p,g,p),o.call(a+"_square",p,m),o.call(a+"_mul",r,s,w),o.call(a+"_add",_,_,c),o.call(a+"_sub",m,c,c),o.call(a+"_add",h,h,L),o.call(a+"_add",L,L,L),o.call(a+"_add",L,L,L),o.call(a+"_sub",_,c,d),o.call(a+"_mul",d,p,d),o.call(a+"_sub",d,L,d),o.call(a+"_add",w,w,u))}(),function(){const i=t.addFunction(e+"_addAffine");i.addParam("p1","i32"),i.addParam("p2","i32"),i.addParam("pr","i32"),i.addLocal("z1","i32");const o=i.getCodeBuilder(),l=o.getLocal("p1"),r=o.i32_add(o.getLocal("p1"),o.i32_const(n));i.addCode(o.setLocal("z1",o.i32_add(o.getLocal("p1"),o.i32_const(2*n))));const s=o.getLocal("p2"),c=o.i32_add(o.getLocal("p2"),o.i32_const(n)),d=o.getLocal("pr"),u=o.i32_add(o.getLocal("pr"),o.i32_const(n)),g=o.i32_add(o.getLocal("pr"),o.i32_const(2*n)),f=o.i32_const(t.alloc(n)),h=o.i32_const(t.alloc(n)),_=o.i32_const(t.alloc(n)),p=o.i32_const(t.alloc(n)),m=o.i32_const(t.alloc(n)),w=o.i32_const(t.alloc(n)),L=o.i32_const(t.alloc(n)),b=o.i32_const(t.alloc(n)),y=o.i32_const(t.alloc(n)),A=o.i32_const(t.alloc(n));i.addCode(o.if(o.call(e+"_isZeroAffine",o.getLocal("p1")),[...o.call(e+"_copyAffine",o.getLocal("p2"),o.getLocal("pr")),...o.call(a+"_one",o.i32_add(o.getLocal("pr"),o.i32_const(2*n))),...o.ret([])]),o.if(o.call(e+"_isZeroAffine",o.getLocal("p2")),[...o.call(e+"_copyAffine",o.getLocal("p1"),o.getLocal("pr")),...o.call(a+"_one",o.i32_add(o.getLocal("pr"),o.i32_const(2*n))),...o.ret([])]),o.if(o.call(a+"_eq",l,s),o.if(o.call(a+"_eq",r,c),[...o.call(e+"_doubleAffine",o.getLocal("p2"),o.getLocal("pr")),...o.ret([])])),o.call(a+"_sub",s,l,f),o.call(a+"_sub",c,r,_),o.call(a+"_square",f,h),o.call(a+"_add",h,h,p),o.call(a+"_add",p,p,p),o.call(a+"_mul",f,p,m),o.call(a+"_add",_,_,w),o.call(a+"_mul",l,p,b),o.call(a+"_square",w,L),o.call(a+"_add",b,b,y),o.call(a+"_sub",L,m,d),o.call(a+"_sub",d,y,d),o.call(a+"_mul",r,m,A),o.call(a+"_add",A,A,A),o.call(a+"_sub",b,d,u),o.call(a+"_mul",u,w,u),o.call(a+"_sub",u,A,u),o.call(a+"_add",f,f,g))}(),function(){const i=t.addFunction(e+"_addMixed");i.addParam("p1","i32"),i.addParam("p2","i32"),i.addParam("pr","i32"),i.addLocal("z1","i32");const o=i.getCodeBuilder(),l=o.getLocal("p1"),r=o.i32_add(o.getLocal("p1"),o.i32_const(n));i.addCode(o.setLocal("z1",o.i32_add(o.getLocal("p1"),o.i32_const(2*n))));const s=o.getLocal("z1"),c=o.getLocal("p2"),d=o.i32_add(o.getLocal("p2"),o.i32_const(n)),u=o.getLocal("pr"),g=o.i32_add(o.getLocal("pr"),o.i32_const(n)),f=o.i32_add(o.getLocal("pr"),o.i32_const(2*n)),h=o.i32_const(t.alloc(n)),_=o.i32_const(t.alloc(n)),p=o.i32_const(t.alloc(n)),m=o.i32_const(t.alloc(n)),w=o.i32_const(t.alloc(n)),L=o.i32_const(t.alloc(n)),b=o.i32_const(t.alloc(n)),y=o.i32_const(t.alloc(n)),A=o.i32_const(t.alloc(n)),C=o.i32_const(t.alloc(n)),I=o.i32_const(t.alloc(n)),F=o.i32_const(t.alloc(n)),x=o.i32_const(t.alloc(n)),E=o.i32_const(t.alloc(n));i.addCode(o.if(o.call(e+"_isZero",o.getLocal("p1")),[...o.call(e+"_copyAffine",o.getLocal("p2"),o.getLocal("pr")),...o.call(a+"_one",o.i32_add(o.getLocal("pr"),o.i32_const(2*n))),...o.ret([])]),o.if(o.call(e+"_isZeroAffine",o.getLocal("p2")),[...o.call(e+"_copy",o.getLocal("p1"),o.getLocal("pr")),...o.ret([])]),o.if(o.call(a+"_isOne",s),[...o.call(e+"_addAffine",l,c,u),...o.ret([])]),o.call(a+"_square",s,h),o.call(a+"_mul",c,h,_),o.call(a+"_mul",s,h,p),o.call(a+"_mul",d,p,m),o.if(o.call(a+"_eq",l,_),o.if(o.call(a+"_eq",r,m),[...o.call(e+"_doubleAffine",o.getLocal("p2"),o.getLocal("pr")),...o.ret([])])),o.call(a+"_sub",_,l,w),o.call(a+"_sub",m,r,b),o.call(a+"_square",w,L),o.call(a+"_add",L,L,y),o.call(a+"_add",y,y,y),o.call(a+"_mul",w,y,A),o.call(a+"_add",b,b,C),o.call(a+"_mul",l,y,F),o.call(a+"_square",C,I),o.call(a+"_add",F,F,x),o.call(a+"_sub",I,A,u),o.call(a+"_sub",u,x,u),o.call(a+"_mul",r,A,E),o.call(a+"_add",E,E,E),o.call(a+"_sub",F,u,g),o.call(a+"_mul",g,C,g),o.call(a+"_sub",g,E,g),o.call(a+"_add",s,w,f),o.call(a+"_square",f,f),o.call(a+"_sub",f,h,f),o.call(a+"_sub",f,L,f))}(),function(){const i=t.addFunction(e+"_add");i.addParam("p1","i32"),i.addParam("p2","i32"),i.addParam("pr","i32"),i.addLocal("z1","i32"),i.addLocal("z2","i32");const o=i.getCodeBuilder(),l=o.getLocal("p1"),r=o.i32_add(o.getLocal("p1"),o.i32_const(n));i.addCode(o.setLocal("z1",o.i32_add(o.getLocal("p1"),o.i32_const(2*n))));const s=o.getLocal("z1"),c=o.getLocal("p2"),d=o.i32_add(o.getLocal("p2"),o.i32_const(n));i.addCode(o.setLocal("z2",o.i32_add(o.getLocal("p2"),o.i32_const(2*n))));const u=o.getLocal("z2"),g=o.getLocal("pr"),f=o.i32_add(o.getLocal("pr"),o.i32_const(n)),h=o.i32_add(o.getLocal("pr"),o.i32_const(2*n)),_=o.i32_const(t.alloc(n)),p=o.i32_const(t.alloc(n)),m=o.i32_const(t.alloc(n)),w=o.i32_const(t.alloc(n)),L=o.i32_const(t.alloc(n)),b=o.i32_const(t.alloc(n)),y=o.i32_const(t.alloc(n)),A=o.i32_const(t.alloc(n)),C=o.i32_const(t.alloc(n)),I=o.i32_const(t.alloc(n)),F=o.i32_const(t.alloc(n)),x=o.i32_const(t.alloc(n)),E=o.i32_const(t.alloc(n)),v=o.i32_const(t.alloc(n)),B=o.i32_const(t.alloc(n)),S=o.i32_const(t.alloc(n)),P=o.i32_const(t.alloc(n));i.addCode(o.if(o.call(e+"_isZero",o.getLocal("p1")),[...o.call(e+"_copy",o.getLocal("p2"),o.getLocal("pr")),...o.ret([])]),o.if(o.call(e+"_isZero",o.getLocal("p2")),[...o.call(e+"_copy",o.getLocal("p1"),o.getLocal("pr")),...o.ret([])]),o.if(o.call(a+"_isOne",s),[...o.call(e+"_addMixed",c,l,g),...o.ret([])]),o.if(o.call(a+"_isOne",u),[...o.call(e+"_addMixed",l,c,g),...o.ret([])]),o.call(a+"_square",s,_),o.call(a+"_square",u,p),o.call(a+"_mul",l,p,m),o.call(a+"_mul",c,_,w),o.call(a+"_mul",s,_,L),o.call(a+"_mul",u,p,b),o.call(a+"_mul",r,b,y),o.call(a+"_mul",d,L,A),o.if(o.call(a+"_eq",m,w),o.if(o.call(a+"_eq",y,A),[...o.call(e+"_double",o.getLocal("p1"),o.getLocal("pr")),...o.ret([])])),o.call(a+"_sub",w,m,C),o.call(a+"_sub",A,y,I),o.call(a+"_add",C,C,F),o.call(a+"_square",F,F),o.call(a+"_mul",C,F,x),o.call(a+"_add",I,I,E),o.call(a+"_mul",m,F,B),o.call(a+"_square",E,v),o.call(a+"_add",B,B,S),o.call(a+"_sub",v,x,g),o.call(a+"_sub",g,S,g),o.call(a+"_mul",y,x,P),o.call(a+"_add",P,P,P),o.call(a+"_sub",B,g,f),o.call(a+"_mul",f,E,f),o.call(a+"_sub",f,P,f),o.call(a+"_add",s,u,h),o.call(a+"_square",h,h),o.call(a+"_sub",h,_,h),o.call(a+"_sub",h,p,h),o.call(a+"_mul",h,C,h))}(),function(){const i=t.addFunction(e+"_negAffine");i.addParam("p1","i32"),i.addParam("pr","i32");const o=i.getCodeBuilder(),l=o.getLocal("p1"),r=o.i32_add(o.getLocal("p1"),o.i32_const(n)),s=o.getLocal("pr"),c=o.i32_add(o.getLocal("pr"),o.i32_const(n));i.addCode(o.call(a+"_copy",l,s),o.call(a+"_neg",r,c))}(),function(){const i=t.addFunction(e+"_neg");i.addParam("p1","i32"),i.addParam("pr","i32");const o=i.getCodeBuilder(),l=o.getLocal("p1"),r=o.i32_add(o.getLocal("p1"),o.i32_const(n)),s=o.i32_add(o.getLocal("p1"),o.i32_const(2*n)),c=o.getLocal("pr"),d=o.i32_add(o.getLocal("pr"),o.i32_const(n)),u=o.i32_add(o.getLocal("pr"),o.i32_const(2*n));i.addCode(o.call(a+"_copy",l,c),o.call(a+"_neg",r,d),o.call(a+"_copy",s,u))}(),function(){const a=t.addFunction(e+"_subAffine");a.addParam("p1","i32"),a.addParam("p2","i32"),a.addParam("pr","i32");const i=a.getCodeBuilder(),o=i.i32_const(t.alloc(3*n));a.addCode(i.call(e+"_negAffine",i.getLocal("p2"),o),i.call(e+"_addAffine",i.getLocal("p1"),o,i.getLocal("pr")))}(),function(){const a=t.addFunction(e+"_subMixed");a.addParam("p1","i32"),a.addParam("p2","i32"),a.addParam("pr","i32");const i=a.getCodeBuilder(),o=i.i32_const(t.alloc(3*n));a.addCode(i.call(e+"_negAffine",i.getLocal("p2"),o),i.call(e+"_addMixed",i.getLocal("p1"),o,i.getLocal("pr")))}(),function(){const a=t.addFunction(e+"_sub");a.addParam("p1","i32"),a.addParam("p2","i32"),a.addParam("pr","i32");const i=a.getCodeBuilder(),o=i.i32_const(t.alloc(3*n));a.addCode(i.call(e+"_neg",i.getLocal("p2"),o),i.call(e+"_add",i.getLocal("p1"),o,i.getLocal("pr")))}(),function(){const i=t.addFunction(e+"_fromMontgomeryAffine");i.addParam("p1","i32"),i.addParam("pr","i32");const o=i.getCodeBuilder();i.addCode(o.call(a+"_fromMontgomery",o.getLocal("p1"),o.getLocal("pr")));for(let t=1;t<2;t++)i.addCode(o.call(a+"_fromMontgomery",o.i32_add(o.getLocal("p1"),o.i32_const(t*n)),o.i32_add(o.getLocal("pr"),o.i32_const(t*n))))}(),function(){const i=t.addFunction(e+"_fromMontgomery");i.addParam("p1","i32"),i.addParam("pr","i32");const o=i.getCodeBuilder();i.addCode(o.call(a+"_fromMontgomery",o.getLocal("p1"),o.getLocal("pr")));for(let t=1;t<3;t++)i.addCode(o.call(a+"_fromMontgomery",o.i32_add(o.getLocal("p1"),o.i32_const(t*n)),o.i32_add(o.getLocal("pr"),o.i32_const(t*n))))}(),function(){const i=t.addFunction(e+"_toMontgomeryAffine");i.addParam("p1","i32"),i.addParam("pr","i32");const o=i.getCodeBuilder();i.addCode(o.call(a+"_toMontgomery",o.getLocal("p1"),o.getLocal("pr")));for(let t=1;t<2;t++)i.addCode(o.call(a+"_toMontgomery",o.i32_add(o.getLocal("p1"),o.i32_const(t*n)),o.i32_add(o.getLocal("pr"),o.i32_const(t*n))))}(),function(){const i=t.addFunction(e+"_toMontgomery");i.addParam("p1","i32"),i.addParam("pr","i32");const o=i.getCodeBuilder();i.addCode(o.call(a+"_toMontgomery",o.getLocal("p1"),o.getLocal("pr")));for(let t=1;t<3;t++)i.addCode(o.call(a+"_toMontgomery",o.i32_add(o.getLocal("p1"),o.i32_const(t*n)),o.i32_add(o.getLocal("pr"),o.i32_const(t*n))))}(),function(){const i=t.addFunction(e+"_toAffine");i.addParam("p1","i32"),i.addParam("pr","i32");const o=i.getCodeBuilder(),l=o.getLocal("p1"),r=o.i32_add(o.getLocal("p1"),o.i32_const(n)),s=o.i32_add(o.getLocal("p1"),o.i32_const(2*n)),c=o.getLocal("pr"),d=o.i32_add(o.getLocal("pr"),o.i32_const(n)),u=o.i32_const(t.alloc(n)),g=o.i32_const(t.alloc(n)),f=o.i32_const(t.alloc(n));i.addCode(o.if(o.call(e+"_isZero",o.getLocal("p1")),[...o.call(a+"_zero",c),...o.call(a+"_zero",d)],[...o.call(a+"_inverse",s,u),...o.call(a+"_square",u,g),...o.call(a+"_mul",u,g,f),...o.call(a+"_mul",l,g,c),...o.call(a+"_mul",r,f,d)]))}(),function(){const o=t.addFunction(e+"_inCurveAffine");o.addParam("pIn","i32"),o.setReturnType("i32");const l=o.getCodeBuilder(),r=l.getLocal("pIn"),s=l.i32_add(l.getLocal("pIn"),l.i32_const(n)),c=l.i32_const(t.alloc(n)),d=l.i32_const(t.alloc(n));o.addCode(l.call(a+"_square",s,c),l.call(a+"_square",r,d),l.call(a+"_mul",r,d,d),l.call(a+"_add",d,l.i32_const(i),d),l.ret(l.call(a+"_eq",c,d)))}(),function(){const a=t.addFunction(e+"_inCurve");a.addParam("pIn","i32"),a.setReturnType("i32");const i=a.getCodeBuilder(),o=i.i32_const(t.alloc(2*n));a.addCode(i.call(e+"_toAffine",i.getLocal("pIn"),o),i.ret(i.call(e+"_inCurveAffine",o)))}(),function(){const i=t.addFunction(e+"_batchToAffine");i.addParam("pIn","i32"),i.addParam("n","i32"),i.addParam("pOut","i32"),i.addLocal("pAux","i32"),i.addLocal("itIn","i32"),i.addLocal("itAux","i32"),i.addLocal("itOut","i32"),i.addLocal("i","i32");const o=i.getCodeBuilder(),l=o.i32_const(t.alloc(n));i.addCode(o.setLocal("pAux",o.i32_load(o.i32_const(0))),o.i32_store(o.i32_const(0),o.i32_add(o.getLocal("pAux"),o.i32_mul(o.getLocal("n"),o.i32_const(n)))),o.call(a+"_batchInverse",o.i32_add(o.getLocal("pIn"),o.i32_const(2*n)),o.i32_const(3*n),o.getLocal("n"),o.getLocal("pAux"),o.i32_const(n)),o.setLocal("itIn",o.getLocal("pIn")),o.setLocal("itAux",o.getLocal("pAux")),o.setLocal("itOut",o.getLocal("pOut")),o.setLocal("i",o.i32_const(0)),o.block(o.loop(o.br_if(1,o.i32_eq(o.getLocal("i"),o.getLocal("n"))),o.if(o.call(a+"_isZero",o.getLocal("itAux")),[...o.call(a+"_zero",o.getLocal("itOut")),...o.call(a+"_zero",o.i32_add(o.getLocal("itOut"),o.i32_const(n)))],[...o.call(a+"_mul",o.getLocal("itAux"),o.i32_add(o.getLocal("itIn"),o.i32_const(n)),l),...o.call(a+"_square",o.getLocal("itAux"),o.getLocal("itAux")),...o.call(a+"_mul",o.getLocal("itAux"),o.getLocal("itIn"),o.getLocal("itOut")),...o.call(a+"_mul",o.getLocal("itAux"),l,o.i32_add(o.getLocal("itOut"),o.i32_const(n)))]),o.setLocal("itIn",o.i32_add(o.getLocal("itIn"),o.i32_const(3*n))),o.setLocal("itOut",o.i32_add(o.getLocal("itOut"),o.i32_const(2*n))),o.setLocal("itAux",o.i32_add(o.getLocal("itAux"),o.i32_const(n))),o.setLocal("i",o.i32_add(o.getLocal("i"),o.i32_const(1))),o.br(0))),o.i32_store(o.i32_const(0),o.getLocal("pAux")))}(),function(){const i=t.addFunction(e+"_normalize");i.addParam("p1","i32"),i.addParam("pr","i32");const o=i.getCodeBuilder(),l=o.getLocal("p1"),r=o.i32_add(o.getLocal("p1"),o.i32_const(n)),s=o.i32_add(o.getLocal("p1"),o.i32_const(2*n)),c=o.getLocal("pr"),d=o.i32_add(o.getLocal("pr"),o.i32_const(n)),u=o.i32_add(o.getLocal("pr"),o.i32_const(2*n)),g=o.i32_const(t.alloc(n)),f=o.i32_const(t.alloc(n)),h=o.i32_const(t.alloc(n));i.addCode(o.if(o.call(e+"_isZero",o.getLocal("p1")),o.call(e+"_zero",o.getLocal("pr")),[...o.call(a+"_inverse",s,g),...o.call(a+"_square",g,f),...o.call(a+"_mul",g,f,h),...o.call(a+"_mul",l,f,c),...o.call(a+"_mul",r,h,d),...o.call(a+"_one",u)]))}(),function(){const a=t.addFunction(e+"__reverseBytes");a.addParam("pIn","i32"),a.addParam("n","i32"),a.addParam("pOut","i32"),a.addLocal("itOut","i32"),a.addLocal("itIn","i32");const i=a.getCodeBuilder();a.addCode(i.setLocal("itOut",i.i32_sub(i.i32_add(i.getLocal("pOut"),i.getLocal("n")),i.i32_const(1))),i.setLocal("itIn",i.getLocal("pIn")),i.block(i.loop(i.br_if(1,i.i32_lt_s(i.getLocal("itOut"),i.getLocal("pOut"))),i.i32_store8(i.getLocal("itOut"),i.i32_load8_u(i.getLocal("itIn"))),i.setLocal("itOut",i.i32_sub(i.getLocal("itOut"),i.i32_const(1))),i.setLocal("itIn",i.i32_add(i.getLocal("itIn"),i.i32_const(1))),i.br(0))))}(),function(){const a=t.addFunction(e+"_LEMtoU");a.addParam("pIn","i32"),a.addParam("pOut","i32");const i=a.getCodeBuilder(),o=t.alloc(2*n),l=i.i32_const(o),r=i.i32_const(o),s=i.i32_const(o+n);a.addCode(i.if(i.call(e+"_isZeroAffine",i.getLocal("pIn")),[...i.call(e+"_zeroAffine",i.getLocal("pOut")),...i.ret([])]),i.call(e+"_fromMontgomeryAffine",i.getLocal("pIn"),l),i.call(e+"__reverseBytes",r,i.i32_const(n),i.getLocal("pOut")),i.call(e+"__reverseBytes",s,i.i32_const(n),i.i32_add(i.getLocal("pOut"),i.i32_const(n))))}(),function(){const i=t.addFunction(e+"_LEMtoC");i.addParam("pIn","i32"),i.addParam("pOut","i32");const o=i.getCodeBuilder(),l=o.i32_const(t.alloc(n));i.addCode(o.if(o.call(e+"_isZeroAffine",o.getLocal("pIn")),[...o.call(a+"_zero",o.getLocal("pOut")),...o.i32_store8(o.getLocal("pOut"),o.i32_const(64)),...o.ret([])]),o.call(a+"_fromMontgomery",o.getLocal("pIn"),l),o.call(e+"__reverseBytes",l,o.i32_const(n),o.getLocal("pOut")),o.if(o.i32_eq(o.call(a+"_sign",o.i32_add(o.getLocal("pIn"),o.i32_const(n))),o.i32_const(-1)),o.i32_store8(o.getLocal("pOut"),o.i32_or(o.i32_load8_u(o.getLocal("pOut")),o.i32_const(128)))))}(),function(){const a=t.addFunction(e+"_UtoLEM");a.addParam("pIn","i32"),a.addParam("pOut","i32");const i=a.getCodeBuilder(),o=t.alloc(2*n),l=i.i32_const(o),r=i.i32_const(o),s=i.i32_const(o+n);a.addCode(i.if(i.i32_and(i.i32_load8_u(i.getLocal("pIn")),i.i32_const(64)),[...i.call(e+"_zeroAffine",i.getLocal("pOut")),...i.ret([])]),i.call(e+"__reverseBytes",i.getLocal("pIn"),i.i32_const(n),r),i.call(e+"__reverseBytes",i.i32_add(i.getLocal("pIn"),i.i32_const(n)),i.i32_const(n),s),i.call(e+"_toMontgomeryAffine",l,i.getLocal("pOut")))}(),function(){const o=t.addFunction(e+"_CtoLEM");o.addParam("pIn","i32"),o.addParam("pOut","i32"),o.addLocal("firstByte","i32"),o.addLocal("greatest","i32");const l=o.getCodeBuilder(),r=t.alloc(2*n),s=l.i32_const(r),c=l.i32_const(r+n);o.addCode(l.setLocal("firstByte",l.i32_load8_u(l.getLocal("pIn"))),l.if(l.i32_and(l.getLocal("firstByte"),l.i32_const(64)),[...l.call(e+"_zeroAffine",l.getLocal("pOut")),...l.ret([])]),l.setLocal("greatest",l.i32_and(l.getLocal("firstByte"),l.i32_const(128))),l.call(a+"_copy",l.getLocal("pIn"),c),l.i32_store8(c,l.i32_and(l.getLocal("firstByte"),l.i32_const(63))),l.call(e+"__reverseBytes",c,l.i32_const(n),s),l.call(a+"_toMontgomery",s,l.getLocal("pOut")),l.call(a+"_square",l.getLocal("pOut"),c),l.call(a+"_mul",l.getLocal("pOut"),c,c),l.call(a+"_add",c,l.i32_const(i),c),l.call(a+"_sqrt",c,c),l.call(a+"_neg",c,s),l.if(l.i32_eq(l.call(a+"_sign",c),l.i32_const(-1)),l.if(l.getLocal("greatest"),l.call(a+"_copy",c,l.i32_add(l.getLocal("pOut"),l.i32_const(n))),l.call(a+"_neg",c,l.i32_add(l.getLocal("pOut"),l.i32_const(n)))),l.if(l.getLocal("greatest"),l.call(a+"_neg",c,l.i32_add(l.getLocal("pOut"),l.i32_const(n))),l.call(a+"_copy",c,l.i32_add(l.getLocal("pOut"),l.i32_const(n))))))}(),Tt(t,e+"_batchLEMtoU",e+"_LEMtoU",2*n,2*n),Tt(t,e+"_batchLEMtoC",e+"_LEMtoC",2*n,n),Tt(t,e+"_batchUtoLEM",e+"_UtoLEM",2*n,2*n),Tt(t,e+"_batchCtoLEM",e+"_CtoLEM",n,2*n,!0),Tt(t,e+"_batchToJacobian",e+"_toJacobian",2*n,3*n,!0),Ut(t,e,e+"_multiexp",e+"_add",3*n),Ut(t,e,e+"_multiexpAffine",e+"_addMixed",2*n),Ot(t,e+"_timesScalar",3*n,e+"_add",e+"_double",e+"_sub",e+"_copy",e+"_zero"),Ot(t,e+"_timesScalarAffine",2*n,e+"_addMixed",e+"_double",e+"_subMixed",e+"_copyAffine",e+"_zero"),t.exportFunction(e+"_isZero"),t.exportFunction(e+"_isZeroAffine"),t.exportFunction(e+"_eq"),t.exportFunction(e+"_eqMixed"),t.exportFunction(e+"_eqAffine"),t.exportFunction(e+"_copy"),t.exportFunction(e+"_copyAffine"),t.exportFunction(e+"_zero"),t.exportFunction(e+"_zeroAffine"),t.exportFunction(e+"_double"),t.exportFunction(e+"_doubleAffine"),t.exportFunction(e+"_add"),t.exportFunction(e+"_addMixed"),t.exportFunction(e+"_addAffine"),t.exportFunction(e+"_neg"),t.exportFunction(e+"_negAffine"),t.exportFunction(e+"_sub"),t.exportFunction(e+"_subMixed"),t.exportFunction(e+"_subAffine"),t.exportFunction(e+"_fromMontgomery"),t.exportFunction(e+"_fromMontgomeryAffine"),t.exportFunction(e+"_toMontgomery"),t.exportFunction(e+"_toMontgomeryAffine"),t.exportFunction(e+"_timesScalar"),t.exportFunction(e+"_timesScalarAffine"),t.exportFunction(e+"_normalize"),t.exportFunction(e+"_LEMtoU"),t.exportFunction(e+"_LEMtoC"),t.exportFunction(e+"_UtoLEM"),t.exportFunction(e+"_CtoLEM"),t.exportFunction(e+"_batchLEMtoU"),t.exportFunction(e+"_batchLEMtoC"),t.exportFunction(e+"_batchUtoLEM"),t.exportFunction(e+"_batchCtoLEM"),t.exportFunction(e+"_toAffine"),t.exportFunction(e+"_toJacobian"),t.exportFunction(e+"_batchToAffine"),t.exportFunction(e+"_batchToJacobian"),t.exportFunction(e+"_inCurve"),t.exportFunction(e+"_inCurveAffine"),e};const{isOdd:Qt,modInv:qt,modPow:Mt}=W,kt=V;var Rt=function(t,e,a,i,o){const n=8*t.modules[i].n64,l=8*t.modules[a].n64,r=t.modules[i].q;let s=r-1n,c=0;for(;!Qt(s);)c++,s>>=1n;let d=2n;for(;1n===Mt(d,r>>1n,r);)d+=1n;const u=new Array(c+1);u[c]=Mt(d,s,r);let g=c-1;for(;g>=0;)u[g]=Mt(u[g+1],2n,r),g--;const f=[],h=(1n<>a);return e}const F=Array(256);for(let t=0;t<256;t++)F[t]=I(t);const x=t.alloc(F);function E(){const a=t.addFunction(e+"_fft");a.addParam("px","i32"),a.addParam("n","i32"),a.addLocal("bits","i32");const o=a.getCodeBuilder(),l=o.i32_const(t.alloc(n));a.addCode(o.setLocal("bits",o.call(e+"__log2",o.getLocal("n"))),o.call(i+"_one",l),o.call(e+"_rawfft",o.getLocal("px"),o.getLocal("bits"),o.i32_const(0),l))}!function(){const a=t.addFunction(e+"__rev");a.addParam("x","i32"),a.addParam("bits","i32"),a.setReturnType("i32");const i=a.getCodeBuilder();a.addCode(i.i32_rotl(i.i32_add(i.i32_add(i.i32_shl(i.i32_load8_u(i.i32_and(i.getLocal("x"),i.i32_const(255)),x,0),i.i32_const(24)),i.i32_shl(i.i32_load8_u(i.i32_and(i.i32_shr_u(i.getLocal("x"),i.i32_const(8)),i.i32_const(255)),x,0),i.i32_const(16))),i.i32_add(i.i32_shl(i.i32_load8_u(i.i32_and(i.i32_shr_u(i.getLocal("x"),i.i32_const(16)),i.i32_const(255)),x,0),i.i32_const(8)),i.i32_load8_u(i.i32_and(i.i32_shr_u(i.getLocal("x"),i.i32_const(24)),i.i32_const(255)),x,0))),i.getLocal("bits")))}(),function(){const i=t.addFunction(e+"__reversePermutation");i.addParam("px","i32"),i.addParam("bits","i32"),i.addLocal("n","i32"),i.addLocal("i","i32"),i.addLocal("ri","i32"),i.addLocal("idx1","i32"),i.addLocal("idx2","i32");const o=i.getCodeBuilder(),n=o.i32_const(t.alloc(l));i.addCode(o.setLocal("n",o.i32_shl(o.i32_const(1),o.getLocal("bits"))),o.setLocal("i",o.i32_const(0)),o.block(o.loop(o.br_if(1,o.i32_eq(o.getLocal("i"),o.getLocal("n"))),o.setLocal("idx1",o.i32_add(o.getLocal("px"),o.i32_mul(o.getLocal("i"),o.i32_const(l)))),o.setLocal("ri",o.call(e+"__rev",o.getLocal("i"),o.getLocal("bits"))),o.setLocal("idx2",o.i32_add(o.getLocal("px"),o.i32_mul(o.getLocal("ri"),o.i32_const(l)))),o.if(o.i32_lt_u(o.getLocal("i"),o.getLocal("ri")),[...o.call(a+"_copy",o.getLocal("idx1"),n),...o.call(a+"_copy",o.getLocal("idx2"),o.getLocal("idx1")),...o.call(a+"_copy",n,o.getLocal("idx2"))]),o.setLocal("i",o.i32_add(o.getLocal("i"),o.i32_const(1))),o.br(0))))}(),function(){const n=t.addFunction(e+"__fftFinal");n.addParam("px","i32"),n.addParam("bits","i32"),n.addParam("reverse","i32"),n.addParam("mulFactor","i32"),n.addLocal("n","i32"),n.addLocal("ndiv2","i32"),n.addLocal("pInv2","i32"),n.addLocal("i","i32"),n.addLocal("mask","i32"),n.addLocal("idx1","i32"),n.addLocal("idx2","i32");const r=n.getCodeBuilder(),s=r.i32_const(t.alloc(l));n.addCode(r.if(r.i32_and(r.i32_eqz(r.getLocal("reverse")),r.call(i+"_isOne",r.getLocal("mulFactor"))),r.ret([])),r.setLocal("n",r.i32_shl(r.i32_const(1),r.getLocal("bits"))),r.setLocal("mask",r.i32_sub(r.getLocal("n"),r.i32_const(1))),r.setLocal("i",r.i32_const(1)),r.setLocal("ndiv2",r.i32_shr_u(r.getLocal("n"),r.i32_const(1))),r.block(r.loop(r.br_if(1,r.i32_ge_u(r.getLocal("i"),r.getLocal("ndiv2"))),r.setLocal("idx1",r.i32_add(r.getLocal("px"),r.i32_mul(r.getLocal("i"),r.i32_const(l)))),r.setLocal("idx2",r.i32_add(r.getLocal("px"),r.i32_mul(r.i32_sub(r.getLocal("n"),r.getLocal("i")),r.i32_const(l)))),r.if(r.getLocal("reverse"),r.if(r.call(i+"_isOne",r.getLocal("mulFactor")),[...r.call(a+"_copy",r.getLocal("idx1"),s),...r.call(a+"_copy",r.getLocal("idx2"),r.getLocal("idx1")),...r.call(a+"_copy",s,r.getLocal("idx2"))],[...r.call(a+"_copy",r.getLocal("idx1"),s),...r.call(o,r.getLocal("idx2"),r.getLocal("mulFactor"),r.getLocal("idx1")),...r.call(o,s,r.getLocal("mulFactor"),r.getLocal("idx2"))]),r.if(r.call(i+"_isOne",r.getLocal("mulFactor")),[],[...r.call(o,r.getLocal("idx1"),r.getLocal("mulFactor"),r.getLocal("idx1")),...r.call(o,r.getLocal("idx2"),r.getLocal("mulFactor"),r.getLocal("idx2"))])),r.setLocal("i",r.i32_add(r.getLocal("i"),r.i32_const(1))),r.br(0))),r.if(r.call(i+"_isOne",r.getLocal("mulFactor")),[],[...r.call(o,r.getLocal("px"),r.getLocal("mulFactor"),r.getLocal("px")),...r.setLocal("idx2",r.i32_add(r.getLocal("px"),r.i32_mul(r.getLocal("ndiv2"),r.i32_const(l)))),...r.call(o,r.getLocal("idx2"),r.getLocal("mulFactor"),r.getLocal("idx2"))]))}(),function(){const r=t.addFunction(e+"_rawfft");r.addParam("px","i32"),r.addParam("bits","i32"),r.addParam("reverse","i32"),r.addParam("mulFactor","i32"),r.addLocal("s","i32"),r.addLocal("k","i32"),r.addLocal("j","i32"),r.addLocal("m","i32"),r.addLocal("mdiv2","i32"),r.addLocal("n","i32"),r.addLocal("pwm","i32"),r.addLocal("idx1","i32"),r.addLocal("idx2","i32");const s=r.getCodeBuilder(),c=s.i32_const(t.alloc(n)),d=s.i32_const(t.alloc(l)),u=s.i32_const(t.alloc(l));r.addCode(s.call(e+"__reversePermutation",s.getLocal("px"),s.getLocal("bits")),s.setLocal("n",s.i32_shl(s.i32_const(1),s.getLocal("bits"))),s.setLocal("s",s.i32_const(1)),s.block(s.loop(s.br_if(1,s.i32_gt_u(s.getLocal("s"),s.getLocal("bits"))),s.setLocal("m",s.i32_shl(s.i32_const(1),s.getLocal("s"))),s.setLocal("pwm",s.i32_add(s.i32_const(_),s.i32_mul(s.getLocal("s"),s.i32_const(n)))),s.setLocal("k",s.i32_const(0)),s.block(s.loop(s.br_if(1,s.i32_ge_u(s.getLocal("k"),s.getLocal("n"))),s.call(i+"_one",c),s.setLocal("mdiv2",s.i32_shr_u(s.getLocal("m"),s.i32_const(1))),s.setLocal("j",s.i32_const(0)),s.block(s.loop(s.br_if(1,s.i32_ge_u(s.getLocal("j"),s.getLocal("mdiv2"))),s.setLocal("idx1",s.i32_add(s.getLocal("px"),s.i32_mul(s.i32_add(s.getLocal("k"),s.getLocal("j")),s.i32_const(l)))),s.setLocal("idx2",s.i32_add(s.getLocal("idx1"),s.i32_mul(s.getLocal("mdiv2"),s.i32_const(l)))),s.call(o,s.getLocal("idx2"),c,d),s.call(a+"_copy",s.getLocal("idx1"),u),s.call(a+"_add",u,d,s.getLocal("idx1")),s.call(a+"_sub",u,d,s.getLocal("idx2")),s.call(i+"_mul",c,s.getLocal("pwm"),c),s.setLocal("j",s.i32_add(s.getLocal("j"),s.i32_const(1))),s.br(0))),s.setLocal("k",s.i32_add(s.getLocal("k"),s.getLocal("m"))),s.br(0))),s.setLocal("s",s.i32_add(s.getLocal("s"),s.i32_const(1))),s.br(0))),s.call(e+"__fftFinal",s.getLocal("px"),s.getLocal("bits"),s.getLocal("reverse"),s.getLocal("mulFactor")))}(),function(){const a=t.addFunction(e+"__log2");a.addParam("n","i32"),a.setReturnType("i32"),a.addLocal("bits","i32"),a.addLocal("aux","i32");const i=a.getCodeBuilder();a.addCode(i.setLocal("aux",i.i32_shr_u(i.getLocal("n"),i.i32_const(1)))),a.addCode(i.setLocal("bits",i.i32_const(0))),a.addCode(i.block(i.loop(i.br_if(1,i.i32_eqz(i.getLocal("aux"))),i.setLocal("aux",i.i32_shr_u(i.getLocal("aux"),i.i32_const(1))),i.setLocal("bits",i.i32_add(i.getLocal("bits"),i.i32_const(1))),i.br(0)))),a.addCode(i.if(i.i32_ne(i.getLocal("n"),i.i32_shl(i.i32_const(1),i.getLocal("bits"))),i.unreachable())),a.addCode(i.if(i.i32_gt_u(i.getLocal("bits"),i.i32_const(c)),i.unreachable())),a.addCode(i.getLocal("bits"))}(),E(),function(){const a=t.addFunction(e+"_ifft");a.addParam("px","i32"),a.addParam("n","i32"),a.addLocal("bits","i32"),a.addLocal("pInv2","i32");const i=a.getCodeBuilder();a.addCode(i.setLocal("bits",i.call(e+"__log2",i.getLocal("n"))),i.setLocal("pInv2",i.i32_add(i.i32_const(w),i.i32_mul(i.getLocal("bits"),i.i32_const(n)))),i.call(e+"_rawfft",i.getLocal("px"),i.getLocal("bits"),i.i32_const(1),i.getLocal("pInv2")))}(),function(){const r=t.addFunction(e+"_fftJoin");r.addParam("pBuff1","i32"),r.addParam("pBuff2","i32"),r.addParam("n","i32"),r.addParam("first","i32"),r.addParam("inc","i32"),r.addLocal("idx1","i32"),r.addLocal("idx2","i32"),r.addLocal("i","i32");const s=r.getCodeBuilder(),c=s.i32_const(t.alloc(n)),d=s.i32_const(t.alloc(l)),u=s.i32_const(t.alloc(l));r.addCode(s.call(i+"_copy",s.getLocal("first"),c),s.setLocal("i",s.i32_const(0)),s.block(s.loop(s.br_if(1,s.i32_eq(s.getLocal("i"),s.getLocal("n"))),s.setLocal("idx1",s.i32_add(s.getLocal("pBuff1"),s.i32_mul(s.getLocal("i"),s.i32_const(l)))),s.setLocal("idx2",s.i32_add(s.getLocal("pBuff2"),s.i32_mul(s.getLocal("i"),s.i32_const(l)))),s.call(o,s.getLocal("idx2"),c,d),s.call(a+"_copy",s.getLocal("idx1"),u),s.call(a+"_add",u,d,s.getLocal("idx1")),s.call(a+"_sub",u,d,s.getLocal("idx2")),s.call(i+"_mul",c,s.getLocal("inc"),c),s.setLocal("i",s.i32_add(s.getLocal("i"),s.i32_const(1))),s.br(0))))}(),function(){const r=t.addFunction(e+"_fftJoinExt");r.addParam("pBuff1","i32"),r.addParam("pBuff2","i32"),r.addParam("n","i32"),r.addParam("first","i32"),r.addParam("inc","i32"),r.addParam("totalBits","i32"),r.addLocal("idx1","i32"),r.addLocal("idx2","i32"),r.addLocal("i","i32"),r.addLocal("pShiftToM","i32");const s=r.getCodeBuilder(),c=s.i32_const(t.alloc(n)),d=s.i32_const(t.alloc(l));r.addCode(s.setLocal("pShiftToM",s.i32_add(s.i32_const(A),s.i32_mul(s.getLocal("totalBits"),s.i32_const(n)))),s.call(i+"_copy",s.getLocal("first"),c),s.setLocal("i",s.i32_const(0)),s.block(s.loop(s.br_if(1,s.i32_eq(s.getLocal("i"),s.getLocal("n"))),s.setLocal("idx1",s.i32_add(s.getLocal("pBuff1"),s.i32_mul(s.getLocal("i"),s.i32_const(l)))),s.setLocal("idx2",s.i32_add(s.getLocal("pBuff2"),s.i32_mul(s.getLocal("i"),s.i32_const(l)))),s.call(a+"_add",s.getLocal("idx1"),s.getLocal("idx2"),d),s.call(o,s.getLocal("idx2"),s.getLocal("pShiftToM"),s.getLocal("idx2")),s.call(a+"_add",s.getLocal("idx1"),s.getLocal("idx2"),s.getLocal("idx2")),s.call(o,s.getLocal("idx2"),c,s.getLocal("idx2")),s.call(a+"_copy",d,s.getLocal("idx1")),s.call(i+"_mul",c,s.getLocal("inc"),c),s.setLocal("i",s.i32_add(s.getLocal("i"),s.i32_const(1))),s.br(0))))}(),function(){const r=t.addFunction(e+"_fftJoinExtInv");r.addParam("pBuff1","i32"),r.addParam("pBuff2","i32"),r.addParam("n","i32"),r.addParam("first","i32"),r.addParam("inc","i32"),r.addParam("totalBits","i32"),r.addLocal("idx1","i32"),r.addLocal("idx2","i32"),r.addLocal("i","i32"),r.addLocal("pShiftToM","i32"),r.addLocal("pSConst","i32");const s=r.getCodeBuilder(),c=s.i32_const(t.alloc(n)),d=s.i32_const(t.alloc(l));r.addCode(s.setLocal("pShiftToM",s.i32_add(s.i32_const(A),s.i32_mul(s.getLocal("totalBits"),s.i32_const(n)))),s.setLocal("pSConst",s.i32_add(s.i32_const(C),s.i32_mul(s.getLocal("totalBits"),s.i32_const(n)))),s.call(i+"_copy",s.getLocal("first"),c),s.setLocal("i",s.i32_const(0)),s.block(s.loop(s.br_if(1,s.i32_eq(s.getLocal("i"),s.getLocal("n"))),s.setLocal("idx1",s.i32_add(s.getLocal("pBuff1"),s.i32_mul(s.getLocal("i"),s.i32_const(l)))),s.setLocal("idx2",s.i32_add(s.getLocal("pBuff2"),s.i32_mul(s.getLocal("i"),s.i32_const(l)))),s.call(o,s.getLocal("idx2"),c,d),s.call(a+"_sub",s.getLocal("idx1"),d,s.getLocal("idx2")),s.call(o,s.getLocal("idx2"),s.getLocal("pSConst"),s.getLocal("idx2")),s.call(o,s.getLocal("idx1"),s.getLocal("pShiftToM"),s.getLocal("idx1")),s.call(a+"_sub",d,s.getLocal("idx1"),s.getLocal("idx1")),s.call(o,s.getLocal("idx1"),s.getLocal("pSConst"),s.getLocal("idx1")),s.call(i+"_mul",c,s.getLocal("inc"),c),s.setLocal("i",s.i32_add(s.getLocal("i"),s.i32_const(1))),s.br(0))))}(),function(){const r=t.addFunction(e+"_fftMix");r.addParam("pBuff","i32"),r.addParam("n","i32"),r.addParam("exp","i32"),r.addLocal("nGroups","i32"),r.addLocal("nPerGroup","i32"),r.addLocal("nPerGroupDiv2","i32"),r.addLocal("pairOffset","i32"),r.addLocal("idx1","i32"),r.addLocal("idx2","i32"),r.addLocal("i","i32"),r.addLocal("j","i32"),r.addLocal("pwm","i32");const s=r.getCodeBuilder(),c=s.i32_const(t.alloc(n)),d=s.i32_const(t.alloc(l)),u=s.i32_const(t.alloc(l));r.addCode(s.setLocal("nPerGroup",s.i32_shl(s.i32_const(1),s.getLocal("exp"))),s.setLocal("nPerGroupDiv2",s.i32_shr_u(s.getLocal("nPerGroup"),s.i32_const(1))),s.setLocal("nGroups",s.i32_shr_u(s.getLocal("n"),s.getLocal("exp"))),s.setLocal("pairOffset",s.i32_mul(s.getLocal("nPerGroupDiv2"),s.i32_const(l))),s.setLocal("pwm",s.i32_add(s.i32_const(_),s.i32_mul(s.getLocal("exp"),s.i32_const(n)))),s.setLocal("i",s.i32_const(0)),s.block(s.loop(s.br_if(1,s.i32_eq(s.getLocal("i"),s.getLocal("nGroups"))),s.call(i+"_one",c),s.setLocal("j",s.i32_const(0)),s.block(s.loop(s.br_if(1,s.i32_eq(s.getLocal("j"),s.getLocal("nPerGroupDiv2"))),s.setLocal("idx1",s.i32_add(s.getLocal("pBuff"),s.i32_mul(s.i32_add(s.i32_mul(s.getLocal("i"),s.getLocal("nPerGroup")),s.getLocal("j")),s.i32_const(l)))),s.setLocal("idx2",s.i32_add(s.getLocal("idx1"),s.getLocal("pairOffset"))),s.call(o,s.getLocal("idx2"),c,d),s.call(a+"_copy",s.getLocal("idx1"),u),s.call(a+"_add",u,d,s.getLocal("idx1")),s.call(a+"_sub",u,d,s.getLocal("idx2")),s.call(i+"_mul",c,s.getLocal("pwm"),c),s.setLocal("j",s.i32_add(s.getLocal("j"),s.i32_const(1))),s.br(0))),s.setLocal("i",s.i32_add(s.getLocal("i"),s.i32_const(1))),s.br(0))))}(),function(){const i=t.addFunction(e+"_fftFinal");i.addParam("pBuff","i32"),i.addParam("n","i32"),i.addParam("factor","i32"),i.addLocal("idx1","i32"),i.addLocal("idx2","i32"),i.addLocal("i","i32"),i.addLocal("ndiv2","i32");const n=i.getCodeBuilder(),r=n.i32_const(t.alloc(l));i.addCode(n.setLocal("ndiv2",n.i32_shr_u(n.getLocal("n"),n.i32_const(1))),n.if(n.i32_and(n.getLocal("n"),n.i32_const(1)),n.call(o,n.i32_add(n.getLocal("pBuff"),n.i32_mul(n.getLocal("ndiv2"),n.i32_const(l))),n.getLocal("factor"),n.i32_add(n.getLocal("pBuff"),n.i32_mul(n.getLocal("ndiv2"),n.i32_const(l))))),n.setLocal("i",n.i32_const(0)),n.block(n.loop(n.br_if(1,n.i32_ge_u(n.getLocal("i"),n.getLocal("ndiv2"))),n.setLocal("idx1",n.i32_add(n.getLocal("pBuff"),n.i32_mul(n.getLocal("i"),n.i32_const(l)))),n.setLocal("idx2",n.i32_add(n.getLocal("pBuff"),n.i32_mul(n.i32_sub(n.i32_sub(n.getLocal("n"),n.i32_const(1)),n.getLocal("i")),n.i32_const(l)))),n.call(o,n.getLocal("idx2"),n.getLocal("factor"),r),n.call(o,n.getLocal("idx1"),n.getLocal("factor"),n.getLocal("idx2")),n.call(a+"_copy",r,n.getLocal("idx1")),n.setLocal("i",n.i32_add(n.getLocal("i"),n.i32_const(1))),n.br(0))))}(),function(){const r=t.addFunction(e+"_prepareLagrangeEvaluation");r.addParam("pBuff1","i32"),r.addParam("pBuff2","i32"),r.addParam("n","i32"),r.addParam("first","i32"),r.addParam("inc","i32"),r.addParam("totalBits","i32"),r.addLocal("idx1","i32"),r.addLocal("idx2","i32"),r.addLocal("i","i32"),r.addLocal("pShiftToM","i32"),r.addLocal("pSConst","i32");const s=r.getCodeBuilder(),c=s.i32_const(t.alloc(n)),d=s.i32_const(t.alloc(l));r.addCode(s.setLocal("pShiftToM",s.i32_add(s.i32_const(A),s.i32_mul(s.getLocal("totalBits"),s.i32_const(n)))),s.setLocal("pSConst",s.i32_add(s.i32_const(C),s.i32_mul(s.getLocal("totalBits"),s.i32_const(n)))),s.call(i+"_copy",s.getLocal("first"),c),s.setLocal("i",s.i32_const(0)),s.block(s.loop(s.br_if(1,s.i32_eq(s.getLocal("i"),s.getLocal("n"))),s.setLocal("idx1",s.i32_add(s.getLocal("pBuff1"),s.i32_mul(s.getLocal("i"),s.i32_const(l)))),s.setLocal("idx2",s.i32_add(s.getLocal("pBuff2"),s.i32_mul(s.getLocal("i"),s.i32_const(l)))),s.call(o,s.getLocal("idx1"),s.getLocal("pShiftToM"),d),s.call(a+"_sub",s.getLocal("idx2"),d,d),s.call(a+"_sub",s.getLocal("idx1"),s.getLocal("idx2"),s.getLocal("idx2")),s.call(o,d,s.getLocal("pSConst"),s.getLocal("idx1")),s.call(o,s.getLocal("idx2"),c,s.getLocal("idx2")),s.call(i+"_mul",c,s.getLocal("inc"),c),s.setLocal("i",s.i32_add(s.getLocal("i"),s.i32_const(1))),s.br(0))))}(),t.exportFunction(e+"_fft"),t.exportFunction(e+"_ifft"),t.exportFunction(e+"_rawfft"),t.exportFunction(e+"_fftJoin"),t.exportFunction(e+"_fftJoinExt"),t.exportFunction(e+"_fftJoinExtInv"),t.exportFunction(e+"_fftMix"),t.exportFunction(e+"_fftFinal"),t.exportFunction(e+"_prepareLagrangeEvaluation")},Dt=function(t,e,a){const i=8*t.modules[a].n64;return function(){const o=t.addFunction(e+"_zero");o.addParam("px","i32"),o.addParam("n","i32"),o.addLocal("lastp","i32"),o.addLocal("p","i32");const n=o.getCodeBuilder();o.addCode(n.setLocal("p",n.getLocal("px")),n.setLocal("lastp",n.i32_add(n.getLocal("px"),n.i32_mul(n.getLocal("n"),n.i32_const(i)))),n.block(n.loop(n.br_if(1,n.i32_eq(n.getLocal("p"),n.getLocal("lastp"))),n.call(a+"_zero",n.getLocal("p")),n.setLocal("p",n.i32_add(n.getLocal("p"),n.i32_const(i))),n.br(0))))}(),function(){const o=t.addFunction(e+"_constructLC");o.addParam("ppolynomials","i32"),o.addParam("psignals","i32"),o.addParam("nSignals","i32"),o.addParam("pres","i32"),o.addLocal("i","i32"),o.addLocal("j","i32"),o.addLocal("pp","i32"),o.addLocal("ps","i32"),o.addLocal("pd","i32"),o.addLocal("ncoefs","i32");const n=o.getCodeBuilder(),l=n.i32_const(t.alloc(i));o.addCode(n.setLocal("i",n.i32_const(0)),n.setLocal("pp",n.getLocal("ppolynomials")),n.setLocal("ps",n.getLocal("psignals")),n.block(n.loop(n.br_if(1,n.i32_eq(n.getLocal("i"),n.getLocal("nSignals"))),n.setLocal("ncoefs",n.i32_load(n.getLocal("pp"))),n.setLocal("pp",n.i32_add(n.getLocal("pp"),n.i32_const(4))),n.setLocal("j",n.i32_const(0)),n.block(n.loop(n.br_if(1,n.i32_eq(n.getLocal("j"),n.getLocal("ncoefs"))),n.setLocal("pd",n.i32_add(n.getLocal("pres"),n.i32_mul(n.i32_load(n.getLocal("pp")),n.i32_const(i)))),n.setLocal("pp",n.i32_add(n.getLocal("pp"),n.i32_const(4))),n.call(a+"_mul",n.getLocal("ps"),n.getLocal("pp"),l),n.call(a+"_add",l,n.getLocal("pd"),n.getLocal("pd")),n.setLocal("pp",n.i32_add(n.getLocal("pp"),n.i32_const(i))),n.setLocal("j",n.i32_add(n.getLocal("j"),n.i32_const(1))),n.br(0))),n.setLocal("ps",n.i32_add(n.getLocal("ps"),n.i32_const(i))),n.setLocal("i",n.i32_add(n.getLocal("i"),n.i32_const(1))),n.br(0))))}(),t.exportFunction(e+"_zero"),t.exportFunction(e+"_constructLC"),e},Nt=function(t,e,a){const i=8*t.modules[a].n64;return function(){const o=t.addFunction(e+"_buildABC");o.addParam("pCoefs","i32"),o.addParam("nCoefs","i32"),o.addParam("pWitness","i32"),o.addParam("pA","i32"),o.addParam("pB","i32"),o.addParam("pC","i32"),o.addParam("offsetOut","i32"),o.addParam("nOut","i32"),o.addParam("offsetWitness","i32"),o.addParam("nWitness","i32"),o.addLocal("it","i32"),o.addLocal("ita","i32"),o.addLocal("itb","i32"),o.addLocal("last","i32"),o.addLocal("m","i32"),o.addLocal("c","i32"),o.addLocal("s","i32"),o.addLocal("pOut","i32");const n=o.getCodeBuilder(),l=n.i32_const(t.alloc(i));o.addCode(n.setLocal("ita",n.getLocal("pA")),n.setLocal("itb",n.getLocal("pB")),n.setLocal("last",n.i32_add(n.getLocal("pA"),n.i32_mul(n.getLocal("nOut"),n.i32_const(i)))),n.block(n.loop(n.br_if(1,n.i32_eq(n.getLocal("ita"),n.getLocal("last"))),n.call(a+"_zero",n.getLocal("ita")),n.call(a+"_zero",n.getLocal("itb")),n.setLocal("ita",n.i32_add(n.getLocal("ita"),n.i32_const(i))),n.setLocal("itb",n.i32_add(n.getLocal("itb"),n.i32_const(i))),n.br(0))),n.setLocal("it",n.getLocal("pCoefs")),n.setLocal("last",n.i32_add(n.getLocal("pCoefs"),n.i32_mul(n.getLocal("nCoefs"),n.i32_const(i+12)))),n.block(n.loop(n.br_if(1,n.i32_eq(n.getLocal("it"),n.getLocal("last"))),n.setLocal("s",n.i32_load(n.getLocal("it"),8)),n.if(n.i32_or(n.i32_lt_u(n.getLocal("s"),n.getLocal("offsetWitness")),n.i32_ge_u(n.getLocal("s"),n.i32_add(n.getLocal("offsetWitness"),n.getLocal("nWitness")))),[...n.setLocal("it",n.i32_add(n.getLocal("it"),n.i32_const(i+12))),...n.br(1)]),n.setLocal("m",n.i32_load(n.getLocal("it"))),n.if(n.i32_eq(n.getLocal("m"),n.i32_const(0)),n.setLocal("pOut",n.getLocal("pA")),n.if(n.i32_eq(n.getLocal("m"),n.i32_const(1)),n.setLocal("pOut",n.getLocal("pB")),[...n.setLocal("it",n.i32_add(n.getLocal("it"),n.i32_const(i+12))),...n.br(1)])),n.setLocal("c",n.i32_load(n.getLocal("it"),4)),n.if(n.i32_or(n.i32_lt_u(n.getLocal("c"),n.getLocal("offsetOut")),n.i32_ge_u(n.getLocal("c"),n.i32_add(n.getLocal("offsetOut"),n.getLocal("nOut")))),[...n.setLocal("it",n.i32_add(n.getLocal("it"),n.i32_const(i+12))),...n.br(1)]),n.setLocal("pOut",n.i32_add(n.getLocal("pOut"),n.i32_mul(n.i32_sub(n.getLocal("c"),n.getLocal("offsetOut")),n.i32_const(i)))),n.call(a+"_mul",n.i32_add(n.getLocal("pWitness"),n.i32_mul(n.i32_sub(n.getLocal("s"),n.getLocal("offsetWitness")),n.i32_const(i))),n.i32_add(n.getLocal("it"),n.i32_const(12)),l),n.call(a+"_add",n.getLocal("pOut"),l,n.getLocal("pOut")),n.setLocal("it",n.i32_add(n.getLocal("it"),n.i32_const(i+12))),n.br(0))),n.setLocal("ita",n.getLocal("pA")),n.setLocal("itb",n.getLocal("pB")),n.setLocal("it",n.getLocal("pC")),n.setLocal("last",n.i32_add(n.getLocal("pA"),n.i32_mul(n.getLocal("nOut"),n.i32_const(i)))),n.block(n.loop(n.br_if(1,n.i32_eq(n.getLocal("ita"),n.getLocal("last"))),n.call(a+"_mul",n.getLocal("ita"),n.getLocal("itb"),n.getLocal("it")),n.setLocal("ita",n.i32_add(n.getLocal("ita"),n.i32_const(i))),n.setLocal("itb",n.i32_add(n.getLocal("itb"),n.i32_const(i))),n.setLocal("it",n.i32_add(n.getLocal("it"),n.i32_const(i))),n.br(0))))}(),function(){const o=t.addFunction(e+"_joinABC");o.addParam("pA","i32"),o.addParam("pB","i32"),o.addParam("pC","i32"),o.addParam("n","i32"),o.addParam("pP","i32"),o.addLocal("ita","i32"),o.addLocal("itb","i32"),o.addLocal("itc","i32"),o.addLocal("itp","i32"),o.addLocal("last","i32");const n=o.getCodeBuilder(),l=n.i32_const(t.alloc(i));o.addCode(n.setLocal("ita",n.getLocal("pA")),n.setLocal("itb",n.getLocal("pB")),n.setLocal("itc",n.getLocal("pC")),n.setLocal("itp",n.getLocal("pP")),n.setLocal("last",n.i32_add(n.getLocal("pA"),n.i32_mul(n.getLocal("n"),n.i32_const(i)))),n.block(n.loop(n.br_if(1,n.i32_eq(n.getLocal("ita"),n.getLocal("last"))),n.call(a+"_mul",n.getLocal("ita"),n.getLocal("itb"),l),n.call(a+"_sub",l,n.getLocal("itc"),n.getLocal("itp")),n.setLocal("ita",n.i32_add(n.getLocal("ita"),n.i32_const(i))),n.setLocal("itb",n.i32_add(n.getLocal("itb"),n.i32_const(i))),n.setLocal("itc",n.i32_add(n.getLocal("itc"),n.i32_const(i))),n.setLocal("itp",n.i32_add(n.getLocal("itp"),n.i32_const(i))),n.br(0))))}(),function(){const o=t.addFunction(e+"_batchAdd");o.addParam("pa","i32"),o.addParam("pb","i32"),o.addParam("n","i32"),o.addParam("pr","i32"),o.addLocal("ita","i32"),o.addLocal("itb","i32"),o.addLocal("itr","i32"),o.addLocal("last","i32");const n=o.getCodeBuilder();o.addCode(n.setLocal("ita",n.getLocal("pa")),n.setLocal("itb",n.getLocal("pb")),n.setLocal("itr",n.getLocal("pr")),n.setLocal("last",n.i32_add(n.getLocal("pa"),n.i32_mul(n.getLocal("n"),n.i32_const(i)))),n.block(n.loop(n.br_if(1,n.i32_eq(n.getLocal("ita"),n.getLocal("last"))),n.call(a+"_add",n.getLocal("ita"),n.getLocal("itb"),n.getLocal("itr")),n.setLocal("ita",n.i32_add(n.getLocal("ita"),n.i32_const(i))),n.setLocal("itb",n.i32_add(n.getLocal("itb"),n.i32_const(i))),n.setLocal("itr",n.i32_add(n.getLocal("itr"),n.i32_const(i))),n.br(0))))}(),t.exportFunction(e+"_buildABC"),t.exportFunction(e+"_joinABC"),t.exportFunction(e+"_batchAdd"),e},$t=function(t,e,a,i,o,n,l,r){const s=t.addFunction(e);s.addParam("pIn","i32"),s.addParam("n","i32"),s.addParam("pFirst","i32"),s.addParam("pInc","i32"),s.addParam("pOut","i32"),s.addLocal("pOldFree","i32"),s.addLocal("i","i32"),s.addLocal("pFrom","i32"),s.addLocal("pTo","i32");const c=s.getCodeBuilder(),d=c.i32_const(t.alloc(l));s.addCode(c.setLocal("pFrom",c.getLocal("pIn")),c.setLocal("pTo",c.getLocal("pOut"))),s.addCode(c.call(i+"_copy",c.getLocal("pFirst"),d)),s.addCode(c.setLocal("i",c.i32_const(0)),c.block(c.loop(c.br_if(1,c.i32_eq(c.getLocal("i"),c.getLocal("n"))),c.call(r,c.getLocal("pFrom"),d,c.getLocal("pTo")),c.setLocal("pFrom",c.i32_add(c.getLocal("pFrom"),c.i32_const(o))),c.setLocal("pTo",c.i32_add(c.getLocal("pTo"),c.i32_const(n))),c.call(i+"_mul",d,c.getLocal("pInc"),d),c.setLocal("i",c.i32_add(c.getLocal("i"),c.i32_const(1))),c.br(0)))),t.exportFunction(e)};const Vt=V,Kt=At,jt=Ft,Ht=Bt,Zt=Gt,Wt=zt,Yt=Rt,Jt=Dt,Xt=Nt,te=$t,{bitLength:ee,modInv:ae,isOdd:ie,isNegative:oe}=W;const ne=V,le=At,re=Ft,se=Bt,ce=Gt,de=zt,ue=Rt,ge=Dt,fe=Nt,he=$t,{bitLength:_e,isOdd:pe,isNegative:me}=W;var we=function(t,e){const a=e||"bn128";if(t.modules[a])return a;const i=21888242871839275222246405745257275088696311157297823662689037894645226208583n,o=21888242871839275222246405745257275088548364400416034343698204186575808495617n,n=Math.floor((ee(i-1n)-1)/64)+1,l=8*n,r=l,s=l,c=2*s,d=12*s,u=t.alloc(Vt.bigInt2BytesLE(o,r)),g=Kt(t,i,"f1m");jt(t,o,"fr","frm");const f=t.alloc(Vt.bigInt2BytesLE(L(3n),s)),h=Wt(t,"g1m","f1m",f);Yt(t,"frm","frm","frm","frm_mul"),Jt(t,"pol","frm"),Xt(t,"qap","frm");const _=Ht(t,"f1m_neg","f2m","f1m"),p=t.alloc([...Vt.bigInt2BytesLE(L(19485874751759354771024239261021720505790618469301721065564631296452457478373n),s),...Vt.bigInt2BytesLE(L(266929791119991161246907387137283842545076965332900288569378510910307636690n),s)]),m=Wt(t,"g2m","f2m",p);function w(e,a){const i=t.addFunction(e);i.addParam("pG","i32"),i.addParam("pFr","i32"),i.addParam("pr","i32");const o=i.getCodeBuilder(),n=o.i32_const(t.alloc(l));i.addCode(o.call("frm_fromMontgomery",o.getLocal("pFr"),n),o.call(a,o.getLocal("pG"),n,o.i32_const(l),o.getLocal("pr"))),t.exportFunction(e)}function L(t){return BigInt(t)*(1n<0n;)ie(e)?a.push(1):a.push(0),e>>=1n;return a}(29793968203157093288n),z=t.alloc(U),Q=3*c,q=U.length-1,M=U.reduce(((t,e)=>t+(0!=e?1:0)),0),k=6*l,R=3*l*2+(M+q+1)*Q;t.modules[a]={n64:n,pG1gen:y,pG1zero:C,pG1b:f,pG2gen:F,pG2zero:E,pG2b:p,pq:t.modules.f1m.pq,pr:u,pOneT:v,prePSize:k,preQSize:R,r:o.toString(),q:i.toString()};const D=4965661367192848881n;function N(e){const o=[[[1n,0n],[1n,0n],[1n,0n],[1n,0n],[1n,0n],[1n,0n],[1n,0n],[1n,0n],[1n,0n],[1n,0n],[1n,0n],[1n,0n]],[[1n,0n],[8376118865763821496583973867626364092589906065868298776909617916018768340080n,16469823323077808223889137241176536799009286646108169935659301613961712198316n],[21888242871839275220042445260109153167277707414472061641714758635765020556617n,0n],[11697423496358154304825782922584725312912383441159505038794027105778954184319n,303847389135065887422783454877609941456349188919719272345083954437860409601n],[21888242871839275220042445260109153167277707414472061641714758635765020556616n,0n],[3321304630594332808241809054958361220322477375291206261884409189760185844239n,5722266937896532885780051958958348231143373700109372999374820235121374419868n],[21888242871839275222246405745257275088696311157297823662689037894645226208582n,0n],[13512124006075453725662431877630910996106405091429524885779419978626457868503n,5418419548761466998357268504080738289687024511189653727029736280683514010267n],[2203960485148121921418603742825762020974279258880205651966n,0n],[10190819375481120917420622822672549775783927716138318623895010788866272024264n,21584395482704209334823622290379665147239961968378104390343953940207365798982n],[2203960485148121921418603742825762020974279258880205651967n,0n],[18566938241244942414004596690298913868373833782006617400804628704885040364344n,16165975933942742336466353786298926857552937457188450663314217659523851788715n]]],n=[[[1n,0n],[1n,0n],[1n,0n],[1n,0n],[1n,0n],[1n,0n]],[[1n,0n],[21575463638280843010398324269430826099269044274347216827212613867836435027261n,10307601595873709700152284273816112264069230130616436755625194854815875713954n],[21888242871839275220042445260109153167277707414472061641714758635765020556616n,0n],[3772000881919853776433695186713858239009073593817195771773381919316419345261n,2236595495967245188281701248203181795121068902605861227855261137820944008926n],[2203960485148121921418603742825762020974279258880205651966n,0n],[18429021223477853657660792034369865839114504446431234726392080002137598044644n,9344045779998320333812420223237981029506012124075525679208581902008406485703n]],[[1n,0n],[2581911344467009335267311115468803099551665605076196740867805258568234346338n,19937756971775647987995932169929341994314640652964949448313374472400716661030n],[2203960485148121921418603742825762020974279258880205651966n,0n],[5324479202449903542726783395506214481928257762400643279780343368557297135718n,16208900380737693084919495127334387981393726419856888799917914180988844123039n],[21888242871839275220042445260109153167277707414472061641714758635765020556616n,0n],[13981852324922362344252311234282257507216387789820983642040889267519694726527n,7629828391165209371577384193250820201684255241773809077146787135900891633097n]]],l=t.addFunction(a+"__frobeniusMap"+e);l.addParam("x","i32"),l.addParam("r","i32");const r=l.getCodeBuilder();for(let a=0;a<6;a++){const i=0==a?r.getLocal("x"):r.i32_add(r.getLocal("x"),r.i32_const(a*c)),u=i,f=r.i32_add(r.getLocal("x"),r.i32_const(a*c+s)),h=0==a?r.getLocal("r"):r.i32_add(r.getLocal("r"),r.i32_const(a*c)),p=h,m=r.i32_add(r.getLocal("r"),r.i32_const(a*c+s)),w=d(o[Math.floor(a/3)][e%12],n[a%3][e%6]),b=t.alloc([...Vt.bigInt2BytesLE(L(w[0]),32),...Vt.bigInt2BytesLE(L(w[1]),32)]);e%2==1?l.addCode(r.call(g+"_copy",u,p),r.call(g+"_neg",f,m),r.call(_+"_mul",h,r.i32_const(b),h)):l.addCode(r.call(_+"_mul",i,r.i32_const(b),h))}function d(t,e){const a=BigInt(t[0]),o=BigInt(t[1]),n=BigInt(e[0]),l=BigInt(e[1]),r=[(a*n-o*l)%i,(a*l+o*n)%i];return oe(r[0])&&(r[0]=r[0]+i),r}}function $(e,i){const o=function(t){let e=t;const a=[];for(;e>0n;){if(ie(e)){const t=2-Number(e%4n);a.push(t),e-=BigInt(t)}else a.push(0);e>>=1n}return a}(e).map((t=>-1==t?255:t)),n=t.alloc(o),l=t.addFunction(a+"__cyclotomicExp_"+i);l.addParam("x","i32"),l.addParam("r","i32"),l.addLocal("bit","i32"),l.addLocal("i","i32");const r=l.getCodeBuilder(),s=r.getLocal("x"),c=r.getLocal("r"),u=r.i32_const(t.alloc(d));l.addCode(r.call(T+"_conjugate",s,u),r.call(T+"_one",c),r.if(r.teeLocal("bit",r.i32_load8_s(r.i32_const(o.length-1),n)),r.if(r.i32_eq(r.getLocal("bit"),r.i32_const(1)),r.call(T+"_mul",c,s,c),r.call(T+"_mul",c,u,c))),r.setLocal("i",r.i32_const(o.length-2)),r.block(r.loop(r.call(a+"__cyclotomicSquare",c,c),r.if(r.teeLocal("bit",r.i32_load8_s(r.getLocal("i"),n)),r.if(r.i32_eq(r.getLocal("bit"),r.i32_const(1)),r.call(T+"_mul",c,s,c),r.call(T+"_mul",c,u,c))),r.br_if(1,r.i32_eqz(r.getLocal("i"))),r.setLocal("i",r.i32_sub(r.getLocal("i"),r.i32_const(1))),r.br(0))))}function V(){!function(){const e=t.addFunction(a+"__cyclotomicSquare");e.addParam("x","i32"),e.addParam("r","i32");const i=e.getCodeBuilder(),o=i.getLocal("x"),n=i.i32_add(i.getLocal("x"),i.i32_const(c)),l=i.i32_add(i.getLocal("x"),i.i32_const(2*c)),r=i.i32_add(i.getLocal("x"),i.i32_const(3*c)),s=i.i32_add(i.getLocal("x"),i.i32_const(4*c)),d=i.i32_add(i.getLocal("x"),i.i32_const(5*c)),u=i.getLocal("r"),g=i.i32_add(i.getLocal("r"),i.i32_const(c)),f=i.i32_add(i.getLocal("r"),i.i32_const(2*c)),h=i.i32_add(i.getLocal("r"),i.i32_const(3*c)),p=i.i32_add(i.getLocal("r"),i.i32_const(4*c)),m=i.i32_add(i.getLocal("r"),i.i32_const(5*c)),w=i.i32_const(t.alloc(c)),L=i.i32_const(t.alloc(c)),b=i.i32_const(t.alloc(c)),y=i.i32_const(t.alloc(c)),A=i.i32_const(t.alloc(c)),C=i.i32_const(t.alloc(c)),I=i.i32_const(t.alloc(c)),F=i.i32_const(t.alloc(c));e.addCode(i.call(_+"_mul",o,s,I),i.call(_+"_mul",s,i.i32_const(B),w),i.call(_+"_add",o,w,w),i.call(_+"_add",o,s,F),i.call(_+"_mul",F,w,w),i.call(_+"_mul",i.i32_const(B),I,F),i.call(_+"_add",I,F,F),i.call(_+"_sub",w,F,w),i.call(_+"_add",I,I,L),i.call(_+"_mul",r,l,I),i.call(_+"_mul",l,i.i32_const(B),b),i.call(_+"_add",r,b,b),i.call(_+"_add",r,l,F),i.call(_+"_mul",F,b,b),i.call(_+"_mul",i.i32_const(B),I,F),i.call(_+"_add",I,F,F),i.call(_+"_sub",b,F,b),i.call(_+"_add",I,I,y),i.call(_+"_mul",n,d,I),i.call(_+"_mul",d,i.i32_const(B),A),i.call(_+"_add",n,A,A),i.call(_+"_add",n,d,F),i.call(_+"_mul",F,A,A),i.call(_+"_mul",i.i32_const(B),I,F),i.call(_+"_add",I,F,F),i.call(_+"_sub",A,F,A),i.call(_+"_add",I,I,C),i.call(_+"_sub",w,o,u),i.call(_+"_add",u,u,u),i.call(_+"_add",w,u,u),i.call(_+"_add",L,s,p),i.call(_+"_add",p,p,p),i.call(_+"_add",L,p,p),i.call(_+"_mul",C,i.i32_const(P),F),i.call(_+"_add",F,r,h),i.call(_+"_add",h,h,h),i.call(_+"_add",F,h,h),i.call(_+"_sub",A,l,f),i.call(_+"_add",f,f,f),i.call(_+"_add",A,f,f),i.call(_+"_sub",b,n,g),i.call(_+"_add",g,g,g),i.call(_+"_add",b,g,g),i.call(_+"_add",y,d,m),i.call(_+"_add",m,m,m),i.call(_+"_add",y,m,m))}(),$(D,"w0");const e=t.addFunction(a+"__finalExponentiationLastChunk");e.addParam("x","i32"),e.addParam("r","i32");const i=e.getCodeBuilder(),o=i.getLocal("x"),n=i.getLocal("r"),l=i.i32_const(t.alloc(d)),r=i.i32_const(t.alloc(d)),s=i.i32_const(t.alloc(d)),u=i.i32_const(t.alloc(d)),g=i.i32_const(t.alloc(d)),f=i.i32_const(t.alloc(d)),h=i.i32_const(t.alloc(d)),p=i.i32_const(t.alloc(d)),m=i.i32_const(t.alloc(d)),w=i.i32_const(t.alloc(d)),L=i.i32_const(t.alloc(d)),b=i.i32_const(t.alloc(d)),y=i.i32_const(t.alloc(d)),A=i.i32_const(t.alloc(d)),C=i.i32_const(t.alloc(d)),I=i.i32_const(t.alloc(d)),F=i.i32_const(t.alloc(d)),x=i.i32_const(t.alloc(d)),E=i.i32_const(t.alloc(d)),v=i.i32_const(t.alloc(d)),S=i.i32_const(t.alloc(d));e.addCode(i.call(a+"__cyclotomicExp_w0",o,l),i.call(T+"_conjugate",l,l),i.call(a+"__cyclotomicSquare",l,r),i.call(a+"__cyclotomicSquare",r,s),i.call(T+"_mul",s,r,u),i.call(a+"__cyclotomicExp_w0",u,g),i.call(T+"_conjugate",g,g),i.call(a+"__cyclotomicSquare",g,f),i.call(a+"__cyclotomicExp_w0",f,h),i.call(T+"_conjugate",h,h),i.call(T+"_conjugate",u,p),i.call(T+"_conjugate",h,m),i.call(T+"_mul",m,g,w),i.call(T+"_mul",w,p,L),i.call(T+"_mul",L,r,b),i.call(T+"_mul",L,g,y),i.call(T+"_mul",y,o,A),i.call(a+"__frobeniusMap1",b,C),i.call(T+"_mul",C,A,I),i.call(a+"__frobeniusMap2",L,F),i.call(T+"_mul",F,I,x),i.call(T+"_conjugate",o,E),i.call(T+"_mul",E,b,v),i.call(a+"__frobeniusMap3",v,S),i.call(T+"_mul",S,x,n))}const K=t.alloc(k),j=t.alloc(R);function H(e){const i=t.addFunction(a+"_pairingEq"+e);for(let t=0;t0n;)pe(e)?a.push(1):a.push(0),e>>=1n;return a}(0xd201000000010000n),U=t.alloc(T),z=3*s,Q=T.length-1,q=T.reduce(((t,e)=>t+(0!=e?1:0)),0),M=6*l,k=3*l*2+(q+Q+1)*z,R=15132376222941642752n;function D(e){const a=[[[1n,0n],[1n,0n],[1n,0n],[1n,0n],[1n,0n],[1n,0n],[1n,0n],[1n,0n],[1n,0n],[1n,0n],[1n,0n],[1n,0n]],[[1n,0n],[3850754370037169011952147076051364057158807420970682438676050522613628423219637725072182697113062777891589506424760n,151655185184498381465642749684540099398075398968325446656007613510403227271200139370504932015952886146304766135027n],[793479390729215512621379701633421447060886740281060493010456487427281649075476305620758731620351n,0n],[2973677408986561043442465346520108879172042883009249989176415018091420807192182638567116318576472649347015917690530n,1028732146235106349975324479215795277384839936929757896155643118032610843298655225875571310552543014690878354869257n],[793479390729215512621379701633421447060886740281060493010456487427281649075476305620758731620350n,0n],[3125332594171059424908108096204648978570118281977575435832422631601824034463382777937621250592425535493320683825557n,877076961050607968509681729531255177986764537961432449499635504522207616027455086505066378536590128544573588734230n],[4002409555221667393417789825735904156556882819939007885332058136124031650490837864442687629129015664037894272559786n,0n],[151655185184498381465642749684540099398075398968325446656007613510403227271200139370504932015952886146304766135027n,3850754370037169011952147076051364057158807420970682438676050522613628423219637725072182697113062777891589506424760n],[4002409555221667392624310435006688643935503118305586438271171395842971157480381377015405980053539358417135540939436n,0n],[1028732146235106349975324479215795277384839936929757896155643118032610843298655225875571310552543014690878354869257n,2973677408986561043442465346520108879172042883009249989176415018091420807192182638567116318576472649347015917690530n],[4002409555221667392624310435006688643935503118305586438271171395842971157480381377015405980053539358417135540939437n,0n],[877076961050607968509681729531255177986764537961432449499635504522207616027455086505066378536590128544573588734230n,3125332594171059424908108096204648978570118281977575435832422631601824034463382777937621250592425535493320683825557n]]],o=[[[1n,0n],[1n,0n],[1n,0n],[1n,0n],[1n,0n],[1n,0n]],[[1n,0n],[0n,4002409555221667392624310435006688643935503118305586438271171395842971157480381377015405980053539358417135540939436n],[793479390729215512621379701633421447060886740281060493010456487427281649075476305620758731620350n,0n],[0n,1n],[4002409555221667392624310435006688643935503118305586438271171395842971157480381377015405980053539358417135540939436n,0n],[0n,793479390729215512621379701633421447060886740281060493010456487427281649075476305620758731620350n]],[[1n,0n],[4002409555221667392624310435006688643935503118305586438271171395842971157480381377015405980053539358417135540939437n,0n],[4002409555221667392624310435006688643935503118305586438271171395842971157480381377015405980053539358417135540939436n,0n],[4002409555221667393417789825735904156556882819939007885332058136124031650490837864442687629129015664037894272559786n,0n],[793479390729215512621379701633421447060886740281060493010456487427281649075476305620758731620350n,0n],[793479390729215512621379701633421447060886740281060493010456487427281649075476305620758731620351n,0n]]],n=t.addFunction(O+"_frobeniusMap"+e);n.addParam("x","i32"),n.addParam("r","i32");const c=n.getCodeBuilder();for(let i=0;i<6;i++){const u=0==i?c.getLocal("x"):c.i32_add(c.getLocal("x"),c.i32_const(i*s)),g=u,f=c.i32_add(c.getLocal("x"),c.i32_const(i*s+r)),_=0==i?c.getLocal("r"):c.i32_add(c.getLocal("r"),c.i32_const(i*s)),p=_,w=c.i32_add(c.getLocal("r"),c.i32_const(i*s+r)),L=d(a[Math.floor(i/3)][e%12],o[i%3][e%6]),b=t.alloc([...ne.bigInt2BytesLE(y(L[0]),l),...ne.bigInt2BytesLE(y(L[1]),l)]);e%2==1?n.addCode(c.call(h+"_copy",g,p),c.call(h+"_neg",f,w),c.call(m+"_mul",_,c.i32_const(b),_)):n.addCode(c.call(m+"_mul",u,c.i32_const(b),_))}function d(t,e){const a=t[0],o=t[1],n=e[0],l=e[1],r=[(a*n-o*l)%i,(a*l+o*n)%i];return me(r[0])&&(r[0]=r[0]+i),r}}function N(e,i,o){const n=function(t){let e=t;const a=[];for(;e>0n;){if(pe(e)){const t=2-Number(e%4n);a.push(t),e-=BigInt(t)}else a.push(0);e>>=1n}return a}(e).map((t=>-1==t?255:t)),l=t.alloc(n),r=t.addFunction(a+"__cyclotomicExp_"+o);r.addParam("x","i32"),r.addParam("r","i32"),r.addLocal("bit","i32"),r.addLocal("i","i32");const s=r.getCodeBuilder(),d=s.getLocal("x"),u=s.getLocal("r"),g=s.i32_const(t.alloc(c));r.addCode(s.call(O+"_conjugate",d,g),s.call(O+"_one",u),s.if(s.teeLocal("bit",s.i32_load8_s(s.i32_const(n.length-1),l)),s.if(s.i32_eq(s.getLocal("bit"),s.i32_const(1)),s.call(O+"_mul",u,d,u),s.call(O+"_mul",u,g,u))),s.setLocal("i",s.i32_const(n.length-2)),s.block(s.loop(s.call(a+"__cyclotomicSquare",u,u),s.if(s.teeLocal("bit",s.i32_load8_s(s.getLocal("i"),l)),s.if(s.i32_eq(s.getLocal("bit"),s.i32_const(1)),s.call(O+"_mul",u,d,u),s.call(O+"_mul",u,g,u))),s.br_if(1,s.i32_eqz(s.getLocal("i"))),s.setLocal("i",s.i32_sub(s.getLocal("i"),s.i32_const(1))),s.br(0)))),i&&r.addCode(s.call(O+"_conjugate",u,u))}t.modules[a]={n64q:n,n64r:d,n8q:l,n8r:u,pG1gen:C,pG1zero:F,pG1b:_,pG2gen:E,pG2zero:B,pG2b:w,pq:t.modules.f1m.pq,pr:f,pOneT:S,r:o,q:i,prePSize:M,preQSize:k},function(){const e=t.addFunction(G+"_mul1");e.addParam("pA","i32"),e.addParam("pC1","i32"),e.addParam("pR","i32");const a=e.getCodeBuilder(),i=a.getLocal("pA"),o=a.i32_add(a.getLocal("pA"),a.i32_const(2*r)),n=a.i32_add(a.getLocal("pA"),a.i32_const(4*r)),l=a.getLocal("pC1"),s=a.getLocal("pR"),c=a.i32_add(a.getLocal("pR"),a.i32_const(2*r)),d=a.i32_add(a.getLocal("pR"),a.i32_const(4*r)),u=a.i32_const(t.alloc(2*r)),g=a.i32_const(t.alloc(2*r));e.addCode(a.call(m+"_add",i,o,u),a.call(m+"_add",o,n,g),a.call(m+"_mul",o,l,d),a.call(m+"_mul",g,l,s),a.call(m+"_sub",s,d,s),a.call(m+"_mulNR",s,s),a.call(m+"_mul",u,l,c),a.call(m+"_sub",c,d,c))}(),function(){const e=t.addFunction(G+"_mul01");e.addParam("pA","i32"),e.addParam("pC0","i32"),e.addParam("pC1","i32"),e.addParam("pR","i32");const a=e.getCodeBuilder(),i=a.getLocal("pA"),o=a.i32_add(a.getLocal("pA"),a.i32_const(2*r)),n=a.i32_add(a.getLocal("pA"),a.i32_const(4*r)),l=a.getLocal("pC0"),s=a.getLocal("pC1"),c=a.getLocal("pR"),d=a.i32_add(a.getLocal("pR"),a.i32_const(2*r)),u=a.i32_add(a.getLocal("pR"),a.i32_const(4*r)),g=a.i32_const(t.alloc(2*r)),f=a.i32_const(t.alloc(2*r)),h=a.i32_const(t.alloc(2*r)),_=a.i32_const(t.alloc(2*r));e.addCode(a.call(m+"_mul",i,l,g),a.call(m+"_mul",o,s,f),a.call(m+"_add",i,o,h),a.call(m+"_add",i,n,_),a.call(m+"_add",o,n,c),a.call(m+"_mul",c,s,c),a.call(m+"_sub",c,f,c),a.call(m+"_mulNR",c,c),a.call(m+"_add",c,g,c),a.call(m+"_add",l,s,d),a.call(m+"_mul",d,h,d),a.call(m+"_sub",d,g,d),a.call(m+"_sub",d,f,d),a.call(m+"_mul",_,l,u),a.call(m+"_sub",u,g,u),a.call(m+"_add",u,f,u))}(),function(){const e=t.addFunction(O+"_mul014");e.addParam("pA","i32"),e.addParam("pC0","i32"),e.addParam("pC1","i32"),e.addParam("pC4","i32"),e.addParam("pR","i32");const a=e.getCodeBuilder(),i=a.getLocal("pA"),o=a.i32_add(a.getLocal("pA"),a.i32_const(6*r)),n=a.getLocal("pC0"),l=a.getLocal("pC1"),s=a.getLocal("pC4"),c=a.i32_const(t.alloc(6*r)),d=a.i32_const(t.alloc(6*r)),u=a.i32_const(t.alloc(2*r)),g=a.getLocal("pR"),f=a.i32_add(a.getLocal("pR"),a.i32_const(6*r));e.addCode(a.call(G+"_mul01",i,n,l,c),a.call(G+"_mul1",o,s,d),a.call(m+"_add",l,s,u),a.call(G+"_add",o,i,f),a.call(G+"_mul01",f,n,u,f),a.call(G+"_sub",f,c,f),a.call(G+"_sub",f,d,f),a.call(G+"_copy",d,g),a.call(G+"_mulNR",g,g),a.call(G+"_add",g,c,g))}(),function(){const e=t.addFunction(a+"_ell");e.addParam("pP","i32"),e.addParam("pCoefs","i32"),e.addParam("pF","i32");const i=e.getCodeBuilder(),o=i.getLocal("pP"),n=i.i32_add(i.getLocal("pP"),i.i32_const(l)),s=i.getLocal("pF"),c=i.getLocal("pCoefs"),d=i.i32_add(i.getLocal("pCoefs"),i.i32_const(r)),u=i.i32_add(i.getLocal("pCoefs"),i.i32_const(2*r)),g=i.i32_add(i.getLocal("pCoefs"),i.i32_const(3*r)),f=i.i32_add(i.getLocal("pCoefs"),i.i32_const(4*r)),_=t.alloc(2*r),p=i.i32_const(_),m=i.i32_const(_),w=i.i32_const(_+r),L=t.alloc(2*r),b=i.i32_const(L),y=i.i32_const(L),A=i.i32_const(L+r);e.addCode(i.call(h+"_mul",c,n,m),i.call(h+"_mul",d,n,w),i.call(h+"_mul",u,o,y),i.call(h+"_mul",g,o,A),i.call(O+"_mul014",s,f,b,p,s))}();const $=t.alloc(M),V=t.alloc(k);function K(e){const i=t.addFunction(a+"_pairingEq"+e);for(let t=0;t>=BigInt(32)):l+2<=e?(n.setUint16(l,Number(a&BigInt(65535)),!0),l+=2,a>>=BigInt(16)):(n.setUint8(l,Number(a&BigInt(255)),!0),l+=1,a>>=BigInt(8));if(a)throw new Error("Number does not fit in this length");return i}const ye=[];for(let t=0;t<256;t++)ye[t]=Ae(t,8);function Ae(t,e){let a=0,i=t;for(let t=0;t>=1;return a}function Ce(t,e){return(ye[t>>>24]|ye[t>>>16&255]<<8|ye[t>>>8&255]<<16|ye[255&t]<<24)>>>32-e}function Ie(t){return(0!=(4294901760&t)?(t&=4294901760,16):0)|(0!=(4278255360&t)?(t&=4278255360,8):0)|(0!=(4042322160&t)?(t&=4042322160,4):0)|(0!=(3435973836&t)?(t&=3435973836,2):0)|0!=(2863311530&t)}function Fe(t,e){const a=t.byteLength/e,i=Ie(a);if(a!=1<a){const i=t.slice(o*e,(o+1)*e);t.set(t.slice(a*e,(a+1)*e),o*e),t.set(i,a*e)}}}function xe(t,e){const a=new Uint8Array(e*t.length);for(let i=0;i0;)a>=4?(a-=4,e+=BigInt(o.getUint32(a))<=2?(a-=2,e+=BigInt(o.getUint16(a))<0;)n-4>=0?(n-=4,o.setUint32(n,Number(a&BigInt(4294967295))),a>>=BigInt(32)):n-2>=0?(n-=2,o.setUint16(n,Number(a&BigInt(65535))),a>>=BigInt(16)):(n-=1,o.setUint8(n,Number(a&BigInt(255))),a>>=BigInt(8));if(a)throw new Error("Number does not fit in this length");return i},bitReverse:Ce,buffReverseBits:Fe,buffer2array:Ee,leBuff2int:function(t){let e=BigInt(0),a=0;const i=new DataView(t.buffer,t.byteOffset,t.byteLength);for(;a{a[i]=t(e[i])})),a}return e},stringifyFElements:function t(e,a){if("bigint"==typeof a||void 0!==a.eq)return a.toString(10);if(a instanceof Uint8Array)return e.toString(e.e(a));if(Array.isArray(a))return a.map(t.bind(this,e));if("object"==typeof a){const i={};return Object.keys(a).forEach((o=>{i[o]=t(e,a[o])})),i}return a},unstringifyBigInts:function t(e){if("string"==typeof e&&/^[0-9]+$/.test(e))return BigInt(e);if("string"==typeof e&&/^0x[0-9a-fA-F]+$/.test(e))return BigInt(e);if(Array.isArray(e))return e.map(t);if("object"==typeof e){if(null===e)return null;const a={};return Object.keys(e).forEach((i=>{a[i]=t(e[i])})),a}return e},unstringifyFElements:function t(e,a){if("string"==typeof a&&/^[0-9]+$/.test(a))return e.e(a);if("string"==typeof a&&/^0x[0-9a-fA-F]+$/.test(a))return e.e(a);if(Array.isArray(a))return a.map(t.bind(this,e));if("object"==typeof a){if(null===a)return null;const i={};return Object.keys(a).forEach((o=>{i[o]=t(e,a[o])})),i}return a}});const Be=1<<30;class Se{constructor(t){this.buffers=[],this.byteLength=t;for(let e=0;e0;){const t=l+r>Be?Be-l:r,e=new Uint8Array(this.buffers[n].buffer,this.buffers[n].byteOffset+l,t);if(t==a)return e.slice();o||(o=a<=Be?new Uint8Array(a):new Se(a)),o.set(e,a-r),r-=t,n++,l=0}return o}set(t,e){void 0===e&&(e=0);const a=t.byteLength;if(0==a)return;const i=Math.floor(e/Be);if(i==Math.floor((e+a-1)/Be))return t instanceof Se&&1==t.buffers.length?this.buffers[i].set(t.buffers[0],e%Be):this.buffers[i].set(t,e%Be);let o=i,n=e%Be,l=a;for(;l>0;){const e=n+l>Be?Be-n:l,i=t.slice(a-l,a-l+e);new Uint8Array(this.buffers[o].buffer,this.buffers[o].byteOffset+n,e).set(i),l-=e,o++,n=0}}}function Pe(t,e,a,i){return async function(o){const n=Math.floor(o.byteLength/a);if(n*a!==o.byteLength)throw new Error("Invalid buffer size");const l=Math.floor(n/t.concurrency),r=[];for(let s=0;s=0;t--)this.w[t]=this.square(this.w[t+1]);if(!this.eq(this.w[0],this.one))throw new Error("Error calculating roots of unity");this.batchToMontgomery=Pe(t,e+"_batchToMontgomery",this.n8,this.n8),this.batchFromMontgomery=Pe(t,e+"_batchFromMontgomery",this.n8,this.n8)}op2(t,e,a){return this.tm.setBuff(this.pOp1,e),this.tm.setBuff(this.pOp2,a),this.tm.instance.exports[this.prefix+t](this.pOp1,this.pOp2,this.pOp3),this.tm.getBuff(this.pOp3,this.n8)}op2Bool(t,e,a){return this.tm.setBuff(this.pOp1,e),this.tm.setBuff(this.pOp2,a),!!this.tm.instance.exports[this.prefix+t](this.pOp1,this.pOp2)}op1(t,e){return this.tm.setBuff(this.pOp1,e),this.tm.instance.exports[this.prefix+t](this.pOp1,this.pOp3),this.tm.getBuff(this.pOp3,this.n8)}op1Bool(t,e){return this.tm.setBuff(this.pOp1,e),!!this.tm.instance.exports[this.prefix+t](this.pOp1,this.pOp3)}add(t,e){return this.op2("_add",t,e)}eq(t,e){return this.op2Bool("_eq",t,e)}isZero(t){return this.op1Bool("_isZero",t)}sub(t,e){return this.op2("_sub",t,e)}neg(t){return this.op1("_neg",t)}inv(t){return this.op1("_inverse",t)}toMontgomery(t){return this.op1("_toMontgomery",t)}fromMontgomery(t){return this.op1("_fromMontgomery",t)}mul(t,e){return this.op2("_mul",t,e)}div(t,e){return this.tm.setBuff(this.pOp1,t),this.tm.setBuff(this.pOp2,e),this.tm.instance.exports[this.prefix+"_inverse"](this.pOp2,this.pOp2),this.tm.instance.exports[this.prefix+"_mul"](this.pOp1,this.pOp2,this.pOp3),this.tm.getBuff(this.pOp3,this.n8)}square(t){return this.op1("_square",t)}isSquare(t){return this.op1Bool("_isSquare",t)}sqrt(t){return this.op1("_sqrt",t)}exp(t,e){return e instanceof Uint8Array||(e=S(i(e))),this.tm.setBuff(this.pOp1,t),this.tm.setBuff(this.pOp2,e),this.tm.instance.exports[this.prefix+"_exp"](this.pOp1,this.pOp2,e.byteLength,this.pOp3),this.tm.getBuff(this.pOp3,this.n8)}isNegative(t){return this.op1Bool("_isNegative",t)}e(t,e){if(t instanceof Uint8Array)return t;let a=i(t,e);n(a)?(a=p(a),A(a,this.p)&&(a=b(a,this.p)),a=_(this.p,a)):A(a,this.p)&&(a=b(a,this.p));const o=be(a,this.n8);return this.toMontgomery(o)}toString(t,e){return B(E(this.fromMontgomery(t),0),e)}fromRng(t){let e;const a=new Uint8Array(this.n8);do{e=P;for(let a=0;a{this.reject=e,this.resolve=t}))}}let qe;const Me='(function thread(self) {\n const MAXMEM = 32767;\n let instance;\n let memory;\n\n if (self) {\n self.onmessage = function(e) {\n let data;\n if (e.data) {\n data = e.data;\n } else {\n data = e;\n }\n\n if (data[0].cmd == "INIT") {\n init(data[0]).then(function() {\n self.postMessage(data.result);\n });\n } else if (data[0].cmd == "TERMINATE") {\n self.close();\n } else {\n const res = runTask(data);\n self.postMessage(res);\n }\n };\n }\n\n async function init(data) {\n const code = new Uint8Array(data.code);\n const wasmModule = await WebAssembly.compile(code);\n memory = new WebAssembly.Memory({initial:data.init, maximum: MAXMEM});\n\n instance = await WebAssembly.instantiate(wasmModule, {\n env: {\n "memory": memory\n }\n });\n }\n\n\n\n function alloc(length) {\n const u32 = new Uint32Array(memory.buffer, 0, 1);\n while (u32[0] & 3) u32[0]++; // Return always aligned pointers\n const res = u32[0];\n u32[0] += length;\n if (u32[0] + length > memory.buffer.byteLength) {\n const currentPages = memory.buffer.byteLength / 0x10000;\n let requiredPages = Math.floor((u32[0] + length) / 0x10000)+1;\n if (requiredPages>MAXMEM) requiredPages=MAXMEM;\n memory.grow(requiredPages-currentPages);\n }\n return res;\n }\n\n function allocBuffer(buffer) {\n const p = alloc(buffer.byteLength);\n setBuffer(p, buffer);\n return p;\n }\n\n function getBuffer(pointer, length) {\n const u8 = new Uint8Array(memory.buffer);\n return new Uint8Array(u8.buffer, u8.byteOffset + pointer, length);\n }\n\n function setBuffer(pointer, buffer) {\n const u8 = new Uint8Array(memory.buffer);\n u8.set(new Uint8Array(buffer), pointer);\n }\n\n function runTask(task) {\n if (task[0].cmd == "INIT") {\n return init(task[0]);\n }\n const ctx = {\n vars: [],\n out: []\n };\n const u32a = new Uint32Array(memory.buffer, 0, 1);\n const oldAlloc = u32a[0];\n for (let i=0; ii.buffer.byteLength){const o=i.buffer.byteLength/65536;let n=Math.floor((a[0]+t)/65536)+1;n>e&&(n=e),i.grow(n-o)}return o}function l(t){const e=n(t.byteLength);return s(e,t),e}function r(t,e){const a=new Uint8Array(i.buffer);return new Uint8Array(a.buffer,a.byteOffset+t,e)}function s(t,e){new Uint8Array(i.buffer).set(new Uint8Array(e),t)}function c(t){if("INIT"==t[0].cmd)return o(t[0]);const e={vars:[],out:[]},c=new Uint32Array(i.buffer,0,1)[0];for(let i=0;i64&&(e=64),a.concurrency=e;for(let t=0;t0;t++)if(0==this.working[t]){const e=this.actionQueue.shift();this.postAction(t,e.data,e.transfers,e.deferred)}}queueAction(t,e){const a=new Qe;if(this.singleThread){const e=this.taskManager(t);a.resolve(e)}else this.actionQueue.push({data:t,transfers:e,deferred:a}),this.processWorks();return a.promise}resetMemory(){this.u32[0]=this.initalPFree}allocBuff(t){const e=this.alloc(t.byteLength);return this.setBuff(e,t),e}getBuff(t,e){return this.u8.slice(t,t+e)}setBuff(t,e){this.u8.set(new Uint8Array(e),t)}alloc(t){for(;3&this.u32[0];)this.u32[0]++;const e=this.u32[0];return this.u32[0]+=t,e}async terminate(){for(let t=0;tsetTimeout(e,t))))}}function De(t,e){const a=t[e],i=t.Fr,o=t.tm;t[e].batchApplyKey=async function(t,n,l,r,s){let c,d,u,g,f;if(r=r||"affine",s=s||"affine","G1"==e)"jacobian"==r?(u=3*a.F.n8,c="g1m_batchApplyKey"):(u=2*a.F.n8,c="g1m_batchApplyKeyMixed"),g=3*a.F.n8,"jacobian"==s?f=3*a.F.n8:(d="g1m_batchToAffine",f=2*a.F.n8);else if("G2"==e)"jacobian"==r?(u=3*a.F.n8,c="g2m_batchApplyKey"):(u=2*a.F.n8,c="g2m_batchApplyKeyMixed"),g=3*a.F.n8,"jacobian"==s?f=3*a.F.n8:(d="g2m_batchToAffine",f=2*a.F.n8);else{if("Fr"!=e)throw new Error("Invalid group: "+e);c="frm_batchApplyKey",u=a.n8,g=a.n8,f=a.n8}const h=Math.floor(t.byteLength/u),_=Math.floor(h/o.concurrency),p=[];l=i.e(l);let m=i.e(n);for(let e=0;e=0;t--){if(!a.isZero(_))for(let t=0;tc&&(_=c),_<1024&&(_=1024);const p=[];for(let e=0;e(r&&r.debug(`Multiexp end: ${s}: ${e}/${u}`),t))))}const m=await Promise.all(p);let w=a.zero;for(let t=m.length-1;t>=0;t--)w=a.add(w,m[t]);return w}a.multiExp=async function(t,e,a,i){return await n(t,e,"jacobian",a,i)},a.multiExpAffine=async function(t,e,a,i){return await n(t,e,"affine",a,i)}}function Ve(t,e){const a=t[e],i=t.Fr,o=a.tm;async function n(t,r,s,c,d,u){s=s||"affine",c=c||"affine";let g,f,h,_,p,m,w,L;"G1"==e?("affine"==s?(g=2*a.F.n8,_="g1m_batchToJacobian"):g=3*a.F.n8,f=3*a.F.n8,r&&(L="g1m_fftFinal"),w="g1m_fftJoin",m="g1m_fftMix","affine"==c?(h=2*a.F.n8,p="g1m_batchToAffine"):h=3*a.F.n8):"G2"==e?("affine"==s?(g=2*a.F.n8,_="g2m_batchToJacobian"):g=3*a.F.n8,f=3*a.F.n8,r&&(L="g2m_fftFinal"),w="g2m_fftJoin",m="g2m_fftMix","affine"==c?(h=2*a.F.n8,p="g2m_batchToAffine"):h=3*a.F.n8):"Fr"==e&&(g=a.n8,f=a.n8,h=a.n8,r&&(L="frm_fftFinal"),m="frm_fftMix",w="frm_fftJoin");let b=!1;Array.isArray(t)?(t=xe(t,g),b=!0):t=t.slice(0,t.byteLength);const y=t.byteLength/g,A=Ie(y);if(1<1<<28?new Se(2*u[0].byteLength):new Uint8Array(2*u[0].byteLength);return g.set(u[0]),g.set(u[1],u[0].byteLength),g}(t,s,c,d,u):await async function(t,e,a,o,r){let s,c;s=t.slice(0,t.byteLength/2),c=t.slice(t.byteLength/2,t.byteLength);const d=[];[s,c]=await l(s,c,"fftJoinExt",i.one,i.shift,e,"jacobian",o,r),d.push(n(s,!1,"jacobian",a,o,r)),d.push(n(c,!1,"jacobian",a,o,r));const u=await Promise.all(d);let g;g=u[0].byteLength>1<<28?new Se(2*u[0].byteLength):new Uint8Array(2*u[0].byteLength);return g.set(u[0]),g.set(u[1],u[0].byteLength),g}(t,s,c,d,u),b?Ee(e,h):e}let C,I,F;r&&(C=i.inv(i.e(y))),Fe(t,g);let x=Math.min(16384,y),E=y/x;for(;E=16;)E*=2,x/=2;const v=Ie(x),B=[];for(let e=0;e(d&&d.debug(`${u}: fft ${A} mix end: ${e}/${E}`),t))))}F=await Promise.all(B);for(let t=0;t(d&&d.debug(`${u}: fft ${A} join ${t}/${A} ${l+1}/${e} ${r}/${a/2}`),i))))}const l=await Promise.all(n);for(let t=0;t0;e--)I.set(F[e],t),t+=x*h,delete F[e];I.set(F[0].slice(0,(x-1)*h),t),delete F[0]}else for(let t=0;t65536&&(b=65536);const y=[];for(let e=0;e(u&&u.debug(`${g}: fftJoinExt End: ${e}/${L}`),t))))}const A=await Promise.all(y);let C,I;L*p>1<<28?(C=new Se(L*p),I=new Se(L*p)):(C=new Uint8Array(L*p),I=new Uint8Array(L*p));let F=0;for(let t=0;ti.s+1)throw s&&s.error("lagrangeEvaluations input too big"),new Error("lagrangeEvaluations input too big");let f=t.slice(0,t.byteLength/2),h=t.slice(t.byteLength/2,t.byteLength);const _=i.exp(i.shift,u/2),p=i.inv(i.sub(i.one,_));[f,h]=await l(f,h,"prepareLagrangeEvaluation",p,i.shiftInv,o,"jacobian",s,c+" prep");const m=[];let w;return m.push(n(f,!0,"jacobian",r,s,c+" t0")),m.push(n(h,!0,"jacobian",r,s,c+" t1")),[f,h]=await Promise.all(m),w=f.byteLength>1<<28?new Se(2*f.byteLength):new Uint8Array(2*f.byteLength),w.set(f),w.set(h,f.byteLength),w},a.fftMix=async function(t){const n=3*a.F.n8;let l,r;if("G1"==e)l="g1m_fftMix",r="g1m_fftJoin";else if("G2"==e)l="g2m_fftMix",r="g2m_fftJoin";else{if("Fr"!=e)throw new Error("Invalid group");l="frm_fftMix",r="frm_fftJoin"}const s=Math.floor(t.byteLength/n),c=Ie(s);let d=1<=0;t--)f.set(g[t][0],h),h+=g[t][0].byteLength;return f}}async function Ke(t){const e=await ke(t.wasm,t.singleThread),a={};return a.q=i(t.wasm.q.toString()),a.r=i(t.wasm.r.toString()),a.name=t.name,a.tm=e,a.prePSize=t.wasm.prePSize,a.preQSize=t.wasm.preQSize,a.Fr=new Ge(e,"frm",t.n8r,t.r),a.F1=new Ge(e,"f1m",t.n8q,t.q),a.F2=new Oe(e,"f2m",a.F1),a.G1=new Ue(e,"g1m",a.F1,t.wasm.pG1gen,t.wasm.pG1b,t.cofactorG1),a.G2=new Ue(e,"g2m",a.F2,t.wasm.pG2gen,t.wasm.pG2b,t.cofactorG2),a.F6=new Te(e,"f6m",a.F2),a.F12=new Oe(e,"ftm",a.F6),a.Gt=a.F12,De(a,"G1"),De(a,"G2"),De(a,"Fr"),$e(a,"G1"),$e(a,"G2"),Ve(a,"G1"),Ve(a,"G2"),Ve(a,"Fr"),function(t){const e=t.tm;t.pairing=function(a,i){e.startSyncOp();const o=e.allocBuff(t.G1.toJacobian(a)),n=e.allocBuff(t.G2.toJacobian(i)),l=e.alloc(t.Gt.n8);e.instance.exports[t.name+"_pairing"](o,n,l);const r=e.getBuff(l,t.Gt.n8);return e.endSyncOp(),r},t.pairingEq=async function(){let a,i;arguments.length%2==1?(a=arguments[arguments.length-1],i=(arguments.length-1)/2):(a=t.Gt.one,i=arguments.length/2);const o=[];for(let a=0;a>8n&0xFFn)),e.push(Number(a>>16n&0xFFn)),e.push(Number(a>>24n&0xFFn)),e}function Ye(t){const e=function(t){for(var e=[],a=0;a>6,128|63&i):i<55296||i>=57344?e.push(224|i>>12,128|i>>6&63,128|63&i):(a++,i=65536+((1023&i)<<10|1023&t.charCodeAt(a)),e.push(240|i>>18,128|i>>12&63,128|i>>6&63,128|63&i))}return e}(t);return[...aa(e.length),...e]}function Je(t){const e=[];let a=je(t);if(He(a))throw new Error("Number cannot be negative");for(;!Ze(a);)e.push(Number(0x7Fn&a)),a>>=7n;0==e.length&&e.push(0);for(let t=0;t0xFFFFFFFFn)throw new Error("Number too big");if(e>0x7FFFFFFFn&&(e-=0x100000000n),e<-2147483648n)throw new Error("Number too small");return Xe(e)}function ea(t){let e=je(t);if(e>0xFFFFFFFFFFFFFFFFn)throw new Error("Number too big");if(e>0x7FFFFFFFFFFFFFFFn&&(e-=0x10000000000000000n),e<-9223372036854775808n)throw new Error("Number too small");return Xe(e)}function aa(t){let e=je(t);if(e>0xFFFFFFFFn)throw new Error("Number too big");return Je(e)}function ia(t){return Array.from(t,(function(t){return("0"+(255&t).toString(16)).slice(-2)})).join("")}class oa{constructor(t){this.func=t,this.functionName=t.functionName,this.module=t.module}setLocal(t,e){const a=this.func.localIdxByName[t];if(void 0===a)throw new Error(`Local Variable not defined: Function: ${this.functionName} local: ${t} `);return[...e,33,...aa(a)]}teeLocal(t,e){const a=this.func.localIdxByName[t];if(void 0===a)throw new Error(`Local Variable not defined: Function: ${this.functionName} local: ${t} `);return[...e,34,...aa(a)]}getLocal(t){const e=this.func.localIdxByName[t];if(void 0===e)throw new Error(`Local Variable not defined: Function: ${this.functionName} local: ${t} `);return[32,...aa(e)]}i64_load8_s(t,e,a){return[...t,48,void 0===a?0:a,...aa(e||0)]}i64_load8_u(t,e,a){return[...t,49,void 0===a?0:a,...aa(e||0)]}i64_load16_s(t,e,a){return[...t,50,void 0===a?1:a,...aa(e||0)]}i64_load16_u(t,e,a){return[...t,51,void 0===a?1:a,...aa(e||0)]}i64_load32_s(t,e,a){return[...t,52,void 0===a?2:a,...aa(e||0)]}i64_load32_u(t,e,a){return[...t,53,void 0===a?2:a,...aa(e||0)]}i64_load(t,e,a){return[...t,41,void 0===a?3:a,...aa(e||0)]}i64_store(t,e,a,i){let o,n,l;return Array.isArray(e)?(o=0,n=3,l=e):Array.isArray(a)?(o=e,n=3,l=a):Array.isArray(i)&&(o=e,n=a,l=i),[...t,...l,55,n,...aa(o)]}i64_store32(t,e,a,i){let o,n,l;return Array.isArray(e)?(o=0,n=2,l=e):Array.isArray(a)?(o=e,n=2,l=a):Array.isArray(i)&&(o=e,n=a,l=i),[...t,...l,62,n,...aa(o)]}i64_store16(t,e,a,i){let o,n,l;return Array.isArray(e)?(o=0,n=1,l=e):Array.isArray(a)?(o=e,n=1,l=a):Array.isArray(i)&&(o=e,n=a,l=i),[...t,...l,61,n,...aa(o)]}i64_store8(t,e,a,i){let o,n,l;return Array.isArray(e)?(o=0,n=0,l=e):Array.isArray(a)?(o=e,n=0,l=a):Array.isArray(i)&&(o=e,n=a,l=i),[...t,...l,60,n,...aa(o)]}i32_load8_s(t,e,a){return[...t,44,void 0===a?0:a,...aa(e||0)]}i32_load8_u(t,e,a){return[...t,45,void 0===a?0:a,...aa(e||0)]}i32_load16_s(t,e,a){return[...t,46,void 0===a?1:a,...aa(e||0)]}i32_load16_u(t,e,a){return[...t,47,void 0===a?1:a,...aa(e||0)]}i32_load(t,e,a){return[...t,40,void 0===a?2:a,...aa(e||0)]}i32_store(t,e,a,i){let o,n,l;return Array.isArray(e)?(o=0,n=2,l=e):Array.isArray(a)?(o=e,n=2,l=a):Array.isArray(i)&&(o=e,n=a,l=i),[...t,...l,54,n,...aa(o)]}i32_store16(t,e,a,i){let o,n,l;return Array.isArray(e)?(o=0,n=1,l=e):Array.isArray(a)?(o=e,n=1,l=a):Array.isArray(i)&&(o=e,n=a,l=i),[...t,...l,59,n,...aa(o)]}i32_store8(t,e,a,i){let o,n,l;return Array.isArray(e)?(o=0,n=0,l=e):Array.isArray(a)?(o=e,n=0,l=a):Array.isArray(i)&&(o=e,n=a,l=i),[...t,...l,58,n,...aa(o)]}call(t,...e){const a=this.module.functionIdxByName[t];if(void 0===a)throw new Error(`Function not defined: Function: ${t}`);return[...[].concat(...e),16,...aa(a)]}call_indirect(t,...e){return[...[].concat(...e),...t,17,0,0]}if(t,e,a){return a?[...t,4,64,...e,5,...a,11]:[...t,4,64,...e,11]}block(t){return[2,64,...t,11]}loop(...t){return[3,64,...[].concat(...t),11]}br_if(t,e){return[...e,13,...aa(t)]}br(t){return[12,...aa(t)]}ret(t){return[...t,15]}drop(t){return[...t,26]}i64_const(t){return[66,...ea(t)]}i32_const(t){return[65,...ta(t)]}i64_eqz(t){return[...t,80]}i64_eq(t,e){return[...t,...e,81]}i64_ne(t,e){return[...t,...e,82]}i64_lt_s(t,e){return[...t,...e,83]}i64_lt_u(t,e){return[...t,...e,84]}i64_gt_s(t,e){return[...t,...e,85]}i64_gt_u(t,e){return[...t,...e,86]}i64_le_s(t,e){return[...t,...e,87]}i64_le_u(t,e){return[...t,...e,88]}i64_ge_s(t,e){return[...t,...e,89]}i64_ge_u(t,e){return[...t,...e,90]}i64_add(t,e){return[...t,...e,124]}i64_sub(t,e){return[...t,...e,125]}i64_mul(t,e){return[...t,...e,126]}i64_div_s(t,e){return[...t,...e,127]}i64_div_u(t,e){return[...t,...e,128]}i64_rem_s(t,e){return[...t,...e,129]}i64_rem_u(t,e){return[...t,...e,130]}i64_and(t,e){return[...t,...e,131]}i64_or(t,e){return[...t,...e,132]}i64_xor(t,e){return[...t,...e,133]}i64_shl(t,e){return[...t,...e,134]}i64_shr_s(t,e){return[...t,...e,135]}i64_shr_u(t,e){return[...t,...e,136]}i64_extend_i32_s(t){return[...t,172]}i64_extend_i32_u(t){return[...t,173]}i64_clz(t){return[...t,121]}i64_ctz(t){return[...t,122]}i32_eqz(t){return[...t,69]}i32_eq(t,e){return[...t,...e,70]}i32_ne(t,e){return[...t,...e,71]}i32_lt_s(t,e){return[...t,...e,72]}i32_lt_u(t,e){return[...t,...e,73]}i32_gt_s(t,e){return[...t,...e,74]}i32_gt_u(t,e){return[...t,...e,75]}i32_le_s(t,e){return[...t,...e,76]}i32_le_u(t,e){return[...t,...e,77]}i32_ge_s(t,e){return[...t,...e,78]}i32_ge_u(t,e){return[...t,...e,79]}i32_add(t,e){return[...t,...e,106]}i32_sub(t,e){return[...t,...e,107]}i32_mul(t,e){return[...t,...e,108]}i32_div_s(t,e){return[...t,...e,109]}i32_div_u(t,e){return[...t,...e,110]}i32_rem_s(t,e){return[...t,...e,111]}i32_rem_u(t,e){return[...t,...e,112]}i32_and(t,e){return[...t,...e,113]}i32_or(t,e){return[...t,...e,114]}i32_xor(t,e){return[...t,...e,115]}i32_shl(t,e){return[...t,...e,116]}i32_shr_s(t,e){return[...t,...e,117]}i32_shr_u(t,e){return[...t,...e,118]}i32_rotl(t,e){return[...t,...e,119]}i32_rotr(t,e){return[...t,...e,120]}i32_wrap_i64(t){return[...t,167]}i32_clz(t){return[...t,103]}i32_ctz(t){return[...t,104]}unreachable(){return[0]}current_memory(){return[63,0]}comment(){return[]}}const na={i32:127,i64:126,f32:125,f64:124,anyfunc:112,func:96,emptyblock:64};class la{constructor(t,e,a,i,o){if("import"==a)this.fnType="import",this.moduleName=i,this.fieldName=o;else{if("internal"!=a)throw new Error("Invalid function fnType: "+a);this.fnType="internal"}this.module=t,this.fnName=e,this.params=[],this.locals=[],this.localIdxByName={},this.code=[],this.returnType=null,this.nextLocal=0}addParam(t,e){if(this.localIdxByName[t])throw new Error(`param already exists. Function: ${this.fnName}, Param: ${t} `);const a=this.nextLocal++;this.localIdxByName[t]=a,this.params.push({type:e})}addLocal(t,e,a){const i=a||1;if(this.localIdxByName[t])throw new Error(`local already exists. Function: ${this.fnName}, Param: ${t} `);const o=this.nextLocal++;this.localIdxByName[t]=o,this.locals.push({type:e,length:i})}setReturnType(t){if(this.returnType)throw new Error(`returnType already defined. Function: ${this.fnName}`);this.returnType=t}getSignature(){return[96,...[...aa(this.params.length),...this.params.map((t=>na[t.type]))],...this.returnType?[1,na[this.returnType]]:[0]]}getBody(){const t=this.locals.map((t=>[...aa(t.length),na[t.type]])),e=[...aa(this.locals.length),...[].concat(...t),...this.code,11];return[...aa(e.length),...e]}addCode(...t){this.code.push(...[].concat(...t))}getCodeBuilder(){return new oa(this)}}class ra{constructor(){this.functions=[],this.functionIdxByName={},this.nImportFunctions=0,this.nInternalFunctions=0,this.memory={pagesSize:1,moduleName:"env",fieldName:"memory"},this.free=8,this.datas=[],this.modules={},this.exports=[],this.functionsTable=[]}build(){return this._setSignatures(),new Uint8Array([...We(1836278016),...We(1),...this._buildType(),...this._buildImport(),...this._buildFunctionDeclarations(),...this._buildFunctionsTable(),...this._buildExports(),...this._buildElements(),...this._buildCode(),...this._buildData()])}addFunction(t){if(void 0!==this.functionIdxByName[t])throw new Error(`Function already defined: ${t}`);const e=this.functions.length;return this.functionIdxByName[t]=e,this.functions.push(new la(this,t,"internal")),this.nInternalFunctions++,this.functions[e]}addIimportFunction(t,e,a){if(void 0!==this.functionIdxByName[t])throw new Error(`Function already defined: ${t}`);if(this.functions.length>0&&"internal"==this.functions[this.functions.length-1].type)throw new Error(`Import functions must be declared before internal: ${t}`);let i=a||t;const o=this.functions.length;return this.functionIdxByName[t]=o,this.functions.push(new la(this,t,"import",e,i)),this.nImportFunctions++,this.functions[o]}setMemory(t,e,a){this.memory={pagesSize:t,moduleName:e||"env",fieldName:a||"memory"}}exportFunction(t,e){const a=e||t;if(void 0===this.functionIdxByName[t])throw new Error(`Function not defined: ${t}`);const i=this.functionIdxByName[t];a!=t&&(this.functionIdxByName[a]=i),this.exports.push({exportName:a,idx:i})}addFunctionToTable(t){const e=this.functionIdxByName[t];this.functionsTable.push(e)}addData(t,e){this.datas.push({offset:t,bytes:e})}alloc(t,e){let a,i;(Array.isArray(t)||ArrayBuffer.isView(t))&&void 0===e?(a=t.length,i=t):(a=t,i=e),a=1+(a-1>>3)<<3;const o=this.free;return this.free+=a,i&&this.addData(o,i),o}allocString(t){const e=(new globalThis.TextEncoder).encode(t);return this.alloc([...e,0])}_setSignatures(){this.signatures=[];const t={};if(this.functionsTable.length>0){const e=this.functions[this.functionsTable[0]].getSignature();t["s_"+ia(e)]=0,this.signatures.push(e)}for(let e=0;e{e.pendingLoads.push({page:t,resolve:a,reject:i})}));return e.__statusPage("After Load request: ",t),a}__statusPage(t,e){const a=[],i=this;if(!i.logHistory)return;a.push("=="+t+" "+e);let o="";for(let t=0;t "+e.history[t][a][i])}_triggerLoad(){const t=this;if(t.reading)return;if(0==t.pendingLoads.length)return;const e=Object.keys(t.pages),a=[];for(let i=0;i0&&(void 0!==t.pages[t.pendingLoads[0].page]||i>0||a.length>0);){const e=t.pendingLoads.shift();if(void 0!==t.pages[e.page]){t.pages[e.page].pendingOps++;const i=a.indexOf(e.page);i>=0&&a.splice(i,1),t.pages[e.page].loading?t.pages[e.page].loading.push(e):e.resolve(),t.__statusPage("After Load (cached): ",e.page)}else{if(i)i--;else{const e=a.shift();t.__statusPage("Before Unload: ",e),t.avBuffs.unshift(t.pages[e]),delete t.pages[e],t.__statusPage("After Unload: ",e)}e.page>=t.totalPages?(t.pages[e.page]=n(),e.resolve(),t.__statusPage("After Load (new): ",e.page)):(t.reading=!0,t.pages[e.page]=n(),t.pages[e.page].loading=[e],o.push(t.fd.read(t.pages[e.page].buff,0,t.pageSize,e.page*t.pageSize).then((a=>{t.pages[e.page].size=a.bytesRead;const i=t.pages[e.page].loading;delete t.pages[e.page].loading;for(let t=0;t{e.reject(t)}))),t.__statusPage("After Load (loading): ",e.page))}}function n(){if(t.avBuffs.length>0){const e=t.avBuffs.shift();return e.dirty=!1,e.pendingOps=1,e.size=0,e}return{dirty:!1,buff:new Uint8Array(t.pageSize),pendingOps:1,size:0}}Promise.all(o).then((()=>{t.reading=!1,t.pendingLoads.length>0&&setImmediate(t._triggerLoad.bind(t)),t._tryClose()}))}_triggerWrite(){const t=this;if(t.writing)return;const e=Object.keys(t.pages),a=[];for(let i=0;i{o.writing=!1}),(e=>{console.log("ERROR Writing: "+e),t.error=e,t._tryClose()}))))}t.writing&&Promise.all(a).then((()=>{t.writing=!1,setImmediate(t._triggerWrite.bind(t)),t._tryClose(),t.pendingLoads.length>0&&setImmediate(t._triggerLoad.bind(t))}))}_getDirtyPage(){for(let t in this.pages)if(this.pages[t].dirty)return t;return-1}async write(t,e){if(0==t.byteLength)return;const a=this;if(void 0===e&&(e=a.pos),a.pos=e+t.byteLength,a.totalSize0;){await n[l-i];const e=r+s>a.pageSize?a.pageSize-r:s,o=t.slice(t.byteLength-s,t.byteLength-s+e);new Uint8Array(a.pages[l].buff.buffer,r,e).set(o),a.pages[l].dirty=!0,a.pages[l].pendingOps--,a.pages[l].size=Math.max(r+e,a.pages[l].size),l>=a.totalPages&&(a.totalPages=l+1),s-=e,l++,r=0,a.writing||setImmediate(a._triggerWrite.bind(a))}}async read(t,e){let a=new Uint8Array(t);return await this.readToBuffer(a,0,t,e),a}async readToBuffer(t,e,a,i){if(0==a)return;const o=this;if(a>o.pageSize*o.maxPagesLoaded*.8){const t=Math.floor(1.1*a);this.maxPagesLoaded=Math.floor(t/o.pageSize)+1}if(void 0===i&&(i=o.pos),o.pos=i+a,o.pendingClose)throw new Error("Reading a closing file");const n=Math.floor(i/o.pageSize),l=Math.floor((i+a-1)/o.pageSize),r=[];for(let t=n;t<=l;t++)r.push(o._loadPage(t));o._triggerLoad();let s=n,c=i%o.pageSize,d=i+a>o.totalSize?a-(i+a-o.totalSize):a;for(;d>0;){await r[s-n],o.__statusPage("After Await (read): ",s);const i=c+d>o.pageSize?o.pageSize-c:d,l=new Uint8Array(o.pages[s].buff.buffer,o.pages[s].buff.byteOffset+c,i);t.set(l,e+a-d),o.pages[s].pendingOps--,o.__statusPage("After Op done: ",s),d-=i,s++,c=0,o.pendingLoads.length>0&&setImmediate(o._triggerLoad.bind(o))}this.pos=i+a}_tryClose(){const t=this;if(!t.pendingClose)return;t.error&&t.pendingCloseReject(t.error);t._getDirtyPage()>=0||t.writing||t.reading||t.pendingLoads.length>0||t.pendingClose()}close(){const t=this;if(t.pendingClose)throw new Error("Closing the file twice");return new Promise(((e,a)=>{t.pendingClose=e,t.pendingCloseReject=a,t._tryClose()})).then((()=>{t.fd.close()}),(e=>{throw t.fd.close(),e}))}async discard(){await this.close(),await ha.promises.unlink(this.fileName)}async writeULE32(t,e){const a=new Uint8Array(4);new DataView(a.buffer).setUint32(0,t,!0),await this.write(a,e)}async writeUBE32(t,e){const a=new Uint8Array(4);new DataView(a.buffer).setUint32(0,t,!1),await this.write(a,e)}async writeULE64(t,e){const a=new Uint8Array(8),i=new DataView(a.buffer);i.setUint32(0,4294967295&t,!0),i.setUint32(4,Math.floor(t/4294967296),!0),await this.write(a,e)}async readULE32(t){const e=await this.read(4,t);return new Uint32Array(e.buffer)[0]}async readUBE32(t){const e=await this.read(4,t);return new DataView(e.buffer).getUint32(0,!1)}async readULE64(t){const e=await this.read(8,t),a=new Uint32Array(e.buffer);return 4294967296*a[1]+a[0]}async readString(t){const e=this;if(e.pendingClose)throw new Error("Reading a closing file");let a=void 0===t?e.pos:t,i=Math.floor(a/e.pageSize),o=!1,n="";for(;!o;){let t=e._loadPage(i);e._triggerLoad(),await t,e.__statusPage("After Await (read): ",i);let l=a%e.pageSize;const r=new Uint8Array(e.pages[i].buff.buffer,e.pages[i].buff.byteOffset+l,e.pageSize-l);let s=r.findIndex((t=>0===t));o=-1!==s,o?(n+=(new TextDecoder).decode(r.slice(0,s)),e.pos=i*this.pageSize+l+s+1):(n+=(new TextDecoder).decode(r),e.pos=i*this.pageSize+l+r.length),e.pages[i].pendingOps--,e.__statusPage("After Op done: ",i),a=e.pos,i++,e.pendingLoads.length>0&&setImmediate(e._triggerLoad.bind(e))}return n}}const ma=new Uint8Array(4),wa=new DataView(ma.buffer),La=new Uint8Array(8),ba=new DataView(La.buffer);class ya{constructor(){this.pageSize=16384}_resizeIfNeeded(t){if(t>this.allocSize){const e=Math.max(this.allocSize+(1<<20),Math.floor(1.1*this.allocSize),t),a=new Uint8Array(e);a.set(this.o.data),this.o.data=a,this.allocSize=e}}async write(t,e){if(void 0===e&&(e=this.pos),this.readOnly)throw new Error("Writing a read only file");this._resizeIfNeeded(e+t.byteLength),this.o.data.set(t.slice(),e),e+t.byteLength>this.totalSize&&(this.totalSize=e+t.byteLength),this.pos=e+t.byteLength}async readToBuffer(t,e,a,i){if(void 0===i&&(i=this.pos),this.readOnly&&i+a>this.totalSize)throw new Error("Reading out of bounds");this._resizeIfNeeded(i+a);const o=new Uint8Array(this.o.data.buffer,this.o.data.byteOffset+i,a);t.set(o,e),this.pos=i+a}async read(t,e){const a=new Uint8Array(t);return await this.readToBuffer(a,0,t,e),a}close(){this.o.data.byteLength!=this.totalSize&&(this.o.data=this.o.data.slice(0,this.totalSize))}async discard(){}async writeULE32(t,e){wa.setUint32(0,t,!0),await this.write(ma,e)}async writeUBE32(t,e){wa.setUint32(0,t,!1),await this.write(ma,e)}async writeULE64(t,e){ba.setUint32(0,4294967295&t,!0),ba.setUint32(4,Math.floor(t/4294967296),!0),await this.write(La,e)}async readULE32(t){const e=await this.read(4,t);return new Uint32Array(e.buffer)[0]}async readUBE32(t){const e=await this.read(4,t);return new DataView(e.buffer).getUint32(0,!1)}async readULE64(t){const e=await this.read(8,t),a=new Uint32Array(e.buffer);return 4294967296*a[1]+a[0]}async readString(t){const e=this;let a=void 0===t?e.pos:t;if(a>this.totalSize){if(this.readOnly)throw new Error("Reading out of bounds");this._resizeIfNeeded(t)}const i=new Uint8Array(e.o.data.buffer,a,this.totalSize-a);let o=i.findIndex((t=>0===t)),n="";return-1!==o?(n=(new TextDecoder).decode(i.slice(0,o)),e.pos=a+o+1):e.pos=a,n}}const Aa=1<<22;const Ca=new Uint8Array(4),Ia=new DataView(Ca.buffer),Fa=new Uint8Array(8),xa=new DataView(Fa.buffer);class Ea{constructor(){this.pageSize=16384}_resizeIfNeeded(t){if(t<=this.totalSize)return;if(this.readOnly)throw new Error("Reading out of file bounds");const e=Math.floor((t-1)/Aa)+1;for(let a=Math.max(this.o.data.length-1,0);a0;){const e=o+n>Aa?Aa-o:n,l=t.slice(t.byteLength-n,t.byteLength-n+e);new Uint8Array(a.o.data[i].buffer,o,e).set(l),n-=e,i++,o=0}this.pos=e+t.byteLength}async readToBuffer(t,e,a,i){const o=this;if(void 0===i&&(i=o.pos),this.readOnly&&i+a>this.totalSize)throw new Error("Reading out of bounds");this._resizeIfNeeded(i+a);let n=Math.floor(i/Aa),l=i%Aa,r=a;for(;r>0;){const i=l+r>Aa?Aa-l:r,s=new Uint8Array(o.o.data[n].buffer,l,i);t.set(s,e+a-r),r-=i,n++,l=0}this.pos=i+a}async read(t,e){const a=new Uint8Array(t);return await this.readToBuffer(a,0,t,e),a}close(){}async discard(){}async writeULE32(t,e){Ia.setUint32(0,t,!0),await this.write(Ca,e)}async writeUBE32(t,e){Ia.setUint32(0,t,!1),await this.write(Ca,e)}async writeULE64(t,e){xa.setUint32(0,4294967295&t,!0),xa.setUint32(4,Math.floor(t/4294967296),!0),await this.write(Fa,e)}async readULE32(t){const e=await this.read(4,t);return new Uint32Array(e.buffer)[0]}async readUBE32(t){const e=await this.read(4,t);return new DataView(e.buffer).getUint32(0,!1)}async readULE64(t){const e=await this.read(8,t),a=new Uint32Array(e.buffer);return 4294967296*a[1]+a[0]}async readString(t){const e=this;let a=void 0===t?e.pos:t;if(a>this.totalSize){if(this.readOnly)throw new Error("Reading out of bounds");this._resizeIfNeeded(t)}let i=!1,o="";for(;!i;){let t=Math.floor(a/Aa),n=a%Aa;if(void 0===e.o.data[t])throw new Error("ERROR");let l=Math.min(2048,e.o.data[t].length-n);const r=new Uint8Array(e.o.data[t].buffer,n,l);let s=r.findIndex((t=>0===t));i=-1!==s,i?(o+=(new TextDecoder).decode(r.slice(0,s)),e.pos=t*Aa+n+s+1):(o+=(new TextDecoder).decode(r),e.pos=t*Aa+n+r.length),a=e.pos}return o}}const va=512,Ba=64,Sa=2,Pa=0,Ga=65536,Oa=8192;async function Ta(t,e,a){if("string"==typeof t&&(t={type:"file",fileName:t,cacheSize:e||Ga,pageSize:a||Oa}),"file"==t.type)return await _a(t.fileName,va|Ba|Sa,t.cacheSize,t.pageSize);if("mem"==t.type)return function(t){const e=t.initialSize||1<<20,a=new ya;return a.o=t,a.o.data=new Uint8Array(e),a.allocSize=e,a.totalSize=0,a.readOnly=!1,a.pos=0,a}(t);if("bigMem"==t.type)return function(t){const e=t.initialSize||0,a=new Ea;a.o=t;const i=e?Math.floor((e-1)/Aa)+1:0;a.o.data=[];for(let t=0;ta)throw new Error("Version not supported");const s=await n.readULE32();let c=[];for(let t=0;t1)throw new Error(t.fileName+": Section Duplicated "+a);t.pos=e[a][0].p,t.readingSection=e[a][0]}async function Ra(t,e){if(void 0===t.readingSection)throw new Error("Not reading a section");if(!e&&t.pos-t.readingSection.p!=t.readingSection.size)throw new Error("Invalid section size reading");delete t.readingSection}async function Da(t,e,a,i){const o=new Uint8Array(a);ga.toRprLE(o,0,e,a),await t.write(o,i)}async function Na(t,e,a){const i=await t.read(e,a);return ga.fromRprLE(i,0,e)}async function $a(t,e,a,i,o){void 0===o&&(o=e[i][0].size);const n=t.pageSize;await ka(t,e,i),await qa(a,i);for(let e=0;ee[a][0].size)throw new Error("Reading out of the range of the section");let n;return n=o<1<<30?new Uint8Array(o):new Se(o),await t.readToBuffer(n,0,o,e[a][0].p+i),n}async function Ka(t,e,a,i,o){const n=16*t.pageSize;if(await ka(t,e,o),await ka(a,i,o),e[o][0].size!=i[o][0].size)return!1;const l=e[o][0].size;for(let e=0;e=0)a=await sa(i);else{if(!(["BLS12381"].indexOf(o)>=0))throw new Error(`Curve not supported: ${t}`);a=await ca(i)}return a}var ti=Object.freeze({__proto__:null,getCurveFromR:Ya,getCurveFromQ:Ja,getCurveFromName:Xa}),ei="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},ai={exports:{}},ii=function t(e,a){if(!e){var i=new oi(a);throw Error.captureStackTrace&&Error.captureStackTrace(i,t),i}};class oi extends Error{}oi.prototype.name="AssertionError";var ni={exports:{}};function li(t){return t.length}var ri={byteLength:li,toString:function(t){const e=t.byteLength;let a="";for(let i=0;i1&&61===t.charCodeAt(e-1)&&e--,3*e>>>2}ci[45]=62,ci[95]=63;var ui={byteLength:di,toString:function(t){const e=t.byteLength;let a="";for(let i=0;i>2]+si[(3&t[i])<<4|t[i+1]>>4]+si[(15&t[i+1])<<2|t[i+2]>>6]+si[63&t[i+2]];return e%3==2?a=a.substring(0,a.length-1)+"=":e%3==1&&(a=a.substring(0,a.length-2)+"=="),a},write:function(t,e,a=0,i=di(e)){const o=Math.min(i,t.byteLength-a);for(let a=0,i=0;i>4,t[i++]=(15&n)<<4|l>>2,t[i++]=(3&l)<<6|63&r}return o}};function gi(t){return t.length>>>1}var fi={byteLength:gi,toString:function(t){const e=t.byteLength;t=new DataView(t.buffer,t.byteOffset,e);let a="",i=0;for(let o=e-e%4;i=48&&t<=57?t-48:t>=65&&t<=70?t-65+10:t>=97&&t<=102?t-97+10:void 0}function _i(t){let e=0;for(let a=0,i=t.length;a=55296&&o<=56319&&a+1=56320&&i<=57343){e+=4,a++;continue}}e+=o<=127?1:o<=2047?2:3}return e}let pi,mi;if("undefined"!=typeof TextDecoder){const t=new TextDecoder;pi=function(e){return t.decode(e)}}else pi=function(t){const e=t.byteLength;let a="",i=0;for(;i0){let e=0;for(;e>i,i-=6;i>=0;)t[l++]=128|a>>i&63,i-=6;n+=a>=65536?2:1}return o};var wi={byteLength:_i,toString:pi,write:mi};function Li(t){return 2*t.length}var bi,yi,Ai={byteLength:Li,toString:function(t){const e=t.byteLength;let a="";for(let i=0;i>8,l=o%256;t[a+2*i]=l,t[a+2*i+1]=n}return o}};!function(t,e){const a=ri,i=ui,o=fi,n=wi,l=Ai,r=255===new Uint8Array(Uint16Array.of(255).buffer)[0];function s(t){switch(t){case"ascii":return a;case"base64":return i;case"hex":return o;case"utf8":case"utf-8":case void 0:return n;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return l;default:throw new Error(`Unknown encoding: ${t}`)}}function c(t){return t instanceof Uint8Array}function d(t,e,a){return"string"==typeof t?function(t,e){const a=s(e),i=new Uint8Array(a.byteLength(t));return a.write(i,t,0,i.byteLength),i}(t,e):Array.isArray(t)?function(t){const e=new Uint8Array(t.length);return e.set(t),e}(t):ArrayBuffer.isView(t)?function(t){const e=new Uint8Array(t.byteLength);return e.set(t),e}(t):function(t,e,a){return new Uint8Array(t,e,a)}(t,e,a)}function u(t,e,a,i,o){if(0===t.byteLength)return-1;if("string"==typeof a?(i=a,a=0):void 0===a?a=o?0:t.length-1:a<0&&(a+=t.byteLength),a>=t.byteLength){if(o)return-1;a=t.byteLength-1}else if(a<0){if(!o)return-1;a=0}if("string"==typeof e)e=d(e,i);else if("number"==typeof e)return e&=255,o?t.indexOf(e,a):t.lastIndexOf(e,a);if(0===e.byteLength)return-1;if(o){let i=-1;for(let o=a;ot.byteLength&&(a=t.byteLength-e.byteLength);for(let i=a;i>=0;i--){let a=!0;for(let o=0;oo)return 1}return t.byteLength>e.byteLength?1:t.byteLengtht+e.byteLength),0));const a=new Uint8Array(e);let i=0;for(const e of t){if(i+e.byteLength>a.byteLength){const t=e.subarray(0,a.byteLength-i);return a.set(t,i),a}a.set(e,i),i+=e.byteLength}return a},copy:function(t,e,a=0,i=0,o=t.byteLength){if(o>0&&o=t.byteLength)throw new RangeError("sourceStart is out of range");if(o<0)throw new RangeError("sourceEnd is out of range");a>=e.byteLength&&(a=e.byteLength),o>t.byteLength&&(o=t.byteLength),e.byteLength-a=o||i<=a?"":(a<0&&(a=0),i>o&&(i=o),(0!==a||i{for(var t=new Uint8Array(128),e=0;e<64;e++)t[e<26?e+65:e<52?e+71:e<62?e-4:4*e-205]=e;return e=>{for(var a=e.length,i=new Uint8Array(3*(a-("="==e[a-1])-("="==e[a-2]))/4|0),o=0,n=0;o>4,i[n++]=r<<4|s>>2,i[n++]=s<<6|c}return i}})(),e=((t,e)=>function(){return e||(0,t[Object.keys(t)[0]])((e={exports:{}}).exports,e),e.exports})({"wasm-binary:./blake2b.wat"(e,a){a.exports=t("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")}}),a=e(),i=WebAssembly.compile(a);return bi=async t=>(await WebAssembly.instantiate(await i,t)).exports}()().then((t=>{Fi=t})),Ei=64,vi=[];ai.exports=Ui;var Bi=ai.exports.BYTES_MIN=16,Si=ai.exports.BYTES_MAX=64;ai.exports.BYTES=32;var Pi=ai.exports.KEYBYTES_MIN=16,Gi=ai.exports.KEYBYTES_MAX=64;ai.exports.KEYBYTES=32;var Oi=ai.exports.SALTBYTES=16,Ti=ai.exports.PERSONALBYTES=16;function Ui(t,e,a,i,o){if(!(this instanceof Ui))return new Ui(t,e,a,i,o);if(!Fi)throw new Error("WASM not loaded. Wait for Blake2b.ready(cb)");t||(t=32),!0!==o&&(Ci(t>=Bi,"digestLength must be at least "+Bi+", was given "+t),Ci(t<=Si,"digestLength must be at most "+Si+", was given "+t),null!=e&&(Ci(e instanceof Uint8Array,"key must be Uint8Array or Buffer"),Ci(e.length>=Pi,"key must be at least "+Pi+", was given "+e.length),Ci(e.length<=Gi,"key must be at least "+Gi+", was given "+e.length)),null!=a&&(Ci(a instanceof Uint8Array,"salt must be Uint8Array or Buffer"),Ci(a.length===Oi,"salt must be exactly "+Oi+", was given "+a.length)),null!=i&&(Ci(i instanceof Uint8Array,"personal must be Uint8Array or Buffer"),Ci(i.length===Ti,"personal must be exactly "+Ti+", was given "+i.length))),vi.length||(vi.push(Ei),Ei+=216),this.digestLength=t,this.finalized=!1,this.pointer=vi.pop(),this._memory=new Uint8Array(Fi.memory.buffer),this._memory.fill(0,0,64),this._memory[0]=this.digestLength,this._memory[1]=e?e.length:0,this._memory[2]=1,this._memory[3]=1,a&&this._memory.set(a,32),i&&this._memory.set(i,48),this.pointer+216>this._memory.length&&this._realloc(this.pointer+216),Fi.blake2b_init(this.pointer,this.digestLength),e&&(this.update(e),this._memory.fill(0,Ei,Ei+e.length),this._memory[this.pointer+200]=128)}function zi(){}function Qi(t){return(0!=(4294901760&t)?(t&=4294901760,16):0)|(0!=(4278255360&t)?(t&=4278255360,8):0)|(0!=(4042322160&t)?(t&=4042322160,4):0)|(0!=(3435973836&t)?(t&=3435973836,2):0)|0!=(2863311530&t)}function qi(t,e){const a=new DataView(t.buffer,t.byteOffset,t.byteLength);let i="";for(let t=0;t<4;t++){t>0&&(i+="\n"),i+="\t\t";for(let e=0;e<4;e++)e>0&&(i+=" "),i+=a.getUint32(16*t+4*e).toString(16).padStart(8,"0")}return e&&(i=e+"\n"+i),i}function Mi(t,e){if(t.byteLength!=e.byteLength)return!1;for(var a=new Int8Array(t),i=new Int8Array(e),o=0;o!=t.byteLength;o++)if(a[o]!=i[o])return!1;return!0}function ki(t){const e=t.getPartialHash(),a=ai.exports(64);return a.setPartialHash(e),a}async function Ri(t,e,a,i,o){if(t.G1.isZero(e))return!1;if(t.G1.isZero(a))return!1;if(t.G2.isZero(i))return!1;if(t.G2.isZero(o))return!1;return await t.pairingEq(e,o,t.G1.neg(a),i)}function Di(t){let e=new Uint8Array(t);return globalThis.crypto.getRandomValues(e),e}async function Ni(t){{const e=await globalThis.crypto.subtle.digest("SHA-256",t.buffer);return new Uint8Array(e)}}function $i(t,e){return new DataView(t.buffer).getUint32(e,!1)}async function Vi(t){for(;!t;)t=await window.prompt("Enter a random text. (Entropy): ","");const e=ai.exports(64);e.update(Di(64));const a=new TextEncoder;e.update(a.encode(t));const i=e.digest(),o=[];for(let t=0;t<8;t++)o[t]=$i(i,4*t);return new Q(o)}async function Ki(t,e){let a,i;e<32?(a=1<>>0,i=1):(a=4294967296,i=1<>>0);let o=t;for(let t=0;t{a[i]=Zi(t,e[i])})),a}return"bigint"==typeof e||void 0!==e.eq?e.toString(10):e}Ui.prototype._realloc=function(t){Fi.memory.grow(Math.max(0,Math.ceil(Math.abs(t-this._memory.length)/65536))),this._memory=new Uint8Array(Fi.memory.buffer)},Ui.prototype.update=function(t){return Ci(!1===this.finalized,"Hash instance finalized"),Ci(t instanceof Uint8Array,"input must be Uint8Array or Buffer"),Ei+t.length>this._memory.length&&this._realloc(Ei+t.length),this._memory.set(t,Ei),Fi.blake2b_update(this.pointer,Ei,Ei+t.length),this},Ui.prototype.digest=function(t){if(Ci(!1===this.finalized,"Hash instance finalized"),this.finalized=!0,vi.push(this.pointer),Fi.blake2b_final(this.pointer),!t||"binary"===t)return this._memory.slice(this.pointer+128,this.pointer+128+this.digestLength);if("string"==typeof t)return Ii.toString(this._memory,t,this.pointer+128,this.pointer+128+this.digestLength);Ci(t instanceof Uint8Array&&t.length>=this.digestLength,"input must be Uint8Array or Buffer");for(var e=0;et()),t):t(new Error("WebAssembly not supported"))},Ui.prototype.ready=Ui.ready,Ui.prototype.getPartialHash=function(){return this._memory.slice(this.pointer,this.pointer+216)},Ui.prototype.setPartialHash=function(t){this._memory.set(t,this.pointer)};const Wi=1,Yi=2,Ji=10,Xi=2,to=3,eo=4,ao=5,io=6,oo=7,no=8,lo=9,ro=10,so=11,co=12,uo=13,go=14,fo=15,ho=16,_o=17;async function po(t,e){await qa(t,1),await t.writeULE32(1),await Ma(t);const a=await Ja(e.q);await qa(t,2);const i=a.q,o=8*(Math.floor((ga.bitLength(i)-1)/64)+1),n=a.r,l=8*(Math.floor((ga.bitLength(n)-1)/64)+1);await t.writeULE32(o),await Da(t,i,o),await t.writeULE32(l),await Da(t,n,l),await t.writeULE32(e.nVars),await t.writeULE32(e.nPublic),await t.writeULE32(e.domainSize),await mo(t,a,e.vk_alpha_1),await mo(t,a,e.vk_beta_1),await wo(t,a,e.vk_beta_2),await wo(t,a,e.vk_gamma_2),await mo(t,a,e.vk_delta_1),await wo(t,a,e.vk_delta_2),await Ma(t)}async function mo(t,e,a){const i=new Uint8Array(2*e.G1.F.n8);e.G1.toRprLEM(i,0,a),await t.write(i)}async function wo(t,e,a){const i=new Uint8Array(2*e.G2.F.n8);e.G2.toRprLEM(i,0,a),await t.write(i)}async function Lo(t,e,a){const i=await t.read(2*e.G1.F.n8),o=e.G1.fromRprLEM(i,0);return a?e.G1.toObject(o):o}async function bo(t,e,a){const i=await t.read(2*e.G2.F.n8),o=e.G2.fromRprLEM(i,0);return a?e.G2.toObject(o):o}async function yo(t,e,a,i){await ka(t,e,1);const o=await t.readULE32();if(await Ra(t),o===Wi)return await async function(t,e,a,i){const o={protocol:"groth16"};await ka(t,e,2);const n=await t.readULE32();o.n8q=n,o.q=await Na(t,n);const l=await t.readULE32();return o.n8r=l,o.r=await Na(t,l),o.curve=await Ja(o.q,i),o.nVars=await t.readULE32(),o.nPublic=await t.readULE32(),o.domainSize=await t.readULE32(),o.power=Qi(o.domainSize),o.vk_alpha_1=await Lo(t,o.curve,a),o.vk_beta_1=await Lo(t,o.curve,a),o.vk_beta_2=await bo(t,o.curve,a),o.vk_gamma_2=await bo(t,o.curve,a),o.vk_delta_1=await Lo(t,o.curve,a),o.vk_delta_2=await bo(t,o.curve,a),await Ra(t),o}(t,e,a,i);if(o===Yi)return await async function(t,e,a,i){const o={protocol:"plonk"};await ka(t,e,2);const n=await t.readULE32();o.n8q=n,o.q=await Na(t,n);const l=await t.readULE32();return o.n8r=l,o.r=await Na(t,l),o.curve=await Ja(o.q,i),o.nVars=await t.readULE32(),o.nPublic=await t.readULE32(),o.domainSize=await t.readULE32(),o.power=Qi(o.domainSize),o.nAdditions=await t.readULE32(),o.nConstraints=await t.readULE32(),o.k1=await t.read(l),o.k2=await t.read(l),o.Qm=await Lo(t,o.curve,a),o.Ql=await Lo(t,o.curve,a),o.Qr=await Lo(t,o.curve,a),o.Qo=await Lo(t,o.curve,a),o.Qc=await Lo(t,o.curve,a),o.S1=await Lo(t,o.curve,a),o.S2=await Lo(t,o.curve,a),o.S3=await Lo(t,o.curve,a),o.X_2=await bo(t,o.curve,a),await Ra(t),o}(t,e,a,i);if(o===Ji)return await async function(t,e,a,i){const o={protocol:"fflonk"};o.protocolId=Ji,await ka(t,e,Xi);const n=await t.readULE32();o.n8q=n,o.q=await Na(t,n),o.curve=await Ja(o.q,i);const l=await t.readULE32();return o.n8r=l,o.r=await Na(t,l),o.nVars=await t.readULE32(),o.nPublic=await t.readULE32(),o.domainSize=await t.readULE32(),o.power=Qi(o.domainSize),o.nAdditions=await t.readULE32(),o.nConstraints=await t.readULE32(),o.k1=await t.read(l),o.k2=await t.read(l),o.w3=await t.read(l),o.w4=await t.read(l),o.w8=await t.read(l),o.wr=await t.read(l),o.X_2=await bo(t,o.curve,a),o.C0=await Lo(t,o.curve,a),await Ra(t),o}(t,e,a,i);throw new Error("Protocol not supported: ")}async function Ao(t,e,a){const i={delta:{}};i.deltaAfter=await Lo(t,e,a),i.delta.g1_s=await Lo(t,e,a),i.delta.g1_sx=await Lo(t,e,a),i.delta.g2_spx=await bo(t,e,a),i.transcript=await t.read(64),i.type=await t.readULE32();const o=await t.readULE32(),n=t.pos;let l=0;for(;t.pos-n0){const e=new Uint8Array(i);await t.writeULE32(e.byteLength),await t.write(e)}else await t.writeULE32(0)}async function Fo(t,e,a){await qa(t,10),await t.write(a.csHash),await t.writeULE32(a.contributions.length);for(let i=0;i0;)a.unshift(0),t--}return a}async function Uo(t,e){let a,i,o;e=e||{};let n=1,l=0,r=0,s=!1;if(t instanceof WebAssembly.Instance)a=t,s=!0;else{let s=32767;if(e.memorySize&&(s=parseInt(e.memorySize),s<0))throw new Error("Invalid memory size");let c=!1;for(;!c;)try{o=new WebAssembly.Memory({initial:s}),c=!0}catch(t){if(s<=1)throw t;console.warn("Could not allocate "+1024*s*64+" bytes. This may cause severe instability. Trying with "+1024*s*64/2+" bytes"),s=Math.floor(s/2)}const g=await WebAssembly.compile(t);let f="",h="";a=await WebAssembly.instantiate(g,{env:{memory:o},runtime:{exceptionHandler:function(t){let e;throw e=1===t?"Signal not found. ":2===t?"Too many signals set. ":3===t?"Signal already set. ":4===t?"Assert Failed. ":5===t?"Not enough memory. ":6===t?"Input signal array access exceeds the size. ":"Unknown error. ",console.error("ERROR: ",t,f),new Error(e+f)},printErrorMessage:function(){f+=d()+"\n"},writeBufferMessage:function(){const t=d();"\n"===t?(console.log(h),h=""):(""!==h&&(h+=" "),h+=t)},showSharedRWMemory:function(){const t=a.exports.getFieldNumLen32(),e=new Uint32Array(t);for(let i=0;i=2&&(l>=1||r>=7)){""!==h&&(h+=" ");const t=ga.fromArray(e,4294967296).toString();h+=t}else console.log(ga.fromArray(e,4294967296))},error:function(t,a,o,n,l,r){let s;throw s=7===t?u(a)+" "+i.getFr(n).toString()+" != "+i.getFr(l).toString()+" "+u(r):9===t?u(a)+" "+i.getFr(n).toString()+" "+u(l):5===t&&e.sym?u(a)+" "+e.sym.labelIdx2Name[l]:u(a)+" "+o+" "+n+" "+l+" "+r,console.log("ERROR: ",t,s),new Error(s)},log:function(t){console.log(i.getFr(t).toString())},logGetSignal:function(t,a){e.logGetSignal&&e.logGetSignal(t,i.getFr(a))},logSetSignal:function(t,a){e.logSetSignal&&e.logSetSignal(t,i.getFr(a))},logStartComponent:function(t){e.logStartComponent&&e.logStartComponent(t)},logFinishComponent:function(t){e.logFinishComponent&&e.logFinishComponent(t)}}})}"function"==typeof a.exports.getVersion&&(n=a.exports.getVersion()),"function"==typeof a.exports.getMinorVersion&&(l=a.exports.getMinorVersion()),"function"==typeof a.exports.getPatchVersion&&(r=a.exports.getPatchVersion());const c=e&&(e.sanityCheck||e.logGetSignal||e.logSetSignal||e.logStartComponent||e.logFinishComponent);if(2===n)i=new Qo(a,c);else{if(1!==n)throw new Error(`Unsupported circom version: ${n}`);if(s)throw new Error("Loading code from WebAssembly instance is not supported for circom version 1");i=new zo(o,a,c)}return i;function d(){let t="",e=a.exports.getMessageChar();for(;0!==e;)t+=String.fromCharCode(e),e=a.exports.getMessageChar();return t}function u(t){const e=new Uint8Array(o.buffer),a=[];for(let i=0;e[t+i]>0;i++)a.push(e[t+i]);return String.fromCharCode.apply(null,a)}}class zo{constructor(t,e,a){this.memory=t,this.i32=new Uint32Array(t.buffer),this.instance=e,this.n32=(this.instance.exports.getFrLen()>>2)-2;const i=this.instance.exports.getPRawPrime(),o=new Array(this.n32);for(let t=0;t>2)+t];this.prime=ga.fromArray(o,4294967296),this.Fr=new $(this.prime),this.mask32=ga.fromString("FFFFFFFF",16),this.NVars=this.instance.exports.getNVars(),this.n64=Math.floor((this.Fr.bitLength-1)/64)+1,this.R=this.Fr.e(ga.shiftLeft(1,64*this.n64)),this.RInv=this.Fr.inv(this.R),this.sanityCheck=a}circom_version(){return 1}async _doCalculateWitness(t,e){this.instance.exports.init(this.sanityCheck||e?1:0);const a=this.allocInt(),i=this.allocFr();Object.keys(t).forEach((e=>{const o=Oo(e),n=parseInt(o.slice(0,8),16),l=parseInt(o.slice(8,16),16);try{this.instance.exports.getSignalOffset32(a,0,n,l)}catch(t){throw new Error(`Signal ${e} is not an input of the circuit.`)}const r=this.getInt(a),s=Po(t[e]);for(let t=0;t>2]}setInt(t,e){this.i32[t>>2]=e}getFr(t){const e=this,a=t>>2;if(2147483648&e.i32[a+1]){const t=new Array(e.n32);for(let i=0;i>2]=o,void(a.i32[1+(t>>2)]=0)}a.i32[t>>2]=0,a.i32[1+(t>>2)]=2147483648;const n=ga.toArray(e,4294967296);for(let e=0;e>2)+e]=i>=0?n[i]:0}}}class Qo{constructor(t,e){this.instance=t,this.version=this.instance.exports.getVersion(),this.n32=this.instance.exports.getFieldNumLen32(),this.instance.exports.getRawPrime();const a=new Uint32Array(this.n32);for(let t=0;t{const a=Oo(e),o=parseInt(a.slice(0,8),16),n=parseInt(a.slice(8,16),16),l=Po(t[e]);if("function"==typeof this.instance.exports.getInputSignalSize){let t=this.instance.exports.getInputSignalSize(o,n);if(t<0)throw new Error(`Signal ${e} not found\n`);if(l.lengtht)throw new Error(`Too many values for input signal ${e}\n`)}for(let t=0;t1)throw new Error(t.fileName+": File has more than one header");t.pos=e[1][0].p;const a=await t.readULE32(),i=await t.read(a),o=ga.fromRprLE(i),n=await Ja(o);if(8*n.F1.n64!=a)throw new Error(t.fileName+": Invalid size");const l=await t.readULE32(),r=await t.readULE32();if(t.pos-e[1][0].p!=e[1][0].size)throw new Error("Invalid PTau header size");return{curve:n,power:l,ceremonyPower:r}}function Yo(t,e,a,i){const o={tau:{},alpha:{},beta:{}};return o.tau.g1_s=n(),o.tau.g1_sx=n(),o.alpha.g1_s=n(),o.alpha.g1_sx=n(),o.beta.g1_s=n(),o.beta.g1_sx=n(),o.tau.g2_spx=l(),o.alpha.g2_spx=l(),o.beta.g2_spx=l(),o;function n(){let o;return o=i?a.G1.fromRprLEM(t,e):a.G1.fromRprUncompressed(t,e),e+=2*a.G1.F.n8,o}function l(){let o;return o=i?a.G2.fromRprLEM(t,e):a.G2.fromRprUncompressed(t,e),e+=2*a.G2.F.n8,o}}function Jo(t,e,a,i,o){async function n(i){o?a.G1.toRprLEM(t,e,i):a.G1.toRprUncompressed(t,e,i),e+=2*a.F1.n8}async function l(i){o?a.G2.toRprLEM(t,e,i):a.G2.toRprUncompressed(t,e,i),e+=2*a.F2.n8}return n(i.tau.g1_s),n(i.tau.g1_sx),n(i.alpha.g1_s),n(i.alpha.g1_sx),n(i.beta.g1_s),n(i.beta.g1_sx),l(i.tau.g2_spx),l(i.alpha.g2_spx),l(i.beta.g2_spx),t}async function Xo(t,e){const a={};a.tauG1=await s(),a.tauG2=await c(),a.alphaG1=await s(),a.betaG1=await s(),a.betaG2=await c(),a.key=await async function(t,e,a){return Yo(await t.read(2*e.F1.n8*6+2*e.F2.n8*3),0,e,a)}(t,e,!0),a.partialHash=await t.read(216),a.nextChallenge=await t.read(64),a.type=await t.readULE32();const i=new Uint8Array(2*e.G1.F.n8*6+2*e.G2.F.n8*3);Jo(i,0,e,a.key,!1);const o=ai.exports(64);o.setPartialHash(a.partialHash),o.update(i),a.responseHash=o.digest();const n=await t.readULE32(),l=t.pos;let r=0;for(;t.pos-l1)throw new Error(t.fileName+": File has more than one contributions section");t.pos=a[7][0].p;const i=await t.readULE32(),o=[];for(let a=0;a0){const e=new Uint8Array(n);await t.writeULE32(e.byteLength),await t.write(e)}else await t.writeULE32(0);async function l(a){e.G1.toRprLEM(i,0,a),await t.write(i)}async function r(a){e.G2.toRprLEM(o,0,a),await t.write(o)}}async function an(t,e,a){await t.writeULE32(7);const i=t.pos;await t.writeULE64(0),await t.writeULE32(a.length);for(let i=0;i0?u[u.length-1].nextChallenge:on(c,d,n);const L=await Qa(a,"ptau",1,o?7:2);await Zo(L,c,d);const b=await m.read(64);if(Mi(l,w)&&(w=b,u[u.length-1].nextChallenge=w),!Mi(b,w))throw new Error("Wrong contribution. This contribution is not based on the previous hash");const y=new ai.exports(64);y.update(b);const A=[];let C;C=await x(m,L,"G1",2,2**d*2-1,[1],"tauG1"),g.tauG1=C[0],C=await x(m,L,"G2",3,2**d,[1],"tauG2"),g.tauG2=C[0],C=await x(m,L,"G1",4,2**d,[0],"alphaG1"),g.alphaG1=C[0],C=await x(m,L,"G1",5,2**d,[0],"betaG1"),g.betaG1=C[0],C=await x(m,L,"G2",6,1,[0],"betaG2"),g.betaG2=C[0],g.partialHash=y.getPartialHash();const I=await m.read(2*c.F1.n8*6+2*c.F2.n8*3);g.key=Yo(I,0,c,!1),y.update(new Uint8Array(I));const F=y.digest();if(n&&n.info(qi(F,"Contribution Response Hash imported: ")),o){const t=new ai.exports(64);t.update(F),await E(t,L,"G1",2,2**d*2-1,"tauG1",n),await E(t,L,"G2",3,2**d,"tauG2",n),await E(t,L,"G1",4,2**d,"alphaTauG1",n),await E(t,L,"G1",5,2**d,"betaTauG1",n),await E(t,L,"G2",6,1,"betaG2",n),g.nextChallenge=t.digest(),n&&n.info(qi(g.nextChallenge,"Next Challenge Hash: "))}else g.nextChallenge=l;return u.push(g),await an(L,c,u),await m.close(),await L.close(),await r.close(),g.nextChallenge;async function x(t,e,a,i,l,r,s){return o?await async function(t,e,a,i,o,l,r){const s=c[a],d=s.F.n8,u=2*s.F.n8,g=[];await qa(e,i);const f=Math.floor((1<<24)/u);A[i]=e.pos;for(let a=0;a=a&&e=e&&o1?s[s.length-2]:c;const u=s[s.length-1];if(e&&e.debug("Validating contribution #"+s[s.length-1].id),!await rn(n,u,d,e))return!1;const g=ai.exports(64);g.update(u.responseHash),e&&e.debug("Verifying powers in tau*G1 section");const f=await b(2,"G1","tauG1",2**l*2-1,[0,1],e);if(a=await ln(n,f.R1,f.R2,n.G2.g,u.tauG2),!0!==a)return e&&e.error("tauG1 section. Powers do not match"),!1;if(!n.G1.eq(n.G1.g,f.singularPoints[0]))return e&&e.error("First element of tau*G1 section must be the generator"),!1;if(!n.G1.eq(u.tauG1,f.singularPoints[1]))return e&&e.error("Second element of tau*G1 section does not match the one in the contribution section"),!1;e&&e.debug("Verifying powers in tau*G2 section");const h=await b(3,"G2","tauG2",2**l,[0,1],e);if(a=await ln(n,n.G1.g,u.tauG1,h.R1,h.R2),!0!==a)return e&&e.error("tauG2 section. Powers do not match"),!1;if(!n.G2.eq(n.G2.g,h.singularPoints[0]))return e&&e.error("First element of tau*G2 section must be the generator"),!1;if(!n.G2.eq(u.tauG2,h.singularPoints[1]))return e&&e.error("Second element of tau*G2 section does not match the one in the contribution section"),!1;e&&e.debug("Verifying powers in alpha*tau*G1 section");const _=await b(4,"G1","alphatauG1",2**l,[0],e);if(a=await ln(n,_.R1,_.R2,n.G2.g,u.tauG2),!0!==a)return e&&e.error("alphaTauG1 section. Powers do not match"),!1;if(!n.G1.eq(u.alphaG1,_.singularPoints[0]))return e&&e.error("First element of alpha*tau*G1 section (alpha*G1) does not match the one in the contribution section"),!1;e&&e.debug("Verifying powers in beta*tau*G1 section");const p=await b(5,"G1","betatauG1",2**l,[0],e);if(a=await ln(n,p.R1,p.R2,n.G2.g,u.tauG2),!0!==a)return e&&e.error("betaTauG1 section. Powers do not match"),!1;if(!n.G1.eq(u.betaG1,p.singularPoints[0]))return e&&e.error("First element of beta*tau*G1 section (beta*G1) does not match the one in the contribution section"),!1;const m=await async function(t){const e=n.G2,a=2*e.F.n8,l=new Uint8Array(a);if(!o[6])throw t.error("File has no BetaG2 section"),new Error("File has no BetaG2 section");if(o[6].length>1)throw t.error("File has no BetaG2 section"),new Error("File has more than one GetaG2 section");i.pos=o[6][0].p;const r=await i.read(a),s=e.fromRprLEM(r);return e.toRprUncompressed(l,0,s),g.update(l),s}(e);if(!n.G2.eq(u.betaG2,m))return e&&e.error("betaG2 element in betaG2 section does not match the one in the contribution section"),!1;const w=g.digest();if(l==r&&!Mi(w,u.nextChallenge))return e&&e.error("Hash of the values does not match the next challenge of the last contributor in the contributions section"),!1;e&&e.info(qi(w,"Next challenge hash: ")),L(u,d);for(let t=s.length-2;t>=0;t--){const a=s[t],i=t>0?s[t-1]:c;if(!await rn(n,a,i,e))return!1;L(a,i)}if(e&&e.info("-----------------------------------------------------"),o[12]&&o[13]&&o[14]&&o[15]){let t;if(t=await y("G1",2,12,"tauG1",e),!t)return!1;if(t=await y("G2",3,13,"tauG2",e),!t)return!1;if(t=await y("G1",4,14,"alphaTauG1",e),!t)return!1;if(t=await y("G1",5,15,"betaTauG1",e),!t)return!1}else e&&e.warn('this file does not contain phase2 precalculated values. Please run: \n snarkjs "powersoftau preparephase2" to prepare this file to be used in the phase2 ceremony.');return await i.close(),e&&e.info("Powers of Tau Ok!"),!0;function L(t,a){if(!e)return;e.info("-----------------------------------------------------"),e.info(`Contribution #${t.id}: ${t.name||""}`),e.info(qi(t.nextChallenge,"Next Challenge: "));const i=new Uint8Array(2*n.G1.F.n8*6+2*n.G2.F.n8*3);Jo(i,0,n,t.key,!1);const o=ai.exports(64);o.setPartialHash(t.partialHash),o.update(i);const l=o.digest();e.info(qi(l,"Response Hash:")),e.info(qi(a.nextChallenge,"Response Hash:")),1==t.type&&(e.info(`Beacon generator: ${Hi(t.beaconHash)}`),e.info(`Beacon iterations Exp: ${t.numIterationsExp}`))}async function b(t,e,a,l,r,s){const c=n[e],d=2*c.F.n8;await ka(i,o,t);const u=[];let f=c.zero,h=c.zero,_=c.zero;for(let t=0;t0){const t=c.fromRprLEM(o,0),e=$i(Di(4),0);f=c.add(f,c.timesScalar(_,e)),h=c.add(h,c.timesScalar(t,e))}const m=await c.multiExpAffine(o.slice(0,(e-1)*d),p),w=await c.multiExpAffine(o.slice(d),p);f=c.add(f,m),h=c.add(h,w),_=c.fromRprLEM(o,(e-1)*d);for(let a=0;a=t&&i1;)c/=2,d+=1;if(2**d!=s)throw new Error("Invalid file size");o&&o.debug("Power to tau size: "+d);const u=await Vi(i),g=await Ta(a),f=ai.exports(64);for(let t=0;t{o.debug(e+".g1_s: "+t.G1.toString(p[e].g1_s,16)),o.debug(e+".g1_sx: "+t.G1.toString(p[e].g1_sx,16)),o.debug(e+".g2_sp: "+t.G2.toString(p[e].g2_sp,16)),o.debug(e+".g2_spx: "+t.G2.toString(p[e].g2_spx,16)),o.debug("")}));const m=ai.exports(64);await g.write(_),m.update(_),await cn(n,g,m,t,"G1",2**d*2-1,t.Fr.one,p.tau.prvKey,"COMPRESSED","tauG1",o),await cn(n,g,m,t,"G2",2**d,t.Fr.one,p.tau.prvKey,"COMPRESSED","tauG2",o),await cn(n,g,m,t,"G1",2**d,p.alpha.prvKey,p.tau.prvKey,"COMPRESSED","alphaTauG1",o),await cn(n,g,m,t,"G1",2**d,p.beta.prvKey,p.tau.prvKey,"COMPRESSED","betaTauG1",o),await cn(n,g,m,t,"G2",1,p.beta.prvKey,p.tau.prvKey,"COMPRESSED","betaTauG2",o);const w=new Uint8Array(2*t.F1.n8*6+2*t.F2.n8*3);Jo(w,0,t,p,!1),await g.write(w),m.update(w);const L=m.digest();o&&o.info(qi(L,"Contribution Response Hash: ")),await g.close(),await n.close()},beacon:async function(t,e,a,i,o,n){const l=ji(i);if(0==l.byteLength||2*l.byteLength!=i.length)return n&&n.error("Invalid Beacon Hash. (It must be a valid hexadecimal sequence)"),!1;if(l.length>=256)return n&&n.error("Maximum length of beacon hash is 255 bytes"),!1;if((o=parseInt(o))<10||o>63)return n&&n.error("Invalid numIterationsExp. (Must be between 10 and 63)"),!1;await ai.exports.ready();const{fd:r,sections:s}=await za(t,"ptau",1),{curve:c,power:d,ceremonyPower:u}=await Wo(r,s);if(d!=u)return n&&n.error("This file has been reduced. You cannot contribute into a reduced file."),!1;s[12]&&n&&n.warn("Contributing into a file that has phase2 calculated. You will have to prepare phase2 again.");const g=await tn(r,c,s),f={name:a,type:1,numIterationsExp:o,beaconHash:l};let h;h=g.length>0?g[g.length-1].nextChallenge:on(c,d,n),f.key=await nn(c,h,l,o);const _=new ai.exports(64);_.update(h);const p=await Qa(e,"ptau",1,7);await Zo(p,c,d);const m=[];let w;w=await A(2,"G1",2**d*2-1,c.Fr.e(1),f.key.tau.prvKey,"tauG1",n),f.tauG1=w[1],w=await A(3,"G2",2**d,c.Fr.e(1),f.key.tau.prvKey,"tauG2",n),f.tauG2=w[1],w=await A(4,"G1",2**d,f.key.alpha.prvKey,f.key.tau.prvKey,"alphaTauG1",n),f.alphaG1=w[0],w=await A(5,"G1",2**d,f.key.beta.prvKey,f.key.tau.prvKey,"betaTauG1",n),f.betaG1=w[0],w=await A(6,"G2",1,f.key.beta.prvKey,f.key.tau.prvKey,"betaTauG2",n),f.betaG2=w[0],f.partialHash=_.getPartialHash();const L=new Uint8Array(2*c.F1.n8*6+2*c.F2.n8*3);Jo(L,0,c,f.key,!1),_.update(new Uint8Array(L));const b=_.digest();n&&n.info(qi(b,"Contribution Response Hash imported: "));const y=new ai.exports(64);return y.update(b),await C(p,"G1",2,2**d*2-1,"tauG1",n),await C(p,"G2",3,2**d,"tauG2",n),await C(p,"G1",4,2**d,"alphaTauG1",n),await C(p,"G1",5,2**d,"betaTauG1",n),await C(p,"G2",6,1,"betaG2",n),f.nextChallenge=y.digest(),n&&n.info(qi(f.nextChallenge,"Next Challenge Hash: ")),g.push(f),await an(p,c,g),await r.close(),await p.close(),b;async function A(t,e,a,i,o,n,l){const d=[];r.pos=s[t][0].p,await qa(p,t),m[t]=p.pos;const u=c[e],g=2*u.F.n8,f=Math.floor((1<<20)/g);let h=i;for(let t=0;t0?d[d.length-1].nextChallenge:on(r,s,o),u.key=Ho(r,g,f);const h=new ai.exports(64);h.update(g);const _=await Qa(e,"ptau",1,7);await Zo(_,r,s);const p=[];let m;m=await y(2,"G1",2**s*2-1,r.Fr.e(1),u.key.tau.prvKey,"tauG1"),u.tauG1=m[1],m=await y(3,"G2",2**s,r.Fr.e(1),u.key.tau.prvKey,"tauG2"),u.tauG2=m[1],m=await y(4,"G1",2**s,u.key.alpha.prvKey,u.key.tau.prvKey,"alphaTauG1"),u.alphaG1=m[0],m=await y(5,"G1",2**s,u.key.beta.prvKey,u.key.tau.prvKey,"betaTauG1"),u.betaG1=m[0],m=await y(6,"G2",1,u.key.beta.prvKey,u.key.tau.prvKey,"betaTauG2"),u.betaG2=m[0],u.partialHash=h.getPartialHash();const w=new Uint8Array(2*r.F1.n8*6+2*r.F2.n8*3);Jo(w,0,r,u.key,!1),h.update(new Uint8Array(w));const L=h.digest();o&&o.info(qi(L,"Contribution Response Hash imported: "));const b=new ai.exports(64);return b.update(L),await A(_,"G1",2,2**s*2-1,"tauG1"),await A(_,"G2",3,2**s,"tauG2"),await A(_,"G1",4,2**s,"alphaTauG1"),await A(_,"G1",5,2**s,"betaTauG1"),await A(_,"G2",6,1,"betaG2"),u.nextChallenge=b.digest(),o&&o.info(qi(u.nextChallenge,"Next Challenge Hash: ")),d.push(u),await an(_,r,d),await n.close(),await _.close(),L;async function y(t,e,a,i,s,c){const d=[];n.pos=l[t][0].p,await qa(_,t),p[t]=_.pos;const u=r[e],g=2*u.F.n8,f=Math.floor((1<<20)/g);let m=i;for(let t=0;t=this.length&&(this.length=t+1),!0}getKeys(){const t=new hn;for(let e=0;e1<<20?new hn:[];for(let t=0;t1<<20?new hn:[];for(let t=0;t1<<20?new hn:[];for(let t=0;t{let i="";return Object.keys(a).forEach((o=>{let n=e.varIdx2Name[o];"one"==n&&(n="1");let l=t.curve.Fr.toString(a[o]);"1"==l&&(l=""),"-1"==l&&(l="-"),""!=i&&"-"!=l[0]&&(l="+"+l),""!=i&&(l=" "+l),i=i+l+n})),i},n=`[ ${o(i[0])} ] * [ ${o(i[1])} ] - [ ${o(i[2])} ] = 0`;a&&a.info(n)}},info:async function(t,e){const a=await Ln(t);return ga.eq(a.prime,yn)?e&&e.info("Curve: bn-128"):ga.eq(a.prime,bn)?e&&e.info("Curve: bls12-381"):e&&e.info(`Unknown Curve. Prime: ${ga.toString(a.prime)}`),e&&e.info(`# of Wires: ${a.nVars}`),e&&e.info(`# of Constraints: ${a.nConstraints}`),e&&e.info(`# of Private Inputs: ${a.nPrvInputs}`),e&&e.info(`# of Public Inputs: ${a.nPubInputs}`),e&&e.info(`# of Labels: ${a.nLabels}`),e&&e.info(`# of Outputs: ${a.nOutputs}`),a},exportJson:async function(t,e){const a=await Ln(t,!0,!0,!0,e),i=a.curve.Fr;return delete a.curve,delete a.F,Zi(i,a)}});async function Cn(t){const e={labelIdx2Name:["one"],varIdx2Name:["one"],componentIdx2Name:[]},a=await Ua(t),i=await a.read(a.totalSize),o=new TextDecoder("utf-8").decode(i).split("\n");for(let t=0;t Reading r1cs file");const{fd:i,sections:o}=await za(t,"r1cs",1),n=await wn(i,o,{loadConstraints:!1,loadCustomGates:!1});a&&a.info("> Reading witness file");const{fd:l,sections:r}=await za(e,"wtns",2),s=await vo(l,r);if(!ga.eq(n.prime,s.q))throw new Error("Curve of the witness does not match the curve of the proving key");const c=await Va(l,r,2);await l.close();const d=(await Ya(n.prime)).Fr,u=d.n8,g=await Va(i,o,2);a&&(a.info("----------------------------"),a.info(" WITNESS CHECK"),a.info(` Curve: ${n.curve.name}`),a.info(` Vars (wires): ${n.nVars}`),a.info(` Outputs: ${n.nOutputs}`),a.info(` Public Inputs: ${n.nPubInputs}`),a.info(` Private Inputs: ${n.nPrvInputs}`),a.info(` Labels: ${n.nLabels}`),a.info(` Constraints: ${n.nConstraints}`),a.info(` Custom Gates: ${n.useCustomGates}`),a.info("----------------------------")),a&&a.info("> Checking witness correctness");let f=0,h=!0;for(let t=0;t{const i=function(t){return d.fromRprLE(c.slice(t*u,t*u+u))}(a),o=t[a];e=d.add(e,d.mul(i,o))})),e}function p(){const t={},e=g.slice(f,f+4);f+=4;const a=new DataView(e.buffer).getUint32(0,!0),i=g.slice(f,f+(4+n.n8)*a);f+=(4+n.n8)*a;const o=new DataView(i.buffer);for(let e=0;e=this.length&&(this.length=t+1),!0}getKeys(){const t=new Bn;for(let e=0;es)return i&&i.error(`circuit too big for this power of tau ceremony. ${u.nConstraints}*2 > 2**${s}`),-1;if(!l[12])return i&&i.error("Powers of tau is not prepared."),-1;const p=u.nOutputs+u.nPubInputs,m=2**_;await qa(g,1),await g.writeULE32(1),await Ma(g),await qa(g,2);const w=r.q,L=8*(Math.floor((ga.bitLength(w)-1)/64)+1),b=r.r,y=8*(Math.floor((ga.bitLength(b)-1)/64)+1),A=ga.mod(ga.shl(1,8*y),b),C=r.Fr.e(ga.mod(ga.mul(A,A),b));let I,F,x;await g.writeULE32(L),await Da(g,w,L),await g.writeULE32(y),await Da(g,b,y),await g.writeULE32(u.nVars),await g.writeULE32(p),await g.writeULE32(m),I=await n.read(f,l[4][0].p),await g.write(I),I=await r.G1.batchLEMtoU(I),o.update(I),F=await n.read(f,l[5][0].p),await g.write(F),F=await r.G1.batchLEMtoU(F),o.update(F),x=await n.read(h,l[6][0].p),await g.write(x),x=await r.G2.batchLEMtoU(x),o.update(x);const E=new Uint8Array(f);r.G1.toRprLEM(E,0,r.G1.g);const v=new Uint8Array(h);r.G2.toRprLEM(v,0,r.G2.g);const B=new Uint8Array(f);r.G1.toRprUncompressed(B,0,r.G1.g);const S=new Uint8Array(h);r.G2.toRprUncompressed(S,0,r.G2.g),await g.write(v),await g.write(E),await g.write(v),o.update(S),o.update(B),o.update(S),await Ma(g),i&&i.info("Reading r1cs");let P=await Va(c,d,2);const G=new Bn(u.nVars),O=new Bn(u.nVars),T=new Bn(u.nVars),U=new Bn(u.nVars-p-1),z=new Array(p+1);i&&i.info("Reading tauG1");let Q=await Va(n,l,12,(m-1)*f,m*f);i&&i.info("Reading tauG2");let q=await Va(n,l,13,(m-1)*h,m*h);i&&i.info("Reading alphatauG1");let M=await Va(n,l,14,(m-1)*f,m*f);i&&i.info("Reading betatauG1");let k=await Va(n,l,15,(m-1)*f,m*f);await async function(){const t=new Uint8Array(12+r.Fr.n8),e=new DataView(t.buffer),a=new Uint8Array(r.Fr.n8);r.Fr.toRprLE(a,0,r.Fr.e(1));let o=0;function n(){const t=P.slice(o,o+4);o+=4;return new DataView(t.buffer).getUint32(0,!0)}const l=new Bn;for(let t=0;t=0?r.Fr.fromRprLE(P.slice(i[3],i[3]+r.Fr.n8),0):r.Fr.fromRprLE(a,0);const n=r.Fr.mul(o,C);r.Fr.toRprLE(t,12,n),s.set(t,d),d+=t.length}await g.write(s),await Ma(g)}(),await D(3,"G1",z,"IC"),await async function(){await qa(g,9);const t=new Se(m*f);if(_(i&&i.debug(`Writing points end ${n}: ${d}/${a.length}`),t)))),c+=o,t++}const d=await Promise.all(s);for(let t=0;t32768?(f=new Se(_*n),h=new Se(_*r.Fr.n8)):(f=new Uint8Array(_*n),h=new Uint8Array(_*r.Fr.n8));let p=0,m=0;const w=[Q,q,M,k],L=new Uint8Array(r.Fr.n8);r.Fr.toRprLE(L,0,r.Fr.e(1));let b=0;for(let t=0;t=0?h.set(P.slice(e[t][o][2],e[t][o][2]+r.Fr.n8),b*r.Fr.n8):h.set(L,b*r.Fr.n8),b++;if(e.length>1){const t=[];t.push({cmd:"ALLOCSET",var:0,buff:f}),t.push({cmd:"ALLOCSET",var:1,buff:h}),t.push({cmd:"ALLOC",var:2,len:e.length*l}),p=0,m=0;let a=0;for(let i=0;i=0;t--){const e=d.contributions[t];i&&i.info("-------------------------"),i&&i.info(qi(e.contributionHash,`contribution #${t+1} ${e.name?e.name:""}:`)),1==e.type&&(i&&i.info(`Beacon generator: ${Hi(e.beaconHash)}`),i&&i.info(`Beacon iterations Exp: ${e.numIterationsExp}`))}return i&&i.info("-------------------------"),i&&i.info("ZKey Ok!"),!0;async function w(t,e){const a=2*s.G1.F.n8,i=t.byteLength/a,o=s.tm.concurrency,n=Math.floor(i/o),l=[];for(let a=0;a Detected protocol: "+o.protocol),"groth16"===o.protocol)n=await async function(t,e,a){const i=await Ja(t.q),o=2*i.G1.F.n8,n=await i.pairing(t.vk_alpha_1,t.vk_beta_2);let l={protocol:t.protocol,curve:i.name,nPublic:t.nPublic,vk_alpha_1:i.G1.toObject(t.vk_alpha_1),vk_beta_2:i.G2.toObject(t.vk_beta_2),vk_gamma_2:i.G2.toObject(t.vk_gamma_2),vk_delta_2:i.G2.toObject(t.vk_delta_2),vk_alphabeta_12:i.Gt.toObject(n)};await ka(e,a,3),l.IC=[];for(let a=0;a<=t.nPublic;a++){const t=await e.read(o),a=i.G1.toObject(t);l.IC.push(a)}return await Ra(e),l=On(l),l}(o,a,i);else if("plonk"===o.protocol)n=await async function(t){const e=await Ja(t.q);let a={protocol:t.protocol,curve:e.name,nPublic:t.nPublic,power:t.power,k1:e.Fr.toObject(t.k1),k2:e.Fr.toObject(t.k2),Qm:e.G1.toObject(t.Qm),Ql:e.G1.toObject(t.Ql),Qr:e.G1.toObject(t.Qr),Qo:e.G1.toObject(t.Qo),Qc:e.G1.toObject(t.Qc),S1:e.G1.toObject(t.S1),S2:e.G1.toObject(t.S2),S3:e.G1.toObject(t.S3),X_2:e.G2.toObject(t.X_2),w:e.Fr.toObject(e.Fr.w[t.power])};return a=On(a),a}(o);else{if(!o.protocolId||o.protocolId!==Ji)throw new Error("zkey file protocol unrecognized");n=await async function(t,e){const a=await Ja(t.q);let i={protocol:t.protocol,curve:a.name,nPublic:t.nPublic,power:t.power,k1:a.Fr.toObject(t.k1),k2:a.Fr.toObject(t.k2),w:a.Fr.toObject(a.Fr.w[t.power]),w3:a.Fr.toObject(t.w3),w4:a.Fr.toObject(t.w4),w8:a.Fr.toObject(t.w8),wr:a.Fr.toObject(t.wr),X_2:a.G2.toObject(t.X_2),C0:a.G1.toObject(t.C0)};return On(i)}(o)}return await a.close(),e&&e.info("EXPORT VERIFICATION KEY FINISHED"),n}var Un={};const{unstringifyBigInts:zn,stringifyBigInts:Qn}=fa;async function qn(t,e,a){a&&a.info("FFLONK EXPORT SOLIDITY VERIFIER STARTED");const i=await Xa(t.curve);let o=c(t.w3);t.w3_2=d(i.Fr.square(o));let n=c(t.w4);t.w4_2=d(i.Fr.square(n)),t.w4_3=d(i.Fr.mul(i.Fr.square(n),n));let l=c(t.w8),r=i.Fr.one;for(let e=1;e<8;e++)r=i.Fr.mul(r,l),t["w8_"+e]=d(r);let s=e[t.protocol];return a&&a.info("FFLONK EXPORT SOLIDITY VERIFIER FINISHED"),Un.render(s,t);function c(t){const e=zn(t);return i.Fr.fromObject(e)}function d(t){const e=i.Fr.toObject(t);return Qn(e)}}var Mn=Object.freeze({__proto__:null,newZKey:Sn,exportBellman:async function(t,e,a){const{fd:i,sections:o}=await za(t,"zkey",2),n=await yo(i,o);if("groth16"!=n.protocol)throw new Error("zkey file is not groth16");const l=await Ja(n.q),r=2*l.G1.F.n8,s=2*l.G2.F.n8,c=await Co(i,l,o),d=await Ta(e);let u;await w(n.vk_alpha_1),await w(n.vk_beta_1),await L(n.vk_beta_2),await L(n.vk_gamma_2),await w(n.vk_delta_1),await L(n.vk_delta_2),u=await Va(i,o,3),u=await l.G1.batchLEMtoU(u),await b("G1",u);const g=await Va(i,o,9);let f,h,_,p,m;f=await l.G1.fft(g,"affine","jacobian",a),f=await l.G1.batchApplyKey(f,l.Fr.neg(l.Fr.e(2)),l.Fr.w[n.power+1],"jacobian","affine",a),f=f.slice(0,f.byteLength-r),f=await l.G1.batchLEMtoU(f),await b("G1",f),h=await Va(i,o,8),h=await l.G1.batchLEMtoU(h),await b("G1",h),_=await Va(i,o,5),_=await l.G1.batchLEMtoU(_),await b("G1",_),p=await Va(i,o,6),p=await l.G1.batchLEMtoU(p),await b("G1",p),m=await Va(i,o,7),m=await l.G2.batchLEMtoU(m),await b("G2",m),await d.write(c.csHash),await async function(t){const e=new Uint8Array(4);new DataView(e.buffer,e.byteOffset,e.byteLength).setUint32(0,t,!1),await d.write(e)}(c.contributions.length);for(let t=0;tg.contributions.length)return o&&o.error("The impoerted file does not include new contributions"),!1;for(let t=0;t=256)return n&&n.error("Maximum length of beacon hash is 255 bytes"),!1;if((o=parseInt(o))<10||o>63)return n&&n.error("Invalid numIterationsExp. (Must be between 10 and 63)"),!1;const{fd:r,sections:s}=await za(t,"zkey",2),c=await yo(r,s);if("groth16"!=c.protocol)throw new Error("zkey file is not groth16");const d=await Ja(c.q),u=await Co(r,d,s),g=await Qa(e,"zkey",1,10),f=await Ki(l,o),h=ai.exports(64);h.update(u.csHash);for(let t=0;t{const i=this.curve.G1.toObject(this.polynomials[a]);t?e.polynomials[a]=i:e[a]=i})),Object.keys(this.evaluations).forEach((a=>{const i=this.curve.Fr.toObject(this.evaluations[a]);t?e.evaluations[a]=i:e[a]=i})),e}fromObjectProof(t){this.resetProof(),Object.keys(t.polynomials).forEach((e=>{this.polynomials[e]=this.curve.G1.fromObject(t.polynomials[e])})),Object.keys(t.evaluations).forEach((e=>{this.evaluations[e]=this.curve.Fr.fromObject(t.evaluations[e])}))}}var Rn,Dn={exports:{}}; /** * [js-sha3]{@link https://github.com/emn178/js-sha3} * @@ -6,4 +6,4 @@ var snarkjs=function(t){"use strict";const e=[0,1,2,2,3,3,3,3,4,4,4,4,4,4,4,4];f * @author Chen, Yi-Cyuan [emn178@gmail.com] * @copyright Chen, Yi-Cyuan 2015-2018 * @license MIT - */Rn=Dn,function(){var t="input is invalid type",e="object"==typeof window,a=e?window:{};a.JS_SHA3_NO_WINDOW&&(e=!1);var i=!e&&"object"==typeof self;!a.JS_SHA3_NO_NODE_JS&&"object"==typeof process&&process.versions&&process.versions.node?a=ei:i&&(a=self);var o=!a.JS_SHA3_NO_COMMON_JS&&Rn.exports,n=!a.JS_SHA3_NO_ARRAY_BUFFER&&"undefined"!=typeof ArrayBuffer,l="0123456789abcdef".split(""),r=[4,1024,262144,67108864],s=[0,8,16,24],c=[1,0,32898,0,32906,2147483648,2147516416,2147483648,32907,0,2147483649,0,2147516545,2147483648,32777,2147483648,138,0,136,0,2147516425,0,2147483658,0,2147516555,0,139,2147483648,32905,2147483648,32771,2147483648,32770,2147483648,128,2147483648,32778,0,2147483658,2147483648,2147516545,2147483648,32896,2147483648,2147483649,0,2147516424,2147483648],d=[224,256,384,512],u=[128,256],g=["hex","buffer","arrayBuffer","array","digest"],f={128:168,256:136};!a.JS_SHA3_NO_NODE_JS&&Array.isArray||(Array.isArray=function(t){return"[object Array]"===Object.prototype.toString.call(t)}),!n||!a.JS_SHA3_NO_ARRAY_BUFFER_IS_VIEW&&ArrayBuffer.isView||(ArrayBuffer.isView=function(t){return"object"==typeof t&&t.buffer&&t.buffer.constructor===ArrayBuffer});for(var h=function(t,e,a){return function(i){return new B(t,e,t).update(i)[a]()}},_=function(t,e,a){return function(i,o){return new B(t,e,o).update(i)[a]()}},p=function(t,e,a){return function(e,i,o,n){return y["cshake"+t].update(e,i,o,n)[a]()}},m=function(t,e,a){return function(e,i,o,n){return y["kmac"+t].update(e,i,o,n)[a]()}},w=function(t,e,a,i){for(var o=0;o>5,this.byteCount=this.blockCount<<2,this.outputBlocks=a>>5,this.extraBytes=(31&a)>>3;for(var i=0;i<50;++i)this.s[i]=0}function S(t,e,a){B.call(this,t,e,a)}B.prototype.update=function(e){if(this.finalized)throw new Error("finalize already called");var a,i=typeof e;if("string"!==i){if("object"!==i)throw new Error(t);if(null===e)throw new Error(t);if(n&&e.constructor===ArrayBuffer)e=new Uint8Array(e);else if(!(Array.isArray(e)||n&&ArrayBuffer.isView(e)))throw new Error(t);a=!0}for(var o,l,r=this.blocks,c=this.byteCount,d=e.length,u=this.blockCount,g=0,f=this.s;g>2]|=e[g]<>2]|=l<>2]|=(192|l>>6)<>2]|=(128|63&l)<=57344?(r[o>>2]|=(224|l>>12)<>2]|=(128|l>>6&63)<>2]|=(128|63&l)<>2]|=(240|l>>18)<>2]|=(128|l>>12&63)<>2]|=(128|l>>6&63)<>2]|=(128|63&l)<=c){for(this.start=o-c,this.block=r[u],o=0;o>=8);a>0;)o.unshift(a),a=255&(t>>=8),++i;return e?o.push(i):o.unshift(i),this.update(o),o.length},B.prototype.encodeString=function(e){var a,i=typeof e;if("string"!==i){if("object"!==i)throw new Error(t);if(null===e)throw new Error(t);if(n&&e.constructor===ArrayBuffer)e=new Uint8Array(e);else if(!(Array.isArray(e)||n&&ArrayBuffer.isView(e)))throw new Error(t);a=!0}var o=0,l=e.length;if(a)o=l;else for(var r=0;r=57344?o+=3:(s=65536+((1023&s)<<10|1023&e.charCodeAt(++r)),o+=4)}return o+=this.encode(8*o),this.update(e),o},B.prototype.bytepad=function(t,e){for(var a=this.encode(e),i=0;i>2]|=this.padding[3&e],this.lastByteIndex===this.byteCount)for(t[0]=t[a],e=1;e>4&15]+l[15&t]+l[t>>12&15]+l[t>>8&15]+l[t>>20&15]+l[t>>16&15]+l[t>>28&15]+l[t>>24&15];r%e==0&&(P(a),n=0)}return o&&(t=a[n],s+=l[t>>4&15]+l[15&t],o>1&&(s+=l[t>>12&15]+l[t>>8&15]),o>2&&(s+=l[t>>20&15]+l[t>>16&15])),s},B.prototype.arrayBuffer=function(){this.finalize();var t,e=this.blockCount,a=this.s,i=this.outputBlocks,o=this.extraBytes,n=0,l=0,r=this.outputBits>>3;t=o?new ArrayBuffer(i+1<<2):new ArrayBuffer(r);for(var s=new Uint32Array(t);l>8&255,s[t+2]=e>>16&255,s[t+3]=e>>24&255;r%a==0&&P(i)}return n&&(t=r<<2,e=i[l],s[t]=255&e,n>1&&(s[t+1]=e>>8&255),n>2&&(s[t+2]=e>>16&255)),s},S.prototype=new B,S.prototype.finalize=function(){return this.encode(this.outputBits,!0),B.prototype.finalize.call(this)};var P=function(t){var e,a,i,o,n,l,r,s,d,u,g,f,h,_,p,m,w,L,b,y,A,C,I,F,x,E,v,B,S,P,G,O,T,U,z,Q,q,M,k,R,D,N,$,V,K,j,H,Z,W,Y,J,X,tt,et,at,it,ot,nt,lt,rt,st,ct,dt;for(i=0;i<48;i+=2)o=t[0]^t[10]^t[20]^t[30]^t[40],n=t[1]^t[11]^t[21]^t[31]^t[41],l=t[2]^t[12]^t[22]^t[32]^t[42],r=t[3]^t[13]^t[23]^t[33]^t[43],s=t[4]^t[14]^t[24]^t[34]^t[44],d=t[5]^t[15]^t[25]^t[35]^t[45],u=t[6]^t[16]^t[26]^t[36]^t[46],g=t[7]^t[17]^t[27]^t[37]^t[47],e=(f=t[8]^t[18]^t[28]^t[38]^t[48])^(l<<1|r>>>31),a=(h=t[9]^t[19]^t[29]^t[39]^t[49])^(r<<1|l>>>31),t[0]^=e,t[1]^=a,t[10]^=e,t[11]^=a,t[20]^=e,t[21]^=a,t[30]^=e,t[31]^=a,t[40]^=e,t[41]^=a,e=o^(s<<1|d>>>31),a=n^(d<<1|s>>>31),t[2]^=e,t[3]^=a,t[12]^=e,t[13]^=a,t[22]^=e,t[23]^=a,t[32]^=e,t[33]^=a,t[42]^=e,t[43]^=a,e=l^(u<<1|g>>>31),a=r^(g<<1|u>>>31),t[4]^=e,t[5]^=a,t[14]^=e,t[15]^=a,t[24]^=e,t[25]^=a,t[34]^=e,t[35]^=a,t[44]^=e,t[45]^=a,e=s^(f<<1|h>>>31),a=d^(h<<1|f>>>31),t[6]^=e,t[7]^=a,t[16]^=e,t[17]^=a,t[26]^=e,t[27]^=a,t[36]^=e,t[37]^=a,t[46]^=e,t[47]^=a,e=u^(o<<1|n>>>31),a=g^(n<<1|o>>>31),t[8]^=e,t[9]^=a,t[18]^=e,t[19]^=a,t[28]^=e,t[29]^=a,t[38]^=e,t[39]^=a,t[48]^=e,t[49]^=a,_=t[0],p=t[1],j=t[11]<<4|t[10]>>>28,H=t[10]<<4|t[11]>>>28,B=t[20]<<3|t[21]>>>29,S=t[21]<<3|t[20]>>>29,rt=t[31]<<9|t[30]>>>23,st=t[30]<<9|t[31]>>>23,N=t[40]<<18|t[41]>>>14,$=t[41]<<18|t[40]>>>14,U=t[2]<<1|t[3]>>>31,z=t[3]<<1|t[2]>>>31,m=t[13]<<12|t[12]>>>20,w=t[12]<<12|t[13]>>>20,Z=t[22]<<10|t[23]>>>22,W=t[23]<<10|t[22]>>>22,P=t[33]<<13|t[32]>>>19,G=t[32]<<13|t[33]>>>19,ct=t[42]<<2|t[43]>>>30,dt=t[43]<<2|t[42]>>>30,et=t[5]<<30|t[4]>>>2,at=t[4]<<30|t[5]>>>2,Q=t[14]<<6|t[15]>>>26,q=t[15]<<6|t[14]>>>26,L=t[25]<<11|t[24]>>>21,b=t[24]<<11|t[25]>>>21,Y=t[34]<<15|t[35]>>>17,J=t[35]<<15|t[34]>>>17,O=t[45]<<29|t[44]>>>3,T=t[44]<<29|t[45]>>>3,F=t[6]<<28|t[7]>>>4,x=t[7]<<28|t[6]>>>4,it=t[17]<<23|t[16]>>>9,ot=t[16]<<23|t[17]>>>9,M=t[26]<<25|t[27]>>>7,k=t[27]<<25|t[26]>>>7,y=t[36]<<21|t[37]>>>11,A=t[37]<<21|t[36]>>>11,X=t[47]<<24|t[46]>>>8,tt=t[46]<<24|t[47]>>>8,V=t[8]<<27|t[9]>>>5,K=t[9]<<27|t[8]>>>5,E=t[18]<<20|t[19]>>>12,v=t[19]<<20|t[18]>>>12,nt=t[29]<<7|t[28]>>>25,lt=t[28]<<7|t[29]>>>25,R=t[38]<<8|t[39]>>>24,D=t[39]<<8|t[38]>>>24,C=t[48]<<14|t[49]>>>18,I=t[49]<<14|t[48]>>>18,t[0]=_^~m&L,t[1]=p^~w&b,t[10]=F^~E&B,t[11]=x^~v&S,t[20]=U^~Q&M,t[21]=z^~q&k,t[30]=V^~j&Z,t[31]=K^~H&W,t[40]=et^~it&nt,t[41]=at^~ot<,t[2]=m^~L&y,t[3]=w^~b&A,t[12]=E^~B&P,t[13]=v^~S&G,t[22]=Q^~M&R,t[23]=q^~k&D,t[32]=j^~Z&Y,t[33]=H^~W&J,t[42]=it^~nt&rt,t[43]=ot^~lt&st,t[4]=L^~y&C,t[5]=b^~A&I,t[14]=B^~P&O,t[15]=S^~G&T,t[24]=M^~R&N,t[25]=k^~D&$,t[34]=Z^~Y&X,t[35]=W^~J&tt,t[44]=nt^~rt&ct,t[45]=lt^~st&dt,t[6]=y^~C&_,t[7]=A^~I&p,t[16]=P^~O&F,t[17]=G^~T&x,t[26]=R^~N&U,t[27]=D^~$&z,t[36]=Y^~X&V,t[37]=J^~tt&K,t[46]=rt^~ct&et,t[47]=st^~dt&at,t[8]=C^~_&m,t[9]=I^~p&w,t[18]=O^~F&E,t[19]=T^~x&v,t[28]=N^~U&Q,t[29]=$^~z&q,t[38]=X^~V&j,t[39]=tt^~K&H,t[48]=ct^~et&it,t[49]=dt^~at&ot,t[0]^=c[i],t[1]^=c[i+1]};if(o)Rn.exports=y;else for(C=0;C0===a.type?t++:e++));let a=new Uint8Array(e*this.Fr.n8+t*this.G1.F.n8*2),i=0;for(let t=0;t32768?new Se(t.length*i.n8):new Uint8Array(t.length*i.n8);for(let e=0;e32768?new Se(i*o.n8):new Uint8Array(i*o.n8);return n.set(t.coef.slice(),0),new nl(n,e,a)}isEqual(t){const e=this.degree();if(e!==t.degree())return!1;for(let a=0;a32768?new Se((this.length()+t.length)*this.Fr.n8):new Uint8Array((this.length()+t.length)*this.Fr.n8);e.set(this.coef,0);for(let a=0;athis.coef.byteLength?this.Fr.zero:this.coef.slice(e,e+this.Fr.n8)}setCoef(t,e){if(t>this.length()-1)throw new Error("Coef index is not available");this.coef.set(e,t*this.Fr.n8)}static async to4T(t,e,a,i){a=a||[];let o=await i.ifft(t);const n=4*e>32768?new Se(4*e*i.n8):new Uint8Array(4*e*i.n8);n.set(o,0);const l=await i.fft(n);if(0===a.length)return[o,l];const r=e+a.length>32768?new Se((e+a.length)*i.n8):new Uint8Array((e+a.length)*i.n8);r.set(o,0);for(let t=0;t0;t--){const e=t*this.Fr.n8;if(!this.Fr.eq(this.Fr.zero,this.coef.slice(e,e+this.Fr.n8)))return t}return 0}evaluate(t){let e=this.Fr.zero;for(let a=this.degree()+1;a>0;a--){let i=a*this.Fr.n8;const o=this.coef.slice(i-this.Fr.n8,i);e=this.Fr.add(o,this.Fr.mul(e,t))}return e}fastEvaluate(t){const e=this.Fr;let a=this.degree()+1,i=parseInt(a/3),o=a-3*i,n=[],l=[];l[0]=e.one;for(let a=0;a<3;a++){n[a]=e.zero;for(let r=2===a?i+o:i;r>0;r--)n[a]=e.add(this.getCoef(a*i+r-1),e.mul(n[a],t)),0===a&&(l[0]=e.mul(l[0],t))}for(let t=1;t<3;t++)n[0]=e.add(n[0],e.mul(l[t-1],n[t])),l[t]=e.mul(l[t-1],l[0]);return n[0]}add(t,e){let a=!1;t.length()>this.length()&&(a=!0);const i=this.length(),o=t.length();for(let n=0;nthis.length()&&(a=!0);const i=this.length(),o=t.length();for(let n=0;n32768?new Se(a*e.n8):new Uint8Array(a*e.n8);let o=new nl(i,this.curve,this.logger);o.coef.set(this.coef.slice(0,(a-1)*e.n8),32),this.mulScalar(e.neg(t)),o.add(this),this.coef=o.coef}byXNSubValue(t,e){const a=this.Fr,i=!(this.length()-t-1>=this.degree())?this.length()+t:this.length(),o=i>32768?new Se(i*a.n8):new Uint8Array(i*a.n8);let n=new nl(o,this.curve,this.logger);n.coef.set(this.coef.slice(0,32*(this.degree()+1)),32*t),this.mulScalar(e),n.add(this),this.coef=n.coef}divBy(t){const e=this.Fr,a=this.degree(),i=t.degree();let o=new nl(this.coef,this.curve,this.logger);this.coef=this.length()>32768?new Se(this.length()*e.n8):new Uint8Array(this.length()*e.n8);for(let n=a-i;n>=0;n--){this.setCoef(n,e.div(o.getCoef(n+i),t.getCoef(i)));for(let a=0;a<=i;a++)o.setCoef(n+a,e.sub(o.getCoef(n+a),e.mul(this.getCoef(n),t.getCoef(a))))}return o}divByMonic(t,e){const a=this.Fr;let i=this.degree(),o=this.length()>32768?new Se(this.length()*a.n8):new Uint8Array(this.length()*a.n8),n=new nl(o,this.curve,this.logger),l=[];for(let e=0;e=0&&!(s<0);s-=r){let i=o;l[i]=a.add(this.getCoef(s+t),a.mul(l[i],e)),n.setCoef(s,l[i])}this.coef=n.coef}divByVanishing(t,e){if(this.degree()32768?new Se(this.length()*a.n8):new Uint8Array(this.length()*a.n8);for(let o=this.length()-1;o>=t;o--){let n=i.getCoef(o);a.eq(a.zero,n)||(i.setCoef(o,a.zero),i.setCoef(o-t,a.add(i.getCoef(o-t),a.mul(e,n))),this.setCoef(o-t,a.add(this.getCoef(o-t),n)))}return i}divByVanishing2(t,e){if(this.degree()32768?new Se(this.length()*a.n8):new Uint8Array(this.length()*a.n8);let o=this.length()-t,n=Math.floor(o/3),l=o-2*n;console.log(o),console.log(n+" "+l);for(let o=0;o<3;o++){console.log("> Thread "+o);for(let r=0===o?l:n;r>0;r--){let s=r-1;0!==o&&(s+=(o-1)*n+l);let c=s+t,d=i.getCoef(c);a.eq(a.zero,d)||(i.setCoef(c,a.zero),i.setCoef(s,a.add(i.getCoef(s),a.mul(e,d))),this.setCoef(s,a.add(this.getCoef(s),d)),console.log(s+" <-- "+c))}}return this.print(),i}fastDivByVanishing(t){const e=this.Fr;for(let a=0;a32768?new Se(this.length()*e.n8):new Uint8Array(this.length()*e.n8),this.curve,this.logger),u=this.coef;this.coef=d.coef,d.coef=u;for(let t=0;t0;t--){let a=t-1,o=a*s+c;h[a]=[];for(let l=0;l32768?new Se(this.length()*this.Fr.n8):new Uint8Array(this.length()*this.Fr.n8);e.set(this.Fr.zero,(this.length()-1)*this.Fr.n8),e.set(this.coef.slice((this.length()-1)*this.Fr.n8,this.length()*this.Fr.n8),(this.length()-2)*this.Fr.n8);for(let a=this.length()-3;a>=0;a--){let i=a*this.Fr.n8;e.set(this.Fr.add(this.coef.slice(i+this.Fr.n8,i+2*this.Fr.n8),this.Fr.mul(t,e.slice(i+this.Fr.n8,i+2*this.Fr.n8))),a*this.Fr.n8)}if(!this.Fr.eq(this.coef.slice(0,this.Fr.n8),this.Fr.mul(this.Fr.neg(t),e.slice(0,this.Fr.n8))))throw new Error("Polynomial does not divide");this.coef=e}divZh(t,e=4){for(let e=0;et*(e-1)-e&&!this.Fr.isZero(o))throw new Error("Polynomial is not divisible")}return this}divByZerofier(t,e){let a=this.Fr;const i=a.inv(e),o=a.neg(i);let n=a.eq(a.one,o),l=a.eq(a.negone,o);if(!n)for(let e=0;ethis.length()-t-1&&!this.Fr.isZero(s))throw new Error("Polynomial is not divisible")}return this}byX(){const t=this.length()+1>32768?new Se(this.coef.byteLength+this.Fr.n8):new Uint8Array(this.coef.byteLength+this.Fr.n8);t.set(this.Fr.zero,0),t.set(this.coef,this.Fr.n8),this.coef=t}static async expX(t,e,a=!1){const i=t.Fr;if(e<1)throw new Error("Compute a new polynomial to a zero or negative number is not allowed");if(1===e)return await nl.fromEvaluations(t.coef,curve,t.logger);const o=a?t.degree():t.length()-1,n=o*e+1>32768?new Se((o*e+1)*i.n8):new Uint8Array((o*e+1)*i.n8);n.set(t.getCoef(0),0);for(let a=1;a<=o;a++){const o=a*i.n8,l=t.getCoef(a);n.set(l,o*e)}return new nl(n,t.curve,t.logger)}split(t,e,a){if(t<1)throw new Error(`Polynomials can't be split in ${t} parts`);if(1===t)return[this];if(0!==a.length&&a.length32768?new Se(l):new Uint8Array(l);o[e]=new nl(r,this.curve,this.logger);const s=e*i,c=n?this.coef.byteLength:(e+1)*i;if(o[e].coef.set(this.coef.slice(s,c),0),n||o[e].coef.set(a[e],i),0!==e){const t=this.Fr.sub(o[e].coef.slice(0,this.Fr.n8),a[e-1]);o[e].coef.set(t,0)}n&&o[e].truncate()}return o}truncate(){const t=this.degree();if(t+132768?new Se((t+1)*this.Fr.n8):new Uint8Array((t+1)*this.Fr.n8);e.set(this.coef.slice(0,(t+1)*this.Fr.n8),0),this.coef=e}}static lagrangePolynomialInterpolation(t,e,a){const i=a.Fr;let o=n(0);for(let e=1;e32768?new Se(t.length*i.n8):new Uint8Array(t.length*i.n8);n=new nl(o,a),n.setCoef(0,i.neg(t[e])),n.setCoef(1,i.one)}else n.byXSubValue(t[e]);let l=n.evaluate(t[o]);l=i.inv(l);const r=i.mul(e[o],l);return n.mulScalar(r),n}}static zerofierPolynomial(t,e){const a=e.Fr;let i=t.length+1>32768?new Se((t.length+1)*a.n8):new Uint8Array((t.length+1)*a.n8),o=new nl(i,e);o.setCoef(0,a.neg(t[0])),o.setCoef(1,a.one);for(let e=1;e=0;a--){const i=this.getCoef(a);t.eq(t.zero,i)||(t.isNegative(i)?e+=" - ":a!==this.degree()&&(e+=" + "),e+=t.toString(i),a>0&&(e+=a>1?"x^"+a:"x"))}console.log(e)}async multiExponentiation(t,e){const a=this.coef.byteLength/this.Fr.n8,i=t.slice(0,a*this.G1.F.n8*2),o=await this.Fr.batchFromMontgomery(this.coef);let n=await this.G1.multiExpAffine(i,o,this.logger,e);return n=this.G1.toAffine(n),n}}class ll{constructor(t,e,a){this.eval=t,this.curve=e,this.Fr=e.Fr,this.logger=a}static async fromPolynomial(t,e,a,i){const o=new Se(t.length()*e*a.Fr.n8);o.set(t.coef,0);const n=await a.Fr.fft(o);return new ll(n,a,i)}getEvaluation(t){const e=t*this.Fr.n8;if(e+this.Fr.n8>this.eval.byteLength)throw new Error("Evaluations.getEvaluation() out of bounds");return this.eval.slice(e,e+this.Fr.n8)}length(){let t=this.eval.byteLength/this.Fr.n8;if(t!==Math.floor(this.eval.byteLength/this.Fr.n8))throw new Error("Polynomial evaluations buffer has incorrect size");return 0===t&&this.logger.warn("Polynomial has length zero"),t}}const{stringifyBigInts:rl}=fa;async function sl(t,e,a){const{fd:i,sections:o}=await za(e,"wtns",2);a&&a.debug("> Reading witness file");const n=await vo(i,o);a&&a.debug("> Reading zkey file");const{fd:l,sections:r}=await za(t,"zkey",2),s=await yo(l,r);if("plonk"!=s.protocol)throw new Error("zkey file is not plonk");if(!ga.eq(s.r,n.q))throw new Error("Curve of the witness does not match the curve of the proving key");if(n.nWitness!=s.nVars-s.nAdditions)throw new Error(`Invalid witness length. Circuit: ${s.nVars}, witness: ${n.nWitness}, ${s.nAdditions}`);const c=s.curve,d=c.Fr,u=c.Fr.n8,g=s.domainSize*u;a&&(a.debug("----------------------------"),a.debug(" PLONK PROVE SETTINGS"),a.debug(` Curve: ${c.name}`),a.debug(` Circuit power: ${s.power}`),a.debug(` Domain size: ${s.domainSize}`),a.debug(` Vars: ${s.nVars}`),a.debug(` Public vars: ${s.nPublic}`),a.debug(` Constraints: ${s.nConstraints}`),a.debug(` Additions: ${s.nAdditions}`),a.debug("----------------------------")),a&&a.debug("> Reading witness file data");const f=await Va(i,o,2);f.set(d.zero,0);const h=new Se(u*s.nAdditions);let _={},p={},m={},w={},L=new kn(c,a);const b=new Vn(c);a&&a.debug(`> Reading Section ${jn}. Additions`),await async function(){a&&a.debug("··· Computing additions");const t=await Va(l,r,jn),e=8+2*u;for(let i=0;i Reading Section ${al}. Sigma1, Sigma2 & Sigma 3`),a&&a.debug("··· Reading Sigma polynomials "),p.Sigma1=new nl(new Se(g),c,a),p.Sigma2=new nl(new Se(g),c,a),p.Sigma3=new nl(new Se(g),c,a),await l.readToBuffer(p.Sigma1.coef,0,g,r[al][0].p),await l.readToBuffer(p.Sigma2.coef,0,g,r[al][0].p+5*g),await l.readToBuffer(p.Sigma3.coef,0,g,r[al][0].p+10*g),a&&a.debug("··· Reading Sigma evaluations"),m.Sigma1=new ll(new Se(4*g),c,a),m.Sigma2=new ll(new Se(4*g),c,a),m.Sigma3=new ll(new Se(4*g),c,a),await l.readToBuffer(m.Sigma1.eval,0,4*g,r[al][0].p+g),await l.readToBuffer(m.Sigma2.eval,0,4*g,r[al][0].p+6*g),await l.readToBuffer(m.Sigma3.eval,0,4*g,r[al][0].p+11*g),a&&a.debug(`> Reading Section ${ol}. Powers of Tau`);const y=await Va(l,r,ol);let A=[];for(let t=1;t<=s.nPublic;t++){const e=f.slice(t*d.n8,t*d.n8+d.n8);A.push(ga.fromRprLE(e))}a&&a.debug(""),a&&a.debug("> ROUND 1"),await async function(){w.b=[];for(let t=1;t<=11;t++)w.b[t]=c.Fr.random();a&&a.debug("> Computing A, B, C wire polynomials");await async function(){a&&a.debug("··· Reading data from zkey file");_.A=new Se(g),_.B=new Se(g),_.C=new Se(g);const t=await Va(l,r,Hn),e=await Va(l,r,Zn),i=await Va(l,r,Wn);for(let a=0;a=s.domainSize+2)throw new Error("A Polynomial is not well calculated");if(p.B.degree()>=s.domainSize+2)throw new Error("B Polynomial is not well calculated");if(p.C.degree()>=s.domainSize+2)throw new Error("C Polynomial is not well calculated")}(),a&&a.debug("> Computing A, B, C MSM");let t=await p.A.multiExponentiation(y,"A"),e=await p.B.multiExponentiation(y,"B"),i=await p.C.multiExponentiation(y,"C");return L.addPolynomial("A",t),L.addPolynomial("B",e),L.addPolynomial("C",i),0}(),a&&a.debug("> ROUND 2"),await async function(){a&&a.debug("> Computing challenges beta and gamma");b.reset(),b.addPolCommitment(s.Qm),b.addPolCommitment(s.Ql),b.addPolCommitment(s.Qr),b.addPolCommitment(s.Qo),b.addPolCommitment(s.Qc),b.addPolCommitment(s.S1),b.addPolCommitment(s.S2),b.addPolCommitment(s.S3);for(let t=0;t Computing Z polynomial");await async function(){a&&a.debug("··· Computing Z evaluations");let t=new Se(g),e=new Se(g);t.set(d.one,0),e.set(d.one,0);let i=d.one;for(let a=0;a=s.domainSize+3)throw new Error("Z Polynomial is not well calculated");delete _.Z}(),a&&a.debug("> Computing Z MSM");let t=await p.Z.multiExponentiation(y,"Z");L.addPolynomial("Z",t)}(),a&&a.debug("> ROUND 3"),await async function(){a&&a.debug("> Computing challenge alpha");b.reset(),b.addScalar(w.beta),b.addScalar(w.gamma),b.addPolCommitment(L.getPolynomial("Z")),w.alpha=b.getChallenge(),w.alpha2=d.square(w.alpha),a&&a.debug("··· challenges.alpha: "+d.toString(w.alpha,16));a&&a.debug("> Computing T polynomial");await async function(){a&&a.debug(`··· Reading sections ${Jn}, ${Xn}, ${Yn}, ${tl}, ${el}. Q selectors`);m.QL=new ll(new Se(4*g),c,a),m.QR=new ll(new Se(4*g),c,a),m.QM=new ll(new Se(4*g),c,a),m.QO=new ll(new Se(4*g),c,a),m.QC=new ll(new Se(4*g),c,a),await l.readToBuffer(m.QL.eval,0,4*g,r[Jn][0].p+g),await l.readToBuffer(m.QR.eval,0,4*g,r[Xn][0].p+g),await l.readToBuffer(m.QM.eval,0,4*g,r[Yn][0].p+g),await l.readToBuffer(m.QO.eval,0,4*g,r[tl][0].p+g),await l.readToBuffer(m.QC.eval,0,4*g,r[el][0].p+g),m.Lagrange=new ll(new Se(4*g*s.nPublic),c,a);for(let t=0;t=3*s.domainSize+6)throw new Error("T Polynomial is not well calculated");a&&a.debug("··· Computing T1, T2, T3 polynomials");p.T1=new nl(new Se((s.domainSize+1)*u),c,a),p.T2=new nl(new Se((s.domainSize+1)*u),c,a),p.T3=new nl(new Se((s.domainSize+6)*u),c,a),p.T1.coef.set(p.T.coef.slice(0,g),0),p.T2.coef.set(p.T.coef.slice(g,2*g),0),p.T3.coef.set(p.T.coef.slice(2*g,3*g+6*u),0),p.T1.setCoef(s.domainSize,w.b[10]);const e=d.sub(p.T2.getCoef(0),w.b[10]);p.T2.setCoef(0,e),p.T2.setCoef(s.domainSize,w.b[11]);const i=d.sub(p.T3.getCoef(0),w.b[11]);p.T3.setCoef(0,i)}(),a&&a.debug("> Computing T MSM");let t=await p.T1.multiExponentiation(y,"T1"),e=await p.T2.multiExponentiation(y,"T2"),i=await p.T3.multiExponentiation(y,"T3");L.addPolynomial("T1",t),L.addPolynomial("T2",e),L.addPolynomial("T3",i)}(),a&&a.debug("> ROUND 4"),await async function(){a&&a.debug("> Computing challenge xi");b.reset(),b.addScalar(w.alpha),b.addPolCommitment(L.getPolynomial("T1")),b.addPolCommitment(L.getPolynomial("T2")),b.addPolCommitment(L.getPolynomial("T3")),w.xi=b.getChallenge(),w.xiw=d.mul(w.xi,d.w[s.power]),a&&a.debug("··· challenges.xi: "+d.toString(w.xi,16));L.addEvaluation("eval_a",p.A.evaluate(w.xi)),L.addEvaluation("eval_b",p.B.evaluate(w.xi)),L.addEvaluation("eval_c",p.C.evaluate(w.xi)),L.addEvaluation("eval_s1",p.Sigma1.evaluate(w.xi)),L.addEvaluation("eval_s2",p.Sigma2.evaluate(w.xi)),L.addEvaluation("eval_zw",p.Z.evaluate(w.xiw))}(),a&&a.debug("> ROUND 5"),await async function(){a&&a.debug("> Computing challenge v");b.reset(),b.addScalar(w.xi),b.addScalar(L.getEvaluation("eval_a")),b.addScalar(L.getEvaluation("eval_b")),b.addScalar(L.getEvaluation("eval_c")),b.addScalar(L.getEvaluation("eval_s1")),b.addScalar(L.getEvaluation("eval_s2")),b.addScalar(L.getEvaluation("eval_zw")),w.v=[],w.v[1]=b.getChallenge(),a&&a.debug("··· challenges.v: "+d.toString(w.v[1],16));for(let t=2;t<6;t++)w.v[t]=d.mul(w.v[t-1],w.v[1]);a&&a.debug("> Computing linearisation polynomial R(X)");await async function(){const t=c.Fr;p.QL=new nl(new Se(g),c,a),p.QR=new nl(new Se(g),c,a),p.QM=new nl(new Se(g),c,a),p.QO=new nl(new Se(g),c,a),p.QC=new nl(new Se(g),c,a),await l.readToBuffer(p.QL.coef,0,g,r[Jn][0].p),await l.readToBuffer(p.QR.coef,0,g,r[Xn][0].p),await l.readToBuffer(p.QM.coef,0,g,r[Yn][0].p),await l.readToBuffer(p.QO.coef,0,g,r[tl][0].p),await l.readToBuffer(p.QC.coef,0,g,r[el][0].p),w.xin=w.xi;for(let e=0;e Computing opening proof polynomial Wxi(X) polynomial");p.Wxi=new nl(new Se(g+6*u),c,a),p.Wxi.add(p.R),p.Wxi.add(p.A,w.v[1]),p.Wxi.add(p.B,w.v[2]),p.Wxi.add(p.C,w.v[3]),p.Wxi.add(p.Sigma1,w.v[4]),p.Wxi.add(p.Sigma2,w.v[5]),p.Wxi.subScalar(d.mul(w.v[1],L.evaluations.eval_a)),p.Wxi.subScalar(d.mul(w.v[2],L.evaluations.eval_b)),p.Wxi.subScalar(d.mul(w.v[3],L.evaluations.eval_c)),p.Wxi.subScalar(d.mul(w.v[4],L.evaluations.eval_s1)),p.Wxi.subScalar(d.mul(w.v[5],L.evaluations.eval_s2)),void p.Wxi.divByZerofier(1,w.xi),a&&a.debug("> Computing opening proof polynomial Wxiw(X) polynomial");(async function(){p.Wxiw=nl.fromPolynomial(p.Z,c,a),p.Wxiw.subScalar(L.evaluations.eval_zw),p.Wxiw.divByZerofier(1,w.xiw)})(),a&&a.debug("> Computing Wxi, Wxiw MSM");let t=await p.Wxi.multiExponentiation(y,"Wxi"),e=await p.Wxiw.multiExponentiation(y,"Wxiw");L.addPolynomial("Wxi",t),L.addPolynomial("Wxiw",e)}(),await l.close(),await i.close();let C=L.toObjectProof(!1);return C.protocol="plonk",C.curve=c.name,a&&a.debug("PLONK PROVER FINISHED"),{proof:rl(C),publicSignals:rl(A)};function I(t,e){const a=t.slice(e,e+4);return new DataView(a.buffer,a.byteOffset,a.byteLength).getUint32(0,!0)}function F(t){return ta;){const e=o.shift(),a=o.shift(),i=e[0],n=a[0],l=w++,r=t.zero,s=t.neg(e[1]),c=t.neg(a[1]),d=t.one,u=t.zero;p.push([i,n,l,r,s,c,d,u]),m.push([i,n,e[1],a[1]]),o.push([l,t.one])}for(let t=0;t0?i.toString():a!=t.zero?"k":"0"}function s(e,a,s){const c=r(e),d=r(a);if("0"===c||"0"===d)i(s),l(s);else if("k"===c){l(o(a,e[0],s))}else if("k"===d){l(o(e,a[0],s))}else!function(e,a,i){const o=n(e,1),l=n(a,1),r=n(i,1),s=o.s[0],c=l.s[0],d=r.s[0],u=t.mul(o.coefs[0],l.coefs[0]),g=t.mul(o.coefs[0],l.k),f=t.mul(o.k,l.coefs[0]),h=t.neg(r.coefs[0]),_=t.sub(t.mul(o.k,l.k),r.k);p.push([s,c,d,u,g,f,h,_])}(e,a,s)}for(let e=1;e<=L;e++){const a=e,i=0,o=0,n=t.zero,l=t.one,r=t.zero,s=t.zero,c=t.zero;p.push([a,i,o,n,l,r,s,c])}for(let t=0;tr)return i&&i.error(`circuit too big for this power of tau ceremony. ${p.length} > 2**${r}`),-1;if(!n[12])return i&&i.error("Powers of tau is not prepared."),-1;const C=new Se(A*u),I=n[12][0].p+(2**y-1)*u;await o.readToBuffer(C,0,A*u,I);const[F,x]=function(){let t=h.two;for(;a(t,[],y);)h.add(t,h.one);let e=h.add(t,h.one);for(;a(e,[t],y);)h.add(e,h.one);return[t,e];function a(t,e,a){const i=2**a;let o=h.one;for(let n=0;n0?2:this.Fr.isZero(e)?0:1}normalizeLinearCombination(t){const e=Object.keys(t);for(let a=0;ao;){const i=l.shift(),o=l.shift(),n=t.nVars++,r=this.fnGetAdditionConstraint(i[0],o[0],n,this.Fr.neg(i[1]),this.Fr.neg(o[1]),this.Fr.zero,this.Fr.one,this.Fr.zero);e.push(r),a.push([i[0],o[0],i[1],o[1]]),l.push([n,this.Fr.one])}for(let t=0;tthis.n-1)throw new Error("CPolynomial:addPolynomial, cannot add a polynomial to a position greater than n-1");this.polynomials[t]=e}degree(){let t=this.polynomials.map(((t,e)=>void 0===t?0:t.degree()*this.n+e));return Math.max(...t)}getPolynomial(){let t=this.polynomials.map((t=>void 0===t?0:t.degree()));const e=this.degree(),a=2**(Qi(e-1)+1),i=this.Fr.n8;let o=new nl(new Se(a*i),this.curve,this.logger);for(let a=0;a Reading witness file");const{fd:i,sections:o}=await za(e,"wtns",2),n=await vo(i,o);a&&a.info("> Reading zkey file");const{fd:l,sections:r}=await za(t,"zkey",2),s=await yo(l,r);if(s.protocolId!==Ji)throw new Error("zkey file is not fflonk");if(!ga.eq(s.r,n.q))throw new Error("Curve of the witness does not match the curve of the proving key");if(n.nWitness!==s.nVars-s.nAdditions)throw new Error(`Invalid witness length. Circuit: ${s.nVars}, witness: ${n.nWitness}, ${s.nAdditions}`);const c=s.curve,d=c.Fr,u=c.Fr.n8,g=2*c.G1.F.n8,f=s.domainSize*u;a&&(a.info("----------------------------"),a.info(" FFLONK PROVE SETTINGS"),a.info(` Curve: ${c.name}`),a.info(` Circuit power: ${s.power}`),a.info(` Domain size: ${s.domainSize}`),a.info(` Vars: ${s.nVars}`),a.info(` Public vars: ${s.nPublic}`),a.info(` Constraints: ${s.nConstraints}`),a.info(` Additions: ${s.nAdditions}`),a.info("----------------------------")),a&&a.info("> Reading witness file data");const h=await Va(i,o,2);await i.close(),h.set(d.zero,0);const _=new Se(s.nAdditions*u);let p={},m={},w={},L={},b={},y={},A=new kn(c,a);a&&a.info(`> Reading Section ${to}. Additions`),await async function(){a&&a.info("··· Computing additions");const t=await Va(l,r,to),e=8+2*u;for(let i=0;i Reading Sections ${co},${uo},${go}. Sigma1, Sigma2 & Sigma 3`),a&&a.info("··· Reading Sigma polynomials "),m.Sigma1=new nl(new Se(f),c,a),m.Sigma2=new nl(new Se(f),c,a),m.Sigma3=new nl(new Se(f),c,a),await l.readToBuffer(m.Sigma1.coef,0,f,r[co][0].p),await l.readToBuffer(m.Sigma2.coef,0,f,r[uo][0].p),await l.readToBuffer(m.Sigma3.coef,0,f,r[go][0].p),a&&a.info("··· Reading Sigma evaluations"),w.Sigma1=new ll(new Se(4*f),c,a),w.Sigma2=new ll(new Se(4*f),c,a),w.Sigma3=new ll(new Se(4*f),c,a),await l.readToBuffer(w.Sigma1.eval,0,4*f,r[co][0].p+f),await l.readToBuffer(w.Sigma2.eval,0,4*f,r[uo][0].p+f),await l.readToBuffer(w.Sigma3.eval,0,4*f,r[go][0].p+f),a&&a.info(`> Reading Section ${ho}. Powers of Tau`);const C=new Se(16*s.domainSize*g);await l.readToBuffer(C,0,(9*s.domainSize+18)*g,r[ho][0].p),globalThis.gc&&globalThis.gc(),a&&a.info(""),a&&a.info("> ROUND 1"),await async function(){b.b=[];for(let t=1;t<=9;t++)b.b[t]=d.random();a&&a.info("> Computing A, B, C wire polynomials");await async function(){a&&a.info("··· Reading data from zkey file");p.A=new Se(f),p.B=new Se(f),p.C=new Se(f);const t=await Va(l,r,eo),e=await Va(l,r,ao),i=await Va(l,r,io);for(let a=0;a=s.domainSize)throw new Error("A Polynomial is not well calculated");if(m.B.degree()>=s.domainSize)throw new Error("B Polynomial is not well calculated");if(m.C.degree()>=s.domainSize)throw new Error("C Polynomial is not well calculated")}(),a&&a.info("> Computing T0 polynomial");await async function(){a&&a.info(`··· Reading sections ${oo}, ${no}, ${lo}, ${ro}, ${so}. Q selectors`);w.QL=new ll(new Se(4*f),c,a),w.QR=new ll(new Se(4*f),c,a),w.QM=new ll(new Se(4*f),c,a),w.QO=new ll(new Se(4*f),c,a),w.QC=new ll(new Se(4*f),c,a),await l.readToBuffer(w.QL.eval,0,4*f,r[oo][0].p+f),await l.readToBuffer(w.QR.eval,0,4*f,r[no][0].p+f),await l.readToBuffer(w.QM.eval,0,4*f,r[lo][0].p+f),await l.readToBuffer(w.QO.eval,0,4*f,r[ro][0].p+f),await l.readToBuffer(w.QC.eval,0,4*f,r[so][0].p+f);const t=await Va(l,r,fo);w.lagrange1=new ll(t,c,a),p.T0=new Se(4*f),a&&a.info("··· Computing T0 evaluations");for(let t=0;t<4*s.domainSize;t++){a&&0!==t&&t%1e5==0&&a.info(` T0 evaluation ${t}/${4*s.domainSize}`);const e=w.A.getEvaluation(t),i=w.B.getEvaluation(t),o=w.C.getEvaluation(t),n=w.QL.getEvaluation(t),l=w.QR.getEvaluation(t),r=w.QM.getEvaluation(t),c=w.QO.getEvaluation(t),g=w.QC.getEvaluation(t);let f=d.zero;for(let e=0;e=2*s.domainSize-2)throw new Error(`T0 Polynomial is not well calculated (degree is ${m.T0.degree()} and must be less than ${2*s.domainSize+2}`);delete p.T0}(),a&&a.info("> Computing C1 polynomial");await async function(){let t=new wl(4,c,a);if(t.addPolynomial(0,m.A),t.addPolynomial(1,m.B),t.addPolynomial(2,m.C),t.addPolynomial(3,m.T0),m.C1=t.getPolynomial(),m.C1.degree()>=8*s.domainSize-8)throw new Error("C1 Polynomial is not well calculated")}(),a&&a.info("> Computing C1 multi exponentiation");let t=await m.C1.multiExponentiation(C,"C1");return A.addPolynomial("C1",t),0}(),delete m.T0,delete w.QL,delete w.QR,delete w.QM,delete w.QO,delete w.QC,globalThis.gc&&globalThis.gc(),a&&a.info("> ROUND 2"),await async function(){a&&a.info("> Computing challenges beta and gamma");const t=new Vn(c);t.addPolCommitment(s.C0);for(let e=0;e Computing Z polynomial");await async function(){a&&a.info("··· Computing Z evaluations");let t=new Se(f),e=new Se(f);t.set(d.one,0),e.set(d.one,0);let i=d.one;for(let o=0;o=s.domainSize+3)throw new Error("Z Polynomial is not well calculated");delete p.Z}(),a&&a.info("> Computing T1 polynomial");await async function(){a&&a.info("··· Computing T1 evaluations");p.T1=new Se(2*f),p.T1z=new Se(2*f);let t=d.one;for(let e=0;e<2*s.domainSize;e++){a&&0!==e&&e%1e5==0&&a.info(` T1 evaluation ${e}/${4*s.domainSize}`);const i=d.square(t),o=w.Z.getEvaluation(2*e),n=d.add(d.add(d.mul(b.b[7],i),d.mul(b.b[8],t)),b.b[9]),l=w.lagrange1.getEvaluation(s.domainSize+2*e);let r=d.mul(d.sub(o,d.one),l),c=d.mul(n,l);p.T1.set(r,e*u),p.T1z.set(c,e*u),t=d.mul(t,d.w[s.power+1])}a&&a.info("··· Computing T1 ifft");m.T1=await nl.fromEvaluations(p.T1,c,a),m.T1.divByZerofier(s.domainSize,d.one),a&&a.info("··· Computing T1z ifft");if(m.T1z=await nl.fromEvaluations(p.T1z,c,a),m.T1.add(m.T1z),m.T1.degree()>=s.domainSize+2)throw new Error("T1 Polynomial is not well calculated");delete p.T1,delete p.T1z,delete m.T1z}(),a&&a.info("> Computing T2 polynomial");await async function(){a&&a.info("··· Computing T2 evaluations");p.T2=new Se(4*f),p.T2z=new Se(4*f);let t=d.one;for(let e=0;e<4*s.domainSize;e++){a&&0!==e&&e%1e5==0&&a.info(` T2 evaluation ${e}/${4*s.domainSize}`);const i=d.square(t),o=d.mul(t,d.w[s.power]),n=d.square(o),l=w.A.getEvaluation(e),r=w.B.getEvaluation(e),c=w.C.getEvaluation(e),g=w.Z.getEvaluation(e),f=w.Z.getEvaluation((4*s.domainSize+4+e)%(4*s.domainSize)),h=d.add(d.add(d.mul(b.b[7],i),d.mul(b.b[8],t)),b.b[9]),_=d.add(d.add(d.mul(b.b[7],n),d.mul(b.b[8],o)),b.b[9]),m=w.Sigma1.getEvaluation(e),L=w.Sigma2.getEvaluation(e),y=w.Sigma3.getEvaluation(e),A=d.mul(b.beta,t);let C=d.add(l,A);C=d.add(C,b.gamma);let I=d.add(r,d.mul(A,s.k1));I=d.add(I,b.gamma);let F=d.add(c,d.mul(A,s.k2));F=d.add(F,b.gamma);let x=d.mul(d.mul(d.mul(C,I),F),g),E=d.mul(d.mul(d.mul(C,I),F),h),v=d.add(l,d.mul(b.beta,m));v=d.add(v,b.gamma);let B=d.add(r,d.mul(b.beta,L));B=d.add(B,b.gamma);let S=d.add(c,d.mul(b.beta,y));S=d.add(S,b.gamma);let P=d.mul(d.mul(d.mul(v,B),S),f),G=d.mul(d.mul(d.mul(v,B),S),_),O=d.sub(x,P),T=d.sub(E,G);p.T2.set(O,e*u),p.T2z.set(T,e*u),t=d.mul(t,d.w[s.power+2])}a&&a.info("··· Computing T2 ifft");m.T2=await nl.fromEvaluations(p.T2,c,a),a&&a.info("··· Computing T2 / ZH");m.T2.divByZerofier(s.domainSize,d.one),a&&a.info("··· Computing T2z ifft");if(m.T2z=await nl.fromEvaluations(p.T2z,c,a),m.T2.add(m.T2z),m.T2.degree()>=3*s.domainSize)throw new Error("T2 Polynomial is not well calculated");delete p.T2,delete p.T2z,delete m.T2z}(),a&&a.info("> Computing C2 polynomial");await async function(){let t=new wl(3,c,a);if(t.addPolynomial(0,m.Z),t.addPolynomial(1,m.T1),t.addPolynomial(2,m.T2),m.C2=t.getPolynomial(),m.C2.degree()>=9*s.domainSize)throw new Error("C2 Polynomial is not well calculated")}(),a&&a.info("> Computing C2 multi exponentiation");let e=await m.C2.multiExponentiation(C,"C2");return A.addPolynomial("C2",e),0}(),delete p.A,delete p.B,delete p.C,delete w.A,delete w.B,delete w.C,delete w.Sigma1,delete w.Sigma2,delete w.Sigma3,delete w.lagrange1,delete w.Z,globalThis.gc&&globalThis.gc(),a&&a.info("> ROUND 3"),await async function(){a&&a.info("> Computing challenge xi");const t=new Vn(c);t.addScalar(b.gamma),t.addPolCommitment(A.getPolynomial("C2")),b.xiSeed=t.getChallenge();const e=d.square(b.xiSeed);y.w8=[],y.w8[0]=d.one;for(let t=1;t<8;t++)y.w8[t]=d.mul(y.w8[t-1],s.w8);y.w4=[],y.w4[0]=d.one;for(let t=1;t<4;t++)y.w4[t]=d.mul(y.w4[t-1],s.w4);y.w3=[],y.w3[0]=d.one,y.w3[1]=s.w3,y.w3[2]=d.square(s.w3),y.S0={},y.S0.h0w8=[],y.S0.h0w8[0]=d.mul(e,b.xiSeed);for(let t=1;t<8;t++)y.S0.h0w8[t]=d.mul(y.S0.h0w8[0],y.w8[t]);y.S1={},y.S1.h1w4=[],y.S1.h1w4[0]=d.square(y.S0.h0w8[0]);for(let t=1;t<4;t++)y.S1.h1w4[t]=d.mul(y.S1.h1w4[0],y.w4[t]);y.S2={},y.S2.h2w3=[],y.S2.h2w3[0]=d.mul(y.S1.h1w4[0],e),y.S2.h2w3[1]=d.mul(y.S2.h2w3[0],y.w3[1]),y.S2.h2w3[2]=d.mul(y.S2.h2w3[0],y.w3[2]),y.S2.h3w3=[],y.S2.h3w3[0]=d.mul(y.S2.h2w3[0],s.wr),y.S2.h3w3[1]=d.mul(y.S2.h3w3[0],y.w3[1]),y.S2.h3w3[2]=d.mul(y.S2.h3w3[0],y.w3[2]),b.xi=d.mul(d.square(y.S2.h2w3[0]),y.S2.h2w3[0]),a&&a.info("··· challenges.xi: "+d.toString(b.xi));m.QL=new nl(new Se(f),c,a),m.QR=new nl(new Se(f),c,a),m.QM=new nl(new Se(f),c,a),m.QO=new nl(new Se(f),c,a),m.QC=new nl(new Se(f),c,a),await l.readToBuffer(m.QL.coef,0,f,r[oo][0].p),await l.readToBuffer(m.QR.coef,0,f,r[no][0].p),await l.readToBuffer(m.QM.coef,0,f,r[lo][0].p),await l.readToBuffer(m.QO.coef,0,f,r[ro][0].p),await l.readToBuffer(m.QC.coef,0,f,r[so][0].p),a&&a.info("··· Computing evaluations");A.addEvaluation("ql",m.QL.evaluate(b.xi)),A.addEvaluation("qr",m.QR.evaluate(b.xi)),A.addEvaluation("qm",m.QM.evaluate(b.xi)),A.addEvaluation("qo",m.QO.evaluate(b.xi)),A.addEvaluation("qc",m.QC.evaluate(b.xi)),A.addEvaluation("s1",m.Sigma1.evaluate(b.xi)),A.addEvaluation("s2",m.Sigma2.evaluate(b.xi)),A.addEvaluation("s3",m.Sigma3.evaluate(b.xi)),A.addEvaluation("a",m.A.evaluate(b.xi)),A.addEvaluation("b",m.B.evaluate(b.xi)),A.addEvaluation("c",m.C.evaluate(b.xi)),A.addEvaluation("z",m.Z.evaluate(b.xi)),b.xiw=d.mul(b.xi,d.w[s.power]),A.addEvaluation("zw",m.Z.evaluate(b.xiw)),A.addEvaluation("t1w",m.T1.evaluate(b.xiw)),A.addEvaluation("t2w",m.T2.evaluate(b.xiw))}(),delete m.A,delete m.B,delete m.C,delete m.Z,delete m.T1,delete m.T2,delete m.Sigma1,delete m.Sigma2,delete m.Sigma3,delete m.QL,delete m.QR,delete m.QM,delete m.QC,delete m.QO,globalThis.gc&&globalThis.gc(),a&&a.info("> ROUND 4"),await async function(){a&&a.info("> Computing challenge alpha");const t=new Vn(c);t.addScalar(b.xiSeed),t.addScalar(A.getEvaluation("ql")),t.addScalar(A.getEvaluation("qr")),t.addScalar(A.getEvaluation("qm")),t.addScalar(A.getEvaluation("qo")),t.addScalar(A.getEvaluation("qc")),t.addScalar(A.getEvaluation("s1")),t.addScalar(A.getEvaluation("s2")),t.addScalar(A.getEvaluation("s3")),t.addScalar(A.getEvaluation("a")),t.addScalar(A.getEvaluation("b")),t.addScalar(A.getEvaluation("c")),t.addScalar(A.getEvaluation("z")),t.addScalar(A.getEvaluation("zw")),t.addScalar(A.getEvaluation("t1w")),t.addScalar(A.getEvaluation("t2w")),b.alpha=t.getChallenge(),a&&a.info("··· challenges.alpha: "+d.toString(b.alpha));a&&a.info("> Reading C0 polynomial");m.C0=new nl(new Se(8*f),c,a),await l.readToBuffer(m.C0.coef,0,8*f,r[_o][0].p),a&&a.info("> Computing R0 polynomial");(function(){if(m.R0=nl.lagrangePolynomialInterpolation([y.S0.h0w8[0],y.S0.h0w8[1],y.S0.h0w8[2],y.S0.h0w8[3],y.S0.h0w8[4],y.S0.h0w8[5],y.S0.h0w8[6],y.S0.h0w8[7]],[m.C0.evaluate(y.S0.h0w8[0]),m.C0.evaluate(y.S0.h0w8[1]),m.C0.evaluate(y.S0.h0w8[2]),m.C0.evaluate(y.S0.h0w8[3]),m.C0.evaluate(y.S0.h0w8[4]),m.C0.evaluate(y.S0.h0w8[5]),m.C0.evaluate(y.S0.h0w8[6]),m.C0.evaluate(y.S0.h0w8[7])],c),m.R0.degree()>7)throw new Error("R0 Polynomial is not well calculated")})(),a&&a.info("> Computing R1 polynomial");(function(){if(m.R1=nl.lagrangePolynomialInterpolation([y.S1.h1w4[0],y.S1.h1w4[1],y.S1.h1w4[2],y.S1.h1w4[3]],[m.C1.evaluate(y.S1.h1w4[0]),m.C1.evaluate(y.S1.h1w4[1]),m.C1.evaluate(y.S1.h1w4[2]),m.C1.evaluate(y.S1.h1w4[3])],c),m.R1.degree()>3)throw new Error("R1 Polynomial is not well calculated")})(),a&&a.info("> Computing R2 polynomial");(function(){if(m.R2=nl.lagrangePolynomialInterpolation([y.S2.h2w3[0],y.S2.h2w3[1],y.S2.h2w3[2],y.S2.h3w3[0],y.S2.h3w3[1],y.S2.h3w3[2]],[m.C2.evaluate(y.S2.h2w3[0]),m.C2.evaluate(y.S2.h2w3[1]),m.C2.evaluate(y.S2.h2w3[2]),m.C2.evaluate(y.S2.h3w3[0]),m.C2.evaluate(y.S2.h3w3[1]),m.C2.evaluate(y.S2.h3w3[2])],c),m.R2.degree()>5)throw new Error("R2 Polynomial is not well calculated")})(),a&&a.info("> Computing F polynomial");await async function(){a&&a.info("··· Computing F polynomial");m.F=nl.fromPolynomial(m.C0,c,a),m.F.sub(m.R0),m.F.divByZerofier(8,b.xi);let t=nl.fromPolynomial(m.C1,c,a);t.sub(m.R1),t.mulScalar(b.alpha),t.divByZerofier(4,b.xi);let e=nl.fromPolynomial(m.C2,c,a);if(e.sub(m.R2),e.mulScalar(d.square(b.alpha)),e.divByZerofier(3,b.xi),e.divByZerofier(3,b.xiw),m.F.add(t),m.F.add(e),m.F.degree()>=9*s.domainSize-6)throw new Error("F Polynomial is not well calculated")}(),a&&a.info("> Computing W1 multi exponentiation");let e=await m.F.multiExponentiation(C,"W1");return A.addPolynomial("W1",e),0}(),globalThis.gc&&globalThis.gc(),a&&a.info("> ROUND 5"),await async function(){a&&a.info("> Computing challenge y");const t=new Vn(c);t.addScalar(b.alpha),t.addPolCommitment(A.getPolynomial("W1")),b.y=t.getChallenge(),a&&a.info("··· challenges.y: "+d.toString(b.y));a&&a.info("> Computing L polynomial");await async function(){a&&a.info("··· Computing L polynomial");const t=m.R0.evaluate(b.y),e=m.R1.evaluate(b.y),i=m.R2.evaluate(b.y);let o=d.sub(b.y,y.S0.h0w8[0]);for(let t=1;t<8;t++)o=d.mul(o,d.sub(b.y,y.S0.h0w8[t]));let n=d.sub(b.y,y.S1.h1w4[0]);for(let t=1;t<4;t++)n=d.mul(n,d.sub(b.y,y.S1.h1w4[t]));let l=d.sub(b.y,y.S2.h2w3[0]);for(let t=1;t<3;t++)l=d.mul(l,d.sub(b.y,y.S2.h2w3[t]));for(let t=0;t<3;t++)l=d.mul(l,d.sub(b.y,y.S2.h3w3[t]));let r=d.mul(n,l),u=d.mul(b.alpha,d.mul(o,l)),g=d.mul(d.square(b.alpha),d.mul(o,n));L.denH1=n,L.denH2=l,m.L=nl.fromPolynomial(m.C0,c,a),m.L.subScalar(t),m.L.mulScalar(r);let f=nl.fromPolynomial(m.C1,c,a);f.subScalar(e),f.mulScalar(u);let h=nl.fromPolynomial(m.C2,c,a);h.subScalar(i),h.mulScalar(g),m.L.add(f),m.L.add(h),a&&a.info("> Computing ZT polynomial");await async function(){m.ZT=nl.zerofierPolynomial([y.S0.h0w8[0],y.S0.h0w8[1],y.S0.h0w8[2],y.S0.h0w8[3],y.S0.h0w8[4],y.S0.h0w8[5],y.S0.h0w8[6],y.S0.h0w8[7],y.S1.h1w4[0],y.S1.h1w4[1],y.S1.h1w4[2],y.S1.h1w4[3],y.S2.h2w3[0],y.S2.h2w3[1],y.S2.h2w3[2],y.S2.h3w3[0],y.S2.h3w3[1],y.S2.h3w3[2]],c)}();const _=m.ZT.evaluate(b.y);if(m.F.mulScalar(_),m.L.sub(m.F),m.L.degree()>=9*s.domainSize)throw new Error("L Polynomial is not well calculated");delete p.L}(),a&&a.info("> Computing ZTS2 polynomial");await async function(){m.ZTS2=nl.zerofierPolynomial([y.S1.h1w4[0],y.S1.h1w4[1],y.S1.h1w4[2],y.S1.h1w4[3],y.S2.h2w3[0],y.S2.h2w3[1],y.S2.h2w3[2],y.S2.h3w3[0],y.S2.h3w3[1],y.S2.h3w3[2]],c)}();let e=m.ZTS2.evaluate(b.y);e=d.inv(e),m.L.mulScalar(e);const i=nl.fromCoefficientsArray([d.neg(b.y),d.one],c);a&&a.info("> Computing W' = L / ZTS2 polynomial");const o=m.L.divBy(i);if(o.degree()>0)throw new Error(`Degree of L(X)/(ZTS2(y)(X-y)) remainder is ${o.degree()} and should be 0`);if(m.L.degree()>=9*s.domainSize-1)throw new Error("Degree of L(X)/(ZTS2(y)(X-y)) is not correct");a&&a.info("> Computing W' multi exponentiation");let n=await m.L.multiExponentiation(C,"W2");return A.addPolynomial("W2",n),0}(),delete m.C0,delete m.C1,delete m.C2,delete m.R1,delete m.R2,delete m.F,delete m.L,delete m.ZT,delete m.ZTS2,await l.close(),globalThis.gc&&globalThis.gc(),A.addEvaluation("inv",function(){let t=b.xi;for(let e=0;e Reading PTau file");const{fd:o,sections:n}=await za(e,"ptau",1);if(!n[12])throw new Error("Powers of Tau is not well prepared. Section 12 missing.");i&&i.info("> Getting curve from PTau settings");const{curve:l}=await Wo(o,n);i&&i.info("> Reading r1cs file");const{fd:r,sections:s}=await za(t,"r1cs",1),c=await wn(r,s,{loadConstraints:!1,loadCustomGates:!0});if(c.prime!==l.r)throw new Error("r1cs curve does not match powers of tau ceremony curve");const d=l.Fr,u=l.Fr.n8,g=2*l.G1.F.n8,f=2*l.G2.F.n8;let h,_={},p={},m={nVars:c.nVars,nPublic:c.nOutputs+c.nPubInputs};const w=new Bn;let L=new Bn;if(i&&i.info("> Processing FFlonk constraints"),await async function(t,e,a){for(let e=0;e computing k1 and k2");const[b,y]=function(){let t=d.two;for(;a(t,[],m.cirPower);)d.add(t,d.one);let e=d.add(t,d.one);for(;a(e,[t],m.cirPower);)d.add(e,d.one);return[t,e];function a(t,e,a){const i=2**a;let o=d.one;for(let n=0;n computing w3");const A=function(){let t=d.e(31624),e=ga.div(3648040478639879203707734290876212514758060733402672390616367364429301415936n,ga.e(3));return d.exp(t,e)}();i&&i.info("> computing w4");const C=d.w[2];i&&i.info("> computing w8");const I=d.w[3];i&&i.info("> computing wr");const F=function(t,e){const a=e.e(467799165886069610036046866799264026481344299079011762026774533774345988080n);return e.exp(a,2**(28-t))}(m.cirPower,l.Fr);return await async function(){i&&i.info("> Writing the zkey file");const t=await Qa(a,"zkey",1,17,1<<22,1<<24);i&&i.info("··· Writing Section 1. Zkey Header");await async function(t){await qa(t,1),await t.writeULE32(Ji),await Ma(t)}(t),i&&i.info(`··· Writing Section ${to}. Additions`);await async function(t){await qa(t,to);const e=new Uint8Array(8+2*u),a=new DataView(e.buffer);for(let o=0;o=8*m.domainSize)throw new Error("C0 Polynomial is not well calculated");await qa(t,_o),await t.write(_.C0.coef),await Ma(t)}(t),globalThis.gc&&globalThis.gc();i&&i.info(`··· Writing Section ${Xi}. FFlonk Header`);await async function(t){await qa(t,Xi);const e=l.q,a=8*(Math.floor((ga.bitLength(e)-1)/64)+1);await t.writeULE32(a),await Da(t,e,a);const i=l.r,r=8*(Math.floor((ga.bitLength(i)-1)/64)+1);let s;await t.writeULE32(r),await Da(t,i,r),await t.writeULE32(m.nVars),await t.writeULE32(m.nPublic),await t.writeULE32(m.domainSize),await t.writeULE32(L.length),await t.writeULE32(w.length),await t.write(b),await t.write(y),await t.write(A),await t.write(C),await t.write(I),await t.write(F),s=await o.read(f,n[3][0].p+f),await t.write(s);let c=await _.C0.multiExponentiation(h,"C0");await t.write(c),await Ma(t)}(t),globalThis.gc&&globalThis.gc();i&&i.info("> Writing the zkey file finished");await t.close()}(),await r.close(),await o.close(),i&&i.info("FFLONK SETUP FINISHED"),0;async function x(t,e,a,o){await qa(t,e);for(let e=0;e Checking commitments belong to G1"),!function(t,e,a){const i=t.G1;return i.isValid(e.polynomials.C1)&&i.isValid(e.polynomials.C2)&&i.isValid(e.polynomials.W1)&&i.isValid(e.polynomials.W2)&&i.isValid(a.C0)}(o,l,n))return i&&i.error("Proof commitments are not valid"),!1;if(i&&i.info("> Checking evaluations belong to F"),!function(t,e){return Il(t,e.evaluations.ql)&&Il(t,e.evaluations.qr)&&Il(t,e.evaluations.qm)&&Il(t,e.evaluations.qo)&&Il(t,e.evaluations.qc)&&Il(t,e.evaluations.s1)&&Il(t,e.evaluations.s2)&&Il(t,e.evaluations.s3)&&Il(t,e.evaluations.a)&&Il(t,e.evaluations.b)&&Il(t,e.evaluations.c)&&Il(t,e.evaluations.z)&&Il(t,e.evaluations.zw)&&Il(t,e.evaluations.t1w)&&Il(t,e.evaluations.t2w)}(o,l))return i&&i.error("Proof evaluations are not valid."),!1;if(i&&i.info("> Checking public inputs belong to F"),!function(t,e){for(let a=0;a Computing challenges");const{challenges:c,roots:d}=function(t,e,a,i,o){const n=t.Fr,l={},r={},s=new Vn(t);s.addPolCommitment(a.C0);for(let t=0;t Computing Zero polynomial evaluation Z_H(xi)"),c.zh=s.sub(c.xiN,s.one),c.invzh=s.inv(c.zh),i&&i.info("> Computing Lagrange evaluations");const u=await async function(t,e,a){const i=t.Fr,o=Math.max(1,a.nPublic),n=new Se(o*i.n8);let l=new Se(o*i.n8),r=i.one;for(let t=0;t Computing polynomial identities PI(X)");const g=function(t,e,a){const i=t.Fr;let o=i.zero;for(let t=0;t Computing r0(y)");const f=function(t,e,a,i,o){const n=i.Fr,l=Fl(a.S0.h0w8,e.y,e.xi,i);o&&o.info("··· Computing r0(y)");let r=n.zero;for(let e=0;e<8;e++){let i=[];i[1]=a.S0.h0w8[e];for(let t=2;t<8;t++)i[t]=n.mul(i[t-1],a.S0.h0w8[e]);let o=n.add(t.evaluations.ql,n.mul(t.evaluations.qr,i[1]));o=n.add(o,n.mul(t.evaluations.qo,i[2])),o=n.add(o,n.mul(t.evaluations.qm,i[3])),o=n.add(o,n.mul(t.evaluations.qc,i[4])),o=n.add(o,n.mul(t.evaluations.s1,i[5])),o=n.add(o,n.mul(t.evaluations.s2,i[6])),o=n.add(o,n.mul(t.evaluations.s3,i[7])),r=n.add(r,n.mul(o,l[e]))}return r}(l,c,d,o,i);i&&i.info("> Computing r1(y)");const h=function(t,e,a,i,o,n){const l=o.Fr,r=Fl(a.S1.h1w4,e.y,e.xi,o);n&&n.info("··· Computing T0(xi)");let s=l.mul(t.evaluations.ql,t.evaluations.a);s=l.add(s,l.mul(t.evaluations.qr,t.evaluations.b)),s=l.add(s,l.mul(t.evaluations.qm,l.mul(t.evaluations.a,t.evaluations.b))),s=l.add(s,l.mul(t.evaluations.qo,t.evaluations.c)),s=l.add(s,t.evaluations.qc),s=l.add(s,i),s=l.mul(s,e.invzh),n&&n.info("··· Computing C1(h_1ω_4^i) values");let c=l.zero;for(let e=0;e<4;e++){let i=t.evaluations.a;i=l.add(i,l.mul(a.S1.h1w4[e],t.evaluations.b));const o=l.square(a.S1.h1w4[e]);i=l.add(i,l.mul(o,t.evaluations.c)),i=l.add(i,l.mul(l.mul(o,a.S1.h1w4[e]),s)),c=l.add(c,l.mul(i,r[e]))}return c}(l,c,d,g,o,i);i&&i.info("> Computing r2(y)");const _=function(t,e,a,i,o,n,l){const r=n.Fr,s=function(t,e,a,i,o){const n=o.Fr,l=[],r=t[0].length,s=r*t.length,c=n.exp(e,s),d=n.mul(n.add(a,i),n.exp(e,r)),u=n.mul(a,i),g=n.add(n.sub(c,d),u);let f=n.mul(n.mul(n.e(r),t[0][0]),n.sub(a,i));for(let a=0;a Computing F");const p=function(t,e,a,i,o){const n=t.G1,l=t.Fr;let r=l.sub(i.y,o.S0.h0w8[0]);for(let t=1;t<8;t++)r=l.mul(r,l.sub(i.y,o.S0.h0w8[t]));i.temp=r;let s=l.sub(i.y,o.S1.h1w4[0]);for(let t=1;t<4;t++)s=l.mul(s,l.sub(i.y,o.S1.h1w4[t]));let c=l.sub(i.y,o.S2.h2w3[0]);for(let t=1;t<3;t++)c=l.mul(c,l.sub(i.y,o.S2.h2w3[t]));for(let t=0;t<3;t++)c=l.mul(c,l.sub(i.y,o.S2.h3w3[t]));i.quotient1=l.mul(i.alpha,l.div(r,s)),i.quotient2=l.mul(l.square(i.alpha),l.div(r,c));let d=n.timesFr(e.polynomials.C1,i.quotient1),u=n.timesFr(e.polynomials.C2,i.quotient2);return n.add(a.C0,n.add(d,u))}(o,l,n,c,d);i&&i.info("> Computing E");const m=function(t,e,a,i,o,n,l){const r=t.G1,s=t.Fr;let c=s.mul(n,a.quotient1),d=s.mul(l,a.quotient2);return r.timesFr(r.one,s.add(o,s.add(c,d)))}(o,0,c,0,f,h,_);i&&i.info("> Computing J");const w=function(t,e,a){const i=t.G1;return i.timesFr(e.polynomials.W1,a.temp)}(o,l,c);i&&i.info("> Validate all evaluations with a pairing");const L=await async function(t,e,a,i,o,n,l){const r=t.G1;let s=r.timesFr(e.polynomials.W2,a.y);s=r.add(r.sub(r.sub(o,n),l),s);const c=t.G2.one,d=e.polynomials.W2,u=i.X_2;return await t.pairingEq(r.neg(s),c,d,u)}(o,l,c,n,p,m,w);return i&&(L?i.info("PROOF VERIFIED SUCCESSFULLY"):i.warn("Invalid Proof")),i&&i.info("FFLONK VERIFIER FINISHED"),L},exportSolidityVerifier:qn,exportSolidityCallData:async function(t,e){const a=xl(e),i=xl(t),o=await Xa(a.curve);o.G1,o.Fr;let n="";for(let t=0;t>5,this.byteCount=this.blockCount<<2,this.outputBlocks=a>>5,this.extraBytes=(31&a)>>3;for(var i=0;i<50;++i)this.s[i]=0}function S(t,e,a){B.call(this,t,e,a)}B.prototype.update=function(e){if(this.finalized)throw new Error("finalize already called");var a,i=typeof e;if("string"!==i){if("object"!==i)throw new Error(t);if(null===e)throw new Error(t);if(n&&e.constructor===ArrayBuffer)e=new Uint8Array(e);else if(!(Array.isArray(e)||n&&ArrayBuffer.isView(e)))throw new Error(t);a=!0}for(var o,l,r=this.blocks,c=this.byteCount,d=e.length,u=this.blockCount,g=0,f=this.s;g>2]|=e[g]<>2]|=l<>2]|=(192|l>>6)<>2]|=(128|63&l)<=57344?(r[o>>2]|=(224|l>>12)<>2]|=(128|l>>6&63)<>2]|=(128|63&l)<>2]|=(240|l>>18)<>2]|=(128|l>>12&63)<>2]|=(128|l>>6&63)<>2]|=(128|63&l)<=c){for(this.start=o-c,this.block=r[u],o=0;o>=8);a>0;)o.unshift(a),a=255&(t>>=8),++i;return e?o.push(i):o.unshift(i),this.update(o),o.length},B.prototype.encodeString=function(e){var a,i=typeof e;if("string"!==i){if("object"!==i)throw new Error(t);if(null===e)throw new Error(t);if(n&&e.constructor===ArrayBuffer)e=new Uint8Array(e);else if(!(Array.isArray(e)||n&&ArrayBuffer.isView(e)))throw new Error(t);a=!0}var o=0,l=e.length;if(a)o=l;else for(var r=0;r=57344?o+=3:(s=65536+((1023&s)<<10|1023&e.charCodeAt(++r)),o+=4)}return o+=this.encode(8*o),this.update(e),o},B.prototype.bytepad=function(t,e){for(var a=this.encode(e),i=0;i>2]|=this.padding[3&e],this.lastByteIndex===this.byteCount)for(t[0]=t[a],e=1;e>4&15]+l[15&t]+l[t>>12&15]+l[t>>8&15]+l[t>>20&15]+l[t>>16&15]+l[t>>28&15]+l[t>>24&15];r%e==0&&(P(a),n=0)}return o&&(t=a[n],s+=l[t>>4&15]+l[15&t],o>1&&(s+=l[t>>12&15]+l[t>>8&15]),o>2&&(s+=l[t>>20&15]+l[t>>16&15])),s},B.prototype.arrayBuffer=function(){this.finalize();var t,e=this.blockCount,a=this.s,i=this.outputBlocks,o=this.extraBytes,n=0,l=0,r=this.outputBits>>3;t=o?new ArrayBuffer(i+1<<2):new ArrayBuffer(r);for(var s=new Uint32Array(t);l>8&255,s[t+2]=e>>16&255,s[t+3]=e>>24&255;r%a==0&&P(i)}return n&&(t=r<<2,e=i[l],s[t]=255&e,n>1&&(s[t+1]=e>>8&255),n>2&&(s[t+2]=e>>16&255)),s},S.prototype=new B,S.prototype.finalize=function(){return this.encode(this.outputBits,!0),B.prototype.finalize.call(this)};var P=function(t){var e,a,i,o,n,l,r,s,d,u,g,f,h,_,p,m,w,L,b,y,A,C,I,F,x,E,v,B,S,P,G,O,T,U,z,Q,q,M,k,R,D,N,$,V,K,j,H,Z,W,Y,J,X,tt,et,at,it,ot,nt,lt,rt,st,ct,dt;for(i=0;i<48;i+=2)o=t[0]^t[10]^t[20]^t[30]^t[40],n=t[1]^t[11]^t[21]^t[31]^t[41],l=t[2]^t[12]^t[22]^t[32]^t[42],r=t[3]^t[13]^t[23]^t[33]^t[43],s=t[4]^t[14]^t[24]^t[34]^t[44],d=t[5]^t[15]^t[25]^t[35]^t[45],u=t[6]^t[16]^t[26]^t[36]^t[46],g=t[7]^t[17]^t[27]^t[37]^t[47],e=(f=t[8]^t[18]^t[28]^t[38]^t[48])^(l<<1|r>>>31),a=(h=t[9]^t[19]^t[29]^t[39]^t[49])^(r<<1|l>>>31),t[0]^=e,t[1]^=a,t[10]^=e,t[11]^=a,t[20]^=e,t[21]^=a,t[30]^=e,t[31]^=a,t[40]^=e,t[41]^=a,e=o^(s<<1|d>>>31),a=n^(d<<1|s>>>31),t[2]^=e,t[3]^=a,t[12]^=e,t[13]^=a,t[22]^=e,t[23]^=a,t[32]^=e,t[33]^=a,t[42]^=e,t[43]^=a,e=l^(u<<1|g>>>31),a=r^(g<<1|u>>>31),t[4]^=e,t[5]^=a,t[14]^=e,t[15]^=a,t[24]^=e,t[25]^=a,t[34]^=e,t[35]^=a,t[44]^=e,t[45]^=a,e=s^(f<<1|h>>>31),a=d^(h<<1|f>>>31),t[6]^=e,t[7]^=a,t[16]^=e,t[17]^=a,t[26]^=e,t[27]^=a,t[36]^=e,t[37]^=a,t[46]^=e,t[47]^=a,e=u^(o<<1|n>>>31),a=g^(n<<1|o>>>31),t[8]^=e,t[9]^=a,t[18]^=e,t[19]^=a,t[28]^=e,t[29]^=a,t[38]^=e,t[39]^=a,t[48]^=e,t[49]^=a,_=t[0],p=t[1],j=t[11]<<4|t[10]>>>28,H=t[10]<<4|t[11]>>>28,B=t[20]<<3|t[21]>>>29,S=t[21]<<3|t[20]>>>29,rt=t[31]<<9|t[30]>>>23,st=t[30]<<9|t[31]>>>23,N=t[40]<<18|t[41]>>>14,$=t[41]<<18|t[40]>>>14,U=t[2]<<1|t[3]>>>31,z=t[3]<<1|t[2]>>>31,m=t[13]<<12|t[12]>>>20,w=t[12]<<12|t[13]>>>20,Z=t[22]<<10|t[23]>>>22,W=t[23]<<10|t[22]>>>22,P=t[33]<<13|t[32]>>>19,G=t[32]<<13|t[33]>>>19,ct=t[42]<<2|t[43]>>>30,dt=t[43]<<2|t[42]>>>30,et=t[5]<<30|t[4]>>>2,at=t[4]<<30|t[5]>>>2,Q=t[14]<<6|t[15]>>>26,q=t[15]<<6|t[14]>>>26,L=t[25]<<11|t[24]>>>21,b=t[24]<<11|t[25]>>>21,Y=t[34]<<15|t[35]>>>17,J=t[35]<<15|t[34]>>>17,O=t[45]<<29|t[44]>>>3,T=t[44]<<29|t[45]>>>3,F=t[6]<<28|t[7]>>>4,x=t[7]<<28|t[6]>>>4,it=t[17]<<23|t[16]>>>9,ot=t[16]<<23|t[17]>>>9,M=t[26]<<25|t[27]>>>7,k=t[27]<<25|t[26]>>>7,y=t[36]<<21|t[37]>>>11,A=t[37]<<21|t[36]>>>11,X=t[47]<<24|t[46]>>>8,tt=t[46]<<24|t[47]>>>8,V=t[8]<<27|t[9]>>>5,K=t[9]<<27|t[8]>>>5,E=t[18]<<20|t[19]>>>12,v=t[19]<<20|t[18]>>>12,nt=t[29]<<7|t[28]>>>25,lt=t[28]<<7|t[29]>>>25,R=t[38]<<8|t[39]>>>24,D=t[39]<<8|t[38]>>>24,C=t[48]<<14|t[49]>>>18,I=t[49]<<14|t[48]>>>18,t[0]=_^~m&L,t[1]=p^~w&b,t[10]=F^~E&B,t[11]=x^~v&S,t[20]=U^~Q&M,t[21]=z^~q&k,t[30]=V^~j&Z,t[31]=K^~H&W,t[40]=et^~it&nt,t[41]=at^~ot<,t[2]=m^~L&y,t[3]=w^~b&A,t[12]=E^~B&P,t[13]=v^~S&G,t[22]=Q^~M&R,t[23]=q^~k&D,t[32]=j^~Z&Y,t[33]=H^~W&J,t[42]=it^~nt&rt,t[43]=ot^~lt&st,t[4]=L^~y&C,t[5]=b^~A&I,t[14]=B^~P&O,t[15]=S^~G&T,t[24]=M^~R&N,t[25]=k^~D&$,t[34]=Z^~Y&X,t[35]=W^~J&tt,t[44]=nt^~rt&ct,t[45]=lt^~st&dt,t[6]=y^~C&_,t[7]=A^~I&p,t[16]=P^~O&F,t[17]=G^~T&x,t[26]=R^~N&U,t[27]=D^~$&z,t[36]=Y^~X&V,t[37]=J^~tt&K,t[46]=rt^~ct&et,t[47]=st^~dt&at,t[8]=C^~_&m,t[9]=I^~p&w,t[18]=O^~F&E,t[19]=T^~x&v,t[28]=N^~U&Q,t[29]=$^~z&q,t[38]=X^~V&j,t[39]=tt^~K&H,t[48]=ct^~et&it,t[49]=dt^~at&ot,t[0]^=c[i],t[1]^=c[i+1]};if(o)Rn.exports=y;else for(C=0;C0===a.type?t++:e++));let a=new Uint8Array(e*this.Fr.n8+t*this.G1.F.n8*2),i=0;for(let t=0;t32768?new Se(t.length*i.n8):new Uint8Array(t.length*i.n8);for(let e=0;e32768?new Se(i*o.n8):new Uint8Array(i*o.n8);return n.set(t.coef.slice(),0),new nl(n,e,a)}isEqual(t){const e=this.degree();if(e!==t.degree())return!1;for(let a=0;a32768?new Se((this.length()+t.length)*this.Fr.n8):new Uint8Array((this.length()+t.length)*this.Fr.n8);e.set(this.coef,0);for(let a=0;athis.coef.byteLength?this.Fr.zero:this.coef.slice(e,e+this.Fr.n8)}setCoef(t,e){if(t>this.length()-1)throw new Error("Coef index is not available");this.coef.set(e,t*this.Fr.n8)}static async to4T(t,e,a,i){a=a||[];let o=await i.ifft(t);const n=4*e>32768?new Se(4*e*i.n8):new Uint8Array(4*e*i.n8);n.set(o,0);const l=await i.fft(n);if(0===a.length)return[o,l];const r=e+a.length>32768?new Se((e+a.length)*i.n8):new Uint8Array((e+a.length)*i.n8);r.set(o,0);for(let t=0;t0;t--){const e=t*this.Fr.n8;if(!this.Fr.eq(this.Fr.zero,this.coef.slice(e,e+this.Fr.n8)))return t}return 0}evaluate(t){let e=this.Fr.zero;for(let a=this.degree()+1;a>0;a--){let i=a*this.Fr.n8;const o=this.coef.slice(i-this.Fr.n8,i);e=this.Fr.add(o,this.Fr.mul(e,t))}return e}fastEvaluate(t){const e=this.Fr;let a=this.degree()+1,i=parseInt(a/3),o=a-3*i,n=[],l=[];l[0]=e.one;for(let a=0;a<3;a++){n[a]=e.zero;for(let r=2===a?i+o:i;r>0;r--)n[a]=e.add(this.getCoef(a*i+r-1),e.mul(n[a],t)),0===a&&(l[0]=e.mul(l[0],t))}for(let t=1;t<3;t++)n[0]=e.add(n[0],e.mul(l[t-1],n[t])),l[t]=e.mul(l[t-1],l[0]);return n[0]}add(t,e){let a=!1;t.length()>this.length()&&(a=!0);const i=this.length(),o=t.length();for(let n=0;nthis.length()&&(a=!0);const i=this.length(),o=t.length();for(let n=0;n32768?new Se(a*e.n8):new Uint8Array(a*e.n8);let o=new nl(i,this.curve,this.logger);o.coef.set(this.coef.slice(0,(a-1)*e.n8),32),this.mulScalar(e.neg(t)),o.add(this),this.coef=o.coef}byXNSubValue(t,e){const a=this.Fr,i=!(this.length()-t-1>=this.degree())?this.length()+t:this.length(),o=i>32768?new Se(i*a.n8):new Uint8Array(i*a.n8);let n=new nl(o,this.curve,this.logger);n.coef.set(this.coef.slice(0,32*(this.degree()+1)),32*t),this.mulScalar(e),n.add(this),this.coef=n.coef}divBy(t){const e=this.Fr,a=this.degree(),i=t.degree();let o=new nl(this.coef,this.curve,this.logger);this.coef=this.length()>32768?new Se(this.length()*e.n8):new Uint8Array(this.length()*e.n8);for(let n=a-i;n>=0;n--){this.setCoef(n,e.div(o.getCoef(n+i),t.getCoef(i)));for(let a=0;a<=i;a++)o.setCoef(n+a,e.sub(o.getCoef(n+a),e.mul(this.getCoef(n),t.getCoef(a))))}return o}divByMonic(t,e){const a=this.Fr;let i=this.degree(),o=this.length()>32768?new Se(this.length()*a.n8):new Uint8Array(this.length()*a.n8),n=new nl(o,this.curve,this.logger),l=[];for(let e=0;e=0&&!(s<0);s-=r){let i=o;l[i]=a.add(this.getCoef(s+t),a.mul(l[i],e)),n.setCoef(s,l[i])}this.coef=n.coef}divByVanishing(t,e){if(this.degree()32768?new Se(this.length()*a.n8):new Uint8Array(this.length()*a.n8);for(let o=this.length()-1;o>=t;o--){let n=i.getCoef(o);a.eq(a.zero,n)||(i.setCoef(o,a.zero),i.setCoef(o-t,a.add(i.getCoef(o-t),a.mul(e,n))),this.setCoef(o-t,a.add(this.getCoef(o-t),n)))}return i}divByVanishing2(t,e){if(this.degree()32768?new Se(this.length()*a.n8):new Uint8Array(this.length()*a.n8);let o=this.length()-t,n=Math.floor(o/3),l=o-2*n;console.log(o),console.log(n+" "+l);for(let o=0;o<3;o++){console.log("> Thread "+o);for(let r=0===o?l:n;r>0;r--){let s=r-1;0!==o&&(s+=(o-1)*n+l);let c=s+t,d=i.getCoef(c);a.eq(a.zero,d)||(i.setCoef(c,a.zero),i.setCoef(s,a.add(i.getCoef(s),a.mul(e,d))),this.setCoef(s,a.add(this.getCoef(s),d)),console.log(s+" <-- "+c))}}return this.print(),i}fastDivByVanishing(t){const e=this.Fr;for(let a=0;a32768?new Se(this.length()*e.n8):new Uint8Array(this.length()*e.n8),this.curve,this.logger),u=this.coef;this.coef=d.coef,d.coef=u;for(let t=0;t0;t--){let a=t-1,o=a*s+c;h[a]=[];for(let l=0;l32768?new Se(this.length()*this.Fr.n8):new Uint8Array(this.length()*this.Fr.n8);e.set(this.Fr.zero,(this.length()-1)*this.Fr.n8),e.set(this.coef.slice((this.length()-1)*this.Fr.n8,this.length()*this.Fr.n8),(this.length()-2)*this.Fr.n8);for(let a=this.length()-3;a>=0;a--){let i=a*this.Fr.n8;e.set(this.Fr.add(this.coef.slice(i+this.Fr.n8,i+2*this.Fr.n8),this.Fr.mul(t,e.slice(i+this.Fr.n8,i+2*this.Fr.n8))),a*this.Fr.n8)}if(!this.Fr.eq(this.coef.slice(0,this.Fr.n8),this.Fr.mul(this.Fr.neg(t),e.slice(0,this.Fr.n8))))throw new Error("Polynomial does not divide");this.coef=e}divZh(t,e=4){for(let e=0;et*(e-1)-e&&!this.Fr.isZero(o))throw new Error("Polynomial is not divisible")}return this}divByZerofier(t,e){let a=this.Fr;const i=a.inv(e),o=a.neg(i);let n=a.eq(a.one,o),l=a.eq(a.negone,o);if(!n)for(let e=0;ethis.length()-t-1&&!this.Fr.isZero(s))throw new Error("Polynomial is not divisible")}return this}byX(){const t=this.length()+1>32768?new Se(this.coef.byteLength+this.Fr.n8):new Uint8Array(this.coef.byteLength+this.Fr.n8);t.set(this.Fr.zero,0),t.set(this.coef,this.Fr.n8),this.coef=t}static async expX(t,e,a=!1){const i=t.Fr;if(e<1)throw new Error("Compute a new polynomial to a zero or negative number is not allowed");if(1===e)return await nl.fromEvaluations(t.coef,curve,t.logger);const o=a?t.degree():t.length()-1,n=o*e+1>32768?new Se((o*e+1)*i.n8):new Uint8Array((o*e+1)*i.n8);n.set(t.getCoef(0),0);for(let a=1;a<=o;a++){const o=a*i.n8,l=t.getCoef(a);n.set(l,o*e)}return new nl(n,t.curve,t.logger)}split(t,e,a){if(t<1)throw new Error(`Polynomials can't be split in ${t} parts`);if(1===t)return[this];if(0!==a.length&&a.length32768?new Se(l):new Uint8Array(l);o[e]=new nl(r,this.curve,this.logger);const s=e*i,c=n?this.coef.byteLength:(e+1)*i;if(o[e].coef.set(this.coef.slice(s,c),0),n||o[e].coef.set(a[e],i),0!==e){const t=this.Fr.sub(o[e].coef.slice(0,this.Fr.n8),a[e-1]);o[e].coef.set(t,0)}n&&o[e].truncate()}return o}truncate(){const t=this.degree();if(t+132768?new Se((t+1)*this.Fr.n8):new Uint8Array((t+1)*this.Fr.n8);e.set(this.coef.slice(0,(t+1)*this.Fr.n8),0),this.coef=e}}static lagrangePolynomialInterpolation(t,e,a){const i=a.Fr;let o=n(0);for(let e=1;e32768?new Se(t.length*i.n8):new Uint8Array(t.length*i.n8);n=new nl(o,a),n.setCoef(0,i.neg(t[e])),n.setCoef(1,i.one)}else n.byXSubValue(t[e]);let l=n.evaluate(t[o]);l=i.inv(l);const r=i.mul(e[o],l);return n.mulScalar(r),n}}static zerofierPolynomial(t,e){const a=e.Fr;let i=t.length+1>32768?new Se((t.length+1)*a.n8):new Uint8Array((t.length+1)*a.n8),o=new nl(i,e);o.setCoef(0,a.neg(t[0])),o.setCoef(1,a.one);for(let e=1;e=0;a--){const i=this.getCoef(a);t.eq(t.zero,i)||(t.isNegative(i)?e+=" - ":a!==this.degree()&&(e+=" + "),e+=t.toString(i),a>0&&(e+=a>1?"x^"+a:"x"))}console.log(e)}async multiExponentiation(t,e){const a=this.coef.byteLength/this.Fr.n8,i=t.slice(0,a*this.G1.F.n8*2),o=await this.Fr.batchFromMontgomery(this.coef);let n=await this.G1.multiExpAffine(i,o,this.logger,e);return n=this.G1.toAffine(n),n}}class ll{constructor(t,e,a){this.eval=t,this.curve=e,this.Fr=e.Fr,this.logger=a}static async fromPolynomial(t,e,a,i){const o=new Se(t.length()*e*a.Fr.n8);o.set(t.coef,0);const n=await a.Fr.fft(o);return new ll(n,a,i)}getEvaluation(t){const e=t*this.Fr.n8;if(e+this.Fr.n8>this.eval.byteLength)throw new Error("Evaluations.getEvaluation() out of bounds");return this.eval.slice(e,e+this.Fr.n8)}length(){let t=this.eval.byteLength/this.Fr.n8;if(t!==Math.floor(this.eval.byteLength/this.Fr.n8))throw new Error("Polynomial evaluations buffer has incorrect size");return 0===t&&this.logger.warn("Polynomial has length zero"),t}}const{stringifyBigInts:rl}=fa;async function sl(t,e,a,i){const{fd:o,sections:n}=await za(e,"wtns",2);a&&a.debug("> Reading witness file");const l=await vo(o,n);a&&a.debug("> Reading zkey file");const{fd:r,sections:s}=await za(t,"zkey",2),c=await yo(r,s,void 0,i);if("plonk"!=c.protocol)throw new Error("zkey file is not plonk");if(!ga.eq(c.r,l.q))throw new Error("Curve of the witness does not match the curve of the proving key");if(l.nWitness!=c.nVars-c.nAdditions)throw new Error(`Invalid witness length. Circuit: ${c.nVars}, witness: ${l.nWitness}, ${c.nAdditions}`);const d=c.curve,u=d.Fr,g=d.Fr.n8,f=c.domainSize*g;a&&(a.debug("----------------------------"),a.debug(" PLONK PROVE SETTINGS"),a.debug(` Curve: ${d.name}`),a.debug(` Circuit power: ${c.power}`),a.debug(` Domain size: ${c.domainSize}`),a.debug(` Vars: ${c.nVars}`),a.debug(` Public vars: ${c.nPublic}`),a.debug(` Constraints: ${c.nConstraints}`),a.debug(` Additions: ${c.nAdditions}`),a.debug("----------------------------")),a&&a.debug("> Reading witness file data");const h=await Va(o,n,2);h.set(u.zero,0);const _=new Se(g*c.nAdditions);let p={},m={},w={},L={},b=new kn(d,a);const y=new Vn(d);a&&a.debug(`> Reading Section ${jn}. Additions`),await async function(){a&&a.debug("··· Computing additions");const t=await Va(r,s,jn),e=8+2*g;for(let i=0;i Reading Section ${al}. Sigma1, Sigma2 & Sigma 3`),a&&a.debug("··· Reading Sigma polynomials "),m.Sigma1=new nl(new Se(f),d,a),m.Sigma2=new nl(new Se(f),d,a),m.Sigma3=new nl(new Se(f),d,a),await r.readToBuffer(m.Sigma1.coef,0,f,s[al][0].p),await r.readToBuffer(m.Sigma2.coef,0,f,s[al][0].p+5*f),await r.readToBuffer(m.Sigma3.coef,0,f,s[al][0].p+10*f),a&&a.debug("··· Reading Sigma evaluations"),w.Sigma1=new ll(new Se(4*f),d,a),w.Sigma2=new ll(new Se(4*f),d,a),w.Sigma3=new ll(new Se(4*f),d,a),await r.readToBuffer(w.Sigma1.eval,0,4*f,s[al][0].p+f),await r.readToBuffer(w.Sigma2.eval,0,4*f,s[al][0].p+6*f),await r.readToBuffer(w.Sigma3.eval,0,4*f,s[al][0].p+11*f),a&&a.debug(`> Reading Section ${ol}. Powers of Tau`);const A=await Va(r,s,ol);let C=[];for(let t=1;t<=c.nPublic;t++){const e=h.slice(t*u.n8,t*u.n8+u.n8);C.push(ga.fromRprLE(e))}a&&a.debug(""),a&&a.debug("> ROUND 1"),await async function(){L.b=[];for(let t=1;t<=11;t++)L.b[t]=d.Fr.random();a&&a.debug("> Computing A, B, C wire polynomials");await async function(){a&&a.debug("··· Reading data from zkey file");p.A=new Se(f),p.B=new Se(f),p.C=new Se(f);const t=await Va(r,s,Hn),e=await Va(r,s,Zn),i=await Va(r,s,Wn);for(let a=0;a=c.domainSize+2)throw new Error("A Polynomial is not well calculated");if(m.B.degree()>=c.domainSize+2)throw new Error("B Polynomial is not well calculated");if(m.C.degree()>=c.domainSize+2)throw new Error("C Polynomial is not well calculated")}(),a&&a.debug("> Computing A, B, C MSM");let t=await m.A.multiExponentiation(A,"A"),e=await m.B.multiExponentiation(A,"B"),i=await m.C.multiExponentiation(A,"C");return b.addPolynomial("A",t),b.addPolynomial("B",e),b.addPolynomial("C",i),0}(),a&&a.debug("> ROUND 2"),await async function(){a&&a.debug("> Computing challenges beta and gamma");y.reset(),y.addPolCommitment(c.Qm),y.addPolCommitment(c.Ql),y.addPolCommitment(c.Qr),y.addPolCommitment(c.Qo),y.addPolCommitment(c.Qc),y.addPolCommitment(c.S1),y.addPolCommitment(c.S2),y.addPolCommitment(c.S3);for(let t=0;t Computing Z polynomial");await async function(){a&&a.debug("··· Computing Z evaluations");let t=new Se(f),e=new Se(f);t.set(u.one,0),e.set(u.one,0);let i=u.one;for(let a=0;a=c.domainSize+3)throw new Error("Z Polynomial is not well calculated");delete p.Z}(),a&&a.debug("> Computing Z MSM");let t=await m.Z.multiExponentiation(A,"Z");b.addPolynomial("Z",t)}(),a&&a.debug("> ROUND 3"),await async function(){a&&a.debug("> Computing challenge alpha");y.reset(),y.addScalar(L.beta),y.addScalar(L.gamma),y.addPolCommitment(b.getPolynomial("Z")),L.alpha=y.getChallenge(),L.alpha2=u.square(L.alpha),a&&a.debug("··· challenges.alpha: "+u.toString(L.alpha,16));a&&a.debug("> Computing T polynomial");await async function(){a&&a.debug(`··· Reading sections ${Jn}, ${Xn}, ${Yn}, ${tl}, ${el}. Q selectors`);w.QL=new ll(new Se(4*f),d,a),w.QR=new ll(new Se(4*f),d,a),w.QM=new ll(new Se(4*f),d,a),w.QO=new ll(new Se(4*f),d,a),w.QC=new ll(new Se(4*f),d,a),await r.readToBuffer(w.QL.eval,0,4*f,s[Jn][0].p+f),await r.readToBuffer(w.QR.eval,0,4*f,s[Xn][0].p+f),await r.readToBuffer(w.QM.eval,0,4*f,s[Yn][0].p+f),await r.readToBuffer(w.QO.eval,0,4*f,s[tl][0].p+f),await r.readToBuffer(w.QC.eval,0,4*f,s[el][0].p+f),w.Lagrange=new ll(new Se(4*f*c.nPublic),d,a);for(let t=0;t=3*c.domainSize+6)throw new Error("T Polynomial is not well calculated");a&&a.debug("··· Computing T1, T2, T3 polynomials");m.T1=new nl(new Se((c.domainSize+1)*g),d,a),m.T2=new nl(new Se((c.domainSize+1)*g),d,a),m.T3=new nl(new Se((c.domainSize+6)*g),d,a),m.T1.coef.set(m.T.coef.slice(0,f),0),m.T2.coef.set(m.T.coef.slice(f,2*f),0),m.T3.coef.set(m.T.coef.slice(2*f,3*f+6*g),0),m.T1.setCoef(c.domainSize,L.b[10]);const e=u.sub(m.T2.getCoef(0),L.b[10]);m.T2.setCoef(0,e),m.T2.setCoef(c.domainSize,L.b[11]);const i=u.sub(m.T3.getCoef(0),L.b[11]);m.T3.setCoef(0,i)}(),a&&a.debug("> Computing T MSM");let t=await m.T1.multiExponentiation(A,"T1"),e=await m.T2.multiExponentiation(A,"T2"),i=await m.T3.multiExponentiation(A,"T3");b.addPolynomial("T1",t),b.addPolynomial("T2",e),b.addPolynomial("T3",i)}(),a&&a.debug("> ROUND 4"),await async function(){a&&a.debug("> Computing challenge xi");y.reset(),y.addScalar(L.alpha),y.addPolCommitment(b.getPolynomial("T1")),y.addPolCommitment(b.getPolynomial("T2")),y.addPolCommitment(b.getPolynomial("T3")),L.xi=y.getChallenge(),L.xiw=u.mul(L.xi,u.w[c.power]),a&&a.debug("··· challenges.xi: "+u.toString(L.xi,16));b.addEvaluation("eval_a",m.A.evaluate(L.xi)),b.addEvaluation("eval_b",m.B.evaluate(L.xi)),b.addEvaluation("eval_c",m.C.evaluate(L.xi)),b.addEvaluation("eval_s1",m.Sigma1.evaluate(L.xi)),b.addEvaluation("eval_s2",m.Sigma2.evaluate(L.xi)),b.addEvaluation("eval_zw",m.Z.evaluate(L.xiw))}(),a&&a.debug("> ROUND 5"),await async function(){a&&a.debug("> Computing challenge v");y.reset(),y.addScalar(L.xi),y.addScalar(b.getEvaluation("eval_a")),y.addScalar(b.getEvaluation("eval_b")),y.addScalar(b.getEvaluation("eval_c")),y.addScalar(b.getEvaluation("eval_s1")),y.addScalar(b.getEvaluation("eval_s2")),y.addScalar(b.getEvaluation("eval_zw")),L.v=[],L.v[1]=y.getChallenge(),a&&a.debug("··· challenges.v: "+u.toString(L.v[1],16));for(let t=2;t<6;t++)L.v[t]=u.mul(L.v[t-1],L.v[1]);a&&a.debug("> Computing linearisation polynomial R(X)");await async function(){const t=d.Fr;m.QL=new nl(new Se(f),d,a),m.QR=new nl(new Se(f),d,a),m.QM=new nl(new Se(f),d,a),m.QO=new nl(new Se(f),d,a),m.QC=new nl(new Se(f),d,a),await r.readToBuffer(m.QL.coef,0,f,s[Jn][0].p),await r.readToBuffer(m.QR.coef,0,f,s[Xn][0].p),await r.readToBuffer(m.QM.coef,0,f,s[Yn][0].p),await r.readToBuffer(m.QO.coef,0,f,s[tl][0].p),await r.readToBuffer(m.QC.coef,0,f,s[el][0].p),L.xin=L.xi;for(let e=0;e Computing opening proof polynomial Wxi(X) polynomial");m.Wxi=new nl(new Se(f+6*g),d,a),m.Wxi.add(m.R),m.Wxi.add(m.A,L.v[1]),m.Wxi.add(m.B,L.v[2]),m.Wxi.add(m.C,L.v[3]),m.Wxi.add(m.Sigma1,L.v[4]),m.Wxi.add(m.Sigma2,L.v[5]),m.Wxi.subScalar(u.mul(L.v[1],b.evaluations.eval_a)),m.Wxi.subScalar(u.mul(L.v[2],b.evaluations.eval_b)),m.Wxi.subScalar(u.mul(L.v[3],b.evaluations.eval_c)),m.Wxi.subScalar(u.mul(L.v[4],b.evaluations.eval_s1)),m.Wxi.subScalar(u.mul(L.v[5],b.evaluations.eval_s2)),void m.Wxi.divByZerofier(1,L.xi),a&&a.debug("> Computing opening proof polynomial Wxiw(X) polynomial");(async function(){m.Wxiw=nl.fromPolynomial(m.Z,d,a),m.Wxiw.subScalar(b.evaluations.eval_zw),m.Wxiw.divByZerofier(1,L.xiw)})(),a&&a.debug("> Computing Wxi, Wxiw MSM");let t=await m.Wxi.multiExponentiation(A,"Wxi"),e=await m.Wxiw.multiExponentiation(A,"Wxiw");b.addPolynomial("Wxi",t),b.addPolynomial("Wxiw",e)}(),await r.close(),await o.close();let I=b.toObjectProof(!1);return I.protocol="plonk",I.curve=d.name,a&&a.debug("PLONK PROVER FINISHED"),{proof:rl(I),publicSignals:rl(C)};function F(t,e){const a=t.slice(e,e+4);return new DataView(a.buffer,a.byteOffset,a.byteLength).getUint32(0,!0)}function x(t){return ta;){const e=o.shift(),a=o.shift(),i=e[0],n=a[0],l=w++,r=t.zero,s=t.neg(e[1]),c=t.neg(a[1]),d=t.one,u=t.zero;p.push([i,n,l,r,s,c,d,u]),m.push([i,n,e[1],a[1]]),o.push([l,t.one])}for(let t=0;t0?i.toString():a!=t.zero?"k":"0"}function s(e,a,s){const c=r(e),d=r(a);if("0"===c||"0"===d)i(s),l(s);else if("k"===c){l(o(a,e[0],s))}else if("k"===d){l(o(e,a[0],s))}else!function(e,a,i){const o=n(e,1),l=n(a,1),r=n(i,1),s=o.s[0],c=l.s[0],d=r.s[0],u=t.mul(o.coefs[0],l.coefs[0]),g=t.mul(o.coefs[0],l.k),f=t.mul(o.k,l.coefs[0]),h=t.neg(r.coefs[0]),_=t.sub(t.mul(o.k,l.k),r.k);p.push([s,c,d,u,g,f,h,_])}(e,a,s)}for(let e=1;e<=L;e++){const a=e,i=0,o=0,n=t.zero,l=t.one,r=t.zero,s=t.zero,c=t.zero;p.push([a,i,o,n,l,r,s,c])}for(let t=0;tr)return i&&i.error(`circuit too big for this power of tau ceremony. ${p.length} > 2**${r}`),-1;if(!n[12])return i&&i.error("Powers of tau is not prepared."),-1;const C=new Se(A*u),I=n[12][0].p+(2**y-1)*u;await o.readToBuffer(C,0,A*u,I);const[F,x]=function(){let t=h.two;for(;a(t,[],y);)h.add(t,h.one);let e=h.add(t,h.one);for(;a(e,[t],y);)h.add(e,h.one);return[t,e];function a(t,e,a){const i=2**a;let o=h.one;for(let n=0;n0?2:this.Fr.isZero(e)?0:1}normalizeLinearCombination(t){const e=Object.keys(t);for(let a=0;ao;){const i=l.shift(),o=l.shift(),n=t.nVars++,r=this.fnGetAdditionConstraint(i[0],o[0],n,this.Fr.neg(i[1]),this.Fr.neg(o[1]),this.Fr.zero,this.Fr.one,this.Fr.zero);e.push(r),a.push([i[0],o[0],i[1],o[1]]),l.push([n,this.Fr.one])}for(let t=0;tthis.n-1)throw new Error("CPolynomial:addPolynomial, cannot add a polynomial to a position greater than n-1");this.polynomials[t]=e}degree(){let t=this.polynomials.map(((t,e)=>void 0===t?0:t.degree()*this.n+e));return Math.max(...t)}getPolynomial(){let t=this.polynomials.map((t=>void 0===t?0:t.degree()));const e=this.degree(),a=2**(Qi(e-1)+1),i=this.Fr.n8;let o=new nl(new Se(a*i),this.curve,this.logger);for(let a=0;a Reading witness file");const{fd:o,sections:n}=await za(e,"wtns",2),l=await vo(o,n);a&&a.info("> Reading zkey file");const{fd:r,sections:s}=await za(t,"zkey",2),c=await yo(r,s,void 0,i);if(c.protocolId!==Ji)throw new Error("zkey file is not fflonk");if(!ga.eq(c.r,l.q))throw new Error("Curve of the witness does not match the curve of the proving key");if(l.nWitness!==c.nVars-c.nAdditions)throw new Error(`Invalid witness length. Circuit: ${c.nVars}, witness: ${l.nWitness}, ${c.nAdditions}`);const d=c.curve,u=d.Fr,g=d.Fr.n8,f=2*d.G1.F.n8,h=c.domainSize*g;a&&(a.info("----------------------------"),a.info(" FFLONK PROVE SETTINGS"),a.info(` Curve: ${d.name}`),a.info(` Circuit power: ${c.power}`),a.info(` Domain size: ${c.domainSize}`),a.info(` Vars: ${c.nVars}`),a.info(` Public vars: ${c.nPublic}`),a.info(` Constraints: ${c.nConstraints}`),a.info(` Additions: ${c.nAdditions}`),a.info("----------------------------")),a&&a.info("> Reading witness file data");const _=await Va(o,n,2);await o.close(),_.set(u.zero,0);const p=new Se(c.nAdditions*g);let m={},w={},L={},b={},y={},A={},C=new kn(d,a);a&&a.info(`> Reading Section ${to}. Additions`),await async function(){a&&a.info("··· Computing additions");const t=await Va(r,s,to),e=8+2*g;for(let i=0;i Reading Sections ${co},${uo},${go}. Sigma1, Sigma2 & Sigma 3`),a&&a.info("··· Reading Sigma polynomials "),w.Sigma1=new nl(new Se(h),d,a),w.Sigma2=new nl(new Se(h),d,a),w.Sigma3=new nl(new Se(h),d,a),await r.readToBuffer(w.Sigma1.coef,0,h,s[co][0].p),await r.readToBuffer(w.Sigma2.coef,0,h,s[uo][0].p),await r.readToBuffer(w.Sigma3.coef,0,h,s[go][0].p),a&&a.info("··· Reading Sigma evaluations"),L.Sigma1=new ll(new Se(4*h),d,a),L.Sigma2=new ll(new Se(4*h),d,a),L.Sigma3=new ll(new Se(4*h),d,a),await r.readToBuffer(L.Sigma1.eval,0,4*h,s[co][0].p+h),await r.readToBuffer(L.Sigma2.eval,0,4*h,s[uo][0].p+h),await r.readToBuffer(L.Sigma3.eval,0,4*h,s[go][0].p+h),a&&a.info(`> Reading Section ${ho}. Powers of Tau`);const I=new Se(16*c.domainSize*f);await r.readToBuffer(I,0,(9*c.domainSize+18)*f,s[ho][0].p),globalThis.gc&&globalThis.gc(),a&&a.info(""),a&&a.info("> ROUND 1"),await async function(){y.b=[];for(let t=1;t<=9;t++)y.b[t]=u.random();a&&a.info("> Computing A, B, C wire polynomials");await async function(){a&&a.info("··· Reading data from zkey file");m.A=new Se(h),m.B=new Se(h),m.C=new Se(h);const t=await Va(r,s,eo),e=await Va(r,s,ao),i=await Va(r,s,io);for(let a=0;a=c.domainSize)throw new Error("A Polynomial is not well calculated");if(w.B.degree()>=c.domainSize)throw new Error("B Polynomial is not well calculated");if(w.C.degree()>=c.domainSize)throw new Error("C Polynomial is not well calculated")}(),a&&a.info("> Computing T0 polynomial");await async function(){a&&a.info(`··· Reading sections ${oo}, ${no}, ${lo}, ${ro}, ${so}. Q selectors`);L.QL=new ll(new Se(4*h),d,a),L.QR=new ll(new Se(4*h),d,a),L.QM=new ll(new Se(4*h),d,a),L.QO=new ll(new Se(4*h),d,a),L.QC=new ll(new Se(4*h),d,a),await r.readToBuffer(L.QL.eval,0,4*h,s[oo][0].p+h),await r.readToBuffer(L.QR.eval,0,4*h,s[no][0].p+h),await r.readToBuffer(L.QM.eval,0,4*h,s[lo][0].p+h),await r.readToBuffer(L.QO.eval,0,4*h,s[ro][0].p+h),await r.readToBuffer(L.QC.eval,0,4*h,s[so][0].p+h);const t=await Va(r,s,fo);L.lagrange1=new ll(t,d,a),m.T0=new Se(4*h),a&&a.info("··· Computing T0 evaluations");for(let t=0;t<4*c.domainSize;t++){a&&0!==t&&t%1e5==0&&a.info(` T0 evaluation ${t}/${4*c.domainSize}`);const e=L.A.getEvaluation(t),i=L.B.getEvaluation(t),o=L.C.getEvaluation(t),n=L.QL.getEvaluation(t),l=L.QR.getEvaluation(t),r=L.QM.getEvaluation(t),s=L.QO.getEvaluation(t),d=L.QC.getEvaluation(t);let f=u.zero;for(let e=0;e=2*c.domainSize-2)throw new Error(`T0 Polynomial is not well calculated (degree is ${w.T0.degree()} and must be less than ${2*c.domainSize+2}`);delete m.T0}(),a&&a.info("> Computing C1 polynomial");await async function(){let t=new wl(4,d,a);if(t.addPolynomial(0,w.A),t.addPolynomial(1,w.B),t.addPolynomial(2,w.C),t.addPolynomial(3,w.T0),w.C1=t.getPolynomial(),w.C1.degree()>=8*c.domainSize-8)throw new Error("C1 Polynomial is not well calculated")}(),a&&a.info("> Computing C1 multi exponentiation");let t=await w.C1.multiExponentiation(I,"C1");return C.addPolynomial("C1",t),0}(),delete w.T0,delete L.QL,delete L.QR,delete L.QM,delete L.QO,delete L.QC,globalThis.gc&&globalThis.gc(),a&&a.info("> ROUND 2"),await async function(){a&&a.info("> Computing challenges beta and gamma");const t=new Vn(d);t.addPolCommitment(c.C0);for(let e=0;e Computing Z polynomial");await async function(){a&&a.info("··· Computing Z evaluations");let t=new Se(h),e=new Se(h);t.set(u.one,0),e.set(u.one,0);let i=u.one;for(let o=0;o=c.domainSize+3)throw new Error("Z Polynomial is not well calculated");delete m.Z}(),a&&a.info("> Computing T1 polynomial");await async function(){a&&a.info("··· Computing T1 evaluations");m.T1=new Se(2*h),m.T1z=new Se(2*h);let t=u.one;for(let e=0;e<2*c.domainSize;e++){a&&0!==e&&e%1e5==0&&a.info(` T1 evaluation ${e}/${4*c.domainSize}`);const i=u.square(t),o=L.Z.getEvaluation(2*e),n=u.add(u.add(u.mul(y.b[7],i),u.mul(y.b[8],t)),y.b[9]),l=L.lagrange1.getEvaluation(c.domainSize+2*e);let r=u.mul(u.sub(o,u.one),l),s=u.mul(n,l);m.T1.set(r,e*g),m.T1z.set(s,e*g),t=u.mul(t,u.w[c.power+1])}a&&a.info("··· Computing T1 ifft");w.T1=await nl.fromEvaluations(m.T1,d,a),w.T1.divByZerofier(c.domainSize,u.one),a&&a.info("··· Computing T1z ifft");if(w.T1z=await nl.fromEvaluations(m.T1z,d,a),w.T1.add(w.T1z),w.T1.degree()>=c.domainSize+2)throw new Error("T1 Polynomial is not well calculated");delete m.T1,delete m.T1z,delete w.T1z}(),a&&a.info("> Computing T2 polynomial");await async function(){a&&a.info("··· Computing T2 evaluations");m.T2=new Se(4*h),m.T2z=new Se(4*h);let t=u.one;for(let e=0;e<4*c.domainSize;e++){a&&0!==e&&e%1e5==0&&a.info(` T2 evaluation ${e}/${4*c.domainSize}`);const i=u.square(t),o=u.mul(t,u.w[c.power]),n=u.square(o),l=L.A.getEvaluation(e),r=L.B.getEvaluation(e),s=L.C.getEvaluation(e),d=L.Z.getEvaluation(e),f=L.Z.getEvaluation((4*c.domainSize+4+e)%(4*c.domainSize)),h=u.add(u.add(u.mul(y.b[7],i),u.mul(y.b[8],t)),y.b[9]),_=u.add(u.add(u.mul(y.b[7],n),u.mul(y.b[8],o)),y.b[9]),p=L.Sigma1.getEvaluation(e),w=L.Sigma2.getEvaluation(e),b=L.Sigma3.getEvaluation(e),A=u.mul(y.beta,t);let C=u.add(l,A);C=u.add(C,y.gamma);let I=u.add(r,u.mul(A,c.k1));I=u.add(I,y.gamma);let F=u.add(s,u.mul(A,c.k2));F=u.add(F,y.gamma);let x=u.mul(u.mul(u.mul(C,I),F),d),E=u.mul(u.mul(u.mul(C,I),F),h),v=u.add(l,u.mul(y.beta,p));v=u.add(v,y.gamma);let B=u.add(r,u.mul(y.beta,w));B=u.add(B,y.gamma);let S=u.add(s,u.mul(y.beta,b));S=u.add(S,y.gamma);let P=u.mul(u.mul(u.mul(v,B),S),f),G=u.mul(u.mul(u.mul(v,B),S),_),O=u.sub(x,P),T=u.sub(E,G);m.T2.set(O,e*g),m.T2z.set(T,e*g),t=u.mul(t,u.w[c.power+2])}a&&a.info("··· Computing T2 ifft");w.T2=await nl.fromEvaluations(m.T2,d,a),a&&a.info("··· Computing T2 / ZH");w.T2.divByZerofier(c.domainSize,u.one),a&&a.info("··· Computing T2z ifft");if(w.T2z=await nl.fromEvaluations(m.T2z,d,a),w.T2.add(w.T2z),w.T2.degree()>=3*c.domainSize)throw new Error("T2 Polynomial is not well calculated");delete m.T2,delete m.T2z,delete w.T2z}(),a&&a.info("> Computing C2 polynomial");await async function(){let t=new wl(3,d,a);if(t.addPolynomial(0,w.Z),t.addPolynomial(1,w.T1),t.addPolynomial(2,w.T2),w.C2=t.getPolynomial(),w.C2.degree()>=9*c.domainSize)throw new Error("C2 Polynomial is not well calculated")}(),a&&a.info("> Computing C2 multi exponentiation");let e=await w.C2.multiExponentiation(I,"C2");return C.addPolynomial("C2",e),0}(),delete m.A,delete m.B,delete m.C,delete L.A,delete L.B,delete L.C,delete L.Sigma1,delete L.Sigma2,delete L.Sigma3,delete L.lagrange1,delete L.Z,globalThis.gc&&globalThis.gc(),a&&a.info("> ROUND 3"),await async function(){a&&a.info("> Computing challenge xi");const t=new Vn(d);t.addScalar(y.gamma),t.addPolCommitment(C.getPolynomial("C2")),y.xiSeed=t.getChallenge();const e=u.square(y.xiSeed);A.w8=[],A.w8[0]=u.one;for(let t=1;t<8;t++)A.w8[t]=u.mul(A.w8[t-1],c.w8);A.w4=[],A.w4[0]=u.one;for(let t=1;t<4;t++)A.w4[t]=u.mul(A.w4[t-1],c.w4);A.w3=[],A.w3[0]=u.one,A.w3[1]=c.w3,A.w3[2]=u.square(c.w3),A.S0={},A.S0.h0w8=[],A.S0.h0w8[0]=u.mul(e,y.xiSeed);for(let t=1;t<8;t++)A.S0.h0w8[t]=u.mul(A.S0.h0w8[0],A.w8[t]);A.S1={},A.S1.h1w4=[],A.S1.h1w4[0]=u.square(A.S0.h0w8[0]);for(let t=1;t<4;t++)A.S1.h1w4[t]=u.mul(A.S1.h1w4[0],A.w4[t]);A.S2={},A.S2.h2w3=[],A.S2.h2w3[0]=u.mul(A.S1.h1w4[0],e),A.S2.h2w3[1]=u.mul(A.S2.h2w3[0],A.w3[1]),A.S2.h2w3[2]=u.mul(A.S2.h2w3[0],A.w3[2]),A.S2.h3w3=[],A.S2.h3w3[0]=u.mul(A.S2.h2w3[0],c.wr),A.S2.h3w3[1]=u.mul(A.S2.h3w3[0],A.w3[1]),A.S2.h3w3[2]=u.mul(A.S2.h3w3[0],A.w3[2]),y.xi=u.mul(u.square(A.S2.h2w3[0]),A.S2.h2w3[0]),a&&a.info("··· challenges.xi: "+u.toString(y.xi));w.QL=new nl(new Se(h),d,a),w.QR=new nl(new Se(h),d,a),w.QM=new nl(new Se(h),d,a),w.QO=new nl(new Se(h),d,a),w.QC=new nl(new Se(h),d,a),await r.readToBuffer(w.QL.coef,0,h,s[oo][0].p),await r.readToBuffer(w.QR.coef,0,h,s[no][0].p),await r.readToBuffer(w.QM.coef,0,h,s[lo][0].p),await r.readToBuffer(w.QO.coef,0,h,s[ro][0].p),await r.readToBuffer(w.QC.coef,0,h,s[so][0].p),a&&a.info("··· Computing evaluations");C.addEvaluation("ql",w.QL.evaluate(y.xi)),C.addEvaluation("qr",w.QR.evaluate(y.xi)),C.addEvaluation("qm",w.QM.evaluate(y.xi)),C.addEvaluation("qo",w.QO.evaluate(y.xi)),C.addEvaluation("qc",w.QC.evaluate(y.xi)),C.addEvaluation("s1",w.Sigma1.evaluate(y.xi)),C.addEvaluation("s2",w.Sigma2.evaluate(y.xi)),C.addEvaluation("s3",w.Sigma3.evaluate(y.xi)),C.addEvaluation("a",w.A.evaluate(y.xi)),C.addEvaluation("b",w.B.evaluate(y.xi)),C.addEvaluation("c",w.C.evaluate(y.xi)),C.addEvaluation("z",w.Z.evaluate(y.xi)),y.xiw=u.mul(y.xi,u.w[c.power]),C.addEvaluation("zw",w.Z.evaluate(y.xiw)),C.addEvaluation("t1w",w.T1.evaluate(y.xiw)),C.addEvaluation("t2w",w.T2.evaluate(y.xiw))}(),delete w.A,delete w.B,delete w.C,delete w.Z,delete w.T1,delete w.T2,delete w.Sigma1,delete w.Sigma2,delete w.Sigma3,delete w.QL,delete w.QR,delete w.QM,delete w.QC,delete w.QO,globalThis.gc&&globalThis.gc(),a&&a.info("> ROUND 4"),await async function(){a&&a.info("> Computing challenge alpha");const t=new Vn(d);t.addScalar(y.xiSeed),t.addScalar(C.getEvaluation("ql")),t.addScalar(C.getEvaluation("qr")),t.addScalar(C.getEvaluation("qm")),t.addScalar(C.getEvaluation("qo")),t.addScalar(C.getEvaluation("qc")),t.addScalar(C.getEvaluation("s1")),t.addScalar(C.getEvaluation("s2")),t.addScalar(C.getEvaluation("s3")),t.addScalar(C.getEvaluation("a")),t.addScalar(C.getEvaluation("b")),t.addScalar(C.getEvaluation("c")),t.addScalar(C.getEvaluation("z")),t.addScalar(C.getEvaluation("zw")),t.addScalar(C.getEvaluation("t1w")),t.addScalar(C.getEvaluation("t2w")),y.alpha=t.getChallenge(),a&&a.info("··· challenges.alpha: "+u.toString(y.alpha));a&&a.info("> Reading C0 polynomial");w.C0=new nl(new Se(8*h),d,a),await r.readToBuffer(w.C0.coef,0,8*h,s[_o][0].p),a&&a.info("> Computing R0 polynomial");(function(){if(w.R0=nl.lagrangePolynomialInterpolation([A.S0.h0w8[0],A.S0.h0w8[1],A.S0.h0w8[2],A.S0.h0w8[3],A.S0.h0w8[4],A.S0.h0w8[5],A.S0.h0w8[6],A.S0.h0w8[7]],[w.C0.evaluate(A.S0.h0w8[0]),w.C0.evaluate(A.S0.h0w8[1]),w.C0.evaluate(A.S0.h0w8[2]),w.C0.evaluate(A.S0.h0w8[3]),w.C0.evaluate(A.S0.h0w8[4]),w.C0.evaluate(A.S0.h0w8[5]),w.C0.evaluate(A.S0.h0w8[6]),w.C0.evaluate(A.S0.h0w8[7])],d),w.R0.degree()>7)throw new Error("R0 Polynomial is not well calculated")})(),a&&a.info("> Computing R1 polynomial");(function(){if(w.R1=nl.lagrangePolynomialInterpolation([A.S1.h1w4[0],A.S1.h1w4[1],A.S1.h1w4[2],A.S1.h1w4[3]],[w.C1.evaluate(A.S1.h1w4[0]),w.C1.evaluate(A.S1.h1w4[1]),w.C1.evaluate(A.S1.h1w4[2]),w.C1.evaluate(A.S1.h1w4[3])],d),w.R1.degree()>3)throw new Error("R1 Polynomial is not well calculated")})(),a&&a.info("> Computing R2 polynomial");(function(){if(w.R2=nl.lagrangePolynomialInterpolation([A.S2.h2w3[0],A.S2.h2w3[1],A.S2.h2w3[2],A.S2.h3w3[0],A.S2.h3w3[1],A.S2.h3w3[2]],[w.C2.evaluate(A.S2.h2w3[0]),w.C2.evaluate(A.S2.h2w3[1]),w.C2.evaluate(A.S2.h2w3[2]),w.C2.evaluate(A.S2.h3w3[0]),w.C2.evaluate(A.S2.h3w3[1]),w.C2.evaluate(A.S2.h3w3[2])],d),w.R2.degree()>5)throw new Error("R2 Polynomial is not well calculated")})(),a&&a.info("> Computing F polynomial");await async function(){a&&a.info("··· Computing F polynomial");w.F=nl.fromPolynomial(w.C0,d,a),w.F.sub(w.R0),w.F.divByZerofier(8,y.xi);let t=nl.fromPolynomial(w.C1,d,a);t.sub(w.R1),t.mulScalar(y.alpha),t.divByZerofier(4,y.xi);let e=nl.fromPolynomial(w.C2,d,a);if(e.sub(w.R2),e.mulScalar(u.square(y.alpha)),e.divByZerofier(3,y.xi),e.divByZerofier(3,y.xiw),w.F.add(t),w.F.add(e),w.F.degree()>=9*c.domainSize-6)throw new Error("F Polynomial is not well calculated")}(),a&&a.info("> Computing W1 multi exponentiation");let e=await w.F.multiExponentiation(I,"W1");return C.addPolynomial("W1",e),0}(),globalThis.gc&&globalThis.gc(),a&&a.info("> ROUND 5"),await async function(){a&&a.info("> Computing challenge y");const t=new Vn(d);t.addScalar(y.alpha),t.addPolCommitment(C.getPolynomial("W1")),y.y=t.getChallenge(),a&&a.info("··· challenges.y: "+u.toString(y.y));a&&a.info("> Computing L polynomial");await async function(){a&&a.info("··· Computing L polynomial");const t=w.R0.evaluate(y.y),e=w.R1.evaluate(y.y),i=w.R2.evaluate(y.y);let o=u.sub(y.y,A.S0.h0w8[0]);for(let t=1;t<8;t++)o=u.mul(o,u.sub(y.y,A.S0.h0w8[t]));let n=u.sub(y.y,A.S1.h1w4[0]);for(let t=1;t<4;t++)n=u.mul(n,u.sub(y.y,A.S1.h1w4[t]));let l=u.sub(y.y,A.S2.h2w3[0]);for(let t=1;t<3;t++)l=u.mul(l,u.sub(y.y,A.S2.h2w3[t]));for(let t=0;t<3;t++)l=u.mul(l,u.sub(y.y,A.S2.h3w3[t]));let r=u.mul(n,l),s=u.mul(y.alpha,u.mul(o,l)),g=u.mul(u.square(y.alpha),u.mul(o,n));b.denH1=n,b.denH2=l,w.L=nl.fromPolynomial(w.C0,d,a),w.L.subScalar(t),w.L.mulScalar(r);let f=nl.fromPolynomial(w.C1,d,a);f.subScalar(e),f.mulScalar(s);let h=nl.fromPolynomial(w.C2,d,a);h.subScalar(i),h.mulScalar(g),w.L.add(f),w.L.add(h),a&&a.info("> Computing ZT polynomial");await async function(){w.ZT=nl.zerofierPolynomial([A.S0.h0w8[0],A.S0.h0w8[1],A.S0.h0w8[2],A.S0.h0w8[3],A.S0.h0w8[4],A.S0.h0w8[5],A.S0.h0w8[6],A.S0.h0w8[7],A.S1.h1w4[0],A.S1.h1w4[1],A.S1.h1w4[2],A.S1.h1w4[3],A.S2.h2w3[0],A.S2.h2w3[1],A.S2.h2w3[2],A.S2.h3w3[0],A.S2.h3w3[1],A.S2.h3w3[2]],d)}();const _=w.ZT.evaluate(y.y);if(w.F.mulScalar(_),w.L.sub(w.F),w.L.degree()>=9*c.domainSize)throw new Error("L Polynomial is not well calculated");delete m.L}(),a&&a.info("> Computing ZTS2 polynomial");await async function(){w.ZTS2=nl.zerofierPolynomial([A.S1.h1w4[0],A.S1.h1w4[1],A.S1.h1w4[2],A.S1.h1w4[3],A.S2.h2w3[0],A.S2.h2w3[1],A.S2.h2w3[2],A.S2.h3w3[0],A.S2.h3w3[1],A.S2.h3w3[2]],d)}();let e=w.ZTS2.evaluate(y.y);e=u.inv(e),w.L.mulScalar(e);const i=nl.fromCoefficientsArray([u.neg(y.y),u.one],d);a&&a.info("> Computing W' = L / ZTS2 polynomial");const o=w.L.divBy(i);if(o.degree()>0)throw new Error(`Degree of L(X)/(ZTS2(y)(X-y)) remainder is ${o.degree()} and should be 0`);if(w.L.degree()>=9*c.domainSize-1)throw new Error("Degree of L(X)/(ZTS2(y)(X-y)) is not correct");a&&a.info("> Computing W' multi exponentiation");let n=await w.L.multiExponentiation(I,"W2");return C.addPolynomial("W2",n),0}(),delete w.C0,delete w.C1,delete w.C2,delete w.R1,delete w.R2,delete w.F,delete w.L,delete w.ZT,delete w.ZTS2,await r.close(),globalThis.gc&&globalThis.gc(),C.addEvaluation("inv",function(){let t=y.xi;for(let e=0;e Reading PTau file");const{fd:o,sections:n}=await za(e,"ptau",1);if(!n[12])throw new Error("Powers of Tau is not well prepared. Section 12 missing.");i&&i.info("> Getting curve from PTau settings");const{curve:l}=await Wo(o,n);i&&i.info("> Reading r1cs file");const{fd:r,sections:s}=await za(t,"r1cs",1),c=await wn(r,s,{loadConstraints:!1,loadCustomGates:!0});if(c.prime!==l.r)throw new Error("r1cs curve does not match powers of tau ceremony curve");const d=l.Fr,u=l.Fr.n8,g=2*l.G1.F.n8,f=2*l.G2.F.n8;let h,_={},p={},m={nVars:c.nVars,nPublic:c.nOutputs+c.nPubInputs};const w=new Bn;let L=new Bn;if(i&&i.info("> Processing FFlonk constraints"),await async function(t,e,a){for(let e=0;e computing k1 and k2");const[b,y]=function(){let t=d.two;for(;a(t,[],m.cirPower);)d.add(t,d.one);let e=d.add(t,d.one);for(;a(e,[t],m.cirPower);)d.add(e,d.one);return[t,e];function a(t,e,a){const i=2**a;let o=d.one;for(let n=0;n computing w3");const A=function(){let t=d.e(31624),e=ga.div(3648040478639879203707734290876212514758060733402672390616367364429301415936n,ga.e(3));return d.exp(t,e)}();i&&i.info("> computing w4");const C=d.w[2];i&&i.info("> computing w8");const I=d.w[3];i&&i.info("> computing wr");const F=function(t,e){const a=e.e(467799165886069610036046866799264026481344299079011762026774533774345988080n);return e.exp(a,2**(28-t))}(m.cirPower,l.Fr);return await async function(){i&&i.info("> Writing the zkey file");const t=await Qa(a,"zkey",1,17,1<<22,1<<24);i&&i.info("··· Writing Section 1. Zkey Header");await async function(t){await qa(t,1),await t.writeULE32(Ji),await Ma(t)}(t),i&&i.info(`··· Writing Section ${to}. Additions`);await async function(t){await qa(t,to);const e=new Uint8Array(8+2*u),a=new DataView(e.buffer);for(let o=0;o=8*m.domainSize)throw new Error("C0 Polynomial is not well calculated");await qa(t,_o),await t.write(_.C0.coef),await Ma(t)}(t),globalThis.gc&&globalThis.gc();i&&i.info(`··· Writing Section ${Xi}. FFlonk Header`);await async function(t){await qa(t,Xi);const e=l.q,a=8*(Math.floor((ga.bitLength(e)-1)/64)+1);await t.writeULE32(a),await Da(t,e,a);const i=l.r,r=8*(Math.floor((ga.bitLength(i)-1)/64)+1);let s;await t.writeULE32(r),await Da(t,i,r),await t.writeULE32(m.nVars),await t.writeULE32(m.nPublic),await t.writeULE32(m.domainSize),await t.writeULE32(L.length),await t.writeULE32(w.length),await t.write(b),await t.write(y),await t.write(A),await t.write(C),await t.write(I),await t.write(F),s=await o.read(f,n[3][0].p+f),await t.write(s);let c=await _.C0.multiExponentiation(h,"C0");await t.write(c),await Ma(t)}(t),globalThis.gc&&globalThis.gc();i&&i.info("> Writing the zkey file finished");await t.close()}(),await r.close(),await o.close(),i&&i.info("FFLONK SETUP FINISHED"),0;async function x(t,e,a,o){await qa(t,e);for(let e=0;e Checking commitments belong to G1"),!function(t,e,a){const i=t.G1;return i.isValid(e.polynomials.C1)&&i.isValid(e.polynomials.C2)&&i.isValid(e.polynomials.W1)&&i.isValid(e.polynomials.W2)&&i.isValid(a.C0)}(o,l,n))return i&&i.error("Proof commitments are not valid"),!1;if(i&&i.info("> Checking evaluations belong to F"),!function(t,e){return Il(t,e.evaluations.ql)&&Il(t,e.evaluations.qr)&&Il(t,e.evaluations.qm)&&Il(t,e.evaluations.qo)&&Il(t,e.evaluations.qc)&&Il(t,e.evaluations.s1)&&Il(t,e.evaluations.s2)&&Il(t,e.evaluations.s3)&&Il(t,e.evaluations.a)&&Il(t,e.evaluations.b)&&Il(t,e.evaluations.c)&&Il(t,e.evaluations.z)&&Il(t,e.evaluations.zw)&&Il(t,e.evaluations.t1w)&&Il(t,e.evaluations.t2w)}(o,l))return i&&i.error("Proof evaluations are not valid."),!1;if(i&&i.info("> Checking public inputs belong to F"),!function(t,e){for(let a=0;a Computing challenges");const{challenges:c,roots:d}=function(t,e,a,i,o){const n=t.Fr,l={},r={},s=new Vn(t);s.addPolCommitment(a.C0);for(let t=0;t Computing Zero polynomial evaluation Z_H(xi)"),c.zh=s.sub(c.xiN,s.one),c.invzh=s.inv(c.zh),i&&i.info("> Computing Lagrange evaluations");const u=await async function(t,e,a){const i=t.Fr,o=Math.max(1,a.nPublic),n=new Se(o*i.n8);let l=new Se(o*i.n8),r=i.one;for(let t=0;t Computing polynomial identities PI(X)");const g=function(t,e,a){const i=t.Fr;let o=i.zero;for(let t=0;t Computing r0(y)");const f=function(t,e,a,i,o){const n=i.Fr,l=Fl(a.S0.h0w8,e.y,e.xi,i);o&&o.info("··· Computing r0(y)");let r=n.zero;for(let e=0;e<8;e++){let i=[];i[1]=a.S0.h0w8[e];for(let t=2;t<8;t++)i[t]=n.mul(i[t-1],a.S0.h0w8[e]);let o=n.add(t.evaluations.ql,n.mul(t.evaluations.qr,i[1]));o=n.add(o,n.mul(t.evaluations.qo,i[2])),o=n.add(o,n.mul(t.evaluations.qm,i[3])),o=n.add(o,n.mul(t.evaluations.qc,i[4])),o=n.add(o,n.mul(t.evaluations.s1,i[5])),o=n.add(o,n.mul(t.evaluations.s2,i[6])),o=n.add(o,n.mul(t.evaluations.s3,i[7])),r=n.add(r,n.mul(o,l[e]))}return r}(l,c,d,o,i);i&&i.info("> Computing r1(y)");const h=function(t,e,a,i,o,n){const l=o.Fr,r=Fl(a.S1.h1w4,e.y,e.xi,o);n&&n.info("··· Computing T0(xi)");let s=l.mul(t.evaluations.ql,t.evaluations.a);s=l.add(s,l.mul(t.evaluations.qr,t.evaluations.b)),s=l.add(s,l.mul(t.evaluations.qm,l.mul(t.evaluations.a,t.evaluations.b))),s=l.add(s,l.mul(t.evaluations.qo,t.evaluations.c)),s=l.add(s,t.evaluations.qc),s=l.add(s,i),s=l.mul(s,e.invzh),n&&n.info("··· Computing C1(h_1ω_4^i) values");let c=l.zero;for(let e=0;e<4;e++){let i=t.evaluations.a;i=l.add(i,l.mul(a.S1.h1w4[e],t.evaluations.b));const o=l.square(a.S1.h1w4[e]);i=l.add(i,l.mul(o,t.evaluations.c)),i=l.add(i,l.mul(l.mul(o,a.S1.h1w4[e]),s)),c=l.add(c,l.mul(i,r[e]))}return c}(l,c,d,g,o,i);i&&i.info("> Computing r2(y)");const _=function(t,e,a,i,o,n,l){const r=n.Fr,s=function(t,e,a,i,o){const n=o.Fr,l=[],r=t[0].length,s=r*t.length,c=n.exp(e,s),d=n.mul(n.add(a,i),n.exp(e,r)),u=n.mul(a,i),g=n.add(n.sub(c,d),u);let f=n.mul(n.mul(n.e(r),t[0][0]),n.sub(a,i));for(let a=0;a Computing F");const p=function(t,e,a,i,o){const n=t.G1,l=t.Fr;let r=l.sub(i.y,o.S0.h0w8[0]);for(let t=1;t<8;t++)r=l.mul(r,l.sub(i.y,o.S0.h0w8[t]));i.temp=r;let s=l.sub(i.y,o.S1.h1w4[0]);for(let t=1;t<4;t++)s=l.mul(s,l.sub(i.y,o.S1.h1w4[t]));let c=l.sub(i.y,o.S2.h2w3[0]);for(let t=1;t<3;t++)c=l.mul(c,l.sub(i.y,o.S2.h2w3[t]));for(let t=0;t<3;t++)c=l.mul(c,l.sub(i.y,o.S2.h3w3[t]));i.quotient1=l.mul(i.alpha,l.div(r,s)),i.quotient2=l.mul(l.square(i.alpha),l.div(r,c));let d=n.timesFr(e.polynomials.C1,i.quotient1),u=n.timesFr(e.polynomials.C2,i.quotient2);return n.add(a.C0,n.add(d,u))}(o,l,n,c,d);i&&i.info("> Computing E");const m=function(t,e,a,i,o,n,l){const r=t.G1,s=t.Fr;let c=s.mul(n,a.quotient1),d=s.mul(l,a.quotient2);return r.timesFr(r.one,s.add(o,s.add(c,d)))}(o,0,c,0,f,h,_);i&&i.info("> Computing J");const w=function(t,e,a){const i=t.G1;return i.timesFr(e.polynomials.W1,a.temp)}(o,l,c);i&&i.info("> Validate all evaluations with a pairing");const L=await async function(t,e,a,i,o,n,l){const r=t.G1;let s=r.timesFr(e.polynomials.W2,a.y);s=r.add(r.sub(r.sub(o,n),l),s);const c=t.G2.one,d=e.polynomials.W2,u=i.X_2;return await t.pairingEq(r.neg(s),c,d,u)}(o,l,c,n,p,m,w);return i&&(L?i.info("PROOF VERIFIED SUCCESSFULLY"):i.warn("Invalid Proof")),i&&i.info("FFLONK VERIFIER FINISHED"),L},exportSolidityVerifier:qn,exportSolidityCallData:async function(t,e){const a=xl(e),i=xl(t),o=await Xa(a.curve);o.G1,o.Fr;let n="";for(let t=0;t= 0) { - curve = await buildBn128(); + curve = await buildBn128(singleThread); } else if (["BLS12381"].indexOf(normName) >= 0) { - curve = await buildBls12381(); + curve = await buildBls12381(singleThread); } else { throw new Error(`Curve not supported: ${name}`); } diff --git a/src/fflonk_full_prove.js b/src/fflonk_full_prove.js index 9fa17217..a4029569 100644 --- a/src/fflonk_full_prove.js +++ b/src/fflonk_full_prove.js @@ -20,7 +20,7 @@ import wtns_calculate from "./wtns_calculate.js"; import {utils} from "ffjavascript"; const {unstringifyBigInts} = utils; -export default async function fflonkFullProve(_input, wasmFilename, zkeyFilename, logger, wtnsCalcOptions) { +export default async function fflonkFullProve(_input, wasmFilename, zkeyFilename, logger, wtnsCalcOptions, proverOptions) { const input = unstringifyBigInts(_input); const wtns= {type: "mem"}; @@ -29,5 +29,5 @@ export default async function fflonkFullProve(_input, wasmFilename, zkeyFilename await wtns_calculate(input, wasmFilename, wtns, wtnsCalcOptions); // Compute the proof - return await fflonkProve(zkeyFilename, wtns, logger); + return await fflonkProve(zkeyFilename, wtns, logger, proverOptions); } \ No newline at end of file diff --git a/src/fflonk_prove.js b/src/fflonk_prove.js index c0dbafcd..3fb820db 100644 --- a/src/fflonk_prove.js +++ b/src/fflonk_prove.js @@ -48,7 +48,7 @@ import { CPolynomial } from "./polynomial/cpolynomial.js"; const { stringifyBigInts } = utils; -export default async function fflonkProve(zkeyFileName, witnessFileName, logger) { +export default async function fflonkProve(zkeyFileName, witnessFileName, logger, options) { if (logger) logger.info("FFLONK PROVER STARTED"); // Read witness file @@ -65,7 +65,8 @@ export default async function fflonkProve(zkeyFileName, witnessFileName, logger) fd: fdZKey, sections: zkeySections } = await binFileUtils.readBinFile(zkeyFileName, "zkey", 2, 1 << 25, 1 << 23); - const zkey = await zkeyUtils.readHeader(fdZKey, zkeySections); + + const zkey = await zkeyUtils.readHeader(fdZKey, zkeySections, undefined, options); if (zkey.protocolId !== FFLONK_PROTOCOL_ID) { throw new Error("zkey file is not fflonk"); diff --git a/src/groth16_fullprove.js b/src/groth16_fullprove.js index 76560491..b83106d5 100644 --- a/src/groth16_fullprove.js +++ b/src/groth16_fullprove.js @@ -22,12 +22,12 @@ import wtns_calculate from "./wtns_calculate.js"; import {utils} from "ffjavascript"; const {unstringifyBigInts} = utils; -export default async function groth16FullProve(_input, wasmFile, zkeyFileName, logger, wtnsCalcOptions) { +export default async function groth16FullProve(_input, wasmFile, zkeyFileName, logger, wtnsCalcOptions, proverOptions) { const input = unstringifyBigInts(_input); const wtns= { type: "mem" }; await wtns_calculate(input, wasmFile, wtns, wtnsCalcOptions); - return await groth16_prove(zkeyFileName, wtns, logger); + return await groth16_prove(zkeyFileName, wtns, logger, proverOptions); } diff --git a/src/groth16_prove.js b/src/groth16_prove.js index deac9133..750f0d96 100644 --- a/src/groth16_prove.js +++ b/src/groth16_prove.js @@ -25,14 +25,14 @@ import { log2 } from "./misc.js"; import { Scalar, utils, BigBuffer } from "ffjavascript"; const {stringifyBigInts} = utils; -export default async function groth16Prove(zkeyFileName, witnessFileName, logger) { +export default async function groth16Prove(zkeyFileName, witnessFileName, logger, options) { const {fd: fdWtns, sections: sectionsWtns} = await binFileUtils.readBinFile(witnessFileName, "wtns", 2, 1<<25, 1<<23); const wtns = await wtnsUtils.readHeader(fdWtns, sectionsWtns); const {fd: fdZKey, sections: sectionsZKey} = await binFileUtils.readBinFile(zkeyFileName, "zkey", 2, 1<<25, 1<<23); - const zkey = await zkeyUtils.readHeader(fdZKey, sectionsZKey); + const zkey = await zkeyUtils.readHeader(fdZKey, sectionsZKey, undefined, options); if (zkey.protocol != "groth16") { throw new Error("zkey file is not groth16"); diff --git a/src/plonk_fullprove.js b/src/plonk_fullprove.js index 73b0fd05..e4e3ff77 100644 --- a/src/plonk_fullprove.js +++ b/src/plonk_fullprove.js @@ -22,12 +22,12 @@ import wtns_calculate from "./wtns_calculate.js"; import {utils} from "ffjavascript"; const {unstringifyBigInts} = utils; -export default async function plonkFullProve(_input, wasmFile, zkeyFileName, logger, wtnsCalcOptions) { +export default async function plonkFullProve(_input, wasmFile, zkeyFileName, logger, wtnsCalcOptions, proverOptions) { const input = unstringifyBigInts(_input); const wtns= { type: "mem" }; await wtns_calculate(input, wasmFile, wtns, wtnsCalcOptions); - return await plonk_prove(zkeyFileName, wtns, logger); + return await plonk_prove(zkeyFileName, wtns, logger, proverOptions); } diff --git a/src/plonk_prove.js b/src/plonk_prove.js index efb016fe..0837af74 100644 --- a/src/plonk_prove.js +++ b/src/plonk_prove.js @@ -44,7 +44,7 @@ import { ZKEY_PL_HEADER_SECTION, import { Polynomial } from "./polynomial/polynomial.js"; import { Evaluations } from "./polynomial/evaluations.js"; -export default async function plonk16Prove(zkeyFileName, witnessFileName, logger) { +export default async function plonk16Prove(zkeyFileName, witnessFileName, logger, options) { const {fd: fdWtns, sections: sectionsWtns} = await binFileUtils.readBinFile(witnessFileName, "wtns", 2, 1<<25, 1<<23); // Read witness file @@ -55,7 +55,7 @@ export default async function plonk16Prove(zkeyFileName, witnessFileName, logger if (logger) logger.debug("> Reading zkey file"); const {fd: fdZKey, sections: zkeySections} = await binFileUtils.readBinFile(zkeyFileName, "zkey", 2, 1<<25, 1<<23); - const zkey = await zkeyUtils.readHeader(fdZKey, zkeySections); + const zkey = await zkeyUtils.readHeader(fdZKey, zkeySections, undefined, options); if (zkey.protocol != "plonk") { throw new Error("zkey file is not plonk"); } diff --git a/src/zkey_utils.js b/src/zkey_utils.js index af9bab86..9aba07fb 100644 --- a/src/zkey_utils.js +++ b/src/zkey_utils.js @@ -205,7 +205,7 @@ async function readG2(fd, curve, toObject) { } -export async function readHeader(fd, sections, toObject) { +export async function readHeader(fd, sections, toObject, options) { // Read Header ///////////////////// await binFileUtils.startReadUniqueSection(fd, sections, 1); @@ -213,11 +213,11 @@ export async function readHeader(fd, sections, toObject) { await binFileUtils.endReadSection(fd); if (protocolId === GROTH16_PROTOCOL_ID) { - return await readHeaderGroth16(fd, sections, toObject); + return await readHeaderGroth16(fd, sections, toObject, options); } else if (protocolId === PLONK_PROTOCOL_ID) { - return await readHeaderPlonk(fd, sections, toObject); + return await readHeaderPlonk(fd, sections, toObject, options); } else if (protocolId === FFLONK_PROTOCOL_ID) { - return await readHeaderFFlonk(fd, sections, toObject); + return await readHeaderFFlonk(fd, sections, toObject, options); } else { throw new Error("Protocol not supported: "); } @@ -226,7 +226,7 @@ export async function readHeader(fd, sections, toObject) { -async function readHeaderGroth16(fd, sections, toObject) { +async function readHeaderGroth16(fd, sections, toObject, options) { const zkey = {}; zkey.protocol = "groth16"; @@ -241,7 +241,7 @@ async function readHeaderGroth16(fd, sections, toObject) { const n8r = await fd.readULE32(); zkey.n8r = n8r; zkey.r = await binFileUtils.readBigInt(fd, n8r); - zkey.curve = await getCurve(zkey.q); + zkey.curve = await getCurve(zkey.q, options); zkey.nVars = await fd.readULE32(); zkey.nPublic = await fd.readULE32(); zkey.domainSize = await fd.readULE32(); @@ -258,7 +258,7 @@ async function readHeaderGroth16(fd, sections, toObject) { } -async function readHeaderPlonk(fd, sections, toObject) { +async function readHeaderPlonk(fd, sections, toObject, options) { const zkey = {}; zkey.protocol = "plonk"; @@ -273,7 +273,7 @@ async function readHeaderPlonk(fd, sections, toObject) { const n8r = await fd.readULE32(); zkey.n8r = n8r; zkey.r = await binFileUtils.readBigInt(fd, n8r); - zkey.curve = await getCurve(zkey.q); + zkey.curve = await getCurve(zkey.q, options); zkey.nVars = await fd.readULE32(); zkey.nPublic = await fd.readULE32(); zkey.domainSize = await fd.readULE32(); @@ -298,7 +298,7 @@ async function readHeaderPlonk(fd, sections, toObject) { return zkey; } -async function readHeaderFFlonk(fd, sections, toObject) { +async function readHeaderFFlonk(fd, sections, toObject, options) { const zkey = {}; zkey.protocol = "fflonk"; @@ -308,7 +308,7 @@ async function readHeaderFFlonk(fd, sections, toObject) { const n8q = await fd.readULE32(); zkey.n8q = n8q; zkey.q = await binFileUtils.readBigInt(fd, n8q); - zkey.curve = await getCurve(zkey.q); + zkey.curve = await getCurve(zkey.q, options); const n8r = await fd.readULE32(); zkey.n8r = n8r; diff --git a/test/fullprocess.js b/test/fullprocess.js index 7ae8b199..4278e817 100644 --- a/test/fullprocess.js +++ b/test/fullprocess.js @@ -124,6 +124,14 @@ describe("Full process", function () { publicSignalsWithAlias[1] = BigInt(res.publicSignals[1]) + 21888242871839275222246405745257275088548364400416034343698204186575808495617n; }); + it ("groth16 proof singleThreaded", async () => { + const res = await snarkjs.groth16.prove(zkey_final, wtns, undefined, {singleThread: true}); + proof = res.proof; + publicSignals = res.publicSignals; + publicSignalsWithAlias = [...res.publicSignals]; + publicSignalsWithAlias[1] = BigInt(res.publicSignals[1]) + 21888242871839275222246405745257275088548364400416034343698204186575808495617n; + }); + it ("groth16 verify", async () => { const res = await snarkjs.groth16.verify(vKey, publicSignals, proof); assert(res == true);