@nlabs/lex 1.49.4 → 1.49.5
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/__mocks__/chalk.js +19 -17
- package/index.cjs +1 -5
- package/lib/commands/build/build.js +2 -2
- package/lib/commands/compile/compile.js +3 -2
- package/lib/commands/dev/dev.d.ts +1 -0
- package/lib/commands/dev/dev.js +20 -26
- package/lib/commands/test/test.d.ts +1 -1
- package/lib/commands/test/test.js +25 -9
- package/lib/lex.js +5 -5
- package/lib/utils/translations.js +19 -3
- package/package.json +1 -1
- package/webpack.config.js +18 -1
package/__mocks__/chalk.js
CHANGED
|
@@ -1,23 +1,25 @@
|
|
|
1
1
|
// Mock implementation of chalk
|
|
2
2
|
const createChalkMock = (text) => text;
|
|
3
3
|
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
4
|
+
// Create a simple mock that returns itself for method chaining
|
|
5
|
+
const chalkMock = (text) => text;
|
|
6
|
+
|
|
7
|
+
// Add all chalk methods to the mock function
|
|
8
|
+
chalkMock.red = chalkMock;
|
|
9
|
+
chalkMock.green = chalkMock;
|
|
10
|
+
chalkMock.blue = chalkMock;
|
|
11
|
+
chalkMock.yellow = chalkMock;
|
|
12
|
+
chalkMock.cyan = chalkMock;
|
|
13
|
+
chalkMock.magenta = chalkMock;
|
|
14
|
+
chalkMock.white = chalkMock;
|
|
15
|
+
chalkMock.gray = chalkMock;
|
|
16
|
+
chalkMock.grey = chalkMock;
|
|
17
|
+
chalkMock.black = chalkMock;
|
|
18
|
+
chalkMock.bold = chalkMock;
|
|
19
|
+
chalkMock.dim = chalkMock;
|
|
20
|
+
chalkMock.italic = chalkMock;
|
|
21
|
+
chalkMock.underline = chalkMock;
|
|
22
|
+
chalkMock.strikethrough = chalkMock;
|
|
21
23
|
|
|
22
24
|
module.exports = chalkMock;
|
|
23
25
|
module.exports.default = chalkMock;
|
package/index.cjs
CHANGED
|
@@ -2,15 +2,11 @@
|
|
|
2
2
|
* CommonJS entry point for @nlabs/lex
|
|
3
3
|
*/
|
|
4
4
|
|
|
5
|
-
// This file provides CommonJS compatibility for projects using require()
|
|
6
5
|
module.exports = {
|
|
7
|
-
// Export Config as both a type and a namespace with create method for backward compatibility
|
|
8
6
|
Config: {
|
|
9
7
|
create: (config) => config
|
|
10
8
|
},
|
|
11
|
-
|
|
12
|
-
LexConfig: require('./dist/LexConfig.js').LexConfig,
|
|
13
|
-
// Export utility functions
|
|
9
|
+
LexConfig: require('./lib/LexConfig.js').LexConfig,
|
|
14
10
|
utils: {
|
|
15
11
|
aiService: require('./lib/utils/aiService.js'),
|
|
16
12
|
app: require('./lib/utils/app.js'),
|
|
@@ -49,7 +49,7 @@ ${chalk.yellow("Ready for deployment! \u{1F680}")}`,
|
|
|
49
49
|
const buildWithEsBuild = async (spinner, commandOptions, callback) => {
|
|
50
50
|
const {
|
|
51
51
|
cliName = "Lex",
|
|
52
|
-
format = "
|
|
52
|
+
format = "esm",
|
|
53
53
|
outputPath,
|
|
54
54
|
quiet,
|
|
55
55
|
sourcePath,
|
|
@@ -491,4 +491,4 @@ export {
|
|
|
491
491
|
buildWithWebpack,
|
|
492
492
|
build_default as default
|
|
493
493
|
};
|
|
494
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2NvbW1hbmRzL2J1aWxkL2J1aWxkLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxOC1QcmVzZW50LCBOaXRyb2dlbiBMYWJzLCBJbmMuXG4gKiBDb3B5cmlnaHRzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4gU2VlIHRoZSBhY2NvbXBhbnlpbmcgTElDRU5TRSBmaWxlIGZvciB0ZXJtcy5cbiAqL1xuaW1wb3J0IEdyYXBocWxMb2FkZXJQbHVnaW4gZnJvbSAnQGx1Y2t5Y2F0ZmFjdG9yeS9lc2J1aWxkLWdyYXBocWwtbG9hZGVyJztcbmltcG9ydCB7ZXhlY2F9IGZyb20gJ2V4ZWNhJztcbmltcG9ydCB7ZXhpc3RzU3luYywgcmVhZEZpbGVTeW5jfSBmcm9tICdmcyc7XG5pbXBvcnQge3N5bmMgYXMgZ2xvYlN5bmN9IGZyb20gJ2dsb2InO1xuaW1wb3J0IHtkaXJuYW1lLCByZXNvbHZlIGFzIHBhdGhSZXNvbHZlfSBmcm9tICdwYXRoJztcblxuaW1wb3J0IHtMZXhDb25maWcsIGdldFR5cGVTY3JpcHRDb25maWdQYXRofSBmcm9tICcuLi8uLi9MZXhDb25maWcuanMnO1xuaW1wb3J0IHtjaGVja0xpbmtlZE1vZHVsZXMsIGNvcHlDb25maWd1cmVkRmlsZXMsIGNyZWF0ZVNwaW5uZXIsIGNyZWF0ZVByb2dyZXNzQmFyLCBoYW5kbGVXZWJwYWNrUHJvZ3Jlc3MsIHJlbW92ZUZpbGVzfSBmcm9tICcuLi8uLi91dGlscy9hcHAuanMnO1xuaW1wb3J0IHtnZXREaXJOYW1lLCByZWxhdGl2ZU5vZGVQYXRoLCByZXNvbHZlV2VicGFja1BhdGhzLCBnZXRMZXhQYWNrYWdlSnNvblBhdGh9IGZyb20gJy4uLy4uL3V0aWxzL2ZpbGUuanMnO1xuaW1wb3J0IHtsb2d9IGZyb20gJy4uLy4uL3V0aWxzL2xvZy5qcyc7XG5pbXBvcnQge3Byb2Nlc3NUcmFuc2xhdGlvbnN9IGZyb20gJy4uLy4uL3V0aWxzL3RyYW5zbGF0aW9ucy5qcyc7XG5pbXBvcnQge2FpRnVuY3Rpb259IGZyb20gJy4uL2FpL2FpLmpzJztcbmltcG9ydCBib3hlbiBmcm9tICdib3hlbic7XG5pbXBvcnQgY2hhbGsgZnJvbSAnY2hhbGsnO1xuXG5sZXQgY3VycmVudEZpbGVuYW1lOiBzdHJpbmc7XG5sZXQgY3VycmVudERpcm5hbWU6IHN0cmluZztcblxudHJ5IHtcbiAgY3VycmVudEZpbGVuYW1lID0gZXZhbCgncmVxdWlyZShcInVybFwiKS5maWxlVVJMVG9QYXRoKGltcG9ydC5tZXRhLnVybCknKTtcbiAgY3VycmVudERpcm5hbWUgPSBkaXJuYW1lKGN1cnJlbnRGaWxlbmFtZSk7XG59IGNhdGNoIHtcbiAgY3VycmVudEZpbGVuYW1lID0gcHJvY2Vzcy5jd2QoKTtcbiAgY3VycmVudERpcm5hbWUgPSBwcm9jZXNzLmN3ZCgpO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEJ1aWxkT3B0aW9ucyB7XG4gIHJlYWRvbmx5IGFzc2lzdD86IGJvb2xlYW47XG4gIHJlYWRvbmx5IGFuYWx5emU/OiBib29sZWFuO1xuICByZWFkb25seSBidW5kbGVyPzogJ3dlYnBhY2snIHwgJ2VzYnVpbGQnO1xuICByZWFkb25seSBjbGlOYW1lPzogc3RyaW5nO1xuICByZWFkb25seSBlbnRyeT86IHN0cmluZzsgLy8gPC0tIGFkZCBlbnRyeVxuICByZWFkb25seSBmb3JtYXQ/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IG91dHB1dFBhdGg/OiBzdHJpbmc7IC8vIDwtLSBhbHJlYWR5IHByZXNlbnRcbiAgcmVhZG9ubHkgcXVpZXQ/OiBib29sZWFuO1xuICByZWFkb25seSByZW1vdmU/OiBib29sZWFuO1xuICByZWFkb25seSBzb3VyY2VQYXRoPzogc3RyaW5nO1xuICByZWFkb25seSB0ZXN0PzogYm9vbGVhbjtcbiAgcmVhZG9ubHkgdHJhbnNsYXRpb25zPzogYm9vbGVhbjtcbiAgcmVhZG9ubHkgdmFyaWFibGVzPzogc3RyaW5nO1xuICByZWFkb25seSB3YXRjaD86IGJvb2xlYW47XG59XG5cbmV4cG9ydCB0eXBlIEJ1aWxkQ2FsbGJhY2sgPSAoc3RhdHVzOiBudW1iZXIpID0+IHZvaWQ7XG5cbmNvbnN0IGRpc3BsYXlCdWlsZFN0YXR1cyA9IChidW5kbGVyOiBzdHJpbmcsIG91dHB1dFBhdGg6IHN0cmluZywgcXVpZXQ6IGJvb2xlYW4sIHN0YXRzPzoge21vZHVsZXM/OiBudW1iZXI7IGFzc2V0cz86IG51bWJlcjsgc2l6ZT86IHN0cmluZ30pID0+IHtcbiAgaWYocXVpZXQpIHJldHVybjtcblxuICBsZXQgc3RhdHNJbmZvID0gJyc7XG4gIGlmKHN0YXRzICYmIHN0YXRzLm1vZHVsZXMgJiYgc3RhdHMuYXNzZXRzKSB7XG4gICAgc3RhdHNJbmZvID0gYFxcbiR7Y2hhbGsuZ3JlZW4oJ01vZHVsZXM6Jyl9ICAgICR7Y2hhbGsuY3lhbihzdGF0cy5tb2R1bGVzKX1cXG5gICtcbiAgICAgIGAke2NoYWxrLmdyZWVuKCdBc3NldHM6Jyl9ICAgICAke2NoYWxrLmN5YW4oc3RhdHMuYXNzZXRzKX1cXG5gICtcbiAgICAgIGAke2NoYWxrLmdyZWVuKCdTaXplOicpfSAgICAgICAke2NoYWxrLmN5YW4oc3RhdHMuc2l6ZSl9XFxuYDtcbiAgfVxuXG4gIGNvbnN0IHN0YXR1c0JveCA9IGJveGVuKFxuICAgIGAke2NoYWxrLmN5YW4uYm9sZCgnXHVEODNDXHVERkQ3XHVGRTBGICBCdWlsZCBDb21wbGV0ZWQgU3VjY2Vzc2Z1bGx5Jyl9XFxuXFxuYCArXG4gICAgYCR7Y2hhbGsuZ3JlZW4oJ0J1bmRsZXI6Jyl9ICAgICR7Y2hhbGsuY3lhbihidW5kbGVyKX1cXG5gICtcbiAgICBgJHtjaGFsay5ncmVlbignT3V0cHV0OicpfSAgICAgJHtjaGFsay51bmRlcmxpbmUob3V0cHV0UGF0aCl9JHtzdGF0c0luZm99XFxuYCArXG4gICAgYCR7Y2hhbGsueWVsbG93KCdSZWFkeSBmb3IgZGVwbG95bWVudCEgXHVEODNEXHVERTgwJyl9YCxcbiAgICB7XG4gICAgICBwYWRkaW5nOiAxLFxuICAgICAgbWFyZ2luOiAxLFxuICAgICAgYm9yZGVyU3R5bGU6ICdyb3VuZCcsXG4gICAgICBib3JkZXJDb2xvcjogJ2dyZWVuJyxcbiAgICAgIGJhY2tncm91bmRDb2xvcjogJyMxYTFhMWEnXG4gICAgfVxuICApO1xuXG4gIGNvbnNvbGUubG9nKCdcXG4nICsgc3RhdHVzQm94ICsgJ1xcbicpO1xufTtcblxuZXhwb3J0IGNvbnN0IGJ1aWxkV2l0aEVzQnVpbGQgPSBhc3luYyAoc3Bpbm5lciwgY29tbWFuZE9wdGlvbnM6IEJ1aWxkT3B0aW9ucywgY2FsbGJhY2s6IEJ1aWxkQ2FsbGJhY2spID0+IHtcbiAgY29uc3Qge1xuICAgIGNsaU5hbWUgPSAnTGV4JyxcbiAgICBmb3JtYXQgPSAnY2pzJyxcbiAgICBvdXRwdXRQYXRoLFxuICAgIHF1aWV0LFxuICAgIHNvdXJjZVBhdGgsXG4gICAgd2F0Y2hcbiAgfSA9IGNvbW1hbmRPcHRpb25zO1xuICBjb25zdCB7XG4gICAgb3V0cHV0RnVsbFBhdGgsXG4gICAgc291cmNlRnVsbFBhdGgsXG4gICAgdGFyZ2V0RW52aXJvbm1lbnQsXG4gICAgdXNlR3JhcGhRbCxcbiAgICB1c2VUeXBlc2NyaXB0XG4gIH0gPSBMZXhDb25maWcuY29uZmlnO1xuICBjb25zdCBzb3VyY2VEaXI6IHN0cmluZyA9IHNvdXJjZVBhdGggPyBwYXRoUmVzb2x2ZShwcm9jZXNzLmN3ZCgpLCBgLi8ke3NvdXJjZVBhdGh9YCkgOiBzb3VyY2VGdWxsUGF0aCB8fCAnJztcbiAgY29uc3QgbG9hZGVyID0ge1xuICAgICcuanMnOiAnanMnXG4gIH07XG5cbiAgaWYodXNlVHlwZXNjcmlwdCkge1xuICAgIGxvYWRlclsnLnRzJ10gPSAndHMnO1xuICAgIGxvYWRlclsnLnRzeCddID0gJ3RzeCc7XG4gIH1cblxuICBjb25zdCBwbHVnaW5zID0gW107XG5cbiAgaWYodXNlR3JhcGhRbCkge1xuICAgIHBsdWdpbnMucHVzaCgoR3JhcGhxbExvYWRlclBsdWdpbiBhcyB1bmtub3duIGFzICgpID0+IG5ldmVyKSgpKTtcbiAgfVxuXG4gIGNvbnN0IGdsb2JPcHRpb25zID0ge1xuICAgIGN3ZDogc291cmNlRGlyLFxuICAgIGRvdDogZmFsc2UsXG4gICAgbm9kaXI6IHRydWUsXG4gICAgbm9zb3J0OiB0cnVlXG4gIH07XG4gIGNvbnN0IHRzRmlsZXM6IHN0cmluZ1tdID0gZ2xvYlN5bmMoYCR7c291cmNlRGlyfS8qKi8hKCouc3BlY3wqLnRlc3QpLnRzKmAsIGdsb2JPcHRpb25zKTtcbiAgY29uc3QganNGaWxlczogc3RyaW5nW10gPSBnbG9iU3luYyhgJHtzb3VyY2VEaXJ9LyoqLyEoKi5zcGVjfCoudGVzdCkuanNgLCBnbG9iT3B0aW9ucyk7XG4gIGNvbnN0IHNvdXJjZUZpbGVzOiBzdHJpbmdbXSA9IFsuLi50c0ZpbGVzLCAuLi5qc0ZpbGVzXTtcblxuICBjb25zdCBwYWNrYWdlSnNvbkRhdGEgPSByZWFkRmlsZVN5bmMocGF0aFJlc29sdmUocHJvY2Vzcy5jd2QoKSwgJy4vcGFja2FnZS5qc29uJykpO1xuICBjb25zdCBwYWNrYWdlSnNvbiA9IEpTT04ucGFyc2UocGFja2FnZUpzb25EYXRhLnRvU3RyaW5nKCkpO1xuICBjb25zdCBleHRlcm5hbCA9IFtcbiAgICAuLi5PYmplY3Qua2V5cyhwYWNrYWdlSnNvbi5kZXBlbmRlbmNpZXMgfHwge30pLFxuICAgIC4uLk9iamVjdC5rZXlzKHBhY2thZ2VKc29uLnBlZXJEZXBlbmRlbmNpZXMgfHwge30pXG4gIF07XG5cbiAgY29uc3QgZGlyTmFtZSA9IGdldERpck5hbWUoKTtcbiAgY29uc3QgZGlyUGF0aDogc3RyaW5nID0gcGF0aFJlc29sdmUoZGlyTmFtZSwgJy4uLy4uJyk7XG4gIGNvbnN0IG91dHB1dERpcjogc3RyaW5nID0gb3V0cHV0UGF0aCB8fCBvdXRwdXRGdWxsUGF0aCB8fCAnJztcbiAgY29uc3QgZXNidWlsZFBhdGg6IHN0cmluZyA9IHJlbGF0aXZlTm9kZVBhdGgoJ2VzYnVpbGQvYmluL2VzYnVpbGQnLCBkaXJQYXRoKTtcbiAgY29uc3QgZXNidWlsZENvbmZpZyA9IExleENvbmZpZy5jb25maWcuZXNidWlsZCB8fCB7fTtcblxuICBjb25zdCBlc2J1aWxkT3B0aW9uczogc3RyaW5nW10gPSBbXG4gICAgLi4uc291cmNlRmlsZXMsXG4gICAgJy0tYnVuZGxlJyxcbiAgICAnLS1jb2xvcj10cnVlJyxcbiAgICBgLS1mb3JtYXQ9JHtmb3JtYXR9YCxcbiAgICBgLS1vdXRkaXI9JHtvdXRwdXREaXJ9YCxcbiAgICBgLS1wbGF0Zm9ybT0ke2VzYnVpbGRDb25maWcucGxhdGZvcm0gfHwgJ25vZGUnfWAsXG4gICAgYC0tdGFyZ2V0PSR7ZXNidWlsZENvbmZpZy50YXJnZXQgfHwgKHRhcmdldEVudmlyb25tZW50ID09PSAnbm9kZScgPyAnbm9kZTIwJyA6ICdlczIwMjAnKX1gLFxuICAgIGAtLXNvdXJjZW1hcD0ke2VzYnVpbGRDb25maWcuc291cmNlbWFwIHx8ICdpbmxpbmUnfWBcbiAgXTtcblxuICBpZihlc2J1aWxkQ29uZmlnLm1pbmlmeSAhPT0gZmFsc2UpIHtcbiAgICBlc2J1aWxkT3B0aW9ucy5wdXNoKCctLW1pbmlmeScpO1xuICB9XG5cbiAgaWYoZXNidWlsZENvbmZpZy50cmVlU2hha2luZyAhPT0gZmFsc2UpIHtcbiAgICBlc2J1aWxkT3B0aW9ucy5wdXNoKCctLXRyZWUtc2hha2luZz10cnVlJyk7XG4gIH1cblxuICBpZihlc2J1aWxkQ29uZmlnLmRyb3AgJiYgZXNidWlsZENvbmZpZy5kcm9wLmxlbmd0aCA+IDApIHtcbiAgICBlc2J1aWxkQ29uZmlnLmRyb3AuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgIGVzYnVpbGRPcHRpb25zLnB1c2goYC0tZHJvcDoke2l0ZW19YCk7XG4gICAgfSk7XG4gIH1cblxuICBpZihlc2J1aWxkQ29uZmlnLnB1cmUgJiYgZXNidWlsZENvbmZpZy5wdXJlLmxlbmd0aCA+IDApIHtcbiAgICBlc2J1aWxkQ29uZmlnLnB1cmUuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgIGVzYnVpbGRPcHRpb25zLnB1c2goYC0tcHVyZToke2l0ZW19YCk7XG4gICAgfSk7XG4gIH1cblxuICBpZihlc2J1aWxkQ29uZmlnLmxlZ2FsQ29tbWVudHMpIHtcbiAgICBlc2J1aWxkT3B0aW9ucy5wdXNoKGAtLWxlZ2FsLWNvbW1lbnRzPSR7ZXNidWlsZENvbmZpZy5sZWdhbENvbW1lbnRzfWApO1xuICB9XG5cbiAgaWYoZXNidWlsZENvbmZpZy5zcGxpdHRpbmcgIT09IGZhbHNlKSB7XG4gICAgZXNidWlsZE9wdGlvbnMucHVzaCgnLS1zcGxpdHRpbmcnKTtcbiAgfVxuXG4gIGlmKGVzYnVpbGRDb25maWcubWV0YWZpbGUpIHtcbiAgICBlc2J1aWxkT3B0aW9ucy5wdXNoKCctLW1ldGFmaWxlJyk7XG4gIH1cblxuICBpZihlc2J1aWxkQ29uZmlnLmJhbm5lcikge1xuICAgIE9iamVjdC5lbnRyaWVzKGVzYnVpbGRDb25maWcuYmFubmVyKS5mb3JFYWNoKChbdHlwZSwgY29udGVudF0pID0+IHtcbiAgICAgIGVzYnVpbGRPcHRpb25zLnB1c2goYC0tYmFubmVyOiR7dHlwZX09JHtjb250ZW50fWApO1xuICAgIH0pO1xuICB9XG5cbiAgaWYoZXNidWlsZENvbmZpZy5mb290ZXIpIHtcbiAgICBPYmplY3QuZW50cmllcyhlc2J1aWxkQ29uZmlnLmZvb3RlcikuZm9yRWFjaCgoW3R5cGUsIGNvbnRlbnRdKSA9PiB7XG4gICAgICBlc2J1aWxkT3B0aW9ucy5wdXNoKGAtLWZvb3Rlcjoke3R5cGV9PSR7Y29udGVudH1gKTtcbiAgICB9KTtcbiAgfVxuXG4gIGlmKGVzYnVpbGRDb25maWcuZGVmaW5lKSB7XG4gICAgT2JqZWN0LmVudHJpZXMoZXNidWlsZENvbmZpZy5kZWZpbmUpLmZvckVhY2goKFtrZXksIHZhbHVlXSkgPT4ge1xuICAgICAgZXNidWlsZE9wdGlvbnMucHVzaChgLS1kZWZpbmU6JHtrZXl9PSR7dmFsdWV9YCk7XG4gICAgfSk7XG4gIH1cblxuICBpZihleHRlcm5hbC5sZW5ndGgpIHtcbiAgICBlc2J1aWxkT3B0aW9ucy5wdXNoKGAtLWV4dGVybmFsOiR7ZXh0ZXJuYWwuam9pbignLCcpfWApO1xuICB9XG5cbiAgaWYocGx1Z2lucy5sZW5ndGgpIHtcbiAgICBlc2J1aWxkT3B0aW9ucy5wdXNoKGAtLXBsdWdpbnM9JHtwbHVnaW5zLmpvaW4oJywnKX1gKTtcbiAgfVxuICBpZih3YXRjaCkge1xuICAgIGVzYnVpbGRPcHRpb25zLnB1c2goJy0td2F0Y2gnKTtcbiAgfVxuXG4gIHRyeSB7XG4gICAgYXdhaXQgZXhlY2EoZXNidWlsZFBhdGgsIGVzYnVpbGRPcHRpb25zLCB7ZW5jb2Rpbmc6ICd1dGY4J30pO1xuXG4gICAgc3Bpbm5lci5zdWNjZWVkKCdCdWlsZCBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5IScpO1xuICAgIGRpc3BsYXlCdWlsZFN0YXR1cygnZXNidWlsZCcsIG91dHB1dERpciwgcXVpZXQpO1xuICB9IGNhdGNoKGVycm9yKSB7XG4gICAgbG9nKGBcXG4ke2NsaU5hbWV9IEVycm9yOiAke2Vycm9yLm1lc3NhZ2V9YCwgJ2Vycm9yJywgcXVpZXQpO1xuXG4gICAgaWYoIXF1aWV0KSB7XG4gICAgICBjb25zb2xlLmVycm9yKGVycm9yKTtcbiAgICB9XG5cbiAgICBzcGlubmVyLmZhaWwoJ0NvZGUgYnVpbGQgZmFpbGVkLicpO1xuXG4gICAgaWYoY29tbWFuZE9wdGlvbnMuYXNzaXN0KSB7XG4gICAgICBzcGlubmVyLnN0YXJ0KCdBSSBpcyBhbmFseXppbmcgdGhlIGVycm9yLi4uJyk7XG5cbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IGFpRnVuY3Rpb24oe1xuICAgICAgICAgIHByb21wdDogYEZpeCB0aGlzIGVzYnVpbGQgZXJyb3I6ICR7ZXJyb3IubWVzc2FnZX1cXG5cXG5FcnJvciBkZXRhaWxzOlxcbiR7ZXJyb3IudG9TdHJpbmcoKX1gLFxuICAgICAgICAgIHRhc2s6ICdoZWxwJyxcbiAgICAgICAgICBjb250ZXh0OiB0cnVlLFxuICAgICAgICAgIHF1aWV0XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHNwaW5uZXIuc3VjY2VlZCgnQUkgYW5hbHlzaXMgY29tcGxldGUnKTtcbiAgICAgIH0gY2F0Y2goYWlFcnJvcikge1xuICAgICAgICBzcGlubmVyLmZhaWwoJ0NvdWxkIG5vdCBnZW5lcmF0ZSBBSSBhc3Npc3RhbmNlJyk7XG4gICAgICAgIGlmKCFxdWlldCkge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0FJIGFzc2lzdGFuY2UgZXJyb3I6JywgYWlFcnJvcik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBjYWxsYmFjaygxKTtcbiAgICByZXR1cm4gMTtcbiAgfVxuXG4gIGNhbGxiYWNrKDApO1xuICByZXR1cm4gMDtcbn07XG5cbmV4cG9ydCBjb25zdCBidWlsZFdpdGhXZWJwYWNrID0gYXN5bmMgKHNwaW5uZXIsIGNtZCwgY2FsbGJhY2spID0+IHtcbiAgY29uc3Qge1xuICAgIGFuYWx5emUsXG4gICAgY2xpTmFtZSA9ICdMZXgnLFxuICAgIGNvbmZpZyxcbiAgICBjb25maWdOYW1lLFxuICAgIGRlZmluZVByb2Nlc3NFbnZOb2RlRW52LFxuICAgIGRldnRvb2wsXG4gICAgZGlzYWJsZUludGVycHJldCxcbiAgICBlbnRyeSxcbiAgICBlbnYsXG4gICAgZmFpbE9uV2FybmluZ3MsXG4gICAganNvbixcbiAgICBtZXJnZSxcbiAgICBtb2RlLFxuICAgIG5hbWUsXG4gICAgbm9kZUVudixcbiAgICBub0RldnRvb2wsXG4gICAgbm9TdGF0cyxcbiAgICBub1RhcmdldCxcbiAgICBub1dhdGNoLFxuICAgIG5vV2F0Y2hPcHRpb25zU3RkaW4sXG4gICAgb3V0cHV0UGF0aCxcbiAgICBxdWlldCA9IGZhbHNlLFxuICAgIHN0YXRzLFxuICAgIHRhcmdldCxcbiAgICB3YXRjaCxcbiAgICB3YXRjaE9wdGlvbnNTdGRpblxuICB9ID0gY21kO1xuXG4gIGNvbnNvbGUubG9nKCdlbnRyeTonLCBlbnRyeSwgJ3R5cGU6JywgdHlwZW9mIGVudHJ5KTtcbiAgY29uc29sZS5sb2coJ291dHB1dFBhdGg6Jywgb3V0cHV0UGF0aCwgJ3R5cGU6JywgdHlwZW9mIG91dHB1dFBhdGgpO1xuXG4gIGNvbnN0IGVudHJ5VmFsdWUgPSBBcnJheS5pc0FycmF5KGVudHJ5KSA/IGVudHJ5WzBdIDogZW50cnk7XG5cbiAgbGV0IHdlYnBhY2tDb25maWc6IHN0cmluZztcblxuICBpZihjb25maWcpIHtcbiAgICBjb25zdCBpc1JlbGF0aXZlQ29uZmlnOiBib29sZWFuID0gY29uZmlnLnN1YnN0cigwLCAyKSA9PT0gJy4vJztcbiAgICB3ZWJwYWNrQ29uZmlnID0gaXNSZWxhdGl2ZUNvbmZpZyA/IHBhdGhSZXNvbHZlKHByb2Nlc3MuY3dkKCksIGNvbmZpZykgOiBjb25maWc7XG4gIH0gZWxzZSB7XG4gICAgY29uc3QgcHJvamVjdENvbmZpZ1BhdGggPSBwYXRoUmVzb2x2ZShwcm9jZXNzLmN3ZCgpLCAnd2VicGFjay5jb25maWcuanMnKTtcbiAgICBjb25zdCBwcm9qZWN0Q29uZmlnUGF0aFRzID0gcGF0aFJlc29sdmUocHJvY2Vzcy5jd2QoKSwgJ3dlYnBhY2suY29uZmlnLnRzJyk7XG4gICAgY29uc3QgaGFzUHJvamVjdENvbmZpZyA9IGV4aXN0c1N5bmMocHJvamVjdENvbmZpZ1BhdGgpIHx8IGV4aXN0c1N5bmMocHJvamVjdENvbmZpZ1BhdGhUcyk7XG5cbiAgICBpZihoYXNQcm9qZWN0Q29uZmlnKSB7XG4gICAgICB3ZWJwYWNrQ29uZmlnID0gZXhpc3RzU3luYyhwcm9qZWN0Q29uZmlnUGF0aFRzKSA/IHByb2plY3RDb25maWdQYXRoVHMgOiBwcm9qZWN0Q29uZmlnUGF0aDtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3Qge3dlYnBhY2tDb25maWc6IHJlc29sdmVkQ29uZmlnfSA9IHJlc29sdmVXZWJwYWNrUGF0aHMoY3VycmVudERpcm5hbWUpO1xuICAgICAgd2VicGFja0NvbmZpZyA9IHJlc29sdmVkQ29uZmlnO1xuICAgIH1cbiAgfVxuXG4gIGNvbnNvbGUubG9nKCd3ZWJwYWNrQ29uZmlnIHBhdGg6Jywgd2VicGFja0NvbmZpZyk7XG4gIGNvbnNvbGUubG9nKCd3ZWJwYWNrQ29uZmlnIGV4aXN0czonLCBleGlzdHNTeW5jKHdlYnBhY2tDb25maWcpKTtcblxuICBpZighZXhpc3RzU3luYyh3ZWJwYWNrQ29uZmlnKSkge1xuICAgIGNvbnN0IGxleFBhY2thZ2VQYXRoID0gZ2V0TGV4UGFja2FnZUpzb25QYXRoKCk7XG4gICAgY29uc3QgbGV4UGFja2FnZURpciA9IGRpcm5hbWUobGV4UGFja2FnZVBhdGgpO1xuICAgIGNvbnN0IGxleFdlYnBhY2tDb25maWcgPSBwYXRoUmVzb2x2ZShsZXhQYWNrYWdlRGlyLCAnd2VicGFjay5jb25maWcuanMnKTtcblxuICAgIGlmKGV4aXN0c1N5bmMobGV4V2VicGFja0NvbmZpZykpIHtcbiAgICAgIHdlYnBhY2tDb25maWcgPSBsZXhXZWJwYWNrQ29uZmlnO1xuICAgICAgY29uc29sZS5sb2coJ1VzaW5nIExleCB3ZWJwYWNrIGNvbmZpZzonLCB3ZWJwYWNrQ29uZmlnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbG9nKGBcXG4ke2NsaU5hbWV9IEVycm9yOiBDb3VsZCBub3QgZmluZCB3ZWJwYWNrLmNvbmZpZy5qc2AsICdlcnJvcicsIHF1aWV0KTtcbiAgICAgIHNwaW5uZXIuZmFpbCgnQnVpbGQgZmFpbGVkLicpO1xuICAgICAgY2FsbGJhY2soMSk7XG4gICAgICByZXR1cm4gMTtcbiAgICB9XG4gIH1cblxuICBjb25zdCB3ZWJwYWNrT3B0aW9uczogc3RyaW5nW10gPSBbXG4gICAgJy0tY29sb3InLFxuICAgICctLXByb2dyZXNzJyxcbiAgICAnLS1jb25maWcnLCB3ZWJwYWNrQ29uZmlnXG4gIF07XG5cbiAgaWYoYW5hbHl6ZSkgd2VicGFja09wdGlvbnMucHVzaCgnLS1hbmFseXplJyk7XG4gIGlmKGNvbmZpZ05hbWUpIHdlYnBhY2tPcHRpb25zLnB1c2goJy0tY29uZmlnTmFtZScsIGNvbmZpZ05hbWUpO1xuICBpZihkZWZpbmVQcm9jZXNzRW52Tm9kZUVudikgd2VicGFja09wdGlvbnMucHVzaCgnLS1kZWZpbmVQcm9jZXNzRW52Tm9kZUVudicsIGRlZmluZVByb2Nlc3NFbnZOb2RlRW52KTtcbiAgaWYoZGV2dG9vbCkgd2VicGFja09wdGlvbnMucHVzaCgnLS1kZXZ0b29sJywgZGV2dG9vbCk7XG4gIGlmKGRpc2FibGVJbnRlcnByZXQpIHdlYnBhY2tPcHRpb25zLnB1c2goJy0tZGlzYWJsZUludGVycHJldCcpO1xuICAvLyBQYXNzIGVudHJ5IGRpcmVjdGx5IGFzIENMSSBmbGFnXG4gIGlmKGVudHJ5VmFsdWUpIHdlYnBhY2tPcHRpb25zLnB1c2goJy0tZW50cnknLCBlbnRyeVZhbHVlLnRvU3RyaW5nKCkpO1xuICBpZihlbnYpIHdlYnBhY2tPcHRpb25zLnB1c2goJy0tZW52JywgZW52KTtcbiAgaWYoZmFpbE9uV2FybmluZ3MpIHdlYnBhY2tPcHRpb25zLnB1c2goJy0tZmFpbE9uV2FybmluZ3MnKTtcbiAgaWYoanNvbikgd2VicGFja09wdGlvbnMucHVzaCgnLS1qc29uJywganNvbik7XG4gIGlmKG1vZGUpIHdlYnBhY2tPcHRpb25zLnB1c2goJy0tbW9kZScsIG1vZGUpO1xuICBpZihtZXJnZSkgd2VicGFja09wdGlvbnMucHVzaCgnLS1tZXJnZScpO1xuICBpZihuYW1lKSB3ZWJwYWNrT3B0aW9ucy5wdXNoKCctLW5hbWUnLCBuYW1lKTtcbiAgaWYobm9EZXZ0b29sKSB3ZWJwYWNrT3B0aW9ucy5wdXNoKCctLW5vRGV2dG9vbCcpO1xuICBpZihub1N0YXRzKSB3ZWJwYWNrT3B0aW9ucy5wdXNoKCctLW5vU3RhdHMnKTtcbiAgaWYobm9UYXJnZXQpIHdlYnBhY2tPcHRpb25zLnB1c2goJy0tbm9UYXJnZXQnKTtcbiAgaWYobm9XYXRjaCkgd2VicGFja09wdGlvbnMucHVzaCgnLS1ub1dhdGNoJyk7XG4gIGlmKG5vV2F0Y2hPcHRpb25zU3RkaW4pIHdlYnBhY2tPcHRpb25zLnB1c2goJy0tbm9XYXRjaE9wdGlvbnNTdGRpbicpO1xuICBpZihub2RlRW52KSB3ZWJwYWNrT3B0aW9ucy5wdXNoKCctLW5vZGVFbnYnLCBub2RlRW52KTtcbiAgaWYob3V0cHV0UGF0aCkgd2VicGFja09wdGlvbnMucHVzaCgnLS1vdXRwdXQtcGF0aCcsIG91dHB1dFBhdGgudG9TdHJpbmcoKSk7IC8vIENvbnZlcnQgdG8gc3RyaW5nXG4gIGlmKHN0YXRzKSB3ZWJwYWNrT3B0aW9ucy5wdXNoKCctLXN0YXRzJywgc3RhdHMpO1xuICBpZih0YXJnZXQpIHdlYnBhY2tPcHRpb25zLnB1c2goJy0tdGFyZ2V0JywgdGFyZ2V0KTtcbiAgaWYod2F0Y2gpIHdlYnBhY2tPcHRpb25zLnB1c2goJy0td2F0Y2gnKTtcbiAgaWYod2F0Y2hPcHRpb25zU3RkaW4pIHdlYnBhY2tPcHRpb25zLnB1c2goJy0td2F0Y2hPcHRpb25zU3RkaW4nKTtcblxuICB0cnkge1xuICAgIGNvbnN0IHt3ZWJwYWNrUGF0aH0gPSByZXNvbHZlV2VicGFja1BhdGhzKGN1cnJlbnREaXJuYW1lKTtcblxuICAgIC8vIEZpeDogRW5zdXJlIGZpbmFsV2VicGFja09wdGlvbnMgaXMgYWx3YXlzIGFuIGFycmF5IG9mIHN0cmluZ3NcbiAgICBsZXQgZmluYWxXZWJwYWNrT3B0aW9uczogc3RyaW5nW107XG4gICAgaWYod2VicGFja1BhdGggPT09ICducHgnKSB7XG4gICAgICBmaW5hbFdlYnBhY2tPcHRpb25zID0gWyd3ZWJwYWNrJywgLi4ud2VicGFja09wdGlvbnNdO1xuICAgIH0gZWxzZSB7XG4gICAgICBmaW5hbFdlYnBhY2tPcHRpb25zID0gWy4uLndlYnBhY2tPcHRpb25zXTtcbiAgICB9XG5cbiAgICBjb25zb2xlLmxvZygnd2VicGFja1BhdGg6Jywgd2VicGFja1BhdGgpO1xuICAgIGNvbnNvbGUubG9nKCdmaW5hbFdlYnBhY2tPcHRpb25zOicsIEpTT04uc3RyaW5naWZ5KGZpbmFsV2VicGFja09wdGlvbnMpKTtcbiAgICBjb25zb2xlLmxvZygnZmluYWxXZWJwYWNrT3B0aW9ucyB0eXBlOicsIEFycmF5LmlzQXJyYXkoZmluYWxXZWJwYWNrT3B0aW9ucykgPyAnQXJyYXknIDogdHlwZW9mIGZpbmFsV2VicGFja09wdGlvbnMpO1xuXG4gICAgLy8gTWFrZSBzdXJlIHdlJ3JlIHBhc3NpbmcgYW4gYXJyYXkgb2Ygc3RyaW5ncyB0byBleGVjYVxuICAgIGNvbnN0IGNoaWxkUHJvY2VzcyA9IGV4ZWNhKHdlYnBhY2tQYXRoLCBmaW5hbFdlYnBhY2tPcHRpb25zLCB7ZW5jb2Rpbmc6ICd1dGY4Jywgc3RkaW86ICdwaXBlJ30pO1xuXG4gICAgbGV0IGJ1aWxkQ29tcGxldGVkID0gZmFsc2U7XG4gICAgbGV0IGJ1aWxkU3RhdHMgPSB7XG4gICAgICBtb2R1bGVzOiAwLFxuICAgICAgYXNzZXRzOiAwLFxuICAgICAgc2l6ZTogJzAgQidcbiAgICB9O1xuXG4gICAgY2hpbGRQcm9jZXNzLnN0ZG91dD8ub24oJ2RhdGEnLCAoZGF0YTogQnVmZmVyKSA9PiB7XG4gICAgICBjb25zdCBvdXRwdXQgPSBkYXRhLnRvU3RyaW5nKCk7XG5cbiAgICAgIGhhbmRsZVdlYnBhY2tQcm9ncmVzcyhvdXRwdXQsIHNwaW5uZXIsIHF1aWV0LCAnXHVEODNDXHVERkQ3XHVGRTBGJywgJ1dlYnBhY2sgQnVpbGRpbmcnKTtcblxuICAgICAgaWYoIWJ1aWxkQ29tcGxldGVkICYmIG91dHB1dC5pbmNsdWRlcygnY29tcGlsZWQgc3VjY2Vzc2Z1bGx5JykpIHtcbiAgICAgICAgYnVpbGRDb21wbGV0ZWQgPSB0cnVlO1xuICAgICAgICBzcGlubmVyLnN1Y2NlZWQoJ0J1aWxkIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkhJyk7XG5cbiAgICAgICAgY29uc3QgbW9kdWxlTWF0Y2ggPSBvdXRwdXQubWF0Y2goLyhcXGQrKSBtb2R1bGVzLyk7XG4gICAgICAgIGNvbnN0IGFzc2V0TWF0Y2ggPSBvdXRwdXQubWF0Y2goLyhcXGQrKSBhc3NldHMvKTtcbiAgICAgICAgY29uc3Qgc2l6ZU1hdGNoID0gb3V0cHV0Lm1hdGNoKC9hc3NldHMgYnkgc3RhdHVzIChbXFxkLl0rIFxcdyspLykgfHwgb3V0cHV0Lm1hdGNoKC9hc3NldHMgYnkgcGF0aC4qPyhbXFxkLl0rIFxcdyspLyk7XG5cbiAgICAgICAgaWYobW9kdWxlTWF0Y2gpIGJ1aWxkU3RhdHMubW9kdWxlcyA9IHBhcnNlSW50KG1vZHVsZU1hdGNoWzFdLCAxMCk7XG4gICAgICAgIGlmKGFzc2V0TWF0Y2gpIGJ1aWxkU3RhdHMuYXNzZXRzID0gcGFyc2VJbnQoYXNzZXRNYXRjaFsxXSwgMTApO1xuICAgICAgICBpZihzaXplTWF0Y2gpIGJ1aWxkU3RhdHMuc2l6ZSA9IHNpemVNYXRjaFsxXTtcblxuICAgICAgICBkaXNwbGF5QnVpbGRTdGF0dXMoJ3dlYnBhY2snLCBMZXhDb25maWcuY29uZmlnLm91dHB1dEZ1bGxQYXRoIHx8ICdsaWInLCBxdWlldCwgYnVpbGRTdGF0cyk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBjaGlsZFByb2Nlc3Muc3RkZXJyPy5vbignZGF0YScsIChkYXRhOiBCdWZmZXIpID0+IHtcbiAgICAgIGNvbnN0IG91dHB1dCA9IGRhdGEudG9TdHJpbmcoKTtcblxuICAgICAgaGFuZGxlV2VicGFja1Byb2dyZXNzKG91dHB1dCwgc3Bpbm5lciwgcXVpZXQsICdcdUQ4M0NcdURGRDdcdUZFMEYnLCAnV2VicGFjayBCdWlsZGluZycpO1xuXG4gICAgICBpZighYnVpbGRDb21wbGV0ZWQgJiYgb3V0cHV0LmluY2x1ZGVzKCdjb21waWxlZCBzdWNjZXNzZnVsbHknKSkge1xuICAgICAgICBidWlsZENvbXBsZXRlZCA9IHRydWU7XG4gICAgICAgIHNwaW5uZXIuc3VjY2VlZCgnQnVpbGQgY29tcGxldGVkIHN1Y2Nlc3NmdWxseSEnKTtcblxuICAgICAgICBjb25zdCBtb2R1bGVNYXRjaCA9IG91dHB1dC5tYXRjaCgvKFxcZCspIG1vZHVsZXMvKTtcbiAgICAgICAgY29uc3QgYXNzZXRNYXRjaCA9IG91dHB1dC5tYXRjaCgvKFxcZCspIGFzc2V0cy8pO1xuICAgICAgICBjb25zdCBzaXplTWF0Y2ggPSBvdXRwdXQubWF0Y2goL2Fzc2V0cyBieSBzdGF0dXMgKFtcXGQuXSsgXFx3KykvKSB8fCBvdXRwdXQubWF0Y2goL2Fzc2V0cyBieSBwYXRoLio/KFtcXGQuXSsgXFx3KykvKTtcblxuICAgICAgICBpZihtb2R1bGVNYXRjaCkgYnVpbGRTdGF0cy5tb2R1bGVzID0gcGFyc2VJbnQobW9kdWxlTWF0Y2hbMV0sIDEwKTtcbiAgICAgICAgaWYoYXNzZXRNYXRjaCkgYnVpbGRTdGF0cy5hc3NldHMgPSBwYXJzZUludChhc3NldE1hdGNoWzFdLCAxMCk7XG4gICAgICAgIGlmKHNpemVNYXRjaCkgYnVpbGRTdGF0cy5zaXplID0gc2l6ZU1hdGNoWzFdO1xuXG4gICAgICAgIGRpc3BsYXlCdWlsZFN0YXR1cygnd2VicGFjaycsIExleENvbmZpZy5jb25maWcub3V0cHV0RnVsbFBhdGggfHwgJ2xpYicsIHF1aWV0LCBidWlsZFN0YXRzKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGF3YWl0IGNoaWxkUHJvY2VzcztcblxuICAgIGlmKCFidWlsZENvbXBsZXRlZCkge1xuICAgICAgc3Bpbm5lci5zdWNjZWVkKCdCdWlsZCBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5IScpO1xuICAgICAgZGlzcGxheUJ1aWxkU3RhdHVzKCd3ZWJwYWNrJywgTGV4Q29uZmlnLmNvbmZpZy5vdXRwdXRGdWxsUGF0aCB8fCAnbGliJywgcXVpZXQsIGJ1aWxkU3RhdHMpO1xuICAgIH1cblxuICAgIGNhbGxiYWNrKDApO1xuICAgIHJldHVybiAwO1xuICB9IGNhdGNoKGVycm9yKSB7XG4gICAgbG9nKGBcXG4ke2NsaU5hbWV9IEVycm9yOiAke2Vycm9yLm1lc3NhZ2V9YCwgJ2Vycm9yJywgcXVpZXQpO1xuXG4gICAgc3Bpbm5lci5mYWlsKCdCdWlsZCBmYWlsZWQuJyk7XG5cbiAgICBpZihjbWQuYXNzaXN0KSB7XG4gICAgICBzcGlubmVyLnN0YXJ0KCdBSSBpcyBhbmFseXppbmcgdGhlIHdlYnBhY2sgZXJyb3IuLi4nKTtcblxuICAgICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgYWlGdW5jdGlvbih7XG4gICAgICAgICAgcHJvbXB0OiBgRml4IHRoaXMgd2VicGFjayBidWlsZCBlcnJvcjogJHtlcnJvci5tZXNzYWdlfVxcblxcbkVycm9yIGRldGFpbHM6XFxuJHtlcnJvci50b1N0cmluZygpfVxcblxcbkNvbmZpZ3VyYXRpb24gdXNlZDpcXG4ke0pTT04uc3RyaW5naWZ5KHdlYnBhY2tPcHRpb25zLCBudWxsLCAyKX1gLFxuICAgICAgICAgIHRhc2s6ICdoZWxwJyxcbiAgICAgICAgICBjb250ZXh0OiB0cnVlLFxuICAgICAgICAgIHF1aWV0XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHNwaW5uZXIuc3VjY2VlZCgnQUkgYW5hbHlzaXMgY29tcGxldGUnKTtcbiAgICAgIH0gY2F0Y2goYWlFcnJvcikge1xuICAgICAgICBzcGlubmVyLmZhaWwoJ0NvdWxkIG5vdCBnZW5lcmF0ZSBBSSBhc3Npc3RhbmNlJyk7XG4gICAgICAgIGlmKCFxdWlldCkge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0FJIGFzc2lzdGFuY2UgZXJyb3I6JywgYWlFcnJvcik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBjYWxsYmFjaygxKTtcbiAgICByZXR1cm4gMTtcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IGJ1aWxkID0gYXN5bmMgKGNtZDogQnVpbGRPcHRpb25zLCBjYWxsYmFjazogQnVpbGRDYWxsYmFjayA9ICgpID0+ICh7fSkpOiBQcm9taXNlPG51bWJlcj4gPT4ge1xuICBjb25zdCB7XG4gICAgYnVuZGxlciA9ICd3ZWJwYWNrJyxcbiAgICBjbGlOYW1lID0gJ0xleCcsXG4gICAgcXVpZXQgPSBmYWxzZSxcbiAgICByZW1vdmUgPSBmYWxzZSxcbiAgICB0ZXN0ID0gZmFsc2UsXG4gICAgdHJhbnNsYXRpb25zID0gZmFsc2UsXG4gICAgdmFyaWFibGVzID0gJ3t9J1xuICB9ID0gY21kO1xuXG4gIGNvbnN0IHNwaW5uZXIgPSBjcmVhdGVTcGlubmVyKHF1aWV0KTtcblxuICBsb2coYCR7Y2xpTmFtZX0gYnVpbGRpbmcuLi5gLCAnaW5mbycsIHF1aWV0KTtcblxuICBhd2FpdCBMZXhDb25maWcucGFyc2VDb25maWcoY21kKTtcblxuICBjb25zdCB7b3V0cHV0RnVsbFBhdGgsIHVzZVR5cGVzY3JpcHR9ID0gTGV4Q29uZmlnLmNvbmZpZztcblxuICBjaGVja0xpbmtlZE1vZHVsZXMoKTtcblxuICBsZXQgdmFyaWFibGVzT2JqOiBvYmplY3QgPSB7Tk9ERV9FTlY6ICdwcm9kdWN0aW9uJ307XG5cbiAgaWYodmFyaWFibGVzKSB7XG4gICAgdHJ5IHtcbiAgICAgIHZhcmlhYmxlc09iaiA9IEpTT04ucGFyc2UodmFyaWFibGVzKTtcbiAgICB9IGNhdGNoKGVycm9yKSB7XG4gICAgICBsb2coYFxcbiR7Y2xpTmFtZX0gRXJyb3I6IEVudmlyb25tZW50IHZhcmlhYmxlcyBvcHRpb24gaXMgbm90IGEgdmFsaWQgSlNPTiBvYmplY3QuYCwgJ2Vycm9yJywgcXVpZXQpO1xuXG4gICAgICBjYWxsYmFjaygxKTtcbiAgICAgIHJldHVybiAxO1xuICAgIH1cbiAgfVxuXG4gIHByb2Nlc3MuZW52ID0gey4uLnByb2Nlc3MuZW52LCAuLi52YXJpYWJsZXNPYmp9O1xuXG4gIC8vIElmIGluIHRlc3QgbW9kZSwgZXhpdCBlYXJseVxuICBpZih0ZXN0KSB7XG4gICAgbG9nKCdUZXN0IG1vZGU6IEJ1aWxkIGVudmlyb25tZW50IGxvYWRlZCwgZXhpdGluZycsICdpbmZvJywgcXVpZXQpO1xuICAgIGNhbGxiYWNrKDApO1xuICAgIHJldHVybiAwO1xuICB9XG5cbiAgLy8gUHJvY2VzcyB0cmFuc2xhdGlvbnMgaWYgZmxhZyBpcyBlbmFibGVkIChiZWZvcmUgYnVpbGRpbmcpXG4gIGlmKHRyYW5zbGF0aW9ucykge1xuICAgIHNwaW5uZXIuc3RhcnQoJ1Byb2Nlc3NpbmcgdHJhbnNsYXRpb25zLi4uJyk7XG5cbiAgICB0cnkge1xuICAgICAgY29uc3Qgc291cmNlUGF0aCA9IExleENvbmZpZy5jb25maWcuc291cmNlRnVsbFBhdGggfHwgcHJvY2Vzcy5jd2QoKTtcbiAgICAgIGNvbnN0IG91dHB1dFBhdGggPSBMZXhDb25maWcuY29uZmlnLm91dHB1dEZ1bGxQYXRoIHx8ICdsaWInO1xuXG4gICAgICBhd2FpdCBwcm9jZXNzVHJhbnNsYXRpb25zKHNvdXJjZVBhdGgsIG91dHB1dFBhdGgsIHF1aWV0KTtcbiAgICAgIHNwaW5uZXIuc3VjY2VlZCgnVHJhbnNsYXRpb25zIHByb2Nlc3NlZCBzdWNjZXNzZnVsbHkhJyk7XG4gICAgfSBjYXRjaCh0cmFuc2xhdGlvbkVycm9yKSB7XG4gICAgICBsb2coYFxcbiR7Y2xpTmFtZX0gRXJyb3I6IEZhaWxlZCB0byBwcm9jZXNzIHRyYW5zbGF0aW9uczogJHt0cmFuc2xhdGlvbkVycm9yLm1lc3NhZ2V9YCwgJ2Vycm9yJywgcXVpZXQpO1xuICAgICAgc3Bpbm5lci5mYWlsKCdGYWlsZWQgdG8gcHJvY2VzcyB0cmFuc2xhdGlvbnMuJyk7XG4gICAgICBjYWxsYmFjaygxKTtcbiAgICAgIHJldHVybiAxO1xuICAgIH1cbiAgfVxuXG4gIHNwaW5uZXIuc3RhcnQoJ0J1aWxkaW5nIGNvZGUuLi4nKTtcblxuICBpZihyZW1vdmUpIHtcbiAgICBhd2FpdCByZW1vdmVGaWxlcyhvdXRwdXRGdWxsUGF0aCB8fCAnJyk7XG4gIH1cblxuICBpZih1c2VUeXBlc2NyaXB0KSB7XG4gICAgY29uc3QgY29tcGlsZUNvbmZpZ1BhdGggPSBnZXRUeXBlU2NyaXB0Q29uZmlnUGF0aCgndHNjb25maWcuYnVpbGQuanNvbicpO1xuICAgIGlmKGV4aXN0c1N5bmMoY29tcGlsZUNvbmZpZ1BhdGgpKSB7XG4gICAgICBsb2coJ1VzaW5nIHRzY29uZmlnLmJ1aWxkLmpzb24gZm9yIGJ1aWxkLi4uJywgJ2luZm8nLCBxdWlldCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIExleENvbmZpZy5jaGVja0NvbXBpbGVUeXBlc2NyaXB0Q29uZmlnKCk7XG4gICAgfVxuICB9XG5cbiAgbGV0IGJ1aWxkUmVzdWx0ID0gMDtcblxuICBpZihidW5kbGVyID09PSAnZXNidWlsZCcpIHtcbiAgICBidWlsZFJlc3VsdCA9IGF3YWl0IGJ1aWxkV2l0aEVzQnVpbGQoc3Bpbm5lciwgY21kLCAoc3RhdHVzKSA9PiB7XG4gICAgICBidWlsZFJlc3VsdCA9IHN0YXR1cztcbiAgICB9KTtcbiAgfSBlbHNlIHtcbiAgICBidWlsZFJlc3VsdCA9IGF3YWl0IGJ1aWxkV2l0aFdlYnBhY2soc3Bpbm5lciwgY21kLCAoc3RhdHVzKSA9PiB7XG4gICAgICBidWlsZFJlc3VsdCA9IHN0YXR1cztcbiAgICB9KTtcbiAgfVxuXG4gIGlmKGJ1aWxkUmVzdWx0ID09PSAwICYmIGNtZC5hbmFseXplKSB7XG4gICAgc3Bpbm5lci5zdGFydCgnQUkgaXMgYW5hbHl6aW5nIHRoZSBidWlsZCBvdXRwdXQgZm9yIG9wdGltaXphdGlvbiBvcHBvcnR1bml0aWVzLi4uJyk7XG5cbiAgICB0cnkge1xuICAgICAgY29uc3Qgc3RhdHMgPSB7XG4gICAgICAgIG91dHB1dFBhdGg6IExleENvbmZpZy5jb25maWcub3V0cHV0RnVsbFBhdGgsXG4gICAgICAgIGVudHJ5UG9pbnRzOiBidW5kbGVyID09PSAnZXNidWlsZCcgP1xuICAgICAgICAgIGBTb3VyY2UgZmlsZXM6ICR7TGV4Q29uZmlnLmNvbmZpZy5zb3VyY2VGdWxsUGF0aH0vKiovKi57dHMsanN9YCA6XG4gICAgICAgICAgTGV4Q29uZmlnLmNvbmZpZy53ZWJwYWNrPy5lbnRyeSB8fCAnVW5rbm93biBlbnRyeSBwb2ludHMnXG4gICAgICB9O1xuXG4gICAgICBhd2FpdCBhaUZ1bmN0aW9uKHtcbiAgICAgICAgcHJvbXB0OiBgQW5hbHl6ZSB0aGlzIGJ1aWxkIGZvciBvcHRpbWl6YXRpb24gb3Bwb3J0dW5pdGllczpcblxuQnVpbGQgVHlwZTogJHtidW5kbGVyfVxuRm9ybWF0OiAke2NtZC5mb3JtYXQgfHwgJ2RlZmF1bHQnfVxuRW52aXJvbm1lbnQ6ICR7TGV4Q29uZmlnLmNvbmZpZy50YXJnZXRFbnZpcm9ubWVudH1cbiR7SlNPTi5zdHJpbmdpZnkoc3RhdHMsIG51bGwsIDIpfVxuXG5XaGF0IGFyZSB0aGUga2V5IG9wdGltaXphdGlvbiBvcHBvcnR1bml0aWVzIGZvciB0aGlzIGJ1aWxkIGNvbmZpZ3VyYXRpb24/IENvbnNpZGVyOlxuMS4gQnVuZGxlIHNpemUgb3B0aW1pemF0aW9uIHN0cmF0ZWdpZXNcbjIuIENvZGUgc3BsaXR0aW5nIHJlY29tbWVuZGF0aW9uc1xuMy4gVHJlZS1zaGFraW5nIGltcHJvdmVtZW50c1xuNC4gUGVyZm9ybWFuY2UgZW5oYW5jZW1lbnRzXG41LiBEZXBlbmRlbmN5IG9wdGltaXphdGlvbnNgLFxuICAgICAgICB0YXNrOiAnb3B0aW1pemUnLFxuICAgICAgICBjb250ZXh0OiB0cnVlLFxuICAgICAgICBxdWlldFxuICAgICAgfSk7XG5cbiAgICAgIHNwaW5uZXIuc3VjY2VlZCgnQUkgYnVpbGQgYW5hbHlzaXMgY29tcGxldGUnKTtcbiAgICB9IGNhdGNoKGFpRXJyb3IpIHtcbiAgICAgIHNwaW5uZXIuZmFpbCgnQ291bGQgbm90IGdlbmVyYXRlIEFJIG9wdGltaXphdGlvbiBhbmFseXNpcycpO1xuICAgICAgaWYoIXF1aWV0KSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ0FJIGFuYWx5c2lzIGVycm9yOicsIGFpRXJyb3IpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGlmKGJ1aWxkUmVzdWx0ID09PSAwKSB7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IGNvcHlDb25maWd1cmVkRmlsZXMoc3Bpbm5lciwgTGV4Q29uZmlnLmNvbmZpZywgcXVpZXQpO1xuICAgIH0gY2F0Y2goY29weUVycm9yKSB7XG4gICAgICBsb2coYFxcbiR7Y2xpTmFtZX0gRXJyb3I6IEZhaWxlZCB0byBjb3B5IGNvbmZpZ3VyZWQgZmlsZXM6ICR7Y29weUVycm9yLm1lc3NhZ2V9YCwgJ2Vycm9yJywgcXVpZXQpO1xuICAgICAgY2FsbGJhY2soMSk7XG4gICAgICByZXR1cm4gMTtcbiAgICB9XG4gIH1cblxuICBjYWxsYmFjayhidWlsZFJlc3VsdCk7XG4gIHJldHVybiBidWlsZFJlc3VsdDtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGJ1aWxkO1xuIl0sCiAgIm1hcHBpbmdzIjogIkFBSUEsT0FBTyx5QkFBeUI7QUFDaEMsU0FBUSxhQUFZO0FBQ3BCLFNBQVEsWUFBWSxvQkFBbUI7QUFDdkMsU0FBUSxRQUFRLGdCQUFlO0FBQy9CLFNBQVEsU0FBUyxXQUFXLG1CQUFrQjtBQUU5QyxTQUFRLFdBQVcsK0JBQThCO0FBQ2pELFNBQVEsb0JBQW9CLHFCQUFxQixlQUFrQyx1QkFBdUIsbUJBQWtCO0FBQzVILFNBQVEsWUFBWSxrQkFBa0IscUJBQXFCLDZCQUE0QjtBQUN2RixTQUFRLFdBQVU7QUFDbEIsU0FBUSwyQkFBMEI7QUFDbEMsU0FBUSxrQkFBaUI7QUFDekIsT0FBTyxXQUFXO0FBQ2xCLE9BQU8sV0FBVztBQUVsQixJQUFJO0FBQ0osSUFBSTtBQUVKLElBQUk7QUFDRixvQkFBa0IsS0FBSywrQ0FBK0M7QUFDdEUsbUJBQWlCLFFBQVEsZUFBZTtBQUMxQyxRQUFRO0FBQ04sb0JBQWtCLFFBQVEsSUFBSTtBQUM5QixtQkFBaUIsUUFBUSxJQUFJO0FBQy9CO0FBcUJBLE1BQU0scUJBQXFCLENBQUMsU0FBaUIsWUFBb0IsT0FBZ0IsVUFBK0Q7QUFDOUksTUFBRyxNQUFPO0FBRVYsTUFBSSxZQUFZO0FBQ2hCLE1BQUcsU0FBUyxNQUFNLFdBQVcsTUFBTSxRQUFRO0FBQ3pDLGdCQUFZO0FBQUEsRUFBSyxNQUFNLE1BQU0sVUFBVSxDQUFDLE9BQU8sTUFBTSxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBQUEsRUFDbkUsTUFBTSxNQUFNLFNBQVMsQ0FBQyxRQUFRLE1BQU0sS0FBSyxNQUFNLE1BQU0sQ0FBQztBQUFBLEVBQ3RELE1BQU0sTUFBTSxPQUFPLENBQUMsVUFBVSxNQUFNLEtBQUssTUFBTSxJQUFJ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SUFDN0QsT0FBTztBQUNMLGdCQUFVLDZCQUE2QjtBQUFBLElBQ3pDO0FBQUEsRUFDRjtBQUVBLE1BQUksY0FBYztBQUVsQixNQUFHLFlBQVksV0FBVztBQUN4QixrQkFBYyxNQUFNLGlCQUFpQixTQUFTLEtBQUssQ0FBQyxXQUFXO0FBQzdELG9CQUFjO0FBQUEsSUFDaEIsQ0FBQztBQUFBLEVBQ0gsT0FBTztBQUNMLGtCQUFjLE1BQU0saUJBQWlCLFNBQVMsS0FBSyxDQUFDLFdBQVc7QUFDN0Qsb0JBQWM7QUFBQSxJQUNoQixDQUFDO0FBQUEsRUFDSDtBQUVBLE1BQUcsZ0JBQWdCLEtBQUssSUFBSSxTQUFTO0FBQ25DLFlBQVEsTUFBTSxvRUFBb0U7QUFFbEYsUUFBSTtBQUNGLFlBQU0sUUFBUTtBQUFBLFFBQ1osWUFBWSxVQUFVLE9BQU87QUFBQSxRQUM3QixhQUFhLFlBQVksWUFDdkIsaUJBQWlCLFVBQVUsT0FBTyxjQUFjLGtCQUNoRCxVQUFVLE9BQU8sU0FBUyxTQUFTO0FBQUEsTUFDdkM7QUFFQSxZQUFNLFdBQVc7QUFBQSxRQUNmLFFBQVE7QUFBQTtBQUFBLGNBRUYsT0FBTztBQUFBLFVBQ1gsSUFBSSxVQUFVLFNBQVM7QUFBQSxlQUNsQixVQUFVLE9BQU8saUJBQWlCO0FBQUEsRUFDL0MsS0FBSyxVQUFVLE9BQU8sTUFBTSxDQUFDLENBQUM7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFFBUXhCLE1BQU07QUFBQSxRQUNOLFNBQVM7QUFBQSxRQUNUO0FBQUEsTUFDRixDQUFDO0FBRUQsY0FBUSxRQUFRLDRCQUE0QjtBQUFBLElBQzlDLFNBQVEsU0FBUztBQUNmLGNBQVEsS0FBSyw2Q0FBNkM7QUFDMUQsVUFBRyxDQUFDLE9BQU87QUFDVCxnQkFBUSxNQUFNLHNCQUFzQixPQUFPO0FBQUEsTUFDN0M7QUFBQSxJQUNGO0FBQUEsRUFDRjtBQUVBLE1BQUcsZ0JBQWdCLEdBQUc7QUFDcEIsUUFBSTtBQUNGLFlBQU0sb0JBQW9CLFNBQVMsVUFBVSxRQUFRLEtBQUs7QUFBQSxJQUM1RCxTQUFRLFdBQVc7QUFDakIsVUFBSTtBQUFBLEVBQUssT0FBTyw0Q0FBNEMsVUFBVSxPQUFPLElBQUksU0FBUyxLQUFLO0FBQy9GLGVBQVMsQ0FBQztBQUNWLGFBQU87QUFBQSxJQUNUO0FBQUEsRUFDRjtBQUVBLFdBQVMsV0FBVztBQUNwQixTQUFPO0FBQ1Q7QUFFQSxJQUFPLGdCQUFROyIsCiAgIm5hbWVzIjogW10KfQo=
|
|
494
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2NvbW1hbmRzL2J1aWxkL2J1aWxkLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxOC1QcmVzZW50LCBOaXRyb2dlbiBMYWJzLCBJbmMuXG4gKiBDb3B5cmlnaHRzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4gU2VlIHRoZSBhY2NvbXBhbnlpbmcgTElDRU5TRSBmaWxlIGZvciB0ZXJtcy5cbiAqL1xuaW1wb3J0IEdyYXBocWxMb2FkZXJQbHVnaW4gZnJvbSAnQGx1Y2t5Y2F0ZmFjdG9yeS9lc2J1aWxkLWdyYXBocWwtbG9hZGVyJztcbmltcG9ydCB7ZXhlY2F9IGZyb20gJ2V4ZWNhJztcbmltcG9ydCB7ZXhpc3RzU3luYywgcmVhZEZpbGVTeW5jfSBmcm9tICdmcyc7XG5pbXBvcnQge3N5bmMgYXMgZ2xvYlN5bmN9IGZyb20gJ2dsb2InO1xuaW1wb3J0IHtkaXJuYW1lLCByZXNvbHZlIGFzIHBhdGhSZXNvbHZlfSBmcm9tICdwYXRoJztcblxuaW1wb3J0IHtMZXhDb25maWcsIGdldFR5cGVTY3JpcHRDb25maWdQYXRofSBmcm9tICcuLi8uLi9MZXhDb25maWcuanMnO1xuaW1wb3J0IHtjaGVja0xpbmtlZE1vZHVsZXMsIGNvcHlDb25maWd1cmVkRmlsZXMsIGNyZWF0ZVNwaW5uZXIsIGNyZWF0ZVByb2dyZXNzQmFyLCBoYW5kbGVXZWJwYWNrUHJvZ3Jlc3MsIHJlbW92ZUZpbGVzfSBmcm9tICcuLi8uLi91dGlscy9hcHAuanMnO1xuaW1wb3J0IHtnZXREaXJOYW1lLCByZWxhdGl2ZU5vZGVQYXRoLCByZXNvbHZlV2VicGFja1BhdGhzLCBnZXRMZXhQYWNrYWdlSnNvblBhdGh9IGZyb20gJy4uLy4uL3V0aWxzL2ZpbGUuanMnO1xuaW1wb3J0IHtsb2d9IGZyb20gJy4uLy4uL3V0aWxzL2xvZy5qcyc7XG5pbXBvcnQge3Byb2Nlc3NUcmFuc2xhdGlvbnN9IGZyb20gJy4uLy4uL3V0aWxzL3RyYW5zbGF0aW9ucy5qcyc7XG5pbXBvcnQge2FpRnVuY3Rpb259IGZyb20gJy4uL2FpL2FpLmpzJztcbmltcG9ydCBib3hlbiBmcm9tICdib3hlbic7XG5pbXBvcnQgY2hhbGsgZnJvbSAnY2hhbGsnO1xuXG5sZXQgY3VycmVudEZpbGVuYW1lOiBzdHJpbmc7XG5sZXQgY3VycmVudERpcm5hbWU6IHN0cmluZztcblxudHJ5IHtcbiAgY3VycmVudEZpbGVuYW1lID0gZXZhbCgncmVxdWlyZShcInVybFwiKS5maWxlVVJMVG9QYXRoKGltcG9ydC5tZXRhLnVybCknKTtcbiAgY3VycmVudERpcm5hbWUgPSBkaXJuYW1lKGN1cnJlbnRGaWxlbmFtZSk7XG59IGNhdGNoIHtcbiAgY3VycmVudEZpbGVuYW1lID0gcHJvY2Vzcy5jd2QoKTtcbiAgY3VycmVudERpcm5hbWUgPSBwcm9jZXNzLmN3ZCgpO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEJ1aWxkT3B0aW9ucyB7XG4gIHJlYWRvbmx5IGFzc2lzdD86IGJvb2xlYW47XG4gIHJlYWRvbmx5IGFuYWx5emU/OiBib29sZWFuO1xuICByZWFkb25seSBidW5kbGVyPzogJ3dlYnBhY2snIHwgJ2VzYnVpbGQnO1xuICByZWFkb25seSBjbGlOYW1lPzogc3RyaW5nO1xuICByZWFkb25seSBlbnRyeT86IHN0cmluZzsgLy8gPC0tIGFkZCBlbnRyeVxuICByZWFkb25seSBmb3JtYXQ/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IG91dHB1dFBhdGg/OiBzdHJpbmc7IC8vIDwtLSBhbHJlYWR5IHByZXNlbnRcbiAgcmVhZG9ubHkgcXVpZXQ/OiBib29sZWFuO1xuICByZWFkb25seSByZW1vdmU/OiBib29sZWFuO1xuICByZWFkb25seSBzb3VyY2VQYXRoPzogc3RyaW5nO1xuICByZWFkb25seSB0ZXN0PzogYm9vbGVhbjtcbiAgcmVhZG9ubHkgdHJhbnNsYXRpb25zPzogYm9vbGVhbjtcbiAgcmVhZG9ubHkgdmFyaWFibGVzPzogc3RyaW5nO1xuICByZWFkb25seSB3YXRjaD86IGJvb2xlYW47XG59XG5cbmV4cG9ydCB0eXBlIEJ1aWxkQ2FsbGJhY2sgPSAoc3RhdHVzOiBudW1iZXIpID0+IHZvaWQ7XG5cbmNvbnN0IGRpc3BsYXlCdWlsZFN0YXR1cyA9IChidW5kbGVyOiBzdHJpbmcsIG91dHB1dFBhdGg6IHN0cmluZywgcXVpZXQ6IGJvb2xlYW4sIHN0YXRzPzoge21vZHVsZXM/OiBudW1iZXI7IGFzc2V0cz86IG51bWJlcjsgc2l6ZT86IHN0cmluZ30pID0+IHtcbiAgaWYocXVpZXQpIHJldHVybjtcblxuICBsZXQgc3RhdHNJbmZvID0gJyc7XG4gIGlmKHN0YXRzICYmIHN0YXRzLm1vZHVsZXMgJiYgc3RhdHMuYXNzZXRzKSB7XG4gICAgc3RhdHNJbmZvID0gYFxcbiR7Y2hhbGsuZ3JlZW4oJ01vZHVsZXM6Jyl9ICAgICR7Y2hhbGsuY3lhbihzdGF0cy5tb2R1bGVzKX1cXG5gICtcbiAgICAgIGAke2NoYWxrLmdyZWVuKCdBc3NldHM6Jyl9ICAgICAke2NoYWxrLmN5YW4oc3RhdHMuYXNzZXRzKX1cXG5gICtcbiAgICAgIGAke2NoYWxrLmdyZWVuKCdTaXplOicpfSAgICAgICAke2NoYWxrLmN5YW4oc3RhdHMuc2l6ZSl9XFxuYDtcbiAgfVxuXG4gIGNvbnN0IHN0YXR1c0JveCA9IGJveGVuKFxuICAgIGAke2NoYWxrLmN5YW4uYm9sZCgnXHVEODNDXHVERkQ3XHVGRTBGICBCdWlsZCBDb21wbGV0ZWQgU3VjY2Vzc2Z1bGx5Jyl9XFxuXFxuYCArXG4gICAgYCR7Y2hhbGsuZ3JlZW4oJ0J1bmRsZXI6Jyl9ICAgICR7Y2hhbGsuY3lhbihidW5kbGVyKX1cXG5gICtcbiAgICBgJHtjaGFsay5ncmVlbignT3V0cHV0OicpfSAgICAgJHtjaGFsay51bmRlcmxpbmUob3V0cHV0UGF0aCl9JHtzdGF0c0luZm99XFxuYCArXG4gICAgYCR7Y2hhbGsueWVsbG93KCdSZWFkeSBmb3IgZGVwbG95bWVudCEgXHVEODNEXHVERTgwJyl9YCxcbiAgICB7XG4gICAgICBwYWRkaW5nOiAxLFxuICAgICAgbWFyZ2luOiAxLFxuICAgICAgYm9yZGVyU3R5bGU6ICdyb3VuZCcsXG4gICAgICBib3JkZXJDb2xvcjogJ2dyZWVuJyxcbiAgICAgIGJhY2tncm91bmRDb2xvcjogJyMxYTFhMWEnXG4gICAgfVxuICApO1xuXG4gIGNvbnNvbGUubG9nKCdcXG4nICsgc3RhdHVzQm94ICsgJ1xcbicpO1xufTtcblxuZXhwb3J0IGNvbnN0IGJ1aWxkV2l0aEVzQnVpbGQgPSBhc3luYyAoc3Bpbm5lciwgY29tbWFuZE9wdGlvbnM6IEJ1aWxkT3B0aW9ucywgY2FsbGJhY2s6IEJ1aWxkQ2FsbGJhY2spID0+IHtcbiAgY29uc3Qge1xuICAgIGNsaU5hbWUgPSAnTGV4JyxcbiAgICBmb3JtYXQgPSAnZXNtJyxcbiAgICBvdXRwdXRQYXRoLFxuICAgIHF1aWV0LFxuICAgIHNvdXJjZVBhdGgsXG4gICAgd2F0Y2hcbiAgfSA9IGNvbW1hbmRPcHRpb25zO1xuICBjb25zdCB7XG4gICAgb3V0cHV0RnVsbFBhdGgsXG4gICAgc291cmNlRnVsbFBhdGgsXG4gICAgdGFyZ2V0RW52aXJvbm1lbnQsXG4gICAgdXNlR3JhcGhRbCxcbiAgICB1c2VUeXBlc2NyaXB0XG4gIH0gPSBMZXhDb25maWcuY29uZmlnO1xuICBjb25zdCBzb3VyY2VEaXI6IHN0cmluZyA9IHNvdXJjZVBhdGggPyBwYXRoUmVzb2x2ZShwcm9jZXNzLmN3ZCgpLCBgLi8ke3NvdXJjZVBhdGh9YCkgOiBzb3VyY2VGdWxsUGF0aCB8fCAnJztcbiAgY29uc3QgbG9hZGVyID0ge1xuICAgICcuanMnOiAnanMnXG4gIH07XG5cbiAgaWYodXNlVHlwZXNjcmlwdCkge1xuICAgIGxvYWRlclsnLnRzJ10gPSAndHMnO1xuICAgIGxvYWRlclsnLnRzeCddID0gJ3RzeCc7XG4gIH1cblxuICBjb25zdCBwbHVnaW5zID0gW107XG5cbiAgaWYodXNlR3JhcGhRbCkge1xuICAgIHBsdWdpbnMucHVzaCgoR3JhcGhxbExvYWRlclBsdWdpbiBhcyB1bmtub3duIGFzICgpID0+IG5ldmVyKSgpKTtcbiAgfVxuXG4gIGNvbnN0IGdsb2JPcHRpb25zID0ge1xuICAgIGN3ZDogc291cmNlRGlyLFxuICAgIGRvdDogZmFsc2UsXG4gICAgbm9kaXI6IHRydWUsXG4gICAgbm9zb3J0OiB0cnVlXG4gIH07XG4gIGNvbnN0IHRzRmlsZXM6IHN0cmluZ1tdID0gZ2xvYlN5bmMoYCR7c291cmNlRGlyfS8qKi8hKCouc3BlY3wqLnRlc3QpLnRzKmAsIGdsb2JPcHRpb25zKTtcbiAgY29uc3QganNGaWxlczogc3RyaW5nW10gPSBnbG9iU3luYyhgJHtzb3VyY2VEaXJ9LyoqLyEoKi5zcGVjfCoudGVzdCkuanNgLCBnbG9iT3B0aW9ucyk7XG4gIGNvbnN0IHNvdXJjZUZpbGVzOiBzdHJpbmdbXSA9IFsuLi50c0ZpbGVzLCAuLi5qc0ZpbGVzXTtcblxuICBjb25zdCBwYWNrYWdlSnNvbkRhdGEgPSByZWFkRmlsZVN5bmMocGF0aFJlc29sdmUocHJvY2Vzcy5jd2QoKSwgJy4vcGFja2FnZS5qc29uJykpO1xuICBjb25zdCBwYWNrYWdlSnNvbiA9IEpTT04ucGFyc2UocGFja2FnZUpzb25EYXRhLnRvU3RyaW5nKCkpO1xuICBjb25zdCBleHRlcm5hbCA9IFtcbiAgICAuLi5PYmplY3Qua2V5cyhwYWNrYWdlSnNvbi5kZXBlbmRlbmNpZXMgfHwge30pLFxuICAgIC4uLk9iamVjdC5rZXlzKHBhY2thZ2VKc29uLnBlZXJEZXBlbmRlbmNpZXMgfHwge30pXG4gIF07XG5cbiAgY29uc3QgZGlyTmFtZSA9IGdldERpck5hbWUoKTtcbiAgY29uc3QgZGlyUGF0aDogc3RyaW5nID0gcGF0aFJlc29sdmUoZGlyTmFtZSwgJy4uLy4uJyk7XG4gIGNvbnN0IG91dHB1dERpcjogc3RyaW5nID0gb3V0cHV0UGF0aCB8fCBvdXRwdXRGdWxsUGF0aCB8fCAnJztcbiAgY29uc3QgZXNidWlsZFBhdGg6IHN0cmluZyA9IHJlbGF0aXZlTm9kZVBhdGgoJ2VzYnVpbGQvYmluL2VzYnVpbGQnLCBkaXJQYXRoKTtcbiAgY29uc3QgZXNidWlsZENvbmZpZyA9IExleENvbmZpZy5jb25maWcuZXNidWlsZCB8fCB7fTtcblxuICBjb25zdCBlc2J1aWxkT3B0aW9uczogc3RyaW5nW10gPSBbXG4gICAgLi4uc291cmNlRmlsZXMsXG4gICAgJy0tYnVuZGxlJyxcbiAgICAnLS1jb2xvcj10cnVlJyxcbiAgICBgLS1mb3JtYXQ9JHtmb3JtYXR9YCxcbiAgICBgLS1vdXRkaXI9JHtvdXRwdXREaXJ9YCxcbiAgICBgLS1wbGF0Zm9ybT0ke2VzYnVpbGRDb25maWcucGxhdGZvcm0gfHwgJ25vZGUnfWAsXG4gICAgYC0tdGFyZ2V0PSR7ZXNidWlsZENvbmZpZy50YXJnZXQgfHwgKHRhcmdldEVudmlyb25tZW50ID09PSAnbm9kZScgPyAnbm9kZTIwJyA6ICdlczIwMjAnKX1gLFxuICAgIGAtLXNvdXJjZW1hcD0ke2VzYnVpbGRDb25maWcuc291cmNlbWFwIHx8ICdpbmxpbmUnfWBcbiAgXTtcblxuICBpZihlc2J1aWxkQ29uZmlnLm1pbmlmeSAhPT0gZmFsc2UpIHtcbiAgICBlc2J1aWxkT3B0aW9ucy5wdXNoKCctLW1pbmlmeScpO1xuICB9XG5cbiAgaWYoZXNidWlsZENvbmZpZy50cmVlU2hha2luZyAhPT0gZmFsc2UpIHtcbiAgICBlc2J1aWxkT3B0aW9ucy5wdXNoKCctLXRyZWUtc2hha2luZz10cnVlJyk7XG4gIH1cblxuICBpZihlc2J1aWxkQ29uZmlnLmRyb3AgJiYgZXNidWlsZENvbmZpZy5kcm9wLmxlbmd0aCA+IDApIHtcbiAgICBlc2J1aWxkQ29uZmlnLmRyb3AuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgIGVzYnVpbGRPcHRpb25zLnB1c2goYC0tZHJvcDoke2l0ZW19YCk7XG4gICAgfSk7XG4gIH1cblxuICBpZihlc2J1aWxkQ29uZmlnLnB1cmUgJiYgZXNidWlsZENvbmZpZy5wdXJlLmxlbmd0aCA+IDApIHtcbiAgICBlc2J1aWxkQ29uZmlnLnB1cmUuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgIGVzYnVpbGRPcHRpb25zLnB1c2goYC0tcHVyZToke2l0ZW19YCk7XG4gICAgfSk7XG4gIH1cblxuICBpZihlc2J1aWxkQ29uZmlnLmxlZ2FsQ29tbWVudHMpIHtcbiAgICBlc2J1aWxkT3B0aW9ucy5wdXNoKGAtLWxlZ2FsLWNvbW1lbnRzPSR7ZXNidWlsZENvbmZpZy5sZWdhbENvbW1lbnRzfWApO1xuICB9XG5cbiAgaWYoZXNidWlsZENvbmZpZy5zcGxpdHRpbmcgIT09IGZhbHNlKSB7XG4gICAgZXNidWlsZE9wdGlvbnMucHVzaCgnLS1zcGxpdHRpbmcnKTtcbiAgfVxuXG4gIGlmKGVzYnVpbGRDb25maWcubWV0YWZpbGUpIHtcbiAgICBlc2J1aWxkT3B0aW9ucy5wdXNoKCctLW1ldGFmaWxlJyk7XG4gIH1cblxuICBpZihlc2J1aWxkQ29uZmlnLmJhbm5lcikge1xuICAgIE9iamVjdC5lbnRyaWVzKGVzYnVpbGRDb25maWcuYmFubmVyKS5mb3JFYWNoKChbdHlwZSwgY29udGVudF0pID0+IHtcbiAgICAgIGVzYnVpbGRPcHRpb25zLnB1c2goYC0tYmFubmVyOiR7dHlwZX09JHtjb250ZW50fWApO1xuICAgIH0pO1xuICB9XG5cbiAgaWYoZXNidWlsZENvbmZpZy5mb290ZXIpIHtcbiAgICBPYmplY3QuZW50cmllcyhlc2J1aWxkQ29uZmlnLmZvb3RlcikuZm9yRWFjaCgoW3R5cGUsIGNvbnRlbnRdKSA9PiB7XG4gICAgICBlc2J1aWxkT3B0aW9ucy5wdXNoKGAtLWZvb3Rlcjoke3R5cGV9PSR7Y29udGVudH1gKTtcbiAgICB9KTtcbiAgfVxuXG4gIGlmKGVzYnVpbGRDb25maWcuZGVmaW5lKSB7XG4gICAgT2JqZWN0LmVudHJpZXMoZXNidWlsZENvbmZpZy5kZWZpbmUpLmZvckVhY2goKFtrZXksIHZhbHVlXSkgPT4ge1xuICAgICAgZXNidWlsZE9wdGlvbnMucHVzaChgLS1kZWZpbmU6JHtrZXl9PSR7dmFsdWV9YCk7XG4gICAgfSk7XG4gIH1cblxuICBpZihleHRlcm5hbC5sZW5ndGgpIHtcbiAgICBlc2J1aWxkT3B0aW9ucy5wdXNoKGAtLWV4dGVybmFsOiR7ZXh0ZXJuYWwuam9pbignLCcpfWApO1xuICB9XG5cbiAgaWYocGx1Z2lucy5sZW5ndGgpIHtcbiAgICBlc2J1aWxkT3B0aW9ucy5wdXNoKGAtLXBsdWdpbnM9JHtwbHVnaW5zLmpvaW4oJywnKX1gKTtcbiAgfVxuICBpZih3YXRjaCkge1xuICAgIGVzYnVpbGRPcHRpb25zLnB1c2goJy0td2F0Y2gnKTtcbiAgfVxuXG4gIHRyeSB7XG4gICAgYXdhaXQgZXhlY2EoZXNidWlsZFBhdGgsIGVzYnVpbGRPcHRpb25zLCB7ZW5jb2Rpbmc6ICd1dGY4J30pO1xuXG4gICAgc3Bpbm5lci5zdWNjZWVkKCdCdWlsZCBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5IScpO1xuICAgIGRpc3BsYXlCdWlsZFN0YXR1cygnZXNidWlsZCcsIG91dHB1dERpciwgcXVpZXQpO1xuICB9IGNhdGNoKGVycm9yKSB7XG4gICAgbG9nKGBcXG4ke2NsaU5hbWV9IEVycm9yOiAke2Vycm9yLm1lc3NhZ2V9YCwgJ2Vycm9yJywgcXVpZXQpO1xuXG4gICAgaWYoIXF1aWV0KSB7XG4gICAgICBjb25zb2xlLmVycm9yKGVycm9yKTtcbiAgICB9XG5cbiAgICBzcGlubmVyLmZhaWwoJ0NvZGUgYnVpbGQgZmFpbGVkLicpO1xuXG4gICAgaWYoY29tbWFuZE9wdGlvbnMuYXNzaXN0KSB7XG4gICAgICBzcGlubmVyLnN0YXJ0KCdBSSBpcyBhbmFseXppbmcgdGhlIGVycm9yLi4uJyk7XG5cbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IGFpRnVuY3Rpb24oe1xuICAgICAgICAgIHByb21wdDogYEZpeCB0aGlzIGVzYnVpbGQgZXJyb3I6ICR7ZXJyb3IubWVzc2FnZX1cXG5cXG5FcnJvciBkZXRhaWxzOlxcbiR7ZXJyb3IudG9TdHJpbmcoKX1gLFxuICAgICAgICAgIHRhc2s6ICdoZWxwJyxcbiAgICAgICAgICBjb250ZXh0OiB0cnVlLFxuICAgICAgICAgIHF1aWV0XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHNwaW5uZXIuc3VjY2VlZCgnQUkgYW5hbHlzaXMgY29tcGxldGUnKTtcbiAgICAgIH0gY2F0Y2goYWlFcnJvcikge1xuICAgICAgICBzcGlubmVyLmZhaWwoJ0NvdWxkIG5vdCBnZW5lcmF0ZSBBSSBhc3Npc3RhbmNlJyk7XG4gICAgICAgIGlmKCFxdWlldCkge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0FJIGFzc2lzdGFuY2UgZXJyb3I6JywgYWlFcnJvcik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBjYWxsYmFjaygxKTtcbiAgICByZXR1cm4gMTtcbiAgfVxuXG4gIGNhbGxiYWNrKDApO1xuICByZXR1cm4gMDtcbn07XG5cbmV4cG9ydCBjb25zdCBidWlsZFdpdGhXZWJwYWNrID0gYXN5bmMgKHNwaW5uZXIsIGNtZCwgY2FsbGJhY2spID0+IHtcbiAgY29uc3Qge1xuICAgIGFuYWx5emUsXG4gICAgY2xpTmFtZSA9ICdMZXgnLFxuICAgIGNvbmZpZyxcbiAgICBjb25maWdOYW1lLFxuICAgIGRlZmluZVByb2Nlc3NFbnZOb2RlRW52LFxuICAgIGRldnRvb2wsXG4gICAgZGlzYWJsZUludGVycHJldCxcbiAgICBlbnRyeSxcbiAgICBlbnYsXG4gICAgZmFpbE9uV2FybmluZ3MsXG4gICAganNvbixcbiAgICBtZXJnZSxcbiAgICBtb2RlLFxuICAgIG5hbWUsXG4gICAgbm9kZUVudixcbiAgICBub0RldnRvb2wsXG4gICAgbm9TdGF0cyxcbiAgICBub1RhcmdldCxcbiAgICBub1dhdGNoLFxuICAgIG5vV2F0Y2hPcHRpb25zU3RkaW4sXG4gICAgb3V0cHV0UGF0aCxcbiAgICBxdWlldCA9IGZhbHNlLFxuICAgIHN0YXRzLFxuICAgIHRhcmdldCxcbiAgICB3YXRjaCxcbiAgICB3YXRjaE9wdGlvbnNTdGRpblxuICB9ID0gY21kO1xuXG4gIGNvbnNvbGUubG9nKCdlbnRyeTonLCBlbnRyeSwgJ3R5cGU6JywgdHlwZW9mIGVudHJ5KTtcbiAgY29uc29sZS5sb2coJ291dHB1dFBhdGg6Jywgb3V0cHV0UGF0aCwgJ3R5cGU6JywgdHlwZW9mIG91dHB1dFBhdGgpO1xuXG4gIGNvbnN0IGVudHJ5VmFsdWUgPSBBcnJheS5pc0FycmF5KGVudHJ5KSA/IGVudHJ5WzBdIDogZW50cnk7XG5cbiAgbGV0IHdlYnBhY2tDb25maWc6IHN0cmluZztcblxuICBpZihjb25maWcpIHtcbiAgICBjb25zdCBpc1JlbGF0aXZlQ29uZmlnOiBib29sZWFuID0gY29uZmlnLnN1YnN0cigwLCAyKSA9PT0gJy4vJztcbiAgICB3ZWJwYWNrQ29uZmlnID0gaXNSZWxhdGl2ZUNvbmZpZyA/IHBhdGhSZXNvbHZlKHByb2Nlc3MuY3dkKCksIGNvbmZpZykgOiBjb25maWc7XG4gIH0gZWxzZSB7XG4gICAgY29uc3QgcHJvamVjdENvbmZpZ1BhdGggPSBwYXRoUmVzb2x2ZShwcm9jZXNzLmN3ZCgpLCAnd2VicGFjay5jb25maWcuanMnKTtcbiAgICBjb25zdCBwcm9qZWN0Q29uZmlnUGF0aFRzID0gcGF0aFJlc29sdmUocHJvY2Vzcy5jd2QoKSwgJ3dlYnBhY2suY29uZmlnLnRzJyk7XG4gICAgY29uc3QgaGFzUHJvamVjdENvbmZpZyA9IGV4aXN0c1N5bmMocHJvamVjdENvbmZpZ1BhdGgpIHx8IGV4aXN0c1N5bmMocHJvamVjdENvbmZpZ1BhdGhUcyk7XG5cbiAgICBpZihoYXNQcm9qZWN0Q29uZmlnKSB7XG4gICAgICB3ZWJwYWNrQ29uZmlnID0gZXhpc3RzU3luYyhwcm9qZWN0Q29uZmlnUGF0aFRzKSA/IHByb2plY3RDb25maWdQYXRoVHMgOiBwcm9qZWN0Q29uZmlnUGF0aDtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3Qge3dlYnBhY2tDb25maWc6IHJlc29sdmVkQ29uZmlnfSA9IHJlc29sdmVXZWJwYWNrUGF0aHMoY3VycmVudERpcm5hbWUpO1xuICAgICAgd2VicGFja0NvbmZpZyA9IHJlc29sdmVkQ29uZmlnO1xuICAgIH1cbiAgfVxuXG4gIGNvbnNvbGUubG9nKCd3ZWJwYWNrQ29uZmlnIHBhdGg6Jywgd2VicGFja0NvbmZpZyk7XG4gIGNvbnNvbGUubG9nKCd3ZWJwYWNrQ29uZmlnIGV4aXN0czonLCBleGlzdHNTeW5jKHdlYnBhY2tDb25maWcpKTtcblxuICBpZighZXhpc3RzU3luYyh3ZWJwYWNrQ29uZmlnKSkge1xuICAgIGNvbnN0IGxleFBhY2thZ2VQYXRoID0gZ2V0TGV4UGFja2FnZUpzb25QYXRoKCk7XG4gICAgY29uc3QgbGV4UGFja2FnZURpciA9IGRpcm5hbWUobGV4UGFja2FnZVBhdGgpO1xuICAgIGNvbnN0IGxleFdlYnBhY2tDb25maWcgPSBwYXRoUmVzb2x2ZShsZXhQYWNrYWdlRGlyLCAnd2VicGFjay5jb25maWcuanMnKTtcblxuICAgIGlmKGV4aXN0c1N5bmMobGV4V2VicGFja0NvbmZpZykpIHtcbiAgICAgIHdlYnBhY2tDb25maWcgPSBsZXhXZWJwYWNrQ29uZmlnO1xuICAgICAgY29uc29sZS5sb2coJ1VzaW5nIExleCB3ZWJwYWNrIGNvbmZpZzonLCB3ZWJwYWNrQ29uZmlnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbG9nKGBcXG4ke2NsaU5hbWV9IEVycm9yOiBDb3VsZCBub3QgZmluZCB3ZWJwYWNrLmNvbmZpZy5qc2AsICdlcnJvcicsIHF1aWV0KTtcbiAgICAgIHNwaW5uZXIuZmFpbCgnQnVpbGQgZmFpbGVkLicpO1xuICAgICAgY2FsbGJhY2soMSk7XG4gICAgICByZXR1cm4gMTtcbiAgICB9XG4gIH1cblxuICBjb25zdCB3ZWJwYWNrT3B0aW9uczogc3RyaW5nW10gPSBbXG4gICAgJy0tY29sb3InLFxuICAgICctLXByb2dyZXNzJyxcbiAgICAnLS1jb25maWcnLCB3ZWJwYWNrQ29uZmlnXG4gIF07XG5cbiAgaWYoYW5hbHl6ZSkgd2VicGFja09wdGlvbnMucHVzaCgnLS1hbmFseXplJyk7XG4gIGlmKGNvbmZpZ05hbWUpIHdlYnBhY2tPcHRpb25zLnB1c2goJy0tY29uZmlnTmFtZScsIGNvbmZpZ05hbWUpO1xuICBpZihkZWZpbmVQcm9jZXNzRW52Tm9kZUVudikgd2VicGFja09wdGlvbnMucHVzaCgnLS1kZWZpbmVQcm9jZXNzRW52Tm9kZUVudicsIGRlZmluZVByb2Nlc3NFbnZOb2RlRW52KTtcbiAgaWYoZGV2dG9vbCkgd2VicGFja09wdGlvbnMucHVzaCgnLS1kZXZ0b29sJywgZGV2dG9vbCk7XG4gIGlmKGRpc2FibGVJbnRlcnByZXQpIHdlYnBhY2tPcHRpb25zLnB1c2goJy0tZGlzYWJsZUludGVycHJldCcpO1xuICAvLyBQYXNzIGVudHJ5IGRpcmVjdGx5IGFzIENMSSBmbGFnXG4gIGlmKGVudHJ5VmFsdWUpIHdlYnBhY2tPcHRpb25zLnB1c2goJy0tZW50cnknLCBlbnRyeVZhbHVlLnRvU3RyaW5nKCkpO1xuICBpZihlbnYpIHdlYnBhY2tPcHRpb25zLnB1c2goJy0tZW52JywgZW52KTtcbiAgaWYoZmFpbE9uV2FybmluZ3MpIHdlYnBhY2tPcHRpb25zLnB1c2goJy0tZmFpbE9uV2FybmluZ3MnKTtcbiAgaWYoanNvbikgd2VicGFja09wdGlvbnMucHVzaCgnLS1qc29uJywganNvbik7XG4gIGlmKG1vZGUpIHdlYnBhY2tPcHRpb25zLnB1c2goJy0tbW9kZScsIG1vZGUpO1xuICBpZihtZXJnZSkgd2VicGFja09wdGlvbnMucHVzaCgnLS1tZXJnZScpO1xuICBpZihuYW1lKSB3ZWJwYWNrT3B0aW9ucy5wdXNoKCctLW5hbWUnLCBuYW1lKTtcbiAgaWYobm9EZXZ0b29sKSB3ZWJwYWNrT3B0aW9ucy5wdXNoKCctLW5vRGV2dG9vbCcpO1xuICBpZihub1N0YXRzKSB3ZWJwYWNrT3B0aW9ucy5wdXNoKCctLW5vU3RhdHMnKTtcbiAgaWYobm9UYXJnZXQpIHdlYnBhY2tPcHRpb25zLnB1c2goJy0tbm9UYXJnZXQnKTtcbiAgaWYobm9XYXRjaCkgd2VicGFja09wdGlvbnMucHVzaCgnLS1ub1dhdGNoJyk7XG4gIGlmKG5vV2F0Y2hPcHRpb25zU3RkaW4pIHdlYnBhY2tPcHRpb25zLnB1c2goJy0tbm9XYXRjaE9wdGlvbnNTdGRpbicpO1xuICBpZihub2RlRW52KSB3ZWJwYWNrT3B0aW9ucy5wdXNoKCctLW5vZGVFbnYnLCBub2RlRW52KTtcbiAgaWYob3V0cHV0UGF0aCkgd2VicGFja09wdGlvbnMucHVzaCgnLS1vdXRwdXQtcGF0aCcsIG91dHB1dFBhdGgudG9TdHJpbmcoKSk7IC8vIENvbnZlcnQgdG8gc3RyaW5nXG4gIGlmKHN0YXRzKSB3ZWJwYWNrT3B0aW9ucy5wdXNoKCctLXN0YXRzJywgc3RhdHMpO1xuICBpZih0YXJnZXQpIHdlYnBhY2tPcHRpb25zLnB1c2goJy0tdGFyZ2V0JywgdGFyZ2V0KTtcbiAgaWYod2F0Y2gpIHdlYnBhY2tPcHRpb25zLnB1c2goJy0td2F0Y2gnKTtcbiAgaWYod2F0Y2hPcHRpb25zU3RkaW4pIHdlYnBhY2tPcHRpb25zLnB1c2goJy0td2F0Y2hPcHRpb25zU3RkaW4nKTtcblxuICB0cnkge1xuICAgIGNvbnN0IHt3ZWJwYWNrUGF0aH0gPSByZXNvbHZlV2VicGFja1BhdGhzKGN1cnJlbnREaXJuYW1lKTtcblxuICAgIC8vIEZpeDogRW5zdXJlIGZpbmFsV2VicGFja09wdGlvbnMgaXMgYWx3YXlzIGFuIGFycmF5IG9mIHN0cmluZ3NcbiAgICBsZXQgZmluYWxXZWJwYWNrT3B0aW9uczogc3RyaW5nW107XG4gICAgaWYod2VicGFja1BhdGggPT09ICducHgnKSB7XG4gICAgICBmaW5hbFdlYnBhY2tPcHRpb25zID0gWyd3ZWJwYWNrJywgLi4ud2VicGFja09wdGlvbnNdO1xuICAgIH0gZWxzZSB7XG4gICAgICBmaW5hbFdlYnBhY2tPcHRpb25zID0gWy4uLndlYnBhY2tPcHRpb25zXTtcbiAgICB9XG5cbiAgICBjb25zb2xlLmxvZygnd2VicGFja1BhdGg6Jywgd2VicGFja1BhdGgpO1xuICAgIGNvbnNvbGUubG9nKCdmaW5hbFdlYnBhY2tPcHRpb25zOicsIEpTT04uc3RyaW5naWZ5KGZpbmFsV2VicGFja09wdGlvbnMpKTtcbiAgICBjb25zb2xlLmxvZygnZmluYWxXZWJwYWNrT3B0aW9ucyB0eXBlOicsIEFycmF5LmlzQXJyYXkoZmluYWxXZWJwYWNrT3B0aW9ucykgPyAnQXJyYXknIDogdHlwZW9mIGZpbmFsV2VicGFja09wdGlvbnMpO1xuXG4gICAgLy8gTWFrZSBzdXJlIHdlJ3JlIHBhc3NpbmcgYW4gYXJyYXkgb2Ygc3RyaW5ncyB0byBleGVjYVxuICAgIGNvbnN0IGNoaWxkUHJvY2VzcyA9IGV4ZWNhKHdlYnBhY2tQYXRoLCBmaW5hbFdlYnBhY2tPcHRpb25zLCB7ZW5jb2Rpbmc6ICd1dGY4Jywgc3RkaW86ICdwaXBlJ30pO1xuXG4gICAgbGV0IGJ1aWxkQ29tcGxldGVkID0gZmFsc2U7XG4gICAgbGV0IGJ1aWxkU3RhdHMgPSB7XG4gICAgICBtb2R1bGVzOiAwLFxuICAgICAgYXNzZXRzOiAwLFxuICAgICAgc2l6ZTogJzAgQidcbiAgICB9O1xuXG4gICAgY2hpbGRQcm9jZXNzLnN0ZG91dD8ub24oJ2RhdGEnLCAoZGF0YTogQnVmZmVyKSA9PiB7XG4gICAgICBjb25zdCBvdXRwdXQgPSBkYXRhLnRvU3RyaW5nKCk7XG5cbiAgICAgIGhhbmRsZVdlYnBhY2tQcm9ncmVzcyhvdXRwdXQsIHNwaW5uZXIsIHF1aWV0LCAnXHVEODNDXHVERkQ3XHVGRTBGJywgJ1dlYnBhY2sgQnVpbGRpbmcnKTtcblxuICAgICAgaWYoIWJ1aWxkQ29tcGxldGVkICYmIG91dHB1dC5pbmNsdWRlcygnY29tcGlsZWQgc3VjY2Vzc2Z1bGx5JykpIHtcbiAgICAgICAgYnVpbGRDb21wbGV0ZWQgPSB0cnVlO1xuICAgICAgICBzcGlubmVyLnN1Y2NlZWQoJ0J1aWxkIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkhJyk7XG5cbiAgICAgICAgY29uc3QgbW9kdWxlTWF0Y2ggPSBvdXRwdXQubWF0Y2goLyhcXGQrKSBtb2R1bGVzLyk7XG4gICAgICAgIGNvbnN0IGFzc2V0TWF0Y2ggPSBvdXRwdXQubWF0Y2goLyhcXGQrKSBhc3NldHMvKTtcbiAgICAgICAgY29uc3Qgc2l6ZU1hdGNoID0gb3V0cHV0Lm1hdGNoKC9hc3NldHMgYnkgc3RhdHVzIChbXFxkLl0rIFxcdyspLykgfHwgb3V0cHV0Lm1hdGNoKC9hc3NldHMgYnkgcGF0aC4qPyhbXFxkLl0rIFxcdyspLyk7XG5cbiAgICAgICAgaWYobW9kdWxlTWF0Y2gpIGJ1aWxkU3RhdHMubW9kdWxlcyA9IHBhcnNlSW50KG1vZHVsZU1hdGNoWzFdLCAxMCk7XG4gICAgICAgIGlmKGFzc2V0TWF0Y2gpIGJ1aWxkU3RhdHMuYXNzZXRzID0gcGFyc2VJbnQoYXNzZXRNYXRjaFsxXSwgMTApO1xuICAgICAgICBpZihzaXplTWF0Y2gpIGJ1aWxkU3RhdHMuc2l6ZSA9IHNpemVNYXRjaFsxXTtcblxuICAgICAgICBkaXNwbGF5QnVpbGRTdGF0dXMoJ3dlYnBhY2snLCBMZXhDb25maWcuY29uZmlnLm91dHB1dEZ1bGxQYXRoIHx8ICdsaWInLCBxdWlldCwgYnVpbGRTdGF0cyk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBjaGlsZFByb2Nlc3Muc3RkZXJyPy5vbignZGF0YScsIChkYXRhOiBCdWZmZXIpID0+IHtcbiAgICAgIGNvbnN0IG91dHB1dCA9IGRhdGEudG9TdHJpbmcoKTtcblxuICAgICAgaGFuZGxlV2VicGFja1Byb2dyZXNzKG91dHB1dCwgc3Bpbm5lciwgcXVpZXQsICdcdUQ4M0NcdURGRDdcdUZFMEYnLCAnV2VicGFjayBCdWlsZGluZycpO1xuXG4gICAgICBpZighYnVpbGRDb21wbGV0ZWQgJiYgb3V0cHV0LmluY2x1ZGVzKCdjb21waWxlZCBzdWNjZXNzZnVsbHknKSkge1xuICAgICAgICBidWlsZENvbXBsZXRlZCA9IHRydWU7XG4gICAgICAgIHNwaW5uZXIuc3VjY2VlZCgnQnVpbGQgY29tcGxldGVkIHN1Y2Nlc3NmdWxseSEnKTtcblxuICAgICAgICBjb25zdCBtb2R1bGVNYXRjaCA9IG91dHB1dC5tYXRjaCgvKFxcZCspIG1vZHVsZXMvKTtcbiAgICAgICAgY29uc3QgYXNzZXRNYXRjaCA9IG91dHB1dC5tYXRjaCgvKFxcZCspIGFzc2V0cy8pO1xuICAgICAgICBjb25zdCBzaXplTWF0Y2ggPSBvdXRwdXQubWF0Y2goL2Fzc2V0cyBieSBzdGF0dXMgKFtcXGQuXSsgXFx3KykvKSB8fCBvdXRwdXQubWF0Y2goL2Fzc2V0cyBieSBwYXRoLio/KFtcXGQuXSsgXFx3KykvKTtcblxuICAgICAgICBpZihtb2R1bGVNYXRjaCkgYnVpbGRTdGF0cy5tb2R1bGVzID0gcGFyc2VJbnQobW9kdWxlTWF0Y2hbMV0sIDEwKTtcbiAgICAgICAgaWYoYXNzZXRNYXRjaCkgYnVpbGRTdGF0cy5hc3NldHMgPSBwYXJzZUludChhc3NldE1hdGNoWzFdLCAxMCk7XG4gICAgICAgIGlmKHNpemVNYXRjaCkgYnVpbGRTdGF0cy5zaXplID0gc2l6ZU1hdGNoWzFdO1xuXG4gICAgICAgIGRpc3BsYXlCdWlsZFN0YXR1cygnd2VicGFjaycsIExleENvbmZpZy5jb25maWcub3V0cHV0RnVsbFBhdGggfHwgJ2xpYicsIHF1aWV0LCBidWlsZFN0YXRzKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGF3YWl0IGNoaWxkUHJvY2VzcztcblxuICAgIGlmKCFidWlsZENvbXBsZXRlZCkge1xuICAgICAgc3Bpbm5lci5zdWNjZWVkKCdCdWlsZCBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5IScpO1xuICAgICAgZGlzcGxheUJ1aWxkU3RhdHVzKCd3ZWJwYWNrJywgTGV4Q29uZmlnLmNvbmZpZy5vdXRwdXRGdWxsUGF0aCB8fCAnbGliJywgcXVpZXQsIGJ1aWxkU3RhdHMpO1xuICAgIH1cblxuICAgIGNhbGxiYWNrKDApO1xuICAgIHJldHVybiAwO1xuICB9IGNhdGNoKGVycm9yKSB7XG4gICAgbG9nKGBcXG4ke2NsaU5hbWV9IEVycm9yOiAke2Vycm9yLm1lc3NhZ2V9YCwgJ2Vycm9yJywgcXVpZXQpO1xuXG4gICAgc3Bpbm5lci5mYWlsKCdCdWlsZCBmYWlsZWQuJyk7XG5cbiAgICBpZihjbWQuYXNzaXN0KSB7XG4gICAgICBzcGlubmVyLnN0YXJ0KCdBSSBpcyBhbmFseXppbmcgdGhlIHdlYnBhY2sgZXJyb3IuLi4nKTtcblxuICAgICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgYWlGdW5jdGlvbih7XG4gICAgICAgICAgcHJvbXB0OiBgRml4IHRoaXMgd2VicGFjayBidWlsZCBlcnJvcjogJHtlcnJvci5tZXNzYWdlfVxcblxcbkVycm9yIGRldGFpbHM6XFxuJHtlcnJvci50b1N0cmluZygpfVxcblxcbkNvbmZpZ3VyYXRpb24gdXNlZDpcXG4ke0pTT04uc3RyaW5naWZ5KHdlYnBhY2tPcHRpb25zLCBudWxsLCAyKX1gLFxuICAgICAgICAgIHRhc2s6ICdoZWxwJyxcbiAgICAgICAgICBjb250ZXh0OiB0cnVlLFxuICAgICAgICAgIHF1aWV0XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHNwaW5uZXIuc3VjY2VlZCgnQUkgYW5hbHlzaXMgY29tcGxldGUnKTtcbiAgICAgIH0gY2F0Y2goYWlFcnJvcikge1xuICAgICAgICBzcGlubmVyLmZhaWwoJ0NvdWxkIG5vdCBnZW5lcmF0ZSBBSSBhc3Npc3RhbmNlJyk7XG4gICAgICAgIGlmKCFxdWlldCkge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0FJIGFzc2lzdGFuY2UgZXJyb3I6JywgYWlFcnJvcik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBjYWxsYmFjaygxKTtcbiAgICByZXR1cm4gMTtcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IGJ1aWxkID0gYXN5bmMgKGNtZDogQnVpbGRPcHRpb25zLCBjYWxsYmFjazogQnVpbGRDYWxsYmFjayA9ICgpID0+ICh7fSkpOiBQcm9taXNlPG51bWJlcj4gPT4ge1xuICBjb25zdCB7XG4gICAgYnVuZGxlciA9ICd3ZWJwYWNrJyxcbiAgICBjbGlOYW1lID0gJ0xleCcsXG4gICAgcXVpZXQgPSBmYWxzZSxcbiAgICByZW1vdmUgPSBmYWxzZSxcbiAgICB0ZXN0ID0gZmFsc2UsXG4gICAgdHJhbnNsYXRpb25zID0gZmFsc2UsXG4gICAgdmFyaWFibGVzID0gJ3t9J1xuICB9ID0gY21kO1xuXG4gIGNvbnN0IHNwaW5uZXIgPSBjcmVhdGVTcGlubmVyKHF1aWV0KTtcblxuICBsb2coYCR7Y2xpTmFtZX0gYnVpbGRpbmcuLi5gLCAnaW5mbycsIHF1aWV0KTtcblxuICBhd2FpdCBMZXhDb25maWcucGFyc2VDb25maWcoY21kKTtcblxuICBjb25zdCB7b3V0cHV0RnVsbFBhdGgsIHVzZVR5cGVzY3JpcHR9ID0gTGV4Q29uZmlnLmNvbmZpZztcblxuICBjaGVja0xpbmtlZE1vZHVsZXMoKTtcblxuICBsZXQgdmFyaWFibGVzT2JqOiBvYmplY3QgPSB7Tk9ERV9FTlY6ICdwcm9kdWN0aW9uJ307XG5cbiAgaWYodmFyaWFibGVzKSB7XG4gICAgdHJ5IHtcbiAgICAgIHZhcmlhYmxlc09iaiA9IEpTT04ucGFyc2UodmFyaWFibGVzKTtcbiAgICB9IGNhdGNoKGVycm9yKSB7XG4gICAgICBsb2coYFxcbiR7Y2xpTmFtZX0gRXJyb3I6IEVudmlyb25tZW50IHZhcmlhYmxlcyBvcHRpb24gaXMgbm90IGEgdmFsaWQgSlNPTiBvYmplY3QuYCwgJ2Vycm9yJywgcXVpZXQpO1xuXG4gICAgICBjYWxsYmFjaygxKTtcbiAgICAgIHJldHVybiAxO1xuICAgIH1cbiAgfVxuXG4gIHByb2Nlc3MuZW52ID0gey4uLnByb2Nlc3MuZW52LCAuLi52YXJpYWJsZXNPYmp9O1xuXG4gIC8vIElmIGluIHRlc3QgbW9kZSwgZXhpdCBlYXJseVxuICBpZih0ZXN0KSB7XG4gICAgbG9nKCdUZXN0IG1vZGU6IEJ1aWxkIGVudmlyb25tZW50IGxvYWRlZCwgZXhpdGluZycsICdpbmZvJywgcXVpZXQpO1xuICAgIGNhbGxiYWNrKDApO1xuICAgIHJldHVybiAwO1xuICB9XG5cbiAgLy8gUHJvY2VzcyB0cmFuc2xhdGlvbnMgaWYgZmxhZyBpcyBlbmFibGVkIChiZWZvcmUgYnVpbGRpbmcpXG4gIGlmKHRyYW5zbGF0aW9ucykge1xuICAgIHNwaW5uZXIuc3RhcnQoJ1Byb2Nlc3NpbmcgdHJhbnNsYXRpb25zLi4uJyk7XG5cbiAgICB0cnkge1xuICAgICAgY29uc3Qgc291cmNlUGF0aCA9IExleENvbmZpZy5jb25maWcuc291cmNlRnVsbFBhdGggfHwgcHJvY2Vzcy5jd2QoKTtcbiAgICAgIGNvbnN0IG91dHB1dFBhdGggPSBMZXhDb25maWcuY29uZmlnLm91dHB1dEZ1bGxQYXRoIHx8ICdsaWInO1xuXG4gICAgICBhd2FpdCBwcm9jZXNzVHJhbnNsYXRpb25zKHNvdXJjZVBhdGgsIG91dHB1dFBhdGgsIHF1aWV0KTtcbiAgICAgIHNwaW5uZXIuc3VjY2VlZCgnVHJhbnNsYXRpb25zIHByb2Nlc3NlZCBzdWNjZXNzZnVsbHkhJyk7XG4gICAgfSBjYXRjaCh0cmFuc2xhdGlvbkVycm9yKSB7XG4gICAgICBsb2coYFxcbiR7Y2xpTmFtZX0gRXJyb3I6IEZhaWxlZCB0byBwcm9jZXNzIHRyYW5zbGF0aW9uczogJHt0cmFuc2xhdGlvbkVycm9yLm1lc3NhZ2V9YCwgJ2Vycm9yJywgcXVpZXQpO1xuICAgICAgc3Bpbm5lci5mYWlsKCdGYWlsZWQgdG8gcHJvY2VzcyB0cmFuc2xhdGlvbnMuJyk7XG4gICAgICBjYWxsYmFjaygxKTtcbiAgICAgIHJldHVybiAxO1xuICAgIH1cbiAgfVxuXG4gIHNwaW5uZXIuc3RhcnQoJ0J1aWxkaW5nIGNvZGUuLi4nKTtcblxuICBpZihyZW1vdmUpIHtcbiAgICBhd2FpdCByZW1vdmVGaWxlcyhvdXRwdXRGdWxsUGF0aCB8fCAnJyk7XG4gIH1cblxuICBpZih1c2VUeXBlc2NyaXB0KSB7XG4gICAgY29uc3QgY29tcGlsZUNvbmZpZ1BhdGggPSBnZXRUeXBlU2NyaXB0Q29uZmlnUGF0aCgndHNjb25maWcuYnVpbGQuanNvbicpO1xuICAgIGlmKGV4aXN0c1N5bmMoY29tcGlsZUNvbmZpZ1BhdGgpKSB7XG4gICAgICBsb2coJ1VzaW5nIHRzY29uZmlnLmJ1aWxkLmpzb24gZm9yIGJ1aWxkLi4uJywgJ2luZm8nLCBxdWlldCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIExleENvbmZpZy5jaGVja0NvbXBpbGVUeXBlc2NyaXB0Q29uZmlnKCk7XG4gICAgfVxuICB9XG5cbiAgbGV0IGJ1aWxkUmVzdWx0ID0gMDtcblxuICBpZihidW5kbGVyID09PSAnZXNidWlsZCcpIHtcbiAgICBidWlsZFJlc3VsdCA9IGF3YWl0IGJ1aWxkV2l0aEVzQnVpbGQoc3Bpbm5lciwgY21kLCAoc3RhdHVzKSA9PiB7XG4gICAgICBidWlsZFJlc3VsdCA9IHN0YXR1cztcbiAgICB9KTtcbiAgfSBlbHNlIHtcbiAgICBidWlsZFJlc3VsdCA9IGF3YWl0IGJ1aWxkV2l0aFdlYnBhY2soc3Bpbm5lciwgY21kLCAoc3RhdHVzKSA9PiB7XG4gICAgICBidWlsZFJlc3VsdCA9IHN0YXR1cztcbiAgICB9KTtcbiAgfVxuXG4gIGlmKGJ1aWxkUmVzdWx0ID09PSAwICYmIGNtZC5hbmFseXplKSB7XG4gICAgc3Bpbm5lci5zdGFydCgnQUkgaXMgYW5hbHl6aW5nIHRoZSBidWlsZCBvdXRwdXQgZm9yIG9wdGltaXphdGlvbiBvcHBvcnR1bml0aWVzLi4uJyk7XG5cbiAgICB0cnkge1xuICAgICAgY29uc3Qgc3RhdHMgPSB7XG4gICAgICAgIG91dHB1dFBhdGg6IExleENvbmZpZy5jb25maWcub3V0cHV0RnVsbFBhdGgsXG4gICAgICAgIGVudHJ5UG9pbnRzOiBidW5kbGVyID09PSAnZXNidWlsZCcgP1xuICAgICAgICAgIGBTb3VyY2UgZmlsZXM6ICR7TGV4Q29uZmlnLmNvbmZpZy5zb3VyY2VGdWxsUGF0aH0vKiovKi57dHMsanN9YCA6XG4gICAgICAgICAgTGV4Q29uZmlnLmNvbmZpZy53ZWJwYWNrPy5lbnRyeSB8fCAnVW5rbm93biBlbnRyeSBwb2ludHMnXG4gICAgICB9O1xuXG4gICAgICBhd2FpdCBhaUZ1bmN0aW9uKHtcbiAgICAgICAgcHJvbXB0OiBgQW5hbHl6ZSB0aGlzIGJ1aWxkIGZvciBvcHRpbWl6YXRpb24gb3Bwb3J0dW5pdGllczpcblxuQnVpbGQgVHlwZTogJHtidW5kbGVyfVxuRm9ybWF0OiAke2NtZC5mb3JtYXQgfHwgJ2RlZmF1bHQnfVxuRW52aXJvbm1lbnQ6ICR7TGV4Q29uZmlnLmNvbmZpZy50YXJnZXRFbnZpcm9ubWVudH1cbiR7SlNPTi5zdHJpbmdpZnkoc3RhdHMsIG51bGwsIDIpfVxuXG5XaGF0IGFyZSB0aGUga2V5IG9wdGltaXphdGlvbiBvcHBvcnR1bml0aWVzIGZvciB0aGlzIGJ1aWxkIGNvbmZpZ3VyYXRpb24/IENvbnNpZGVyOlxuMS4gQnVuZGxlIHNpemUgb3B0aW1pemF0aW9uIHN0cmF0ZWdpZXNcbjIuIENvZGUgc3BsaXR0aW5nIHJlY29tbWVuZGF0aW9uc1xuMy4gVHJlZS1zaGFraW5nIGltcHJvdmVtZW50c1xuNC4gUGVyZm9ybWFuY2UgZW5oYW5jZW1lbnRzXG41LiBEZXBlbmRlbmN5IG9wdGltaXphdGlvbnNgLFxuICAgICAgICB0YXNrOiAnb3B0aW1pemUnLFxuICAgICAgICBjb250ZXh0OiB0cnVlLFxuICAgICAgICBxdWlldFxuICAgICAgfSk7XG5cbiAgICAgIHNwaW5uZXIuc3VjY2VlZCgnQUkgYnVpbGQgYW5hbHlzaXMgY29tcGxldGUnKTtcbiAgICB9IGNhdGNoKGFpRXJyb3IpIHtcbiAgICAgIHNwaW5uZXIuZmFpbCgnQ291bGQgbm90IGdlbmVyYXRlIEFJIG9wdGltaXphdGlvbiBhbmFseXNpcycpO1xuICAgICAgaWYoIXF1aWV0KSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ0FJIGFuYWx5c2lzIGVycm9yOicsIGFpRXJyb3IpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGlmKGJ1aWxkUmVzdWx0ID09PSAwKSB7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IGNvcHlDb25maWd1cmVkRmlsZXMoc3Bpbm5lciwgTGV4Q29uZmlnLmNvbmZpZywgcXVpZXQpO1xuICAgIH0gY2F0Y2goY29weUVycm9yKSB7XG4gICAgICBsb2coYFxcbiR7Y2xpTmFtZX0gRXJyb3I6IEZhaWxlZCB0byBjb3B5IGNvbmZpZ3VyZWQgZmlsZXM6ICR7Y29weUVycm9yLm1lc3NhZ2V9YCwgJ2Vycm9yJywgcXVpZXQpO1xuICAgICAgY2FsbGJhY2soMSk7XG4gICAgICByZXR1cm4gMTtcbiAgICB9XG4gIH1cblxuICBjYWxsYmFjayhidWlsZFJlc3VsdCk7XG4gIHJldHVybiBidWlsZFJlc3VsdDtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGJ1aWxkO1xuIl0sCiAgIm1hcHBpbmdzIjogIkFBSUEsT0FBTyx5QkFBeUI7QUFDaEMsU0FBUSxhQUFZO0FBQ3BCLFNBQVEsWUFBWSxvQkFBbUI7QUFDdkMsU0FBUSxRQUFRLGdCQUFlO0FBQy9CLFNBQVEsU0FBUyxXQUFXLG1CQUFrQjtBQUU5QyxTQUFRLFdBQVcsK0JBQThCO0FBQ2pELFNBQVEsb0JBQW9CLHFCQUFxQixlQUFrQyx1QkFBdUIsbUJBQWtCO0FBQzVILFNBQVEsWUFBWSxrQkFBa0IscUJBQXFCLDZCQUE0QjtBQUN2RixTQUFRLFdBQVU7QUFDbEIsU0FBUSwyQkFBMEI7QUFDbEMsU0FBUSxrQkFBaUI7QUFDekIsT0FBTyxXQUFXO0FBQ2xCLE9BQU8sV0FBVztBQUVsQixJQUFJO0FBQ0osSUFBSTtBQUVKLElBQUk7QUFDRixvQkFBa0IsS0FBSywrQ0FBK0M7QUFDdEUsbUJBQWlCLFFBQVEsZUFBZTtBQUMxQyxRQUFRO0FBQ04sb0JBQWtCLFFBQVEsSUFBSTtBQUM5QixtQkFBaUIsUUFBUSxJQUFJO0FBQy9CO0FBcUJBLE1BQU0scUJBQXFCLENBQUMsU0FBaUIsWUFBb0IsT0FBZ0IsVUFBK0Q7QUFDOUksTUFBRyxNQUFPO0FBRVYsTUFBSSxZQUFZO0FBQ2hCLE1BQUcsU0FBUyxNQUFNLFdBQVcsTUFBTSxRQUFRO0FBQ3pDLGdCQUFZO0FBQUEsRUFBSyxNQUFNLE1BQU0sVUFBVSxDQUFDLE9BQU8sTUFBTSxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBQUEsRUFDbkUsTUFBTSxNQUFNLFNBQVMsQ0FBQyxRQUFRLE1BQU0sS0FBSyxNQUFNLE1BQU0sQ0FBQztBQUFBLEVBQ3RELE1BQU0sTUFBTSxPQUFPLENBQUMsVUFBVSxNQUFNLEtBQUssTUFBTSxJQUFJ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SUFDN0QsT0FBTztBQUNMLGdCQUFVLDZCQUE2QjtBQUFBLElBQ3pDO0FBQUEsRUFDRjtBQUVBLE1BQUksY0FBYztBQUVsQixNQUFHLFlBQVksV0FBVztBQUN4QixrQkFBYyxNQUFNLGlCQUFpQixTQUFTLEtBQUssQ0FBQyxXQUFXO0FBQzdELG9CQUFjO0FBQUEsSUFDaEIsQ0FBQztBQUFBLEVBQ0gsT0FBTztBQUNMLGtCQUFjLE1BQU0saUJBQWlCLFNBQVMsS0FBSyxDQUFDLFdBQVc7QUFDN0Qsb0JBQWM7QUFBQSxJQUNoQixDQUFDO0FBQUEsRUFDSDtBQUVBLE1BQUcsZ0JBQWdCLEtBQUssSUFBSSxTQUFTO0FBQ25DLFlBQVEsTUFBTSxvRUFBb0U7QUFFbEYsUUFBSTtBQUNGLFlBQU0sUUFBUTtBQUFBLFFBQ1osWUFBWSxVQUFVLE9BQU87QUFBQSxRQUM3QixhQUFhLFlBQVksWUFDdkIsaUJBQWlCLFVBQVUsT0FBTyxjQUFjLGtCQUNoRCxVQUFVLE9BQU8sU0FBUyxTQUFTO0FBQUEsTUFDdkM7QUFFQSxZQUFNLFdBQVc7QUFBQSxRQUNmLFFBQVE7QUFBQTtBQUFBLGNBRUYsT0FBTztBQUFBLFVBQ1gsSUFBSSxVQUFVLFNBQVM7QUFBQSxlQUNsQixVQUFVLE9BQU8saUJBQWlCO0FBQUEsRUFDL0MsS0FBSyxVQUFVLE9BQU8sTUFBTSxDQUFDLENBQUM7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFFBUXhCLE1BQU07QUFBQSxRQUNOLFNBQVM7QUFBQSxRQUNUO0FBQUEsTUFDRixDQUFDO0FBRUQsY0FBUSxRQUFRLDRCQUE0QjtBQUFBLElBQzlDLFNBQVEsU0FBUztBQUNmLGNBQVEsS0FBSyw2Q0FBNkM7QUFDMUQsVUFBRyxDQUFDLE9BQU87QUFDVCxnQkFBUSxNQUFNLHNCQUFzQixPQUFPO0FBQUEsTUFDN0M7QUFBQSxJQUNGO0FBQUEsRUFDRjtBQUVBLE1BQUcsZ0JBQWdCLEdBQUc7QUFDcEIsUUFBSTtBQUNGLFlBQU0sb0JBQW9CLFNBQVMsVUFBVSxRQUFRLEtBQUs7QUFBQSxJQUM1RCxTQUFRLFdBQVc7QUFDakIsVUFBSTtBQUFBLEVBQUssT0FBTyw0Q0FBNEMsVUFBVSxPQUFPLElBQUksU0FBUyxLQUFLO0FBQy9GLGVBQVMsQ0FBQztBQUNWLGFBQU87QUFBQSxJQUNUO0FBQUEsRUFDRjtBQUVBLFdBQVMsV0FBVztBQUNwQixTQUFPO0FBQ1Q7QUFFQSxJQUFPLGdCQUFROyIsCiAgIm5hbWVzIjogW10KfQo=
|
|
@@ -25,6 +25,7 @@ const compile = async (cmd, callback = () => ({})) => {
|
|
|
25
25
|
const {
|
|
26
26
|
cliName = "Lex",
|
|
27
27
|
config,
|
|
28
|
+
format = "esm",
|
|
28
29
|
outputPath,
|
|
29
30
|
quiet,
|
|
30
31
|
remove,
|
|
@@ -92,7 +93,7 @@ ${cliName} Error: esbuild binary not found in Lex's node_modules or monorepo roo
|
|
|
92
93
|
const esbuildOptions = [
|
|
93
94
|
...sourceFiles,
|
|
94
95
|
"--color=true",
|
|
95
|
-
`--format=${esbuildConfig.format || "esm"}`,
|
|
96
|
+
`--format=${format || esbuildConfig.format || "esm"}`,
|
|
96
97
|
`--outdir=${outputDir}`,
|
|
97
98
|
`--platform=${esbuildConfig.platform || "node"}`,
|
|
98
99
|
`--sourcemap=${esbuildConfig.sourcemap || "inline"}`,
|
|
@@ -238,4 +239,4 @@ export {
|
|
|
238
239
|
compile,
|
|
239
240
|
hasFileType
|
|
240
241
|
};
|
|
241
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2NvbW1hbmRzL2NvbXBpbGUvY29tcGlsZS50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTgtUHJlc2VudCwgTml0cm9nZW4gTGFicywgSW5jLlxuICogQ29weXJpZ2h0cyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSB0aGUgYWNjb21wYW55aW5nIExJQ0VOU0UgZmlsZSBmb3IgdGVybXMuXG4gKi9cbmltcG9ydCB7ZXhlY2F9IGZyb20gJ2V4ZWNhJztcbmltcG9ydCB7ZXhpc3RzU3luYywgbHN0YXRTeW5jLCByZWFkZGlyU3luY30gZnJvbSAnZnMnO1xuaW1wb3J0IHtzeW5jIGFzIGdsb2JTeW5jfSBmcm9tICdnbG9iJztcbmltcG9ydCB7ZXh0bmFtZSBhcyBwYXRoRXh0bmFtZSwgam9pbiBhcyBwYXRoSm9pbiwgcmVzb2x2ZSBhcyBwYXRoUmVzb2x2ZX0gZnJvbSAncGF0aCc7XG5cbmltcG9ydCB7TGV4Q29uZmlnLCBnZXRUeXBlU2NyaXB0Q29uZmlnUGF0aH0gZnJvbSAnLi4vLi4vTGV4Q29uZmlnLmpzJztcbmltcG9ydCB7Y2hlY2tMaW5rZWRNb2R1bGVzLCBjb3B5Q29uZmlndXJlZEZpbGVzLCBjb3B5RmlsZXMsIGNyZWF0ZVNwaW5uZXIsIGdldEZpbGVzQnlFeHQsIHJlbW92ZUZpbGVzfSBmcm9tICcuLi8uLi91dGlscy9hcHAuanMnO1xuaW1wb3J0IHtnZXREaXJOYW1lLCByZXNvbHZlQmluYXJ5UGF0aH0gZnJvbSAnLi4vLi4vdXRpbHMvZmlsZS5qcyc7XG5pbXBvcnQge2xvZ30gZnJvbSAnLi4vLi4vdXRpbHMvbG9nLmpzJztcblxuZXhwb3J0IGNvbnN0IGhhc0ZpbGVUeXBlID0gKHN0YXJ0UGF0aDogc3RyaW5nLCBleHQ6IHN0cmluZ1tdKTogYm9vbGVhbiA9PiB7XG4gIGlmKCFleGlzdHNTeW5jKHN0YXJ0UGF0aCkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBjb25zdCBmaWxlczogc3RyaW5nW10gPSByZWFkZGlyU3luYyhzdGFydFBhdGgpO1xuXG4gIHJldHVybiBmaWxlcy5zb21lKChmaWxlOiBzdHJpbmcpID0+IHtcbiAgICBjb25zdCBmaWxlbmFtZTogc3RyaW5nID0gcGF0aEpvaW4oc3RhcnRQYXRoLCBmaWxlKTtcbiAgICBjb25zdCBmaWxlRXh0OiBzdHJpbmcgPSBwYXRoRXh0bmFtZShmaWxlbmFtZSk7XG4gICAgY29uc3Qgc3RhdCA9IGxzdGF0U3luYyhmaWxlbmFtZSk7XG5cbiAgICBpZihzdGF0LmlzRGlyZWN0b3J5KCkpIHtcbiAgICAgIHJldHVybiBoYXNGaWxlVHlwZShmaWxlbmFtZSwgZXh0KTtcbiAgICB9XG5cbiAgICByZXR1cm4gZXh0LmluY2x1ZGVzKGZpbGVFeHQpO1xuICB9KTtcbn07XG5cbmV4cG9ydCBjb25zdCBjb21waWxlID0gYXN5bmMgKGNtZDogYW55LCBjYWxsYmFjazogYW55ID0gKCkgPT4gKHt9KSk6IFByb21pc2U8bnVtYmVyPiA9PiB7XG4gIGNvbnN0IHtcbiAgICBjbGlOYW1lID0gJ0xleCcsXG4gICAgY29uZmlnLFxuICAgIG91dHB1dFBhdGgsXG4gICAgcXVpZXQsXG4gICAgcmVtb3ZlLFxuICAgIHNvdXJjZVBhdGgsXG4gICAgd2F0Y2hcbiAgfSA9IGNtZDtcblxuICBjb25zdCBzcGlubmVyID0gY3JlYXRlU3Bpbm5lcihxdWlldCk7XG5cbiAgbG9nKGAke2NsaU5hbWV9IGNvbXBpbGluZy4uLmAsICdpbmZvJywgcXVpZXQpO1xuXG4gIGF3YWl0IExleENvbmZpZy5wYXJzZUNvbmZpZyhjbWQpO1xuXG4gIGNvbnN0IHtvdXRwdXRGdWxsUGF0aCwgc291cmNlRnVsbFBhdGgsIHVzZVR5cGVzY3JpcHR9ID0gTGV4Q29uZmlnLmNvbmZpZztcbiAgY29uc3Qgb3V0cHV0RGlyOiBzdHJpbmcgPSBvdXRwdXRQYXRoIHx8IG91dHB1dEZ1bGxQYXRoO1xuICBjb25zdCBzb3VyY2VEaXI6IHN0cmluZyA9IHNvdXJjZVBhdGggPyBwYXRoUmVzb2x2ZShwcm9jZXNzLmN3ZCgpLCBgLi8ke3NvdXJjZVBhdGh9YCkgOiBzb3VyY2VGdWxsUGF0aCB8fCAnJztcbiAgY29uc3QgZGlyTmFtZSA9IGdldERpck5hbWUoKTtcbiAgY29uc3QgZGlyUGF0aDogc3RyaW5nID0gcGF0aFJlc29sdmUoZGlyTmFtZSwgJy4uLy4uJyk7XG5cbiAgY2hlY2tMaW5rZWRNb2R1bGVzKCk7XG5cbiAgaWYocmVtb3ZlKSB7XG4gICAgYXdhaXQgcmVtb3ZlRmlsZXMob3V0cHV0RGlyKTtcbiAgfVxuXG4gIGlmKHVzZVR5cGVzY3JpcHQpIHtcbiAgICBMZXhDb25maWcuY2hlY2tDb21waWxlVHlwZXNjcmlwdENvbmZpZygpO1xuXG4gICAgY29uc3QgdHlwZXNjcmlwdFBhdGg6IHN0cmluZyA9IHJlc29sdmVCaW5hcnlQYXRoKCd0c2MnLCAndHlwZXNjcmlwdCcpO1xuXG4gICAgaWYoIXR5cGVzY3JpcHRQYXRoKSB7XG4gICAgICBsb2coYFxcbiR7Y2xpTmFtZX0gRXJyb3I6IFR5cGVTY3JpcHQgYmluYXJ5IG5vdCBmb3VuZCBpbiBMZXgncyBub2RlX21vZHVsZXMgb3IgbW9ub3JlcG8gcm9vdGAsICdlcnJvcicsIHF1aWV0KTtcbiAgICAgIGxvZygnUGxlYXNlIHJlaW5zdGFsbCBMZXggb3IgY2hlY2sgeW91ciBpbnN0YWxsYXRpb24uJywgJ2luZm8nLCBxdWlldCk7XG4gICAgICByZXR1cm4gMTtcbiAgICB9XG5cbiAgICBjb25zdCB0eXBlc2NyaXB0T3B0aW9uczogc3RyaW5nW10gPSBjb25maWcgP1xuICAgICAgWyctcCcsIGNvbmZpZ10gOlxuICAgICAgWyctcCcsIGdldFR5cGVTY3JpcHRDb25maWdQYXRoKCd0c2NvbmZpZy5idWlsZC5qc29uJyldO1xuXG4gICAgc3Bpbm5lci5zdGFydCgnU3RhdGljIHR5cGUgY2hlY2tpbmcgd2l0aCBUeXBlc2NyaXB0Li4uJyk7XG5cbiAgICB0cnkge1xuICAgICAgYXdhaXQgZXhlY2EodHlwZXNjcmlwdFBhdGgsIHR5cGVzY3JpcHRPcHRpb25zLCB7ZW5jb2Rpbmc6ICd1dGY4J30pO1xuXG4gICAgICBzcGlubmVyLnN1Y2NlZWQoJ1N1Y2Nlc3NmdWxseSBjb21wbGV0ZWQgdHlwZSBjaGVja2luZyEnKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgbG9nKGBcXG4ke2NsaU5hbWV9IEVycm9yOiAke2Vycm9yLm1lc3NhZ2V9YCwgJ2Vycm9yJywgcXVpZXQpO1xuXG4gICAgICBzcGlubmVyLmZhaWwoJ1R5cGUgY2hlY2tpbmcgZmFpbGVkLicpO1xuXG4gICAgICBjYWxsYmFjaygxKTtcbiAgICAgIHJldHVybiAxO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGdsb2JPcHRpb25zID0ge1xuICAgIGN3ZDogc291cmNlRGlyLFxuICAgIGRvdDogZmFsc2UsXG4gICAgbm9kaXI6IHRydWUsXG4gICAgbm9zb3J0OiB0cnVlXG4gIH07XG4gIGNvbnN0IHRzRmlsZXM6IHN0cmluZ1tdID0gZ2xvYlN5bmMoYCR7c291cmNlRGlyfS8qKi8hKCouc3BlY3wqLnRlc3R8Ki5pbnRlZ3JhdGlvbikudHMqYCwgZ2xvYk9wdGlvbnMpO1xuICBjb25zdCBqc0ZpbGVzOiBzdHJpbmdbXSA9IGdsb2JTeW5jKGAke3NvdXJjZURpcn0vKiovISgqLnNwZWN8Ki50ZXN0fCouaW50ZWdyYXRpb24pLmpzYCwgZ2xvYk9wdGlvbnMpO1xuICBjb25zdCBzb3VyY2VGaWxlczogc3RyaW5nW10gPSBbLi4udHNGaWxlcywgLi4uanNGaWxlc107XG4gIGNvbnN0IGVzYnVpbGRDb25maWcgPSBMZXhDb25maWcuY29uZmlnLmVzYnVpbGQgfHwge307XG4gIGNvbnN0IGlzUHJvZHVjdGlvbiA9IHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSAncHJvZHVjdGlvbic7XG4gIGxldCBzaG91bGRNaW5pZnk6IGJvb2xlYW47XG5cbiAgaWYodHlwZW9mIGVzYnVpbGRDb25maWcubWluaWZ5ID09PSAnYm9vbGVhbicpIHtcbiAgICBzaG91bGRNaW5pZnkgPSBlc2J1aWxkQ29uZmlnLm1pbmlmeTtcbiAgfSBlbHNlIHtcbiAgICBzaG91bGRNaW5pZnkgPSBpc1Byb2R1Y3Rpb247XG4gIH1cblxuICBjb25zdCBlc2J1aWxkUGF0aDogc3RyaW5nID0gcmVzb2x2ZUJpbmFyeVBhdGgoJ2VzYnVpbGQnLCAnZXNidWlsZCcpO1xuXG4gIGlmKCFlc2J1aWxkUGF0aCkge1xuICAgIGxvZyhgXFxuJHtjbGlOYW1lfSBFcnJvcjogZXNidWlsZCBiaW5hcnkgbm90IGZvdW5kIGluIExleCdzIG5vZGVfbW9kdWxlcyBvciBtb25vcmVwbyByb290YCwgJ2Vycm9yJywgcXVpZXQpO1xuICAgIGxvZygnUGxlYXNlIHJlaW5zdGFsbCBMZXggb3IgY2hlY2sgeW91ciBpbnN0YWxsYXRpb24uJywgJ2luZm8nLCBxdWlldCk7XG4gICAgcmV0dXJuIDE7XG4gIH1cblxuICBjb25zdCBlc2J1aWxkT3B0aW9uczogc3RyaW5nW10gPSBbXG4gICAgLi4uc291cmNlRmlsZXMsXG4gICAgJy0tY29sb3I9dHJ1ZScsXG4gICAgYC0tZm9ybWF0PSR7ZXNidWlsZENvbmZpZy5mb3JtYXQgfHwgJ2VzbSd9YCxcbiAgICBgLS1vdXRkaXI9JHtvdXRwdXREaXJ9YCxcbiAgICBgLS1wbGF0Zm9ybT0ke2VzYnVpbGRDb25maWcucGxhdGZvcm0gfHwgJ25vZGUnfWAsXG4gICAgYC0tc291cmNlbWFwPSR7ZXNidWlsZENvbmZpZy5zb3VyY2VtYXAgfHwgJ2lubGluZSd9YCxcbiAgICBgLS10YXJnZXQ9JHtlc2J1aWxkQ29uZmlnLnRhcmdldCB8fCAnbm9kZTIwJ31gXG4gIF07XG5cbiAgaWYoc2hvdWxkTWluaWZ5KSB7XG4gICAgZXNidWlsZE9wdGlvbnMucHVzaCgnLS1taW5pZnknKTtcbiAgfVxuXG4gIGlmKGVzYnVpbGRDb25maWcudHJlZVNoYWtpbmcgIT09IGZhbHNlKSB7XG4gICAgZXNidWlsZE9wdGlvbnMucHVzaCgnLS10cmVlLXNoYWtpbmc9dHJ1ZScpO1xuICB9XG5cbiAgaWYoZXNidWlsZENvbmZpZy5kcm9wICYmIGVzYnVpbGRDb25maWcuZHJvcC5sZW5ndGggPiAwKSB7XG4gICAgZXNidWlsZENvbmZpZy5kcm9wLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgIGVzYnVpbGRPcHRpb25zLnB1c2goYC0tZHJvcDoke2l0ZW19YCk7XG4gICAgfSk7XG4gIH1cblxuICBpZihlc2J1aWxkQ29uZmlnLnB1cmUgJiYgZXNidWlsZENvbmZpZy5wdXJlLmxlbmd0aCA+IDApIHtcbiAgICBlc2J1aWxkQ29uZmlnLnB1cmUuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgZXNidWlsZE9wdGlvbnMucHVzaChgLS1wdXJlOiR7aXRlbX1gKTtcbiAgICB9KTtcbiAgfVxuXG4gIGlmKGVzYnVpbGRDb25maWcubGVnYWxDb21tZW50cykge1xuICAgIGVzYnVpbGRPcHRpb25zLnB1c2goYC0tbGVnYWwtY29tbWVudHM9JHtlc2J1aWxkQ29uZmlnLmxlZ2FsQ29tbWVudHN9YCk7XG4gIH1cblxuICBpZihlc2J1aWxkQ29uZmlnLmJhbm5lcikge1xuICAgIE9iamVjdC5lbnRyaWVzKGVzYnVpbGRDb25maWcuYmFubmVyKS5mb3JFYWNoKChbdHlwZSwgY29udGVudF0pID0+IHtcbiAgICAgIGVzYnVpbGRPcHRpb25zLnB1c2goYC0tYmFubmVyOiR7dHlwZX09JHtjb250ZW50fWApO1xuICAgIH0pO1xuICB9XG5cbiAgaWYoZXNidWlsZENvbmZpZy5mb290ZXIpIHtcbiAgICBPYmplY3QuZW50cmllcyhlc2J1aWxkQ29uZmlnLmZvb3RlcikuZm9yRWFjaCgoW3R5cGUsIGNvbnRlbnRdKSA9PiB7XG4gICAgICBlc2J1aWxkT3B0aW9ucy5wdXNoKGAtLWZvb3Rlcjoke3R5cGV9PSR7Y29udGVudH1gKTtcbiAgICB9KTtcbiAgfVxuXG4gIGlmKGVzYnVpbGRDb25maWcuZGVmaW5lKSB7XG4gICAgT2JqZWN0LmVudHJpZXMoZXNidWlsZENvbmZpZy5kZWZpbmUpLmZvckVhY2goKFtrZXksIHZhbHVlXSkgPT4ge1xuICAgICAgZXNidWlsZE9wdGlvbnMucHVzaChgLS1kZWZpbmU6JHtrZXl9PSR7dmFsdWV9YCk7XG4gICAgfSk7XG4gIH1cblxuICBpZih3YXRjaCkge1xuICAgIGVzYnVpbGRPcHRpb25zLnB1c2goJy0td2F0Y2gnKTtcbiAgfVxuXG4gIGNvbnN0IGNzc0ZpbGVzOiBzdHJpbmdbXSA9IGdldEZpbGVzQnlFeHQoJy5jc3MnLCBMZXhDb25maWcuY29uZmlnKTtcblxuICBpZihjc3NGaWxlcy5sZW5ndGgpIHtcbiAgICBjb25zdCBwb3N0Y3NzUGF0aDogc3RyaW5nID0gcmVzb2x2ZUJpbmFyeVBhdGgoJ3Bvc3Rjc3MnLCAncG9zdGNzcy1jbGknKTtcblxuICAgIGlmKCFwb3N0Y3NzUGF0aCkge1xuICAgICAgbG9nKGBcXG4ke2NsaU5hbWV9IEVycm9yOiBQb3N0Q1NTIGJpbmFyeSBub3QgZm91bmQgaW4gTGV4J3Mgbm9kZV9tb2R1bGVzIG9yIG1vbm9yZXBvIHJvb3RgLCAnZXJyb3InLCBxdWlldCk7XG4gICAgICBsb2coJ1BsZWFzZSByZWluc3RhbGwgTGV4IG9yIGNoZWNrIHlvdXIgaW5zdGFsbGF0aW9uLicsICdpbmZvJywgcXVpZXQpO1xuICAgICAgcmV0dXJuIDE7XG4gICAgfVxuXG4gICAgY29uc3QgcG9zdGNzc09wdGlvbnM6IHN0cmluZ1tdID0gW1xuICAgICAgYCR7c291cmNlRGlyfS8qKi8qKi5jc3NgLFxuICAgICAgJy0tYmFzZScsXG4gICAgICBzb3VyY2VEaXIsXG4gICAgICAnLS1kaXInLFxuICAgICAgb3V0cHV0RGlyLFxuICAgICAgJy0tY29uZmlnJyxcbiAgICAgIHBhdGhSZXNvbHZlKGRpck5hbWUsICcuLi8uLi9wb3N0Y3NzLmNvbmZpZy5qcycpXG4gICAgXTtcblxuICAgIHRyeSB7XG4gICAgICBhd2FpdCBleGVjYShwb3N0Y3NzUGF0aCwgcG9zdGNzc09wdGlvbnMsIHtlbmNvZGluZzogJ3V0ZjgnfSk7XG4gICAgICBzcGlubmVyLnN1Y2NlZWQoYFN1Y2Nlc3NmdWxseSBmb3JtYXR0ZWQgJHtjc3NGaWxlcy5sZW5ndGh9IGNzcyBmaWxlcyFgKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgbG9nKGBcXG4ke2NsaU5hbWV9IEVycm9yOiAke2Vycm9yLm1lc3NhZ2V9YCwgJ2Vycm9yJywgcXVpZXQpO1xuXG4gICAgICBzcGlubmVyLmZhaWwoJ0ZhaWxlZCBmb3JtYXR0aW5nIGNzcy4nKTtcblxuICAgICAgY2FsbGJhY2soMSk7XG4gICAgICByZXR1cm4gMTtcbiAgICB9XG4gIH1cblxuICBjb25zdCBnaWZGaWxlczogc3RyaW5nW10gPSBnZXRGaWxlc0J5RXh0KCcuZ2lmJywgTGV4Q29uZmlnLmNvbmZpZyk7XG4gIGNvbnN0IGpwZ0ZpbGVzOiBzdHJpbmdbXSA9IGdldEZpbGVzQnlFeHQoJy5qcGcnLCBMZXhDb25maWcuY29uZmlnKTtcbiAgY29uc3QgcG5nRmlsZXM6IHN0cmluZ1tdID0gZ2V0RmlsZXNCeUV4dCgnLnBuZycsIExleENvbmZpZy5jb25maWcpO1xuICBjb25zdCBzdmdGaWxlczogc3RyaW5nW10gPSBnZXRGaWxlc0J5RXh0KCcuc3ZnJywgTGV4Q29uZmlnLmNvbmZpZyk7XG4gIGNvbnN0IGltYWdlRmlsZXM6IHN0cmluZ1tdID0gWy4uLmdpZkZpbGVzLCAuLi5qcGdGaWxlcywgLi4ucG5nRmlsZXMsIC4uLnN2Z0ZpbGVzXTtcblxuICBpZihpbWFnZUZpbGVzLmxlbmd0aCkge1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCBjb3B5RmlsZXMoaW1hZ2VGaWxlcywgJ2ltYWdlJywgc3Bpbm5lciwgTGV4Q29uZmlnLmNvbmZpZyk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGxvZyhgXFxuJHtjbGlOYW1lfSBFcnJvcjogJHtlcnJvci5tZXNzYWdlfWAsICdlcnJvcicsIHF1aWV0KTtcblxuICAgICAgc3Bpbm5lci5mYWlsKCdGYWlsZWQgdG8gbW92ZSBpbWFnZXMgdG8gb3V0cHV0IGRpcmVjdG9yeS4nKTtcblxuICAgICAgY2FsbGJhY2soMSk7XG4gICAgICByZXR1cm4gMTtcbiAgICB9XG4gIH1cblxuICBjb25zdCB0dGZGaWxlczogc3RyaW5nW10gPSBnZXRGaWxlc0J5RXh0KCcudHRmJywgTGV4Q29uZmlnLmNvbmZpZyk7XG4gIGNvbnN0IG90ZkZpbGVzOiBzdHJpbmdbXSA9IGdldEZpbGVzQnlFeHQoJy5vdGYnLCBMZXhDb25maWcuY29uZmlnKTtcbiAgY29uc3Qgd29mZkZpbGVzOiBzdHJpbmdbXSA9IGdldEZpbGVzQnlFeHQoJy53b2ZmJywgTGV4Q29uZmlnLmNvbmZpZyk7XG4gIGNvbnN0IHdvZmYyRmlsZXM6IHN0cmluZ1tdID0gZ2V0RmlsZXNCeUV4dCgnLndvZmYyJywgTGV4Q29uZmlnLmNvbmZpZyk7XG4gIGNvbnN0IGZvbnRGaWxlczogc3RyaW5nW10gPSBbLi4udHRmRmlsZXMsIC4uLm90ZkZpbGVzLCAuLi53b2ZmRmlsZXMsIC4uLndvZmYyRmlsZXNdO1xuXG4gIGlmKGZvbnRGaWxlcy5sZW5ndGgpIHtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgY29weUZpbGVzKGZvbnRGaWxlcywgJ2ZvbnQnLCBzcGlubmVyLCBMZXhDb25maWcuY29uZmlnKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgbG9nKGBcXG4ke2NsaU5hbWV9IEVycm9yOiAke2Vycm9yLm1lc3NhZ2V9YCwgJ2Vycm9yJywgcXVpZXQpO1xuXG4gICAgICBzcGlubmVyLmZhaWwoJ0ZhaWxlZCB0byBtb3ZlIGZvbnRzIHRvIG91dHB1dCBkaXJlY3RvcnkuJyk7XG5cbiAgICAgIGNhbGxiYWNrKDEpO1xuICAgICAgcmV0dXJuIDE7XG4gICAgfVxuICB9XG5cbiAgY29uc3QgbWRGaWxlczogc3RyaW5nW10gPSBnZXRGaWxlc0J5RXh0KCcubWQnLCBMZXhDb25maWcuY29uZmlnKTtcblxuICBpZihtZEZpbGVzLmxlbmd0aCkge1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCBjb3B5RmlsZXMobWRGaWxlcywgJ2RvY3VtZW50cycsIHNwaW5uZXIsIExleENvbmZpZy5jb25maWcpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBsb2coYFxcbiR7Y2xpTmFtZX0gRXJyb3I6ICR7ZXJyb3IubWVzc2FnZX1gLCAnZXJyb3InLCBxdWlldCk7XG5cbiAgICAgIHNwaW5uZXIuZmFpbCgnRmFpbGVkIHRvIG1vdmUgZG9jcyB0byBvdXRwdXQgZGlyZWN0b3J5LicpO1xuXG4gICAgICBjYWxsYmFjaygxKTtcbiAgICAgIHJldHVybiAxO1xuICAgIH1cbiAgfVxuXG4gIHNwaW5uZXIuc3RhcnQod2F0Y2ggPyAnV2F0Y2hpbmcgZm9yIGNoYW5nZXMuLi4nIDogJ0NvbXBpbGluZyB3aXRoIEVTQnVpbGQuLi4nKTtcblxuICB0cnkge1xuICAgIGF3YWl0IGV4ZWNhKGVzYnVpbGRQYXRoLCBlc2J1aWxkT3B0aW9ucywge2VuY29kaW5nOiAndXRmOCd9KTtcblxuICAgIHNwaW5uZXIuc3VjY2VlZCgnQ29tcGlsZSBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5IScpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGxvZyhgXFxuJHtjbGlOYW1lfSBFcnJvcjogJHtlcnJvci5tZXNzYWdlfWAsICdlcnJvcicsIHF1aWV0KTtcblxuICAgIGlmKCFxdWlldCkge1xuICAgICAgY29uc29sZS5lcnJvcihlcnJvcik7XG4gICAgfVxuXG4gICAgc3Bpbm5lci5mYWlsKCdDb2RlIGNvbXBpbGluZyBmYWlsZWQuJyk7XG5cbiAgICBjYWxsYmFjaygxKTtcbiAgICByZXR1cm4gMTtcbiAgfVxuXG4gIHRyeSB7XG4gICAgYXdhaXQgY29weUNvbmZpZ3VyZWRGaWxlcyhzcGlubmVyLCBMZXhDb25maWcuY29uZmlnLCBxdWlldCk7XG4gIH0gY2F0Y2ggKGNvcHlFcnJvcikge1xuICAgIGxvZyhgXFxuJHtjbGlOYW1lfSBFcnJvcjogRmFpbGVkIHRvIGNvcHkgY29uZmlndXJlZCBmaWxlczogJHtjb3B5RXJyb3IubWVzc2FnZX1gLCAnZXJyb3InLCBxdWlldCk7XG5cbiAgICBzcGlubmVyLmZhaWwoJ0ZhaWxlZCB0byBjb3B5IGNvbmZpZ3VyZWQgZmlsZXMuJyk7XG5cbiAgICBjYWxsYmFjaygxKTtcbiAgICByZXR1cm4gMTtcbiAgfVxuXG4gIGNhbGxiYWNrKDApO1xuICByZXR1cm4gMDtcbn07Il0sCiAgIm1hcHBpbmdzIjogIkFBSUEsU0FBUSxhQUFZO0FBQ3BCLFNBQVEsWUFBWSxXQUFXLG1CQUFrQjtBQUNqRCxTQUFRLFFBQVEsZ0JBQWU7QUFDL0IsU0FBUSxXQUFXLGFBQWEsUUFBUSxVQUFVLFdBQVcsbUJBQWtCO0FBRS9FLFNBQVEsV0FBVywrQkFBOEI7QUFDakQsU0FBUSxvQkFBb0IscUJBQXFCLFdBQVcsZUFBZSxlQUFlLG1CQUFrQjtBQUM1RyxTQUFRLFlBQVkseUJBQXdCO0FBQzVDLFNBQVEsV0FBVTtBQUVYLE1BQU0sY0FBYyxDQUFDLFdBQW1CLFFBQTJCO0FBQ3hFLE1BQUcsQ0FBQyxXQUFXLFNBQVMsR0FBRztBQUN6QixXQUFPO0FBQUEsRUFDVDtBQUVBLFFBQU0sUUFBa0IsWUFBWSxTQUFTO0FBRTdDLFNBQU8sTUFBTSxLQUFLLENBQUMsU0FBaUI7QUFDbEMsVUFBTSxXQUFtQixTQUFTLFdBQVcsSUFBSTtBQUNqRCxVQUFNLFVBQWtCLFlBQVksUUFBUTtBQUM1QyxVQUFNLE9BQU8sVUFBVSxRQUFRO0FBRS9CLFFBQUcsS0FBSyxZQUFZLEdBQUc7QUFDckIsYUFBTyxZQUFZLFVBQVUsR0FBRztBQUFBLElBQ2xDO0FBRUEsV0FBTyxJQUFJLFNBQVMsT0FBTztBQUFBLEVBQzdCLENBQUM7QUFDSDtBQUVPLE1BQU0sVUFBVSxPQUFPLEtBQVUsV0FBZ0IsT0FBTyxDQUFDLE9BQXdCO0FBQ3RGLFFBQU07QUFBQSxJQUNKLFVBQVU7QUFBQSxJQUNWO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxFQUNGLElBQUk7QUFFSixRQUFNLFVBQVUsY0FBYyxLQUFLO0FBRW5DLE1BQUksR0FBRyxPQUFPLGlCQUFpQixRQUFRLEtBQUs7QUFFNUMsUUFBTSxVQUFVLFlBQVksR0FBRztBQUUvQixRQUFNLEVBQUMsZ0JBQWdCLGdCQUFnQixjQUFhLElBQUksVUFBVTtBQUNsRSxRQUFNLFlBQW9CLGNBQWM7QUFDeEMsUUFBTSxZQUFvQixhQUFhLFlBQVksUUFBUSxJQUFJLEdBQUcsS0FBSyxVQUFVLEVBQUUsSUFBSSxrQkFBa0I7QUFDekcsUUFBTSxVQUFVLFdBQVc7QUFDM0IsUUFBTSxVQUFrQixZQUFZLFNBQVMsT0FBTztBQUVwRCxxQkFBbUI7QUFFbkIsTUFBRyxRQUFRO0FBQ1QsVUFBTSxZQUFZLFNBQVM7QUFBQSxFQUM3QjtBQUVBLE1BQUcsZUFBZTtBQUNoQixjQUFVLDZCQUE2QjtBQUV2QyxVQUFNLGlCQUF5QixrQkFBa0IsT0FBTyxZQUFZO0FBRXBFLFFBQUcsQ0FBQyxnQkFBZ0I7QUFDbEIsVUFBSTtBQUFBLEVBQUssT0FBTyw4RUFBOEUsU0FBUyxLQUFLO0FBQzVHLFVBQUksb0RBQW9ELFFBQVEsS0FBSztBQUNyRSxhQUFPO0FBQUEsSUFDVDtBQUVBLFVBQU0sb0JBQThCLFNBQ2xDLENBQUMsTUFBTSxNQUFNLElBQ2IsQ0FBQyxNQUFNLHdCQUF3QixxQkFBcUIsQ0FBQztBQUV2RCxZQUFRLE1BQU0seUNBQXlDO0FBRXZELFFBQUk7QUFDRixZQUFNLE1BQU0sZ0JBQWdCLG1CQUFtQixFQUFDLFVBQVUsT0FBTSxDQUFDO0FBRWpFLGNBQVEsUUFBUSx1Q0FBdUM7QUFBQSxJQUN6RCxTQUFTLE9BQU87QUFDZCxVQUFJO0FBQUEsRUFBSyxPQUFPLFdBQVcsTUFBTSxPQUFPLElBQUksU0FBUyxLQUFLO0FBRTFELGNBQVEsS0FBSyx1QkFBdUI7QUFFcEMsZUFBUyxDQUFDO0FBQ1YsYUFBTztBQUFBLElBQ1Q7QUFBQSxFQUNGO0FBRUEsUUFBTSxjQUFjO0FBQUEsSUFDbEIsS0FBSztBQUFBLElBQ0wsS0FBSztBQUFBLElBQ0wsT0FBTztBQUFBLElBQ1AsUUFBUTtBQUFBLEVBQ1Y7QUFDQSxRQUFNLFVBQW9CLFNBQVMsR0FBRyxTQUFTLDBDQUEwQyxXQUFXO0FBQ3BHLFFBQU0sVUFBb0IsU0FBUyxHQUFHLFNBQVMseUNBQXlDLFdBQVc7QUFDbkcsUUFBTSxjQUF3QixDQUFDLEdBQUcsU0FBUyxHQUFHLE9BQU87QUFDckQsUUFBTSxnQkFBZ0IsVUFBVSxPQUFPLFdBQVcsQ0FBQztBQUNuRCxRQUFNLGVBQWUsUUFBUSxJQUFJLGFBQWE7QUFDOUMsTUFBSTtBQUVKLE1BQUcsT0FBTyxjQUFjLFdBQVcsV0FBVztBQUM1QyxtQkFBZSxjQUFjO0FBQUEsRUFDL0IsT0FBTztBQUNMLG1CQUFlO0FBQUEsRUFDakI7QUFFQSxRQUFNLGNBQXNCLGtCQUFrQixXQUFXLFNBQVM7QUFFbEUsTUFBRyxDQUFDLGFBQWE7QUFDZixRQUFJO0FBQUEsRUFBSyxPQUFPLDJFQUEyRSxTQUFTLEtBQUs7QUFDekcsUUFBSSxvREFBb0QsUUFBUSxLQUFLO0FBQ3JFLFdBQU87QUFBQSxFQUNUO0FBRUEsUUFBTSxpQkFBMkI7QUFBQSxJQUMvQixHQUFHO0FBQUEsSUFDSDtBQUFBLElBQ0EsWUFBWSxjQUFjLFVBQVUsS0FBSztBQUFBLElBQ3pDLFlBQVksU0FBUztBQUFBLElBQ3JCLGNBQWMsY0FBYyxZQUFZLE1BQU07QUFBQSxJQUM5QyxlQUFlLGNBQWMsYUFBYSxRQUFRO0FBQUEsSUFDbEQsWUFBWSxjQUFjLFVBQVUsUUFBUTtBQUFBLEVBQzlDO0FBRUEsTUFBRyxjQUFjO0FBQ2YsbUJBQWUsS0FBSyxVQUFVO0FBQUEsRUFDaEM7QUFFQSxNQUFHLGNBQWMsZ0JBQWdCLE9BQU87QUFDdEMsbUJBQWUsS0FBSyxxQkFBcUI7QUFBQSxFQUMzQztBQUVBLE1BQUcsY0FBYyxRQUFRLGNBQWMsS0FBSyxTQUFTLEdBQUc7QUFDdEQsa0JBQWMsS0FBSyxRQUFRLENBQUMsU0FBUztBQUNuQyxxQkFBZSxLQUFLLFVBQVUsSUFBSSxFQUFFO0FBQUEsSUFDdEMsQ0FBQztBQUFBLEVBQ0g7QUFFQSxNQUFHLGNBQWMsUUFBUSxjQUFjLEtBQUssU0FBUyxHQUFHO0FBQ3RELGtCQUFjLEtBQUssUUFBUSxDQUFDLFNBQVM7QUFDbkMscUJBQWUsS0FBSyxVQUFVLElBQUksRUFBRTtBQUFBLElBQ3RDLENBQUM7QUFBQSxFQUNIO0FBRUEsTUFBRyxjQUFjLGVBQWU7QUFDOUIsbUJBQWUsS0FBSyxvQkFBb0IsY0FBYyxhQUFhLEVBQUU7QUFBQSxFQUN2RTtBQUVBLE1BQUcsY0FBYyxRQUFRO0FBQ3ZCLFdBQU8sUUFBUSxjQUFjLE1BQU0sRUFBRSxRQUFRLENBQUMsQ0FBQyxNQUFNLE9BQU8sTUFBTTtBQUNoRSxxQkFBZSxLQUFLLFlBQVksSUFBSSxJQUFJLE9BQU8sRUFBRTtBQUFBLElBQ25ELENBQUM7QUFBQSxFQUNIO0FBRUEsTUFBRyxjQUFjLFFBQVE7QUFDdkIsV0FBTyxRQUFRLGNBQWMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxDQUFDLE1BQU0sT0FBTyxNQUFNO0FBQ2hFLHFCQUFlLEtBQUssWUFBWSxJQUFJLElBQUksT0FBTyxFQUFFO0FBQUEsSUFDbkQsQ0FBQztBQUFBLEVBQ0g7QUFFQSxNQUFHLGNBQWMsUUFBUTtBQUN2QixXQUFPLFFBQVEsY0FBYyxNQUFNLEVBQUUsUUFBUSxDQUFDLENBQUMsS0FBSyxLQUFLLE1BQU07QUFDN0QscUJBQWUsS0FBSyxZQUFZLEdBQUcsSUFBSSxLQUFLLEVBQUU7QUFBQSxJQUNoRCxDQUFDO0FBQUEsRUFDSDtBQUVBLE1BQUcsT0FBTztBQUNSLG1CQUFlLEtBQUssU0FBUztBQUFBLEVBQy9CO0FBRUEsUUFBTSxXQUFxQixjQUFjLFFBQVEsVUFBVSxNQUFNO0FBRWpFLE1BQUcsU0FBUyxRQUFRO0FBQ2xCLFVBQU0sY0FBc0Isa0JBQWtCLFdBQVcsYUFBYTtBQUV0RSxRQUFHLENBQUMsYUFBYTtBQUNmLFVBQUk7QUFBQSxFQUFLLE9BQU8sMkVBQTJFLFNBQVMsS0FBSztBQUN6RyxVQUFJLG9EQUFvRCxRQUFRLEtBQUs7QUFDckUsYUFBTztBQUFBLElBQ1Q7QUFFQSxVQUFNLGlCQUEyQjtBQUFBLE1BQy9CLEdBQUcsU0FBUztBQUFBLE1BQ1o7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQSxZQUFZLFNBQVMseUJBQXlCO0FBQUEsSUFDaEQ7QUFFQSxRQUFJO0FBQ0YsWUFBTSxNQUFNLGFBQWEsZ0JBQWdCLEVBQUMsVUFBVSxPQUFNLENBQUM7QUFDM0QsY0FBUSxRQUFRLDBCQUEwQixTQUFTLE1BQU0sYUFBYTtBQUFBLElBQ3hFLFNBQVMsT0FBTztBQUNkLFVBQUk7QUFBQSxFQUFLLE9BQU8sV0FBVyxNQUFNLE9BQU8sSUFBSSxTQUFTLEtBQUs7QUFFMUQsY0FBUSxLQUFLLHdCQUF3QjtBQUVyQyxlQUFTLENBQUM7QUFDVixhQUFPO0FBQUEsSUFDVDtBQUFBLEVBQ0Y7QUFFQSxRQUFNLFdBQXFCLGNBQWMsUUFBUSxVQUFVLE1BQU07QUFDakUsUUFBTSxXQUFxQixjQUFjLFFBQVEsVUFBVSxNQUFNO0FBQ2pFLFFBQU0sV0FBcUIsY0FBYyxRQUFRLFVBQVUsTUFBTTtBQUNqRSxRQUFNLFdBQXFCLGNBQWMsUUFBUSxVQUFVLE1BQU07QUFDakUsUUFBTSxhQUF1QixDQUFDLEdBQUcsVUFBVSxHQUFHLFVBQVUsR0FBRyxVQUFVLEdBQUcsUUFBUTtBQUVoRixNQUFHLFdBQVcsUUFBUTtBQUNwQixRQUFJO0FBQ0YsWUFBTSxVQUFVLFlBQVksU0FBUyxTQUFTLFVBQVUsTUFBTTtBQUFBLElBQ2hFLFNBQVMsT0FBTztBQUNkLFVBQUk7QUFBQSxFQUFLLE9BQU8sV0FBVyxNQUFNLE9BQU8sSUFBSSxTQUFTLEtBQUs7QUFFMUQsY0FBUSxLQUFLLDRDQUE0QztBQUV6RCxlQUFTLENBQUM7QUFDVixhQUFPO0FBQUEsSUFDVDtBQUFBLEVBQ0Y7QUFFQSxRQUFNLFdBQXFCLGNBQWMsUUFBUSxVQUFVLE1BQU07QUFDakUsUUFBTSxXQUFxQixjQUFjLFFBQVEsVUFBVSxNQUFNO0FBQ2pFLFFBQU0sWUFBc0IsY0FBYyxTQUFTLFVBQVUsTUFBTTtBQUNuRSxRQUFNLGFBQXVCLGNBQWMsVUFBVSxVQUFVLE1BQU07QUFDckUsUUFBTSxZQUFzQixDQUFDLEdBQUcsVUFBVSxHQUFHLFVBQVUsR0FBRyxXQUFXLEdBQUcsVUFBVTtBQUVsRixNQUFHLFVBQVUsUUFBUTtBQUNuQixRQUFJO0FBQ0YsWUFBTSxVQUFVLFdBQVcsUUFBUSxTQUFTLFVBQVUsTUFBTTtBQUFBLElBQzlELFNBQVMsT0FBTztBQUNkLFVBQUk7QUFBQSxFQUFLLE9BQU8sV0FBVyxNQUFNLE9BQU8sSUFBSSxTQUFTLEtBQUs7QUFFMUQsY0FBUSxLQUFLLDJDQUEyQztBQUV4RCxlQUFTLENBQUM7QUFDVixhQUFPO0FBQUEsSUFDVDtBQUFBLEVBQ0Y7QUFFQSxRQUFNLFVBQW9CLGNBQWMsT0FBTyxVQUFVLE1BQU07QUFFL0QsTUFBRyxRQUFRLFFBQVE7QUFDakIsUUFBSTtBQUNGLFlBQU0sVUFBVSxTQUFTLGFBQWEsU0FBUyxVQUFVLE1BQU07QUFBQSxJQUNqRSxTQUFTLE9BQU87QUFDZCxVQUFJO0FBQUEsRUFBSyxPQUFPLFdBQVcsTUFBTSxPQUFPLElBQUksU0FBUyxLQUFLO0FBRTFELGNBQVEsS0FBSywwQ0FBMEM7QUFFdkQsZUFBUyxDQUFDO0FBQ1YsYUFBTztBQUFBLElBQ1Q7QUFBQSxFQUNGO0FBRUEsVUFBUSxNQUFNLFFBQVEsNEJBQTRCLDJCQUEyQjtBQUU3RSxNQUFJO0FBQ0YsVUFBTSxNQUFNLGFBQWEsZ0JBQWdCLEVBQUMsVUFBVSxPQUFNLENBQUM7QUFFM0QsWUFBUSxRQUFRLGlDQUFpQztBQUFBLEVBQ25ELFNBQVMsT0FBTztBQUNkLFFBQUk7QUFBQSxFQUFLLE9BQU8sV0FBVyxNQUFNLE9BQU8sSUFBSSxTQUFTLEtBQUs7QUFFMUQsUUFBRyxDQUFDLE9BQU87QUFDVCxjQUFRLE1BQU0sS0FBSztBQUFBLElBQ3JCO0FBRUEsWUFBUSxLQUFLLHdCQUF3QjtBQUVyQyxhQUFTLENBQUM7QUFDVixXQUFPO0FBQUEsRUFDVDtBQUVBLE1BQUk7QUFDRixVQUFNLG9CQUFvQixTQUFTLFVBQVUsUUFBUSxLQUFLO0FBQUEsRUFDNUQsU0FBUyxXQUFXO0FBQ2xCLFFBQUk7QUFBQSxFQUFLLE9BQU8sNENBQTRDLFVBQVUsT0FBTyxJQUFJLFNBQVMsS0FBSztBQUUvRixZQUFRLEtBQUssa0NBQWtDO0FBRS9DLGFBQVMsQ0FBQztBQUNWLFdBQU87QUFBQSxFQUNUO0FBRUEsV0FBUyxDQUFDO0FBQ1YsU0FBTztBQUNUOyIsCiAgIm5hbWVzIjogW10KfQo=
|
|
242
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2NvbW1hbmRzL2NvbXBpbGUvY29tcGlsZS50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTgtUHJlc2VudCwgTml0cm9nZW4gTGFicywgSW5jLlxuICogQ29weXJpZ2h0cyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSB0aGUgYWNjb21wYW55aW5nIExJQ0VOU0UgZmlsZSBmb3IgdGVybXMuXG4gKi9cbmltcG9ydCB7ZXhlY2F9IGZyb20gJ2V4ZWNhJztcbmltcG9ydCB7ZXhpc3RzU3luYywgbHN0YXRTeW5jLCByZWFkZGlyU3luY30gZnJvbSAnZnMnO1xuaW1wb3J0IHtzeW5jIGFzIGdsb2JTeW5jfSBmcm9tICdnbG9iJztcbmltcG9ydCB7ZXh0bmFtZSBhcyBwYXRoRXh0bmFtZSwgam9pbiBhcyBwYXRoSm9pbiwgcmVzb2x2ZSBhcyBwYXRoUmVzb2x2ZX0gZnJvbSAncGF0aCc7XG5cbmltcG9ydCB7TGV4Q29uZmlnLCBnZXRUeXBlU2NyaXB0Q29uZmlnUGF0aH0gZnJvbSAnLi4vLi4vTGV4Q29uZmlnLmpzJztcbmltcG9ydCB7Y2hlY2tMaW5rZWRNb2R1bGVzLCBjb3B5Q29uZmlndXJlZEZpbGVzLCBjb3B5RmlsZXMsIGNyZWF0ZVNwaW5uZXIsIGdldEZpbGVzQnlFeHQsIHJlbW92ZUZpbGVzfSBmcm9tICcuLi8uLi91dGlscy9hcHAuanMnO1xuaW1wb3J0IHtnZXREaXJOYW1lLCByZXNvbHZlQmluYXJ5UGF0aH0gZnJvbSAnLi4vLi4vdXRpbHMvZmlsZS5qcyc7XG5pbXBvcnQge2xvZ30gZnJvbSAnLi4vLi4vdXRpbHMvbG9nLmpzJztcblxuZXhwb3J0IGNvbnN0IGhhc0ZpbGVUeXBlID0gKHN0YXJ0UGF0aDogc3RyaW5nLCBleHQ6IHN0cmluZ1tdKTogYm9vbGVhbiA9PiB7XG4gIGlmKCFleGlzdHNTeW5jKHN0YXJ0UGF0aCkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBjb25zdCBmaWxlczogc3RyaW5nW10gPSByZWFkZGlyU3luYyhzdGFydFBhdGgpO1xuXG4gIHJldHVybiBmaWxlcy5zb21lKChmaWxlOiBzdHJpbmcpID0+IHtcbiAgICBjb25zdCBmaWxlbmFtZTogc3RyaW5nID0gcGF0aEpvaW4oc3RhcnRQYXRoLCBmaWxlKTtcbiAgICBjb25zdCBmaWxlRXh0OiBzdHJpbmcgPSBwYXRoRXh0bmFtZShmaWxlbmFtZSk7XG4gICAgY29uc3Qgc3RhdCA9IGxzdGF0U3luYyhmaWxlbmFtZSk7XG5cbiAgICBpZihzdGF0LmlzRGlyZWN0b3J5KCkpIHtcbiAgICAgIHJldHVybiBoYXNGaWxlVHlwZShmaWxlbmFtZSwgZXh0KTtcbiAgICB9XG5cbiAgICByZXR1cm4gZXh0LmluY2x1ZGVzKGZpbGVFeHQpO1xuICB9KTtcbn07XG5cbmV4cG9ydCBjb25zdCBjb21waWxlID0gYXN5bmMgKGNtZDogYW55LCBjYWxsYmFjazogYW55ID0gKCkgPT4gKHt9KSk6IFByb21pc2U8bnVtYmVyPiA9PiB7XG4gIGNvbnN0IHtcbiAgICBjbGlOYW1lID0gJ0xleCcsXG4gICAgY29uZmlnLFxuICAgIGZvcm1hdCA9ICdlc20nLFxuICAgIG91dHB1dFBhdGgsXG4gICAgcXVpZXQsXG4gICAgcmVtb3ZlLFxuICAgIHNvdXJjZVBhdGgsXG4gICAgd2F0Y2hcbiAgfSA9IGNtZDtcblxuICBjb25zdCBzcGlubmVyID0gY3JlYXRlU3Bpbm5lcihxdWlldCk7XG5cbiAgbG9nKGAke2NsaU5hbWV9IGNvbXBpbGluZy4uLmAsICdpbmZvJywgcXVpZXQpO1xuXG4gIGF3YWl0IExleENvbmZpZy5wYXJzZUNvbmZpZyhjbWQpO1xuXG4gIGNvbnN0IHtvdXRwdXRGdWxsUGF0aCwgc291cmNlRnVsbFBhdGgsIHVzZVR5cGVzY3JpcHR9ID0gTGV4Q29uZmlnLmNvbmZpZztcbiAgY29uc3Qgb3V0cHV0RGlyOiBzdHJpbmcgPSBvdXRwdXRQYXRoIHx8IG91dHB1dEZ1bGxQYXRoO1xuICBjb25zdCBzb3VyY2VEaXI6IHN0cmluZyA9IHNvdXJjZVBhdGggPyBwYXRoUmVzb2x2ZShwcm9jZXNzLmN3ZCgpLCBgLi8ke3NvdXJjZVBhdGh9YCkgOiBzb3VyY2VGdWxsUGF0aCB8fCAnJztcbiAgY29uc3QgZGlyTmFtZSA9IGdldERpck5hbWUoKTtcbiAgY29uc3QgZGlyUGF0aDogc3RyaW5nID0gcGF0aFJlc29sdmUoZGlyTmFtZSwgJy4uLy4uJyk7XG5cbiAgY2hlY2tMaW5rZWRNb2R1bGVzKCk7XG5cbiAgaWYocmVtb3ZlKSB7XG4gICAgYXdhaXQgcmVtb3ZlRmlsZXMob3V0cHV0RGlyKTtcbiAgfVxuXG4gIGlmKHVzZVR5cGVzY3JpcHQpIHtcbiAgICBMZXhDb25maWcuY2hlY2tDb21waWxlVHlwZXNjcmlwdENvbmZpZygpO1xuXG4gICAgY29uc3QgdHlwZXNjcmlwdFBhdGg6IHN0cmluZyA9IHJlc29sdmVCaW5hcnlQYXRoKCd0c2MnLCAndHlwZXNjcmlwdCcpO1xuXG4gICAgaWYoIXR5cGVzY3JpcHRQYXRoKSB7XG4gICAgICBsb2coYFxcbiR7Y2xpTmFtZX0gRXJyb3I6IFR5cGVTY3JpcHQgYmluYXJ5IG5vdCBmb3VuZCBpbiBMZXgncyBub2RlX21vZHVsZXMgb3IgbW9ub3JlcG8gcm9vdGAsICdlcnJvcicsIHF1aWV0KTtcbiAgICAgIGxvZygnUGxlYXNlIHJlaW5zdGFsbCBMZXggb3IgY2hlY2sgeW91ciBpbnN0YWxsYXRpb24uJywgJ2luZm8nLCBxdWlldCk7XG4gICAgICByZXR1cm4gMTtcbiAgICB9XG5cbiAgICBjb25zdCB0eXBlc2NyaXB0T3B0aW9uczogc3RyaW5nW10gPSBjb25maWcgP1xuICAgICAgWyctcCcsIGNvbmZpZ10gOlxuICAgICAgWyctcCcsIGdldFR5cGVTY3JpcHRDb25maWdQYXRoKCd0c2NvbmZpZy5idWlsZC5qc29uJyldO1xuXG4gICAgc3Bpbm5lci5zdGFydCgnU3RhdGljIHR5cGUgY2hlY2tpbmcgd2l0aCBUeXBlc2NyaXB0Li4uJyk7XG5cbiAgICB0cnkge1xuICAgICAgYXdhaXQgZXhlY2EodHlwZXNjcmlwdFBhdGgsIHR5cGVzY3JpcHRPcHRpb25zLCB7ZW5jb2Rpbmc6ICd1dGY4J30pO1xuXG4gICAgICBzcGlubmVyLnN1Y2NlZWQoJ1N1Y2Nlc3NmdWxseSBjb21wbGV0ZWQgdHlwZSBjaGVja2luZyEnKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgbG9nKGBcXG4ke2NsaU5hbWV9IEVycm9yOiAke2Vycm9yLm1lc3NhZ2V9YCwgJ2Vycm9yJywgcXVpZXQpO1xuXG4gICAgICBzcGlubmVyLmZhaWwoJ1R5cGUgY2hlY2tpbmcgZmFpbGVkLicpO1xuXG4gICAgICBjYWxsYmFjaygxKTtcbiAgICAgIHJldHVybiAxO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGdsb2JPcHRpb25zID0ge1xuICAgIGN3ZDogc291cmNlRGlyLFxuICAgIGRvdDogZmFsc2UsXG4gICAgbm9kaXI6IHRydWUsXG4gICAgbm9zb3J0OiB0cnVlXG4gIH07XG4gIGNvbnN0IHRzRmlsZXM6IHN0cmluZ1tdID0gZ2xvYlN5bmMoYCR7c291cmNlRGlyfS8qKi8hKCouc3BlY3wqLnRlc3R8Ki5pbnRlZ3JhdGlvbikudHMqYCwgZ2xvYk9wdGlvbnMpO1xuICBjb25zdCBqc0ZpbGVzOiBzdHJpbmdbXSA9IGdsb2JTeW5jKGAke3NvdXJjZURpcn0vKiovISgqLnNwZWN8Ki50ZXN0fCouaW50ZWdyYXRpb24pLmpzYCwgZ2xvYk9wdGlvbnMpO1xuICBjb25zdCBzb3VyY2VGaWxlczogc3RyaW5nW10gPSBbLi4udHNGaWxlcywgLi4uanNGaWxlc107XG4gIGNvbnN0IGVzYnVpbGRDb25maWcgPSBMZXhDb25maWcuY29uZmlnLmVzYnVpbGQgfHwge307XG4gIGNvbnN0IGlzUHJvZHVjdGlvbiA9IHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSAncHJvZHVjdGlvbic7XG4gIGxldCBzaG91bGRNaW5pZnk6IGJvb2xlYW47XG5cbiAgaWYodHlwZW9mIGVzYnVpbGRDb25maWcubWluaWZ5ID09PSAnYm9vbGVhbicpIHtcbiAgICBzaG91bGRNaW5pZnkgPSBlc2J1aWxkQ29uZmlnLm1pbmlmeTtcbiAgfSBlbHNlIHtcbiAgICBzaG91bGRNaW5pZnkgPSBpc1Byb2R1Y3Rpb247XG4gIH1cblxuICBjb25zdCBlc2J1aWxkUGF0aDogc3RyaW5nID0gcmVzb2x2ZUJpbmFyeVBhdGgoJ2VzYnVpbGQnLCAnZXNidWlsZCcpO1xuXG4gIGlmKCFlc2J1aWxkUGF0aCkge1xuICAgIGxvZyhgXFxuJHtjbGlOYW1lfSBFcnJvcjogZXNidWlsZCBiaW5hcnkgbm90IGZvdW5kIGluIExleCdzIG5vZGVfbW9kdWxlcyBvciBtb25vcmVwbyByb290YCwgJ2Vycm9yJywgcXVpZXQpO1xuICAgIGxvZygnUGxlYXNlIHJlaW5zdGFsbCBMZXggb3IgY2hlY2sgeW91ciBpbnN0YWxsYXRpb24uJywgJ2luZm8nLCBxdWlldCk7XG4gICAgcmV0dXJuIDE7XG4gIH1cblxuICBjb25zdCBlc2J1aWxkT3B0aW9uczogc3RyaW5nW10gPSBbXG4gICAgLi4uc291cmNlRmlsZXMsXG4gICAgJy0tY29sb3I9dHJ1ZScsXG4gICAgYC0tZm9ybWF0PSR7Zm9ybWF0IHx8IGVzYnVpbGRDb25maWcuZm9ybWF0IHx8ICdlc20nfWAsXG4gICAgYC0tb3V0ZGlyPSR7b3V0cHV0RGlyfWAsXG4gICAgYC0tcGxhdGZvcm09JHtlc2J1aWxkQ29uZmlnLnBsYXRmb3JtIHx8ICdub2RlJ31gLFxuICAgIGAtLXNvdXJjZW1hcD0ke2VzYnVpbGRDb25maWcuc291cmNlbWFwIHx8ICdpbmxpbmUnfWAsXG4gICAgYC0tdGFyZ2V0PSR7ZXNidWlsZENvbmZpZy50YXJnZXQgfHwgJ25vZGUyMCd9YFxuICBdO1xuXG4gIGlmKHNob3VsZE1pbmlmeSkge1xuICAgIGVzYnVpbGRPcHRpb25zLnB1c2goJy0tbWluaWZ5Jyk7XG4gIH1cblxuICBpZihlc2J1aWxkQ29uZmlnLnRyZWVTaGFraW5nICE9PSBmYWxzZSkge1xuICAgIGVzYnVpbGRPcHRpb25zLnB1c2goJy0tdHJlZS1zaGFraW5nPXRydWUnKTtcbiAgfVxuXG4gIGlmKGVzYnVpbGRDb25maWcuZHJvcCAmJiBlc2J1aWxkQ29uZmlnLmRyb3AubGVuZ3RoID4gMCkge1xuICAgIGVzYnVpbGRDb25maWcuZHJvcC5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICBlc2J1aWxkT3B0aW9ucy5wdXNoKGAtLWRyb3A6JHtpdGVtfWApO1xuICAgIH0pO1xuICB9XG5cbiAgaWYoZXNidWlsZENvbmZpZy5wdXJlICYmIGVzYnVpbGRDb25maWcucHVyZS5sZW5ndGggPiAwKSB7XG4gICAgZXNidWlsZENvbmZpZy5wdXJlLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgIGVzYnVpbGRPcHRpb25zLnB1c2goYC0tcHVyZToke2l0ZW19YCk7XG4gICAgfSk7XG4gIH1cblxuICBpZihlc2J1aWxkQ29uZmlnLmxlZ2FsQ29tbWVudHMpIHtcbiAgICBlc2J1aWxkT3B0aW9ucy5wdXNoKGAtLWxlZ2FsLWNvbW1lbnRzPSR7ZXNidWlsZENvbmZpZy5sZWdhbENvbW1lbnRzfWApO1xuICB9XG5cbiAgaWYoZXNidWlsZENvbmZpZy5iYW5uZXIpIHtcbiAgICBPYmplY3QuZW50cmllcyhlc2J1aWxkQ29uZmlnLmJhbm5lcikuZm9yRWFjaCgoW3R5cGUsIGNvbnRlbnRdKSA9PiB7XG4gICAgICBlc2J1aWxkT3B0aW9ucy5wdXNoKGAtLWJhbm5lcjoke3R5cGV9PSR7Y29udGVudH1gKTtcbiAgICB9KTtcbiAgfVxuXG4gIGlmKGVzYnVpbGRDb25maWcuZm9vdGVyKSB7XG4gICAgT2JqZWN0LmVudHJpZXMoZXNidWlsZENvbmZpZy5mb290ZXIpLmZvckVhY2goKFt0eXBlLCBjb250ZW50XSkgPT4ge1xuICAgICAgZXNidWlsZE9wdGlvbnMucHVzaChgLS1mb290ZXI6JHt0eXBlfT0ke2NvbnRlbnR9YCk7XG4gICAgfSk7XG4gIH1cblxuICBpZihlc2J1aWxkQ29uZmlnLmRlZmluZSkge1xuICAgIE9iamVjdC5lbnRyaWVzKGVzYnVpbGRDb25maWcuZGVmaW5lKS5mb3JFYWNoKChba2V5LCB2YWx1ZV0pID0+IHtcbiAgICAgIGVzYnVpbGRPcHRpb25zLnB1c2goYC0tZGVmaW5lOiR7a2V5fT0ke3ZhbHVlfWApO1xuICAgIH0pO1xuICB9XG5cbiAgaWYod2F0Y2gpIHtcbiAgICBlc2J1aWxkT3B0aW9ucy5wdXNoKCctLXdhdGNoJyk7XG4gIH1cblxuICBjb25zdCBjc3NGaWxlczogc3RyaW5nW10gPSBnZXRGaWxlc0J5RXh0KCcuY3NzJywgTGV4Q29uZmlnLmNvbmZpZyk7XG5cbiAgaWYoY3NzRmlsZXMubGVuZ3RoKSB7XG4gICAgY29uc3QgcG9zdGNzc1BhdGg6IHN0cmluZyA9IHJlc29sdmVCaW5hcnlQYXRoKCdwb3N0Y3NzJywgJ3Bvc3Rjc3MtY2xpJyk7XG5cbiAgICBpZighcG9zdGNzc1BhdGgpIHtcbiAgICAgIGxvZyhgXFxuJHtjbGlOYW1lfSBFcnJvcjogUG9zdENTUyBiaW5hcnkgbm90IGZvdW5kIGluIExleCdzIG5vZGVfbW9kdWxlcyBvciBtb25vcmVwbyByb290YCwgJ2Vycm9yJywgcXVpZXQpO1xuICAgICAgbG9nKCdQbGVhc2UgcmVpbnN0YWxsIExleCBvciBjaGVjayB5b3VyIGluc3RhbGxhdGlvbi4nLCAnaW5mbycsIHF1aWV0KTtcbiAgICAgIHJldHVybiAxO1xuICAgIH1cblxuICAgIGNvbnN0IHBvc3Rjc3NPcHRpb25zOiBzdHJpbmdbXSA9IFtcbiAgICAgIGAke3NvdXJjZURpcn0vKiovKiouY3NzYCxcbiAgICAgICctLWJhc2UnLFxuICAgICAgc291cmNlRGlyLFxuICAgICAgJy0tZGlyJyxcbiAgICAgIG91dHB1dERpcixcbiAgICAgICctLWNvbmZpZycsXG4gICAgICBwYXRoUmVzb2x2ZShkaXJOYW1lLCAnLi4vLi4vcG9zdGNzcy5jb25maWcuanMnKVxuICAgIF07XG5cbiAgICB0cnkge1xuICAgICAgYXdhaXQgZXhlY2EocG9zdGNzc1BhdGgsIHBvc3Rjc3NPcHRpb25zLCB7ZW5jb2Rpbmc6ICd1dGY4J30pO1xuICAgICAgc3Bpbm5lci5zdWNjZWVkKGBTdWNjZXNzZnVsbHkgZm9ybWF0dGVkICR7Y3NzRmlsZXMubGVuZ3RofSBjc3MgZmlsZXMhYCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGxvZyhgXFxuJHtjbGlOYW1lfSBFcnJvcjogJHtlcnJvci5tZXNzYWdlfWAsICdlcnJvcicsIHF1aWV0KTtcblxuICAgICAgc3Bpbm5lci5mYWlsKCdGYWlsZWQgZm9ybWF0dGluZyBjc3MuJyk7XG5cbiAgICAgIGNhbGxiYWNrKDEpO1xuICAgICAgcmV0dXJuIDE7XG4gICAgfVxuICB9XG5cbiAgY29uc3QgZ2lmRmlsZXM6IHN0cmluZ1tdID0gZ2V0RmlsZXNCeUV4dCgnLmdpZicsIExleENvbmZpZy5jb25maWcpO1xuICBjb25zdCBqcGdGaWxlczogc3RyaW5nW10gPSBnZXRGaWxlc0J5RXh0KCcuanBnJywgTGV4Q29uZmlnLmNvbmZpZyk7XG4gIGNvbnN0IHBuZ0ZpbGVzOiBzdHJpbmdbXSA9IGdldEZpbGVzQnlFeHQoJy5wbmcnLCBMZXhDb25maWcuY29uZmlnKTtcbiAgY29uc3Qgc3ZnRmlsZXM6IHN0cmluZ1tdID0gZ2V0RmlsZXNCeUV4dCgnLnN2ZycsIExleENvbmZpZy5jb25maWcpO1xuICBjb25zdCBpbWFnZUZpbGVzOiBzdHJpbmdbXSA9IFsuLi5naWZGaWxlcywgLi4uanBnRmlsZXMsIC4uLnBuZ0ZpbGVzLCAuLi5zdmdGaWxlc107XG5cbiAgaWYoaW1hZ2VGaWxlcy5sZW5ndGgpIHtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgY29weUZpbGVzKGltYWdlRmlsZXMsICdpbWFnZScsIHNwaW5uZXIsIExleENvbmZpZy5jb25maWcpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBsb2coYFxcbiR7Y2xpTmFtZX0gRXJyb3I6ICR7ZXJyb3IubWVzc2FnZX1gLCAnZXJyb3InLCBxdWlldCk7XG5cbiAgICAgIHNwaW5uZXIuZmFpbCgnRmFpbGVkIHRvIG1vdmUgaW1hZ2VzIHRvIG91dHB1dCBkaXJlY3RvcnkuJyk7XG5cbiAgICAgIGNhbGxiYWNrKDEpO1xuICAgICAgcmV0dXJuIDE7XG4gICAgfVxuICB9XG5cbiAgY29uc3QgdHRmRmlsZXM6IHN0cmluZ1tdID0gZ2V0RmlsZXNCeUV4dCgnLnR0ZicsIExleENvbmZpZy5jb25maWcpO1xuICBjb25zdCBvdGZGaWxlczogc3RyaW5nW10gPSBnZXRGaWxlc0J5RXh0KCcub3RmJywgTGV4Q29uZmlnLmNvbmZpZyk7XG4gIGNvbnN0IHdvZmZGaWxlczogc3RyaW5nW10gPSBnZXRGaWxlc0J5RXh0KCcud29mZicsIExleENvbmZpZy5jb25maWcpO1xuICBjb25zdCB3b2ZmMkZpbGVzOiBzdHJpbmdbXSA9IGdldEZpbGVzQnlFeHQoJy53b2ZmMicsIExleENvbmZpZy5jb25maWcpO1xuICBjb25zdCBmb250RmlsZXM6IHN0cmluZ1tdID0gWy4uLnR0ZkZpbGVzLCAuLi5vdGZGaWxlcywgLi4ud29mZkZpbGVzLCAuLi53b2ZmMkZpbGVzXTtcblxuICBpZihmb250RmlsZXMubGVuZ3RoKSB7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IGNvcHlGaWxlcyhmb250RmlsZXMsICdmb250Jywgc3Bpbm5lciwgTGV4Q29uZmlnLmNvbmZpZyk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGxvZyhgXFxuJHtjbGlOYW1lfSBFcnJvcjogJHtlcnJvci5tZXNzYWdlfWAsICdlcnJvcicsIHF1aWV0KTtcblxuICAgICAgc3Bpbm5lci5mYWlsKCdGYWlsZWQgdG8gbW92ZSBmb250cyB0byBvdXRwdXQgZGlyZWN0b3J5LicpO1xuXG4gICAgICBjYWxsYmFjaygxKTtcbiAgICAgIHJldHVybiAxO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0IG1kRmlsZXM6IHN0cmluZ1tdID0gZ2V0RmlsZXNCeUV4dCgnLm1kJywgTGV4Q29uZmlnLmNvbmZpZyk7XG5cbiAgaWYobWRGaWxlcy5sZW5ndGgpIHtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgY29weUZpbGVzKG1kRmlsZXMsICdkb2N1bWVudHMnLCBzcGlubmVyLCBMZXhDb25maWcuY29uZmlnKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgbG9nKGBcXG4ke2NsaU5hbWV9IEVycm9yOiAke2Vycm9yLm1lc3NhZ2V9YCwgJ2Vycm9yJywgcXVpZXQpO1xuXG4gICAgICBzcGlubmVyLmZhaWwoJ0ZhaWxlZCB0byBtb3ZlIGRvY3MgdG8gb3V0cHV0IGRpcmVjdG9yeS4nKTtcblxuICAgICAgY2FsbGJhY2soMSk7XG4gICAgICByZXR1cm4gMTtcbiAgICB9XG4gIH1cblxuICBzcGlubmVyLnN0YXJ0KHdhdGNoID8gJ1dhdGNoaW5nIGZvciBjaGFuZ2VzLi4uJyA6ICdDb21waWxpbmcgd2l0aCBFU0J1aWxkLi4uJyk7XG5cbiAgdHJ5IHtcbiAgICBhd2FpdCBleGVjYShlc2J1aWxkUGF0aCwgZXNidWlsZE9wdGlvbnMsIHtlbmNvZGluZzogJ3V0ZjgnfSk7XG5cbiAgICBzcGlubmVyLnN1Y2NlZWQoJ0NvbXBpbGUgY29tcGxldGVkIHN1Y2Nlc3NmdWxseSEnKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBsb2coYFxcbiR7Y2xpTmFtZX0gRXJyb3I6ICR7ZXJyb3IubWVzc2FnZX1gLCAnZXJyb3InLCBxdWlldCk7XG5cbiAgICBpZighcXVpZXQpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xuICAgIH1cblxuICAgIHNwaW5uZXIuZmFpbCgnQ29kZSBjb21waWxpbmcgZmFpbGVkLicpO1xuXG4gICAgY2FsbGJhY2soMSk7XG4gICAgcmV0dXJuIDE7XG4gIH1cblxuICB0cnkge1xuICAgIGF3YWl0IGNvcHlDb25maWd1cmVkRmlsZXMoc3Bpbm5lciwgTGV4Q29uZmlnLmNvbmZpZywgcXVpZXQpO1xuICB9IGNhdGNoIChjb3B5RXJyb3IpIHtcbiAgICBsb2coYFxcbiR7Y2xpTmFtZX0gRXJyb3I6IEZhaWxlZCB0byBjb3B5IGNvbmZpZ3VyZWQgZmlsZXM6ICR7Y29weUVycm9yLm1lc3NhZ2V9YCwgJ2Vycm9yJywgcXVpZXQpO1xuXG4gICAgc3Bpbm5lci5mYWlsKCdGYWlsZWQgdG8gY29weSBjb25maWd1cmVkIGZpbGVzLicpO1xuXG4gICAgY2FsbGJhY2soMSk7XG4gICAgcmV0dXJuIDE7XG4gIH1cblxuICBjYWxsYmFjaygwKTtcbiAgcmV0dXJuIDA7XG59OyJdLAogICJtYXBwaW5ncyI6ICJBQUlBLFNBQVEsYUFBWTtBQUNwQixTQUFRLFlBQVksV0FBVyxtQkFBa0I7QUFDakQsU0FBUSxRQUFRLGdCQUFlO0FBQy9CLFNBQVEsV0FBVyxhQUFhLFFBQVEsVUFBVSxXQUFXLG1CQUFrQjtBQUUvRSxTQUFRLFdBQVcsK0JBQThCO0FBQ2pELFNBQVEsb0JBQW9CLHFCQUFxQixXQUFXLGVBQWUsZUFBZSxtQkFBa0I7QUFDNUcsU0FBUSxZQUFZLHlCQUF3QjtBQUM1QyxTQUFRLFdBQVU7QUFFWCxNQUFNLGNBQWMsQ0FBQyxXQUFtQixRQUEyQjtBQUN4RSxNQUFHLENBQUMsV0FBVyxTQUFTLEdBQUc7QUFDekIsV0FBTztBQUFBLEVBQ1Q7QUFFQSxRQUFNLFFBQWtCLFlBQVksU0FBUztBQUU3QyxTQUFPLE1BQU0sS0FBSyxDQUFDLFNBQWlCO0FBQ2xDLFVBQU0sV0FBbUIsU0FBUyxXQUFXLElBQUk7QUFDakQsVUFBTSxVQUFrQixZQUFZLFFBQVE7QUFDNUMsVUFBTSxPQUFPLFVBQVUsUUFBUTtBQUUvQixRQUFHLEtBQUssWUFBWSxHQUFHO0FBQ3JCLGFBQU8sWUFBWSxVQUFVLEdBQUc7QUFBQSxJQUNsQztBQUVBLFdBQU8sSUFBSSxTQUFTLE9BQU87QUFBQSxFQUM3QixDQUFDO0FBQ0g7QUFFTyxNQUFNLFVBQVUsT0FBTyxLQUFVLFdBQWdCLE9BQU8sQ0FBQyxPQUF3QjtBQUN0RixRQUFNO0FBQUEsSUFDSixVQUFVO0FBQUEsSUFDVjtBQUFBLElBQ0EsU0FBUztBQUFBLElBQ1Q7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsRUFDRixJQUFJO0FBRUosUUFB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TTtBQUNuRSxRQUFNLGFBQXVCLGNBQWMsVUFBVSxVQUFVLE1BQU07QUFDckUsUUFBTSxZQUFzQixDQUFDLEdBQUcsVUFBVSxHQUFHLFVBQVUsR0FBRyxXQUFXLEdBQUcsVUFBVTtBQUVsRixNQUFHLFVBQVUsUUFBUTtBQUNuQixRQUFJO0FBQ0YsWUFBTSxVQUFVLFdBQVcsUUFBUSxTQUFTLFVBQVUsTUFBTTtBQUFBLElBQzlELFNBQVMsT0FBTztBQUNkLFVBQUk7QUFBQSxFQUFLLE9BQU8sV0FBVyxNQUFNLE9BQU8sSUFBSSxTQUFTLEtBQUs7QUFFMUQsY0FBUSxLQUFLLDJDQUEyQztBQUV4RCxlQUFTLENBQUM7QUFDVixhQUFPO0FBQUEsSUFDVDtBQUFBLEVBQ0Y7QUFFQSxRQUFNLFVBQW9CLGNBQWMsT0FBTyxVQUFVLE1BQU07QUFFL0QsTUFBRyxRQUFRLFFBQVE7QUFDakIsUUFBSTtBQUNGLFlBQU0sVUFBVSxTQUFTLGFBQWEsU0FBUyxVQUFVLE1BQU07QUFBQSxJQUNqRSxTQUFTLE9BQU87QUFDZCxVQUFJO0FBQUEsRUFBSyxPQUFPLFdBQVcsTUFBTSxPQUFPLElBQUksU0FBUyxLQUFLO0FBRTFELGNBQVEsS0FBSywwQ0FBMEM7QUFFdkQsZUFBUyxDQUFDO0FBQ1YsYUFBTztBQUFBLElBQ1Q7QUFBQSxFQUNGO0FBRUEsVUFBUSxNQUFNLFFBQVEsNEJBQTRCLDJCQUEyQjtBQUU3RSxNQUFJO0FBQ0YsVUFBTSxNQUFNLGFBQWEsZ0JBQWdCLEVBQUMsVUFBVSxPQUFNLENBQUM7QUFFM0QsWUFBUSxRQUFRLGlDQUFpQztBQUFBLEVBQ25ELFNBQVMsT0FBTztBQUNkLFFBQUk7QUFBQSxFQUFLLE9BQU8sV0FBVyxNQUFNLE9BQU8sSUFBSSxTQUFTLEtBQUs7QUFFMUQsUUFBRyxDQUFDLE9BQU87QUFDVCxjQUFRLE1BQU0sS0FBSztBQUFBLElBQ3JCO0FBRUEsWUFBUSxLQUFLLHdCQUF3QjtBQUVyQyxhQUFTLENBQUM7QUFDVixXQUFPO0FBQUEsRUFDVDtBQUVBLE1BQUk7QUFDRixVQUFNLG9CQUFvQixTQUFTLFVBQVUsUUFBUSxLQUFLO0FBQUEsRUFDNUQsU0FBUyxXQUFXO0FBQ2xCLFFBQUk7QUFBQSxFQUFLLE9BQU8sNENBQTRDLFVBQVUsT0FBTyxJQUFJLFNBQVMsS0FBSztBQUUvRixZQUFRLEtBQUssa0NBQWtDO0FBRS9DLGFBQVMsQ0FBQztBQUNWLFdBQU87QUFBQSxFQUNUO0FBRUEsV0FBUyxDQUFDO0FBQ1YsU0FBTztBQUNUOyIsCiAgIm5hbWVzIjogW10KfQo=
|
package/lib/commands/dev/dev.js
CHANGED
|
@@ -142,7 +142,7 @@ ${statusBox}
|
|
|
142
142
|
`);
|
|
143
143
|
};
|
|
144
144
|
const dev = async (cmd, callback = () => ({})) => {
|
|
145
|
-
const { bundleAnalyzer, cliName = "Lex", config, open = false, quiet, remove, translations = false, usePublicIp, variables } = cmd;
|
|
145
|
+
const { bundleAnalyzer, cliName = "Lex", config, format = "esm", open = false, quiet, remove, translations = false, usePublicIp, variables } = cmd;
|
|
146
146
|
const spinner = createSpinner(quiet);
|
|
147
147
|
log(`${cliName} start development server...`, "info", quiet);
|
|
148
148
|
await LexConfig.parseConfig(cmd);
|
|
@@ -212,6 +212,20 @@ ${cliName} Error: Failed to process translations: ${translationError.message}`,
|
|
|
212
212
|
stdio: "pipe"
|
|
213
213
|
});
|
|
214
214
|
let serverStarted = false;
|
|
215
|
+
let statusShown = false;
|
|
216
|
+
const showStatusOnce = (portToShow) => {
|
|
217
|
+
if (statusShown) {
|
|
218
|
+
return;
|
|
219
|
+
}
|
|
220
|
+
statusShown = true;
|
|
221
|
+
if (usePublicIp) {
|
|
222
|
+
fetchPublicIp(usePublicIp).then((publicIp) => {
|
|
223
|
+
displayServerStatus(portToShow, quiet, publicIp);
|
|
224
|
+
});
|
|
225
|
+
} else {
|
|
226
|
+
displayServerStatus(portToShow, quiet);
|
|
227
|
+
}
|
|
228
|
+
};
|
|
215
229
|
let detectedPort = 7001;
|
|
216
230
|
childProcess.stdout?.on("data", (data) => {
|
|
217
231
|
const output = data.toString();
|
|
@@ -223,12 +237,7 @@ ${cliName} Error: Failed to process translations: ${translationError.message}`,
|
|
|
223
237
|
if (portMatch) {
|
|
224
238
|
detectedPort = parseInt(portMatch[1]);
|
|
225
239
|
}
|
|
226
|
-
|
|
227
|
-
fetchPublicIp(usePublicIp).then((publicIp) => {
|
|
228
|
-
if (publicIp) {
|
|
229
|
-
displayServerStatus(detectedPort, quiet, publicIp);
|
|
230
|
-
}
|
|
231
|
-
});
|
|
240
|
+
showStatusOnce(detectedPort);
|
|
232
241
|
}
|
|
233
242
|
});
|
|
234
243
|
childProcess.stderr?.on("data", (data) => {
|
|
@@ -241,34 +250,19 @@ ${cliName} Error: Failed to process translations: ${translationError.message}`,
|
|
|
241
250
|
if (portMatch) {
|
|
242
251
|
detectedPort = parseInt(portMatch[1]);
|
|
243
252
|
}
|
|
244
|
-
|
|
245
|
-
fetchPublicIp(usePublicIp).then((publicIp) => {
|
|
246
|
-
if (publicIp) {
|
|
247
|
-
displayServerStatus(detectedPort, quiet, publicIp);
|
|
248
|
-
}
|
|
249
|
-
});
|
|
253
|
+
showStatusOnce(detectedPort);
|
|
250
254
|
}
|
|
251
255
|
});
|
|
252
256
|
setTimeout(() => {
|
|
253
257
|
if (!serverStarted) {
|
|
254
258
|
spinner.succeed("Development server started.");
|
|
255
|
-
|
|
256
|
-
fetchPublicIp(usePublicIp).then((publicIp) => {
|
|
257
|
-
if (publicIp) {
|
|
258
|
-
displayServerStatus(detectedPort, quiet, publicIp);
|
|
259
|
-
}
|
|
260
|
-
});
|
|
259
|
+
showStatusOnce(detectedPort);
|
|
261
260
|
}
|
|
262
261
|
}, 5e3);
|
|
263
262
|
await childProcess;
|
|
264
263
|
if (!serverStarted) {
|
|
265
264
|
spinner.succeed("Development server started.");
|
|
266
|
-
|
|
267
|
-
fetchPublicIp(usePublicIp).then((publicIp) => {
|
|
268
|
-
if (publicIp) {
|
|
269
|
-
displayServerStatus(detectedPort, quiet, publicIp);
|
|
270
|
-
}
|
|
271
|
-
});
|
|
265
|
+
showStatusOnce(detectedPort);
|
|
272
266
|
}
|
|
273
267
|
callback(0);
|
|
274
268
|
return 0;
|
|
@@ -283,4 +277,4 @@ ${cliName} Error: ${error.message}`, "error", quiet);
|
|
|
283
277
|
export {
|
|
284
278
|
dev
|
|
285
279
|
};
|
|
286
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2NvbW1hbmRzL2Rldi9kZXYudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDE4LVByZXNlbnQsIE5pdHJvZ2VuIExhYnMsIEluYy5cbiAqIENvcHlyaWdodHMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgdGhlIGFjY29tcGFueWluZyBMSUNFTlNFIGZpbGUgZm9yIHRlcm1zLlxuICovXG5pbXBvcnQgYm94ZW4gZnJvbSAnYm94ZW4nO1xuaW1wb3J0IGNoYWxrIGZyb20gJ2NoYWxrJztcbmltcG9ydCB7ZXhlY2F9IGZyb20gJ2V4ZWNhJztcbmltcG9ydCB7ZXhpc3RzU3luYywgcmVhZEZpbGVTeW5jLCB3cml0ZUZpbGVTeW5jLCBta2RpclN5bmN9IGZyb20gJ2ZzJztcbmltcG9ydCBodHRwcyBmcm9tICdodHRwcyc7XG5pbXBvcnQge25ldHdvcmtJbnRlcmZhY2VzLCBob21lZGlyfSBmcm9tICdvcyc7XG5pbXBvcnQge2Rpcm5hbWUsIHJlc29sdmUgYXMgcGF0aFJlc29sdmUsIGpvaW59IGZyb20gJ3BhdGgnO1xuXG5pbXBvcnQge0xleENvbmZpZ30gZnJvbSAnLi4vLi4vTGV4Q29uZmlnLmpzJztcbmltcG9ydCB7Y3JlYXRlU3Bpbm5lciwgaGFuZGxlV2VicGFja1Byb2dyZXNzLCByZW1vdmVGaWxlc30gZnJvbSAnLi4vLi4vdXRpbHMvYXBwLmpzJztcbmltcG9ydCB7cmVzb2x2ZVdlYnBhY2tQYXRoc30gZnJvbSAnLi4vLi4vdXRpbHMvZmlsZS5qcyc7XG5pbXBvcnQge2xvZ30gZnJvbSAnLi4vLi4vdXRpbHMvbG9nLmpzJztcbmltcG9ydCB7cHJvY2Vzc1RyYW5zbGF0aW9uc30gZnJvbSAnLi4vLi4vdXRpbHMvdHJhbnNsYXRpb25zLmpzJztcblxubGV0IGN1cnJlbnRGaWxlbmFtZTogc3RyaW5nO1xubGV0IGN1cnJlbnREaXJuYW1lOiBzdHJpbmc7XG5cbnRyeSB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1ldmFsXG4gIGN1cnJlbnRGaWxlbmFtZSA9IGV2YWwoJ3JlcXVpcmUoXCJ1cmxcIikuZmlsZVVSTFRvUGF0aChpbXBvcnQubWV0YS51cmwpJyk7XG4gIGN1cnJlbnREaXJuYW1lID0gZGlybmFtZShjdXJyZW50RmlsZW5hbWUpO1xufSBjYXRjaCB7XG4gIGN1cnJlbnRGaWxlbmFtZSA9IHByb2Nlc3MuY3dkKCk7XG4gIGN1cnJlbnREaXJuYW1lID0gcHJvY2Vzcy5jd2QoKTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEZXZPcHRpb25zIHtcbiAgcmVhZG9ubHkgYnVuZGxlQW5hbHl6ZXI/OiBib29sZWFuO1xuICByZWFkb25seSBjbGlOYW1lPzogc3RyaW5nO1xuICByZWFkb25seSBjb25maWc/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IG9wZW4/OiBib29sZWFuO1xuICByZWFkb25seSBxdWlldD86IGJvb2xlYW47XG4gIHJlYWRvbmx5IHJlbW92ZT86IGJvb2xlYW47XG4gIHJlYWRvbmx5IHRyYW5zbGF0aW9ucz86IGJvb2xlYW47XG4gIHJlYWRvbmx5IHVzZVB1YmxpY0lwPzogYm9vbGVhbjtcbiAgcmVhZG9ubHkgdmFyaWFibGVzPzogc3RyaW5nO1xufVxuXG5leHBvcnQgdHlwZSBEZXZDYWxsYmFjayA9IChzdGF0dXM6IG51bWJlcikgPT4gdm9pZDtcblxuaW50ZXJmYWNlIFB1YmxpY0lwQ2FjaGUge1xuICBpcDogc3RyaW5nO1xuICB0aW1lc3RhbXA6IG51bWJlcjtcbn1cblxuY29uc3QgZ2V0Q2FjaGVEaXIgPSAoKTogc3RyaW5nID0+IHtcbiAgY29uc3QgY2FjaGVEaXIgPSBqb2luKGhvbWVkaXIoKSwgJy5sZXgtY2FjaGUnKTtcbiAgaWYoIWV4aXN0c1N5bmMoY2FjaGVEaXIpKSB7XG4gICAgbWtkaXJTeW5jKGNhY2hlRGlyLCB7cmVjdXJzaXZlOiB0cnVlfSk7XG4gIH1cbiAgcmV0dXJuIGNhY2hlRGlyO1xufTtcblxuY29uc3QgZ2V0Q2FjaGVQYXRoID0gKCk6IHN0cmluZyA9PiBqb2luKGdldENhY2hlRGlyKCksICdwdWJsaWMtaXAuanNvbicpO1xuXG5jb25zdCByZWFkUHVibGljSXBDYWNoZSA9ICgpOiBQdWJsaWNJcENhY2hlIHwgbnVsbCA9PiB7XG4gIGNvbnN0IGNhY2hlUGF0aCA9IGdldENhY2hlUGF0aCgpO1xuICBpZighZXhpc3RzU3luYyhjYWNoZVBhdGgpKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICB0cnkge1xuICAgIGNvbnN0IGNhY2hlRGF0YSA9IHJlYWRGaWxlU3luYyhjYWNoZVBhdGgsICd1dGY4Jyk7XG4gICAgY29uc3QgY2FjaGU6IFB1YmxpY0lwQ2FjaGUgPSBKU09OLnBhcnNlKGNhY2hlRGF0YSk7XG5cbiAgICAvLyBDaGVjayBpZiBjYWNoZSBpcyBvbGRlciB0aGFuIDEgd2VlayAoNyBkYXlzICogMjQgaG91cnMgKiA2MCBtaW51dGVzICogNjAgc2Vjb25kcyAqIDEwMDAgbWlsbGlzZWNvbmRzKVxuICAgIGNvbnN0IG9uZVdlZWtNcyA9IDcgKiAyNCAqIDYwICogNjAgKiAxMDAwO1xuICAgIGlmKERhdGUubm93KCkgLSBjYWNoZS50aW1lc3RhbXAgPiBvbmVXZWVrTXMpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHJldHVybiBjYWNoZTtcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbn07XG5cbmNvbnN0IHdyaXRlUHVibGljSXBDYWNoZSA9IChpcDogc3RyaW5nKTogdm9pZCA9PiB7XG4gIGNvbnN0IGNhY2hlUGF0aCA9IGdldENhY2hlUGF0aCgpO1xuICBjb25zdCBjYWNoZTogUHVibGljSXBDYWNoZSA9IHtcbiAgICBpcCxcbiAgICB0aW1lc3RhbXA6IERhdGUubm93KClcbiAgfTtcbiAgd3JpdGVGaWxlU3luYyhjYWNoZVBhdGgsIEpTT04uc3RyaW5naWZ5KGNhY2hlLCBudWxsLCAyKSk7XG59O1xuXG5jb25zdCBmZXRjaFB1YmxpY0lwID0gKGZvcmNlUmVmcmVzaDogYm9vbGVhbiA9IGZhbHNlKTogUHJvbWlzZTxzdHJpbmcgfCB1bmRlZmluZWQ+ID0+IG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XG4gIC8vIENoZWNrIGNhY2hlIGZpcnN0IHVubGVzcyBmb3JjZSByZWZyZXNoIGlzIHJlcXVlc3RlZFxuICBpZighZm9yY2VSZWZyZXNoKSB7XG4gICAgY29uc3QgY2FjaGVkID0gcmVhZFB1YmxpY0lwQ2FjaGUoKTtcbiAgICBpZihjYWNoZWQpIHtcbiAgICAgIHJlc29sdmUoY2FjaGVkLmlwKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gIH1cblxuICBodHRwcy5nZXQoJ2h0dHBzOi8vYXBpLmlwaWZ5Lm9yZycsIChyZXMpID0+IHtcbiAgICBsZXQgZGF0YSA9ICcnO1xuICAgIHJlcy5vbignZGF0YScsIChjaHVuaykgPT4gKGRhdGEgKz0gY2h1bmspKTtcbiAgICByZXMub24oJ2VuZCcsICgpID0+IHtcbiAgICAgIGNvbnN0IGlwID0gZGF0YS50cmltKCk7XG4gICAgICBpZihpcCkge1xuICAgICAgICB3cml0ZVB1YmxpY0lwQ2FjaGUoaXApO1xuICAgICAgfVxuICAgICAgcmVzb2x2ZShpcCk7XG4gICAgfSk7XG4gIH0pLm9uKCdlcnJvcicsICgpID0+IHJlc29sdmUodW5kZWZpbmVkKSk7XG59KTtcblxuY29uc3QgZ2V0TmV0d29ya0FkZHJlc3NlcyA9ICgpID0+IHtcbiAgY29uc3QgaW50ZXJmYWNlcyA9IG5ldHdvcmtJbnRlcmZhY2VzKCk7XG4gIGNvbnN0IGFkZHJlc3NlcyA9IHtcbiAgICBsb2NhbDogJ2xvY2FsaG9zdCcsXG4gICAgcHJpdmF0ZTogbnVsbCxcbiAgICBwdWJsaWM6IG51bGxcbiAgfTtcblxuICBmb3IoY29uc3QgbmFtZSBvZiBPYmplY3Qua2V5cyhpbnRlcmZhY2VzKSkge1xuICAgIGNvbnN0IG5ldHdvcmtJbnRlcmZhY2UgPSBpbnRlcmZhY2VzW25hbWVdO1xuICAgIGlmKCFuZXR3b3JrSW50ZXJmYWNlKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBmb3IoY29uc3QgaWZhY2Ugb2YgbmV0d29ya0ludGVyZmFjZSkge1xuICAgICAgaWYoaWZhY2UuZmFtaWx5ID09PSAnSVB2NCcgJiYgIWlmYWNlLmludGVybmFsKSB7XG4gICAgICAgIGNvbnN0IGlwID0gaWZhY2UuYWRkcmVzcztcblxuICAgICAgICAvLyBQcml2YXRlIElQIHJhbmdlc1xuICAgICAgICBpZihpcC5zdGFydHNXaXRoKCcxMC4nKSB8fCBpcC5zdGFydHNXaXRoKCcxOTIuMTY4LicpIHx8IGlwLnN0YXJ0c1dpdGgoJzE3Mi4nKSkge1xuICAgICAgICAgIGlmKCFhZGRyZXNzZXMucHJpdmF0ZSkge1xuICAgICAgICAgICAgYWRkcmVzc2VzLnByaXZhdGUgPSBpcDtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gUHVibGljIElQIChub3QgaW4gcHJpdmF0ZSByYW5nZXMpXG4gICAgICAgICAgaWYoIWFkZHJlc3Nlcy5wdWJsaWMpIHtcbiAgICAgICAgICAgIGFkZHJlc3Nlcy5wdWJsaWMgPSBpcDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gYWRkcmVzc2VzO1xufTtcblxuY29uc3QgZGlzcGxheVNlcnZlclN0YXR1cyA9IChwb3J0OiBudW1iZXIgPSA3MDAxLCBxdWlldDogYm9vbGVhbiwgcHVibGljSXA/OiBzdHJpbmcpID0+IHtcbiAgaWYocXVpZXQpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCBhZGRyZXNzZXMgPSBnZXROZXR3b3JrQWRkcmVzc2VzKCk7XG4gIGNvbnN0IGxvY2FsVXJsID0gYGh0dHA6Ly9sb2NhbGhvc3Q6JHtwb3J0fWA7XG4gIGNvbnN0IHByaXZhdGVVcmwgPSBhZGRyZXNzZXMucHJpdmF0ZSA/IGBodHRwOi8vJHthZGRyZXNzZXMucHJpdmF0ZX06JHtwb3J0fWAgOiBudWxsO1xuICBsZXQgcHVibGljVXJsID0gbnVsbDtcbiAgaWYocHVibGljSXApIHtcbiAgICBwdWJsaWNVcmwgPSBgaHR0cDovLyR7cHVibGljSXB9OiR7cG9ydH1gO1xuICB9IGVsc2UgaWYoYWRkcmVzc2VzLnB1YmxpYykge1xuICAgIHB1YmxpY1VybCA9IGBodHRwOi8vJHthZGRyZXNzZXMucHVibGljfToke3BvcnR9YDtcbiAgfVxuXG4gIGxldCB1cmxMaW5lcyA9IGAke2NoYWxrLmdyZWVuKCdMb2NhbDonKX0gICAgICR7Y2hhbGsudW5kZXJsaW5lKGxvY2FsVXJsKX1cXG5gO1xuXG4gIGlmKHByaXZhdGVVcmwpIHtcbiAgICB1cmxMaW5lcyArPSBgJHtjaGFsay5ncmVlbignUHJpdmF0ZTonKX0gICAke2NoYWxrLnVuZGVybGluZShwcml2YXRlVXJsKX1cXG5gO1xuICB9XG5cbiAgaWYocHVibGljVXJsKSB7XG4gICAgdXJsTGluZXMgKz0gYCR7Y2hhbGsuZ3JlZW4oJ1B1YmxpYzonKX0gICAgJHtjaGFsay51bmRlcmxpbmUocHVibGljVXJsKX1cXG5gO1xuICB9XG5cbiAgY29uc3Qgc3RhdHVzQm94ID0gYm94ZW4oXG4gICAgYCR7Y2hhbGsuY3lhbi5ib2xkKCdcdUQ4M0RcdURFODAgRGV2ZWxvcG1lbnQgU2VydmVyIFJ1bm5pbmcnKX1cXG5cXG4ke3VybExpbmVzfVxcbmAgK1xuICAgIGAke2NoYWxrLnllbGxvdygnUHJlc3MgQ3RybCtDIHRvIHN0b3AgdGhlIHNlcnZlcicpfWAsXG4gICAge1xuICAgICAgYmFja2dyb3VuZENvbG9yOiAnIzFhMWExYScsXG4gICAgICBib3JkZXJDb2xvcjogJ2N5YW4nLFxuICAgICAgYm9yZGVyU3R5bGU6ICdyb3VuZCcsXG4gICAgICBtYXJnaW46IDEsXG4gICAgICBwYWRkaW5nOiAxXG4gICAgfVxuICApO1xuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gIGNvbnNvbGUubG9nKGBcXG4ke3N0YXR1c0JveH1cXG5gKTtcbn07XG5cbmV4cG9ydCBjb25zdCBkZXYgPSBhc3luYyAoY21kOiBEZXZPcHRpb25zLCBjYWxsYmFjazogRGV2Q2FsbGJhY2sgPSAoKSA9PiAoe30pKTogUHJvbWlzZTxudW1iZXI+ID0+IHtcbiAgY29uc3Qge2J1bmRsZUFuYWx5emVyLCBjbGlOYW1lID0gJ0xleCcsIGNvbmZpZywgb3BlbiA9IGZhbHNlLCBxdWlldCwgcmVtb3ZlLCB0cmFuc2xhdGlvbnMgPSBmYWxzZSwgdXNlUHVibGljSXAsIHZhcmlhYmxlc30gPSBjbWQ7XG5cbiAgY29uc3Qgc3Bpbm5lciA9IGNyZWF0ZVNwaW5uZXIocXVpZXQpO1xuXG4gIGxvZyhgJHtjbGlOYW1lfSBzdGFydCBkZXZlbG9wbWVudCBzZXJ2ZXIuLi5gLCAnaW5mbycsIHF1aWV0KTtcblxuICBhd2FpdCBMZXhDb25maWcucGFyc2VDb25maWcoY21kKTtcblxuICBjb25zdCB7b3V0cHV0RnVsbFBhdGgsIHVzZVR5cGVzY3JpcHR9ID0gTGV4Q29uZmlnLmNvbmZpZztcblxuICBsZXQgdmFyaWFibGVzT2JqOiBvYmplY3QgPSB7Tk9ERV9FTlY6ICdkZXZlbG9wbWVudCd9O1xuXG4gIGlmKHZhcmlhYmxlcykge1xuICAgIHRyeSB7XG4gICAgICB2YXJpYWJsZXNPYmogPSBKU09OLnBhcnNlKHZhcmlhYmxlcyk7XG4gICAgfSBjYXRjaCAoX2Vycm9yKSB7XG4gICAgICBsb2coYFxcbiR7Y2xpTmFtZX0gRXJyb3I6IEVudmlyb25tZW50IHZhcmlhYmxlcyBvcHRpb24gaXMgbm90IGEgdmFsaWQgSlNPTiBvYmplY3QuYCwgJ2Vycm9yJywgcXVpZXQpO1xuICAgICAgY2FsbGJhY2soMSk7XG4gICAgICByZXR1cm4gMTtcbiAgICB9XG4gIH1cblxuICBwcm9jZXNzLmVudiA9IHsuLi5wcm9jZXNzLmVudiwgLi4udmFyaWFibGVzT2JqfTtcblxuICBpZih1c2VUeXBlc2NyaXB0KSB7XG4gICAgTGV4Q29uZmlnLmNoZWNrVHlwZXNjcmlwdENvbmZpZygpO1xuICB9XG5cbiAgaWYocmVtb3ZlKSB7XG4gICAgc3Bpbm5lci5zdGFydCgnQ2xlYW5pbmcgb3V0cHV0IGRpcmVjdG9yeS4uLicpO1xuXG4gICAgYXdhaXQgcmVtb3ZlRmlsZXMob3V0cHV0RnVsbFBhdGggfHwgJycpO1xuXG4gICAgc3Bpbm5lci5zdWNjZWVkKCdTdWNjZXNzZnVsbHkgY2xlYW5lZCBvdXRwdXQgZGlyZWN0b3J5IScpO1xuICB9XG5cbiAgLy8gUHJvY2VzcyB0cmFuc2xhdGlvbnMgaWYgZmxhZyBpcyBlbmFibGVkIChiZWZvcmUgc3RhcnRpbmcgZGV2IHNlcnZlcilcbiAgaWYodHJhbnNsYXRpb25zKSB7XG4gICAgc3Bpbm5lci5zdGFydCgnUHJvY2Vzc2luZyB0cmFuc2xhdGlvbnMuLi4nKTtcblxuICAgIHRyeSB7XG4gICAgICBjb25zdCBzb3VyY2VQYXRoID0gTGV4Q29uZmlnLmNvbmZpZy5zb3VyY2VGdWxsUGF0aCB8fCBwcm9jZXNzLmN3ZCgpO1xuICAgICAgY29uc3Qgb3V0cHV0UGF0aCA9IExleENvbmZpZy5jb25maWcub3V0cHV0RnVsbFBhdGggfHwgJ2xpYic7XG5cbiAgICAgIGF3YWl0IHByb2Nlc3NUcmFuc2xhdGlvbnMoc291cmNlUGF0aCwgb3V0cHV0UGF0aCwgcXVpZXQpO1xuICAgICAgc3Bpbm5lci5zdWNjZWVkKCdUcmFuc2xhdGlvbnMgcHJvY2Vzc2VkIHN1Y2Nlc3NmdWxseSEnKTtcbiAgICB9IGNhdGNoICh0cmFuc2xhdGlvbkVycm9yKSB7XG4gICAgICBsb2coYFxcbiR7Y2xpTmFtZX0gRXJyb3I6IEZhaWxlZCB0byBwcm9jZXNzIHRyYW5zbGF0aW9uczogJHt0cmFuc2xhdGlvbkVycm9yLm1lc3NhZ2V9YCwgJ2Vycm9yJywgcXVpZXQpO1xuICAgICAgc3Bpbm5lci5mYWlsKCdGYWlsZWQgdG8gcHJvY2VzcyB0cmFuc2xhdGlvbnMuJyk7XG4gICAgICBjYWxsYmFjaygxKTtcbiAgICAgIHJldHVybiAxO1xuICAgIH1cbiAgfVxuXG4gIGxldCB3ZWJwYWNrQ29uZmlnOiBzdHJpbmc7XG5cbiAgaWYoY29uZmlnKSB7XG4gICAgY29uc3QgaXNSZWxhdGl2ZUNvbmZpZzogYm9vbGVhbiA9IGNvbmZpZy5zdWJzdHIoMCwgMikgPT09ICcuLyc7XG4gICAgd2VicGFja0NvbmZpZyA9IGlzUmVsYXRpdmVDb25maWcgPyBwYXRoUmVzb2x2ZShwcm9jZXNzLmN3ZCgpLCBjb25maWcpIDogY29uZmlnO1xuICB9IGVsc2Uge1xuICAgIGNvbnN0IHt3ZWJwYWNrQ29uZmlnOiByZXNvbHZlZENvbmZpZ30gPSByZXNvbHZlV2VicGFja1BhdGhzKGN1cnJlbnREaXJuYW1lKTtcbiAgICB3ZWJwYWNrQ29uZmlnID0gcmVzb2x2ZWRDb25maWc7XG4gIH1cblxuICBjb25zdCB7d2VicGFja1BhdGh9ID0gcmVzb2x2ZVdlYnBhY2tQYXRocyhjdXJyZW50RGlybmFtZSk7XG5cbiAgY29uc3Qgd2VicGFja09wdGlvbnM6IHN0cmluZ1tdID0gW1xuICAgICctLWNvbG9yJyxcbiAgICAnLS13YXRjaCcsXG4gICAgJy0tY29uZmlnJywgd2VicGFja0NvbmZpZ1xuICBdO1xuXG4gIGlmKGJ1bmRsZUFuYWx5emVyKSB7XG4gICAgd2VicGFja09wdGlvbnMucHVzaCgnLS1idW5kbGVBbmFseXplcicpO1xuICB9XG5cbiAgdHJ5IHtcbiAgICBjb25zdCBmaW5hbFdlYnBhY2tPcHRpb25zID0gd2VicGFja1BhdGggPT09ICducHgnID8gWyd3ZWJwYWNrJywgLi4ud2VicGFja09wdGlvbnNdIDogd2VicGFja09wdGlvbnM7XG5cbiAgICBzcGlubmVyLnN0YXJ0KCdTdGFydGluZyBkZXZlbG9wbWVudCBzZXJ2ZXIuLi4nKTtcblxuICAgIGNvbnN0IGNoaWxkUHJvY2VzcyA9IGV4ZWNhKHdlYnBhY2tQYXRoLCBmaW5hbFdlYnBhY2tPcHRpb25zLCB7XG4gICAgICBlbmNvZGluZzogJ3V0ZjgnLFxuICAgICAgZW52OiB7XG4gICAgICAgIExFWF9RVUlFVDogcXVpZXQsXG4gICAgICAgIFdFQlBBQ0tfREVWX09QRU46IG9wZW5cbiAgICAgIH0sXG4gICAgICBzdGRpbzogJ3BpcGUnXG4gICAgfSBhcyBhbnkpO1xuXG4gICAgbGV0IHNlcnZlclN0YXJ0ZWQgPSBmYWxzZTtcbiAgICBsZXQgZGV0ZWN0ZWRQb3J0ID0gNzAwMTtcblxuICAgIGNoaWxkUHJvY2Vzcy5zdGRvdXQ/Lm9uKCdkYXRhJywgKGRhdGE6IEJ1ZmZlcikgPT4ge1xuICAgICAgY29uc3Qgb3V0cHV0ID0gZGF0YS50b1N0cmluZygpO1xuXG4gICAgICBoYW5kbGVXZWJwYWNrUHJvZ3Jlc3Mob3V0cHV0LCBzcGlubmVyLCBxdWlldCwgJ1x1RDgzRFx1REU4MCcsICdXZWJwYWNrIEJ1aWxkaW5nJyk7XG5cbiAgICAgIGlmKCFzZXJ2ZXJTdGFydGVkICYmIChvdXRwdXQuaW5jbHVkZXMoJ0xvY2FsOicpIHx8IG91dHB1dC5pbmNsdWRlcygnd2VicGFjayBjb21waWxlZCcpIHx8IG91dHB1dC5pbmNsdWRlcygnd2VicGFjay1wbHVnaW4tc2VydmUnKSB8fCBvdXRwdXQuaW5jbHVkZXMoJ2h0dHA6Ly9sb2NhbGhvc3QnKSB8fCBvdXRwdXQuaW5jbHVkZXMoJ2xpc3RlbmluZyBvbiBwb3J0JykpKSB7XG4gICAgICAgIHNlcnZlclN0YXJ0ZWQgPSB0cnVlO1xuICAgICAgICBzcGlubmVyLnN1Y2NlZWQoJ0RldmVsb3BtZW50IHNlcnZlciBzdGFydGVkLicpO1xuXG4gICAgICAgIC8vIFRyeSBtdWx0aXBsZSBwYXR0ZXJucyB0byBkZXRlY3QgdGhlIHBvcnRcbiAgICAgICAgY29uc3QgcG9ydE1hdGNoID0gb3V0cHV0Lm1hdGNoKC9Mb2NhbDpcXHMqaHR0cDpcXC9cXC9bXjpdKzooXFxkKykvKSB8fFxuICAgICAgICAgIG91dHB1dC5tYXRjaCgvaHR0cDpcXC9cXC9sb2NhbGhvc3Q6KFxcZCspLykgfHxcbiAgICAgICAgICBvdXRwdXQubWF0Y2goL3BvcnQ6XFxzKihcXGQrKS8pIHx8XG4gICAgICAgICAgb3V0cHV0Lm1hdGNoKC9saXN0ZW5pbmcgb24gcG9ydCAoXFxkKykvKSB8fFxuICAgICAgICAgIG91dHB1dC5tYXRjaCgvV2VicGFja1BsdWdpblNlcnZlIGxpc3RlbmluZyBvbiBwb3J0IChcXGQrKS8pO1xuICAgICAgICBpZihwb3J0TWF0Y2gpIHtcbiAgICAgICAgICBkZXRlY3RlZFBvcnQgPSBwYXJzZUludChwb3J0TWF0Y2hbMV0pO1xuICAgICAgICB9XG5cbiAgICAgICAgZGlzcGxheVNlcnZlclN0YXR1cyhkZXRlY3RlZFBvcnQsIHF1aWV0KTtcbiAgICAgICAgZmV0Y2hQdWJsaWNJcCh1c2VQdWJsaWNJcCkudGhlbigocHVibGljSXApID0+IHtcbiAgICAgICAgICBpZihwdWJsaWNJcCkge1xuICAgICAgICAgICAgZGlzcGxheVNlcnZlclN0YXR1cyhkZXRlY3RlZFBvcnQsIHF1aWV0LCBwdWJsaWNJcCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGNoaWxkUHJvY2Vzcy5zdGRlcnI/Lm9uKCdkYXRhJywgKGRhdGE6IEJ1ZmZlcikgPT4ge1xuICAgICAgY29uc3Qgb3V0cHV0ID0gZGF0YS50b1N0cmluZygpO1xuXG4gICAgICBoYW5kbGVXZWJwYWNrUHJvZ3Jlc3Mob3V0cHV0LCBzcGlubmVyLCBxdWlldCwgJ1x1RDgzRFx1REU4MCcsICdXZWJwYWNrIEJ1aWxkaW5nJyk7XG5cbiAgICAgIGlmKCFzZXJ2ZXJTdGFydGVkICYmIChvdXRwdXQuaW5jbHVkZXMoJ0xvY2FsOicpIHx8IG91dHB1dC5pbmNsdWRlcygnd2VicGFjayBjb21waWxlZCcpIHx8IG91dHB1dC5pbmNsdWRlcygnd2VicGFjay1wbHVnaW4tc2VydmUnKSB8fCBvdXRwdXQuaW5jbHVkZXMoJ2h0dHA6Ly9sb2NhbGhvc3QnKSB8fCBvdXRwdXQuaW5jbHVkZXMoJ2xpc3RlbmluZyBvbiBwb3J0JykpKSB7XG4gICAgICAgIHNlcnZlclN0YXJ0ZWQgPSB0cnVlO1xuICAgICAgICBzcGlubmVyLnN1Y2NlZWQoJ0RldmVsb3BtZW50IHNlcnZlciBzdGFydGVkLicpO1xuXG4gICAgICAgIC8vIFRyeSBtdWx0aXBsZSBwYXR0ZXJucyB0byBkZXRlY3QgdGhlIHBvcnRcbiAgICAgICAgY29uc3QgcG9ydE1hdGNoID0gb3V0cHV0Lm1hdGNoKC9Mb2NhbDpcXHMqaHR0cDpcXC9cXC9bXjpdKzooXFxkKykvKSB8fFxuICAgICAgICAgIG91dHB1dC5tYXRjaCgvaHR0cDpcXC9cXC9sb2NhbGhvc3Q6KFxcZCspLykgfHxcbiAgICAgICAgICBvdXRwdXQubWF0Y2goL3BvcnQ6XFxzKihcXGQrKS8pIHx8XG4gICAgICAgICAgb3V0cHV0Lm1hdGNoKC9saXN0ZW5pbmcgb24gcG9ydCAoXFxkKykvKSB8fFxuICAgICAgICAgIG91dHB1dC5tYXRjaCgvV2VicGFja1BsdWdpblNlcnZlIGxpc3RlbmluZyBvbiBwb3J0IChcXGQrKS8pO1xuICAgICAgICBpZihwb3J0TWF0Y2gpIHtcbiAgICAgICAgICBkZXRlY3RlZFBvcnQgPSBwYXJzZUludChwb3J0TWF0Y2hbMV0pO1xuICAgICAgICB9XG5cbiAgICAgICAgZGlzcGxheVNlcnZlclN0YXR1cyhkZXRlY3RlZFBvcnQsIHF1aWV0KTtcbiAgICAgICAgZmV0Y2hQdWJsaWNJcCh1c2VQdWJsaWNJcCkudGhlbigocHVibGljSXApID0+IHtcbiAgICAgICAgICBpZihwdWJsaWNJcCkge1xuICAgICAgICAgICAgZGlzcGxheVNlcnZlclN0YXR1cyhkZXRlY3RlZFBvcnQsIHF1aWV0LCBwdWJsaWNJcCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgaWYoIXNlcnZlclN0YXJ0ZWQpIHtcbiAgICAgICAgc3Bpbm5lci5zdWNjZWVkKCdEZXZlbG9wbWVudCBzZXJ2ZXIgc3RhcnRlZC4nKTtcbiAgICAgICAgZGlzcGxheVNlcnZlclN0YXR1cyhkZXRlY3RlZFBvcnQsIHF1aWV0KTtcbiAgICAgICAgZmV0Y2hQdWJsaWNJcCh1c2VQdWJsaWNJcCkudGhlbigocHVibGljSXApID0+IHtcbiAgICAgICAgICBpZihwdWJsaWNJcCkge1xuICAgICAgICAgICAgZGlzcGxheVNlcnZlclN0YXR1cyhkZXRlY3RlZFBvcnQsIHF1aWV0LCBwdWJsaWNJcCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9LCA1MDAwKTtcblxuICAgIGF3YWl0IGNoaWxkUHJvY2VzcztcblxuICAgIGlmKCFzZXJ2ZXJTdGFydGVkKSB7XG4gICAgICBzcGlubmVyLnN1Y2NlZWQoJ0RldmVsb3BtZW50IHNlcnZlciBzdGFydGVkLicpO1xuICAgICAgZGlzcGxheVNlcnZlclN0YXR1cyhkZXRlY3RlZFBvcnQsIHF1aWV0KTtcbiAgICAgIGZldGNoUHVibGljSXAodXNlUHVibGljSXApLnRoZW4oKHB1YmxpY0lwKSA9PiB7XG4gICAgICAgIGlmKHB1YmxpY0lwKSB7XG4gICAgICAgICAgZGlzcGxheVNlcnZlclN0YXR1cyhkZXRlY3RlZFBvcnQsIHF1aWV0LCBwdWJsaWNJcCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGNhbGxiYWNrKDApO1xuICAgIHJldHVybiAwO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGxvZyhgXFxuJHtjbGlOYW1lfSBFcnJvcjogJHtlcnJvci5tZXNzYWdlfWAsICdlcnJvcicsIHF1aWV0KTtcblxuICAgIHNwaW5uZXIuZmFpbCgnVGhlcmUgd2FzIGFuIGVycm9yIHdoaWxlIHJ1bm5pbmcgV2VicGFjay4nKTtcblxuICAgIGNhbGxiYWNrKDEpO1xuICAgIHJldHVybiAxO1xuICB9XG59OyJdLAogICJtYXBwaW5ncyI6ICJBQUlBLE9BQU8sV0FBVztBQUNsQixPQUFPLFdBQVc7QUFDbEIsU0FBUSxhQUFZO0FBQ3BCLFNBQVEsWUFBWSxjQUFjLGVBQWUsaUJBQWdCO0FBQ2pFLE9BQU8sV0FBVztBQUNsQixTQUFRLG1CQUFtQixlQUFjO0FBQ3pDLFNBQVEsU0FBUyxXQUFXLGFBQWEsWUFBVztBQUVwRCxTQUFRLGlCQUFnQjtBQUN4QixTQUFRLGVBQWUsdUJBQXVCLG1CQUFrQjtBQUNoRSxTQUFRLDJCQUEwQjtBQUNsQyxTQUFRLFdBQVU7QUFDbEIsU0FBUSwyQkFBMEI7QUFFbEMsSUFBSTtBQUNKLElBQUk7QUFFSixJQUFJO0FBRUYsb0JBQWtCLEtBQUssK0NBQStDO0FBQ3RFLG1CQUFpQixRQUFRLGVBQWU7QUFDMUMsUUFBUTtBQUNOLG9CQUFrQixRQUFRLElBQUk7QUFDOUIsbUJBQWlCLFFBQVEsSUFBSTtBQUMvQjtBQXFCQSxNQUFNLGNBQWMsTUFBYztBQUNoQyxRQUFNLFdBQVcsS0FBSyxRQUFRLEdBQUcsWUFBWTtBQUM3QyxNQUFHLENBQUMsV0FBVyxRQUFRLEdBQUc7QUFDeEIsY0FBVSxVQUFVLEVBQUMsV0FBVyxLQUFJLENBQUM7QUFBQSxFQUN2QztBQUNBLFNBQU87QUFDVDtBQUVBLE1BQU0sZUFBZSxNQUFjLEtBQUssWUFBWSxHQUFHLGdCQUFnQjtBQUV2RSxNQUFNLG9CQUFvQixNQUE0QjtBQUNwRCxRQUFNLFlBQVksYUFBYTtBQUMvQixNQUFHLENBQUMsV0FBVyxTQUFTLEdBQUc7QUFDekIsV0FBTztBQUFBLEVBQ1Q7QUFFQSxNQUFJO0FBQ0YsVUFBTSxZQUFZLGFBQWEsV0FBVyxNQUFNO0FBQ2hELFVBQU0sUUFBdUIsS0FBSyxNQUFNLFNBQVM7QUFHakQsVUFBTSxZQUFZLElBQUksS0FBSyxLQUFLLEtBQUs7QUFDckMsUUFBRyxLQUFLLElBQUksSUFBSSxNQUFNLFlBQVksV0FBVztBQUMzQyxhQUFPO0FBQUEsSUFDVDtBQUVBLFdBQU87QUFBQSxFQUNULFFBQVE7QUFDTixXQUFPO0FBQUEsRUFDVDtBQUNGO0FBRUEsTUFBTSxxQkFBcUIsQ0FBQyxPQUFxQjtBQUMvQyxRQUFNLFlBQVksYUFBYTtBQUMvQixRQUFNLFFBQXVCO0FBQUEsSUFDM0I7QUFBQSxJQUNBLFdBQVcsS0FBSyxJQUFJO0FBQUEsRUFDdEI7QUFDQSxnQkFBYyxXQUFXLEtBQUssVUFBVSxPQUFPLE1BQU0sQ0FBQyxDQUFDO0FBQ3pEO0FBRUEsTUFBTSxnQkFBZ0IsQ0FBQyxlQUF3QixVQUF1QyxJQUFJLFFBQVEsQ0FBQyxZQUFZO0FBRTdHLE1BQUcsQ0FBQyxjQUFjO0FBQ2hCLFVBQU0sU0FBUyxrQkFBa0I7QUFDakMsUUFBRyxRQUFRO0FBQ1QsY0FBUSxPQUFPLEVBQUU7QUFDakI7QUFBQSxJQUNGO0FBQUEsRUFDRjtBQUVBLFFBQU0sSUFBSSx5QkFBeUIsQ0FBQyxRQUFRO0FBQzFDLFFBQUksT0FBTztBQUNYLFFBQUksR0FBRyxRQUFRLENBQUMsVUFBVyxRQUFRLEtBQU07QUFDekMsUUFBSSxHQUFHLE9BQU8sTUFBTTtBQUNsQixZQUFNLEtBQUssS0FBSyxLQUFLO0FBQ3JCLFVBQUcsSUFBSTtBQUNMLDJCQUFtQixFQUFFO0FBQUEsTUFDdkI7QUFDQSxjQUFRLEVBQUU7QUFBQSxJQUNaLENBQUM7QUFBQSxFQUNILENBQUMsRUFBRSxHQUFHLFNBQVMsTUFBTSxRQUFRLE1BQVMsQ0FBQztBQUN6QyxDQUFDO0FBRUQsTUFBTSxzQkFBc0IsTUFBTTtBQUNoQyxRQUFNLGFBQWEsa0JBQWtCO0FBQ3JDLFFBQU0sWUFBWTtBQUFBLElBQ2hCLE9BQU87QUFBQSxJQUNQLFNBQVM7QUFBQSxJQUNULFFBQVE7QUFBQSxFQUNWO0FBRUEsYUFBVSxRQUFRLE9BQU8sS0FBSyxVQUFVLEdBQUc7QUFDekMsVUFBTSxtQkFBbUIsV0FBVyxJQUFJO0FBQ3hDLFFBQUcsQ0FBQyxrQkFBa0I7QUFDcEI7QUFBQSxJQUNGO0FBRUEsZUFBVSxTQUFTLGtCQUFrQjtBQUNuQyxVQUFHLE1BQU0sV0FBVyxVQUFVLENBQUMsTUFBTSxVQUFVO0FBQzdDLGNBQU0sS0FBSyxNQUFNO0FBR2pCLFlBQUcsR0FBRyxXQUFXLEtBQUssS0FBSyxHQUFHLFdBQVcsVUFBVSxLQUFLLEdBQUcsV0FBVyxNQUFNLEdBQUc7QUFDN0UsY0FBRyxDQUFDLFVBQVUsU0FBUztBQUNyQixzQkFBVSxVQUFVO0FBQUEsVUFDdEI7QUFBQSxRQUNGLE9BQU87QUFFTCxjQUFHLENBQUMsVUFBVSxRQUFRO0FBQ3BCLHNCQUFVLFNBQVM7QUFBQSxVQUNyQjtBQUFBLFFBQ0Y7QUFBQSxNQUNGO0FBQUEsSUFDRjtBQUFBLEVBQ0Y7QUFFQSxTQUFPO0FBQ1Q7QUFFQSxNQUFNLHNCQUFzQixDQUFDLE9BQWUsTUFBTSxPQUFnQixhQUFzQjtBQUN0RixNQUFHLE9BQU87QUFDUjtBQUFBLEVBQ0Y7QUFFQSxRQUFNLFlBQVksb0JBQW9CO0FBQ3RDLFFBQU0sV0FBVyxvQkFBb0IsSUFBSTtBQUN6QyxRQUFNLGFBQWEsVUFBVSxVQUFVLFVBQVUsVUFBVSxPQUFPLElBQUksSUFBSSxLQUFLO0FBQy9FLE1BQUksWUFBWTtBQUNoQixNQUFHLFVBQVU7QUFDWCxnQkFBWSxVQUFVLFFBQVEsSUFBSSxJQUFJO0FBQUEsRUFDeEMsV0FBVSxVQUFVLFFBQVE7QUFDMUIsZ0JBQVksVUFBVSxVQUFVLE1BQU0sSUFBSSxJQUFJO0FBQUEsRUFDaEQ7QUFFQSxNQUFJLFdBQVcsR0FBRyxNQUFNLE1BQU0sUUFBUSxDQUFDLFFBQVEsTUFBTSxVQUFVLFFBQVEsQ0FBQztBQUFBO0FBRXhFLE1BQUcsWUFBWTtBQUNiLGdCQUFZLEdBQUcsTUFBTSxNQUFNLFVBQVUsQ0FBQyxNQUFNLE1BQU0sVUFBVSxVQUFVLENBQUM7QUFBQTtBQUFBLEVBQ3pFO0FBRUEsTUFBRyxXQUFXO0FBQ1osZ0JBQVksR0FBRyxNQUFNLE1BQU0sU0FBUyxDQUFDLE9BQU8sTUFBTSxVQUFVLFNBQVMsQ0FBQztBQUFBO0FBQUEsRUFDeEU7QUFFQSxRQUFNLFlBQVk7QUFBQSxJQUNoQixHQUFHLE1BQU0sS0FBSyxLQUFLLHNDQUErQixDQUFDO0FBQUE7QUFBQSxFQUFPLFFBQVE7QUFBQSxFQUMvRCxNQUFNLE9BQU8saUNBQWlDLENBQUM7QUFBQSxJQUNsRDtBQUFBLE1BQ0UsaUJBQWlCO0FBQUEsTUFDakIsYUFBYTtBQUFBLE1BQ2IsYUFBYTtBQUFBLE1BQ2IsUUFBUTtBQUFBLE1BQ1IsU0FBUztBQUFBLElBQ1g7QUFBQSxFQUNGO0FBR0EsVUFBUSxJQUFJO0FBQUEsRUFBSyxTQUFTO0FBQUEsQ0FBSTtBQUNoQztBQUVPLE1BQU0sTUFBTSxPQUFPLEtBQWlCLFdBQXdCLE9BQU8sQ0FBQyxPQUF3QjtBQUNqRyxRQUFNLEVBQUMsZ0JBQWdCLFVBQVUsT0FBTyxRQUFRLE9BQU8sT0FBTyxPQUFPLFFBQVEsZUFBZSxPQUFPLGFBQWEsVUFBUyxJQUFJO0FBRTdILFFBQU0sVUFBVSxjQUFjLEtBQUs7QUFFbkMsTUFBSSxHQUFHLE9BQU8sZ0NBQWdDLFFBQVEsS0FBSztBQUUzRCxRQUFNLFVBQVUsWUFBWSxHQUFHO0FBRS9CLFFBQU0sRUFBQyxnQkFBZ0IsY0FBYSxJQUFJLFVBQVU7QUFFbEQsTUFBSSxlQUF1QixFQUFDLFVBQVUsY0FBYTtBQUVuRCxNQUFHLFdBQVc7QUFDWixRQUFJO0FBQ0YscUJBQWUsS0FBSyxNQUFNLFNBQVM7QUFBQSxJQUNyQyxTQUFTLFFBQVE7QUFDZixVQUFJO0FBQUEsRUFBSyxPQUFPLG9FQUFvRSxTQUFTLEtBQUs7QUFDbEcsZUFBUyxDQUFDO0FBQ1YsYUFBTztBQUFBLElBQ1Q7QUFBQSxFQUNGO0FBRUEsVUFBUSxNQUFNLEVBQUMsR0FBRyxRQUFRLEtBQUssR0FBRyxhQUFZO0FBRTlDLE1BQUcsZUFBZTtBQUNoQixjQUFVLHNCQUFzQjtBQUFBLEVBQ2xDO0FBRUEsTUFBRyxRQUFRO0FBQ1QsWUFBUSxNQUFNLDhCQUE4QjtBQUU1QyxVQUFNLFlBQVksa0JBQWtCLEVBQUU7QUFFdEMsWUFBUSxRQUFRLHdDQUF3QztBQUFBLEVBQzFEO0FBR0EsTUFBRyxjQUFjO0FBQ2YsWUFBUSxNQUFNLDRCQUE0QjtBQUUxQyxRQUFJO0FBQ0YsWUFBTSxhQUFhLFVBQVUsT0FBTyxrQkFBa0IsUUFBUSxJQUFJO0FBQ2xFLFlBQU0sYUFBYSxVQUFVLE9BQU8sa0JBQWtCO0FBRXRELFlBQU0sb0JBQW9CLFlBQVksWUFBWSxLQUFLO0FBQ3ZELGNBQVEsUUFBUSxzQ0FBc0M7QUFBQSxJQUN4RCxTQUFTLGtCQUFrQjtBQUN6QixVQUFJO0FBQUEsRUFBSyxPQUFPLDJDQUEyQyxpQkFBaUIsT0FBTyxJQUFJLFNBQVMsS0FBSztBQUNyRyxjQUFRLEtBQUssaUNBQWlDO0FBQzlDLGVBQVMsQ0FBQztBQUNWLGFBQU87QUFBQSxJQUNUO0FBQUEsRUFDRjtBQUVBLE1BQUk7QUFFSixNQUFHLFFBQVE7QUFDVCxVQUFNLG1CQUE0QixPQUFPLE9BQU8sR0FBRyxDQUFDLE1BQU07QUFDMUQsb0JBQWdCLG1CQUFtQixZQUFZLFFBQVEsSUFBSSxHQUFHLE1BQU0sSUFBSTtBQUFBLEVBQzFFLE9BQU87QUFDTCxVQUFNLEVBQUMsZUFBZSxlQUFjLElBQUksb0JBQW9CLGNBQWM7QUFDMUUsb0JBQWdCO0FBQUEsRUFDbEI7QUFFQSxRQUFNLEVBQUMsWUFBVyxJQUFJLG9CQUFvQixjQUFjO0FBRXhELFFBQU0saUJBQTJCO0FBQUEsSUFDL0I7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLElBQVk7QUFBQSxFQUNkO0FBRUEsTUFBRyxnQkFBZ0I7QUFDakIsbUJBQWUsS0FBSyxrQkFBa0I7QUFBQSxFQUN4QztBQUVBLE1BQUk7QUFDRixVQUFNLHNCQUFzQixnQkFBZ0IsUUFBUSxDQUFDLFdBQVcsR0FBRyxjQUFjLElBQUk7QUFFckYsWUFBUSxNQUFNLGdDQUFnQztBQUU5QyxVQUFNLGVBQWUsTUFBTSxhQUFhLHFCQUFxQjtBQUFBLE1BQzNELFVBQVU7QUFBQSxNQUNWLEtBQUs7QUFBQSxRQUNILFdBQVc7QUFBQSxRQUNYLGtCQUFrQjtBQUFBLE1BQ3BCO0FBQUEsTUFDQSxPQUFPO0FBQUEsSUFDVCxDQUFRO0FBRVIsUUFBSSxnQkFBZ0I7QUFDcEIsUUFBSSxlQUFlO0FBRW5CLGlCQUFhLFFBQVEsR0FBRyxRQUFRLENBQUMsU0FBaUI7QUFDaEQsWUFBTSxTQUFTLEtBQUssU0FBUztBQUU3Qiw0QkFBc0IsUUFBUSxTQUFTLE9BQU8sYUFBTSxrQkFBa0I7QUFFdEUsVUFBRyxDQUFDLGtCQUFrQixPQUFPLFNBQVMsUUFBUSxLQUFLLE9BQU8sU0FBUyxrQkFBa0IsS0FBSyxPQUFPLFNBQVMsc0JBQXNCLEtBQUssT0FBTyxTQUFTLGtCQUFrQixLQUFLLE9BQU8sU0FBUyxtQkFBbUIsSUFBSTtBQUNqTix3QkFBZ0I7QUFDaEIsZ0JBQVEsUUFBUSw2QkFBNkI7QUFHN0MsY0FBTSxZQUFZLE9BQU8sTUFBTSwrQkFBK0IsS0FDNUQsT0FBTyxNQUFNLDBCQUEwQixLQUN2QyxPQUFPLE1BQU0sZUFBZSxLQUM1QixPQUFPLE1BQU0seUJBQXlCLEtBQ3RDLE9BQU8sTUFBTSw0Q0FBNEM7QUFDM0QsWUFBRyxXQUFXO0FBQ1oseUJBQWUsU0FBUyxVQUFVLENBQUMsQ0FBQztBQUFBLFFBQ3RDO0FBRUEsNEJBQW9CLGNBQWMsS0FBSztBQUN2QyxzQkFBYyxXQUFXLEVBQUUsS0FBSyxDQUFDLGFBQWE7QUFDNUMsY0FBRyxVQUFVO0FBQ1gsZ0NBQW9CLGNBQWMsT0FBTyxRQUFRO0FBQUEsVUFDbkQ7QUFBQSxRQUNGLENBQUM7QUFBQSxNQUNIO0FBQUEsSUFDRixDQUFDO0FBRUQsaUJBQWEsUUFBUSxHQUFHLFFBQVEsQ0FBQyxTQUFpQjtBQUNoRCxZQUFNLFNBQVMsS0FBSyxTQUFTO0FBRTdCLDRCQUFzQixRQUFRLFNBQVMsT0FBTyxhQUFNLGtCQUFrQjtBQUV0RSxVQUFHLENBQUMsa0JBQWtCLE9BQU8sU0FBUyxRQUFRLEtBQUssT0FBTyxTQUFTLGtCQUFrQixLQUFLLE9BQU8sU0FBUyxzQkFBc0IsS0FBSyxPQUFPLFNBQVMsa0JBQWtCLEtBQUssT0FBTyxTQUFTLG1CQUFtQixJQUFJO0FBQ2pOLHdCQUFnQjtBQUNoQixnQkFBUSxRQUFRLDZCQUE2QjtBQUc3QyxjQUFNLFlBQVksT0FBTyxNQUFNLCtCQUErQixLQUM1RCxPQUFPLE1BQU0sMEJBQTBCLEtBQ3ZDLE9BQU8sTUFBTSxlQUFlLEtBQzVCLE9BQU8sTUFBTSx5QkFBeUIsS0FDdEMsT0FBTyxNQUFNLDRDQUE0QztBQUMzRCxZQUFHLFdBQVc7QUFDWix5QkFBZSxTQUFTLFVBQVUsQ0FBQyxDQUFDO0FBQUEsUUFDdEM7QUFFQSw0QkFBb0IsY0FBYyxLQUFLO0FBQ3ZDLHNCQUFjLFdBQVcsRUFBRSxLQUFLLENBQUMsYUFBYTtBQUM1QyxjQUFHLFVBQVU7QUFDWCxnQ0FBb0IsY0FBYyxPQUFPLFFBQVE7QUFBQSxVQUNuRDtBQUFBLFFBQ0YsQ0FBQztBQUFBLE1BQ0g7QUFBQSxJQUNGLENBQUM7QUFFRCxlQUFXLE1BQU07QUFDZixVQUFHLENBQUMsZUFBZTtBQUNqQixnQkFBUSxRQUFRLDZCQUE2QjtBQUM3Qyw0QkFBb0IsY0FBYyxLQUFLO0FBQ3ZDLHNCQUFjLFdBQVcsRUFBRSxLQUFLLENBQUMsYUFBYTtBQUM1QyxjQUFHLFVBQVU7QUFDWCxnQ0FBb0IsY0FBYyxPQUFPLFFBQVE7QUFBQSxVQUNuRDtBQUFBLFFBQ0YsQ0FBQztBQUFBLE1BQ0g7QUFBQSxJQUNGLEdBQUcsR0FBSTtBQUVQLFVBQU07QUFFTixRQUFHLENBQUMsZUFBZTtBQUNqQixjQUFRLFFBQVEsNkJBQTZCO0FBQzdDLDBCQUFvQixjQUFjLEtBQUs7QUFDdkMsb0JBQWMsV0FBVyxFQUFFLEtBQUssQ0FBQyxhQUFhO0FBQzVDLFlBQUcsVUFBVTtBQUNYLDhCQUFvQixjQUFjLE9BQU8sUUFBUTtBQUFBLFFBQ25EO0FBQUEsTUFDRixDQUFDO0FBQUEsSUFDSDtBQUVBLGFBQVMsQ0FBQztBQUNWLFdBQU87QUFBQSxFQUNULFNBQVMsT0FBTztBQUNkLFFBQUk7QUFBQSxFQUFLLE9BQU8sV0FBVyxNQUFNLE9BQU8sSUFBSSxTQUFTLEtBQUs7QUFFMUQsWUFBUSxLQUFLLDJDQUEyQztBQUV4RCxhQUFTLENBQUM7QUFDVixXQUFPO0FBQUEsRUFDVDtBQUNGOyIsCiAgIm5hbWVzIjogW10KfQo=
|
|
280
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2NvbW1hbmRzL2Rldi9kZXYudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDE4LVByZXNlbnQsIE5pdHJvZ2VuIExhYnMsIEluYy5cbiAqIENvcHlyaWdodHMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgdGhlIGFjY29tcGFueWluZyBMSUNFTlNFIGZpbGUgZm9yIHRlcm1zLlxuICovXG5pbXBvcnQgYm94ZW4gZnJvbSAnYm94ZW4nO1xuaW1wb3J0IGNoYWxrIGZyb20gJ2NoYWxrJztcbmltcG9ydCB7ZXhlY2F9IGZyb20gJ2V4ZWNhJztcbmltcG9ydCB7ZXhpc3RzU3luYywgcmVhZEZpbGVTeW5jLCB3cml0ZUZpbGVTeW5jLCBta2RpclN5bmN9IGZyb20gJ2ZzJztcbmltcG9ydCBodHRwcyBmcm9tICdodHRwcyc7XG5pbXBvcnQge25ldHdvcmtJbnRlcmZhY2VzLCBob21lZGlyfSBmcm9tICdvcyc7XG5pbXBvcnQge2Rpcm5hbWUsIHJlc29sdmUgYXMgcGF0aFJlc29sdmUsIGpvaW59IGZyb20gJ3BhdGgnO1xuXG5pbXBvcnQge0xleENvbmZpZ30gZnJvbSAnLi4vLi4vTGV4Q29uZmlnLmpzJztcbmltcG9ydCB7Y3JlYXRlU3Bpbm5lciwgaGFuZGxlV2VicGFja1Byb2dyZXNzLCByZW1vdmVGaWxlc30gZnJvbSAnLi4vLi4vdXRpbHMvYXBwLmpzJztcbmltcG9ydCB7cmVzb2x2ZVdlYnBhY2tQYXRoc30gZnJvbSAnLi4vLi4vdXRpbHMvZmlsZS5qcyc7XG5pbXBvcnQge2xvZ30gZnJvbSAnLi4vLi4vdXRpbHMvbG9nLmpzJztcbmltcG9ydCB7cHJvY2Vzc1RyYW5zbGF0aW9uc30gZnJvbSAnLi4vLi4vdXRpbHMvdHJhbnNsYXRpb25zLmpzJztcblxubGV0IGN1cnJlbnRGaWxlbmFtZTogc3RyaW5nO1xubGV0IGN1cnJlbnREaXJuYW1lOiBzdHJpbmc7XG5cbnRyeSB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1ldmFsXG4gIGN1cnJlbnRGaWxlbmFtZSA9IGV2YWwoJ3JlcXVpcmUoXCJ1cmxcIikuZmlsZVVSTFRvUGF0aChpbXBvcnQubWV0YS51cmwpJyk7XG4gIGN1cnJlbnREaXJuYW1lID0gZGlybmFtZShjdXJyZW50RmlsZW5hbWUpO1xufSBjYXRjaCB7XG4gIGN1cnJlbnRGaWxlbmFtZSA9IHByb2Nlc3MuY3dkKCk7XG4gIGN1cnJlbnREaXJuYW1lID0gcHJvY2Vzcy5jd2QoKTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEZXZPcHRpb25zIHtcbiAgcmVhZG9ubHkgYnVuZGxlQW5hbHl6ZXI/OiBib29sZWFuO1xuICByZWFkb25seSBjbGlOYW1lPzogc3RyaW5nO1xuICByZWFkb25seSBjb25maWc/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IGZvcm1hdD86IHN0cmluZztcbiAgcmVhZG9ubHkgb3Blbj86IGJvb2xlYW47XG4gIHJlYWRvbmx5IHF1aWV0PzogYm9vbGVhbjtcbiAgcmVhZG9ubHkgcmVtb3ZlPzogYm9vbGVhbjtcbiAgcmVhZG9ubHkgdHJhbnNsYXRpb25zPzogYm9vbGVhbjtcbiAgcmVhZG9ubHkgdXNlUHVibGljSXA/OiBib29sZWFuO1xuICByZWFkb25seSB2YXJpYWJsZXM/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCB0eXBlIERldkNhbGxiYWNrID0gKHN0YXR1czogbnVtYmVyKSA9PiB2b2lkO1xuXG5pbnRlcmZhY2UgUHVibGljSXBDYWNoZSB7XG4gIGlwOiBzdHJpbmc7XG4gIHRpbWVzdGFtcDogbnVtYmVyO1xufVxuXG5jb25zdCBnZXRDYWNoZURpciA9ICgpOiBzdHJpbmcgPT4ge1xuICBjb25zdCBjYWNoZURpciA9IGpvaW4oaG9tZWRpcigpLCAnLmxleC1jYWNoZScpO1xuICBpZighZXhpc3RzU3luYyhjYWNoZURpcikpIHtcbiAgICBta2RpclN5bmMoY2FjaGVEaXIsIHtyZWN1cnNpdmU6IHRydWV9KTtcbiAgfVxuICByZXR1cm4gY2FjaGVEaXI7XG59O1xuXG5jb25zdCBnZXRDYWNoZVBhdGggPSAoKTogc3RyaW5nID0+IGpvaW4oZ2V0Q2FjaGVEaXIoKSwgJ3B1YmxpYy1pcC5qc29uJyk7XG5cbmNvbnN0IHJlYWRQdWJsaWNJcENhY2hlID0gKCk6IFB1YmxpY0lwQ2FjaGUgfCBudWxsID0+IHtcbiAgY29uc3QgY2FjaGVQYXRoID0gZ2V0Q2FjaGVQYXRoKCk7XG4gIGlmKCFleGlzdHNTeW5jKGNhY2hlUGF0aCkpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHRyeSB7XG4gICAgY29uc3QgY2FjaGVEYXRhID0gcmVhZEZpbGVTeW5jKGNhY2hlUGF0aCwgJ3V0ZjgnKTtcbiAgICBjb25zdCBjYWNoZTogUHVibGljSXBDYWNoZSA9IEpTT04ucGFyc2UoY2FjaGVEYXRhKTtcbiAgICBjb25zdCBvbmVXZWVrTXMgPSA3ICogMjQgKiA2MCAqIDYwICogMTAwMDtcblxuICAgIGlmKERhdGUubm93KCkgLSBjYWNoZS50aW1lc3RhbXAgPiBvbmVXZWVrTXMpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHJldHVybiBjYWNoZTtcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbn07XG5cbmNvbnN0IHdyaXRlUHVibGljSXBDYWNoZSA9IChpcDogc3RyaW5nKTogdm9pZCA9PiB7XG4gIGNvbnN0IGNhY2hlUGF0aCA9IGdldENhY2hlUGF0aCgpO1xuICBjb25zdCBjYWNoZTogUHVibGljSXBDYWNoZSA9IHtcbiAgICBpcCxcbiAgICB0aW1lc3RhbXA6IERhdGUubm93KClcbiAgfTtcbiAgd3JpdGVGaWxlU3luYyhjYWNoZVBhdGgsIEpTT04uc3RyaW5naWZ5KGNhY2hlLCBudWxsLCAyKSk7XG59O1xuXG5jb25zdCBmZXRjaFB1YmxpY0lwID0gKGZvcmNlUmVmcmVzaDogYm9vbGVhbiA9IGZhbHNlKTogUHJvbWlzZTxzdHJpbmcgfCB1bmRlZmluZWQ+ID0+IG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XG4gIGlmKCFmb3JjZVJlZnJlc2gpIHtcbiAgICBjb25zdCBjYWNoZWQgPSByZWFkUHVibGljSXBDYWNoZSgpO1xuICAgIGlmKGNhY2hlZCkge1xuICAgICAgcmVzb2x2ZShjYWNoZWQuaXApO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgfVxuXG4gIGh0dHBzLmdldCgnaHR0cHM6Ly9hcGkuaXBpZnkub3JnJywgKHJlcykgPT4ge1xuICAgIGxldCBkYXRhID0gJyc7XG4gICAgcmVzLm9uKCdkYXRhJywgKGNodW5rKSA9PiAoZGF0YSArPSBjaHVuaykpO1xuICAgIHJlcy5vbignZW5kJywgKCkgPT4ge1xuICAgICAgY29uc3QgaXAgPSBkYXRhLnRyaW0oKTtcbiAgICAgIGlmKGlwKSB7XG4gICAgICAgIHdyaXRlUHVibGljSXBDYWNoZShpcCk7XG4gICAgICB9XG4gICAgICByZXNvbHZlKGlwKTtcbiAgICB9KTtcbiAgfSkub24oJ2Vycm9yJywgKCkgPT4gcmVzb2x2ZSh1bmRlZmluZWQpKTtcbn0pO1xuXG5jb25zdCBnZXROZXR3b3JrQWRkcmVzc2VzID0gKCkgPT4ge1xuICBjb25zdCBpbnRlcmZhY2VzID0gbmV0d29ya0ludGVyZmFjZXMoKTtcbiAgY29uc3QgYWRkcmVzc2VzID0ge1xuICAgIGxvY2FsOiAnbG9jYWxob3N0JyxcbiAgICBwcml2YXRlOiBudWxsLFxuICAgIHB1YmxpYzogbnVsbFxuICB9O1xuXG4gIGZvcihjb25zdCBuYW1lIG9mIE9iamVjdC5rZXlzKGludGVyZmFjZXMpKSB7XG4gICAgY29uc3QgbmV0d29ya0ludGVyZmFjZSA9IGludGVyZmFjZXNbbmFtZV07XG4gICAgaWYoIW5ldHdvcmtJbnRlcmZhY2UpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGZvcihjb25zdCBpZmFjZSBvZiBuZXR3b3JrSW50ZXJmYWNlKSB7XG4gICAgICBpZihpZmFjZS5mYW1pbHkgPT09ICdJUHY0JyAmJiAhaWZhY2UuaW50ZXJuYWwpIHtcbiAgICAgICAgY29uc3QgaXAgPSBpZmFjZS5hZGRyZXNzO1xuXG4gICAgICAgIGlmKGlwLnN0YXJ0c1dpdGgoJzEwLicpIHx8IGlwLnN0YXJ0c1dpdGgoJzE5Mi4xNjguJykgfHwgaXAuc3RhcnRzV2l0aCgnMTcyLicpKSB7XG4gICAgICAgICAgaWYoIWFkZHJlc3Nlcy5wcml2YXRlKSB7XG4gICAgICAgICAgICBhZGRyZXNzZXMucHJpdmF0ZSA9IGlwO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpZighYWRkcmVzc2VzLnB1YmxpYykge1xuICAgICAgICAgICAgYWRkcmVzc2VzLnB1YmxpYyA9IGlwO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBhZGRyZXNzZXM7XG59O1xuXG5jb25zdCBkaXNwbGF5U2VydmVyU3RhdHVzID0gKHBvcnQ6IG51bWJlciA9IDcwMDEsIHF1aWV0OiBib29sZWFuLCBwdWJsaWNJcD86IHN0cmluZykgPT4ge1xuICBpZihxdWlldCkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IGFkZHJlc3NlcyA9IGdldE5ldHdvcmtBZGRyZXNzZXMoKTtcbiAgY29uc3QgbG9jYWxVcmwgPSBgaHR0cDovL2xvY2FsaG9zdDoke3BvcnR9YDtcbiAgY29uc3QgcHJpdmF0ZVVybCA9IGFkZHJlc3Nlcy5wcml2YXRlID8gYGh0dHA6Ly8ke2FkZHJlc3Nlcy5wcml2YXRlfToke3BvcnR9YCA6IG51bGw7XG4gIGxldCBwdWJsaWNVcmwgPSBudWxsO1xuICBpZihwdWJsaWNJcCkge1xuICAgIHB1YmxpY1VybCA9IGBodHRwOi8vJHtwdWJsaWNJcH06JHtwb3J0fWA7XG4gIH0gZWxzZSBpZihhZGRyZXNzZXMucHVibGljKSB7XG4gICAgcHVibGljVXJsID0gYGh0dHA6Ly8ke2FkZHJlc3Nlcy5wdWJsaWN9OiR7cG9ydH1gO1xuICB9XG5cbiAgbGV0IHVybExpbmVzID0gYCR7Y2hhbGsuZ3JlZW4oJ0xvY2FsOicpfSAgICAgJHtjaGFsay51bmRlcmxpbmUobG9jYWxVcmwpfVxcbmA7XG5cbiAgaWYocHJpdmF0ZVVybCkge1xuICAgIHVybExpbmVzICs9IGAke2NoYWxrLmdyZWVuKCdQcml2YXRlOicpfSAgICR7Y2hhbGsudW5kZXJsaW5lKHByaXZhdGVVcmwpfVxcbmA7XG4gIH1cblxuICBpZihwdWJsaWNVcmwpIHtcbiAgICB1cmxMaW5lcyArPSBgJHtjaGFsay5ncmVlbignUHVibGljOicpfSAgICAke2NoYWxrLnVuZGVybGluZShwdWJsaWNVcmwpfVxcbmA7XG4gIH1cblxuICBjb25zdCBzdGF0dXNCb3ggPSBib3hlbihcbiAgICBgJHtjaGFsay5jeWFuLmJvbGQoJ1x1RDgzRFx1REU4MCBEZXZlbG9wbWVudCBTZXJ2ZXIgUnVubmluZycpfVxcblxcbiR7dXJsTGluZXN9XFxuYCArXG4gICAgYCR7Y2hhbGsueWVsbG93KCdQcmVzcyBDdHJsK0MgdG8gc3RvcCB0aGUgc2VydmVyJyl9YCxcbiAgICB7XG4gICAgICBiYWNrZ3JvdW5kQ29sb3I6ICcjMWExYTFhJyxcbiAgICAgIGJvcmRlckNvbG9yOiAnY3lhbicsXG4gICAgICBib3JkZXJTdHlsZTogJ3JvdW5kJyxcbiAgICAgIG1hcmdpbjogMSxcbiAgICAgIHBhZGRpbmc6IDFcbiAgICB9XG4gICk7XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgY29uc29sZS5sb2coYFxcbiR7c3RhdHVzQm94fVxcbmApO1xufTtcblxuZXhwb3J0IGNvbnN0IGRldiA9IGFzeW5jIChjbWQ6IERldk9wdGlvbnMsIGNhbGxiYWNrOiBEZXZDYWxsYmFjayA9ICgpID0+ICh7fSkpOiBQcm9taXNlPG51bWJlcj4gPT4ge1xuICBjb25zdCB7YnVuZGxlQW5hbHl6ZXIsIGNsaU5hbWUgPSAnTGV4JywgY29uZmlnLCBmb3JtYXQgPSAnZXNtJywgb3BlbiA9IGZhbHNlLCBxdWlldCwgcmVtb3ZlLCB0cmFuc2xhdGlvbnMgPSBmYWxzZSwgdXNlUHVibGljSXAsIHZhcmlhYmxlc30gPSBjbWQ7XG5cbiAgY29uc3Qgc3Bpbm5lciA9IGNyZWF0ZVNwaW5uZXIocXVpZXQpO1xuXG4gIGxvZyhgJHtjbGlOYW1lfSBzdGFydCBkZXZlbG9wbWVudCBzZXJ2ZXIuLi5gLCAnaW5mbycsIHF1aWV0KTtcblxuICBhd2FpdCBMZXhDb25maWcucGFyc2VDb25maWcoY21kKTtcblxuICBjb25zdCB7b3V0cHV0RnVsbFBhdGgsIHVzZVR5cGVzY3JpcHR9ID0gTGV4Q29uZmlnLmNvbmZpZztcblxuICBsZXQgdmFyaWFibGVzT2JqOiBvYmplY3QgPSB7Tk9ERV9FTlY6ICdkZXZlbG9wbWVudCd9O1xuXG4gIGlmKHZhcmlhYmxlcykge1xuICAgIHRyeSB7XG4gICAgICB2YXJpYWJsZXNPYmogPSBKU09OLnBhcnNlKHZhcmlhYmxlcyk7XG4gICAgfSBjYXRjaCAoX2Vycm9yKSB7XG4gICAgICBsb2coYFxcbiR7Y2xpTmFtZX0gRXJyb3I6IEVudmlyb25tZW50IHZhcmlhYmxlcyBvcHRpb24gaXMgbm90IGEgdmFsaWQgSlNPTiBvYmplY3QuYCwgJ2Vycm9yJywgcXVpZXQpO1xuICAgICAgY2FsbGJhY2soMSk7XG4gICAgICByZXR1cm4gMTtcbiAgICB9XG4gIH1cblxuICBwcm9jZXNzLmVudiA9IHsuLi5wcm9jZXNzLmVudiwgLi4udmFyaWFibGVzT2JqfTtcblxuICBpZih1c2VUeXBlc2NyaXB0KSB7XG4gICAgTGV4Q29uZmlnLmNoZWNrVHlwZXNjcmlwdENvbmZpZygpO1xuICB9XG5cbiAgaWYocmVtb3ZlKSB7XG4gICAgc3Bpbm5lci5zdGFydCgnQ2xlYW5pbmcgb3V0cHV0IGRpcmVjdG9yeS4uLicpO1xuXG4gICAgYXdhaXQgcmVtb3ZlRmlsZXMob3V0cHV0RnVsbFBhdGggfHwgJycpO1xuXG4gICAgc3Bpbm5lci5zdWNjZWVkKCdTdWNjZXNzZnVsbHkgY2xlYW5lZCBvdXRwdXQgZGlyZWN0b3J5IScpO1xuICB9XG5cbiAgaWYodHJhbnNsYXRpb25zKSB7XG4gICAgc3Bpbm5lci5zdGFydCgnUHJvY2Vzc2luZyB0cmFuc2xhdGlvbnMuLi4nKTtcblxuICAgIHRyeSB7XG4gICAgICBjb25zdCBzb3VyY2VQYXRoID0gTGV4Q29uZmlnLmNvbmZpZy5zb3VyY2VGdWxsUGF0aCB8fCBwcm9jZXNzLmN3ZCgpO1xuICAgICAgY29uc3Qgb3V0cHV0UGF0aCA9IExleENvbmZpZy5jb25maWcub3V0cHV0RnVsbFBhdGggfHwgJ2xpYic7XG5cbiAgICAgIGF3YWl0IHByb2Nlc3NUcmFuc2xhdGlvbnMoc291cmNlUGF0aCwgb3V0cHV0UGF0aCwgcXVpZXQpO1xuICAgICAgc3Bpbm5lci5zdWNjZWVkKCdUcmFuc2xhdGlvbnMgcHJvY2Vzc2VkIHN1Y2Nlc3NmdWxseSEnKTtcbiAgICB9IGNhdGNoICh0cmFuc2xhdGlvbkVycm9yKSB7XG4gICAgICBsb2coYFxcbiR7Y2xpTmFtZX0gRXJyb3I6IEZhaWxlZCB0byBwcm9jZXNzIHRyYW5zbGF0aW9uczogJHt0cmFuc2xhdGlvbkVycm9yLm1lc3NhZ2V9YCwgJ2Vycm9yJywgcXVpZXQpO1xuICAgICAgc3Bpbm5lci5mYWlsKCdGYWlsZWQgdG8gcHJvY2VzcyB0cmFuc2xhdGlvbnMuJyk7XG4gICAgICBjYWxsYmFjaygxKTtcbiAgICAgIHJldHVybiAxO1xuICAgIH1cbiAgfVxuXG4gIGxldCB3ZWJwYWNrQ29uZmlnOiBzdHJpbmc7XG5cbiAgaWYoY29uZmlnKSB7XG4gICAgY29uc3QgaXNSZWxhdGl2ZUNvbmZpZzogYm9vbGVhbiA9IGNvbmZpZy5zdWJzdHIoMCwgMikgPT09ICcuLyc7XG4gICAgd2VicGFja0NvbmZpZyA9IGlzUmVsYXRpdmVDb25maWcgPyBwYXRoUmVzb2x2ZShwcm9jZXNzLmN3ZCgpLCBjb25maWcpIDogY29uZmlnO1xuICB9IGVsc2Uge1xuICAgIGNvbnN0IHt3ZWJwYWNrQ29uZmlnOiByZXNvbHZlZENvbmZpZ30gPSByZXNvbHZlV2VicGFja1BhdGhzKGN1cnJlbnREaXJuYW1lKTtcbiAgICB3ZWJwYWNrQ29uZmlnID0gcmVzb2x2ZWRDb25maWc7XG4gIH1cblxuICBjb25zdCB7d2VicGFja1BhdGh9ID0gcmVzb2x2ZVdlYnBhY2tQYXRocyhjdXJyZW50RGlybmFtZSk7XG5cbiAgY29uc3Qgd2VicGFja09wdGlvbnM6IHN0cmluZ1tdID0gW1xuICAgICctLWNvbG9yJyxcbiAgICAnLS13YXRjaCcsXG4gICAgJy0tY29uZmlnJywgd2VicGFja0NvbmZpZ1xuICBdO1xuXG4gIGlmKGJ1bmRsZUFuYWx5emVyKSB7XG4gICAgd2VicGFja09wdGlvbnMucHVzaCgnLS1idW5kbGVBbmFseXplcicpO1xuICB9XG5cbiAgdHJ5IHtcbiAgICBjb25zdCBmaW5hbFdlYnBhY2tPcHRpb25zID0gd2VicGFja1BhdGggPT09ICducHgnID8gWyd3ZWJwYWNrJywgLi4ud2VicGFja09wdGlvbnNdIDogd2VicGFja09wdGlvbnM7XG5cbiAgICBzcGlubmVyLnN0YXJ0KCdTdGFydGluZyBkZXZlbG9wbWVudCBzZXJ2ZXIuLi4nKTtcblxuICAgIGNvbnN0IGNoaWxkUHJvY2VzcyA9IGV4ZWNhKHdlYnBhY2tQYXRoLCBmaW5hbFdlYnBhY2tPcHRpb25zLCB7XG4gICAgICBlbmNvZGluZzogJ3V0ZjgnLFxuICAgICAgZW52OiB7XG4gICAgICAgIExFWF9RVUlFVDogcXVpZXQsXG4gICAgICAgIFdFQlBBQ0tfREVWX09QRU46IG9wZW5cbiAgICAgIH0sXG4gICAgICBzdGRpbzogJ3BpcGUnXG4gICAgfSBhcyBhbnkpO1xuXG4gICAgbGV0IHNlcnZlclN0YXJ0ZWQgPSBmYWxzZTtcbiAgICBsZXQgc3RhdHVzU2hvd24gPSBmYWxzZTtcbiAgICBjb25zdCBzaG93U3RhdHVzT25jZSA9IChwb3J0VG9TaG93OiBudW1iZXIpID0+IHtcbiAgICAgIGlmKHN0YXR1c1Nob3duKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHN0YXR1c1Nob3duID0gdHJ1ZTtcbiAgICAgIGlmKHVzZVB1YmxpY0lwKSB7XG4gICAgICAgIGZldGNoUHVibGljSXAodXNlUHVibGljSXApLnRoZW4oKHB1YmxpY0lwKSA9PiB7XG4gICAgICAgICAgZGlzcGxheVNlcnZlclN0YXR1cyhwb3J0VG9TaG93LCBxdWlldCwgcHVibGljSXApO1xuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGRpc3BsYXlTZXJ2ZXJTdGF0dXMocG9ydFRvU2hvdywgcXVpZXQpO1xuICAgICAgfVxuICAgIH07XG4gICAgbGV0IGRldGVjdGVkUG9ydCA9IDcwMDE7XG5cbiAgICBjaGlsZFByb2Nlc3Muc3Rkb3V0Py5vbignZGF0YScsIChkYXRhOiBCdWZmZXIpID0+IHtcbiAgICAgIGNvbnN0IG91dHB1dCA9IGRhdGEudG9TdHJpbmcoKTtcblxuICAgICAgaGFuZGxlV2VicGFja1Byb2dyZXNzKG91dHB1dCwgc3Bpbm5lciwgcXVpZXQsICdcdUQ4M0RcdURFODAnLCAnV2VicGFjayBCdWlsZGluZycpO1xuXG4gICAgICBpZighc2VydmVyU3RhcnRlZCAmJiAob3V0cHV0LmluY2x1ZGVzKCdMb2NhbDonKSB8fCBvdXRwdXQuaW5jbHVkZXMoJ3dlYnBhY2sgY29tcGlsZWQnKSB8fCBvdXRwdXQuaW5jbHVkZXMoJ3dlYnBhY2stcGx1Z2luLXNlcnZlJykgfHwgb3V0cHV0LmluY2x1ZGVzKCdodHRwOi8vbG9jYWxob3N0JykgfHwgb3V0cHV0LmluY2x1ZGVzKCdsaXN0ZW5pbmcgb24gcG9ydCcpKSkge1xuICAgICAgICBzZXJ2ZXJTdGFydGVkID0gdHJ1ZTtcbiAgICAgICAgc3Bpbm5lci5zdWNjZWVkKCdEZXZlbG9wbWVudCBzZXJ2ZXIgc3RhcnRlZC4nKTtcblxuICAgICAgICBjb25zdCBwb3J0TWF0Y2ggPSBvdXRwdXQubWF0Y2goL0xvY2FsOlxccypodHRwOlxcL1xcL1teOl0rOihcXGQrKS8pIHx8XG4gICAgICAgICAgb3V0cHV0Lm1hdGNoKC9odHRwOlxcL1xcL2xvY2FsaG9zdDooXFxkKykvKSB8fFxuICAgICAgICAgIG91dHB1dC5tYXRjaCgvcG9ydDpcXHMqKFxcZCspLykgfHxcbiAgICAgICAgICBvdXRwdXQubWF0Y2goL2xpc3RlbmluZyBvbiBwb3J0IChcXGQrKS8pIHx8XG4gICAgICAgICAgb3V0cHV0Lm1hdGNoKC9XZWJwYWNrUGx1Z2luU2VydmUgbGlzdGVuaW5nIG9uIHBvcnQgKFxcZCspLyk7XG4gICAgICAgIGlmKHBvcnRNYXRjaCkge1xuICAgICAgICAgIGRldGVjdGVkUG9ydCA9IHBhcnNlSW50KHBvcnRNYXRjaFsxXSk7XG4gICAgICAgIH1cblxuICAgICAgICBzaG93U3RhdHVzT25jZShkZXRlY3RlZFBvcnQpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgY2hpbGRQcm9jZXNzLnN0ZGVycj8ub24oJ2RhdGEnLCAoZGF0YTogQnVmZmVyKSA9PiB7XG4gICAgICBjb25zdCBvdXRwdXQgPSBkYXRhLnRvU3RyaW5nKCk7XG5cbiAgICAgIGhhbmRsZVdlYnBhY2tQcm9ncmVzcyhvdXRwdXQsIHNwaW5uZXIsIHF1aWV0LCAnXHVEODNEXHVERTgwJywgJ1dlYnBhY2sgQnVpbGRpbmcnKTtcblxuICAgICAgaWYoIXNlcnZlclN0YXJ0ZWQgJiYgKG91dHB1dC5pbmNsdWRlcygnTG9jYWw6JykgfHwgb3V0cHV0LmluY2x1ZGVzKCd3ZWJwYWNrIGNvbXBpbGVkJykgfHwgb3V0cHV0LmluY2x1ZGVzKCd3ZWJwYWNrLXBsdWdpbi1zZXJ2ZScpIHx8IG91dHB1dC5pbmNsdWRlcygnaHR0cDovL2xvY2FsaG9zdCcpIHx8IG91dHB1dC5pbmNsdWRlcygnbGlzdGVuaW5nIG9uIHBvcnQnKSkpIHtcbiAgICAgICAgc2VydmVyU3RhcnRlZCA9IHRydWU7XG4gICAgICAgIHNwaW5uZXIuc3VjY2VlZCgnRGV2ZWxvcG1lbnQgc2VydmVyIHN0YXJ0ZWQuJyk7XG5cbiAgICAgICAgY29uc3QgcG9ydE1hdGNoID0gb3V0cHV0Lm1hdGNoKC9Mb2NhbDpcXHMqaHR0cDpcXC9cXC9bXjpdKzooXFxkKykvKSB8fFxuICAgICAgICAgIG91dHB1dC5tYXRjaCgvaHR0cDpcXC9cXC9sb2NhbGhvc3Q6KFxcZCspLykgfHxcbiAgICAgICAgICBvdXRwdXQubWF0Y2goL3BvcnQ6XFxzKihcXGQrKS8pIHx8XG4gICAgICAgICAgb3V0cHV0Lm1hdGNoKC9saXN0ZW5pbmcgb24gcG9ydCAoXFxkKykvKSB8fFxuICAgICAgICAgIG91dHB1dC5tYXRjaCgvV2VicGFja1BsdWdpblNlcnZlIGxpc3RlbmluZyBvbiBwb3J0IChcXGQrKS8pO1xuICAgICAgICBpZihwb3J0TWF0Y2gpIHtcbiAgICAgICAgICBkZXRlY3RlZFBvcnQgPSBwYXJzZUludChwb3J0TWF0Y2hbMV0pO1xuICAgICAgICB9XG5cbiAgICAgICAgc2hvd1N0YXR1c09uY2UoZGV0ZWN0ZWRQb3J0KTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgaWYoIXNlcnZlclN0YXJ0ZWQpIHtcbiAgICAgICAgc3Bpbm5lci5zdWNjZWVkKCdEZXZlbG9wbWVudCBzZXJ2ZXIgc3RhcnRlZC4nKTtcbiAgICAgICAgc2hvd1N0YXR1c09uY2UoZGV0ZWN0ZWRQb3J0KTtcbiAgICAgIH1cbiAgICB9LCA1MDAwKTtcblxuICAgIGF3YWl0IGNoaWxkUHJvY2VzcztcblxuICAgIGlmKCFzZXJ2ZXJTdGFydGVkKSB7XG4gICAgICBzcGlubmVyLnN1Y2NlZWQoJ0RldmVsb3BtZW50IHNlcnZlciBzdGFydGVkLicpO1xuICAgICAgc2hvd1N0YXR1c09uY2UoZGV0ZWN0ZWRQb3J0KTtcbiAgICB9XG5cbiAgICBjYWxsYmFjaygwKTtcbiAgICByZXR1cm4gMDtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBsb2coYFxcbiR7Y2xpTmFtZX0gRXJyb3I6ICR7ZXJyb3IubWVzc2FnZX1gLCAnZXJyb3InLCBxdWlldCk7XG5cbiAgICBzcGlubmVyLmZhaWwoJ1RoZXJlIHdhcyBhbiBlcnJvciB3aGlsZSBydW5uaW5nIFdlYnBhY2suJyk7XG5cbiAgICBjYWxsYmFjaygxKTtcbiAgICByZXR1cm4gMTtcbiAg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
|
|
@@ -46,5 +46,5 @@ export interface TestOptions {
|
|
|
46
46
|
}
|
|
47
47
|
export type TestCallback = typeof process.exit;
|
|
48
48
|
export declare const getTestFilePatterns: (testPathPattern?: string) => string[];
|
|
49
|
-
export declare const test: (options: TestOptions, args
|
|
49
|
+
export declare const test: (options: TestOptions, args?: string[], filesOrCallback?: string[] | TestCallback, callbackParam?: TestCallback) => Promise<number>;
|
|
50
50
|
export default test;
|
|
@@ -4,7 +4,7 @@ import { sync as globSync } from "glob";
|
|
|
4
4
|
import { resolve as pathResolve } from "path";
|
|
5
5
|
import { LexConfig, getTypeScriptConfigPath } from "../../LexConfig.js";
|
|
6
6
|
import { createSpinner } from "../../utils/app.js";
|
|
7
|
-
import {
|
|
7
|
+
import { resolveBinaryPath } from "../../utils/file.js";
|
|
8
8
|
import { log } from "../../utils/log.js";
|
|
9
9
|
import { aiFunction } from "../ai/ai.js";
|
|
10
10
|
const detectESM = (cwd) => {
|
|
@@ -20,6 +20,12 @@ const detectESM = (cwd) => {
|
|
|
20
20
|
}
|
|
21
21
|
return false;
|
|
22
22
|
};
|
|
23
|
+
const defaultExit = (code) => {
|
|
24
|
+
if (process.env.JEST_WORKER_ID || process.env.NODE_ENV === "test") {
|
|
25
|
+
return void 0;
|
|
26
|
+
}
|
|
27
|
+
process.exit(code);
|
|
28
|
+
};
|
|
23
29
|
const getTestFilePatterns = (testPathPattern) => {
|
|
24
30
|
const defaultPatterns = ["**/*.test.*", "**/*.spec.*", "**/*.integration.*"];
|
|
25
31
|
if (!testPathPattern) {
|
|
@@ -52,7 +58,15 @@ const processTestResults = (outputFile) => {
|
|
|
52
58
|
return null;
|
|
53
59
|
}
|
|
54
60
|
};
|
|
55
|
-
const test = async (options, args,
|
|
61
|
+
const test = async (options, args, filesOrCallback, callbackParam) => {
|
|
62
|
+
let files;
|
|
63
|
+
let callback = defaultExit;
|
|
64
|
+
if (typeof filesOrCallback === "function") {
|
|
65
|
+
callback = filesOrCallback;
|
|
66
|
+
} else {
|
|
67
|
+
files = filesOrCallback;
|
|
68
|
+
callback = callbackParam || defaultExit;
|
|
69
|
+
}
|
|
56
70
|
const {
|
|
57
71
|
analyze = false,
|
|
58
72
|
aiAnalyze = false,
|
|
@@ -142,7 +156,6 @@ Please create comprehensive tests that cover the main functionality. Include tes
|
|
|
142
156
|
}
|
|
143
157
|
}
|
|
144
158
|
}
|
|
145
|
-
const dirName = getDirName();
|
|
146
159
|
const projectJestBin = pathResolve(process.cwd(), "node_modules/.bin/jest");
|
|
147
160
|
let jestPath;
|
|
148
161
|
if (existsSync(projectJestBin)) {
|
|
@@ -337,6 +350,9 @@ ${cliName} Error: Jest binary not found in Lex's node_modules or monorepo root`,
|
|
|
337
350
|
if (args) {
|
|
338
351
|
jestOptions.push(...args);
|
|
339
352
|
}
|
|
353
|
+
if (files && files.length > 0) {
|
|
354
|
+
jestOptions.push(...files);
|
|
355
|
+
}
|
|
340
356
|
if (debug) {
|
|
341
357
|
log(`Jest options: ${jestOptions.join(" ")}`, "info", quiet);
|
|
342
358
|
log(`NODE_OPTIONS: ${nodeOptions}`, "info", quiet);
|
|
@@ -348,8 +364,8 @@ ${cliName} Error: Jest binary not found in Lex's node_modules or monorepo root`,
|
|
|
348
364
|
};
|
|
349
365
|
await execa(jestPath, jestOptions, {
|
|
350
366
|
encoding: "utf8",
|
|
351
|
-
|
|
352
|
-
|
|
367
|
+
env: env2,
|
|
368
|
+
stdio: "inherit"
|
|
353
369
|
});
|
|
354
370
|
spinner.succeed("Testing completed!");
|
|
355
371
|
if (useAnalyze) {
|
|
@@ -358,6 +374,7 @@ ${cliName} Error: Jest binary not found in Lex's node_modules or monorepo root`,
|
|
|
358
374
|
const testResults = processTestResults(tempOutputFile);
|
|
359
375
|
const filePatterns = getTestFilePatterns(testPathPattern);
|
|
360
376
|
await aiFunction({
|
|
377
|
+
context: true,
|
|
361
378
|
prompt: `Analyze these Jest test results and suggest test coverage improvements:
|
|
362
379
|
|
|
363
380
|
${JSON.stringify(testResults, null, 2)}
|
|
@@ -369,9 +386,8 @@ Please provide:
|
|
|
369
386
|
2. Suggestions for improving test cases
|
|
370
387
|
3. Recommendations for additional integration test scenarios
|
|
371
388
|
4. Best practices for increasing test effectiveness`,
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
quiet
|
|
389
|
+
quiet,
|
|
390
|
+
task: "optimize"
|
|
375
391
|
});
|
|
376
392
|
spinner.succeed("AI test analysis complete");
|
|
377
393
|
} catch (aiError) {
|
|
@@ -425,4 +441,4 @@ export {
|
|
|
425
441
|
getTestFilePatterns,
|
|
426
442
|
test
|
|
427
443
|
};
|
|
428
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2NvbW1hbmRzL3Rlc3QvdGVzdC50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTgtUHJlc2VudCwgTml0cm9nZW4gTGFicywgSW5jLlxuICogQ29weXJpZ2h0cyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSB0aGUgYWNjb21wYW55aW5nIExJQ0VOU0UgZmlsZSBmb3IgdGVybXMuXG4gKi9cbmltcG9ydCB7ZXhlY2F9IGZyb20gJ2V4ZWNhJztcbmltcG9ydCB7ZXhpc3RzU3luYywgcmVhZEZpbGVTeW5jfSBmcm9tICdmcyc7XG5pbXBvcnQge3N5bmMgYXMgZ2xvYlN5bmN9IGZyb20gJ2dsb2InO1xuaW1wb3J0IHtyZXNvbHZlIGFzIHBhdGhSZXNvbHZlfSBmcm9tICdwYXRoJztcblxuaW1wb3J0IHtMZXhDb25maWcsIGdldFR5cGVTY3JpcHRDb25maWdQYXRofSBmcm9tICcuLi8uLi9MZXhDb25maWcuanMnO1xuaW1wb3J0IHtjcmVhdGVTcGlubmVyfSBmcm9tICcuLi8uLi91dGlscy9hcHAuanMnO1xuaW1wb3J0IHtnZXREaXJOYW1lLCByZXNvbHZlQmluYXJ5UGF0aH0gZnJvbSAnLi4vLi4vdXRpbHMvZmlsZS5qcyc7XG5pbXBvcnQge2xvZ30gZnJvbSAnLi4vLi4vdXRpbHMvbG9nLmpzJztcbmltcG9ydCB7YWlGdW5jdGlvbn0gZnJvbSAnLi4vYWkvYWkuanMnO1xuXG5jb25zdCBkZXRlY3RFU00gPSAoY3dkOiBzdHJpbmcpOiBib29sZWFuID0+IHtcbiAgY29uc3QgcGFja2FnZUpzb25QYXRoID0gcGF0aFJlc29sdmUoY3dkLCAncGFja2FnZS5qc29uJyk7XG5cbiAgaWYoZXhpc3RzU3luYyhwYWNrYWdlSnNvblBhdGgpKSB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHBhY2thZ2VKc29uQ29udGVudCA9IHJlYWRGaWxlU3luYyhwYWNrYWdlSnNvblBhdGgsICd1dGY4Jyk7XG4gICAgICBjb25zdCBwYWNrYWdlSnNvbiA9IEpTT04ucGFyc2UocGFja2FnZUpzb25Db250ZW50KTtcbiAgICAgIHJldHVybiBwYWNrYWdlSnNvbi50eXBlID09PSAnbW9kdWxlJztcbiAgICB9IGNhdGNoIChfZXJyb3IpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gZmFsc2U7XG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIFRlc3RPcHRpb25zIHtcbiAgcmVhZG9ubHkgYW5hbHl6ZT86IGJvb2xlYW47XG4gIHJlYWRvbmx5IGFpRGVidWc/OiBib29sZWFuO1xuICByZWFkb25seSBhaUdlbmVyYXRlPzogYm9vbGVhbjtcbiAgcmVhZG9ubHkgYWlBbmFseXplPzogYm9vbGVhbjtcbiAgcmVhZG9ubHkgYmFpbD86IGJvb2xlYW47XG4gIHJlYWRvbmx5IGNoYW5nZWRGaWxlc1dpdGhBbmNlc3Rvcj86IGJvb2xlYW47XG4gIHJlYWRvbmx5IGNoYW5nZWRTaW5jZT86IHN0cmluZztcbiAgcmVhZG9ubHkgY2k/OiBib29sZWFuO1xuICByZWFkb25seSBjbGlOYW1lPzogc3RyaW5nO1xuICByZWFkb25seSBjb2xsZWN0Q292ZXJhZ2VGcm9tPzogc3RyaW5nO1xuICByZWFkb25seSBjb2xvcnM/OiBib29sZWFuO1xuICByZWFkb25seSBjb25maWc/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IGRlYnVnPzogYm9vbGVhbjtcbiAgcmVhZG9ubHkgZGVidWdUZXN0cz86IGJvb2xlYW47XG4gIHJlYWRvbmx5IGRldGVjdE9wZW5IYW5kbGVzPzogYm9vbGVhbjtcbiAgcmVhZG9ubHkgZW52Pzogc3RyaW5nO1xuICByZWFkb25seSBlcnJvck9uRGVwcmVjYXRlZD86IGJvb2xlYW47XG4gIHJlYWRvbmx5IGV4cGFuZD86IGJvb2xlYW47XG4gIHJlYWRvbmx5IGZvcmNlRXhpdD86IGJvb2xlYW47XG4gIHJlYWRvbmx5IGdlbmVyYXRlPzogYm9vbGVhbjtcbiAgcmVhZG9ubHkganNvbj86IGJvb2xlYW47XG4gIHJlYWRvbmx5IGxhc3RDb21taXQ/OiBib29sZWFuO1xuICByZWFkb25seSBsaXN0VGVzdHM/OiBib29sZWFuO1xuICByZWFkb25seSBsb2dIZWFwVXNhZ2U/OiBib29sZWFuO1xuICByZWFkb25seSBtYXhXb3JrZXJzPzogc3RyaW5nO1xuICByZWFkb25seSBub1N0YWNrVHJhY2U/OiBib29sZWFuO1xuICByZWFkb25seSBub3RpZnk/OiBib29sZWFuO1xuICByZWFkb25seSBvbmx5Q2hhbmdlZD86IGJvb2xlYW47XG4gIHJlYWRvbmx5IG91dHB1dEZpbGU/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHBhc3NXaXRoTm9UZXN0cz86IGJvb2xlYW47XG4gIHJlYWRvbmx5IHF1aWV0PzogYm9vbGVhbjtcbiAgcmVhZG9ubHkgcmVtb3ZlQ2FjaGU/OiBib29sZWFuO1xuICByZWFkb25seSBydW5JbkJhbmQ/OiBib29sZWFuO1xuICByZWFkb25seSBzZXR1cD86IHN0cmluZztcbiAgcmVhZG9ubHkgc2hvd0NvbmZpZz86IGJvb2xlYW47XG4gIHJlYWRvbmx5IHNpbGVudD86IGJvb2xlYW47XG4gIHJlYWRvbmx5IHRlc3RMb2NhdGlvbkluUmVzdWx0cz86IGJvb2xlYW47XG4gIHJlYWRvbmx5IHRlc3ROYW1lUGF0dGVybj86IHN0cmluZztcbiAgcmVhZG9ubHkgdGVzdFBhdGhQYXR0ZXJuPzogc3RyaW5nO1xuICByZWFkb25seSB1cGRhdGU/OiBib29sZWFuO1xuICByZWFkb25seSB1c2VTdGRlcnI/OiBib29sZWFuO1xuICByZWFkb25seSB2ZXJib3NlPzogYm9vbGVhbjtcbiAgcmVhZG9ubHkgd2F0Y2g/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHdhdGNoQWxsPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IHR5cGUgVGVzdENhbGxiYWNrID0gdHlwZW9mIHByb2Nlc3MuZXhpdDtcblxuZXhwb3J0IGNvbnN0IGdldFRlc3RGaWxlUGF0dGVybnMgPSAodGVzdFBhdGhQYXR0ZXJuPzogc3RyaW5nKTogc3RyaW5nW10gPT4ge1xuICBjb25zdCBkZWZhdWx0UGF0dGVybnMgPSBbJyoqLyoudGVzdC4qJywgJyoqLyouc3BlYy4qJywgJyoqLyouaW50ZWdyYXRpb24uKiddO1xuXG4gIGlmKCF0ZXN0UGF0aFBhdHRlcm4pIHtcbiAgICByZXR1cm4gZGVmYXVsdFBhdHRlcm5zO1xuICB9XG5cbiAgcmV0dXJuIFt0ZXN0UGF0aFBhdHRlcm5dO1xufTtcblxuY29uc3QgZmluZFVuY292ZXJlZFNvdXJjZUZpbGVzID0gKCk6IHN0cmluZ1tdID0+IHtcbiAgY29uc3Qgc291cmNlRmlsZXMgPSBnbG9iU3luYygnc3JjLyoqLyoue3RzLHRzeCxqcyxqc3h9Jywge1xuICAgIGN3ZDogcHJvY2Vzcy5jd2QoKSxcbiAgICBpZ25vcmU6IFsnKiovbm9kZV9tb2R1bGVzLyoqJywgJyoqL2Rpc3QvKionLCAnKiovbGliLyoqJywgJyoqLyoudGVzdC4qJywgJyoqLyouc3BlYy4qJ11cbiAgfSk7XG5cbiAgY29uc3QgdGVzdEZpbGVzID0gZ2xvYlN5bmMoJyoqLyoue3Rlc3Qsc3BlY30ue3RzLHRzeCxqcyxqc3h9Jywge1xuICAgIGN3ZDogcHJvY2Vzcy5jd2QoKSxcbiAgICBpZ25vcmU6IFsnKiovbm9kZV9tb2R1bGVzLyoqJywgJyoqL2Rpc3QvKionLCAnKiovbGliLyoqJ11cbiAgfSk7XG5cbiAgcmV0dXJuIHNvdXJjZUZpbGVzLmZpbHRlcigoc291cmNlRmlsZSkgPT4ge1xuICAgIGNvbnN0IGJhc2VOYW1lID0gc291cmNlRmlsZS5yZXBsYWNlKC9cXC5bXi8uXSskLywgJycpO1xuICAgIHJldHVybiAhdGVzdEZpbGVzLnNvbWUoKHRlc3RGaWxlKSA9PiB0ZXN0RmlsZS5pbmNsdWRlcyhiYXNlTmFtZSkpO1xuICB9KTtcbn07XG5cbmNvbnN0IHByb2Nlc3NUZXN0UmVzdWx0cyA9IChvdXRwdXRGaWxlPzogc3RyaW5nKTogYW55ID0+IHtcbiAgaWYoIW91dHB1dEZpbGUpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHRyeSB7XG4gICAgY29uc3QgY29udGVudCA9IHJlYWRGaWxlU3luYyhvdXRwdXRGaWxlLCAndXRmLTgnKTtcbiAgICByZXR1cm4gSlNPTi5wYXJzZShjb250ZW50KTtcbiAgfSBjYXRjaCAoX2Vycm9yKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCB0ZXN0ID0gYXN5bmMgKFxuICBvcHRpb25zOiBUZXN0T3B0aW9ucyxcbiAgYXJnczogc3RyaW5nW10sXG4gIGNhbGxiYWNrOiBUZXN0Q2FsbGJhY2sgPSBwcm9jZXNzLmV4aXRcbik6IFByb21pc2U8bnVtYmVyPiA9PiB7XG4gIGNvbnN0IHtcbiAgICBhbmFseXplID0gZmFsc2UsXG4gICAgYWlBbmFseXplID0gZmFsc2UsXG4gICAgYWlEZWJ1ZyA9IGZhbHNlLFxuICAgIGFpR2VuZXJhdGUgPSBmYWxzZSxcbiAgICBiYWlsLFxuICAgIGNoYW5nZWRGaWxlc1dpdGhBbmNlc3RvcixcbiAgICBjaGFuZ2VkU2luY2UsXG4gICAgY2ksXG4gICAgY2xpTmFtZSA9ICdMZXgnLFxuICAgIGNvbGxlY3RDb3ZlcmFnZUZyb20sXG4gICAgY29sb3JzLFxuICAgIGNvbmZpZyxcbiAgICBkZWJ1ZyA9IGZhbHNlLFxuICAgIGRlYnVnVGVzdHMgPSBmYWxzZSxcbiAgICBkZXRlY3RPcGVuSGFuZGxlcyxcbiAgICBlbnYsXG4gICAgZXJyb3JPbkRlcHJlY2F0ZWQsXG4gICAgZXhwYW5kLFxuICAgIGZvcmNlRXhpdCxcbiAgICBnZW5lcmF0ZSA9IGZhbHNlLFxuICAgIGpzb24sXG4gICAgbGFzdENvbW1pdCxcbiAgICBsaXN0VGVzdHMsXG4gICAgbG9nSGVhcFVzYWdlLFxuICAgIG1heFdvcmtlcnMsXG4gICAgbm9TdGFja1RyYWNlLFxuICAgIG5vdGlmeSxcbiAgICBvbmx5Q2hhbmdlZCxcbiAgICBvdXRwdXRGaWxlLFxuICAgIHBhc3NXaXRoTm9UZXN0cyxcbiAgICBxdWlldCxcbiAgICByZW1vdmVDYWNoZSxcbiAgICBydW5JbkJhbmQsXG4gICAgc2V0dXAsXG4gICAgc2hvd0NvbmZpZyxcbiAgICBzaWxlbnQsXG4gICAgdGVzdExvY2F0aW9uSW5SZXN1bHRzLFxuICAgIHRlc3ROYW1lUGF0dGVybixcbiAgICB0ZXN0UGF0aFBhdHRlcm4sXG4gICAgdXBkYXRlLFxuICAgIHVzZVN0ZGVycixcbiAgICB2ZXJib3NlLFxuICAgIHdhdGNoLFxuICAgIHdhdGNoQWxsXG4gIH0gPSBvcHRpb25zO1xuXG4gIGNvbnN0IHVzZUdlbmVyYXRlID0gZ2VuZXJhdGUgfHwgYWlHZW5lcmF0ZTtcbiAgY29uc3QgdXNlQW5hbHl6ZSA9IGFuYWx5emUgfHwgYWlBbmFseXplO1xuICBjb25zdCB1c2VEZWJ1ZyA9IGRlYnVnVGVzdHMgfHwgYWlEZWJ1ZztcblxuICBsb2coYCR7Y2xpTmFtZX0gdGVzdGluZy4uLmAsICdpbmZvJywgcXVpZXQpO1xuXG4gIGNvbnN0IHNwaW5uZXIgPSBjcmVhdGVTcGlubmVyKHF1aWV0KTtcblxuICBhd2FpdCBMZXhDb25maWcucGFyc2VDb25maWcob3B0aW9ucyk7XG5cbiAgY29uc3Qge3VzZVR5cGVzY3JpcHR9ID0gTGV4Q29uZmlnLmNvbmZpZztcblxuICBpZih1c2VUeXBlc2NyaXB0KSB7XG4gICAgY29uc3QgdGVzdENvbmZpZ1BhdGggPSBnZXRUeXBlU2NyaXB0Q29uZmlnUGF0aCgndHNjb25maWcudGVzdC5qc29uJyk7XG4gICAgaWYoZXhpc3RzU3luYyh0ZXN0Q29uZmlnUGF0aCkpIHtcbiAgICAgIGxvZygnVXNpbmcgdHNjb25maWcudGVzdC5qc29uIGZvciB0ZXN0aW5nLi4uJywgJ2luZm8nLCBxdWlldCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIExleENvbmZpZy5jaGVja1Rlc3RUeXBlc2NyaXB0Q29uZmlnKCk7XG4gICAgfVxuICB9XG5cbiAgaWYodXNlR2VuZXJhdGUpIHtcbiAgICBzcGlubmVyLnN0YXJ0KCdBSSBpcyBhbmFseXppbmcgY29kZSB0byBnZW5lcmF0ZSB0ZXN0IGNhc2VzLi4uJyk7XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgdW5jb3ZlcmVkRmlsZXMgPSBmaW5kVW5jb3ZlcmVkU291cmNlRmlsZXMoKTtcblxuICAgICAgaWYodW5jb3ZlcmVkRmlsZXMubGVuZ3RoID4gMCkge1xuICAgICAgICBjb25zdCB0YXJnZXRGaWxlID0gdW5jb3ZlcmVkRmlsZXNbMF07XG5cbiAgICAgICAgYXdhaXQgYWlGdW5jdGlvbih7XG4gICAgICAgICAgY29udGV4dDogdHJ1ZSxcbiAgICAgICAgICBmaWxlOiB0YXJnZXRGaWxlLFxuICAgICAgICAgIHByb21wdDogYEdlbmVyYXRlIEplc3QgdW5pdCB0ZXN0cyBmb3IgdGhpcyBmaWxlOiAke3RhcmdldEZpbGV9XFxuXFxuJHtyZWFkRmlsZVN5bmModGFyZ2V0RmlsZSwgJ3V0Zi04Jyl9XFxuXFxuUGxlYXNlIGNyZWF0ZSBjb21wcmVoZW5zaXZlIHRlc3RzIHRoYXQgY292ZXIgdGhlIG1haW4gZnVuY3Rpb25hbGl0eS4gSW5jbHVkZSB0ZXN0IGZpeHR1cmVzIGFuZCBtb2NrcyB3aGVyZSBuZWNlc3NhcnkuYCxcbiAgICAgICAgICBxdWlldCxcbiAgICAgICAgICB0YXNrOiAndGVzdCdcbiAgICAgICAgfSk7XG5cbiAgICAgICAgc3Bpbm5lci5zdWNjZWVkKGBBSSB0ZXN0IGdlbmVyYXRpb24gc3VnZ2VzdGlvbnMgcHJvdmlkZWQgZm9yICR7dGFyZ2V0RmlsZX1gKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNwaW5uZXIuc3VjY2VlZCgnQWxsIHNvdXJjZSBmaWxlcyBhcHBlYXIgdG8gaGF2ZSBjb3JyZXNwb25kaW5nIHRlc3QgZmlsZXMnKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChhaUVycm9yKSB7XG4gICAgICBzcGlubmVyLmZhaWwoJ0NvdWxkIG5vdCBnZW5lcmF0ZSBBSSB0ZXN0IHN1Z2dlc3Rpb25zJyk7XG4gICAgICBpZighcXVpZXQpIHtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgICAgICAgY29uc29sZS5lcnJvcignQUkgdGVzdCBnZW5lcmF0aW9uIGVycm9yOicsIGFpRXJyb3IpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGRpck5hbWUgPSBnZXREaXJOYW1lKCk7XG5cbiAgY29uc3QgcHJvamVjdEplc3RCaW4gPSBwYXRoUmVzb2x2ZShwcm9jZXNzLmN3ZCgpLCAnbm9kZV9tb2R1bGVzLy5iaW4vamVzdCcpO1xuICBsZXQgamVzdFBhdGg6IHN0cmluZztcblxuICBpZihleGlzdHNTeW5jKHByb2plY3RKZXN0QmluKSkge1xuICAgIGplc3RQYXRoID0gcHJvamVjdEplc3RCaW47XG4gIH0gZWxzZSB7XG4gICAgamVzdFBhdGggPSByZXNvbHZlQmluYXJ5UGF0aCgnamVzdCcpO1xuICB9XG5cbiAgaWYoIWplc3RQYXRoKSB7XG4gICAgbG9nKGBcXG4ke2NsaU5hbWV9IEVycm9yOiBKZXN0IGJpbmFyeSBub3QgZm91bmQgaW4gTGV4J3Mgbm9kZV9tb2R1bGVzIG9yIG1vbm9yZXBvIHJvb3RgLCAnZXJyb3InLCBxdWlldCk7XG4gICAgbG9nKCdQbGVhc2UgcmVpbnN0YWxsIExleCBvciBjaGVjayB5b3VyIGluc3RhbGxhdGlvbi4nLCAnaW5mbycsIHF1aWV0KTtcbiAgICByZXR1cm4gMTtcbiAgfVxuXG4gIGxldCBqZXN0Q29uZmlnRmlsZTogc3RyaW5nO1xuICBsZXQgcHJvamVjdEplc3RDb25maWc6IGFueSA9IG51bGw7XG5cbiAgaWYoY29uZmlnKSB7XG4gICAgamVzdENvbmZpZ0ZpbGUgPSBjb25maWc7XG4gIH0gZWxzZSB7XG4gICAgY29uc3QgcHJvamVjdEplc3RDb25maWdQYXRoID0gcGF0aFJlc29sdmUocHJvY2Vzcy5jd2QoKSwgJ2plc3QuY29uZmlnLmpzJyk7XG4gICAgY29uc3QgcHJvamVjdEplc3RDb25maWdDanNQYXRoID0gcGF0aFJlc29sdmUocHJvY2Vzcy5jd2QoKSwgJ2plc3QuY29uZmlnLmNqcycpO1xuICAgIGNvbnN0IHByb2plY3RKZXN0Q29uZmlnTWpzUGF0aCA9IHBhdGhSZXNvbHZlKHByb2Nlc3MuY3dkKCksICdqZXN0LmNvbmZpZy5tanMnKTtcbiAgICBjb25zdCBwcm9qZWN0SmVzdENvbmZpZ0pzb25QYXRoID0gcGF0aFJlc29sdmUocHJvY2Vzcy5jd2QoKSwgJ2plc3QuY29uZmlnLmpzb24nKTtcblxuICAgIGlmKGV4aXN0c1N5bmMocHJvamVjdEplc3RDb25maWdQYXRoKSkge1xuICAgICAgamVzdENvbmZpZ0ZpbGUgPSBwcm9qZWN0SmVzdENvbmZpZ1BhdGg7XG4gICAgICBpZihkZWJ1Zykge1xuICAgICAgICBsb2coYFVzaW5nIHByb2plY3QgSmVzdCBjb25maWcgZmlsZTogJHtqZXN0Q29uZmlnRmlsZX1gLCAnaW5mbycsIHF1aWV0KTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYoZXhpc3RzU3luYyhwcm9qZWN0SmVzdENvbmZpZ0Nqc1BhdGgpKSB7XG4gICAgICBqZXN0Q29uZmlnRmlsZSA9IHByb2plY3RKZXN0Q29uZmlnQ2pzUGF0aDtcbiAgICAgIGlmKGRlYnVnKSB7XG4gICAgICAgIGxvZyhgVXNpbmcgcHJvamVjdCBKZXN0IGNvbmZpZyBmaWxlIChDSlMpOiAke2plc3RDb25maWdGaWxlfWAsICdpbmZvJywgcXVpZXQpO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZihleGlzdHNTeW5jKHByb2plY3RKZXN0Q29uZmlnTWpzUGF0aCkpIHtcbiAgICAgIGplc3RDb25maWdGaWxlID0gcHJvamVjdEplc3RDb25maWdNanNQYXRoO1xuICAgICAgaWYoZGVidWcpIHtcbiAgICAgICAgbG9nKGBVc2luZyBwcm9qZWN0IEplc3QgY29uZmlnIGZpbGUgKE1KUyk6ICR7amVzdENvbmZpZ0ZpbGV9YCwgJ2luZm8nLCBxdWlldCk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmKGV4aXN0c1N5bmMocHJvamVjdEplc3RDb25maWdKc29uUGF0aCkpIHtcbiAgICAgIGplc3RDb25maWdGaWxlID0gcHJvamVjdEplc3RDb25maWdKc29uUGF0aDtcbiAgICAgIGlmKGRlYnVnKSB7XG4gICAgICAgIGxvZyhgVXNpbmcgcHJvamVjdCBKZXN0IGNvbmZpZyBmaWxlIChKU09OKTogJHtqZXN0Q29uZmlnRmlsZX1gLCAnaW5mbycsIHF1aWV0KTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgLy8gTm8gSmVzdCBjb25maWcgZmlsZSBleGlzdHMgaW4gdGhlIHByb2plY3RcbiAgICAgIC8vIENoZWNrIGlmIHRoZXJlJ3MgYSBKZXN0IGNvbmZpZyBpbiBsZXguY29uZmlnLmNqc1xuICAgICAgcHJvamVjdEplc3RDb25maWcgPSBMZXhDb25maWcuY29uZmlnLmplc3Q7XG5cbiAgICAgIGNvbnN0IGxleERpciA9IExleENvbmZpZy5nZXRMZXhEaXIoKTtcbiAgICAgIGNvbnN0IGxleEplc3RDb25maWcgPSBwYXRoUmVzb2x2ZShsZXhEaXIsICdqZXN0LmNvbmZpZy5tanMnKTtcblxuICAgICAgaWYoZGVidWcpIHtcbiAgICAgICAgbG9nKGBMb29raW5nIGZvciBKZXN0IGNvbmZpZyBhdDogJHtsZXhKZXN0Q29uZmlnfWAsICdpbmZvJywgcXVpZXQpO1xuICAgICAgICBsb2coYEZpbGUgZXhpc3RzOiAke2V4aXN0c1N5bmMobGV4SmVzdENvbmZpZyl9YCwgJ2luZm8nLCBxdWlldCk7XG4gICAgICB9XG5cbiAgICAgIGlmKGV4aXN0c1N5bmMobGV4SmVzdENvbmZpZykpIHtcbiAgICAgICAgamVzdENvbmZpZ0ZpbGUgPSBsZXhKZXN0Q29uZmlnO1xuICAgICAgICBpZihwcm9qZWN0SmVzdENvbmZpZyAmJiBPYmplY3Qua2V5cyhwcm9qZWN0SmVzdENvbmZpZykubGVuZ3RoID4gMCkge1xuICAgICAgICAgIGlmKGRlYnVnKSB7XG4gICAgICAgICAgICBsb2coYFVzaW5nIExleCBKZXN0IGNvbmZpZyB3aXRoIHByb2plY3QgSmVzdCBjb25maWcgZnJvbSBsZXguY29uZmlnLmNqczogJHtqZXN0Q29uZmlnRmlsZX1gLCAnaW5mbycsIHF1aWV0KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaWYoZGVidWcpIHtcbiAgICAgICAgICAgIGxvZyhgVXNpbmcgTGV4IEplc3QgY29uZmlnIChubyBwcm9qZWN0IEplc3QgY29uZmlnIGZvdW5kKTogJHtqZXN0Q29uZmlnRmlsZX1gLCAnaW5mbycsIHF1aWV0KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmKGRlYnVnKSB7XG4gICAgICAgICAgbG9nKCdObyBKZXN0IGNvbmZpZyBmb3VuZCBpbiBwcm9qZWN0IG9yIExleCcsICd3YXJuJywgcXVpZXQpO1xuICAgICAgICB9XG4gICAgICAgIGplc3RDb25maWdGaWxlID0gJyc7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgY29uc3QgamVzdFNldHVwRmlsZTogc3RyaW5nID0gc2V0dXAgfHwgcGF0aFJlc29sdmUocHJvY2Vzcy5jd2QoKSwgJ2plc3Quc2V0dXAuanMnKTtcbiAgY29uc3QgamVzdE9wdGlvbnM6IHN0cmluZ1tdID0gWyctLW5vLWNhY2hlJ107XG5cbiAgY29uc3QgaXNFU00gPSBkZXRlY3RFU00ocHJvY2Vzcy5jd2QoKSk7XG4gIGxldCBub2RlT3B0aW9ucyA9IHByb2Nlc3MuZW52Lk5PREVfT1BUSU9OUyB8fCAnJztcbiAgaWYoaXNFU00pIHtcbiAgICBpZighbm9kZU9wdGlvbnMuaW5jbHVkZXMoJy0tZXhwZXJpbWVudGFsLXZtLW1vZHVsZXMnKSkge1xuICAgICAgbm9kZU9wdGlvbnMgPSBgJHtub2RlT3B0aW9uc30gLS1leHBlcmltZW50YWwtdm0tbW9kdWxlc2AudHJpbSgpO1xuICAgIH1cbiAgICBsb2coJ0VTTSBwcm9qZWN0IGRldGVjdGVkLCB1c2luZyAtLWV4cGVyaW1lbnRhbC12bS1tb2R1bGVzIGluIE5PREVfT1BUSU9OUycsICdpbmZvJywgcXVpZXQpO1xuICB9XG5cbiAgaWYoamVzdENvbmZpZ0ZpbGUpIHtcbiAgICBqZXN0T3B0aW9ucy5wdXNoKCctLWNvbmZpZycsIGplc3RDb25maWdGaWxlKTtcbiAgfVxuXG4gIGlmKGJhaWwpIHtcbiAgICBqZXN0T3B0aW9ucy5wdXNoKCctLWJhaWwnKTtcbiAgfVxuXG4gIGlmKGNoYW5nZWRGaWxlc1dpdGhBbmNlc3Rvcikge1xuICAgIGplc3RPcHRpb25zLnB1c2goJy0tY2hhbmdlZEZpbGVzV2l0aEFuY2VzdG9yJyk7XG4gIH1cblxuICBpZihjaGFuZ2VkU2luY2UpIHtcbiAgICBqZXN0T3B0aW9ucy5wdXNoKCctLWNoYW5nZWRTaW5jZScpO1xuICB9XG5cbiAgaWYoY2kpIHtcbiAgICBqZXN0T3B0aW9ucy5wdXNoKCctLWNpJyk7XG4gIH1cblxuICBpZihjb2xsZWN0Q292ZXJhZ2VGcm9tKSB7XG4gICAgamVzdE9wdGlvbnMucHVzaCgnLS1jb2xsZWN0Q292ZXJhZ2VGcm9tJywgY29sbGVjdENvdmVyYWdlRnJvbSk7XG4gIH1cblxuICBpZihjb2xvcnMpIHtcbiAgICBqZXN0T3B0aW9ucy5wdXNoKCctLWNvbG9ycycpO1xuICB9XG5cbiAgaWYoZGVidWcpIHtcbiAgICBqZXN0T3B0aW9ucy5wdXNoKCctLWRlYnVnJyk7XG4gIH1cblxuICBpZihkZXRlY3RPcGVuSGFuZGxlcykge1xuICAgIGplc3RPcHRpb25zLnB1c2goJy0tZGV0ZWN0T3BlbkhhbmRsZXMnKTtcbiAgfVxuXG4gIGlmKGVudikge1xuICAgIGplc3RPcHRpb25zLnB1c2goJy0tZW52Jyk7XG4gIH1cblxuICBpZihlcnJvck9uRGVwcmVjYXRlZCkge1xuICAgIGplc3RPcHRpb25zLnB1c2goJy0tZXJyb3JPbkRlcHJlY2F0ZWQnKTtcbiAgfVxuXG4gIGlmKGV4cGFuZCkge1xuICAgIGplc3RPcHRpb25zLnB1c2goJy0tZXhwYW5kJyk7XG4gIH1cblxuICBpZihmb3JjZUV4aXQpIHtcbiAgICBqZXN0T3B0aW9ucy5wdXNoKCctLWZvcmNlRXhpdCcpO1xuICB9XG5cbiAgaWYoanNvbikge1xuICAgIGplc3RPcHRpb25zLnB1c2goJy0tanNvbicpO1xuICB9XG5cbiAgaWYobGFzdENvbW1pdCkge1xuICAgIGplc3RPcHRpb25zLnB1c2goJy0tbGFzdENvbW1pdCcpO1xuICB9XG5cbiAgaWYobGlzdFRlc3RzKSB7XG4gICAgamVzdE9wdGlvbnMucHVzaCgnLS1saXN0VGVzdHMnKTtcbiAgfVxuXG4gIGlmKGxvZ0hlYXBVc2FnZSkge1xuICAgIGplc3RPcHRpb25zLnB1c2goJy0tbG9nSGVhcFVzYWdlJyk7XG4gIH1cblxuICBpZihtYXhXb3JrZXJzKSB7XG4gICAgamVzdE9wdGlvbnMucHVzaCgnLS1tYXhXb3JrZXJzJywgbWF4V29ya2Vycyk7XG4gIH1cblxuICBpZihub1N0YWNrVHJhY2UpIHtcbiAgICBqZXN0T3B0aW9ucy5wdXNoKCctLW5vU3RhY2tUcmFjZScpO1xuICB9XG5cbiAgaWYobm90aWZ5KSB7XG4gICAgamVzdE9wdGlvbnMucHVzaCgnLS1ub3RpZnknKTtcbiAgfVxuXG4gIGlmKG9ubHlDaGFuZ2VkKSB7XG4gICAgamVzdE9wdGlvbnMucHVzaCgnLS1vbmx5Q2hhbmdlZCcpO1xuICB9XG5cbiAgbGV0IHRlbXBPdXRwdXRGaWxlID0gb3V0cHV0RmlsZTtcblxuICBpZigodXNlQW5hbHl6ZSB8fCB1c2VEZWJ1ZykgJiYgIW91dHB1dEZpbGUpIHtcbiAgICB0ZW1wT3V0cHV0RmlsZSA9ICcubGV4LXRlc3QtcmVzdWx0cy5qc29uJztcbiAgICBqZXN0T3B0aW9ucy5wdXNoKCctLWpzb24nLCAnLS1vdXRwdXRGaWxlJywgdGVtcE91dHB1dEZpbGUpO1xuICB9IGVsc2UgaWYob3V0cHV0RmlsZSkge1xuICAgIGplc3RPcHRpb25zLnB1c2goJy0tb3V0cHV0RmlsZScsIG91dHB1dEZpbGUpO1xuICB9XG5cbiAgaWYocGFzc1dpdGhOb1Rlc3RzKSB7XG4gICAgamVzdE9wdGlvbnMucHVzaCgnLS1wYXNzV2l0aE5vVGVzdHMnKTtcbiAgfVxuXG4gIGlmKHJ1bkluQmFuZCkge1xuICAgIGplc3RPcHRpb25zLnB1c2goJy0tcnVuSW5CYW5kJyk7XG4gIH1cblxuICBpZihzaG93Q29uZmlnKSB7XG4gICAgamVzdE9wdGlvbnMucHVzaCgnLS1zaG93Q29uZmlnJyk7XG4gIH1cblxuICBpZihzaWxlbnQpIHtcbiAgICBqZXN0T3B0aW9ucy5wdXNoKCctLXNpbGVudCcpO1xuICB9XG5cbiAgaWYodGVzdExvY2F0aW9uSW5SZXN1bHRzKSB7XG4gICAgamVzdE9wdGlvbnMucHVzaCgnLS10ZXN0TG9jYXRpb25JblJlc3VsdHMnKTtcbiAgfVxuXG4gIGlmKHRlc3ROYW1lUGF0dGVybikge1xuICAgIGplc3RPcHRpb25zLnB1c2goJy0tdGVzdE5hbWVQYXR0ZXJuJywgdGVzdE5hbWVQYXR0ZXJuKTtcbiAgfVxuXG4gIGlmKHRlc3RQYXRoUGF0dGVybikge1xuICAgIGplc3RPcHRpb25zLnB1c2goJy0tdGVzdFBhdGhQYXR0ZXJuJywgdGVzdFBhdGhQYXR0ZXJuKTtcbiAgfVxuXG4gIGlmKHVzZVN0ZGVycikge1xuICAgIGplc3RPcHRpb25zLnB1c2goJy0tdXNlU3RkZXJyJyk7XG4gIH1cblxuICBpZih2ZXJib3NlKSB7XG4gICAgamVzdE9wdGlvbnMucHVzaCgnLS12ZXJib3NlJyk7XG4gIH1cblxuICBpZih3YXRjaEFsbCkge1xuICAgIGplc3RPcHRpb25zLnB1c2goJy0td2F0Y2hBbGwnKTtcbiAgfVxuXG4gIGlmKHJlbW92ZUNhY2hlKSB7XG4gICAgamVzdE9wdGlvbnMucHVzaCgnLS1uby1jYWNoZScpO1xuICB9XG5cbiAgaWYoamVzdFNldHVwRmlsZSAmJiBleGlzdHNTeW5jKGplc3RTZXR1cEZpbGUpKSB7XG4gICAgamVzdE9wdGlvbnMucHVzaChgLS1zZXR1cEZpbGVzQWZ0ZXJFbnY9JHtqZXN0U2V0dXBGaWxlfWApO1xuICB9XG5cbiAgaWYodXBkYXRlKSB7XG4gICAgamVzdE9wdGlvbnMucHVzaCgnLS11cGRhdGVTbmFwc2hvdCcpO1xuICB9XG5cbiAgaWYod2F0Y2gpIHtcbiAgICBqZXN0T3B0aW9ucy5wdXNoKCctLXdhdGNoJywgd2F0Y2gpO1xuICB9XG5cbiAgaWYoYXJncykge1xuICAgIGplc3RPcHRpb25zLnB1c2goLi4uYXJncyk7XG4gIH1cblxuICBpZihkZWJ1Zykge1xuICAgIGxvZyhgSmVzdCBvcHRpb25zOiAke2plc3RPcHRpb25zLmpvaW4oJyAnKX1gLCAnaW5mbycsIHF1aWV0KTtcbiAgICBsb2coYE5PREVfT1BUSU9OUzogJHtub2RlT3B0aW9uc31gLCAnaW5mbycsIHF1aWV0KTtcbiAgfVxuXG4gIHRyeSB7XG4gICAgY29uc3QgZW52OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAgICAgLi4ucHJvY2Vzcy5lbnYsXG4gICAgICBOT0RFX09QVElPTlM6IG5vZGVPcHRpb25zXG4gICAgfTtcblxuICAgIGF3YWl0IGV4ZWNhKGplc3RQYXRoLCBqZXN0T3B0aW9ucywge1xuICAgICAgZW5jb2Rpbmc6ICd1dGY4JyxcbiAgICAgIHN0ZGlvOiAnaW5oZXJpdCcsXG4gICAgICBlbnZcbiAgICB9KTtcblxuICAgIHNwaW5uZXIuc3VjY2VlZCgnVGVzdGluZyBjb21wbGV0ZWQhJyk7XG5cbiAgICBpZih1c2VBbmFseXplKSB7XG4gICAgICBzcGlubmVyLnN0YXJ0KCdBSSBpcyBhbmFseXppbmcgdGVzdCBjb3ZlcmFnZSBhbmQgc3VnZ2VzdGluZyBpbXByb3ZlbWVudHMuLi4nKTtcblxuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgdGVzdFJlc3VsdHMgPSBwcm9jZXNzVGVzdFJlc3VsdHModGVtcE91dHB1dEZpbGUpO1xuICAgICAgICBjb25zdCBmaWxlUGF0dGVybnMgPSBnZXRUZXN0RmlsZVBhdHRlcm5zKHRlc3RQYXRoUGF0dGVybik7XG5cbiAgICAgICAgYXdhaXQgYWlGdW5jdGlvbih7XG4gICAgICAgICAgcHJvbXB0OiBgQW5hbHl6ZSB0aGVzZSBKZXN0IHRlc3QgcmVzdWx0cyBhbmQgc3VnZ2VzdCB0ZXN0IGNvdmVyYWdlIGltcHJvdmVtZW50czpcblxuJHtKU09OLnN0cmluZ2lmeSh0ZXN0UmVzdWx0cywgbnVsbCwgMil9XG5cblRlc3QgcGF0dGVybnM6ICR7ZmlsZVBhdHRlcm5zLmpvaW4oJywgJyl9XG5cblBsZWFzZSBwcm92aWRlOlxuMS4gQW5hbHlzaXMgb2YgY3VycmVudCBjb3ZlcmFnZSBnYXBzXG4yLiBTdWdnZXN0aW9ucyBmb3IgaW1wcm92aW5nIHRlc3QgY2FzZXNcbjMuIFJlY29tbWVuZGF0aW9ucyBmb3IgYWRkaXRpb25hbCBpbnRlZ3JhdGlvbiB0ZXN0IHNjZW5hcmlvc1xuNC4gQmVzdCBwcmFjdGljZXMgZm9yIGluY3JlYXNpbmcgdGVzdCBlZmZlY3RpdmVuZXNzYCxcbiAgICAgICAgICB0YXNrOiAnb3B0aW1pemUnLFxuICAgICAgICAgIGNvbnRleHQ6IHRydWUsXG4gICAgICAgICAgcXVpZXRcbiAgICAgICAgfSk7XG5cbiAgICAgICAgc3Bpbm5lci5zdWNjZWVkKCdBSSB0ZXN0IGFuYWx5c2lzIGNvbXBsZXRlJyk7XG4gICAgICB9IGNhdGNoIChhaUVycm9yKSB7XG4gICAgICAgIHNwaW5uZXIuZmFpbCgnQ291bGQgbm90IGdlbmVyYXRlIEFJIHRlc3QgYW5hbHlzaXMnKTtcbiAgICAgICAgaWYoIXF1aWV0KSB7XG4gICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgICAgICAgICBjb25zb2xlLmVycm9yKCdBSSBhbmFseXNpcyBlcnJvcjonLCBhaUVycm9yKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGNhbGxiYWNrKDApO1xuICAgIHJldHVybiAwO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGxvZyhgXFxuJHtjbGlOYW1lfSBFcnJvcjogQ2hlY2sgZm9yIHVuaXQgdGVzdCBlcnJvcnMgYW5kL29yIGNvdmVyYWdlLmAsICdlcnJvcicsIHF1aWV0KTtcblxuICAgIHNwaW5uZXIuZmFpbCgnVGVzdGluZyBmYWlsZWQhJyk7XG5cbiAgICBpZih1c2VEZWJ1Zykge1xuICAgICAgc3Bpbm5lci5zdGFydCgnQUkgaXMgYW5hbHl6aW5nIHRlc3QgZmFpbHVyZXMuLi4nKTtcblxuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgdGVzdFJlc3VsdHMgPSBwcm9jZXNzVGVzdFJlc3VsdHModGVtcE91dHB1dEZpbGUpO1xuXG4gICAgICAgIGF3YWl0IGFpRnVuY3Rpb24oe1xuICAgICAgICAgIGNvbnRleHQ6IHRydWUsXG4gICAgICAgICAgcHJvbXB0OiBgRGVidWcgdGhlc2UgZmFpbGVkIEplc3QgdGVzdHMgYW5kIHN1Z2dlc3QgZml4ZXM6XG5cbiR7SlNPTi5zdHJpbmdpZnkoZXJyb3IubWVzc2FnZSwgbnVsbCwgMil9XG5cblRlc3QgcmVzdWx0czogJHtKU09OLnN0cmluZ2lmeSh0ZXN0UmVzdWx0cywgbnVsbCwgMil9XG5cblBsZWFzZSBwcm92aWRlOlxuMS4gQW5hbHlzaXMgb2Ygd2h5IHRoZSB0ZXN0cyBhcmUgZmFpbGluZ1xuMi4gU3BlY2lmaWMgc3VnZ2VzdGlvbnMgdG8gZml4IGVhY2ggZmFpbGluZyB0ZXN0XG4zLiBBbnkgcG90ZW50aWFsIGlzc3VlcyB3aXRoIHRlc3QgZml4dHVyZXMgb3IgbW9ja3NcbjQuIENvZGUgZXhhbXBsZXMgZm9yIHNvbHV0aW9uc2AsXG4gICAgICAgICAgcXVpZXQsXG4gICAgICAgICAgdGFzazogJ2hlbHAnXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHNwaW5uZXIuc3VjY2VlZCgnQUkgZGVidWdnaW5nIGFzc2lzdGFuY2UgY29tcGxldGUnKTtcbiAgICAgIH0gY2F0Y2ggKGFpRXJyb3IpIHtcbiAgICAgICAgc3Bpbm5lci5mYWlsKCdDb3VsZCBub3QgZ2VuZXJhdGUgQUkgZGVidWdnaW5nIGFzc2lzdGFuY2UnKTtcbiAgICAgICAgaWYoIXF1aWV0KSB7XG4gICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgICAgICAgICBjb25zb2xlLmVycm9yKCdBSSBkZWJ1Z2dpbmcgZXJyb3I6JywgYWlFcnJvcik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBjYWxsYmFjaygxKTtcbiAgICByZXR1cm4gMTtcbiAgfVxufTtcblxuZXhwb3J0IGRlZmF1bHQgdGVzdDsiXSwKICAibWFwcGluZ3MiOiAiQUFJQSxTQUFRLGFBQVk7QUFDcEIsU0FBUSxZQUFZLG9CQUFtQjtBQUN2QyxTQUFRLFFBQVEsZ0JBQWU7QUFDL0IsU0FBUSxXQUFXLG1CQUFrQjtBQUVyQyxTQUFRLFdBQVcsK0JBQThCO0FBQ2pELFNBQVEscUJBQW9CO0FBQzVCLFNBQVEsWUFBWSx5QkFBd0I7QUFDNUMsU0FBUSxXQUFVO0FBQ2xCLFNBQVEsa0JBQWlCO0FBRXpCLE1BQU0sWUFBWSxDQUFDLFFBQXlCO0FBQzFDLFFBQU0sa0JBQWtCLFlBQVksS0FBSyxjQUFjO0FBRXZELE1BQUcsV0FBVyxlQUFlLEdBQUc7QUFDOUIsUUFBSTtBQUNGLFlBQU0scUJBQXFCLGFBQWEsaUJBQWlCLE1BQU07QUFDL0QsWUFBTSxjQUFjLEtBQUssTUFBTSxrQkFBa0I7QUFDakQsYUFBTyxZQUFZLFNBQVM7QUFBQSxJQUM5QixTQUFTLFFBQVE7QUFDZixhQUFPO0FBQUEsSUFDVDtBQUFBLEVBQ0Y7QUFFQSxTQUFPO0FBQ1Q7QUFtRE8sTUFBTSxzQkFBc0IsQ0FBQyxvQkFBdUM7QUFDekUsUUFBTSxrQkFBa0IsQ0FBQyxlQUFlLGVBQWUsb0JBQW9CO0FBRTNFLE1BQUcsQ0FBQyxpQkFBaUI7QUFDbkIsV0FBTztBQUFBLEVBQ1Q7QUFFQSxTQUFPLENBQUMsZUFBZTtBQUN6QjtBQUVBLE1BQU0sMkJBQTJCLE1BQWdCO0FBQy9DLFFBQU0sY0FBYyxTQUFTLDRCQUE0QjtBQUFBLElBQ3ZELEtBQUssUUFBUSxJQUFJO0FBQUEsSUFDakIsUUFBUSxDQUFDLHNCQUFzQixjQUFjLGFBQWEsZUFBZSxhQUFhO0FBQUEsRUFDeEYsQ0FBQztBQUVELFFBQU0sWUFBWSxTQUFTLG9DQUFvQztBQUFBLElBQzdELEtBQUssUUFBUSxJQUFJO0FBQUEsSUFDakIsUUFBUSxDQUFDLHNCQUFzQixjQUFjLFdBQVc7QUFBQSxFQUMxRCxDQUFDO0FBRUQsU0FBTyxZQUFZLE9BQU8sQ0FBQyxlQUFlO0FBQ3hDLFVBQU0sV0FBVyxXQUFXLFFBQVEsYUFBYSxFQUFFO0FBQ25ELFdBQU8sQ0FBQyxVQUFVLEtBQUssQ0FBQyxhQUFhLFNBQVMsU0FBUyxRQUFRLENBQUM7QUFBQSxFQUNsRSxDQUFDO0FBQ0g7QUFFQSxNQUFNLHFCQUFxQixDQUFDLGVBQTZCO0FBQ3ZELE1BQUcsQ0FBQyxZQUFZO0FBQ2QsV0FBTztBQUFBLEVBQ1Q7QUFFQSxNQUFJO0FBQ0YsVUFBTSxVQUFVLGFBQWEsWUFBWSxPQUFPO0FBQ2hELFdBQU8sS0FBSyxNQUFNLE9BQU87QUFBQSxFQUMzQixTQUFTLFFBQVE7QUFDZixXQUFPO0FBQUEsRUFDVDtBQUNGO0FBRU8sTUFBTSxPQUFPLE9BQ2xCLFNBQ0EsTUFDQSxXQUF5QixRQUFRLFNBQ2I7QUFDcEIsUUFBTTtBQUFBLElBQ0osVUFBVTtBQUFBLElBQ1YsWUFBWTtBQUFBLElBQ1osVUFBVTtBQUFBLElBQ1YsYUFBYTtBQUFBLElBQ2I7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxJQUNBLFVBQVU7QUFBQSxJQUNWO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxJQUNBLFFBQVE7QUFBQSxJQUNSLGFBQWE7QUFBQSxJQUNiO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLElBQ0EsV0FBVztBQUFBLElBQ1g7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLEVBQ0YsSUFBSTtBQUVKLFFBQU0sY0FBYyxZQUFZO0FBQ2hDLFFBQU0sYUFBYSxXQUFXO0FBQzlCLFFBQU0sV0FBVyxjQUFjO0FBRS9CLE1BQUksR0FBRyxPQUFPLGVBQWUsUUFBUSxLQUFLO0FBRTFDLFFBQU0sVUFBVSxjQUFjLEtBQUs7QUFFbkMsUUFBTSxVQUFVLFlBQVksT0FBTztBQUVuQyxRQUFNLEVBQUMsY0FBYSxJQUFJLFVBQVU7QUFFbEMsTUFBRyxlQUFlO0FBQ2hCLFVBQU0saUJBQWlCLHdCQUF3QixvQkFBb0I7QUFDbkUsUUFBRyxXQUFXLGNBQWMsR0FBRztBQUM3QixVQUFJLDJDQUEyQyxRQUFRLEtBQUs7QUFBQSxJQUM5RCxPQUFPO0FBQ0wsZ0JBQVUsMEJBQTBCO0FBQUEsSUFDdEM7QUFBQSxFQUNGO0FBRUEsTUFBRyxhQUFhO0FBQ2QsWUFBUSxNQUFNLGdEQUFnRDtBQUU5RCxRQUFJO0FBQ0YsWUFBTSxpQkFBaUIseUJBQXlCO0FBRWhELFVBQUcsZUFBZSxTQUFTLEdBQUc7QUFDNUIsY0FBTSxhQUFhLGVBQWUsQ0FBQztBQUVuQyxjQUFNLFdBQVc7QUFBQSxVQUNmLFNBQVM7QUFBQSxVQUNULE1BQU07QUFBQSxVQUNOLFFBQVEsMkNBQTJDLFVBQVU7QUFBQTtBQUFBLEVBQU8sYUFBYSxZQUFZLE9BQU8sQ0FBQztBQUFBO0FBQUE7QUFBQSxVQUNyRztBQUFBLFVBQ0EsTUFBTTtBQUFBLFFBQ1IsQ0FBQztBQUVELGdCQUFRLFFBQVEsK0NBQStDLFVBQVUsRUFBRTtBQUFBLE1BQzdFLE9BQU87QUFDTCxnQkFBUSxRQUFRLDBEQUEwRDtBQUFBLE1BQzVFO0FBQUEsSUFDRixTQUFTLFNBQVM7QUFDaEIsY0FBUSxLQUFLLHdDQUF3QztBQUNyRCxVQUFHLENBQUMsT0FBTztBQUVULGdCQUFRLE1BQU0sNkJBQTZCLE9BQU87QUFBQSxNQUNwRDtBQUFBLElBQ0Y7QUFBQSxFQUNGO0FBRUEsUUFBTSxVQUFVLFdBQVc7QUFFM0IsUUFBTSxpQkFBaUIsWUFBWSxRQUFRLElBQUksR0FBRyx3QkFBd0I7QUFDMUUsTUFBSTtBQUVKLE1BQUcsV0FBVyxjQUFjLEdBQUc7QUFDN0IsZUFBVztBQUFBLEVBQ2IsT0FBTztBQUNMLGVBQVcsa0JBQWtCLE1BQU07QUFBQSxFQUNyQztBQUVBLE1BQUcsQ0FBQyxVQUFVO0FBQ1osUUFBSTtBQUFBLEVBQUssT0FBTyx3RUFBd0UsU0FBUyxLQUFLO0FBQ3RHLFFBQUksb0RBQW9ELFFBQVEsS0FBSztBQUNyRSxXQUFPO0FBQUEsRUFDVDtBQUVBLE1BQUk7QUFDSixNQUFJLG9CQUF5QjtBQUU3QixNQUFHLFFBQVE7QUFDVCxxQkFBaUI7QUFBQSxFQUNuQixPQUFPO0FBQ0wsVUFBTSx3QkFBd0IsWUFBWSxRQUFRLElBQUksR0FBRyxnQkFBZ0I7QUFDekUsVUFBTSwyQkFBMkIsWUFBWSxRQUFRLElBQUksR0FBRyxpQkFBaUI7QUFDN0UsVUFBTSwyQkFBMkIsWUFBWSxRQUFRLElBQUksR0FBRyxpQkFBaUI7QUFDN0UsVUFBTSw0QkFBNEIsWUFBWSxRQUFRLElBQUksR0FBRyxrQkFBa0I7QUFFL0UsUUFBRyxXQUFXLHFCQUFxQixHQUFHO0FBQ3BDLHVCQUFpQjtBQUNqQixVQUFHLE9BQU87QUFDUixZQUFJLG1DQUFtQyxjQUFjLElBQUksUUFBUSxLQUFLO0FBQUEsTUFDeEU7QUFBQSxJQUNGLFdBQVUsV0FBVyx3QkFBd0IsR0FBRztBQUM5Qyx1QkFBaUI7QUFDakIsVUFBRyxPQUFPO0FBQ1IsWUFBSSx5Q0FBeUMsY0FBYyxJQUFJLFFBQVEsS0FBSztBQUFBLE1BQzlFO0FBQUEsSUFDRixXQUFVLFdBQVcsd0JBQXdCLEdBQUc7QUFDOUMsdUJBQWlCO0FBQ2pCLFVBQUcsT0FBTztBQUNSLFlBQUkseUNBQXlDLGNBQWMsSUFBSSxRQUFRLEtBQUs7QUFBQSxNQUM5RTtBQUFBLElBQ0YsV0FBVSxXQUFXLHlCQUF5QixHQUFHO0FBQy9DLHVCQUFpQjtBQUNqQixVQUFHLE9BQU87QUFDUixZQUFJLDBDQUEwQyxjQUFjLElBQUksUUFBUSxLQUFLO0FBQUEsTUFDL0U7QUFBQSxJQUNGLE9BQU87QUFHTCwwQkFBb0IsVUFBVSxPQUFPO0FBRXJDLFlBQU0sU0FBUyxVQUFVLFVBQVU7QUFDbkMsWUFBTSxnQkFBZ0IsWUFBWSxRQUFRLGlCQUFpQjtBQUUzRCxVQUFHLE9BQU87QUFDUixZQUFJLCtCQUErQixhQUFhLElBQUksUUFBUSxLQUFLO0FBQ2pFLFlBQUksZ0JBQWdCLFdBQVcsYUFBYSxDQUFDLElBQUksUUFBUSxLQUFLO0FBQUEsTUFDaEU7QUFFQSxVQUFHLFdBQVcsYUFBYSxHQUFHO0FBQzVCLHlCQUFpQjtBQUNqQixZQUFHLHFCQUFxQixPQUFPLEtBQUssaUJBQWlCLEVBQUUsU0FBUyxHQUFHO0FBQ2pFLGNBQUcsT0FBTztBQUNSLGdCQUFJLHVFQUF1RSxjQUFjLElBQUksUUFBUSxLQUFLO0FBQUEsVUFDNUc7QUFBQSxRQUNGLE9BQU87QUFDTCxjQUFHLE9BQU87QUFDUixnQkFBSSx5REFBeUQsY0FBYyxJQUFJLFFBQVEsS0FBSztBQUFBLFVBQzlGO0FBQUEsUUFDRjtBQUFBLE1BQ0YsT0FBTztBQUNMLFlBQUcsT0FBTztBQUNSLGNBQUksMENBQTBDLFFBQVEsS0FBSztBQUFBLFFBQzdEO0FBQ0EseUJBQWlCO0FBQUEsTUFDbkI7QUFBQSxJQUNGO0FBQUEsRUFDRjtBQUVBLFFBQU0sZ0JBQXdCLFNBQVMsWUFBWSxRQUFRLElBQUksR0FBRyxlQUFlO0FBQ2pGLFFBQU0sY0FBd0IsQ0FBQyxZQUFZO0FBRTNDLFFBQU0sUUFBUSxVQUFVLFFBQVEsSUFBSSxDQUFDO0FBQ3JDLE1BQUksY0FBYyxRQUFRLElBQUksZ0JBQWdCO0FBQzlDLE1BQUcsT0FBTztBQUNSLFFBQUcsQ0FBQyxZQUFZLFNBQVMsMkJBQTJCLEdBQUc7QUFDckQsb0JBQWMsR0FBRyxXQUFXLDZCQUE2QixLQUFLO0FBQUEsSUFDaEU7QUFDQSxRQUFJLHlFQUF5RSxRQUFRLEtBQUs7QUFBQSxFQUM1RjtBQUVBLE1BQUcsZ0JBQWdCO0FBQ2pCLGdCQUFZLEtBQUssWUFBWSxjQUFjO0FBQUEsRUFDN0M7QUFFQSxNQUFHLE1BQU07QUFDUCxnQkFBWSxLQUFLLFFBQVE7QUFBQSxFQUMzQjtBQUVBLE1BQUcsMEJBQTBCO0FBQzNCLGdCQUFZLEtBQUssNEJBQTRCO0FBQUEsRUFDL0M7QUFFQSxNQUFHLGNBQWM7QUFDZixnQkFBWSxLQUFLLGdCQUFnQjtBQUFBLEVBQ25DO0FBRUEsTUFBRyxJQUFJO0FBQ0wsZ0JBQVksS0FBSyxNQUFNO0FBQUEsRUFDekI7QUFFQSxNQUFHLHFCQUFxQjtBQUN0QixnQkFBWSxLQUFLLHlCQUF5QixtQkFBbUI7QUFBQSxFQUMvRDtBQUVBLE1BQUcsUUFBUTtBQUNULGdCQUFZLEtBQUssVUFBVTtBQUFBLEVBQzdCO0FBRUEsTUFBRyxPQUFPO0FBQ1IsZ0JBQVksS0FBSyxTQUFTO0FBQUEsRUFDNUI7QUFFQSxNQUFHLG1CQUFtQjtBQUNwQixnQkFBWSxLQUFLLHFCQUFxQjtBQUFBLEVBQ3hDO0FBRUEsTUFBRyxLQUFLO0FBQ04sZ0JBQVksS0FBSyxPQUFPO0FBQUEsRUFDMUI7QUFFQSxNQUFHLG1CQUFtQjtBQUNwQixnQkFBWSxLQUFLLHFCQUFxQjtBQUFBLEVBQ3hDO0FBRUEsTUFBRyxRQUFRO0FBQ1QsZ0JBQVksS0FBSyxVQUFVO0FBQUEsRUFDN0I7QUFFQSxNQUFHLFdBQVc7QUFDWixnQkFBWSxLQUFLLGFBQWE7QUFBQSxFQUNoQztBQUVBLE1BQUcsTUFBTTtBQUNQLGdCQUFZLEtBQUssUUFBUTtBQUFBLEVBQzNCO0FBRUEsTUFBRyxZQUFZO0FBQ2IsZ0JBQVksS0FBSyxjQUFjO0FBQUEsRUFDakM7QUFFQSxNQUFHLFdBQVc7QUFDWixnQkFBWSxLQUFLLGFBQWE7QUFBQSxFQUNoQztBQUVBLE1BQUcsY0FBYztBQUNmLGdCQUFZLEtBQUssZ0JBQWdCO0FBQUEsRUFDbkM7QUFFQSxNQUFHLFlBQVk7QUFDYixnQkFBWSxLQUFLLGdCQUFnQixVQUFVO0FBQUEsRUFDN0M7QUFFQSxNQUFHLGNBQWM7QUFDZixnQkFBWSxLQUFLLGdCQUFnQjtBQUFBLEVBQ25DO0FBRUEsTUFBRyxRQUFRO0FBQ1QsZ0JBQVksS0FBSyxVQUFVO0FBQUEsRUFDN0I7QUFFQSxNQUFHLGFBQWE7QUFDZCxnQkFBWSxLQUFLLGVBQWU7QUFBQSxFQUNsQztBQUVBLE1BQUksaUJBQWlCO0FBRXJCLE9BQUksY0FBYyxhQUFhLENBQUMsWUFBWTtBQUMxQyxxQkFBaUI7QUFDakIsZ0JBQVksS0FBSyxVQUFVLGdCQUFnQixjQUFjO0FBQUEsRUFDM0QsV0FBVSxZQUFZO0FBQ3BCLGdCQUFZLEtBQUssZ0JBQWdCLFVBQVU7QUFBQSxFQUM3QztBQUVBLE1BQUcsaUJBQWlCO0FBQ2xCLGdCQUFZLEtBQUssbUJBQW1CO0FBQUEsRUFDdEM7QUFFQSxNQUFHLFdBQVc7QUFDWixnQkFBWSxLQUFLLGFBQWE7QUFBQSxFQUNoQztBQUVBLE1BQUcsWUFBWTtBQUNiLGdCQUFZLEtBQUssY0FBYztBQUFBLEVBQ2pDO0FBRUEsTUFBRyxRQUFRO0FBQ1QsZ0JBQVksS0FBSyxVQUFVO0FBQUEsRUFDN0I7QUFFQSxNQUFHLHVCQUF1QjtBQUN4QixnQkFBWSxLQUFLLHlCQUF5QjtBQUFBLEVBQzVDO0FBRUEsTUFBRyxpQkFBaUI7QUFDbEIsZ0JBQVksS0FBSyxxQkFBcUIsZUFBZTtBQUFBLEVBQ3ZEO0FBRUEsTUFBRyxpQkFBaUI7QUFDbEIsZ0JBQVksS0FBSyxxQkFBcUIsZUFBZTtBQUFBLEVBQ3ZEO0FBRUEsTUFBRyxXQUFXO0FBQ1osZ0JBQVksS0FBSyxhQUFhO0FBQUEsRUFDaEM7QUFFQSxNQUFHLFNBQVM7QUFDVixnQkFBWSxLQUFLLFdBQVc7QUFBQSxFQUM5QjtBQUVBLE1BQUcsVUFBVTtBQUNYLGdCQUFZLEtBQUssWUFBWTtBQUFBLEVBQy9CO0FBRUEsTUFBRyxhQUFhO0FBQ2QsZ0JBQVksS0FBSyxZQUFZO0FBQUEsRUFDL0I7QUFFQSxNQUFHLGlCQUFpQixXQUFXLGFBQWEsR0FBRztBQUM3QyxnQkFBWSxLQUFLLHdCQUF3QixhQUFhLEVBQUU7QUFBQSxFQUMxRDtBQUVBLE1BQUcsUUFBUTtBQUNULGdCQUFZLEtBQUssa0JBQWtCO0FBQUEsRUFDckM7QUFFQSxNQUFHLE9BQU87QUFDUixnQkFBWSxLQUFLLFdBQVcsS0FBSztBQUFBLEVBQ25DO0FBRUEsTUFBRyxNQUFNO0FBQ1AsZ0JBQVksS0FBSyxHQUFHLElBQUk7QUFBQSxFQUMxQjtBQUVBLE1BQUcsT0FBTztBQUNSLFFBQUksaUJBQWlCLFlBQVksS0FBSyxHQUFHLENBQUMsSUFBSSxRQUFRLEtBQUs7QUFDM0QsUUFBSSxpQkFBaUIsV0FBVyxJQUFJLFFBQVEsS0FBSztBQUFBLEVBQ25EO0FBRUEsTUFBSTtBQUNGLFVBQU1BLE9BQThCO0FBQUEsTUFDbEMsR0FBRyxRQUFRO0FBQUEsTUFDWCxjQUFjO0FBQUEsSUFDaEI7QUFFQSxVQUFNLE1BQU0sVUFBVSxhQUFhO0FBQUEsTUFDakMsVUFBVTtBQUFBLE1BQ1YsT0FBTztBQUFBLE1BQ1AsS0FBQUE7QUFBQSxJQUNGLENBQUM7QUFFRCxZQUFRLFFBQVEsb0JBQW9CO0FBRXBDLFFBQUcsWUFBWTtBQUNiLGNBQVEsTUFBTSw4REFBOEQ7QUFFNUUsVUFBSTtBQUNGLGNBQU0sY0FBYyxtQkFBbUIsY0FBYztBQUNyRCxjQUFNLGVBQWUsb0JBQW9CLGVBQWU7QUFFeEQsY0FBTSxXQUFXO0FBQUEsVUFDZixRQUFRO0FBQUE7QUFBQSxFQUVoQixLQUFLLFVBQVUsYUFBYSxNQUFNLENBQUMsQ0FBQztBQUFBO0FBQUEsaUJBRXJCLGFBQWEsS0FBSyxJQUFJLENBQUM7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxVQU85QixNQUFNO0FBQUEsVUFDTixTQUFTO0FBQUEsVUFDVDtBQUFBLFFBQ0YsQ0FBQztBQUVELGdCQUFRLFFBQVEsMkJBQTJCO0FBQUEsTUFDN0MsU0FBUyxTQUFTO0FBQ2hCLGdCQUFRLEtBQUsscUNBQXFDO0FBQ2xELFlBQUcsQ0FBQyxPQUFPO0FBRVQsa0JBQVEsTUFBTSxzQkFBc0IsT0FBTztBQUFBLFFBQzdDO0FBQUEsTUFDRjtBQUFBLElBQ0Y7QUFFQSxhQUFTLENBQUM7QUFDVixXQUFPO0FBQUEsRUFDVCxTQUFTLE9BQU87QUFDZCxRQUFJO0FBQUEsRUFBSyxPQUFPLHVEQUF1RCxTQUFTLEtBQUs7QUFFckYsWUFBUSxLQUFLLGlCQUFpQjtBQUU5QixRQUFHLFVBQVU7QUFDWCxjQUFRLE1BQU0sa0NBQWtDO0FBRWhELFVBQUk7QUFDRixjQUFNLGNBQWMsbUJBQW1CLGNBQWM7QUFFckQsY0FBTSxXQUFXO0FBQUEsVUFDZixTQUFTO0FBQUEsVUFDVCxRQUFRO0FBQUE7QUFBQSxFQUVoQixLQUFLLFVBQVUsTUFBTSxTQUFTLE1BQU0sQ0FBQyxDQUFDO0FBQUE7QUFBQSxnQkFFeEIsS0FBSyxVQUFVLGFBQWEsTUFBTSxDQUFDLENBQUM7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxVQU8xQztBQUFBLFVBQ0EsTUFBTTtBQUFBLFFBQ1IsQ0FBQztBQUVELGdCQUFRLFFBQVEsa0NBQWtDO0FBQUEsTUFDcEQsU0FBUyxTQUFTO0FBQ2hCLGdCQUFRLEtBQUssNENBQTRDO0FBQ3pELFlBQUcsQ0FBQyxPQUFPO0FBRVQsa0JBQVEsTUFBTSx1QkFBdUIsT0FBTztBQUFBLFFBQzlDO0FBQUEsTUFDRjtBQUFBLElBQ0Y7QUFFQSxhQUFTLENBQUM7QUFDVixXQUFPO0FBQUEsRUFDVDtBQUNGO0FBRUEsSUFBTyxlQUFROyIsCiAgIm5hbWVzIjogWyJlbnYiXQp9Cg==
|
|
444
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2NvbW1hbmRzL3Rlc3QvdGVzdC50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTgtUHJlc2VudCwgTml0cm9nZW4gTGFicywgSW5jLlxuICogQ29weXJpZ2h0cyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSB0aGUgYWNjb21wYW55aW5nIExJQ0VOU0UgZmlsZSBmb3IgdGVybXMuXG4gKi9cbmltcG9ydCB7ZXhlY2F9IGZyb20gJ2V4ZWNhJztcbmltcG9ydCB7ZXhpc3RzU3luYywgcmVhZEZpbGVTeW5jfSBmcm9tICdmcyc7XG5pbXBvcnQge3N5bmMgYXMgZ2xvYlN5bmN9IGZyb20gJ2dsb2InO1xuaW1wb3J0IHtyZXNvbHZlIGFzIHBhdGhSZXNvbHZlfSBmcm9tICdwYXRoJztcblxuaW1wb3J0IHtMZXhDb25maWcsIGdldFR5cGVTY3JpcHRDb25maWdQYXRofSBmcm9tICcuLi8uLi9MZXhDb25maWcuanMnO1xuaW1wb3J0IHtjcmVhdGVTcGlubmVyfSBmcm9tICcuLi8uLi91dGlscy9hcHAuanMnO1xuaW1wb3J0IHtyZXNvbHZlQmluYXJ5UGF0aH0gZnJvbSAnLi4vLi4vdXRpbHMvZmlsZS5qcyc7XG5pbXBvcnQge2xvZ30gZnJvbSAnLi4vLi4vdXRpbHMvbG9nLmpzJztcbmltcG9ydCB7YWlGdW5jdGlvbn0gZnJvbSAnLi4vYWkvYWkuanMnO1xuXG5jb25zdCBkZXRlY3RFU00gPSAoY3dkOiBzdHJpbmcpOiBib29sZWFuID0+IHtcbiAgY29uc3QgcGFja2FnZUpzb25QYXRoID0gcGF0aFJlc29sdmUoY3dkLCAncGFja2FnZS5qc29uJyk7XG5cbiAgaWYoZXhpc3RzU3luYyhwYWNrYWdlSnNvblBhdGgpKSB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHBhY2thZ2VKc29uQ29udGVudCA9IHJlYWRGaWxlU3luYyhwYWNrYWdlSnNvblBhdGgsICd1dGY4Jyk7XG4gICAgICBjb25zdCBwYWNrYWdlSnNvbiA9IEpTT04ucGFyc2UocGFja2FnZUpzb25Db250ZW50KTtcbiAgICAgIHJldHVybiBwYWNrYWdlSnNvbi50eXBlID09PSAnbW9kdWxlJztcbiAgICB9IGNhdGNoIChfZXJyb3IpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gZmFsc2U7XG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIFRlc3RPcHRpb25zIHtcbiAgcmVhZG9ubHkgYW5hbHl6ZT86IGJvb2xlYW47XG4gIHJlYWRvbmx5IGFpRGVidWc/OiBib29sZWFuO1xuICByZWFkb25seSBhaUdlbmVyYXRlPzogYm9vbGVhbjtcbiAgcmVhZG9ubHkgYWlBbmFseXplPzogYm9vbGVhbjtcbiAgcmVhZG9ubHkgYmFpbD86IGJvb2xlYW47XG4gIHJlYWRvbmx5IGNoYW5nZWRGaWxlc1dpdGhBbmNlc3Rvcj86IGJvb2xlYW47XG4gIHJlYWRvbmx5IGNoYW5nZWRTaW5jZT86IHN0cmluZztcbiAgcmVhZG9ubHkgY2k/OiBib29sZWFuO1xuICByZWFkb25seSBjbGlOYW1lPzogc3RyaW5nO1xuICByZWFkb25seSBjb2xsZWN0Q292ZXJhZ2VGcm9tPzogc3RyaW5nO1xuICByZWFkb25seSBjb2xvcnM/OiBib29sZWFuO1xuICByZWFkb25seSBjb25maWc/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IGRlYnVnPzogYm9vbGVhbjtcbiAgcmVhZG9ubHkgZGVidWdUZXN0cz86IGJvb2xlYW47XG4gIHJlYWRvbmx5IGRldGVjdE9wZW5IYW5kbGVzPzogYm9vbGVhbjtcbiAgcmVhZG9ubHkgZW52Pzogc3RyaW5nO1xuICByZWFkb25seSBlcnJvck9uRGVwcmVjYXRlZD86IGJvb2xlYW47XG4gIHJlYWRvbmx5IGV4cGFuZD86IGJvb2xlYW47XG4gIHJlYWRvbmx5IGZvcmNlRXhpdD86IGJvb2xlYW47XG4gIHJlYWRvbmx5IGdlbmVyYXRlPzogYm9vbGVhbjtcbiAgcmVhZG9ubHkganNvbj86IGJvb2xlYW47XG4gIHJlYWRvbmx5IGxhc3RDb21taXQ/OiBib29sZWFuO1xuICByZWFkb25seSBsaXN0VGVzdHM/OiBib29sZWFuO1xuICByZWFkb25seSBsb2dIZWFwVXNhZ2U/OiBib29sZWFuO1xuICByZWFkb25seSBtYXhXb3JrZXJzPzogc3RyaW5nO1xuICByZWFkb25seSBub1N0YWNrVHJhY2U/OiBib29sZWFuO1xuICByZWFkb25seSBub3RpZnk/OiBib29sZWFuO1xuICByZWFkb25seSBvbmx5Q2hhbmdlZD86IGJvb2xlYW47XG4gIHJlYWRvbmx5IG91dHB1dEZpbGU/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHBhc3NXaXRoTm9UZXN0cz86IGJvb2xlYW47XG4gIHJlYWRvbmx5IHF1aWV0PzogYm9vbGVhbjtcbiAgcmVhZG9ubHkgcmVtb3ZlQ2FjaGU/OiBib29sZWFuO1xuICByZWFkb25seSBydW5JbkJhbmQ/OiBib29sZWFuO1xuICByZWFkb25seSBzZXR1cD86IHN0cmluZztcbiAgcmVhZG9ubHkgc2hvd0NvbmZpZz86IGJvb2xlYW47XG4gIHJlYWRvbmx5IHNpbGVudD86IGJvb2xlYW47XG4gIHJlYWRvbmx5IHRlc3RMb2NhdGlvbkluUmVzdWx0cz86IGJvb2xlYW47XG4gIHJlYWRvbmx5IHRlc3ROYW1lUGF0dGVybj86IHN0cmluZztcbiAgcmVhZG9ubHkgdGVzdFBhdGhQYXR0ZXJuPzogc3RyaW5nO1xuICByZWFkb25seSB1cGRhdGU/OiBib29sZWFuO1xuICByZWFkb25seSB1c2VTdGRlcnI/OiBib29sZWFuO1xuICByZWFkb25seSB2ZXJib3NlPzogYm9vbGVhbjtcbiAgcmVhZG9ubHkgd2F0Y2g/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHdhdGNoQWxsPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IHR5cGUgVGVzdENhbGxiYWNrID0gdHlwZW9mIHByb2Nlc3MuZXhpdDtcblxuY29uc3QgZGVmYXVsdEV4aXQgPSAoKGNvZGU/OiBudW1iZXIpID0+IHtcbiAgaWYocHJvY2Vzcy5lbnYuSkVTVF9XT1JLRVJfSUQgfHwgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09ICd0ZXN0Jykge1xuICAgIHJldHVybiB1bmRlZmluZWQgYXMgbmV2ZXI7XG4gIH1cblxuICBwcm9jZXNzLmV4aXQoY29kZSk7XG59KSBhcyB0eXBlb2YgcHJvY2Vzcy5leGl0O1xuXG5leHBvcnQgY29uc3QgZ2V0VGVzdEZpbGVQYXR0ZXJucyA9ICh0ZXN0UGF0aFBhdHRlcm4/OiBzdHJpbmcpOiBzdHJpbmdbXSA9PiB7XG4gIGNvbnN0IGRlZmF1bHRQYXR0ZXJucyA9IFsnKiovKi50ZXN0LionLCAnKiovKi5zcGVjLionLCAnKiovKi5pbnRlZ3JhdGlvbi4qJ107XG5cbiAgaWYoIXRlc3RQYXRoUGF0dGVybikge1xuICAgIHJldHVybiBkZWZhdWx0UGF0dGVybnM7XG4gIH1cblxuICByZXR1cm4gW3Rlc3RQYXRoUGF0dGVybl07XG59O1xuXG5jb25zdCBmaW5kVW5jb3ZlcmVkU291cmNlRmlsZXMgPSAoKTogc3RyaW5nW10gPT4ge1xuICBjb25zdCBzb3VyY2VGaWxlcyA9IGdsb2JTeW5jKCdzcmMvKiovKi57dHMsdHN4LGpzLGpzeH0nLCB7XG4gICAgY3dkOiBwcm9jZXNzLmN3ZCgpLFxuICAgIGlnbm9yZTogWycqKi9ub2RlX21vZHVsZXMvKionLCAnKiovZGlzdC8qKicsICcqKi9saWIvKionLCAnKiovKi50ZXN0LionLCAnKiovKi5zcGVjLionXVxuICB9KTtcblxuICBjb25zdCB0ZXN0RmlsZXMgPSBnbG9iU3luYygnKiovKi57dGVzdCxzcGVjfS57dHMsdHN4LGpzLGpzeH0nLCB7XG4gICAgY3dkOiBwcm9jZXNzLmN3ZCgpLFxuICAgIGlnbm9yZTogWycqKi9ub2RlX21vZHVsZXMvKionLCAnKiovZGlzdC8qKicsICcqKi9saWIvKionXVxuICB9KTtcblxuICByZXR1cm4gc291cmNlRmlsZXMuZmlsdGVyKChzb3VyY2VGaWxlKSA9PiB7XG4gICAgY29uc3QgYmFzZU5hbWUgPSBzb3VyY2VGaWxlLnJlcGxhY2UoL1xcLlteLy5dKyQvLCAnJyk7XG4gICAgcmV0dXJuICF0ZXN0RmlsZXMuc29tZSgodGVzdEZpbGUpID0+IHRlc3RGaWxlLmluY2x1ZGVzKGJhc2VOYW1lKSk7XG4gIH0pO1xufTtcblxuY29uc3QgcHJvY2Vzc1Rlc3RSZXN1bHRzID0gKG91dHB1dEZpbGU/OiBzdHJpbmcpOiBhbnkgPT4ge1xuICBpZighb3V0cHV0RmlsZSkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgdHJ5IHtcbiAgICBjb25zdCBjb250ZW50ID0gcmVhZEZpbGVTeW5jKG91dHB1dEZpbGUsICd1dGYtOCcpO1xuICAgIHJldHVybiBKU09OLnBhcnNlKGNvbnRlbnQpO1xuICB9IGNhdGNoIChfZXJyb3IpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IHRlc3QgPSBhc3luYyAoXG4gIG9wdGlvbnM6IFRlc3RPcHRpb25zLFxuICBhcmdzPzogc3RyaW5nW10sXG4gIGZpbGVzT3JDYWxsYmFjaz86IHN0cmluZ1tdIHwgVGVzdENhbGxiYWNrLFxuICBjYWxsYmFja1BhcmFtPzogVGVzdENhbGxiYWNrXG4pOiBQcm9taXNlPG51bWJlcj4gPT4ge1xuICAvLyBCYWNrd2FyZC1jb21wYXQgYXJndW1lbnQgbm9ybWFsaXphdGlvbjogYWxsb3cgY2FsbGJhY2sgYXMgdGhpcmQgcGFyYW1cbiAgbGV0IGZpbGVzOiBzdHJpbmdbXSB8IHVuZGVmaW5lZDtcbiAgbGV0IGNhbGxiYWNrOiBUZXN0Q2FsbGJhY2sgPSBkZWZhdWx0RXhpdDtcblxuICBpZih0eXBlb2YgZmlsZXNPckNhbGxiYWNrID09PSAnZnVuY3Rpb24nKSB7XG4gICAgY2FsbGJhY2sgPSBmaWxlc09yQ2FsbGJhY2sgYXMgVGVzdENhbGxiYWNrO1xuICB9IGVsc2Uge1xuICAgIGZpbGVzID0gZmlsZXNPckNhbGxiYWNrIGFzIHN0cmluZ1tdIHwgdW5kZWZpbmVkO1xuICAgIGNhbGxiYWNrID0gY2FsbGJhY2tQYXJhbSB8fCBkZWZhdWx0RXhpdDtcbiAgfVxuICBjb25zdCB7XG4gICAgYW5hbHl6ZSA9IGZhbHNlLFxuICAgIGFpQW5hbHl6ZSA9IGZhbHNlLFxuICAgIGFpRGVidWcgPSBmYWxzZSxcbiAgICBhaUdlbmVyYXRlID0gZmFsc2UsXG4gICAgYmFpbCxcbiAgICBjaGFuZ2VkRmlsZXNXaXRoQW5jZXN0b3IsXG4gICAgY2hhbmdlZFNpbmNlLFxuICAgIGNpLFxuICAgIGNsaU5hbWUgPSAnTGV4JyxcbiAgICBjb2xsZWN0Q292ZXJhZ2VGcm9tLFxuICAgIGNvbG9ycyxcbiAgICBjb25maWcsXG4gICAgZGVidWcgPSBmYWxzZSxcbiAgICBkZWJ1Z1Rlc3RzID0gZmFsc2UsXG4gICAgZGV0ZWN0T3BlbkhhbmRsZXMsXG4gICAgZW52LFxuICAgIGVycm9yT25EZXByZWNhdGVkLFxuICAgIGV4cGFuZCxcbiAgICBmb3JjZUV4aXQsXG4gICAgZ2VuZXJhdGUgPSBmYWxzZSxcbiAgICBqc29uLFxuICAgIGxhc3RDb21taXQsXG4gICAgbGlzdFRlc3RzLFxuICAgIGxvZ0hlYXBVc2FnZSxcbiAgICBtYXhXb3JrZXJzLFxuICAgIG5vU3RhY2tUcmFjZSxcbiAgICBub3RpZnksXG4gICAgb25seUNoYW5nZWQsXG4gICAgb3V0cHV0RmlsZSxcbiAgICBwYXNzV2l0aE5vVGVzdHMsXG4gICAgcXVpZXQsXG4gICAgcmVtb3ZlQ2FjaGUsXG4gICAgcnVuSW5CYW5kLFxuICAgIHNldHVwLFxuICAgIHNob3dDb25maWcsXG4gICAgc2lsZW50LFxuICAgIHRlc3RMb2NhdGlvbkluUmVzdWx0cyxcbiAgICB0ZXN0TmFtZVBhdHRlcm4sXG4gICAgdGVzdFBhdGhQYXR0ZXJuLFxuICAgIHVwZGF0ZSxcbiAgICB1c2VTdGRlcnIsXG4gICAgdmVyYm9zZSxcbiAgICB3YXRjaCxcbiAgICB3YXRjaEFsbFxuICB9ID0gb3B0aW9ucztcblxuICBjb25zdCB1c2VHZW5lcmF0ZSA9IGdlbmVyYXRlIHx8IGFpR2VuZXJhdGU7XG4gIGNvbnN0IHVzZUFuYWx5emUgPSBhbmFseXplIHx8IGFpQW5hbHl6ZTtcbiAgY29uc3QgdXNlRGVidWcgPSBkZWJ1Z1Rlc3RzIHx8IGFpRGVidWc7XG5cbiAgbG9nKGAke2NsaU5hbWV9IHRlc3RpbmcuLi5gLCAnaW5mbycsIHF1aWV0KTtcblxuICBjb25zdCBzcGlubmVyID0gY3JlYXRlU3Bpbm5lcihxdWlldCk7XG5cbiAgYXdhaXQgTGV4Q29uZmlnLnBhcnNlQ29uZmlnKG9wdGlvbnMpO1xuXG4gIGNvbnN0IHt1c2VUeXBlc2NyaXB0fSA9IExleENvbmZpZy5jb25maWc7XG5cbiAgaWYodXNlVHlwZXNjcmlwdCkge1xuICAgIGNvbnN0IHRlc3RDb25maWdQYXRoID0gZ2V0VHlwZVNjcmlwdENvbmZpZ1BhdGgoJ3RzY29uZmlnLnRlc3QuanNvbicpO1xuICAgIGlmKGV4aXN0c1N5bmModGVzdENvbmZpZ1BhdGgpKSB7XG4gICAgICBsb2coJ1VzaW5nIHRzY29uZmlnLnRlc3QuanNvbiBmb3IgdGVzdGluZy4uLicsICdpbmZvJywgcXVpZXQpO1xuICAgIH0gZWxzZSB7XG4gICAgICBMZXhDb25maWcuY2hlY2tUZXN0VHlwZXNjcmlwdENvbmZpZygpO1xuICAgIH1cbiAgfVxuXG4gIGlmKHVzZUdlbmVyYXRlKSB7XG4gICAgc3Bpbm5lci5zdGFydCgnQUkgaXMgYW5hbHl6aW5nIGNvZGUgdG8gZ2VuZXJhdGUgdGVzdCBjYXNlcy4uLicpO1xuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHVuY292ZXJlZEZpbGVzID0gZmluZFVuY292ZXJlZFNvdXJjZUZpbGVzKCk7XG5cbiAgICAgIGlmKHVuY292ZXJlZEZpbGVzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgY29uc3QgdGFyZ2V0RmlsZSA9IHVuY292ZXJlZEZpbGVzWzBdO1xuXG4gICAgICAgIGF3YWl0IGFpRnVuY3Rpb24oe1xuICAgICAgICAgIGNvbnRleHQ6IHRydWUsXG4gICAgICAgICAgZmlsZTogdGFyZ2V0RmlsZSxcbiAgICAgICAgICBwcm9tcHQ6IGBHZW5lcmF0ZSBKZXN0IHVuaXQgdGVzdHMgZm9yIHRoaXMgZmlsZTogJHt0YXJnZXRGaWxlfVxcblxcbiR7cmVhZEZpbGVTeW5jKHRhcmdldEZpbGUsICd1dGYtOCcpfVxcblxcblBsZWFzZSBjcmVhdGUgY29tcHJlaGVuc2l2ZSB0ZXN0cyB0aGF0IGNvdmVyIHRoZSBtYWluIGZ1bmN0aW9uYWxpdHkuIEluY2x1ZGUgdGVzdCBmaXh0dXJlcyBhbmQgbW9ja3Mgd2hlcmUgbmVjZXNzYXJ5LmAsXG4gICAgICAgICAgcXVpZXQsXG4gICAgICAgICAgdGFzazogJ3Rlc3QnXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHNwaW5uZXIuc3VjY2VlZChgQUkgdGVzdCBnZW5lcmF0aW9uIHN1Z2dlc3Rpb25zIHByb3ZpZGVkIGZvciAke3RhcmdldEZpbGV9YCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzcGlubmVyLnN1Y2NlZWQoJ0FsbCBzb3VyY2UgZmlsZXMgYXBwZWFyIHRvIGhhdmUgY29ycmVzcG9uZGluZyB0ZXN0IGZpbGVzJyk7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoYWlFcnJvcikge1xuICAgICAgc3Bpbm5lci5mYWlsKCdDb3VsZCBub3QgZ2VuZXJhdGUgQUkgdGVzdCBzdWdnZXN0aW9ucycpO1xuICAgICAgaWYoIXF1aWV0KSB7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ0FJIHRlc3QgZ2VuZXJhdGlvbiBlcnJvcjonLCBhaUVycm9yKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjb25zdCBwcm9qZWN0SmVzdEJpbiA9IHBhdGhSZXNvbHZlKHByb2Nlc3MuY3dkKCksICdub2RlX21vZHVsZXMvLmJpbi9qZXN0Jyk7XG4gIGxldCBqZXN0UGF0aDogc3RyaW5nO1xuXG4gIGlmKGV4aXN0c1N5bmMocHJvamVjdEplc3RCaW4pKSB7XG4gICAgamVzdFBhdGggPSBwcm9qZWN0SmVzdEJpbjtcbiAgfSBlbHNlIHtcbiAgICBqZXN0UGF0aCA9IHJlc29sdmVCaW5hcnlQYXRoKCdqZXN0Jyk7XG4gIH1cblxuICBpZighamVzdFBhdGgpIHtcbiAgICBsb2coYFxcbiR7Y2xpTmFtZX0gRXJyb3I6IEplc3QgYmluYXJ5IG5vdCBmb3VuZCBpbiBMZXgncyBub2RlX21vZHVsZXMgb3IgbW9ub3JlcG8gcm9vdGAsICdlcnJvcicsIHF1aWV0KTtcbiAgICBsb2coJ1BsZWFzZSByZWluc3RhbGwgTGV4IG9yIGNoZWNrIHlvdXIgaW5zdGFsbGF0aW9uLicsICdpbmZvJywgcXVpZXQpO1xuICAgIHJldHVybiAxO1xuICB9XG5cbiAgbGV0IGplc3RDb25maWdGaWxlOiBzdHJpbmc7XG4gIGxldCBwcm9qZWN0SmVzdENvbmZpZzogYW55ID0gbnVsbDtcblxuICBpZihjb25maWcpIHtcbiAgICBqZXN0Q29uZmlnRmlsZSA9IGNvbmZpZztcbiAgfSBlbHNlIHtcbiAgICBjb25zdCBwcm9qZWN0SmVzdENvbmZpZ1BhdGggPSBwYXRoUmVzb2x2ZShwcm9jZXNzLmN3ZCgpLCAnamVzdC5jb25maWcuanMnKTtcbiAgICBjb25zdCBwcm9qZWN0SmVzdENvbmZpZ0Nqc1BhdGggPSBwYXRoUmVzb2x2ZShwcm9jZXNzLmN3ZCgpLCAnamVzdC5jb25maWcuY2pzJyk7XG4gICAgY29uc3QgcHJvamVjdEplc3RDb25maWdNanNQYXRoID0gcGF0aFJlc29sdmUocHJvY2Vzcy5jd2QoKSwgJ2plc3QuY29uZmlnLm1qcycpO1xuICAgIGNvbnN0IHByb2plY3RKZXN0Q29uZmlnSnNvblBhdGggPSBwYXRoUmVzb2x2ZShwcm9jZXNzLmN3ZCgpLCAnamVzdC5jb25maWcuanNvbicpO1xuXG4gICAgaWYoZXhpc3RzU3luYyhwcm9qZWN0SmVzdENvbmZpZ1BhdGgpKSB7XG4gICAgICBqZXN0Q29uZmlnRmlsZSA9IHByb2plY3RKZXN0Q29uZmlnUGF0aDtcbiAgICAgIGlmKGRlYnVnKSB7XG4gICAgICAgIGxvZyhgVXNpbmcgcHJvamVjdCBKZXN0IGNvbmZpZyBmaWxlOiAke2plc3RDb25maWdGaWxlfWAsICdpbmZvJywgcXVpZXQpO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZihleGlzdHNTeW5jKHByb2plY3RKZXN0Q29uZmlnQ2pzUGF0aCkpIHtcbiAgICAgIGplc3RDb25maWdGaWxlID0gcHJvamVjdEplc3RDb25maWdDanNQYXRoO1xuICAgICAgaWYoZGVidWcpIHtcbiAgICAgICAgbG9nKGBVc2luZyBwcm9qZWN0IEplc3QgY29uZmlnIGZpbGUgKENKUyk6ICR7amVzdENvbmZpZ0ZpbGV9YCwgJ2luZm8nLCBxdWlldCk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmKGV4aXN0c1N5bmMocHJvamVjdEplc3RDb25maWdNanNQYXRoKSkge1xuICAgICAgamVzdENvbmZpZ0ZpbGUgPSBwcm9qZWN0SmVzdENvbmZpZ01qc1BhdGg7XG4gICAgICBpZihkZWJ1Zykge1xuICAgICAgICBsb2coYFVzaW5nIHByb2plY3QgSmVzdCBjb25maWcgZmlsZSAoTUpTKTogJHtqZXN0Q29uZmlnRmlsZX1gLCAnaW5mbycsIHF1aWV0KTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYoZXhpc3RzU3luYyhwcm9qZWN0SmVzdENvbmZpZ0pzb25QYXRoKSkge1xuICAgICAgamVzdENvbmZpZ0ZpbGUgPSBwcm9qZWN0SmVzdENvbmZpZ0pzb25QYXRoO1xuICAgICAgaWYoZGVidWcpIHtcbiAgICAgICAgbG9nKGBVc2luZyBwcm9qZWN0IEplc3QgY29uZmlnIGZpbGUgKEpTT04pOiAke2plc3RDb25maWdGaWxlfWAsICdpbmZvJywgcXVpZXQpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBObyBKZXN0IGNvbmZpZyBmaWxlIGV4aXN0cyBpbiB0aGUgcHJvamVjdFxuICAgICAgLy8gQ2hlY2sgaWYgdGhlcmUncyBhIEplc3QgY29uZmlnIGluIGxleC5jb25maWcuY2pzXG4gICAgICBwcm9qZWN0SmVzdENvbmZpZyA9IExleENvbmZpZy5jb25maWcuamVzdDtcblxuICAgICAgY29uc3QgbGV4RGlyID0gTGV4Q29uZmlnLmdldExleERpcigpO1xuICAgICAgY29uc3QgbGV4SmVzdENvbmZpZyA9IHBhdGhSZXNvbHZlKGxleERpciwgJ2plc3QuY29uZmlnLm1qcycpO1xuXG4gICAgICBpZihkZWJ1Zykge1xuICAgICAgICBsb2coYExvb2tpbmcgZm9yIEplc3QgY29uZmlnIGF0OiAke2xleEplc3RDb25maWd9YCwgJ2luZm8nLCBxdWlldCk7XG4gICAgICAgIGxvZyhgRmlsZSBleGlzdHM6ICR7ZXhpc3RzU3luYyhsZXhKZXN0Q29uZmlnKX1gLCAnaW5mbycsIHF1aWV0KTtcbiAgICAgIH1cblxuICAgICAgaWYoZXhpc3RzU3luYyhsZXhKZXN0Q29uZmlnKSkge1xuICAgICAgICBqZXN0Q29uZmlnRmlsZSA9IGxleEplc3RDb25maWc7XG4gICAgICAgIGlmKHByb2plY3RKZXN0Q29uZmlnICYmIE9iamVjdC5rZXlzKHByb2plY3RKZXN0Q29uZmlnKS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgaWYoZGVidWcpIHtcbiAgICAgICAgICAgIGxvZyhgVXNpbmcgTGV4IEplc3QgY29uZmlnIHdpdGggcHJvamVjdCBKZXN0IGNvbmZpZyBmcm9tIGxleC5jb25maWcuY2pzOiAke2plc3RDb25maWdGaWxlfWAsICdpbmZvJywgcXVpZXQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpZihkZWJ1Zykge1xuICAgICAgICAgICAgbG9nKGBVc2luZyBMZXggSmVzdCBjb25maWcgKG5vIHByb2plY3QgSmVzdCBjb25maWcgZm91bmQpOiAke2plc3RDb25maWdGaWxlfWAsICdpbmZvJywgcXVpZXQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYoZGVidWcpIHtcbiAgICAgICAgICBsb2coJ05vIEplc3QgY29uZmlnIGZvdW5kIGluIHByb2plY3Qgb3IgTGV4JywgJ3dhcm4nLCBxdWlldCk7XG4gICAgICAgIH1cbiAgICAgICAgamVzdENvbmZpZ0ZpbGUgPSAnJztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjb25zdCBqZXN0U2V0dXBGaWxlOiBzdHJpbmcgPSBzZXR1cCB8fCBwYXRoUmVzb2x2ZShwcm9jZXNzLmN3ZCgpLCAnamVzdC5zZXR1cC5qcycpO1xuICBjb25zdCBqZXN0T3B0aW9uczogc3RyaW5nW10gPSBbJy0tbm8tY2FjaGUnXTtcblxuICBjb25zdCBpc0VTTSA9IGRldGVjdEVTTShwcm9jZXNzLmN3ZCgpKTtcbiAgbGV0IG5vZGVPcHRpb25zID0gcHJvY2Vzcy5lbnYuTk9ERV9PUFRJT05TIHx8ICcnO1xuICBpZihpc0VTTSkge1xuICAgIGlmKCFub2RlT3B0aW9ucy5pbmNsdWRlcygnLS1leHBlcmltZW50YWwtdm0tbW9kdWxlcycpKSB7XG4gICAgICBub2RlT3B0aW9ucyA9IGAke25vZGVPcHRpb25zfSAtLWV4cGVyaW1lbnRhbC12bS1tb2R1bGVzYC50cmltKCk7XG4gICAgfVxuICAgIGxvZygnRVNNIHByb2plY3QgZGV0ZWN0ZWQsIHVzaW5nIC0tZXhwZXJpbWVudGFsLXZtLW1vZHVsZXMgaW4gTk9ERV9PUFRJT05TJywgJ2luZm8nLCBxdWlldCk7XG4gIH1cblxuICBpZihqZXN0Q29uZmlnRmlsZSkge1xuICAgIGplc3RPcHRpb25zLnB1c2goJy0tY29uZmlnJywgamVzdENvbmZpZ0ZpbGUpO1xuICB9XG5cbiAgaWYoYmFpbCkge1xuICAgIGplc3RPcHRpb25zLnB1c2goJy0tYmFpbCcpO1xuICB9XG5cbiAgaWYoY2hhbmdlZEZpbGVzV2l0aEFuY2VzdG9yKSB7XG4gICAgamVzdE9wdGlvbnMucHVzaCgnLS1jaGFuZ2VkRmlsZXNXaXRoQW5jZXN0b3InKTtcbiAgfVxuXG4gIGlmKGNoYW5nZWRTaW5jZSkge1xuICAgIGplc3RPcHRpb25zLnB1c2goJy0tY2hhbmdlZFNpbmNlJyk7XG4gIH1cblxuICBpZihjaSkge1xuICAgIGplc3RPcHRpb25zLnB1c2goJy0tY2knKTtcbiAgfVxuXG4gIGlmKGNvbGxlY3RDb3ZlcmFnZUZyb20pIHtcbiAgICBqZXN0T3B0aW9ucy5wdXNoKCctLWNvbGxlY3RDb3ZlcmFnZUZyb20nLCBjb2xsZWN0Q292ZXJhZ2VGcm9tKTtcbiAgfVxuXG4gIGlmKGNvbG9ycykge1xuICAgIGplc3RPcHRpb25zLnB1c2goJy0tY29sb3JzJyk7XG4gIH1cblxuICBpZihkZWJ1Zykge1xuICAgIGplc3RPcHRpb25zLnB1c2goJy0tZGVidWcnKTtcbiAgfVxuXG4gIGlmKGRldGVjdE9wZW5IYW5kbGVzKSB7XG4gICAgamVzdE9wdGlvbnMucHVzaCgnLS1kZXRlY3RPcGVuSGFuZGxlcycpO1xuICB9XG5cbiAgaWYoZW52KSB7XG4gICAgamVzdE9wdGlvbnMucHVzaCgnLS1lbnYnKTtcbiAgfVxuXG4gIGlmKGVycm9yT25EZXByZWNhdGVkKSB7XG4gICAgamVzdE9wdGlvbnMucHVzaCgnLS1lcnJvck9uRGVwcmVjYXRlZCcpO1xuICB9XG5cbiAgaWYoZXhwYW5kKSB7XG4gICAgamVzdE9wdGlvbnMucHVzaCgnLS1leHBhbmQnKTtcbiAgfVxuXG4gIGlmKGZvcmNlRXhpdCkge1xuICAgIGplc3RPcHRpb25zLnB1c2goJy0tZm9yY2VFeGl0Jyk7XG4gIH1cblxuICBpZihqc29uKSB7XG4gICAgamVzdE9wdGlvbnMucHVzaCgnLS1qc29uJyk7XG4gIH1cblxuICBpZihsYXN0Q29tbWl0KSB7XG4gICAgamVzdE9wdGlvbnMucHVzaCgnLS1sYXN0Q29tbWl0Jyk7XG4gIH1cblxuICBpZihsaXN0VGVzdHMpIHtcbiAgICBqZXN0T3B0aW9ucy5wdXNoKCctLWxpc3RUZXN0cycpO1xuICB9XG5cbiAgaWYobG9nSGVhcFVzYWdlKSB7XG4gICAgamVzdE9wdGlvbnMucHVzaCgnLS1sb2dIZWFwVXNhZ2UnKTtcbiAgfVxuXG4gIGlmKG1heFdvcmtlcnMpIHtcbiAgICBqZXN0T3B0aW9ucy5wdXNoKCctLW1heFdvcmtlcnMnLCBtYXhXb3JrZXJzKTtcbiAgfVxuXG4gIGlmKG5vU3RhY2tUcmFjZSkge1xuICAgIGplc3RPcHRpb25zLnB1c2goJy0tbm9TdGFja1RyYWNlJyk7XG4gIH1cblxuICBpZihub3RpZnkpIHtcbiAgICBqZXN0T3B0aW9ucy5wdXNoKCctLW5vdGlmeScpO1xuICB9XG5cbiAgaWYob25seUNoYW5nZWQpIHtcbiAgICBqZXN0T3B0aW9ucy5wdXNoKCctLW9ubHlDaGFuZ2VkJyk7XG4gIH1cblxuICBsZXQgdGVtcE91dHB1dEZpbGUgPSBvdXRwdXRGaWxlO1xuXG4gIGlmKCh1c2VBbmFseXplIHx8IHVzZURlYnVnKSAmJiAhb3V0cHV0RmlsZSkge1xuICAgIHRlbXBPdXRwdXRGaWxlID0gJy5sZXgtdGVzdC1yZXN1bHRzLmpzb24nO1xuICAgIGplc3RPcHRpb25zLnB1c2goJy0tanNvbicsICctLW91dHB1dEZpbGUnLCB0ZW1wT3V0cHV0RmlsZSk7XG4gIH0gZWxzZSBpZihvdXRwdXRGaWxlKSB7XG4gICAgamVzdE9wdGlvbnMucHVzaCgnLS1vdXRwdXRGaWxlJywgb3V0cHV0RmlsZSk7XG4gIH1cblxuICBpZihwYXNzV2l0aE5vVGVzdHMpIHtcbiAgICBqZXN0T3B0aW9ucy5wdXNoKCctLXBhc3NXaXRoTm9UZXN0cycpO1xuICB9XG5cbiAgaWYocnVuSW5CYW5kKSB7XG4gICAgamVzdE9wdGlvbnMucHVzaCgnLS1ydW5JbkJhbmQnKTtcbiAgfVxuXG4gIGlmKHNob3dDb25maWcpIHtcbiAgICBqZXN0T3B0aW9ucy5wdXNoKCctLXNob3dDb25maWcnKTtcbiAgfVxuXG4gIGlmKHNpbGVudCkge1xuICAgIGplc3RPcHRpb25zLnB1c2goJy0tc2lsZW50Jyk7XG4gIH1cblxuICBpZih0ZXN0TG9jYXRpb25JblJlc3VsdHMpIHtcbiAgICBqZXN0T3B0aW9ucy5wdXNoKCctLXRlc3RMb2NhdGlvbkluUmVzdWx0cycpO1xuICB9XG5cbiAgaWYodGVzdE5hbWVQYXR0ZXJuKSB7XG4gICAgamVzdE9wdGlvbnMucHVzaCgnLS10ZXN0TmFtZVBhdHRlcm4nLCB0ZXN0TmFtZVBhdHRlcm4pO1xuICB9XG5cbiAgaWYodGVzdFBhdGhQYXR0ZXJuKSB7XG4gICAgamVzdE9wdGlvbnMucHVzaCgnLS10ZXN0UGF0aFBhdHRlcm4nLCB0ZXN0UGF0aFBhdHRlcm4pO1xuICB9XG5cbiAgaWYodXNlU3RkZXJyKSB7XG4gICAgamVzdE9wdGlvbnMucHVzaCgnLS11c2VTdGRlcnInKTtcbiAgfVxuXG4gIGlmKHZlcmJvc2UpIHtcbiAgICBqZXN0T3B0aW9ucy5wdXNoKCctLXZlcmJvc2UnKTtcbiAgfVxuXG4gIGlmKHdhdGNoQWxsKSB7XG4gICAgamVzdE9wdGlvbnMucHVzaCgnLS13YXRjaEFsbCcpO1xuICB9XG5cbiAgaWYocmVtb3ZlQ2FjaGUpIHtcbiAgICBqZXN0T3B0aW9ucy5wdXNoKCctLW5vLWNhY2hlJyk7XG4gIH1cblxuICBpZihqZXN0U2V0dXBGaWxlICYmIGV4aXN0c1N5bmMoamVzdFNldHVwRmlsZSkpIHtcbiAgICBqZXN0T3B0aW9ucy5wdXNoKGAtLXNldHVwRmlsZXNBZnRlckVudj0ke2plc3RTZXR1cEZpbGV9YCk7XG4gIH1cblxuICBpZih1cGRhdGUpIHtcbiAgICBqZXN0T3B0aW9ucy5wdXNoKCctLXVwZGF0ZVNuYXBzaG90Jyk7XG4gIH1cblxuICBpZih3YXRjaCkge1xuICAgIGplc3RPcHRpb25zLnB1c2goJy0td2F0Y2gnLCB3YXRjaCk7XG4gIH1cblxuICBpZihhcmdzKSB7XG4gICAgamVzdE9wdGlvbnMucHVzaCguLi5hcmdzKTtcbiAgfVxuXG4gIGlmKGZpbGVzICYmIGZpbGVzLmxlbmd0aCA+IDApIHtcbiAgICBqZXN0T3B0aW9ucy5wdXNoKC4uLmZpbGVzKTtcbiAgfVxuXG4gIGlmKGRlYnVnKSB7XG4gICAgbG9nKGBKZXN0IG9wdGlvbnM6ICR7amVzdE9wdGlvbnMuam9pbignICcpfWAsICdpbmZvJywgcXVpZXQpO1xuICAgIGxvZyhgTk9ERV9PUFRJT05TOiAke25vZGVPcHRpb25zfWAsICdpbmZvJywgcXVpZXQpO1xuICB9XG5cbiAgdHJ5IHtcbiAgICBjb25zdCBlbnY6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gICAgICAuLi5wcm9jZXNzLmVudixcbiAgICAgIE5PREVfT1BUSU9OUzogbm9kZU9wdGlvbnNcbiAgICB9O1xuXG4gICAgYXdhaXQgZXhlY2EoamVzdFBhdGgsIGplc3RPcHRpb25zLCB7XG4gICAgICBlbmNvZGluZzogJ3V0ZjgnLFxuICAgICAgZW52LFxuICAgICAgc3RkaW86ICdpbmhlcml0J1xuICAgIH0pO1xuXG4gICAgc3Bpbm5lci5zdWNjZWVkKCdUZXN0aW5nIGNvbXBsZXRlZCEnKTtcblxuICAgIGlmKHVzZUFuYWx5emUpIHtcbiAgICAgIHNwaW5uZXIuc3RhcnQoJ0FJIGlzIGFuYWx5emluZyB0ZXN0IGNvdmVyYWdlIGFuZCBzdWdnZXN0aW5nIGltcHJvdmVtZW50cy4uLicpO1xuXG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCB0ZXN0UmVzdWx0cyA9IHByb2Nlc3NUZXN0UmVzdWx0cyh0ZW1wT3V0cHV0RmlsZSk7XG4gICAgICAgIGNvbnN0IGZpbGVQYXR0ZXJucyA9IGdldFRlc3RGaWxlUGF0dGVybnModGVzdFBhdGhQYXR0ZXJuKTtcblxuICAgICAgICBhd2FpdCBhaUZ1bmN0aW9uKHtcbiAgICAgICAgICBjb250ZXh0OiB0cnVlLFxuICAgICAgICAgIHByb21wdDogYEFuYWx5emUgdGhlc2UgSmVzdCB0ZXN0IHJlc3VsdHMgYW5kIHN1Z2dlc3QgdGVzdCBjb3ZlcmFnZSBpbXByb3ZlbWVudHM6XG5cbiR7SlNPTi5zdHJpbmdpZnkodGVzdFJlc3VsdHMsIG51bGwsIDIpfVxuXG5UZXN0IHBhdHRlcm5zOiAke2ZpbGVQYXR0ZXJucy5qb2luKCcsICcpfVxuXG5QbGVhc2UgcHJvdmlkZTpcbjEuIEFuYWx5c2lzIG9mIGN1cnJlbnQgY292ZXJhZ2UgZ2Fwc1xuMi4gU3VnZ2VzdGlvbnMgZm9yIGltcHJvdmluZyB0ZXN0IGNhc2VzXG4zLiBSZWNvbW1lbmRhdGlvbnMgZm9yIGFkZGl0aW9uYWwgaW50ZWdyYXRpb24gdGVzdCBzY2VuYXJpb3NcbjQuIEJlc3QgcHJhY3RpY2VzIGZvciBpbmNyZWFzaW5nIHRlc3QgZWZmZWN0aXZlbmVzc2AsXG4gICAgICAgICAgcXVpZXQsXG4gICAgICAgICAgdGFzazogJ29wdGltaXplJ1xuICAgICAgICB9KTtcblxuICAgICAgICBzcGlubmVyLnN1Y2NlZWQoJ0FJIHRlc3QgYW5hbHlzaXMgY29tcGxldGUnKTtcbiAgICAgIH0gY2F0Y2ggKGFpRXJyb3IpIHtcbiAgICAgICAgc3Bpbm5lci5mYWlsKCdDb3VsZCBub3QgZ2VuZXJhdGUgQUkgdGVzdCBhbmFseXNpcycpO1xuICAgICAgICBpZighcXVpZXQpIHtcbiAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0FJIGFuYWx5c2lzIGVycm9yOicsIGFpRXJyb3IpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgY2FsbGJhY2soMCk7XG4gICAgcmV0dXJuIDA7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgbG9nKGBcXG4ke2NsaU5hbWV9IEVycm9yOiBDaGVjayBmb3IgdW5pdCB0ZXN0IGVycm9ycyBhbmQvb3IgY292ZXJhZ2UuYCwgJ2Vycm9yJywgcXVpZXQpO1xuXG4gICAgc3Bpbm5lci5mYWlsKCdUZXN0aW5nIGZhaWxlZCEnKTtcblxuICAgIGlmKHVzZURlYnVnKSB7XG4gICAgICBzcGlubmVyLnN0YXJ0KCdBSSBpcyBhbmFseXppbmcgdGVzdCBmYWlsdXJlcy4uLicpO1xuXG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCB0ZXN0UmVzdWx0cyA9IHByb2Nlc3NUZXN0UmVzdWx0cyh0ZW1wT3V0cHV0RmlsZSk7XG5cbiAgICAgICAgYXdhaXQgYWlGdW5jdGlvbih7XG4gICAgICAgICAgY29udGV4dDogdHJ1ZSxcbiAgICAgICAgICBwcm9tcHQ6IGBEZWJ1ZyB0aGVzZSBmYWlsZWQgSmVzdCB0ZXN0cyBhbmQgc3VnZ2VzdCBmaXhlczpcblxuJHtKU09OLnN0cmluZ2lmeShlcnJvci5tZXNzYWdlLCBudWxsLCAyKX1cblxuVGVzdCByZXN1bHRzOiAke0pTT04uc3RyaW5naWZ5KHRlc3RSZXN1bHRzLCBudWxsLCAyKX1cblxuUGxlYXNlIHByb3ZpZGU6XG4xLiBBbmFseXNpcyBvZiB3aHkgdGhlIHRlc3RzIGFyZSBmYWlsaW5nXG4yLiBTcGVjaWZpYyBzdWdnZXN0aW9ucyB0byBmaXggZWFjaCBmYWlsaW5nIHRlc3RcbjMuIEFueSBwb3RlbnRpYWwgaXNzdWVzIHdpdGggdGVzdCBmaXh0dXJlcyBvciBtb2Nrc1xuNC4gQ29kZSBleGFtcGxlcyBmb3Igc29sdXRpb25zYCxcbiAgICAgICAgICBxdWlldCxcbiAgICAgICAgICB0YXNrOiAnaGVscCdcbiAgICAgICAgfSk7XG5cbiAgICAgICAgc3Bpbm5lci5zdWNjZWVkKCdBSSBkZWJ1Z2dpbmcgYXNzaXN0YW5jZSBjb21wbGV0ZScpO1xuICAgICAgfSBjYXRjaCAoYWlFcnJvcikge1xuICAgICAgICBzcGlubmVyLmZhaWwoJ0NvdWxkIG5vdCBnZW5lcmF0ZSBBSSBkZWJ1Z2dpbmcgYXNzaXN0YW5jZScpO1xuICAgICAgICBpZighcXVpZXQpIHtcbiAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0FJIGRlYnVnZ2luZyBlcnJvcjonLCBhaUVycm9yKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGNhbGxiYWNrKDEpO1xuICAgIHJldHVybiAxO1xuICB9XG59O1xuXG5leHBvcnQgZGVmYXVsdCB0ZXN0OyJdLAogICJtYXBwaW5ncyI6ICJBQUlBLFNBQVEsYUFBWTtBQUNwQixTQUFRLFlBQVksb0JBQW1CO0FBQ3ZDLFNBQVEsUUFBUSxnQkFBZTtBQUMvQixTQUFRLFdBQVcsbUJBQWtCO0FBRXJDLFNBQVEsV0FBVywrQkFBOEI7QUFDakQsU0FBUSxxQkFBb0I7QUFDNUIsU0FBUSx5QkFBd0I7QUFDaEMsU0FBUSxXQUFV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
|
package/lib/lex.js
CHANGED
|
@@ -33,17 +33,17 @@ const require2 = createRequire(import.meta.url);
|
|
|
33
33
|
require2("module").Module._initPaths();
|
|
34
34
|
const packagePath = fileURLToPath(new URL("../package.json", import.meta.url));
|
|
35
35
|
const packageJson = JSON.parse(readFileSync(packagePath, "utf8"));
|
|
36
|
-
program.command("build").option("--assist", "Enable AI assistance for fixing build errors.", false).option("--analyze", "Enable AI analysis for build optimization suggestions or invoke webpack-bundle-analyzer plugin.", false).addOption(new Option("--bundler <n>", 'Bundler to use ("webpack" or "esbuild"). Default: "webpack".').choices(["webpack", "esbuild"]).default("webpack")).option("--config <path>", "Custom Webpack configuration file path (ie. webpack.config.js).").option("--configName <value...>", "Name of the configuration to use.").option("--defineProcessEnvNodeEnv <value>", "Sets process.env.NODE_ENV to the specified value. (Currently an alias for `--node-env`)").option("--devtool <value>", "A developer tool to enhance debugging (false | eval | [inline-|hidden-|eval-][nosources-][cheap-[module-]]source-map).").option("--disableInterpret", "Disable interpret for loading the config file.", false).option("--entry <value...>", "A module that is loaded upon startup. Only the last one is exported.").option("--env <value>", "Environment passed to the configuration when it is a function.").option("--failOnWarnings", "Stop webpack-cli process with non-zero exit code on warnings from webpack", false).addOption(new Option("--format <value>", 'This sets the output format for the generated JavaScript files. Default: "
|
|
36
|
+
program.command("build").option("--assist", "Enable AI assistance for fixing build errors.", false).option("--analyze", "Enable AI analysis for build optimization suggestions or invoke webpack-bundle-analyzer plugin.", false).addOption(new Option("--bundler <n>", 'Bundler to use ("webpack" or "esbuild"). Default: "webpack".').choices(["webpack", "esbuild"]).default("webpack")).option("--config <path>", "Custom Webpack configuration file path (ie. webpack.config.js).").option("--configName <value...>", "Name of the configuration to use.").option("--defineProcessEnvNodeEnv <value>", "Sets process.env.NODE_ENV to the specified value. (Currently an alias for `--node-env`)").option("--devtool <value>", "A developer tool to enhance debugging (false | eval | [inline-|hidden-|eval-][nosources-][cheap-[module-]]source-map).").option("--disableInterpret", "Disable interpret for loading the config file.", false).option("--entry <value...>", "A module that is loaded upon startup. Only the last one is exported.").option("--env <value>", "Environment passed to the configuration when it is a function.").option("--failOnWarnings", "Stop webpack-cli process with non-zero exit code on warnings from webpack", false).addOption(new Option("--format <value>", 'This sets the output format for the generated JavaScript files. Default: "esm".').choices(["cjs", "esm"]).default("esm")).option("--json <value>", "Prints result as JSON or store it in a file.").option("--lexConfig <path>", "Lex configuration file path (lex.config.js).").option("--merge", 'Merge two or more configurations using "webpack-merge".', false).addOption(new Option("--mode <type>", 'Webpack mode ("production" or "development"). Default: "development".').choices(["development", "production"]).default("development")).option("--name <value>", "Name of the configuration. Used when loading multiple configurations.").option("--noDevtool", 'Negative "devtool" option.', false).option("--noStats", 'Negative "stats" option.', false).option("--noTarget", 'Negative "target" option.', false).option("--noWatch", 'Negative "watch" option.', false).option("--noWatchOptionsStdin", 'Negative "watch-options-stdin" option.', false).option("--nodeEnv <value>", "Sets process.env.NODE_ENV to the specified value.").option("--outputPath <value>", "The output directory as **absolute path** (required).").option("--quiet", "No Lex notifications printed in the console.", false).option("--remove", "Removes all files from the output directory before compiling.", false).option("--sourcePath <path>", "Source path").option("--stats <value>", "Stats options object or preset name.").option("--static", "Creates static HTML files when building app.", false).option("--target <value>", "Environment to build for. Environment to build for. An array of environments to build for all of them when possible.").option("--translations", "Process translation files and output flattened JSON.", false).option("--typescript", "Transpile as Typescript.", false).option("--variables <n>", `Environment variables to set in "process.env". (ie. "{NODE_ENV: 'production'}").`).option("--watch", "Watch for changes.", false).option("--watchOptionsStdin", "Stop watching when stdin stream has ended.", false).action((cmd) => build(cmd, process.exit).then(() => {
|
|
37
37
|
}));
|
|
38
38
|
program.command("clean").option("--quiet", "No Lex notifications printed in the console.").option("--snapshots", 'Remove all "__snapshots__" directories.').action((cmd) => clean(cmd, process.exit).then(() => {
|
|
39
39
|
}));
|
|
40
40
|
program.command("config <type>").option("--quiet", "No Lex notifications printed in the console.").option("--json <path>", "Save output to json file.").action((type, cmd) => config(type, cmd, process.exit).then(() => {
|
|
41
41
|
}));
|
|
42
|
-
program.command("compile").option("--config <path>", "Transpiler configuration file path (ie. tsconfig.json).").option("--environment <n>", 'Target environment. "node" or "web". Default: "node".').option("--lexConfig <path>", "Custom Lex configuration file path (ie. lex.config.js).").option("--outputPath <path>", "Output path").option("--remove", "Removes all files from the output directory before compiling.").option("--sourcePath <path>", "Source path").option("--typescript", "Transpile as Typescript.").option("--quiet", "No Lex notifications printed in the console.").option("--watch", "Watches for changes and compiles.").action((cmd) => compile(cmd, process.exit).then(() => {
|
|
42
|
+
program.command("compile").option("--config <path>", "Transpiler configuration file path (ie. tsconfig.json).").option("--environment <n>", 'Target environment. "node" or "web". Default: "node".').addOption(new Option("--format <value>", 'This sets the output format for the generated JavaScript files. Default: "esm".').choices(["cjs", "esm"]).default("esm")).option("--lexConfig <path>", "Custom Lex configuration file path (ie. lex.config.js).").option("--outputPath <path>", "Output path").option("--remove", "Removes all files from the output directory before compiling.").option("--sourcePath <path>", "Source path").option("--typescript", "Transpile as Typescript.").option("--quiet", "No Lex notifications printed in the console.").option("--watch", "Watches for changes and compiles.").action((cmd) => compile(cmd, process.exit).then(() => {
|
|
43
43
|
}));
|
|
44
44
|
program.command("create <type>").option("--outputFile <path>", "Output filename.").option("--outputName <n>", "Output name.").option("--quiet", "No Lex notifications printed in the console.").option("--typescript", "Create Typescript version.").action((type, cmd) => create(type, cmd, process.exit).then(() => {
|
|
45
45
|
}));
|
|
46
|
-
program.command("dev").option("--bundleAnalyzer", "Run bundle analyzer.").option("--config <path>", "Custom Webpack configuration file path (ie. webpack.config.js).").option("--lexConfig <path>", "Custom Lex configuration file path (ie. lex.config.js).").option("--open", "Automatically open dev server in a new browser window.").option("--outputPath <path>", "Output path").option("--quiet", "No Lex notifications printed in the console.").option("--remove", "Removes all files from the output directory before compiling.").option("--sourcePath <path>", "Source path").option("--translations", "Process translation files and output flattened JSON.", false).option("--typescript", "Transpile as Typescript.").option("--usePublicIp", "Force refresh the cached public IP address.").option("--variables <n>", `Environment variables to set in "process.env". (ie. "{NODE_ENV: 'development'}").`).option("--watch", "Watch for changes.").action((cmd) => dev(cmd, process.exit).then(() => {
|
|
46
|
+
program.command("dev").option("--bundleAnalyzer", "Run bundle analyzer.").option("--config <path>", "Custom Webpack configuration file path (ie. webpack.config.js).").addOption(new Option("--format <value>", 'This sets the output format for the generated JavaScript files. Default: "esm".').choices(["cjs", "esm"]).default("esm")).option("--lexConfig <path>", "Custom Lex configuration file path (ie. lex.config.js).").option("--open", "Automatically open dev server in a new browser window.").option("--outputPath <path>", "Output path").option("--quiet", "No Lex notifications printed in the console.").option("--remove", "Removes all files from the output directory before compiling.").option("--sourcePath <path>", "Source path").option("--translations", "Process translation files and output flattened JSON.", false).option("--typescript", "Transpile as Typescript.").option("--usePublicIp", "Force refresh the cached public IP address.").option("--variables <n>", `Environment variables to set in "process.env". (ie. "{NODE_ENV: 'development'}").`).option("--watch", "Watch for changes.").action((cmd) => dev(cmd, process.exit).then(() => {
|
|
47
47
|
}));
|
|
48
48
|
program.command("init <appName> [packageName]").option("--install", "Install dependencies.").addOption(new Option("--package-manager <manager>", "Which package manager to use. Default: npm").choices(["npm", "yarn"]).default("npm")).option("--quiet", "No Lex notifications printed in the console.").option("--typescript", "Use a Typescript based app.").action((appName, packageName, cmd) => init(appName, packageName, cmd, process.exit).then(() => {
|
|
49
49
|
}));
|
|
@@ -59,7 +59,7 @@ program.command("serverless").option("--config <path>", "Custom configuration fi
|
|
|
59
59
|
}));
|
|
60
60
|
program.command("storybook").option("--config <path>", "Custom Storybook configuration directory path (ie. .storybook).").option("--lexConfig <path>", "Custom Lex configuration file path (ie. lex.config.js).").option("--open", "Automatically open Storybook in a new browser window.").option("--port <number>", "Port number for the Storybook server.").option("--quiet", "No Lex notifications printed in the console.").option("--static", "Build a static Storybook site instead of starting dev server.").option("--variables <n>", `Environment variables to set in "process.env". (ie. "{STORYBOOK_THEME: 'dark'}").`).option("--verbose", "Show detailed webpack progress output.").action((cmd) => storybook(cmd, process.exit).then(() => {
|
|
61
61
|
}));
|
|
62
|
-
program.command("test").option("--analyze", "Use AI to analyze test coverage and suggest improvements.", false).option("--debugTests", "Use AI to debug test failures and suggest fixes.", false).option("--generate", "Use AI to generate test cases for untested code.", false).option("--bail", "Exit the test suite immediately upon the first failing test suite.").option("--changedFilesWithAncestor", "Runs tests related to the current changes and the changes made in the last commit.").option("--changedSince", "Runs tests related the changes since the provided branch.").option("--ci", "When this option is provided, Jest will assume it is running in a CI environment.").option("--clearCache", "Clear Jest cache.").option("--collectCoverageFrom <glob>", "A glob pattern relative to matching the files that coverage info needs to be collected from.").option("--colors", "Forces test results output highlighting even if stdout is not a TTY.").option("--config <path>", "Custom Jest configuration file path (ie. jest.config.js).").option("--debug", "Print debugging info about your Jest config.").option("--detectOpenHandles", "Attempt to collect and print open handles preventing Jest from exiting cleanly").option("--environment <n>", 'Target environment. "node" or "web". Default: "node".').option("--env", "The test environment used for all tests. This can point to any file or node module. Examples: jsdom, node or path/to/my-environment.js.").option("--errorOnDeprecated", "Make calling deprecated APIs throw helpful error messages.").option("--expand", "Use this flag to show full diffs and errors instead of a patch.").option("--forceExit", "Force Jest to exit after all tests have completed running.").option("--json", "Prints the test results in JSON.").option("--lastCommit", "Run all tests affected by file changes in the last commit made.").option("--lexConfig <path>", "Custom Lex configuration file path (ie. lex.config.js).").option("--listTests", "Lists all tests as JSON that Jest will run given the arguments, and exits.").option("--logHeapUsage", "Logs the heap usage after every test.").option("--maxWorkers <num>", "Specifies the maximum number of workers the worker-pool will spawn for running tests. ").option("--noStackTrace", "Disables stack trace in test results output.").option("--notify", "Activates notifications for test results.").option("--onlyChanged", "un based on which files have changed in the current repository. ").option("--outputFile <filename>", "Write test results to a file when the --json option is also specified.").option("--passWithNoTests", "Allows the test suite to pass when no files are found.").option("--quiet", "No Lex notifications printed in the console.").option("--runInBand", "Run all tests serially in the current process, rather than creating a worker pool of child processes that run tests.").option("--setup <path>", "Jest setup file path.").option("--showConfig", "Print your Jest config and then exits.").option("--silent", "Prevent tests from printing messages through the console.").option("--testLocationInResults", "Adds a location field to test results.").option("--testNamePattern <regex>", "Run only tests with a name that matches the regex. ").option("--testPathPattern <regex>", "A regexp pattern string that is matched against all tests paths before executing the test.").option("--typescript", "Transpile as Typescript.").option("--update", 'Update snapshots. Runs "jest --updateSnapshots"').option("--useStderr", "Divert all output to stderr.").option("--verbose", "Display individual test results with the test suite hierarchy.").option("--watch <path>", "Watch files for changes and rerun tests related to changed files.").option("--watchAll", "Watch files for changes and rerun all tests when something changes.").action((options, cmd) => test(options, cmd.args, process.exit).then(() => {
|
|
62
|
+
program.command("test [files...]").option("--analyze", "Use AI to analyze test coverage and suggest improvements.", false).option("--debugTests", "Use AI to debug test failures and suggest fixes.", false).option("--generate", "Use AI to generate test cases for untested code.", false).option("--bail", "Exit the test suite immediately upon the first failing test suite.").option("--changedFilesWithAncestor", "Runs tests related to the current changes and the changes made in the last commit.").option("--changedSince", "Runs tests related the changes since the provided branch.").option("--ci", "When this option is provided, Jest will assume it is running in a CI environment.").option("--clearCache", "Clear Jest cache.").option("--collectCoverageFrom <glob>", "A glob pattern relative to matching the files that coverage info needs to be collected from.").option("--colors", "Forces test results output highlighting even if stdout is not a TTY.").option("--config <path>", "Custom Jest configuration file path (ie. jest.config.js).").option("--debug", "Print debugging info about your Jest config.").option("--detectOpenHandles", "Attempt to collect and print open handles preventing Jest from exiting cleanly").option("--environment <n>", 'Target environment. "node" or "web". Default: "node".').option("--env", "The test environment used for all tests. This can point to any file or node module. Examples: jsdom, node or path/to/my-environment.js.").option("--errorOnDeprecated", "Make calling deprecated APIs throw helpful error messages.").option("--expand", "Use this flag to show full diffs and errors instead of a patch.").option("--forceExit", "Force Jest to exit after all tests have completed running.").option("--json", "Prints the test results in JSON.").option("--lastCommit", "Run all tests affected by file changes in the last commit made.").option("--lexConfig <path>", "Custom Lex configuration file path (ie. lex.config.js).").option("--listTests", "Lists all tests as JSON that Jest will run given the arguments, and exits.").option("--logHeapUsage", "Logs the heap usage after every test.").option("--maxWorkers <num>", "Specifies the maximum number of workers the worker-pool will spawn for running tests. ").option("--noStackTrace", "Disables stack trace in test results output.").option("--notify", "Activates notifications for test results.").option("--onlyChanged", "un based on which files have changed in the current repository. ").option("--outputFile <filename>", "Write test results to a file when the --json option is also specified.").option("--passWithNoTests", "Allows the test suite to pass when no files are found.").option("--quiet", "No Lex notifications printed in the console.").option("--runInBand", "Run all tests serially in the current process, rather than creating a worker pool of child processes that run tests.").option("--setup <path>", "Jest setup file path.").option("--showConfig", "Print your Jest config and then exits.").option("--silent", "Prevent tests from printing messages through the console.").option("--testLocationInResults", "Adds a location field to test results.").option("--testNamePattern <regex>", "Run only tests with a name that matches the regex. ").option("--testPathPattern <regex>", "A regexp pattern string that is matched against all tests paths before executing the test.").option("--typescript", "Transpile as Typescript.").option("--update", 'Update snapshots. Runs "jest --updateSnapshots"').option("--useStderr", "Divert all output to stderr.").option("--verbose", "Display individual test results with the test suite hierarchy.").option("--watch <path>", "Watch files for changes and rerun tests related to changed files.").option("--watchAll", "Watch files for changes and rerun all tests when something changes.").action((files, options, cmd) => test(options, cmd.args, files, process.exit).then(() => {
|
|
63
63
|
}));
|
|
64
64
|
program.command("update").option("--interactive", "Choose which packages to update.").addOption(new Option("--package-manager <manager>", "Which package manager to use. Default: npm").choices(["npm", "yarn"]).default("npm")).option("--quiet", "No Lex notifications printed in the console.").option("--registry", "Add a custom registry url.").action((cmd) => update(cmd, process.exit).then(() => {
|
|
65
65
|
}));
|
|
@@ -70,4 +70,4 @@ program.command("ai").option("--context", "Include project context in the AI pro
|
|
|
70
70
|
program.command("versions").option("--json", "Print the version as a JSON object.").action((cmd) => versions(cmd, process.exit).then(() => {
|
|
71
71
|
}));
|
|
72
72
|
program.version(packageJson.version).parse(process.argv);
|
|
73
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL2xleC50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiIyEvdXNyL2Jpbi9lbnYgbm9kZVxuLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTgtUHJlc2VudCwgTml0cm9nZW4gTGFicywgSW5jLlxuICogQ29weXJpZ2h0cyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSB0aGUgYWNjb21wYW55aW5nIExJQ0VOU0UgZmlsZSBmb3IgdGVybXMuXG4gKi9cbmltcG9ydCB7T3B0aW9uLCBwcm9ncmFtfSBmcm9tICdjb21tYW5kZXInO1xuaW1wb3J0IHtyZWFkRmlsZVN5bmN9IGZyb20gJ2ZzJztcbmltcG9ydCB7Y3JlYXRlUmVxdWlyZX0gZnJvbSAnbW9kdWxlJztcbmltcG9ydCB7ZGlybmFtZSwgcmVzb2x2ZX0gZnJvbSAncGF0aCc7XG5pbXBvcnQge2ZpbGVVUkxUb1BhdGh9IGZyb20gJ3VybCc7XG5cbmltcG9ydCB7YWlGdW5jdGlvbn0gZnJvbSAnLi9jb21tYW5kcy9haS9haS5qcyc7XG5pbXBvcnQge2J1aWxkfSBmcm9tICcuL2NvbW1hbmRzL2J1aWxkL2J1aWxkLmpzJztcbmltcG9ydCB7Y2xlYW59IGZyb20gJy4vY29tbWFuZHMvY2xlYW4vY2xlYW4uanMnO1xuaW1wb3J0IHtjb21waWxlfSBmcm9tICcuL2NvbW1hbmRzL2NvbXBpbGUvY29tcGlsZS5qcyc7XG5pbXBvcnQge2NvbmZpZ30gZnJvbSAnLi9jb21tYW5kcy9jb25maWcvY29uZmlnLmpzJztcbmltcG9ydCB7Y3JlYXRlfSBmcm9tICcuL2NvbW1hbmRzL2NyZWF0ZS9jcmVhdGUuanMnO1xuaW1wb3J0IHtkZXZ9IGZyb20gJy4vY29tbWFuZHMvZGV2L2Rldi5qcyc7XG5pbXBvcnQge2luaXR9IGZyb20gJy4vY29tbWFuZHMvaW5pdC9pbml0LmpzJztcbmltcG9ydCB7bGlua2VkfSBmcm9tICcuL2NvbW1hbmRzL2xpbmsvbGluay5qcyc7XG5pbXBvcnQge2xpbnR9IGZyb20gJy4vY29tbWFuZHMvbGludC9saW50LmpzJztcbmltcG9ydCB7bWlncmF0ZX0gZnJvbSAnLi9jb21tYW5kcy9taWdyYXRlL21pZ3JhdGUuanMnO1xuaW1wb3J0IHtwdWJsaXNofSBmcm9tICcuL2NvbW1hbmRzL3B1Ymxpc2gvcHVibGlzaC5qcyc7XG5pbXBvcnQge3NlcnZlcmxlc3N9IGZyb20gJy4vY29tbWFuZHMvc2VydmVybGVzcy9zZXJ2ZXJsZXNzLmpzJztcbmltcG9ydCB7c3Rvcnlib29rfSBmcm9tICcuL2NvbW1hbmRzL3N0b3J5Ym9vay9zdG9yeWJvb2suanMnO1xuaW1wb3J0IHt0ZXN0fSBmcm9tICcuL2NvbW1hbmRzL3Rlc3QvdGVzdC5qcyc7XG5pbXBvcnQge3VwZGF0ZX0gZnJvbSAnLi9jb21tYW5kcy91cGRhdGUvdXBkYXRlLmpzJztcbmltcG9ydCB7dXBncmFkZX0gZnJvbSAnLi9jb21tYW5kcy91cGdyYWRlL3VwZ3JhZGUuanMnO1xuaW1wb3J0IHt2ZXJzaW9uc30gZnJvbSAnLi9jb21tYW5kcy92ZXJzaW9ucy92ZXJzaW9ucy5qcyc7XG5cbnByb2Nlc3MuZW52LkxFWF9ST09UID0gZGlybmFtZShmaWxlVVJMVG9QYXRoKGltcG9ydC5tZXRhLnVybCkpO1xuXG5jb25zdCBsZXhOb2RlTW9kdWxlcyA9IHJlc29sdmUoZGlybmFtZShmaWxlVVJMVG9QYXRoKGltcG9ydC5tZXRhLnVybCkpLCAnLi4vbm9kZV9tb2R1bGVzJyk7XG5pZighcHJvY2Vzcy5lbnYuTk9ERV9QQVRIKSB7XG4gIHByb2Nlc3MuZW52Lk5PREVfUEFUSCA9IGxleE5vZGVNb2R1bGVzO1xufSBlbHNlIGlmKCFwcm9jZXNzLmVudi5OT0RFX1BBVEguc3BsaXQoJzonKS5pbmNsdWRlcyhsZXhOb2RlTW9kdWxlcykpIHtcbiAgcHJvY2Vzcy5lbnYuTk9ERV9QQVRIICs9IGA6JHtsZXhOb2RlTW9kdWxlc31gO1xufVxuXG5jb25zdCByZXF1aXJlID0gY3JlYXRlUmVxdWlyZShpbXBvcnQubWV0YS51cmwpO1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVuZGVyc2NvcmUtZGFuZ2xlXG5yZXF1aXJlKCdtb2R1bGUnKS5Nb2R1bGUuX2luaXRQYXRocygpO1xuXG5jb25zdCBwYWNrYWdlUGF0aCA9IGZpbGVVUkxUb1BhdGgobmV3IFVSTCgnLi4vcGFja2FnZS5qc29uJywgaW1wb3J0Lm1ldGEudXJsKSk7XG5jb25zdCBwYWNrYWdlSnNvbiA9IEpTT04ucGFyc2UocmVhZEZpbGVTeW5jKHBhY2thZ2VQYXRoLCAndXRmOCcpKTtcblxucHJvZ3JhbS5jb21tYW5kKCdidWlsZCcpXG4gIC5vcHRpb24oJy0tYXNzaXN0JywgJ0VuYWJsZSBBSSBhc3Npc3RhbmNlIGZvciBmaXhpbmcgYnVpbGQgZXJyb3JzLicsIGZhbHNlKVxuICAub3B0aW9uKCctLWFuYWx5emUnLCAnRW5hYmxlIEFJIGFuYWx5c2lzIGZvciBidWlsZCBvcHRpbWl6YXRpb24gc3VnZ2VzdGlvbnMgb3IgaW52b2tlIHdlYnBhY2stYnVuZGxlLWFuYWx5emVyIHBsdWdpbi4nLCBmYWxzZSlcbiAgLmFkZE9wdGlvbihuZXcgT3B0aW9uKCctLWJ1bmRsZXIgPG4+JywgJ0J1bmRsZXIgdG8gdXNlIChcIndlYnBhY2tcIiBvciBcImVzYnVpbGRcIikuIERlZmF1bHQ6IFwid2VicGFja1wiLicpLmNob2ljZXMoWyd3ZWJwYWNrJywgJ2VzYnVpbGQnXSkuZGVmYXVsdCgnd2VicGFjaycpKVxuICAub3B0aW9uKCctLWNvbmZpZyA8cGF0aD4nLCAnQ3VzdG9tIFdlYnBhY2sgY29uZmlndXJhdGlvbiBmaWxlIHBhdGggKGllLiB3ZWJwYWNrLmNvbmZpZy5qcykuJylcbiAgLm9wdGlvbignLS1jb25maWdOYW1lIDx2YWx1ZS4uLj4nLCAnTmFtZSBvZiB0aGUgY29uZmlndXJhdGlvbiB0byB1c2UuJylcbiAgLm9wdGlvbignLS1kZWZpbmVQcm9jZXNzRW52Tm9kZUVudiA8dmFsdWU+JywgJ1NldHMgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgdG8gdGhlIHNwZWNpZmllZCB2YWx1ZS4gKEN1cnJlbnRseSBhbiBhbGlhcyBmb3IgYC0tbm9kZS1lbnZgKScpXG4gIC5vcHRpb24oJy0tZGV2dG9vbCA8dmFsdWU+JywgJ0EgZGV2ZWxvcGVyIHRvb2wgdG8gZW5oYW5jZSBkZWJ1Z2dpbmcgKGZhbHNlIHwgZXZhbCB8IFtpbmxpbmUtfGhpZGRlbi18ZXZhbC1dW25vc291cmNlcy1dW2NoZWFwLVttb2R1bGUtXV1zb3VyY2UtbWFwKS4nKVxuICAub3B0aW9uKCctLWRpc2FibGVJbnRlcnByZXQnLCAnRGlzYWJsZSBpbnRlcnByZXQgZm9yIGxvYWRpbmcgdGhlIGNvbmZpZyBmaWxlLicsIGZhbHNlKVxuICAub3B0aW9uKCctLWVudHJ5IDx2YWx1ZS4uLj4nLCAnQSBtb2R1bGUgdGhhdCBpcyBsb2FkZWQgdXBvbiBzdGFydHVwLiBPbmx5IHRoZSBsYXN0IG9uZSBpcyBleHBvcnRlZC4nKVxuICAub3B0aW9uKCctLWVudiA8dmFsdWU+JywgJ0Vudmlyb25tZW50IHBhc3NlZCB0byB0aGUgY29uZmlndXJhdGlvbiB3aGVuIGl0IGlzIGEgZnVuY3Rpb24uJylcbiAgLm9wdGlvbignLS1mYWlsT25XYXJuaW5ncycsICdTdG9wIHdlYnBhY2stY2xpIHByb2Nlc3Mgd2l0aCBub24temVybyBleGl0IGNvZGUgb24gd2FybmluZ3MgZnJvbSB3ZWJwYWNrJywgZmFsc2UpXG4gIC5hZGRPcHRpb24obmV3IE9wdGlvbignLS1mb3JtYXQgPHZhbHVlPicsICdUaGlzIHNldHMgdGhlIG91dHB1dCBmb3JtYXQgZm9yIHRoZSBnZW5lcmF0ZWQgSmF2YVNjcmlwdCBmaWxlcy4gRGVmYXVsdDogXCJjanNcIi4nKS5jaG9pY2VzKFsnY2pzJywgJ2VzbSddKS5kZWZhdWx0KCdjanMnKSlcbiAgLm9wdGlvbignLS1qc29uIDx2YWx1ZT4nLCAnUHJpbnRzIHJlc3VsdCBhcyBKU09OIG9yIHN0b3JlIGl0IGluIGEgZmlsZS4nKVxuICAub3B0aW9uKCctLWxleENvbmZpZyA8cGF0aD4nLCAnTGV4IGNvbmZpZ3VyYXRpb24gZmlsZSBwYXRoIChsZXguY29uZmlnLmpzKS4nKVxuICAub3B0aW9uKCctLW1lcmdlJywgJ01lcmdlIHR3byBvciBtb3JlIGNvbmZpZ3VyYXRpb25zIHVzaW5nIFwid2VicGFjay1tZXJnZVwiLicsIGZhbHNlKVxuICAuYWRkT3B0aW9uKG5ldyBPcHRpb24oJy0tbW9kZSA8dHlwZT4nLCAnV2VicGFjayBtb2RlIChcInByb2R1Y3Rpb25cIiBvciBcImRldmVsb3BtZW50XCIpLiBEZWZhdWx0OiBcImRldmVsb3BtZW50XCIuJykuY2hvaWNlcyhbJ2RldmVsb3BtZW50JywgJ3Byb2R1Y3Rpb24nXSkuZGVmYXVsdCgnZGV2ZWxvcG1lbnQnKSlcbiAgLm9wdGlvbignLS1uYW1lIDx2YWx1ZT4nLCAnTmFtZSBvZiB0aGUgY29uZmlndXJhdGlvbi4gVXNlZCB3aGVuIGxvYWRpbmcgbXVsdGlwbGUgY29uZmlndXJhdGlvbnMuJylcbiAgLm9wdGlvbignLS1ub0RldnRvb2wnLCAnTmVnYXRpdmUgXCJkZXZ0b29sXCIgb3B0aW9uLicsIGZhbHNlKVxuICAub3B0aW9uKCctLW5vU3RhdHMnLCAnTmVnYXRpdmUgXCJzdGF0c1wiIG9wdGlvbi4nLCBmYWxzZSlcbiAgLm9wdGlvbignLS1ub1RhcmdldCcsICdOZWdhdGl2ZSBcInRhcmdldFwiIG9wdGlvbi4nLCBmYWxzZSlcbiAgLm9wdGlvbignLS1ub1dhdGNoJywgJ05lZ2F0aXZlIFwid2F0Y2hcIiBvcHRpb24uJywgZmFsc2UpXG4gIC5vcHRpb24oJy0tbm9XYXRjaE9wdGlvbnNTdGRpbicsICdOZWdhdGl2ZSBcIndhdGNoLW9wdGlvbnMtc3RkaW5cIiBvcHRpb24uJywgZmFsc2UpXG4gIC5vcHRpb24oJy0tbm9kZUVudiA8dmFsdWU+JywgJ1NldHMgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgdG8gdGhlIHNwZWNpZmllZCB2YWx1ZS4nKVxuICAub3B0aW9uKCctLW91dHB1dFBhdGggPHZhbHVlPicsICdUaGUgb3V0cHV0IGRpcmVjdG9yeSBhcyAqKmFic29sdXRlIHBhdGgqKiAocmVxdWlyZWQpLicpXG4gIC5vcHRpb24oJy0tcXVpZXQnLCAnTm8gTGV4IG5vdGlmaWNhdGlvbnMgcHJpbnRlZCBpbiB0aGUgY29uc29sZS4nLCBmYWxzZSlcbiAgLm9wdGlvbignLS1yZW1vdmUnLCAnUmVtb3ZlcyBhbGwgZmlsZXMgZnJvbSB0aGUgb3V0cHV0IGRpcmVjdG9yeSBiZWZvcmUgY29tcGlsaW5nLicsIGZhbHNlKVxuICAub3B0aW9uKCctLXNvdXJjZVBhdGggPHBhdGg+JywgJ1NvdXJjZSBwYXRoJylcbiAgLm9wdGlvbignLS1zdGF0cyA8dmFsdWU+JywgJ1N0YXRzIG9wdGlvbnMgb2JqZWN0IG9yIHByZXNldCBuYW1lLicpXG4gIC5vcHRpb24oJy0tc3RhdGljJywgJ0NyZWF0ZXMgc3RhdGljIEhUTUwgZmlsZXMgd2hlbiBidWlsZGluZyBhcHAuJywgZmFsc2UpXG4gIC5vcHRpb24oJy0tdGFyZ2V0IDx2YWx1ZT4nLCAnRW52aXJvbm1lbnQgdG8gYnVpbGQgZm9yLiBFbnZpcm9ubWVudCB0byBidWlsZCBmb3IuIEFuIGFycmF5IG9mIGVudmlyb25tZW50cyB0byBidWlsZCBmb3IgYWxsIG9mIHRoZW0gd2hlbiBwb3NzaWJsZS4nKVxuICAub3B0aW9uKCctLXRyYW5zbGF0aW9ucycsICdQcm9jZXNzIHRyYW5zbGF0aW9uIGZpbGVzIGFuZCBvdXRwdXQgZmxhdHRlbmVkIEpTT04uJywgZmFsc2UpXG4gIC5vcHRpb24oJy0tdHlwZXNjcmlwdCcsICdUcmFuc3BpbGUgYXMgVHlwZXNjcmlwdC4nLCBmYWxzZSlcbiAgLm9wdGlvbignLS12YXJpYWJsZXMgPG4+JywgJ0Vudmlyb25tZW50IHZhcmlhYmxlcyB0byBzZXQgaW4gXCJwcm9jZXNzLmVudlwiLiAoaWUuIFwie05PREVfRU5WOiBcXCdwcm9kdWN0aW9uXFwnfVwiKS4nKVxuICAub3B0aW9uKCctLXdhdGNoJywgJ1dhdGNoIGZvciBjaGFuZ2VzLicsIGZhbHNlKVxuICAub3B0aW9uKCctLXdhdGNoT3B0aW9uc1N0ZGluJywgJ1N0b3Agd2F0Y2hpbmcgd2hlbiBzdGRpbiBzdHJlYW0gaGFzIGVuZGVkLicsIGZhbHNlKVxuICAuYWN0aW9uKChjbWQpID0+IGJ1aWxkKGNtZCwgcHJvY2Vzcy5leGl0KS50aGVuKCgpID0+IHt9KSk7XG5cbnByb2dyYW0uY29tbWFuZCgnY2xlYW4nKVxuICAub3B0aW9uKCctLXF1aWV0JywgJ05vIExleCBub3RpZmljYXRpb25zIHByaW50ZWQgaW4gdGhlIGNvbnNvbGUuJylcbiAgLm9wdGlvbignLS1zbmFwc2hvdHMnLCAnUmVtb3ZlIGFsbCBcIl9fc25hcHNob3RzX19cIiBkaXJlY3Rvcmllcy4nKVxuICAuYWN0aW9uKChjbWQpID0+IGNsZWFuKGNtZCwgcHJvY2Vzcy5leGl0KS50aGVuKCgpID0+IHt9KSk7XG5cbnByb2dyYW0uY29tbWFuZCgnY29uZmlnIDx0eXBlPicpXG4gIC5vcHRpb24oJy0tcXVpZXQnLCAnTm8gTGV4IG5vdGlmaWNhdGlvbnMgcHJpbnRlZCBpbiB0aGUgY29uc29sZS4nKVxuICAub3B0aW9uKCctLWpzb24gPHBhdGg+JywgJ1NhdmUgb3V0cHV0IHRvIGpzb24gZmlsZS4nKVxuICAuYWN0aW9uKCh0eXBlLCBjbWQpID0+IGNvbmZpZyh0eXBlLCBjbWQsIHByb2Nlc3MuZXhpdCkudGhlbigoKSA9PiB7fSkpO1xuXG5wcm9ncmFtLmNvbW1hbmQoJ2NvbXBpbGUnKVxuICAub3B0aW9uKCctLWNvbmZpZyA8cGF0aD4nLCAnVHJhbnNwaWxlciBjb25maWd1cmF0aW9uIGZpbGUgcGF0aCAoaWUuIHRzY29uZmlnLmpzb24pLicpXG4gIC5vcHRpb24oJy0tZW52aXJvbm1lbnQgPG4+JywgJ1RhcmdldCBlbnZpcm9ubWVudC4gXCJub2RlXCIgb3IgXCJ3ZWJcIi4gRGVmYXVsdDogXCJub2RlXCIuJylcbiAgLm9wdGlvbignLS1sZXhDb25maWcgPHBhdGg+JywgJ0N1c3RvbSBMZXggY29uZmlndXJhdGlvbiBmaWxlIHBhdGggKGllLiBsZXguY29uZmlnLmpzKS4nKVxuICAub3B0aW9uKCctLW91dHB1dFBhdGggPHBhdGg+JywgJ091dHB1dCBwYXRoJylcbiAgLm9wdGlvbignLS1yZW1vdmUnLCAnUmVtb3ZlcyBhbGwgZmlsZXMgZnJvbSB0aGUgb3V0cHV0IGRpcmVjdG9yeSBiZWZvcmUgY29tcGlsaW5nLicpXG4gIC5vcHRpb24oJy0tc291cmNlUGF0aCA8cGF0aD4nLCAnU291cmNlIHBhdGgnKVxuICAub3B0aW9uKCctLXR5cGVzY3JpcHQnLCAnVHJhbnNwaWxlIGFzIFR5cGVzY3JpcHQuJylcbiAgLm9wdGlvbignLS1xdWlldCcsICdObyBMZXggbm90aWZpY2F0aW9ucyBwcmludGVkIGluIHRoZSBjb25zb2xlLicpXG4gIC5vcHRpb24oJy0td2F0Y2gnLCAnV2F0Y2hlcyBmb3IgY2hhbmdlcyBhbmQgY29tcGlsZXMuJylcbiAgLmFjdGlvbigoY21kKSA9PiBjb21waWxlKGNtZCwgcHJvY2Vzcy5leGl0KS50aGVuKCgpID0+IHt9KSk7XG5cbnByb2dyYW0uY29tbWFuZCgnY3JlYXRlIDx0eXBlPicpXG4gIC5vcHRpb24oJy0tb3V0cHV0RmlsZSA8cGF0aD4nLCAnT3V0cHV0IGZpbGVuYW1lLicpXG4gIC5vcHRpb24oJy0tb3V0cHV0TmFtZSA8bj4nLCAnT3V0cHV0IG5hbWUuJylcbiAgLm9wdGlvbignLS1xdWlldCcsICdObyBMZXggbm90aWZpY2F0aW9ucyBwcmludGVkIGluIHRoZSBjb25zb2xlLicpXG4gIC5vcHRpb24oJy0tdHlwZXNjcmlwdCcsICdDcmVhdGUgVHlwZXNjcmlwdCB2ZXJzaW9uLicpXG4gIC5hY3Rpb24oKHR5cGUsIGNtZCkgPT4gY3JlYXRlKHR5cGUsIGNtZCwgcHJvY2Vzcy5leGl0KS50aGVuKCgpID0+IHt9KSk7XG5cbnByb2dyYW0uY29tbWFuZCgnZGV2JylcbiAgLm9wdGlvbignLS1idW5kbGVBbmFseXplcicsICdSdW4gYnVuZGxlIGFuYWx5emVyLicpXG4gIC5vcHRpb24oJy0tY29uZmlnIDxwYXRoPicsICdDdXN0b20gV2VicGFjayBjb25maWd1cmF0aW9uIGZpbGUgcGF0aCAoaWUuIHdlYnBhY2suY29uZmlnLmpzKS4nKVxuICAub3B0aW9uKCctLWxleENvbmZpZyA8cGF0aD4nLCAnQ3VzdG9tIExleCBjb25maWd1cmF0aW9uIGZpbGUgcGF0aCAoaWUuIGxleC5jb25maWcuanMpLicpXG4gIC5vcHRpb24oJy0tb3BlbicsICdBdXRvbWF0aWNhbGx5IG9wZW4gZGV2IHNlcnZlciBpbiBhIG5ldyBicm93c2VyIHdpbmRvdy4nKVxuICAub3B0aW9uKCctLW91dHB1dFBhdGggPHBhdGg+JywgJ091dHB1dCBwYXRoJylcbiAgLm9wdGlvbignLS1xdWlldCcsICdObyBMZXggbm90aWZpY2F0aW9ucyBwcmludGVkIGluIHRoZSBjb25zb2xlLicpXG4gIC5vcHRpb24oJy0tcmVtb3ZlJywgJ1JlbW92ZXMgYWxsIGZpbGVzIGZyb20gdGhlIG91dHB1dCBkaXJlY3RvcnkgYmVmb3JlIGNvbXBpbGluZy4nKVxuICAub3B0aW9uKCctLXNvdXJjZVBhdGggPHBhdGg+JywgJ1NvdXJjZSBwYXRoJylcbiAgLm9wdGlvbignLS10cmFuc2xhdGlvbnMnLCAnUHJvY2VzcyB0cmFuc2xhdGlvbiBmaWxlcyBhbmQgb3V0cHV0IGZsYXR0ZW5lZCBKU09OLicsIGZhbHNlKVxuICAub3B0aW9uKCctLXR5cGVzY3JpcHQnLCAnVHJhbnNwaWxlIGFzIFR5cGVzY3JpcHQuJylcbiAgLm9wdGlvbignLS11c2VQdWJsaWNJcCcsICdGb3JjZSByZWZyZXNoIHRoZSBjYWNoZWQgcHVibGljIElQIGFkZHJlc3MuJylcbiAgLm9wdGlvbignLS12YXJpYWJsZXMgPG4+JywgJ0Vudmlyb25tZW50IHZhcmlhYmxlcyB0byBzZXQgaW4gXCJwcm9jZXNzLmVudlwiLiAoaWUuIFwie05PREVfRU5WOiBcXCdkZXZlbG9wbWVudFxcJ31cIikuJylcbiAgLm9wdGlvbignLS13YXRjaCcsICdXYXRjaCBmb3IgY2hhbmdlcy4nKVxuICAuYWN0aW9uKChjbWQpID0+IGRldihjbWQsIHByb2Nlc3MuZXhpdCkudGhlbigoKSA9PiB7fSkpO1xuXG5wcm9ncmFtLmNvbW1hbmQoJ2luaXQgPGFwcE5hbWU+IFtwYWNrYWdlTmFtZV0nKVxuICAub3B0aW9uKCctLWluc3RhbGwnLCAnSW5zdGFsbCBkZXBlbmRlbmNpZXMuJylcbiAgLmFkZE9wdGlvbihuZXcgT3B0aW9uKCctLXBhY2thZ2UtbWFuYWdlciA8bWFuYWdlcj4nLCAnV2hpY2ggcGFja2FnZSBtYW5hZ2VyIHRvIHVzZS4gRGVmYXVsdDogbnBtJykuY2hvaWNlcyhbJ25wbScsICd5YXJuJ10pLmRlZmF1bHQoJ25wbScpKVxuICAub3B0aW9uKCctLXF1aWV0JywgJ05vIExleCBub3RpZmljYXRpb25zIHByaW50ZWQgaW4gdGhlIGNvbnNvbGUuJylcbiAgLm9wdGlvbignLS10eXBlc2NyaXB0JywgJ1VzZSBhIFR5cGVzY3JpcHQgYmFzZWQgYXBwLicpXG4gIC5hY3Rpb24oKGFwcE5hbWUsIHBhY2thZ2VOYW1lLCBjbWQpID0+IGluaXQoYXBwTmFtZSwgcGFja2FnZU5hbWUsIGNtZCwgcHJvY2Vzcy5leGl0KS50aGVuKCgpID0+IHt9KSk7XG5cbnByb2dyYW0uY29tbWFuZCgnbGlua2VkJylcbiAgLm9wdGlvbignLS1xdWlldCcsICdObyBMZXggbm90aWZpY2F0aW9ucyBwcmludGVkIGluIHRoZSBjb25zb2xlLicpXG4gIC5hY3Rpb24oKGNtZCkgPT4gbGlua2VkKGNtZCwgcHJvY2Vzcy5leGl0KS50aGVuKCgpID0+IHt9KSk7XG5cbnByb2dyYW0uY29tbWFuZCgnbGludCcpXG4gIC5vcHRpb24oJy0tY2FjaGUnLCAnT25seSBjaGVjayBjaGFuZ2VkIGZpbGVzLiBEZWZhdWx0OiBmYWxzZS4nLCBmYWxzZSlcbiAgLm9wdGlvbignLS1jYWNoZUxvY2F0aW9uIDxwYXRoPicsICdQYXRoIHRvIHRoZSBjYWNoZSBmaWxlIG9yIGRpcmVjdG9yeS4nKVxuICAub3B0aW9uKCctLWNvbG9yJywgJ0ZvcmNlIGVuYWJsaW5nIG9mIGNvbG9yLicsIGZhbHNlKVxuICAub3B0aW9uKCctLWNvbmZpZyA8cGF0aD4nLCAnVXNlIHRoaXMgY29uZmlndXJhdGlvbiwgb3ZlcnJpZGluZyAuZXNsaW50cmMuKiBjb25maWcgb3B0aW9ucyBpZiBwcmVzZW50LiBJZiBub3Qgc3BlY2lmaWVkIGFuZCBubyBsb2NhbCBjb25maWcgZXhpc3RzLCBMZXggd2lsbCB1c2UgaXRzIGRlZmF1bHQgY29uZmlnLicpXG4gIC5vcHRpb24oJy0tZGVidWcnLCAnT3V0cHV0IGRlYnVnZ2luZyBpbmZvcm1hdGlvbi4nLCBmYWxzZSlcbiAgLm9wdGlvbignLS1lbnZJbmZvJywgJ091dHB1dCBleGVjdXRpb24gZW52aXJvbm1lbnQgaW5mb3JtYXRpb24uIERlZmF1bHQ6IGZhbHNlLicsIGZhbHNlKVxuICAub3B0aW9uKCctLWVudiA8bj4nLCAnU3BlY2lmeSBlbnZpcm9ubWVudHMuJylcbiAgLm9wdGlvbignLS1maXgnLCAnQXBwbHkgQUkgZml4ZXMgYWZ0ZXIgYnVpbHQtaW4gRVNMaW50IGZpeGVzIChzYW1lIGFzIC0tZml4KS4nLCBmYWxzZSlcbiAgLm9wdGlvbignLS1maXhEcnlSdW4nLCAnQXV0b21hdGljYWxseSBmaXggcHJvYmxlbXMgd2l0aG91dCBzYXZpbmcgdGhlIGNoYW5nZXMgdG8gdGhlIGZpbGUgc3lzdGVtLicsIGZhbHNlKVxuICAub3B0aW9uKCctLWZpeFR5cGUgPHR5cGU+JywgJ1NwZWNpZnkgdGhlIHR5cGVzIG9mIGZpeGVzIHRvIGFwcGx5IChwcm9ibGVtLCBzdWdnZXN0aW9uLCBsYXlvdXQpLicpXG4gIC5vcHRpb24oJy0tZm9ybWF0IDxuPicsICdVc2UgYSBzcGVjaWZpYyBvdXRwdXQgZm9ybWF0LiBEZWZhdWx0OiBzdHlsaXNoLicpXG4gIC5vcHRpb24oJy0tZ2xvYmFsIDx2YXJpYWJsZXM+JywgJ0RlZmluZSBnbG9iYWwgdmFyaWFibGVzLicpXG4gIC5vcHRpb24oJy0taWdub3JlUGF0aCA8cGF0aD4nLCAnU3BlY2lmeSBwYXRoIG9mIGlnbm9yZSBmaWxlLicpXG4gIC5vcHRpb24oJy0taWdub3JlUGF0dGVybiA8cGF0dGVybj4nLCAnUGF0dGVybiBvZiBmaWxlcyB0byBpZ25vcmUgKGluIGFkZGl0aW9uIHRvIHRob3NlIGluIC5lc2xpbnRpZ25vcmUpLicpXG4gIC5vcHRpb24oJy0taW5pdCcsICdSdW4gY29uZmlnIGluaXRpYWxpemF0aW9uIHdpemFyZC4gRGVmYXVsdDogZmFsc2UuJywgZmFsc2UpXG4gIC5vcHRpb24oJy0tbWF4V2FybmluZ3MgPG51bT4nLCAnTnVtYmVyIG9mIHdhcm5pbmdzIHRvIHRyaWdnZXIgbm9uemVybyBleGl0IGNvZGUuIERlZmF1bHQ6IC0xLicpXG4gIC5vcHRpb24oJy0tbm9Db2xvcicsICdGb3JjZSBkaXNhYmxpbmcgb2YgY29sb3IuJywgZmFsc2UpXG4gIC5vcHRpb24oJy0tbm9Fc2xpbnRyYycsICdEaXNhYmxlIHVzZSBvZiBjb25maWd1cmF0aW9uIGZyb20gLmVzbGludHJjLiouJywgZmFsc2UpXG4gIC5vcHRpb24oJy0tbm9JZ25vcmUnLCAnRGlzYWJsZSB1c2Ugb2YgaWdub3JlIGZpbGVzIGFuZCBwYXR0ZXJucy4nLCBmYWxzZSlcbiAgLm9wdGlvbignLS1ub0lubGluZUNvbmZpZycsICdQcmV2ZW50IGNvbW1lbnRzIGZyb20gY2hhbmdpbmcgY29uZmlnIG9yIHJ1bGVzLicsIGZhbHNlKVxuICAub3B0aW9uKCctLW91dHB1dEZpbGUgPHBhdGg+JywgJ1NwZWNpZnkgZmlsZSB0byB3cml0ZSByZXBvcnQgdG8uJylcbiAgLm9wdGlvbignLS1wYXJzZXIgPG4+JywgJ1NwZWNpZnkgdGhlIHBhcnNlciB0byBiZSB1c2VkLicpXG4gIC5vcHRpb24oJy0tcGFyc2VyT3B0aW9ucyA8b3B0aW9ucz4nLCAnU3BlY2lmeSBwYXJzZXIgb3B0aW9ucy4nKVxuICAub3B0aW9uKCctLXBsdWdpbiA8cGx1Z2lucz4nLCAnU3BlY2lmeSBwbHVnaW5zLicpXG4gIC5vcHRpb24oJy0tcHJpbnRDb25maWcgPHBhdGg+JywgJ1ByaW50IHRoZSBjb25maWd1cmF0aW9uIGZvciB0aGUgZ2l2ZW4gZmlsZS4nKVxuICAub3B0aW9uKCctLXF1aWV0JywgJ05vIExleCBub3RpZmljYXRpb25zIHByaW50ZWQgaW4gdGhlIGNvbnNvbGUuJywgZmFsc2UpXG4gIC5vcHRpb24oJy0tcmVtb3ZlLWNvbW1lbnRzJywgJ1JlbW92ZSBhbGwgY29tbWVudHMgZXhjZXB0IFRPRE9zIGFuZCBjb3B5cmlnaHQgbm90aWNlcy4nLCBmYWxzZSlcbiAgLm9wdGlvbignLS1yZXBvcnRVbnVzZWREaXNhYmxlRGlyZWN0aXZlcycsICdBZGRzIHJlcG9ydGVkIGVycm9ycyBmb3IgdW51c2VkIGVzbGludC1kaXNhYmxlIGRpcmVjdGl2ZXMuJywgZmFsc2UpXG4gIC5vcHRpb24oJy0tcmVzb2x2ZVBsdWdpbnNSZWxhdGl2ZVRvIDxwYXRoPicsICdBIGZvbGRlciB3aGVyZSBwbHVnaW5zIHNob3VsZCBiZSByZXNvbHZlZCBmcm9tLicpXG4gIC5vcHRpb24oJy0tcnVsZSA8cGF0aD4nLCAnU3BlY2lmeSBydWxlcy4nKVxuICAub3B0aW9uKCctLXJ1bGVzZGlyIDxwYXRoPicsICdVc2UgYWRkaXRpb25hbCBydWxlcyBmcm9tIHRoaXMgZGlyZWN0b3J5LicpXG4gIC5vcHRpb24oJy0tc3RkaW4nLCAnTGludCBjb2RlIHByb3ZpZGVkIG9uIDxTVERJTj4gLSBEZWZhdWx0OiBmYWxzZS4nLCBmYWxzZSlcbiAgLm9wdGlvbignLS1zdGRpbkZpbGVuYW1lIDxuPicsICdTcGVjaWZ5IGZpbGVuYW1lIHRvIHByb2Nlc3MgU1RESU4gYXMuJylcbiAgLmFjdGlvbigoY21kKSA9PiBsaW50KGNtZCwgcHJvY2Vzcy5leGl0KS50aGVuKCgpID0+IHt9KSk7XG5cbnByb2dyYW0uY29tbWFuZCgnbWlncmF0ZScpXG4gIC5vcHRpb24oJy1xLCAtLXF1aWV0JywgJ05vIExleCBub3RpZmljYXRpb25zIHByaW50ZWQgaW4gdGhlIGNvbnNvbGUuJylcbiAgLmFjdGlvbigoY21kKSA9PiBtaWdyYXRlKGNtZCwgcHJvY2Vzcy5leGl0KS50aGVuKCgpID0+IHt9KSk7XG5cbnByb2dyYW0uY29tbWFuZCgncHVibGlzaCcpXG4gIC5hZGRPcHRpb24obmV3IE9wdGlvbignLS1idW1wIDx0eXBlPicsICdJbmNyZW1lbnRzIHRoZSB2ZXJzaW9uLiBUeXBlcyBpbmNsdWRlOiBtYWpvciwgbWlub3IsIHBhdGNoLCBiZXRhLCBhbHBoYSwgcmMuIERlZmF1bHQ6IFwicGF0Y2hcIi4nKS5jaG9pY2VzKFsnbWFqb3InLCAnbWlub3InLCAncGF0Y2gnLCAnYmV0YScsICdhbHBoYScsICdyYyddKS5kZWZhdWx0KCdwYXRjaCcpKVxuICAub3B0aW9uKCctLW5ld1ZlcnNpb24gPHZlcnNpb25OdW1iZXI+JywgJ1B1Ymxpc2ggYXMgYSBzcGVjaWZpYyB2ZXJzaW9uLicpXG4gIC5vcHRpb24oJy0tb3RwIDxjb2RlPicsICdQcm92aWRlIGEgdHdvLWZhY3RvciBjb2RlLicpXG4gIC5hZGRPcHRpb24obmV3IE9wdGlvbignLS1wYWNrYWdlLW1hbmFnZXIgPG1hbmFnZXI+JywgJ1doaWNoIHBhY2thZ2UgbWFuYWdlciB0byB1c2UuIERlZmF1bHQ6IG5wbScpLmNob2ljZXMoWyducG0nLCAneWFybiddKS5kZWZhdWx0KCducG0nKSlcbiAgLm9wdGlvbignLS1wcml2YXRlJywgJ1B1Ymxpc2hlcyB0aGUgbW9kdWxlIGFzIHJlc3RyaWN0ZWQuJylcbiAgLm9wdGlvbignLS1xdWlldCcsICdObyBMZXggbm90aWZpY2F0aW9ucyBwcmludGVkIGluIHRoZSBjb25zb2xlLicpXG4gIC5vcHRpb24oJy0tdGFnIDx0YWc+JywgJ1JlZ2lzdGVycyB0aGUgcHVibGlzaGVkIHBhY2thZ2Ugd2l0aCB0aGUgZ2l2ZW4gdGFnLicpXG4gIC5hY3Rpb24oKGNtZCkgPT4gcHVibGlzaChjbWQsIHByb2Nlc3MuZXhpdCkudGhlbigoKSA9PiB7fSkpO1xuXG5wcm9ncmFtLmNvbW1hbmQoJ3NlcnZlcmxlc3MnKVxuICAub3B0aW9uKCctLWNvbmZpZyA8cGF0aD4nLCAnQ3VzdG9tIGNvbmZpZ3VyYXRpb24gZmlsZSBwYXRoIChkZWZhdWx0OiBsZXguY29uZmlnLm1qcykuJylcbiAgLm9wdGlvbignLS1ob3N0IDxob3N0PicsICdIb3N0IHRvIGJpbmQgdGhlIHNlcnZlciB0byAoZGVmYXVsdDogbG9jYWxob3N0KS4nKVxuICAub3B0aW9uKCctLWh0dHBQb3J0IDxwb3J0PicsICdIVFRQIHNlcnZlciBwb3J0IChkZWZhdWx0OiAzMDAwKS4nKVxuICAub3B0aW9uKCctLWh0dHBzUG9ydCA8cG9ydD4nLCAnSFRUUFMgc2VydmVyIHBvcnQgKGRlZmF1bHQ6IDMwMDEpLicpXG4gIC5vcHRpb24oJy0td3NQb3J0IDxwb3J0PicsICdXZWJTb2NrZXQgc2VydmVyIHBvcnQgKGRlZmF1bHQ6IDMwMDIpLicpXG4gIC5vcHRpb24oJy0tcXVpZXQnLCAnTm8gTGV4IG5vdGlmaWNhdGlvbnMgcHJpbnRlZCBpbiB0aGUgY29uc29sZS4nKVxuICAub3B0aW9uKCctLXJlbW92ZScsICdSZW1vdmVzIGFsbCBmaWxlcyBmcm9tIHRoZSBvdXRwdXQgZGlyZWN0b3J5IGJlZm9yZSBzdGFydGluZy4nKVxuICAub3B0aW9uKCctLXVzZVB1YmxpY0lwJywgJ0ZvcmNlIHJlZnJlc2ggdGhlIGNhY2hlZCBwdWJsaWMgSVAgYWRkcmVzcy4nKVxuICAub3B0aW9uKCctLXZhcmlhYmxlcyA8anNvbj4nLCAnRW52aXJvbm1lbnQgdmFyaWFibGVzIHRvIHNldCBpbiBwcm9jZXNzLmVudi4nKVxuICAub3B0aW9uKCctLWRlYnVnJywgJ0VuYWJsZSBHcmFwaFFMIGRlYnVnIGxvZ2dpbmcgdG8gc2VlIHF1ZXJpZXMsIHZhcmlhYmxlcywgYW5kIG9wZXJhdGlvbnMuJylcbiAgLm9wdGlvbignLS1wcmludE91dHB1dCcsICdQcmludCBHcmFwaFFMIHJlc3BvbnNlIG91dHB1dCBpbmNsdWRpbmcgc3RhdHVzLCBoZWFkZXJzLCBhbmQgYm9keS4nKVxuICAuYWN0aW9uKChjbWQpID0+IHNlcnZlcmxlc3MoY21kLCBwcm9jZXNzLmV4aXQpLnRoZW4oKCkgPT4ge30pKTtcblxucHJvZ3JhbS5jb21tYW5kKCdzdG9yeWJvb2snKVxuICAub3B0aW9uKCctLWNvbmZpZyA8cGF0aD4nLCAnQ3VzdG9tIFN0b3J5Ym9vayBjb25maWd1cmF0aW9uIGRpcmVjdG9yeSBwYXRoIChpZS4gLnN0b3J5Ym9vaykuJylcbiAgLm9wdGlvbignLS1sZXhDb25maWcgPHBhdGg+JywgJ0N1c3RvbSBMZXggY29uZmlndXJhdGlvbiBmaWxlIHBhdGggKGllLiBsZXguY29uZmlnLmpzKS4nKVxuICAub3B0aW9uKCctLW9wZW4nLCAnQXV0b21hdGljYWxseSBvcGVuIFN0b3J5Ym9vayBpbiBhIG5ldyBicm93c2VyIHdpbmRvdy4nKVxuICAub3B0aW9uKCctLXBvcnQgPG51bWJlcj4nLCAnUG9ydCBudW1iZXIgZm9yIHRoZSBTdG9yeWJvb2sgc2VydmVyLicpXG4gIC5vcHRpb24oJy0tcXVpZXQnLCAnTm8gTGV4IG5vdGlmaWNhdGlvbnMgcHJpbnRlZCBpbiB0aGUgY29uc29sZS4nKVxuICAub3B0aW9uKCctLXN0YXRpYycsICdCdWlsZCBhIHN0YXRpYyBTdG9yeWJvb2sgc2l0ZSBpbnN0ZWFkIG9mIHN0YXJ0aW5nIGRldiBzZXJ2ZXIuJylcbiAgLm9wdGlvbignLS12YXJpYWJsZXMgPG4+JywgJ0Vudmlyb25tZW50IHZhcmlhYmxlcyB0byBzZXQgaW4gXCJwcm9jZXNzLmVudlwiLiAoaWUuIFwie1NUT1JZQk9PS19USEVNRTogXFwnZGFya1xcJ31cIikuJylcbiAgLm9wdGlvbignLS12ZXJib3NlJywgJ1Nob3cgZGV0YWlsZWQgd2VicGFjayBwcm9ncmVzcyBvdXRwdXQuJylcbiAgLmFjdGlvbigoY21kKSA9PiBzdG9yeWJvb2soY21kLCBwcm9jZXNzLmV4aXQpLnRoZW4oKCkgPT4ge30pKTtcblxucHJvZ3JhbS5jb21tYW5kKCd0ZXN0JylcbiAgLm9wdGlvbignLS1hbmFseXplJywgJ1VzZSBBSSB0byBhbmFseXplIHRlc3QgY292ZXJhZ2UgYW5kIHN1Z2dlc3QgaW1wcm92ZW1lbnRzLicsIGZhbHNlKVxuICAub3B0aW9uKCctLWRlYnVnVGVzdHMnLCAnVXNlIEFJIHRvIGRlYnVnIHRlc3QgZmFpbHVyZXMgYW5kIHN1Z2dlc3QgZml4ZXMuJywgZmFsc2UpXG4gIC5vcHRpb24oJy0tZ2VuZXJhdGUnLCAnVXNlIEFJIHRvIGdlbmVyYXRlIHRlc3QgY2FzZXMgZm9yIHVudGVzdGVkIGNvZGUuJywgZmFsc2UpXG4gIC5vcHRpb24oJy0tYmFpbCcsICdFeGl0IHRoZSB0ZXN0IHN1aXRlIGltbWVkaWF0ZWx5IHVwb24gdGhlIGZpcnN0IGZhaWxpbmcgdGVzdCBzdWl0ZS4nKVxuICAub3B0aW9uKCctLWNoYW5nZWRGaWxlc1dpdGhBbmNlc3RvcicsICdSdW5zIHRlc3RzIHJlbGF0ZWQgdG8gdGhlIGN1cnJlbnQgY2hhbmdlcyBhbmQgdGhlIGNoYW5nZXMgbWFkZSBpbiB0aGUgbGFzdCBjb21taXQuJylcbiAgLm9wdGlvbignLS1jaGFuZ2VkU2luY2UnLCAnUnVucyB0ZXN0cyByZWxhdGVkIHRoZSBjaGFuZ2VzIHNpbmNlIHRoZSBwcm92aWRlZCBicmFuY2guJylcbiAgLm9wdGlvbignLS1jaScsICdXaGVuIHRoaXMgb3B0aW9uIGlzIHByb3ZpZGVkLCBKZXN0IHdpbGwgYXNzdW1lIGl0IGlzIHJ1bm5pbmcgaW4gYSBDSSBlbnZpcm9ubWVudC4nKVxuICAub3B0aW9uKCctLWNsZWFyQ2FjaGUnLCAnQ2xlYXIgSmVzdCBjYWNoZS4nKVxuICAub3B0aW9uKCctLWNvbGxlY3RDb3ZlcmFnZUZyb20gPGdsb2I+JywgJ0EgZ2xvYiBwYXR0ZXJuIHJlbGF0aXZlIHRvIG1hdGNoaW5nIHRoZSBmaWxlcyB0aGF0IGNvdmVyYWdlIGluZm8gbmVlZHMgdG8gYmUgY29sbGVjdGVkIGZyb20uJylcbiAgLm9wdGlvbignLS1jb2xvcnMnLCAnRm9yY2VzIHRlc3QgcmVzdWx0cyBvdXRwdXQgaGlnaGxpZ2h0aW5nIGV2ZW4gaWYgc3Rkb3V0IGlzIG5vdCBhIFRUWS4nKVxuICAub3B0aW9uKCctLWNvbmZpZyA8cGF0aD4nLCAnQ3VzdG9tIEplc3QgY29uZmlndXJhdGlvbiBmaWxlIHBhdGggKGllLiBqZXN0LmNvbmZpZy5qcykuJylcbiAgLm9wdGlvbignLS1kZWJ1ZycsICdQcmludCBkZWJ1Z2dpbmcgaW5mbyBhYm91dCB5b3VyIEplc3QgY29uZmlnLicpXG4gIC5vcHRpb24oJy0tZGV0ZWN0T3BlbkhhbmRsZXMnLCAnQXR0ZW1wdCB0byBjb2xsZWN0IGFuZCBwcmludCBvcGVuIGhhbmRsZXMgcHJldmVudGluZyBKZXN0IGZyb20gZXhpdGluZyBjbGVhbmx5JylcbiAgLm9wdGlvbignLS1lbnZpcm9ubWVudCA8bj4nLCAnVGFyZ2V0IGVudmlyb25tZW50LiBcIm5vZGVcIiBvciBcIndlYlwiLiBEZWZhdWx0OiBcIm5vZGVcIi4nKVxuICAub3B0aW9uKCctLWVudicsICdUaGUgdGVzdCBlbnZpcm9ubWVudCB1c2VkIGZvciBhbGwgdGVzdHMuIFRoaXMgY2FuIHBvaW50IHRvIGFueSBmaWxlIG9yIG5vZGUgbW9kdWxlLiBFeGFtcGxlczoganNkb20sIG5vZGUgb3IgcGF0aC90by9teS1lbnZpcm9ubWVudC5qcy4nKVxuICAub3B0aW9uKCctLWVycm9yT25EZXByZWNhdGVkJywgJ01ha2UgY2FsbGluZyBkZXByZWNhdGVkIEFQSXMgdGhyb3cgaGVscGZ1bCBlcnJvciBtZXNzYWdlcy4nKVxuICAub3B0aW9uKCctLWV4cGFuZCcsICdVc2UgdGhpcyBmbGFnIHRvIHNob3cgZnVsbCBkaWZmcyBhbmQgZXJyb3JzIGluc3RlYWQgb2YgYSBwYXRjaC4nKVxuICAub3B0aW9uKCctLWZvcmNlRXhpdCcsICdGb3JjZSBKZXN0IHRvIGV4aXQgYWZ0ZXIgYWxsIHRlc3RzIGhhdmUgY29tcGxldGVkIHJ1bm5pbmcuJylcbiAgLm9wdGlvbignLS1qc29uJywgJ1ByaW50cyB0aGUgdGVzdCByZXN1bHRzIGluIEpTT04uJylcbiAgLm9wdGlvbignLS1sYXN0Q29tbWl0JywgJ1J1biBhbGwgdGVzdHMgYWZmZWN0ZWQgYnkgZmlsZSBjaGFuZ2VzIGluIHRoZSBsYXN0IGNvbW1pdCBtYWRlLicpXG4gIC5vcHRpb24oJy0tbGV4Q29uZmlnIDxwYXRoPicsICdDdXN0b20gTGV4IGNvbmZpZ3VyYXRpb24gZmlsZSBwYXRoIChpZS4gbGV4LmNvbmZpZy5qcykuJylcbiAgLm9wdGlvbignLS1saXN0VGVzdHMnLCAnTGlzdHMgYWxsIHRlc3RzIGFzIEpTT04gdGhhdCBKZXN0IHdpbGwgcnVuIGdpdmVuIHRoZSBhcmd1bWVudHMsIGFuZCBleGl0cy4nKVxuICAub3B0aW9uKCctLWxvZ0hlYXBVc2FnZScsICdMb2dzIHRoZSBoZWFwIHVzYWdlIGFmdGVyIGV2ZXJ5IHRlc3QuJylcbiAgLm9wdGlvbignLS1tYXhXb3JrZXJzIDxudW0+JywgJ1NwZWNpZmllcyB0aGUgbWF4aW11bSBudW1iZXIgb2Ygd29ya2VycyB0aGUgd29ya2VyLXBvb2wgd2lsbCBzcGF3biBmb3IgcnVubmluZyB0ZXN0cy4gJylcbiAgLm9wdGlvbignLS1ub1N0YWNrVHJhY2UnLCAnRGlzYWJsZXMgc3RhY2sgdHJhY2UgaW4gdGVzdCByZXN1bHRzIG91dHB1dC4nKVxuICAub3B0aW9uKCctLW5vdGlmeScsICdBY3RpdmF0ZXMgbm90aWZpY2F0aW9ucyBmb3IgdGVzdCByZXN1bHRzLicpXG4gIC5vcHRpb24oJy0tb25seUNoYW5nZWQnLCAndW4gYmFzZWQgb24gd2hpY2ggZmlsZXMgaGF2ZSBjaGFuZ2VkIGluIHRoZSBjdXJyZW50IHJlcG9zaXRvcnkuICcpXG4gIC5vcHRpb24oJy0tb3V0cHV0RmlsZSA8ZmlsZW5hbWU+JywgJ1dyaXRlIHRlc3QgcmVzdWx0cyB0byBhIGZpbGUgd2hlbiB0aGUgLS1qc29uIG9wdGlvbiBpcyBhbHNvIHNwZWNpZmllZC4nKVxuICAub3B0aW9uKCctLXBhc3NXaXRoTm9UZXN0cycsICdBbGxvd3MgdGhlIHRlc3Qgc3VpdGUgdG8gcGFzcyB3aGVuIG5vIGZpbGVzIGFyZSBmb3VuZC4nKVxuICAub3B0aW9uKCctLXF1aWV0JywgJ05vIExleCBub3RpZmljYXRpb25zIHByaW50ZWQgaW4gdGhlIGNvbnNvbGUuJylcbiAgLm9wdGlvbignLS1ydW5JbkJhbmQnLCAnUnVuIGFsbCB0ZXN0cyBzZXJpYWxseSBpbiB0aGUgY3VycmVudCBwcm9jZXNzLCByYXRoZXIgdGhhbiBjcmVhdGluZyBhIHdvcmtlciBwb29sIG9mIGNoaWxkIHByb2Nlc3NlcyB0aGF0IHJ1biB0ZXN0cy4nKVxuICAub3B0aW9uKCctLXNldHVwIDxwYXRoPicsICdKZXN0IHNldHVwIGZpbGUgcGF0aC4nKVxuICAub3B0aW9uKCctLXNob3dDb25maWcnLCAnUHJpbnQgeW91ciBKZXN0IGNvbmZpZyBhbmQgdGhlbiBleGl0cy4nKVxuICAub3B0aW9uKCctLXNpbGVudCcsICdQcmV2ZW50IHRlc3RzIGZyb20gcHJpbnRpbmcgbWVzc2FnZXMgdGhyb3VnaCB0aGUgY29uc29sZS4nKVxuICAub3B0aW9uKCctLXRlc3RMb2NhdGlvbkluUmVzdWx0cycsICdBZGRzIGEgbG9jYXRpb24gZmllbGQgdG8gdGVzdCByZXN1bHRzLicpXG4gIC5vcHRpb24oJy0tdGVzdE5hbWVQYXR0ZXJuIDxyZWdleD4nLCAnUnVuIG9ubHkgdGVzdHMgd2l0aCBhIG5hbWUgdGhhdCBtYXRjaGVzIHRoZSByZWdleC4gJylcbiAgLm9wdGlvbignLS10ZXN0UGF0aFBhdHRlcm4gPHJlZ2V4PicsICdBIHJlZ2V4cCBwYXR0ZXJuIHN0cmluZyB0aGF0IGlzIG1hdGNoZWQgYWdhaW5zdCBhbGwgdGVzdHMgcGF0aHMgYmVmb3JlIGV4ZWN1dGluZyB0aGUgdGVzdC4nKVxuICAub3B0aW9uKCctLXR5cGVzY3JpcHQnLCAnVHJhbnNwaWxlIGFzIFR5cGVzY3JpcHQuJylcbiAgLm9wdGlvbignLS11cGRhdGUnLCAnVXBkYXRlIHNuYXBzaG90cy4gUnVucyBcImplc3QgLS11cGRhdGVTbmFwc2hvdHNcIicpXG4gIC5vcHRpb24oJy0tdXNlU3RkZXJyJywgJ0RpdmVydCBhbGwgb3V0cHV0IHRvIHN0ZGVyci4nKVxuICAub3B0aW9uKCctLXZlcmJvc2UnLCAnRGlzcGxheSBpbmRpdmlkdWFsIHRlc3QgcmVzdWx0cyB3aXRoIHRoZSB0ZXN0IHN1aXRlIGhpZXJhcmNoeS4nKVxuICAub3B0aW9uKCctLXdhdGNoIDxwYXRoPicsICdXYXRjaCBmaWxlcyBmb3IgY2hhbmdlcyBhbmQgcmVydW4gdGVzdHMgcmVsYXRlZCB0byBjaGFuZ2VkIGZpbGVzLicpXG4gIC5vcHRpb24oJy0td2F0Y2hBbGwnLCAnV2F0Y2ggZmlsZXMgZm9yIGNoYW5nZXMgYW5kIHJlcnVuIGFsbCB0ZXN0cyB3aGVuIHNvbWV0aGluZyBjaGFuZ2VzLicpXG4gIC5hY3Rpb24oKG9wdGlvbnMsIGNtZCkgPT4gdGVzdChvcHRpb25zLCBjbWQuYXJncywgcHJvY2Vzcy5leGl0KS50aGVuKCgpID0+IHt9KSk7XG5cbnByb2dyYW0uY29tbWFuZCgndXBkYXRlJylcbiAgLm9wdGlvbignLS1pbnRlcmFjdGl2ZScsICdDaG9vc2Ugd2hpY2ggcGFja2FnZXMgdG8gdXBkYXRlLicpXG4gIC5hZGRPcHRpb24obmV3IE9wdGlvbignLS1wYWNrYWdlLW1hbmFnZXIgPG1hbmFnZXI+JywgJ1doaWNoIHBhY2thZ2UgbWFuYWdlciB0byB1c2UuIERlZmF1bHQ6IG5wbScpLmNob2ljZXMoWyducG0nLCAneWFybiddKS5kZWZhdWx0KCducG0nKSlcbiAgLm9wdGlvbignLS1xdWlldCcsICdObyBMZXggbm90aWZpY2F0aW9ucyBwcmludGVkIGluIHRoZSBjb25zb2xlLicpXG4gIC5vcHRpb24oJy0tcmVnaXN0cnknLCAnQWRkIGEgY3VzdG9tIHJlZ2lzdHJ5IHVybC4nKVxuICAuYWN0aW9uKChjbWQpID0+IHVwZGF0ZShjbWQsIHByb2Nlc3MuZXhpdCkudGhlbigoKSA9PiB7fSkpO1xuXG5wcm9ncmFtLmNvbW1hbmQoJ3VwZ3JhZGUnKVxuICAuYWRkT3B0aW9uKG5ldyBPcHRpb24oJy0tcGFja2FnZS1tYW5hZ2VyIDxtYW5hZ2VyPicsICdXaGljaCBwYWNrYWdlIG1hbmFnZXIgdG8gdXNlLiBEZWZhdWx0OiBucG0nKS5jaG9pY2VzKFsnbnBtJywgJ3lhcm4nXSkuZGVmYXVsdCgnbnBtJykpXG4gIC5vcHRpb24oJy0tcXVpZXQnLCAnTm8gTGV4IG5vdGlmaWNhdGlvbnMgcHJpbnRlZCBpbiB0aGUgY29uc29sZS4nKVxuICAuYWN0aW9uKChjbWQpID0+IHVwZ3JhZGUoY21kLCBwcm9jZXNzLmV4aXQpLnRoZW4oKCkgPT4ge30pKTtcblxucHJvZ3JhbS5jb21tYW5kKCdhaScpXG4gIC5vcHRpb24oJy0tY29udGV4dCcsICdJbmNsdWRlIHByb2plY3QgY29udGV4dCBpbiB0aGUgQUkgcHJvbXB0LicsIHRydWUpXG4gIC5vcHRpb24oJy0tZmlsZSA8cGF0aD4nLCAnU3BlY2lmaWMgZmlsZSB0byBvcGVyYXRlIG9uLicpXG4gIC5vcHRpb24oJy0tbGV4Q29uZmlnIDxwYXRoPicsICdDdXN0b20gTGV4IGNvbmZpZ3VyYXRpb24gZmlsZSBwYXRoIChpZS4gbGV4LmNvbmZpZy5qcykuJylcbiAgLm9wdGlvbignLS1tb2RlbCA8bW9kZWw+JywgJ0FJIG1vZGVsIHRvIHVzZS4gRGVmYXVsdDogZ3B0LTRvLicpXG4gIC5vcHRpb24oJy0tcHJvbXB0IDx0ZXh0PicsICdUaGUgcHJvbXB0IHRvIHNlbmQgdG8gdGhlIEFJLicpXG4gIC5vcHRpb24oJy0tcXVpZXQnLCAnTm8gTGV4IG5vdGlmaWNhdGlvbnMgcHJpbnRlZCBpbiB0aGUgY29uc29sZS4nKVxuICAuYWRkT3B0aW9uKG5ldyBPcHRpb24oJy0tdGFzayA8dGFzaz4nLCAnVHlwZSBvZiBBSSB0YXNrIHRvIHBlcmZvcm0uJykuY2hvaWNlcyhbJ2dlbmVyYXRlJywgJ2V4cGxhaW4nLCAndGVzdCcsICdvcHRpbWl6ZScsICdoZWxwJ10pLmRlZmF1bHQoJ2hlbHAnKSlcbiAgLmFjdGlvbigoY21kKSA9PiBhaUZ1bmN0aW9uKGNtZCkudGhlbigoKSA9PiB7fSkpO1xuXG5wcm9ncmFtLmNvbW1hbmQoJ3ZlcnNpb25zJylcbiAgLm9wdGlvbignLS1qc29uJywgJ1ByaW50IHRoZSB2ZXJzaW9uIGFzIGEgSlNPTiBvYmplY3QuJylcbiAgLmFjdGlvbigoY21kKSA9PiB2ZXJzaW9ucyhjbWQsIHByb2Nlc3MuZXhpdCkudGhlbigoKSA9PiB7fSkpO1xuXG5wcm9ncmFtXG4gIC52ZXJzaW9uKHBhY2thZ2VKc29uLnZlcnNpb24pXG4gIC5wYXJzZShwcm9jZXNzLmFyZ3YpOyJdLAogICJtYXBwaW5ncyI6ICI7QUFLQSxTQUFRLFFBQVEsZUFBYztBQUM5QixTQUFRLG9CQUFtQjtBQUMzQixTQUFRLHFCQUFvQjtBQUM1QixTQUFRLFNBQVMsZUFBYztBQUMvQixTQUFRLHFCQUFvQjtBQUU1QixTQUFRLGtCQUFpQjtBQUN6QixTQUFRLGFBQVk7QUFDcEIsU0FBUSxhQUFZO0FBQ3BCLFNBQVEsZUFBYztBQUN0QixTQUFRLGNBQWE7QUFDckIsU0FBUSxjQUFhO0FBQ3JCLFNBQVEsV0FBVTtBQUNsQixTQUFRLFlBQVc7QUFDbkIsU0FBUSxjQUFhO0FBQ3JCLFNBQVEsWUFBVztBQUNuQixTQUFRLGVBQWM7QUFDdEIsU0FBUSxlQUFjO0FBQ3RCLFNBQVEsa0JBQWlCO0FBQ3pCLFNBQVEsaUJBQWdCO0FBQ3hCLFNBQVEsWUFBVztBQUNuQixTQUFRLGNBQWE7QUFDckIsU0FBUSxlQUFjO0FBQ3RCLFNBQVEsZ0JBQWU7QUFFdkIsUUFBUSxJQUFJLFdBQVcsUUFBUSxjQUFjLFlBQVksR0FBRyxDQUFDO0FBRTdELE1BQU0saUJBQWlCLFFBQVEsUUFBUSxjQUFjLFlBQVksR0FBRyxDQUFDLEdBQUcsaUJBQWlCO0FBQ3pGLElBQUcsQ0FBQyxRQUFRLElBQUksV0FBVztBQUN6QixVQUFRLElBQUksWUFBWTtBQUMxQixXQUFVLENBQUMsUUFBUSxJQUFJLFVBQVUsTUFBTSxHQUFHLEVBQUUsU0FBUyxjQUFjLEdBQUc7QUFDcEUsVUFBUSxJQUFJLGFBQWEsSUFBSSxjQUFjO0FBQzdDO0FBRUEsTUFBTUEsV0FBVSxjQUFjLFlBQVksR0FBRztBQUU3Q0EsU0FBUSxRQUFRLEVBQUUs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
|
|
73
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL2xleC50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiIyEvdXNyL2Jpbi9lbnYgbm9kZVxuLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTgtUHJlc2VudCwgTml0cm9nZW4gTGFicywgSW5jLlxuICogQ29weXJpZ2h0cyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSB0aGUgYWNjb21wYW55aW5nIExJQ0VOU0UgZmlsZSBmb3IgdGVybXMuXG4gKi9cbmltcG9ydCB7T3B0aW9uLCBwcm9ncmFtfSBmcm9tICdjb21tYW5kZXInO1xuaW1wb3J0IHtyZWFkRmlsZVN5bmN9IGZyb20gJ2ZzJztcbmltcG9ydCB7Y3JlYXRlUmVxdWlyZX0gZnJvbSAnbW9kdWxlJztcbmltcG9ydCB7ZGlybmFtZSwgcmVzb2x2ZX0gZnJvbSAncGF0aCc7XG5pbXBvcnQge2ZpbGVVUkxUb1BhdGh9IGZyb20gJ3VybCc7XG5cbmltcG9ydCB7YWlGdW5jdGlvbn0gZnJvbSAnLi9jb21tYW5kcy9haS9haS5qcyc7XG5pbXBvcnQge2J1aWxkfSBmcm9tICcuL2NvbW1hbmRzL2J1aWxkL2J1aWxkLmpzJztcbmltcG9ydCB7Y2xlYW59IGZyb20gJy4vY29tbWFuZHMvY2xlYW4vY2xlYW4uanMnO1xuaW1wb3J0IHtjb21waWxlfSBmcm9tICcuL2NvbW1hbmRzL2NvbXBpbGUvY29tcGlsZS5qcyc7XG5pbXBvcnQge2NvbmZpZ30gZnJvbSAnLi9jb21tYW5kcy9jb25maWcvY29uZmlnLmpzJztcbmltcG9ydCB7Y3JlYXRlfSBmcm9tICcuL2NvbW1hbmRzL2NyZWF0ZS9jcmVhdGUuanMnO1xuaW1wb3J0IHtkZXZ9IGZyb20gJy4vY29tbWFuZHMvZGV2L2Rldi5qcyc7XG5pbXBvcnQge2luaXR9IGZyb20gJy4vY29tbWFuZHMvaW5pdC9pbml0LmpzJztcbmltcG9ydCB7bGlua2VkfSBmcm9tICcuL2NvbW1hbmRzL2xpbmsvbGluay5qcyc7XG5pbXBvcnQge2xpbnR9IGZyb20gJy4vY29tbWFuZHMvbGludC9saW50LmpzJztcbmltcG9ydCB7bWlncmF0ZX0gZnJvbSAnLi9jb21tYW5kcy9taWdyYXRlL21pZ3JhdGUuanMnO1xuaW1wb3J0IHtwdWJsaXNofSBmcm9tICcuL2NvbW1hbmRzL3B1Ymxpc2gvcHVibGlzaC5qcyc7XG5pbXBvcnQge3NlcnZlcmxlc3N9IGZyb20gJy4vY29tbWFuZHMvc2VydmVybGVzcy9zZXJ2ZXJsZXNzLmpzJztcbmltcG9ydCB7c3Rvcnlib29rfSBmcm9tICcuL2NvbW1hbmRzL3N0b3J5Ym9vay9zdG9yeWJvb2suanMnO1xuaW1wb3J0IHt0ZXN0fSBmcm9tICcuL2NvbW1hbmRzL3Rlc3QvdGVzdC5qcyc7XG5pbXBvcnQge3VwZGF0ZX0gZnJvbSAnLi9jb21tYW5kcy91cGRhdGUvdXBkYXRlLmpzJztcbmltcG9ydCB7dXBncmFkZX0gZnJvbSAnLi9jb21tYW5kcy91cGdyYWRlL3VwZ3JhZGUuanMnO1xuaW1wb3J0IHt2ZXJzaW9uc30gZnJvbSAnLi9jb21tYW5kcy92ZXJzaW9ucy92ZXJzaW9ucy5qcyc7XG5cbnByb2Nlc3MuZW52LkxFWF9ST09UID0gZGlybmFtZShmaWxlVVJMVG9QYXRoKGltcG9ydC5tZXRhLnVybCkpO1xuXG5jb25zdCBsZXhOb2RlTW9kdWxlcyA9IHJlc29sdmUoZGlybmFtZShmaWxlVVJMVG9QYXRoKGltcG9ydC5tZXRhLnVybCkpLCAnLi4vbm9kZV9tb2R1bGVzJyk7XG5pZighcHJvY2Vzcy5lbnYuTk9ERV9QQVRIKSB7XG4gIHByb2Nlc3MuZW52Lk5PREVfUEFUSCA9IGxleE5vZGVNb2R1bGVzO1xufSBlbHNlIGlmKCFwcm9jZXNzLmVudi5OT0RFX1BBVEguc3BsaXQoJzonKS5pbmNsdWRlcyhsZXhOb2RlTW9kdWxlcykpIHtcbiAgcHJvY2Vzcy5lbnYuTk9ERV9QQVRIICs9IGA6JHtsZXhOb2RlTW9kdWxlc31gO1xufVxuXG5jb25zdCByZXF1aXJlID0gY3JlYXRlUmVxdWlyZShpbXBvcnQubWV0YS51cmwpO1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVuZGVyc2NvcmUtZGFuZ2xlXG5yZXF1aXJlKCdtb2R1bGUnKS5Nb2R1bGUuX2luaXRQYXRocygpO1xuXG5jb25zdCBwYWNrYWdlUGF0aCA9IGZpbGVVUkxUb1BhdGgobmV3IFVSTCgnLi4vcGFja2FnZS5qc29uJywgaW1wb3J0Lm1ldGEudXJsKSk7XG5jb25zdCBwYWNrYWdlSnNvbiA9IEpTT04ucGFyc2UocmVhZEZpbGVTeW5jKHBhY2thZ2VQYXRoLCAndXRmOCcpKTtcblxucHJvZ3JhbS5jb21tYW5kKCdidWlsZCcpXG4gIC5vcHRpb24oJy0tYXNzaXN0JywgJ0VuYWJsZSBBSSBhc3Npc3RhbmNlIGZvciBmaXhpbmcgYnVpbGQgZXJyb3JzLicsIGZhbHNlKVxuICAub3B0aW9uKCctLWFuYWx5emUnLCAnRW5hYmxlIEFJIGFuYWx5c2lzIGZvciBidWlsZCBvcHRpbWl6YXRpb24gc3VnZ2VzdGlvbnMgb3IgaW52b2tlIHdlYnBhY2stYnVuZGxlLWFuYWx5emVyIHBsdWdpbi4nLCBmYWxzZSlcbiAgLmFkZE9wdGlvbihuZXcgT3B0aW9uKCctLWJ1bmRsZXIgPG4+JywgJ0J1bmRsZXIgdG8gdXNlIChcIndlYnBhY2tcIiBvciBcImVzYnVpbGRcIikuIERlZmF1bHQ6IFwid2VicGFja1wiLicpLmNob2ljZXMoWyd3ZWJwYWNrJywgJ2VzYnVpbGQnXSkuZGVmYXVsdCgnd2VicGFjaycpKVxuICAub3B0aW9uKCctLWNvbmZpZyA8cGF0aD4nLCAnQ3VzdG9tIFdlYnBhY2sgY29uZmlndXJhdGlvbiBmaWxlIHBhdGggKGllLiB3ZWJwYWNrLmNvbmZpZy5qcykuJylcbiAgLm9wdGlvbignLS1jb25maWdOYW1lIDx2YWx1ZS4uLj4nLCAnTmFtZSBvZiB0aGUgY29uZmlndXJhdGlvbiB0byB1c2UuJylcbiAgLm9wdGlvbignLS1kZWZpbmVQcm9jZXNzRW52Tm9kZUVudiA8dmFsdWU+JywgJ1NldHMgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgdG8gdGhlIHNwZWNpZmllZCB2YWx1ZS4gKEN1cnJlbnRseSBhbiBhbGlhcyBmb3IgYC0tbm9kZS1lbnZgKScpXG4gIC5vcHRpb24oJy0tZGV2dG9vbCA8dmFsdWU+JywgJ0EgZGV2ZWxvcGVyIHRvb2wgdG8gZW5oYW5jZSBkZWJ1Z2dpbmcgKGZhbHNlIHwgZXZhbCB8IFtpbmxpbmUtfGhpZGRlbi18ZXZhbC1dW25vc291cmNlcy1dW2NoZWFwLVttb2R1bGUtXV1zb3VyY2UtbWFwKS4nKVxuICAub3B0aW9uKCctLWRpc2FibGVJbnRlcnByZXQnLCAnRGlzYWJsZSBpbnRlcnByZXQgZm9yIGxvYWRpbmcgdGhlIGNvbmZpZyBmaWxlLicsIGZhbHNlKVxuICAub3B0aW9uKCctLWVudHJ5IDx2YWx1ZS4uLj4nLCAnQSBtb2R1bGUgdGhhdCBpcyBsb2FkZWQgdXBvbiBzdGFydHVwLiBPbmx5IHRoZSBsYXN0IG9uZSBpcyBleHBvcnRlZC4nKVxuICAub3B0aW9uKCctLWVudiA8dmFsdWU+JywgJ0Vudmlyb25tZW50IHBhc3NlZCB0byB0aGUgY29uZmlndXJhdGlvbiB3aGVuIGl0IGlzIGEgZnVuY3Rpb24uJylcbiAgLm9wdGlvbignLS1mYWlsT25XYXJuaW5ncycsICdTdG9wIHdlYnBhY2stY2xpIHByb2Nlc3Mgd2l0aCBub24temVybyBleGl0IGNvZGUgb24gd2FybmluZ3MgZnJvbSB3ZWJwYWNrJywgZmFsc2UpXG4gIC5hZGRPcHRpb24obmV3IE9wdGlvbignLS1mb3JtYXQgPHZhbHVlPicsICdUaGlzIHNldHMgdGhlIG91dHB1dCBmb3JtYXQgZm9yIHRoZSBnZW5lcmF0ZWQgSmF2YVNjcmlwdCBmaWxlcy4gRGVmYXVsdDogXCJlc21cIi4nKS5jaG9pY2VzKFsnY2pzJywgJ2VzbSddKS5kZWZhdWx0KCdlc20nKSlcbiAgLm9wdGlvbignLS1qc29uIDx2YWx1ZT4nLCAnUHJpbnRzIHJlc3VsdCBhcyBKU09OIG9yIHN0b3JlIGl0IGluIGEgZmlsZS4nKVxuICAub3B0aW9uKCctLWxleENvbmZpZyA8cGF0aD4nLCAnTGV4IGNvbmZpZ3VyYXRpb24gZmlsZSBwYXRoIChsZXguY29uZmlnLmpzKS4nKVxuICAub3B0aW9uKCctLW1lcmdlJywgJ01lcmdlIHR3byBvciBtb3JlIGNvbmZpZ3VyYXRpb25zIHVzaW5nIFwid2VicGFjay1tZXJnZVwiLicsIGZhbHNlKVxuICAuYWRkT3B0aW9uKG5ldyBPcHRpb24oJy0tbW9kZSA8dHlwZT4nLCAnV2VicGFjayBtb2RlIChcInByb2R1Y3Rpb25cIiBvciBcImRldmVsb3BtZW50XCIpLiBEZWZhdWx0OiBcImRldmVsb3BtZW50XCIuJykuY2hvaWNlcyhbJ2RldmVsb3BtZW50JywgJ3Byb2R1Y3Rpb24nXSkuZGVmYXVsdCgnZGV2ZWxvcG1lbnQnKSlcbiAgLm9wdGlvbignLS1uYW1lIDx2YWx1ZT4nLCAnTmFtZSBvZiB0aGUgY29uZmlndXJhdGlvbi4gVXNlZCB3aGVuIGxvYWRpbmcgbXVsdGlwbGUgY29uZmlndXJhdGlvbnMuJylcbiAgLm9wdGlvbignLS1ub0RldnRvb2wnLCAnTmVnYXRpdmUgXCJkZXZ0b29sXCIgb3B0aW9uLicsIGZhbHNlKVxuICAub3B0aW9uKCctLW5vU3RhdHMnLCAnTmVnYXRpdmUgXCJzdGF0c1wiIG9wdGlvbi4nLCBmYWxzZSlcbiAgLm9wdGlvbignLS1ub1RhcmdldCcsICdOZWdhdGl2ZSBcInRhcmdldFwiIG9wdGlvbi4nLCBmYWxzZSlcbiAgLm9wdGlvbignLS1ub1dhdGNoJywgJ05lZ2F0aXZlIFwid2F0Y2hcIiBvcHRpb24uJywgZmFsc2UpXG4gIC5vcHRpb24oJy0tbm9XYXRjaE9wdGlvbnNTdGRpbicsICdOZWdhdGl2ZSBcIndhdGNoLW9wdGlvbnMtc3RkaW5cIiBvcHRpb24uJywgZmFsc2UpXG4gIC5vcHRpb24oJy0tbm9kZUVudiA8dmFsdWU+JywgJ1NldHMgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgdG8gdGhlIHNwZWNpZmllZCB2YWx1ZS4nKVxuICAub3B0aW9uKCctLW91dHB1dFBhdGggPHZhbHVlPicsICdUaGUgb3V0cHV0IGRpcmVjdG9yeSBhcyAqKmFic29sdXRlIHBhdGgqKiAocmVxdWlyZWQpLicpXG4gIC5vcHRpb24oJy0tcXVpZXQnLCAnTm8gTGV4IG5vdGlmaWNhdGlvbnMgcHJpbnRlZCBpbiB0aGUgY29uc29sZS4nLCBmYWxzZSlcbiAgLm9wdGlvbignLS1yZW1vdmUnLCAnUmVtb3ZlcyBhbGwgZmlsZXMgZnJvbSB0aGUgb3V0cHV0IGRpcmVjdG9yeSBiZWZvcmUgY29tcGlsaW5nLicsIGZhbHNlKVxuICAub3B0aW9uKCctLXNvdXJjZVBhdGggPHBhdGg+JywgJ1NvdXJjZSBwYXRoJylcbiAgLm9wdGlvbignLS1zdGF0cyA8dmFsdWU+JywgJ1N0YXRzIG9wdGlvbnMgb2JqZWN0IG9yIHByZXNldCBuYW1lLicpXG4gIC5vcHRpb24oJy0tc3RhdGljJywgJ0NyZWF0ZXMgc3RhdGljIEhUTUwgZmlsZXMgd2hlbiBidWlsZGluZyBhcHAuJywgZmFsc2UpXG4gIC5vcHRpb24oJy0tdGFyZ2V0IDx2YWx1ZT4nLCAnRW52aXJvbm1lbnQgdG8gYnVpbGQgZm9yLiBFbnZpcm9ubWVudCB0byBidWlsZCBmb3IuIEFuIGFycmF5IG9mIGVudmlyb25tZW50cyB0byBidWlsZCBmb3IgYWxsIG9mIHRoZW0gd2hlbiBwb3NzaWJsZS4nKVxuICAub3B0aW9uKCctLXRyYW5zbGF0aW9ucycsICdQcm9jZXNzIHRyYW5zbGF0aW9uIGZpbGVzIGFuZCBvdXRwdXQgZmxhdHRlbmVkIEpTT04uJywgZmFsc2UpXG4gIC5vcHRpb24oJy0tdHlwZXNjcmlwdCcsICdUcmFuc3BpbGUgYXMgVHlwZXNjcmlwdC4nLCBmYWxzZSlcbiAgLm9wdGlvbignLS12YXJpYWJsZXMgPG4+JywgJ0Vudmlyb25tZW50IHZhcmlhYmxlcyB0byBzZXQgaW4gXCJwcm9jZXNzLmVudlwiLiAoaWUuIFwie05PREVfRU5WOiBcXCdwcm9kdWN0aW9uXFwnfVwiKS4nKVxuICAub3B0aW9uKCctLXdhdGNoJywgJ1dhdGNoIGZvciBjaGFuZ2VzLicsIGZhbHNlKVxuICAub3B0aW9uKCctLXdhdGNoT3B0aW9uc1N0ZGluJywgJ1N0b3Agd2F0Y2hpbmcgd2hlbiBzdGRpbiBzdHJlYW0gaGFzIGVuZGVkLicsIGZhbHNlKVxuICAuYWN0aW9uKChjbWQpID0+IGJ1aWxkKGNtZCwgcHJvY2Vzcy5leGl0KS50aGVuKCgpID0+IHt9KSk7XG5cbnByb2dyYW0uY29tbWFuZCgnY2xlYW4nKVxuICAub3B0aW9uKCctLXF1aWV0JywgJ05vIExleCBub3RpZmljYXRpb25zIHByaW50ZWQgaW4gdGhlIGNvbnNvbGUuJylcbiAgLm9wdGlvbignLS1zbmFwc2hvdHMnLCAnUmVtb3ZlIGFsbCBcIl9fc25hcHNob3RzX19cIiBkaXJlY3Rvcmllcy4nKVxuICAuYWN0aW9uKChjbWQpID0+IGNsZWFuKGNtZCwgcHJvY2Vzcy5leGl0KS50aGVuKCgpID0+IHt9KSk7XG5cbnByb2dyYW0uY29tbWFuZCgnY29uZmlnIDx0eXBlPicpXG4gIC5vcHRpb24oJy0tcXVpZXQnLCAnTm8gTGV4IG5vdGlmaWNhdGlvbnMgcHJpbnRlZCBpbiB0aGUgY29uc29sZS4nKVxuICAub3B0aW9uKCctLWpzb24gPHBhdGg+JywgJ1NhdmUgb3V0cHV0IHRvIGpzb24gZmlsZS4nKVxuICAuYWN0aW9uKCh0eXBlLCBjbWQpID0+IGNvbmZpZyh0eXBlLCBjbWQsIHByb2Nlc3MuZXhpdCkudGhlbigoKSA9PiB7fSkpO1xuXG5wcm9ncmFtLmNvbW1hbmQoJ2NvbXBpbGUnKVxuICAub3B0aW9uKCctLWNvbmZpZyA8cGF0aD4nLCAnVHJhbnNwaWxlciBjb25maWd1cmF0aW9uIGZpbGUgcGF0aCAoaWUuIHRzY29uZmlnLmpzb24pLicpXG4gIC5vcHRpb24oJy0tZW52aXJvbm1lbnQgPG4+JywgJ1RhcmdldCBlbnZpcm9ubWVudC4gXCJub2RlXCIgb3IgXCJ3ZWJcIi4gRGVmYXVsdDogXCJub2RlXCIuJylcbiAgLmFkZE9wdGlvbihuZXcgT3B0aW9uKCctLWZvcm1hdCA8dmFsdWU+JywgJ1RoaXMgc2V0cyB0aGUgb3V0cHV0IGZvcm1hdCBmb3IgdGhlIGdlbmVyYXRlZCBKYXZhU2NyaXB0IGZpbGVzLiBEZWZhdWx0OiBcImVzbVwiLicpLmNob2ljZXMoWydjanMnLCAnZXNtJ10pLmRlZmF1bHQoJ2VzbScpKVxuICAub3B0aW9uKCctLWxleENvbmZpZyA8cGF0aD4nLCAnQ3VzdG9tIExleCBjb25maWd1cmF0aW9uIGZpbGUgcGF0aCAoaWUuIGxleC5jb25maWcuanMpLicpXG4gIC5vcHRpb24oJy0tb3V0cHV0UGF0aCA8cGF0aD4nLCAnT3V0cHV0IHBhdGgnKVxuICAub3B0aW9uKCctLXJlbW92ZScsICdSZW1vdmVzIGFsbCBmaWxlcyBmcm9tIHRoZSBvdXRwdXQgZGlyZWN0b3J5IGJlZm9yZSBjb21waWxpbmcuJylcbiAgLm9wdGlvbignLS1zb3VyY2VQYXRoIDxwYXRoPicsICdTb3VyY2UgcGF0aCcpXG4gIC5vcHRpb24oJy0tdHlwZXNjcmlwdCcsICdUcmFuc3BpbGUgYXMgVHlwZXNjcmlwdC4nKVxuICAub3B0aW9uKCctLXF1aWV0JywgJ05vIExleCBub3RpZmljYXRpb25zIHByaW50ZWQgaW4gdGhlIGNvbnNvbGUuJylcbiAgLm9wdGlvbignLS13YXRjaCcsICdXYXRjaGVzIGZvciBjaGFuZ2VzIGFuZCBjb21waWxlcy4nKVxuICAuYWN0aW9uKChjbWQpID0+IGNvbXBpbGUoY21kLCBwcm9jZXNzLmV4aXQpLnRoZW4oKCkgPT4ge30pKTtcblxucHJvZ3JhbS5jb21tYW5kKCdjcmVhdGUgPHR5cGU+JylcbiAgLm9wdGlvbignLS1vdXRwdXRGaWxlIDxwYXRoPicsICdPdXRwdXQgZmlsZW5hbWUuJylcbiAgLm9wdGlvbignLS1vdXRwdXROYW1lIDxuPicsICdPdXRwdXQgbmFtZS4nKVxuICAub3B0aW9uKCctLXF1aWV0JywgJ05vIExleCBub3RpZmljYXRpb25zIHByaW50ZWQgaW4gdGhlIGNvbnNvbGUuJylcbiAgLm9wdGlvbignLS10eXBlc2NyaXB0JywgJ0NyZWF0ZSBUeXBlc2NyaXB0IHZlcnNpb24uJylcbiAgLmFjdGlvbigodHlwZSwgY21kKSA9PiBjcmVhdGUodHlwZSwgY21kLCBwcm9jZXNzLmV4aXQpLnRoZW4oKCkgPT4ge30pKTtcblxucHJvZ3JhbS5jb21tYW5kKCdkZXYnKVxuICAub3B0aW9uKCctLWJ1bmRsZUFuYWx5emVyJywgJ1J1biBidW5kbGUgYW5hbHl6ZXIuJylcbiAgLm9wdGlvbignLS1jb25maWcgPHBhdGg+JywgJ0N1c3RvbSBXZWJwYWNrIGNvbmZpZ3VyYXRpb24gZmlsZSBwYXRoIChpZS4gd2VicGFjay5jb25maWcuanMpLicpXG4gIC5hZGRPcHRpb24obmV3IE9wdGlvbignLS1mb3JtYXQgPHZhbHVlPicsICdUaGlzIHNldHMgdGhlIG91dHB1dCBmb3JtYXQgZm9yIHRoZSBnZW5lcmF0ZWQgSmF2YVNjcmlwdCBmaWxlcy4gRGVmYXVsdDogXCJlc21cIi4nKS5jaG9pY2VzKFsnY2pzJywgJ2VzbSddKS5kZWZhdWx0KCdlc20nKSlcbiAgLm9wdGlvbignLS1sZXhDb25maWcgPHBhdGg+JywgJ0N1c3RvbSBMZXggY29uZmlndXJhdGlvbiBmaWxlIHBhdGggKGllLiBsZXguY29uZmlnLmpzKS4nKVxuICAub3B0aW9uKCctLW9wZW4nLCAnQXV0b21hdGljYWxseSBvcGVuIGRldiBzZXJ2ZXIgaW4gYSBuZXcgYnJvd3NlciB3aW5kb3cuJylcbiAgLm9wdGlvbignLS1vdXRwdXRQYXRoIDxwYXRoPicsICdPdXRwdXQgcGF0aCcpXG4gIC5vcHRpb24oJy0tcXVpZXQnLCAnTm8gTGV4IG5vdGlmaWNhdGlvbnMgcHJpbnRlZCBpbiB0aGUgY29uc29sZS4nKVxuICAub3B0aW9uKCctLXJlbW92ZScsICdSZW1vdmVzIGFsbCBmaWxlcyBmcm9tIHRoZSBvdXRwdXQgZGlyZWN0b3J5IGJlZm9yZSBjb21waWxpbmcuJylcbiAgLm9wdGlvbignLS1zb3VyY2VQYXRoIDxwYXRoPicsICdTb3VyY2UgcGF0aCcpXG4gIC5vcHRpb24oJy0tdHJhbnNsYXRpb25zJywgJ1Byb2Nlc3MgdHJhbnNsYXRpb24gZmlsZXMgYW5kIG91dHB1dCBmbGF0dGVuZWQgSlNPTi4nLCBmYWxzZSlcbiAgLm9wdGlvbignLS10eXBlc2NyaXB0JywgJ1RyYW5zcGlsZSBhcyBUeXBlc2NyaXB0LicpXG4gIC5vcHRpb24oJy0tdXNlUHVibGljSXAnLCAnRm9yY2UgcmVmcmVzaCB0aGUgY2FjaGVkIHB1YmxpYyBJUCBhZGRyZXNzLicpXG4gIC5vcHRpb24oJy0tdmFyaWFibGVzIDxuPicsICdFbnZpcm9ubWVudCB2YXJpYWJsZXMgdG8gc2V0IGluIFwicHJvY2Vzcy5lbnZcIi4gKGllLiBcIntOT0RFX0VOVjogXFwnZGV2ZWxvcG1lbnRcXCd9XCIpLicpXG4gIC5vcHRpb24oJy0td2F0Y2gnLCAnV2F0Y2ggZm9yIGNoYW5nZXMuJylcbiAgLmFjdGlvbigoY21kKSA9PiBkZXYoY21kLCBwcm9jZXNzLmV4aXQpLnRoZW4oKCkgPT4ge30pKTtcblxucHJvZ3JhbS5jb21tYW5kKCdpbml0IDxhcHBOYW1lPiBbcGFja2FnZU5hbWVdJylcbiAgLm9wdGlvbignLS1pbnN0YWxsJywgJ0luc3RhbGwgZGVwZW5kZW5jaWVzLicpXG4gIC5hZGRPcHRpb24obmV3IE9wdGlvbignLS1wYWNrYWdlLW1hbmFnZXIgPG1hbmFnZXI+JywgJ1doaWNoIHBhY2thZ2UgbWFuYWdlciB0byB1c2UuIERlZmF1bHQ6IG5wbScpLmNob2ljZXMoWyducG0nLCAneWFybiddKS5kZWZhdWx0KCducG0nKSlcbiAgLm9wdGlvbignLS1xdWlldCcsICdObyBMZXggbm90aWZpY2F0aW9ucyBwcmludGVkIGluIHRoZSBjb25zb2xlLicpXG4gIC5vcHRpb24oJy0tdHlwZXNjcmlwdCcsICdVc2UgYSBUeXBlc2NyaXB0IGJhc2VkIGFwcC4nKVxuICAuYWN0aW9uKChhcHBOYW1lLCBwYWNrYWdlTmFtZSwgY21kKSA9PiBpbml0KGFwcE5hbWUsIHBhY2thZ2VOYW1lLCBjbWQsIHByb2Nlc3MuZXhpdCkudGhlbigoKSA9PiB7fSkpO1xuXG5wcm9ncmFtLmNvbW1hbmQoJ2xpbmtlZCcpXG4gIC5vcHRpb24oJy0tcXVpZXQnLCAnTm8gTGV4IG5vdGlmaWNhdGlvbnMgcHJpbnRlZCBpbiB0aGUgY29uc29sZS4nKVxuICAuYWN0aW9uKChjbWQpID0+IGxpbmtlZChjbWQsIHByb2Nlc3MuZXhpdCkudGhlbigoKSA9PiB7fSkpO1xuXG5wcm9ncmFtLmNvbW1hbmQoJ2xpbnQnKVxuICAub3B0aW9uKCctLWNhY2hlJywgJ09ubHkgY2hlY2sgY2hhbmdlZCBmaWxlcy4gRGVmYXVsdDogZmFsc2UuJywgZmFsc2UpXG4gIC5vcHRpb24oJy0tY2FjaGVMb2NhdGlvbiA8cGF0aD4nLCAnUGF0aCB0byB0aGUgY2FjaGUgZmlsZSBvciBkaXJlY3RvcnkuJylcbiAgLm9wdGlvbignLS1jb2xvcicsICdGb3JjZSBlbmFibGluZyBvZiBjb2xvci4nLCBmYWxzZSlcbiAgLm9wdGlvbignLS1jb25maWcgPHBhdGg+JywgJ1VzZSB0aGlzIGNvbmZpZ3VyYXRpb24sIG92ZXJyaWRpbmcgLmVzbGludHJjLiogY29uZmlnIG9wdGlvbnMgaWYgcHJlc2VudC4gSWYgbm90IHNwZWNpZmllZCBhbmQgbm8gbG9jYWwgY29uZmlnIGV4aXN0cywgTGV4IHdpbGwgdXNlIGl0cyBkZWZhdWx0IGNvbmZpZy4nKVxuICAub3B0aW9uKCctLWRlYnVnJywgJ091dHB1dCBkZWJ1Z2dpbmcgaW5mb3JtYXRpb24uJywgZmFsc2UpXG4gIC5vcHRpb24oJy0tZW52SW5mbycsICdPdXRwdXQgZXhlY3V0aW9uIGVudmlyb25tZW50IGluZm9ybWF0aW9uLiBEZWZhdWx0OiBmYWxzZS4nLCBmYWxzZSlcbiAgLm9wdGlvbignLS1lbnYgPG4+JywgJ1NwZWNpZnkgZW52aXJvbm1lbnRzLicpXG4gIC5vcHRpb24oJy0tZml4JywgJ0FwcGx5IEFJIGZpeGVzIGFmdGVyIGJ1aWx0LWluIEVTTGludCBmaXhlcyAoc2FtZSBhcyAtLWZpeCkuJywgZmFsc2UpXG4gIC5vcHRpb24oJy0tZml4RHJ5UnVuJywgJ0F1dG9tYXRpY2FsbHkgZml4IHByb2JsZW1zIHdpdGhvdXQgc2F2aW5nIHRoZSBjaGFuZ2VzIHRvIHRoZSBmaWxlIHN5c3RlbS4nLCBmYWxzZSlcbiAgLm9wdGlvbignLS1maXhUeXBlIDx0eXBlPicsICdTcGVjaWZ5IHRoZSB0eXBlcyBvZiBmaXhlcyB0byBhcHBseSAocHJvYmxlbSwgc3VnZ2VzdGlvbiwgbGF5b3V0KS4nKVxuICAub3B0aW9uKCctLWZvcm1hdCA8bj4nLCAnVXNlIGEgc3BlY2lmaWMgb3V0cHV0IGZvcm1hdC4gRGVmYXVsdDogc3R5bGlzaC4nKVxuICAub3B0aW9uKCctLWdsb2JhbCA8dmFyaWFibGVzPicsICdEZWZpbmUgZ2xvYmFsIHZhcmlhYmxlcy4nKVxuICAub3B0aW9uKCctLWlnbm9yZVBhdGggPHBhdGg+JywgJ1NwZWNpZnkgcGF0aCBvZiBpZ25vcmUgZmlsZS4nKVxuICAub3B0aW9uKCctLWlnbm9yZVBhdHRlcm4gPHBhdHRlcm4+JywgJ1BhdHRlcm4gb2YgZmlsZXMgdG8gaWdub3JlIChpbiBhZGRpdGlvbiB0byB0aG9zZSBpbiAuZXNsaW50aWdub3JlKS4nKVxuICAub3B0aW9uKCctLWluaXQnLCAnUnVuIGNvbmZpZyBpbml0aWFsaXphdGlvbiB3aXphcmQuIERlZmF1bHQ6IGZhbHNlLicsIGZhbHNlKVxuICAub3B0aW9uKCctLW1heFdhcm5pbmdzIDxudW0+JywgJ051bWJlciBvZiB3YXJuaW5ncyB0byB0cmlnZ2VyIG5vbnplcm8gZXhpdCBjb2RlLiBEZWZhdWx0OiAtMS4nKVxuICAub3B0aW9uKCctLW5vQ29sb3InLCAnRm9yY2UgZGlzYWJsaW5nIG9mIGNvbG9yLicsIGZhbHNlKVxuICAub3B0aW9uKCctLW5vRXNsaW50cmMnLCAnRGlzYWJsZSB1c2Ugb2YgY29uZmlndXJhdGlvbiBmcm9tIC5lc2xpbnRyYy4qLicsIGZhbHNlKVxuICAub3B0aW9uKCctLW5vSWdub3JlJywgJ0Rpc2FibGUgdXNlIG9mIGlnbm9yZSBmaWxlcyBhbmQgcGF0dGVybnMuJywgZmFsc2UpXG4gIC5vcHRpb24oJy0tbm9JbmxpbmVDb25maWcnLCAnUHJldmVudCBjb21tZW50cyBmcm9tIGNoYW5naW5nIGNvbmZpZyBvciBydWxlcy4nLCBmYWxzZSlcbiAgLm9wdGlvbignLS1vdXRwdXRGaWxlIDxwYXRoPicsICdTcGVjaWZ5IGZpbGUgdG8gd3JpdGUgcmVwb3J0IHRvLicpXG4gIC5vcHRpb24oJy0tcGFyc2VyIDxuPicsICdTcGVjaWZ5IHRoZSBwYXJzZXIgdG8gYmUgdXNlZC4nKVxuICAub3B0aW9uKCctLXBhcnNlck9wdGlvbnMgPG9wdGlvbnM+JywgJ1NwZWNpZnkgcGFyc2VyIG9wdGlvbnMuJylcbiAgLm9wdGlvbignLS1wbHVnaW4gPHBsdWdpbnM+JywgJ1NwZWNpZnkgcGx1Z2lucy4nKVxuICAub3B0aW9uKCctLXByaW50Q29uZmlnIDxwYXRoPicsICdQcmludCB0aGUgY29uZmlndXJhdGlvbiBmb3IgdGhlIGdpdmVuIGZpbGUuJylcbiAgLm9wdGlvbignLS1xdWlldCcsICdObyBMZXggbm90aWZpY2F0aW9ucyBwcmludGVkIGluIHRoZSBjb25zb2xlLicsIGZhbHNlKVxuICAub3B0aW9uKCctLXJlbW92ZS1jb21tZW50cycsICdSZW1vdmUgYWxsIGNvbW1lbnRzIGV4Y2VwdCBUT0RPcyBhbmQgY29weXJpZ2h0IG5vdGljZXMuJywgZmFsc2UpXG4gIC5vcHRpb24oJy0tcmVwb3J0VW51c2VkRGlzYWJsZURpcmVjdGl2ZXMnLCAnQWRkcyByZXBvcnRlZCBlcnJvcnMgZm9yIHVudXNlZCBlc2xpbnQtZGlzYWJsZSBkaXJlY3RpdmVzLicsIGZhbHNlKVxuICAub3B0aW9uKCctLXJlc29sdmVQbHVnaW5zUmVsYXRpdmVUbyA8cGF0aD4nLCAnQSBmb2xkZXIgd2hlcmUgcGx1Z2lucyBzaG91bGQgYmUgcmVzb2x2ZWQgZnJvbS4nKVxuICAub3B0aW9uKCctLXJ1bGUgPHBhdGg+JywgJ1NwZWNpZnkgcnVsZXMuJylcbiAgLm9wdGlvbignLS1ydWxlc2RpciA8cGF0aD4nLCAnVXNlIGFkZGl0aW9uYWwgcnVsZXMgZnJvbSB0aGlzIGRpcmVjdG9yeS4nKVxuICAub3B0aW9uKCctLXN0ZGluJywgJ0xpbnQgY29kZSBwcm92aWRlZCBvbiA8U1RESU4+IC0gRGVmYXVsdDogZmFsc2UuJywgZmFsc2UpXG4gIC5vcHRpb24oJy0tc3RkaW5GaWxlbmFtZSA8bj4nLCAnU3BlY2lmeSBmaWxlbmFtZSB0byBwcm9jZXNzIFNURElOIGFzLicpXG4gIC5hY3Rpb24oKGNtZCkgPT4gbGludChjbWQsIHByb2Nlc3MuZXhpdCkudGhlbigoKSA9PiB7fSkpO1xuXG5wcm9ncmFtLmNvbW1hbmQoJ21pZ3JhdGUnKVxuICAub3B0aW9uKCctcSwgLS1xdWlldCcsICdObyBMZXggbm90aWZpY2F0aW9ucyBwcmludGVkIGluIHRoZSBjb25zb2xlLicpXG4gIC5hY3Rpb24oKGNtZCkgPT4gbWlncmF0ZShjbWQsIHByb2Nlc3MuZXhpdCkudGhlbigoKSA9PiB7fSkpO1xuXG5wcm9ncmFtLmNvbW1hbmQoJ3B1Ymxpc2gnKVxuICAuYWRkT3B0aW9uKG5ldyBPcHRpb24oJy0tYnVtcCA8dHlwZT4nLCAnSW5jcmVtZW50cyB0aGUgdmVyc2lvbi4gVHlwZXMgaW5jbHVkZTogbWFqb3IsIG1pbm9yLCBwYXRjaCwgYmV0YSwgYWxwaGEsIHJjLiBEZWZhdWx0OiBcInBhdGNoXCIuJykuY2hvaWNlcyhbJ21ham9yJywgJ21pbm9yJywgJ3BhdGNoJywgJ2JldGEnLCAnYWxwaGEnLCAncmMnXSkuZGVmYXVsdCgncGF0Y2gnKSlcbiAgLm9wdGlvbignLS1uZXdWZXJzaW9uIDx2ZXJzaW9uTnVtYmVyPicsICdQdWJsaXNoIGFzIGEgc3BlY2lmaWMgdmVyc2lvbi4nKVxuICAub3B0aW9uKCctLW90cCA8Y29kZT4nLCAnUHJvdmlkZSBhIHR3by1mYWN0b3IgY29kZS4nKVxuICAuYWRkT3B0aW9uKG5ldyBPcHRpb24oJy0tcGFja2FnZS1tYW5hZ2VyIDxtYW5hZ2VyPicsICdXaGljaCBwYWNrYWdlIG1hbmFnZXIgdG8gdXNlLiBEZWZhdWx0OiBucG0nKS5jaG9pY2VzKFsnbnBtJywgJ3lhcm4nXSkuZGVmYXVsdCgnbnBtJykpXG4gIC5vcHRpb24oJy0tcHJpdmF0ZScsICdQdWJsaXNoZXMgdGhlIG1vZHVsZSBhcyByZXN0cmljdGVkLicpXG4gIC5vcHRpb24oJy0tcXVpZXQnLCAnTm8gTGV4IG5vdGlmaWNhdGlvbnMgcHJpbnRlZCBpbiB0aGUgY29uc29sZS4nKVxuICAub3B0aW9uKCctLXRhZyA8dGFnPicsICdSZWdpc3RlcnMgdGhlIHB1Ymxpc2hlZCBwYWNrYWdlIHdpdGggdGhlIGdpdmVuIHRhZy4nKVxuICAuYWN0aW9uKChjbWQpID0+IHB1Ymxpc2goY21kLCBwcm9jZXNzLmV4aXQpLnRoZW4oKCkgPT4ge30pKTtcblxucHJvZ3JhbS5jb21tYW5kKCdzZXJ2ZXJsZXNzJylcbiAgLm9wdGlvbignLS1jb25maWcgPHBhdGg+JywgJ0N1c3RvbSBjb25maWd1cmF0aW9uIGZpbGUgcGF0aCAoZGVmYXVsdDogbGV4LmNvbmZpZy5tanMpLicpXG4gIC5vcHRpb24oJy0taG9zdCA8aG9zdD4nLCAnSG9zdCB0byBiaW5kIHRoZSBzZXJ2ZXIgdG8gKGRlZmF1bHQ6IGxvY2FsaG9zdCkuJylcbiAgLm9wdGlvbignLS1odHRwUG9ydCA8cG9ydD4nLCAnSFRUUCBzZXJ2ZXIgcG9ydCAoZGVmYXVsdDogMzAwMCkuJylcbiAgLm9wdGlvbignLS1odHRwc1BvcnQgPHBvcnQ+JywgJ0hUVFBTIHNlcnZlciBwb3J0IChkZWZhdWx0OiAzMDAxKS4nKVxuICAub3B0aW9uKCctLXdzUG9ydCA8cG9ydD4nLCAnV2ViU29ja2V0IHNlcnZlciBwb3J0IChkZWZhdWx0OiAzMDAyKS4nKVxuICAub3B0aW9uKCctLXF1aWV0JywgJ05vIExleCBub3RpZmljYXRpb25zIHByaW50ZWQgaW4gdGhlIGNvbnNvbGUuJylcbiAgLm9wdGlvbignLS1yZW1vdmUnLCAnUmVtb3ZlcyBhbGwgZmlsZXMgZnJvbSB0aGUgb3V0cHV0IGRpcmVjdG9yeSBiZWZvcmUgc3RhcnRpbmcuJylcbiAgLm9wdGlvbignLS11c2VQdWJsaWNJcCcsICdGb3JjZSByZWZyZXNoIHRoZSBjYWNoZWQgcHVibGljIElQIGFkZHJlc3MuJylcbiAgLm9wdGlvbignLS12YXJpYWJsZXMgPGpzb24+JywgJ0Vudmlyb25tZW50IHZhcmlhYmxlcyB0byBzZXQgaW4gcHJvY2Vzcy5lbnYuJylcbiAgLm9wdGlvbignLS1kZWJ1ZycsICdFbmFibGUgR3JhcGhRTCBkZWJ1ZyBsb2dnaW5nIHRvIHNlZSBxdWVyaWVzLCB2YXJpYWJsZXMsIGFuZCBvcGVyYXRpb25zLicpXG4gIC5vcHRpb24oJy0tcHJpbnRPdXRwdXQnLCAnUHJpbnQgR3JhcGhRTCByZXNwb25zZSBvdXRwdXQgaW5jbHVkaW5nIHN0YXR1cywgaGVhZGVycywgYW5kIGJvZHkuJylcbiAgLmFjdGlvbigoY21kKSA9PiBzZXJ2ZXJsZXNzKGNtZCwgcHJvY2Vzcy5leGl0KS50aGVuKCgpID0+IHt9KSk7XG5cbnByb2dyYW0uY29tbWFuZCgnc3Rvcnlib29rJylcbiAgLm9wdGlvbignLS1jb25maWcgPHBhdGg+JywgJ0N1c3RvbSBTdG9yeWJvb2sgY29uZmlndXJhdGlvbiBkaXJlY3RvcnkgcGF0aCAoaWUuIC5zdG9yeWJvb2spLicpXG4gIC5vcHRpb24oJy0tbGV4Q29uZmlnIDxwYXRoPicsICdDdXN0b20gTGV4IGNvbmZpZ3VyYXRpb24gZmlsZSBwYXRoIChpZS4gbGV4LmNvbmZpZy5qcykuJylcbiAgLm9wdGlvbignLS1vcGVuJywgJ0F1dG9tYXRpY2FsbHkgb3BlbiBTdG9yeWJvb2sgaW4gYSBuZXcgYnJvd3NlciB3aW5kb3cuJylcbiAgLm9wdGlvbignLS1wb3J0IDxudW1iZXI+JywgJ1BvcnQgbnVtYmVyIGZvciB0aGUgU3Rvcnlib29rIHNlcnZlci4nKVxuICAub3B0aW9uKCctLXF1aWV0JywgJ05vIExleCBub3RpZmljYXRpb25zIHByaW50ZWQgaW4gdGhlIGNvbnNvbGUuJylcbiAgLm9wdGlvbignLS1zdGF0aWMnLCAnQnVpbGQgYSBzdGF0aWMgU3Rvcnlib29rIHNpdGUgaW5zdGVhZCBvZiBzdGFydGluZyBkZXYgc2VydmVyLicpXG4gIC5vcHRpb24oJy0tdmFyaWFibGVzIDxuPicsICdFbnZpcm9ubWVudCB2YXJpYWJsZXMgdG8gc2V0IGluIFwicHJvY2Vzcy5lbnZcIi4gKGllLiBcIntTVE9SWUJPT0tfVEhFTUU6IFxcJ2RhcmtcXCd9XCIpLicpXG4gIC5vcHRpb24oJy0tdmVyYm9zZScsICdTaG93IGRldGFpbGVkIHdlYnBhY2sgcHJvZ3Jlc3Mgb3V0cHV0LicpXG4gIC5hY3Rpb24oKGNtZCkgPT4gc3Rvcnlib29rKGNtZCwgcHJvY2Vzcy5leGl0KS50aGVuKCgpID0+IHt9KSk7XG5cbnByb2dyYW0uY29tbWFuZCgndGVzdCBbZmlsZXMuLi5dJylcbiAgLm9wdGlvbignLS1hbmFseXplJywgJ1VzZSBBSSB0byBhbmFseXplIHRlc3QgY292ZXJhZ2UgYW5kIHN1Z2dlc3QgaW1wcm92ZW1lbnRzLicsIGZhbHNlKVxuICAub3B0aW9uKCctLWRlYnVnVGVzdHMnLCAnVXNlIEFJIHRvIGRlYnVnIHRlc3QgZmFpbHVyZXMgYW5kIHN1Z2dlc3QgZml4ZXMuJywgZmFsc2UpXG4gIC5vcHRpb24oJy0tZ2VuZXJhdGUnLCAnVXNlIEFJIHRvIGdlbmVyYXRlIHRlc3QgY2FzZXMgZm9yIHVudGVzdGVkIGNvZGUuJywgZmFsc2UpXG4gIC5vcHRpb24oJy0tYmFpbCcsICdFeGl0IHRoZSB0ZXN0IHN1aXRlIGltbWVkaWF0ZWx5IHVwb24gdGhlIGZpcnN0IGZhaWxpbmcgdGVzdCBzdWl0ZS4nKVxuICAub3B0aW9uKCctLWNoYW5nZWRGaWxlc1dpdGhBbmNlc3RvcicsICdSdW5zIHRlc3RzIHJlbGF0ZWQgdG8gdGhlIGN1cnJlbnQgY2hhbmdlcyBhbmQgdGhlIGNoYW5nZXMgbWFkZSBpbiB0aGUgbGFzdCBjb21taXQuJylcbiAgLm9wdGlvbignLS1jaGFuZ2VkU2luY2UnLCAnUnVucyB0ZXN0cyByZWxhdGVkIHRoZSBjaGFuZ2VzIHNpbmNlIHRoZSBwcm92aWRlZCBicmFuY2guJylcbiAgLm9wdGlvbignLS1jaScsICdXaGVuIHRoaXMgb3B0aW9uIGlzIHByb3ZpZGVkLCBKZXN0IHdpbGwgYXNzdW1lIGl0IGlzIHJ1bm5pbmcgaW4gYSBDSSBlbnZpcm9ubWVudC4nKVxuICAub3B0aW9uKCctLWNsZWFyQ2FjaGUnLCAnQ2xlYXIgSmVzdCBjYWNoZS4nKVxuICAub3B0aW9uKCctLWNvbGxlY3RDb3ZlcmFnZUZyb20gPGdsb2I+JywgJ0EgZ2xvYiBwYXR0ZXJuIHJlbGF0aXZlIHRvIG1hdGNoaW5nIHRoZSBmaWxlcyB0aGF0IGNvdmVyYWdlIGluZm8gbmVlZHMgdG8gYmUgY29sbGVjdGVkIGZyb20uJylcbiAgLm9wdGlvbignLS1jb2xvcnMnLCAnRm9yY2VzIHRlc3QgcmVzdWx0cyBvdXRwdXQgaGlnaGxpZ2h0aW5nIGV2ZW4gaWYgc3Rkb3V0IGlzIG5vdCBhIFRUWS4nKVxuICAub3B0aW9uKCctLWNvbmZpZyA8cGF0aD4nLCAnQ3VzdG9tIEplc3QgY29uZmlndXJhdGlvbiBmaWxlIHBhdGggKGllLiBqZXN0LmNvbmZpZy5qcykuJylcbiAgLm9wdGlvbignLS1kZWJ1ZycsICdQcmludCBkZWJ1Z2dpbmcgaW5mbyBhYm91dCB5b3VyIEplc3QgY29uZmlnLicpXG4gIC5vcHRpb24oJy0tZGV0ZWN0T3BlbkhhbmRsZXMnLCAnQXR0ZW1wdCB0byBjb2xsZWN0IGFuZCBwcmludCBvcGVuIGhhbmRsZXMgcHJldmVudGluZyBKZXN0IGZyb20gZXhpdGluZyBjbGVhbmx5JylcbiAgLm9wdGlvbignLS1lbnZpcm9ubWVudCA8bj4nLCAnVGFyZ2V0IGVudmlyb25tZW50LiBcIm5vZGVcIiBvciBcIndlYlwiLiBEZWZhdWx0OiBcIm5vZGVcIi4nKVxuICAub3B0aW9uKCctLWVudicsICdUaGUgdGVzdCBlbnZpcm9ubWVudCB1c2VkIGZvciBhbGwgdGVzdHMuIFRoaXMgY2FuIHBvaW50IHRvIGFueSBmaWxlIG9yIG5vZGUgbW9kdWxlLiBFeGFtcGxlczoganNkb20sIG5vZGUgb3IgcGF0aC90by9teS1lbnZpcm9ubWVudC5qcy4nKVxuICAub3B0aW9uKCctLWVycm9yT25EZXByZWNhdGVkJywgJ01ha2UgY2FsbGluZyBkZXByZWNhdGVkIEFQSXMgdGhyb3cgaGVscGZ1bCBlcnJvciBtZXNzYWdlcy4nKVxuICAub3B0aW9uKCctLWV4cGFuZCcsICdVc2UgdGhpcyBmbGFnIHRvIHNob3cgZnVsbCBkaWZmcyBhbmQgZXJyb3JzIGluc3RlYWQgb2YgYSBwYXRjaC4nKVxuICAub3B0aW9uKCctLWZvcmNlRXhpdCcsICdGb3JjZSBKZXN0IHRvIGV4aXQgYWZ0ZXIgYWxsIHRlc3RzIGhhdmUgY29tcGxldGVkIHJ1bm5pbmcuJylcbiAgLm9wdGlvbignLS1qc29uJywgJ1ByaW50cyB0aGUgdGVzdCByZXN1bHRzIGluIEpTT04uJylcbiAgLm9wdGlvbignLS1sYXN0Q29tbWl0JywgJ1J1biBhbGwgdGVzdHMgYWZmZWN0ZWQgYnkgZmlsZSBjaGFuZ2VzIGluIHRoZSBsYXN0IGNvbW1pdCBtYWRlLicpXG4gIC5vcHRpb24oJy0tbGV4Q29uZmlnIDxwYXRoPicsICdDdXN0b20gTGV4IGNvbmZpZ3VyYXRpb24gZmlsZSBwYXRoIChpZS4gbGV4LmNvbmZpZy5qcykuJylcbiAgLm9wdGlvbignLS1saXN0VGVzdHMnLCAnTGlzdHMgYWxsIHRlc3RzIGFzIEpTT04gdGhhdCBKZXN0IHdpbGwgcnVuIGdpdmVuIHRoZSBhcmd1bWVudHMsIGFuZCBleGl0cy4nKVxuICAub3B0aW9uKCctLWxvZ0hlYXBVc2FnZScsICdMb2dzIHRoZSBoZWFwIHVzYWdlIGFmdGVyIGV2ZXJ5IHRlc3QuJylcbiAgLm9wdGlvbignLS1tYXhXb3JrZXJzIDxudW0+JywgJ1NwZWNpZmllcyB0aGUgbWF4aW11bSBudW1iZXIgb2Ygd29ya2VycyB0aGUgd29ya2VyLXBvb2wgd2lsbCBzcGF3biBmb3IgcnVubmluZyB0ZXN0cy4gJylcbiAgLm9wdGlvbignLS1ub1N0YWNrVHJhY2UnLCAnRGlzYWJsZXMgc3RhY2sgdHJhY2UgaW4gdGVzdCByZXN1bHRzIG91dHB1dC4nKVxuICAub3B0aW9uKCctLW5vdGlmeScsICdBY3RpdmF0ZXMgbm90aWZpY2F0aW9ucyBmb3IgdGVzdCByZXN1bHRzLicpXG4gIC5vcHRpb24oJy0tb25seUNoYW5nZWQnLCAndW4gYmFzZWQgb24gd2hpY2ggZmlsZXMgaGF2ZSBjaGFuZ2VkIGluIHRoZSBjdXJyZW50IHJlcG9zaXRvcnkuICcpXG4gIC5vcHRpb24oJy0tb3V0cHV0RmlsZSA8ZmlsZW5hbWU+JywgJ1dyaXRlIHRlc3QgcmVzdWx0cyB0byBhIGZpbGUgd2hlbiB0aGUgLS1qc29uIG9wdGlvbiBpcyBhbHNvIHNwZWNpZmllZC4nKVxuICAub3B0aW9uKCctLXBhc3NXaXRoTm9UZXN0cycsICdBbGxvd3MgdGhlIHRlc3Qgc3VpdGUgdG8gcGFzcyB3aGVuIG5vIGZpbGVzIGFyZSBmb3VuZC4nKVxuICAub3B0aW9uKCctLXF1aWV0JywgJ05vIExleCBub3RpZmljYXRpb25zIHByaW50ZWQgaW4gdGhlIGNvbnNvbGUuJylcbiAgLm9wdGlvbignLS1ydW5JbkJhbmQnLCAnUnVuIGFsbCB0ZXN0cyBzZXJpYWxseSBpbiB0aGUgY3VycmVudCBwcm9jZXNzLCByYXRoZXIgdGhhbiBjcmVhdGluZyBhIHdvcmtlciBwb29sIG9mIGNoaWxkIHByb2Nlc3NlcyB0aGF0IHJ1biB0ZXN0cy4nKVxuICAub3B0aW9uKCctLXNldHVwIDxwYXRoPicsICdKZXN0IHNldHVwIGZpbGUgcGF0aC4nKVxuICAub3B0aW9uKCctLXNob3dDb25maWcnLCAnUHJpbnQgeW91ciBKZXN0IGNvbmZpZyBhbmQgdGhlbiBleGl0cy4nKVxuICAub3B0aW9uKCctLXNpbGVudCcsICdQcmV2ZW50IHRlc3RzIGZyb20gcHJpbnRpbmcgbWVzc2FnZXMgdGhyb3VnaCB0aGUgY29uc29sZS4nKVxuICAub3B0aW9uKCctLXRlc3RMb2NhdGlvbkluUmVzdWx0cycsICdBZGRzIGEgbG9jYXRpb24gZmllbGQgdG8gdGVzdCByZXN1bHRzLicpXG4gIC5vcHRpb24oJy0tdGVzdE5hbWVQYXR0ZXJuIDxyZWdleD4nLCAnUnVuIG9ubHkgdGVzdHMgd2l0aCBhIG5hbWUgdGhhdCBtYXRjaGVzIHRoZSByZWdleC4gJylcbiAgLm9wdGlvbignLS10ZXN0UGF0aFBhdHRlcm4gPHJlZ2V4PicsICdBIHJlZ2V4cCBwYXR0ZXJuIHN0cmluZyB0aGF0IGlzIG1hdGNoZWQgYWdhaW5zdCBhbGwgdGVzdHMgcGF0aHMgYmVmb3JlIGV4ZWN1dGluZyB0aGUgdGVzdC4nKVxuICAub3B0aW9uKCctLXR5cGVzY3JpcHQnLCAnVHJhbnNwaWxlIGFzIFR5cGVzY3JpcHQuJylcbiAgLm9wdGlvbignLS11cGRhdGUnLCAnVXBkYXRlIHNuYXBzaG90cy4gUnVucyBcImplc3QgLS11cGRhdGVTbmFwc2hvdHNcIicpXG4gIC5vcHRpb24oJy0tdXNlU3RkZXJyJywgJ0RpdmVydCBhbGwgb3V0cHV0IHRvIHN0ZGVyci4nKVxuICAub3B0aW9uKCctLXZlcmJvc2UnLCAnRGlzcGxheSBpbmRpdmlkdWFsIHRlc3QgcmVzdWx0cyB3aXRoIHRoZSB0ZXN0IHN1aXRlIGhpZXJhcmNoeS4nKVxuICAub3B0aW9uKCctLXdhdGNoIDxwYXRoPicsICdXYXRjaCBmaWxlcyBmb3IgY2hhbmdlcyBhbmQgcmVydW4gdGVzdHMgcmVsYXRlZCB0byBjaGFuZ2VkIGZpbGVzLicpXG4gIC5vcHRpb24oJy0td2F0Y2hBbGwnLCAnV2F0Y2ggZmlsZXMgZm9yIGNoYW5nZXMgYW5kIHJlcnVuIGFsbCB0ZXN0cyB3aGVuIHNvbWV0aGluZyBjaGFuZ2VzLicpXG4gIC5hY3Rpb24oKGZpbGVzLCBvcHRpb25zLCBjbWQpID0+IHRlc3Qob3B0aW9ucywgY21kLmFyZ3MsIGZpbGVzLCBwcm9jZXNzLmV4aXQpLnRoZW4oKCkgPT4ge30pKTtcblxucHJvZ3JhbS5jb21tYW5kKCd1cGRhdGUnKVxuICAub3B0aW9uKCctLWludGVyYWN0aXZlJywgJ0Nob29zZSB3aGljaCBwYWNrYWdlcyB0byB1cGRhdGUuJylcbiAgLmFkZE9wdGlvbihuZXcgT3B0aW9uKCctLXBhY2thZ2UtbWFuYWdlciA8bWFuYWdlcj4nLCAnV2hpY2ggcGFja2FnZSBtYW5hZ2VyIHRvIHVzZS4gRGVmYXVsdDogbnBtJykuY2hvaWNlcyhbJ25wbScsICd5YXJuJ10pLmRlZmF1bHQoJ25wbScpKVxuICAub3B0aW9uKCctLXF1aWV0JywgJ05vIExleCBub3RpZmljYXRpb25zIHByaW50ZWQgaW4gdGhlIGNvbnNvbGUuJylcbiAgLm9wdGlvbignLS1yZWdpc3RyeScsICdBZGQgYSBjdXN0b20gcmVnaXN0cnkgdXJsLicpXG4gIC5hY3Rpb24oKGNtZCkgPT4gdXBkYXRlKGNtZCwgcHJvY2Vzcy5leGl0KS50aGVuKCgpID0+IHt9KSk7XG5cbnByb2dyYW0uY29tbWFuZCgndXBncmFkZScpXG4gIC5hZGRPcHRpb24obmV3IE9wdGlvbignLS1wYWNrYWdlLW1hbmFnZXIgPG1hbmFnZXI+JywgJ1doaWNoIHBhY2thZ2UgbWFuYWdlciB0byB1c2UuIERlZmF1bHQ6IG5wbScpLmNob2ljZXMoWyducG0nLCAneWFybiddKS5kZWZhdWx0KCducG0nKSlcbiAgLm9wdGlvbignLS1xdWlldCcsICdObyBMZXggbm90aWZpY2F0aW9ucyBwcmludGVkIGluIHRoZSBjb25zb2xlLicpXG4gIC5hY3Rpb24oKGNtZCkgPT4gdXBncmFkZShjbWQsIHByb2Nlc3MuZXhpdCkudGhlbigoKSA9PiB7fSkpO1xuXG5wcm9ncmFtLmNvbW1hbmQoJ2FpJylcbiAgLm9wdGlvbignLS1jb250ZXh0JywgJ0luY2x1ZGUgcHJvamVjdCBjb250ZXh0IGluIHRoZSBBSSBwcm9tcHQuJywgdHJ1ZSlcbiAgLm9wdGlvbignLS1maWxlIDxwYXRoPicsICdTcGVjaWZpYyBmaWxlIHRvIG9wZXJhdGUgb24uJylcbiAgLm9wdGlvbignLS1sZXhDb25maWcgPHBhdGg+JywgJ0N1c3RvbSBMZXggY29uZmlndXJhdGlvbiBmaWxlIHBhdGggKGllLiBsZXguY29uZmlnLmpzKS4nKVxuICAub3B0aW9uKCctLW1vZGVsIDxtb2RlbD4nLCAnQUkgbW9kZWwgdG8gdXNlLiBEZWZhdWx0OiBncHQtNG8uJylcbiAgLm9wdGlvbignLS1wcm9tcHQgPHRleHQ+JywgJ1RoZSBwcm9tcHQgdG8gc2VuZCB0byB0aGUgQUkuJylcbiAgLm9wdGlvbignLS1xdWlldCcsICdObyBMZXggbm90aWZpY2F0aW9ucyBwcmludGVkIGluIHRoZSBjb25zb2xlLicpXG4gIC5hZGRPcHRpb24obmV3IE9wdGlvbignLS10YXNrIDx0YXNrPicsICdUeXBlIG9mIEFJIHRhc2sgdG8gcGVyZm9ybS4nKS5jaG9pY2VzKFsnZ2VuZXJhdGUnLCAnZXhwbGFpbicsICd0ZXN0JywgJ29wdGltaXplJywgJ2hlbHAnXSkuZGVmYXVsdCgnaGVscCcpKVxuICAuYWN0aW9uKChjbWQpID0+IGFpRnVuY3Rpb24oY21kKS50aGVuKCgpID0+IHt9KSk7XG5cbnByb2dyYW0uY29tbWFuZCgndmVyc2lvbnMnKVxuICAub3B0aW9uKCctLWpzb24nLCAnUHJpbnQgdGhlIHZlcnNpb24gYXMgYSBKU09OIG9iamVjdC4nKVxuICAuYWN0aW9uKChjbWQpID0+IHZlcnNpb25zKGNtZCwgcHJvY2Vzcy5leGl0KS50aGVuKCgpID0+IHt9KSk7XG5cbnByb2dyYW1cbiAgLnZlcnNpb24ocGFja2FnZUpzb24udmVyc2lvbilcbiAgLnBhcnNlKHByb2Nlc3MuYXJndik7Il0sCiAgIm1hcHBpbmdzIjogIjtBQUtBLFNBQVEsUUFBUSxlQUFjO0FBQzlCLFNBQVEsb0JBQW1CO0FBQzNCLFNBQVEscUJBQW9CO0FBQzVCLFNBQVEsU0FBUyxlQUFjO0FBQy9CLFNBQVEscUJBQW9CO0FBRTVCLFNBQVEsa0JBQWlCO0FBQ3pCLFNBQVEsYUFBWTtBQUNwQixTQUFRLGFBQVk7QUFDcEIsU0FBUSxlQUFjO0FBQ3RCLFNBQVEsY0FBYTtBQUNyQixTQUFRLGNBQWE7QUFDckIsU0FBUSxXQUFVO0FBQ2xCLFNBQVEsWUFBVztBQUNuQixTQUFRLGNBQWE7QUFDckIsU0FBUSxZQUFXO0FBQ25CLFNBQVEsZUFBYztBQUN0QixTQUFRLGVBQWM7QUFDdEIsU0FBUSxrQkFBaUI7QUFDekIsU0FBUSxpQkFBZ0I7QUFDeEIsU0FB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
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { existsSync, readFileSync, writeFileSync } from "fs";
|
|
1
|
+
import { existsSync, mkdirSync, readFileSync, writeFileSync } from "fs";
|
|
2
2
|
import { sync as globSync } from "glob";
|
|
3
3
|
import { resolve as pathResolve } from "path";
|
|
4
4
|
import { log } from "./log.js";
|
|
@@ -31,7 +31,7 @@ const findTranslationFiles = (sourcePath) => {
|
|
|
31
31
|
nodir: true
|
|
32
32
|
});
|
|
33
33
|
files.push(...matches);
|
|
34
|
-
} catch
|
|
34
|
+
} catch {
|
|
35
35
|
}
|
|
36
36
|
});
|
|
37
37
|
return files;
|
|
@@ -62,13 +62,29 @@ const processTranslations = async (sourcePath, outputPath, quiet = false) => {
|
|
|
62
62
|
const flattenedTranslations = flattenTranslations(allTranslations);
|
|
63
63
|
const outputFile = pathResolve(outputPath, "translations.json");
|
|
64
64
|
try {
|
|
65
|
+
const outputDir = pathResolve(outputPath);
|
|
66
|
+
if (!existsSync(outputDir)) {
|
|
67
|
+
mkdirSync(outputDir, { recursive: true });
|
|
68
|
+
}
|
|
65
69
|
writeFileSync(outputFile, JSON.stringify(flattenedTranslations, null, 2), "utf8");
|
|
66
70
|
log(`Translations written to: ${outputFile}`, "info", quiet);
|
|
67
71
|
} catch (error) {
|
|
68
72
|
log(`Error writing translations file: ${error.message}`, "error", quiet);
|
|
69
73
|
}
|
|
74
|
+
const srcDir = pathResolve(sourcePath, "src");
|
|
75
|
+
const srcOutputFile = existsSync(srcDir) ? pathResolve(srcDir, "translations.json") : pathResolve(sourcePath, "translations.json");
|
|
76
|
+
try {
|
|
77
|
+
const ensureDir = existsSync(srcDir) ? srcDir : sourcePath;
|
|
78
|
+
if (!existsSync(ensureDir)) {
|
|
79
|
+
mkdirSync(ensureDir, { recursive: true });
|
|
80
|
+
}
|
|
81
|
+
writeFileSync(srcOutputFile, JSON.stringify(flattenedTranslations, null, 2), "utf8");
|
|
82
|
+
log(`Translations written to: ${srcOutputFile}`, "info", quiet);
|
|
83
|
+
} catch (error) {
|
|
84
|
+
log(`Error writing translations file to src: ${error.message}`, "error", quiet);
|
|
85
|
+
}
|
|
70
86
|
};
|
|
71
87
|
export {
|
|
72
88
|
processTranslations
|
|
73
89
|
};
|
|
74
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
90
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL3V0aWxzL3RyYW5zbGF0aW9ucy50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMjUtUHJlc2VudCwgTml0cm9nZW4gTGFicywgSW5jLlxuICogQ29weXJpZ2h0cyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSB0aGUgYWNjb21wYW55aW5nIExJQ0VOU0UgZmlsZSBmb3IgdGVybXMuXG4gKi9cbmltcG9ydCB7ZXhpc3RzU3luYywgbWtkaXJTeW5jLCByZWFkRmlsZVN5bmMsIHdyaXRlRmlsZVN5bmN9IGZyb20gJ2ZzJztcbmltcG9ydCB7c3luYyBhcyBnbG9iU3luY30gZnJvbSAnZ2xvYic7XG5pbXBvcnQge3Jlc29sdmUgYXMgcGF0aFJlc29sdmV9IGZyb20gJ3BhdGgnO1xuXG5pbXBvcnQge2xvZ30gZnJvbSAnLi9sb2cuanMnO1xuXG5jb25zdCBmbGF0dGVuVHJhbnNsYXRpb25zID0gKG9iajogYW55LCBwcmVmaXggPSAnJyk6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPT4ge1xuICBsZXQgZmxhdHRlbmVkOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge307XG5cbiAgZm9yKGNvbnN0IGtleSBpbiBvYmopIHtcbiAgICBjb25zdCB2YWx1ZSA9IG9ialtrZXldO1xuICAgIGNvbnN0IG5ld0tleSA9IHByZWZpeCA/IGAke3ByZWZpeH0uJHtrZXl9YCA6IGtleTtcblxuICAgIGlmKHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUgIT09IG51bGwgJiYgIUFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICBmbGF0dGVuZWQgPSB7Li4uZmxhdHRlbmVkLCAuLi5mbGF0dGVuVHJhbnNsYXRpb25zKHZhbHVlLCBuZXdLZXkpfTtcbiAgICB9IGVsc2Uge1xuICAgICAgZmxhdHRlbmVkW25ld0tleV0gPSBTdHJpbmcodmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBmbGF0dGVuZWQ7XG59O1xuXG5jb25zdCBmaW5kVHJhbnNsYXRpb25GaWxlcyA9IChzb3VyY2VQYXRoOiBzdHJpbmcpOiBzdHJpbmdbXSA9PiB7XG4gIGNvbnN0IHBhdHRlcm5zID0gW1xuICAgICcqKi90cmFuc2xhdGlvbnMvKi5qc29uJyxcbiAgICAnKiovaTE4bi8qLmpzb24nLFxuICAgICcqKi9sb2NhbGVzLyouanNvbicsXG4gICAgJyoqL2xhbmcvKi5qc29uJ1xuICBdO1xuXG4gIGNvbnN0IGZpbGVzOiBzdHJpbmdbXSA9IFtdO1xuXG4gIHBhdHRlcm5zLmZvckVhY2goKHBhdHRlcm4pID0+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgbWF0Y2hlcyA9IGdsb2JTeW5jKHBhdHRlcm4sIHtcbiAgICAgICAgYWJzb2x1dGU6IHRydWUsXG4gICAgICAgIGN3ZDogc291cmNlUGF0aCxcbiAgICAgICAgbm9kaXI6IHRydWVcbiAgICAgIH0pO1xuICAgICAgZmlsZXMucHVzaCguLi5tYXRjaGVzKTtcbiAgICB9IGNhdGNoIHtcbiAgICB9XG4gIH0pO1xuXG4gIHJldHVybiBmaWxlcztcbn07XG5cbmV4cG9ydCBjb25zdCBwcm9jZXNzVHJhbnNsYXRpb25zID0gYXN5bmMgKFxuICBzb3VyY2VQYXRoOiBzdHJpbmcsXG4gIG91dHB1dFBhdGg6IHN0cmluZyxcbiAgcXVpZXQ6IGJvb2xlYW4gPSBmYWxzZVxuKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gIGlmKCFleGlzdHNTeW5jKHNvdXJjZVBhdGgpKSB7XG4gICAgbG9nKGBTb3VyY2UgcGF0aCBkb2VzIG5vdCBleGlzdDogJHtzb3VyY2VQYXRofWAsICdlcnJvcicsIHF1aWV0KTtcbiAgICByZXR1cm47XG4gIH1cblxuICBsb2coJ0ZpbmRpbmcgdHJhbnNsYXRpb24gZmlsZXMuLi4nLCAnaW5mbycsIHF1aWV0KTtcblxuICBjb25zdCB0cmFuc2xhdGlvbkZpbGVzID0gZmluZFRyYW5zbGF0aW9uRmlsZXMoc291cmNlUGF0aCk7XG5cbiAgaWYodHJhbnNsYXRpb25GaWxlcy5sZW5ndGggPT09IDApIHtcbiAgICBsb2coJ05vIHRyYW5zbGF0aW9uIGZpbGVzIGZvdW5kJywgJ3dhcm4nLCBxdWlldCk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgbG9nKGBGb3VuZCAke3RyYW5zbGF0aW9uRmlsZXMubGVuZ3RofSB0cmFuc2xhdGlvbiBmaWxlc2AsICdpbmZvJywgcXVpZXQpO1xuXG4gIGxldCBhbGxUcmFuc2xhdGlvbnM6IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7fTtcblxuICBmb3IoY29uc3QgZmlsZVBhdGggb2YgdHJhbnNsYXRpb25GaWxlcykge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBjb250ZW50ID0gcmVhZEZpbGVTeW5jKGZpbGVQYXRoLCAndXRmOCcpO1xuICAgICAgY29uc3QgZGF0YSA9IEpTT04ucGFyc2UoY29udGVudCk7XG5cbiAgICAgIGFsbFRyYW5zbGF0aW9ucyA9IHsuLi5hbGxUcmFuc2xhdGlvbnMsIC4uLmRhdGF9O1xuXG4gICAgICBsb2coYFByb2Nlc3NlZDogJHtmaWxlUGF0aH1gLCAnaW5mbycsIHF1aWV0KTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgbG9nKGBFcnJvciBwcm9jZXNzaW5nICR7ZmlsZVBhdGh9OiAke2Vycm9yLm1lc3NhZ2V9YCwgJ2Vycm9yJywgcXVpZXQpO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGZsYXR0ZW5lZFRyYW5zbGF0aW9ucyA9IGZsYXR0ZW5UcmFuc2xhdGlvbnMoYWxsVHJhbnNsYXRpb25zKTtcbiAgY29uc3Qgb3V0cHV0RmlsZSA9IHBhdGhSZXNvbHZlKG91dHB1dFBhdGgsICd0cmFuc2xhdGlvbnMuanNvbicpO1xuXG4gIHRyeSB7XG4gICAgY29uc3Qgb3V0cHV0RGlyID0gcGF0aFJlc29sdmUob3V0cHV0UGF0aCk7XG5cbiAgICBpZighZXhpc3RzU3luYyhvdXRwdXREaXIpKSB7XG4gICAgICBta2RpclN5bmMob3V0cHV0RGlyLCB7cmVjdXJzaXZlOiB0cnVlfSk7XG4gICAgfVxuXG4gICAgd3JpdGVGaWxlU3luYyhvdXRwdXRGaWxlLCBKU09OLnN0cmluZ2lmeShmbGF0dGVuZWRUcmFuc2xhdGlvbnMsIG51bGwsIDIpLCAndXRmOCcpO1xuICAgIGxvZyhgVHJhbnNsYXRpb25zIHdyaXR0ZW4gdG86ICR7b3V0cHV0RmlsZX1gLCAnaW5mbycsIHF1aWV0KTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBsb2coYEVycm9yIHdyaXRpbmcgdHJhbnNsYXRpb25zIGZpbGU6ICR7ZXJyb3IubWVzc2FnZX1gLCAnZXJyb3InLCBxdWlldCk7XG4gIH1cblxuICBjb25zdCBzcmNEaXIgPSBwYXRoUmVzb2x2ZShzb3VyY2VQYXRoLCAnc3JjJyk7XG4gIGNvbnN0IHNyY091dHB1dEZpbGUgPSBleGlzdHNTeW5jKHNyY0RpcikgPyBwYXRoUmVzb2x2ZShzcmNEaXIsICd0cmFuc2xhdGlvbnMuanNvbicpIDogcGF0aFJlc29sdmUoc291cmNlUGF0aCwgJ3RyYW5zbGF0aW9ucy5qc29uJyk7XG5cbiAgdHJ5IHtcbiAgICBjb25zdCBlbnN1cmVEaXIgPSBleGlzdHNTeW5jKHNyY0RpcikgPyBzcmNEaXIgOiBzb3VyY2VQYXRoO1xuXG4gICAgaWYoIWV4aXN0c1N5bmMoZW5zdXJlRGlyKSkge1xuICAgICAgbWtkaXJTeW5jKGVuc3VyZURpciwge3JlY3Vyc2l2ZTogdHJ1ZX0pO1xuICAgIH1cblxuICAgIHdyaXRlRmlsZVN5bmMoc3JjT3V0cHV0RmlsZSwgSlNPTi5zdHJpbmdpZnkoZmxhdHRlbmVkVHJhbnNsYXRpb25zLCBudWxsLCAyKSwgJ3V0ZjgnKTtcbiAgICBsb2coYFRyYW5zbGF0aW9ucyB3cml0dGVuIHRvOiAke3NyY091dHB1dEZpbGV9YCwgJ2luZm8nLCBxdWlldCk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgbG9nKGBFcnJvciB3cml0aW5nIHRyYW5zbGF0aW9ucyBmaWxlIHRvIHNyYzogJHtlcnJvci5tZXNzYWdlfWAsICdlcnJvcicsIHF1aWV0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
|
package/package.json
CHANGED
package/webpack.config.js
CHANGED
|
@@ -315,6 +315,23 @@ export default (webpackEnv, webpackOptions) => {
|
|
|
315
315
|
loader: sourceMapLoaderPath,
|
|
316
316
|
test: /\.(ts|tsx|js)$/
|
|
317
317
|
},
|
|
318
|
+
{
|
|
319
|
+
exclude: [
|
|
320
|
+
/node_modules\/(?!(react-native))/,
|
|
321
|
+
`${sourceFullPath}/**/*.test.js*`,
|
|
322
|
+
`${sourceFullPath}/**/*.test.ts*`
|
|
323
|
+
],
|
|
324
|
+
include: sourceFullPath,
|
|
325
|
+
loader: esbuildLoaderPath,
|
|
326
|
+
options: {
|
|
327
|
+
loader: 'ts',
|
|
328
|
+
target: targetEnvironment === 'node' ? 'node16' : 'es2016'
|
|
329
|
+
},
|
|
330
|
+
resolve: {
|
|
331
|
+
symlinks: true
|
|
332
|
+
},
|
|
333
|
+
test: /\.(ts|js)$/
|
|
334
|
+
},
|
|
318
335
|
{
|
|
319
336
|
exclude: [
|
|
320
337
|
/node_modules\/(?!(react-native))/,
|
|
@@ -330,7 +347,7 @@ export default (webpackEnv, webpackOptions) => {
|
|
|
330
347
|
resolve: {
|
|
331
348
|
symlinks: true
|
|
332
349
|
},
|
|
333
|
-
test: /\.
|
|
350
|
+
test: /\.tsx$/
|
|
334
351
|
},
|
|
335
352
|
{
|
|
336
353
|
exclude: [pathResolve(sourceFullPath, lexConfig.entryHTML)],
|