experimental-agent 0.2.1 → 0.2.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{chunk-QRWGDFFY.mjs → chunk-7M6UPURS.mjs} +2 -2
- package/dist/next/loader.d.mts +1 -0
- package/dist/next/loader.d.ts +1 -0
- package/dist/next/loader.js +18 -13
- package/dist/next/loader.mjs +18 -13
- package/dist/next.js +6 -4
- package/dist/next.mjs +6 -4
- package/package.json +1 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// package.json
|
|
2
2
|
var package_default = {
|
|
3
3
|
name: "experimental-agent",
|
|
4
|
-
version: "0.2.
|
|
4
|
+
version: "0.2.3",
|
|
5
5
|
main: "./dist/index.js",
|
|
6
6
|
module: "./dist/index.mjs",
|
|
7
7
|
types: "./dist/index.d.ts",
|
|
@@ -72,4 +72,4 @@ var package_default = {
|
|
|
72
72
|
export {
|
|
73
73
|
package_default
|
|
74
74
|
};
|
|
75
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
75
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vcGFja2FnZS5qc29uIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyJ7XG4gIFwibmFtZVwiOiBcImV4cGVyaW1lbnRhbC1hZ2VudFwiLFxuICBcInZlcnNpb25cIjogXCIwLjIuM1wiLFxuICBcIm1haW5cIjogXCIuL2Rpc3QvaW5kZXguanNcIixcbiAgXCJtb2R1bGVcIjogXCIuL2Rpc3QvaW5kZXgubWpzXCIsXG4gIFwidHlwZXNcIjogXCIuL2Rpc3QvaW5kZXguZC50c1wiLFxuICBcInNpZGVFZmZlY3RzXCI6IHRydWUsXG4gIFwibGljZW5zZVwiOiBcIk1JVFwiLFxuICBcImZpbGVzXCI6IFtcbiAgICBcImRpc3QvKipcIlxuICBdLFxuICBcImV4cG9ydHNcIjoge1xuICAgIFwiLlwiOiB7XG4gICAgICBcInR5cGVzXCI6IFwiLi9kaXN0L2luZGV4LmQudHNcIixcbiAgICAgIFwiaW1wb3J0XCI6IFwiLi9kaXN0L2luZGV4Lm1qc1wiLFxuICAgICAgXCJyZXF1aXJlXCI6IFwiLi9kaXN0L2luZGV4LmpzXCJcbiAgICB9LFxuICAgIFwiLi9uZXh0XCI6IHtcbiAgICAgIFwidHlwZXNcIjogXCIuL2Rpc3QvbmV4dC5kLnRzXCIsXG4gICAgICBcImltcG9ydFwiOiBcIi4vZGlzdC9uZXh0Lm1qc1wiLFxuICAgICAgXCJyZXF1aXJlXCI6IFwiLi9kaXN0L25leHQuanNcIlxuICAgIH0sXG4gICAgXCIuL25leHQvbG9hZGVyXCI6IHtcbiAgICAgIFwidHlwZXNcIjogXCIuL2Rpc3QvbmV4dC9sb2FkZXIuZC50c1wiLFxuICAgICAgXCJpbXBvcnRcIjogXCIuL2Rpc3QvbmV4dC9sb2FkZXIubWpzXCIsXG4gICAgICBcInJlcXVpcmVcIjogXCIuL2Rpc3QvbmV4dC9sb2FkZXIuanNcIlxuICAgIH0sXG4gICAgXCIuL2NsaWVudFwiOiB7XG4gICAgICBcInR5cGVzXCI6IFwiLi9kaXN0L2NsaWVudC5kLnRzXCIsXG4gICAgICBcImltcG9ydFwiOiBcIi4vZGlzdC9jbGllbnQubWpzXCIsXG4gICAgICBcInJlcXVpcmVcIjogXCIuL2Rpc3QvY2xpZW50LmpzXCJcbiAgICB9XG4gIH0sXG4gIFwic2NyaXB0c1wiOiB7XG4gICAgXCJidWlsZFwiOiBcInRzdXBcIixcbiAgICBcImRldlwiOiBcInRzdXAgLS13YXRjaFwiLFxuICAgIFwiY2xlYW5cIjogXCJybSAtcmYgLnR1cmJvICYmIHJtIC1yZiBub2RlX21vZHVsZXMgJiYgcm0gLXJmIGRpc3RcIixcbiAgICBcInJlbGVhc2VcIjogXCJwbnBtIGJ1aWxkICYmIG5wbSBwdWJsaXNoXCIsXG4gICAgXCJ0eXBlY2hlY2tcIjogXCJ0c2MgLS1ub0VtaXRcIixcbiAgICBcInRlc3RcIjogXCJ2aXRlc3QgcnVuXCIsXG4gICAgXCJ0ZXN0OndhdGNoXCI6IFwidml0ZXN0XCJcbiAgfSxcbiAgXCJkZXBlbmRlbmNpZXNcIjoge1xuICAgIFwiQHN3Yy9jb3JlXCI6IFwiXjEuMTAuMFwiLFxuICAgIFwiQHZlcmNlbC9vaWRjXCI6IFwiXjMuMS4wXCIsXG4gICAgXCJiZXR0ZXItYWxsXCI6IFwiXjAuMC41XCIsXG4gICAgXCJlcnJvcmVcIjogXCJeMC44LjJcIixcbiAgICBcImZhc3QtZGVlcC1lcXVhbFwiOiBcIl4zLjEuM1wiLFxuICAgIFwiQHZlcmNlbC9zYW5kYm94XCI6IFwiMS43LjFcIixcbiAgICBcInVsaWRcIjogXCJeMy4wLjJcIixcbiAgICBcInpvZFwiOiBcIl40LjMuNlwiXG4gIH0sXG4gIFwiZGV2RGVwZW5kZW5jaWVzXCI6IHtcbiAgICBcIkBhZ2VudC90c2NvbmZpZ1wiOiBcIndvcmtzcGFjZToqXCIsXG4gICAgXCJAdHlwZXMvbm9kZVwiOiBcIl4yMC4xMS4yNFwiLFxuICAgIFwiZG90ZW52XCI6IFwiXjE3LjIuM1wiLFxuICAgIFwibmV4dFwiOiBcIl4xNi4wLjBcIixcbiAgICBcInRzdXBcIjogXCJeOC4wLjJcIixcbiAgICBcInR5cGVzY3JpcHRcIjogXCI1LjUuNFwiLFxuICAgIFwidml0ZXN0XCI6IFwiXjMuMC4wXCJcbiAgfSxcbiAgXCJwZWVyRGVwZW5kZW5jaWVzXCI6IHtcbiAgICBcImFpXCI6IFwiXjYuMC4wXCIsXG4gICAgXCJ3b3JrZmxvd1wiOiBcIipcIlxuICB9LFxuICBcInB1Ymxpc2hDb25maWdcIjoge1xuICAgIFwiYWNjZXNzXCI6IFwicHVibGljXCJcbiAgfVxufVxuIl0sCiAgIm1hcHBpbmdzIjogIjtBQUFBO0FBQUEsRUFDRSxNQUFRO0FBQUEsRUFDUixTQUFXO0FBQUEsRUFDWCxNQUFRO0FBQUEsRUFDUixRQUFVO0FBQUEsRUFDVixPQUFTO0FBQUEsRUFDVCxhQUFlO0FBQUEsRUFDZixTQUFXO0FBQUEsRUFDWCxPQUFTO0FBQUEsSUFDUDtBQUFBLEVBQ0Y7QUFBQSxFQUNBLFNBQVc7QUFBQSxJQUNULEtBQUs7QUFBQSxNQUNILE9BQVM7QUFBQSxNQUNULFFBQVU7QUFBQSxNQUNWLFNBQVc7QUFBQSxJQUNiO0FBQUEsSUFDQSxVQUFVO0FBQUEsTUFDUixPQUFTO0FBQUEsTUFDVCxRQUFVO0FBQUEsTUFDVixTQUFXO0FBQUEsSUFDYjtBQUFBLElBQ0EsaUJBQWlCO0FBQUEsTUFDZixPQUFTO0FBQUEsTUFDVCxRQUFVO0FBQUEsTUFDVixTQUFXO0FBQUEsSUFDYjtBQUFBLElBQ0EsWUFBWTtBQUFBLE1BQ1YsT0FBUztBQUFBLE1BQ1QsUUFBVTtBQUFBLE1BQ1YsU0FBVztBQUFBLElBQ2I7QUFBQSxFQUNGO0FBQUEsRUFDQSxTQUFXO0FBQUEsSUFDVCxPQUFTO0FBQUEsSUFDVCxLQUFPO0FBQUEsSUFDUCxPQUFTO0FBQUEsSUFDVCxTQUFXO0FBQUEsSUFDWCxXQUFhO0FBQUEsSUFDYixNQUFRO0FBQUEsSUFDUixjQUFjO0FBQUEsRUFDaEI7QUFBQSxFQUNBLGNBQWdCO0FBQUEsSUFDZCxhQUFhO0FBQUEsSUFDYixnQkFBZ0I7QUFBQSxJQUNoQixjQUFjO0FBQUEsSUFDZCxRQUFVO0FBQUEsSUFDVixtQkFBbUI7QUFBQSxJQUNuQixtQkFBbUI7QUFBQSxJQUNuQixNQUFRO0FBQUEsSUFDUixLQUFPO0FBQUEsRUFDVDtBQUFBLEVBQ0EsaUJBQW1CO0FBQUEsSUFDakIsbUJBQW1CO0FBQUEsSUFDbkIsZUFBZTtBQUFBLElBQ2YsUUFBVTtBQUFBLElBQ1YsTUFBUTtBQUFBLElBQ1IsTUFBUTtBQUFBLElBQ1IsWUFBYztBQUFBLElBQ2QsUUFBVTtBQUFBLEVBQ1o7QUFBQSxFQUNBLGtCQUFvQjtBQUFBLElBQ2xCLElBQU07QUFBQSxJQUNOLFVBQVk7QUFBQSxFQUNkO0FBQUEsRUFDQSxlQUFpQjtBQUFBLElBQ2YsUUFBVTtBQUFBLEVBQ1o7QUFDRjsiLAogICJuYW1lcyI6IFtdCn0K
|
package/dist/next/loader.d.mts
CHANGED
package/dist/next/loader.d.ts
CHANGED
package/dist/next/loader.js
CHANGED
|
@@ -39,7 +39,7 @@ var import_core = require("@swc/core");
|
|
|
39
39
|
// package.json
|
|
40
40
|
var package_default = {
|
|
41
41
|
name: "experimental-agent",
|
|
42
|
-
version: "0.2.
|
|
42
|
+
version: "0.2.3",
|
|
43
43
|
main: "./dist/index.js",
|
|
44
44
|
module: "./dist/index.mjs",
|
|
45
45
|
types: "./dist/index.d.ts",
|
|
@@ -112,7 +112,7 @@ var PACKAGE_NAME = package_default.name;
|
|
|
112
112
|
var AGENT_PROTOCOL_VERSION = "v1";
|
|
113
113
|
var TYPESCRIPT_EXT_REGEX = /\.(ts|tsx|mts|cts)$/;
|
|
114
114
|
function agentRpcLoader(source) {
|
|
115
|
-
const { debug } = this.getOptions();
|
|
115
|
+
const { debug, appDir: appDirOption } = this.getOptions();
|
|
116
116
|
const log = debug ? (...args) => console.log("[agent-loader]", ...args) : () => void 0;
|
|
117
117
|
log("processing:", this.resourcePath);
|
|
118
118
|
if (!source.includes(PACKAGE_NAME)) {
|
|
@@ -139,18 +139,23 @@ function agentRpcLoader(source) {
|
|
|
139
139
|
log("found agent exports:", agentExports);
|
|
140
140
|
const fileDir = path.dirname(filename);
|
|
141
141
|
let appDir;
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
const srcDir = filename.substring(0, srcIndex + 4);
|
|
145
|
-
appDir = path.join(srcDir, "app");
|
|
142
|
+
if (appDirOption) {
|
|
143
|
+
appDir = appDirOption;
|
|
146
144
|
} else {
|
|
147
|
-
const
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
145
|
+
const srcIndex = filename.lastIndexOf(`${path.sep}src${path.sep}`);
|
|
146
|
+
if (srcIndex !== -1) {
|
|
147
|
+
const srcDir = filename.substring(0, srcIndex + 4);
|
|
148
|
+
appDir = path.join(srcDir, "app");
|
|
149
|
+
} else {
|
|
150
|
+
const appSep = `${path.sep}app${path.sep}`;
|
|
151
|
+
const appIndex = filename.lastIndexOf(appSep);
|
|
152
|
+
if (appIndex !== -1) {
|
|
153
|
+
appDir = filename.substring(0, appIndex + appSep.length - 1);
|
|
154
|
+
} else {
|
|
155
|
+
log("skipping - no src/ or app/ dir found");
|
|
156
|
+
return source;
|
|
157
|
+
}
|
|
152
158
|
}
|
|
153
|
-
appDir = filename.substring(0, appIndex + appSep.length - 1);
|
|
154
159
|
}
|
|
155
160
|
const stepsPath = path.join(
|
|
156
161
|
appDir,
|
|
@@ -206,4 +211,4 @@ function findAgentExports(ast) {
|
|
|
206
211
|
}
|
|
207
212
|
return exports2;
|
|
208
213
|
}
|
|
209
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL25leHQvbG9hZGVyLnRzIiwgIi4uLy4uL3BhY2thZ2UuanNvbiJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiaW1wb3J0ICogYXMgcGF0aCBmcm9tIFwibm9kZTpwYXRoXCI7XG5pbXBvcnQgeyB0eXBlIE1vZHVsZSwgcGFyc2VTeW5jIH0gZnJvbSBcIkBzd2MvY29yZVwiO1xuaW1wb3J0IHBrZyBmcm9tIFwiLi4vLi4vcGFja2FnZS5qc29uXCI7XG5cbnR5cGUgTG9hZGVyT3B0aW9ucyA9IHtcbiAgZGVidWc/OiBib29sZWFuO1xufTtcblxudHlwZSBMb2FkZXJDb250ZXh0ID0ge1xuICByZXNvdXJjZVBhdGg6IHN0cmluZztcbiAgZ2V0T3B0aW9ucygpOiBMb2FkZXJPcHRpb25zO1xufTtcblxuY29uc3QgUEFDS0FHRV9OQU1FID0gcGtnLm5hbWU7XG5jb25zdCBBR0VOVF9QUk9UT0NPTF9WRVJTSU9OID0gXCJ2MVwiO1xuY29uc3QgVFlQRVNDUklQVF9FWFRfUkVHRVggPSAvXFwuKHRzfHRzeHxtdHN8Y3RzKSQvO1xuXG4vKipcbiAqIFdlYnBhY2svVHVyYm9wYWNrIGxvYWRlciB0aGF0IHdpcmVzIHVwIGFnZW50LnJwYyBieSByZXF1aXJpbmcgc3RlcHMuanNcbiAqIGF0IHRoZSBFTkQgb2YgdGhlIGZpbGUuIFVzaW5nIHJlcXVpcmUoKSBhdm9pZHMgaW1wb3J0IGhvaXN0aW5nIGlzc3Vlcy5cbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gYWdlbnRScGNMb2FkZXIoXG4gIHRoaXM6IExvYWRlckNvbnRleHQsXG4gIHNvdXJjZTogc3RyaW5nXG4pOiBzdHJpbmcge1xuICBjb25zdCB7IGRlYnVnIH0gPSB0aGlzLmdldE9wdGlvbnMoKTtcbiAgY29uc3QgbG9nID0gZGVidWdcbiAgICA/ICguLi5hcmdzOiB1bmtub3duW10pID0+IGNvbnNvbGUubG9nKFwiW2FnZW50LWxvYWRlcl1cIiwgLi4uYXJncylcbiAgICA6ICgpID0+IHVuZGVmaW5lZDtcblxuICBsb2coXCJwcm9jZXNzaW5nOlwiLCB0aGlzLnJlc291cmNlUGF0aCk7XG5cbiAgaWYgKCFzb3VyY2UuaW5jbHVkZXMoUEFDS0FHRV9OQU1FKSkge1xuICAgIGxvZyhcInNraXBwaW5nIC0gbm8gcGFja2FnZSBuYW1lXCIpO1xuICAgIHJldHVybiBzb3VyY2U7XG4gIH1cblxuICBjb25zdCBmaWxlbmFtZSA9IHRoaXMucmVzb3VyY2VQYXRoO1xuICBjb25zdCBpc1R5cGVTY3JpcHQgPSBUWVBFU0NSSVBUX0VYVF9SRUdFWC50ZXN0KGZpbGVuYW1lKTtcblxuICBsZXQgYXN0OiBNb2R1bGU7XG4gIHRyeSB7XG4gICAgYXN0ID0gcGFyc2VTeW5jKHNvdXJjZSwge1xuICAgICAgc3ludGF4OiBpc1R5cGVTY3JpcHQgPyBcInR5cGVzY3JpcHRcIiA6IFwiZWNtYXNjcmlwdFwiLFxuICAgICAgdHN4OiBmaWxlbmFtZS5lbmRzV2l0aChcIi50c3hcIiksXG4gICAgICBqc3g6IGZpbGVuYW1lLmVuZHNXaXRoKFwiLmpzeFwiKSxcbiAgICB9KTtcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIHNvdXJjZTtcbiAgfVxuXG4gIGNvbnN0IGFnZW50RXhwb3J0cyA9IGZpbmRBZ2VudEV4cG9ydHMoYXN0KTtcbiAgaWYgKGFnZW50RXhwb3J0cy5sZW5ndGggPT09IDApIHtcbiAgICBsb2coXCJza2lwcGluZyAtIG5vIGFnZW50IGV4cG9ydHNcIik7XG4gICAgcmV0dXJuIHNvdXJjZTtcbiAgfVxuXG4gIGxvZyhcImZvdW5kIGFnZW50IGV4cG9ydHM6XCIsIGFnZW50RXhwb3J0cyk7XG5cbiAgY29uc3QgZmlsZURpciA9IHBhdGguZGlybmFtZShmaWxlbmFtZSk7XG5cbiAgbGV0IGFwcERpcjogc3RyaW5nO1xuICBjb25zdCBzcmNJbmRleCA9IGZpbGVuYW1lLmxhc3RJbmRleE9mKGAke3BhdGguc2VwfXNyYyR7cGF0aC5zZXB9YCk7XG4gIGlmIChzcmNJbmRleCAhPT0gLTEpIHtcbiAgICBjb25zdCBzcmNEaXIgPSBmaWxlbmFtZS5zdWJzdHJpbmcoMCwgc3JjSW5kZXggKyA0KTtcbiAgICBhcHBEaXIgPSBwYXRoLmpvaW4oc3JjRGlyLCBcImFwcFwiKTtcbiAgfSBlbHNlIHtcbiAgICBjb25zdCBhcHBTZXAgPSBgJHtwYXRoLnNlcH1hcHAke3BhdGguc2VwfWA7XG4gICAgY29uc3QgYXBwSW5kZXggPSBmaWxlbmFtZS5sYXN0SW5kZXhPZihhcHBTZXApO1xuICAgIGlmIChhcHBJbmRleCA9PT0gLTEpIHtcbiAgICAgIGxvZyhcInNraXBwaW5nIC0gbm8gc3JjLyBvciBhcHAvIGRpciBmb3VuZFwiKTtcbiAgICAgIHJldHVybiBzb3VyY2U7XG4gICAgfVxuICAgIGFwcERpciA9IGZpbGVuYW1lLnN1YnN0cmluZygwLCBhcHBJbmRleCArIGFwcFNlcC5sZW5ndGggLSAxKTtcbiAgfVxuXG4gIGNvbnN0IHN0ZXBzUGF0aCA9IHBhdGguam9pbihcbiAgICBhcHBEaXIsXG4gICAgXCIud2VsbC1rbm93blwiLFxuICAgIFwiYWdlbnRcIixcbiAgICBBR0VOVF9QUk9UT0NPTF9WRVJTSU9OLFxuICAgIFwic3RlcHMuanNcIlxuICApO1xuICBsZXQgcmVsYXRpdmVQYXRoID0gcGF0aC5yZWxhdGl2ZShmaWxlRGlyLCBzdGVwc1BhdGgpLnJlcGxhY2UoL1xcXFwvZywgXCIvXCIpO1xuXG4gIGlmICghKHJlbGF0aXZlUGF0aC5zdGFydHNXaXRoKFwiLi9cIikgfHwgcmVsYXRpdmVQYXRoLnN0YXJ0c1dpdGgoXCIuLi9cIikpKSB7XG4gICAgcmVsYXRpdmVQYXRoID0gYC4vJHtyZWxhdGl2ZVBhdGh9YDtcbiAgfVxuXG4gIC8vIEltcG9ydCB0aGUgaW5pdCBmdW5jdGlvbiBmcm9tIHN0ZXBzLmpzIGFuZCBjYWxsIGl0IGZvciBlYWNoIGFnZW50XG4gIC8vIHN0ZXBzLmpzIG5vIGxvbmdlciBpbXBvcnRzIHRoZSBhZ2VudCwgc28gbm8gY2lyY3VsYXIgZGVwZW5kZW5jeVxuICBjb25zdCBpbml0Q2FsbHMgPSBhZ2VudEV4cG9ydHNcbiAgICAubWFwKChuYW1lKSA9PiB7XG4gICAgICBjb25zdCBpbml0TmFtZSA9IGBfX2luaXQke25hbWVbMF0udG9VcHBlckNhc2UoKX0ke25hbWUuc2xpY2UoMSl9YDtcbiAgICAgIHJldHVybiBgJHtpbml0TmFtZX0oJHtuYW1lfSk7YDtcbiAgICB9KVxuICAgIC5qb2luKFwiXFxuXCIpO1xuXG4gIGNvbnN0IGluaXRJbXBvcnRzID0gYWdlbnRFeHBvcnRzXG4gICAgLm1hcCgobmFtZSkgPT4gYF9faW5pdCR7bmFtZVswXS50b1VwcGVyQ2FzZSgpfSR7bmFtZS5zbGljZSgxKX1gKVxuICAgIC5qb2luKFwiLCBcIik7XG5cbiAgbG9nKFwiaW5qZWN0aW5nIGluaXQgY2FsbHMgZm9yOlwiLCBhZ2VudEV4cG9ydHMpO1xuICByZXR1cm4gYCR7c291cmNlfVxuaW1wb3J0IHsgJHtpbml0SW1wb3J0c30gfSBmcm9tIFwiJHtyZWxhdGl2ZVBhdGh9XCI7XG4ke2luaXRDYWxsc31gO1xufVxuXG5mdW5jdGlvbiBmaW5kQWdlbnRFeHBvcnRzKGFzdDogTW9kdWxlKTogc3RyaW5nW10ge1xuICBsZXQgYWdlbnRMb2NhbE5hbWU6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuXG4gIGZvciAoY29uc3QgaXRlbSBvZiBhc3QuYm9keSkge1xuICAgIGlmIChcbiAgICAgIGl0ZW0udHlwZSA9PT0gXCJJbXBvcnREZWNsYXJhdGlvblwiICYmXG4gICAgICBpdGVtLnNvdXJjZS52YWx1ZSA9PT0gUEFDS0FHRV9OQU1FXG4gICAgKSB7XG4gICAgICBmb3IgKGNvbnN0IHNwZWNpZmllciBvZiBpdGVtLnNwZWNpZmllcnMpIHtcbiAgICAgICAgaWYgKHNwZWNpZmllci50eXBlID09PSBcIkltcG9ydFNwZWNpZmllclwiKSB7XG4gICAgICAgICAgY29uc3QgaW1wb3J0ZWQgPVxuICAgICAgICAgICAgc3BlY2lmaWVyLmltcG9ydGVkPy50eXBlID09PSBcIklkZW50aWZpZXJcIlxuICAgICAgICAgICAgICA/IHNwZWNpZmllci5pbXBvcnRlZC52YWx1ZVxuICAgICAgICAgICAgICA6IHNwZWNpZmllci5sb2NhbC52YWx1ZTtcblxuICAgICAgICAgIGlmIChpbXBvcnRlZCA9PT0gXCJhZ2VudFwiKSB7XG4gICAgICAgICAgICBhZ2VudExvY2FsTmFtZSA9IHNwZWNpZmllci5sb2NhbC52YWx1ZTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGlmICghYWdlbnRMb2NhbE5hbWUpIHtcbiAgICByZXR1cm4gW107XG4gIH1cblxuICBjb25zdCBleHBvcnRzOiBzdHJpbmdbXSA9IFtdO1xuXG4gIGZvciAoY29uc3QgaXRlbSBvZiBhc3QuYm9keSkge1xuICAgIGlmIChpdGVtLnR5cGUgPT09IFwiRXhwb3J0RGVjbGFyYXRpb25cIiAmJiBpdGVtLmRlY2xhcmF0aW9uKSB7XG4gICAgICBjb25zdCBkZWNsID0gaXRlbS5kZWNsYXJhdGlvbjtcbiAgICAgIGlmIChkZWNsLnR5cGUgPT09IFwiVmFyaWFibGVEZWNsYXJhdGlvblwiKSB7XG4gICAgICAgIGZvciAoY29uc3QgZGVjbGFyYXRvciBvZiBkZWNsLmRlY2xhcmF0aW9ucykge1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIGRlY2xhcmF0b3IuaWQudHlwZSA9PT0gXCJJZGVudGlmaWVyXCIgJiZcbiAgICAgICAgICAgIGRlY2xhcmF0b3IuaW5pdD8udHlwZSA9PT0gXCJDYWxsRXhwcmVzc2lvblwiICYmXG4gICAgICAgICAgICBkZWNsYXJhdG9yLmluaXQuY2FsbGVlLnR5cGUgPT09IFwiSWRlbnRpZmllclwiICYmXG4gICAgICAgICAgICBkZWNsYXJhdG9yLmluaXQuY2FsbGVlLnZhbHVlID09PSBhZ2VudExvY2FsTmFtZVxuICAgICAgICAgICkge1xuICAgICAgICAgICAgZXhwb3J0cy5wdXNoKGRlY2xhcmF0b3IuaWQudmFsdWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBleHBvcnRzO1xufVxuIiwgIntcbiAgXCJuYW1lXCI6IFwiZXhwZXJpbWVudGFsLWFnZW50XCIsXG4gIFwidmVyc2lvblwiOiBcIjAuMi4xXCIsXG4gIFwibWFpblwiOiBcIi4vZGlzdC9pbmRleC5qc1wiLFxuICBcIm1vZHVsZVwiOiBcIi4vZGlzdC9pbmRleC5tanNcIixcbiAgXCJ0eXBlc1wiOiBcIi4vZGlzdC9pbmRleC5kLnRzXCIsXG4gIFwic2lkZUVmZmVjdHNcIjogdHJ1ZSxcbiAgXCJsaWNlbnNlXCI6IFwiTUlUXCIsXG4gIFwiZmlsZXNcIjogW1xuICAgIFwiZGlzdC8qKlwiXG4gIF0sXG4gIFwiZXhwb3J0c1wiOiB7XG4gICAgXCIuXCI6IHtcbiAgICAgIFwidHlwZXNcIjogXCIuL2Rpc3QvaW5kZXguZC50c1wiLFxuICAgICAgXCJpbXBvcnRcIjogXCIuL2Rpc3QvaW5kZXgubWpzXCIsXG4gICAgICBcInJlcXVpcmVcIjogXCIuL2Rpc3QvaW5kZXguanNcIlxuICAgIH0sXG4gICAgXCIuL25leHRcIjoge1xuICAgICAgXCJ0eXBlc1wiOiBcIi4vZGlzdC9uZXh0LmQudHNcIixcbiAgICAgIFwiaW1wb3J0XCI6IFwiLi9kaXN0L25leHQubWpzXCIsXG4gICAgICBcInJlcXVpcmVcIjogXCIuL2Rpc3QvbmV4dC5qc1wiXG4gICAgfSxcbiAgICBcIi4vbmV4dC9sb2FkZXJcIjoge1xuICAgICAgXCJ0eXBlc1wiOiBcIi4vZGlzdC9uZXh0L2xvYWRlci5kLnRzXCIsXG4gICAgICBcImltcG9ydFwiOiBcIi4vZGlzdC9uZXh0L2xvYWRlci5tanNcIixcbiAgICAgIFwicmVxdWlyZVwiOiBcIi4vZGlzdC9uZXh0L2xvYWRlci5qc1wiXG4gICAgfSxcbiAgICBcIi4vY2xpZW50XCI6IHtcbiAgICAgIFwidHlwZXNcIjogXCIuL2Rpc3QvY2xpZW50LmQudHNcIixcbiAgICAgIFwiaW1wb3J0XCI6IFwiLi9kaXN0L2NsaWVudC5tanNcIixcbiAgICAgIFwicmVxdWlyZVwiOiBcIi4vZGlzdC9jbGllbnQuanNcIlxuICAgIH1cbiAgfSxcbiAgXCJzY3JpcHRzXCI6IHtcbiAgICBcImJ1aWxkXCI6IFwidHN1cFwiLFxuICAgIFwiZGV2XCI6IFwidHN1cCAtLXdhdGNoXCIsXG4gICAgXCJjbGVhblwiOiBcInJtIC1yZiAudHVyYm8gJiYgcm0gLXJmIG5vZGVfbW9kdWxlcyAmJiBybSAtcmYgZGlzdFwiLFxuICAgIFwicmVsZWFzZVwiOiBcInBucG0gYnVpbGQgJiYgbnBtIHB1Ymxpc2hcIixcbiAgICBcInR5cGVjaGVja1wiOiBcInRzYyAtLW5vRW1pdFwiLFxuICAgIFwidGVzdFwiOiBcInZpdGVzdCBydW5cIixcbiAgICBcInRlc3Q6d2F0Y2hcIjogXCJ2aXRlc3RcIlxuICB9LFxuICBcImRlcGVuZGVuY2llc1wiOiB7XG4gICAgXCJAc3djL2NvcmVcIjogXCJeMS4xMC4wXCIsXG4gICAgXCJAdmVyY2VsL29pZGNcIjogXCJeMy4xLjBcIixcbiAgICBcImJldHRlci1hbGxcIjogXCJeMC4wLjVcIixcbiAgICBcImVycm9yZVwiOiBcIl4wLjguMlwiLFxuICAgIFwiZmFzdC1kZWVwLWVxdWFsXCI6IFwiXjMuMS4zXCIsXG4gICAgXCJAdmVyY2VsL3NhbmRib3hcIjogXCIxLjcuMVwiLFxuICAgIFwidWxpZFwiOiBcIl4zLjAuMlwiLFxuICAgIFwiem9kXCI6IFwiXjQuMy42XCJcbiAgfSxcbiAgXCJkZXZEZXBlbmRlbmNpZXNcIjoge1xuICAgIFwiQGFnZW50L3RzY29uZmlnXCI6IFwid29ya3NwYWNlOipcIixcbiAgICBcIkB0eXBlcy9ub2RlXCI6IFwiXjIwLjExLjI0XCIsXG4gICAgXCJkb3RlbnZcIjogXCJeMTcuMi4zXCIsXG4gICAgXCJuZXh0XCI6IFwiXjE2LjAuMFwiLFxuICAgIFwidHN1cFwiOiBcIl44LjAuMlwiLFxuICAgIFwidHlwZXNjcmlwdFwiOiBcIjUuNS40XCIsXG4gICAgXCJ2aXRlc3RcIjogXCJeMy4wLjBcIlxuICB9LFxuICBcInBlZXJEZXBlbmRlbmNpZXNcIjoge1xuICAgIFwiYWlcIjogXCJeNi4wLjBcIixcbiAgICBcIndvcmtmbG93XCI6IFwiKlwiXG4gIH0sXG4gIFwicHVibGlzaENvbmZpZ1wiOiB7XG4gICAgXCJhY2Nlc3NcIjogXCJwdWJsaWNcIlxuICB9XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsV0FBc0I7QUFDdEIsa0JBQXVDOzs7QUNEdkM7QUFBQSxFQUNFLE1BQVE7QUFBQSxFQUNSLFNBQVc7QUFBQSxFQUNYLE1BQVE7QUFBQSxFQUNSLFFBQVU7QUFBQSxFQUNWLE9BQVM7QUFBQSxFQUNULGFBQWU7QUFBQSxFQUNmLFNBQVc7QUFBQSxFQUNYLE9BQVM7QUFBQSxJQUNQO0FBQUEsRUFDRjtBQUFBLEVBQ0EsU0FBVztBQUFBLElBQ1QsS0FBSztBQUFBLE1BQ0gsT0FBUztBQUFBLE1BQ1QsUUFBVTtBQUFBLE1BQ1YsU0FBVztBQUFBLElBQ2I7QUFBQSxJQUNBLFVBQVU7QUFBQSxNQUNSLE9BQVM7QUFBQSxNQUNULFFBQVU7QUFBQSxNQUNWLFNBQVc7QUFBQSxJQUNiO0FBQUEsSUFDQSxpQkFBaUI7QUFBQSxNQUNmLE9BQVM7QUFBQSxNQUNULFFBQVU7QUFBQSxNQUNWLFNBQVc7QUFBQSxJQUNiO0FBQUEsSUFDQSxZQUFZO0FBQUEsTUFDVixPQUFTO0FBQUEsTUFDVCxRQUFVO0FBQUEsTUFDVixTQUFXO0FBQUEsSUFDYjtBQUFBLEVBQ0Y7QUFBQSxFQUNBLFNBQVc7QUFBQSxJQUNULE9BQVM7QUFBQSxJQUNULEtBQU87QUFBQSxJQUNQLE9BQVM7QUFBQSxJQUNULFNBQVc7QUFBQSxJQUNYLFdBQWE7QUFBQSxJQUNiLE1BQVE7QUFBQSxJQUNSLGNBQWM7QUFBQSxFQUNoQjtBQUFBLEVBQ0EsY0FBZ0I7QUFBQSxJQUNkLGFBQWE7QUFBQSxJQUNiLGdCQUFnQjtBQUFBLElBQ2hC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
|
|
214
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL25leHQvbG9hZGVyLnRzIiwgIi4uLy4uL3BhY2thZ2UuanNvbiJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiaW1wb3J0ICogYXMgcGF0aCBmcm9tIFwibm9kZTpwYXRoXCI7XG5pbXBvcnQgeyB0eXBlIE1vZHVsZSwgcGFyc2VTeW5jIH0gZnJvbSBcIkBzd2MvY29yZVwiO1xuaW1wb3J0IHBrZyBmcm9tIFwiLi4vLi4vcGFja2FnZS5qc29uXCI7XG5cbnR5cGUgTG9hZGVyT3B0aW9ucyA9IHtcbiAgZGVidWc/OiBib29sZWFuO1xuICBhcHBEaXI/OiBzdHJpbmc7XG59O1xuXG50eXBlIExvYWRlckNvbnRleHQgPSB7XG4gIHJlc291cmNlUGF0aDogc3RyaW5nO1xuICBnZXRPcHRpb25zKCk6IExvYWRlck9wdGlvbnM7XG59O1xuXG5jb25zdCBQQUNLQUdFX05BTUUgPSBwa2cubmFtZTtcbmNvbnN0IEFHRU5UX1BST1RPQ09MX1ZFUlNJT04gPSBcInYxXCI7XG5jb25zdCBUWVBFU0NSSVBUX0VYVF9SRUdFWCA9IC9cXC4odHN8dHN4fG10c3xjdHMpJC87XG5cbi8qKlxuICogV2VicGFjay9UdXJib3BhY2sgbG9hZGVyIHRoYXQgd2lyZXMgdXAgYWdlbnQucnBjIGJ5IHJlcXVpcmluZyBzdGVwcy5qc1xuICogYXQgdGhlIEVORCBvZiB0aGUgZmlsZS4gVXNpbmcgcmVxdWlyZSgpIGF2b2lkcyBpbXBvcnQgaG9pc3RpbmcgaXNzdWVzLlxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBhZ2VudFJwY0xvYWRlcihcbiAgdGhpczogTG9hZGVyQ29udGV4dCxcbiAgc291cmNlOiBzdHJpbmdcbik6IHN0cmluZyB7XG4gIGNvbnN0IHsgZGVidWcsIGFwcERpcjogYXBwRGlyT3B0aW9uIH0gPSB0aGlzLmdldE9wdGlvbnMoKTtcbiAgY29uc3QgbG9nID0gZGVidWdcbiAgICA/ICguLi5hcmdzOiB1bmtub3duW10pID0+IGNvbnNvbGUubG9nKFwiW2FnZW50LWxvYWRlcl1cIiwgLi4uYXJncylcbiAgICA6ICgpID0+IHVuZGVmaW5lZDtcblxuICBsb2coXCJwcm9jZXNzaW5nOlwiLCB0aGlzLnJlc291cmNlUGF0aCk7XG5cbiAgaWYgKCFzb3VyY2UuaW5jbHVkZXMoUEFDS0FHRV9OQU1FKSkge1xuICAgIGxvZyhcInNraXBwaW5nIC0gbm8gcGFja2FnZSBuYW1lXCIpO1xuICAgIHJldHVybiBzb3VyY2U7XG4gIH1cblxuICBjb25zdCBmaWxlbmFtZSA9IHRoaXMucmVzb3VyY2VQYXRoO1xuICBjb25zdCBpc1R5cGVTY3JpcHQgPSBUWVBFU0NSSVBUX0VYVF9SRUdFWC50ZXN0KGZpbGVuYW1lKTtcblxuICBsZXQgYXN0OiBNb2R1bGU7XG4gIHRyeSB7XG4gICAgYXN0ID0gcGFyc2VTeW5jKHNvdXJjZSwge1xuICAgICAgc3ludGF4OiBpc1R5cGVTY3JpcHQgPyBcInR5cGVzY3JpcHRcIiA6IFwiZWNtYXNjcmlwdFwiLFxuICAgICAgdHN4OiBmaWxlbmFtZS5lbmRzV2l0aChcIi50c3hcIiksXG4gICAgICBqc3g6IGZpbGVuYW1lLmVuZHNXaXRoKFwiLmpzeFwiKSxcbiAgICB9KTtcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIHNvdXJjZTtcbiAgfVxuXG4gIGNvbnN0IGFnZW50RXhwb3J0cyA9IGZpbmRBZ2VudEV4cG9ydHMoYXN0KTtcbiAgaWYgKGFnZW50RXhwb3J0cy5sZW5ndGggPT09IDApIHtcbiAgICBsb2coXCJza2lwcGluZyAtIG5vIGFnZW50IGV4cG9ydHNcIik7XG4gICAgcmV0dXJuIHNvdXJjZTtcbiAgfVxuXG4gIGxvZyhcImZvdW5kIGFnZW50IGV4cG9ydHM6XCIsIGFnZW50RXhwb3J0cyk7XG5cbiAgY29uc3QgZmlsZURpciA9IHBhdGguZGlybmFtZShmaWxlbmFtZSk7XG5cbiAgbGV0IGFwcERpcjogc3RyaW5nO1xuICBpZiAoYXBwRGlyT3B0aW9uKSB7XG4gICAgYXBwRGlyID0gYXBwRGlyT3B0aW9uO1xuICB9IGVsc2Uge1xuICAgIGNvbnN0IHNyY0luZGV4ID0gZmlsZW5hbWUubGFzdEluZGV4T2YoYCR7cGF0aC5zZXB9c3JjJHtwYXRoLnNlcH1gKTtcbiAgICBpZiAoc3JjSW5kZXggIT09IC0xKSB7XG4gICAgICBjb25zdCBzcmNEaXIgPSBmaWxlbmFtZS5zdWJzdHJpbmcoMCwgc3JjSW5kZXggKyA0KTtcbiAgICAgIGFwcERpciA9IHBhdGguam9pbihzcmNEaXIsIFwiYXBwXCIpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBhcHBTZXAgPSBgJHtwYXRoLnNlcH1hcHAke3BhdGguc2VwfWA7XG4gICAgICBjb25zdCBhcHBJbmRleCA9IGZpbGVuYW1lLmxhc3RJbmRleE9mKGFwcFNlcCk7XG4gICAgICBpZiAoYXBwSW5kZXggIT09IC0xKSB7XG4gICAgICAgIGFwcERpciA9IGZpbGVuYW1lLnN1YnN0cmluZygwLCBhcHBJbmRleCArIGFwcFNlcC5sZW5ndGggLSAxKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGxvZyhcInNraXBwaW5nIC0gbm8gc3JjLyBvciBhcHAvIGRpciBmb3VuZFwiKTtcbiAgICAgICAgcmV0dXJuIHNvdXJjZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjb25zdCBzdGVwc1BhdGggPSBwYXRoLmpvaW4oXG4gICAgYXBwRGlyLFxuICAgIFwiLndlbGwta25vd25cIixcbiAgICBcImFnZW50XCIsXG4gICAgQUdFTlRfUFJPVE9DT0xfVkVSU0lPTixcbiAgICBcInN0ZXBzLmpzXCJcbiAgKTtcbiAgbGV0IHJlbGF0aXZlUGF0aCA9IHBhdGgucmVsYXRpdmUoZmlsZURpciwgc3RlcHNQYXRoKS5yZXBsYWNlKC9cXFxcL2csIFwiL1wiKTtcblxuICBpZiAoIShyZWxhdGl2ZVBhdGguc3RhcnRzV2l0aChcIi4vXCIpIHx8IHJlbGF0aXZlUGF0aC5zdGFydHNXaXRoKFwiLi4vXCIpKSkge1xuICAgIHJlbGF0aXZlUGF0aCA9IGAuLyR7cmVsYXRpdmVQYXRofWA7XG4gIH1cblxuICBjb25zdCBpbml0Q2FsbHMgPSBhZ2VudEV4cG9ydHNcbiAgICAubWFwKChuYW1lKSA9PiB7XG4gICAgICBjb25zdCBpbml0TmFtZSA9IGBfX2luaXQke25hbWVbMF0udG9VcHBlckNhc2UoKX0ke25hbWUuc2xpY2UoMSl9YDtcbiAgICAgIHJldHVybiBgJHtpbml0TmFtZX0oJHtuYW1lfSk7YDtcbiAgICB9KVxuICAgIC5qb2luKFwiXFxuXCIpO1xuXG4gIGNvbnN0IGluaXRJbXBvcnRzID0gYWdlbnRFeHBvcnRzXG4gICAgLm1hcCgobmFtZSkgPT4gYF9faW5pdCR7bmFtZVswXS50b1VwcGVyQ2FzZSgpfSR7bmFtZS5zbGljZSgxKX1gKVxuICAgIC5qb2luKFwiLCBcIik7XG5cbiAgbG9nKFwiaW5qZWN0aW5nIGluaXQgY2FsbHMgZm9yOlwiLCBhZ2VudEV4cG9ydHMpO1xuICByZXR1cm4gYCR7c291cmNlfVxuaW1wb3J0IHsgJHtpbml0SW1wb3J0c30gfSBmcm9tIFwiJHtyZWxhdGl2ZVBhdGh9XCI7XG4ke2luaXRDYWxsc31gO1xufVxuXG5mdW5jdGlvbiBmaW5kQWdlbnRFeHBvcnRzKGFzdDogTW9kdWxlKTogc3RyaW5nW10ge1xuICBsZXQgYWdlbnRMb2NhbE5hbWU6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuXG4gIGZvciAoY29uc3QgaXRlbSBvZiBhc3QuYm9keSkge1xuICAgIGlmIChcbiAgICAgIGl0ZW0udHlwZSA9PT0gXCJJbXBvcnREZWNsYXJhdGlvblwiICYmXG4gICAgICBpdGVtLnNvdXJjZS52YWx1ZSA9PT0gUEFDS0FHRV9OQU1FXG4gICAgKSB7XG4gICAgICBmb3IgKGNvbnN0IHNwZWNpZmllciBvZiBpdGVtLnNwZWNpZmllcnMpIHtcbiAgICAgICAgaWYgKHNwZWNpZmllci50eXBlID09PSBcIkltcG9ydFNwZWNpZmllclwiKSB7XG4gICAgICAgICAgY29uc3QgaW1wb3J0ZWQgPVxuICAgICAgICAgICAgc3BlY2lmaWVyLmltcG9ydGVkPy50eXBlID09PSBcIklkZW50aWZpZXJcIlxuICAgICAgICAgICAgICA/IHNwZWNpZmllci5pbXBvcnRlZC52YWx1ZVxuICAgICAgICAgICAgICA6IHNwZWNpZmllci5sb2NhbC52YWx1ZTtcblxuICAgICAgICAgIGlmIChpbXBvcnRlZCA9PT0gXCJhZ2VudFwiKSB7XG4gICAgICAgICAgICBhZ2VudExvY2FsTmFtZSA9IHNwZWNpZmllci5sb2NhbC52YWx1ZTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGlmICghYWdlbnRMb2NhbE5hbWUpIHtcbiAgICByZXR1cm4gW107XG4gIH1cblxuICBjb25zdCBleHBvcnRzOiBzdHJpbmdbXSA9IFtdO1xuXG4gIGZvciAoY29uc3QgaXRlbSBvZiBhc3QuYm9keSkge1xuICAgIGlmIChpdGVtLnR5cGUgPT09IFwiRXhwb3J0RGVjbGFyYXRpb25cIiAmJiBpdGVtLmRlY2xhcmF0aW9uKSB7XG4gICAgICBjb25zdCBkZWNsID0gaXRlbS5kZWNsYXJhdGlvbjtcbiAgICAgIGlmIChkZWNsLnR5cGUgPT09IFwiVmFyaWFibGVEZWNsYXJhdGlvblwiKSB7XG4gICAgICAgIGZvciAoY29uc3QgZGVjbGFyYXRvciBvZiBkZWNsLmRlY2xhcmF0aW9ucykge1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIGRlY2xhcmF0b3IuaWQudHlwZSA9PT0gXCJJZGVudGlmaWVyXCIgJiZcbiAgICAgICAgICAgIGRlY2xhcmF0b3IuaW5pdD8udHlwZSA9PT0gXCJDYWxsRXhwcmVzc2lvblwiICYmXG4gICAgICAgICAgICBkZWNsYXJhdG9yLmluaXQuY2FsbGVlLnR5cGUgPT09IFwiSWRlbnRpZmllclwiICYmXG4gICAgICAgICAgICBkZWNsYXJhdG9yLmluaXQuY2FsbGVlLnZhbHVlID09PSBhZ2VudExvY2FsTmFtZVxuICAgICAgICAgICkge1xuICAgICAgICAgICAgZXhwb3J0cy5wdXNoKGRlY2xhcmF0b3IuaWQudmFsdWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBleHBvcnRzO1xufVxuIiwgIntcbiAgXCJuYW1lXCI6IFwiZXhwZXJpbWVudGFsLWFnZW50XCIsXG4gIFwidmVyc2lvblwiOiBcIjAuMi4zXCIsXG4gIFwibWFpblwiOiBcIi4vZGlzdC9pbmRleC5qc1wiLFxuICBcIm1vZHVsZVwiOiBcIi4vZGlzdC9pbmRleC5tanNcIixcbiAgXCJ0eXBlc1wiOiBcIi4vZGlzdC9pbmRleC5kLnRzXCIsXG4gIFwic2lkZUVmZmVjdHNcIjogdHJ1ZSxcbiAgXCJsaWNlbnNlXCI6IFwiTUlUXCIsXG4gIFwiZmlsZXNcIjogW1xuICAgIFwiZGlzdC8qKlwiXG4gIF0sXG4gIFwiZXhwb3J0c1wiOiB7XG4gICAgXCIuXCI6IHtcbiAgICAgIFwidHlwZXNcIjogXCIuL2Rpc3QvaW5kZXguZC50c1wiLFxuICAgICAgXCJpbXBvcnRcIjogXCIuL2Rpc3QvaW5kZXgubWpzXCIsXG4gICAgICBcInJlcXVpcmVcIjogXCIuL2Rpc3QvaW5kZXguanNcIlxuICAgIH0sXG4gICAgXCIuL25leHRcIjoge1xuICAgICAgXCJ0eXBlc1wiOiBcIi4vZGlzdC9uZXh0LmQudHNcIixcbiAgICAgIFwiaW1wb3J0XCI6IFwiLi9kaXN0L25leHQubWpzXCIsXG4gICAgICBcInJlcXVpcmVcIjogXCIuL2Rpc3QvbmV4dC5qc1wiXG4gICAgfSxcbiAgICBcIi4vbmV4dC9sb2FkZXJcIjoge1xuICAgICAgXCJ0eXBlc1wiOiBcIi4vZGlzdC9uZXh0L2xvYWRlci5kLnRzXCIsXG4gICAgICBcImltcG9ydFwiOiBcIi4vZGlzdC9uZXh0L2xvYWRlci5tanNcIixcbiAgICAgIFwicmVxdWlyZVwiOiBcIi4vZGlzdC9uZXh0L2xvYWRlci5qc1wiXG4gICAgfSxcbiAgICBcIi4vY2xpZW50XCI6IHtcbiAgICAgIFwidHlwZXNcIjogXCIuL2Rpc3QvY2xpZW50LmQudHNcIixcbiAgICAgIFwiaW1wb3J0XCI6IFwiLi9kaXN0L2NsaWVudC5tanNcIixcbiAgICAgIFwicmVxdWlyZVwiOiBcIi4vZGlzdC9jbGllbnQuanNcIlxuICAgIH1cbiAgfSxcbiAgXCJzY3JpcHRzXCI6IHtcbiAgICBcImJ1aWxkXCI6IFwidHN1cFwiLFxuICAgIFwiZGV2XCI6IFwidHN1cCAtLXdhdGNoXCIsXG4gICAgXCJjbGVhblwiOiBcInJtIC1yZiAudHVyYm8gJiYgcm0gLXJmIG5vZGVfbW9kdWxlcyAmJiBybSAtcmYgZGlzdFwiLFxuICAgIFwicmVsZWFzZVwiOiBcInBucG0gYnVpbGQgJiYgbnBtIHB1Ymxpc2hcIixcbiAgICBcInR5cGVjaGVja1wiOiBcInRzYyAtLW5vRW1pdFwiLFxuICAgIFwidGVzdFwiOiBcInZpdGVzdCBydW5cIixcbiAgICBcInRlc3Q6d2F0Y2hcIjogXCJ2aXRlc3RcIlxuICB9LFxuICBcImRlcGVuZGVuY2llc1wiOiB7XG4gICAgXCJAc3djL2NvcmVcIjogXCJeMS4xMC4wXCIsXG4gICAgXCJAdmVyY2VsL29pZGNcIjogXCJeMy4xLjBcIixcbiAgICBcImJldHRlci1hbGxcIjogXCJeMC4wLjVcIixcbiAgICBcImVycm9yZVwiOiBcIl4wLjguMlwiLFxuICAgIFwiZmFzdC1kZWVwLWVxdWFsXCI6IFwiXjMuMS4zXCIsXG4gICAgXCJAdmVyY2VsL3NhbmRib3hcIjogXCIxLjcuMVwiLFxuICAgIFwidWxpZFwiOiBcIl4zLjAuMlwiLFxuICAgIFwiem9kXCI6IFwiXjQuMy42XCJcbiAgfSxcbiAgXCJkZXZEZXBlbmRlbmNpZXNcIjoge1xuICAgIFwiQGFnZW50L3RzY29uZmlnXCI6IFwid29ya3NwYWNlOipcIixcbiAgICBcIkB0eXBlcy9ub2RlXCI6IFwiXjIwLjExLjI0XCIsXG4gICAgXCJkb3RlbnZcIjogXCJeMTcuMi4zXCIsXG4gICAgXCJuZXh0XCI6IFwiXjE2LjAuMFwiLFxuICAgIFwidHN1cFwiOiBcIl44LjAuMlwiLFxuICAgIFwidHlwZXNjcmlwdFwiOiBcIjUuNS40XCIsXG4gICAgXCJ2aXRlc3RcIjogXCJeMy4wLjBcIlxuICB9LFxuICBcInBlZXJEZXBlbmRlbmNpZXNcIjoge1xuICAgIFwiYWlcIjogXCJeNi4wLjBcIixcbiAgICBcIndvcmtmbG93XCI6IFwiKlwiXG4gIH0sXG4gIFwicHVibGlzaENvbmZpZ1wiOiB7XG4gICAgXCJhY2Nlc3NcIjogXCJwdWJsaWNcIlxuICB9XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsV0FBc0I7QUFDdEIsa0JBQXVDOzs7QUNEdkM7QUFBQSxFQUNFLE1BQVE7QUFBQSxFQUNSLFNBQVc7QUFBQSxFQUNYLE1BQVE7QUFBQSxFQUNSLFFBQVU7QUFBQSxFQUNWLE9BQVM7QUFBQSxFQUNULGFBQWU7QUFBQSxFQUNmLFNBQVc7QUFBQSxFQUNYLE9BQVM7QUFBQSxJQUNQO0FBQUEsRUFDRjtBQUFBLEVBQ0EsU0FBVztBQUFBLElBQ1QsS0FBSztBQUFBLE1BQ0gsT0FBUztBQUFBLE1BQ1QsUUFBVTtBQUFBLE1BQ1YsU0FBVztBQUFBLElBQ2I7QUFBQSxJQUNBLFVBQVU7QUFBQSxNQUNSLE9BQVM7QUFBQSxNQUNULFFBQVU7QUFBQSxNQUNWLFNBQVc7QUFBQSxJQUNiO0FBQUEsSUFDQSxpQkFBaUI7QUFBQSxNQUNmLE9BQVM7QUFBQSxNQUNULFFBQVU7QUFBQSxNQUNWLFNBQVc7QUFBQSxJQUNiO0FBQUEsSUFDQSxZQUFZO0FBQUEsTUFDVixPQUFTO0FBQUEsTUFDVCxRQUFVO0FBQUEsTUFDVixTQUFXO0FBQUEsSUFDYjtBQUFBLEVBQ0Y7QUFBQSxFQUNBLFNBQVc7QUFBQSxJQUNULE9BQVM7QUFBQSxJQUNULEtBQU87QUFBQSxJQUNQLE9BQVM7QUFBQSxJQUNULFNBQVc7QUFBQSxJQUNYLFdBQWE7QUFBQSxJQUNiLE1BQVE7QUFBQSxJQUNSLGNBQWM7QUFBQSxFQUNoQjtBQUFBLEVBQ0EsY0FBZ0I7QUFBQSxJQUNkLGFBQWE7QUFBQSxJQUNiLGdCQUFn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
|
package/dist/next/loader.mjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
package_default
|
|
3
|
-
} from "../chunk-
|
|
3
|
+
} from "../chunk-7M6UPURS.mjs";
|
|
4
4
|
import "../chunk-BJTO5JO5.mjs";
|
|
5
5
|
|
|
6
6
|
// src/next/loader.ts
|
|
@@ -10,7 +10,7 @@ var PACKAGE_NAME = package_default.name;
|
|
|
10
10
|
var AGENT_PROTOCOL_VERSION = "v1";
|
|
11
11
|
var TYPESCRIPT_EXT_REGEX = /\.(ts|tsx|mts|cts)$/;
|
|
12
12
|
function agentRpcLoader(source) {
|
|
13
|
-
const { debug } = this.getOptions();
|
|
13
|
+
const { debug, appDir: appDirOption } = this.getOptions();
|
|
14
14
|
const log = debug ? (...args) => console.log("[agent-loader]", ...args) : () => void 0;
|
|
15
15
|
log("processing:", this.resourcePath);
|
|
16
16
|
if (!source.includes(PACKAGE_NAME)) {
|
|
@@ -37,18 +37,23 @@ function agentRpcLoader(source) {
|
|
|
37
37
|
log("found agent exports:", agentExports);
|
|
38
38
|
const fileDir = path.dirname(filename);
|
|
39
39
|
let appDir;
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
const srcDir = filename.substring(0, srcIndex + 4);
|
|
43
|
-
appDir = path.join(srcDir, "app");
|
|
40
|
+
if (appDirOption) {
|
|
41
|
+
appDir = appDirOption;
|
|
44
42
|
} else {
|
|
45
|
-
const
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
43
|
+
const srcIndex = filename.lastIndexOf(`${path.sep}src${path.sep}`);
|
|
44
|
+
if (srcIndex !== -1) {
|
|
45
|
+
const srcDir = filename.substring(0, srcIndex + 4);
|
|
46
|
+
appDir = path.join(srcDir, "app");
|
|
47
|
+
} else {
|
|
48
|
+
const appSep = `${path.sep}app${path.sep}`;
|
|
49
|
+
const appIndex = filename.lastIndexOf(appSep);
|
|
50
|
+
if (appIndex !== -1) {
|
|
51
|
+
appDir = filename.substring(0, appIndex + appSep.length - 1);
|
|
52
|
+
} else {
|
|
53
|
+
log("skipping - no src/ or app/ dir found");
|
|
54
|
+
return source;
|
|
55
|
+
}
|
|
50
56
|
}
|
|
51
|
-
appDir = filename.substring(0, appIndex + appSep.length - 1);
|
|
52
57
|
}
|
|
53
58
|
const stepsPath = path.join(
|
|
54
59
|
appDir,
|
|
@@ -107,4 +112,4 @@ function findAgentExports(ast) {
|
|
|
107
112
|
export {
|
|
108
113
|
agentRpcLoader as default
|
|
109
114
|
};
|
|
110
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
115
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL25leHQvbG9hZGVyLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyJpbXBvcnQgKiBhcyBwYXRoIGZyb20gXCJub2RlOnBhdGhcIjtcbmltcG9ydCB7IHR5cGUgTW9kdWxlLCBwYXJzZVN5bmMgfSBmcm9tIFwiQHN3Yy9jb3JlXCI7XG5pbXBvcnQgcGtnIGZyb20gXCIuLi8uLi9wYWNrYWdlLmpzb25cIjtcblxudHlwZSBMb2FkZXJPcHRpb25zID0ge1xuICBkZWJ1Zz86IGJvb2xlYW47XG4gIGFwcERpcj86IHN0cmluZztcbn07XG5cbnR5cGUgTG9hZGVyQ29udGV4dCA9IHtcbiAgcmVzb3VyY2VQYXRoOiBzdHJpbmc7XG4gIGdldE9wdGlvbnMoKTogTG9hZGVyT3B0aW9ucztcbn07XG5cbmNvbnN0IFBBQ0tBR0VfTkFNRSA9IHBrZy5uYW1lO1xuY29uc3QgQUdFTlRfUFJPVE9DT0xfVkVSU0lPTiA9IFwidjFcIjtcbmNvbnN0IFRZUEVTQ1JJUFRfRVhUX1JFR0VYID0gL1xcLih0c3x0c3h8bXRzfGN0cykkLztcblxuLyoqXG4gKiBXZWJwYWNrL1R1cmJvcGFjayBsb2FkZXIgdGhhdCB3aXJlcyB1cCBhZ2VudC5ycGMgYnkgcmVxdWlyaW5nIHN0ZXBzLmpzXG4gKiBhdCB0aGUgRU5EIG9mIHRoZSBmaWxlLiBVc2luZyByZXF1aXJlKCkgYXZvaWRzIGltcG9ydCBob2lzdGluZyBpc3N1ZXMuXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGFnZW50UnBjTG9hZGVyKFxuICB0aGlzOiBMb2FkZXJDb250ZXh0LFxuICBzb3VyY2U6IHN0cmluZ1xuKTogc3RyaW5nIHtcbiAgY29uc3QgeyBkZWJ1ZywgYXBwRGlyOiBhcHBEaXJPcHRpb24gfSA9IHRoaXMuZ2V0T3B0aW9ucygpO1xuICBjb25zdCBsb2cgPSBkZWJ1Z1xuICAgID8gKC4uLmFyZ3M6IHVua25vd25bXSkgPT4gY29uc29sZS5sb2coXCJbYWdlbnQtbG9hZGVyXVwiLCAuLi5hcmdzKVxuICAgIDogKCkgPT4gdW5kZWZpbmVkO1xuXG4gIGxvZyhcInByb2Nlc3Npbmc6XCIsIHRoaXMucmVzb3VyY2VQYXRoKTtcblxuICBpZiAoIXNvdXJjZS5pbmNsdWRlcyhQQUNLQUdFX05BTUUpKSB7XG4gICAgbG9nKFwic2tpcHBpbmcgLSBubyBwYWNrYWdlIG5hbWVcIik7XG4gICAgcmV0dXJuIHNvdXJjZTtcbiAgfVxuXG4gIGNvbnN0IGZpbGVuYW1lID0gdGhpcy5yZXNvdXJjZVBhdGg7XG4gIGNvbnN0IGlzVHlwZVNjcmlwdCA9IFRZUEVTQ1JJUFRfRVhUX1JFR0VYLnRlc3QoZmlsZW5hbWUpO1xuXG4gIGxldCBhc3Q6IE1vZHVsZTtcbiAgdHJ5IHtcbiAgICBhc3QgPSBwYXJzZVN5bmMoc291cmNlLCB7XG4gICAgICBzeW50YXg6IGlzVHlwZVNjcmlwdCA/IFwidHlwZXNjcmlwdFwiIDogXCJlY21hc2NyaXB0XCIsXG4gICAgICB0c3g6IGZpbGVuYW1lLmVuZHNXaXRoKFwiLnRzeFwiKSxcbiAgICAgIGpzeDogZmlsZW5hbWUuZW5kc1dpdGgoXCIuanN4XCIpLFxuICAgIH0pO1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gc291cmNlO1xuICB9XG5cbiAgY29uc3QgYWdlbnRFeHBvcnRzID0gZmluZEFnZW50RXhwb3J0cyhhc3QpO1xuICBpZiAoYWdlbnRFeHBvcnRzLmxlbmd0aCA9PT0gMCkge1xuICAgIGxvZyhcInNraXBwaW5nIC0gbm8gYWdlbnQgZXhwb3J0c1wiKTtcbiAgICByZXR1cm4gc291cmNlO1xuICB9XG5cbiAgbG9nKFwiZm91bmQgYWdlbnQgZXhwb3J0czpcIiwgYWdlbnRFeHBvcnRzKTtcblxuICBjb25zdCBmaWxlRGlyID0gcGF0aC5kaXJuYW1lKGZpbGVuYW1lKTtcblxuICBsZXQgYXBwRGlyOiBzdHJpbmc7XG4gIGlmIChhcHBEaXJPcHRpb24pIHtcbiAgICBhcHBEaXIgPSBhcHBEaXJPcHRpb247XG4gIH0gZWxzZSB7XG4gICAgY29uc3Qgc3JjSW5kZXggPSBmaWxlbmFtZS5sYXN0SW5kZXhPZihgJHtwYXRoLnNlcH1zcmMke3BhdGguc2VwfWApO1xuICAgIGlmIChzcmNJbmRleCAhPT0gLTEpIHtcbiAgICAgIGNvbnN0IHNyY0RpciA9IGZpbGVuYW1lLnN1YnN0cmluZygwLCBzcmNJbmRleCArIDQpO1xuICAgICAgYXBwRGlyID0gcGF0aC5qb2luKHNyY0RpciwgXCJhcHBcIik7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGFwcFNlcCA9IGAke3BhdGguc2VwfWFwcCR7cGF0aC5zZXB9YDtcbiAgICAgIGNvbnN0IGFwcEluZGV4ID0gZmlsZW5hbWUubGFzdEluZGV4T2YoYXBwU2VwKTtcbiAgICAgIGlmIChhcHBJbmRleCAhPT0gLTEpIHtcbiAgICAgICAgYXBwRGlyID0gZmlsZW5hbWUuc3Vic3RyaW5nKDAsIGFwcEluZGV4ICsgYXBwU2VwLmxlbmd0aCAtIDEpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbG9nKFwic2tpcHBpbmcgLSBubyBzcmMvIG9yIGFwcC8gZGlyIGZvdW5kXCIpO1xuICAgICAgICByZXR1cm4gc291cmNlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IHN0ZXBzUGF0aCA9IHBhdGguam9pbihcbiAgICBhcHBEaXIsXG4gICAgXCIud2VsbC1rbm93blwiLFxuICAgIFwiYWdlbnRcIixcbiAgICBBR0VOVF9QUk9UT0NPTF9WRVJTSU9OLFxuICAgIFwic3RlcHMuanNcIlxuICApO1xuICBsZXQgcmVsYXRpdmVQYXRoID0gcGF0aC5yZWxhdGl2ZShmaWxlRGlyLCBzdGVwc1BhdGgpLnJlcGxhY2UoL1xcXFwvZywgXCIvXCIpO1xuXG4gIGlmICghKHJlbGF0aXZlUGF0aC5zdGFydHNXaXRoKFwiLi9cIikgfHwgcmVsYXRpdmVQYXRoLnN0YXJ0c1dpdGgoXCIuLi9cIikpKSB7XG4gICAgcmVsYXRpdmVQYXRoID0gYC4vJHtyZWxhdGl2ZVBhdGh9YDtcbiAgfVxuXG4gIGNvbnN0IGluaXRDYWxscyA9IGFnZW50RXhwb3J0c1xuICAgIC5tYXAoKG5hbWUpID0+IHtcbiAgICAgIGNvbnN0IGluaXROYW1lID0gYF9faW5pdCR7bmFtZVswXS50b1VwcGVyQ2FzZSgpfSR7bmFtZS5zbGljZSgxKX1gO1xuICAgICAgcmV0dXJuIGAke2luaXROYW1lfSgke25hbWV9KTtgO1xuICAgIH0pXG4gICAgLmpvaW4oXCJcXG5cIik7XG5cbiAgY29uc3QgaW5pdEltcG9ydHMgPSBhZ2VudEV4cG9ydHNcbiAgICAubWFwKChuYW1lKSA9PiBgX19pbml0JHtuYW1lWzBdLnRvVXBwZXJDYXNlKCl9JHtuYW1lLnNsaWNlKDEpfWApXG4gICAgLmpvaW4oXCIsIFwiKTtcblxuICBsb2coXCJpbmplY3RpbmcgaW5pdCBjYWxscyBmb3I6XCIsIGFnZW50RXhwb3J0cyk7XG4gIHJldHVybiBgJHtzb3VyY2V9XG5pbXBvcnQgeyAke2luaXRJbXBvcnRzfSB9IGZyb20gXCIke3JlbGF0aXZlUGF0aH1cIjtcbiR7aW5pdENhbGxzfWA7XG59XG5cbmZ1bmN0aW9uIGZpbmRBZ2VudEV4cG9ydHMoYXN0OiBNb2R1bGUpOiBzdHJpbmdbXSB7XG4gIGxldCBhZ2VudExvY2FsTmFtZTogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG5cbiAgZm9yIChjb25zdCBpdGVtIG9mIGFzdC5ib2R5KSB7XG4gICAgaWYgKFxuICAgICAgaXRlbS50eXBlID09PSBcIkltcG9ydERlY2xhcmF0aW9uXCIgJiZcbiAgICAgIGl0ZW0uc291cmNlLnZhbHVlID09PSBQQUNLQUdFX05BTUVcbiAgICApIHtcbiAgICAgIGZvciAoY29uc3Qgc3BlY2lmaWVyIG9mIGl0ZW0uc3BlY2lmaWVycykge1xuICAgICAgICBpZiAoc3BlY2lmaWVyLnR5cGUgPT09IFwiSW1wb3J0U3BlY2lmaWVyXCIpIHtcbiAgICAgICAgICBjb25zdCBpbXBvcnRlZCA9XG4gICAgICAgICAgICBzcGVjaWZpZXIuaW1wb3J0ZWQ/LnR5cGUgPT09IFwiSWRlbnRpZmllclwiXG4gICAgICAgICAgICAgID8gc3BlY2lmaWVyLmltcG9ydGVkLnZhbHVlXG4gICAgICAgICAgICAgIDogc3BlY2lmaWVyLmxvY2FsLnZhbHVlO1xuXG4gICAgICAgICAgaWYgKGltcG9ydGVkID09PSBcImFnZW50XCIpIHtcbiAgICAgICAgICAgIGFnZW50TG9jYWxOYW1lID0gc3BlY2lmaWVyLmxvY2FsLnZhbHVlO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaWYgKCFhZ2VudExvY2FsTmFtZSkge1xuICAgIHJldHVybiBbXTtcbiAgfVxuXG4gIGNvbnN0IGV4cG9ydHM6IHN0cmluZ1tdID0gW107XG5cbiAgZm9yIChjb25zdCBpdGVtIG9mIGFzdC5ib2R5KSB7XG4gICAgaWYgKGl0ZW0udHlwZSA9PT0gXCJFeHBvcnREZWNsYXJhdGlvblwiICYmIGl0ZW0uZGVjbGFyYXRpb24pIHtcbiAgICAgIGNvbnN0IGRlY2wgPSBpdGVtLmRlY2xhcmF0aW9uO1xuICAgICAgaWYgKGRlY2wudHlwZSA9PT0gXCJWYXJpYWJsZURlY2xhcmF0aW9uXCIpIHtcbiAgICAgICAgZm9yIChjb25zdCBkZWNsYXJhdG9yIG9mIGRlY2wuZGVjbGFyYXRpb25zKSB7XG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgZGVjbGFyYXRvci5pZC50eXBlID09PSBcIklkZW50aWZpZXJcIiAmJlxuICAgICAgICAgICAgZGVjbGFyYXRvci5pbml0Py50eXBlID09PSBcIkNhbGxFeHByZXNzaW9uXCIgJiZcbiAgICAgICAgICAgIGRlY2xhcmF0b3IuaW5pdC5jYWxsZWUudHlwZSA9PT0gXCJJZGVudGlmaWVyXCIgJiZcbiAgICAgICAgICAgIGRlY2xhcmF0b3IuaW5pdC5jYWxsZWUudmFsdWUgPT09IGFnZW50TG9jYWxOYW1lXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICBleHBvcnRzLnB1c2goZGVjbGFyYXRvci5pZC52YWx1ZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9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
|
package/dist/next.js
CHANGED
|
@@ -40,7 +40,7 @@ var path = __toESM(require("path"));
|
|
|
40
40
|
// package.json
|
|
41
41
|
var package_default = {
|
|
42
42
|
name: "experimental-agent",
|
|
43
|
-
version: "0.2.
|
|
43
|
+
version: "0.2.3",
|
|
44
44
|
main: "./dist/index.js",
|
|
45
45
|
module: "./dist/index.mjs",
|
|
46
46
|
types: "./dist/index.d.ts",
|
|
@@ -270,6 +270,8 @@ function withAgent(configOrFn, agentConfig) {
|
|
|
270
270
|
generateAgentFiles(agents, outputDir, cwd, debug);
|
|
271
271
|
const agentFilePaths = agents.map((a) => a.filePath);
|
|
272
272
|
const loaderPath = require.resolve("./next/loader");
|
|
273
|
+
const absoluteAppDir = path.join(cwd, appDir);
|
|
274
|
+
const loaderOptions = { appDir: absoluteAppDir, debug };
|
|
273
275
|
if (debug) {
|
|
274
276
|
console.log("[withAgent] loader path:", loaderPath);
|
|
275
277
|
console.log("[withAgent] agent files:", agentFilePaths);
|
|
@@ -316,7 +318,7 @@ function withAgent(configOrFn, agentConfig) {
|
|
|
316
318
|
}
|
|
317
319
|
rules[key] = {
|
|
318
320
|
...existingRule,
|
|
319
|
-
loaders: [loaderPath, ...existingRule.loaders || []],
|
|
321
|
+
loaders: [{ loader: loaderPath, options: loaderOptions }, ...existingRule.loaders || []],
|
|
320
322
|
condition: {
|
|
321
323
|
any: [existingRule.condition, { path: agentPathRegex }]
|
|
322
324
|
}
|
|
@@ -326,7 +328,7 @@ function withAgent(configOrFn, agentConfig) {
|
|
|
326
328
|
nextConfig.webpack = (webpackConfig, context) => {
|
|
327
329
|
webpackConfig.module.rules.push({
|
|
328
330
|
test: (resourcePath) => agentFilePaths.includes(resourcePath),
|
|
329
|
-
use: [{ loader: loaderPath }]
|
|
331
|
+
use: [{ loader: loaderPath, options: loaderOptions }]
|
|
330
332
|
});
|
|
331
333
|
return existingWebpack?.(webpackConfig, context) ?? webpackConfig;
|
|
332
334
|
};
|
|
@@ -340,4 +342,4 @@ function withAgent(configOrFn, agentConfig) {
|
|
|
340
342
|
0 && (module.exports = {
|
|
341
343
|
withAgent
|
|
342
344
|
});
|
|
343
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL25leHQvaW5kZXgudHMiLCAiLi4vcGFja2FnZS5qc29uIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyJpbXBvcnQgKiBhcyBjcnlwdG8gZnJvbSBcIm5vZGU6Y3J5cHRvXCI7XG5pbXBvcnQgKiBhcyBmcyBmcm9tIFwibm9kZTpmc1wiO1xuaW1wb3J0ICogYXMgcGF0aCBmcm9tIFwibm9kZTpwYXRoXCI7XG5pbXBvcnQgdHlwZSB7IE5leHRDb25maWcgfSBmcm9tIFwibmV4dFwiO1xuaW1wb3J0IHBrZyBmcm9tIFwiLi4vLi4vcGFja2FnZS5qc29uXCI7XG5cbmV4cG9ydCB0eXBlIFdpdGhBZ2VudENvbmZpZyA9IHtcbiAgLyoqIEVuYWJsZSBkZWJ1ZyBsb2dnaW5nIGZvciB0aGUgTmV4dC5qcyBsb2FkZXIgKGFnZW50IGRldGVjdGlvbiwgZmlsZSBnZW5lcmF0aW9uKS4gKi9cbiAgZGVidWc/OiBib29sZWFuO1xufTtcblxuY29uc3QgUEFDS0FHRV9OQU1FID0gcGtnLm5hbWU7XG5jb25zdCBBR0VOVF9QUk9UT0NPTF9WRVJTSU9OID0gXCJ2MVwiO1xuY29uc3QgRklMRV9FWFRfUkVHRVggPSAvXFwuKHRzfHRzeHxqc3xqc3gpJC87XG5jb25zdCBBR0VOVF9FWFBPUlRfUkVHRVggPSAvZXhwb3J0XFxzK2NvbnN0XFxzKyhcXHcrKVxccyo9XFxzKmFnZW50XFxzKlxcKC9nO1xuY29uc3QgREVGQVVMVF9XT1JLRkxPV19ESVJTID0gW1wicGFnZXNcIiwgXCJhcHBcIiwgXCJzcmMvcGFnZXNcIiwgXCJzcmMvYXBwXCJdO1xuXG50eXBlIERldGVjdGVkQWdlbnQgPSB7XG4gIGV4cG9ydE5hbWU6IHN0cmluZztcbiAgZmlsZVBhdGg6IHN0cmluZztcbiAgLyoqIFVuaXF1ZSBpZGVudGlmaWVyOiBleHBvcnROYW1lIG9yIGV4cG9ydE5hbWVfaGFzaCBpZiBkdXBsaWNhdGVzIGV4aXN0ICovXG4gIHVuaXF1ZUlkOiBzdHJpbmc7XG59O1xuXG5mdW5jdGlvbiBzaG9ydEhhc2goc3RyOiBzdHJpbmcpOiBzdHJpbmcge1xuICBsZXQgaGFzaCA9IDA7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgc3RyLmxlbmd0aDsgaSsrKSB7XG4gICAgY29uc3QgY2hhciA9IHN0ci5jaGFyQ29kZUF0KGkpO1xuICAgIC8vIGJpb21lLWlnbm9yZSBsaW50L3N1c3BpY2lvdXMvbm9CaXR3aXNlT3BlcmF0b3JzOiBpbnRlbnRpb25hbCBoYXNoIGNvbXB1dGF0aW9uXG4gICAgaGFzaCA9IChoYXNoIDw8IDUpIC0gaGFzaCArIGNoYXI7XG4gICAgLy8gYmlvbWUtaWdub3JlIGxpbnQvc3VzcGljaW91cy9ub0JpdHdpc2VPcGVyYXRvcnM6IGNvbnZlcnQgdG8gMzItYml0IGludGVnZXJcbiAgICBoYXNoICY9IGhhc2g7XG4gIH1cbiAgcmV0dXJuIE1hdGguYWJzKGhhc2gpLnRvU3RyaW5nKDM2KS5zbGljZSgwLCA2KTtcbn1cblxuZnVuY3Rpb24gaGFzTmV4dEFwcExheW91dChkaXI6IHN0cmluZyk6IGJvb2xlYW4ge1xuICByZXR1cm4gW1wibGF5b3V0LnRzeFwiLCBcImxheW91dC50c1wiLCBcImxheW91dC5qc1wiLCBcImxheW91dC5qc3hcIl0uc29tZSgoZikgPT5cbiAgICBmcy5leGlzdHNTeW5jKHBhdGguam9pbihkaXIsIGYpKVxuICApO1xufVxuXG4vKipcbiAqIERldGVjdHMgd2hldGhlciB0aGUgcHJvamVjdCB1c2VzIHNyYy9hcHAgb3IgYXBwIGRpcmVjdG9yeSBzdHJ1Y3R1cmVcbiAqIGJ5IGNoZWNraW5nIHdoaWNoIGRpcmVjdG9yeSBjb250YWlucyBhIE5leHQuanMgbGF5b3V0IGZpbGUuXG4gKiBSZXR1cm5zIHRoZSBhcHAgZGlyZWN0b3J5IHBhdGggcmVsYXRpdmUgdG8gY3dkLlxuICovXG5mdW5jdGlvbiBnZXRBcHBEaXIoY3dkOiBzdHJpbmcpOiBzdHJpbmcge1xuICBjb25zdCBzcmNBcHBEaXIgPSBwYXRoLmpvaW4oY3dkLCBcInNyY1wiLCBcImFwcFwiKTtcbiAgY29uc3Qgcm9vdEFwcERpciA9IHBhdGguam9pbihjd2QsIFwiYXBwXCIpO1xuXG4gIGlmIChoYXNOZXh0QXBwTGF5b3V0KHNyY0FwcERpcikpIHtcbiAgICByZXR1cm4gXCJzcmMvYXBwXCI7XG4gIH1cbiAgaWYgKGhhc05leHRBcHBMYXlvdXQocm9vdEFwcERpcikpIHtcbiAgICByZXR1cm4gXCJhcHBcIjtcbiAgfVxuXG4gIC8qKlxuICAgKiBGYWxsYmFjayB3aGVuIG5laXRoZXIgZGlyZWN0b3J5IGhhcyBhIGxheW91dCBmaWxlIHlldFxuICAgKiAoZS5nLiBmcmVzaCBwcm9qZWN0KS4gUHJlZmVyIHNyYy9hcHAgaWYgdGhlIGRpcmVjdG9yeSBleGlzdHMuXG4gICAqL1xuICBpZiAoZnMuZXhpc3RzU3luYyhzcmNBcHBEaXIpKSB7XG4gICAgcmV0dXJuIFwic3JjL2FwcFwiO1xuICB9XG4gIHJldHVybiBcImFwcFwiO1xufVxuXG4vKipcbiAqIFNjYW5zIGZvciBhZ2VudCBleHBvcnRzIGluIHRoZSBwcm9qZWN0LlxuICovXG5mdW5jdGlvbiBkZXRlY3RBZ2VudHMoY3dkOiBzdHJpbmcsIGRlYnVnOiBib29sZWFuKTogRGV0ZWN0ZWRBZ2VudFtdIHtcbiAgY29uc3QgYWdlbnRzOiBEZXRlY3RlZEFnZW50W10gPSBbXTtcblxuICBjb25zdCBkaXJzVG9TY2FuID0gW3BhdGguam9pbihjd2QsIFwic3JjXCIpLCBjd2RdO1xuXG4gIGZ1bmN0aW9uIHNjYW5EaXIoZGlyOiBzdHJpbmcpIHtcbiAgICBpZiAoIWZzLmV4aXN0c1N5bmMoZGlyKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGVudHJpZXMgPSBmcy5yZWFkZGlyU3luYyhkaXIsIHsgd2l0aEZpbGVUeXBlczogdHJ1ZSB9KTtcbiAgICBmb3IgKGNvbnN0IGVudHJ5IG9mIGVudHJpZXMpIHtcbiAgICAgIGNvbnN0IGZ1bGxQYXRoID0gcGF0aC5qb2luKGRpciwgZW50cnkubmFtZSk7XG4gICAgICBpZiAoXG4gICAgICAgIGVudHJ5LmlzRGlyZWN0b3J5KCkgJiZcbiAgICAgICAgIWVudHJ5Lm5hbWUuc3RhcnRzV2l0aChcIi5cIikgJiZcbiAgICAgICAgZW50cnkubmFtZSAhPT0gXCJub2RlX21vZHVsZXNcIiAmJlxuICAgICAgICBlbnRyeS5uYW1lICE9PSBcInNyY1wiXG4gICAgICApIHtcbiAgICAgICAgc2NhbkRpcihmdWxsUGF0aCk7XG4gICAgICB9IGVsc2UgaWYgKGVudHJ5LmlzRmlsZSgpICYmIEZJTEVfRVhUX1JFR0VYLnRlc3QoZW50cnkubmFtZSkpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjb25zdCBjb250ZW50ID0gZnMucmVhZEZpbGVTeW5jKGZ1bGxQYXRoLCBcInV0Zi04XCIpO1xuICAgICAgICAgIGlmIChjb250ZW50LmluY2x1ZGVzKFBBQ0tBR0VfTkFNRSkgJiYgY29udGVudC5pbmNsdWRlcyhcImFnZW50KFwiKSkge1xuICAgICAgICAgICAgLy8gU3RyaXAgc2luZ2xlLWxpbmUgY29tbWVudHMgYW5kIGJsb2NrIGNvbW1lbnRzIHRvIGF2b2lkXG4gICAgICAgICAgICAvLyBtYXRjaGluZyBjb21tZW50ZWQtb3V0IGFnZW50IGV4cG9ydHNcbiAgICAgICAgICAgIGNvbnN0IHN0cmlwcGVkID0gY29udGVudFxuICAgICAgICAgICAgICAucmVwbGFjZSgvXFwvXFwvLiokL2dtLCBcIlwiKVxuICAgICAgICAgICAgICAucmVwbGFjZSgvXFwvXFwqW1xcc1xcU10qP1xcKlxcLy9nLCBcIlwiKTtcbiAgICAgICAgICAgIGNvbnN0IGV4cG9ydE1hdGNoZXMgPSBzdHJpcHBlZC5tYXRjaEFsbChBR0VOVF9FWFBPUlRfUkVHRVgpO1xuICAgICAgICAgICAgY29uc3Qgc2VlbiA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICAgICAgICAgICAgZm9yIChjb25zdCBtYXRjaCBvZiBleHBvcnRNYXRjaGVzKSB7XG4gICAgICAgICAgICAgIGlmIChzZWVuLmhhcyhtYXRjaFsxXSkpIHtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBzZWVuLmFkZChtYXRjaFsxXSk7XG4gICAgICAgICAgICAgIGFnZW50cy5wdXNoKHtcbiAgICAgICAgICAgICAgICBleHBvcnROYW1lOiBtYXRjaFsxXSxcbiAgICAgICAgICAgICAgICBmaWxlUGF0aDogZnVsbFBhdGgsXG4gICAgICAgICAgICAgICAgdW5pcXVlSWQ6IFwiXCIsIC8vIFdpbGwgYmUgc2V0IGFmdGVyIGFsbCBhZ2VudHMgYXJlIGZvdW5kXG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICBpZiAoZGVidWcpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgICAgICAgICAgIGBbd2l0aEFnZW50XSBGb3VuZCBhZ2VudDogJHttYXRjaFsxXX0gaW4gJHtmdWxsUGF0aH1gXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSBjYXRjaCB7XG4gICAgICAgICAgLy8gSWdub3JlIHJlYWQgZXJyb3JzXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBmb3IgKGNvbnN0IGRpciBvZiBkaXJzVG9TY2FuKSB7XG4gICAgc2NhbkRpcihkaXIpO1xuICB9XG5cbiAgLy8gQXNzaWduIHVuaXF1ZSBJRHMgLSBhZGQgaGFzaCBzdWZmaXggaWYgZHVwbGljYXRlIGV4cG9ydCBuYW1lcyBleGlzdFxuICBjb25zdCBuYW1lQ291bnRzID0gbmV3IE1hcDxzdHJpbmcsIG51bWJlcj4oKTtcbiAgZm9yIChjb25zdCBhZ2VudCBvZiBhZ2VudHMpIHtcbiAgICBuYW1lQ291bnRzLnNldChcbiAgICAgIGFnZW50LmV4cG9ydE5hbWUsXG4gICAgICAobmFtZUNvdW50cy5nZXQoYWdlbnQuZXhwb3J0TmFtZSkgfHwgMCkgKyAxXG4gICAgKTtcbiAgfVxuXG4gIGZvciAoY29uc3QgYWdlbnQgb2YgYWdlbnRzKSB7XG4gICAgY29uc3QgY291bnQgPSBuYW1lQ291bnRzLmdldChhZ2VudC5leHBvcnROYW1lKSA/PyAwO1xuICAgIGlmIChjb3VudCA+IDEpIHtcbiAgICAgIGFnZW50LnVuaXF1ZUlkID0gYCR7YWdlbnQuZXhwb3J0TmFtZX1fJHtzaG9ydEhhc2goYWdlbnQuZmlsZVBhdGgpfWA7XG4gICAgfSBlbHNlIHtcbiAgICAgIGFnZW50LnVuaXF1ZUlkID0gYWdlbnQuZXhwb3J0TmFtZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gYWdlbnRzO1xufVxuXG4vKipcbiAqIEdlbmVyYXRlcyBhbGwgYWdlbnQgZmlsZXMgaW4gLndlbGwta25vd24vYWdlbnQvdjEvOlxuICogLSBzdGVwcy5qczogUlBDIHN0ZXAgZnVuY3Rpb25zIHdpdGggXCJ1c2Ugc3RlcFwiXG4gKiAtIHJvdXRlLmpzOiB0cmlnZ2VycyB3b3JrZmxvdyBkaXNjb3ZlcnlcbiAqL1xuZnVuY3Rpb24gZ2VuZXJhdGVBZ2VudEZpbGVzKFxuICBhZ2VudHM6IERldGVjdGVkQWdlbnRbXSxcbiAgb3V0cHV0RGlyOiBzdHJpbmcsXG4gIF9jd2Q6IHN0cmluZyxcbiAgZGVidWc6IGJvb2xlYW5cbik6IHZvaWQge1xuICBpZiAoYWdlbnRzLmxlbmd0aCA9PT0gMCkge1xuICAgIGlmIChkZWJ1Zykge1xuICAgICAgY29uc29sZS5sb2coXCJbd2l0aEFnZW50XSBObyBhZ2VudHMgZm91bmQsIHNraXBwaW5nIGdlbmVyYXRpb25cIik7XG4gICAgfVxuICAgIHJldHVybjtcbiAgfVxuXG4gIGlmICghZnMuZXhpc3RzU3luYyhvdXRwdXREaXIpKSB7XG4gICAgZnMubWtkaXJTeW5jKG91dHB1dERpciwgeyByZWN1cnNpdmU6IHRydWUgfSk7XG4gIH1cblxuICAvKipcbiAgICogR2VuZXJhdGUgc3RlcCBmdW5jdGlvbnMgdGhhdCB1c2UgZHluYW1pYyBpbXBvcnQuXG4gICAqIER5bmFtaWMgaW1wb3J0IGVuc3VyZXMgdGhlIGFnZW50IG1vZHVsZSBsb2FkcyAoaW5jbHVkaW5nIGxvYWRlci1pbmplY3RlZCBpbml0KVxuICAgKiB3aGVuIHRoZSBzdGVwIHJ1bnMgaW4gd29ya2Zsb3cgY29udGV4dCwgYXZvaWRpbmcgdGhlIFwibm90IGluaXRpYWxpemVkXCIgZXJyb3IuXG4gICAqXG4gICAqIFVzZXMgdW5pcXVlSWQgZm9yIGZ1bmN0aW9uIG5hbWVzIHRvIGhhbmRsZSBkdXBsaWNhdGUgZXhwb3J0IG5hbWVzIGFjcm9zcyBmaWxlcy5cbiAgICovXG4gIGNvbnN0IHJwY0Z1bmN0aW9ucyA9IGFnZW50c1xuICAgIC5tYXAoKGEpID0+IHtcbiAgICAgIC8vIENhbGN1bGF0ZSByZWxhdGl2ZSBwYXRoIGZyb20gc3RlcHMuanMgdG8gdGhlIGFnZW50IGZpbGVcbiAgICAgIGxldCBhZ2VudFJlbFBhdGggPSBwYXRoXG4gICAgICAgIC5yZWxhdGl2ZShvdXRwdXREaXIsIGEuZmlsZVBhdGgpXG4gICAgICAgIC5yZXBsYWNlKC9cXFxcL2csIFwiL1wiKTtcblxuICAgICAgaWYgKCFhZ2VudFJlbFBhdGguc3RhcnRzV2l0aChcIi5cIikpIHtcbiAgICAgICAgYWdlbnRSZWxQYXRoID0gYC4vJHthZ2VudFJlbFBhdGh9YDtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGBcbmV4cG9ydCBjb25zdCAke2EudW5pcXVlSWR9UnBjID0gYXN5bmMgKHBhcmFtcykgPT4ge1xuICBcInVzZSBzdGVwXCI7XG4gIGNvbnN0IHsgJHthLmV4cG9ydE5hbWV9IH0gPSBhd2FpdCBpbXBvcnQoXCIke2FnZW50UmVsUGF0aH1cIik7XG4gIGNvbnN0IHJlcyA9IGF3YWl0ICR7YS5leHBvcnROYW1lfS5oYW5kbGVyKHBhcmFtcyk7XG4gIGlmIChyZXMgaW5zdGFuY2VvZiBSZXNwb25zZSkge1xuICAgIHJldHVybiByZXMuanNvbigpO1xuICB9XG4gIHJldHVybiByZXM7XG59O2A7XG4gICAgfSlcbiAgICAuam9pbihcIlxcblwiKTtcblxuICAvKipcbiAgICogSW5pdCBmdW5jdGlvbnMgd2lyZSB1cCBhZ2VudC5ycGMgaW4gdGhlIG1haW4gYXBwIGNvbnRleHQuXG4gICAqIFVzZXMgZXhwb3J0TmFtZSBmb3IgdGhlIGZ1bmN0aW9uIG5hbWUgKGxvYWRlciBtYXRjaGVzIGJ5IGV4cG9ydCBuYW1lKSxcbiAgICogYnV0IHJlZmVyZW5jZXMgdW5pcXVlSWQgZm9yIHRoZSBScGMgZnVuY3Rpb24uXG4gICAqL1xuICBjb25zdCBpbml0RnVuY3Rpb25zID0gYWdlbnRzXG4gICAgLm1hcChcbiAgICAgIChhKSA9PiBgXG5leHBvcnQgZnVuY3Rpb24gX19pbml0JHthLmV4cG9ydE5hbWVbMF0udG9VcHBlckNhc2UoKX0ke2EuZXhwb3J0TmFtZS5zbGljZShcbiAgICAgICAgMVxuICAgICAgKX0oYWdlbnQpIHtcbiAgYWdlbnQucnBjID0gJHthLnVuaXF1ZUlkfVJwYztcbn1gXG4gICAgKVxuICAgIC5qb2luKFwiXFxuXCIpO1xuXG4gIGNvbnN0IHN0ZXBzQ29udGVudCA9IGAvLyBBdXRvLWdlbmVyYXRlZCBieSB3aXRoQWdlbnQgLSBkbyBub3QgZWRpdFxuJHtycGNGdW5jdGlvbnN9XG4ke2luaXRGdW5jdGlvbnN9XG5gO1xuXG4gIGNvbnN0IHN0ZXBzUGF0aCA9IHBhdGguam9pbihvdXRwdXREaXIsIFwic3RlcHMuanNcIik7XG4gIGZzLndyaXRlRmlsZVN5bmMoc3RlcHNQYXRoLCBzdGVwc0NvbnRlbnQpO1xuXG4gIC8qKlxuICAgKiBHZW5lcmF0ZSByb3V0ZS5qcyB0aGF0IGltcG9ydHMgc3RlcHMuanMuXG4gICAqIFRoaXMgZW5zdXJlcyB3b3JrZmxvdyBkaXNjb3ZlcnMgdGhlIFwidXNlIHN0ZXBcIiBmdW5jdGlvbnMuXG4gICAqIE5vIGFjdHVhbCBoYW5kbGVyIG5lZWRlZCAtIHN0b3JhZ2UgUlBDIHVzZXMgdGhlIHN0ZXAgZnVuY3Rpb24gZGlyZWN0bHkuXG4gICAqL1xuICBjb25zdCByb3V0ZUNvbnRlbnQgPSBgLy8gQXV0by1nZW5lcmF0ZWQgYnkgd2l0aEFnZW50IC0gdHJpZ2dlcnMgd29ya2Zsb3cgZGlzY292ZXJ5XG5pbXBvcnQgXCIuL3N0ZXBzLmpzXCI7XG5leHBvcnQgZnVuY3Rpb24gR0VUKCkge1xuICByZXR1cm4gbmV3IFJlc3BvbnNlKFwib2tcIik7XG59XG5gO1xuXG4gIGNvbnN0IHJvdXRlUGF0aCA9IHBhdGguam9pbihvdXRwdXREaXIsIFwicm91dGUuanNcIik7XG4gIGZzLndyaXRlRmlsZVN5bmMocm91dGVQYXRoLCByb3V0ZUNvbnRlbnQpO1xuXG4gIC8vIEFkZCAuZ2l0aWdub3JlXG4gIGNvbnN0IGdpdGlnbm9yZVBhdGggPSBwYXRoLmpvaW4ob3V0cHV0RGlyLCBcIi5naXRpZ25vcmVcIik7XG4gIGlmICghZnMuZXhpc3RzU3luYyhnaXRpZ25vcmVQYXRoKSkge1xuICAgIGZzLndyaXRlRmlsZVN5bmMoZ2l0aWdub3JlUGF0aCwgXCIqXFxuXCIpO1xuICB9XG5cbiAgaWYgKGRlYnVnKSB7XG4gICAgY29uc29sZS5sb2coYFt3aXRoQWdlbnRdIEdlbmVyYXRlZCBhZ2VudCBmaWxlcyBhdCAke291dHB1dERpcn1gKTtcbiAgfVxufVxuXG50eXBlIFR1cmJvcGFja1J1bGUgPSB7XG4gIGxvYWRlcnM/OiBzdHJpbmdbXTtcbiAgY29uZGl0aW9uPzoge1xuICAgIGFsbD86IHVua25vd25bXTtcbiAgICBhbnk/OiB1bmtub3duW107XG4gICAgcGF0aD86IFJlZ0V4cDtcbiAgICBjb250ZW50PzogUmVnRXhwO1xuICAgIG5vdD86IHVua25vd247XG4gIH07XG59O1xuXG50eXBlIFdvcmtmbG93Q29uZmlnRm4gPSAoXG4gIHBoYXNlOiBzdHJpbmcsXG4gIGN0eDogeyBkZWZhdWx0Q29uZmlnOiBOZXh0Q29uZmlnIH1cbikgPT4gUHJvbWlzZTxOZXh0Q29uZmlnPjtcblxudHlwZSBOZXh0Q29uZmlnSW5wdXQgPVxuICB8IE5leHRDb25maWdcbiAgfCAoKFxuICAgICAgcGhhc2U6IHN0cmluZyxcbiAgICAgIGN0eDogeyBkZWZhdWx0Q29uZmlnOiBOZXh0Q29uZmlnIH1cbiAgICApID0+IFByb21pc2U8TmV4dENvbmZpZz4pO1xuXG4vKipcbiAqIE5leHQuanMgcGx1Z2luIHRoYXQgY29uZmlndXJlcyBhZ2VudCBzdXBwb3J0LlxuICpcbiAqIC0gRGV0ZWN0cyBhZ2VudHMgYW5kIGdlbmVyYXRlcyBSUEMgc3RlcHMgd2l0aCBcInVzZSBzdGVwXCIgaW4gLndlbGwta25vd24vYWdlbnQvdjEvXG4gKiAtIEdlbmVyYXRlcyBBR0VOVF9TRUNSRVQgZm9yIHNlY3VyZSBSUEMgY2FsbHNcbiAqIC0gV3JhcHMgd2l0aFdvcmtmbG93IGZvciB3b3JrZmxvdyBzdXBwb3J0XG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHRzXG4gKiAvLyBuZXh0LmNvbmZpZy50c1xuICogaW1wb3J0IHsgd2l0aEFnZW50IH0gZnJvbSBcImV4cGVyaW1lbnRhbC1hZ2VudC9uZXh0XCI7XG4gKlxuICogLy8gT3B0aW9uIDE6IHdpdGhBZ2VudCBoYW5kbGVzIGV2ZXJ5dGhpbmcgKHJlY29tbWVuZGVkKVxuICogZXhwb3J0IGRlZmF1bHQgd2l0aEFnZW50KHt9KTtcbiAqXG4gKiAvLyBPcHRpb24gMjogQ29tcG9zZSB3aXRoIG90aGVyIHBsdWdpbnNcbiAqIGV4cG9ydCBkZWZhdWx0IHdpdGhBZ2VudCh3aXRoU29tZU90aGVyUGx1Z2luKHt9KSk7XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHdpdGhBZ2VudChcbiAgY29uZmlnT3JGbjogTmV4dENvbmZpZ0lucHV0LFxuICBhZ2VudENvbmZpZz86IFdpdGhBZ2VudENvbmZpZ1xuKTogV29ya2Zsb3dDb25maWdGbiB7XG4gIGNvbnN0IGRlYnVnID0gYWdlbnRDb25maWc/LmRlYnVnID8/IGZhbHNlO1xuICBjb25zdCBjd2QgPSBwcm9jZXNzLmN3ZCgpO1xuXG4gIC8vIERldGVjdCBhcHAgZGlyZWN0b3J5IHN0cnVjdHVyZSAoc3JjL2FwcCB2cyBhcHApXG4gIGNvbnN0IGFwcERpciA9IGdldEFwcERpcihjd2QpO1xuICBjb25zdCBhZ2VudERpciA9IGAke2FwcERpcn0vLndlbGwta25vd24vYWdlbnQvJHtBR0VOVF9QUk9UT0NPTF9WRVJTSU9OfWA7XG5cbiAgLy8gRGV0ZWN0IGFnZW50cyBhbmQgZ2VuZXJhdGUgZmlsZXMgRklSU1QgKGJlZm9yZSB3b3JrZmxvdyBkaXNjb3ZlcnMgdGhlbSlcbiAgY29uc3QgYWdlbnRzID0gZGV0ZWN0QWdlbnRzKGN3ZCwgZGVidWcpO1xuICBjb25zdCBvdXRwdXREaXIgPSBwYXRoLmpvaW4oY3dkLCBhZ2VudERpcik7XG4gIGdlbmVyYXRlQWdlbnRGaWxlcyhhZ2VudHMsIG91dHB1dERpciwgY3dkLCBkZWJ1Zyk7XG5cbiAgY29uc3QgYWdlbnRGaWxlUGF0aHMgPSBhZ2VudHMubWFwKChhKSA9PiBhLmZpbGVQYXRoKTtcbiAgY29uc3QgbG9hZGVyUGF0aCA9IHJlcXVpcmUucmVzb2x2ZShcIi4vbmV4dC9sb2FkZXJcIik7XG5cbiAgaWYgKGRlYnVnKSB7XG4gICAgY29uc29sZS5sb2coXCJbd2l0aEFnZW50XSBsb2FkZXIgcGF0aDpcIiwgbG9hZGVyUGF0aCk7XG4gICAgY29uc29sZS5sb2coXCJbd2l0aEFnZW50XSBhZ2VudCBmaWxlczpcIiwgYWdlbnRGaWxlUGF0aHMpO1xuICAgIGNvbnNvbGUubG9nKFwiW3dpdGhBZ2VudF0gYWdlbnQgZGlyOlwiLCBhZ2VudERpcik7XG4gIH1cblxuICAvLyBCdWlsZCByZWdleCB0byBtYXRjaCBhZ2VudCBmaWxlIHBhdGhzXG4gIGNvbnN0IGFnZW50UGF0aFJlZ2V4ID1cbiAgICBhZ2VudEZpbGVQYXRocy5sZW5ndGggPiAwXG4gICAgICA/IG5ldyBSZWdFeHAoXG4gICAgICAgICAgYCR7YWdlbnRGaWxlUGF0aHNcbiAgICAgICAgICAgIC5tYXAoKHApID0+XG4gICAgICAgICAgICAgIHBhdGhcbiAgICAgICAgICAgICAgICAucmVsYXRpdmUoY3dkLCBwKVxuICAgICAgICAgICAgICAgIC5yZXBsYWNlKC9cXFxcL2csIFwiL1wiKVxuICAgICAgICAgICAgICAgIC5yZXBsYWNlKC9bLiorP14ke30oKXxbXFxdXFxcXF0vZywgXCJcXFxcJCZcIilcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5qb2luKFwifFwiKX0kYFxuICAgICAgICApXG4gICAgICA6IG51bGw7XG5cbiAgLyoqXG4gICAqIEFsd2F5cyBwYXNzIHRocm91Z2ggd2l0aFdvcmtmbG93IC0gaXQgaGFuZGxlcyBib3RoIE5leHRDb25maWcgYW5kIGFzeW5jIGZ1bmN0aW9ucy5cbiAgICogVGhpcyBlbnN1cmVzIHdvcmtmbG93IGlzIGFsd2F5cyBjb25maWd1cmVkLCByZWdhcmRsZXNzIG9mIHdoYXQgdGhlIHVzZXIgcGFzc2VkLlxuICAgKi9cbiAgbGV0IHdpdGhXb3JrZmxvdzogKFxuICAgIGNvbmZpZzogTmV4dENvbmZpZ0lucHV0LFxuICAgIG9wdGlvbnM/OiB7IHdvcmtmbG93cz86IHsgZGlycz86IHN0cmluZ1tdIH0gfVxuICApID0+IFdvcmtmbG93Q29uZmlnRm47XG4gIHRyeSB7XG4gICAgd2l0aFdvcmtmbG93ID0gcmVxdWlyZShcIndvcmtmbG93L25leHRcIikud2l0aFdvcmtmbG93O1xuICB9IGNhdGNoIHtcbiAgICBjb25zb2xlLndhcm4oXG4gICAgICBcIlt3aXRoQWdlbnRdIHdvcmtmbG93L25leHQgbm90IGZvdW5kLiBNYWtlIHN1cmUgd29ya2Zsb3cgaXMgaW5zdGFsbGVkLlwiXG4gICAgKTtcbiAgICByZXR1cm4gdHlwZW9mIGNvbmZpZ09yRm4gPT09IFwiZnVuY3Rpb25cIlxuICAgICAgPyBjb25maWdPckZuXG4gICAgICA6IGFzeW5jICgpID0+IGNvbmZpZ09yRm47XG4gIH1cblxuICBjb25zdCBiYXNlQ29uZmlnRm4gPSB3aXRoV29ya2Zsb3coY29uZmlnT3JGbiwge1xuICAgIHdvcmtmbG93czoge1xuICAgICAgZGlyczogWy4uLkRFRkFVTFRfV09SS0ZMT1dfRElSUywgYWdlbnREaXJdLFxuICAgIH0sXG4gIH0pO1xuXG4gIC8qKlxuICAgKiBSZXR1cm4gYSB3cmFwcGVyIHRoYXQgcnVucyBBRlRFUiB3b3JrZmxvdyBwcm9jZXNzZXMsIHRoZW4gYWRkcyBvdXIgbG9hZGVyLlxuICAgKiBUaGlzIGlzIG5lY2Vzc2FyeSBiZWNhdXNlIHdvcmtmbG93IG92ZXJ3cml0ZXMgdHVyYm9wYWNrIHJ1bGVzIC0gd2UgbmVlZCB0b1xuICAgKiBtb2RpZnkgdGhlbSBhZnRlciB3b3JrZmxvdyBpcyBkb25lLlxuICAgKi9cbiAgcmV0dXJuIGFzeW5jIChwaGFzZSwgY3R4KSA9PiB7XG4gICAgY29uc3QgbmV4dENvbmZpZyA9IGF3YWl0IGJhc2VDb25maWdGbihwaGFzZSwgY3R4KTtcblxuICAgIC8vIFNldCB1cCBBR0VOVF9TRUNSRVQgaWYgbm90IGFscmVhZHkgc2V0XG4gICAgaWYgKCFwcm9jZXNzLmVudi5BR0VOVF9TRUNSRVQpIHtcbiAgICAgIG5leHRDb25maWcuZW52ID0ge1xuICAgICAgICAuLi5uZXh0Q29uZmlnLmVudixcbiAgICAgICAgQUdFTlRfU0VDUkVUOiBjcnlwdG8ucmFuZG9tVVVJRCgpLFxuICAgICAgfTtcbiAgICAgIGlmIChkZWJ1Zykge1xuICAgICAgICBjb25zb2xlLmxvZyhcIlt3aXRoQWdlbnRdIEdlbmVyYXRlZCBBR0VOVF9TRUNSRVRcIik7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKCFhZ2VudFBhdGhSZWdleCB8fCBhZ2VudEZpbGVQYXRocy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiBuZXh0Q29uZmlnO1xuICAgIH1cblxuICAgIC8vIE1vZGlmeSB0dXJib3BhY2sgcnVsZXMgdG8gaW5jbHVkZSBvdXIgbG9hZGVyIGZvciBhZ2VudCBmaWxlc1xuICAgIGNvbnN0IHJ1bGVzID0gKG5leHRDb25maWcudHVyYm9wYWNrPy5ydWxlcyB8fCB7fSkgYXMgUmVjb3JkPFxuICAgICAgc3RyaW5nLFxuICAgICAgVHVyYm9wYWNrUnVsZVxuICAgID47XG5cbiAgICBmb3IgKGNvbnN0IGtleSBvZiBbXCIqLnRzXCIsIFwiKi50c3hcIiwgXCIqLmpzXCIsIFwiKi5qc3hcIl0pIHtcbiAgICAgIGNvbnN0IGV4aXN0aW5nUnVsZSA9IHJ1bGVzW2tleV07XG4gICAgICBpZiAoIWV4aXN0aW5nUnVsZSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgLyoqXG4gICAgICAgKiBXb3JrZmxvdydzIHJ1bGUgaGFzOiBjb25kaXRpb24uYWxsID0gW3sgbm90OiBwYXRoIH0sIHsgY29udGVudDogL3VzZSBzdGVwfC4uLi8gfV1cbiAgICAgICAqIFdlIHdhbnQ6IHJ1biBsb2FkZXIgaWYgd29ya2Zsb3cncyBjb25kaXRpb25zIG1hdGNoIE9SIGl0J3MgYW4gYWdlbnQgZmlsZS5cbiAgICAgICAqIFNvIHdlIHdyYXAgaW46IGNvbmRpdGlvbi5hbnkgPSBbZXhpc3RpbmdDb25kaXRpb24sIHsgcGF0aDogYWdlbnRQYXRoUmVnZXggfV1cbiAgICAgICAqL1xuICAgICAgcnVsZXNba2V5XSA9IHtcbiAgICAgICAgLi4uZXhpc3RpbmdSdWxlLFxuICAgICAgICBsb2FkZXJzOiBbbG9hZGVyUGF0aCwgLi4uKGV4aXN0aW5nUnVsZS5sb2FkZXJzIHx8IFtdKV0sXG4gICAgICAgIGNvbmRpdGlvbjoge1xuICAgICAgICAgIGFueTogW2V4aXN0aW5nUnVsZS5jb25kaXRpb24sIHsgcGF0aDogYWdlbnRQYXRoUmVnZXggfV0sXG4gICAgICAgIH0sXG4gICAgICB9O1xuICAgIH1cblxuICAgIC8vIEFsc28gY29uZmlndXJlIHdlYnBhY2sgZm9yIG5vbi10dXJib3BhY2sgYnVpbGRzXG4gICAgY29uc3QgZXhpc3RpbmdXZWJwYWNrID0gbmV4dENvbmZpZy53ZWJwYWNrO1xuICAgIG5leHRDb25maWcud2VicGFjayA9ICh3ZWJwYWNrQ29uZmlnLCBjb250ZXh0KSA9PiB7XG4gICAgICB3ZWJwYWNrQ29uZmlnLm1vZHVsZS5ydWxlcy5wdXNoKHtcbiAgICAgICAgdGVzdDogKHJlc291cmNlUGF0aDogc3RyaW5nKSA9PiBhZ2VudEZpbGVQYXRocy5pbmNsdWRlcyhyZXNvdXJjZVBhdGgpLFxuICAgICAgICB1c2U6IFt7IGxvYWRlcjogbG9hZGVyUGF0aCB9XSxcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIGV4aXN0aW5nV2VicGFjaz8uKHdlYnBhY2tDb25maWcsIGNvbnRleHQpID8/IHdlYnBhY2tDb25maWc7XG4gICAgfTtcblxuICAgIGlmIChkZWJ1Zykge1xuICAgICAgY29uc29sZS5sb2coXCJbd2l0aEFnZW50XSBBZGRlZCBhZ2VudCBsb2FkZXIgdG8gdHVyYm9wYWNrIHJ1bGVzXCIpO1xuICAgIH1cblxuICAgIHJldHVybiBuZXh0Q29uZmlnO1xuICB9O1xufVxuIiwgIntcbiAgXCJuYW1lXCI6IFwiZXhwZXJpbWVudGFsLWFnZW50XCIsXG4gIFwidmVyc2lvblwiOiBcIjAuMi4xXCIsXG4gIFwibWFpblwiOiBcIi4vZGlzdC9pbmRleC5qc1wiLFxuICBcIm1vZHVsZVwiOiBcIi4vZGlzdC9pbmRleC5tanNcIixcbiAgXCJ0eXBlc1wiOiBcIi4vZGlzdC9pbmRleC5kLnRzXCIsXG4gIFwic2lkZUVmZmVjdHNcIjogdHJ1ZSxcbiAgXCJsaWNlbnNlXCI6IFwiTUlUXCIsXG4gIFwiZmlsZXNcIjogW1xuICAgIFwiZGlzdC8qKlwiXG4gIF0sXG4gIFwiZXhwb3J0c1wiOiB7XG4gICAgXCIuXCI6IHtcbiAgICAgIFwidHlwZXNcIjogXCIuL2Rpc3QvaW5kZXguZC50c1wiLFxuICAgICAgXCJpbXBvcnRcIjogXCIuL2Rpc3QvaW5kZXgubWpzXCIsXG4gICAgICBcInJlcXVpcmVcIjogXCIuL2Rpc3QvaW5kZXguanNcIlxuICAgIH0sXG4gICAgXCIuL25leHRcIjoge1xuICAgICAgXCJ0eXBlc1wiOiBcIi4vZGlzdC9uZXh0LmQudHNcIixcbiAgICAgIFwiaW1wb3J0XCI6IFwiLi9kaXN0L25leHQubWpzXCIsXG4gICAgICBcInJlcXVpcmVcIjogXCIuL2Rpc3QvbmV4dC5qc1wiXG4gICAgfSxcbiAgICBcIi4vbmV4dC9sb2FkZXJcIjoge1xuICAgICAgXCJ0eXBlc1wiOiBcIi4vZGlzdC9uZXh0L2xvYWRlci5kLnRzXCIsXG4gICAgICBcImltcG9ydFwiOiBcIi4vZGlzdC9uZXh0L2xvYWRlci5tanNcIixcbiAgICAgIFwicmVxdWlyZVwiOiBcIi4vZGlzdC9uZXh0L2xvYWRlci5qc1wiXG4gICAgfSxcbiAgICBcIi4vY2xpZW50XCI6IHtcbiAgICAgIFwidHlwZXNcIjogXCIuL2Rpc3QvY2xpZW50LmQudHNcIixcbiAgICAgIFwiaW1wb3J0XCI6IFwiLi9kaXN0L2NsaWVudC5tanNcIixcbiAgICAgIFwicmVxdWlyZVwiOiBcIi4vZGlzdC9jbGllbnQuanNcIlxuICAgIH1cbiAgfSxcbiAgXCJzY3JpcHRzXCI6IHtcbiAgICBcImJ1aWxkXCI6IFwidHN1cFwiLFxuICAgIFwiZGV2XCI6IFwidHN1cCAtLXdhdGNoXCIsXG4gICAgXCJjbGVhblwiOiBcInJtIC1yZiAudHVyYm8gJiYgcm0gLXJmIG5vZGVfbW9kdWxlcyAmJiBybSAtcmYgZGlzdFwiLFxuICAgIFwicmVsZWFzZVwiOiBcInBucG0gYnVpbGQgJiYgbnBtIHB1Ymxpc2hcIixcbiAgICBcInR5cGVjaGVja1wiOiBcInRzYyAtLW5vRW1pdFwiLFxuICAgIFwidGVzdFwiOiBcInZpdGVzdCBydW5cIixcbiAgICBcInRlc3Q6d2F0Y2hcIjogXCJ2aXRlc3RcIlxuICB9LFxuICBcImRlcGVuZGVuY2llc1wiOiB7XG4gICAgXCJAc3djL2NvcmVcIjogXCJeMS4xMC4wXCIsXG4gICAgXCJAdmVyY2VsL29pZGNcIjogXCJeMy4xLjBcIixcbiAgICBcImJldHRlci1hbGxcIjogXCJeMC4wLjVcIixcbiAgICBcImVycm9yZVwiOiBcIl4wLjguMlwiLFxuICAgIFwiZmFzdC1kZWVwLWVxdWFsXCI6IFwiXjMuMS4zXCIsXG4gICAgXCJAdmVyY2VsL3NhbmRib3hcIjogXCIxLjcuMVwiLFxuICAgIFwidWxpZFwiOiBcIl4zLjAuMlwiLFxuICAgIFwiem9kXCI6IFwiXjQuMy42XCJcbiAgfSxcbiAgXCJkZXZEZXBlbmRlbmNpZXNcIjoge1xuICAgIFwiQGFnZW50L3RzY29uZmlnXCI6IFwid29ya3NwYWNlOipcIixcbiAgICBcIkB0eXBlcy9ub2RlXCI6IFwiXjIwLjExLjI0XCIsXG4gICAgXCJkb3RlbnZcIjogXCJeMTcuMi4zXCIsXG4gICAgXCJuZXh0XCI6IFwiXjE2LjAuMFwiLFxuICAgIFwidHN1cFwiOiBcIl44LjAuMlwiLFxuICAgIFwidHlwZXNjcmlwdFwiOiBcIjUuNS40XCIsXG4gICAgXCJ2aXRlc3RcIjogXCJeMy4wLjBcIlxuICB9LFxuICBcInBlZXJEZXBlbmRlbmNpZXNcIjoge1xuICAgIFwiYWlcIjogXCJeNi4wLjBcIixcbiAgICBcIndvcmtmbG93XCI6IFwiKlwiXG4gIH0sXG4gIFwicHVibGlzaENvbmZpZ1wiOiB7XG4gICAgXCJhY2Nlc3NcIjogXCJwdWJsaWNcIlxuICB9XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsYUFBd0I7QUFDeEIsU0FBb0I7QUFDcEIsV0FBc0I7OztBQ0Z0QjtBQUFBLEVBQ0UsTUFBUTtBQUFBLEVBQ1IsU0FBVztBQUFBLEVBQ1gsTUFBUTtBQUFBLEVBQ1IsUUFBVTtBQUFBLEVBQ1YsT0FBUztBQUFBLEVBQ1QsYUFBZTtBQUFBLEVBQ2YsU0FBVztBQUFBLEVBQ1gsT0FBUztBQUFBLElBQ1A7QUFBQSxFQUNGO0FBQUEsRUFDQSxTQUFXO0FBQUEsSUFDVCxLQUFLO0FBQUEsTUFDSCxPQUFTO0FBQUEsTUFDVCxRQUFVO0FBQUEsTUFDVixTQUFXO0FBQUEsSUFDYjtBQUFBLElBQ0EsVUFBVTtBQUFBLE1BQ1IsT0FBUztBQUFBLE1BQ1QsUUFBVTtBQUFBLE1BQ1YsU0FBVztBQUFBLElBQ2I7QUFBQSxJQUNBLGlCQUFpQjtBQUFBLE1BQ2YsT0FBUztBQUFBLE1BQ1QsUUFBVTtBQUFBLE1BQ1YsU0FBVztBQUFBLElBQ2I7QUFBQSxJQUNBLFlBQVk7QUFBQSxN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
|
|
345
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL25leHQvaW5kZXgudHMiLCAiLi4vcGFja2FnZS5qc29uIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyJpbXBvcnQgKiBhcyBjcnlwdG8gZnJvbSBcIm5vZGU6Y3J5cHRvXCI7XG5pbXBvcnQgKiBhcyBmcyBmcm9tIFwibm9kZTpmc1wiO1xuaW1wb3J0ICogYXMgcGF0aCBmcm9tIFwibm9kZTpwYXRoXCI7XG5pbXBvcnQgdHlwZSB7IE5leHRDb25maWcgfSBmcm9tIFwibmV4dFwiO1xuaW1wb3J0IHBrZyBmcm9tIFwiLi4vLi4vcGFja2FnZS5qc29uXCI7XG5cbmV4cG9ydCB0eXBlIFdpdGhBZ2VudENvbmZpZyA9IHtcbiAgLyoqIEVuYWJsZSBkZWJ1ZyBsb2dnaW5nIGZvciB0aGUgTmV4dC5qcyBsb2FkZXIgKGFnZW50IGRldGVjdGlvbiwgZmlsZSBnZW5lcmF0aW9uKS4gKi9cbiAgZGVidWc/OiBib29sZWFuO1xufTtcblxuY29uc3QgUEFDS0FHRV9OQU1FID0gcGtnLm5hbWU7XG5jb25zdCBBR0VOVF9QUk9UT0NPTF9WRVJTSU9OID0gXCJ2MVwiO1xuY29uc3QgRklMRV9FWFRfUkVHRVggPSAvXFwuKHRzfHRzeHxqc3xqc3gpJC87XG5jb25zdCBBR0VOVF9FWFBPUlRfUkVHRVggPSAvZXhwb3J0XFxzK2NvbnN0XFxzKyhcXHcrKVxccyo9XFxzKmFnZW50XFxzKlxcKC9nO1xuY29uc3QgREVGQVVMVF9XT1JLRkxPV19ESVJTID0gW1wicGFnZXNcIiwgXCJhcHBcIiwgXCJzcmMvcGFnZXNcIiwgXCJzcmMvYXBwXCJdO1xuXG50eXBlIERldGVjdGVkQWdlbnQgPSB7XG4gIGV4cG9ydE5hbWU6IHN0cmluZztcbiAgZmlsZVBhdGg6IHN0cmluZztcbiAgLyoqIFVuaXF1ZSBpZGVudGlmaWVyOiBleHBvcnROYW1lIG9yIGV4cG9ydE5hbWVfaGFzaCBpZiBkdXBsaWNhdGVzIGV4aXN0ICovXG4gIHVuaXF1ZUlkOiBzdHJpbmc7XG59O1xuXG5mdW5jdGlvbiBzaG9ydEhhc2goc3RyOiBzdHJpbmcpOiBzdHJpbmcge1xuICBsZXQgaGFzaCA9IDA7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgc3RyLmxlbmd0aDsgaSsrKSB7XG4gICAgY29uc3QgY2hhciA9IHN0ci5jaGFyQ29kZUF0KGkpO1xuICAgIC8vIGJpb21lLWlnbm9yZSBsaW50L3N1c3BpY2lvdXMvbm9CaXR3aXNlT3BlcmF0b3JzOiBpbnRlbnRpb25hbCBoYXNoIGNvbXB1dGF0aW9uXG4gICAgaGFzaCA9IChoYXNoIDw8IDUpIC0gaGFzaCArIGNoYXI7XG4gICAgLy8gYmlvbWUtaWdub3JlIGxpbnQvc3VzcGljaW91cy9ub0JpdHdpc2VPcGVyYXRvcnM6IGNvbnZlcnQgdG8gMzItYml0IGludGVnZXJcbiAgICBoYXNoICY9IGhhc2g7XG4gIH1cbiAgcmV0dXJuIE1hdGguYWJzKGhhc2gpLnRvU3RyaW5nKDM2KS5zbGljZSgwLCA2KTtcbn1cblxuZnVuY3Rpb24gaGFzTmV4dEFwcExheW91dChkaXI6IHN0cmluZyk6IGJvb2xlYW4ge1xuICByZXR1cm4gW1wibGF5b3V0LnRzeFwiLCBcImxheW91dC50c1wiLCBcImxheW91dC5qc1wiLCBcImxheW91dC5qc3hcIl0uc29tZSgoZikgPT5cbiAgICBmcy5leGlzdHNTeW5jKHBhdGguam9pbihkaXIsIGYpKVxuICApO1xufVxuXG4vKipcbiAqIERldGVjdHMgd2hldGhlciB0aGUgcHJvamVjdCB1c2VzIHNyYy9hcHAgb3IgYXBwIGRpcmVjdG9yeSBzdHJ1Y3R1cmVcbiAqIGJ5IGNoZWNraW5nIHdoaWNoIGRpcmVjdG9yeSBjb250YWlucyBhIE5leHQuanMgbGF5b3V0IGZpbGUuXG4gKiBSZXR1cm5zIHRoZSBhcHAgZGlyZWN0b3J5IHBhdGggcmVsYXRpdmUgdG8gY3dkLlxuICovXG5mdW5jdGlvbiBnZXRBcHBEaXIoY3dkOiBzdHJpbmcpOiBzdHJpbmcge1xuICBjb25zdCBzcmNBcHBEaXIgPSBwYXRoLmpvaW4oY3dkLCBcInNyY1wiLCBcImFwcFwiKTtcbiAgY29uc3Qgcm9vdEFwcERpciA9IHBhdGguam9pbihjd2QsIFwiYXBwXCIpO1xuXG4gIGlmIChoYXNOZXh0QXBwTGF5b3V0KHNyY0FwcERpcikpIHtcbiAgICByZXR1cm4gXCJzcmMvYXBwXCI7XG4gIH1cbiAgaWYgKGhhc05leHRBcHBMYXlvdXQocm9vdEFwcERpcikpIHtcbiAgICByZXR1cm4gXCJhcHBcIjtcbiAgfVxuXG4gIC8qKlxuICAgKiBGYWxsYmFjayB3aGVuIG5laXRoZXIgZGlyZWN0b3J5IGhhcyBhIGxheW91dCBmaWxlIHlldFxuICAgKiAoZS5nLiBmcmVzaCBwcm9qZWN0KS4gUHJlZmVyIHNyYy9hcHAgaWYgdGhlIGRpcmVjdG9yeSBleGlzdHMuXG4gICAqL1xuICBpZiAoZnMuZXhpc3RzU3luYyhzcmNBcHBEaXIpKSB7XG4gICAgcmV0dXJuIFwic3JjL2FwcFwiO1xuICB9XG4gIHJldHVybiBcImFwcFwiO1xufVxuXG4vKipcbiAqIFNjYW5zIGZvciBhZ2VudCBleHBvcnRzIGluIHRoZSBwcm9qZWN0LlxuICovXG5mdW5jdGlvbiBkZXRlY3RBZ2VudHMoY3dkOiBzdHJpbmcsIGRlYnVnOiBib29sZWFuKTogRGV0ZWN0ZWRBZ2VudFtdIHtcbiAgY29uc3QgYWdlbnRzOiBEZXRlY3RlZEFnZW50W10gPSBbXTtcblxuICBjb25zdCBkaXJzVG9TY2FuID0gW3BhdGguam9pbihjd2QsIFwic3JjXCIpLCBjd2RdO1xuXG4gIGZ1bmN0aW9uIHNjYW5EaXIoZGlyOiBzdHJpbmcpIHtcbiAgICBpZiAoIWZzLmV4aXN0c1N5bmMoZGlyKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGVudHJpZXMgPSBmcy5yZWFkZGlyU3luYyhkaXIsIHsgd2l0aEZpbGVUeXBlczogdHJ1ZSB9KTtcbiAgICBmb3IgKGNvbnN0IGVudHJ5IG9mIGVudHJpZXMpIHtcbiAgICAgIGNvbnN0IGZ1bGxQYXRoID0gcGF0aC5qb2luKGRpciwgZW50cnkubmFtZSk7XG4gICAgICBpZiAoXG4gICAgICAgIGVudHJ5LmlzRGlyZWN0b3J5KCkgJiZcbiAgICAgICAgIWVudHJ5Lm5hbWUuc3RhcnRzV2l0aChcIi5cIikgJiZcbiAgICAgICAgZW50cnkubmFtZSAhPT0gXCJub2RlX21vZHVsZXNcIiAmJlxuICAgICAgICBlbnRyeS5uYW1lICE9PSBcInNyY1wiXG4gICAgICApIHtcbiAgICAgICAgc2NhbkRpcihmdWxsUGF0aCk7XG4gICAgICB9IGVsc2UgaWYgKGVudHJ5LmlzRmlsZSgpICYmIEZJTEVfRVhUX1JFR0VYLnRlc3QoZW50cnkubmFtZSkpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjb25zdCBjb250ZW50ID0gZnMucmVhZEZpbGVTeW5jKGZ1bGxQYXRoLCBcInV0Zi04XCIpO1xuICAgICAgICAgIGlmIChjb250ZW50LmluY2x1ZGVzKFBBQ0tBR0VfTkFNRSkgJiYgY29udGVudC5pbmNsdWRlcyhcImFnZW50KFwiKSkge1xuICAgICAgICAgICAgLy8gU3RyaXAgc2luZ2xlLWxpbmUgY29tbWVudHMgYW5kIGJsb2NrIGNvbW1lbnRzIHRvIGF2b2lkXG4gICAgICAgICAgICAvLyBtYXRjaGluZyBjb21tZW50ZWQtb3V0IGFnZW50IGV4cG9ydHNcbiAgICAgICAgICAgIGNvbnN0IHN0cmlwcGVkID0gY29udGVudFxuICAgICAgICAgICAgICAucmVwbGFjZSgvXFwvXFwvLiokL2dtLCBcIlwiKVxuICAgICAgICAgICAgICAucmVwbGFjZSgvXFwvXFwqW1xcc1xcU10qP1xcKlxcLy9nLCBcIlwiKTtcbiAgICAgICAgICAgIGNvbnN0IGV4cG9ydE1hdGNoZXMgPSBzdHJpcHBlZC5tYXRjaEFsbChBR0VOVF9FWFBPUlRfUkVHRVgpO1xuICAgICAgICAgICAgY29uc3Qgc2VlbiA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICAgICAgICAgICAgZm9yIChjb25zdCBtYXRjaCBvZiBleHBvcnRNYXRjaGVzKSB7XG4gICAgICAgICAgICAgIGlmIChzZWVuLmhhcyhtYXRjaFsxXSkpIHtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBzZWVuLmFkZChtYXRjaFsxXSk7XG4gICAgICAgICAgICAgIGFnZW50cy5wdXNoKHtcbiAgICAgICAgICAgICAgICBleHBvcnROYW1lOiBtYXRjaFsxXSxcbiAgICAgICAgICAgICAgICBmaWxlUGF0aDogZnVsbFBhdGgsXG4gICAgICAgICAgICAgICAgdW5pcXVlSWQ6IFwiXCIsIC8vIFdpbGwgYmUgc2V0IGFmdGVyIGFsbCBhZ2VudHMgYXJlIGZvdW5kXG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICBpZiAoZGVidWcpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgICAgICAgICAgIGBbd2l0aEFnZW50XSBGb3VuZCBhZ2VudDogJHttYXRjaFsxXX0gaW4gJHtmdWxsUGF0aH1gXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSBjYXRjaCB7XG4gICAgICAgICAgLy8gSWdub3JlIHJlYWQgZXJyb3JzXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBmb3IgKGNvbnN0IGRpciBvZiBkaXJzVG9TY2FuKSB7XG4gICAgc2NhbkRpcihkaXIpO1xuICB9XG5cbiAgLy8gQXNzaWduIHVuaXF1ZSBJRHMgLSBhZGQgaGFzaCBzdWZmaXggaWYgZHVwbGljYXRlIGV4cG9ydCBuYW1lcyBleGlzdFxuICBjb25zdCBuYW1lQ291bnRzID0gbmV3IE1hcDxzdHJpbmcsIG51bWJlcj4oKTtcbiAgZm9yIChjb25zdCBhZ2VudCBvZiBhZ2VudHMpIHtcbiAgICBuYW1lQ291bnRzLnNldChcbiAgICAgIGFnZW50LmV4cG9ydE5hbWUsXG4gICAgICAobmFtZUNvdW50cy5nZXQoYWdlbnQuZXhwb3J0TmFtZSkgfHwgMCkgKyAxXG4gICAgKTtcbiAgfVxuXG4gIGZvciAoY29uc3QgYWdlbnQgb2YgYWdlbnRzKSB7XG4gICAgY29uc3QgY291bnQgPSBuYW1lQ291bnRzLmdldChhZ2VudC5leHBvcnROYW1lKSA/PyAwO1xuICAgIGlmIChjb3VudCA+IDEpIHtcbiAgICAgIGFnZW50LnVuaXF1ZUlkID0gYCR7YWdlbnQuZXhwb3J0TmFtZX1fJHtzaG9ydEhhc2goYWdlbnQuZmlsZVBhdGgpfWA7XG4gICAgfSBlbHNlIHtcbiAgICAgIGFnZW50LnVuaXF1ZUlkID0gYWdlbnQuZXhwb3J0TmFtZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gYWdlbnRzO1xufVxuXG4vKipcbiAqIEdlbmVyYXRlcyBhbGwgYWdlbnQgZmlsZXMgaW4gLndlbGwta25vd24vYWdlbnQvdjEvOlxuICogLSBzdGVwcy5qczogUlBDIHN0ZXAgZnVuY3Rpb25zIHdpdGggXCJ1c2Ugc3RlcFwiXG4gKiAtIHJvdXRlLmpzOiB0cmlnZ2VycyB3b3JrZmxvdyBkaXNjb3ZlcnlcbiAqL1xuZnVuY3Rpb24gZ2VuZXJhdGVBZ2VudEZpbGVzKFxuICBhZ2VudHM6IERldGVjdGVkQWdlbnRbXSxcbiAgb3V0cHV0RGlyOiBzdHJpbmcsXG4gIF9jd2Q6IHN0cmluZyxcbiAgZGVidWc6IGJvb2xlYW5cbik6IHZvaWQge1xuICBpZiAoYWdlbnRzLmxlbmd0aCA9PT0gMCkge1xuICAgIGlmIChkZWJ1Zykge1xuICAgICAgY29uc29sZS5sb2coXCJbd2l0aEFnZW50XSBObyBhZ2VudHMgZm91bmQsIHNraXBwaW5nIGdlbmVyYXRpb25cIik7XG4gICAgfVxuICAgIHJldHVybjtcbiAgfVxuXG4gIGlmICghZnMuZXhpc3RzU3luYyhvdXRwdXREaXIpKSB7XG4gICAgZnMubWtkaXJTeW5jKG91dHB1dERpciwgeyByZWN1cnNpdmU6IHRydWUgfSk7XG4gIH1cblxuICAvKipcbiAgICogR2VuZXJhdGUgc3RlcCBmdW5jdGlvbnMgdGhhdCB1c2UgZHluYW1pYyBpbXBvcnQuXG4gICAqIER5bmFtaWMgaW1wb3J0IGVuc3VyZXMgdGhlIGFnZW50IG1vZHVsZSBsb2FkcyAoaW5jbHVkaW5nIGxvYWRlci1pbmplY3RlZCBpbml0KVxuICAgKiB3aGVuIHRoZSBzdGVwIHJ1bnMgaW4gd29ya2Zsb3cgY29udGV4dCwgYXZvaWRpbmcgdGhlIFwibm90IGluaXRpYWxpemVkXCIgZXJyb3IuXG4gICAqXG4gICAqIFVzZXMgdW5pcXVlSWQgZm9yIGZ1bmN0aW9uIG5hbWVzIHRvIGhhbmRsZSBkdXBsaWNhdGUgZXhwb3J0IG5hbWVzIGFjcm9zcyBmaWxlcy5cbiAgICovXG4gIGNvbnN0IHJwY0Z1bmN0aW9ucyA9IGFnZW50c1xuICAgIC5tYXAoKGEpID0+IHtcbiAgICAgIC8vIENhbGN1bGF0ZSByZWxhdGl2ZSBwYXRoIGZyb20gc3RlcHMuanMgdG8gdGhlIGFnZW50IGZpbGVcbiAgICAgIGxldCBhZ2VudFJlbFBhdGggPSBwYXRoXG4gICAgICAgIC5yZWxhdGl2ZShvdXRwdXREaXIsIGEuZmlsZVBhdGgpXG4gICAgICAgIC5yZXBsYWNlKC9cXFxcL2csIFwiL1wiKTtcblxuICAgICAgaWYgKCFhZ2VudFJlbFBhdGguc3RhcnRzV2l0aChcIi5cIikpIHtcbiAgICAgICAgYWdlbnRSZWxQYXRoID0gYC4vJHthZ2VudFJlbFBhdGh9YDtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGBcbmV4cG9ydCBjb25zdCAke2EudW5pcXVlSWR9UnBjID0gYXN5bmMgKHBhcmFtcykgPT4ge1xuICBcInVzZSBzdGVwXCI7XG4gIGNvbnN0IHsgJHthLmV4cG9ydE5hbWV9IH0gPSBhd2FpdCBpbXBvcnQoXCIke2FnZW50UmVsUGF0aH1cIik7XG4gIGNvbnN0IHJlcyA9IGF3YWl0ICR7YS5leHBvcnROYW1lfS5oYW5kbGVyKHBhcmFtcyk7XG4gIGlmIChyZXMgaW5zdGFuY2VvZiBSZXNwb25zZSkge1xuICAgIHJldHVybiByZXMuanNvbigpO1xuICB9XG4gIHJldHVybiByZXM7XG59O2A7XG4gICAgfSlcbiAgICAuam9pbihcIlxcblwiKTtcblxuICAvKipcbiAgICogSW5pdCBmdW5jdGlvbnMgd2lyZSB1cCBhZ2VudC5ycGMgaW4gdGhlIG1haW4gYXBwIGNvbnRleHQuXG4gICAqIFVzZXMgZXhwb3J0TmFtZSBmb3IgdGhlIGZ1bmN0aW9uIG5hbWUgKGxvYWRlciBtYXRjaGVzIGJ5IGV4cG9ydCBuYW1lKSxcbiAgICogYnV0IHJlZmVyZW5jZXMgdW5pcXVlSWQgZm9yIHRoZSBScGMgZnVuY3Rpb24uXG4gICAqL1xuICBjb25zdCBpbml0RnVuY3Rpb25zID0gYWdlbnRzXG4gICAgLm1hcChcbiAgICAgIChhKSA9PiBgXG5leHBvcnQgZnVuY3Rpb24gX19pbml0JHthLmV4cG9ydE5hbWVbMF0udG9VcHBlckNhc2UoKX0ke2EuZXhwb3J0TmFtZS5zbGljZShcbiAgICAgICAgMVxuICAgICAgKX0oYWdlbnQpIHtcbiAgYWdlbnQucnBjID0gJHthLnVuaXF1ZUlkfVJwYztcbn1gXG4gICAgKVxuICAgIC5qb2luKFwiXFxuXCIpO1xuXG4gIGNvbnN0IHN0ZXBzQ29udGVudCA9IGAvLyBBdXRvLWdlbmVyYXRlZCBieSB3aXRoQWdlbnQgLSBkbyBub3QgZWRpdFxuJHtycGNGdW5jdGlvbnN9XG4ke2luaXRGdW5jdGlvbnN9XG5gO1xuXG4gIGNvbnN0IHN0ZXBzUGF0aCA9IHBhdGguam9pbihvdXRwdXREaXIsIFwic3RlcHMuanNcIik7XG4gIGZzLndyaXRlRmlsZVN5bmMoc3RlcHNQYXRoLCBzdGVwc0NvbnRlbnQpO1xuXG4gIC8qKlxuICAgKiBHZW5lcmF0ZSByb3V0ZS5qcyB0aGF0IGltcG9ydHMgc3RlcHMuanMuXG4gICAqIFRoaXMgZW5zdXJlcyB3b3JrZmxvdyBkaXNjb3ZlcnMgdGhlIFwidXNlIHN0ZXBcIiBmdW5jdGlvbnMuXG4gICAqIE5vIGFjdHVhbCBoYW5kbGVyIG5lZWRlZCAtIHN0b3JhZ2UgUlBDIHVzZXMgdGhlIHN0ZXAgZnVuY3Rpb24gZGlyZWN0bHkuXG4gICAqL1xuICBjb25zdCByb3V0ZUNvbnRlbnQgPSBgLy8gQXV0by1nZW5lcmF0ZWQgYnkgd2l0aEFnZW50IC0gdHJpZ2dlcnMgd29ya2Zsb3cgZGlzY292ZXJ5XG5pbXBvcnQgXCIuL3N0ZXBzLmpzXCI7XG5leHBvcnQgZnVuY3Rpb24gR0VUKCkge1xuICByZXR1cm4gbmV3IFJlc3BvbnNlKFwib2tcIik7XG59XG5gO1xuXG4gIGNvbnN0IHJvdXRlUGF0aCA9IHBhdGguam9pbihvdXRwdXREaXIsIFwicm91dGUuanNcIik7XG4gIGZzLndyaXRlRmlsZVN5bmMocm91dGVQYXRoLCByb3V0ZUNvbnRlbnQpO1xuXG4gIC8vIEFkZCAuZ2l0aWdub3JlXG4gIGNvbnN0IGdpdGlnbm9yZVBhdGggPSBwYXRoLmpvaW4ob3V0cHV0RGlyLCBcIi5naXRpZ25vcmVcIik7XG4gIGlmICghZnMuZXhpc3RzU3luYyhnaXRpZ25vcmVQYXRoKSkge1xuICAgIGZzLndyaXRlRmlsZVN5bmMoZ2l0aWdub3JlUGF0aCwgXCIqXFxuXCIpO1xuICB9XG5cbiAgaWYgKGRlYnVnKSB7XG4gICAgY29uc29sZS5sb2coYFt3aXRoQWdlbnRdIEdlbmVyYXRlZCBhZ2VudCBmaWxlcyBhdCAke291dHB1dERpcn1gKTtcbiAgfVxufVxuXG50eXBlIFR1cmJvcGFja0xvYWRlciA9IHN0cmluZyB8IHsgbG9hZGVyOiBzdHJpbmc7IG9wdGlvbnM/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB9O1xuXG50eXBlIFR1cmJvcGFja1J1bGUgPSB7XG4gIGxvYWRlcnM/OiBUdXJib3BhY2tMb2FkZXJbXTtcbiAgY29uZGl0aW9uPzoge1xuICAgIGFsbD86IHVua25vd25bXTtcbiAgICBhbnk/OiB1bmtub3duW107XG4gICAgcGF0aD86IFJlZ0V4cDtcbiAgICBjb250ZW50PzogUmVnRXhwO1xuICAgIG5vdD86IHVua25vd247XG4gIH07XG59O1xuXG50eXBlIFdvcmtmbG93Q29uZmlnRm4gPSAoXG4gIHBoYXNlOiBzdHJpbmcsXG4gIGN0eDogeyBkZWZhdWx0Q29uZmlnOiBOZXh0Q29uZmlnIH1cbikgPT4gUHJvbWlzZTxOZXh0Q29uZmlnPjtcblxudHlwZSBOZXh0Q29uZmlnSW5wdXQgPVxuICB8IE5leHRDb25maWdcbiAgfCAoKFxuICAgICAgcGhhc2U6IHN0cmluZyxcbiAgICAgIGN0eDogeyBkZWZhdWx0Q29uZmlnOiBOZXh0Q29uZmlnIH1cbiAgICApID0+IFByb21pc2U8TmV4dENvbmZpZz4pO1xuXG4vKipcbiAqIE5leHQuanMgcGx1Z2luIHRoYXQgY29uZmlndXJlcyBhZ2VudCBzdXBwb3J0LlxuICpcbiAqIC0gRGV0ZWN0cyBhZ2VudHMgYW5kIGdlbmVyYXRlcyBSUEMgc3RlcHMgd2l0aCBcInVzZSBzdGVwXCIgaW4gLndlbGwta25vd24vYWdlbnQvdjEvXG4gKiAtIEdlbmVyYXRlcyBBR0VOVF9TRUNSRVQgZm9yIHNlY3VyZSBSUEMgY2FsbHNcbiAqIC0gV3JhcHMgd2l0aFdvcmtmbG93IGZvciB3b3JrZmxvdyBzdXBwb3J0XG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHRzXG4gKiAvLyBuZXh0LmNvbmZpZy50c1xuICogaW1wb3J0IHsgd2l0aEFnZW50IH0gZnJvbSBcImV4cGVyaW1lbnRhbC1hZ2VudC9uZXh0XCI7XG4gKlxuICogLy8gT3B0aW9uIDE6IHdpdGhBZ2VudCBoYW5kbGVzIGV2ZXJ5dGhpbmcgKHJlY29tbWVuZGVkKVxuICogZXhwb3J0IGRlZmF1bHQgd2l0aEFnZW50KHt9KTtcbiAqXG4gKiAvLyBPcHRpb24gMjogQ29tcG9zZSB3aXRoIG90aGVyIHBsdWdpbnNcbiAqIGV4cG9ydCBkZWZhdWx0IHdpdGhBZ2VudCh3aXRoU29tZU90aGVyUGx1Z2luKHt9KSk7XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHdpdGhBZ2VudChcbiAgY29uZmlnT3JGbjogTmV4dENvbmZpZ0lucHV0LFxuICBhZ2VudENvbmZpZz86IFdpdGhBZ2VudENvbmZpZ1xuKTogV29ya2Zsb3dDb25maWdGbiB7XG4gIGNvbnN0IGRlYnVnID0gYWdlbnRDb25maWc/LmRlYnVnID8/IGZhbHNlO1xuICBjb25zdCBjd2QgPSBwcm9jZXNzLmN3ZCgpO1xuXG4gIC8vIERldGVjdCBhcHAgZGlyZWN0b3J5IHN0cnVjdHVyZSAoc3JjL2FwcCB2cyBhcHApXG4gIGNvbnN0IGFwcERpciA9IGdldEFwcERpcihjd2QpO1xuICBjb25zdCBhZ2VudERpciA9IGAke2FwcERpcn0vLndlbGwta25vd24vYWdlbnQvJHtBR0VOVF9QUk9UT0NPTF9WRVJTSU9OfWA7XG5cbiAgLy8gRGV0ZWN0IGFnZW50cyBhbmQgZ2VuZXJhdGUgZmlsZXMgRklSU1QgKGJlZm9yZSB3b3JrZmxvdyBkaXNjb3ZlcnMgdGhlbSlcbiAgY29uc3QgYWdlbnRzID0gZGV0ZWN0QWdlbnRzKGN3ZCwgZGVidWcpO1xuICBjb25zdCBvdXRwdXREaXIgPSBwYXRoLmpvaW4oY3dkLCBhZ2VudERpcik7XG4gIGdlbmVyYXRlQWdlbnRGaWxlcyhhZ2VudHMsIG91dHB1dERpciwgY3dkLCBkZWJ1Zyk7XG5cbiAgY29uc3QgYWdlbnRGaWxlUGF0aHMgPSBhZ2VudHMubWFwKChhKSA9PiBhLmZpbGVQYXRoKTtcbiAgY29uc3QgbG9hZGVyUGF0aCA9IHJlcXVpcmUucmVzb2x2ZShcIi4vbmV4dC9sb2FkZXJcIik7XG4gIGNvbnN0IGFic29sdXRlQXBwRGlyID0gcGF0aC5qb2luKGN3ZCwgYXBwRGlyKTtcbiAgY29uc3QgbG9hZGVyT3B0aW9ucyA9IHsgYXBwRGlyOiBhYnNvbHV0ZUFwcERpciwgZGVidWcgfTtcblxuICBpZiAoZGVidWcpIHtcbiAgICBjb25zb2xlLmxvZyhcIlt3aXRoQWdlbnRdIGxvYWRlciBwYXRoOlwiLCBsb2FkZXJQYXRoKTtcbiAgICBjb25zb2xlLmxvZyhcIlt3aXRoQWdlbnRdIGFnZW50IGZpbGVzOlwiLCBhZ2VudEZpbGVQYXRocyk7XG4gICAgY29uc29sZS5sb2coXCJbd2l0aEFnZW50XSBhZ2VudCBkaXI6XCIsIGFnZW50RGlyKTtcbiAgfVxuXG4gIC8vIEJ1aWxkIHJlZ2V4IHRvIG1hdGNoIGFnZW50IGZpbGUgcGF0aHNcbiAgY29uc3QgYWdlbnRQYXRoUmVnZXggPVxuICAgIGFnZW50RmlsZVBhdGhzLmxlbmd0aCA+IDBcbiAgICAgID8gbmV3IFJlZ0V4cChcbiAgICAgICAgICBgJHthZ2VudEZpbGVQYXRoc1xuICAgICAgICAgICAgLm1hcCgocCkgPT5cbiAgICAgICAgICAgICAgcGF0aFxuICAgICAgICAgICAgICAgIC5yZWxhdGl2ZShjd2QsIHApXG4gICAgICAgICAgICAgICAgLnJlcGxhY2UoL1xcXFwvZywgXCIvXCIpXG4gICAgICAgICAgICAgICAgLnJlcGxhY2UoL1suKis/XiR7fSgpfFtcXF1cXFxcXS9nLCBcIlxcXFwkJlwiKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLmpvaW4oXCJ8XCIpfSRgXG4gICAgICAgIClcbiAgICAgIDogbnVsbDtcblxuICAvKipcbiAgICogQWx3YXlzIHBhc3MgdGhyb3VnaCB3aXRoV29ya2Zsb3cgLSBpdCBoYW5kbGVzIGJvdGggTmV4dENvbmZpZyBhbmQgYXN5bmMgZnVuY3Rpb25zLlxuICAgKiBUaGlzIGVuc3VyZXMgd29ya2Zsb3cgaXMgYWx3YXlzIGNvbmZpZ3VyZWQsIHJlZ2FyZGxlc3Mgb2Ygd2hhdCB0aGUgdXNlciBwYXNzZWQuXG4gICAqL1xuICBsZXQgd2l0aFdvcmtmbG93OiAoXG4gICAgY29uZmlnOiBOZXh0Q29uZmlnSW5wdXQsXG4gICAgb3B0aW9ucz86IHsgd29ya2Zsb3dzPzogeyBkaXJzPzogc3RyaW5nW10gfSB9XG4gICkgPT4gV29ya2Zsb3dDb25maWdGbjtcbiAgdHJ5IHtcbiAgICB3aXRoV29ya2Zsb3cgPSByZXF1aXJlKFwid29ya2Zsb3cvbmV4dFwiKS53aXRoV29ya2Zsb3c7XG4gIH0gY2F0Y2gge1xuICAgIGNvbnNvbGUud2FybihcbiAgICAgIFwiW3dpdGhBZ2VudF0gd29ya2Zsb3cvbmV4dCBub3QgZm91bmQuIE1ha2Ugc3VyZSB3b3JrZmxvdyBpcyBpbnN0YWxsZWQuXCJcbiAgICApO1xuICAgIHJldHVybiB0eXBlb2YgY29uZmlnT3JGbiA9PT0gXCJmdW5jdGlvblwiXG4gICAgICA/IGNvbmZpZ09yRm5cbiAgICAgIDogYXN5bmMgKCkgPT4gY29uZmlnT3JGbjtcbiAgfVxuXG4gIGNvbnN0IGJhc2VDb25maWdGbiA9IHdpdGhXb3JrZmxvdyhjb25maWdPckZuLCB7XG4gICAgd29ya2Zsb3dzOiB7XG4gICAgICBkaXJzOiBbLi4uREVGQVVMVF9XT1JLRkxPV19ESVJTLCBhZ2VudERpcl0sXG4gICAgfSxcbiAgfSk7XG5cbiAgLyoqXG4gICAqIFJldHVybiBhIHdyYXBwZXIgdGhhdCBydW5zIEFGVEVSIHdvcmtmbG93IHByb2Nlc3NlcywgdGhlbiBhZGRzIG91ciBsb2FkZXIuXG4gICAqIFRoaXMgaXMgbmVjZXNzYXJ5IGJlY2F1c2Ugd29ya2Zsb3cgb3ZlcndyaXRlcyB0dXJib3BhY2sgcnVsZXMgLSB3ZSBuZWVkIHRvXG4gICAqIG1vZGlmeSB0aGVtIGFmdGVyIHdvcmtmbG93IGlzIGRvbmUuXG4gICAqL1xuICByZXR1cm4gYXN5bmMgKHBoYXNlLCBjdHgpID0+IHtcbiAgICBjb25zdCBuZXh0Q29uZmlnID0gYXdhaXQgYmFzZUNvbmZpZ0ZuKHBoYXNlLCBjdHgpO1xuXG4gICAgLy8gU2V0IHVwIEFHRU5UX1NFQ1JFVCBpZiBub3QgYWxyZWFkeSBzZXRcbiAgICBpZiAoIXByb2Nlc3MuZW52LkFHRU5UX1NFQ1JFVCkge1xuICAgICAgbmV4dENvbmZpZy5lbnYgPSB7XG4gICAgICAgIC4uLm5leHRDb25maWcuZW52LFxuICAgICAgICBBR0VOVF9TRUNSRVQ6IGNyeXB0by5yYW5kb21VVUlEKCksXG4gICAgICB9O1xuICAgICAgaWYgKGRlYnVnKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKFwiW3dpdGhBZ2VudF0gR2VuZXJhdGVkIEFHRU5UX1NFQ1JFVFwiKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoIWFnZW50UGF0aFJlZ2V4IHx8IGFnZW50RmlsZVBhdGhzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIG5leHRDb25maWc7XG4gICAgfVxuXG4gICAgLy8gTW9kaWZ5IHR1cmJvcGFjayBydWxlcyB0byBpbmNsdWRlIG91ciBsb2FkZXIgZm9yIGFnZW50IGZpbGVzXG4gICAgY29uc3QgcnVsZXMgPSAobmV4dENvbmZpZy50dXJib3BhY2s/LnJ1bGVzIHx8IHt9KSBhcyBSZWNvcmQ8XG4gICAgICBzdHJpbmcsXG4gICAgICBUdXJib3BhY2tSdWxlXG4gICAgPjtcblxuICAgIGZvciAoY29uc3Qga2V5IG9mIFtcIioudHNcIiwgXCIqLnRzeFwiLCBcIiouanNcIiwgXCIqLmpzeFwiXSkge1xuICAgICAgY29uc3QgZXhpc3RpbmdSdWxlID0gcnVsZXNba2V5XTtcbiAgICAgIGlmICghZXhpc3RpbmdSdWxlKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICAvKipcbiAgICAgICAqIFdvcmtmbG93J3MgcnVsZSBoYXM6IGNvbmRpdGlvbi5hbGwgPSBbeyBub3Q6IHBhdGggfSwgeyBjb250ZW50OiAvdXNlIHN0ZXB8Li4uLyB9XVxuICAgICAgICogV2Ugd2FudDogcnVuIGxvYWRlciBpZiB3b3JrZmxvdydzIGNvbmRpdGlvbnMgbWF0Y2ggT1IgaXQncyBhbiBhZ2VudCBmaWxlLlxuICAgICAgICogU28gd2Ugd3JhcCBpbjogY29uZGl0aW9uLmFueSA9IFtleGlzdGluZ0NvbmRpdGlvbiwgeyBwYXRoOiBhZ2VudFBhdGhSZWdleCB9XVxuICAgICAgICovXG4gICAgICBydWxlc1trZXldID0ge1xuICAgICAgICAuLi5leGlzdGluZ1J1bGUsXG4gICAgICAgIGxvYWRlcnM6IFt7IGxvYWRlcjogbG9hZGVyUGF0aCwgb3B0aW9uczogbG9hZGVyT3B0aW9ucyB9LCAuLi4oZXhpc3RpbmdSdWxlLmxvYWRlcnMgfHwgW10pXSxcbiAgICAgICAgY29uZGl0aW9uOiB7XG4gICAgICAgICAgYW55OiBbZXhpc3RpbmdSdWxlLmNvbmRpdGlvbiwgeyBwYXRoOiBhZ2VudFBhdGhSZWdleCB9XSxcbiAgICAgICAgfSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLy8gQWxzbyBjb25maWd1cmUgd2VicGFjayBmb3Igbm9uLXR1cmJvcGFjayBidWlsZHNcbiAgICBjb25zdCBleGlzdGluZ1dlYnBhY2sgPSBuZXh0Q29uZmlnLndlYnBhY2s7XG4gICAgbmV4dENvbmZpZy53ZWJwYWNrID0gKHdlYnBhY2tDb25maWcsIGNvbnRleHQpID0+IHtcbiAgICAgIHdlYnBhY2tDb25maWcubW9kdWxlLnJ1bGVzLnB1c2goe1xuICAgICAgICB0ZXN0OiAocmVzb3VyY2VQYXRoOiBzdHJpbmcpID0+IGFnZW50RmlsZVBhdGhzLmluY2x1ZGVzKHJlc291cmNlUGF0aCksXG4gICAgICAgIHVzZTogW3sgbG9hZGVyOiBsb2FkZXJQYXRoLCBvcHRpb25zOiBsb2FkZXJPcHRpb25zIH1dLFxuICAgICAgfSk7XG4gICAgICByZXR1cm4gZXhpc3RpbmdXZWJwYWNrPy4od2VicGFja0NvbmZpZywgY29udGV4dCkgPz8gd2VicGFja0NvbmZpZztcbiAgICB9O1xuXG4gICAgaWYgKGRlYnVnKSB7XG4gICAgICBjb25zb2xlLmxvZyhcIlt3aXRoQWdlbnRdIEFkZGVkIGFnZW50IGxvYWRlciB0byB0dXJib3BhY2sgcnVsZXNcIik7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5leHRDb25maWc7XG4gIH07XG59XG4iLCAie1xuICBcIm5hbWVcIjogXCJleHBlcmltZW50YWwtYWdlbnRcIixcbiAgXCJ2ZXJzaW9uXCI6IFwiMC4yLjNcIixcbiAgXCJtYWluXCI6IFwiLi9kaXN0L2luZGV4LmpzXCIsXG4gIFwibW9kdWxlXCI6IFwiLi9kaXN0L2luZGV4Lm1qc1wiLFxuICBcInR5cGVzXCI6IFwiLi9kaXN0L2luZGV4LmQudHNcIixcbiAgXCJzaWRlRWZmZWN0c1wiOiB0cnVlLFxuICBcImxpY2Vuc2VcIjogXCJNSVRcIixcbiAgXCJmaWxlc1wiOiBbXG4gICAgXCJkaXN0LyoqXCJcbiAgXSxcbiAgXCJleHBvcnRzXCI6IHtcbiAgICBcIi5cIjoge1xuICAgICAgXCJ0eXBlc1wiOiBcIi4vZGlzdC9pbmRleC5kLnRzXCIsXG4gICAgICBcImltcG9ydFwiOiBcIi4vZGlzdC9pbmRleC5tanNcIixcbiAgICAgIFwicmVxdWlyZVwiOiBcIi4vZGlzdC9pbmRleC5qc1wiXG4gICAgfSxcbiAgICBcIi4vbmV4dFwiOiB7XG4gICAgICBcInR5cGVzXCI6IFwiLi9kaXN0L25leHQuZC50c1wiLFxuICAgICAgXCJpbXBvcnRcIjogXCIuL2Rpc3QvbmV4dC5tanNcIixcbiAgICAgIFwicmVxdWlyZVwiOiBcIi4vZGlzdC9uZXh0LmpzXCJcbiAgICB9LFxuICAgIFwiLi9uZXh0L2xvYWRlclwiOiB7XG4gICAgICBcInR5cGVzXCI6IFwiLi9kaXN0L25leHQvbG9hZGVyLmQudHNcIixcbiAgICAgIFwiaW1wb3J0XCI6IFwiLi9kaXN0L25leHQvbG9hZGVyLm1qc1wiLFxuICAgICAgXCJyZXF1aXJlXCI6IFwiLi9kaXN0L25leHQvbG9hZGVyLmpzXCJcbiAgICB9LFxuICAgIFwiLi9jbGllbnRcIjoge1xuICAgICAgXCJ0eXBlc1wiOiBcIi4vZGlzdC9jbGllbnQuZC50c1wiLFxuICAgICAgXCJpbXBvcnRcIjogXCIuL2Rpc3QvY2xpZW50Lm1qc1wiLFxuICAgICAgXCJyZXF1aXJlXCI6IFwiLi9kaXN0L2NsaWVudC5qc1wiXG4gICAgfVxuICB9LFxuICBcInNjcmlwdHNcIjoge1xuICAgIFwiYnVpbGRcIjogXCJ0c3VwXCIsXG4gICAgXCJkZXZcIjogXCJ0c3VwIC0td2F0Y2hcIixcbiAgICBcImNsZWFuXCI6IFwicm0gLXJmIC50dXJibyAmJiBybSAtcmYgbm9kZV9tb2R1bGVzICYmIHJtIC1yZiBkaXN0XCIsXG4gICAgXCJyZWxlYXNlXCI6IFwicG5wbSBidWlsZCAmJiBucG0gcHVibGlzaFwiLFxuICAgIFwidHlwZWNoZWNrXCI6IFwidHNjIC0tbm9FbWl0XCIsXG4gICAgXCJ0ZXN0XCI6IFwidml0ZXN0IHJ1blwiLFxuICAgIFwidGVzdDp3YXRjaFwiOiBcInZpdGVzdFwiXG4gIH0sXG4gIFwiZGVwZW5kZW5jaWVzXCI6IHtcbiAgICBcIkBzd2MvY29yZVwiOiBcIl4xLjEwLjBcIixcbiAgICBcIkB2ZXJjZWwvb2lkY1wiOiBcIl4zLjEuMFwiLFxuICAgIFwiYmV0dGVyLWFsbFwiOiBcIl4wLjAuNVwiLFxuICAgIFwiZXJyb3JlXCI6IFwiXjAuOC4yXCIsXG4gICAgXCJmYXN0LWRlZXAtZXF1YWxcIjogXCJeMy4xLjNcIixcbiAgICBcIkB2ZXJjZWwvc2FuZGJveFwiOiBcIjEuNy4xXCIsXG4gICAgXCJ1bGlkXCI6IFwiXjMuMC4yXCIsXG4gICAgXCJ6b2RcIjogXCJeNC4zLjZcIlxuICB9LFxuICBcImRldkRlcGVuZGVuY2llc1wiOiB7XG4gICAgXCJAYWdlbnQvdHNjb25maWdcIjogXCJ3b3Jrc3BhY2U6KlwiLFxuICAgIFwiQHR5cGVzL25vZGVcIjogXCJeMjAuMTEuMjRcIixcbiAgICBcImRvdGVudlwiOiBcIl4xNy4yLjNcIixcbiAgICBcIm5leHRcIjogXCJeMTYuMC4wXCIsXG4gICAgXCJ0c3VwXCI6IFwiXjguMC4yXCIsXG4gICAgXCJ0eXBlc2NyaXB0XCI6IFwiNS41LjRcIixcbiAgICBcInZpdGVzdFwiOiBcIl4zLjAuMFwiXG4gIH0sXG4gIFwicGVlckRlcGVuZGVuY2llc1wiOiB7XG4gICAgXCJhaVwiOiBcIl42LjAuMFwiLFxuICAgIFwid29ya2Zsb3dcIjogXCIqXCJcbiAgfSxcbiAgXCJwdWJsaXNoQ29uZmlnXCI6IHtcbiAgICBcImFjY2Vzc1wiOiBcInB1YmxpY1wiXG4gIH1cbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxhQUF3QjtBQUN4QixTQUFvQjtBQUNwQixXQUFzQjs7O0FDRnRCO0FBQUEsRUFDRSxNQUFRO0FBQUEsRUFDUixTQUFXO0FBQUEsRUFDWCxNQUFRO0FBQUEsRUFDUixRQUFVO0FBQUEsRUFDVixPQUFTO0FBQUEsRUFDVCxhQUFlO0FBQUEsRUFDZixTQUFXO0FBQUEsRUFDWCxPQUFT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
|
package/dist/next.mjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
package_default
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-7M6UPURS.mjs";
|
|
4
4
|
import {
|
|
5
5
|
__require
|
|
6
6
|
} from "./chunk-BJTO5JO5.mjs";
|
|
@@ -170,6 +170,8 @@ function withAgent(configOrFn, agentConfig) {
|
|
|
170
170
|
generateAgentFiles(agents, outputDir, cwd, debug);
|
|
171
171
|
const agentFilePaths = agents.map((a) => a.filePath);
|
|
172
172
|
const loaderPath = __require.resolve("./next/loader");
|
|
173
|
+
const absoluteAppDir = path.join(cwd, appDir);
|
|
174
|
+
const loaderOptions = { appDir: absoluteAppDir, debug };
|
|
173
175
|
if (debug) {
|
|
174
176
|
console.log("[withAgent] loader path:", loaderPath);
|
|
175
177
|
console.log("[withAgent] agent files:", agentFilePaths);
|
|
@@ -216,7 +218,7 @@ function withAgent(configOrFn, agentConfig) {
|
|
|
216
218
|
}
|
|
217
219
|
rules[key] = {
|
|
218
220
|
...existingRule,
|
|
219
|
-
loaders: [loaderPath, ...existingRule.loaders || []],
|
|
221
|
+
loaders: [{ loader: loaderPath, options: loaderOptions }, ...existingRule.loaders || []],
|
|
220
222
|
condition: {
|
|
221
223
|
any: [existingRule.condition, { path: agentPathRegex }]
|
|
222
224
|
}
|
|
@@ -226,7 +228,7 @@ function withAgent(configOrFn, agentConfig) {
|
|
|
226
228
|
nextConfig.webpack = (webpackConfig, context) => {
|
|
227
229
|
webpackConfig.module.rules.push({
|
|
228
230
|
test: (resourcePath) => agentFilePaths.includes(resourcePath),
|
|
229
|
-
use: [{ loader: loaderPath }]
|
|
231
|
+
use: [{ loader: loaderPath, options: loaderOptions }]
|
|
230
232
|
});
|
|
231
233
|
return existingWebpack?.(webpackConfig, context) ?? webpackConfig;
|
|
232
234
|
};
|
|
@@ -239,4 +241,4 @@ function withAgent(configOrFn, agentConfig) {
|
|
|
239
241
|
export {
|
|
240
242
|
withAgent
|
|
241
243
|
};
|
|
242
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL25leHQvaW5kZXgudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImltcG9ydCAqIGFzIGNyeXB0byBmcm9tIFwibm9kZTpjcnlwdG9cIjtcbmltcG9ydCAqIGFzIGZzIGZyb20gXCJub2RlOmZzXCI7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gXCJub2RlOnBhdGhcIjtcbmltcG9ydCB0eXBlIHsgTmV4dENvbmZpZyB9IGZyb20gXCJuZXh0XCI7XG5pbXBvcnQgcGtnIGZyb20gXCIuLi8uLi9wYWNrYWdlLmpzb25cIjtcblxuZXhwb3J0IHR5cGUgV2l0aEFnZW50Q29uZmlnID0ge1xuICAvKiogRW5hYmxlIGRlYnVnIGxvZ2dpbmcgZm9yIHRoZSBOZXh0LmpzIGxvYWRlciAoYWdlbnQgZGV0ZWN0aW9uLCBmaWxlIGdlbmVyYXRpb24pLiAqL1xuICBkZWJ1Zz86IGJvb2xlYW47XG59O1xuXG5jb25zdCBQQUNLQUdFX05BTUUgPSBwa2cubmFtZTtcbmNvbnN0IEFHRU5UX1BST1RPQ09MX1ZFUlNJT04gPSBcInYxXCI7XG5jb25zdCBGSUxFX0VYVF9SRUdFWCA9IC9cXC4odHN8dHN4fGpzfGpzeCkkLztcbmNvbnN0IEFHRU5UX0VYUE9SVF9SRUdFWCA9IC9leHBvcnRcXHMrY29uc3RcXHMrKFxcdyspXFxzKj1cXHMqYWdlbnRcXHMqXFwoL2c7XG5jb25zdCBERUZBVUxUX1dPUktGTE9XX0RJUlMgPSBbXCJwYWdlc1wiLCBcImFwcFwiLCBcInNyYy9wYWdlc1wiLCBcInNyYy9hcHBcIl07XG5cbnR5cGUgRGV0ZWN0ZWRBZ2VudCA9IHtcbiAgZXhwb3J0TmFtZTogc3RyaW5nO1xuICBmaWxlUGF0aDogc3RyaW5nO1xuICAvKiogVW5pcXVlIGlkZW50aWZpZXI6IGV4cG9ydE5hbWUgb3IgZXhwb3J0TmFtZV9oYXNoIGlmIGR1cGxpY2F0ZXMgZXhpc3QgKi9cbiAgdW5pcXVlSWQ6IHN0cmluZztcbn07XG5cbmZ1bmN0aW9uIHNob3J0SGFzaChzdHI6IHN0cmluZyk6IHN0cmluZyB7XG4gIGxldCBoYXNoID0gMDtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBzdHIubGVuZ3RoOyBpKyspIHtcbiAgICBjb25zdCBjaGFyID0gc3RyLmNoYXJDb2RlQXQoaSk7XG4gICAgLy8gYmlvbWUtaWdub3JlIGxpbnQvc3VzcGljaW91cy9ub0JpdHdpc2VPcGVyYXRvcnM6IGludGVudGlvbmFsIGhhc2ggY29tcHV0YXRpb25cbiAgICBoYXNoID0gKGhhc2ggPDwgNSkgLSBoYXNoICsgY2hhcjtcbiAgICAvLyBiaW9tZS1pZ25vcmUgbGludC9zdXNwaWNpb3VzL25vQml0d2lzZU9wZXJhdG9yczogY29udmVydCB0byAzMi1iaXQgaW50ZWdlclxuICAgIGhhc2ggJj0gaGFzaDtcbiAgfVxuICByZXR1cm4gTWF0aC5hYnMoaGFzaCkudG9TdHJpbmcoMzYpLnNsaWNlKDAsIDYpO1xufVxuXG5mdW5jdGlvbiBoYXNOZXh0QXBwTGF5b3V0KGRpcjogc3RyaW5nKTogYm9vbGVhbiB7XG4gIHJldHVybiBbXCJsYXlvdXQudHN4XCIsIFwibGF5b3V0LnRzXCIsIFwibGF5b3V0LmpzXCIsIFwibGF5b3V0LmpzeFwiXS5zb21lKChmKSA9PlxuICAgIGZzLmV4aXN0c1N5bmMocGF0aC5qb2luKGRpciwgZikpXG4gICk7XG59XG5cbi8qKlxuICogRGV0ZWN0cyB3aGV0aGVyIHRoZSBwcm9qZWN0IHVzZXMgc3JjL2FwcCBvciBhcHAgZGlyZWN0b3J5IHN0cnVjdHVyZVxuICogYnkgY2hlY2tpbmcgd2hpY2ggZGlyZWN0b3J5IGNvbnRhaW5zIGEgTmV4dC5qcyBsYXlvdXQgZmlsZS5cbiAqIFJldHVybnMgdGhlIGFwcCBkaXJlY3RvcnkgcGF0aCByZWxhdGl2ZSB0byBjd2QuXG4gKi9cbmZ1bmN0aW9uIGdldEFwcERpcihjd2Q6IHN0cmluZyk6IHN0cmluZyB7XG4gIGNvbnN0IHNyY0FwcERpciA9IHBhdGguam9pbihjd2QsIFwic3JjXCIsIFwiYXBwXCIpO1xuICBjb25zdCByb290QXBwRGlyID0gcGF0aC5qb2luKGN3ZCwgXCJhcHBcIik7XG5cbiAgaWYgKGhhc05leHRBcHBMYXlvdXQoc3JjQXBwRGlyKSkge1xuICAgIHJldHVybiBcInNyYy9hcHBcIjtcbiAgfVxuICBpZiAoaGFzTmV4dEFwcExheW91dChyb290QXBwRGlyKSkge1xuICAgIHJldHVybiBcImFwcFwiO1xuICB9XG5cbiAgLyoqXG4gICAqIEZhbGxiYWNrIHdoZW4gbmVpdGhlciBkaXJlY3RvcnkgaGFzIGEgbGF5b3V0IGZpbGUgeWV0XG4gICAqIChlLmcuIGZyZXNoIHByb2plY3QpLiBQcmVmZXIgc3JjL2FwcCBpZiB0aGUgZGlyZWN0b3J5IGV4aXN0cy5cbiAgICovXG4gIGlmIChmcy5leGlzdHNTeW5jKHNyY0FwcERpcikpIHtcbiAgICByZXR1cm4gXCJzcmMvYXBwXCI7XG4gIH1cbiAgcmV0dXJuIFwiYXBwXCI7XG59XG5cbi8qKlxuICogU2NhbnMgZm9yIGFnZW50IGV4cG9ydHMgaW4gdGhlIHByb2plY3QuXG4gKi9cbmZ1bmN0aW9uIGRldGVjdEFnZW50cyhjd2Q6IHN0cmluZywgZGVidWc6IGJvb2xlYW4pOiBEZXRlY3RlZEFnZW50W10ge1xuICBjb25zdCBhZ2VudHM6IERldGVjdGVkQWdlbnRbXSA9IFtdO1xuXG4gIGNvbnN0IGRpcnNUb1NjYW4gPSBbcGF0aC5qb2luKGN3ZCwgXCJzcmNcIiksIGN3ZF07XG5cbiAgZnVuY3Rpb24gc2NhbkRpcihkaXI6IHN0cmluZykge1xuICAgIGlmICghZnMuZXhpc3RzU3luYyhkaXIpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgZW50cmllcyA9IGZzLnJlYWRkaXJTeW5jKGRpciwgeyB3aXRoRmlsZVR5cGVzOiB0cnVlIH0pO1xuICAgIGZvciAoY29uc3QgZW50cnkgb2YgZW50cmllcykge1xuICAgICAgY29uc3QgZnVsbFBhdGggPSBwYXRoLmpvaW4oZGlyLCBlbnRyeS5uYW1lKTtcbiAgICAgIGlmIChcbiAgICAgICAgZW50cnkuaXNEaXJlY3RvcnkoKSAmJlxuICAgICAgICAhZW50cnkubmFtZS5zdGFydHNXaXRoKFwiLlwiKSAmJlxuICAgICAgICBlbnRyeS5uYW1lICE9PSBcIm5vZGVfbW9kdWxlc1wiICYmXG4gICAgICAgIGVudHJ5Lm5hbWUgIT09IFwic3JjXCJcbiAgICAgICkge1xuICAgICAgICBzY2FuRGlyKGZ1bGxQYXRoKTtcbiAgICAgIH0gZWxzZSBpZiAoZW50cnkuaXNGaWxlKCkgJiYgRklMRV9FWFRfUkVHRVgudGVzdChlbnRyeS5uYW1lKSkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGNvbnN0IGNvbnRlbnQgPSBmcy5yZWFkRmlsZVN5bmMoZnVsbFBhdGgsIFwidXRmLThcIik7XG4gICAgICAgICAgaWYgKGNvbnRlbnQuaW5jbHVkZXMoUEFDS0FHRV9OQU1FKSAmJiBjb250ZW50LmluY2x1ZGVzKFwiYWdlbnQoXCIpKSB7XG4gICAgICAgICAgICAvLyBTdHJpcCBzaW5nbGUtbGluZSBjb21tZW50cyBhbmQgYmxvY2sgY29tbWVudHMgdG8gYXZvaWRcbiAgICAgICAgICAgIC8vIG1hdGNoaW5nIGNvbW1lbnRlZC1vdXQgYWdlbnQgZXhwb3J0c1xuICAgICAgICAgICAgY29uc3Qgc3RyaXBwZWQgPSBjb250ZW50XG4gICAgICAgICAgICAgIC5yZXBsYWNlKC9cXC9cXC8uKiQvZ20sIFwiXCIpXG4gICAgICAgICAgICAgIC5yZXBsYWNlKC9cXC9cXCpbXFxzXFxTXSo/XFwqXFwvL2csIFwiXCIpO1xuICAgICAgICAgICAgY29uc3QgZXhwb3J0TWF0Y2hlcyA9IHN0cmlwcGVkLm1hdGNoQWxsKEFHRU5UX0VYUE9SVF9SRUdFWCk7XG4gICAgICAgICAgICBjb25zdCBzZWVuID0gbmV3IFNldDxzdHJpbmc+KCk7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IG1hdGNoIG9mIGV4cG9ydE1hdGNoZXMpIHtcbiAgICAgICAgICAgICAgaWYgKHNlZW4uaGFzKG1hdGNoWzFdKSkge1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHNlZW4uYWRkKG1hdGNoWzFdKTtcbiAgICAgICAgICAgICAgYWdlbnRzLnB1c2goe1xuICAgICAgICAgICAgICAgIGV4cG9ydE5hbWU6IG1hdGNoWzFdLFxuICAgICAgICAgICAgICAgIGZpbGVQYXRoOiBmdWxsUGF0aCxcbiAgICAgICAgICAgICAgICB1bmlxdWVJZDogXCJcIiwgLy8gV2lsbCBiZSBzZXQgYWZ0ZXIgYWxsIGFnZW50cyBhcmUgZm91bmRcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIGlmIChkZWJ1Zykge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICAgICAgICAgICAgYFt3aXRoQWdlbnRdIEZvdW5kIGFnZW50OiAke21hdGNoWzFdfSBpbiAke2Z1bGxQYXRofWBcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9IGNhdGNoIHtcbiAgICAgICAgICAvLyBJZ25vcmUgcmVhZCBlcnJvcnNcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGZvciAoY29uc3QgZGlyIG9mIGRpcnNUb1NjYW4pIHtcbiAgICBzY2FuRGlyKGRpcik7XG4gIH1cblxuICAvLyBBc3NpZ24gdW5pcXVlIElEcyAtIGFkZCBoYXNoIHN1ZmZpeCBpZiBkdXBsaWNhdGUgZXhwb3J0IG5hbWVzIGV4aXN0XG4gIGNvbnN0IG5hbWVDb3VudHMgPSBuZXcgTWFwPHN0cmluZywgbnVtYmVyPigpO1xuICBmb3IgKGNvbnN0IGFnZW50IG9mIGFnZW50cykge1xuICAgIG5hbWVDb3VudHMuc2V0KFxuICAgICAgYWdlbnQuZXhwb3J0TmFtZSxcbiAgICAgIChuYW1lQ291bnRzLmdldChhZ2VudC5leHBvcnROYW1lKSB8fCAwKSArIDFcbiAgICApO1xuICB9XG5cbiAgZm9yIChjb25zdCBhZ2VudCBvZiBhZ2VudHMpIHtcbiAgICBjb25zdCBjb3VudCA9IG5hbWVDb3VudHMuZ2V0KGFnZW50LmV4cG9ydE5hbWUpID8/IDA7XG4gICAgaWYgKGNvdW50ID4gMSkge1xuICAgICAgYWdlbnQudW5pcXVlSWQgPSBgJHthZ2VudC5leHBvcnROYW1lfV8ke3Nob3J0SGFzaChhZ2VudC5maWxlUGF0aCl9YDtcbiAgICB9IGVsc2Uge1xuICAgICAgYWdlbnQudW5pcXVlSWQgPSBhZ2VudC5leHBvcnROYW1lO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBhZ2VudHM7XG59XG5cbi8qKlxuICogR2VuZXJhdGVzIGFsbCBhZ2VudCBmaWxlcyBpbiAud2VsbC1rbm93bi9hZ2VudC92MS86XG4gKiAtIHN0ZXBzLmpzOiBSUEMgc3RlcCBmdW5jdGlvbnMgd2l0aCBcInVzZSBzdGVwXCJcbiAqIC0gcm91dGUuanM6IHRyaWdnZXJzIHdvcmtmbG93IGRpc2NvdmVyeVxuICovXG5mdW5jdGlvbiBnZW5lcmF0ZUFnZW50RmlsZXMoXG4gIGFnZW50czogRGV0ZWN0ZWRBZ2VudFtdLFxuICBvdXRwdXREaXI6IHN0cmluZyxcbiAgX2N3ZDogc3RyaW5nLFxuICBkZWJ1ZzogYm9vbGVhblxuKTogdm9pZCB7XG4gIGlmIChhZ2VudHMubGVuZ3RoID09PSAwKSB7XG4gICAgaWYgKGRlYnVnKSB7XG4gICAgICBjb25zb2xlLmxvZyhcIlt3aXRoQWdlbnRdIE5vIGFnZW50cyBmb3VuZCwgc2tpcHBpbmcgZ2VuZXJhdGlvblwiKTtcbiAgICB9XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgaWYgKCFmcy5leGlzdHNTeW5jKG91dHB1dERpcikpIHtcbiAgICBmcy5ta2RpclN5bmMob3V0cHV0RGlyLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZW5lcmF0ZSBzdGVwIGZ1bmN0aW9ucyB0aGF0IHVzZSBkeW5hbWljIGltcG9ydC5cbiAgICogRHluYW1pYyBpbXBvcnQgZW5zdXJlcyB0aGUgYWdlbnQgbW9kdWxlIGxvYWRzIChpbmNsdWRpbmcgbG9hZGVyLWluamVjdGVkIGluaXQpXG4gICAqIHdoZW4gdGhlIHN0ZXAgcnVucyBpbiB3b3JrZmxvdyBjb250ZXh0LCBhdm9pZGluZyB0aGUgXCJub3QgaW5pdGlhbGl6ZWRcIiBlcnJvci5cbiAgICpcbiAgICogVXNlcyB1bmlxdWVJZCBmb3IgZnVuY3Rpb24gbmFtZXMgdG8gaGFuZGxlIGR1cGxpY2F0ZSBleHBvcnQgbmFtZXMgYWNyb3NzIGZpbGVzLlxuICAgKi9cbiAgY29uc3QgcnBjRnVuY3Rpb25zID0gYWdlbnRzXG4gICAgLm1hcCgoYSkgPT4ge1xuICAgICAgLy8gQ2FsY3VsYXRlIHJlbGF0aXZlIHBhdGggZnJvbSBzdGVwcy5qcyB0byB0aGUgYWdlbnQgZmlsZVxuICAgICAgbGV0IGFnZW50UmVsUGF0aCA9IHBhdGhcbiAgICAgICAgLnJlbGF0aXZlKG91dHB1dERpciwgYS5maWxlUGF0aClcbiAgICAgICAgLnJlcGxhY2UoL1xcXFwvZywgXCIvXCIpO1xuXG4gICAgICBpZiAoIWFnZW50UmVsUGF0aC5zdGFydHNXaXRoKFwiLlwiKSkge1xuICAgICAgICBhZ2VudFJlbFBhdGggPSBgLi8ke2FnZW50UmVsUGF0aH1gO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gYFxuZXhwb3J0IGNvbnN0ICR7YS51bmlxdWVJZH1ScGMgPSBhc3luYyAocGFyYW1zKSA9PiB7XG4gIFwidXNlIHN0ZXBcIjtcbiAgY29uc3QgeyAke2EuZXhwb3J0TmFtZX0gfSA9IGF3YWl0IGltcG9ydChcIiR7YWdlbnRSZWxQYXRofVwiKTtcbiAgY29uc3QgcmVzID0gYXdhaXQgJHthLmV4cG9ydE5hbWV9LmhhbmRsZXIocGFyYW1zKTtcbiAgaWYgKHJlcyBpbnN0YW5jZW9mIFJlc3BvbnNlKSB7XG4gICAgcmV0dXJuIHJlcy5qc29uKCk7XG4gIH1cbiAgcmV0dXJuIHJlcztcbn07YDtcbiAgICB9KVxuICAgIC5qb2luKFwiXFxuXCIpO1xuXG4gIC8qKlxuICAgKiBJbml0IGZ1bmN0aW9ucyB3aXJlIHVwIGFnZW50LnJwYyBpbiB0aGUgbWFpbiBhcHAgY29udGV4dC5cbiAgICogVXNlcyBleHBvcnROYW1lIGZvciB0aGUgZnVuY3Rpb24gbmFtZSAobG9hZGVyIG1hdGNoZXMgYnkgZXhwb3J0IG5hbWUpLFxuICAgKiBidXQgcmVmZXJlbmNlcyB1bmlxdWVJZCBmb3IgdGhlIFJwYyBmdW5jdGlvbi5cbiAgICovXG4gIGNvbnN0IGluaXRGdW5jdGlvbnMgPSBhZ2VudHNcbiAgICAubWFwKFxuICAgICAgKGEpID0+IGBcbmV4cG9ydCBmdW5jdGlvbiBfX2luaXQke2EuZXhwb3J0TmFtZVswXS50b1VwcGVyQ2FzZSgpfSR7YS5leHBvcnROYW1lLnNsaWNlKFxuICAgICAgICAxXG4gICAgICApfShhZ2VudCkge1xuICBhZ2VudC5ycGMgPSAke2EudW5pcXVlSWR9UnBjO1xufWBcbiAgICApXG4gICAgLmpvaW4oXCJcXG5cIik7XG5cbiAgY29uc3Qgc3RlcHNDb250ZW50ID0gYC8vIEF1dG8tZ2VuZXJhdGVkIGJ5IHdpdGhBZ2VudCAtIGRvIG5vdCBlZGl0XG4ke3JwY0Z1bmN0aW9uc31cbiR7aW5pdEZ1bmN0aW9uc31cbmA7XG5cbiAgY29uc3Qgc3RlcHNQYXRoID0gcGF0aC5qb2luKG91dHB1dERpciwgXCJzdGVwcy5qc1wiKTtcbiAgZnMud3JpdGVGaWxlU3luYyhzdGVwc1BhdGgsIHN0ZXBzQ29udGVudCk7XG5cbiAgLyoqXG4gICAqIEdlbmVyYXRlIHJvdXRlLmpzIHRoYXQgaW1wb3J0cyBzdGVwcy5qcy5cbiAgICogVGhpcyBlbnN1cmVzIHdvcmtmbG93IGRpc2NvdmVycyB0aGUgXCJ1c2Ugc3RlcFwiIGZ1bmN0aW9ucy5cbiAgICogTm8gYWN0dWFsIGhhbmRsZXIgbmVlZGVkIC0gc3RvcmFnZSBSUEMgdXNlcyB0aGUgc3RlcCBmdW5jdGlvbiBkaXJlY3RseS5cbiAgICovXG4gIGNvbnN0IHJvdXRlQ29udGVudCA9IGAvLyBBdXRvLWdlbmVyYXRlZCBieSB3aXRoQWdlbnQgLSB0cmlnZ2VycyB3b3JrZmxvdyBkaXNjb3ZlcnlcbmltcG9ydCBcIi4vc3RlcHMuanNcIjtcbmV4cG9ydCBmdW5jdGlvbiBHRVQoKSB7XG4gIHJldHVybiBuZXcgUmVzcG9uc2UoXCJva1wiKTtcbn1cbmA7XG5cbiAgY29uc3Qgcm91dGVQYXRoID0gcGF0aC5qb2luKG91dHB1dERpciwgXCJyb3V0ZS5qc1wiKTtcbiAgZnMud3JpdGVGaWxlU3luYyhyb3V0ZVBhdGgsIHJvdXRlQ29udGVudCk7XG5cbiAgLy8gQWRkIC5naXRpZ25vcmVcbiAgY29uc3QgZ2l0aWdub3JlUGF0aCA9IHBhdGguam9pbihvdXRwdXREaXIsIFwiLmdpdGlnbm9yZVwiKTtcbiAgaWYgKCFmcy5leGlzdHNTeW5jKGdpdGlnbm9yZVBhdGgpKSB7XG4gICAgZnMud3JpdGVGaWxlU3luYyhnaXRpZ25vcmVQYXRoLCBcIipcXG5cIik7XG4gIH1cblxuICBpZiAoZGVidWcpIHtcbiAgICBjb25zb2xlLmxvZyhgW3dpdGhBZ2VudF0gR2VuZXJhdGVkIGFnZW50IGZpbGVzIGF0ICR7b3V0cHV0RGlyfWApO1xuICB9XG59XG5cbnR5cGUgVHVyYm9wYWNrUnVsZSA9IHtcbiAgbG9hZGVycz86IHN0cmluZ1tdO1xuICBjb25kaXRpb24/OiB7XG4gICAgYWxsPzogdW5rbm93bltdO1xuICAgIGFueT86IHVua25vd25bXTtcbiAgICBwYXRoPzogUmVnRXhwO1xuICAgIGNvbnRlbnQ/OiBSZWdFeHA7XG4gICAgbm90PzogdW5rbm93bjtcbiAgfTtcbn07XG5cbnR5cGUgV29ya2Zsb3dDb25maWdGbiA9IChcbiAgcGhhc2U6IHN0cmluZyxcbiAgY3R4OiB7IGRlZmF1bHRDb25maWc6IE5leHRDb25maWcgfVxuKSA9PiBQcm9taXNlPE5leHRDb25maWc+O1xuXG50eXBlIE5leHRDb25maWdJbnB1dCA9XG4gIHwgTmV4dENvbmZpZ1xuICB8ICgoXG4gICAgICBwaGFzZTogc3RyaW5nLFxuICAgICAgY3R4OiB7IGRlZmF1bHRDb25maWc6IE5leHRDb25maWcgfVxuICAgICkgPT4gUHJvbWlzZTxOZXh0Q29uZmlnPik7XG5cbi8qKlxuICogTmV4dC5qcyBwbHVnaW4gdGhhdCBjb25maWd1cmVzIGFnZW50IHN1cHBvcnQuXG4gKlxuICogLSBEZXRlY3RzIGFnZW50cyBhbmQgZ2VuZXJhdGVzIFJQQyBzdGVwcyB3aXRoIFwidXNlIHN0ZXBcIiBpbiAud2VsbC1rbm93bi9hZ2VudC92MS9cbiAqIC0gR2VuZXJhdGVzIEFHRU5UX1NFQ1JFVCBmb3Igc2VjdXJlIFJQQyBjYWxsc1xuICogLSBXcmFwcyB3aXRoV29ya2Zsb3cgZm9yIHdvcmtmbG93IHN1cHBvcnRcbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHNcbiAqIC8vIG5leHQuY29uZmlnLnRzXG4gKiBpbXBvcnQgeyB3aXRoQWdlbnQgfSBmcm9tIFwiZXhwZXJpbWVudGFsLWFnZW50L25leHRcIjtcbiAqXG4gKiAvLyBPcHRpb24gMTogd2l0aEFnZW50IGhhbmRsZXMgZXZlcnl0aGluZyAocmVjb21tZW5kZWQpXG4gKiBleHBvcnQgZGVmYXVsdCB3aXRoQWdlbnQoe30pO1xuICpcbiAqIC8vIE9wdGlvbiAyOiBDb21wb3NlIHdpdGggb3RoZXIgcGx1Z2luc1xuICogZXhwb3J0IGRlZmF1bHQgd2l0aEFnZW50KHdpdGhTb21lT3RoZXJQbHVnaW4oe30pKTtcbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gd2l0aEFnZW50KFxuICBjb25maWdPckZuOiBOZXh0Q29uZmlnSW5wdXQsXG4gIGFnZW50Q29uZmlnPzogV2l0aEFnZW50Q29uZmlnXG4pOiBXb3JrZmxvd0NvbmZpZ0ZuIHtcbiAgY29uc3QgZGVidWcgPSBhZ2VudENvbmZpZz8uZGVidWcgPz8gZmFsc2U7XG4gIGNvbnN0IGN3ZCA9IHByb2Nlc3MuY3dkKCk7XG5cbiAgLy8gRGV0ZWN0IGFwcCBkaXJlY3Rvcnkgc3RydWN0dXJlIChzcmMvYXBwIHZzIGFwcClcbiAgY29uc3QgYXBwRGlyID0gZ2V0QXBwRGlyKGN3ZCk7XG4gIGNvbnN0IGFnZW50RGlyID0gYCR7YXBwRGlyfS8ud2VsbC1rbm93bi9hZ2VudC8ke0FHRU5UX1BST1RPQ09MX1ZFUlNJT059YDtcblxuICAvLyBEZXRlY3QgYWdlbnRzIGFuZCBnZW5lcmF0ZSBmaWxlcyBGSVJTVCAoYmVmb3JlIHdvcmtmbG93IGRpc2NvdmVycyB0aGVtKVxuICBjb25zdCBhZ2VudHMgPSBkZXRlY3RBZ2VudHMoY3dkLCBkZWJ1Zyk7XG4gIGNvbnN0IG91dHB1dERpciA9IHBhdGguam9pbihjd2QsIGFnZW50RGlyKTtcbiAgZ2VuZXJhdGVBZ2VudEZpbGVzKGFnZW50cywgb3V0cHV0RGlyLCBjd2QsIGRlYnVnKTtcblxuICBjb25zdCBhZ2VudEZpbGVQYXRocyA9IGFnZW50cy5tYXAoKGEpID0+IGEuZmlsZVBhdGgpO1xuICBjb25zdCBsb2FkZXJQYXRoID0gcmVxdWlyZS5yZXNvbHZlKFwiLi9uZXh0L2xvYWRlclwiKTtcblxuICBpZiAoZGVidWcpIHtcbiAgICBjb25zb2xlLmxvZyhcIlt3aXRoQWdlbnRdIGxvYWRlciBwYXRoOlwiLCBsb2FkZXJQYXRoKTtcbiAgICBjb25zb2xlLmxvZyhcIlt3aXRoQWdlbnRdIGFnZW50IGZpbGVzOlwiLCBhZ2VudEZpbGVQYXRocyk7XG4gICAgY29uc29sZS5sb2coXCJbd2l0aEFnZW50XSBhZ2VudCBkaXI6XCIsIGFnZW50RGlyKTtcbiAgfVxuXG4gIC8vIEJ1aWxkIHJlZ2V4IHRvIG1hdGNoIGFnZW50IGZpbGUgcGF0aHNcbiAgY29uc3QgYWdlbnRQYXRoUmVnZXggPVxuICAgIGFnZW50RmlsZVBhdGhzLmxlbmd0aCA+IDBcbiAgICAgID8gbmV3IFJlZ0V4cChcbiAgICAgICAgICBgJHthZ2VudEZpbGVQYXRoc1xuICAgICAgICAgICAgLm1hcCgocCkgPT5cbiAgICAgICAgICAgICAgcGF0aFxuICAgICAgICAgICAgICAgIC5yZWxhdGl2ZShjd2QsIHApXG4gICAgICAgICAgICAgICAgLnJlcGxhY2UoL1xcXFwvZywgXCIvXCIpXG4gICAgICAgICAgICAgICAgLnJlcGxhY2UoL1suKis/XiR7fSgpfFtcXF1cXFxcXS9nLCBcIlxcXFwkJlwiKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLmpvaW4oXCJ8XCIpfSRgXG4gICAgICAgIClcbiAgICAgIDogbnVsbDtcblxuICAvKipcbiAgICogQWx3YXlzIHBhc3MgdGhyb3VnaCB3aXRoV29ya2Zsb3cgLSBpdCBoYW5kbGVzIGJvdGggTmV4dENvbmZpZyBhbmQgYXN5bmMgZnVuY3Rpb25zLlxuICAgKiBUaGlzIGVuc3VyZXMgd29ya2Zsb3cgaXMgYWx3YXlzIGNvbmZpZ3VyZWQsIHJlZ2FyZGxlc3Mgb2Ygd2hhdCB0aGUgdXNlciBwYXNzZWQuXG4gICAqL1xuICBsZXQgd2l0aFdvcmtmbG93OiAoXG4gICAgY29uZmlnOiBOZXh0Q29uZmlnSW5wdXQsXG4gICAgb3B0aW9ucz86IHsgd29ya2Zsb3dzPzogeyBkaXJzPzogc3RyaW5nW10gfSB9XG4gICkgPT4gV29ya2Zsb3dDb25maWdGbjtcbiAgdHJ5IHtcbiAgICB3aXRoV29ya2Zsb3cgPSByZXF1aXJlKFwid29ya2Zsb3cvbmV4dFwiKS53aXRoV29ya2Zsb3c7XG4gIH0gY2F0Y2gge1xuICAgIGNvbnNvbGUud2FybihcbiAgICAgIFwiW3dpdGhBZ2VudF0gd29ya2Zsb3cvbmV4dCBub3QgZm91bmQuIE1ha2Ugc3VyZSB3b3JrZmxvdyBpcyBpbnN0YWxsZWQuXCJcbiAgICApO1xuICAgIHJldHVybiB0eXBlb2YgY29uZmlnT3JGbiA9PT0gXCJmdW5jdGlvblwiXG4gICAgICA/IGNvbmZpZ09yRm5cbiAgICAgIDogYXN5bmMgKCkgPT4gY29uZmlnT3JGbjtcbiAgfVxuXG4gIGNvbnN0IGJhc2VDb25maWdGbiA9IHdpdGhXb3JrZmxvdyhjb25maWdPckZuLCB7XG4gICAgd29ya2Zsb3dzOiB7XG4gICAgICBkaXJzOiBbLi4uREVGQVVMVF9XT1JLRkxPV19ESVJTLCBhZ2VudERpcl0sXG4gICAgfSxcbiAgfSk7XG5cbiAgLyoqXG4gICAqIFJldHVybiBhIHdyYXBwZXIgdGhhdCBydW5zIEFGVEVSIHdvcmtmbG93IHByb2Nlc3NlcywgdGhlbiBhZGRzIG91ciBsb2FkZXIuXG4gICAqIFRoaXMgaXMgbmVjZXNzYXJ5IGJlY2F1c2Ugd29ya2Zsb3cgb3ZlcndyaXRlcyB0dXJib3BhY2sgcnVsZXMgLSB3ZSBuZWVkIHRvXG4gICAqIG1vZGlmeSB0aGVtIGFmdGVyIHdvcmtmbG93IGlzIGRvbmUuXG4gICAqL1xuICByZXR1cm4gYXN5bmMgKHBoYXNlLCBjdHgpID0+IHtcbiAgICBjb25zdCBuZXh0Q29uZmlnID0gYXdhaXQgYmFzZUNvbmZpZ0ZuKHBoYXNlLCBjdHgpO1xuXG4gICAgLy8gU2V0IHVwIEFHRU5UX1NFQ1JFVCBpZiBub3QgYWxyZWFkeSBzZXRcbiAgICBpZiAoIXByb2Nlc3MuZW52LkFHRU5UX1NFQ1JFVCkge1xuICAgICAgbmV4dENvbmZpZy5lbnYgPSB7XG4gICAgICAgIC4uLm5leHRDb25maWcuZW52LFxuICAgICAgICBBR0VOVF9TRUNSRVQ6IGNyeXB0by5yYW5kb21VVUlEKCksXG4gICAgICB9O1xuICAgICAgaWYgKGRlYnVnKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKFwiW3dpdGhBZ2VudF0gR2VuZXJhdGVkIEFHRU5UX1NFQ1JFVFwiKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoIWFnZW50UGF0aFJlZ2V4IHx8IGFnZW50RmlsZVBhdGhzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIG5leHRDb25maWc7XG4gICAgfVxuXG4gICAgLy8gTW9kaWZ5IHR1cmJvcGFjayBydWxlcyB0byBpbmNsdWRlIG91ciBsb2FkZXIgZm9yIGFnZW50IGZpbGVzXG4gICAgY29uc3QgcnVsZXMgPSAobmV4dENvbmZpZy50dXJib3BhY2s/LnJ1bGVzIHx8IHt9KSBhcyBSZWNvcmQ8XG4gICAgICBzdHJpbmcsXG4gICAgICBUdXJib3BhY2tSdWxlXG4gICAgPjtcblxuICAgIGZvciAoY29uc3Qga2V5IG9mIFtcIioudHNcIiwgXCIqLnRzeFwiLCBcIiouanNcIiwgXCIqLmpzeFwiXSkge1xuICAgICAgY29uc3QgZXhpc3RpbmdSdWxlID0gcnVsZXNba2V5XTtcbiAgICAgIGlmICghZXhpc3RpbmdSdWxlKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICAvKipcbiAgICAgICAqIFdvcmtmbG93J3MgcnVsZSBoYXM6IGNvbmRpdGlvbi5hbGwgPSBbeyBub3Q6IHBhdGggfSwgeyBjb250ZW50OiAvdXNlIHN0ZXB8Li4uLyB9XVxuICAgICAgICogV2Ugd2FudDogcnVuIGxvYWRlciBpZiB3b3JrZmxvdydzIGNvbmRpdGlvbnMgbWF0Y2ggT1IgaXQncyBhbiBhZ2VudCBmaWxlLlxuICAgICAgICogU28gd2Ugd3JhcCBpbjogY29uZGl0aW9uLmFueSA9IFtleGlzdGluZ0NvbmRpdGlvbiwgeyBwYXRoOiBhZ2VudFBhdGhSZWdleCB9XVxuICAgICAgICovXG4gICAgICBydWxlc1trZXldID0ge1xuICAgICAgICAuLi5leGlzdGluZ1J1bGUsXG4gICAgICAgIGxvYWRlcnM6IFtsb2FkZXJQYXRoLCAuLi4oZXhpc3RpbmdSdWxlLmxvYWRlcnMgfHwgW10pXSxcbiAgICAgICAgY29uZGl0aW9uOiB7XG4gICAgICAgICAgYW55OiBbZXhpc3RpbmdSdWxlLmNvbmRpdGlvbiwgeyBwYXRoOiBhZ2VudFBhdGhSZWdleCB9XSxcbiAgICAgICAgfSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLy8gQWxzbyBjb25maWd1cmUgd2VicGFjayBmb3Igbm9uLXR1cmJvcGFjayBidWlsZHNcbiAgICBjb25zdCBleGlzdGluZ1dlYnBhY2sgPSBuZXh0Q29uZmlnLndlYnBhY2s7XG4gICAgbmV4dENvbmZpZy53ZWJwYWNrID0gKHdlYnBhY2tDb25maWcsIGNvbnRleHQpID0+IHtcbiAgICAgIHdlYnBhY2tDb25maWcubW9kdWxlLnJ1bGVzLnB1c2goe1xuICAgICAgICB0ZXN0OiAocmVzb3VyY2VQYXRoOiBzdHJpbmcpID0+IGFnZW50RmlsZVBhdGhzLmluY2x1ZGVzKHJlc291cmNlUGF0aCksXG4gICAgICAgIHVzZTogW3sgbG9hZGVyOiBsb2FkZXJQYXRoIH1dLFxuICAgICAgfSk7XG4gICAgICByZXR1cm4gZXhpc3RpbmdXZWJwYWNrPy4od2VicGFja0NvbmZpZywgY29udGV4dCkgPz8gd2VicGFja0NvbmZpZztcbiAgICB9O1xuXG4gICAgaWYgKGRlYnVnKSB7XG4gICAgICBjb25zb2xlLmxvZyhcIlt3aXRoQWdlbnRdIEFkZGVkIGFnZW50IGxvYWRlciB0byB0dXJib3BhY2sgcnVsZXNcIik7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5leHRDb25maWc7XG4gIH07XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7OztBQUFBLFlBQVksWUFBWTtBQUN4QixZQUFZLFFBQVE7QUFDcEIsWUFBWSxVQUFVO0FBU3RCLElBQU0sZUFBZSxnQkFBSTtBQUN6QixJQUFNLHlCQUF5QjtBQUMvQixJQUFNLGlCQUFpQjtBQUN2QixJQUFNLHFCQUFxQjtBQUMzQixJQUFNLHdCQUF3QixDQUFDLFNBQVMsT0FBTyxhQUFhLFNBQVM7QUFTckUsU0FBUyxVQUFVLEtBQXFCO0FBQ3RDLE1BQUksT0FBTztBQUNYLFdBQVMsSUFBSSxHQUFHLElBQUksSUFBSSxRQUFRLEtBQUs7QUFDbkMsVUFBTSxPQUFPLElBQUksV0FBVyxDQUFDO0FBRTdCLFlBQVEsUUFBUSxLQUFLLE9BQU87QUFFNUIsWUFBUTtBQUFBLEVBQ1Y7QUFDQSxTQUFPLEtBQUssSUFBSSxJQUFJLEVBQUUsU0FBUyxFQUFFLEVBQUUsTUFBTSxHQUFHLENBQUM7QUFDL0M7QUFFQSxTQUFTLGlCQUFpQixLQUFzQjtBQUM5QyxTQUFPLENBQUMsY0FBYyxhQUFhLGFBQWEsWUFBWSxFQUFFO0FBQUEsSUFBSyxDQUFDLE1BQy9ELGNBQWdCLFVBQUssS0FBSyxDQUFDLENBQUM7QUFBQSxFQUNqQztBQUNGO0FBT0EsU0FBUyxVQUFVLEtBQXFCO0FBQ3RDLFFBQU0sWUFBaUIsVUFBSyxLQUFLLE9BQU8sS0FBSztBQUM3QyxRQUFNLGFBQWtCLFVBQUssS0FB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
|
|
244
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL25leHQvaW5kZXgudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImltcG9ydCAqIGFzIGNyeXB0byBmcm9tIFwibm9kZTpjcnlwdG9cIjtcbmltcG9ydCAqIGFzIGZzIGZyb20gXCJub2RlOmZzXCI7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gXCJub2RlOnBhdGhcIjtcbmltcG9ydCB0eXBlIHsgTmV4dENvbmZpZyB9IGZyb20gXCJuZXh0XCI7XG5pbXBvcnQgcGtnIGZyb20gXCIuLi8uLi9wYWNrYWdlLmpzb25cIjtcblxuZXhwb3J0IHR5cGUgV2l0aEFnZW50Q29uZmlnID0ge1xuICAvKiogRW5hYmxlIGRlYnVnIGxvZ2dpbmcgZm9yIHRoZSBOZXh0LmpzIGxvYWRlciAoYWdlbnQgZGV0ZWN0aW9uLCBmaWxlIGdlbmVyYXRpb24pLiAqL1xuICBkZWJ1Zz86IGJvb2xlYW47XG59O1xuXG5jb25zdCBQQUNLQUdFX05BTUUgPSBwa2cubmFtZTtcbmNvbnN0IEFHRU5UX1BST1RPQ09MX1ZFUlNJT04gPSBcInYxXCI7XG5jb25zdCBGSUxFX0VYVF9SRUdFWCA9IC9cXC4odHN8dHN4fGpzfGpzeCkkLztcbmNvbnN0IEFHRU5UX0VYUE9SVF9SRUdFWCA9IC9leHBvcnRcXHMrY29uc3RcXHMrKFxcdyspXFxzKj1cXHMqYWdlbnRcXHMqXFwoL2c7XG5jb25zdCBERUZBVUxUX1dPUktGTE9XX0RJUlMgPSBbXCJwYWdlc1wiLCBcImFwcFwiLCBcInNyYy9wYWdlc1wiLCBcInNyYy9hcHBcIl07XG5cbnR5cGUgRGV0ZWN0ZWRBZ2VudCA9IHtcbiAgZXhwb3J0TmFtZTogc3RyaW5nO1xuICBmaWxlUGF0aDogc3RyaW5nO1xuICAvKiogVW5pcXVlIGlkZW50aWZpZXI6IGV4cG9ydE5hbWUgb3IgZXhwb3J0TmFtZV9oYXNoIGlmIGR1cGxpY2F0ZXMgZXhpc3QgKi9cbiAgdW5pcXVlSWQ6IHN0cmluZztcbn07XG5cbmZ1bmN0aW9uIHNob3J0SGFzaChzdHI6IHN0cmluZyk6IHN0cmluZyB7XG4gIGxldCBoYXNoID0gMDtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBzdHIubGVuZ3RoOyBpKyspIHtcbiAgICBjb25zdCBjaGFyID0gc3RyLmNoYXJDb2RlQXQoaSk7XG4gICAgLy8gYmlvbWUtaWdub3JlIGxpbnQvc3VzcGljaW91cy9ub0JpdHdpc2VPcGVyYXRvcnM6IGludGVudGlvbmFsIGhhc2ggY29tcHV0YXRpb25cbiAgICBoYXNoID0gKGhhc2ggPDwgNSkgLSBoYXNoICsgY2hhcjtcbiAgICAvLyBiaW9tZS1pZ25vcmUgbGludC9zdXNwaWNpb3VzL25vQml0d2lzZU9wZXJhdG9yczogY29udmVydCB0byAzMi1iaXQgaW50ZWdlclxuICAgIGhhc2ggJj0gaGFzaDtcbiAgfVxuICByZXR1cm4gTWF0aC5hYnMoaGFzaCkudG9TdHJpbmcoMzYpLnNsaWNlKDAsIDYpO1xufVxuXG5mdW5jdGlvbiBoYXNOZXh0QXBwTGF5b3V0KGRpcjogc3RyaW5nKTogYm9vbGVhbiB7XG4gIHJldHVybiBbXCJsYXlvdXQudHN4XCIsIFwibGF5b3V0LnRzXCIsIFwibGF5b3V0LmpzXCIsIFwibGF5b3V0LmpzeFwiXS5zb21lKChmKSA9PlxuICAgIGZzLmV4aXN0c1N5bmMocGF0aC5qb2luKGRpciwgZikpXG4gICk7XG59XG5cbi8qKlxuICogRGV0ZWN0cyB3aGV0aGVyIHRoZSBwcm9qZWN0IHVzZXMgc3JjL2FwcCBvciBhcHAgZGlyZWN0b3J5IHN0cnVjdHVyZVxuICogYnkgY2hlY2tpbmcgd2hpY2ggZGlyZWN0b3J5IGNvbnRhaW5zIGEgTmV4dC5qcyBsYXlvdXQgZmlsZS5cbiAqIFJldHVybnMgdGhlIGFwcCBkaXJlY3RvcnkgcGF0aCByZWxhdGl2ZSB0byBjd2QuXG4gKi9cbmZ1bmN0aW9uIGdldEFwcERpcihjd2Q6IHN0cmluZyk6IHN0cmluZyB7XG4gIGNvbnN0IHNyY0FwcERpciA9IHBhdGguam9pbihjd2QsIFwic3JjXCIsIFwiYXBwXCIpO1xuICBjb25zdCByb290QXBwRGlyID0gcGF0aC5qb2luKGN3ZCwgXCJhcHBcIik7XG5cbiAgaWYgKGhhc05leHRBcHBMYXlvdXQoc3JjQXBwRGlyKSkge1xuICAgIHJldHVybiBcInNyYy9hcHBcIjtcbiAgfVxuICBpZiAoaGFzTmV4dEFwcExheW91dChyb290QXBwRGlyKSkge1xuICAgIHJldHVybiBcImFwcFwiO1xuICB9XG5cbiAgLyoqXG4gICAqIEZhbGxiYWNrIHdoZW4gbmVpdGhlciBkaXJlY3RvcnkgaGFzIGEgbGF5b3V0IGZpbGUgeWV0XG4gICAqIChlLmcuIGZyZXNoIHByb2plY3QpLiBQcmVmZXIgc3JjL2FwcCBpZiB0aGUgZGlyZWN0b3J5IGV4aXN0cy5cbiAgICovXG4gIGlmIChmcy5leGlzdHNTeW5jKHNyY0FwcERpcikpIHtcbiAgICByZXR1cm4gXCJzcmMvYXBwXCI7XG4gIH1cbiAgcmV0dXJuIFwiYXBwXCI7XG59XG5cbi8qKlxuICogU2NhbnMgZm9yIGFnZW50IGV4cG9ydHMgaW4gdGhlIHByb2plY3QuXG4gKi9cbmZ1bmN0aW9uIGRldGVjdEFnZW50cyhjd2Q6IHN0cmluZywgZGVidWc6IGJvb2xlYW4pOiBEZXRlY3RlZEFnZW50W10ge1xuICBjb25zdCBhZ2VudHM6IERldGVjdGVkQWdlbnRbXSA9IFtdO1xuXG4gIGNvbnN0IGRpcnNUb1NjYW4gPSBbcGF0aC5qb2luKGN3ZCwgXCJzcmNcIiksIGN3ZF07XG5cbiAgZnVuY3Rpb24gc2NhbkRpcihkaXI6IHN0cmluZykge1xuICAgIGlmICghZnMuZXhpc3RzU3luYyhkaXIpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgZW50cmllcyA9IGZzLnJlYWRkaXJTeW5jKGRpciwgeyB3aXRoRmlsZVR5cGVzOiB0cnVlIH0pO1xuICAgIGZvciAoY29uc3QgZW50cnkgb2YgZW50cmllcykge1xuICAgICAgY29uc3QgZnVsbFBhdGggPSBwYXRoLmpvaW4oZGlyLCBlbnRyeS5uYW1lKTtcbiAgICAgIGlmIChcbiAgICAgICAgZW50cnkuaXNEaXJlY3RvcnkoKSAmJlxuICAgICAgICAhZW50cnkubmFtZS5zdGFydHNXaXRoKFwiLlwiKSAmJlxuICAgICAgICBlbnRyeS5uYW1lICE9PSBcIm5vZGVfbW9kdWxlc1wiICYmXG4gICAgICAgIGVudHJ5Lm5hbWUgIT09IFwic3JjXCJcbiAgICAgICkge1xuICAgICAgICBzY2FuRGlyKGZ1bGxQYXRoKTtcbiAgICAgIH0gZWxzZSBpZiAoZW50cnkuaXNGaWxlKCkgJiYgRklMRV9FWFRfUkVHRVgudGVzdChlbnRyeS5uYW1lKSkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGNvbnN0IGNvbnRlbnQgPSBmcy5yZWFkRmlsZVN5bmMoZnVsbFBhdGgsIFwidXRmLThcIik7XG4gICAgICAgICAgaWYgKGNvbnRlbnQuaW5jbHVkZXMoUEFDS0FHRV9OQU1FKSAmJiBjb250ZW50LmluY2x1ZGVzKFwiYWdlbnQoXCIpKSB7XG4gICAgICAgICAgICAvLyBTdHJpcCBzaW5nbGUtbGluZSBjb21tZW50cyBhbmQgYmxvY2sgY29tbWVudHMgdG8gYXZvaWRcbiAgICAgICAgICAgIC8vIG1hdGNoaW5nIGNvbW1lbnRlZC1vdXQgYWdlbnQgZXhwb3J0c1xuICAgICAgICAgICAgY29uc3Qgc3RyaXBwZWQgPSBjb250ZW50XG4gICAgICAgICAgICAgIC5yZXBsYWNlKC9cXC9cXC8uKiQvZ20sIFwiXCIpXG4gICAgICAgICAgICAgIC5yZXBsYWNlKC9cXC9cXCpbXFxzXFxTXSo/XFwqXFwvL2csIFwiXCIpO1xuICAgICAgICAgICAgY29uc3QgZXhwb3J0TWF0Y2hlcyA9IHN0cmlwcGVkLm1hdGNoQWxsKEFHRU5UX0VYUE9SVF9SRUdFWCk7XG4gICAgICAgICAgICBjb25zdCBzZWVuID0gbmV3IFNldDxzdHJpbmc+KCk7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IG1hdGNoIG9mIGV4cG9ydE1hdGNoZXMpIHtcbiAgICAgICAgICAgICAgaWYgKHNlZW4uaGFzKG1hdGNoWzFdKSkge1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHNlZW4uYWRkKG1hdGNoWzFdKTtcbiAgICAgICAgICAgICAgYWdlbnRzLnB1c2goe1xuICAgICAgICAgICAgICAgIGV4cG9ydE5hbWU6IG1hdGNoWzFdLFxuICAgICAgICAgICAgICAgIGZpbGVQYXRoOiBmdWxsUGF0aCxcbiAgICAgICAgICAgICAgICB1bmlxdWVJZDogXCJcIiwgLy8gV2lsbCBiZSBzZXQgYWZ0ZXIgYWxsIGFnZW50cyBhcmUgZm91bmRcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIGlmIChkZWJ1Zykge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICAgICAgICAgICAgYFt3aXRoQWdlbnRdIEZvdW5kIGFnZW50OiAke21hdGNoWzFdfSBpbiAke2Z1bGxQYXRofWBcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9IGNhdGNoIHtcbiAgICAgICAgICAvLyBJZ25vcmUgcmVhZCBlcnJvcnNcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGZvciAoY29uc3QgZGlyIG9mIGRpcnNUb1NjYW4pIHtcbiAgICBzY2FuRGlyKGRpcik7XG4gIH1cblxuICAvLyBBc3NpZ24gdW5pcXVlIElEcyAtIGFkZCBoYXNoIHN1ZmZpeCBpZiBkdXBsaWNhdGUgZXhwb3J0IG5hbWVzIGV4aXN0XG4gIGNvbnN0IG5hbWVDb3VudHMgPSBuZXcgTWFwPHN0cmluZywgbnVtYmVyPigpO1xuICBmb3IgKGNvbnN0IGFnZW50IG9mIGFnZW50cykge1xuICAgIG5hbWVDb3VudHMuc2V0KFxuICAgICAgYWdlbnQuZXhwb3J0TmFtZSxcbiAgICAgIChuYW1lQ291bnRzLmdldChhZ2VudC5leHBvcnROYW1lKSB8fCAwKSArIDFcbiAgICApO1xuICB9XG5cbiAgZm9yIChjb25zdCBhZ2VudCBvZiBhZ2VudHMpIHtcbiAgICBjb25zdCBjb3VudCA9IG5hbWVDb3VudHMuZ2V0KGFnZW50LmV4cG9ydE5hbWUpID8/IDA7XG4gICAgaWYgKGNvdW50ID4gMSkge1xuICAgICAgYWdlbnQudW5pcXVlSWQgPSBgJHthZ2VudC5leHBvcnROYW1lfV8ke3Nob3J0SGFzaChhZ2VudC5maWxlUGF0aCl9YDtcbiAgICB9IGVsc2Uge1xuICAgICAgYWdlbnQudW5pcXVlSWQgPSBhZ2VudC5leHBvcnROYW1lO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBhZ2VudHM7XG59XG5cbi8qKlxuICogR2VuZXJhdGVzIGFsbCBhZ2VudCBmaWxlcyBpbiAud2VsbC1rbm93bi9hZ2VudC92MS86XG4gKiAtIHN0ZXBzLmpzOiBSUEMgc3RlcCBmdW5jdGlvbnMgd2l0aCBcInVzZSBzdGVwXCJcbiAqIC0gcm91dGUuanM6IHRyaWdnZXJzIHdvcmtmbG93IGRpc2NvdmVyeVxuICovXG5mdW5jdGlvbiBnZW5lcmF0ZUFnZW50RmlsZXMoXG4gIGFnZW50czogRGV0ZWN0ZWRBZ2VudFtdLFxuICBvdXRwdXREaXI6IHN0cmluZyxcbiAgX2N3ZDogc3RyaW5nLFxuICBkZWJ1ZzogYm9vbGVhblxuKTogdm9pZCB7XG4gIGlmIChhZ2VudHMubGVuZ3RoID09PSAwKSB7XG4gICAgaWYgKGRlYnVnKSB7XG4gICAgICBjb25zb2xlLmxvZyhcIlt3aXRoQWdlbnRdIE5vIGFnZW50cyBmb3VuZCwgc2tpcHBpbmcgZ2VuZXJhdGlvblwiKTtcbiAgICB9XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgaWYgKCFmcy5leGlzdHNTeW5jKG91dHB1dERpcikpIHtcbiAgICBmcy5ta2RpclN5bmMob3V0cHV0RGlyLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZW5lcmF0ZSBzdGVwIGZ1bmN0aW9ucyB0aGF0IHVzZSBkeW5hbWljIGltcG9ydC5cbiAgICogRHluYW1pYyBpbXBvcnQgZW5zdXJlcyB0aGUgYWdlbnQgbW9kdWxlIGxvYWRzIChpbmNsdWRpbmcgbG9hZGVyLWluamVjdGVkIGluaXQpXG4gICAqIHdoZW4gdGhlIHN0ZXAgcnVucyBpbiB3b3JrZmxvdyBjb250ZXh0LCBhdm9pZGluZyB0aGUgXCJub3QgaW5pdGlhbGl6ZWRcIiBlcnJvci5cbiAgICpcbiAgICogVXNlcyB1bmlxdWVJZCBmb3IgZnVuY3Rpb24gbmFtZXMgdG8gaGFuZGxlIGR1cGxpY2F0ZSBleHBvcnQgbmFtZXMgYWNyb3NzIGZpbGVzLlxuICAgKi9cbiAgY29uc3QgcnBjRnVuY3Rpb25zID0gYWdlbnRzXG4gICAgLm1hcCgoYSkgPT4ge1xuICAgICAgLy8gQ2FsY3VsYXRlIHJlbGF0aXZlIHBhdGggZnJvbSBzdGVwcy5qcyB0byB0aGUgYWdlbnQgZmlsZVxuICAgICAgbGV0IGFnZW50UmVsUGF0aCA9IHBhdGhcbiAgICAgICAgLnJlbGF0aXZlKG91dHB1dERpciwgYS5maWxlUGF0aClcbiAgICAgICAgLnJlcGxhY2UoL1xcXFwvZywgXCIvXCIpO1xuXG4gICAgICBpZiAoIWFnZW50UmVsUGF0aC5zdGFydHNXaXRoKFwiLlwiKSkge1xuICAgICAgICBhZ2VudFJlbFBhdGggPSBgLi8ke2FnZW50UmVsUGF0aH1gO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gYFxuZXhwb3J0IGNvbnN0ICR7YS51bmlxdWVJZH1ScGMgPSBhc3luYyAocGFyYW1zKSA9PiB7XG4gIFwidXNlIHN0ZXBcIjtcbiAgY29uc3QgeyAke2EuZXhwb3J0TmFtZX0gfSA9IGF3YWl0IGltcG9ydChcIiR7YWdlbnRSZWxQYXRofVwiKTtcbiAgY29uc3QgcmVzID0gYXdhaXQgJHthLmV4cG9ydE5hbWV9LmhhbmRsZXIocGFyYW1zKTtcbiAgaWYgKHJlcyBpbnN0YW5jZW9mIFJlc3BvbnNlKSB7XG4gICAgcmV0dXJuIHJlcy5qc29uKCk7XG4gIH1cbiAgcmV0dXJuIHJlcztcbn07YDtcbiAgICB9KVxuICAgIC5qb2luKFwiXFxuXCIpO1xuXG4gIC8qKlxuICAgKiBJbml0IGZ1bmN0aW9ucyB3aXJlIHVwIGFnZW50LnJwYyBpbiB0aGUgbWFpbiBhcHAgY29udGV4dC5cbiAgICogVXNlcyBleHBvcnROYW1lIGZvciB0aGUgZnVuY3Rpb24gbmFtZSAobG9hZGVyIG1hdGNoZXMgYnkgZXhwb3J0IG5hbWUpLFxuICAgKiBidXQgcmVmZXJlbmNlcyB1bmlxdWVJZCBmb3IgdGhlIFJwYyBmdW5jdGlvbi5cbiAgICovXG4gIGNvbnN0IGluaXRGdW5jdGlvbnMgPSBhZ2VudHNcbiAgICAubWFwKFxuICAgICAgKGEpID0+IGBcbmV4cG9ydCBmdW5jdGlvbiBfX2luaXQke2EuZXhwb3J0TmFtZVswXS50b1VwcGVyQ2FzZSgpfSR7YS5leHBvcnROYW1lLnNsaWNlKFxuICAgICAgICAxXG4gICAgICApfShhZ2VudCkge1xuICBhZ2VudC5ycGMgPSAke2EudW5pcXVlSWR9UnBjO1xufWBcbiAgICApXG4gICAgLmpvaW4oXCJcXG5cIik7XG5cbiAgY29uc3Qgc3RlcHNDb250ZW50ID0gYC8vIEF1dG8tZ2VuZXJhdGVkIGJ5IHdpdGhBZ2VudCAtIGRvIG5vdCBlZGl0XG4ke3JwY0Z1bmN0aW9uc31cbiR7aW5pdEZ1bmN0aW9uc31cbmA7XG5cbiAgY29uc3Qgc3RlcHNQYXRoID0gcGF0aC5qb2luKG91dHB1dERpciwgXCJzdGVwcy5qc1wiKTtcbiAgZnMud3JpdGVGaWxlU3luYyhzdGVwc1BhdGgsIHN0ZXBzQ29udGVudCk7XG5cbiAgLyoqXG4gICAqIEdlbmVyYXRlIHJvdXRlLmpzIHRoYXQgaW1wb3J0cyBzdGVwcy5qcy5cbiAgICogVGhpcyBlbnN1cmVzIHdvcmtmbG93IGRpc2NvdmVycyB0aGUgXCJ1c2Ugc3RlcFwiIGZ1bmN0aW9ucy5cbiAgICogTm8gYWN0dWFsIGhhbmRsZXIgbmVlZGVkIC0gc3RvcmFnZSBSUEMgdXNlcyB0aGUgc3RlcCBmdW5jdGlvbiBkaXJlY3RseS5cbiAgICovXG4gIGNvbnN0IHJvdXRlQ29udGVudCA9IGAvLyBBdXRvLWdlbmVyYXRlZCBieSB3aXRoQWdlbnQgLSB0cmlnZ2VycyB3b3JrZmxvdyBkaXNjb3ZlcnlcbmltcG9ydCBcIi4vc3RlcHMuanNcIjtcbmV4cG9ydCBmdW5jdGlvbiBHRVQoKSB7XG4gIHJldHVybiBuZXcgUmVzcG9uc2UoXCJva1wiKTtcbn1cbmA7XG5cbiAgY29uc3Qgcm91dGVQYXRoID0gcGF0aC5qb2luKG91dHB1dERpciwgXCJyb3V0ZS5qc1wiKTtcbiAgZnMud3JpdGVGaWxlU3luYyhyb3V0ZVBhdGgsIHJvdXRlQ29udGVudCk7XG5cbiAgLy8gQWRkIC5naXRpZ25vcmVcbiAgY29uc3QgZ2l0aWdub3JlUGF0aCA9IHBhdGguam9pbihvdXRwdXREaXIsIFwiLmdpdGlnbm9yZVwiKTtcbiAgaWYgKCFmcy5leGlzdHNTeW5jKGdpdGlnbm9yZVBhdGgpKSB7XG4gICAgZnMud3JpdGVGaWxlU3luYyhnaXRpZ25vcmVQYXRoLCBcIipcXG5cIik7XG4gIH1cblxuICBpZiAoZGVidWcpIHtcbiAgICBjb25zb2xlLmxvZyhgW3dpdGhBZ2VudF0gR2VuZXJhdGVkIGFnZW50IGZpbGVzIGF0ICR7b3V0cHV0RGlyfWApO1xuICB9XG59XG5cbnR5cGUgVHVyYm9wYWNrTG9hZGVyID0gc3RyaW5nIHwgeyBsb2FkZXI6IHN0cmluZzsgb3B0aW9ucz86IFJlY29yZDxzdHJpbmcsIHVua25vd24+IH07XG5cbnR5cGUgVHVyYm9wYWNrUnVsZSA9IHtcbiAgbG9hZGVycz86IFR1cmJvcGFja0xvYWRlcltdO1xuICBjb25kaXRpb24/OiB7XG4gICAgYWxsPzogdW5rbm93bltdO1xuICAgIGFueT86IHVua25vd25bXTtcbiAgICBwYXRoPzogUmVnRXhwO1xuICAgIGNvbnRlbnQ/OiBSZWdFeHA7XG4gICAgbm90PzogdW5rbm93bjtcbiAgfTtcbn07XG5cbnR5cGUgV29ya2Zsb3dDb25maWdGbiA9IChcbiAgcGhhc2U6IHN0cmluZyxcbiAgY3R4OiB7IGRlZmF1bHRDb25maWc6IE5leHRDb25maWcgfVxuKSA9PiBQcm9taXNlPE5leHRDb25maWc+O1xuXG50eXBlIE5leHRDb25maWdJbnB1dCA9XG4gIHwgTmV4dENvbmZpZ1xuICB8ICgoXG4gICAgICBwaGFzZTogc3RyaW5nLFxuICAgICAgY3R4OiB7IGRlZmF1bHRDb25maWc6IE5leHRDb25maWcgfVxuICAgICkgPT4gUHJvbWlzZTxOZXh0Q29uZmlnPik7XG5cbi8qKlxuICogTmV4dC5qcyBwbHVnaW4gdGhhdCBjb25maWd1cmVzIGFnZW50IHN1cHBvcnQuXG4gKlxuICogLSBEZXRlY3RzIGFnZW50cyBhbmQgZ2VuZXJhdGVzIFJQQyBzdGVwcyB3aXRoIFwidXNlIHN0ZXBcIiBpbiAud2VsbC1rbm93bi9hZ2VudC92MS9cbiAqIC0gR2VuZXJhdGVzIEFHRU5UX1NFQ1JFVCBmb3Igc2VjdXJlIFJQQyBjYWxsc1xuICogLSBXcmFwcyB3aXRoV29ya2Zsb3cgZm9yIHdvcmtmbG93IHN1cHBvcnRcbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHNcbiAqIC8vIG5leHQuY29uZmlnLnRzXG4gKiBpbXBvcnQgeyB3aXRoQWdlbnQgfSBmcm9tIFwiZXhwZXJpbWVudGFsLWFnZW50L25leHRcIjtcbiAqXG4gKiAvLyBPcHRpb24gMTogd2l0aEFnZW50IGhhbmRsZXMgZXZlcnl0aGluZyAocmVjb21tZW5kZWQpXG4gKiBleHBvcnQgZGVmYXVsdCB3aXRoQWdlbnQoe30pO1xuICpcbiAqIC8vIE9wdGlvbiAyOiBDb21wb3NlIHdpdGggb3RoZXIgcGx1Z2luc1xuICogZXhwb3J0IGRlZmF1bHQgd2l0aEFnZW50KHdpdGhTb21lT3RoZXJQbHVnaW4oe30pKTtcbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gd2l0aEFnZW50KFxuICBjb25maWdPckZuOiBOZXh0Q29uZmlnSW5wdXQsXG4gIGFnZW50Q29uZmlnPzogV2l0aEFnZW50Q29uZmlnXG4pOiBXb3JrZmxvd0NvbmZpZ0ZuIHtcbiAgY29uc3QgZGVidWcgPSBhZ2VudENvbmZpZz8uZGVidWcgPz8gZmFsc2U7XG4gIGNvbnN0IGN3ZCA9IHByb2Nlc3MuY3dkKCk7XG5cbiAgLy8gRGV0ZWN0IGFwcCBkaXJlY3Rvcnkgc3RydWN0dXJlIChzcmMvYXBwIHZzIGFwcClcbiAgY29uc3QgYXBwRGlyID0gZ2V0QXBwRGlyKGN3ZCk7XG4gIGNvbnN0IGFnZW50RGlyID0gYCR7YXBwRGlyfS8ud2VsbC1rbm93bi9hZ2VudC8ke0FHRU5UX1BST1RPQ09MX1ZFUlNJT059YDtcblxuICAvLyBEZXRlY3QgYWdlbnRzIGFuZCBnZW5lcmF0ZSBmaWxlcyBGSVJTVCAoYmVmb3JlIHdvcmtmbG93IGRpc2NvdmVycyB0aGVtKVxuICBjb25zdCBhZ2VudHMgPSBkZXRlY3RBZ2VudHMoY3dkLCBkZWJ1Zyk7XG4gIGNvbnN0IG91dHB1dERpciA9IHBhdGguam9pbihjd2QsIGFnZW50RGlyKTtcbiAgZ2VuZXJhdGVBZ2VudEZpbGVzKGFnZW50cywgb3V0cHV0RGlyLCBjd2QsIGRlYnVnKTtcblxuICBjb25zdCBhZ2VudEZpbGVQYXRocyA9IGFnZW50cy5tYXAoKGEpID0+IGEuZmlsZVBhdGgpO1xuICBjb25zdCBsb2FkZXJQYXRoID0gcmVxdWlyZS5yZXNvbHZlKFwiLi9uZXh0L2xvYWRlclwiKTtcbiAgY29uc3QgYWJzb2x1dGVBcHBEaXIgPSBwYXRoLmpvaW4oY3dkLCBhcHBEaXIpO1xuICBjb25zdCBsb2FkZXJPcHRpb25zID0geyBhcHBEaXI6IGFic29sdXRlQXBwRGlyLCBkZWJ1ZyB9O1xuXG4gIGlmIChkZWJ1Zykge1xuICAgIGNvbnNvbGUubG9nKFwiW3dpdGhBZ2VudF0gbG9hZGVyIHBhdGg6XCIsIGxvYWRlclBhdGgpO1xuICAgIGNvbnNvbGUubG9nKFwiW3dpdGhBZ2VudF0gYWdlbnQgZmlsZXM6XCIsIGFnZW50RmlsZVBhdGhzKTtcbiAgICBjb25zb2xlLmxvZyhcIlt3aXRoQWdlbnRdIGFnZW50IGRpcjpcIiwgYWdlbnREaXIpO1xuICB9XG5cbiAgLy8gQnVpbGQgcmVnZXggdG8gbWF0Y2ggYWdlbnQgZmlsZSBwYXRoc1xuICBjb25zdCBhZ2VudFBhdGhSZWdleCA9XG4gICAgYWdlbnRGaWxlUGF0aHMubGVuZ3RoID4gMFxuICAgICAgPyBuZXcgUmVnRXhwKFxuICAgICAgICAgIGAke2FnZW50RmlsZVBhdGhzXG4gICAgICAgICAgICAubWFwKChwKSA9PlxuICAgICAgICAgICAgICBwYXRoXG4gICAgICAgICAgICAgICAgLnJlbGF0aXZlKGN3ZCwgcClcbiAgICAgICAgICAgICAgICAucmVwbGFjZSgvXFxcXC9nLCBcIi9cIilcbiAgICAgICAgICAgICAgICAucmVwbGFjZSgvWy4qKz9eJHt9KCl8W1xcXVxcXFxdL2csIFwiXFxcXCQmXCIpXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuam9pbihcInxcIil9JGBcbiAgICAgICAgKVxuICAgICAgOiBudWxsO1xuXG4gIC8qKlxuICAgKiBBbHdheXMgcGFzcyB0aHJvdWdoIHdpdGhXb3JrZmxvdyAtIGl0IGhhbmRsZXMgYm90aCBOZXh0Q29uZmlnIGFuZCBhc3luYyBmdW5jdGlvbnMuXG4gICAqIFRoaXMgZW5zdXJlcyB3b3JrZmxvdyBpcyBhbHdheXMgY29uZmlndXJlZCwgcmVnYXJkbGVzcyBvZiB3aGF0IHRoZSB1c2VyIHBhc3NlZC5cbiAgICovXG4gIGxldCB3aXRoV29ya2Zsb3c6IChcbiAgICBjb25maWc6IE5leHRDb25maWdJbnB1dCxcbiAgICBvcHRpb25zPzogeyB3b3JrZmxvd3M/OiB7IGRpcnM/OiBzdHJpbmdbXSB9IH1cbiAgKSA9PiBXb3JrZmxvd0NvbmZpZ0ZuO1xuICB0cnkge1xuICAgIHdpdGhXb3JrZmxvdyA9IHJlcXVpcmUoXCJ3b3JrZmxvdy9uZXh0XCIpLndpdGhXb3JrZmxvdztcbiAgfSBjYXRjaCB7XG4gICAgY29uc29sZS53YXJuKFxuICAgICAgXCJbd2l0aEFnZW50XSB3b3JrZmxvdy9uZXh0IG5vdCBmb3VuZC4gTWFrZSBzdXJlIHdvcmtmbG93IGlzIGluc3RhbGxlZC5cIlxuICAgICk7XG4gICAgcmV0dXJuIHR5cGVvZiBjb25maWdPckZuID09PSBcImZ1bmN0aW9uXCJcbiAgICAgID8gY29uZmlnT3JGblxuICAgICAgOiBhc3luYyAoKSA9PiBjb25maWdPckZuO1xuICB9XG5cbiAgY29uc3QgYmFzZUNvbmZpZ0ZuID0gd2l0aFdvcmtmbG93KGNvbmZpZ09yRm4sIHtcbiAgICB3b3JrZmxvd3M6IHtcbiAgICAgIGRpcnM6IFsuLi5ERUZBVUxUX1dPUktGTE9XX0RJUlMsIGFnZW50RGlyXSxcbiAgICB9LFxuICB9KTtcblxuICAvKipcbiAgICogUmV0dXJuIGEgd3JhcHBlciB0aGF0IHJ1bnMgQUZURVIgd29ya2Zsb3cgcHJvY2Vzc2VzLCB0aGVuIGFkZHMgb3VyIGxvYWRlci5cbiAgICogVGhpcyBpcyBuZWNlc3NhcnkgYmVjYXVzZSB3b3JrZmxvdyBvdmVyd3JpdGVzIHR1cmJvcGFjayBydWxlcyAtIHdlIG5lZWQgdG9cbiAgICogbW9kaWZ5IHRoZW0gYWZ0ZXIgd29ya2Zsb3cgaXMgZG9uZS5cbiAgICovXG4gIHJldHVybiBhc3luYyAocGhhc2UsIGN0eCkgPT4ge1xuICAgIGNvbnN0IG5leHRDb25maWcgPSBhd2FpdCBiYXNlQ29uZmlnRm4ocGhhc2UsIGN0eCk7XG5cbiAgICAvLyBTZXQgdXAgQUdFTlRfU0VDUkVUIGlmIG5vdCBhbHJlYWR5IHNldFxuICAgIGlmICghcHJvY2Vzcy5lbnYuQUdFTlRfU0VDUkVUKSB7XG4gICAgICBuZXh0Q29uZmlnLmVudiA9IHtcbiAgICAgICAgLi4ubmV4dENvbmZpZy5lbnYsXG4gICAgICAgIEFHRU5UX1NFQ1JFVDogY3J5cHRvLnJhbmRvbVVVSUQoKSxcbiAgICAgIH07XG4gICAgICBpZiAoZGVidWcpIHtcbiAgICAgICAgY29uc29sZS5sb2coXCJbd2l0aEFnZW50XSBHZW5lcmF0ZWQgQUdFTlRfU0VDUkVUXCIpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICghYWdlbnRQYXRoUmVnZXggfHwgYWdlbnRGaWxlUGF0aHMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gbmV4dENvbmZpZztcbiAgICB9XG5cbiAgICAvLyBNb2RpZnkgdHVyYm9wYWNrIHJ1bGVzIHRvIGluY2x1ZGUgb3VyIGxvYWRlciBmb3IgYWdlbnQgZmlsZXNcbiAgICBjb25zdCBydWxlcyA9IChuZXh0Q29uZmlnLnR1cmJvcGFjaz8ucnVsZXMgfHwge30pIGFzIFJlY29yZDxcbiAgICAgIHN0cmluZyxcbiAgICAgIFR1cmJvcGFja1J1bGVcbiAgICA+O1xuXG4gICAgZm9yIChjb25zdCBrZXkgb2YgW1wiKi50c1wiLCBcIioudHN4XCIsIFwiKi5qc1wiLCBcIiouanN4XCJdKSB7XG4gICAgICBjb25zdCBleGlzdGluZ1J1bGUgPSBydWxlc1trZXldO1xuICAgICAgaWYgKCFleGlzdGluZ1J1bGUpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIC8qKlxuICAgICAgICogV29ya2Zsb3cncyBydWxlIGhhczogY29uZGl0aW9uLmFsbCA9IFt7IG5vdDogcGF0aCB9LCB7IGNvbnRlbnQ6IC91c2Ugc3RlcHwuLi4vIH1dXG4gICAgICAgKiBXZSB3YW50OiBydW4gbG9hZGVyIGlmIHdvcmtmbG93J3MgY29uZGl0aW9ucyBtYXRjaCBPUiBpdCdzIGFuIGFnZW50IGZpbGUuXG4gICAgICAgKiBTbyB3ZSB3cmFwIGluOiBjb25kaXRpb24uYW55ID0gW2V4aXN0aW5nQ29uZGl0aW9uLCB7IHBhdGg6IGFnZW50UGF0aFJlZ2V4IH1dXG4gICAgICAgKi9cbiAgICAgIHJ1bGVzW2tleV0gPSB7XG4gICAgICAgIC4uLmV4aXN0aW5nUnVsZSxcbiAgICAgICAgbG9hZGVyczogW3sgbG9hZGVyOiBsb2FkZXJQYXRoLCBvcHRpb25zOiBsb2FkZXJPcHRpb25zIH0sIC4uLihleGlzdGluZ1J1bGUubG9hZGVycyB8fCBbXSldLFxuICAgICAgICBjb25kaXRpb246IHtcbiAgICAgICAgICBhbnk6IFtleGlzdGluZ1J1bGUuY29uZGl0aW9uLCB7IHBhdGg6IGFnZW50UGF0aFJlZ2V4IH1dLFxuICAgICAgICB9LFxuICAgICAgfTtcbiAgICB9XG5cbiAgICAvLyBBbHNvIGNvbmZpZ3VyZSB3ZWJwYWNrIGZvciBub24tdHVyYm9wYWNrIGJ1aWxkc1xuICAgIGNvbnN0IGV4aXN0aW5nV2VicGFjayA9IG5leHRDb25maWcud2VicGFjaztcbiAgICBuZXh0Q29uZmlnLndlYnBhY2sgPSAod2VicGFja0NvbmZpZywgY29udGV4dCkgPT4ge1xuICAgICAgd2VicGFja0NvbmZpZy5tb2R1bGUucnVsZXMucHVzaCh7XG4gICAgICAgIHRlc3Q6IChyZXNvdXJjZVBhdGg6IHN0cmluZykgPT4gYWdlbnRGaWxlUGF0aHMuaW5jbHVkZXMocmVzb3VyY2VQYXRoKSxcbiAgICAgICAgdXNlOiBbeyBsb2FkZXI6IGxvYWRlclBhdGgsIG9wdGlvbnM6IGxvYWRlck9wdGlvbnMgfV0sXG4gICAgICB9KTtcbiAgICAgIHJldHVybiBleGlzdGluZ1dlYnBhY2s/Lih3ZWJwYWNrQ29uZmlnLCBjb250ZXh0KSA/PyB3ZWJwYWNrQ29uZmlnO1xuICAgIH07XG5cbiAgICBpZiAoZGVidWcpIHtcbiAgICAgIGNvbnNvbGUubG9nKFwiW3dpdGhBZ2VudF0gQWRkZWQgYWdlbnQgbG9hZGVyIHRvIHR1cmJvcGFjayBydWxlc1wiKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV4dENvbmZpZztcbiAgfTtcbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7O0FBQUEsWUFBWSxZQUFZO0FBQ3hCLFlBQVksUUFBUTtBQUNwQixZQUFZLFVBQVU7QUFTdEIsSUFBTSxlQUFlLGdCQUFJO0FBQ3pCLElBQU0seUJBQXlCO0FBQy9CLElBQU0saUJBQWlCO0FBQ3ZCLElBQU0scUJBQXFCO0FBQzNCLElBQU0sd0JBQXdCLENBQUMsU0FBUyxPQUFPLGFBQWEsU0FBUztBQVNyRSxTQUFTLFVBQVUsS0FBcUI7QUFDdEMsTUFBSSxPQUFPO0FBQ1gsV0FBUyxJQUFJLEdBQUcsSUFBSSxJQUFJLFFBQVEsS0FBSztBQUNuQyxVQUFNLE9BQU8sSUFBSSxXQUFXLENBQUM7QUFFN0IsWUFBUSxRQUFRLEtBQUssT0FBTztBQUU1QixZQUFRO0FBQUEsRUFDVjtBQUNBLFNB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
|