socket-function 1.2.0 → 1.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/SocketFunction.d.ts +1 -1
- package/SocketFunctionTypes.d.ts +1 -1
- package/dist/SetProcessVariables.ts.cache +2 -2
- package/dist/SocketFunction.ts.cache +2 -2
- package/hot/HotReloadController.d.ts +3 -3
- package/hot/dist/HotReloadController.ts.cache +2 -2
- package/index.d.ts +9 -9
- package/package.json +1 -1
- package/require/CSSShim.d.ts +1 -1
- package/require/RequireController.d.ts +2 -2
- package/require/compileFlags.d.ts +1 -1
- package/require/dist/RequireController.ts.cache +2 -2
- package/require/dist/compileFlags.ts.cache +2 -2
- package/require/dist/extMapper.ts.cache +2 -2
- package/require/dist/require.ts.cache +2 -2
- package/require/require.d.ts +1 -1
- package/src/JSONLACKS/dist/JSONLACKS.ts.cache +2 -2
- package/src/callManager.d.ts +1 -1
- package/src/dist/CallFactory.ts.cache +2 -2
- package/src/dist/Zip.ts.cache +2 -2
- package/src/dist/bits.ts.cache +2 -2
- package/src/dist/buffers.ts.cache +2 -2
- package/src/dist/caching.ts.cache +2 -2
- package/src/dist/callHTTPHandler.ts.cache +2 -2
- package/src/dist/callManager.ts.cache +2 -2
- package/src/dist/certStore.ts.cache +2 -2
- package/src/dist/fixLargeNetworkCalls.ts.cache +2 -2
- package/src/dist/forwardPort.ts.cache +2 -2
- package/src/dist/https.ts.cache +2 -2
- package/src/dist/nodeCache.ts.cache +2 -2
- package/src/dist/nodeProxy.ts.cache +2 -2
- package/src/dist/protocolNegotiation.ts.cache +2 -2
- package/src/dist/tlsParsing.ts.cache +2 -2
- package/src/dist/webSocketServer.ts.cache +2 -2
- package/src/dist/websocketFactory.ts.cache +2 -2
- package/src/lz4/dist/LZ4.ts.cache +2 -2
- package/time/dist/trueTimeShim.ts.cache +86 -35
- package/time/trueTimeShim.ts +78 -27
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict"; var console = (function shimConsole() { let baseConsole = globalThis.console; if (typeof window !== "undefined") return baseConsole; let name = __filename.replaceAll("\\", "/").split("/").pop(); let dirName = __dirname.replaceAll("\\", "/").split("/").pop(); let context = { __FILE__: __filename, __DIR__: __dirname, __NAME__: name, __DIRNAME__: dirName }; let newConsole = { ...baseConsole }; for (let shim of ["log", "info", "warn", "error"]) { newConsole[shim] = (...args) => { args.push(context); baseConsole[shim](...args); }; } newConsole.__context = context; return newConsole; })(); "use strict";
|
|
1
|
+
"use strict"; var console = (function shimConsole() { let baseConsole = globalThis.console; if (typeof window !== "undefined") return baseConsole; let name = __filename.replaceAll("\\", "/").split("/").pop(); let dirName = __dirname.replaceAll("\\", "/").split("/").pop(); let context = { __FILE__: __filename, __DIR__: __dirname, __NAME__: name, __DIRNAME__: dirName }; let newConsole = { ...baseConsole }; for (let shim of ["log", "info", "warn", "error"]) { newConsole[shim] = (...args) => { args.push(context); baseConsole[shim](...args); }; } newConsole.__context = context; return newConsole; })(); "use strict"; var console = (function shimConsole() { let baseConsole = globalThis.console; if (typeof window !== "undefined") return baseConsole; let name = __filename.replaceAll("\\", "/").split("/").pop(); let dirName = __dirname.replaceAll("\\", "/").split("/").pop(); let context = { __FILE__: __filename, __DIR__: __dirname, __NAME__: name, __DIRNAME__: dirName }; let newConsole = { ...baseConsole }; for (let shim of ["log", "info", "warn", "error"]) { newConsole[shim] = (...args) => { args.push(context); baseConsole[shim](...args); }; } newConsole.__context = context; return newConsole; })(); "use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true , configurable: true});
|
|
3
3
|
//exports.getContentTypeFromBuffer = exports.getExtContentType = void 0;
|
|
4
4
|
function getExtContentType(ext) {
|
|
@@ -365,4 +365,4 @@ function getContentTypeFromBuffer(buffer) {
|
|
|
365
365
|
}
|
|
366
366
|
exports.getContentTypeFromBuffer = getContentTypeFromBuffer;
|
|
367
367
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXh0TWFwcGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZXh0TWFwcGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLFNBQWdCLGlCQUFpQixDQUFDLEdBQVc7SUFDekMsU0FBUztJQUNULElBQUksR0FBRyxLQUFLLE1BQU07UUFBRSxPQUFPLGVBQWUsQ0FBQztJQUMzQyxJQUFJLEdBQUcsS0FBSyxNQUFNO1FBQUUsT0FBTyxjQUFjLENBQUM7SUFDMUMsSUFBSSxHQUFHLEtBQUssTUFBTTtRQUFFLE9BQU8sV0FBVyxDQUFDO0lBQ3ZDLElBQUksR0FBRyxLQUFLLE1BQU07UUFBRSxPQUFPLFlBQVksQ0FBQztJQUN4QyxJQUFJLEdBQUcsS0FBSyxPQUFPO1FBQUUsT0FBTyxZQUFZLENBQUM7SUFDekMsSUFBSSxHQUFHLEtBQUssTUFBTTtRQUFFLE9BQU8sV0FBVyxDQUFDO0lBQ3ZDLElBQUksR0FBRyxLQUFLLE9BQU87UUFBRSxPQUFPLFlBQVksQ0FBQztJQUN6QyxJQUFJLEdBQUcsS0FBSyxPQUFPO1FBQUUsT0FBTyxZQUFZLENBQUM7SUFDekMsSUFBSSxHQUFHLEtBQUssT0FBTztRQUFFLE9BQU8sWUFBWSxDQUFDO0lBQ3pDLElBQUksR0FBRyxLQUFLLE9BQU87UUFBRSxPQUFPLFlBQVksQ0FBQztJQUN6QyxJQUFJLEdBQUcsS0FBSyxNQUFNO1FBQUUsT0FBTyxXQUFXLENBQUM7SUFDdkMsSUFBSSxHQUFHLEtBQUssT0FBTztRQUFFLE9BQU8sWUFBWSxDQUFDO0lBQ3pDLElBQUksR0FBRyxLQUFLLE1BQU07UUFBRSxPQUFPLFlBQVksQ0FBQztJQUN4QyxJQUFJLEdBQUcsS0FBSyxNQUFNO1FBQUUsT0FBTyxXQUFXLENBQUM7SUFFdkMsUUFBUTtJQUNSLElBQUksR0FBRyxLQUFLLE1BQU07UUFBRSxPQUFPLFlBQVksQ0FBQztJQUN4QyxJQUFJLEdBQUcsS0FBSyxNQUFNO1FBQUUsT0FBTyxXQUFXLENBQUM7SUFDdkMsSUFBSSxH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LGtCQUFrQixDQUFDO1FBQzlCLENBQUM7UUFBQyxXQUFNLENBQUM7WUFDTCxXQUFXO1FBQ2YsQ0FBQztJQUNMLENBQUM7SUFFRCxnQkFBZ0I7SUFDaEIsSUFBSSxVQUFVLENBQUMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztRQUFFLE9BQU8sd0JBQXdCLENBQUM7SUFDMUUsSUFBSSxVQUFVLENBQUMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztRQUFFLE9BQU8sMkJBQTJCLENBQUM7SUFDN0UsSUFBSSxVQUFVLENBQUMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztRQUFFLE9BQU8sbUJBQW1CLENBQUM7SUFFekcsT0FBTyxTQUFTLENBQUM7QUFDckIsQ0FBQztBQW5IRCw0REFtSEMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZnVuY3Rpb24gZ2V0RXh0Q29udGVudFR5cGUoZXh0OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIC8vIEltYWdlc1xuICAgIGlmIChleHQgPT09IFwiLnN2Z1wiKSByZXR1cm4gXCJpbWFnZS9zdmcreG1sXCI7XG4gICAgaWYgKGV4dCA9PT0gXCIuaWNvXCIpIHJldHVybiBcImltYWdlL3gtaWNvblwiO1xuICAgIGlmIChleHQgPT09IFwiLnBuZ1wiKSByZXR1cm4gXCJpbWFnZS9wbmdcIjtcbiAgICBpZiAoZXh0ID09PSBcIi5qcGdcIikgcmV0dXJuIFwiaW1hZ2UvanBlZ1wiO1xuICAgIGlmIChleHQgPT09IFwiLmpwZWdcIikgcmV0dXJuIFwiaW1hZ2UvanBlZ1wiO1xuICAgIGlmIChleHQgPT09IFwiLmdpZlwiKSByZXR1cm4gXCJpbWFnZS9naWZcIjtcbiAgICBpZiAoZXh0ID09PSBcIi53ZWJwXCIpIHJldHVybiBcImltYWdlL3dlYnBcIjtcbiAgICBpZiAoZXh0ID09PSBcIi5hdmlmXCIpIHJldHVybiBcImltYWdlL2F2aWZcIjtcbiAgICBpZiAoZXh0ID09PSBcIi5oZWljXCIpIHJldHVybiBcImltYWdlL2hlaWNcIjtcbiAgICBpZiAoZXh0ID09PSBcIi5oZWlmXCIpIHJldHVybiBcImltYWdlL2hlaWZcIjtcbiAgICBpZiAoZXh0ID09PSBcIi5ibXBcIikgcmV0dXJuIFwiaW1hZ2UvYm1wXCI7XG4gICAgaWYgKGV4dCA9PT0gXCIudGlmZlwiKSByZXR1cm4gXCJpbWFnZS90aWZmXCI7XG4gICAgaWYgKGV4dCA9PT0gXCIudGlmXCIpIHJldHVybiBcImltYWdlL3RpZmZcIjtcbiAgICBpZiAoZXh0ID09PSBcIi5qeGxcIikgcmV0dXJuIFwiaW1hZ2UvanhsXCI7XG5cbiAgICAvLyBBdWRpb1xuICAgIGlmIChleHQgPT09IFwiLm1wM1wiKSByZXR1cm4gXCJhdWRpby9tcGVnXCI7XG4gICAgaWYgKGV4dCA9PT0gXCIud2F2XCIpIHJldHVybiBcImF1ZGlvL3dhdlwiO1xuICAgIGlmIChleHQgPT09IFwiLm9nZ1wiKSByZXR1cm4gXCJhdWRpby9vZ2dcIjtcbiAgICBpZiAoZXh0ID09PSBcIi5tNGFcIikgcmV0dXJuIFwiYXVkaW8vbXA0XCI7XG4gICAgaWYgKGV4dCA9PT0gXCIuYWFjXCIpIHJldHVybiBcImF1ZGlvL2FhY1wiO1xuICAgIGlmIChleHQgPT09IFwiLmZsYWNcIikgcmV0dXJuIFwiYXVkaW8vZmxhY1wiO1xuICAgIGlmIChleHQgPT09IFwiLndtYVwiKSByZXR1cm4gXCJhdWRpby94LW1zLXdtYVwiO1xuICAgIGlmIChleHQgPT09IFwiLm9wdXNcIikgcmV0dXJuIFwiYXVkaW8vb3B1c1wiO1xuXG4gICAgLy8gVmlkZW9cbiAgICBpZiAoZXh0ID09PSBcIi5tcDRcIikgcmV0dXJuIFwidmlkZW8vbXA0XCI7XG4gICAgaWYgKGV4dCA9PT0gXCIud2VibVwiKSByZXR1cm4gXCJ2aWRlby93ZWJtXCI7XG4gICAgaWYgKGV4dCA9PT0gXCIubWt2XCIpIHJldHVybiBcInZpZGVvL3gtbWF0cm9za2FcIjtcbiAgICBpZiAoZXh0ID09PSBcIi5hdmlcIikgcmV0dXJuIFwidmlkZW8veC1tc3ZpZGVvXCI7XG4gICAgaWYgKGV4dCA9PT0gXCIubW92XCIpIHJldHVybiBcInZpZGVvL3F1aWNrdGltZVwiO1xuICAgIGlmIChleHQgPT09IFwiLndtdlwiKSByZXR1cm4gXCJ2aWRlby94LW1zLXdtdlwiO1xuICAgIGlmIChleHQgPT09IFwiLmZsdlwiKSByZXR1cm4gXCJ2aWRlby94LWZsdlwiO1xuICAgIGlmIChleHQgPT09IFwiLm00dlwiKSByZXR1cm4gXCJ2aWRlby94LW00dlwiO1xuXG4gICAgLy8gV2ViIGZpbGVzXG4gICAgaWYgKGV4dCA9PT0gXCIuaHRtbFwiKSByZXR1cm4gXCJ0ZXh0L2h0bWxcIjtcbiAgICBpZiAoZXh0ID09PSBcIi5odG1cIikgcmV0dXJuIFwidGV4dC9odG1sXCI7XG4gICAgaWYgKGV4dCA9PT0gXCIuY3NzXCIpIHJldHVybiBcInRleHQvY3NzXCI7XG4gICAgaWYgKGV4dCA9PT0gXCIuanNcIikgcmV0dXJuIFwidGV4dC9qYXZhc2NyaXB0XCI7XG4gICAgaWYgKGV4dCA9PT0gXCIubWpzXCIpIHJldHVybiBcInRleHQvamF2YXNjcmlwdFwiO1xuICAgIGlmIChleHQgPT09IFwiLmpzb25cIikgcmV0dXJuIFwiYXBwbGljYXRpb24vanNvblwiO1xuICAgIGlmIChleHQgPT09IFwiLnhtbFwiKSByZXR1cm4gXCJhcHBsaWNhdGlvbi94bWxcIjtcbiAgICBpZiAoZXh0ID09PSBcIi5yc3NcIikgcmV0dXJuIFwiYXBwbGljYXRpb24vcnNzK3htbFwiO1xuICAgIGlmIChleHQgPT09IFwiLmF0b21cIikgcmV0dXJuIFwiYXBwbGljYXRpb24vYXRvbSt4bWxcIjtcblxuICAgIC8vIERvY3VtZW50c1xuICAgIGlmIChleHQgPT09IFwiLnBkZlwiKSByZXR1cm4gXCJhcHBsaWNhdGlvbi9wZGZcIjtcbiAgICBpZiAoZXh0ID09PSBcIi5kb2NcIikgcmV0dXJuIFwiYXBwbGljYXRpb24vbXN3b3JkXCI7XG4gICAgaWYgKGV4dCA9PT0gXCIuZG9jeFwiKSByZXR1cm4gXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQud29yZHByb2Nlc3NpbmdtbC5kb2N1bWVudFwiO1xuICAgIGlmIChleHQgPT09IFwiLnhsc1wiKSByZXR1cm4gXCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWxcIjtcbiAgICBpZiAoZXh0ID09PSBcIi54bHN4XCIpIHJldHVybiBcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnNoZWV0XCI7XG4gICAgaWYgKGV4dCA9PT0gXCIucHB0XCIpIHJldHVybiBcImFwcGxpY2F0aW9uL3ZuZC5tcy1wb3dlcnBvaW50XCI7XG4gICAgaWYgKGV4dCA9PT0gXCIucHB0eFwiKSByZXR1cm4gXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQucHJlc2VudGF0aW9ubWwucHJlc2VudGF0aW9uXCI7XG4gICAgaWYgKGV4dCA9PT0gXCIub2R0XCIpIHJldHVybiBcImFwcGxpY2F0aW9uL3ZuZC5vYXNpcy5vcGVuZG9jdW1lbnQudGV4dFwiO1xuICAgIGlmIChleHQgPT09IFwiLm9kc1wiKSByZXR1cm4gXCJhcHBsaWNhdGlvbi92bmQub2FzaXMub3BlbmRvY3VtZW50LnNwcmVhZHNoZWV0XCI7XG4gICAgaWYgKGV4dCA9PT0gXCIub2RwXCIpIHJldHVybiBcImFwcGxpY2F0aW9uL3ZuZC5vYXNpcy5vcGVuZG9jdW1lbnQucHJlc2VudGF0aW9uXCI7XG4gICAgaWYgKGV4dCA9PT0gXCIucnRmXCIpIHJldHVybiBcImFwcGxpY2F0aW9uL3J0ZlwiO1xuXG4gICAgLy8gVGV4dCBmaWxlc1xuICAgIGlmIChleHQgPT09IFwiLnR4dFwiKSByZXR1cm4gXCJ0ZXh0L3BsYWluXCI7XG4gICAgaWYgKGV4dCA9PT0gXCIubWRcIikgcmV0dXJuIFwidGV4dC9tYXJrZG93blwiO1xuICAgIGlmIChleHQgPT09IFwiLmNzdlwiKSByZXR1cm4gXCJ0ZXh0L2NzdlwiO1xuICAgIGlmIChleHQgPT09IFwiLmxvZ1wiKSByZXR1cm4gXCJ0ZXh0L3BsYWluXCI7XG5cbiAgICAvLyBQcm9ncmFtbWluZyBmaWxlc1xuICAgIGlmIChleHQgPT09IFwiLnRzXCIpIHJldHVybiBcInRleHQvdHlwZXNjcmlwdFwiO1xuICAgIGlmIChleHQgPT09IFwiLnRzeFwiKSByZXR1cm4gXCJ0ZXh0L3R5cGVzY3JpcHRcIjtcbiAgICBpZiAoZXh0ID09PSBcIi5qc3hcIikgcmV0dXJuIFwidGV4dC9qYXZhc2NyaXB0XCI7XG4gICAgaWYgKGV4dCA9PT0gXCIucHlcIikgcmV0dXJuIFwidGV4dC94LXB5dGhvblwiO1xuICAgIGlmIChleHQgPT09IFwiLmphdmFcIikgcmV0dXJuIFwidGV4dC94LWphdmEtc291cmNlXCI7XG4gICAgaWYgKGV4dCA9PT0gXCIuY1wiKSByZXR1cm4gXCJ0ZXh0L3gtY1wiO1xuICAgIGlmIChleHQgPT09IFwiLmNwcFwiKSByZXR1cm4gXCJ0ZXh0L3gtYysrXCI7XG4gICAgaWYgKGV4dCA9PT0gXCIuaFwiKSByZXR1cm4gXCJ0ZXh0L3gtY1wiO1xuICAgIGlmIChleHQgPT09IFwiLmhwcFwiKSByZXR1cm4gXCJ0ZXh0L3gtYysrXCI7XG4gICAgaWYgKGV4dCA9PT0gXCIuY3NcIikgcmV0dXJuIFwidGV4dC94LWNzaGFycFwiO1xuICAgIGlmIChleHQgPT09IFwiLnBocFwiKSByZXR1cm4gXCJ0ZXh0L3gtcGhwXCI7XG4gICAgaWYgKGV4dCA9PT0gXCIucmJcIikgcmV0dXJuIFwidGV4dC94LXJ1YnlcIjtcbiAgICBpZiAoZXh0ID09PSBcIi5nb1wiKSByZXR1cm4gXCJ0ZXh0L3gtZ29cIjtcbiAgICBpZiAoZXh0ID09PSBcIi5yc1wiKSByZXR1cm4gXCJ0ZXh0L3gtcnVzdFwiO1xuICAgIGlmIChleHQgPT09IFwiLnN3aWZ0XCIpIHJldHVybiBcInRleHQveC1zd2lmdFwiO1xuICAgIGlmIChleHQgPT09IFwiLmt0XCIpIHJldHVybiBcInRleHQveC1rb3RsaW5cIjtcbiAgICBpZiAoZXh0ID09PSBcIi5zY2FsYVwiKSByZXR1cm4gXCJ0ZXh0L3gtc2NhbGFcIjtcbiAgICBpZiAoZXh0ID09PSBcIi5zaFwiKSByZXR1cm4gXCJ0ZXh0L3gtc2hlbGxzY3JpcHRcIjtcbiAgICBpZiAoZXh0ID09PSBcIi5iYXRcIikgcmV0dXJuIFwidGV4dC94LW1zZG9zLWJhdGNoXCI7XG4gICAgaWYgKGV4dCA9PT0gXCIucHMxXCIpIHJldHVybiBcInRleHQveC1wb3dlcnNoZWxsXCI7XG5cbiAgICAvLyBBcmNoaXZlc1xuICAgIGlmIChleHQgPT09IFwiLnppcFwiKSByZXR1cm4gXCJhcHBsaWNhdGlvbi96aXBcIjtcbiAgICBpZiAoZXh0ID09PSBcIi5yYXJcIikgcmV0dXJuIFwiYXBwbGljYXRpb24vdm5kLnJhclwiO1xuICAgIGlmIChleHQgPT09IFwiLnRhclwiKSByZXR1cm4gXCJhcHBsaWNhdGlvbi94LXRhclwiO1xuICAgIGlmIChleHQgPT09IFwiLmd6XCIpIHJldHVybiBcImFwcGxpY2F0aW9uL2d6aXBcIjtcbiAgICBpZiAoZXh0ID09PSBcIi5iejJcIikgcmV0dXJuIFwiYXBwbGljYXRpb24veC1iemlwMlwiO1xuICAgIGlmIChleHQgPT09IFwiLjd6XCIpIHJldHVybiBcImFwcGxpY2F0aW9uL3gtN3otY29tcHJlc3NlZFwiO1xuICAgIGlmIChleHQgPT09IFwiLnh6XCIpIHJldHVybiBcImFwcGxpY2F0aW9uL3gteHpcIjtcblxuICAgIC8vIEZvbnRzXG4gICAgaWYgKGV4dCA9PT0gXCIudHRmXCIpIHJldHVybiBcImZvbnQvdHRmXCI7XG4gICAgaWYgKGV4dCA9PT0gXCIub3RmXCIpIHJldHVybiBcImZvbnQvb3RmXCI7XG4gICAgaWYgKGV4dCA9PT0gXCIud29mZlwiKSByZXR1cm4gXCJmb250L3dvZmZcIjtcbiAgICBpZiAoZXh0ID09PSBcIi53b2ZmMlwiKSByZXR1cm4gXCJmb250L3dvZmYyXCI7XG4gICAgaWYgKGV4dCA9PT0gXCIuZW90XCIpIHJldHVybiBcImFwcGxpY2F0aW9uL3ZuZC5tcy1mb250b2JqZWN0XCI7XG5cbiAgICAvLyBPdGhlciBjb21tb24gZm9ybWF0c1xuICAgIGlmIChleHQgPT09IFwiLmVwdWJcIikgcmV0dXJuIFwiYXBwbGljYXRpb24vZXB1Yit6aXBcIjtcbiAgICBpZiAoZXh0ID09PSBcIi5tb2JpXCIpIHJldHVybiBcImFwcGxpY2F0aW9uL3gtbW9iaXBvY2tldC1lYm9va1wiO1xuICAgIGlmIChleHQgPT09IFwiLmFwa1wiKSByZXR1cm4gXCJhcHBsaWNhdGlvbi92bmQuYW5kcm9pZC5wYWNrYWdlLWFyY2hpdmVcIjtcbiAgICBpZiAoZXh0ID09PSBcIi5kbWdcIikgcmV0dXJuIFwiYXBwbGljYXRpb24veC1hcHBsZS1kaXNraW1hZ2VcIjtcbiAgICBpZiAoZXh0ID09PSBcIi5pc29cIikgcmV0dXJuIFwiYXBwbGljYXRpb24veC1pc285NjYwLWltYWdlXCI7XG4gICAgaWYgKGV4dCA9PT0gXCIuZXhlXCIpIHJldHVybiBcImFwcGxpY2F0aW9uL3gtbXNkb3dubG9hZFwiO1xuICAgIGlmIChleHQgPT09IFwiLm1zaVwiKSByZXR1cm4gXCJhcHBsaWNhdGlvbi94LW1zaVwiO1xuICAgIGlmIChleHQgPT09IFwiLmRlYlwiKSByZXR1cm4gXCJhcHBsaWNhdGlvbi94LWRlYmlhbi1wYWNrYWdlXCI7XG4gICAgaWYgKGV4dCA9PT0gXCIucnBtXCIpIHJldHVybiBcImFwcGxpY2F0aW9uL3gtcnBtXCI7XG5cbiAgICBjb25zb2xlLndhcm4oYFVua25vd24gZXh0ZW5zaW9uLCAke2V4dH1gKTtcbiAgICByZXR1cm4gXCJ0ZXh0L3BsYWluXCI7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRDb250ZW50VHlwZUZyb21CdWZmZXIoYnVmZmVyOiBCdWZmZXIpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIGlmIChidWZmZXIubGVuZ3RoIDwgNCkgcmV0dXJuIHVuZGVmaW5lZDtcblxuICAgIC8vIEhlbHBlciBmdW5jdGlvbiB0byBjaGVjayBpZiBidWZmZXIgc3RhcnRzIHdpdGggc3BlY2lmaWMgYnl0ZXNcbiAgICBjb25zdCBzdGFydHNXaXRoID0gKGJ5dGVzOiBudW1iZXJbXSk6IGJvb2xlYW4gPT4ge1xuICAgICAgICBpZiAoYnVmZmVyLmxlbmd0aCA8IGJ5dGVzLmxlbmd0aCkgcmV0dXJuIGZhbHNlO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGJ5dGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBpZiAoYnVmZmVyW2ldICE9PSBieXRlc1tpXSkgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH07XG5cbiAgICAvLyBIZWxwZXIgZnVuY3Rpb24gdG8gY2hlY2sgYnl0ZXMgYXQgc3BlY2lmaWMgb2Zmc2V0XG4gICAgY29uc3QgaGFzQXRPZmZzZXQgPSAob2Zmc2V0OiBudW1iZXIsIGJ5dGVzOiBudW1iZXJbXSk6IGJvb2xlYW4gPT4ge1xuICAgICAgICBpZiAoYnVmZmVyLmxlbmd0aCA8IG9mZnNldCArIGJ5dGVzLmxlbmd0aCkgcmV0dXJuIGZhbHNlO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGJ5dGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBpZiAoYnVmZmVyW29mZnNldCArIGldICE9PSBieXRlc1tpXSkgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH07XG5cbiAgICAvLyBJbWFnZXNcbiAgICBpZiAoc3RhcnRzV2l0aChbMHhGRiwgMHhEOCwgMHhGRl0pKSByZXR1cm4gXCJpbWFnZS9qcGVnXCI7XG4gICAgaWYgKHN0YXJ0c1dpdGgoWzB4ODksIDB4NTAsIDB4NEUsIDB4NDcsIDB4MEQsIDB4MEEsIDB4MUEsIDB4MEFdKSkgcmV0dXJuIFwiaW1hZ2UvcG5nXCI7XG4gICAgaWYgKHN0YXJ0c1dpdGgoWzB4NDcsIDB4NDksIDB4NDYsIDB4MzhdKSkgcmV0dXJuIFwiaW1hZ2UvZ2lmXCI7XG4gICAgaWYgKHN0YXJ0c1dpdGgoWzB4NDIsIDB4NERdKSkgcmV0dXJuIFwiaW1hZ2UvYm1wXCI7XG4gICAgaWYgKHN0YXJ0c1dpdGgoWzB4NDksIDB4NDksIDB4MkEsIDB4MDBdKSB8fCBzdGFydHNXaXRoKFsweDRELCAweDRELCAweDAwLCAweDJBXSkpIHJldHVybiBcImltYWdlL3RpZmZcIjtcbiAgICBpZiAoc3RhcnRzV2l0aChbMHgwMCwgMHgwMCwgMHgwMSwgMHgwMF0pKSByZXR1cm4gXCJpbWFnZS94LWljb25cIjtcbiAgICBpZiAoYnVmZmVyLnRvU3RyaW5nKFwiYXNjaWlcIiwgMCwgNCkgPT09IFwiPHN2Z1wiIHx8IGJ1ZmZlci50b1N0cmluZyhcImFzY2lpXCIsIDAsIDUpID09PSBcIjw/eG1sXCIpIHtcbiAgICAgICAgaWYgKGJ1ZmZlci50b1N0cmluZyhcInV0ZjhcIikuaW5jbHVkZXMoXCI8c3ZnXCIpKSByZXR1cm4gXCJpbWFnZS9zdmcreG1sXCI7XG4gICAgfVxuXG4gICAgLy8gV2ViUCBhbmQgbW9kZXJuIGltYWdlIGZvcm1hdHNcbiAgICBpZiAoc3RhcnRzV2l0aChbMHg1MiwgMHg0OSwgMHg0NiwgMHg0Nl0pICYmIGhhc0F0T2Zmc2V0KDgsIFsweDU3LCAweDQ1LCAweDQyLCAweDUwXSkpIHJldHVybiBcImltYWdlL3dlYnBcIjtcbiAgICBpZiAoaGFzQXRPZmZzZXQoNCwgWzB4NjYsIDB4NzQsIDB4NzksIDB4NzAsIDB4NjEsIDB4NzYsIDB4NjksIDB4NjZdKSkgcmV0dXJuIFwiaW1hZ2UvYXZpZlwiO1xuICAgIGlmIChoYXNBdE9mZnNldCg0LCBbMHg2NiwgMHg3NCwgMHg3OSwgMHg3MCwgMHg2OCwgMHg2NSwgMHg2OSwgMHg2M10pKSByZXR1cm4gXCJpbWFnZS9oZWljXCI7XG4gICAgaWYgKGhhc0F0T2Zmc2V0KDQsIFsweDY2LCAweDc0LCAweDc5LCAweDcwLCAweDZELCAweDY5LCAweDY2LCAweDMxXSkpIHJldHVybiBcImltYWdlL2hlaWZcIjtcblxuICAgIC8vIEF1ZGlvXG4gICAgaWYgKHN0YXJ0c1dpdGgoWzB4RkYsIDB4RkJdKSB8fCBzdGFydHNXaXRoKFsweEZGLCAweEYzXSkgfHwgc3RhcnRzV2l0aChbMHhGRiwgMHhGMl0pKSByZXR1cm4gXCJhdWRpby9tcGVnXCI7XG4gICAgaWYgKHN0YXJ0c1dpdGgoWzB4NDksIDB4NDQsIDB4MzNdKSkgcmV0dXJuIFwiYXVkaW8vbXBlZ1wiOyAvLyBNUDMgd2l0aCBJRDNcbiAgICBpZiAoc3RhcnRzV2l0aChbMHg1MiwgMHg0OSwgMHg0NiwgMHg0Nl0pICYmIGhhc0F0T2Zmc2V0KDgsIFsweDU3LCAweDQxLCAweDU2LCAweDQ1XSkpIHJldHVybiBcImF1ZGlvL3dhdlwiO1xuICAgIGlmIChzdGFydHNXaXRoKFsweDRGLCAweDY3LCAweDY3LCAweDUzXSkpIHJldHVybiBcImF1ZGlvL29nZ1wiO1xuICAgIGlmIChzdGFydHNXaXRoKFsweDY2LCAweDRDLCAweDYxLCAweDQzXSkpIHJldHVybiBcImF1ZGlvL2ZsYWNcIjtcbiAgICBpZiAoaGFzQXRPZmZzZXQoNCwgWzB4NjYsIDB4NzQsIDB4NzksIDB4NzAsIDB4NEQsIDB4MzQsIDB4NDFdKSkgcmV0dXJuIFwiYXVkaW8vbXA0XCI7XG5cbiAgICAvLyBWaWRlb1xuICAgIGlmIChoYXNBdE9mZnNldCg0LCBbMHg2NiwgMHg3NCwgMHg3OSwgMHg3MF0pKSB7XG4gICAgICAgIGNvbnN0IGZ0eXAgPSBidWZmZXIudG9TdHJpbmcoXCJhc2NpaVwiLCA4LCAxMik7XG4gICAgICAgIGlmIChmdHlwLnN0YXJ0c1dpdGgoXCJtcDRcIikgfHwgZnR5cC5zdGFydHNXaXRoKFwiaXNvbVwiKSB8fCBmdHlwLnN0YXJ0c1dpdGgoXCJNNFZcIikpIHJldHVybiBcInZpZGVvL21wNFwiO1xuICAgICAgICBpZiAoZnR5cC5zdGFydHNXaXRoKFwicXRcIikpIHJldHVybiBcInZpZGVvL3F1aWNrdGltZVwiO1xuICAgIH1cbiAgICBpZiAoc3RhcnRzV2l0aChbMHgxQSwgMHg0NSwgMHhERiwgMHhBM10pKSByZXR1cm4gXCJ2aWRlby93ZWJtXCI7IC8vIEFsc28gbWt2XG4gICAgaWYgKHN0YXJ0c1dpdGgoWzB4MzAsIDB4MjYsIDB4QjIsIDB4NzUsIDB4OEUsIDB4NjYsIDB4Q0YsIDB4MTFdKSkgcmV0dXJuIFwidmlkZW8veC1tcy13bXZcIjtcbiAgICBpZiAoc3RhcnRzV2l0aChbMHg0NiwgMHg0QywgMHg1NiwgMHgwMV0pKSByZXR1cm4gXCJ2aWRlby94LWZsdlwiO1xuICAgIGlmIChzdGFydHNXaXRoKFsweDUyLCAweDQ5LCAweDQ2LCAweDQ2XSkgJiYgaGFzQXRPZmZzZXQoOCwgWzB4NDEsIDB4NTYsIDB4NDksIDB4MjBdKSkgcmV0dXJuIFwidmlkZW8veC1tc3ZpZGVvXCI7XG5cbiAgICAvLyBEb2N1bWVudHNcbiAgICBpZiAoc3RhcnRzV2l0aChbMHgyNSwgMHg1MCwgMHg0NCwgMHg0Nl0pKSByZXR1cm4gXCJhcHBsaWNhdGlvbi9wZGZcIjtcbiAgICBpZiAoc3RhcnRzV2l0aChbMHg1MCwgMHg0QiwgMHgwMywgMHgwNF0pIHx8IHN0YXJ0c1dpdGgoWzB4NTAsIDB4NEIsIDB4MDUsIDB4MDZdKSB8fCBzdGFydHNXaXRoKFsweDUwLCAweDRCLCAweDA3LCAweDA4XSkpIHtcbiAgICAgICAgLy8gWklQLWJhc2VkIGZvcm1hdHMgLSBuZWVkIHRvIGNoZWNrIGludGVybmFsIHN0cnVjdHVyZVxuICAgICAgICBjb25zdCBjb250ZW50ID0gYnVmZmVyLnRvU3RyaW5nKFwiYXNjaWlcIiwgMzAsIDEwMCk7XG4gICAgICAgIGlmIChjb250ZW50LmluY2x1ZGVzKFwid29yZC9cIikpIHJldHVybiBcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC53b3JkcHJvY2Vzc2luZ21sLmRvY3VtZW50XCI7XG4gICAgICAgIGlmIChjb250ZW50LmluY2x1ZGVzKFwieGwvXCIpKSByZXR1cm4gXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5zaGVldFwiO1xuICAgICAgICBpZiAoY29udGVudC5pbmNsdWRlcyhcInBwdC9cIikpIHJldHVybiBcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5wcmVzZW50YXRpb25tbC5wcmVzZW50YXRpb25cIjtcbiAgICAgICAgaWYgKGNvbnRlbnQuaW5jbHVkZXMoXCJNRVRBLUlORi9cIikpIHtcbiAgICAgICAgICAgIGlmIChjb250ZW50LmluY2x1ZGVzKFwiY29udGVudC54bWxcIikpIHJldHVybiBcImFwcGxpY2F0aW9uL3ZuZC5vYXNpcy5vcGVuZG9jdW1lbnQudGV4dFwiO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBcImFwcGxpY2F0aW9uL3ppcFwiO1xuICAgIH1cbiAgICBpZiAoc3RhcnRzV2l0aChbMHhEMCwgMHhDRiwgMHgxMSwgMHhFMCwgMHhBMSwgMHhCMSwgMHgxQSwgMHhFMV0pKSB7XG4gICAgICAgIC8vIE1pY3Jvc29mdCBPZmZpY2UgbGVnYWN5IGZvcm1hdHNcbiAgICAgICAgcmV0dXJuIFwiYXBwbGljYXRpb24vbXN3b3JkXCI7IC8vIENvdWxkIGFsc28gYmUgRXhjZWwgb3IgUG93ZXJQb2ludFxuICAgIH1cbiAgICBpZiAoc3RhcnRzV2l0aChbMHg3QiwgMHg1QywgMHg3MiwgMHg3NCwgMHg2Nl0pKSByZXR1cm4gXCJhcHBsaWNhdGlvbi9ydGZcIjtcblxuICAgIC8vIEFyY2hpdmVzXG4gICAgaWYgKHN0YXJ0c1dpdGgoWzB4NTIsIDB4NjEsIDB4NzIsIDB4MjEsIDB4MUEsIDB4MDddKSkgcmV0dXJuIFwiYXBwbGljYXRpb24vdm5kLnJhclwiO1xuICAgIGlmIChzdGFydHNXaXRoKFsweDM3LCAweDdBLCAweEJDLCAweEFGLCAweDI3LCAweDFDXSkpIHJldHVybiBcImFwcGxpY2F0aW9uL3gtN3otY29tcHJlc3NlZFwiO1xuICAgIGlmIChzdGFydHNXaXRoKFsweDFGLCAweDhCXSkpIHJldHVybiBcImFwcGxpY2F0aW9uL2d6aXBcIjtcbiAgICBpZiAoc3RhcnRzV2l0aChbMHg0MiwgMHg1QSwgMHg2OF0pKSByZXR1cm4gXCJhcHBsaWNhdGlvbi94LWJ6aXAyXCI7XG4gICAgaWYgKHN0YXJ0c1dpdGgoWzB4RkQsIDB4MzcsIDB4N0EsIDB4NTgsIDB4NUEsIDB4MDBdKSkgcmV0dXJuIFwiYXBwbGljYXRpb24veC14elwiO1xuICAgIGlmIChzdGFydHNXaXRoKFsweDc1LCAweDczLCAweDc0LCAweDYxLCAweDcyXSkpIHJldHVybiBcImFwcGxpY2F0aW9uL3gtdGFyXCI7XG5cbiAgICAvLyBFeGVjdXRhYmxlc1xuICAgIGlmIChzdGFydHNXaXRoKFsweDRELCAweDVBXSkpIHJldHVybiBcImFwcGxpY2F0aW9uL3gtbXNkb3dubG9hZFwiOyAvLyBXaW5kb3dzIFBFXG4gICAgaWYgKHN0YXJ0c1dpdGgoWzB4N0YsIDB4NDUsIDB4NEMsIDB4NDZdKSkgcmV0dXJuIFwiYXBwbGljYXRpb24veC1leGVjdXRhYmxlXCI7IC8vIExpbnV4IEVMRlxuICAgIGlmIChzdGFydHNXaXRoKFsweENBLCAweEZFLCAweEJBLCAweEJFXSkgfHwgc3RhcnRzV2l0aChbMHhGRSwgMHhFRCwgMHhGQSwgMHhDRV0pKSByZXR1cm4gXCJhcHBsaWNhdGlvbi94LW1hY2gtYmluYXJ5XCI7IC8vIG1hY09TIGJpbmFyeVxuICAgIGlmIChzdGFydHNXaXRoKFsweDUwLCAweDRCLCAweDAzLCAweDA0XSkgJiYgYnVmZmVyLnRvU3RyaW5nKFwiYXNjaWlcIiwgMzAsIDUwKS5pbmNsdWRlcyhcIkFuZHJvaWRNYW5pZmVzdC54bWxcIikpIHJldHVybiBcImFwcGxpY2F0aW9uL3ZuZC5hbmRyb2lkLnBhY2thZ2UtYXJjaGl2ZVwiO1xuXG4gICAgLy8gRm9udHNcbiAgICBpZiAoc3RhcnRzV2l0aChbMHgwMCwgMHgwMSwgMHgwMCwgMHgwMF0pKSByZXR1cm4gXCJmb250L3R0ZlwiO1xuICAgIGlmIChzdGFydHNXaXRoKFsweDRGLCAweDU0LCAweDU0LCAweDRGXSkpIHJldHVybiBcImZvbnQvb3RmXCI7XG4gICAgaWYgKHN0YXJ0c1dpdGgoWzB4NzcsIDB4NEYsIDB4NDYsIDB4NDZdKSkgcmV0dXJuIFwiZm9udC93b2ZmXCI7XG4gICAgaWYgKHN0YXJ0c1dpdGgoWzB4NzcsIDB4NEYsIDB4NDYsIDB4MzJdKSkgcmV0dXJuIFwiZm9udC93b2ZmMlwiO1xuXG4gICAgLy8gV2ViIGZpbGVzICh0ZXh0LWJhc2VkLCBjaGVjayBmb3IgY29tbW9uIHBhdHRlcm5zKVxuICAgIGNvbnN0IHRleHRTdGFydCA9IGJ1ZmZlci50b1N0cmluZyhcInV0ZjhcIiwgMCwgTWF0aC5taW4oMTAwLCBidWZmZXIubGVuZ3RoKSkudG9Mb3dlckNhc2UoKTtcbiAgICBpZiAodGV4dFN0YXJ0LmluY2x1ZGVzKFwiPCFkb2N0eXBlIGh0bWxcIikgfHwgdGV4dFN0YXJ0LmluY2x1ZGVzKFwiPGh0bWxcIikpIHJldHVybiBcInRleHQvaHRtbFwiO1xuICAgIGlmICh0ZXh0U3RhcnQuaW5jbHVkZXMoXCI8P3htbFwiKSkgcmV0dXJuIFwiYXBwbGljYXRpb24veG1sXCI7XG4gICAgaWYgKHRleHRTdGFydC5zdGFydHNXaXRoKFwie1wiKSB8fCB0ZXh0U3RhcnQuc3RhcnRzV2l0aChcIltcIikpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIEpTT04ucGFyc2UoYnVmZmVyLnRvU3RyaW5nKFwidXRmOFwiKSk7XG4gICAgICAgICAgICByZXR1cm4gXCJhcHBsaWNhdGlvbi9qc29uXCI7XG4gICAgICAgIH0gY2F0Y2gge1xuICAgICAgICAgICAgLy8gTm90IEpTT05cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIE90aGVyIGZvcm1hdHNcbiAgICBpZiAoc3RhcnRzV2l0aChbMHgyNSwgMHgyMSwgMHg1MCwgMHg1M10pKSByZXR1cm4gXCJhcHBsaWNhdGlvbi9wb3N0c2NyaXB0XCI7XG4gICAgaWYgKHN0YXJ0c1dpdGgoWzB4MzgsIDB4NDIsIDB4NTAsIDB4NTNdKSkgcmV0dXJuIFwiaW1hZ2Uvdm5kLmFkb2JlLnBob3Rvc2hvcFwiO1xuICAgIGlmIChzdGFydHNXaXRoKFsweDQ5LCAweDQ5LCAweDJBLCAweDAwLCAweDEwLCAweDAwLCAweDAwLCAweDAwLCAweDQzLCAweDUyXSkpIHJldHVybiBcImltYWdlL3gtY2Fub24tY3IyXCI7XG5cbiAgICByZXR1cm4gdW5kZWZpbmVkO1xufSJdfQ==
|
|
368
|
-
/* _JS_SOURCE_HASH = "
|
|
368
|
+
/* _JS_SOURCE_HASH = "66e32b7cef5067e77b95f00bec4f25914748cecfc4aa12ab1b4651458459871f"; */
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict"; var console = (function shimConsole() { let baseConsole = globalThis.console; if (typeof window !== "undefined") return baseConsole; let name = __filename.replaceAll("\\", "/").split("/").pop(); let dirName = __dirname.replaceAll("\\", "/").split("/").pop(); let context = { __FILE__: __filename, __DIR__: __dirname, __NAME__: name, __DIRNAME__: dirName }; let newConsole = { ...baseConsole }; for (let shim of ["log", "info", "warn", "error"]) { newConsole[shim] = (...args) => { args.push(context); baseConsole[shim](...args); }; } newConsole.__context = context; return newConsole; })(); "use strict";
|
|
1
|
+
"use strict"; var console = (function shimConsole() { let baseConsole = globalThis.console; if (typeof window !== "undefined") return baseConsole; let name = __filename.replaceAll("\\", "/").split("/").pop(); let dirName = __dirname.replaceAll("\\", "/").split("/").pop(); let context = { __FILE__: __filename, __DIR__: __dirname, __NAME__: name, __DIRNAME__: dirName }; let newConsole = { ...baseConsole }; for (let shim of ["log", "info", "warn", "error"]) { newConsole[shim] = (...args) => { args.push(context); baseConsole[shim](...args); }; } newConsole.__context = context; return newConsole; })(); "use strict"; var console = (function shimConsole() { let baseConsole = globalThis.console; if (typeof window !== "undefined") return baseConsole; let name = __filename.replaceAll("\\", "/").split("/").pop(); let dirName = __dirname.replaceAll("\\", "/").split("/").pop(); let context = { __FILE__: __filename, __DIR__: __dirname, __NAME__: name, __DIRNAME__: dirName }; let newConsole = { ...baseConsole }; for (let shim of ["log", "info", "warn", "error"]) { newConsole[shim] = (...args) => { args.push(context); baseConsole[shim](...args); }; } newConsole.__context = context; return newConsole; })(); "use strict";
|
|
2
2
|
/// <reference path="../src/src.d.ts" />
|
|
3
3
|
Object.defineProperty(exports, "__esModule", { value: true , configurable: true});
|
|
4
4
|
//exports.requireMain = void 0;
|
|
@@ -673,4 +673,4 @@ function requireMain() {
|
|
|
673
673
|
}
|
|
674
674
|
exports.requireMain = requireMain;
|
|
675
675
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVxdWlyZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInJlcXVpcmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLHdDQUF3Qzs7O0FBb0J4QyxTQUFnQixXQUFXOztJQUN2QixLQUFLLFVBQVUsV0FBVyxDQUFDLFFBQWdCLEVBQUUsTUFBVzs7UUFDcEQsSUFBSSxHQUFHLEdBQUcsSUFBSSxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFNUIsSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNsQyxJQUFJLFFBQWtCLENBQUM7UUFDdkIsSUFBSSxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksRUFBRSxDQUFDO1lBQ3JCLG9GQUFvRjtZQUNwRixvRUFBb0U7WUFDcEUsS0FBSyxJQUFJLEdBQUcsSUFBSSxNQUFNLEVBQUUsQ0FBQztnQkFDckIsR0FBRyxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUMzRCxDQUFDO1lBQ0QsUUFBUSxHQUFHLE1BQU0sS0FBSyxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsRUFBRTtnQkFDbkMsTUFBTSxFQUFFLEtBQUs7Z0JBQ2IsV0FBVyxFQUFFLFNBQVM7YUFDekIsQ0FBQyxDQUFDO1FBQ1AsQ0FBQzthQUFNLENBQUM7WUFDSixRQUFRLEdBQUcsTUFBTSxLQUFLLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxFQUFFO2dCQUNuQyxNQUFNLEVBQUUsTUFBTTtnQkFDZCxJQUFJLEVBQUUsSUFBSTtnQkFDVixXQUFXLEVBQUUsU0FBUzthQUN6QixDQUFDLENBQUM7UUFDUCxDQUFDO1FBRUQsSUFBSSxnQkFBZ0IsR0FBRyxDQUFDLENBQUM7UUFDekIsSUFBSSxrQkFBa0IsR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQywrQkFBK0Is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QyxRQUFRLEVBQ2YsT0FBTyxFQUNQLGFBQWEsQ0FDaEIsQ0FBQztnQkFDRixNQUFNLENBQUMsV0FBVyxHQUFHLFFBQVEsRUFBRSxDQUFDO2dCQUNoQyxJQUFJLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQztnQkFDekIsMEZBQTBGO2dCQUMxRixpRkFBaUY7Z0JBQ2pGLDRGQUE0RjtZQUNoRyxDQUFDO29CQUFTLENBQUM7Z0JBQ1AsTUFBTSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUM7Z0JBQzVCLDRCQUE0QixDQUFDLEdBQUcsRUFBRSxDQUFDO2dCQUVuQyxNQUFBLFVBQVUsQ0FBQyxpQkFBaUIsMkRBQUc7b0JBQzNCLElBQUksRUFBRSxVQUFVO29CQUNoQixRQUFRLEVBQUUsQ0FBQztvQkFDWCxNQUFNLEVBQUUsQ0FBQztpQkFDWixDQUFDLENBQUM7WUFDUCxDQUFDO1FBQ0wsQ0FBQztRQUVELE9BQU8sTUFBTSxDQUFDO0lBQ2xCLENBQUM7QUFDTCxDQUFDO0FBbHlCRCxrQ0FreUJDIiwic291cmNlc0NvbnRlbnQiOlsiLy8vIDxyZWZlcmVuY2UgcGF0aD1cIi4uL3NyYy9zcmMuZC50c1wiIC8+XG5cbmltcG9ydCB7IEdldE1vZHVsZXNBcmdzIH0gZnJvbSBcIi4vUmVxdWlyZUNvbnRyb2xsZXJcIjtcblxuXG5kZWNsYXJlIGdsb2JhbCB7XG4gICAgdmFyIG9uUHJvZ3Jlc3NIYW5kbGVyOiB1bmRlZmluZWQgfCAoKHByb2dyZXNzOiB7XG4gICAgICAgIHR5cGU6IHN0cmluZztcbiAgICAgICAgYWRkVmFsdWU6IG51bWJlcjtcbiAgICAgICAgYWRkTWF4OiBudW1iZXI7XG4gICAgfSkgPT4gdm9pZCk7XG4gICAgdmFyIG9uRXJyb3JIYW5kbGVyOiB1bmRlZmluZWQgfCAoKGVycm9yOiBzdHJpbmcpID0+IHZvaWQpO1xuXG5cbiAgICB2YXIgQk9PVF9USU1FOiBudW1iZXI7XG4gICAgdmFyIGJ1aWx0SW5Nb2R1bGVFeHBvcnRzOiB7XG4gICAgICAgIFtrZXk6IHN0cmluZ106IHVua25vd247XG4gICAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlcXVpcmVNYWluKCkge1xuICAgIGFzeW5jIGZ1bmN0aW9uIHJlcXVlc3RUZXh0KGVuZHBvaW50OiBzdHJpbmcsIHZhbHVlczogYW55KSB7XG4gICAgICAgIGxldCB1cmwgPSBuZXcgVVJMKGVuZHBvaW50KTtcblxuICAgICAgICBsZXQganNvbiA9IEpTT04uc3RyaW5naWZ5KHZhbHVlcyk7XG4gICAgICAgIGxldCByZXNwb25zZTogUmVzcG9uc2U7XG4gICAgICAgIGlmIChqc29uLmxlbmd0aCA8IDYwMDApIHtcbiAgICAgICAgICAgIC8vIE5PVEU6IFRyeSB0byB1c2UgYSBHRVQsIGFzIEdFVHMgY2FuIGJlIGNhY2hlZCEgSG93ZXZlciwgaWYgdGhlIGRhdGEgaXMgdG9vIGxhcmdlLFxuICAgICAgICAgICAgLy8gIHdlIGhhdmUgdG8gdXNlIGEgcG9zdCwgb3IgZWxzZSB0aGUgcmVxdWVzdCB1cmwgd2lsbCBiZSB0b28gbGFyZ2VcbiAgICAgICAgICAgIGZvciAobGV0IGtleSBpbiB2YWx1ZXMpIHtcbiAgICAgICAgICAgICAgICB1cmwuc2VhcmNoUGFyYW1zLnNldChrZXksIEpTT04uc3RyaW5naWZ5KHZhbHVlc1trZXldKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXNwb25zZSA9IGF3YWl0IGZldGNoKHVybC50b1N0cmluZygpLCB7XG4gICAgICAgICAgICAgICAgbWV0aG9kOiBcIkdFVFwiLFxuICAgICAgICAgICAgICAgIGNyZWRlbnRpYWxzOiBcImluY2x1ZGVcIixcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaCh1cmwudG9TdHJpbmcoKSwge1xuICAgICAgICAgICAgICAgIG1ldGhvZDogXCJQT1NUXCIsXG4gICAgICAgICAgICAgICAgYm9keToganNvbixcbiAgICAgICAgICAgICAgICBjcmVkZW50aWFsczogXCJpbmNsdWRlXCIsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBjb21wcmVzc2lvblJhdGlvID0gMTtcbiAgICAgICAgbGV0IHVuY29tcHJlc3NlZExlbmd0aCA9IHJlc3BvbnNlLmhlYWRlcnMuZ2V0KFwiWC1VbmNvbXByZXNzZWQtQ29udGVudC1MZW5ndGhcIik7XG4gICAgICAgIGxldCBjb21wcmVzc2VkTGVuZ3RoID0gcmVzcG9uc2UuaGVhZGVycy5nZXQoXCJDb250ZW50LUxlbmd0aFwiKTtcbiAgICAgICAgaWYgKHVuY29tcHJlc3NlZExlbmd0aCAmJiBjb21wcmVzc2VkTGVuZ3RoKSB7XG4gICAgICAgICAgICBjb21wcmVzc2lvblJhdGlvID0gK3VuY29tcHJlc3NlZExlbmd0aCAvICtjb21wcmVzc2VkTGVuZ3RoO1xuICAgICAgICB9XG4gICAgICAgIGxldCB0b3RhbExlbmd0aCA9ICsodW5jb21wcmVzc2VkTGVuZ3RoIHx8IGNvbXByZXNzZWRMZW5ndGggfHwgMCk7XG4gICAgICAgIGlmICh0b3RhbExlbmd0aCkge1xuICAgICAgICAgICAgZ2xvYmFsVGhpcy5vblByb2dyZXNzSGFuZGxlcj8uKHtcbiAgICAgICAgICAgICAgICB0eXBlOiBcIkRvd25sb2FkXCIsXG4gICAgICAgICAgICAgICAgYWRkVmFsdWU6IDAsXG4gICAgICAgICAgICAgICAgYWRkTWF4OiBNYXRoLmZsb29yKHRvdGFsTGVuZ3RoIC8gY29tcHJlc3Npb25SYXRpbyksXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIElmIGl0J3MgYW4gZXJyb3IsIHNldCByZXF1ZXN0RXJyb3JcbiAgICAgICAgaWYgKCFyZXNwb25zZS5vaykge1xuICAgICAgICAgICAgZ2xvYmFsVGhpcy5vbkVycm9ySGFuZGxlcj8uKHJlc3BvbnNlLnN0YXR1c1RleHQpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gU3RyZWFtIGl0LCBzbyB3ZSBjYW4gZ2V0IHByb2dyc3NcbiAgICAgICAgbGV0IHJlYWRlciA9IHJlc3BvbnNlLmJvZHkhLmdldFJlYWRlcigpO1xuICAgICAgICBsZXQgcmVzdWx0ID0gXCJcIjtcbiAgICAgICAgd2hpbGUgKHRydWUpIHtcbiAgICAgICAgICAgIGxldCB7IGRvbmUsIHZhbHVlIH0gPSBhd2FpdCByZWFkZXIucmVhZCgpO1xuICAgICAgICAgICAgaWYgKGRvbmUpIGJyZWFrO1xuICAgICAgICAgICAgcmVzdWx0ICs9IG5ldyBUZXh0RGVjb2RlcigpLmRlY29kZSh2YWx1ZSk7XG4gICAgICAgICAgICBsZXQgY3VyID0gKHZhbHVlPy5sZW5ndGggfHwgMCkgLyBjb21wcmVzc2lvblJhdGlvO1xuICAgICAgICAgICAgZ2xvYmFsVGhpcy5vblByb2dyZXNzSGFuZGxlcj8uKHtcbiAgICAgICAgICAgICAgICB0eXBlOiBcIkRvd25sb2FkXCIsXG4gICAgICAgICAgICAgICAgYWRkVmFsdWU6IGN1cixcbiAgICAgICAgICAgICAgICBhZGRNYXg6IDAsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgY29uc3QgZyA9IGdsb2JhbFRoaXMgYXMgYW55O1xuICAgIGxldCBzdGFydFRpbWUgPSBEYXRlLm5vdygpO1xuICAgIGdsb2JhbFRoaXMuQk9PVF9USU1FID0gc3RhcnRUaW1lO1xuXG4gICAgLy8gU2V0IHRvIHRoZSBmaXJzdCByb290RG9tYWluLCB1bmxlc3MgdGhlIGZpcnN0IGltcG9ydCBkb2VzIG5vdCBoYXZlIGEgZG9tYWluXG4gICAgbGV0IG1haW5Sb290T3JpZ2luID0gbG9jYXRpb24ub3JpZ2luICsgbG9jYXRpb24ucGF0aG5hbWU7XG4gICAgbGV0IGlzRmlyc3RJbXBvcnQgPSB0cnVlO1xuXG4gICAgKFN5bWJvbCBhcyBhbnkpLmRpc3Bvc2UgPSBTeW1ib2wuZGlzcG9zZSB8fCBTeW1ib2woXCJkaXNwb3NlXCIpO1xuICAgIChTeW1ib2wgYXMgYW55KS5hc3luY0Rpc3Bvc2UgPSBTeW1ib2wuYXN5bmNEaXNwb3NlIHx8IFN5bWJvbChcImFzeW5jRGlzcG9zZVwiKTtcblxuICAgIC8vIEdsb2JhbHNcbiAgICBPYmplY3QuYXNzaWduKHdpbmRvdywge1xuICAgICAgICBwcm9jZXNzOiB7XG4gICAgICAgICAgICBhcmd2OiB3aW5kb3c/LnByb2Nlc3M/LmFyZ3YgfHwgW10sXG4gICAgICAgICAgICBlbnY6IHtcbiAgICAgICAgICAgICAgICAvLyBNaXJyb3IgdGhlIHRub2RlLmpzIHNldHRpbmdcbiAgICAgICAgICAgICAgICBOT0RFX0VOVjogXCJwcm9kdWN0aW9uXCIsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdmVyc2lvbnM6IHt9LFxuICAgICAgICB9LFxuICAgICAgICBzZXRJbW1lZGlhdGUoY2FsbGJhY2s6ICgpID0+IHZvaWQpIHtcbiAgICAgICAgICAgIHNldFRpbWVvdXQoY2FsbGJhY2ssIDApO1xuICAgICAgICB9LFxuICAgICAgICAvLyBJZ25vcmUgZmxhZ3MgZm9yIG5vdywgZXZlbiB0aG91Z2ggdGhleSBzaG91bGQgd29yayBmaW5lIGlmIHdlIGp1c3QgaGFyZGNvZGVkIGNvbXBpbGVGbGFncy50cyBoZXJlLlxuICAgICAgICBzZXRGbGFnKCkgeyB9LFxuICAgICAgICBnbG9iYWw6IHdpbmRvdyxcbiAgICB9KTtcblxuICAgIC8vIE5vdCByZWFsIG1vZHVsZXMsIGFzIHdlIGp1c3QgZGVmaW5lIHRoZWlyIGV4cG9ydHNcbiAgICBjb25zdCBidWlsdEluTW9kdWxlRXhwb3J0cyA9IHtcbiAgICAgICAgd29ya2VyX3RocmVhZHM6IHtcbiAgICAgICAgICAgIGlzTWFpblRocmVhZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgdXRpbDoge1xuICAgICAgICAgICAgLy8gaHR0cHM6Ly9ub2RlanMub3JnL2FwaS91dGlsLmh0bWwjdXRpbF91dGlsX2luaGVyaXRzX2NvbnN0cnVjdG9yX3N1cGVyY29uc3RydWN0b3JcbiAgICAgICAgICAgIGluaGVyaXRzKGNvbnN0cnVjdG9yOiBhbnksIHN1cGVyQ29uc3RydWN0b3I6IGFueSkge1xuICAgICAgICAgICAgICAgIE9iamVjdC5zZXRQcm90b3R5cGVPZihjb25zdHJ1Y3Rvci5wcm90b3R5cGUsIHN1cGVyQ29uc3RydWN0b3IucHJvdG90eXBlKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBUZXh0RGVjb2RlcjogVGV4dERlY29kZXIsXG4gICAgICAgICAgICBUZXh0RW5jb2RlcjogVGV4dEVuY29kZXIsXG4gICAgICAgIH0sXG4gICAgICAgIGJ1ZmZlcjogeyBCdWZmZXIgfSxcbiAgICAgICAgc3RyZWFtOiB7XG4gICAgICAgICAgICAvLyBIQUNLOiBOZWVkZWQgdG8gZ2V0IFNBWCBKUyB0byB3b3JrIGNvcnJlY3RseS5cbiAgICAgICAgICAgIFN0cmVhbTogZnVuY3Rpb24gKCkgeyB9LFxuICAgICAgICAgICAgVHJhbnNmb3JtOiBmdW5jdGlvbiAoKSB7IH0sXG4gICAgICAgIH0sXG4gICAgICAgIHRpbWVyczoge1xuICAgICAgICAgICAgLy8gVE9ETzogQWRkIGFsbCBtZW1iZXJzIG9mIHRpbWVyc1xuICAgICAgICAgICAgc2V0SW1tZWRpYXRlOiB3aW5kb3cuc2V0SW1tZWRpYXRlLFxuICAgICAgICB9LFxuICAgICAgICBjaGlsZF9wcm9jZXNzOiB7fSxcbiAgICAgICAgZXZlbnRzOiB7fSxcbiAgICB9O1xuICAgIGdsb2JhbFRoaXMuYnVpbHRJbk1vZHVsZUV4cG9ydHMgPSBnbG9iYWxUaGlzLmJ1aWx0SW5Nb2R1bGVFeHBvcnRzIHx8IHt9O1xuICAgIE9iamVjdC5hc3NpZ24oZ2xvYmFsVGhpcy5idWlsdEluTW9kdWxlRXhwb3J0cywgYnVpbHRJbk1vZHVsZUV4cG9ydHMpO1xuXG4gICAgbGV0IGxhc3RUaW1lID0gMDtcbiAgICBmdW5jdGlvbiBuZXh0VGltZSgpIHtcbiAgICAgICAgbGV0IHRpbWUgPSBEYXRlLm5vdygpO1xuICAgICAgICBpZiAodGltZSA8PSBsYXN0VGltZSkge1xuICAgICAgICAgICAgLy8gTk9URTogV2UgU0hPVUxEIHJlYWxseSBhZGQgZXBzaWxvbiwgYnV0Li4uIHRoaXMgaXMgYSBsb3QgZWFzaWVyLCBhbmQgaXMgY2xvc2UgZW5vdWdoLFxuICAgICAgICAgICAgLy8gIGFzIHRpbWVzIHdpbGwgbmV2ZXIgaGF2ZSB0b28gbGFyZ2Ugb2YgYSBtYWduaXR1ZGUuXG4gICAgICAgICAgICB0aW1lID0gbGFzdFRpbWUgKyAwLjAxO1xuICAgICAgICB9XG4gICAgICAgIGxhc3RUaW1lID0gdGltZTtcbiAgICAgICAgcmV0dXJuIHRpbWU7XG4gICAgfVxuXG4gICAgLyoqIEB0eXBlIHt7XG4gICAgICAgIFtyZXNvbHZlUGF0aDogc3RyaW5nXToge1xuICAgICAgICAgICAgLy8gTWF5IGJlIGRpZmZlcmVudCB0aGVuIHRoZSBtb2R1bGUgZmlsZW5hbWVcbiAgICAgICAgICAgIGZpbGVuYW1lOiBzdHJpbmc7XG4gICAgICAgICAgICAvLyBJZiBhIG1vZHVsZSBpcyBub3QgYWxsb3dlZCBjbGllbnRzaWRlIGl0IGlzIGxpa2VseSByZXF1ZXN0cyB3aWxsIGJlIGVtcHR5LFxuICAgICAgICAgICAgLy8gIHRvIHNhdmUgZWZmb3J0IHBhcnNpbmcgcmVxdWVzdHMgZm9yIG1vZHVsZXMgdGhhdCBvbmx5IGV4aXN0IHRvIGdpdmUgYmV0dGVyXG4gICAgICAgICAgICAvLyAgZXJyb3IgbWVzc2FnZXMuXG4gICAgICAgICAgICByZXF1ZXN0czoge1xuICAgICAgICAgICAgICAgIC8vIHJlcXVlc3QgPT4gcmVzb2x2ZWRQYXRoXG4gICAgICAgICAgICAgICAgW3JlcXVlc3Q6IHN0cmluZ106IHN0cmluZztcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBhc3luY1JlcXVlc3RzOiB7IFtyZXF1ZXN0OiBzdHJpbmddOiB0cnVlIH07XG4gICAgICAgICAgICAvLyBOT1RFOiBJRiAhYWxsb3djbGllbnQgJiYgIXNlcnZlcm9ubHksIGl0IG1pZ2h0IGp1c3QgbWVhbiB3ZSBkaWRuJ3QgYWRkIGFsbG93Y2xpZW50XG4gICAgICAgICAgICAvLyAgdG8gdGhlIG1vZHVsZSB5ZXQuIEJVVCwgaWYgc2VydmVyb25seSwgdGhlbiB3ZSBrbm93IGZvciBzdXJlIHdlIGRvbid0IHdhbnQgaXQgY2xpZW50LlxuICAgICAgICAgICAgLy8gIFNvIHRoZSBtZXNzYWdlcyBhbmQgYmVoYXZpb3Igd2lsbCBiZSBkaWZmZXJlbnQuXG4gICAgICAgICAgICBhbGxvd2NsaWVudD86IGJvb2xlYW47XG4gICAgICAgICAgICBzZXJ2ZXJvbmx5PzogYm9vbGVhbjtcbiAgICBcbiAgICAgICAgICAgIHNvdXJjZT86IHN0cmluZztcbiAgICAgICAgfVxuICAgIH19ICovXG4gICAgbGV0IHNlcmlhbGl6ZWRNb2R1bGVzOiB7IFtpZDogc3RyaW5nXTogU2VyaWFsaXplZE1vZHVsZSB8IHVuZGVmaW5lZCB9ID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcblxuICAgIHR5cGUgTW9kdWxlVHlwZSA9IE5vZGVKUy5Nb2R1bGUgJiB7XG4gICAgICAgIGlkOiBzdHJpbmc7XG4gICAgICAgIGZpbGVuYW1lOiBzdHJpbmc7XG4gICAgICAgIGV4cG9ydHM6IHVua25vd247XG4gICAgICAgIGNoaWxkcmVuOiBNb2R1bGVUeXBlW107XG4gICAgICAgIGZsYWdzOiB7IFtrZXk6IHN0cmluZ106IGJvb2xlYW4gfTtcbiAgICAgICAgbG9hZDogKCkgPT4gdm9pZDtcbiAgICAgICAgbG9hZGVkOiBib29sZWFuO1xuICAgICAgICBpc1ByZWxvYWRpbmc6IGJvb2xlYW47XG4gICAgICAgIGV2YWxTdGFydFRpbWU6IG51bWJlcjtcbiAgICAgICAgZXZhbEVuZFRpbWU6IG51bWJlciB8IHVuZGVmaW5lZDtcbiAgICAgICAgZXZhbHVhdGVTdGFydGVkOiBib29sZWFuO1xuICAgICAgICBzb3VyY2U6IHN0cmluZztcbiAgICAgICAgYWxsb3djbGllbnQ6IGJvb2xlYW47XG4gICAgICAgIHNpemU6IG51bWJlcjtcbiAgICAgICAgb3JpZ2luYWw6IFNlcmlhbGl6ZWRNb2R1bGU7XG4gICAgICAgIGltcG9ydDogKHJlcXVlc3Q6IHN0cmluZywgYXN5bmNJc0ZpbmU/OiBib29sZWFuKSA9PiB1bmtub3duO1xuICAgIH07XG5cbiAgICBsZXQgbW9kdWxlQ2FjaGU6IHsgW2lkOiBzdHJpbmddOiBNb2R1bGVUeXBlIH0gPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICAgIGxldCBhbHJlYWR5SGF2ZToge1xuICAgICAgICByZXF1aXJlU2VxTnVtUHJvY2Vzc0lkOiBzdHJpbmc7XG4gICAgICAgIHNlcU51bXM6IHsgW3NlcU51bTogc3RyaW5nXTogdHJ1ZSB8IDEgfCAwIHwgdW5kZWZpbmVkIH07XG4gICAgfSB8IHVuZGVmaW5lZDtcblxuICAgIGxldCByb290UmVzb2x2ZUNhY2hlID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcblxuICAgIHJvb3RSZXF1aXJlLmNhY2hlID0gbW9kdWxlQ2FjaGU7XG4gICAgLy8gRXhwb3NlIHJlcXVpcmUgZm9yIGRlYnVnZ2luZywgbm90IHNvIGl0IGNhbiBiZSBjYWxsZWRcbiAgICBnLnJlcXVpcmUgPSByb290UmVxdWlyZTtcbiAgICBnLmltcG9ydCA9IHJvb3RSZXF1aXJlO1xuXG4gICAgZy5yID0gZnVuY3Rpb24gcih0ZXh0OiBzdHJpbmcpIHtcbiAgICAgICAgdGV4dCA9IHRleHQudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgcmV0dXJuIE9iamVjdC52YWx1ZXMobW9kdWxlQ2FjaGUpLmZpbHRlcigoeCkgPT4geC5maWxlbmFtZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHRleHQpKVswXS5leHBvcnRzO1xuICAgIH07XG5cbiAgICBsZXQgcmVxdWlyZUJhdGNoOiB7IFtyZXF1ZXN0OiBzdHJpbmddOiAoKCkgPT4gdm9pZClbXSB9IHwgdW5kZWZpbmVkO1xuICAgIGZ1bmN0aW9uIHJvb3RSZXF1aXJlKHJlcXVlc3Q6IHN0cmluZywgYmF0Y2g/OiBib29sZWFuKTogdW5rbm93biB7XG4gICAgICAgIGlmIChyZXF1ZXN0LmluY2x1ZGVzKFwiZmlsZTovL1wiKSkge1xuICAgICAgICAgICAgLy8gSG93IGRvZXMgdGhpcyBoYXBwZW4/IEl0IGRlZmluaXRlbHkgYnJlYWtzIHRoaW5ncywgYW5kIHdlIGNvdWxkIHJlbW92ZSB0aGUgZmlsZTovLywgYnV0Li4uIGhvd1xuICAgICAgICAgICAgLy8gIGRvZXMgaXQgZXZlbiBoYXBwZW4/XG4gICAgICAgICAgICBkZWJ1Z2dlcjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaXNGaXJzdEltcG9ydCkge1xuICAgICAgICAgICAgaXNGaXJzdEltcG9ydCA9IGZhbHNlO1xuICAgICAgICAgICAgaWYgKHJlcXVlc3Quc3RhcnRzV2l0aChcImh0dHBzOi8vXCIpKSB7XG4gICAgICAgICAgICAgICAgbWFpblJvb3RPcmlnaW4gPSBnZXRSb290RG9tYWluKHJlcXVlc3QpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICghcmVxdWVzdC5zdGFydHNXaXRoKFwiaHR0cHM6Ly9cIikpIHtcbiAgICAgICAgICAgIHJlcXVlc3QgPSBtYWluUm9vdE9yaWdpbiArIHJlcXVlc3Q7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIWJhdGNoKSB7XG4gICAgICAgICAgICBpZiAocmVxdWVzdCBpbiByb290UmVzb2x2ZUNhY2hlKSB7XG4gICAgICAgICAgICAgICAgbGV0IHJlc29sdmVkUmVxdWVzdCA9IHJvb3RSZXNvbHZlQ2FjaGVbcmVxdWVzdF07XG4gICAgICAgICAgICAgICAgaWYgKHJlc29sdmVkUmVxdWVzdCBpbiByb290UmVxdWlyZS5jYWNoZSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcm9vdFJlcXVpcmUuY2FjaGVbcmVzb2x2ZWRSZXF1ZXN0XS5leHBvcnRzO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHJlcXVlc3QgaW4gcm9vdFJlcXVpcmUuY2FjaGUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcm9vdFJlcXVpcmUuY2FjaGVbcmVxdWVzdF0uZXhwb3J0cztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChyZXF1ZXN0IGluIGJ1aWx0SW5Nb2R1bGVFeHBvcnRzKSB7XG4gICAgICAgICAgICByZXR1cm4gYnVpbHRJbk1vZHVsZUV4cG9ydHNbcmVxdWVzdCBhcyBrZXlvZiB0eXBlb2YgYnVpbHRJbk1vZHVsZUV4cG9ydHNdO1xuICAgICAgICB9XG4gICAgICAgIGlmIChiYXRjaCkge1xuICAgICAgICAgICAgaWYgKCFyZXF1aXJlQmF0Y2gpIHtcbiAgICAgICAgICAgICAgICByZXF1aXJlQmF0Y2ggPSByZXF1aXJlQmF0Y2ggfHwge307XG4gICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghcmVxdWlyZUJhdGNoKSB0aHJvdyBuZXcgRXJyb3IoXCJJbXBvc3NpYmxlXCIpO1xuICAgICAgICAgICAgICAgICAgICBsZXQgcmVxdWVzdHMgPSBPYmplY3Qua2V5cyhyZXF1aXJlQmF0Y2gpO1xuICAgICAgICAgICAgICAgICAgICBsZXQgY2FsbGJhY2tzID0gT2JqZWN0LnZhbHVlcyhyZXF1aXJlQmF0Y2gpLnJlZHVjZSgoYSwgYikgPT4gYS5jb25jYXQoYiksIFtdKTtcbiAgICAgICAgICAgICAgICAgICAgcmVxdWlyZUJhdGNoID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgICAgICB2b2lkIHJvb3RSZXF1aXJlTXVsdGlwbGUocmVxdWVzdHMpLnRoZW4oXG4gICAgICAgICAgICAgICAgICAgICAgICAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgY2FsbGJhY2sgb2YgY2FsbGJhY2tzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIChlcnIpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBlcnI7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfSwgMCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gbmV3IFByb21pc2U8dm9pZD4oKHJlc29sdmUpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIXJlcXVpcmVCYXRjaCkgdGhyb3cgbmV3IEVycm9yKFwiSW1wb3NzaWJsZVwiKTtcbiAgICAgICAgICAgICAgICByZXF1aXJlQmF0Y2hbcmVxdWVzdF0gPSByZXF1aXJlQmF0Y2hbcmVxdWVzdF0gfHwgW107XG4gICAgICAgICAgICAgICAgcmVxdWlyZUJhdGNoW3JlcXVlc3RdLnB1c2gocmVzb2x2ZSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiByb290UmVxdWlyZU11bHRpcGxlKFtyZXF1ZXN0XSkudGhlbigoeCkgPT4geFswXS5leHBvcnRzKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldFJvb3REb21haW4ocmVxdWVzdDogc3RyaW5nKSB7XG4gICAgICAgIGxldCB1cmwgPSBuZXcgVVJMKHJlcXVlc3QpO1xuICAgICAgICBsZXQgb3JpZ2luID0gdXJsLm9yaWdpbjtcbiAgICAgICAgLy8gRml4IHN0dXBpZCA6NDQzIGVyYXN1cmUgKG90aGVyIHBvcnRzIGFyZW4ndCBlcmFzZWQsIGV4Y2VwdCA4MCwgYnV0IHdlJ2xsIG5ldmVyIHVzZSBIVFRQLFxuICAgICAgICAvLyAgc28gdGhhdCdzIGZpbmUpLlxuICAgICAgICB7XG4gICAgICAgICAgICBsZXQgcmVtYWluaW5nID0gcmVxdWVzdC5zbGljZShvcmlnaW4ubGVuZ3RoKTtcbiAgICAgICAgICAgIGlmIChyZW1haW5pbmcuc3RhcnRzV2l0aChcIjo0NDMvXCIpKSB7XG4gICAgICAgICAgICAgICAgb3JpZ2luICs9IFwiOjQ0M1wiO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBvcmlnaW4gKyBcIi9cIjtcbiAgICB9XG5cbiAgICBhc3luYyBmdW5jdGlvbiByb290UmVxdWlyZU11bHRpcGxlKHJlcXVlc3RzOiBzdHJpbmdbXSkge1xuICAgICAgICBjb25zb2xlLmxvZyhgJWNpbXBvcnQoJHtyZXF1ZXN0cy5qb2luKFwiLCBcIil9KSBhdCAke0RhdGUubm93KCkgLSBzdGFydFRpbWV9bXNgLCBcImNvbG9yOiBvcmFuZ2VcIik7XG5cbiAgICAgICAgbGV0IHRpbWUgPSBEYXRlLm5vdygpO1xuXG4gICAgICAgIGxldCBhbHJlYWR5SGF2ZVJhbmdlcztcbiAgICAgICAgaWYgKGFscmVhZHlIYXZlKSB7XG4gICAgICAgICAgICBsZXQgc2VxTnVtcyA9IE9iamVjdC5rZXlzKGFscmVhZHlIYXZlLnNlcU51bXMpLm1hcCgoeCkgPT4gK3gpO1xuICAgICAgICAgICAgc2VxTnVtcy5zb3J0KChhLCBiKSA9PiBhIC0gYik7XG4gICAgICAgICAgICBsZXQgc2VxTnVtUmFuZ2VzOiB7IHM6IG51bWJlcjsgZT86IG51bWJlciB9W10gPSBbXTtcbiAgICAgICAgICAgIGFscmVhZHlIYXZlUmFuZ2VzID0geyByZXF1aXJlU2VxTnVtUHJvY2Vzc0lkOiBhbHJlYWR5SGF2ZS5yZXF1aXJlU2VxTnVtUHJvY2Vzc0lkLCBzZXFOdW1SYW5nZXMgfTtcbiAgICAgICAgICAgIGZvciAobGV0IHNlcU51bSBvZiBzZXFOdW1zKSB7XG4gICAgICAgICAgICAgICAgbGV0IHByZXYgPSBzZXFOdW1SYW5nZXNbc2VxTnVtUmFuZ2VzLmxlbmd0aCAtIDFdO1xuICAgICAgICAgICAgICAgIGlmIChwcmV2Py5lID09PSBzZXFOdW0pIHtcbiAgICAgICAgICAgICAgICAgICAgcHJldi5lKys7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgc2VxTnVtUmFuZ2VzLnB1c2goeyBzOiBzZXFOdW0sIGU6IHNlcU51bSArIDEgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZm9yIChsZXQgcmFuZ2Ugb2Ygc2VxTnVtUmFuZ2VzKSB7XG4gICAgICAgICAgICAgICAgaWYgKHJhbmdlLnMgKyAxID09PSByYW5nZS5lKSB7XG4gICAgICAgICAgICAgICAgICAgIGRlbGV0ZSByYW5nZS5lO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBkb21haW5PcmlnaW4gPSBcIlwiO1xuICAgICAgICBsZXQgb3JpZ2luYWxSZXF1ZXN0cyA9IHJlcXVlc3RzO1xuICAgICAgICBpZiAocmVxdWVzdHMuc29tZSh4ID0+IHguc3RhcnRzV2l0aChcImh0dHBzOi8vXCIpKSkge1xuICAgICAgICAgICAgcmVxdWVzdHMgPSByZXF1ZXN0cy5tYXAoKHJlcXVlc3QpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIXJlcXVlc3Quc3RhcnRzV2l0aChcImh0dHBzOi8vXCIpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgTWl4ZWQgZG9tYWlucyB3aXRoIG5vbi1kb21haW4gcmVxdWVzdHMgaXMgbm90IHN1cHBvcnRlZCBwcmVzZW50bHkuIFJlcXVlc3RzOiAke3JlcXVlc3RzLmpvaW4oXCIgfCBcIil9YCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGxldCBvcmlnaW4gPSBnZXRSb290RG9tYWluKHJlcXVlc3QpO1xuICAgICAgICAgICAgICAgIGlmIChkb21haW5PcmlnaW4gJiYgZG9tYWluT3JpZ2luICE9PSBvcmlnaW4pIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gVE9ETzogSWYgdGhpcyBoYXBwZW5zLCB3ZSBjYW4gcHJvYmFibHkganVzdCBzcGxpdCB0aGUgY2FsbCB1cCBpbnRvIG11bHRpcGxlIGNhbGxzP1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYE1peGVkIGRvbWFpbnMgaW4gcmVxdWlyZSBjYWxsIGlzIG5vdCBzdXBwb3J0ZWQgcHJlc2VudGx5LiBSZXF1ZXN0czogJHtyZXF1ZXN0cy5qb2luKFwiIHwgXCIpfWApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBkb21haW5PcmlnaW4gPSBvcmlnaW47XG4gICAgICAgICAgICAgICAgLy8gQnkgc3RyaXBwaW5nIGJ5IGxlbmd0aCwgd2UgY2FuIHR1cm4gaHR0cHM6Ly9leGFtcGxlLmNvbS8uL3Rlc3QgPT4gXCIuL3Rlc3RcIlxuICAgICAgICAgICAgICAgIC8vICAod2hlcmUgYXMgaWYgd2UgdXNlZCBwYXRobmFtZSwgaXQgd291bGQgdHVybiBpbnRvIFwiL3Rlc3RcIlxuICAgICAgICAgICAgICAgIHJldHVybiByZXF1ZXN0LnNsaWNlKGRvbWFpbk9yaWdpbi5sZW5ndGgpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgYXJnczogR2V0TW9kdWxlc0FyZ3MgPSBbcmVxdWVzdHMsIGFscmVhZHlIYXZlUmFuZ2VzXTtcbiAgICAgICAgLy8gV2UgaGF2ZSB0byBhZGQgaGFyZGNvZGVkIHN1cHBvcnQgZm9yIGRyb3BwZXJtaXNzaW9ucywgYmVjYXVzZS4uLiB0aGlzIGNhbGxcbiAgICAgICAgLy8gIGRvZXNuJ3QgaGF2ZSB0aGUgY29udmVudGlvbmFsIHBlcnNpc3RlZCBjb2RlIHNlbmRpbmcgY29kZSwgYmVjYXVzZS4uLiBpdCdzXG4gICAgICAgIC8vICBhbGwgb24gaXRzIG93bi5cbiAgICAgICAgbGV0IHNlYXJjaFBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMobG9jYXRpb24uc2VhcmNoKTtcbiAgICAgICAgaWYgKHNlYXJjaFBhcmFtcy5nZXQoXCJkcm9wcGVybWlzc2lvbnNcIikgIT09IG51bGwpIHtcbiAgICAgICAgICAgIGFyZ3MucHVzaCh0cnVlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCByZXF1ZXN0VXJsQmFzZSA9IGxvY2F0aW9uLm9yaWdpbiArIGxvY2F0aW9uLnBhdGhuYW1lO1xuICAgICAgICBpZiAoZG9tYWluT3JpZ2luKSB7XG4gICAgICAgICAgICByZXF1ZXN0VXJsQmFzZSA9IGRvbWFpbk9yaWdpbjtcbiAgICAgICAgfVxuICAgICAgICBsZXQgcmVxdWVzdFVybCA9IHJlcXVlc3RVcmxCYXNlICsgYD9jbGFzc0d1aWQ9UmVxdWlyZUNvbnRyb2xsZXItZTJmODExZjMtMTRiOC00NzU5LWIwZDYtNzNmMTQ1MTZjZjFkJmZ1bmN0aW9uTmFtZT1nZXRNb2R1bGVzYDtcblxuICAgICAgICBsZXQgcmVtYXBJbXBvcnRSZXF1ZXN0c0NsaWVudHNpZGUgPSBnbG9iYWxUaGlzLnJlbWFwSW1wb3J0UmVxdWVzdHNDbGllbnRzaWRlO1xuICAgICAgICBpZiAocmVtYXBJbXBvcnRSZXF1ZXN0c0NsaWVudHNpZGUpIHtcbiAgICAgICAgICAgIGZvciAobGV0IGZuYyBvZiByZW1hcEltcG9ydFJlcXVlc3RzQ2xpZW50c2lkZSkge1xuICAgICAgICAgICAgICAgIGFyZ3MgPSBhd2FpdCBmbmMoYXJncyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgbGV0IHJhd1RleHQgPSBhd2FpdCByZXF1ZXN0VGV4dChyZXF1ZXN0VXJsLCB7IGFyZ3MgfSk7XG4gICAgICAgIGxldCByZXN1bHRPYmo6IHtcbiAgICAgICAgICAgIG1vZHVsZXM6IHsgW2lkOiBzdHJpbmddOiBTZXJpYWxpemVkTW9kdWxlIH07XG4gICAgICAgICAgICByZXF1ZXN0c1Jlc29sdmVkUGF0aHM6IHN0cmluZ1tdO1xuICAgICAgICAgICAgcmVxdWlyZVNlcU51bVByb2Nlc3NJZDogc3RyaW5nO1xuICAgICAgICAgICAgZXJyb3I/OiBzdHJpbmc7XG4gICAgICAgIH07XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICByZXN1bHRPYmogPSBKU09OLnBhcnNlKHJhd1RleHQpO1xuICAgICAgICB9IGNhdGNoIChlOiBhbnkpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgcmVxdWlyZSgke0pTT04uc3RyaW5naWZ5KHJlcXVlc3RzKX0pLiBMaWtlbHkgYSBwZXJtaXNzaW9ucyBlcnJvciwgcG9zc2libHkgZml4ZWQgYnkgcmVzdGFydGluZyB0aGUgbG9jYWwgaHR0cCBzZXJ2ZXIuIFN0YXJ0IG9mIHJlc3BvbnNlIHdhczogJHtKU09OLnN0cmluZ2lmeShyYXdUZXh0LnNsaWNlKDAsIDEwMCkpfS4gRXJyb3IgaXM6ICR7ZS5zdGFja31gKTtcbiAgICAgICAgfVxuICAgICAgICBsZXQgeyBtb2R1bGVzLCByZXF1ZXN0c1Jlc29sdmVkUGF0aHMsIHJlcXVpcmVTZXFOdW1Qcm9jZXNzSWQsIGVycm9yIH0gPSByZXN1bHRPYmo7XG5cbiAgICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgICAgICBsZXQgZXJyb3JPYmogPSBuZXcgRXJyb3IoKTtcbiAgICAgICAgICAgIGVycm9yT2JqLnN0YWNrID0gZXJyb3I7XG4gICAgICAgICAgICB0aHJvdyBlcnJvck9iajtcbiAgICAgICAgfVxuXG5cbiAgICAgICAgaWYgKE9iamVjdC5rZXlzKG1vZHVsZXMpLmxlbmd0aCA9PT0gMSAmJiBcIlwiIGluIG1vZHVsZXMpIHtcbiAgICAgICAgICAgIGRlYnVnZ2VyO1xuICAgICAgICAgICAgZXZhbChtb2R1bGVzW1wiXCJdLnNvdXJjZSB8fCBcIlwiKTtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgRmFpbGVkIHRvIGZpbmQgbW9kdWxlcyBmb3IgJHtvcmlnaW5hbFJlcXVlc3RzLmpvaW4oXCIsIFwiKX0gKG1hcHBlZCB0byAke3JlcXVlc3RzLmpvaW4oXCIsIFwiKX0pYCk7XG4gICAgICAgIH1cblxuXG4gICAgICAgIGlmIChkb21haW5PcmlnaW4pIHtcbiAgICAgICAgICAgIGZ1bmN0aW9uIGZpeERvbWFpbihyZXF1ZXN0OiBzdHJpbmcpIHtcbiAgICAgICAgICAgICAgICBpZiAoIXJlcXVlc3QpIHJldHVybiByZXF1ZXN0O1xuICAgICAgICAgICAgICAgIHJldHVybiBkb21haW5PcmlnaW4gKyByZXF1ZXN0O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmVxdWVzdHMgPSByZXF1ZXN0cy5tYXAoZml4RG9tYWluKTtcbiAgICAgICAgICAgIGZvciAobGV0IFtpZCwgbW9kdWxlXSBvZiBPYmplY3QuZW50cmllcyhtb2R1bGVzKSkge1xuICAgICAgICAgICAgICAgIGRlbGV0ZSBtb2R1bGVzW2lkXTtcbiAgICAgICAgICAgICAgICBtb2R1bGVzW2ZpeERvbWFpbihpZCldID0gbW9kdWxlO1xuICAgICAgICAgICAgICAgIG1vZHVsZS5maWxlbmFtZSA9IGZpeERvbWFpbihtb2R1bGUuZmlsZW5hbWUpO1xuICAgICAgICAgICAgICAgIG1vZHVsZS5yZXF1ZXN0cyA9IE9iamVjdC5mcm9tRW50cmllcyhPYmplY3QuZW50cmllcyhtb2R1bGUucmVxdWVzdHMpLm1hcCgoW2ssIHZdKSA9PiBbaywgZml4RG9tYWluKHYpXSkpO1xuICAgICAgICAgICAgICAgIG1vZHVsZS5vcmlnaW5hbElkID0gZml4RG9tYWluKG1vZHVsZS5vcmlnaW5hbElkKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJlcXVlc3RzUmVzb2x2ZWRQYXRocyA9IHJlcXVlc3RzUmVzb2x2ZWRQYXRocy5tYXAoZml4RG9tYWluKTtcbiAgICAgICAgfVxuXG5cbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCByZXF1ZXN0cy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgcm9vdFJlc29sdmVDYWNoZVtyZXF1ZXN0c1tpXV0gPSByZXF1ZXN0c1Jlc29sdmVkUGF0aHNbaV07XG4gICAgICAgIH1cblxuICAgICAgICBnbG9iYWxUaGlzLm9uUHJvZ3Jlc3NIYW5kbGVyPy4oe1xuICAgICAgICAgICAgdHlwZTogXCJDb21waWxlXCIsXG4gICAgICAgICAgICBhZGRWYWx1ZTogMCxcbiAgICAgICAgICAgIGFkZE1heDogT2JqZWN0LmtleXMobW9kdWxlcykubGVuZ3RoLFxuICAgICAgICB9KTtcblxuICAgICAgICAvLyBTdG9yZSB0aGUgZnVuY3Rpb24sIHNvIHdlIG9ubHkgY2FsbCBpdCBpZiBpdCBleGlzdHMgQkVGT1JFIHdlIGltcG9ydFxuICAgICAgICAvLyAgKHdoaWNoIG1lYW5zIHdlIGFscmVhZHkgaGF2ZSBzb21ldGhpbmcgbG9hZGluZywgc28gdGhpcyBpcyBsaWtlbHkgaG90IHJlbG9hZGluZy4uLilcbiAgICAgICAgbGV0IG9ic2VydmVyT25Ib3RSZWxvYWQgPSBnLm9ic2VydmVyT25Ib3RSZWxvYWQ7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgaWYgKG9ic2VydmVyT25Ib3RSZWxvYWQpIHtcbiAgICAgICAgICAgICAgICBvYnNlcnZlck9uSG90UmVsb2FkKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sIDApO1xuXG4gICAgICAgIHRpbWUgPSBEYXRlLm5vdygpIC0gdGltZTtcbiAgICAgICAgbGV0IG1vZHVsZUNvdW50ID0gT2JqZWN0LnZhbHVlcyhtb2R1bGVzKS5maWx0ZXIoKHgpID0+IHguc291cmNlKS5sZW5ndGg7XG4gICAgICAgIGxldCByZXF1aXJlTW9kdWxlQ291bnQgPSBPYmplY3QudmFsdWVzKG1vZHVsZXMpLmZpbHRlcigoeCkgPT4gIXguc291cmNlKS5sZW5ndGg7XG4gICAgICAgIGxldCBkZXBlbmRlbmNpZXNPbmx5VGV4dCA9IHJlcXVpcmVNb2R1bGVDb3VudCA/IGAgKCske3JlcXVpcmVNb2R1bGVDb3VudH0gZGVwZW5kZW5jaWVzIG9ubHkpYCA6IFwiXCI7XG4gICAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICAgICAgYCVjaW1wb3J0KCR7cmVxdWVzdHMuam9pbihcIiwgXCIpfSkgZmluaXNoZWQgZG93bmxvYWQgJHt0aW1lLnRvRml4ZWQoMCl9bXMsICR7TWF0aC5jZWlsKFxuICAgICAgICAgICAgICAgIHJhd1RleHQubGVuZ3RoIC8gMTAyNFxuICAgICAgICAgICAgKX1LQiwgJHttb2R1bGVDb3VudH0gbW9kdWxlcyR7ZGVwZW5kZW5jaWVzT25seVRleHR9IGF0ICR7KERhdGUubm93KCkgLSBzdGFydFRpbWUpLnRvRml4ZWQoMCl9bXNgLFxuICAgICAgICAgICAgXCJjb2xvcjogbGlnaHRncmVlblwiXG4gICAgICAgICk7XG5cblxuXG4gICAgICAgIGlmIChhbHJlYWR5SGF2ZT8ucmVxdWlyZVNlcU51bVByb2Nlc3NJZCAhPT0gcmVxdWlyZVNlcU51bVByb2Nlc3NJZCkge1xuICAgICAgICAgICAgYWxyZWFkeUhhdmUgPSB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgYWxyZWFkeUhhdmUgPSBhbHJlYWR5SGF2ZSB8fCB7IHJlcXVpcmVTZXFOdW1Qcm9jZXNzSWQsIHNlcU51bXM6IHt9IH07XG5cbiAgICAgICAgZm9yIChsZXQgaWQgaW4gbW9kdWxlcykge1xuICAgICAgICAgICAgbGV0IG1vZHVsZSA9IG1vZHVsZXNbaWRdO1xuICAgICAgICAgICAgYWxyZWFkeUhhdmUuc2VxTnVtc1ttb2R1bGUuc2VxTnVtXSA9IDE7XG4gICAgICAgICAgICBzZXJpYWxpemVkTW9kdWxlc1tpZF0gPSBtb2R1bGU7XG4gICAgICAgIH1cblxuICAgICAgICB0aW1lID0gRGF0ZS5ub3coKTtcbiAgICAgICAgbGV0IGxhc3RXYWl0VGltZSA9IHRpbWU7XG4gICAgICAgIGZvciAobGV0IGtleSBvZiBPYmplY3Qua2V5cyhtb2R1bGVzKSkge1xuICAgICAgICAgICAgZ2V0TW9kdWxlKGtleSwgXCJwcmVsb2FkXCIpO1xuICAgICAgICAgICAgLy8gV2FpdCwgc28gd2UgY2FuIHJlbmRlciBwcm9ncmVzcyAoYW5kIGluIGdlbmVyYWxzLCBzbyB0aGUgVUkgcmVtYWlucyBzb21ld2hhdCByZXNwb25zaXZlKVxuICAgICAgICAgICAgaWYgKERhdGUubm93KCkgLSBsYXN0V2FpdFRpbWUgPiAxMCkge1xuICAgICAgICAgICAgICAgIGF3YWl0IG5ldyBQcm9taXNlKHJlc29sdmUgPT4gc2V0VGltZW91dChyZXNvbHZlLCAwKSk7XG4gICAgICAgICAgICAgICAgbGFzdFdhaXRUaW1lID0gRGF0ZS5ub3coKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHRpbWUgPSBEYXRlLm5vdygpIC0gdGltZTtcbiAgICAgICAgY29uc29sZS5sb2coXG4gICAgICAgICAgICBgJWNpbXBvcnQoJHtyZXF1ZXN0cy5qb2luKFwiLCBcIil9KSBmaW5pc2hlZCBjb21waWxlICR7dGltZS50b0ZpeGVkKDApfW1zICgke21vZHVsZUNvdW50fSBtb2R1bGVzKSBhdCAkeyhEYXRlLm5vdygpIC0gc3RhcnRUaW1lKS50b0ZpeGVkKDApfW1zYCxcbiAgICAgICAgICAgIFwiY29sb3I6IGhvdHBpbmtcIlxuICAgICAgICApO1xuXG5cbiAgICAgICAgZ2xvYmFsVGhpcy5vblByb2dyZXNzSGFuZGxlcj8uKHtcbiAgICAgICAgICAgIHR5cGU6IFwiRXZhbHVhdGVcIixcbiAgICAgICAgICAgIGFkZFZhbHVlOiAwLFxuICAgICAgICAgICAgYWRkTWF4OiBPYmplY3Qua2V5cyhtb2R1bGVzKS5sZW5ndGgsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRpbWUgPSBEYXRlLm5vdygpO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgcmV0dXJuIHJlcXVlc3RzUmVzb2x2ZWRQYXRocy5tYXAoKHgpID0+IGdldE1vZHVsZSh4KSk7XG4gICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgICB0aW1lID0gRGF0ZS5ub3coKSAtIHRpbWU7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgICAgICAgICBgJWNpbXBvcnQoJHtyZXF1ZXN0cy5qb2luKFwiLCBcIil9KSBmaW5pc2hlZCBldmFsdWF0ZSAke3RpbWUudG9GaXhlZCgwKX1tcyAoJHttb2R1bGVDb3VudH0gbW9kdWxlcykgYXQgJHsoRGF0ZS5ub3coKSAtIHN0YXJ0VGltZSkudG9GaXhlZCgwKX1tc2AsXG4gICAgICAgICAgICAgICAgXCJjb2xvcjogbGlnaHRibHVlXCJcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBjcmVhdGVSZXF1aXJlKG1vZHVsZTogTW9kdWxlVHlwZSwgc2VyaWFsaXplZE1vZHVsZTogU2VyaWFsaXplZE1vZHVsZSwgYXN5bmNJc0ZpbmVPdXRlcj86IGJvb2xlYW4pIHtcbiAgICAgICAgcmVxdWlyZS5jYWNoZSA9IG1vZHVsZUNhY2hlO1xuICAgICAgICAvLyBEeW5hbWljYWxseSBnZXQgZm9sZGVyLCBpbmNhc2Ugb3VyIGZpbGVuYW1lIGNoYW5nZXNcbiAgICAgICAgZnVuY3Rpb24gZ2V0TW9kdWxlRm9sZGVyKCkge1xuICAgICAgICAgICAgcmV0dXJuIG1vZHVsZS5maWxlbmFtZS5yZXBsYWNlKC9cXFxcL2csIFwiL1wiKS5zcGxpdChcIi9cIikuc2xpY2UoMCwgLTEpLmpvaW4oXCIvXCIpICsgXCIvXCI7XG4gICAgICAgIH1cbiAgICAgICAgZnVuY3Rpb24gcmVzb2x2ZShyZXF1ZXN0OiBzdHJpbmcpIHtcbiAgICAgICAgICAgIGxldCByZXF1ZXN0cyA9IHNlcmlhbGl6ZWRNb2R1bGUucmVxdWVzdHM7XG4gICAgICAgICAgICBpZiAocmVxdWVzdCBpbiByZXF1ZXN0cykge1xuICAgICAgICAgICAgICAgIHJldHVybiByZXF1ZXN0c1tyZXF1ZXN0XTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxldCBhYnNvbHV0ZVBhdGggPSByZXF1ZXN0O1xuICAgICAgICAgICAgaWYgKGFic29sdXRlUGF0aC5zdGFydHNXaXRoKFwiLi9cIikgfHwgYWJzb2x1dGVQYXRoLnN0YXJ0c1dpdGgoXCIuLi9cIikpIHtcbiAgICAgICAgICAgICAgICBsZXQgZm9sZGVyUGFydHMgPSBnZXRNb2R1bGVGb2xkZXIoKS5zcGxpdChcIi9cIik7XG4gICAgICAgICAgICAgICAgd2hpbGUgKGFic29sdXRlUGF0aC5zdGFydHNXaXRoKFwiLi9cIikgfHwgYWJzb2x1dGVQYXRoLnN0YXJ0c1dpdGgoXCIuLi9cIikpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGFic29sdXRlUGF0aC5zdGFydHNXaXRoKFwiLi9cIikpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFic29sdXRlUGF0aCA9IGFic29sdXRlUGF0aC5zbGljZShcIi4vXCIubGVuZ3RoKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvbGRlclBhcnRzLnBvcCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYWJzb2x1dGVQYXRoID0gYWJzb2x1dGVQYXRoLnNsaWNlKFwiLi4vXCIubGVuZ3RoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBhYnNvbHV0ZVBhdGggPSBmb2xkZXJQYXJ0cy5qb2luKFwiL1wiKSArIFwiL1wiICsgYWJzb2x1dGVQYXRoO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gU3RpbGwgdXNlIHRoZSBzYW1lIGRvbWFpblxuICAgICAgICAgICAgaWYgKCFhYnNvbHV0ZVBhdGguc3RhcnRzV2l0aChcImh0dHBzOi8vXCIpKSB7XG4gICAgICAgICAgICAgICAgYWJzb2x1dGVQYXRoID0gbWFpblJvb3RPcmlnaW4gKyBhYnNvbHV0ZVBhdGg7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gYWJzb2x1dGVQYXRoO1xuICAgICAgICB9XG4gICAgICAgIHJlcXVpcmUucmVzb2x2ZSA9IHJlc29sdmU7XG4gICAgICAgIHJldHVybiByZXF1aXJlO1xuICAgICAgICBmdW5jdGlvbiByZXF1aXJlKHJlcXVlc3Q6IHN0cmluZywgYXN5bmNJc0ZpbmU/OiBib29sZWFuKSB7XG4gICAgICAgICAgICBpZiAoYXN5bmNJc0ZpbmVPdXRlcikge1xuICAgICAgICAgICAgICAgIGFzeW5jSXNGaW5lID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0eXBlb2YgYXN5bmNJc0ZpbmUgIT09IFwiYm9vbGVhblwiKSB7XG4gICAgICAgICAgICAgICAgYXN5bmNJc0ZpbmUgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChyZXF1ZXN0IGluIHNlcmlhbGl6ZWRNb2R1bGUuYXN5bmNSZXF1ZXN0cykge1xuICAgICAgICAgICAgICAgIGFzeW5jSXNGaW5lID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChyZXF1ZXN0IGluIGJ1aWx0SW5Nb2R1bGVFeHBvcnRzKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGJ1aWx0SW5Nb2R1bGVFeHBvcnRzW3JlcXVlc3QgYXMga2V5b2YgdHlwZW9mIGJ1aWx0SW5Nb2R1bGVFeHBvcnRzXTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgbGV0IGFic29sdXRlUGF0aCA9IHJlc29sdmUocmVxdWVzdCk7XG5cbiAgICAgICAgICAgIGxldCByZXNvbHZlZFBhdGg6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIGlmIChyZXF1ZXN0IGluIG1vZHVsZUNhY2hlKSB7XG4gICAgICAgICAgICAgICAgcmVzb2x2ZWRQYXRoID0gcmVxdWVzdDtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoYWJzb2x1dGVQYXRoIGluIG1vZHVsZUNhY2hlKSB7XG4gICAgICAgICAgICAgICAgcmVzb2x2ZWRQYXRoID0gYWJzb2x1dGVQYXRoO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBpZiAoIShyZXF1ZXN0IGluIHNlcmlhbGl6ZWRNb2R1bGUucmVxdWVzdHMpKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghYXN5bmNJc0ZpbmUgJiYgIWdsb2JhbFRoaXMuc3VwcHJlc3NVbmV4cGVjdGVkTW9kdWxlV2FybmluZykge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBBY2Nlc3NlZCB1bmV4cGVjdGVkIG1vZHVsZSAlYyR7cmVxdWVzdH0lYyBpbiAlYyR7bW9kdWxlLmlkfSVjXFxuXFx0VHJlYXRpbmcgaXQgYXMgYW4gYXN5bmMgcmVxdWlyZS5cXG5cXHRBbGwgbW9kdWxlcyByZXF1aXJlIHN5bmNocm9ub3VzbHkgY2xpZW50c2lkZSBtdXN0IGJlIHJlcXVpcmVkIHNlcnZlcnNpZGUgYXQgYSBtb2R1bGUgbGV2ZWwuIEV4cGVjdGVkIGltcG9ydHM6ICR7T2JqZWN0LmtleXMoc2VyaWFsaXplZE1vZHVsZS5yZXF1ZXN0cykuam9pbihcIiB8IFwiKX1gLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiY29sb3I6IHJlZFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiY29sb3I6IHVuc2V0XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJjb2xvcjogcmVkXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJjb2xvcjogdW5zZXRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcm9vdFJlcXVpcmUoYWJzb2x1dGVQYXRoKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAvLyBCdWlsdCBpbiBtb2R1bGVzIHRoYXQgd2UgaGF2ZW4ndCBiZWVuIGltcGxlbWVudGVkXG4gICAgICAgICAgICAgICAgaWYgKHNlcmlhbGl6ZWRNb2R1bGUucmVxdWVzdHNbcmVxdWVzdF0gPT09IFwiXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHt9O1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJlc29sdmVkUGF0aCA9IHNlcmlhbGl6ZWRNb2R1bGUucmVxdWVzdHNbcmVxdWVzdF07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAocmVzb2x2ZWRQYXRoICE9PSBcIk5PVEFMTE9XRURDTElFTlRTSURFXCIgJiYgIXNlcmlhbGl6ZWRNb2R1bGVzW3Jlc29sdmVkUGF0aF0pIHtcbiAgICAgICAgICAgICAgICBpZiAoIWFzeW5jSXNGaW5lKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgICAgICAgICAgICAgICAgIGBBY2Nlc3NlZCB1bmV4cGVjdGVkIG1vZHVsZSAlYyR7cmVxdWVzdH0lYyBpbiAlYyR7bW9kdWxlLmlkfSVjXFxuXFx0VHJlYXRpbmcgaXQgYXMgYW4gYXN5bmMgcmVxdWlyZS5cXG5cXHRBbGwgbW9kdWxlcyByZXF1aXJlIHN5bmNocm9ub3VzbHkgY2xpZW50c2lkZSBtdXN0IGJlIHJlcXVpcmVkIHNlcnZlcnNpZGUgYXQgYSBtb2R1bGUgbGV2ZWwuIEV4cGVjdGVkIGltcG9ydHM6ICR7T2JqZWN0LmtleXMoc2VyaWFsaXplZE1vZHVsZS5yZXF1ZXN0cykuam9pbihcIiB8IFwiKX1gLFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJjb2xvcjogcmVkXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBcImNvbG9yOiB1bnNldFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJjb2xvcjogcmVkXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBcImNvbG9yOiB1bnNldFwiXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiByb290UmVxdWlyZShyZXNvbHZlZFBhdGgpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBsZXQgZXhwb3J0c092ZXJyaWRlOiB1bmtub3duIHwgdW5kZWZpbmVkO1xuICAgICAgICAgICAgaWYgKHJlc29sdmVkUGF0aCA9PT0gXCJOT1RBTExPV0VEQ0xJRU5UU0lERVwiIHx8ICFzZXJpYWxpemVkTW9kdWxlc1tyZXNvbHZlZFBhdGhdPy5hbGxvd2NsaWVudCkge1xuICAgICAgICAgICAgICAgIGxldCBjaGlsZElkID0gcmVzb2x2ZWRQYXRoID09PSBcIk5PVEFMTE9XRURDTElFTlRTSURFXCIgPyByZXF1ZXN0IDogcmVzb2x2ZWRQYXRoO1xuICAgICAgICAgICAgICAgIGlmIChzZXJpYWxpemVkTW9kdWxlc1tyZXNvbHZlZFBhdGhdPy5zZXJ2ZXJvbmx5KSB7XG4gICAgICAgICAgICAgICAgICAgIGV4cG9ydHNPdmVycmlkZSA9IG5ldyBQcm94eShcbiAgICAgICAgICAgICAgICAgICAgICAgIHt9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldCh0YXJnZXQsIHByb3BlcnR5KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwcm9wZXJ0eSA9PT0gXCJfX2VzTW9kdWxlXCIpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE5PVEU6IFJldHVybiBhIHRvU3RyaW5nIHRoYXQgZXZhbHVhdGVzIHRvIFwiXCIgc28gd2UgY2FuIEVYUExJQ0lUTFkgZGV0ZWN0IG5vbi1sb2FkZWQgbW9kdWxlc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocHJvcGVydHkgPT09IHVubG9hZGVkTW9kdWxlKSByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHByb3BlcnR5ID09PSBcImRlZmF1bHRcIikgcmV0dXJuIGV4cG9ydHNPdmVycmlkZTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgTW9kdWxlICR7Y2hpbGRJZH0gaXMgc2VydmVyc2lkZSBvbmx5LiBUcmllZCB0byBhY2Nlc3MgJHtTdHJpbmcocHJvcGVydHkpfSBmcm9tICR7bW9kdWxlLmlkfWBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGV4cG9ydHNPdmVycmlkZSA9IG5ldyBQcm94eShcbiAgICAgICAgICAgICAgICAgICAgICAgIHt9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldCh0YXJnZXQsIHByb3BlcnR5KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwcm9wZXJ0eSA9PT0gXCJfX2VzTW9kdWxlXCIpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE5PVEU6IFJldHVybiBhIHRvU3RyaW5nIHRoYXQgZXZhbHVhdGVzIHRvIFwiXCIgc28gd2UgY2FuIEVYUExJQ0lUTFkgZGV0ZWN0IG5vbi1sb2FkZWQgbW9kdWxlc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocHJvcGVydHkgPT09IHVubG9hZGVkTW9kdWxlKSByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHByb3BlcnR5ID09PSBcImRlZmF1bHRcIikgcmV0dXJuIGV4cG9ydHNPdmVycmlkZTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgdHlwZSA9IFwibm9uLXdoaXRlbGlzdGVkXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghc2VyaWFsaXplZE1vZHVsZXNbcmVzb2x2ZWRQYXRoIV0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGUgPSBcIm1pc3NpbmcgbW9kdWxlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgQWNjZXNzZWQgJHt0eXBlfSBtb2R1bGUgJWMke2NoaWxkSWR9JWMsIHNwZWNpZmljYWxseSBwcm9wZXJ0eSAlYyR7U3RyaW5nKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BlcnR5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfSVjLlxcblxcdEFkZCAlY21vZHVsZS5hbGxvd2NsaWVudCA9IHRydWUlYyB0byB0aGUgZmlsZSB0byBhbGxvdyBhY2Nlc3MuXFxuXFx0KElGIGl0IGlzIGEgM3JkIHBhcnR5IGxpYnJhcnksIHVzZSB0aGUgZ2xvYmFsIFwic2V0RmxhZ1wiIGhlbHBlciAoaW4gdGhlIGZpbGUgeW91IGltcG9ydGVkIHRoZSBtb2R1bGUpIHRvIHNldCBwcm9wZXJ0aWVzIG9uIG90aGVyIG1vZHVsZXMgKGl0IGNhbiBldmVuIHJlY3Vyc2l2ZWx5IHNldCBwcm9wZXJ0aWVzKSkuXFxuXFxuXFx0RnJvbSAke21vZHVsZS5pZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfWAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImNvbG9yOiByZWRcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiY29sb3I6IHVuc2V0XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImNvbG9yOiByZWRcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiY29sb3I6IHVuc2V0XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImNvbG9yOiByZWRcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiY29sb3I6IHVuc2V0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHJlc29sdmVkUGF0aCA9PT0gXCJOT1RBTExPV0VEQ0xJRU5UU0lERVwiKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGV4cG9ydHNPdmVycmlkZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgbGV0IHByb3ZpZGVyTW9kdWxlID0gZ2V0TW9kdWxlKHJlc29sdmVkUGF0aCk7XG4gICAgICAgICAgICBtb2R1bGUuY2hpbGRyZW4ucHVzaChwcm92aWRlck1vZHVsZSk7XG4gICAgICAgICAgICBpZiAoZXhwb3J0c092ZXJyaWRlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICBwcm92aWRlck1vZHVsZS5leHBvcnRzID0gZXhwb3J0c092ZXJyaWRlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBsZXQgZXhwb3J0cyA9IHByb3ZpZGVyTW9kdWxlLmV4cG9ydHM7XG4gICAgICAgICAgICBsZXQgcmVtYXBFeHBvcnRzID0gcHJvdmlkZXJNb2R1bGUucmVtYXBFeHBvcnRzO1xuICAgICAgICAgICAgaWYgKHJlbWFwRXhwb3J0cyAmJiB0eXBlb2YgcmVtYXBFeHBvcnRzID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgICAgICAgICBleHBvcnRzID0gcmVtYXBFeHBvcnRzKGV4cG9ydHMsIG1vZHVsZSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBleHBvcnRzO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEdlbmVyYXRlcyB0aGUgbW9kdWxlIHJvb3QgZnVuY3Rpb24sIHdoaWNoIGNhbiBiZSBjYWxsZWQgdG8gZXZhbHVhdGUgdGhlIG1vZHVsZSxcbiAgICAgKiAgICAgIGFuZCBoYXMgY29kZSBlcXVhbCB0byBjb250ZW50cy5cbiAgICAgKiAgICAgIC0gZmlsZW5hbWUgaXMganVzdCBmb3IgZGVidWdnaW5nIC8gc3RhY2sgdHJhY2VzXG4gICAgICovXG4gICAgZnVuY3Rpb24gd3JhcFNhZmUoZmlsZW5hbWU6IHN0cmluZywgY29udGVudHM6IHN0cmluZykge1xuICAgICAgICAvLyBUT0RPOiBIYXZlIHRoZSBzZXJ2ZXJzaWRlIGluZm9ybSB1cyBvZiB0aGUgY29ycmVjdCBsb2FkZXIsIG9yLi4uIGhhdmUgaXQgYWN0dWFsbHkgZW1pdCBhIC5qc29uIGxvYWRlci5cbiAgICAgICAgaWYgKGZpbGVuYW1lLmVuZHNXaXRoKFwiLmpzb25cIikpIHtcbiAgICAgICAgICAgIHJldHVybiAoZXhwb3J0czogdW5rbm93biwgcmVxdWlyZTogdW5rbm93biwgbW9kdWxlOiBNb2R1bGVUeXBlKSA9PiAobW9kdWxlLmV4cG9ydHMgPSBjb250ZW50cyAmJiBKU09OLnBhcnNlKGNvbnRlbnRzKSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBOT1RFOiBkZWJ1Z05hbWUgb25seSBtYXR0ZXJzIGR1cmluZyBtb2R1bGUgZXZhbHVhdGlvbi4gQWZ0ZXIgdGhhdCB0aGUgc291cmNlbWFwIHNob3VsZCB3b3JrLlxuICAgICAgICBsZXQgZGVidWdOYW1lID0gZmlsZW5hbWVcbiAgICAgICAgICAgIC5yZXBsYWNlKC9cXFxcL2csIFwiL1wiKVxuICAgICAgICAgICAgLnNwbGl0KFwiL1wiKVxuICAgICAgICAgICAgLnNsaWNlKC0xKVswXVxuICAgICAgICAgICAgLnJlcGxhY2UoL1xcLi9nLCBcIl9cIilcbiAgICAgICAgICAgIC5yZXBsYWNlKC9bXmEtekEtWl9dL2csIFwiXCIpO1xuICAgICAgICAvLyBOT1RFOiBldmFsIGlzIHVzZWQgaW5zdGVhZCBvZiBuZXcgRnVuY3Rpb24sIGFzIG5ldyBGdW5jdGlvbiBpbmplY3QgbGluZXMsIHdoaWNoIG1lc3Nlc1xuICAgICAgICAvLyAgdXAgb3VyIHNvdXJjZW1hcHMuXG4gICAgICAgIC8vIE5PVEU6IEFsbCBvbiBvbmUgbGluZSwgc28gd2UgZG9uJ3QgYnJlYWsgc291cmNlbWFwcyBieSBUT08gbXVjaC4gV2UgY291bGQgYWxzbyBwYXJzZVxuICAgICAgICAvLyAgdGhlIHNvdXJjZW1hcCBhbmQgYWRqdXN0IGl0LCBidXQuLi4gaXQgaXMgbXVjaCBlYXNpZXIgdG8ganVzdCBub3QgY2hhbmdlIHRoZSBsaW5lIGNvdW50cy5cbiAgICAgICAgcmV0dXJuIGV2YWwoXG4gICAgICAgICAgICBgKGZ1bmN0aW9uICR7ZGVidWdOYW1lfShleHBvcnRzLCByZXF1aXJlLCBtb2R1bGUsIF9fZmlsZW5hbWUsIF9fZGlybmFtZSwgaW1wb3J0RHluYW1pYykge1widXNlIHN0cmljdFwiOyR7Y29udGVudHN9XFxuIH0pYFxuICAgICAgICApO1xuICAgIH1cblxuICAgIGNvbnN0IHVubG9hZGVkTW9kdWxlID0gU3ltYm9sKFwidW5sb2FkZWRNb2R1bGVcIik7XG5cbiAgICBsZXQgY3VycmVudE1vZHVsZUV2YWx1YXRpb25TdGFjazogc3RyaW5nW10gPSBbXTtcbiAgICAvLyBTZWUgaHR0cHM6Ly9ub2RlanMub3JnL2FwaS9tb2R1bGVzLmh0bWxcbiAgICBmdW5jdGlvbiBnZXRNb2R1bGUocmVzb2x2ZWRJZDogc3RyaW5nLCBwcmVsb2FkPzogXCJwcmVsb2FkXCIpOiBNb2R1bGVUeXBlIHtcbiAgICAgICAgaWYgKHJlc29sdmVkSWQgPT09IFwiXCIpIHtcbiAgICAgICAgICAgIHJldHVybiB7fSBhcyBNb2R1bGVUeXBlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChyZXNvbHZlZElkIGluIG1vZHVsZUNhY2hlKSB7XG4gICAgICAgICAgICBsZXQgbW9kdWxlID0gbW9kdWxlQ2FjaGVbcmVzb2x2ZWRJZF07XG4gICAgICAgICAgICBpZiAoIXByZWxvYWQgJiYgIW1vZHVsZS5sb2FkZWQpIHtcbiAgICAgICAgICAgICAgICBtb2R1bGUubG9hZGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBtb2R1bGUubG9hZCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIG1vZHVsZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBzZXJpYWxpemVkTW9kdWxlID0gc2VyaWFsaXplZE1vZHVsZXNbcmVzb2x2ZWRJZF07XG4gICAgICAgIGlmICghc2VyaWFsaXplZE1vZHVsZSkge1xuICAgICAgICAgICAgLy8gSSBjYW4ndCBmaWd1cmUgb3V0IHdoeSB0aGlzIGhhcHBlbnMgYXMgaXQgc2VlbXMgdG8gaGFwcGVuIHZlcnkgcmFyZWx5IGFuZCBvbmx5IHdoZW4gSSdtIGRlYnVnZ2luZyBvdGhlciBjb2RlLlxuICAgICAgICAgICAgLy8gIC0gSSBoYXZlIGhhZCBpdCBoYXBwZW4gaW1tZWRpYXRlbHkgYWZ0ZXIgc3RhcnRpbmcgdGhlIGFwcC4gQWx0aG91Z2ggaW4gdGhlb3J5IGEgaG90IHJlbG9hZCBjb3VsZCBoYXZlXG4gICAgICAgICAgICAvLyAgICAgIHRyaWdnZXJlZCBkdWUgdG8gVlMgY29kZSB3cml0aW5nIHRvIGEgZmlsZS4gXG4gICAgICAgICAgICAvLyAgLSBJJ3ZlIGhhZCB0aW1lcyB3aGVuIGl0IGhhcHBlbnMgb25jZSBhZnRlciBzdGFydHVwIGFuZCB0aGVuIGl0IGdvZXMgYXdheSBhbmQgb3RoZXIgdGltZXMgd2hlcmUgaXRcbiAgICAgICAgICAgIC8vICAgICAgaGFwcGVucyBldmVyeSBzaW5nbGUgdGltZSBhbmQgbmV2ZXIgZ29lcyBhd2F5IHVudGlsIEkgcmVzdGFydCBhaXBhaW50LlxuICAgICAgICAgICAgLy8gIC0gTWF5YmUgaXQgaGFwcGVucyBpZiB3ZSBzd2l0Y2ggc2VydmVycyBhbmQgc28gdGhlIHJvb3QgcGF0aHMgYXJlIGRpZmZlcmVudCBpbiBzb21lIHdheT9cbiAgICAgICAgICAgIGRlYnVnZ2VyO1xuICAgICAgICAgICAgY29uc29sZS53YXJuKGBGYWlsZWQgdG8gZmluZCBtb2R1bGUgJHtyZXNvbHZlZElkfS4gVGhlIHNlcnZlciBzaG91bGQgaGF2ZSBnaXZlbiBhbiBlcnJvciBhYm91dCB0aGlzLmAsIHNlcmlhbGl6ZWRNb2R1bGVzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBtb2R1bGUgPSBPYmplY3QuY3JlYXRlKG51bGwpIGFzIE1vZHVsZVR5cGU7XG4gICAgICAgIG1vZHVsZUNhY2hlW3Jlc29sdmVkSWRdID0gbW9kdWxlO1xuICAgICAgICBtb2R1bGUuaWQgPSByZXNvbHZlZElkO1xuICAgICAgICBtb2R1bGUuZmlsZW5hbWUgPSBzZXJpYWxpemVkTW9kdWxlPy5maWxlbmFtZSB8fCBcIlwiO1xuICAgICAgICBtb2R1bGUuZXhwb3J0cyA9IHt9O1xuICAgICAgICAvLyBEZWZhdWx0IGRlZmF1bHQgb2YgZXhwb3J0cyB0byB0aGUgZXhwb3J0cyBpdHNlbGZcbiAgICAgICAgKG1vZHVsZS5leHBvcnRzIGFzIGFueSkuZGVmYXVsdCA9IG1vZHVsZS5leHBvcnRzO1xuICAgICAgICBtb2R1bGUuY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgZm9yIChsZXQga2V5IGluIHNlcmlhbGl6ZWRNb2R1bGU/LmZsYWdzIHx8IHt9KSB7XG4gICAgICAgICAgICBpZiAoa2V5ID09PSBcImxvYWRlZFwiKSBjb250aW51ZTtcbiAgICAgICAgICAgIChtb2R1bGUgYXMgYW55KVtrZXldID0gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIG1vZHVsZS5sb2FkID0gbG9hZDtcblxuICAgICAgICBsZXQgb3JpZ2luYWxTb3VyY2UgPSBzZXJpYWxpemVkTW9kdWxlPy5zb3VyY2UgfHwgXCJcIjtcbiAgICAgICAgbGV0IG1vZHVsZUZuYyA9IHdyYXBTYWZlKG1vZHVsZS5pZCwgb3JpZ2luYWxTb3VyY2UpO1xuXG4gICAgICAgIGdsb2JhbFRoaXMub25Qcm9ncmVzc0hhbmRsZXI/Lih7XG4gICAgICAgICAgICB0eXBlOiBcIkNvbXBpbGVcIixcbiAgICAgICAgICAgIGFkZFZhbHVlOiAxLFxuICAgICAgICAgICAgYWRkTWF4OiAwLFxuICAgICAgICB9KTtcblxuICAgICAgICBpZiAoIXByZWxvYWQpIHtcbiAgICAgICAgICAgIG1vZHVsZS5sb2FkZWQgPSB0cnVlO1xuICAgICAgICAgICAgbW9kdWxlLmxvYWQoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZ1bmN0aW9uIGxvYWQoKSB7XG4gICAgICAgICAgICBjb25zdCBzZXJpYWxpemVkTW9kdWxlID0gc2VyaWFsaXplZE1vZHVsZXNbcmVzb2x2ZWRJZF07XG4gICAgICAgICAgICBpZiAoIXNlcmlhbGl6ZWRNb2R1bGUpIHJldHVybjtcbiAgICAgICAgICAgIGlmICghbW9kdWxlLmxvYWRlZCkge1xuICAgICAgICAgICAgICAgIG1vZHVsZS5ldmFsdWF0ZVN0YXJ0ZWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBpZiAoYWxyZWFkeUhhdmUpIHtcbiAgICAgICAgICAgICAgICAgICAgZGVsZXRlIGFscmVhZHlIYXZlLnNlcU51bXNbc2VyaWFsaXplZE1vZHVsZS5zZXFOdW1dO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAvLyBOT1RFOiBUaGVyZSBpcyBhbG1vc3QgbmV2ZXIgYSB3YXkgdG8gcmVjb3ZlciBmcm9tIG1vZHVsZSBkb3dubG9hZGluZyBlcnJvcnMsIHNvIGp1c3QgZG9uJ3QgY2F0Y2ggdGhlbVxuICAgICAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKVxuICAgICAgICAgICAgICAgICAgICAudGhlbigoKSA9PiByb290UmVxdWlyZShyZXNvbHZlZElkLCB0cnVlKSlcbiAgICAgICAgICAgICAgICAgICAgLnRoZW4oYXN5bmMgKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgbW9kdWxlLmxvYWRlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICBhd2FpdCBsb2FkKCk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBTa2lwIGRvdWJsZSBsb2Fkc1xuICAgICAgICAgICAgaWYgKG1vZHVsZS5ldmFsdWF0ZVN0YXJ0ZWQpIHJldHVybjtcblxuICAgICAgICAgICAgbW9kdWxlLm9yaWdpbmFsID0gc2VyaWFsaXplZE1vZHVsZTtcblxuICAgICAgICAgICAgbW9kdWxlLnJlcXVpcmVzID0gc2VyaWFsaXplZE1vZHVsZS5yZXF1ZXN0cztcbiAgICAgICAgICAgIG1vZHVsZS5yZXF1aXJlID0gY3JlYXRlUmVxdWlyZShtb2R1bGUsIHNlcmlhbGl6ZWRNb2R1bGUpIGFzIGFueTtcbiAgICAgICAgICAgIC8vIFRPRE86IE9uY2UgdHlwZXNjcmlwdCBzdXBwb3J0cyBkeW5hbWljIGltcG9ydCwgbWFwIGltcG9ydCgpIHRvIGltcG9ydER5bmFtaWMsIHNvIGl0XG4gICAgICAgICAgICAvLyAgdXNlcyBvdXIgaW1wb3J0IGZ1bmN0aW9uLCBpbnN0ZWFkIG9mIHRoZSBidWlsdCBpbiBvbmUuXG4gICAgICAgICAgICAvLyAgKEFzIGFwcGFyZW50bHkgd2UgY2FuJ3QganVzdCBvdmVycmlkZSBpbXBvcnQgb24gYSBwZXIgbW9kdWxlIGJhc2lzLCBiZWNhdXNlXG4gICAgICAgICAgICAvLyAgICAgIHdlIGNhbid0IGhhdmUgYW4gaWRlbnRpZnkgY2FsbGVkIFwiaW1wb3J0XCIuLi4gd2hpY2ggaXMgYW5ub3lpbmcpLlxuICAgICAgICAgICAgbGV0IGltcG9ydER5bmFtaWMgPSBjcmVhdGVSZXF1aXJlKG1vZHVsZSwgc2VyaWFsaXplZE1vZHVsZSwgdHJ1ZSk7XG4gICAgICAgICAgICBtb2R1bGUuaW1wb3J0ID0gaW1wb3J0RHluYW1pYztcblxuICAgICAgICAgICAgbGV0IHNvdXJjZSA9IHNlcmlhbGl6ZWRNb2R1bGUuc291cmNlO1xuXG4gICAgICAgICAgICBtb2R1bGUuYWxsb3djbGllbnQgPSAhIXNlcmlhbGl6ZWRNb2R1bGUuc291cmNlO1xuXG4gICAgICAgICAgICAvLyBJbXBvcnQgY2hpbGRyZW4sIGFzIHRoZSBjaGlsZHJlbiBtYXkgYmUgYWxsb3dlZCBjbGllbnRzaWRlLCBhbmQgbWF5IGhhdmUgc2lkZS1lZmZlY3RzIVxuICAgICAgICAgICAgaWYgKCFzb3VyY2UpIHtcbiAgICAgICAgICAgICAgICBsZXQgcmVxdWVzdHMgPSBPYmplY3Qua2V5cyhzZXJpYWxpemVkTW9kdWxlLnJlcXVlc3RzKVxuICAgICAgICAgICAgICAgICAgICAuZmlsdGVyKCh4KSA9PiB4ICE9PSBcIk5PVEFMTE9XRURDTElFTlRTSURFXCIpXG4gICAgICAgICAgICAgICAgICAgIC5maWx0ZXIoKHgpID0+ICEoeCBpbiBzZXJpYWxpemVkTW9kdWxlLmFzeW5jUmVxdWVzdHMpKTtcbiAgICAgICAgICAgICAgICBzb3VyY2UgPSByZXF1ZXN0cy5tYXAoKGlkKSA9PiBgcmVxdWlyZSgke0pTT04uc3RyaW5naWZ5KGlkKX0pO1xcbmApLmpvaW4oXCJcIik7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIG1vZHVsZS5zaXplID0gc291cmNlLmxlbmd0aDtcbiAgICAgICAgICAgIG1vZHVsZS5zb3VyY2UgPSBzb3VyY2U7XG5cbiAgICAgICAgICAgIGlmIChzb3VyY2UgIT09IG9yaWdpbmFsU291cmNlKSB7XG4gICAgICAgICAgICAgICAgb3JpZ2luYWxTb3VyY2UgPSBzb3VyY2U7XG4gICAgICAgICAgICAgICAgbW9kdWxlRm5jID0gd3JhcFNhZmUobW9kdWxlLmlkLCBvcmlnaW5hbFNvdXJjZSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGxldCBkaXJuYW1lID0gbW9kdWxlLmZpbGVuYW1lLnJlcGxhY2UoL1xcXFwvZywgXCIvXCIpLnNwbGl0KFwiL1wiKS5zbGljZSgwLCAtMSkuam9pbihcIi9cIik7XG5cbiAgICAgICAgICAgIGxldCB0aW1lID0gRGF0ZS5ub3coKTtcbiAgICAgICAgICAgIGN1cnJlbnRNb2R1bGVFdmFsdWF0aW9uU3RhY2sucHVzaChtb2R1bGUuZmlsZW5hbWUpO1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBtb2R1bGUuZXZhbHVhdGVTdGFydGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBtb2R1bGUuaXNQcmVsb2FkaW5nID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBtb2R1bGUuZXZhbFN0YXJ0VGltZSA9IG5leHRUaW1lKCk7XG4gICAgICAgICAgICAgICAgbW9kdWxlLmV2YWxFbmRUaW1lID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgIG1vZHVsZUZuYy5jYWxsKFxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBOT1RFOiBBZGRpbmcgX19pbXBvcnRTdGFyIHRvIHRoZSBtb2R1bGUgY2F1c2VzIHR5cGVzY3JpcHQgdG8gdXNlIG91ciBpbXBsZW1lbnRhdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICB3aGljaCBjaGVja3MgZm9yIHVubG9hZGVkTW9kdWxlIGFuZCByZXR1cm5zIHVuZGVmaW5lZCBpbiB0aGF0IGNhc2UuXG4gICAgICAgICAgICAgICAgICAgICAgICBfX2ltcG9ydFN0YXIobW9kOiBhbnkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobW9kW3VubG9hZGVkTW9kdWxlXSkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbW9kO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIF9faW1wb3J0RGVmYXVsdChtb2Q6IGFueSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBtb2QuZGVmYXVsdCA/IG1vZCA6IHsgZGVmYXVsdDogbW9kIH07XG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBtb2R1bGUuZXhwb3J0cyxcbiAgICAgICAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC91bmJvdW5kLW1ldGhvZFxuICAgICAgICAgICAgICAgICAgICBtb2R1bGUucmVxdWlyZSxcbiAgICAgICAgICAgICAgICAgICAgbW9kdWxlLFxuICAgICAgICAgICAgICAgICAgICBtb2R1bGUuZmlsZW5hbWUsXG4gICAgICAgICAgICAgICAgICAgIGRpcm5hbWUsXG4gICAgICAgICAgICAgICAgICAgIGltcG9ydER5bmFtaWNcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIG1vZHVsZS5ldmFsRW5kVGltZSA9IG5leHRUaW1lKCk7XG4gICAgICAgICAgICAgICAgdGltZSA9IERhdGUubm93KCkgLSB0aW1lO1xuICAgICAgICAgICAgICAgIC8vIE5PVEU6IFRoaXMgbG9nIHN0YXRtZW50IGlzIGRpc2FibGVkIGFzIEkgYmVsaWV2ZSBpdCBjYXVzZXMgbGFnICh3aGVuIGRldnRvb2xzIGlzIG9wZW4pLlxuICAgICAgICAgICAgICAgIC8vICBBcyBpbiwgYWRkaW5nIGFib3V0IDUwMG1zIHRvIG91ciBsb2FkIHRpbWUsIHdoaWNoIGlzIGFubm95aW5nIHdoZW4gZGVidWdnaW5nLlxuICAgICAgICAgICAgICAgIC8vY29uc29sZS5kZWJ1ZyhgRXZhbHVhdGVkIG1vZHVsZSAke21vZHVsZS5maWxlbmFtZX0gJHtNYXRoLmNlaWwoc291cmNlLmxlbmd0aCAvIDEwMjQpfUtCYCk7XG4gICAgICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgICAgICAgIG1vZHVsZS5pc1ByZWxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBjdXJyZW50TW9kdWxlRXZhbHVhdGlvblN0YWNrLnBvcCgpO1xuXG4gICAgICAgICAgICAgICAgZ2xvYmFsVGhpcy5vblByb2dyZXNzSGFuZGxlcj8uKHtcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJFdmFsdWF0ZVwiLFxuICAgICAgICAgICAgICAgICAgICBhZGRWYWx1ZTogMSxcbiAgICAgICAgICAgICAgICAgICAgYWRkTWF4OiAwLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG1vZHVsZTtcbiAgICB9XG59Il19
|
|
676
|
-
/* _JS_SOURCE_HASH = "
|
|
676
|
+
/* _JS_SOURCE_HASH = "8b62ae4095326884b3f0f0bb2c909023f0e5f36321ed82ce20df500df8e3f2c6"; */
|
package/require/require.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict"; var console = (function shimConsole() { let baseConsole = globalThis.console; if (typeof window !== "undefined") return baseConsole; let name = __filename.replaceAll("\\", "/").split("/").pop(); let dirName = __dirname.replaceAll("\\", "/").split("/").pop(); let context = { __FILE__: __filename, __DIR__: __dirname, __NAME__: name, __DIRNAME__: dirName }; let newConsole = { ...baseConsole }; for (let shim of ["log", "info", "warn", "error"]) { newConsole[shim] = (...args) => { args.push(context); baseConsole[shim](...args); }; } newConsole.__context = context; return newConsole; })(); "use strict";
|
|
1
|
+
"use strict"; var console = (function shimConsole() { let baseConsole = globalThis.console; if (typeof window !== "undefined") return baseConsole; let name = __filename.replaceAll("\\", "/").split("/").pop(); let dirName = __dirname.replaceAll("\\", "/").split("/").pop(); let context = { __FILE__: __filename, __DIR__: __dirname, __NAME__: name, __DIRNAME__: dirName }; let newConsole = { ...baseConsole }; for (let shim of ["log", "info", "warn", "error"]) { newConsole[shim] = (...args) => { args.push(context); baseConsole[shim](...args); }; } newConsole.__context = context; return newConsole; })(); "use strict"; var console = (function shimConsole() { let baseConsole = globalThis.console; if (typeof window !== "undefined") return baseConsole; let name = __filename.replaceAll("\\", "/").split("/").pop(); let dirName = __dirname.replaceAll("\\", "/").split("/").pop(); let context = { __FILE__: __filename, __DIR__: __dirname, __NAME__: name, __DIRNAME__: dirName }; let newConsole = { ...baseConsole }; for (let shim of ["log", "info", "warn", "error"]) { newConsole[shim] = (...args) => { args.push(context); baseConsole[shim](...args); }; } newConsole.__context = context; return newConsole; })(); "use strict";
|
|
2
2
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
3
|
if (k2 === undefined) k2 = k;
|
|
4
4
|
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
@@ -466,4 +466,4 @@ b"
|
|
|
466
466
|
}
|
|
467
467
|
//generateAndVerifyParser().catch(console.error).finally(() => process.exit());
|
|
468
468
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSlNPTkxBQ0tTLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiSlNPTkxBQ0tTLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQ0Esa0RBQWtIO0FBSWxILDRDQUFvQjtBQUVwQixzRkFBOEM7QUFDOUMsa0NBQTBDO0FBQzFDLG9DQUEyQztBQUMzQywwQ0FBb0M7QUFFcEMsTUFBTSw0QkFBNEIsR0FBRyxJQUFJLENBQUM7QUFDMUMsTUFBTSxxQkFBcUIsR0FBRyxJQUFJLEdBQUcsSUFBSSxHQUFHLEVBQUUsQ0FBQztBQW9CL0MsMEJBQTBCO0FBQzFCLHdDQUF3QztBQUN4QyxxQkFBcUI7QUFDckIseUdBQXlHO0FBQ3pHLDBDQUEwQztBQUMxQyxnQkFBZ0I7QUFDaEIsOENBQThDO0FBQzlDLDZGQUE2RjtBQUM3RixtREFBbUQ7QUFDbkQsZ0ZBQWdGO0FBQ2hGLE1BQWEsU0FBUztJQU9YLE1BQU0sQ0FBQyxTQUFTLENBQUMsR0FBWSxFQUFFLE1BQWtDO1FBQ3BFLElBQUksVUFBVSxHQUFHLFNBQVMsQ0FBQyxvQkFBb0IsQ0FBQyxHQUFHLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDN0QsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFDRCw2RUFBNkU7SUFDdEUsTUFBTSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsR0FBYyxFQUFFLE1BQWtDO1FBQ2hGLElBQUksVUFBVSxHQUFHLFNBQVMsQ0FBQyxvQkFBb0IsQ0FBQyxHQUFHLEVBQUUsTUFBTSxDQUFjLENBQUM7UUFDMUUsSUFBSSxPQUFPLEdBQWEsRUFBRSxDQUFDO1FBQzNCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxVQUFVLENBQUMsTUFBTSxFQUFFLENBQUMsSUFBSSw0QkFBNEIsRUFBRSxDQUFDO1lBQ3ZFLElBQUksR0FBRyxHQUFHLFVBQVUsQ0FBQyxLQUFLLENB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S0FBSyxVQUFVLEVBQUUsQ0FBQztZQUN4QixNQUFNLElBQUksS0FBSyxDQUFDLG9CQUFvQixJQUFJLGNBQWMsVUFBVSxTQUFTLE1BQU0sRUFBRSxDQUFDLENBQUM7UUFDdkYsQ0FBQztRQUNELE9BQU8sQ0FBQyxHQUFHLENBQUMsb0JBQW9CLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUVELE1BQU0sQ0FBQzs7OztLQUlOLENBQUMsQ0FBQztJQUNILE1BQU0sQ0FBQzs7OztLQUlOLENBQUMsQ0FBQztJQUNILE1BQU0sQ0FBQzs7Ozs7S0FLTixDQUFDLENBQUM7SUFDSCxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUMxQixNQUFNLENBQUMsOEJBQThCLENBQUMsQ0FBQztJQUV2QyxNQUFNLENBQUMseUNBQXlDLENBQUMsQ0FBQztJQUNsRCxNQUFNLENBQUMsc0RBQXNELENBQUMsQ0FBQztJQUMvRCxNQUFNLENBQUM7Ozs7Ozs7OztLQVNOLENBQUMsQ0FBQztJQUNILGlDQUFpQztJQUNqQyxNQUFNLENBQUM7Ozs7O0tBS04sRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQztJQUV0QyxnQkFBZ0I7SUFDaEIsTUFBTSxDQUFDOzs7O0tBSU4sQ0FBQyxDQUFDO0lBQ0gsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0FBQ3hCLENBQUM7QUFDRCwrRUFBK0UiLCJzb3VyY2VzQ29udGVudCI6WyJcbmltcG9ydCB7IGVuYWJsZU1lYXN1cmVtZW50cywgbWVhc3VyZUJsb2NrLCBtZWFzdXJlQ29kZSwgbWVhc3VyZUNvZGVTeW5jLCBtZWFzdXJlRm5jIH0gZnJvbSBcIi4uL3Byb2ZpbGluZy9tZWFzdXJlXCI7XG4vLyBlbmFibGVNZWFzdXJlbWVudHMoKTtcblxuaW1wb3J0IGRlYnVnYnJlYWsgZnJvbSBcImRlYnVnYnJlYWtcIjtcbmltcG9ydCBmcyBmcm9tIFwiZnNcIjtcblxuaW1wb3J0IHBhcnNlciBmcm9tIFwiLi9KU09OTEFDS1MuZ2VuZXJhdGVkLmpzXCI7XG5pbXBvcnQgeyByZWN1cnNpdmVGcmVlemUgfSBmcm9tIFwiLi4vbWlzY1wiO1xuaW1wb3J0IHsgY2FuSGF2ZUNoaWxkcmVuIH0gZnJvbSBcIi4uL3R5cGVzXCI7XG5pbXBvcnQgeyBkZWxheSB9IGZyb20gXCIuLi9iYXRjaGluZ1wiO1xuXG5jb25zdCBTRVJJQUxJWkVfT0JKRUNUX0JBVENIX0NPVU5UID0gMTAwMDtcbmNvbnN0IFBBUlNFX0JZVEVfQ0hVTktfU0laRSA9IDEwMjQgKiAxMDI0ICogMTA7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSlNPTkxBQ0tTX1BhcnNlQ29uZmlnIHtcbiAgICAvLyBEZWZhdWx0cyB0byB0cnVlLiBFbmFibGVzIHBhcnNpbmcgb2Y6XG4gICAgLy8gIC0gVHJhaWxpbmcgY29tbWFzXG4gICAgLy8gIC0gTm9uLXF1b3RlZCBmaWVsZCBuYW1lcyAoZXgsIFwieyB4OiAxIH1cIilcbiAgICAvLyAgLSBDb21tZW50cyAoc3RyaXBzIHRoZW0sIGJ1dCBkb2Vzbid0IHRocm93KVxuICAgIGV4dGVuZGVkPzogYm9vbGVhbjtcbiAgICBkaXNjYXJkTWlzc2luZ1JlZmVyZW5jZXM/OiBib29sZWFuO1xufVxuZXhwb3J0IGludGVyZmFjZSBKU09OTEFDS1NfU3RyaW5naWZ5Q29uZmlnIHtcbiAgICAvLyBJZiBzcGVjaWZpZWQsIHdlIGFyZSBhbGxvd2VkIHRvIG11dGF0ZSB0aGUgcHJvdmlkZWQgb2JqZWN0LiBTcGVlZHMgdXAgc2VyaWFsaXphdGlvbi5cbiAgICBhbGxvd09iamVjdE11dGF0aW9uPzogYm9vbGVhbjtcbn1cblxuaW50ZXJmYWNlIEh5ZHJhdGVTdGF0ZSB7XG4gICAgcmVmZXJlbmNlczogTWFwPHN0cmluZywgdW5rbm93bj4sXG4gICAgdmlzaXRlZDogU2V0PHVua25vd24+LFxufVxuXG4vLyBTdXBwb3J0cyBqc29uIGFuZCBhbHNvOlxuLy8gIC0gTm9uIHF1b3RlZCBmaWVsZCBuYW1lcyBcInsgeDogMSB9XCI/XG4vLyAgLSBUcmFpbGluZyBjb21tYXNcbi8vICAgICAgTk9URTogQ29tbWEgb25seSBzeW50YXggaXMgbm90IHN1cHBvcnRlZCwgZXgsIFwiWywsXVwiLCB3aGljaCBpcyBhbiBhcnJheSBvZiBsZW5ndGggMiBpbiBqYXZhc2NyaXB0XG4vLyAgLSBDb21tZW50cyBvbiBpbnB1dCwgYnV0IG5vdCBvbiBvdXRwdXRcbi8vICAtIFJlZmVyZW5jZXNcbi8vICAtIEJ1ZmZlcnMgKGp1c3QgQnVmZmVycywgbm90IHR5cGVkIGFycmF5cylcbi8vIFRoZSBzdHJpbmdpZnkgZnVuY3Rpb24gYWx3YXlzIGNyZWF0ZXMgdmFsaWQganNvbiwgYXMgdGhlIHN5bnRheCBmb3IgcmVmZXJlbmNlcyBhbmQgYnVmZmVyc1xuLy8gIHdpbGwganVzdCBiZSBzcGVjaWFsIHByb3BlcnR5IG5hbWVzIGFuZCB2YWx1ZXMuXG4vLyBOT1RFOiBXZSBkb24ndCBzdXBwb3J0IERhdGUgc2VyaWFsaXphdGlvbi4gTmV2ZXIgc3RvcmUgRGF0ZXMsIHN0b3JlIFwibnVtYmVyXCIuXG5leHBvcnQgY2xhc3MgSlNPTkxBQ0tTIHtcbiAgICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IExBQ0tTX0tFWSA9IFwiX19KU09OTEFDS1NfXzk4Y2ZiNGEwNWZhMzRkODI4NjYxY2FlMTViODc3OWNlX19cIjtcblxuICAgIC8qKiBJZiBzZXQgdG8gdHJ1ZSBwYXJzZXMgbm9uLXF1b3RlZCBmaWVsZCBuYW1lcywgY29tbWVudHMsIHRyYWlsaW5nIGNvbW1hcywgZXRjICovXG4gICAgcHVibGljIHN0YXRpYyBFWFRFTkRFRF9QQVJTRVIgPSBmYWxzZTtcbiAgICBwdWJsaWMgc3RhdGljIElHTk9SRV9NSVNTSU5HX1JFRkVSRU5DRVMgPSBmYWxzZTtcblxuICAgIHB1YmxpYyBzdGF0aWMgc3RyaW5naWZ5KG9iajogdW5rbm93biwgY29uZmlnPzogSlNPTkxBQ0tTX1N0cmluZ2lmeUNvbmZpZyk6IHN0cmluZyB7XG4gICAgICAgIGxldCBzZXJpYWxpemVkID0gSlNPTkxBQ0tTLmVzY2FwZVNwZWNpYWxPYmplY3RzKG9iaiwgY29uZmlnKTtcbiAgICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHNlcmlhbGl6ZWQpO1xuICAgIH1cbiAgICAvKiogSXMgdXNlZnVsIHdoZW4gc2VyaWFsaXppbmcgYW4gYXJyYXkgdG8gYSBmaWxlIHdpdGggb25lIG9iamVjdCBwZXIgbGluZSAqL1xuICAgIHB1YmxpYyBzdGF0aWMgYXN5bmMgc3RyaW5naWZ5RmlsZShvYmo6IHVua25vd25bXSwgY29uZmlnPzogSlNPTkxBQ0tTX1N0cmluZ2lmeUNvbmZpZyk6IFByb21pc2U8QnVmZmVyPiB7XG4gICAgICAgIGxldCBzZXJpYWxpemVkID0gSlNPTkxBQ0tTLmVzY2FwZVNwZWNpYWxPYmplY3RzKG9iaiwgY29uZmlnKSBhcyB1bmtub3duW107XG4gICAgICAgIGxldCBidWZmZXJzOiBCdWZmZXJbXSA9IFtdO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNlcmlhbGl6ZWQubGVuZ3RoOyBpICs9IFNFUklBTElaRV9PQkpFQ1RfQkFUQ0hfQ09VTlQpIHtcbiAgICAgICAgICAgIGxldCBzdHIgPSBzZXJpYWxpemVkLnNsaWNlKGksIGkgKyBTRVJJQUxJWkVfT0JKRUNUX0JBVENIX0NPVU5UKS5tYXAoeCA9PiBKU09OLnN0cmluZ2lmeSh4KSArIFwiXFxuXCIpLmpvaW4oXCJcIik7XG4gICAgICAgICAgICBidWZmZXJzLnB1c2goQnVmZmVyLmZyb20oc3RyKSk7XG4gICAgICAgICAgICBhd2FpdCBkZWxheShcImltbWVkaWF0ZVwiKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBCcmVhayB1cCBpbnRvIGNodW5rcywgYXMgc3RyaW5nID0+IEJ1ZmZlciBpXG4gICAgICAgIHJldHVybiBCdWZmZXIuY29uY2F0KGJ1ZmZlcnMpO1xuICAgIH1cbiAgICBwdWJsaWMgc3RhdGljIHN0cmluZ2lmeUZpbGVTeW5jKG9iajogdW5rbm93bltdLCBjb25maWc/OiBKU09OTEFDS1NfU3RyaW5naWZ5Q29uZmlnKTogQnVmZmVyIHtcbiAgICAgICAgbGV0IHNlcmlhbGl6ZWQgPSBKU09OTEFDS1MuZXNjYXBlU3BlY2lhbE9iamVjdHMob2JqLCBjb25maWcpIGFzIHVua25vd25bXTtcbiAgICAgICAgbGV0IGJ1ZmZlcnM6IEJ1ZmZlcltdID0gW107XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc2VyaWFsaXplZC5sZW5ndGg7IGkgKz0gU0VSSUFMSVpFX09CSkVDVF9CQVRDSF9DT1VOVCkge1xuICAgICAgICAgICAgbGV0IHN0ciA9IHNlcmlhbGl6ZWQuc2xpY2UoaSwgaSArIFNFUklBTElaRV9PQkpFQ1RfQkFUQ0hfQ09VTlQpLm1hcCh4ID0+IEpTT04uc3RyaW5naWZ5KHgpICsgXCJcXG5cIikuam9pbihcIlwiKTtcbiAgICAgICAgICAgIGJ1ZmZlcnMucHVzaChCdWZmZXIuZnJvbShzdHIpKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBCcmVhayB1cCBpbnRvIGNodW5rcywgYXMgc3RyaW5nID0+IEJ1ZmZlciBpXG4gICAgICAgIHJldHVybiBCdWZmZXIuY29uY2F0KGJ1ZmZlcnMpO1xuICAgIH1cbiAgICAvLyBUSU1JTkc6IFNlZW1zIHRvIGJlIGFib3V0IDQwWCBzbG93ZXIgdGhhbiBKU09OLnBhcnNlIHVubGVzcyBleHRlbmRlZCBpcyBzZXQgdG8gZmFsc2UsXG4gICAgLy8gIHRoZW4gaXQgaXMgYWJvdXQgMlggc2xvd2VyIChhbHRob3VnaCBpdCBkZXBlbmRzIG9uIHRoZSBzaXplIGFuZCBjb21wbGV4aXR5IG9mIHRoZSBvYmplY3RzISlcbiAgICBwdWJsaWMgc3RhdGljIHBhcnNlPFQ+KHRleHQ6IHN0cmluZywgY29uZmlnPzogSlNPTkxBQ0tTX1BhcnNlQ29uZmlnLCBoeWRyYXRlU3RhdGU/OiBIeWRyYXRlU3RhdGUpOiBUIHtcbiAgICAgICAgLy8gRW1wdHkgc3RyaW5nIHNob3VsZCBwYXJzZSB0byBTT01FVEhJTkdcbiAgICAgICAgaWYgKHRleHQudHJpbSgpID09PSBcIlwiKSByZXR1cm4gdW5kZWZpbmVkIGFzIFQ7XG4gICAgICAgIGxldCBvYmo6IHVua25vd247XG5cbiAgICAgICAgbGV0IGV4dGVuZGVkUGFyc2luZyA9IGNvbmZpZz8uZXh0ZW5kZWQgPz8gSlNPTkxBQ0tTLkVYVEVOREVEX1BBUlNFUjtcblxuICAgICAgICBpZiAoZXh0ZW5kZWRQYXJzaW5nKSB7XG4gICAgICAgICAgICBvYmogPSBwYXJzZXIucGFyc2UodGV4dCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIG9iaiA9IEpTT04ucGFyc2UodGV4dCk7XG4gICAgICAgICAgICB9IGNhdGNoIHtcbiAgICAgICAgICAgICAgICBvYmogPSBwYXJzZXIucGFyc2UodGV4dCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gSlNPTkxBQ0tTLmh5ZHJhdGVTcGVjaWFsT2JqZWN0cyhvYmosIGh5ZHJhdGVTdGF0ZSwgY29uZmlnKSBhcyBUO1xuICAgIH1cbiAgICBwdWJsaWMgc3RhdGljIGFzeW5jIHBhcnNlTGluZXM8VD4oYnVmZmVyOiBCdWZmZXIsIGNvbmZpZz86IEpTT05MQUNLU19QYXJzZUNvbmZpZyk6IFByb21pc2U8VFtdPiB7XG4gICAgICAgIGxldCBvdXRwdXQ6IFRbXSA9IFtdO1xuICAgICAgICBsZXQgcG9zID0gMDtcbiAgICAgICAgbGV0IGh5ZHJhdGVTdGF0ZTogSHlkcmF0ZVN0YXRlID0ge1xuICAgICAgICAgICAgcmVmZXJlbmNlczogbmV3IE1hcCgpLFxuICAgICAgICAgICAgdmlzaXRlZDogbmV3IFNldCgpLFxuICAgICAgICB9O1xuICAgICAgICBmdW5jdGlvbiBwYXJzZUNodW5rKCkge1xuICAgICAgICAgICAgbGV0IHN0YXJ0ID0gcG9zO1xuICAgICAgICAgICAgbGV0IGxhc3ROZXdMaW5lID0gMDtcbiAgICAgICAgICAgIHdoaWxlIChwb3MgPCBidWZmZXIubGVuZ3RoICYmICghbGFzdE5ld0xpbmUgfHwgKHBvcyAtIHN0YXJ0KSA8IFBBUlNFX0JZVEVfQ0hVTktfU0laRSkpIHtcbiAgICAgICAgICAgICAgICBsZXQgYnl0ZSA9IGJ1ZmZlcltwb3NdO1xuICAgICAgICAgICAgICAgIGlmIChieXRlID09PSAxMCkge1xuICAgICAgICAgICAgICAgICAgICBsYXN0TmV3TGluZSA9IHBvcztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcG9zKys7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAocG9zID09PSBidWZmZXIubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgbGFzdE5ld0xpbmUgPSBwb3M7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBwb3MgPSBsYXN0TmV3TGluZSArIDE7XG5cbiAgICAgICAgICAgIGxldCB0ZXh0ID0gYnVmZmVyLnNsaWNlKHN0YXJ0LCBsYXN0TmV3TGluZSkudG9TdHJpbmcoXCJ1dGY4XCIpO1xuICAgICAgICAgICAgbGV0IGxpbmVzID0gdGV4dFxuICAgICAgICAgICAgICAgIC5yZXBsYWNlQWxsKFwiXFxyXCIsIFwiXCIpXG4gICAgICAgICAgICAgICAgLnNwbGl0KFwiXFxuXCIpXG4gICAgICAgICAgICAgICAgLmZpbHRlcih4ID0+IHggJiYgIXguc3RhcnRzV2l0aChcIi8vXCIpKVxuICAgICAgICAgICAgICAgIDtcbiAgICAgICAgICAgIGxldCBsaW5lc0pTT04gPSBcIltcIjtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGluZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICBpZiAoaSAhPT0gMCkgbGluZXNKU09OICs9IFwiLFwiO1xuICAgICAgICAgICAgICAgIGxpbmVzSlNPTiArPSBsaW5lc1tpXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxpbmVzSlNPTiArPSBcIl1cIjtcbiAgICAgICAgICAgIGlmIChjb25maWc/LmRpc2NhcmRNaXNzaW5nUmVmZXJlbmNlcykge1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBwYXJ0cyA9IEpTT05MQUNLUy5wYXJzZShsaW5lc0pTT04sIGNvbmZpZywgaHlkcmF0ZVN0YXRlKSBhcyBUW107XG4gICAgICAgICAgICAgICAgICAgIGZvciAobGV0IHBhcnQgb2YgcGFydHMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dC5wdXNoKHBhcnQpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBjYXRjaCAoZTogYW55KSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghZS5tZXNzYWdlLmluY2x1ZGVzKFwiUmVmZXJlbmNlIHRvIHVuZGVmaW5lZCBpZFwiKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBsaW5lIG9mIGxpbmVzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBwYXJ0ID0gSlNPTkxBQ0tTLnBhcnNlKGxpbmUsIGNvbmZpZywgaHlkcmF0ZVN0YXRlKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dC5wdXNoKHBhcnQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZTogYW55KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFlLm1lc3NhZ2UuaW5jbHVkZXMoXCJSZWZlcmVuY2UgdG8gdW5kZWZpbmVkIGlkXCIpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IGU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBsZXQgcGFydHMgPSBKU09OTEFDS1MucGFyc2UobGluZXNKU09OLCBjb25maWcsIGh5ZHJhdGVTdGF0ZSkgYXMgVFtdO1xuICAgICAgICAgICAgICAgIGZvciAobGV0IHBhcnQgb2YgcGFydHMpIHtcbiAgICAgICAgICAgICAgICAgICAgb3V0cHV0LnB1c2gocGFydCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHdoaWxlIChwb3MgPCBidWZmZXIubGVuZ3RoKSB7XG4gICAgICAgICAgICBwYXJzZUNodW5rKCk7XG4gICAgICAgICAgICAvLyBXYWl0LCB0byBhbGxvdyBvdGhlciB0aHJlYWQgdG8gZG8gd29yay4gV2Ugd2FpdCBhIGxvbmcgdGltZS4uLiBiZWNhdXNlIHdlIHBhcnNlIDEwTUIgYXQgb25jZSxcbiAgICAgICAgICAgIC8vICBzby4uLiB0aGlzIGdpdmVzIHVzIDJzIG9mIGRlbGF5IHBlciAxR0Igb2YgcGFyc2luZywgd2hpY2ggc2hvdWxkIG9ubHkgYmUgYSBmcmFjdGlvbiBvZiBvdXIgcGFyc2UgdGltZVxuICAgICAgICAgICAgaWYgKHBvcyA8IGJ1ZmZlci5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICBhd2FpdCBkZWxheSgyMCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG91dHB1dDtcbiAgICB9XG5cbiAgICBwcml2YXRlIHN0YXRpYyBlc2NhcGVTcGVjaWFsT2JqZWN0cyhvYmo6IHVua25vd24sIGNvbmZpZz86IEpTT05MQUNLU19TdHJpbmdpZnlDb25maWcpOiB1bmtub3duIHtcbiAgICAgICAgLy8gSSB0aGluayBpdGVyYXRpbmcgdHdpY2UgZm9yIHJlZmVyZW5jZXMgaXMgdGhlIGZhc3Rlc3Qgd2F5IHRvIGRvIGl0P1xuICAgICAgICBsZXQgb2JqZWN0cyA9IG5ldyBTZXQ8dW5rbm93bj4oKTtcbiAgICAgICAgLy8gTk9URTogVXNlIHVuaXF1ZSB2YWx1ZXMgZm9yIHJlZmVyZW5jZXMsIHRvIGFsbG93IGNvbmNhdGVuYXRpbmcgZmlsZXMgd2l0aG91dCBoYXZpbmcgdG9cbiAgICAgICAgLy8gIGRlYWwgd2l0aCBlc2NhcGluZyByZWZlcmVuY2VzLlxuICAgICAgICBsZXQgcmVmUHJlZml4ID0gRGF0ZS5ub3coKSArIE1hdGgucmFuZG9tKCkgKyBcIlwiO1xuICAgICAgICBsZXQgbmV4dFJlZklkID0gMDtcbiAgICAgICAgZnVuY3Rpb24gZ2V0TmV4dFJlZktleSgpIHtcbiAgICAgICAgICAgIHJldHVybiByZWZQcmVmaXggKyBcIl9cIiArIG5leHRSZWZJZCsrO1xuICAgICAgICB9XG4gICAgICAgIGxldCByZWZPYmplY3RzID0gbmV3IE1hcDx1bmtub3duLCBzdHJpbmc+KCk7XG4gICAgICAgIGZpbmRSZWZlcmVuY2VzKG9iaik7XG4gICAgICAgIGZ1bmN0aW9uIGZpbmRSZWZlcmVuY2VzKG9iajogdW5rbm93bikge1xuICAgICAgICAgICAgaWYgKCFjYW5IYXZlQ2hpbGRyZW4ob2JqKSkgcmV0dXJuO1xuICAgICAgICAgICAgaWYgKHJlZk9iamVjdHMuaGFzKG9iaikpIHJldHVybjtcbiAgICAgICAgICAgIGlmIChvYmplY3RzLmhhcyhvYmopKSB7XG4gICAgICAgICAgICAgICAgbGV0IHJlZktleSA9IGdldE5leHRSZWZLZXkoKTtcbiAgICAgICAgICAgICAgICByZWZPYmplY3RzLnNldChvYmosIHJlZktleSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgb2JqZWN0cy5hZGQob2JqKTtcbiAgICAgICAgICAgIGZvciAobGV0IGtleSBpbiBvYmopIHtcbiAgICAgICAgICAgICAgICBmaW5kUmVmZXJlbmNlcyhvYmpba2V5XSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgcmVmc1NlZW4gPSBuZXcgU2V0PHVua25vd24+KCk7XG4gICAgICAgIHJldHVybiBpdGVyYXRlKG9iaik7XG4gICAgICAgIGZ1bmN0aW9uIGl0ZXJhdGUob2JqOiB1bmtub3duLCByZWZIYW5kbGVkPzogYm9vbGVhbik6IHVua25vd24ge1xuICAgICAgICAgICAgaWYgKCFjYW5IYXZlQ2hpbGRyZW4ob2JqKSkgcmV0dXJuIG9iajtcbiAgICAgICAgICAgIGlmICghcmVmSGFuZGxlZCkge1xuICAgICAgICAgICAgICAgIGxldCByZWZLZXkgPSByZWZPYmplY3RzLmdldChvYmopO1xuICAgICAgICAgICAgICAgIGlmIChyZWZLZXkpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlZnNTZWVuLmhhcyhvYmopKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtKU09OTEFDS1MuTEFDS1NfS0VZXTogXCJyZWZcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZDogcmVmS2V5LFxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZWZzU2Vlbi5hZGQob2JqKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIFtKU09OTEFDS1MuTEFDS1NfS0VZXTogXCJkZWZpbmVcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiByZWZLZXksXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogaXRlcmF0ZShvYmosIHRydWUpLFxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKEpTT05MQUNLUy5MQUNLU19LRVkgaW4gb2JqKSB7XG4gICAgICAgICAgICAgICAgbGV0IHJlc3RPZk9iaiA9IHsgLi4ub2JqIH07XG4gICAgICAgICAgICAgICAgbGV0IGVzY2FwZWRWYWx1ZSA9IHJlc3RPZk9ialtKU09OTEFDS1MuTEFDS1NfS0VZXTtcbiAgICAgICAgICAgICAgICBkZWxldGUgcmVzdE9mT2JqW0pTT05MQUNLUy5MQUNLU19LRVldO1xuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIFtKU09OTEFDS1MuTEFDS1NfS0VZXTogXCJyZW1vdmVkU3BlY2lhbEtleVwiLFxuICAgICAgICAgICAgICAgICAgICBlc2NhcGVkVmFsdWU6IGl0ZXJhdGUoZXNjYXBlZFZhbHVlKSxcbiAgICAgICAgICAgICAgICAgICAgcmVzdE9mT2JqOiBpdGVyYXRlKHJlc3RPZk9iaiksXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKG9iaiBpbnN0YW5jZW9mIEJ1ZmZlcikge1xuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIFtKU09OTEFDS1MuTEFDS1NfS0VZXTogXCJCdWZmZXJcIixcbiAgICAgICAgICAgICAgICAgICAgZGF0YTogb2JqLnRvU3RyaW5nKFwiYmFzZTY0XCIpLFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGxldCBjbG9uZWQgPSBjb25maWc/LmFsbG93T2JqZWN0TXV0YXRpb247XG4gICAgICAgICAgICBmdW5jdGlvbiBjbG9uZU9iaigpIHtcbiAgICAgICAgICAgICAgICBpZiAoY2xvbmVkKSByZXR1cm47XG4gICAgICAgICAgICAgICAgY2xvbmVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShvYmopKSB7XG4gICAgICAgICAgICAgICAgICAgIG9iaiA9IFsuLi5vYmpdO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIG9iaiA9IHsgLi4ub2JqIGFzIGFueSB9O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBmb3IgKGxldCBrZXkgaW4gb2JqKSB7XG4gICAgICAgICAgICAgICAgbGV0IG9yaWdpbmFsVmFsdWUgPSBvYmpba2V5XTtcbiAgICAgICAgICAgICAgICBsZXQgdmFsdWUgPSBpdGVyYXRlKG9yaWdpbmFsVmFsdWUpO1xuICAgICAgICAgICAgICAgIGlmICh2YWx1ZSAhPT0gb3JpZ2luYWxWYWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICBjbG9uZU9iaigpO1xuICAgICAgICAgICAgICAgICAgICBvYmpba2V5XSA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBvYmo7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHN0YXRpYyBoeWRyYXRlU3BlY2lhbE9iamVjdHMob2JqOiB1bmtub3duLCBoeWRyYXRlU3RhdGU/OiBIeWRyYXRlU3RhdGUsIGNvbmZpZz86IEpTT05MQUNLU19QYXJzZUNvbmZpZyk6IHVua25vd24ge1xuICAgICAgICBsZXQgcmVmZXJlbmNlcyA9IGh5ZHJhdGVTdGF0ZT8ucmVmZXJlbmNlcyB8fCBuZXcgTWFwPHN0cmluZywgdW5rbm93bj4oKTtcbiAgICAgICAgbGV0IHZpc2l0ZWQgPSBoeWRyYXRlU3RhdGU/LnZpc2l0ZWQgfHwgbmV3IFNldDx1bmtub3duPigpO1xuICAgICAgICByZXR1cm4gaXRlcmF0ZShvYmopO1xuICAgICAgICBmdW5jdGlvbiBpdGVyYXRlKG9iajogdW5rbm93bikge1xuICAgICAgICAgICAgaWYgKCFjYW5IYXZlQ2hpbGRyZW4ob2JqKSkgcmV0dXJuIG9iajtcbiAgICAgICAgICAgIGlmICh2aXNpdGVkLmhhcyhvYmopKSByZXR1cm4gb2JqO1xuICAgICAgICAgICAgdmlzaXRlZC5hZGQob2JqKTtcbiAgICAgICAgICAgIGxldCB0eXBlID0gb2JqW0pTT05MQUNLUy5MQUNLU19LRVldO1xuICAgICAgICAgICAgaWYgKCF0eXBlKSB7XG4gICAgICAgICAgICAgICAgZm9yIChsZXQga2V5IGluIG9iaikge1xuICAgICAgICAgICAgICAgICAgICBsZXQgb3JpZ2luYWxWYWx1ZSA9IG9ialtrZXldO1xuICAgICAgICAgICAgICAgICAgICBsZXQgdmFsdWUgPSBpdGVyYXRlKG9yaWdpbmFsVmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICBpZiAodmFsdWUgIT09IG9yaWdpbmFsVmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG9ialtrZXldID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIG9iajtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0eXBlID09PSBcInJlbW92ZWRTcGVjaWFsS2V5XCIpIHtcbiAgICAgICAgICAgICAgICBsZXQgcmVzdE9mT2JqID0gaXRlcmF0ZShvYmoucmVzdE9mT2JqKSBhcyBhbnk7XG4gICAgICAgICAgICAgICAgbGV0IGVzY2FwZWRWYWx1ZSA9IGl0ZXJhdGUob2JqLmVzY2FwZWRWYWx1ZSkgYXMgYW55O1xuICAgICAgICAgICAgICAgIHJldHVybiB7IC4uLnJlc3RPZk9iaiwgW0pTT05MQUNLUy5MQUNLU19LRVldOiBlc2NhcGVkVmFsdWUgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0eXBlID09PSBcIkJ1ZmZlclwiKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIEJ1ZmZlci5mcm9tKG9iai5kYXRhIGFzIHN0cmluZywgXCJiYXNlNjRcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodHlwZSA9PT0gXCJkZWZpbmVcIikge1xuICAgICAgICAgICAgICAgIHJlZmVyZW5jZXMuc2V0KG9iai5pZCBhcyBzdHJpbmcsIGl0ZXJhdGUob2JqLnZhbHVlKSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG9iai52YWx1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0eXBlID09PSBcInJlZlwiKSB7XG4gICAgICAgICAgICAgICAgbGV0IGlkID0gb2JqLmlkIGFzIHN0cmluZztcbiAgICAgICAgICAgICAgICBpZiAoIUpTT05MQUNLUy5JR05PUkVfTUlTU0lOR19SRUZFUkVOQ0VTICYmICFyZWZlcmVuY2VzLmhhcyhpZCkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBSZWZlcmVuY2UgdG8gdW5kZWZpbmVkIGlkIFwiJHtpZH1cImApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gcmVmZXJlbmNlcy5nZXQoaWQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbmtub3duIGxhY2tzIHR5cGUgXCIke3R5cGV9XCJgKTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuYXN5bmMgZnVuY3Rpb24gYmVuY2htYXJrKCkge1xuICAgIGNvbnN0IGxvb3BzID0gMTAwMCAqIDEwMDtcbiAgICBsZXQgaW5wdXRzOiBzdHJpbmdbXSA9IFtdO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbG9vcHM7IGkrKykge1xuICAgICAgICBpbnB1dHMucHVzaChKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgICBpLFxuICAgICAgICAgICAgaGVsbG9fdGhlcmU6IGksXG4gICAgICAgICAgICBleGFtcGxlOiA1LFxuICAgICAgICAgICAgbGlzdDogWzEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDksIDEwXSxcbiAgICAgICAgfSkgKyBcIiBcIik7XG4gICAgfVxuICAgIEpTT04ucGFyc2UoaW5wdXRzWzBdKTtcbiAgICBwYXJzZXIucGFyc2UoaW5wdXRzWzBdKTtcblxuICAgIG1lYXN1cmVDb2RlU3luYyhmdW5jdGlvbiBtZWFzdXJlKCkge1xuICAgICAgICBtZWFzdXJlQmxvY2soZnVuY3Rpb24gSlNPTl9QQVJTRSgpIHtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbG9vcHM7IGkrKykge1xuICAgICAgICAgICAgICAgIEpTT04ucGFyc2UoaW5wdXRzW2ldKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIG1lYXN1cmVCbG9jayhmdW5jdGlvbiBKU09OX1BBUlNFX0ZSRUVaRSgpIHtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbG9vcHM7IGkrKykge1xuICAgICAgICAgICAgICAgIGxldCBvYmogPSBKU09OLnBhcnNlKGlucHV0c1tpXSk7XG4gICAgICAgICAgICAgICAgcmVjdXJzaXZlRnJlZXplKG9iaik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIG1lYXN1cmVCbG9jayhmdW5jdGlvbiBFWFRFTkRFRF9QQVJTRSgpIHtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbG9vcHM7IGkrKykge1xuICAgICAgICAgICAgICAgIHBhcnNlci5wYXJzZShpbnB1dHNbaV0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICBtZWFzdXJlQmxvY2soZnVuY3Rpb24gSlNPTkxBQ0tTX1BBUlNFKCkge1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsb29wczsgaSsrKSB7XG4gICAgICAgICAgICAgICAgSlNPTkxBQ0tTLnBhcnNlKGlucHV0c1tpXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICBtZWFzdXJlQmxvY2soZnVuY3Rpb24gSlNPTkxBQ0tTX1BBUlNFX1NJTVBMRSgpIHtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbG9vcHM7IGkrKykge1xuICAgICAgICAgICAgICAgIEpTT05MQUNLUy5wYXJzZShpbnB1dHNbaV0sIHsgZXh0ZW5kZWQ6IGZhbHNlIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgIH0sIHtcbiAgICAgICAgdGhyZXNob2xkSW5UYWJsZTogMFxuICAgIH0pO1xuXG59XG4vL2JlbmNobWFyaygpLmNhdGNoKGNvbnNvbGUuZXJyb3IpLmZpbmFsbHkoKCkgPT4gcHJvY2Vzcy5leGl0KCkpO1xuXG5cbmFzeW5jIGZ1bmN0aW9uIHRlc3RKU09OTEFDS1MoKSB7XG4gICAge1xuICAgICAgICBsZXQgb2JqID0ge307XG4gICAgICAgIGxldCBzdHIgPSBKU09OTEFDS1Muc3RyaW5naWZ5KHtcbiAgICAgICAgICAgIGE6IG9iaixcbiAgICAgICAgICAgIGI6IG9iaixcbiAgICAgICAgfSk7XG4gICAgICAgIGxldCBwYXJzZWQgPSBKU09OTEFDS1MucGFyc2Uoc3RyKSBhcyBhbnk7XG4gICAgICAgIGlmIChwYXJzZWQuYSAhPT0gcGFyc2VkLmIpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkZhaWxlZCB0byBtYWludGFpbiByZWZlcmVuY2VzXCIpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0eXBlb2YgcGFyc2VkLmEgIT09IFwib2JqZWN0XCIpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIk9iamVjdCBiZWNvbWUgY29ycnVwdGVkXCIpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gVGVzdCBMQUNLU19LRVkgaXMgZXNjYXBlZCBjb3JyZWN0bHlcbiAgICB7XG4gICAgICAgIGxldCBvYmogPSB7IFtKU09OTEFDS1MuTEFDS1NfS0VZXTogXCJoZWxsb1wiIH07XG4gICAgICAgIGxldCBzdHIgPSBKU09OTEFDS1Muc3RyaW5naWZ5KG9iaik7XG4gICAgICAgIGxldCBwYXJzZWQgPSBKU09OTEFDS1MucGFyc2Uoc3RyKSBhcyBhbnk7XG4gICAgICAgIGlmIChKU09OLnN0cmluZ2lmeShvYmopICE9PSBKU09OLnN0cmluZ2lmeShwYXJzZWQpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJGYWlsZWQgdG8gZXNjYXBlIExBQ0tTX0tFWVwiKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyBUZXN0IGJ1ZmZlcnMgYXJlIHByZXNlcnZlZFxuICAgIHtcbiAgICAgICAgbGV0IG9iaiA9IHsgYTogQnVmZmVyLmZyb20oXCJoZWxsb1wiKSB9O1xuICAgICAgICBsZXQgc3RyID0gSlNPTkxBQ0tTLnN0cmluZ2lmeShvYmopO1xuICAgICAgICBsZXQgcGFyc2VkID0gSlNPTkxBQ0tTLnBhcnNlKHN0cikgYXMgYW55O1xuICAgICAgICBpZiAob2JqLmEudG9TdHJpbmcoKSAhPT0gcGFyc2VkLmEudG9TdHJpbmcoKSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBGYWlsZWQgdG8gcHJlc2VydmUgYnVmZmVyc2ApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gVGVzdCByZWZlcmVuY2VzIDJcbiAgICB7XG4gICAgICAgIGxldCBiYXNlID0ge307XG4gICAgICAgIGxldCBhcnIgPSBbYmFzZSwgYmFzZV07XG4gICAgICAgIGxldCBvYmogPSB7IHg6IGFyciwgeTogYXJyIH07XG4gICAgICAgIGxldCByZXN1bHQgPSBKU09OTEFDS1MucGFyc2UoSlNPTkxBQ0tTLnN0cmluZ2lmeShvYmopLCB7IGV4dGVuZGVkOiBmYWxzZSB9KSBhcyB0eXBlb2Ygb2JqO1xuICAgICAgICBpZiAoSlNPTi5zdHJpbmdpZnkocmVzdWx0KSAhPT0gSlNPTi5zdHJpbmdpZnkob2JqKSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBDb3JydXB0ZWQgdmFsdWVzLCBleHBlY3RlZCAke0pTT04uc3RyaW5naWZ5KG9iail9LCBnb3QgJHtKU09OLnN0cmluZ2lmeShyZXN1bHQpfWApO1xuICAgICAgICB9XG4gICAgICAgIGlmIChyZXN1bHQueCAhPT0gcmVzdWx0LnkpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgRmFpbGVkIHRvIG1haW50YWluIHJlZmVyZW5jZXNgKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocmVzdWx0LnhbMF0gIT09IHJlc3VsdC54WzFdKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEZhaWxlZCB0byBtYWludGFpbiByZWZlcmVuY2VzYCk7XG4gICAgICAgIH1cbiAgICB9XG59XG4vL3Rlc3RKU09OTEFDS1MoKS5jYXRjaChjb25zb2xlLmVycm9yKS5maW5hbGx5KCgpID0+IHByb2Nlc3MuZXhpdCgpKTtcblxuYXN5bmMgZnVuY3Rpb24gZ2VuZXJhdGVBbmRWZXJpZnlQYXJzZXIoKSB7XG4gICAgY29uc3QgcGVnanMgPSBhd2FpdCBpbXBvcnQoXCJwZWdqc1wiKTtcblxuICAgIHZhciBncmFtbWFyID0gZnMucmVhZEZpbGVTeW5jKF9fZGlybmFtZSArIFwiL0pTT05MQUNLUy5wZWdqc1wiLCBcInV0ZjhcIik7XG4gICAgdmFyIHBhcnNlclNvdXJjZSA9IHBlZ2pzLmdlbmVyYXRlKGdyYW1tYXIsIHsgb3V0cHV0OiBcInNvdXJjZVwiLCBmb3JtYXQ6IFwiY29tbW9uanNcIiB9KTtcbiAgICBmcy53cml0ZUZpbGVTeW5jKF9fZGlybmFtZSArIFwiL0pTT05MQUNLUy5nZW5lcmF0ZWQuanNcIiwgcGFyc2VyU291cmNlKTtcblxuICAgIHZhciBtb2R1bGUgPSB7IGV4cG9ydHM6IHt9IH07XG4gICAgZXZhbChwYXJzZXJTb3VyY2UpO1xuICAgIGNvbnN0IHBhcnNlciA9IG1vZHVsZS5leHBvcnRzIGFzIGFueTtcbiAgICBmdW5jdGlvbiB2ZXJpZnkodGV4dDogc3RyaW5nLCBmb3JjZWRPYmo/OiB1bmtub3duKSB7XG4gICAgICAgIHZhciBwYXJzZWQgPSBwYXJzZXIucGFyc2UodGV4dCk7XG4gICAgICAgIHZhciByZXN1bHQgPSBKU09OLnN0cmluZ2lmeShwYXJzZWQpO1xuICAgICAgICBsZXQgcmVhbFJlc3VsdCA9IGZvcmNlZE9iaiA/PyBKU09OLnN0cmluZ2lmeShldmFsKFwiKFwiICsgdGV4dCArIFwiKVwiKSk7XG4gICAgICAgIGlmIChyZXN1bHQgIT09IHJlYWxSZXN1bHQpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgRmFpbGVkIHRvIHBhcnNlOiAke3RleHR9IHNob3VsZCBiZSAke3JlYWxSZXN1bHR9LCB3YXMgJHtyZXN1bHR9YCk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc29sZS5sb2coXCJQYXJzZWQgY29ycmVjdGx5OiBcIiwgdGV4dCk7XG4gICAgfVxuXG4gICAgdmVyaWZ5KGBcbiAgICB7XG4gICAgICAgIFwiaGVsbG9fdGhlcmVcIjogMSxcbiAgICB9XG4gICAgYCk7XG4gICAgdmVyaWZ5KGBcbiAgICB7XG4gICAgICAgIGhlbGxvX3RoZXJlOiAxLFxuICAgIH1cbiAgICBgKTtcbiAgICB2ZXJpZnkoYFxuICAgIHtcbiAgICAgICAgaGVsbG9fdGhlcmU6IDEsXG4gICAgICAgIG1vcmU6IDEsXG4gICAgfVxuICAgIGApO1xuICAgIHZlcmlmeShgeyBsaXN0OiBbMSxdLCB9YCk7XG4gICAgdmVyaWZ5KGB7IGxpc3Q6IFsxLF0sIGxpc3QyOiBbMSxdLCB9YCk7XG5cbiAgICB2ZXJpZnkoYHsgLyogdGVzdCAqLyBsaXN0OiBbMSxdLCBsaXN0MjogWzEsXSwgfWApO1xuICAgIHZlcmlmeShgeyAvKiB0ZXN0ICovIC8qIHRlc3QgMiAqLyBsaXN0OiBbMSxdLCBsaXN0MjogWzEsXSwgfWApO1xuICAgIHZlcmlmeShgXG4gICAge1xuICAgICAgICAvKiB0ZXN0ICovXG4gICAgICAgIC8qIHRlc3QgMiAqL1xuICAgICAgICBsaXN0OiBbMSxdLFxuICAgICAgICAvLyBTaW5nbGUgbGluZSBjb21tZW50XG4gICAgICAgIGxpc3QyOiBbMSxdLFxuICAgICAgICAvLyBsaXN0MzogWzNdLFxuICAgIH1cbiAgICBgKTtcbiAgICAvLyBNdWx0aWxpbmUgZG91YmxlIHF1b3RlIHN0cmluZ3NcbiAgICB2ZXJpZnkoYFxuICAgIHtcbiAgICAgICAgdmFsdWU6IFwiYVxuYlwiXG4gICAgfVxuICAgIGAsIEpTT04uc3RyaW5naWZ5KHsgdmFsdWU6IFwiYVxcbmJcIiB9KSk7XG5cbiAgICAvLyBTaW5nbGUgcXVvdGVzXG4gICAgdmVyaWZ5KGBcbiAgICB7XG4gICAgICAgIHZhbHVlOiAnYSdcbiAgICB9XG4gICAgYCk7XG4gICAgdmVyaWZ5KGB1bmRlZmluZWRgKTtcbn1cbi8vZ2VuZXJhdGVBbmRWZXJpZnlQYXJzZXIoKS5jYXRjaChjb25zb2xlLmVycm9yKS5maW5hbGx5KCgpID0+IHByb2Nlc3MuZXhpdCgpKTsiXX0=
|
|
469
|
-
/* _JS_SOURCE_HASH = "
|
|
469
|
+
/* _JS_SOURCE_HASH = "7041bff69ef30aaf0f0a462ad73a12645f25acadb25e22a0405fa6e091f7478d"; */
|
package/src/callManager.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/// <reference
|
|
1
|
+
/// <reference types="socket-function/hot/hotreloadcontroller" />
|
|
2
2
|
import { CallerContext, CallType, ClientHookContext, FullCallType, FunctionFlags, HookContext, SocketExposedInterface, SocketExposedShape, SocketFunctionClientHook, SocketFunctionHook, SocketRegistered } from "../SocketFunctionTypes";
|
|
3
3
|
export declare function getCallFlags(call: CallType): FunctionFlags | undefined;
|
|
4
4
|
export declare function shouldCompressCall(call: CallType): boolean | "LZ4" | undefined;
|