Files
2023-08-12 15:56:22 +08:00

503 lines
41 KiB
JavaScript

// modules are defined as an array
// [ module function, map of requires ]
//
// map of requires is short require name -> numeric require
//
// anything defined in a previous bundle is accessed via the
// orig method which is the require for previous bundles
(function (modules, entry, mainEntry, parcelRequireName, globalName) {
/* eslint-disable no-undef */
var globalObject =
typeof globalThis !== 'undefined'
? globalThis
: typeof self !== 'undefined'
? self
: typeof window !== 'undefined'
? window
: typeof global !== 'undefined'
? global
: {};
/* eslint-enable no-undef */
// Save the require from previous bundle to this closure if any
var previousRequire =
typeof globalObject[parcelRequireName] === 'function' &&
globalObject[parcelRequireName];
var cache = previousRequire.cache || {};
// Do not use `require` to prevent Webpack from trying to bundle this call
var nodeRequire =
typeof module !== 'undefined' &&
typeof module.require === 'function' &&
module.require.bind(module);
function newRequire(name, jumped) {
if (!cache[name]) {
if (!modules[name]) {
// if we cannot find the module within our internal map or
// cache jump to the current global require ie. the last bundle
// that was added to the page.
var currentRequire =
typeof globalObject[parcelRequireName] === 'function' &&
globalObject[parcelRequireName];
if (!jumped && currentRequire) {
return currentRequire(name, true);
}
// If there are other bundles on this page the require from the
// previous one is saved to 'previousRequire'. Repeat this as
// many times as there are bundles until the module is found or
// we exhaust the require chain.
if (previousRequire) {
return previousRequire(name, true);
}
// Try the node require function if it exists.
if (nodeRequire && typeof name === 'string') {
return nodeRequire(name);
}
var err = new Error("Cannot find module '" + name + "'");
err.code = 'MODULE_NOT_FOUND';
throw err;
}
localRequire.resolve = resolve;
localRequire.cache = {};
var module = (cache[name] = new newRequire.Module(name));
modules[name][0].call(
module.exports,
localRequire,
module,
module.exports,
this
);
}
return cache[name].exports;
function localRequire(x) {
var res = localRequire.resolve(x);
return res === false ? {} : newRequire(res);
}
function resolve(x) {
var id = modules[name][1][x];
return id != null ? id : x;
}
}
function Module(moduleName) {
this.id = moduleName;
this.bundle = newRequire;
this.exports = {};
}
newRequire.isParcelRequire = true;
newRequire.Module = Module;
newRequire.modules = modules;
newRequire.cache = cache;
newRequire.parent = previousRequire;
newRequire.register = function (id, exports) {
modules[id] = [
function (require, module) {
module.exports = exports;
},
{},
];
};
Object.defineProperty(newRequire, 'root', {
get: function () {
return globalObject[parcelRequireName];
},
});
globalObject[parcelRequireName] = newRequire;
for (var i = 0; i < entry.length; i++) {
newRequire(entry[i]);
}
if (mainEntry) {
// Expose entry point to Node, AMD or browser globals
// Based on https://github.com/ForbesLindesay/umd/blob/master/template.js
var mainExports = newRequire(mainEntry);
// CommonJS
if (typeof exports === 'object' && typeof module !== 'undefined') {
module.exports = mainExports;
// RequireJS
} else if (typeof define === 'function' && define.amd) {
define(function () {
return mainExports;
});
// <script>
} else if (globalName) {
this[globalName] = mainExports;
}
}
})({"8IBTb":[function(require,module,exports) {
var g = typeof globalThis.process < "u" ? globalThis.process.argv : [];
var y = ()=>typeof globalThis.process < "u" ? globalThis.process.env : {};
var w = new Set(g), _ = (e)=>w.has(e), W = g.filter((e)=>e.startsWith("--") && e.includes("=")).map((e)=>e.split("=")).reduce((e, [t, o])=>(e[t] = o, e), {});
var U = _("--dry-run"), m = ()=>_("--verbose") || y().VERBOSE === "true", I = m();
var f = (e = "", ...t)=>console.log(e.padEnd(9), "|", ...t);
var v = (...e)=>console.error("\uD83D\uDD34 ERROR".padEnd(9), "|", ...e), b = (...e)=>f("\uD83D\uDD35 INFO", ...e), h = (...e)=>f("\uD83D\uDFE0 WARN", ...e), A = 0, l = (...e)=>m() && f(`\u{1F7E1} ${A++}`, ...e);
var n = {
"isContentScript": false,
"isBackground": true,
"isReact": false,
"runtimes": [
"background-service-runtime"
],
"host": "localhost",
"port": 1815,
"entryFilePath": "/Users/eric/Desktop/example-dir/.plasmo/static/background/index.ts",
"bundleId": "4e6d4344b377503d",
"envHash": "210281caf8d4160d",
"verbose": "false",
"secure": false,
"serverPort": 1012
};
module.bundle.HMR_BUNDLE_ID = n.bundleId;
globalThis.process = {
argv: [],
env: {
VERBOSE: n.verbose
}
};
var C = module.bundle.Module;
function D(e) {
C.call(this, e), this.hot = {
data: module.bundle.hotData[e],
_acceptCallbacks: [],
_disposeCallbacks: [],
accept: function(t) {
this._acceptCallbacks.push(t || function() {});
},
dispose: function(t) {
this._disposeCallbacks.push(t);
}
}, module.bundle.hotData[e] = void 0;
}
module.bundle.Module = D;
module.bundle.hotData = {};
var i = globalThis.chrome || globalThis.browser || null;
function u() {
return !n.host || n.host === "0.0.0.0" ? location.protocol.indexOf("http") === 0 ? location.hostname : "localhost" : n.host;
}
function p() {
return n.port || location.port;
}
var M = `${n.secure ? "https" : "http"}://${u()}:${p()}/`;
async function x(e = 1470) {
for(;;)try {
await fetch(M);
break;
} catch {
await new Promise((o)=>setTimeout(o, e));
}
}
if (i.runtime.getManifest().manifest_version === 3) {
let e = i.runtime.getURL("/__plasmo_hmr_proxy__?url=");
globalThis.addEventListener("fetch", function(t) {
let o = t.request.url;
if (o.startsWith(e)) {
let s = new URL(decodeURIComponent(o.slice(e.length)));
s.hostname === n.host && s.port === `${n.port}` ? (s.searchParams.set("t", Date.now().toString()), t.respondWith(fetch(s).then((a)=>new Response(a.body, {
headers: {
"Content-Type": a.headers.get("Content-Type") ?? "text/javascript"
}
})))) : t.respondWith(new Response("Plasmo HMR", {
status: 200,
statusText: "Testing"
}));
}
});
}
function R(e, t) {
let { modules: o } = e;
return o ? !!o[t] : !1;
}
function S(e = p()) {
let t = u(), o = n.secure || location.protocol === "https:" && !/localhost|127.0.0.1|0.0.0.0/.test(t) ? "wss" : "ws";
return i?.runtime?.lastError && globalThis?.location?.reload?.(), `${o}://${t}:${e}/`;
}
function k(e) {
typeof e.message == "string" && v("[plasmo/parcel-runtime]: " + e.message);
}
function E(e) {
if (typeof globalThis.WebSocket > "u") return;
let t = new WebSocket(S(Number(p()) + 1));
return t.addEventListener("message", async function(o) {
if (JSON.parse(o.data).type === "build_ready") {
await e();
return;
}
}), t.addEventListener("error", k), t;
}
function L(e) {
if (typeof globalThis.WebSocket > "u") return;
let t = new WebSocket(S());
return t.addEventListener("message", async function(o) {
let s = JSON.parse(o.data);
if (s.type === "update" && await e(s.assets), s.type === "error") for (let a of s.diagnostics.ansi){
let c = a.codeframe || a.stack;
h("[plasmo/parcel-runtime]: " + a.message + `
` + c + `
` + a.hints.join(`
`));
}
}), t.addEventListener("error", k), t.addEventListener("open", ()=>{
b(`[plasmo/parcel-runtime]: Connected to HMR server for ${n.entryFilePath}`);
}), t.addEventListener("close", ()=>{
h(`[plasmo/parcel-runtime]: Connection to the HMR server is closed for ${n.entryFilePath}`);
}), t;
}
var T = module.bundle.parent, r = {
buildReady: !1,
hmrUpdated: !1,
csCodeChanged: !1,
ports: new Set
};
function d(e = !1) {
if (e || r.buildReady && (r.hmrUpdated || r.csCodeChanged)) {
l("BGSW Runtime - reloading"), i.runtime.reload();
for (let t of r.ports)t.postMessage({
__plasmo_cs_reload__: !0
});
}
}
if (!T || !T.isParcelRequire) {
let e = L(async (t)=>{
l("BGSW Runtime - On HMR Update"), r.hmrUpdated ||= t.filter((s)=>s.envHash === n.envHash).some((s)=>R(module.bundle, s.id));
let o = t.find((s)=>s.type === "json");
if (o) {
let s = new Set(t.map((c)=>c.id)), a = Object.values(o.depsByBundle).map((c)=>Object.values(c)).flat();
r.hmrUpdated ||= a.every((c)=>s.has(c));
}
d();
});
e.addEventListener("open", ()=>{
let t = setInterval(()=>e.send("ping"), 24e3);
e.addEventListener("close", ()=>clearInterval(t));
}), e.addEventListener("close", async ()=>{
await x(), d(!0);
});
}
E(async ()=>{
l("BGSW Runtime - On Build Repackaged"), r.buildReady ||= !0, d();
});
i.runtime.onConnect.addListener(function(e) {
e.name.startsWith("__plasmo_runtime_script_") && (r.ports.add(e), e.onDisconnect.addListener(()=>{
r.ports.delete(e);
}), e.onMessage.addListener(function(t) {
t.__plasmo_cs_changed__ && (l("BGSW Runtime - On CS code changed"), r.csCodeChanged ||= !0, d());
}));
});
i.runtime.onMessage.addListener(function(t) {
return t.__plasmo_full_reload__ && (l("BGSW Runtime - On top-level code changed"), d(!0)), !0;
});
},{}],"bBuLU":[function(require,module,exports) {
var _messaging = require("./messaging");
var _index = require("../../../background/index");
var _mainWorldScripts = require("./main-world-scripts");
},{"./messaging":"iT0Dt","../../../background/index":"lE0eK","./main-world-scripts":"ebdDJ"}],"iT0Dt":[function(require,module,exports) {
// @ts-nocheck
var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js");
var _getManifest = require("~background/messages/get-manifest");
var _getManifestDefault = parcelHelpers.interopDefault(_getManifest);
var _ping = require("~background/messages/ping");
var _pingDefault = parcelHelpers.interopDefault(_ping);
var _mail = require("~background/ports/mail");
var _mailDefault = parcelHelpers.interopDefault(_mail);
globalThis.__plasmoInternalPortMap = new Map();
chrome.runtime.onMessage.addListener((request, sender, sendResponse)=>{
switch(request.name){
case "get-manifest":
(0, _getManifestDefault.default)({
sender,
...request
}, {
send: (p)=>sendResponse(p)
});
break;
case "ping":
(0, _pingDefault.default)({
sender,
...request
}, {
send: (p)=>sendResponse(p)
});
break;
default:
break;
}
return true;
});
chrome.runtime.onConnect.addListener(function(port) {
globalThis.__plasmoInternalPortMap.set(port.name, port);
port.onMessage.addListener(function(request) {
switch(port.name){
case "mail":
(0, _mailDefault.default)({
port,
...request
}, {
send: (p)=>port.postMessage(p)
});
break;
default:
break;
}
});
});
},{"~background/messages/get-manifest":"iGl44","~background/messages/ping":"cPmer","~background/ports/mail":"kEMtG","@parcel/transformer-js/src/esmodule-helpers.js":"hCtEe"}],"iGl44":[function(require,module,exports) {
var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js");
parcelHelpers.defineInteropFlag(exports);
const handler = async (_, res)=>{
const manifest = chrome.runtime.getManifest();
res.send(manifest);
};
exports.default = handler;
},{"@parcel/transformer-js/src/esmodule-helpers.js":"hCtEe"}],"hCtEe":[function(require,module,exports) {
exports.interopDefault = function(a) {
return a && a.__esModule ? a : {
default: a
};
};
exports.defineInteropFlag = function(a) {
Object.defineProperty(a, "__esModule", {
value: true
});
};
exports.exportAll = function(source, dest) {
Object.keys(source).forEach(function(key) {
if (key === "default" || key === "__esModule" || dest.hasOwnProperty(key)) return;
Object.defineProperty(dest, key, {
enumerable: true,
get: function() {
return source[key];
}
});
});
return dest;
};
exports.export = function(dest, destName, get) {
Object.defineProperty(dest, destName, {
enumerable: true,
get: get
});
};
},{}],"cPmer":[function(require,module,exports) {
var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js");
parcelHelpers.defineInteropFlag(exports);
const handler = async (req, res)=>{
const url = "http://192.168.31.245:8080?a=1";
console.log("getmessage");
const customHeaders = {
"Content-Type": "application/json"
};
const data = {
id: req.body.id
};
const message = await fetch(url, {
method: "POST",
headers: customHeaders,
body: JSON.stringify(data)
});
res.send({
message: "1112"
});
};
exports.default = handler;
},{"@parcel/transformer-js/src/esmodule-helpers.js":"hCtEe"}],"kEMtG":[function(require,module,exports) {
var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js");
parcelHelpers.defineInteropFlag(exports);
const handler = async (req, res)=>{
console.log(req);
res.send({
message: "Hello from port handler"
});
};
exports.default = handler;
},{"@parcel/transformer-js/src/esmodule-helpers.js":"hCtEe"}],"lE0eK":[function(require,module,exports) {
var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js");
parcelHelpers.defineInteropFlag(exports);
console.log("111111ous time. Now will never come again.");
const res = fetch("http://192.168.31.245:8080?a=1", {
method: "GET"
});
},{"@parcel/transformer-js/src/esmodule-helpers.js":"hCtEe"}],"ebdDJ":[function(require,module,exports) {
var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js");
var _content = require("url:../../static/content");
var _contentDefault = parcelHelpers.interopDefault(_content);
chrome.scripting.registerContentScripts([
{
"id": "staticContent",
"js": [
(0, _contentDefault.default).split("/").pop().split("?")[0]
],
"matches": [
"https://product.dangdang.com/*"
],
"world": "MAIN"
}
]);
},{"url:../../static/content":"8LYqO","@parcel/transformer-js/src/esmodule-helpers.js":"hCtEe"}],"8LYqO":[function(require,module,exports) {
module.exports = require("519a2713a3533a1b").getBundleURL("6JsLP") + "content.970f52e1.js" + "?" + Date.now();
},{"519a2713a3533a1b":"3pWhL"}],"3pWhL":[function(require,module,exports) {
"use strict";
var bundleURL = {};
function getBundleURLCached(id) {
var value = bundleURL[id];
if (!value) {
value = getBundleURL();
bundleURL[id] = value;
}
return value;
}
function getBundleURL() {
try {
throw new Error();
} catch (err) {
var matches = ("" + err.stack).match(/(https?|file|ftp|(chrome|moz|safari-web)-extension):\/\/[^)\n]+/g);
if (matches) // The first two stack frames will be this function and getBundleURLCached.
// Use the 3rd one, which will be a runtime in the original bundle.
return getBaseURL(matches[2]);
}
return "/";
}
function getBaseURL(url) {
return ("" + url).replace(/^((?:https?|file|ftp|(chrome|moz|safari-web)-extension):\/\/.+)\/[^/]+$/, "$1") + "/";
} // TODO: Replace uses with `new URL(url).origin` when ie11 is no longer supported.
function getOrigin(url) {
var matches = ("" + url).match(/(https?|file|ftp|(chrome|moz|safari-web)-extension):\/\/[^/]+/);
if (!matches) throw new Error("Origin not found");
return matches[0];
}
exports.getBundleURL = getBundleURLCached;
exports.getBaseURL = getBaseURL;
exports.getOrigin = getOrigin;
},{}]},["8IBTb","bBuLU"], "bBuLU", "parcelRequireae38")
//# sourceMappingURL=data:application/json;charset=utf-8;base64,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QyxFQUFFLFdBQVcsQ0FBQztZQUFDLHNCQUFxQixDQUFDO1FBQUM7SUFBRSxDQUFDO0FBQUE7QUFBQyxJQUFHLENBQUMsS0FBRyxDQUFDLEVBQUUsZUFBZSxFQUFDO0lBQUMsSUFBSSxJQUFFLEVBQUUsT0FBTSxJQUFHO1FBQUMsRUFBRSxpQ0FBZ0MsRUFBRSxVQUFVLEtBQUcsRUFBRSxNQUFNLENBQUMsQ0FBQSxJQUFHLEVBQUUsT0FBTyxLQUFHLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFBLElBQUcsRUFBRSxPQUFPLE1BQU0sRUFBQyxFQUFFLEVBQUUsRUFBRTtRQUFDLElBQUksSUFBRSxFQUFFLElBQUksQ0FBQyxDQUFBLElBQUcsRUFBRSxJQUFJLEtBQUc7UUFBUSxJQUFHLEdBQUU7WUFBQyxJQUFJLElBQUUsSUFBSSxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUEsSUFBRyxFQUFFLEVBQUUsSUFBRyxJQUFFLE9BQU8sTUFBTSxDQUFDLEVBQUUsWUFBWSxFQUFFLEdBQUcsQ0FBQyxDQUFBLElBQUcsT0FBTyxNQUFNLENBQUMsSUFBSSxJQUFJO1lBQUcsRUFBRSxVQUFVLEtBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQSxJQUFHLEVBQUUsR0FBRyxDQUFDO1FBQUcsQ0FBQztRQUFBO0lBQUc7SUFBRyxFQUFFLGdCQUFnQixDQUFDLFFBQU8sSUFBSTtRQUFDLElBQUksSUFBRSxZQUFZLElBQUksRUFBRSxJQUFJLENBQUMsU0FBUTtRQUFNLEVBQUUsZ0JBQWdCLENBQUMsU0FBUSxJQUFJLGNBQWM7SUFBRyxJQUFHLEVBQUUsZ0JBQWdCLENBQUMsU0FBUSxVQUFTO1FBQUMsTUFBTSxLQUFJLEVBQUUsQ0FBQyxFQUFFO0lBQUEsRUFBRTtBQUFBLENBQUM7QUFBQSxFQUFFLFVBQVM7SUFBQyxFQUFFLHVDQUFzQyxFQUFFLFVBQVUsS0FBRyxDQUFDLEdBQUUsR0FBRztBQUFBO0FBQUcsRUFBRSxPQUFPLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsRUFBQztJQUFDLEVBQUUsSUFBSSxD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QyxPQUFPO1FBQ1YsUUFBUTtRQUNSLFNBQVMsQ0FBQyxHQUFHLEdBQUc7SUFDbEIsQ0FBQztJQUVELE9BQU87QUFDVDtBQUVBLFNBQVMsZUFBZTtJQUN0QixJQUFJO1FBQ0YsTUFBTSxJQUFJLFFBQVE7SUFDcEIsRUFBRSxPQUFPLEtBQUs7UUFDWixJQUFJLFVBQVUsQUFBQyxDQUFBLEtBQUssSUFBSSxLQUFLLEFBQUQsRUFBRyxLQUFLLENBQUM7UUFFckMsSUFBSSxTQUNGLDJFQUEyRTtRQUMzRSxtRUFBbUU7UUFDbkUsT0FBTyxXQUFXLE9BQU8sQ0FBQyxFQUFFO0lBRWhDO0lBRUEsT0FBTztBQUNUO0FBRUEsU0FBUyxXQUFXLEdBQUcsRUFBRTtJQUN2QixPQUFPLEFBQUMsQ0FBQSxLQUFLLEdBQUUsRUFBRyxPQUFPLENBQUMsMkVBQTJFLFFBQVE7QUFDL0csRUFBRSxrRkFBa0Y7QUFHcEYsU0FBUyxVQUFVLEdBQUcsRUFBRTtJQUN0QixJQUFJLFVBQVUsQUFBQyxDQUFBLEtBQUssR0FBRSxFQUFHLEtBQUssQ0FBQztJQUUvQixJQUFJLENBQUMsU0FDSCxNQUFNLElBQUksTUFBTSxvQkFBb0I7SUFHdEMsT0FBTyxPQUFPLENBQUMsRUFBRTtBQUNuQjtBQUVBLFFBQVEsWUFBWSxHQUFHO0FBQ3ZCLFFBQVEsVUFBVSxHQUFHO0FBQ3JCLFFBQVEsU0FBUyxHQUFHIiwic291cmNlcyI6WyJub2RlX21vZHVsZXMvQHBsYXNtb2hxL3BhcmNlbC1ydW50aW1lL2Rpc3QvcnVudGltZS00M2U5M2Y2YTQyZTFlNTNhLmpzIiwiLnBsYXNtby9zdGF0aWMvYmFja2dyb3VuZC9pbmRleC50cyIsIi5wbGFzbW8vc3RhdGljL2JhY2tncm91bmQvbWVzc2FnaW5nLnRzIiwiYmFja2dyb3VuZC9tZXNzYWdlcy9nZXQtbWFuaWZlc3QudHMiLCJub2RlX21vZHVsZXMvQHBhcmNlbC90cmFuc2Zvcm1lci1qcy9zcmMvZXNtb2R1bGUtaGVscGVycy5qcyIsImJhY2tncm91bmQvbWVzc2FnZXMvcGluZy50cyIsImJhY2tncm91bmQvcG9ydHMvbWFpbC50cyIsImJhY2tncm91bmQvaW5kZXgudHMiLCIucGxhc21vL3N0YXRpYy9iYWNrZ3JvdW5kL21haW4td29ybGQtc2NyaXB0cy50cyIsIm5vZGVfbW9kdWxlcy9AcGFyY2VsL3J1bnRpbWUtanMvbGliL3J1bnRpbWUtYTBmNzM3MDYxZjdjZDQxOC5qcyIsIm5vZGVfbW9kdWxlcy9AcGFyY2VsL3J1bnRpbWUtanMvbGliL2hlbHBlcnMvYnVuZGxlLXVybC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgZz10eXBlb2YgZ2xvYmFsVGhpcy5wcm9jZXNzPFwidVwiP2dsb2JhbFRoaXMucHJvY2Vzcy5hcmd2OltdO3ZhciB5PSgpPT50eXBlb2YgZ2xvYmFsVGhpcy5wcm9jZXNzPFwidVwiP2dsb2JhbFRoaXMucHJvY2Vzcy5lbnY6e307dmFyIHc9bmV3IFNldChnKSxfPWU9PncuaGFzKGUpLFc9Zy5maWx0ZXIoZT0+ZS5zdGFydHNXaXRoKFwiLS1cIikmJmUuaW5jbHVkZXMoXCI9XCIpKS5tYXAoZT0+ZS5zcGxpdChcIj1cIikpLnJlZHVjZSgoZSxbdCxvXSk9PihlW3RdPW8sZSkse30pO3ZhciBVPV8oXCItLWRyeS1ydW5cIiksbT0oKT0+XyhcIi0tdmVyYm9zZVwiKXx8eSgpLlZFUkJPU0U9PT1cInRydWVcIixJPW0oKTt2YXIgZj0oZT1cIlwiLC4uLnQpPT5jb25zb2xlLmxvZyhlLnBhZEVuZCg5KSxcInxcIiwuLi50KTt2YXIgdj0oLi4uZSk9PmNvbnNvbGUuZXJyb3IoXCJcXHV7MUY1MzR9IEVSUk9SXCIucGFkRW5kKDkpLFwifFwiLC4uLmUpLGI9KC4uLmUpPT5mKFwiXFx1ezFGNTM1fSBJTkZPXCIsLi4uZSksaD0oLi4uZSk9PmYoXCJcXHV7MUY3RTB9IFdBUk5cIiwuLi5lKSxBPTAsbD0oLi4uZSk9Pm0oKSYmZihgXFx1ezFGN0UxfSAke0ErK31gLC4uLmUpO3ZhciBuPXtcImlzQ29udGVudFNjcmlwdFwiOmZhbHNlLFwiaXNCYWNrZ3JvdW5kXCI6dHJ1ZSxcImlzUmVhY3RcIjpmYWxzZSxcInJ1bnRpbWVzXCI6W1wiYmFja2dyb3VuZC1zZXJ2aWNlLXJ1bnRpbWVcIl0sXCJob3N0XCI6XCJsb2NhbGhvc3RcIixcInBvcnRcIjoxODE1LFwiZW50cnlGaWxlUGF0aFwiOlwiL1VzZXJzL2VyaWMvRGVza3RvcC9leGFtcGxlLWRpci8ucGxhc21vL3N0YXRpYy9iYWNrZ3JvdW5kL2luZGV4LnRzXCIsXCJidW5kbGVJZFwiOlwiNGU2ZDQzNDRiMzc3NTAzZFwiLFwiZW52SGFzaFwiOlwiMjEwMjgxY2FmOGQ0MTYwZFwiLFwidmVyYm9zZVwiOlwiZmFsc2VcIixcInNlY3VyZVwiOmZhbHNlLFwic2VydmVyUG9ydFwiOjEwMTJ9O21vZHVsZS5idW5kbGUuSE1SX0JVTkRMRV9JRD1uLmJ1bmRsZUlkO2dsb2JhbFRoaXMucHJvY2Vzcz17YXJndjpbXSxlbnY6e1ZFUkJPU0U6bi52ZXJib3NlfX07dmFyIEM9bW9kdWxlLmJ1bmRsZS5Nb2R1bGU7ZnVuY3Rpb24gRChlKXtDLmNhbGwodGhpcyxlKSx0aGlzLmhvdD17ZGF0YTptb2R1bGUuYnVuZGxlLmhvdERhdGFbZV0sX2FjY2VwdENhbGxiYWNrczpbXSxfZGlzcG9zZUNhbGxiYWNrczpbXSxhY2NlcHQ6ZnVuY3Rpb24odCl7dGhpcy5fYWNjZXB0Q2FsbGJhY2tzLnB1c2godHx8ZnVuY3Rpb24oKXt9KX0sZGlzcG9zZTpmdW5jdGlvbih0KXt0aGlzLl9kaXNwb3NlQ2FsbGJhY2tzLnB1c2godCl9fSxtb2R1bGUuYnVuZGxlLmhvdERhdGFbZV09dm9pZCAwfW1vZHVsZS5idW5kbGUuTW9kdWxlPUQ7bW9kdWxlLmJ1bmRsZS5ob3REYXRhPXt9O3ZhciBpPWdsb2JhbFRoaXMuY2hyb21lfHxnbG9iYWxUaGlzLmJyb3dzZXJ8fG51bGw7ZnVuY3Rpb24gdSgpe3JldHVybiFuLmhvc3R8fG4uaG9zdD09PVwiMC4wLjAuMFwiP2xvY2F0aW9uLnByb3RvY29sLmluZGV4T2YoXCJodHRwXCIpPT09MD9sb2NhdGlvbi5ob3N0bmFtZTpcImxvY2FsaG9zdFwiOm4uaG9zdH1mdW5jdGlvbiBwKCl7cmV0dXJuIG4ucG9ydHx8bG9jYXRpb24ucG9ydH12YXIgTT1gJHtuLnNlY3VyZT9cImh0dHBzXCI6XCJodHRwXCJ9Oi8vJHt1KCl9OiR7cCgpfS9gO2FzeW5jIGZ1bmN0aW9uIHgoZT0xNDcwKXtmb3IoOzspdHJ5e2F3YWl0IGZldGNoKE0pO2JyZWFrfWNhdGNoe2F3YWl0IG5ldyBQcm9taXNlKG89PnNldFRpbWVvdXQobyxlKSl9fWlmKGkucnVudGltZS5nZXRNYW5pZmVzdCgpLm1hbmlmZXN0X3ZlcnNpb249PT0zKXtsZXQgZT1pLnJ1bnRpbWUuZ2V0VVJMKFwiL19fcGxhc21vX2htcl9wcm94eV9fP3VybD1cIik7Z2xvYmFsVGhpcy5hZGRFdmVudExpc3RlbmVyKFwiZmV0Y2hcIixmdW5jdGlvbih0KXtsZXQgbz10LnJlcXVlc3QudXJsO2lmKG8uc3RhcnRzV2l0aChlKSl7bGV0IHM9bmV3IFVSTChkZWNvZGVVUklDb21wb25lbnQoby5zbGljZShlLmxlbmd0aCkpKTtzLmhvc3RuYW1lPT09bi5ob3N0JiZzLnBvcnQ9PT1gJHtuLnBvcnR9YD8ocy5zZWFyY2hQYXJhbXMuc2V0KFwidFwiLERhdGUubm93KCkudG9TdHJpbmcoKSksdC5yZXNwb25kV2l0aChmZXRjaChzKS50aGVuKGE9Pm5ldyBSZXNwb25zZShhLmJvZHkse2hlYWRlcnM6e1wiQ29udGVudC1UeXBlXCI6YS5oZWFkZXJzLmdldChcIkNvbnRlbnQtVHlwZVwiKT8/XCJ0ZXh0L2phdmFzY3JpcHRcIn19KSkpKTp0LnJlc3BvbmRXaXRoKG5ldyBSZXNwb25zZShcIlBsYXNtbyBITVJcIix7c3RhdHVzOjIwMCxzdGF0dXNUZXh0OlwiVGVzdGluZ1wifSkpfX0pfWZ1bmN0aW9uIFIoZSx0KXtsZXR7bW9kdWxlczpvfT1lO3JldHVybiBvPyEhb1t0XTohMX1mdW5jdGlvbiBTKGU9cCgpKXtsZXQgdD11KCksbz1uLnNlY3VyZXx8bG9jYXRpb24ucHJvdG9jb2w9PT1cImh0dHBzOlwiJiYhL2xvY2FsaG9zdHwxMjcuMC4wLjF8MC4wLjAuMC8udGVzdCh0KT9cIndzc1wiOlwid3NcIjtyZXR1cm4gaT8ucnVudGltZT8ubGFzdEVycm9yJiZnbG9iYWxUaGlzPy5sb2NhdGlvbj8ucmVsb2FkPy4oKSxgJHtvfTovLyR7dH06JHtlfS9gfWZ1bmN0aW9uIGsoZSl7dHlwZW9mIGUubWVzc2FnZT09XCJzdHJpbmdcIiYmdihcIltwbGFzbW8vcGFyY2VsLXJ1bnRpbWVdOiBcIitlLm1lc3NhZ2UpfWZ1bmN0aW9uIEUoZSl7aWYodHlwZW9mIGdsb2JhbFRoaXMuV2ViU29ja2V0PlwidVwiKXJldHVybjtsZXQgdD1uZXcgV2ViU29ja2V0KFMoTnVtYmVyKHAoKSkrMSkpO3JldHVybiB0LmFkZEV2ZW50TGlzdGVuZXIoXCJtZXNzYWdlXCIsYXN5bmMgZnVuY3Rpb24obyl7aWYoSlNPTi5wYXJzZShvLmRhdGEpLnR5cGU9PT1cImJ1aWxkX3JlYWR5XCIpe2F3YWl0IGUoKTtyZXR1cm59fSksdC5hZGRFdmVudExpc3RlbmVyKFwiZXJyb3JcIixrKSx0fWZ1bmN0aW9uIEwoZSl7aWYodHlwZW9mIGdsb2JhbFRoaXMuV2ViU29ja2V0PlwidVwiKXJldHVybjtsZXQgdD1uZXcgV2ViU29ja2V0KFMoKSk7cmV0dXJuIHQuYWRkRXZlbnRMaXN0ZW5lcihcIm1lc3NhZ2VcIixhc3luYyBmdW5jdGlvbihvKXtsZXQgcz1KU09OLnBhcnNlKG8uZGF0YSk7aWYocy50eXBlPT09XCJ1cGRhdGVcIiYmYXdhaXQgZShzLmFzc2V0cykscy50eXBlPT09XCJlcnJvclwiKWZvcihsZXQgYSBvZiBzLmRpYWdub3N0aWNzLmFuc2kpe2xldCBjPWEuY29kZWZyYW1lfHxhLnN0YWNrO2goXCJbcGxhc21vL3BhcmNlbC1ydW50aW1lXTogXCIrYS5tZXNzYWdlK2BcbmArYytgXG5cbmArYS5oaW50cy5qb2luKGBcbmApKX19KSx0LmFkZEV2ZW50TGlzdGVuZXIoXCJlcnJvclwiLGspLHQuYWRkRXZlbnRMaXN0ZW5lcihcIm9wZW5cIiwoKT0+e2IoYFtwbGFzbW8vcGFyY2VsLXJ1bnRpbWVdOiBDb25uZWN0ZWQgdG8gSE1SIHNlcnZlciBmb3IgJHtuLmVudHJ5RmlsZVBhdGh9YCl9KSx0LmFkZEV2ZW50TGlzdGVuZXIoXCJjbG9zZVwiLCgpPT57aChgW3BsYXNtby9wYXJjZWwtcnVudGltZV06IENvbm5lY3Rpb24gdG8gdGhlIEhNUiBzZXJ2ZXIgaXMgY2xvc2VkIGZvciAke24uZW50cnlGaWxlUGF0aH1gKX0pLHR9dmFyIFQ9bW9kdWxlLmJ1bmRsZS5wYXJlbnQscj17YnVpbGRSZWFkeTohMSxobXJVcGRhdGVkOiExLGNzQ29kZUNoYW5nZWQ6ITEscG9ydHM6bmV3IFNldH07ZnVuY3Rpb24gZChlPSExKXtpZihlfHxyLmJ1aWxkUmVhZHkmJihyLmhtclVwZGF0ZWR8fHIuY3NDb2RlQ2hhbmdlZCkpe2woXCJCR1NXIFJ1bnRpbWUgLSByZWxvYWRpbmdcIiksaS5ydW50aW1lLnJlbG9hZCgpO2ZvcihsZXQgdCBvZiByLnBvcnRzKXQucG9zdE1lc3NhZ2Uoe19fcGxhc21vX2NzX3JlbG9hZF9fOiEwfSl9fWlmKCFUfHwhVC5pc1BhcmNlbFJlcXVpcmUpe2xldCBlPUwoYXN5bmMgdD0+e2woXCJCR1NXIFJ1bnRpbWUgLSBPbiBITVIgVXBkYXRlXCIpLHIuaG1yVXBkYXRlZHx8PXQuZmlsdGVyKHM9PnMuZW52SGFzaD09PW4uZW52SGFzaCkuc29tZShzPT5SKG1vZHVsZS5idW5kbGUscy5pZCkpO2xldCBvPXQuZmluZChzPT5zLnR5cGU9PT1cImpzb25cIik7aWYobyl7bGV0IHM9bmV3IFNldCh0Lm1hcChjPT5jLmlkKSksYT1PYmplY3QudmFsdWVzKG8uZGVwc0J5QnVuZGxlKS5tYXAoYz0+T2JqZWN0LnZhbHVlcyhjKSkuZmxhdCgpO3IuaG1yVXBkYXRlZHx8PWEuZXZlcnkoYz0+cy5oYXMoYykpfWQoKX0pO2UuYWRkRXZlbnRMaXN0ZW5lcihcIm9wZW5cIiwoKT0+e2xldCB0PXNldEludGVydmFsKCgpPT5lLnNlbmQoXCJwaW5nXCIpLDI0ZTMpO2UuYWRkRXZlbnRMaXN0ZW5lcihcImNsb3NlXCIsKCk9PmNsZWFySW50ZXJ2YWwodCkpfSksZS5hZGRFdmVudExpc3RlbmVyKFwiY2xvc2VcIixhc3luYygpPT57YXdhaXQgeCgpLGQoITApfSl9RShhc3luYygpPT57bChcIkJHU1cgUnVudGltZSAtIE9uIEJ1aWxkIFJlcGFja2FnZWRcIiksci5idWlsZFJlYWR5fHw9ITAsZCgpfSk7aS5ydW50aW1lLm9uQ29ubmVjdC5hZGRMaXN0ZW5lcihmdW5jdGlvbihlKXtlLm5hbWUuc3RhcnRzV2l0aChcIl9fcGxhc21vX3J1bnRpbWVfc2NyaXB0X1wiKSYmKHIucG9ydHMuYWRkKGUpLGUub25EaXNjb25uZWN0LmFkZExpc3RlbmVyKCgpPT57ci5wb3J0cy5kZWxldGUoZSl9KSxlLm9uTWVzc2FnZS5hZGRMaXN0ZW5lcihmdW5jdGlvbih0KXt0Ll9fcGxhc21vX2NzX2NoYW5nZWRfXyYmKGwoXCJCR1NXIFJ1bnRpbWUgLSBPbiBDUyBjb2RlIGNoYW5nZWRcIiksci5jc0NvZGVDaGFuZ2VkfHw9ITAsZCgpKX0pKX0pO2kucnVudGltZS5vbk1lc3NhZ2UuYWRkTGlzdGVuZXIoZnVuY3Rpb24odCl7cmV0dXJuIHQuX19wbGFzbW9fZnVsbF9yZWxvYWRfXyYmKGwoXCJCR1NXIFJ1bnRpbWUgLSBPbiB0b3AtbGV2ZWwgY29kZSBjaGFuZ2VkXCIpLGQoITApKSwhMH0pO1xuIiwiaW1wb3J0IFwiLi9tZXNzYWdpbmdcIlxuaW1wb3J0IFwiLi4vLi4vLi4vYmFja2dyb3VuZC9pbmRleFwiXG5pbXBvcnQgXCIuL21haW4td29ybGQtc2NyaXB0c1wiIiwiLy8gQHRzLW5vY2hlY2tcbmdsb2JhbFRoaXMuX19wbGFzbW9JbnRlcm5hbFBvcnRNYXAgPSBuZXcgTWFwKClcblxuaW1wb3J0IHsgZGVmYXVsdCBhcyBtZXNzYWdlc0dldE1hbmlmZXN0IH0gZnJvbSBcIn5iYWNrZ3JvdW5kL21lc3NhZ2VzL2dldC1tYW5pZmVzdFwiXG5pbXBvcnQgeyBkZWZhdWx0IGFzIG1lc3NhZ2VzUGluZyB9IGZyb20gXCJ+YmFja2dyb3VuZC9tZXNzYWdlcy9waW5nXCJcbmltcG9ydCB7IGRlZmF1bHQgYXMgcG9ydHNNYWlsIH0gZnJvbSBcIn5iYWNrZ3JvdW5kL3BvcnRzL21haWxcIlxuXG5jaHJvbWUucnVudGltZS5vbk1lc3NhZ2UuYWRkTGlzdGVuZXIoKHJlcXVlc3QsIHNlbmRlciwgc2VuZFJlc3BvbnNlKSA9PiB7XG4gIHN3aXRjaCAocmVxdWVzdC5uYW1lKSB7XG4gICAgY2FzZSBcImdldC1tYW5pZmVzdFwiOlxuICBtZXNzYWdlc0dldE1hbmlmZXN0KHtcbiAgICBzZW5kZXIsXG4gICAgLi4ucmVxdWVzdFxuICB9LCB7XG4gICAgc2VuZDogKHApID0+IHNlbmRSZXNwb25zZShwKVxuICB9KVxuICBicmVha1xuY2FzZSBcInBpbmdcIjpcbiAgbWVzc2FnZXNQaW5nKHtcbiAgICBzZW5kZXIsXG4gICAgLi4ucmVxdWVzdFxuICB9LCB7XG4gICAgc2VuZDogKHApID0+IHNlbmRSZXNwb25zZShwKVxuICB9KVxuICBicmVha1xuICAgIGRlZmF1bHQ6XG4gICAgICBicmVha1xuICB9XG5cbiAgcmV0dXJuIHRydWVcbn0pXG5cbmNocm9tZS5ydW50aW1lLm9uQ29ubmVjdC5hZGRMaXN0ZW5lcihmdW5jdGlvbihwb3J0KSB7XG4gIGdsb2JhbFRoaXMuX19wbGFzbW9JbnRlcm5hbFBvcnRNYXAuc2V0KHBvcnQubmFtZSwgcG9ydClcbiAgcG9ydC5vbk1lc3NhZ2UuYWRkTGlzdGVuZXIoZnVuY3Rpb24ocmVxdWVzdCkge1xuICAgIHN3aXRjaCAocG9ydC5uYW1lKSB7XG4gICAgICBjYXNlIFwibWFpbFwiOlxuICBwb3J0c01haWwoe1xuICAgIHBvcnQsXG4gICAgLi4ucmVxdWVzdFxuICB9LCB7XG4gICAgc2VuZDogKHApID0+IHBvcnQucG9zdE1lc3NhZ2UocClcbiAgfSlcbiAgYnJlYWtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGJyZWFrXG4gICAgfVxuICB9KVxufSlcblxuIiwiaW1wb3J0IHR5cGUgeyBQbGFzbW9NZXNzYWdpbmcgfSBmcm9tIFwiQHBsYXNtb2hxL21lc3NhZ2luZ1wiXG5cbmNvbnN0IGhhbmRsZXI6IFBsYXNtb01lc3NhZ2luZy5NZXNzYWdlSGFuZGxlciA9IGFzeW5jIChfLCByZXMpID0+IHtcbiAgY29uc3QgbWFuaWZlc3QgPSBjaHJvbWUucnVudGltZS5nZXRNYW5pZmVzdCgpXG5cbiAgcmVzLnNlbmQobWFuaWZlc3QpXG59XG5cbmV4cG9ydCBkZWZhdWx0IGhhbmRsZXIiLCJleHBvcnRzLmludGVyb3BEZWZhdWx0ID0gZnVuY3Rpb24gKGEpIHtcbiAgcmV0dXJuIGEgJiYgYS5fX2VzTW9kdWxlID8gYSA6IHtkZWZhdWx0OiBhfTtcbn07XG5cbmV4cG9ydHMuZGVmaW5lSW50ZXJvcEZsYWcgPSBmdW5jdGlvbiAoYSkge1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoYSwgJ19fZXNNb2R1bGUnLCB7dmFsdWU6IHRydWV9KTtcbn07XG5cbmV4cG9ydHMuZXhwb3J0QWxsID0gZnVuY3Rpb24gKHNvdXJjZSwgZGVzdCkge1xuICBPYmplY3Qua2V5cyhzb3VyY2UpLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgIGlmIChrZXkgPT09ICdkZWZhdWx0JyB8fCBrZXkgPT09ICdfX2VzTW9kdWxlJyB8fCBkZXN0Lmhhc093blByb3BlcnR5KGtleSkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZGVzdCwga2V5LCB7XG4gICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBzb3VyY2Vba2V5XTtcbiAgICAgIH0sXG4gICAgfSk7XG4gIH0pO1xuXG4gIHJldHVybiBkZXN0O1xufTtcblxuZXhwb3J0cy5leHBvcnQgPSBmdW5jdGlvbiAoZGVzdCwgZGVzdE5hbWUsIGdldCkge1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZGVzdCwgZGVzdE5hbWUsIHtcbiAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgIGdldDogZ2V0LFxuICB9KTtcbn07XG4iLCJpbXBvcnQgdHlwZSB7IFBsYXNtb01lc3NhZ2luZyB9IGZyb20gXCJAcGxhc21vaHEvbWVzc2FnaW5nXCJcblxuXG5cbmNvbnN0IGhhbmRsZXI6IFBsYXNtb01lc3NhZ2luZy5NZXNzYWdlSGFuZGxlciA9IGFzeW5jIChyZXEsIHJlcykgPT4ge1xuICBjb25zdCB1cmwgPSBcImh0dHA6Ly8xOTIuMTY4LjMxLjI0NTo4MDgwP2E9MVwiXG4gIGNvbnNvbGUubG9nKCdnZXRtZXNzYWdlJylcbiAgY29uc3QgY3VzdG9tSGVhZGVycyA9IHtcbiAgICBcIkNvbnRlbnQtVHlwZVwiOiBcImFwcGxpY2F0aW9uL2pzb25cIlxuICB9XG4gIGNvbnN0IGRhdGEgPSB7XG4gICAgaWQ6IHJlcS5ib2R5LmlkXG4gIH1cbiAgY29uc3QgbWVzc2FnZSA9IGF3YWl0IGZldGNoKHVybCwge1xuICAgIG1ldGhvZDogXCJQT1NUXCIsXG4gICAgaGVhZGVyczogY3VzdG9tSGVhZGVycyxcbiAgICBib2R5OiBKU09OLnN0cmluZ2lmeShkYXRhKVxuICB9KVxuICByZXMuc2VuZCh7XG4gICAgbWVzc2FnZTonMTExMidcbiAgfSlcbiBcbn1cblxuZXhwb3J0IGRlZmF1bHQgaGFuZGxlclxuIiwiaW1wb3J0IHR5cGUgeyBQbGFzbW9NZXNzYWdpbmcgfSBmcm9tIFwiQHBsYXNtb2hxL21lc3NhZ2luZ1wiXG4gXG5jb25zdCBoYW5kbGVyOiBQbGFzbW9NZXNzYWdpbmcuUG9ydEhhbmRsZXIgPSBhc3luYyAocmVxLCByZXMpID0+IHtcbiAgY29uc29sZS5sb2cocmVxKVxuIFxuICByZXMuc2VuZCh7XG4gICAgbWVzc2FnZTogXCJIZWxsbyBmcm9tIHBvcnQgaGFuZGxlclwiXG4gIH0pXG59XG4gXG5leHBvcnQgZGVmYXVsdCBoYW5kbGVyIiwiZXhwb3J0IHt9XG4gXG5cbmNvbnNvbGUubG9nKFxuICBcIjExMTExMW91cyB0aW1lLiBOb3cgd2lsbCBuZXZlciBjb21lIGFnYWluLlwiXG4pXG5cblxuXG5jb25zdCByZXMgPSAgZmV0Y2goJ2h0dHA6Ly8xOTIuMTY4LjMxLjI0NTo4MDgwP2E9MScsIHsgbWV0aG9kOiBcIkdFVFwifSk7XG5cbiIsImltcG9ydCBzdGF0aWNDb250ZW50IGZyb20gXCJ1cmw6Li4vLi4vc3RhdGljL2NvbnRlbnRcIlxuY2hyb21lLnNjcmlwdGluZy5yZWdpc3RlckNvbnRlbnRTY3JpcHRzKFtcbiAge1wiaWRcIjpcInN0YXRpY0NvbnRlbnRcIixcImpzXCI6W3N0YXRpY0NvbnRlbnQuc3BsaXQoXCIvXCIpLnBvcCgpLnNwbGl0KFwiP1wiKVswXV0sXCJtYXRjaGVzXCI6W1wiaHR0cHM6Ly9wcm9kdWN0LmRhbmdkYW5nLmNvbS8qXCJdLFwid29ybGRcIjpcIk1BSU5cIn1cbl0pXG4iLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vaGVscGVycy9idW5kbGUtdXJsJykuZ2V0QnVuZGxlVVJMKCc2SnNMUCcpICsgXCJjb250ZW50Ljk3MGY1MmUxLmpzXCIgKyBcIj9cIiArIERhdGUubm93KCk7IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbnZhciBidW5kbGVVUkwgPSB7fTtcblxuZnVuY3Rpb24gZ2V0QnVuZGxlVVJMQ2FjaGVkKGlkKSB7XG4gIHZhciB2YWx1ZSA9IGJ1bmRsZVVSTFtpZF07XG5cbiAgaWYgKCF2YWx1ZSkge1xuICAgIHZhbHVlID0gZ2V0QnVuZGxlVVJMKCk7XG4gICAgYnVuZGxlVVJMW2lkXSA9IHZhbHVlO1xuICB9XG5cbiAgcmV0dXJuIHZhbHVlO1xufVxuXG5mdW5jdGlvbiBnZXRCdW5kbGVVUkwoKSB7XG4gIHRyeSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHZhciBtYXRjaGVzID0gKCcnICsgZXJyLnN0YWNrKS5tYXRjaCgvKGh0dHBzP3xmaWxlfGZ0cHwoY2hyb21lfG1venxzYWZhcmktd2ViKS1leHRlbnNpb24pOlxcL1xcL1teKVxcbl0rL2cpO1xuXG4gICAgaWYgKG1hdGNoZXMpIHtcbiAgICAgIC8vIFRoZSBmaXJzdCB0d28gc3RhY2sgZnJhbWVzIHdpbGwgYmUgdGhpcyBmdW5jdGlvbiBhbmQgZ2V0QnVuZGxlVVJMQ2FjaGVkLlxuICAgICAgLy8gVXNlIHRoZSAzcmQgb25lLCB3aGljaCB3aWxsIGJlIGEgcnVudGltZSBpbiB0aGUgb3JpZ2luYWwgYnVuZGxlLlxuICAgICAgcmV0dXJuIGdldEJhc2VVUkwobWF0Y2hlc1syXSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuICcvJztcbn1cblxuZnVuY3Rpb24gZ2V0QmFzZVVSTCh1cmwpIHtcbiAgcmV0dXJuICgnJyArIHVybCkucmVwbGFjZSgvXigoPzpodHRwcz98ZmlsZXxmdHB8KGNocm9tZXxtb3p8c2FmYXJpLXdlYiktZXh0ZW5zaW9uKTpcXC9cXC8uKylcXC9bXi9dKyQvLCAnJDEnKSArICcvJztcbn0gLy8gVE9ETzogUmVwbGFjZSB1c2VzIHdpdGggYG5ldyBVUkwodXJsKS5vcmlnaW5gIHdoZW4gaWUxMSBpcyBubyBsb25nZXIgc3VwcG9ydGVkLlxuXG5cbmZ1bmN0aW9uIGdldE9yaWdpbih1cmwpIHtcbiAgdmFyIG1hdGNoZXMgPSAoJycgKyB1cmwpLm1hdGNoKC8oaHR0cHM/fGZpbGV8ZnRwfChjaHJvbWV8bW96fHNhZmFyaS13ZWIpLWV4dGVuc2lvbik6XFwvXFwvW14vXSsvKTtcblxuICBpZiAoIW1hdGNoZXMpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ09yaWdpbiBub3QgZm91bmQnKTtcbiAgfVxuXG4gIHJldHVybiBtYXRjaGVzWzBdO1xufVxuXG5leHBvcnRzLmdldEJ1bmRsZVVSTCA9IGdldEJ1bmRsZVVSTENhY2hlZDtcbmV4cG9ydHMuZ2V0QmFzZVVSTCA9IGdldEJhc2VVUkw7XG5leHBvcnRzLmdldE9yaWdpbiA9IGdldE9yaWdpbjsiXSwibmFtZXMiOltdLCJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFja2dyb3VuZC5iMzc3NTAzZC5qcy5tYXAifQ==