mxcad-app 1.0.33 → 1.0.35
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/LICENSE +3 -0
- package/LICENSE_CN +4 -0
- package/THIRD-PARTY-NOTICES.txt +19058 -0
- package/dist/chunks/index28.js.gz +0 -0
- package/dist/chunks/index37.js.gz +0 -0
- package/dist/chunks/lib.js.gz +0 -0
- package/dist/chunks/mxcad.js.gz +0 -0
- package/dist/chunks/mxdraw.js.gz +0 -0
- package/dist/chunks/sandbox.js.gz +0 -0
- package/dist/chunks/zod.js.gz +0 -0
- package/dist/index.cjs.gz +0 -0
- package/dist/index.d.ts +29 -29
- package/dist/index.js +1 -1
- package/dist/index.umd.js.gz +0 -0
- package/dist/mxcad.d.ts +105 -1
- package/dist/mxcadAppAssets/mxcad.umd.js.gz +0 -0
- package/dist/mxcadAppAssets/mxdraw.umd.js.gz +0 -0
- package/dist/mxcadAppAssets/wasm/2d/mxdrawassembly_min.js.gz +0 -0
- package/dist/mxcadAppAssets/wasm/2d/mxdrawassembly_min.wasm.gz +0 -0
- package/dist/mxcadAppAssets/wasm/2d-st/mxdrawassembly_min.js.gz +0 -0
- package/dist/mxcadAppAssets/wasm/2d-st/mxdrawassembly_minst.wasm.gz +0 -0
- package/dist/mxdraw.d.ts +10 -1
- package/dist/styles/style.css.gz +0 -0
- package/packToolPlugin/api-map.json.d.ts +1 -0
- package/packToolPlugin/{index-Da3ocqZH.mjs → index-C-cFEcIk.mjs} +2 -1
- package/packToolPlugin/{index-diNswxuk.js → index-DRKNKLRx.js} +3 -2
- package/packToolPlugin/rollup/index.cjs +1 -1
- package/packToolPlugin/rollup/index.mjs +1 -1
- package/packToolPlugin/vite/index.cjs +1 -1
- package/packToolPlugin/vite/index.mjs +1 -1
- package/packToolPlugin/webpack/index.cjs +1 -1
- package/packToolPlugin/webpack/index.mjs +1 -1
- package/package.json +2 -1
|
@@ -124,6 +124,7 @@ const mxcad = [
|
|
|
124
124
|
"MxCADUiPrInt",
|
|
125
125
|
"MxCADUiPrKeyWord",
|
|
126
126
|
"MxCADUiPrPoint",
|
|
127
|
+
"MxCADUiPrPointTransform",
|
|
127
128
|
"MxCADUiPrString",
|
|
128
129
|
"MxCADUtility",
|
|
129
130
|
"MxCADUtilityClass",
|
|
@@ -1300,7 +1301,7 @@ function getSourceAssetsPath() {
|
|
|
1300
1301
|
if (typeof __filename !== "undefined") {
|
|
1301
1302
|
currentFile = __filename;
|
|
1302
1303
|
} else {
|
|
1303
|
-
currentFile = url.fileURLToPath(typeof document === "undefined" ? require("url").pathToFileURL(__filename).href : _documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === "SCRIPT" && _documentCurrentScript.src || new URL("index-
|
|
1304
|
+
currentFile = url.fileURLToPath(typeof document === "undefined" ? require("url").pathToFileURL(__filename).href : _documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === "SCRIPT" && _documentCurrentScript.src || new URL("index-DRKNKLRx.js", document.baseURI).href);
|
|
1304
1305
|
}
|
|
1305
1306
|
const packageRoot = path.resolve(currentFile, "..", "..", "..");
|
|
1306
1307
|
const assetsPath = path.resolve(packageRoot, name, "dist", "mxcadAppAssets");
|
|
@@ -1510,4 +1511,4 @@ exports.getContentType = getContentType;
|
|
|
1510
1511
|
exports.getExternals = getExternals;
|
|
1511
1512
|
exports.getSourceAssetsPath = getSourceAssetsPath;
|
|
1512
1513
|
exports.resolveOptions = resolveOptions;
|
|
1513
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXgtZGlOc3d4dWsuanMiLCJzb3VyY2VzIjpbIi4uLy4uL3BhY2tUb29sUGx1Z2luU3JjL3NoYXJlZC9pbmRleC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJcclxuLy8gcGx1Z2lucy9zaGFyZWQvaW5kZXgudHNcclxuaW1wb3J0IHsgYmFzZW5hbWUsIGpvaW4sIHJlbGF0aXZlLCByZXNvbHZlIH0gZnJvbSAncGF0aCc7XHJcbmltcG9ydCBmcywgeyBOb1BhcmFtQ2FsbGJhY2sgfSBmcm9tICdmcyc7XHJcbmltcG9ydCB7IGZpbGVVUkxUb1BhdGggfSBmcm9tICd1cmwnO1xyXG5pbXBvcnQgeyBuYW1lIH0gZnJvbSBcIi4uLy4uL2xpYi9wYWNrYWdlLmpzb25cIlxyXG5cclxuaW1wb3J0IHsgTXhRdWlja0NvbW1hbmQgfSBmcm9tIFwiLi90eXBlcy9teFF1aWNrQ29tbWFuZC5kXCJcclxuaW1wb3J0IHsgTXhTZXJ2ZXJDb25maWcgfSBmcm9tIFwiLi90eXBlcy9teFNlcnZlckNvbmZpZy5kXCJcclxuaW1wb3J0IHsgTXhTa2V0Y2hlc0FuZE5vdGVzVWlDb25maWcgfSBmcm9tIFwiLi90eXBlcy9teFNrZXRjaGVzQW5kTm90ZXNVaUNvbmZpZy5kXCJcclxuaW1wb3J0IHsgTXhVaUNvbmZpZyB9IGZyb20gXCIuL3R5cGVzL214VWlDb25maWcuZFwiXHJcbmltcG9ydCB7IE14Y2FkVWlDb25maWcgfSBmcm9tIFwiLi90eXBlcy9teGNhZFVpQ29uZmlnLmRcIlxyXG5pbXBvcnQgeyBWdWV0aWZ5VGhlbWVDb25maWcgfSBmcm9tIFwiLi90eXBlcy92dWV0aWZ5VGhlbWVDb25maWcuZFwiXHJcbmltcG9ydCBhcGlNYXAgZnJvbSAnLi4vYXBpLW1hcC5qc29uJ1xyXG5leHBvcnQgY29uc3QgZ2V0QXBpTWFwID0gKCkgPT4gYXBpTWFwXHJcbmV4cG9ydCBpbnRlcmZhY2UgTXhQbHVnaW5Db25maWcge1xyXG4gIHBsdWdpbnM6IChzdHJpbmcgfCB7XHJcbiAgICBuYW1lPzogc3RyaW5nLFxyXG4gICAgaXNBZnRlckxvYWQ/OiBib29sZWFuLFxyXG4gICAgZGlyPzogYm9vbGVhbixcclxuICAgIHZlcnNpb24/OiBzdHJpbmdcclxuICB9KVtdXHJcbn1cclxuLy8gPT09IOaWsOWinu+8mumFjee9ruaWh+S7tuWQjeW4uOmHjyA9PT1cclxuZXhwb3J0IGNvbnN0IENPTkZJR19GSUxFTkFNRVMgPSBbXHJcbiAgLy8gJ214Y2FkVWlDb25maWcuanNvbicsXHJcbiAgJ214UXVpY2tDb21tYW5kLmpzb24nLFxyXG4gICdteFNlcnZlckNvbmZpZy5qc29uJyxcclxuICAnbXhTa2V0Y2hlc0FuZE5vdGVzVWlDb25maWcuanNvbicsXHJcbiAgJ214VWlDb25maWcuanNvbicsXHJcbiAgJ3Z1ZXRpZnlUaGVtZUNvbmZpZy5qc29uJyxcclxuICAvLyAncGx1Z2lucy9jb25maWcuanNvbidcclxuXSBhcyBjb25zdDtcclxuLyoqXHJcbiAqIOmFjee9ruaWh+S7tuWkhOeQhuWZqFxyXG4gKiDlj6/pgInvvJrlr7nnibnlrprphY3nva7mlofku7bov5vooYzov5DooYzml7bkv67mlLlcclxuICog5Ye95pWw5o6l5pS25Y6f5aeLIEpTT04g5pWw5o2u77yM6L+U5Zue5L+u5pS55ZCO55qEIEpTT04g5pWw5o2u77yI5Y+v5byC5q2l77yJXHJcbiAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIFRyYW5zZm9ybUZ1bmN0aW9ucyB7XHJcbiAgLy8gdHJhbnNmb3JtTXhjYWRVaUNvbmZpZyhkYXRhOiBNeGNhZFVpQ29uZmlnKTogUHJvbWlzZTxNeGNhZFVpQ29uZmlnPiB8IE14Y2FkVWlDb25maWc7XHJcbiAgdHJhbnNmb3JtTXhRdWlja0NvbW1hbmQoZGF0YTogTXhRdWlja0NvbW1hbmQpOiBQcm9taXNlPE14UXVpY2tDb21tYW5kPiB8IE14UXVpY2tDb21tYW5kO1xyXG4gIHRyYW5zZm9ybU14U2VydmVyQ29uZmlnKGRhdGE6IE14U2VydmVyQ29uZmlnKTogUHJvbWlzZTxNeFNlcnZlckNvbmZpZz4gfCBNeFNlcnZlckNvbmZpZztcclxuICB0cmFuc2Zvcm1NeFNrZXRjaGVzQW5kTm90ZXNVaUNvbmZpZyhkYXRhOiBNeFNrZXRjaGVzQW5kTm90ZXNVaUNvbmZpZyk6IFByb21pc2U8TXhTa2V0Y2hlc0FuZE5vdGVzVWlDb25maWc+IHwgTXhTa2V0Y2hlc0FuZE5vdGVzVWlDb25maWc7XHJcbiAgdHJhbnNmb3JtTXhVaUNvbmZpZyhkYXRhOiBNeFVpQ29uZmlnKTogUHJvbWlzZTxNeFVpQ29uZmlnPiB8IE14VWlDb25maWc7XHJcbiAgdHJhbnNmb3JtVnVldGlmeVRoZW1lQ29uZmlnKGRhdGE6IFZ1ZXRpZnlUaGVtZUNvbmZpZyk6IFByb21pc2U8VnVldGlmeVRoZW1lQ29uZmlnPiB8IFZ1ZXRpZnlUaGVtZUNvbmZpZztcclxuICAvLyB0cmFuc2Zvcm1NeFBsdWdpbnNDb25maWcoZGF0YTogTXhQbHVnaW5Db25maWdbXSk6IFByb21pc2U8TXhQbHVnaW5Db25maWdbXT4gfCBNeFBsdWdpbkNvbmZpZ1tdO1xyXG59XHJcbi8vIOaJqeWxleaPkuS7tumAiemhueaOpeWPoyA9PT1cclxuZXhwb3J0IGludGVyZmFjZSBNeENhZEFzc2V0c1BsdWdpbk9wdGlvbnMgZXh0ZW5kcyBQYXJ0aWFsPFRyYW5zZm9ybUZ1bmN0aW9ucz4ge1xyXG4gIC8qKlxyXG4gICAqIOaehOW7uuWQju+8jG14Y2FkQXBwQXNzZXRzIOi1hOa6kOWtmOaUvueahOWtkOebruW9leWQjeOAglxyXG4gICAqIEBkZWZhdWx0ICdteGNhZEFwcEFzc2V0cydcclxuICAgKi9cclxuICBvdXRwdXREaXI/OiBzdHJpbmc7XHJcbiAgLyoqIOesrOS4ieaWueS+nei1liovXHJcbiAgbGlicmFyeU5hbWVzPzogKGtleW9mIHR5cGVvZiBleHRlcm5hbHMpW107XHJcbiAgLyoqIOaYr+WQpuWNlee6v+eoi+WKoOi9vXdhc20gKOm7mOiupOS9v+eUqOWkmue6v+eoi+WPiuWKoOi9vSkgKi9cclxuICBpc1dhc21TdD86IGJvb2xlYW47XHJcbiAgIC8qKlxyXG4gICAqIOaYr+WQpuWQr+eUqOmihOWOi+e8qei1hOa6kO+8iOWmgiAuZ3og5paH5Lu277yJ55qE5ou36LSdIOm7mOiupOaYr3RydWVcclxuICAgKiDorr7nva7kuLogZmFsc2Ug5pe277yMLmd6IOWOi+e8qeaWh+S7tuWwhuS4jeS8muiiq+WkjeWItuWIsOi+k+WHuuebruW9lVxyXG4gICAqIEBkZWZhdWx0IHRydWVcclxuICAgKi9cclxuICBlbmFibGVDb21wcmVzc2VkQXNzZXRzPzogYm9vbGVhbjtcclxufVxyXG5cclxuXHJcbi8vID09PSDlop7lvLrvvJpyZXNvbHZlT3B0aW9ucyDpu5jorqTlgLwgPT09XHJcbmV4cG9ydCBmdW5jdGlvbiByZXNvbHZlT3B0aW9ucyhvcHRpb25zOiBNeENhZEFzc2V0c1BsdWdpbk9wdGlvbnMgPSB7fSk6IFJlcXVpcmVkPE14Q2FkQXNzZXRzUGx1Z2luT3B0aW9ucz4ge1xyXG4gIGNvbnN0IHJlc29sdmVkOiBSZXF1aXJlZDxNeENhZEFzc2V0c1BsdWdpbk9wdGlvbnM+ID0ge1xyXG4gICAgb3V0cHV0RGlyOiBvcHRpb25zLm91dHB1dERpciB8fCAnbXhjYWRBcHBBc3NldHMnLFxyXG4gICAgbGlicmFyeU5hbWVzOiBvcHRpb25zLmxpYnJhcnlOYW1lcyB8fCBbXSxcclxuICAgIGlzV2FzbVN0OiBvcHRpb25zLmlzV2FzbVN0IHx8IGZhbHNlLFxyXG4gICAgZW5hYmxlQ29tcHJlc3NlZEFzc2V0czogb3B0aW9ucy5lbmFibGVDb21wcmVzc2VkQXNzZXRzIHx8IHRydWUsXHJcbiAgICAvLyB0cmFuc2Zvcm1NeGNhZFVpQ29uZmlnOiBvcHRpb25zLnRyYW5zZm9ybU14Y2FkVWlDb25maWcgfHwgKChkKSA9PiBkKSxcclxuICAgIHRyYW5zZm9ybU14UXVpY2tDb21tYW5kOiBvcHRpb25zLnRyYW5zZm9ybU14UXVpY2tDb21tYW5kIHx8ICgoZCkgPT4gZCksXHJcbiAgICB0cmFuc2Zvcm1NeFNlcnZlckNvbmZpZzogb3B0aW9ucy50cmFuc2Zvcm1NeFNlcnZlckNvbmZpZyB8fCAoKGQpID0+IGQpLFxyXG4gICAgdHJhbnNmb3JtTXhTa2V0Y2hlc0FuZE5vdGVzVWlDb25maWc6IG9wdGlvbnMudHJhbnNmb3JtTXhTa2V0Y2hlc0FuZE5vdGVzVWlDb25maWcgfHwgKChkKSA9PiBkKSxcclxuICAgIHRyYW5zZm9ybU14VWlDb25maWc6IG9wdGlvbnMudHJhbnNmb3JtTXhVaUNvbmZpZyB8fCAoKGQpID0+IGQpLFxyXG4gICAgdHJhbnNmb3JtVnVldGlmeVRoZW1lQ29uZmlnOiBvcHRpb25zLnRyYW5zZm9ybVZ1ZXRpZnlUaGVtZUNvbmZpZyB8fCAoKGQpID0+IGQpLFxyXG4gICAgLy8gdHJhbnNmb3JtTXhQbHVnaW5zQ29uZmlnOiBvcHRpb25zLnRyYW5zZm9ybU14UGx1Z2luc0NvbmZpZyB8fCAoKGQpID0+IGQpLFxyXG4gIH07XHJcbiAgcmV0dXJuIHJlc29sdmVkO1xyXG59XHJcblxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBQYXJzZWRQYXRoUmVzdWx0IHtcclxuICBzdWNjZXNzOiBib29sZWFuO1xyXG4gIGZpbGVQYXRoPzogc3RyaW5nOyAgICAgICAgIC8vIOW3siByZXNvbHZlIOeahOWuieWFqOaWh+S7tui3r+W+hFxyXG4gIHVybFBhdGg/OiBzdHJpbmc7ICAgICAgICAgIC8vIOino+eggeWQjueahCBVUkwg6Lev5b6E77yI5LiN5ZCrIHF1ZXJ577yJXHJcbiAgZmlsZU5hbWU/OiBzdHJpbmc7ICAgICAgICAgLy8g5paH5Lu25ZCN77yIYmFzZW5hbWXvvIlcclxuICBzdGF0dXNDb2RlPzogbnVtYmVyO1xyXG4gIG1lc3NhZ2U/OiBzdHJpbmc7XHJcbn1cclxuXHJcblxyXG4vKipcclxuICog5a6J5YWo6Kej5p6Q5bm26aqM6K+B6K+35rGC6Lev5b6EXHJcbiAqIEBwYXJhbSByZXFVcmwg6K+35rGC55qEIFVSTO+8iOWmgiAnL2Fzc2V0cy9teFNlcnZlckNvbmZpZy5qc29uP3Y9MSfvvIlcclxuICogQHBhcmFtIHJvb3Qg5pys5Zyw5qC555uu5b2V77yI5aaCICdEOi9wcm9qZWN0L2Rpc3QvbXhjYWQn77yJXHJcbiAqIEBwYXJhbSBiYXNlUGF0aCDlj6/pgInnmoTln7rnoYDot6/lvoTliY3nvIDvvIjlpoIgJy9teGNhZC8n77yM55So5LqOIFZpdGXvvIlcclxuICogQHJldHVybnMg6Kej5p6Q57uT5p6c5oiW6ZSZ6K+vXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZVNhZmVQYXRoKFxyXG4gIHJlcVVybDogc3RyaW5nLFxyXG4gIHJvb3Q6IHN0cmluZyxcclxuICBiYXNlUGF0aD86IHN0cmluZ1xyXG4pOiBQYXJzZWRQYXRoUmVzdWx0IHtcclxuICAvLyAxLiDln7rmnKzmoKHpqoxcclxuICBpZiAoIXJlcVVybCB8fCB0eXBlb2YgcmVxVXJsICE9PSAnc3RyaW5nJykge1xyXG4gICAgcmV0dXJuIHsgc3VjY2VzczogZmFsc2UsIHN0YXR1c0NvZGU6IDQwMCwgbWVzc2FnZTogJ0JhZCBSZXF1ZXN0JyB9O1xyXG4gIH1cclxuXHJcbiAgLy8gMi4g5o+Q5Y+W6Lev5b6E77yI5Y67IHF1ZXJ5IOWSjCBoYXNo77yJXHJcbiAgbGV0IHVybFBhdGggPSByZXFVcmwuc3BsaXQoJz8nKVswXS5zcGxpdCgnIycpWzBdO1xyXG5cclxuICAvLyAzLiDop6PnoIEgVVJMXHJcbiAgbGV0IGRlY29kZWRQYXRoOiBzdHJpbmc7XHJcbiAgdHJ5IHtcclxuICAgIGRlY29kZWRQYXRoID0gZGVjb2RlVVJJQ29tcG9uZW50KHVybFBhdGgpO1xyXG4gICAgLy8g6Ziy5q2iIG51bGwg5a2X6IqC5pS75Ye7XHJcbiAgICBpZiAoZGVjb2RlZFBhdGguaW5jbHVkZXMoJ1xcMCcpKSB7XHJcbiAgICAgIHJldHVybiB7IHN1Y2Nlc3M6IGZhbHNlLCBzdGF0dXNDb2RlOiA0MDAsIG1lc3NhZ2U6ICdJbnZhbGlkIFVSTCcgfTtcclxuICAgIH1cclxuICB9IGNhdGNoIChlcnIpIHtcclxuICAgIHJldHVybiB7IHN1Y2Nlc3M6IGZhbHNlLCBzdGF0dXNDb2RlOiA0MDAsIG1lc3NhZ2U6ICdJbnZhbGlkIFVSTCBlbmNvZGluZycgfTtcclxuICB9XHJcblxyXG4gIC8vIDQuIOWkhOeQhiBiYXNlUGF0aO+8iOWmgiBWaXRlIOeahCBiYXNl77yJXHJcbiAgaWYgKGJhc2VQYXRoICYmIGRlY29kZWRQYXRoLnN0YXJ0c1dpdGgoYmFzZVBhdGgpKSB7XHJcbiAgICBkZWNvZGVkUGF0aCA9IGRlY29kZWRQYXRoLnNsaWNlKGJhc2VQYXRoLmxlbmd0aCk7XHJcbiAgfVxyXG5cclxuICAvLyA1LiDmuIXnkIbot6/lvoTvvJrljrvpmaTlvIDlpLTlpJrkvZnnmoQgL1xyXG4gIC8vIOS+i+Wmgu+8mi8vYXNzZXRzL2ZpbGUuanNvbiAtPiBhc3NldHMvZmlsZS5qc29uXHJcbiAgY29uc3QgY2xlYW5lZFBhdGggPSBkZWNvZGVkUGF0aC5yZXBsYWNlKC9eXFwvKy8sICcnKTtcclxuXHJcbiAgLy8gNi4g5ou85o6l5paH5Lu26Lev5b6EXHJcbiAgY29uc3QgZmlsZVBhdGggPSBqb2luKHJvb3QsIGNsZWFuZWRQYXRoIHx8ICcuJyk7XHJcblxyXG4gIC8vIDcuIOWuieWFqOajgOafpe+8mumYsuatoui3r+W+hOepv+i2ilxyXG4gIGxldCBub3JtYWxpemVkRmlsZTogc3RyaW5nO1xyXG4gIGxldCBub3JtYWxpemVkUm9vdDogc3RyaW5nO1xyXG4gIHRyeSB7XHJcbiAgICBub3JtYWxpemVkRmlsZSA9IHJlc29sdmUoZmlsZVBhdGgpO1xyXG4gICAgbm9ybWFsaXplZFJvb3QgPSByZXNvbHZlKHJvb3QpO1xyXG4gIH0gY2F0Y2ggKGVycikge1xyXG4gICAgcmV0dXJuIHsgc3VjY2VzczogZmFsc2UsIHN0YXR1c0NvZGU6IDUwMCwgbWVzc2FnZTogJ1BhdGggcmVzb2x1dGlvbiBmYWlsZWQnIH07XHJcbiAgfVxyXG5cclxuICAvLyDinIUg5YWz6ZSu77ya56Gu5L+dIG5vcm1hbGl6ZWRGaWxlIOWcqCBub3JtYWxpemVkUm9vdCDnm67lvZXkuItcclxuICBjb25zdCBub3JtYWxpemVkRmlsZVN0ciA9IG5vcm1hbGl6ZWRGaWxlLnJlcGxhY2UoL1xcXFwvZywgJy8nKSArICcvJztcclxuICBjb25zdCBub3JtYWxpemVkUm9vdFN0ciA9IG5vcm1hbGl6ZWRSb290LnJlcGxhY2UoL1xcXFwvZywgJy8nKSArICcvJztcclxuXHJcbiAgaWYgKCFub3JtYWxpemVkRmlsZVN0ci5zdGFydHNXaXRoKG5vcm1hbGl6ZWRSb290U3RyKSkge1xyXG4gICAgcmV0dXJuIHsgc3VjY2VzczogZmFsc2UsIHN0YXR1c0NvZGU6IDQwMywgbWVzc2FnZTogJ0ZvcmJpZGRlbjogUGF0aCB0cmF2ZXJzYWwgZGV0ZWN0ZWQnIH07XHJcbiAgfVxyXG5cclxuICAvLyA4LiDmj5Dlj5YgZmlsZU5hbWVcclxuICBjb25zdCBwYXRoU2VnbWVudHMgPSBjbGVhbmVkUGF0aC5zcGxpdCgnLycpLmZpbHRlcihCb29sZWFuKTtcclxuICBjb25zdCBmaWxlTmFtZSA9IHBhdGhTZWdtZW50cy5sZW5ndGggPiAwID8gYmFzZW5hbWUocGF0aFNlZ21lbnRzW3BhdGhTZWdtZW50cy5sZW5ndGggLSAxXSkgOiAnJztcclxuXHJcbiAgLy8g4pyFIOaIkOWKn1xyXG4gIHJldHVybiB7XHJcbiAgICBzdWNjZXNzOiB0cnVlLFxyXG4gICAgZmlsZVBhdGg6IG5vcm1hbGl6ZWRGaWxlLFxyXG4gICAgdXJsUGF0aDogZGVjb2RlZFBhdGgsXHJcbiAgICBmaWxlTmFtZSxcclxuICB9O1xyXG59XHJcblxyXG5cclxudHlwZSBDb25maWdGaWxlbmFtZSA9ICh0eXBlb2YgQ09ORklHX0ZJTEVOQU1FUylbbnVtYmVyXTtcclxuZnVuY3Rpb24gaGFuZGxlQ29uZmlnRmlsZShcclxuICBzcmNQYXRoOiBzdHJpbmcsXHJcbiAgZGVzdFBhdGg6IHN0cmluZyxcclxuICBmaWxlbmFtZTogQ29uZmlnRmlsZW5hbWUsXHJcbiAgb3B0aW9uczogUmVxdWlyZWQ8TXhDYWRBc3NldHNQbHVnaW5PcHRpb25zPixcclxuICBjYWxsYmFjazogTm9QYXJhbUNhbGxiYWNrXHJcbikge1xyXG4gIGZzLnJlYWRGaWxlKHNyY1BhdGgsICd1dGYtOCcsIGFzeW5jIChlcnIsIGNvbnRlbnQpID0+IHtcclxuICAgIGlmIChlcnIpIHJldHVybiBjYWxsYmFjayhlcnIpO1xyXG5cclxuICAgIHRyeSB7XHJcbiAgICAgIGxldCBkYXRhID0gY29udGVudC50cmltKCkgPyBKU09OLnBhcnNlKGNvbnRlbnQpIDoge307XHJcblxyXG4gICAgICAvLyDinIUg5q2j56Gu55Sf5oiQIHRyYW5zZm9ybSDlh73mlbDlkI1cclxuICAgICAgY29uc3QgYmFzZU5hbWUgPSBmaWxlbmFtZS5yZXBsYWNlKC9cXC5qc29uJC9pLCAnJyk7XHJcbiAgICAgIGNvbnN0IHRyYW5zZm9ybUtleSA9IGB0cmFuc2Zvcm0ke3Bhc2NhbENhc2UoYmFzZU5hbWUpfWA7IC8vIOS+i+WmgjogdHJhbnNmb3JtUGx1Z2luc0NvbmZpZyDmiJYgdHJhbnNmb3JtTXhQbHVnaW5zQ29uZmlnXHJcblxyXG4gICAgICBjb25zdCB0cmFuc2Zvcm1GbiA9IChvcHRpb25zIGFzIGFueSlbdHJhbnNmb3JtS2V5XTtcclxuXHJcbiAgICAgIGlmICh0eXBlb2YgdHJhbnNmb3JtRm4gPT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgICBkYXRhID0gYXdhaXQgdHJhbnNmb3JtRm4oZGF0YSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGNvbnN0IGpzb24gPSBKU09OLnN0cmluZ2lmeShkYXRhLCBudWxsLCAyKTtcclxuICAgICAgZnMud3JpdGVGaWxlKGRlc3RQYXRoLCBqc29uLCAndXRmLTgnLCBjYWxsYmFjayk7XHJcbiAgICB9IGNhdGNoIChlcnI6IGFueSkge1xyXG4gICAgICByZXR1cm4gY2FsbGJhY2soZXJyKTtcclxuICAgIH1cclxuICB9KTtcclxufVxyXG4vKipcclxuICog5aSE55CG6YWN572u5paH5Lu26K+35rGC77ya6K+75Y+WIOKGkiDovazmjaIg4oaSIOi/lOWbnuWTjeW6lFxyXG4gKiDnlKjkuo4gVml0ZS9XZWJwYWNrIGRldiBzZXJ2ZXIg5Lit6Ze05Lu2XHJcbiAqL1xyXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gaGFuZGxlQ29uZmlnUmVxdWVzdChcclxuICBmaWxlUGF0aDogc3RyaW5nLCAgICAgICAgICAgLy8g5bey57uP6aqM6K+B6L+H55qE5a6J5YWo6Lev5b6EXHJcbiAgZmlsZU5hbWU6IHN0cmluZywgICAgICAgICAgIC8vIOaWh+S7tuWQje+8jOWmgiAnbXhTZXJ2ZXJDb25maWcuanNvbidcclxuICBvcHRpb25zOiBSZXF1aXJlZDxNeENhZEFzc2V0c1BsdWdpbk9wdGlvbnM+LFxyXG4gIHJlczogYW55LFxyXG4gIGxvZ2dlcj86IHsgaW5mbz86IChtc2c6IHN0cmluZykgPT4gdm9pZDsgZXJyb3I/OiAobXNnOiBzdHJpbmcpID0+IHZvaWQgfVxyXG4pOiBQcm9taXNlPGJvb2xlYW4+IHtcclxuICAvLyDku4XlpITnkIbnmb3lkI3ljZXlhoXnmoTmlofku7ZcclxuICBpZiAoIShDT05GSUdfRklMRU5BTUVTIGFzIHVua25vd24gYXMgc3RyaW5nKS5pbmNsdWRlcyhmaWxlTmFtZSkpIHtcclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIHRyeSB7XHJcbiAgICBjb25zdCBjb250ZW50ID0gYXdhaXQgZnMucHJvbWlzZXMucmVhZEZpbGUoZmlsZVBhdGgsICd1dGYtOCcpO1xyXG4gICAgbGV0IGRhdGEgPSBjb250ZW50LnRyaW0oKSA/IEpTT04ucGFyc2UoY29udGVudCkgOiB7fTtcclxuXHJcbiAgICBjb25zdCB0cmFuc2Zvcm1LZXkgPSBgdHJhbnNmb3JtJHtwYXNjYWxDYXNlKGZpbGVOYW1lLnJlcGxhY2UoL1xcLmpzb24kL2ksICcnKSl9YDtcclxuICAgIGNvbnN0IHRyYW5zZm9ybUZuID0gKG9wdGlvbnMgYXMgYW55KVt0cmFuc2Zvcm1LZXldO1xyXG5cclxuICAgIGlmICh0eXBlb2YgdHJhbnNmb3JtRm4gPT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgZGF0YSA9IGF3YWl0IHRyYW5zZm9ybUZuKGRhdGEpO1xyXG4gICAgfVxyXG5cclxuICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XHJcbiAgICByZXMuc2V0SGVhZGVyKCdDYWNoZS1Db250cm9sJywgJ25vLWNhY2hlJyk7XHJcbiAgICByZXMuZW5kKEpTT04uc3RyaW5naWZ5KGRhdGEsIG51bGwsIDIpKTtcclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH0gY2F0Y2ggKGVycjogYW55KSB7XHJcbiAgICBsb2dnZXI/LmVycm9yPy4oYFtteGNhZC1hc3NldHNdIOKdjCBGYWlsZWQgdG8gc2VydmUgJHtmaWxlTmFtZX06ICR7ZXJyLm1lc3NhZ2V9YCk7XHJcbiAgICBpZiAoIXJlcy5oZWFkZXJzU2VudCkge1xyXG4gICAgICByZXMuc2V0SGVhZGVyKCdDb250ZW50LVR5cGUnLCAndGV4dC9wbGFpbicpO1xyXG4gICAgICByZXMuc3RhdHVzQ29kZSA9IDUwMDtcclxuICAgICAgcmVzLmVuZCgnSW50ZXJuYWwgU2VydmVyIEVycm9yJyk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdHJ1ZTsgLy8g5bey5aSE55CG6ZSZ6K+vXHJcbiAgfVxyXG59XHJcblxyXG4vKiog5Yib5bu66YCa55So5YWo5bGA5Lit6Ze05Lu2ICovXHJcbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVHbG9iYWxVbml2ZXJzYWxNaWRkbGV3YXJlKG9wdGlvbnM6IFJlcXVpcmVkPE14Q2FkQXNzZXRzUGx1Z2luT3B0aW9ucz4pIHtcclxuICByZXR1cm4gYXN5bmMgKHJlcTogYW55LCByZXM6IGFueSwgbmV4dDogYW55KSA9PiB7XHJcbiAgICBpZiAoIW9wdGlvbnMuaXNXYXNtU3QpIHtcclxuICAgICAgcmVzLnNldEhlYWRlcignQ3Jvc3MtT3JpZ2luLU9wZW5lci1Qb2xpY3knLCAnc2FtZS1vcmlnaW4nKTtcclxuICAgICAgcmVzLnNldEhlYWRlcignQ3Jvc3MtT3JpZ2luLUVtYmVkZGVyLVBvbGljeScsICdyZXF1aXJlLWNvcnAnKTtcclxuICAgIH1cclxuICAgIG5leHQoKTtcclxuICB9XHJcbn1cclxuLy8gPT09IOi+heWKqeWHveaVsO+8muWtl+espuS4sui9rCBQYXNjYWxDYXNlID09PVxyXG5leHBvcnQgZnVuY3Rpb24gcGFzY2FsQ2FzZShzdHI6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgcmV0dXJuIHN0clxyXG4gICAgLnJlcGxhY2UoL1teYS16QS1aMC05XSsoLikvZywgKG0sIGNocikgPT4gY2hyLnRvVXBwZXJDYXNlKCkpXHJcbiAgICAucmVwbGFjZSgvXi4vLCBjID0+IGMudG9VcHBlckNhc2UoKSk7XHJcbn1cclxuXHJcbi8vID09PSDlhbbku5bljp/mnInlr7zlh7rkv53mjIHkuI3lj5ggPT09XHJcbmV4cG9ydCBjb25zdCBleHRlcm5hbHMgPSB7XHJcbiAgJ3Z1ZSc6ICdNWENBREFQUF9FWFRFUk5BTExJQlJBUklFUy5WdWUnLFxyXG4gICdheGlvcyc6ICdNWENBREFQUF9FWFRFUk5BTExJQlJBUklFUy5heGlvcycsXHJcbiAgJ3Z1ZXRpZnknOiAnTVhDQURBUFBfRVhURVJOQUxMSUJSQVJJRVMudnVldGlmeScsXHJcbiAgJ3Z1ZXRpZnkvY29tcG9uZW50cyc6ICdNWENBREFQUF9FWFRFUk5BTExJQlJBUklFUy52dWV0aWZ5Q29tcG9uZW50cycsXHJcbiAgJ21hcGJveC1nbCc6ICdNWENBREFQUF9FWFRFUk5BTExJQlJBUklFUy5tYXBib3hnbCcsXHJcbiAgJ3BpbmlhJzogJ01YQ0FEQVBQX0VYVEVSTkFMTElCUkFSSUVTLnBpbmlhJ1xyXG59O1xyXG4vLyDlp4vnu4jkv53nlZnnmoTmqKHlnZdcclxuY29uc3QgQUxXQVlTX0tFRVAgPSBuZXcgU2V0KFsnbXhjYWQnLCAnbXhkcmF3J10pO1xyXG5cclxuLyoqXHJcbiAqIOa4heeQhuW5tuWGmeWFpeato+ehrueahOexu+Wei+W8leeUqFxyXG4gKi9cclxuZnVuY3Rpb24gc3luY1R5cGVSZWZlcmVuY2VzKGxpYnJhcnlOYW1lczogc3RyaW5nW10pOiB2b2lkIHtcclxuICBjb25zdCByb290RGlyID0gcHJvY2Vzcy5jd2QoKTtcclxuICBjb25zdCBkaXN0RGlyID0gcmVzb2x2ZShyb290RGlyLCAnbm9kZV9tb2R1bGVzJywgJ214Y2FkLWFwcCcsICdkaXN0Jyk7XHJcbiAgY29uc3QgaW5kZXhQYXRoID0gcmVzb2x2ZShkaXN0RGlyLCAnaW5kZXguZC50cycpO1xyXG5cclxuICB0cnkge1xyXG4gICAgLy8g4pyFIDEuIOajgOafpSBkaXN0IOebruW9lVxyXG4gICAgaWYgKCFmcy5leGlzdHNTeW5jKGRpc3REaXIpKSB7XHJcbiAgICAgIGNvbnNvbGUud2Fybihg4pqg77iPIG14Y2FkLWFwcC9kaXN0IOebruW9leS4jeWtmOWcqO+8jOi3s+i/h+exu+Wei+WQjOatpTogJHtkaXN0RGlyfWApO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgLy8g4pyFIDIuIOehruS/nSBpbmRleC5kLnRzIOWtmOWcqFxyXG4gICAgaWYgKCFmcy5leGlzdHNTeW5jKGluZGV4UGF0aCkpIHtcclxuICAgICAgZnMud3JpdGVGaWxlU3luYyhpbmRleFBhdGgsICcnLCAndXRmLTgnKTtcclxuICAgICAgY29uc29sZS5sb2coYOKchSDlt7LliJvlu7rnqbrnsbvlnovmlofku7Y6ICR7aW5kZXhQYXRofWApO1xyXG4gICAgfVxyXG5cclxuICAgIGxldCBjb250ZW50ID0gZnMucmVhZEZpbGVTeW5jKGluZGV4UGF0aCwgJ3V0Zi04Jyk7XHJcbiAgICBjb25zdCBsaW5lcyA9IGNvbnRlbnQuc3BsaXQoL1xccj9cXG4vKTtcclxuXHJcbiAgICAvLyDinIUgMy4g5o+Q5Y+W5omA5pyJ546w5pyJ55qEIC8vLyA8cmVmZXJlbmNlIHBhdGg9XCIuL3h4eC5kLnRzXCIgLz4g6KGMXHJcbiAgICBjb25zdCByZWZlcmVuY2VSZWdleCA9IC9cXC9cXC9cXC9cXHMqPHJlZmVyZW5jZVxccytwYXRoPVwiXFwuXFwvKFteXCJdK1xcLmRcXC50cylcIlxccypcXC8+LztcclxuICAgIGNvbnN0IGV4aXN0aW5nUmVmczogc3RyaW5nW10gPSBbXTtcclxuICAgIGNvbnN0IG5vblJlZkxpbmVzOiBzdHJpbmdbXSA9IFtdO1xyXG5cclxuICAgIGxpbmVzLmZvckVhY2gobGluZSA9PiB7XHJcbiAgICAgIGNvbnN0IG1hdGNoID0gbGluZS50cmltKCkubWF0Y2gocmVmZXJlbmNlUmVnZXgpO1xyXG4gICAgICBpZiAobWF0Y2gpIHtcclxuICAgICAgICBjb25zdCBmaWxlTmFtZSA9IG1hdGNoWzFdOyAvLyDlpoIgXCJ2dWUuZC50c1wiXHJcbiAgICAgICAgY29uc3QgbW9kdWxlTmFtZSA9IGZpbGVOYW1lLnJlcGxhY2UoL1xcLmRcXC50cyQvLCAnJyk7IC8vIOaPkOWPluaooeWdl+WQjVxyXG4gICAgICAgIGV4aXN0aW5nUmVmcy5wdXNoKG1vZHVsZU5hbWUpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIG5vblJlZkxpbmVzLnB1c2gobGluZSk7IC8vIOS/neeVmemdniByZWZlcmVuY2Ug6KGMXHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIC8vIOKchSA0LiDorqHnrpfmnIDnu4jlupTor6Xkv53nlZnnmoTmqKHlnZdcclxuICAgIGNvbnN0IHZhbGlkTW9kdWxlcyA9IG5ldyBTZXQ8c3RyaW5nPihBTFdBWVNfS0VFUCk7XHJcblxyXG4gICAgbGlicmFyeU5hbWVzLmZvckVhY2gobmFtZSA9PiB7XHJcbiAgICAgIC8vIOW/hemhu+WcqCBleHRlcm5hbHMg5Lit5a6a5LmJ77yM5LiU57G75Z6L5paH5Lu25a2Y5ZyoXHJcbiAgICAgIGlmIChuYW1lIGluIGV4dGVybmFscykge1xyXG4gICAgICAgIGNvbnN0IGR0c1BhdGggPSByZXNvbHZlKGRpc3REaXIsIGAke25hbWV9LmQudHNgKTtcclxuICAgICAgICBpZiAoZnMuZXhpc3RzU3luYyhkdHNQYXRoKSkge1xyXG4gICAgICAgICAgdmFsaWRNb2R1bGVzLmFkZChuYW1lKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIC8vIOKchSA1LiDnlJ/miJDmnIDnu4jnmoQgcmVmZXJlbmNlIOihjO+8iOS/neaMgSBteGNhZCDlkowgbXhkcmF3IOWcqOacgOWJje+8iVxyXG4gICAgY29uc3QgZmluYWxSZWZzID0gWydteGNhZCcsICdteGRyYXcnXVxyXG4gICAgICAuZmlsdGVyKG5hbWUgPT4gdmFsaWRNb2R1bGVzLmhhcyhuYW1lKSlcclxuICAgICAgLm1hcChuYW1lID0+IGAvLy8gPHJlZmVyZW5jZSBwYXRoPVwiLi8ke25hbWV9LmQudHNcIiAvPmApO1xyXG5cclxuICAgIC8vIOa3u+WKoOWFtuS7liB2YWxpZE1vZHVsZXMg5Lit55qE77yI5Y676YeN77yJXHJcbiAgICBBcnJheS5mcm9tKHZhbGlkTW9kdWxlcylcclxuICAgICAgLmZpbHRlcihuYW1lID0+ICFBTFdBWVNfS0VFUC5oYXMobmFtZSkpXHJcbiAgICAgIC5mb3JFYWNoKG5hbWUgPT4ge1xyXG4gICAgICAgIGZpbmFsUmVmcy5wdXNoKGAvLy8gPHJlZmVyZW5jZSBwYXRoPVwiLi8ke25hbWV9LmQudHNcIiAvPmApO1xyXG4gICAgICB9KTtcclxuXHJcbiAgICAvLyDinIUgNi4g5ZCI5bm277ya5pyA57uI5byV55SoICsg5Y6f5aeL6Z2e5byV55So6KGMXHJcbiAgICBjb25zdCByZXN1bHRMaW5lcyA9IFsuLi5maW5hbFJlZnMsICcnLCAuLi5ub25SZWZMaW5lcy5maWx0ZXIobCA9PiBsLnRyaW0oKS5sZW5ndGggPiAwKV07XHJcblxyXG4gICAgLy8g56e76Zmk6L+e57ut56m66KGM77yM5L+d55WZ5LiA5Liq5YiG6ZqUXHJcbiAgICBjb25zdCBjbGVhbmVkTGluZXMgPSByZXN1bHRMaW5lcy5maWx0ZXIoKGxpbmUsIGksIGFycikgPT5cclxuICAgICAgIShsaW5lLnRyaW0oKSA9PT0gJycgJiYgaSA+IDAgJiYgYXJyW2kgLSAxXS50cmltKCkgPT09ICcnKVxyXG4gICAgKTtcclxuXHJcbiAgICBjb25zdCBuZXdDb250ZW50ID0gY2xlYW5lZExpbmVzLmpvaW4oJ1xcbicpLnRyaW0oKSArICdcXG4nO1xyXG5cclxuICAgIC8vIOKchSA3LiDlhpnlm57mlofku7bvvIjku4XlvZPlhoXlrrnlj5jljJbml7bvvIlcclxuICAgIGlmIChjb250ZW50LnRyaW0oKSAhPT0gbmV3Q29udGVudC50cmltKCkpIHtcclxuICAgICAgZnMud3JpdGVGaWxlU3luYyhpbmRleFBhdGgsIG5ld0NvbnRlbnQsICd1dGYtOCcpO1xyXG4gICAgICBjb25zb2xlLmxvZyhg4pyFIOW3suWQjOatpSBteGNhZC1hcHAvZGlzdC9pbmRleC5kLnRzIOexu+Wei+W8leeUqGApO1xyXG4gICAgICBjb25zb2xlLmxvZyhgICAg5L+d55WZOiAke0FycmF5LmZyb20odmFsaWRNb2R1bGVzKS5qb2luKCcsICcpfWApO1xyXG4gICAgfVxyXG4gIH0gY2F0Y2ggKGVycikge1xyXG4gICAgY29uc29sZS5lcnJvcihg4p2MIOWQjOatpeexu+Wei+W8leeUqOWksei0pTpgLCBlcnIpO1xyXG4gIH1cclxufVxyXG5cclxuLyoqXHJcbiAqIOmihOWumuS5ieW6k+WQjeWIsOWFqOWxgOWPmOmHj+eahOaYoOWwhFxyXG4gKi9cclxuZXhwb3J0IGNvbnN0IERFRkFVTFRfTElCUkFSWV9NQVA6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XHJcbiAgbXhjYWQ6ICdNeENBRCcsXHJcbiAgbXhkcmF3OiAnTXgnXHJcbn1cclxuZXhwb3J0IGZ1bmN0aW9uIGdldEV4dGVybmFscyhcclxuICBsaWJyYXJ5TmFtZXM6IFJlcXVpcmVkPE14Q2FkQXNzZXRzUGx1Z2luT3B0aW9ucz5bJ2xpYnJhcnlOYW1lcyddXHJcbik6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0ge1xyXG4gIHN5bmNUeXBlUmVmZXJlbmNlcyhsaWJyYXJ5TmFtZXMpO1xyXG4gIGNvbnN0IHJlc3VsdDogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSA9IHsgLi4uREVGQVVMVF9MSUJSQVJZX01BUCB9XHJcbiAgaWYgKCFBcnJheS5pc0FycmF5KGxpYnJhcnlOYW1lcykpIHJldHVybiByZXN1bHQ7XHJcbiAgbGlicmFyeU5hbWVzLmZvckVhY2gobmFtZSA9PiB7XHJcbiAgICBpZiAobmFtZSBpbiBleHRlcm5hbHMpIHtcclxuICAgICAgcmVzdWx0W25hbWVdID0gZXh0ZXJuYWxzW25hbWUgYXMga2V5b2YgdHlwZW9mIGV4dGVybmFsc107XHJcbiAgICB9XHJcbiAgfSk7XHJcbiAgcmV0dXJuIHJlc3VsdDtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGdldFNvdXJjZUFzc2V0c1BhdGgoKTogc3RyaW5nIHtcclxuICBsZXQgY3VycmVudEZpbGU6IHN0cmluZztcclxuICBpZiAodHlwZW9mIF9fZmlsZW5hbWUgIT09ICd1bmRlZmluZWQnKSB7XHJcbiAgICBjdXJyZW50RmlsZSA9IF9fZmlsZW5hbWU7XHJcbiAgfSBlbHNlIHtcclxuICAgIC8vIEB0cy1pZ25vcmVcclxuICAgIGN1cnJlbnRGaWxlID0gZmlsZVVSTFRvUGF0aChpbXBvcnQubWV0YS51cmwpO1xyXG4gIH1cclxuICBjb25zdCBwYWNrYWdlUm9vdCA9IHJlc29sdmUoY3VycmVudEZpbGUsICcuLicsICcuLicsICcuLicpO1xyXG4gIGNvbnN0IGFzc2V0c1BhdGggPSByZXNvbHZlKHBhY2thZ2VSb290LCBuYW1lLCAnZGlzdCcsICdteGNhZEFwcEFzc2V0cycpO1xyXG4gIGlmICghZnMuZXhpc3RzU3luYyhhc3NldHNQYXRoKSkge1xyXG4gICAgdGhyb3cgbmV3IEVycm9yKGBteC1jYWQtYXBwIGFzc2V0cyBub3QgZm91bmQgYXQ6ICR7YXNzZXRzUGF0aH1gKTtcclxuICB9XHJcbiAgcmV0dXJuIGFzc2V0c1BhdGg7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBjaGVja1NvdXJjZUFzc2V0c0V4aXN0KCk6IGJvb2xlYW4ge1xyXG4gIGNvbnN0IHBhdGggPSBnZXRTb3VyY2VBc3NldHNQYXRoKCk7XHJcbiAgcmV0dXJuIGZzLmV4aXN0c1N5bmMocGF0aCkgJiYgZnMubHN0YXRTeW5jKHBhdGgpLmlzRGlyZWN0b3J5KCk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBnZW5lcmF0ZVJ1bnRpbWVDb25maWdTY3JpcHQocHVibGljUGF0aDogc3RyaW5nKTogc3RyaW5nIHtcclxuICByZXR1cm4gYFxyXG4gICAgPHNjcmlwdD5cclxuICAgICAgd2luZG93Ll9fTVhfQ0FEX0FQUF9BU1NFVF9QQVRIX18gPSAnJHtwdWJsaWNQYXRofSc7XHJcbiAgICA8L3NjcmlwdD5cclxuICBgLnRyaW0oKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGNvcHlEaXIoXHJcbiAgc3JjOiBzdHJpbmcsXHJcbiAgZGVzdDogc3RyaW5nLFxyXG4gIHB1YmxpY0Rpcjogc3RyaW5nLFxyXG4gIG9wdGlvbnM6IFJlcXVpcmVkPE14Q2FkQXNzZXRzUGx1Z2luT3B0aW9ucz4sXHJcbiAgY2FsbGJhY2s6IChlcnI/OiBFcnJvcikgPT4gdm9pZFxyXG4pOiB2b2lkIHtcclxuICAvLyDnrKzkuIDmraXvvJrmiavmj48gcHVibGljRGlyIOS4i+aJgOacieaWh+S7tu+8iOebuOWvueS6jiBwdWJsaWNEaXIg55qE6Lev5b6E77yJXHJcbiAgc2NhblB1YmxpY0RpcihwdWJsaWNEaXIsIChlcnIsIHB1YmxpY0ZpbGVzKSA9PiB7XHJcbiAgICBpZiAoZXJyKSByZXR1cm4gY2FsbGJhY2soZXJyKTtcclxuXHJcbiAgICAvLyDnrKzkuozmraXvvJrlvIDlp4vlpI3liLbvvIzkvKDlhaUgcHVibGljRmlsZXMg57yT5a2YXHJcbiAgICBkb0NvcHkoc3JjLCBkZXN0LCBwdWJsaWNEaXIsIHB1YmxpY0ZpbGVzISwgb3B0aW9ucywgY2FsbGJhY2spO1xyXG4gIH0pO1xyXG59XHJcblxyXG4vLyDlrp7pmYXmiafooYzlpI3liLbnmoTlh73mlbBcclxuZnVuY3Rpb24gZG9Db3B5KFxyXG4gIHNyYzogc3RyaW5nLFxyXG4gIGRlc3Q6IHN0cmluZyxcclxuICBwdWJsaWNEaXI6IHN0cmluZyxcclxuICBwdWJsaWNGaWxlczogU2V0PHN0cmluZz4sXHJcbiAgb3B0aW9uczogUmVxdWlyZWQ8TXhDYWRBc3NldHNQbHVnaW5PcHRpb25zPiwgLy8g5rOo5oSP77ya6L+Z6YeM6ZyA6KaB56Gu5L+dIGVuYWJsZUNvbXByZXNzZWRBc3NldHMg5piv5b+F6YCJ55qEXHJcbiAgY2FsbGJhY2s6IChlcnI/OiBFcnJvcikgPT4gdm9pZFxyXG4pIHtcclxuICBmcy5ta2RpcihkZXN0LCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9LCAoZXJyKSA9PiB7XHJcbiAgICBpZiAoZXJyKSByZXR1cm4gY2FsbGJhY2soZXJyKTtcclxuXHJcbiAgICBmcy5yZWFkZGlyKHNyYywgeyB3aXRoRmlsZVR5cGVzOiB0cnVlIH0sIChlcnIsIGRpcmVudHMpID0+IHtcclxuICAgICAgaWYgKGVycikgcmV0dXJuIGNhbGxiYWNrKGVycik7XHJcblxyXG4gICAgICBsZXQgcGVuZGluZyA9IGRpcmVudHMubGVuZ3RoO1xyXG4gICAgICBpZiAocGVuZGluZyA9PT0gMCkgcmV0dXJuIGNhbGxiYWNrKCk7XHJcblxyXG4gICAgICAvLyDmj5DliY3lrprkuYnljovnvKnmlofku7bmianlsZXlkI1cclxuICAgICAgY29uc3QgY29tcHJlc3NlZEV4dHMgPSBbJy5neiddOyAvLyDlj6/mjInpnIDmianlsZVcclxuXHJcbiAgICAgIGRpcmVudHMuZm9yRWFjaCgoZGlyZW50KSA9PiB7XHJcbiAgICAgICAgY29uc3Qgc3JjUGF0aCA9IHJlc29sdmUoc3JjLCBkaXJlbnQubmFtZSk7XHJcbiAgICAgICAgY29uc3QgZGVzdFBhdGggPSByZXNvbHZlKGRlc3QsIGRpcmVudC5uYW1lKTtcclxuICAgICAgICBjb25zdCByZWxhdGl2ZVBhdGggPSByZWxhdGl2ZShzcmMsIHNyY1BhdGgpLnJlcGxhY2UoL1xcXFwvZywgJy8nKSBhcyBDb25maWdGaWxlbmFtZTtcclxuXHJcbiAgICAgICAgLy8g5paw5aKe77ya5aaC5p6c56aB55So5Y6L57yp6LWE5rqQ5LiU5piv5Y6L57yp5paH5Lu277yM5YiZ6Lez6L+HXHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgIW9wdGlvbnMuZW5hYmxlQ29tcHJlc3NlZEFzc2V0cyAmJlxyXG4gICAgICAgICAgY29tcHJlc3NlZEV4dHMuc29tZShleHQgPT4gcmVsYXRpdmVQYXRoLmVuZHNXaXRoKGV4dCkpXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICBpZiAoLS1wZW5kaW5nID09PSAwKSBjYWxsYmFjaygpO1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKGRpcmVudC5pc0RpcmVjdG9yeSgpKSB7XHJcbiAgICAgICAgICBkb0NvcHkoc3JjUGF0aCwgZGVzdFBhdGgsIHB1YmxpY0RpciwgcHVibGljRmlsZXMsIG9wdGlvbnMsICgpID0+IHtcclxuICAgICAgICAgICAgaWYgKC0tcGVuZGluZyA9PT0gMCkgY2FsbGJhY2soKTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoZGlyZW50LmlzRmlsZSgpKSB7XHJcbiAgICAgICAgICBpZiAocHVibGljRmlsZXMuaGFzKHJlbGF0aXZlUGF0aCkpIHtcclxuICAgICAgICAgICAgY29uc3QgcHVibGljRmlsZVBhdGggPSByZXNvbHZlKHB1YmxpY0RpciwgcmVsYXRpdmVQYXRoKTtcclxuICAgICAgICAgICAgZnMuY29weUZpbGUocHVibGljRmlsZVBhdGgsIGRlc3RQYXRoLCAoZXJyKSA9PiB7XHJcbiAgICAgICAgICAgICAgaWYgKGVycikgcmV0dXJuIGNhbGxiYWNrKGVycik7XHJcbiAgICAgICAgICAgICAgaWYgKC0tcGVuZGluZyA9PT0gMCkgY2FsbGJhY2soKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKENPTkZJR19GSUxFTkFNRVMuaW5jbHVkZXMocmVsYXRpdmVQYXRoKSkge1xyXG4gICAgICAgICAgICBoYW5kbGVDb25maWdGaWxlKHNyY1BhdGgsIGRlc3RQYXRoLCByZWxhdGl2ZVBhdGgsIG9wdGlvbnMsIChlcnIpID0+IHtcclxuICAgICAgICAgICAgICBpZiAoZXJyKSByZXR1cm4gY2FsbGJhY2soZXJyKTtcclxuICAgICAgICAgICAgICBpZiAoLS1wZW5kaW5nID09PSAwKSBjYWxsYmFjaygpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGZzLmNvcHlGaWxlKHNyY1BhdGgsIGRlc3RQYXRoLCAoZXJyKSA9PiB7XHJcbiAgICAgICAgICAgICAgaWYgKGVycikgcmV0dXJuIGNhbGxiYWNrKGVycik7XHJcbiAgICAgICAgICAgICAgaWYgKC0tcGVuZGluZyA9PT0gMCkgY2FsbGJhY2soKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGlmICgtLXBlbmRpbmcgPT09IDApIGNhbGxiYWNrKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG4gIH0pO1xyXG59XHJcbi8vIOaJq+aPjyBwdWJsaWNEaXIg5LiL5omA5pyJ5paH5Lu277yM6L+U5Zue55u45a+55LqOIHB1YmxpY0RpciDnmoTot6/lvoTpm4blkIhcclxuZnVuY3Rpb24gc2NhblB1YmxpY0RpcihcclxuICBwdWJsaWNEaXI6IHN0cmluZyxcclxuICBjYWxsYmFjazogKGVycjogTm9kZUpTLkVycm5vRXhjZXB0aW9uIHwgbnVsbCwgZmlsZXM/OiBTZXQ8c3RyaW5nPikgPT4gdm9pZFxyXG4pIHtcclxuICBjb25zdCByZXN1bHQgPSBuZXcgU2V0PHN0cmluZz4oKTtcclxuXHJcbiAgZnVuY3Rpb24gd2FsayhkaXI6IHN0cmluZykge1xyXG4gICAgZnMucmVhZGRpcihkaXIsIHsgd2l0aEZpbGVUeXBlczogdHJ1ZSB9LCAoZXJyLCBkaXJlbnRzKSA9PiB7XHJcbiAgICAgIGlmIChlcnIpIHJldHVybiBjYWxsYmFjayhlcnIpO1xyXG5cclxuICAgICAgbGV0IHBlbmRpbmcgPSBkaXJlbnRzLmxlbmd0aDtcclxuICAgICAgaWYgKHBlbmRpbmcgPT09IDApIHtcclxuICAgICAgICByZXR1cm4gY2FsbGJhY2sobnVsbCwgcmVzdWx0KTtcclxuICAgICAgfVxyXG5cclxuICAgICAgZGlyZW50cy5mb3JFYWNoKChkaXJlbnQpID0+IHtcclxuICAgICAgICBjb25zdCBmdWxsUGF0aCA9IHJlc29sdmUoZGlyLCBkaXJlbnQubmFtZSk7XHJcbiAgICAgICAgY29uc3QgcmVsUGF0aCA9IHJlbGF0aXZlKHB1YmxpY0RpciwgZnVsbFBhdGgpLnJlcGxhY2UoL1xcXFwvZywgJy8nKTtcclxuXHJcbiAgICAgICAgaWYgKGRpcmVudC5pc0RpcmVjdG9yeSgpKSB7XHJcbiAgICAgICAgICB3YWxrKGZ1bGxQYXRoKTtcclxuICAgICAgICB9IGVsc2UgaWYgKGRpcmVudC5pc0ZpbGUoKSkge1xyXG4gICAgICAgICAgcmVzdWx0LmFkZChyZWxQYXRoKTtcclxuICAgICAgICAgIGlmICgtLXBlbmRpbmcgPT09IDApIHtcclxuICAgICAgICAgICAgY2FsbGJhY2sobnVsbCwgcmVzdWx0KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgaWYgKC0tcGVuZGluZyA9PT0gMCkge1xyXG4gICAgICAgICAgICBjYWxsYmFjayhudWxsLCByZXN1bHQpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHdhbGsocHVibGljRGlyKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGdldENvbnRlbnRUeXBlKGZpbGVQYXRoOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gIGNvbnN0IGV4dCA9IGZpbGVQYXRoLnNwbGl0KCcuJykucG9wKCk/LnRvTG93ZXJDYXNlKCkgfHwgJyc7XHJcbiAgY29uc3QgdHlwZXM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XHJcbiAgICAnY3NzJzogJ3RleHQvY3NzJyxcclxuICAgICdqcyc6ICdhcHBsaWNhdGlvbi9qYXZhc2NyaXB0JyxcclxuICAgICdqc29uJzogJ2FwcGxpY2F0aW9uL2pzb24nLFxyXG4gICAgJ3BuZyc6ICdpbWFnZS9wbmcnLFxyXG4gICAgJ2pwZyc6ICdpbWFnZS9qcGVnJyxcclxuICAgICdqcGVnJzogJ2ltYWdlL2pwZWcnLFxyXG4gICAgJ2dpZic6ICdpbWFnZS9naWYnLFxyXG4gICAgJ3N2Zyc6ICdpbWFnZS9zdmcreG1sJyxcclxuICAgICd3b2ZmJzogJ2ZvbnQvd29mZicsXHJcbiAgICAnd29mZjInOiAnZm9udC93b2ZmMicsXHJcbiAgICAndHRmJzogJ2ZvbnQvdHRmJyxcclxuICAgICdlb3QnOiAnYXBwbGljYXRpb24vdm5kLm1zLWZvbnRvYmplY3QnLFxyXG4gICAgJ2ljbyc6ICdpbWFnZS94LWljb24nLFxyXG4gICAgJ3dhc20nOiAnYXBwbGljYXRpb24vd2FzbScsXHJcbiAgICAnemlwJzogJ2FwcGxpY2F0aW9uL3ppcCcsXHJcbiAgICAncmFyJzogJ2FwcGxpY2F0aW9uL3gtcmFyLWNvbXByZXNzZWQnLFxyXG4gICAgJzd6JzogJ2FwcGxpY2F0aW9uL3gtN3otY29tcHJlc3NlZCcsXHJcbiAgICAndGFyJzogJ2FwcGxpY2F0aW9uL3gtdGFyJyxcclxuICAgICdneic6ICdhcHBsaWNhdGlvbi9nemlwJyxcclxuICAgICdiejInOiAnYXBwbGljYXRpb24veC1iemlwMicsXHJcbiAgICAneHonOiAnYXBwbGljYXRpb24veC14eidcclxuICB9O1xyXG4gIHJldHVybiB0eXBlc1tleHRdIHx8ICdhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0nO1xyXG59XHJcblxyXG5cclxuLyoqXHJcbiAqIOagh+WHhuWMlui3r+W+hO+8jOehruS/neS7pSAnLycg57uT5bC+XHJcbiAqL1xyXG5mdW5jdGlvbiBub3JtYWxpemVQYXRoKHA6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgcmV0dXJuIHJlc29sdmUocCkucmVwbGFjZSgvXFxcXC9nLCAnLycpICsgJy8nO1xyXG59XHJcblxyXG4vKipcclxuICog5Yib5bu66YCa55So5Lit6Ze05Lu277ya5LyY5YWI5L2/55SoIHB1YmxpYyDotYTmupDvvIzlm57pgIDliLAgc291cmNlQXNzZXRzUGF0aFxyXG4gKiDlr7nmoIcgY3JlYXRlU3RhdGljTWlkZGxld2FyZSDpo47moLxcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVNeENhZEFzc2V0c01pZGRsZXdhcmUoXHJcbiAgcm9vdDogc3RyaW5nLFxyXG4gIG9wdGlvbnM6IFJlcXVpcmVkPE14Q2FkQXNzZXRzUGx1Z2luT3B0aW9ucz4sXHJcbiAgcHVibGljRGlyOiBzdHJpbmcsXHJcbiAgbG9nZ2VyPzogYW55XHJcbikge1xyXG4gIGNvbnN0IHsgb3V0cHV0RGlyLCBpc1dhc21TdCA9IGZhbHNlIH0gPSBvcHRpb25zO1xyXG4gIC8vIOKchSAxLiDop4TojIPljJbot6/lvoRcclxuICBjb25zdCBiYXNlUGF0aCA9IGAvJHtvdXRwdXREaXIucmVwbGFjZSgvXlxcLysvLCAnJyl9YDsgLy8gJy9teGNhZEFwcEFzc2V0cydcclxuICBjb25zdCBzb3VyY2VBc3NldHNSb290ID0gbm9ybWFsaXplUGF0aChyb290KTtcclxuXHJcbiAgcmV0dXJuIGFzeW5jIChyZXE6IGFueSwgcmVzOiBhbnksIG5leHQ6ICgpID0+IHZvaWQpID0+IHtcclxuICAgIC8vIOKchSAyLiDln7rmnKzmoKHpqoxcclxuICAgIGlmICghcmVxLnVybCB8fCB0eXBlb2YgcmVxLnVybCAhPT0gJ3N0cmluZycpIHtcclxuICAgICAgcmV0dXJuIG5leHQoKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyDinIUgMy4g6K6+572u5a6J5YWo5aS077yI6Z2eIGlzV2FzbVN0IOaooeW8j++8iVxyXG4gICAgaWYgKCFpc1dhc21TdCkge1xyXG4gICAgICByZXMuc2V0SGVhZGVyKCdDcm9zcy1PcmlnaW4tT3BlbmVyLVBvbGljeScsICdzYW1lLW9yaWdpbicpO1xyXG4gICAgICByZXMuc2V0SGVhZGVyKCdDcm9zcy1PcmlnaW4tRW1iZWRkZXItUG9saWN5JywgJ3JlcXVpcmUtY29ycCcpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIOKchSA0LiDop6PmnpAgVVJMIOi3r+W+hO+8iOWOuyBxdWVyee+8jOino+egge+8iVxyXG4gICAgY29uc3QgdXJsUGF0aCA9IHJlcS51cmwuc3BsaXQoJz8nKVswXTtcclxuICAgIGxldCBmaWxlUGF0aCE6IHN0cmluZztcclxuICAgIGxldCBmaWxlTmFtZSE6IHN0cmluZztcclxuXHJcbiAgICB0cnkge1xyXG4gICAgICBjb25zdCBkZWNvZGVkUGF0aCA9IGRlY29kZVVSSUNvbXBvbmVudCh1cmxQYXRoKTtcclxuICAgICAgLy8g6KeE6IyD5YyW6Lev5b6E77yM6Ziy5q2iIC4uLy4uLyDotormnYNcclxuICAgICAgY29uc3Qgbm9ybWFsaXplZFBhdGggPSBkZWNvZGVkUGF0aC5yZXBsYWNlKC9eWy9cXFxcXSsvLCAnJyk7XHJcblxyXG4gICAgICAvLyDinIUgNS4g5LyY5YWI77ya5qOA5p+lIHB1YmxpYy8ke291dHB1dERpcn0g55uu5b2VXHJcbiAgICAgIGNvbnN0IHB1YmxpY0ZpbGVQYXRoID0gam9pbihwdWJsaWNEaXIsIG5vcm1hbGl6ZWRQYXRoKS5yZXBsYWNlKC9cXFxcL2csICcvJyk7XHJcblxyXG4gICAgICB0cnkge1xyXG4gICAgICAgIGNvbnN0IHN0YXQgPSBhd2FpdCBmcy5wcm9taXNlcy5zdGF0KHB1YmxpY0ZpbGVQYXRoKTtcclxuICAgICAgICBpZiAoc3RhdC5pc0ZpbGUoKSkge1xyXG4gICAgICAgICAgZmlsZVBhdGggPSBwdWJsaWNGaWxlUGF0aDtcclxuICAgICAgICAgIGZpbGVOYW1lID0gYmFzZW5hbWUobm9ybWFsaXplZFBhdGgpO1xyXG4gICAgICAgICAgcmV0dXJuIHNlcnZlRmlsZShmaWxlUGF0aCwgZmlsZU5hbWUsIHJlcywgbG9nZ2VyKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0gY2F0Y2ggKGVycikge1xyXG4gICAgICAgIC8vIHB1YmxpYyDkuK3msqHmnInvvIznu6fnu63mn6Xmib4gc291cmNlQXNzZXRzUGF0aFxyXG4gICAgICB9XHJcblxyXG4gICAgICAvLyDinIUgNi4gZmFsbGJhY2vvvJrmn6Xmib4gc291cmNlQXNzZXRzUGF0aFxyXG4gICAgICBjb25zdCByZXN1bHQgPSByZXNvbHZlU2FmZVBhdGgoZGVjb2RlZFBhdGgsIHNvdXJjZUFzc2V0c1Jvb3QsIGJhc2VQYXRoKTtcclxuICAgICAgaWYgKCFyZXN1bHQuc3VjY2Vzcykge1xyXG4gICAgICAgIHJlcy5zdGF0dXNDb2RlID0gcmVzdWx0LnN0YXR1c0NvZGUgfHwgNDAwO1xyXG4gICAgICAgIHJldHVybiByZXMuZW5kKHJlc3VsdC5tZXNzYWdlKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKHJlc3VsdC5maWxlUGF0aCkgZmlsZVBhdGggPSByZXN1bHQuZmlsZVBhdGg7XHJcbiAgICAgIGlmIChyZXN1bHQuZmlsZU5hbWUpIGZpbGVOYW1lID0gcmVzdWx0LmZpbGVOYW1lO1xyXG5cclxuICAgICAgLy8g4pyFIDcuIOWwneivleeUsSBoYW5kbGVDb25maWdSZXF1ZXN0IOWkhOeQhu+8iOWmguazqOWFpemFjee9ru+8iVxyXG4gICAgICBjb25zdCBoYW5kbGVkID0gYXdhaXQgaGFuZGxlQ29uZmlnUmVxdWVzdChcclxuICAgICAgICBmaWxlUGF0aCxcclxuICAgICAgICBmaWxlTmFtZSxcclxuICAgICAgICBvcHRpb25zLFxyXG4gICAgICAgIHJlcyxcclxuICAgICAgICBsb2dnZXJcclxuICAgICAgKTtcclxuICAgICAgaWYgKGhhbmRsZWQpIHJldHVybjtcclxuXHJcbiAgICAgIC8vIOKchSA4LiDnoa7kv53mmK/mlofku7ZcclxuICAgICAgY29uc3Qgc3RhdCA9IGF3YWl0IGZzLnByb21pc2VzLnN0YXQoZmlsZVBhdGgpO1xyXG4gICAgICBpZiAoIXN0YXQuaXNGaWxlKCkpIHtcclxuICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDQwNDtcclxuICAgICAgICByZXR1cm4gcmVzLmVuZCgnRmlsZSBub3QgZm91bmQnKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgcmV0dXJuIHNlcnZlRmlsZShmaWxlUGF0aCwgZmlsZU5hbWUsIHJlcywgbG9nZ2VyKTtcclxuICAgIH0gY2F0Y2ggKGVycikge1xyXG4gICAgICBsb2dnZXI/Lndhcm4/LihgW014Q2FkQXNzZXRzXSBTZXJ2ZSBmYWlsZWQgZm9yICR7cmVxLnVybH06ICR7KGVyciBhcyBFcnJvcikubWVzc2FnZX1gKTtcclxuICAgICAgaWYgKHJlcy5oZWFkZXJzU2VudCkgcmV0dXJuO1xyXG4gICAgICByZXMuc3RhdHVzQ29kZSA9IDQwNDtcclxuICAgICAgcmVzLmVuZCgnRmlsZSBub3QgZm91bmQnKTtcclxuICAgIH1cclxuICB9O1xyXG59XHJcblxyXG4vKipcclxuICog5bCB6KOF5paH5Lu25ZON5bqU6YC76L6R77yI5rWB5byP5Lyg6L6T77yJXHJcbiAqL1xyXG5mdW5jdGlvbiBzZXJ2ZUZpbGUoZmlsZVBhdGg6IHN0cmluZywgZmlsZU5hbWU6IHN0cmluZywgcmVzOiBhbnksIGxvZ2dlcj86IGFueSkge1xyXG4gIGNvbnN0IHN0cmVhbSA9IGZzLmNyZWF0ZVJlYWRTdHJlYW0oZmlsZVBhdGgpO1xyXG5cclxuICBzdHJlYW0ub24oJ2Vycm9yJywgKGVycjogTm9kZUpTLkVycm5vRXhjZXB0aW9uKSA9PiB7XHJcbiAgICBpZiAocmVzLmhlYWRlcnNTZW50KSByZXR1cm47XHJcbiAgICBpZiAoZXJyLmNvZGUgPT09ICdFTk9FTlQnIHx8IGVyci5jb2RlID09PSAnRUFDQ0VTJykge1xyXG4gICAgICByZXR1cm4gcmVzLnN0YXR1c0NvZGUgPT09IDIwMCA/IHJlcy5lbmQoKSA6IHVuZGVmaW5lZDtcclxuICAgIH1cclxuICAgIGxvZ2dlcj8uZXJyb3I/LihgW014Q2FkQXNzZXRzXSBSZWFkIGVycm9yOiAke2Vyci5tZXNzYWdlfWAsIGVycik7XHJcbiAgICByZXMuc3RhdHVzQ29kZSA9IDUwMDtcclxuICAgIHJlcy5lbmQoJ0ludGVybmFsIFNlcnZlciBFcnJvcicpO1xyXG4gIH0pO1xyXG5cclxuICByZXMuc2V0SGVhZGVyKCdDb250ZW50LVR5cGUnLCBnZXRDb250ZW50VHlwZShmaWxlTmFtZSkpO1xyXG4gIHJlcy5zZXRIZWFkZXIoJ1gtQ29udGVudC1UeXBlLU9wdGlvbnMnLCAnbm9zbmlmZicpO1xyXG5cclxuICBzdHJlYW0ucGlwZShyZXMpO1xyXG59Il0sIm5hbWVzIjpbImpvaW4iLCJyZXNvbHZlIiwiYmFzZW5hbWUiLCJlcnIiLCJuYW1lIiwiZmlsZVVSTFRvUGF0aCIsInJlbGF0aXZlIiwic3RhdCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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
|
|
1514
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXgtRFJLTktMUnguanMiLCJzb3VyY2VzIjpbIi4uLy4uL3BhY2tUb29sUGx1Z2luU3JjL3NoYXJlZC9pbmRleC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJcclxuLy8gcGx1Z2lucy9zaGFyZWQvaW5kZXgudHNcclxuaW1wb3J0IHsgYmFzZW5hbWUsIGpvaW4sIHJlbGF0aXZlLCByZXNvbHZlIH0gZnJvbSAncGF0aCc7XHJcbmltcG9ydCBmcywgeyBOb1BhcmFtQ2FsbGJhY2sgfSBmcm9tICdmcyc7XHJcbmltcG9ydCB7IGZpbGVVUkxUb1BhdGggfSBmcm9tICd1cmwnO1xyXG5pbXBvcnQgeyBuYW1lIH0gZnJvbSBcIi4uLy4uL2xpYi9wYWNrYWdlLmpzb25cIlxyXG5cclxuaW1wb3J0IHsgTXhRdWlja0NvbW1hbmQgfSBmcm9tIFwiLi90eXBlcy9teFF1aWNrQ29tbWFuZC5kXCJcclxuaW1wb3J0IHsgTXhTZXJ2ZXJDb25maWcgfSBmcm9tIFwiLi90eXBlcy9teFNlcnZlckNvbmZpZy5kXCJcclxuaW1wb3J0IHsgTXhTa2V0Y2hlc0FuZE5vdGVzVWlDb25maWcgfSBmcm9tIFwiLi90eXBlcy9teFNrZXRjaGVzQW5kTm90ZXNVaUNvbmZpZy5kXCJcclxuaW1wb3J0IHsgTXhVaUNvbmZpZyB9IGZyb20gXCIuL3R5cGVzL214VWlDb25maWcuZFwiXHJcbmltcG9ydCB7IE14Y2FkVWlDb25maWcgfSBmcm9tIFwiLi90eXBlcy9teGNhZFVpQ29uZmlnLmRcIlxyXG5pbXBvcnQgeyBWdWV0aWZ5VGhlbWVDb25maWcgfSBmcm9tIFwiLi90eXBlcy92dWV0aWZ5VGhlbWVDb25maWcuZFwiXHJcbmltcG9ydCBhcGlNYXAgZnJvbSAnLi4vYXBpLW1hcC5qc29uJ1xyXG5leHBvcnQgY29uc3QgZ2V0QXBpTWFwID0gKCkgPT4gYXBpTWFwXHJcbmV4cG9ydCBpbnRlcmZhY2UgTXhQbHVnaW5Db25maWcge1xyXG4gIHBsdWdpbnM6IChzdHJpbmcgfCB7XHJcbiAgICBuYW1lPzogc3RyaW5nLFxyXG4gICAgaXNBZnRlckxvYWQ/OiBib29sZWFuLFxyXG4gICAgZGlyPzogYm9vbGVhbixcclxuICAgIHZlcnNpb24/OiBzdHJpbmdcclxuICB9KVtdXHJcbn1cclxuLy8gPT09IOaWsOWinu+8mumFjee9ruaWh+S7tuWQjeW4uOmHjyA9PT1cclxuZXhwb3J0IGNvbnN0IENPTkZJR19GSUxFTkFNRVMgPSBbXHJcbiAgLy8gJ214Y2FkVWlDb25maWcuanNvbicsXHJcbiAgJ214UXVpY2tDb21tYW5kLmpzb24nLFxyXG4gICdteFNlcnZlckNvbmZpZy5qc29uJyxcclxuICAnbXhTa2V0Y2hlc0FuZE5vdGVzVWlDb25maWcuanNvbicsXHJcbiAgJ214VWlDb25maWcuanNvbicsXHJcbiAgJ3Z1ZXRpZnlUaGVtZUNvbmZpZy5qc29uJyxcclxuICAvLyAncGx1Z2lucy9jb25maWcuanNvbidcclxuXSBhcyBjb25zdDtcclxuLyoqXHJcbiAqIOmFjee9ruaWh+S7tuWkhOeQhuWZqFxyXG4gKiDlj6/pgInvvJrlr7nnibnlrprphY3nva7mlofku7bov5vooYzov5DooYzml7bkv67mlLlcclxuICog5Ye95pWw5o6l5pS25Y6f5aeLIEpTT04g5pWw5o2u77yM6L+U5Zue5L+u5pS55ZCO55qEIEpTT04g5pWw5o2u77yI5Y+v5byC5q2l77yJXHJcbiAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIFRyYW5zZm9ybUZ1bmN0aW9ucyB7XHJcbiAgLy8gdHJhbnNmb3JtTXhjYWRVaUNvbmZpZyhkYXRhOiBNeGNhZFVpQ29uZmlnKTogUHJvbWlzZTxNeGNhZFVpQ29uZmlnPiB8IE14Y2FkVWlDb25maWc7XHJcbiAgdHJhbnNmb3JtTXhRdWlja0NvbW1hbmQoZGF0YTogTXhRdWlja0NvbW1hbmQpOiBQcm9taXNlPE14UXVpY2tDb21tYW5kPiB8IE14UXVpY2tDb21tYW5kO1xyXG4gIHRyYW5zZm9ybU14U2VydmVyQ29uZmlnKGRhdGE6IE14U2VydmVyQ29uZmlnKTogUHJvbWlzZTxNeFNlcnZlckNvbmZpZz4gfCBNeFNlcnZlckNvbmZpZztcclxuICB0cmFuc2Zvcm1NeFNrZXRjaGVzQW5kTm90ZXNVaUNvbmZpZyhkYXRhOiBNeFNrZXRjaGVzQW5kTm90ZXNVaUNvbmZpZyk6IFByb21pc2U8TXhTa2V0Y2hlc0FuZE5vdGVzVWlDb25maWc+IHwgTXhTa2V0Y2hlc0FuZE5vdGVzVWlDb25maWc7XHJcbiAgdHJhbnNmb3JtTXhVaUNvbmZpZyhkYXRhOiBNeFVpQ29uZmlnKTogUHJvbWlzZTxNeFVpQ29uZmlnPiB8IE14VWlDb25maWc7XHJcbiAgdHJhbnNmb3JtVnVldGlmeVRoZW1lQ29uZmlnKGRhdGE6IFZ1ZXRpZnlUaGVtZUNvbmZpZyk6IFByb21pc2U8VnVldGlmeVRoZW1lQ29uZmlnPiB8IFZ1ZXRpZnlUaGVtZUNvbmZpZztcclxuICAvLyB0cmFuc2Zvcm1NeFBsdWdpbnNDb25maWcoZGF0YTogTXhQbHVnaW5Db25maWdbXSk6IFByb21pc2U8TXhQbHVnaW5Db25maWdbXT4gfCBNeFBsdWdpbkNvbmZpZ1tdO1xyXG59XHJcbi8vIOaJqeWxleaPkuS7tumAiemhueaOpeWPoyA9PT1cclxuZXhwb3J0IGludGVyZmFjZSBNeENhZEFzc2V0c1BsdWdpbk9wdGlvbnMgZXh0ZW5kcyBQYXJ0aWFsPFRyYW5zZm9ybUZ1bmN0aW9ucz4ge1xyXG4gIC8qKlxyXG4gICAqIOaehOW7uuWQju+8jG14Y2FkQXBwQXNzZXRzIOi1hOa6kOWtmOaUvueahOWtkOebruW9leWQjeOAglxyXG4gICAqIEBkZWZhdWx0ICdteGNhZEFwcEFzc2V0cydcclxuICAgKi9cclxuICBvdXRwdXREaXI/OiBzdHJpbmc7XHJcbiAgLyoqIOesrOS4ieaWueS+nei1liovXHJcbiAgbGlicmFyeU5hbWVzPzogKGtleW9mIHR5cGVvZiBleHRlcm5hbHMpW107XHJcbiAgLyoqIOaYr+WQpuWNlee6v+eoi+WKoOi9vXdhc20gKOm7mOiupOS9v+eUqOWkmue6v+eoi+WPiuWKoOi9vSkgKi9cclxuICBpc1dhc21TdD86IGJvb2xlYW47XHJcbiAgIC8qKlxyXG4gICAqIOaYr+WQpuWQr+eUqOmihOWOi+e8qei1hOa6kO+8iOWmgiAuZ3og5paH5Lu277yJ55qE5ou36LSdIOm7mOiupOaYr3RydWVcclxuICAgKiDorr7nva7kuLogZmFsc2Ug5pe277yMLmd6IOWOi+e8qeaWh+S7tuWwhuS4jeS8muiiq+WkjeWItuWIsOi+k+WHuuebruW9lVxyXG4gICAqIEBkZWZhdWx0IHRydWVcclxuICAgKi9cclxuICBlbmFibGVDb21wcmVzc2VkQXNzZXRzPzogYm9vbGVhbjtcclxufVxyXG5cclxuXHJcbi8vID09PSDlop7lvLrvvJpyZXNvbHZlT3B0aW9ucyDpu5jorqTlgLwgPT09XHJcbmV4cG9ydCBmdW5jdGlvbiByZXNvbHZlT3B0aW9ucyhvcHRpb25zOiBNeENhZEFzc2V0c1BsdWdpbk9wdGlvbnMgPSB7fSk6IFJlcXVpcmVkPE14Q2FkQXNzZXRzUGx1Z2luT3B0aW9ucz4ge1xyXG4gIGNvbnN0IHJlc29sdmVkOiBSZXF1aXJlZDxNeENhZEFzc2V0c1BsdWdpbk9wdGlvbnM+ID0ge1xyXG4gICAgb3V0cHV0RGlyOiBvcHRpb25zLm91dHB1dERpciB8fCAnbXhjYWRBcHBBc3NldHMnLFxyXG4gICAgbGlicmFyeU5hbWVzOiBvcHRpb25zLmxpYnJhcnlOYW1lcyB8fCBbXSxcclxuICAgIGlzV2FzbVN0OiBvcHRpb25zLmlzV2FzbVN0IHx8IGZhbHNlLFxyXG4gICAgZW5hYmxlQ29tcHJlc3NlZEFzc2V0czogb3B0aW9ucy5lbmFibGVDb21wcmVzc2VkQXNzZXRzIHx8IHRydWUsXHJcbiAgICAvLyB0cmFuc2Zvcm1NeGNhZFVpQ29uZmlnOiBvcHRpb25zLnRyYW5zZm9ybU14Y2FkVWlDb25maWcgfHwgKChkKSA9PiBkKSxcclxuICAgIHRyYW5zZm9ybU14UXVpY2tDb21tYW5kOiBvcHRpb25zLnRyYW5zZm9ybU14UXVpY2tDb21tYW5kIHx8ICgoZCkgPT4gZCksXHJcbiAgICB0cmFuc2Zvcm1NeFNlcnZlckNvbmZpZzogb3B0aW9ucy50cmFuc2Zvcm1NeFNlcnZlckNvbmZpZyB8fCAoKGQpID0+IGQpLFxyXG4gICAgdHJhbnNmb3JtTXhTa2V0Y2hlc0FuZE5vdGVzVWlDb25maWc6IG9wdGlvbnMudHJhbnNmb3JtTXhTa2V0Y2hlc0FuZE5vdGVzVWlDb25maWcgfHwgKChkKSA9PiBkKSxcclxuICAgIHRyYW5zZm9ybU14VWlDb25maWc6IG9wdGlvbnMudHJhbnNmb3JtTXhVaUNvbmZpZyB8fCAoKGQpID0+IGQpLFxyXG4gICAgdHJhbnNmb3JtVnVldGlmeVRoZW1lQ29uZmlnOiBvcHRpb25zLnRyYW5zZm9ybVZ1ZXRpZnlUaGVtZUNvbmZpZyB8fCAoKGQpID0+IGQpLFxyXG4gICAgLy8gdHJhbnNmb3JtTXhQbHVnaW5zQ29uZmlnOiBvcHRpb25zLnRyYW5zZm9ybU14UGx1Z2luc0NvbmZpZyB8fCAoKGQpID0+IGQpLFxyXG4gIH07XHJcbiAgcmV0dXJuIHJlc29sdmVkO1xyXG59XHJcblxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBQYXJzZWRQYXRoUmVzdWx0IHtcclxuICBzdWNjZXNzOiBib29sZWFuO1xyXG4gIGZpbGVQYXRoPzogc3RyaW5nOyAgICAgICAgIC8vIOW3siByZXNvbHZlIOeahOWuieWFqOaWh+S7tui3r+W+hFxyXG4gIHVybFBhdGg/OiBzdHJpbmc7ICAgICAgICAgIC8vIOino+eggeWQjueahCBVUkwg6Lev5b6E77yI5LiN5ZCrIHF1ZXJ577yJXHJcbiAgZmlsZU5hbWU/OiBzdHJpbmc7ICAgICAgICAgLy8g5paH5Lu25ZCN77yIYmFzZW5hbWXvvIlcclxuICBzdGF0dXNDb2RlPzogbnVtYmVyO1xyXG4gIG1lc3NhZ2U/OiBzdHJpbmc7XHJcbn1cclxuXHJcblxyXG4vKipcclxuICog5a6J5YWo6Kej5p6Q5bm26aqM6K+B6K+35rGC6Lev5b6EXHJcbiAqIEBwYXJhbSByZXFVcmwg6K+35rGC55qEIFVSTO+8iOWmgiAnL2Fzc2V0cy9teFNlcnZlckNvbmZpZy5qc29uP3Y9MSfvvIlcclxuICogQHBhcmFtIHJvb3Qg5pys5Zyw5qC555uu5b2V77yI5aaCICdEOi9wcm9qZWN0L2Rpc3QvbXhjYWQn77yJXHJcbiAqIEBwYXJhbSBiYXNlUGF0aCDlj6/pgInnmoTln7rnoYDot6/lvoTliY3nvIDvvIjlpoIgJy9teGNhZC8n77yM55So5LqOIFZpdGXvvIlcclxuICogQHJldHVybnMg6Kej5p6Q57uT5p6c5oiW6ZSZ6K+vXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZVNhZmVQYXRoKFxyXG4gIHJlcVVybDogc3RyaW5nLFxyXG4gIHJvb3Q6IHN0cmluZyxcclxuICBiYXNlUGF0aD86IHN0cmluZ1xyXG4pOiBQYXJzZWRQYXRoUmVzdWx0IHtcclxuICAvLyAxLiDln7rmnKzmoKHpqoxcclxuICBpZiAoIXJlcVVybCB8fCB0eXBlb2YgcmVxVXJsICE9PSAnc3RyaW5nJykge1xyXG4gICAgcmV0dXJuIHsgc3VjY2VzczogZmFsc2UsIHN0YXR1c0NvZGU6IDQwMCwgbWVzc2FnZTogJ0JhZCBSZXF1ZXN0JyB9O1xyXG4gIH1cclxuXHJcbiAgLy8gMi4g5o+Q5Y+W6Lev5b6E77yI5Y67IHF1ZXJ5IOWSjCBoYXNo77yJXHJcbiAgbGV0IHVybFBhdGggPSByZXFVcmwuc3BsaXQoJz8nKVswXS5zcGxpdCgnIycpWzBdO1xyXG5cclxuICAvLyAzLiDop6PnoIEgVVJMXHJcbiAgbGV0IGRlY29kZWRQYXRoOiBzdHJpbmc7XHJcbiAgdHJ5IHtcclxuICAgIGRlY29kZWRQYXRoID0gZGVjb2RlVVJJQ29tcG9uZW50KHVybFBhdGgpO1xyXG4gICAgLy8g6Ziy5q2iIG51bGwg5a2X6IqC5pS75Ye7XHJcbiAgICBpZiAoZGVjb2RlZFBhdGguaW5jbHVkZXMoJ1xcMCcpKSB7XHJcbiAgICAgIHJldHVybiB7IHN1Y2Nlc3M6IGZhbHNlLCBzdGF0dXNDb2RlOiA0MDAsIG1lc3NhZ2U6ICdJbnZhbGlkIFVSTCcgfTtcclxuICAgIH1cclxuICB9IGNhdGNoIChlcnIpIHtcclxuICAgIHJldHVybiB7IHN1Y2Nlc3M6IGZhbHNlLCBzdGF0dXNDb2RlOiA0MDAsIG1lc3NhZ2U6ICdJbnZhbGlkIFVSTCBlbmNvZGluZycgfTtcclxuICB9XHJcblxyXG4gIC8vIDQuIOWkhOeQhiBiYXNlUGF0aO+8iOWmgiBWaXRlIOeahCBiYXNl77yJXHJcbiAgaWYgKGJhc2VQYXRoICYmIGRlY29kZWRQYXRoLnN0YXJ0c1dpdGgoYmFzZVBhdGgpKSB7XHJcbiAgICBkZWNvZGVkUGF0aCA9IGRlY29kZWRQYXRoLnNsaWNlKGJhc2VQYXRoLmxlbmd0aCk7XHJcbiAgfVxyXG5cclxuICAvLyA1LiDmuIXnkIbot6/lvoTvvJrljrvpmaTlvIDlpLTlpJrkvZnnmoQgL1xyXG4gIC8vIOS+i+Wmgu+8mi8vYXNzZXRzL2ZpbGUuanNvbiAtPiBhc3NldHMvZmlsZS5qc29uXHJcbiAgY29uc3QgY2xlYW5lZFBhdGggPSBkZWNvZGVkUGF0aC5yZXBsYWNlKC9eXFwvKy8sICcnKTtcclxuXHJcbiAgLy8gNi4g5ou85o6l5paH5Lu26Lev5b6EXHJcbiAgY29uc3QgZmlsZVBhdGggPSBqb2luKHJvb3QsIGNsZWFuZWRQYXRoIHx8ICcuJyk7XHJcblxyXG4gIC8vIDcuIOWuieWFqOajgOafpe+8mumYsuatoui3r+W+hOepv+i2ilxyXG4gIGxldCBub3JtYWxpemVkRmlsZTogc3RyaW5nO1xyXG4gIGxldCBub3JtYWxpemVkUm9vdDogc3RyaW5nO1xyXG4gIHRyeSB7XHJcbiAgICBub3JtYWxpemVkRmlsZSA9IHJlc29sdmUoZmlsZVBhdGgpO1xyXG4gICAgbm9ybWFsaXplZFJvb3QgPSByZXNvbHZlKHJvb3QpO1xyXG4gIH0gY2F0Y2ggKGVycikge1xyXG4gICAgcmV0dXJuIHsgc3VjY2VzczogZmFsc2UsIHN0YXR1c0NvZGU6IDUwMCwgbWVzc2FnZTogJ1BhdGggcmVzb2x1dGlvbiBmYWlsZWQnIH07XHJcbiAgfVxyXG5cclxuICAvLyDinIUg5YWz6ZSu77ya56Gu5L+dIG5vcm1hbGl6ZWRGaWxlIOWcqCBub3JtYWxpemVkUm9vdCDnm67lvZXkuItcclxuICBjb25zdCBub3JtYWxpemVkRmlsZVN0ciA9IG5vcm1hbGl6ZWRGaWxlLnJlcGxhY2UoL1xcXFwvZywgJy8nKSArICcvJztcclxuICBjb25zdCBub3JtYWxpemVkUm9vdFN0ciA9IG5vcm1hbGl6ZWRSb290LnJlcGxhY2UoL1xcXFwvZywgJy8nKSArICcvJztcclxuXHJcbiAgaWYgKCFub3JtYWxpemVkRmlsZVN0ci5zdGFydHNXaXRoKG5vcm1hbGl6ZWRSb290U3RyKSkge1xyXG4gICAgcmV0dXJuIHsgc3VjY2VzczogZmFsc2UsIHN0YXR1c0NvZGU6IDQwMywgbWVzc2FnZTogJ0ZvcmJpZGRlbjogUGF0aCB0cmF2ZXJzYWwgZGV0ZWN0ZWQnIH07XHJcbiAgfVxyXG5cclxuICAvLyA4LiDmj5Dlj5YgZmlsZU5hbWVcclxuICBjb25zdCBwYXRoU2VnbWVudHMgPSBjbGVhbmVkUGF0aC5zcGxpdCgnLycpLmZpbHRlcihCb29sZWFuKTtcclxuICBjb25zdCBmaWxlTmFtZSA9IHBhdGhTZWdtZW50cy5sZW5ndGggPiAwID8gYmFzZW5hbWUocGF0aFNlZ21lbnRzW3BhdGhTZWdtZW50cy5sZW5ndGggLSAxXSkgOiAnJztcclxuXHJcbiAgLy8g4pyFIOaIkOWKn1xyXG4gIHJldHVybiB7XHJcbiAgICBzdWNjZXNzOiB0cnVlLFxyXG4gICAgZmlsZVBhdGg6IG5vcm1hbGl6ZWRGaWxlLFxyXG4gICAgdXJsUGF0aDogZGVjb2RlZFBhdGgsXHJcbiAgICBmaWxlTmFtZSxcclxuICB9O1xyXG59XHJcblxyXG5cclxudHlwZSBDb25maWdGaWxlbmFtZSA9ICh0eXBlb2YgQ09ORklHX0ZJTEVOQU1FUylbbnVtYmVyXTtcclxuZnVuY3Rpb24gaGFuZGxlQ29uZmlnRmlsZShcclxuICBzcmNQYXRoOiBzdHJpbmcsXHJcbiAgZGVzdFBhdGg6IHN0cmluZyxcclxuICBmaWxlbmFtZTogQ29uZmlnRmlsZW5hbWUsXHJcbiAgb3B0aW9uczogUmVxdWlyZWQ8TXhDYWRBc3NldHNQbHVnaW5PcHRpb25zPixcclxuICBjYWxsYmFjazogTm9QYXJhbUNhbGxiYWNrXHJcbikge1xyXG4gIGZzLnJlYWRGaWxlKHNyY1BhdGgsICd1dGYtOCcsIGFzeW5jIChlcnIsIGNvbnRlbnQpID0+IHtcclxuICAgIGlmIChlcnIpIHJldHVybiBjYWxsYmFjayhlcnIpO1xyXG5cclxuICAgIHRyeSB7XHJcbiAgICAgIGxldCBkYXRhID0gY29udGVudC50cmltKCkgPyBKU09OLnBhcnNlKGNvbnRlbnQpIDoge307XHJcblxyXG4gICAgICAvLyDinIUg5q2j56Gu55Sf5oiQIHRyYW5zZm9ybSDlh73mlbDlkI1cclxuICAgICAgY29uc3QgYmFzZU5hbWUgPSBmaWxlbmFtZS5yZXBsYWNlKC9cXC5qc29uJC9pLCAnJyk7XHJcbiAgICAgIGNvbnN0IHRyYW5zZm9ybUtleSA9IGB0cmFuc2Zvcm0ke3Bhc2NhbENhc2UoYmFzZU5hbWUpfWA7IC8vIOS+i+WmgjogdHJhbnNmb3JtUGx1Z2luc0NvbmZpZyDmiJYgdHJhbnNmb3JtTXhQbHVnaW5zQ29uZmlnXHJcblxyXG4gICAgICBjb25zdCB0cmFuc2Zvcm1GbiA9IChvcHRpb25zIGFzIGFueSlbdHJhbnNmb3JtS2V5XTtcclxuXHJcbiAgICAgIGlmICh0eXBlb2YgdHJhbnNmb3JtRm4gPT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgICBkYXRhID0gYXdhaXQgdHJhbnNmb3JtRm4oZGF0YSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGNvbnN0IGpzb24gPSBKU09OLnN0cmluZ2lmeShkYXRhLCBudWxsLCAyKTtcclxuICAgICAgZnMud3JpdGVGaWxlKGRlc3RQYXRoLCBqc29uLCAndXRmLTgnLCBjYWxsYmFjayk7XHJcbiAgICB9IGNhdGNoIChlcnI6IGFueSkge1xyXG4gICAgICByZXR1cm4gY2FsbGJhY2soZXJyKTtcclxuICAgIH1cclxuICB9KTtcclxufVxyXG4vKipcclxuICog5aSE55CG6YWN572u5paH5Lu26K+35rGC77ya6K+75Y+WIOKGkiDovazmjaIg4oaSIOi/lOWbnuWTjeW6lFxyXG4gKiDnlKjkuo4gVml0ZS9XZWJwYWNrIGRldiBzZXJ2ZXIg5Lit6Ze05Lu2XHJcbiAqL1xyXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gaGFuZGxlQ29uZmlnUmVxdWVzdChcclxuICBmaWxlUGF0aDogc3RyaW5nLCAgICAgICAgICAgLy8g5bey57uP6aqM6K+B6L+H55qE5a6J5YWo6Lev5b6EXHJcbiAgZmlsZU5hbWU6IHN0cmluZywgICAgICAgICAgIC8vIOaWh+S7tuWQje+8jOWmgiAnbXhTZXJ2ZXJDb25maWcuanNvbidcclxuICBvcHRpb25zOiBSZXF1aXJlZDxNeENhZEFzc2V0c1BsdWdpbk9wdGlvbnM+LFxyXG4gIHJlczogYW55LFxyXG4gIGxvZ2dlcj86IHsgaW5mbz86IChtc2c6IHN0cmluZykgPT4gdm9pZDsgZXJyb3I/OiAobXNnOiBzdHJpbmcpID0+IHZvaWQgfVxyXG4pOiBQcm9taXNlPGJvb2xlYW4+IHtcclxuICAvLyDku4XlpITnkIbnmb3lkI3ljZXlhoXnmoTmlofku7ZcclxuICBpZiAoIShDT05GSUdfRklMRU5BTUVTIGFzIHVua25vd24gYXMgc3RyaW5nKS5pbmNsdWRlcyhmaWxlTmFtZSkpIHtcclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIHRyeSB7XHJcbiAgICBjb25zdCBjb250ZW50ID0gYXdhaXQgZnMucHJvbWlzZXMucmVhZEZpbGUoZmlsZVBhdGgsICd1dGYtOCcpO1xyXG4gICAgbGV0IGRhdGEgPSBjb250ZW50LnRyaW0oKSA/IEpTT04ucGFyc2UoY29udGVudCkgOiB7fTtcclxuXHJcbiAgICBjb25zdCB0cmFuc2Zvcm1LZXkgPSBgdHJhbnNmb3JtJHtwYXNjYWxDYXNlKGZpbGVOYW1lLnJlcGxhY2UoL1xcLmpzb24kL2ksICcnKSl9YDtcclxuICAgIGNvbnN0IHRyYW5zZm9ybUZuID0gKG9wdGlvbnMgYXMgYW55KVt0cmFuc2Zvcm1LZXldO1xyXG5cclxuICAgIGlmICh0eXBlb2YgdHJhbnNmb3JtRm4gPT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgZGF0YSA9IGF3YWl0IHRyYW5zZm9ybUZuKGRhdGEpO1xyXG4gICAgfVxyXG5cclxuICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XHJcbiAgICByZXMuc2V0SGVhZGVyKCdDYWNoZS1Db250cm9sJywgJ25vLWNhY2hlJyk7XHJcbiAgICByZXMuZW5kKEpTT04uc3RyaW5naWZ5KGRhdGEsIG51bGwsIDIpKTtcclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH0gY2F0Y2ggKGVycjogYW55KSB7XHJcbiAgICBsb2dnZXI/LmVycm9yPy4oYFtteGNhZC1hc3NldHNdIOKdjCBGYWlsZWQgdG8gc2VydmUgJHtmaWxlTmFtZX06ICR7ZXJyLm1lc3NhZ2V9YCk7XHJcbiAgICBpZiAoIXJlcy5oZWFkZXJzU2VudCkge1xyXG4gICAgICByZXMuc2V0SGVhZGVyKCdDb250ZW50LVR5cGUnLCAndGV4dC9wbGFpbicpO1xyXG4gICAgICByZXMuc3RhdHVzQ29kZSA9IDUwMDtcclxuICAgICAgcmVzLmVuZCgnSW50ZXJuYWwgU2VydmVyIEVycm9yJyk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdHJ1ZTsgLy8g5bey5aSE55CG6ZSZ6K+vXHJcbiAgfVxyXG59XHJcblxyXG4vKiog5Yib5bu66YCa55So5YWo5bGA5Lit6Ze05Lu2ICovXHJcbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVHbG9iYWxVbml2ZXJzYWxNaWRkbGV3YXJlKG9wdGlvbnM6IFJlcXVpcmVkPE14Q2FkQXNzZXRzUGx1Z2luT3B0aW9ucz4pIHtcclxuICByZXR1cm4gYXN5bmMgKHJlcTogYW55LCByZXM6IGFueSwgbmV4dDogYW55KSA9PiB7XHJcbiAgICBpZiAoIW9wdGlvbnMuaXNXYXNtU3QpIHtcclxuICAgICAgcmVzLnNldEhlYWRlcignQ3Jvc3MtT3JpZ2luLU9wZW5lci1Qb2xpY3knLCAnc2FtZS1vcmlnaW4nKTtcclxuICAgICAgcmVzLnNldEhlYWRlcignQ3Jvc3MtT3JpZ2luLUVtYmVkZGVyLVBvbGljeScsICdyZXF1aXJlLWNvcnAnKTtcclxuICAgIH1cclxuICAgIG5leHQoKTtcclxuICB9XHJcbn1cclxuLy8gPT09IOi+heWKqeWHveaVsO+8muWtl+espuS4sui9rCBQYXNjYWxDYXNlID09PVxyXG5leHBvcnQgZnVuY3Rpb24gcGFzY2FsQ2FzZShzdHI6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgcmV0dXJuIHN0clxyXG4gICAgLnJlcGxhY2UoL1teYS16QS1aMC05XSsoLikvZywgKG0sIGNocikgPT4gY2hyLnRvVXBwZXJDYXNlKCkpXHJcbiAgICAucmVwbGFjZSgvXi4vLCBjID0+IGMudG9VcHBlckNhc2UoKSk7XHJcbn1cclxuXHJcbi8vID09PSDlhbbku5bljp/mnInlr7zlh7rkv53mjIHkuI3lj5ggPT09XHJcbmV4cG9ydCBjb25zdCBleHRlcm5hbHMgPSB7XHJcbiAgJ3Z1ZSc6ICdNWENBREFQUF9FWFRFUk5BTExJQlJBUklFUy5WdWUnLFxyXG4gICdheGlvcyc6ICdNWENBREFQUF9FWFRFUk5BTExJQlJBUklFUy5heGlvcycsXHJcbiAgJ3Z1ZXRpZnknOiAnTVhDQURBUFBfRVhURVJOQUxMSUJSQVJJRVMudnVldGlmeScsXHJcbiAgJ3Z1ZXRpZnkvY29tcG9uZW50cyc6ICdNWENBREFQUF9FWFRFUk5BTExJQlJBUklFUy52dWV0aWZ5Q29tcG9uZW50cycsXHJcbiAgJ21hcGJveC1nbCc6ICdNWENBREFQUF9FWFRFUk5BTExJQlJBUklFUy5tYXBib3hnbCcsXHJcbiAgJ3BpbmlhJzogJ01YQ0FEQVBQX0VYVEVSTkFMTElCUkFSSUVTLnBpbmlhJ1xyXG59O1xyXG4vLyDlp4vnu4jkv53nlZnnmoTmqKHlnZdcclxuY29uc3QgQUxXQVlTX0tFRVAgPSBuZXcgU2V0KFsnbXhjYWQnLCAnbXhkcmF3J10pO1xyXG5cclxuLyoqXHJcbiAqIOa4heeQhuW5tuWGmeWFpeato+ehrueahOexu+Wei+W8leeUqFxyXG4gKi9cclxuZnVuY3Rpb24gc3luY1R5cGVSZWZlcmVuY2VzKGxpYnJhcnlOYW1lczogc3RyaW5nW10pOiB2b2lkIHtcclxuICBjb25zdCByb290RGlyID0gcHJvY2Vzcy5jd2QoKTtcclxuICBjb25zdCBkaXN0RGlyID0gcmVzb2x2ZShyb290RGlyLCAnbm9kZV9tb2R1bGVzJywgJ214Y2FkLWFwcCcsICdkaXN0Jyk7XHJcbiAgY29uc3QgaW5kZXhQYXRoID0gcmVzb2x2ZShkaXN0RGlyLCAnaW5kZXguZC50cycpO1xyXG5cclxuICB0cnkge1xyXG4gICAgLy8g4pyFIDEuIOajgOafpSBkaXN0IOebruW9lVxyXG4gICAgaWYgKCFmcy5leGlzdHNTeW5jKGRpc3REaXIpKSB7XHJcbiAgICAgIGNvbnNvbGUud2Fybihg4pqg77iPIG14Y2FkLWFwcC9kaXN0IOebruW9leS4jeWtmOWcqO+8jOi3s+i/h+exu+Wei+WQjOatpTogJHtkaXN0RGlyfWApO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgLy8g4pyFIDIuIOehruS/nSBpbmRleC5kLnRzIOWtmOWcqFxyXG4gICAgaWYgKCFmcy5leGlzdHNTeW5jKGluZGV4UGF0aCkpIHtcclxuICAgICAgZnMud3JpdGVGaWxlU3luYyhpbmRleFBhdGgsICcnLCAndXRmLTgnKTtcclxuICAgICAgY29uc29sZS5sb2coYOKchSDlt7LliJvlu7rnqbrnsbvlnovmlofku7Y6ICR7aW5kZXhQYXRofWApO1xyXG4gICAgfVxyXG5cclxuICAgIGxldCBjb250ZW50ID0gZnMucmVhZEZpbGVTeW5jKGluZGV4UGF0aCwgJ3V0Zi04Jyk7XHJcbiAgICBjb25zdCBsaW5lcyA9IGNvbnRlbnQuc3BsaXQoL1xccj9cXG4vKTtcclxuXHJcbiAgICAvLyDinIUgMy4g5o+Q5Y+W5omA5pyJ546w5pyJ55qEIC8vLyA8cmVmZXJlbmNlIHBhdGg9XCIuL3h4eC5kLnRzXCIgLz4g6KGMXHJcbiAgICBjb25zdCByZWZlcmVuY2VSZWdleCA9IC9cXC9cXC9cXC9cXHMqPHJlZmVyZW5jZVxccytwYXRoPVwiXFwuXFwvKFteXCJdK1xcLmRcXC50cylcIlxccypcXC8+LztcclxuICAgIGNvbnN0IGV4aXN0aW5nUmVmczogc3RyaW5nW10gPSBbXTtcclxuICAgIGNvbnN0IG5vblJlZkxpbmVzOiBzdHJpbmdbXSA9IFtdO1xyXG5cclxuICAgIGxpbmVzLmZvckVhY2gobGluZSA9PiB7XHJcbiAgICAgIGNvbnN0IG1hdGNoID0gbGluZS50cmltKCkubWF0Y2gocmVmZXJlbmNlUmVnZXgpO1xyXG4gICAgICBpZiAobWF0Y2gpIHtcclxuICAgICAgICBjb25zdCBmaWxlTmFtZSA9IG1hdGNoWzFdOyAvLyDlpoIgXCJ2dWUuZC50c1wiXHJcbiAgICAgICAgY29uc3QgbW9kdWxlTmFtZSA9IGZpbGVOYW1lLnJlcGxhY2UoL1xcLmRcXC50cyQvLCAnJyk7IC8vIOaPkOWPluaooeWdl+WQjVxyXG4gICAgICAgIGV4aXN0aW5nUmVmcy5wdXNoKG1vZHVsZU5hbWUpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIG5vblJlZkxpbmVzLnB1c2gobGluZSk7IC8vIOS/neeVmemdniByZWZlcmVuY2Ug6KGMXHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIC8vIOKchSA0LiDorqHnrpfmnIDnu4jlupTor6Xkv53nlZnnmoTmqKHlnZdcclxuICAgIGNvbnN0IHZhbGlkTW9kdWxlcyA9IG5ldyBTZXQ8c3RyaW5nPihBTFdBWVNfS0VFUCk7XHJcblxyXG4gICAgbGlicmFyeU5hbWVzLmZvckVhY2gobmFtZSA9PiB7XHJcbiAgICAgIC8vIOW/hemhu+WcqCBleHRlcm5hbHMg5Lit5a6a5LmJ77yM5LiU57G75Z6L5paH5Lu25a2Y5ZyoXHJcbiAgICAgIGlmIChuYW1lIGluIGV4dGVybmFscykge1xyXG4gICAgICAgIGNvbnN0IGR0c1BhdGggPSByZXNvbHZlKGRpc3REaXIsIGAke25hbWV9LmQudHNgKTtcclxuICAgICAgICBpZiAoZnMuZXhpc3RzU3luYyhkdHNQYXRoKSkge1xyXG4gICAgICAgICAgdmFsaWRNb2R1bGVzLmFkZChuYW1lKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIC8vIOKchSA1LiDnlJ/miJDmnIDnu4jnmoQgcmVmZXJlbmNlIOihjO+8iOS/neaMgSBteGNhZCDlkowgbXhkcmF3IOWcqOacgOWJje+8iVxyXG4gICAgY29uc3QgZmluYWxSZWZzID0gWydteGNhZCcsICdteGRyYXcnXVxyXG4gICAgICAuZmlsdGVyKG5hbWUgPT4gdmFsaWRNb2R1bGVzLmhhcyhuYW1lKSlcclxuICAgICAgLm1hcChuYW1lID0+IGAvLy8gPHJlZmVyZW5jZSBwYXRoPVwiLi8ke25hbWV9LmQudHNcIiAvPmApO1xyXG5cclxuICAgIC8vIOa3u+WKoOWFtuS7liB2YWxpZE1vZHVsZXMg5Lit55qE77yI5Y676YeN77yJXHJcbiAgICBBcnJheS5mcm9tKHZhbGlkTW9kdWxlcylcclxuICAgICAgLmZpbHRlcihuYW1lID0+ICFBTFdBWVNfS0VFUC5oYXMobmFtZSkpXHJcbiAgICAgIC5mb3JFYWNoKG5hbWUgPT4ge1xyXG4gICAgICAgIGZpbmFsUmVmcy5wdXNoKGAvLy8gPHJlZmVyZW5jZSBwYXRoPVwiLi8ke25hbWV9LmQudHNcIiAvPmApO1xyXG4gICAgICB9KTtcclxuXHJcbiAgICAvLyDinIUgNi4g5ZCI5bm277ya5pyA57uI5byV55SoICsg5Y6f5aeL6Z2e5byV55So6KGMXHJcbiAgICBjb25zdCByZXN1bHRMaW5lcyA9IFsuLi5maW5hbFJlZnMsICcnLCAuLi5ub25SZWZMaW5lcy5maWx0ZXIobCA9PiBsLnRyaW0oKS5sZW5ndGggPiAwKV07XHJcblxyXG4gICAgLy8g56e76Zmk6L+e57ut56m66KGM77yM5L+d55WZ5LiA5Liq5YiG6ZqUXHJcbiAgICBjb25zdCBjbGVhbmVkTGluZXMgPSByZXN1bHRMaW5lcy5maWx0ZXIoKGxpbmUsIGksIGFycikgPT5cclxuICAgICAgIShsaW5lLnRyaW0oKSA9PT0gJycgJiYgaSA+IDAgJiYgYXJyW2kgLSAxXS50cmltKCkgPT09ICcnKVxyXG4gICAgKTtcclxuXHJcbiAgICBjb25zdCBuZXdDb250ZW50ID0gY2xlYW5lZExpbmVzLmpvaW4oJ1xcbicpLnRyaW0oKSArICdcXG4nO1xyXG5cclxuICAgIC8vIOKchSA3LiDlhpnlm57mlofku7bvvIjku4XlvZPlhoXlrrnlj5jljJbml7bvvIlcclxuICAgIGlmIChjb250ZW50LnRyaW0oKSAhPT0gbmV3Q29udGVudC50cmltKCkpIHtcclxuICAgICAgZnMud3JpdGVGaWxlU3luYyhpbmRleFBhdGgsIG5ld0NvbnRlbnQsICd1dGYtOCcpO1xyXG4gICAgICBjb25zb2xlLmxvZyhg4pyFIOW3suWQjOatpSBteGNhZC1hcHAvZGlzdC9pbmRleC5kLnRzIOexu+Wei+W8leeUqGApO1xyXG4gICAgICBjb25zb2xlLmxvZyhgICAg5L+d55WZOiAke0FycmF5LmZyb20odmFsaWRNb2R1bGVzKS5qb2luKCcsICcpfWApO1xyXG4gICAgfVxyXG4gIH0gY2F0Y2ggKGVycikge1xyXG4gICAgY29uc29sZS5lcnJvcihg4p2MIOWQjOatpeexu+Wei+W8leeUqOWksei0pTpgLCBlcnIpO1xyXG4gIH1cclxufVxyXG5cclxuLyoqXHJcbiAqIOmihOWumuS5ieW6k+WQjeWIsOWFqOWxgOWPmOmHj+eahOaYoOWwhFxyXG4gKi9cclxuZXhwb3J0IGNvbnN0IERFRkFVTFRfTElCUkFSWV9NQVA6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XHJcbiAgbXhjYWQ6ICdNeENBRCcsXHJcbiAgbXhkcmF3OiAnTXgnXHJcbn1cclxuZXhwb3J0IGZ1bmN0aW9uIGdldEV4dGVybmFscyhcclxuICBsaWJyYXJ5TmFtZXM6IFJlcXVpcmVkPE14Q2FkQXNzZXRzUGx1Z2luT3B0aW9ucz5bJ2xpYnJhcnlOYW1lcyddXHJcbik6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0ge1xyXG4gIHN5bmNUeXBlUmVmZXJlbmNlcyhsaWJyYXJ5TmFtZXMpO1xyXG4gIGNvbnN0IHJlc3VsdDogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSA9IHsgLi4uREVGQVVMVF9MSUJSQVJZX01BUCB9XHJcbiAgaWYgKCFBcnJheS5pc0FycmF5KGxpYnJhcnlOYW1lcykpIHJldHVybiByZXN1bHQ7XHJcbiAgbGlicmFyeU5hbWVzLmZvckVhY2gobmFtZSA9PiB7XHJcbiAgICBpZiAobmFtZSBpbiBleHRlcm5hbHMpIHtcclxuICAgICAgcmVzdWx0W25hbWVdID0gZXh0ZXJuYWxzW25hbWUgYXMga2V5b2YgdHlwZW9mIGV4dGVybmFsc107XHJcbiAgICB9XHJcbiAgfSk7XHJcbiAgcmV0dXJuIHJlc3VsdDtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGdldFNvdXJjZUFzc2V0c1BhdGgoKTogc3RyaW5nIHtcclxuICBsZXQgY3VycmVudEZpbGU6IHN0cmluZztcclxuICBpZiAodHlwZW9mIF9fZmlsZW5hbWUgIT09ICd1bmRlZmluZWQnKSB7XHJcbiAgICBjdXJyZW50RmlsZSA9IF9fZmlsZW5hbWU7XHJcbiAgfSBlbHNlIHtcclxuICAgIC8vIEB0cy1pZ25vcmVcclxuICAgIGN1cnJlbnRGaWxlID0gZmlsZVVSTFRvUGF0aChpbXBvcnQubWV0YS51cmwpO1xyXG4gIH1cclxuICBjb25zdCBwYWNrYWdlUm9vdCA9IHJlc29sdmUoY3VycmVudEZpbGUsICcuLicsICcuLicsICcuLicpO1xyXG4gIGNvbnN0IGFzc2V0c1BhdGggPSByZXNvbHZlKHBhY2thZ2VSb290LCBuYW1lLCAnZGlzdCcsICdteGNhZEFwcEFzc2V0cycpO1xyXG4gIGlmICghZnMuZXhpc3RzU3luYyhhc3NldHNQYXRoKSkge1xyXG4gICAgdGhyb3cgbmV3IEVycm9yKGBteC1jYWQtYXBwIGFzc2V0cyBub3QgZm91bmQgYXQ6ICR7YXNzZXRzUGF0aH1gKTtcclxuICB9XHJcbiAgcmV0dXJuIGFzc2V0c1BhdGg7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBjaGVja1NvdXJjZUFzc2V0c0V4aXN0KCk6IGJvb2xlYW4ge1xyXG4gIGNvbnN0IHBhdGggPSBnZXRTb3VyY2VBc3NldHNQYXRoKCk7XHJcbiAgcmV0dXJuIGZzLmV4aXN0c1N5bmMocGF0aCkgJiYgZnMubHN0YXRTeW5jKHBhdGgpLmlzRGlyZWN0b3J5KCk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBnZW5lcmF0ZVJ1bnRpbWVDb25maWdTY3JpcHQocHVibGljUGF0aDogc3RyaW5nKTogc3RyaW5nIHtcclxuICByZXR1cm4gYFxyXG4gICAgPHNjcmlwdD5cclxuICAgICAgd2luZG93Ll9fTVhfQ0FEX0FQUF9BU1NFVF9QQVRIX18gPSAnJHtwdWJsaWNQYXRofSc7XHJcbiAgICA8L3NjcmlwdD5cclxuICBgLnRyaW0oKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGNvcHlEaXIoXHJcbiAgc3JjOiBzdHJpbmcsXHJcbiAgZGVzdDogc3RyaW5nLFxyXG4gIHB1YmxpY0Rpcjogc3RyaW5nLFxyXG4gIG9wdGlvbnM6IFJlcXVpcmVkPE14Q2FkQXNzZXRzUGx1Z2luT3B0aW9ucz4sXHJcbiAgY2FsbGJhY2s6IChlcnI/OiBFcnJvcikgPT4gdm9pZFxyXG4pOiB2b2lkIHtcclxuICAvLyDnrKzkuIDmraXvvJrmiavmj48gcHVibGljRGlyIOS4i+aJgOacieaWh+S7tu+8iOebuOWvueS6jiBwdWJsaWNEaXIg55qE6Lev5b6E77yJXHJcbiAgc2NhblB1YmxpY0RpcihwdWJsaWNEaXIsIChlcnIsIHB1YmxpY0ZpbGVzKSA9PiB7XHJcbiAgICBpZiAoZXJyKSByZXR1cm4gY2FsbGJhY2soZXJyKTtcclxuXHJcbiAgICAvLyDnrKzkuozmraXvvJrlvIDlp4vlpI3liLbvvIzkvKDlhaUgcHVibGljRmlsZXMg57yT5a2YXHJcbiAgICBkb0NvcHkoc3JjLCBkZXN0LCBwdWJsaWNEaXIsIHB1YmxpY0ZpbGVzISwgb3B0aW9ucywgY2FsbGJhY2spO1xyXG4gIH0pO1xyXG59XHJcblxyXG4vLyDlrp7pmYXmiafooYzlpI3liLbnmoTlh73mlbBcclxuZnVuY3Rpb24gZG9Db3B5KFxyXG4gIHNyYzogc3RyaW5nLFxyXG4gIGRlc3Q6IHN0cmluZyxcclxuICBwdWJsaWNEaXI6IHN0cmluZyxcclxuICBwdWJsaWNGaWxlczogU2V0PHN0cmluZz4sXHJcbiAgb3B0aW9uczogUmVxdWlyZWQ8TXhDYWRBc3NldHNQbHVnaW5PcHRpb25zPiwgLy8g5rOo5oSP77ya6L+Z6YeM6ZyA6KaB56Gu5L+dIGVuYWJsZUNvbXByZXNzZWRBc3NldHMg5piv5b+F6YCJ55qEXHJcbiAgY2FsbGJhY2s6IChlcnI/OiBFcnJvcikgPT4gdm9pZFxyXG4pIHtcclxuICBmcy5ta2RpcihkZXN0LCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9LCAoZXJyKSA9PiB7XHJcbiAgICBpZiAoZXJyKSByZXR1cm4gY2FsbGJhY2soZXJyKTtcclxuXHJcbiAgICBmcy5yZWFkZGlyKHNyYywgeyB3aXRoRmlsZVR5cGVzOiB0cnVlIH0sIChlcnIsIGRpcmVudHMpID0+IHtcclxuICAgICAgaWYgKGVycikgcmV0dXJuIGNhbGxiYWNrKGVycik7XHJcblxyXG4gICAgICBsZXQgcGVuZGluZyA9IGRpcmVudHMubGVuZ3RoO1xyXG4gICAgICBpZiAocGVuZGluZyA9PT0gMCkgcmV0dXJuIGNhbGxiYWNrKCk7XHJcblxyXG4gICAgICAvLyDmj5DliY3lrprkuYnljovnvKnmlofku7bmianlsZXlkI1cclxuICAgICAgY29uc3QgY29tcHJlc3NlZEV4dHMgPSBbJy5neiddOyAvLyDlj6/mjInpnIDmianlsZVcclxuXHJcbiAgICAgIGRpcmVudHMuZm9yRWFjaCgoZGlyZW50KSA9PiB7XHJcbiAgICAgICAgY29uc3Qgc3JjUGF0aCA9IHJlc29sdmUoc3JjLCBkaXJlbnQubmFtZSk7XHJcbiAgICAgICAgY29uc3QgZGVzdFBhdGggPSByZXNvbHZlKGRlc3QsIGRpcmVudC5uYW1lKTtcclxuICAgICAgICBjb25zdCByZWxhdGl2ZVBhdGggPSByZWxhdGl2ZShzcmMsIHNyY1BhdGgpLnJlcGxhY2UoL1xcXFwvZywgJy8nKSBhcyBDb25maWdGaWxlbmFtZTtcclxuXHJcbiAgICAgICAgLy8g5paw5aKe77ya5aaC5p6c56aB55So5Y6L57yp6LWE5rqQ5LiU5piv5Y6L57yp5paH5Lu277yM5YiZ6Lez6L+HXHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgIW9wdGlvbnMuZW5hYmxlQ29tcHJlc3NlZEFzc2V0cyAmJlxyXG4gICAgICAgICAgY29tcHJlc3NlZEV4dHMuc29tZShleHQgPT4gcmVsYXRpdmVQYXRoLmVuZHNXaXRoKGV4dCkpXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICBpZiAoLS1wZW5kaW5nID09PSAwKSBjYWxsYmFjaygpO1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKGRpcmVudC5pc0RpcmVjdG9yeSgpKSB7XHJcbiAgICAgICAgICBkb0NvcHkoc3JjUGF0aCwgZGVzdFBhdGgsIHB1YmxpY0RpciwgcHVibGljRmlsZXMsIG9wdGlvbnMsICgpID0+IHtcclxuICAgICAgICAgICAgaWYgKC0tcGVuZGluZyA9PT0gMCkgY2FsbGJhY2soKTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoZGlyZW50LmlzRmlsZSgpKSB7XHJcbiAgICAgICAgICBpZiAocHVibGljRmlsZXMuaGFzKHJlbGF0aXZlUGF0aCkpIHtcclxuICAgICAgICAgICAgY29uc3QgcHVibGljRmlsZVBhdGggPSByZXNvbHZlKHB1YmxpY0RpciwgcmVsYXRpdmVQYXRoKTtcclxuICAgICAgICAgICAgZnMuY29weUZpbGUocHVibGljRmlsZVBhdGgsIGRlc3RQYXRoLCAoZXJyKSA9PiB7XHJcbiAgICAgICAgICAgICAgaWYgKGVycikgcmV0dXJuIGNhbGxiYWNrKGVycik7XHJcbiAgICAgICAgICAgICAgaWYgKC0tcGVuZGluZyA9PT0gMCkgY2FsbGJhY2soKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKENPTkZJR19GSUxFTkFNRVMuaW5jbHVkZXMocmVsYXRpdmVQYXRoKSkge1xyXG4gICAgICAgICAgICBoYW5kbGVDb25maWdGaWxlKHNyY1BhdGgsIGRlc3RQYXRoLCByZWxhdGl2ZVBhdGgsIG9wdGlvbnMsIChlcnIpID0+IHtcclxuICAgICAgICAgICAgICBpZiAoZXJyKSByZXR1cm4gY2FsbGJhY2soZXJyKTtcclxuICAgICAgICAgICAgICBpZiAoLS1wZW5kaW5nID09PSAwKSBjYWxsYmFjaygpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGZzLmNvcHlGaWxlKHNyY1BhdGgsIGRlc3RQYXRoLCAoZXJyKSA9PiB7XHJcbiAgICAgICAgICAgICAgaWYgKGVycikgcmV0dXJuIGNhbGxiYWNrKGVycik7XHJcbiAgICAgICAgICAgICAgaWYgKC0tcGVuZGluZyA9PT0gMCkgY2FsbGJhY2soKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGlmICgtLXBlbmRpbmcgPT09IDApIGNhbGxiYWNrKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG4gIH0pO1xyXG59XHJcbi8vIOaJq+aPjyBwdWJsaWNEaXIg5LiL5omA5pyJ5paH5Lu277yM6L+U5Zue55u45a+55LqOIHB1YmxpY0RpciDnmoTot6/lvoTpm4blkIhcclxuZnVuY3Rpb24gc2NhblB1YmxpY0RpcihcclxuICBwdWJsaWNEaXI6IHN0cmluZyxcclxuICBjYWxsYmFjazogKGVycjogTm9kZUpTLkVycm5vRXhjZXB0aW9uIHwgbnVsbCwgZmlsZXM/OiBTZXQ8c3RyaW5nPikgPT4gdm9pZFxyXG4pIHtcclxuICBjb25zdCByZXN1bHQgPSBuZXcgU2V0PHN0cmluZz4oKTtcclxuXHJcbiAgZnVuY3Rpb24gd2FsayhkaXI6IHN0cmluZykge1xyXG4gICAgZnMucmVhZGRpcihkaXIsIHsgd2l0aEZpbGVUeXBlczogdHJ1ZSB9LCAoZXJyLCBkaXJlbnRzKSA9PiB7XHJcbiAgICAgIGlmIChlcnIpIHJldHVybiBjYWxsYmFjayhlcnIpO1xyXG5cclxuICAgICAgbGV0IHBlbmRpbmcgPSBkaXJlbnRzLmxlbmd0aDtcclxuICAgICAgaWYgKHBlbmRpbmcgPT09IDApIHtcclxuICAgICAgICByZXR1cm4gY2FsbGJhY2sobnVsbCwgcmVzdWx0KTtcclxuICAgICAgfVxyXG5cclxuICAgICAgZGlyZW50cy5mb3JFYWNoKChkaXJlbnQpID0+IHtcclxuICAgICAgICBjb25zdCBmdWxsUGF0aCA9IHJlc29sdmUoZGlyLCBkaXJlbnQubmFtZSk7XHJcbiAgICAgICAgY29uc3QgcmVsUGF0aCA9IHJlbGF0aXZlKHB1YmxpY0RpciwgZnVsbFBhdGgpLnJlcGxhY2UoL1xcXFwvZywgJy8nKTtcclxuXHJcbiAgICAgICAgaWYgKGRpcmVudC5pc0RpcmVjdG9yeSgpKSB7XHJcbiAgICAgICAgICB3YWxrKGZ1bGxQYXRoKTtcclxuICAgICAgICB9IGVsc2UgaWYgKGRpcmVudC5pc0ZpbGUoKSkge1xyXG4gICAgICAgICAgcmVzdWx0LmFkZChyZWxQYXRoKTtcclxuICAgICAgICAgIGlmICgtLXBlbmRpbmcgPT09IDApIHtcclxuICAgICAgICAgICAgY2FsbGJhY2sobnVsbCwgcmVzdWx0KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgaWYgKC0tcGVuZGluZyA9PT0gMCkge1xyXG4gICAgICAgICAgICBjYWxsYmFjayhudWxsLCByZXN1bHQpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHdhbGsocHVibGljRGlyKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGdldENvbnRlbnRUeXBlKGZpbGVQYXRoOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gIGNvbnN0IGV4dCA9IGZpbGVQYXRoLnNwbGl0KCcuJykucG9wKCk/LnRvTG93ZXJDYXNlKCkgfHwgJyc7XHJcbiAgY29uc3QgdHlwZXM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XHJcbiAgICAnY3NzJzogJ3RleHQvY3NzJyxcclxuICAgICdqcyc6ICdhcHBsaWNhdGlvbi9qYXZhc2NyaXB0JyxcclxuICAgICdqc29uJzogJ2FwcGxpY2F0aW9uL2pzb24nLFxyXG4gICAgJ3BuZyc6ICdpbWFnZS9wbmcnLFxyXG4gICAgJ2pwZyc6ICdpbWFnZS9qcGVnJyxcclxuICAgICdqcGVnJzogJ2ltYWdlL2pwZWcnLFxyXG4gICAgJ2dpZic6ICdpbWFnZS9naWYnLFxyXG4gICAgJ3N2Zyc6ICdpbWFnZS9zdmcreG1sJyxcclxuICAgICd3b2ZmJzogJ2ZvbnQvd29mZicsXHJcbiAgICAnd29mZjInOiAnZm9udC93b2ZmMicsXHJcbiAgICAndHRmJzogJ2ZvbnQvdHRmJyxcclxuICAgICdlb3QnOiAnYXBwbGljYXRpb24vdm5kLm1zLWZvbnRvYmplY3QnLFxyXG4gICAgJ2ljbyc6ICdpbWFnZS94LWljb24nLFxyXG4gICAgJ3dhc20nOiAnYXBwbGljYXRpb24vd2FzbScsXHJcbiAgICAnemlwJzogJ2FwcGxpY2F0aW9uL3ppcCcsXHJcbiAgICAncmFyJzogJ2FwcGxpY2F0aW9uL3gtcmFyLWNvbXByZXNzZWQnLFxyXG4gICAgJzd6JzogJ2FwcGxpY2F0aW9uL3gtN3otY29tcHJlc3NlZCcsXHJcbiAgICAndGFyJzogJ2FwcGxpY2F0aW9uL3gtdGFyJyxcclxuICAgICdneic6ICdhcHBsaWNhdGlvbi9nemlwJyxcclxuICAgICdiejInOiAnYXBwbGljYXRpb24veC1iemlwMicsXHJcbiAgICAneHonOiAnYXBwbGljYXRpb24veC14eidcclxuICB9O1xyXG4gIHJldHVybiB0eXBlc1tleHRdIHx8ICdhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0nO1xyXG59XHJcblxyXG5cclxuLyoqXHJcbiAqIOagh+WHhuWMlui3r+W+hO+8jOehruS/neS7pSAnLycg57uT5bC+XHJcbiAqL1xyXG5mdW5jdGlvbiBub3JtYWxpemVQYXRoKHA6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgcmV0dXJuIHJlc29sdmUocCkucmVwbGFjZSgvXFxcXC9nLCAnLycpICsgJy8nO1xyXG59XHJcblxyXG4vKipcclxuICog5Yib5bu66YCa55So5Lit6Ze05Lu277ya5LyY5YWI5L2/55SoIHB1YmxpYyDotYTmupDvvIzlm57pgIDliLAgc291cmNlQXNzZXRzUGF0aFxyXG4gKiDlr7nmoIcgY3JlYXRlU3RhdGljTWlkZGxld2FyZSDpo47moLxcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVNeENhZEFzc2V0c01pZGRsZXdhcmUoXHJcbiAgcm9vdDogc3RyaW5nLFxyXG4gIG9wdGlvbnM6IFJlcXVpcmVkPE14Q2FkQXNzZXRzUGx1Z2luT3B0aW9ucz4sXHJcbiAgcHVibGljRGlyOiBzdHJpbmcsXHJcbiAgbG9nZ2VyPzogYW55XHJcbikge1xyXG4gIGNvbnN0IHsgb3V0cHV0RGlyLCBpc1dhc21TdCA9IGZhbHNlIH0gPSBvcHRpb25zO1xyXG4gIC8vIOKchSAxLiDop4TojIPljJbot6/lvoRcclxuICBjb25zdCBiYXNlUGF0aCA9IGAvJHtvdXRwdXREaXIucmVwbGFjZSgvXlxcLysvLCAnJyl9YDsgLy8gJy9teGNhZEFwcEFzc2V0cydcclxuICBjb25zdCBzb3VyY2VBc3NldHNSb290ID0gbm9ybWFsaXplUGF0aChyb290KTtcclxuXHJcbiAgcmV0dXJuIGFzeW5jIChyZXE6IGFueSwgcmVzOiBhbnksIG5leHQ6ICgpID0+IHZvaWQpID0+IHtcclxuICAgIC8vIOKchSAyLiDln7rmnKzmoKHpqoxcclxuICAgIGlmICghcmVxLnVybCB8fCB0eXBlb2YgcmVxLnVybCAhPT0gJ3N0cmluZycpIHtcclxuICAgICAgcmV0dXJuIG5leHQoKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyDinIUgMy4g6K6+572u5a6J5YWo5aS077yI6Z2eIGlzV2FzbVN0IOaooeW8j++8iVxyXG4gICAgaWYgKCFpc1dhc21TdCkge1xyXG4gICAgICByZXMuc2V0SGVhZGVyKCdDcm9zcy1PcmlnaW4tT3BlbmVyLVBvbGljeScsICdzYW1lLW9yaWdpbicpO1xyXG4gICAgICByZXMuc2V0SGVhZGVyKCdDcm9zcy1PcmlnaW4tRW1iZWRkZXItUG9saWN5JywgJ3JlcXVpcmUtY29ycCcpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIOKchSA0LiDop6PmnpAgVVJMIOi3r+W+hO+8iOWOuyBxdWVyee+8jOino+egge+8iVxyXG4gICAgY29uc3QgdXJsUGF0aCA9IHJlcS51cmwuc3BsaXQoJz8nKVswXTtcclxuICAgIGxldCBmaWxlUGF0aCE6IHN0cmluZztcclxuICAgIGxldCBmaWxlTmFtZSE6IHN0cmluZztcclxuXHJcbiAgICB0cnkge1xyXG4gICAgICBjb25zdCBkZWNvZGVkUGF0aCA9IGRlY29kZVVSSUNvbXBvbmVudCh1cmxQYXRoKTtcclxuICAgICAgLy8g6KeE6IyD5YyW6Lev5b6E77yM6Ziy5q2iIC4uLy4uLyDotormnYNcclxuICAgICAgY29uc3Qgbm9ybWFsaXplZFBhdGggPSBkZWNvZGVkUGF0aC5yZXBsYWNlKC9eWy9cXFxcXSsvLCAnJyk7XHJcblxyXG4gICAgICAvLyDinIUgNS4g5LyY5YWI77ya5qOA5p+lIHB1YmxpYy8ke291dHB1dERpcn0g55uu5b2VXHJcbiAgICAgIGNvbnN0IHB1YmxpY0ZpbGVQYXRoID0gam9pbihwdWJsaWNEaXIsIG5vcm1hbGl6ZWRQYXRoKS5yZXBsYWNlKC9cXFxcL2csICcvJyk7XHJcblxyXG4gICAgICB0cnkge1xyXG4gICAgICAgIGNvbnN0IHN0YXQgPSBhd2FpdCBmcy5wcm9taXNlcy5zdGF0KHB1YmxpY0ZpbGVQYXRoKTtcclxuICAgICAgICBpZiAoc3RhdC5pc0ZpbGUoKSkge1xyXG4gICAgICAgICAgZmlsZVBhdGggPSBwdWJsaWNGaWxlUGF0aDtcclxuICAgICAgICAgIGZpbGVOYW1lID0gYmFzZW5hbWUobm9ybWFsaXplZFBhdGgpO1xyXG4gICAgICAgICAgcmV0dXJuIHNlcnZlRmlsZShmaWxlUGF0aCwgZmlsZU5hbWUsIHJlcywgbG9nZ2VyKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0gY2F0Y2ggKGVycikge1xyXG4gICAgICAgIC8vIHB1YmxpYyDkuK3msqHmnInvvIznu6fnu63mn6Xmib4gc291cmNlQXNzZXRzUGF0aFxyXG4gICAgICB9XHJcblxyXG4gICAgICAvLyDinIUgNi4gZmFsbGJhY2vvvJrmn6Xmib4gc291cmNlQXNzZXRzUGF0aFxyXG4gICAgICBjb25zdCByZXN1bHQgPSByZXNvbHZlU2FmZVBhdGgoZGVjb2RlZFBhdGgsIHNvdXJjZUFzc2V0c1Jvb3QsIGJhc2VQYXRoKTtcclxuICAgICAgaWYgKCFyZXN1bHQuc3VjY2Vzcykge1xyXG4gICAgICAgIHJlcy5zdGF0dXNDb2RlID0gcmVzdWx0LnN0YXR1c0NvZGUgfHwgNDAwO1xyXG4gICAgICAgIHJldHVybiByZXMuZW5kKHJlc3VsdC5tZXNzYWdlKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKHJlc3VsdC5maWxlUGF0aCkgZmlsZVBhdGggPSByZXN1bHQuZmlsZVBhdGg7XHJcbiAgICAgIGlmIChyZXN1bHQuZmlsZU5hbWUpIGZpbGVOYW1lID0gcmVzdWx0LmZpbGVOYW1lO1xyXG5cclxuICAgICAgLy8g4pyFIDcuIOWwneivleeUsSBoYW5kbGVDb25maWdSZXF1ZXN0IOWkhOeQhu+8iOWmguazqOWFpemFjee9ru+8iVxyXG4gICAgICBjb25zdCBoYW5kbGVkID0gYXdhaXQgaGFuZGxlQ29uZmlnUmVxdWVzdChcclxuICAgICAgICBmaWxlUGF0aCxcclxuICAgICAgICBmaWxlTmFtZSxcclxuICAgICAgICBvcHRpb25zLFxyXG4gICAgICAgIHJlcyxcclxuICAgICAgICBsb2dnZXJcclxuICAgICAgKTtcclxuICAgICAgaWYgKGhhbmRsZWQpIHJldHVybjtcclxuXHJcbiAgICAgIC8vIOKchSA4LiDnoa7kv53mmK/mlofku7ZcclxuICAgICAgY29uc3Qgc3RhdCA9IGF3YWl0IGZzLnByb21pc2VzLnN0YXQoZmlsZVBhdGgpO1xyXG4gICAgICBpZiAoIXN0YXQuaXNGaWxlKCkpIHtcclxuICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDQwNDtcclxuICAgICAgICByZXR1cm4gcmVzLmVuZCgnRmlsZSBub3QgZm91bmQnKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgcmV0dXJuIHNlcnZlRmlsZShmaWxlUGF0aCwgZmlsZU5hbWUsIHJlcywgbG9nZ2VyKTtcclxuICAgIH0gY2F0Y2ggKGVycikge1xyXG4gICAgICBsb2dnZXI/Lndhcm4/LihgW014Q2FkQXNzZXRzXSBTZXJ2ZSBmYWlsZWQgZm9yICR7cmVxLnVybH06ICR7KGVyciBhcyBFcnJvcikubWVzc2FnZX1gKTtcclxuICAgICAgaWYgKHJlcy5oZWFkZXJzU2VudCkgcmV0dXJuO1xyXG4gICAgICByZXMuc3RhdHVzQ29kZSA9IDQwNDtcclxuICAgICAgcmVzLmVuZCgnRmlsZSBub3QgZm91bmQnKTtcclxuICAgIH1cclxuICB9O1xyXG59XHJcblxyXG4vKipcclxuICog5bCB6KOF5paH5Lu25ZON5bqU6YC76L6R77yI5rWB5byP5Lyg6L6T77yJXHJcbiAqL1xyXG5mdW5jdGlvbiBzZXJ2ZUZpbGUoZmlsZVBhdGg6IHN0cmluZywgZmlsZU5hbWU6IHN0cmluZywgcmVzOiBhbnksIGxvZ2dlcj86IGFueSkge1xyXG4gIGNvbnN0IHN0cmVhbSA9IGZzLmNyZWF0ZVJlYWRTdHJlYW0oZmlsZVBhdGgpO1xyXG5cclxuICBzdHJlYW0ub24oJ2Vycm9yJywgKGVycjogTm9kZUpTLkVycm5vRXhjZXB0aW9uKSA9PiB7XHJcbiAgICBpZiAocmVzLmhlYWRlcnNTZW50KSByZXR1cm47XHJcbiAgICBpZiAoZXJyLmNvZGUgPT09ICdFTk9FTlQnIHx8IGVyci5jb2RlID09PSAnRUFDQ0VTJykge1xyXG4gICAgICByZXR1cm4gcmVzLnN0YXR1c0NvZGUgPT09IDIwMCA/IHJlcy5lbmQoKSA6IHVuZGVmaW5lZDtcclxuICAgIH1cclxuICAgIGxvZ2dlcj8uZXJyb3I/LihgW014Q2FkQXNzZXRzXSBSZWFkIGVycm9yOiAke2Vyci5tZXNzYWdlfWAsIGVycik7XHJcbiAgICByZXMuc3RhdHVzQ29kZSA9IDUwMDtcclxuICAgIHJlcy5lbmQoJ0ludGVybmFsIFNlcnZlciBFcnJvcicpO1xyXG4gIH0pO1xyXG5cclxuICByZXMuc2V0SGVhZGVyKCdDb250ZW50LVR5cGUnLCBnZXRDb250ZW50VHlwZShmaWxlTmFtZSkpO1xyXG4gIHJlcy5zZXRIZWFkZXIoJ1gtQ29udGVudC1UeXBlLU9wdGlvbnMnLCAnbm9zbmlmZicpO1xyXG5cclxuICBzdHJlYW0ucGlwZShyZXMpO1xyXG59Il0sIm5hbWVzIjpbImpvaW4iLCJyZXNvbHZlIiwiYmFzZW5hbWUiLCJlcnIiLCJuYW1lIiwiZmlsZVVSTFRvUGF0aCIsInJlbGF0aXZlIiwic3RhdCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
|
|
3
3
|
const path = require("path");
|
|
4
4
|
const fs = require("fs");
|
|
5
|
-
const index = require("../index-
|
|
5
|
+
const index = require("../index-DRKNKLRx.js");
|
|
6
6
|
function _interopNamespaceDefault(e) {
|
|
7
7
|
const n = Object.create(null, { [Symbol.toStringTag]: { value: "Module" } });
|
|
8
8
|
if (e) {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { resolve } from "path";
|
|
2
2
|
import * as fs from "fs";
|
|
3
|
-
import { r as resolveOptions, g as getSourceAssetsPath, a as getExternals, f as generateRuntimeConfigScript, c as copyDir, h as getContentType, b as createGlobalUniversalMiddleware, e as getApiMap } from "../index-
|
|
3
|
+
import { r as resolveOptions, g as getSourceAssetsPath, a as getExternals, f as generateRuntimeConfigScript, c as copyDir, h as getContentType, b as createGlobalUniversalMiddleware, e as getApiMap } from "../index-C-cFEcIk.mjs";
|
|
4
4
|
function mxcadAssetsPlugin(options = {}) {
|
|
5
5
|
const resolvedOptions = resolveOptions(options);
|
|
6
6
|
const sourceAssetsPath = getSourceAssetsPath();
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
|
|
3
3
|
const path = require("path");
|
|
4
4
|
const fs = require("fs");
|
|
5
|
-
const index = require("../index-
|
|
5
|
+
const index = require("../index-DRKNKLRx.js");
|
|
6
6
|
function _interopNamespaceDefault(e) {
|
|
7
7
|
const n = Object.create(null, { [Symbol.toStringTag]: { value: "Module" } });
|
|
8
8
|
if (e) {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { resolve } from "path";
|
|
2
2
|
import * as fs from "fs";
|
|
3
|
-
import { r as resolveOptions, g as getSourceAssetsPath, a as getExternals, c as copyDir, b as createGlobalUniversalMiddleware, d as createMxCadAssetsMiddleware, e as getApiMap, f as generateRuntimeConfigScript } from "../index-
|
|
3
|
+
import { r as resolveOptions, g as getSourceAssetsPath, a as getExternals, c as copyDir, b as createGlobalUniversalMiddleware, d as createMxCadAssetsMiddleware, e as getApiMap, f as generateRuntimeConfigScript } from "../index-C-cFEcIk.mjs";
|
|
4
4
|
function mxcadAssetsPlugin(options = {}) {
|
|
5
5
|
let config;
|
|
6
6
|
const resolvedOptions = resolveOptions(options);
|
|
@@ -3,7 +3,7 @@ Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toString
|
|
|
3
3
|
const webpack = require("webpack");
|
|
4
4
|
const fs = require("fs");
|
|
5
5
|
const path = require("path");
|
|
6
|
-
const index = require("../index-
|
|
6
|
+
const index = require("../index-DRKNKLRx.js");
|
|
7
7
|
function _interopNamespaceDefault(e) {
|
|
8
8
|
const n = Object.create(null, { [Symbol.toStringTag]: { value: "Module" } });
|
|
9
9
|
if (e) {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Compilation } from "webpack";
|
|
2
2
|
import * as fs from "fs";
|
|
3
3
|
import * as path from "path";
|
|
4
|
-
import { r as resolveOptions, g as getSourceAssetsPath, a as getExternals, b as createGlobalUniversalMiddleware, d as createMxCadAssetsMiddleware, c as copyDir, f as generateRuntimeConfigScript } from "../index-
|
|
4
|
+
import { r as resolveOptions, g as getSourceAssetsPath, a as getExternals, b as createGlobalUniversalMiddleware, d as createMxCadAssetsMiddleware, c as copyDir, f as generateRuntimeConfigScript } from "../index-C-cFEcIk.mjs";
|
|
5
5
|
class MxCadAssetsWebpackPlugin {
|
|
6
6
|
options;
|
|
7
7
|
sourceAssetsPath;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "mxcad-app",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.35",
|
|
4
4
|
"main": "./dist/index.cjs",
|
|
5
5
|
"module": "./dist/index.js",
|
|
6
6
|
"types": "./dist/index.d.ts",
|
|
@@ -55,6 +55,7 @@
|
|
|
55
55
|
"dist",
|
|
56
56
|
"LICENSE",
|
|
57
57
|
"LICENSE_CN",
|
|
58
|
+
"THIRD-PARTY-NOTICES.txt",
|
|
58
59
|
"README.md",
|
|
59
60
|
"packToolPlugin",
|
|
60
61
|
"package.json",
|