gitlab-ci-local 4.40.1 → 4.41.0

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/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "description": "Tired of pushing to test your .gitlab-ci.yml?",
4
4
  "main": "src/index.js",
5
5
  "bin": "src/index.js",
6
- "version": "4.40.1",
6
+ "version": "4.41.0",
7
7
  "scripts": {
8
8
  "pkg-linux": "pkg src/index.js --public -t node18-linux-x64 -o bin/linux/gitlab-ci-local && chmod +x bin/linux/gitlab-ci-local && gzip -c bin/linux/gitlab-ci-local > bin/linux.gz",
9
9
  "pkg-macos": "pkg src/index.js --public -t node18-macos-x64 -o bin/macos/gitlab-ci-local && gzip -c bin/macos/gitlab-ci-local > bin/macos.gz",
@@ -50,11 +50,11 @@
50
50
  "@types/source-map-support": "0.5.6",
51
51
  "@types/split2": "4.2.0",
52
52
  "@types/yargs": "17.0.24",
53
- "@typescript-eslint/eslint-plugin": "5.59.2",
54
- "@typescript-eslint/parser": "5.59.2",
53
+ "@typescript-eslint/eslint-plugin": "5.59.7",
54
+ "@typescript-eslint/parser": "5.59.7",
55
55
  "axios-mock-adapter": "1.21.4",
56
56
  "depcheck": "1.4.3",
57
- "eslint": "8.40.0",
57
+ "eslint": "8.41.0",
58
58
  "jest": "29.5.0",
59
59
  "jest-when": "3.5.2",
60
60
  "pkg": "5.8.1",
package/src/commander.js CHANGED
@@ -50,14 +50,14 @@ class Commander {
50
50
  const jobArgs = argv.job;
51
51
  const jobs = parser.jobs;
52
52
  const stages = parser.stages;
53
- let potentialStarters = [];
53
+ const potentialStarters = [];
54
54
  const jobSet = needs ? new Set(jobs) : new Set();
55
- jobArgs.forEach(jobName => {
56
- const baseJobs = jobs.filter(j => j.baseName == jobName);
55
+ jobArgs.forEach(jobArgName => {
56
+ const baseJobs = jobs.filter(j => j.baseName == jobArgName || j.name === jobArgName);
57
57
  for (const b of baseJobs) {
58
58
  jobSet.add(b);
59
59
  if (needs) {
60
- potentialStarters = potentialStarters.concat(executor_1.Executor.getPastToWaitFor(jobs, stages, b, argv.manual));
60
+ potentialStarters.push(...executor_1.Executor.getPastToWaitFor(jobs, stages, b, argv.manual));
61
61
  }
62
62
  potentialStarters.push(b);
63
63
  }
@@ -65,12 +65,10 @@ class Commander {
65
65
  if (potentialStarters.length === 0) {
66
66
  throw new assert_1.AssertionError({ message: (0, chalk_1.default) `{blueBright ${jobArgs.join(",")}} could not be found` });
67
67
  }
68
- if (argv.onlyNeeds) {
69
- jobArgs.forEach((j) => {
70
- potentialStarters = potentialStarters.filter(p => p.name !== j);
71
- });
72
- }
73
- await executor_1.Executor.runLoop(argv, Array.from(jobSet), stages, potentialStarters);
68
+ const starters = argv.onlyNeeds
69
+ ? potentialStarters.filter(p => !jobArgs.includes(p.name))
70
+ : potentialStarters;
71
+ await executor_1.Executor.runLoop(argv, Array.from(jobSet), stages, starters);
74
72
  await Commander.printReport({
75
73
  cwd: argv.cwd,
76
74
  showTimestamps: argv.showTimestamps,
@@ -230,4 +228,4 @@ class Commander {
230
228
  }
231
229
  }
232
230
  exports.Commander = Commander;
233
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbWFuZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiY29tbWFuZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLGtEQUEwQjtBQUcxQixtQ0FBOEI7QUFFOUIseUNBQW9DO0FBQ3BDLHdEQUEwQjtBQUUxQixtQ0FBc0M7QUFFdEMsTUFBYSxTQUFTO0lBRWxCLE1BQU0sQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFFLElBQVUsRUFBRSxNQUFjLEVBQUUsWUFBMEI7UUFDNUUsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQztRQUN6QixNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDO1FBRTdCLElBQUksaUJBQWlCLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO1FBQzNDLGlCQUFpQixHQUFHLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssT0FBTyxDQUFDLENBQUM7UUFDdEUsaUJBQWlCLEdBQUcsaUJBQWlCLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxRQUFRLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDdkcsTUFBTSxtQkFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO1FBQzlELE1BQU0sU0FBUyxDQUFDLFdBQVcsQ0FBQztZQUN4QixHQUFHLEVBQUUsSUFBSSxDQUFDLEdBQUc7WUFDYixjQUFjLEVBQUUsSUFBSSxDQUFDLGNBQWM7WUFDbkMsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRO1lBQ3ZCLFlBQVksRUFBRSxZQUFZO1lBQzFCLElBQUksRUFBRSxJQUFJO1lBQ1YsTUFBTSxFQUFFLE1B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TyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM3RCxDQUFDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxHQUFHLEVBQUU7WUFDTixJQUFJLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssT0FBTyxDQUFDLENBQUM7U0FDL0M7UUFFRCxZQUFZLENBQUMsTUFBTSxDQUFDLGtEQUFrRCxDQUFDLENBQUM7UUFDeEUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO1lBQ2pCLE1BQU0sS0FBSyxHQUFHLEdBQUcsQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxJQUFJLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ2hHLFlBQVksQ0FBQyxNQUFNLENBQUMsR0FBRyxHQUFHLENBQUMsSUFBSSxLQUFLLEdBQUcsQ0FBQyxXQUFXLEtBQUssR0FBRyxDQUFDLEtBQUssSUFBSSxHQUFHLENBQUMsSUFBSSxJQUFJLEdBQUcsQ0FBQyxZQUFZLEtBQUssS0FBSyxLQUFLLENBQUMsQ0FBQztRQUN0SCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7Q0FFSjtBQXJRRCw4QkFxUUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgY2hhbGsgZnJvbSBcImNoYWxrXCI7XG5pbXBvcnQge0pvYn0gZnJvbSBcIi4vam9iXCI7XG5pbXBvcnQge1BhcnNlcn0gZnJvbSBcIi4vcGFyc2VyXCI7XG5pbXBvcnQge1V0aWxzfSBmcm9tIFwiLi91dGlsc1wiO1xuaW1wb3J0IHtXcml0ZVN0cmVhbXN9IGZyb20gXCIuL3dyaXRlLXN0cmVhbXNcIjtcbmltcG9ydCB7RXhlY3V0b3J9IGZyb20gXCIuL2V4ZWN1dG9yXCI7XG5pbXBvcnQgZnMgZnJvbSBcImZzLWV4dHJhXCI7XG5pbXBvcnQge0FyZ3Z9IGZyb20gXCIuL2FyZ3ZcIjtcbmltcG9ydCB7QXNzZXJ0aW9uRXJyb3J9IGZyb20gXCJhc3NlcnRcIjtcblxuZXhwb3J0IGNsYXNzIENvbW1hbmRlciB7XG5cbiAgICBzdGF0aWMgYXN5bmMgcnVuUGlwZWxpbmUgKGFyZ3Y6IEFyZ3YsIHBhcnNlcjogUGFyc2VyLCB3cml0ZVN0cmVhbXM6IFdyaXRlU3RyZWFtcykge1xuICAgICAgICBjb25zdCBqb2JzID0gcGFyc2VyLmpvYnM7XG4gICAgICAgIGNvbnN0IHN0YWdlcyA9IHBhcnNlci5zdGFnZXM7XG5cbiAgICAgICAgbGV0IHBvdGVudGlhbFN0YXJ0ZXJzID0gWy4uLmpvYnMudmFsdWVzKCldO1xuICAgICAgICBwb3RlbnRpYWxTdGFydGVycyA9IHBvdGVudGlhbFN0YXJ0ZXJzLmZpbHRlcihqID0+IGoud2hlbiAhPT0gXCJuZXZlclwiKTtcbiAgICAgICAgcG90ZW50aWFsU3RhcnRlcnMgPSBwb3RlbnRpYWxTdGFydGVycy5maWx0ZXIoaiA9PiBqLndoZW4gIT09IFwibWFudWFsXCIgfHwgYXJndi5tYW51YWwuaW5jbHVkZXMoai5uYW1lKSk7XG4gICAgICAgIGF3YWl0IEV4ZWN1dG9yLnJ1bkxvb3AoYXJndiwgam9icywgc3RhZ2VzLCBwb3RlbnRpYWxTdGFydGVycyk7XG4gICAgICAgIGF3YWl0IENvbW1hbmRlci5wcmludFJlcG9ydCh7XG4gICAgICAgICAgICBjd2Q6IGFyZ3YuY3dkLFxuICAgICAgICAgICAgc2hvd1RpbWVzdGFtcHM6IGFyZ3Yuc2hvd1RpbWVzdGFtcHMsXG4gICAgICAgICAgICBzdGF0ZURpcjogYXJndi5zdGF0ZURpcixcbiAgICAgICAgICAgIHdyaXRlU3RyZWFtczogd3JpdGVTdHJlYW1zLFxuICAgICAgICAgICAgam9iczogam9icyxcbiAgICAgICAgICAgIHN0YWdlczogc3RhZ2VzLFxuICAgICAgICAgICAgam9iTmFtZVBhZDogcGFyc2VyLmpvYk5hbWVQYWQsXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHN0YXRpYyBhc3luYyBydW5Kb2JzSW5TdGFnZSAoYXJndjogQXJndiwgcGFyc2VyOiBQYXJzZXIsIHdyaXRlU3RyZWFtczogV3JpdGVTdHJlYW1zKSB7XG4gICAgICAgIGNvbnN0IGpvYnMgPSBwYXJzZXIuam9icy5maWx0ZXIoaiA9PiBqLnN0YWdlID09PSBhcmd2LnN0YWdlKTtcbiAgICAgICAgY29uc3Qgc3RhZ2VzID0gcGFyc2VyLnN0YWdlcztcblxuICAgICAgICBsZXQgcG90ZW50aWFsU3RhcnRlcnMgPSBbLi4uam9icy52YWx1ZXMoKV07XG4gICAgICAgIHBvdGVudGlhbFN0YXJ0ZXJzID0gcG90ZW50aWFsU3RhcnRlcnMuZmlsdGVyKGogPT4gai53aGVuICE9PSBcIm5ldmVyXCIpO1xuICAgICAgICBwb3RlbnRpYWxTdGFydGVycyA9IHBvdGVudGlhbFN0YXJ0ZXJzLmZpbHRlcihqID0+IGoud2hlbiAhPT0gXCJtYW51YWxcIiB8fCBhcmd2Lm1hbnVhbC5pbmNsdWRlcyhqLm5hbWUpKTtcbiAgICAgICAgcG90ZW50aWFsU3RhcnRlcnMgPSBwb3RlbnRpYWxTdGFydGVycy5maWx0ZXIoaiA9PiBqLnN0YWdlID09PSBhcmd2LnN0YWdlKTtcbiAgICAgICAgYXdhaXQgRXhlY3V0b3IucnVuTG9vcChhcmd2LCBqb2JzLCBzdGFnZXMsIHBvdGVudGlhbFN0YXJ0ZXJzKTtcbiAgICAgICAgYXdhaXQgQ29tbWFuZGVyLnByaW50UmVwb3J0KHtcbiAgICAgICAgICAgIGN3ZDogYXJndi5jd2QsXG4gICAgICAgICAgICBzaG93VGltZXN0YW1wczogYXJndi5zaG93VGltZXN0YW1wcyxcbiAgICAgICAgICAgIHN0YXRlRGlyOiBhcmd2LnN0YXRlRGlyLFxuICAgICAgICAgICAgd3JpdGVTdHJlYW1zOiB3cml0ZVN0cmVhbXMsXG4gICAgICAgICAgICBqb2JzOiBqb2JzLFxuICAgICAgICAgICAgc3RhZ2VzOiBzdGFnZXMsXG4gICAgICAgICAgICBqb2JOYW1lUGFkOiBwYXJzZXIuam9iTmFtZVBhZCxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgc3RhdGljIGFzeW5jIHJ1bkpvYnMgKGFyZ3Y6IEFyZ3YsIHBhcnNlcjogUGFyc2VyLCB3cml0ZVN0cmVhbXM6IFdyaXRlU3RyZWFtcykge1xuICAgICAgICBjb25zdCBuZWVkcyA9IGFyZ3YubmVlZHMgfHwgYXJndi5vbmx5TmVlZHM7XG4gICAgICAgIGNvbnN0IGpvYkFyZ3MgPSBhcmd2LmpvYjtcbiAgICAgICAgY29uc3Qgam9icyA9IHBhcnNlci5qb2JzO1xuICAgICAgICBjb25zdCBzdGFnZXMgPSBwYXJzZXIuc3RhZ2VzO1xuXG4gICAgICAgIGxldCBwb3RlbnRpYWxTdGFydGVyczogSm9iW10gPSBbXTtcbiAgICAgICAgY29uc3Qgam9iU2V0ID0gbmVlZHMgPyBuZXcgU2V0KGpvYnMpIDogbmV3IFNldDxKb2I+KCk7XG4gICAgICAgIGpvYkFyZ3MuZm9yRWFjaChqb2JOYW1lID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGJhc2VKb2JzID0gam9icy5maWx0ZXIoaiA9PiBqLmJhc2VOYW1lID09IGpvYk5hbWUpO1xuICAgICAgICAgICAgZm9yIChjb25zdCBiIG9mIGJhc2VKb2JzKSB7XG4gICAgICAgICAgICAgICAgam9iU2V0LmFkZChiKTtcbiAgICAgICAgICAgICAgICBpZiAobmVlZHMpIHtcbiAgICAgICAgICAgICAgICAgICAgcG90ZW50aWFsU3RhcnRlcnMgPSBwb3RlbnRpYWxTdGFydGVycy5jb25jYXQoRXhlY3V0b3IuZ2V0UGFzdFRvV2FpdEZvcihqb2JzLCBzdGFnZXMsIGIsIGFyZ3YubWFudWFsKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHBvdGVudGlhbFN0YXJ0ZXJzLnB1c2goYik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICBpZiAocG90ZW50aWFsU3RhcnRlcnMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgQXNzZXJ0aW9uRXJyb3Ioe21lc3NhZ2U6IGNoYWxrYHtibHVlQnJpZ2h0ICR7am9iQXJncy5qb2luKFwiLFwiKX19IGNvdWxkIG5vdCBiZSBmb3VuZGB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChhcmd2Lm9ubHlOZWVkcykge1xuICAgICAgICAgICAgam9iQXJncy5mb3JFYWNoKChqKSA9PiB7XG4gICAgICAgICAgICAgICAgcG90ZW50aWFsU3RhcnRlcnMgPSBwb3RlbnRpYWxTdGFydGVycy5maWx0ZXIocCA9PiBwLm5hbWUgIT09IGopO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBhd2FpdCBFeGVjdXRvci5ydW5Mb29wKGFyZ3YsIEFycmF5LmZyb20oam9iU2V0KSwgc3RhZ2VzLCBwb3RlbnRpYWxTdGFydGVycyk7XG4gICAgICAgIGF3YWl0IENvbW1hbmRlci5wcmludFJlcG9ydCh7XG4gICAgICAgICAgICBjd2Q6IGFyZ3YuY3dkLFxuICAgICAgICAgICAgc2hvd1RpbWVzdGFtcHM6IGFyZ3Yuc2hvd1RpbWVzdGFtcHMsXG4gICAgICAgICAgICBzdGF0ZURpcjogYXJndi5zdGF0ZURpcixcbiAgICAgICAgICAgIHdyaXRlU3RyZWFtczogd3JpdGVTdHJlYW1zLFxuICAgICAgICAgICAgam9iczogam9icyxcbiAgICAgICAgICAgIHN0YWdlczogc3RhZ2VzLFxuICAgICAgICAgICAgam9iTmFtZVBhZDogcGFyc2VyLmpvYk5hbWVQYWQsXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHN0YXRpYyBhc3luYyBwcmludFJlcG9ydCAoe2N3ZCwgc3RhdGVEaXIsIHNob3dUaW1lc3RhbXBzLCB3cml0ZVN0cmVhbXMsIGpvYnMsIHN0YWdlcywgam9iTmFtZVBhZH06IHtcbiAgICAgICAgY3dkOiBzdHJpbmc7XG4gICAgICAgIHNob3dUaW1lc3RhbXBzOiBib29sZWFuO1xuICAgICAgICBzdGF0ZURpcjogc3RyaW5nO1xuICAgICAgICB3cml0ZVN0cmVhbXM6IFdyaXRlU3RyZWFtcztcbiAgICAgICAgam9iczogUmVhZG9ubHlBcnJheTxKb2I+O1xuICAgICAgICBzdGFnZXM6IHJlYWRvbmx5IHN0cmluZ1tdO1xuICAgICAgICBqb2JOYW1lUGFkOiBudW1iZXI7XG4gICAgfSkge1xuXG4gICAgICAgIHdyaXRlU3RyZWFtcy5zdGRvdXQoXCJcXG5cIik7XG5cbiAgICAgICAgY29uc3QgcmVuZGVyRHVyYXRpb24gPSAoZHVyYXRpb246IHN0cmluZykgPT4gc2hvd1RpbWVzdGFtcHMgPyBgIFske2R1cmF0aW9uLnBhZFN0YXJ0KDcpfV1gIDogXCJcIjtcblxuICAgICAgICBjb25zdCBwcmVTY3JpcHRzOiB7c3VjY2Vzc2Z1bDogSm9iW107IGZhaWxlZDogSm9iW107IHdhcm5lZDogSm9iW119ID0ge1xuICAgICAgICAgICAgc3VjY2Vzc2Z1bDogW10sXG4gICAgICAgICAgICBmYWlsZWQ6IFtdLFxuICAgICAgICAgICAgd2FybmVkOiBbXSxcbiAgICAgICAgfTtcbiAgICAgICAgY29uc3QgYWZ0ZXJTY3JpcHRzOiB7d2FybmVkOiBKb2JbXX0gPSB7XG4gICAgICAgICAgICB3YXJuZWQ6IFtdLFxuICAgICAgICB9O1xuXG4gICAgICAgIGZvciAoY29uc3Qgam9iIG9mIGpvYnMudmFsdWVzKCkpIHtcbiAgICAgICAgICAgIGlmIChqb2Iuc3RhcnRlZCAmJiBqb2IuYWZ0ZXJTY3JpcHRzRXhpdENvZGUgIT09IDApIHtcbiAgICAgICAgICAgICAgICBhZnRlclNjcmlwdHMud2FybmVkLnB1c2goam9iKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGZvciAoY29uc3Qgam9iIG9mIGpvYnMudmFsdWVzKCkpIHtcbiAgICAgICAgICAgIGlmICgham9iLnN0YXJ0ZWQpIHtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGpvYi5wcmVTY3JpcHRzRXhpdENvZGUgPT09IDApIHtcbiAgICAgICAgICAgICAgICBwcmVTY3JpcHRzLnN1Y2Nlc3NmdWwucHVzaChqb2IpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChqb2IuYWxsb3dGYWlsdXJlKSB7XG4gICAgICAgICAgICAgICAgcHJlU2NyaXB0cy53YXJuZWQucHVzaChqb2IpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBwcmVTY3JpcHRzLmZhaWxlZC5wdXNoKGpvYik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocHJlU2NyaXB0cy5zdWNjZXNzZnVsLmxlbmd0aCAhPT0gMCkge1xuICAgICAgICAgICAgcHJlU2NyaXB0cy5zdWNjZXNzZnVsLnNvcnQoKGEsIGIpID0+IHN0YWdlcy5pbmRleE9mKGEuc3RhZ2UpIC0gc3RhZ2VzLmluZGV4T2YoYi5zdGFnZSkpO1xuICAgICAgICAgICAgcHJlU2NyaXB0cy5zdWNjZXNzZnVsLmZvckVhY2goKHtjb3ZlcmFnZVBlcmNlbnQsIG5hbWUsIHByZXR0eUR1cmF0aW9ufSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IG5hbWVQYWQgPSBuYW1lLnBhZEVuZChqb2JOYW1lUGFkKTtcbiAgICAgICAgICAgICAgICB3cml0ZVN0cmVhbXMuc3Rkb3V0KGNoYWxrYHtibGFjay5iZ0dyZWVuQnJpZ2h0ICBQQVNTIH0ke3JlbmRlckR1cmF0aW9uKHByZXR0eUR1cmF0aW9uKX0ge2JsdWVCcmlnaHQgJHtuYW1lUGFkfX1gKTtcbiAgICAgICAgICAgICAgICBpZiAoY292ZXJhZ2VQZXJjZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIHdyaXRlU3RyZWFtcy5zdGRvdXQoY2hhbGtgICR7Y292ZXJhZ2VQZXJjZW50fSUge2dyZXkgY292ZXJhZ2V9YCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHdyaXRlU3RyZWFtcy5zdGRvdXQoXCJcXG5cIik7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChwcmVTY3JpcHRzLndhcm5lZC5sZW5ndGggIT09IDApIHtcbiAgICAgICAgICAgIHByZVNjcmlwdHMud2FybmVkLnNvcnQoKGEsIGIpID0+IHN0YWdlcy5pbmRleE9mKGEuc3RhZ2UpIC0gc3RhZ2VzLmluZGV4T2YoYi5zdGFnZSkpO1xuICAgICAgICAgICAgZm9yIChjb25zdCB7bmFtZSwgcHJldHR5RHVyYXRpb259IG9mIHByZVNjcmlwdHMud2FybmVkKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgbmFtZVBhZCA9IG5hbWUucGFkRW5kKGpvYk5hbWVQYWQpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHNhZmVOYW1lID0gVXRpbHMuc2FmZURvY2tlclN0cmluZyhuYW1lKTtcbiAgICAgICAgICAgICAgICB3cml0ZVN0cmVhbXMuc3Rkb3V0KGNoYWxrYHtibGFjay5iZ1llbGxvd0JyaWdodCAgV0FSTiB9JHtyZW5kZXJEdXJhdGlvbihwcmV0dHlEdXJhdGlvbil9IHtibHVlQnJpZ2h0ICR7bmFtZVBhZH19ICBwcmVfc2NyaXB0XFxuYCk7XG4gICAgICAgICAgICAgICAgY29uc3Qgb3V0cHV0TG9nID0gYXdhaXQgZnMucmVhZEZpbGUoYCR7Y3dkfS8ke3N0YXRlRGlyfS9vdXRwdXQvJHtzYWZlTmFtZX0ubG9nYCwgXCJ1dGY4XCIpO1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgbGluZSBvZiBvdXRwdXRMb2cuc3BsaXQoL1xccj9cXG4vKS5maWx0ZXIoaiA9PiAhai5pbmNsdWRlcyhcIlszMm0kIFwiKSkuZmlsdGVyKGogPT4gaiAhPT0gXCJcIikuc2xpY2UoLTMpKSB7XG4gICAgICAgICAgICAgICAgICAgIHdyaXRlU3RyZWFtcy5zdGRvdXQoY2hhbGtgICB7eWVsbG93ID59ICR7bGluZX1cXG5gKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoYWZ0ZXJTY3JpcHRzLndhcm5lZC5sZW5ndGggIT09IDApIHtcbiAgICAgICAgICAgIGFmdGVyU2NyaXB0cy53YXJuZWQuc29ydCgoYSwgYikgPT4gc3RhZ2VzLmluZGV4T2YoYS5zdGFnZSkgLSBzdGFnZXMuaW5kZXhPZihiLnN0YWdlKSk7XG4gICAgICAgICAgICBhZnRlclNjcmlwdHMud2FybmVkLmZvckVhY2goKHtuYW1lLCBwcmV0dHlEdXJhdGlvbn0pID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBuYW1lUGFkID0gbmFtZS5wYWRFbmQoam9iTmFtZVBhZCk7XG4gICAgICAgICAgICAgICAgd3JpdGVTdHJlYW1zLnN0ZG91dChjaGFsa2B7YmxhY2suYmdZZWxsb3dCcmlnaHQgIFdBUk4gfSR7cmVuZGVyRHVyYXRpb24ocHJldHR5RHVyYXRpb24pfSB7Ymx1ZUJyaWdodCAke25hbWVQYWR9fSAgYWZ0ZXJfc2NyaXB0XFxuYCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChwcmVTY3JpcHRzLmZhaWxlZC5sZW5ndGggIT09IDApIHtcbiAgICAgICAgICAgIHByZVNjcmlwdHMuZmFpbGVkLnNvcnQoKGEsIGIpID0+IHN0YWdlcy5pbmRleE9mKGEuc3RhZ2UpIC0gc3RhZ2VzLmluZGV4T2YoYi5zdGFnZSkpO1xuICAgICAgICAgICAgZm9yIChjb25zdCB7bmFtZSwgcHJldHR5RHVyYXRpb259IG9mIHByZVNjcmlwdHMuZmFpbGVkKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgbmFtZVBhZCA9IG5hbWUucGFkRW5kKGpvYk5hbWVQYWQpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHNhZmVOYW1lID0gVXRpbHMuc2FmZURvY2tlclN0cmluZyhuYW1lKTtcbiAgICAgICAgICAgICAgICB3cml0ZVN0cmVhbXMuc3Rkb3V0KGNoYWxrYHtibGFjay5iZ1JlZCAgRkFJTCB9JHtyZW5kZXJEdXJhdGlvbihwcmV0dHlEdXJhdGlvbil9IHtibHVlQnJpZ2h0ICR7bmFtZVBhZH19XFxuYCk7XG4gICAgICAgICAgICAgICAgY29uc3Qgb3V0cHV0TG9nID0gYXdhaXQgZnMucmVhZEZpbGUoYCR7Y3dkfS8ke3N0YXRlRGlyfS9vdXRwdXQvJHtzYWZlTmFtZX0ubG9nYCwgXCJ1dGY4XCIpO1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgbGluZSBvZiBvdXRwdXRMb2cuc3BsaXQoL1xccj9cXG4vKS5maWx0ZXIoaiA9PiAhai5pbmNsdWRlcyhcIlszMm0kIFwiKSkuZmlsdGVyKGogPT4gaiAhPT0gXCJcIikuc2xpY2UoLTMpKSB7XG4gICAgICAgICAgICAgICAgICAgIHdyaXRlU3RyZWFtcy5zdGRvdXQoY2hhbGtgICB7cmVkID59ICR7bGluZX1cXG5gKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBmb3IgKGNvbnN0IGpvYiBvZiBwcmVTY3JpcHRzLnN1Y2Nlc3NmdWwpIHtcbiAgICAgICAgICAgIGNvbnN0IGUgPSBqb2IuZW52aXJvbm1lbnQ7XG4gICAgICAgICAgICBpZiAoZSA9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBuYW1lID0gZS5uYW1lO1xuICAgICAgICAgICAgY29uc3QgdXJsID0gZS51cmw7XG4gICAgICAgICAgICB3cml0ZVN0cmVhbXMuc3Rkb3V0KGNoYWxrYHtibHVlQnJpZ2h0ICR7am9iLm5hbWV9fSBlbnZpcm9ubWVudDogXFx7IG5hbWU6IHtib2xkICR7bmFtZX19YCk7XG4gICAgICAgICAgICBpZiAodXJsICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICB3cml0ZVN0cmVhbXMuc3Rkb3V0KGNoYWxrYCwgdXJsOiB7Ym9sZCAke3VybH19YCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB3cml0ZVN0cmVhbXMuc3Rkb3V0KFwiIH1cXG5cIik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzdGF0aWMgcnVuTGlzdCAocGFyc2VyOiBQYXJzZXIsIHdyaXRlU3RyZWFtczogV3JpdGVTdHJlYW1zLCBsaXN0QWxsOiBib29sZWFuKSB7XG4gICAgICAgIGNvbnN0IHN0YWdlcyA9IHBhcnNlci5zdGFnZXM7XG4gICAgICAgIGxldCBqb2JzID0gWy4uLnBhcnNlci5qb2JzLnZhbHVlcygpXTtcbiAgICAgICAgam9icy5zb3J0KChhLCBiKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gc3RhZ2VzLmluZGV4T2YoYS5zdGFnZSkgLSBzdGFnZXMuaW5kZXhPZihiLnN0YWdlKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgbGV0IHdoZW5QYWRFbmQgPSA0O1xuICAgICAgICBqb2JzLmZvckVhY2goaiA9PiB3aGVuUGFkRW5kID0gTWF0aC5tYXgoai53aGVuLmxlbmd0aCwgd2hlblBhZEVuZCkpO1xuXG4gICAgICAgIGxldCBzdGFnZVBhZEVuZCA9IDU7XG4gICAgICAgIHN0YWdlcy5mb3JFYWNoKHMgPT4gc3RhZ2VQYWRFbmQgPSBNYXRoLm1heChzLmxlbmd0aCwgc3RhZ2VQYWRFbmQpKTtcblxuICAgICAgICBsZXQgZGVzY3JpcHRpb25QYWRFbmQgPSAxMTtcbiAgICAgICAgam9icy5mb3JFYWNoKGogPT4gZGVzY3JpcHRpb25QYWRFbmQgPSBNYXRoLm1heChqLmRlc2NyaXB0aW9uLmxlbmd0aCwgZGVzY3JpcHRpb25QYWRFbmQpKTtcblxuICAgICAgICBjb25zdCBqb2JOYW1lUGFkID0gcGFyc2VyLmpvYk5hbWVQYWQ7XG5cbiAgICAgICAgaWYgKCFsaXN0QWxsKSB7XG4gICAgICAgICAgICBqb2JzID0gam9icy5maWx0ZXIoaiA9PiBqLndoZW4gIT09IFwibmV2ZXJcIik7XG4gICAgICAgIH1cblxuICAgICAgICB3cml0ZVN0cmVhbXMuc3Rkb3V0KGNoYWxrYHtncmV5ICR7XCJuYW1lXCIucGFkRW5kKGpvYk5hbWVQYWQpfSAgJHtcImRlc2NyaXB0aW9uXCIucGFkRW5kKGRlc2NyaXB0aW9uUGFkRW5kKX19ICBgKTtcbiAgICAgICAgd3JpdGVTdHJlYW1zLnN0ZG91dChjaGFsa2B7Z3JleSAke1wic3RhZ2VcIi5wYWRFbmQoc3RhZ2VQYWRFbmQpfSAgJHtcIndoZW5cIi5wYWRFbmQod2hlblBhZEVuZCl9fSAgYCk7XG4gICAgICAgIHdyaXRlU3RyZWFtcy5zdGRvdXQoY2hhbGtge2dyZXkgYWxsb3dfZmFpbHVyZSAgbmVlZHN9XFxuYCk7XG5cbiAgICAgICAgY29uc3QgcmVuZGVyTGluZSA9IChqb2I6IEpvYikgPT4ge1xuICAgICAgICAgICAgY29uc3QgbmVlZHMgPSBqb2IubmVlZHM/LmZpbHRlcihuID0+ICFuLnByb2plY3QgJiYgIW4ucGlwZWxpbmUpLm1hcChuID0+IG4uam9iKTtcbiAgICAgICAgICAgIGNvbnN0IGFsbG93RmFpbHVyZSA9IGpvYi5hbGxvd0ZhaWx1cmUgPyBcInRydWUgXCIgOiBcImZhbHNlXCI7XG4gICAgICAgICAgICBsZXQgam9iTGluZSA9IGNoYWxrYHtibHVlQnJpZ2h0ICR7am9iLm5hbWUucGFkRW5kKGpvYk5hbWVQYWQpfX0gICR7am9iLmRlc2NyaXB0aW9uLnBhZEVuZChkZXNjcmlwdGlvblBhZEVuZCl9ICBgO1xuICAgICAgICAgICAgam9iTGluZSArPSBjaGFsa2B7eWVsbG93ICR7am9iLnN0YWdlLnBhZEVuZChzdGFnZVBhZEVuZCl9fSAgJHtqb2Iud2hlbi5wYWRFbmQod2hlblBhZEVuZCl9ICAke2FsbG93RmFpbHVyZS5wYWRFbmQoMTEpfWA7XG4gICAgICAgICAgICBpZiAobmVlZHMpIHtcbiAgICAgICAgICAgICAgICBqb2JMaW5lICs9IGNoYWxrYCAgICBbe2JsdWVCcmlnaHQgJHtuZWVkc319XWA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB3cml0ZVN0cmVhbXMuc3Rkb3V0KGAke2pvYkxpbmV9XFxuYCk7XG4gICAgICAgIH07XG5cbiAgICAgICAgam9icy5mb3JFYWNoKChqb2IpID0+IHJlbmRlckxpbmUoam9iKSk7XG4gICAgfVxuXG4gICAgc3RhdGljIHJ1bkpzb24gKHBhcnNlcjogUGFyc2VyLCB3cml0ZVN0cmVhbXM6IFdyaXRlU3RyZWFtcykge1xuICAgICAgICBjb25zdCBqb2JzID0gWy4uLnBhcnNlci5qb2JzLnZhbHVlcygpXTtcbiAgICAgICAgY29uc3QganNvbjogYW55W10gPSBbXTtcblxuICAgICAgICBqb2JzLmZvckVhY2goKGpvYikgPT4ge1xuICAgICAgICAgICAganNvbi5wdXNoKHtcbiAgICAgICAgICAgICAgICBuYW1lOiBqb2IubmFtZSxcbiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogam9iLmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgIHN0YWdlOiBqb2Iuc3RhZ2UsXG4gICAgICAgICAgICAgICAgd2hlbjogam9iLndoZW4sXG4gICAgICAgICAgICAgICAgYWxsb3dfZmFpbHVyZTogam9iLmFsbG93RmFpbHVyZSxcbiAgICAgICAgICAgICAgICBuZWVkczogam9iLm5lZWRzPy5maWx0ZXIobiA9PiAhbi5wcm9qZWN0ICYmICFuLnBpcGVsaW5lKSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcblxuICAgICAgICB3cml0ZVN0cmVhbXMuc3Rkb3V0KGAke0pTT04uc3RyaW5naWZ5KGpzb24sIG51bGwsIDIpfVxcbmApO1xuICAgIH1cblxuICAgIHN0YXRpYyBydW5Dc3YgKHBhcnNlcjogUGFyc2VyLCB3cml0ZVN0cmVhbXM6IFdyaXRlU3RyZWFtcywgYWxsOiBib29sZWFuKSB7XG4gICAgICAgIGNvbnN0IHN0YWdlcyA9IHBhcnNlci5zdGFnZXM7XG4gICAgICAgIGxldCBqb2JzID0gWy4uLnBhcnNlci5qb2JzLnZhbHVlcygpXTtcbiAgICAgICAgam9icy5zb3J0KChhLCBiKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gc3RhZ2VzLmluZGV4T2YoYS5zdGFnZSkgLSBzdGFnZXMuaW5kZXhPZihiLnN0YWdlKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKCFhbGwpIHtcbiAgICAgICAgICAgIGpvYnMgPSBqb2JzLmZpbHRlcihqID0+IGoud2hlbiAhPT0gXCJuZXZlclwiKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHdyaXRlU3RyZWFtcy5zdGRvdXQoXCJuYW1lO2Rlc2NyaXB0aW9uO3N0YWdlO3doZW47YWxsb3dGYWlsdXJlO25lZWRzXFxuXCIpO1xuICAgICAgICBqb2JzLmZvckVhY2goKGpvYikgPT4ge1xuICAgICAgICAgICAgY29uc3QgbmVlZHMgPSBqb2IubmVlZHM/LmZpbHRlcihuID0+ICFuLnByb2plY3QgJiYgIW4ucGlwZWxpbmUpLm1hcChuID0+IG4uam9iKS5qb2luKFwiLFwiKSA/PyBbXTtcbiAgICAgICAgICAgIHdyaXRlU3RyZWFtcy5zdGRvdXQoYCR7am9iLm5hbWV9O1wiJHtqb2IuZGVzY3JpcHRpb259XCI7JHtqb2Iuc3RhZ2V9OyR7am9iLndoZW59OyR7am9iLmFsbG93RmFpbHVyZX07WyR7bmVlZHN9XVxcbmApO1xuICAgICAgICB9KTtcbiAgICB9XG5cbn1cbiJdfQ==
231
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbWFuZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiY29tbWFuZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLGtEQUEwQjtBQUcxQixtQ0FBOEI7QUFFOUIseUNBQW9DO0FBQ3BDLHdEQUEwQjtBQUUxQixtQ0FBc0M7QUFFdEMsTUFBYSxTQUFTO0lBRWxCLE1BQU0sQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFFLElBQVUsRUFBRSxNQUFjLEVBQUUsWUFBMEI7UUFDNUUsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQztRQUN6QixNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDO1FBRTdCLElBQUksaUJBQWlCLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO1FBQzNDLGlCQUFpQixHQUFHLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssT0FBTyxDQUFDLENBQUM7UUFDdEUsaUJBQWlCLEdBQUcsaUJBQWlCLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxRQUFRLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDdkcsTUFBTSxtQkFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO1FBQzlELE1BQU0sU0FBUyxDQUFDLFdBQVcsQ0FBQztZQUN4QixHQUFHLEVBQUUsSUFBSSxDQUFDLEdBQUc7WUFDYixjQUFjLEVBQUUsSUFBSSxDQUFDLGNBQWM7WUFDbkMsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRO1lBQ3ZCLFlBQVksRUFBRSxZQUFZO1lBQzFCLElBQUksRUFBRSxJQUFJO1lBQ1YsTUFBTSxFQUFFLE1B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QyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDN0QsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsR0FBRyxFQUFFO1lBQ04sSUFBSSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLE9BQU8sQ0FBQyxDQUFDO1NBQy9DO1FBRUQsWUFBWSxDQUFDLE1BQU0sQ0FBQyxrREFBa0QsQ0FBQyxDQUFDO1FBQ3hFLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtZQUNqQixNQUFNLEtBQUssR0FBRyxHQUFHLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNoRyxZQUFZLENBQUMsTUFBTSxDQUFDLEdBQUcsR0FBRyxDQUFDLElBQUksS0FBSyxHQUFHLENBQUMsV0FBVyxLQUFLLEdBQUcsQ0FBQyxLQUFLLElBQUksR0FBRyxDQUFDLElBQUksSUFBSSxHQUFHLENBQUMsWUFBWSxLQUFLLEtBQUssS0FBSyxDQUFDLENBQUM7UUFDdEgsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0NBRUo7QUFwUUQsOEJBb1FDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGNoYWxrIGZyb20gXCJjaGFsa1wiO1xuaW1wb3J0IHtKb2J9IGZyb20gXCIuL2pvYlwiO1xuaW1wb3J0IHtQYXJzZXJ9IGZyb20gXCIuL3BhcnNlclwiO1xuaW1wb3J0IHtVdGlsc30gZnJvbSBcIi4vdXRpbHNcIjtcbmltcG9ydCB7V3JpdGVTdHJlYW1zfSBmcm9tIFwiLi93cml0ZS1zdHJlYW1zXCI7XG5pbXBvcnQge0V4ZWN1dG9yfSBmcm9tIFwiLi9leGVjdXRvclwiO1xuaW1wb3J0IGZzIGZyb20gXCJmcy1leHRyYVwiO1xuaW1wb3J0IHtBcmd2fSBmcm9tIFwiLi9hcmd2XCI7XG5pbXBvcnQge0Fzc2VydGlvbkVycm9yfSBmcm9tIFwiYXNzZXJ0XCI7XG5cbmV4cG9ydCBjbGFzcyBDb21tYW5kZXIge1xuXG4gICAgc3RhdGljIGFzeW5jIHJ1blBpcGVsaW5lIChhcmd2OiBBcmd2LCBwYXJzZXI6IFBhcnNlciwgd3JpdGVTdHJlYW1zOiBXcml0ZVN0cmVhbXMpIHtcbiAgICAgICAgY29uc3Qgam9icyA9IHBhcnNlci5qb2JzO1xuICAgICAgICBjb25zdCBzdGFnZXMgPSBwYXJzZXIuc3RhZ2VzO1xuXG4gICAgICAgIGxldCBwb3RlbnRpYWxTdGFydGVycyA9IFsuLi5qb2JzLnZhbHVlcygpXTtcbiAgICAgICAgcG90ZW50aWFsU3RhcnRlcnMgPSBwb3RlbnRpYWxTdGFydGVycy5maWx0ZXIoaiA9PiBqLndoZW4gIT09IFwibmV2ZXJcIik7XG4gICAgICAgIHBvdGVudGlhbFN0YXJ0ZXJzID0gcG90ZW50aWFsU3RhcnRlcnMuZmlsdGVyKGogPT4gai53aGVuICE9PSBcIm1hbnVhbFwiIHx8IGFyZ3YubWFudWFsLmluY2x1ZGVzKGoubmFtZSkpO1xuICAgICAgICBhd2FpdCBFeGVjdXRvci5ydW5Mb29wKGFyZ3YsIGpvYnMsIHN0YWdlcywgcG90ZW50aWFsU3RhcnRlcnMpO1xuICAgICAgICBhd2FpdCBDb21tYW5kZXIucHJpbnRSZXBvcnQoe1xuICAgICAgICAgICAgY3dkOiBhcmd2LmN3ZCxcbiAgICAgICAgICAgIHNob3dUaW1lc3RhbXBzOiBhcmd2LnNob3dUaW1lc3RhbXBzLFxuICAgICAgICAgICAgc3RhdGVEaXI6IGFyZ3Yuc3RhdGVEaXIsXG4gICAgICAgICAgICB3cml0ZVN0cmVhbXM6IHdyaXRlU3RyZWFtcyxcbiAgICAgICAgICAgIGpvYnM6IGpvYnMsXG4gICAgICAgICAgICBzdGFnZXM6IHN0YWdlcyxcbiAgICAgICAgICAgIGpvYk5hbWVQYWQ6IHBhcnNlci5qb2JOYW1lUGFkLFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBzdGF0aWMgYXN5bmMgcnVuSm9ic0luU3RhZ2UgKGFyZ3Y6IEFyZ3YsIHBhcnNlcjogUGFyc2VyLCB3cml0ZVN0cmVhbXM6IFdyaXRlU3RyZWFtcykge1xuICAgICAgICBjb25zdCBqb2JzID0gcGFyc2VyLmpvYnMuZmlsdGVyKGogPT4gai5zdGFnZSA9PT0gYXJndi5zdGFnZSk7XG4gICAgICAgIGNvbnN0IHN0YWdlcyA9IHBhcnNlci5zdGFnZXM7XG5cbiAgICAgICAgbGV0IHBvdGVudGlhbFN0YXJ0ZXJzID0gWy4uLmpvYnMudmFsdWVzKCldO1xuICAgICAgICBwb3RlbnRpYWxTdGFydGVycyA9IHBvdGVudGlhbFN0YXJ0ZXJzLmZpbHRlcihqID0+IGoud2hlbiAhPT0gXCJuZXZlclwiKTtcbiAgICAgICAgcG90ZW50aWFsU3RhcnRlcnMgPSBwb3RlbnRpYWxTdGFydGVycy5maWx0ZXIoaiA9PiBqLndoZW4gIT09IFwibWFudWFsXCIgfHwgYXJndi5tYW51YWwuaW5jbHVkZXMoai5uYW1lKSk7XG4gICAgICAgIHBvdGVudGlhbFN0YXJ0ZXJzID0gcG90ZW50aWFsU3RhcnRlcnMuZmlsdGVyKGogPT4gai5zdGFnZSA9PT0gYXJndi5zdGFnZSk7XG4gICAgICAgIGF3YWl0IEV4ZWN1dG9yLnJ1bkxvb3AoYXJndiwgam9icywgc3RhZ2VzLCBwb3RlbnRpYWxTdGFydGVycyk7XG4gICAgICAgIGF3YWl0IENvbW1hbmRlci5wcmludFJlcG9ydCh7XG4gICAgICAgICAgICBjd2Q6IGFyZ3YuY3dkLFxuICAgICAgICAgICAgc2hvd1RpbWVzdGFtcHM6IGFyZ3Yuc2hvd1RpbWVzdGFtcHMsXG4gICAgICAgICAgICBzdGF0ZURpcjogYXJndi5zdGF0ZURpcixcbiAgICAgICAgICAgIHdyaXRlU3RyZWFtczogd3JpdGVTdHJlYW1zLFxuICAgICAgICAgICAgam9iczogam9icyxcbiAgICAgICAgICAgIHN0YWdlczogc3RhZ2VzLFxuICAgICAgICAgICAgam9iTmFtZVBhZDogcGFyc2VyLmpvYk5hbWVQYWQsXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHN0YXRpYyBhc3luYyBydW5Kb2JzIChhcmd2OiBBcmd2LCBwYXJzZXI6IFBhcnNlciwgd3JpdGVTdHJlYW1zOiBXcml0ZVN0cmVhbXMpIHtcbiAgICAgICAgY29uc3QgbmVlZHMgPSBhcmd2Lm5lZWRzIHx8IGFyZ3Yub25seU5lZWRzO1xuICAgICAgICBjb25zdCBqb2JBcmdzID0gYXJndi5qb2I7XG4gICAgICAgIGNvbnN0IGpvYnMgPSBwYXJzZXIuam9icztcbiAgICAgICAgY29uc3Qgc3RhZ2VzID0gcGFyc2VyLnN0YWdlcztcblxuICAgICAgICBjb25zdCBwb3RlbnRpYWxTdGFydGVyczogSm9iW10gPSBbXTtcbiAgICAgICAgY29uc3Qgam9iU2V0ID0gbmVlZHMgPyBuZXcgU2V0KGpvYnMpIDogbmV3IFNldDxKb2I+KCk7XG4gICAgICAgIGpvYkFyZ3MuZm9yRWFjaChqb2JBcmdOYW1lID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGJhc2VKb2JzID0gam9icy5maWx0ZXIoaiA9PiBqLmJhc2VOYW1lID09IGpvYkFyZ05hbWUgfHwgai5uYW1lID09PSBqb2JBcmdOYW1lKTtcbiAgICAgICAgICAgIGZvciAoY29uc3QgYiBvZiBiYXNlSm9icykge1xuICAgICAgICAgICAgICAgIGpvYlNldC5hZGQoYik7XG4gICAgICAgICAgICAgICAgaWYgKG5lZWRzKSB7XG4gICAgICAgICAgICAgICAgICAgIHBvdGVudGlhbFN0YXJ0ZXJzLnB1c2goLi4uRXhlY3V0b3IuZ2V0UGFzdFRvV2FpdEZvcihqb2JzLCBzdGFnZXMsIGIsIGFyZ3YubWFudWFsKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHBvdGVudGlhbFN0YXJ0ZXJzLnB1c2goYik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmIChwb3RlbnRpYWxTdGFydGVycy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBBc3NlcnRpb25FcnJvcih7bWVzc2FnZTogY2hhbGtge2JsdWVCcmlnaHQgJHtqb2JBcmdzLmpvaW4oXCIsXCIpfX0gY291bGQgbm90IGJlIGZvdW5kYH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgc3RhcnRlcnMgPSBhcmd2Lm9ubHlOZWVkc1xuICAgICAgICAgICAgPyBwb3RlbnRpYWxTdGFydGVycy5maWx0ZXIocCA9PiAham9iQXJncy5pbmNsdWRlcyhwLm5hbWUpKVxuICAgICAgICAgICAgOiBwb3RlbnRpYWxTdGFydGVycztcblxuICAgICAgICBhd2FpdCBFeGVjdXRvci5ydW5Mb29wKGFyZ3YsIEFycmF5LmZyb20oam9iU2V0KSwgc3RhZ2VzLCBzdGFydGVycyk7XG4gICAgICAgIGF3YWl0IENvbW1hbmRlci5wcmludFJlcG9ydCh7XG4gICAgICAgICAgICBjd2Q6IGFyZ3YuY3dkLFxuICAgICAgICAgICAgc2hvd1RpbWVzdGFtcHM6IGFyZ3Yuc2hvd1RpbWVzdGFtcHMsXG4gICAgICAgICAgICBzdGF0ZURpcjogYXJndi5zdGF0ZURpcixcbiAgICAgICAgICAgIHdyaXRlU3RyZWFtczogd3JpdGVTdHJlYW1zLFxuICAgICAgICAgICAgam9iczogam9icyxcbiAgICAgICAgICAgIHN0YWdlczogc3RhZ2VzLFxuICAgICAgICAgICAgam9iTmFtZVBhZDogcGFyc2VyLmpvYk5hbWVQYWQsXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHN0YXRpYyBhc3luYyBwcmludFJlcG9ydCAoe2N3ZCwgc3RhdGVEaXIsIHNob3dUaW1lc3RhbXBzLCB3cml0ZVN0cmVhbXMsIGpvYnMsIHN0YWdlcywgam9iTmFtZVBhZH06IHtcbiAgICAgICAgY3dkOiBzdHJpbmc7XG4gICAgICAgIHNob3dUaW1lc3RhbXBzOiBib29sZWFuO1xuICAgICAgICBzdGF0ZURpcjogc3RyaW5nO1xuICAgICAgICB3cml0ZVN0cmVhbXM6IFdyaXRlU3RyZWFtcztcbiAgICAgICAgam9iczogUmVhZG9ubHlBcnJheTxKb2I+O1xuICAgICAgICBzdGFnZXM6IHJlYWRvbmx5IHN0cmluZ1tdO1xuICAgICAgICBqb2JOYW1lUGFkOiBudW1iZXI7XG4gICAgfSkge1xuXG4gICAgICAgIHdyaXRlU3RyZWFtcy5zdGRvdXQoXCJcXG5cIik7XG5cbiAgICAgICAgY29uc3QgcmVuZGVyRHVyYXRpb24gPSAoZHVyYXRpb246IHN0cmluZykgPT4gc2hvd1RpbWVzdGFtcHMgPyBgIFske2R1cmF0aW9uLnBhZFN0YXJ0KDcpfV1gIDogXCJcIjtcblxuICAgICAgICBjb25zdCBwcmVTY3JpcHRzOiB7c3VjY2Vzc2Z1bDogSm9iW107IGZhaWxlZDogSm9iW107IHdhcm5lZDogSm9iW119ID0ge1xuICAgICAgICAgICAgc3VjY2Vzc2Z1bDogW10sXG4gICAgICAgICAgICBmYWlsZWQ6IFtdLFxuICAgICAgICAgICAgd2FybmVkOiBbXSxcbiAgICAgICAgfTtcbiAgICAgICAgY29uc3QgYWZ0ZXJTY3JpcHRzOiB7d2FybmVkOiBKb2JbXX0gPSB7XG4gICAgICAgICAgICB3YXJuZWQ6IFtdLFxuICAgICAgICB9O1xuXG4gICAgICAgIGZvciAoY29uc3Qgam9iIG9mIGpvYnMudmFsdWVzKCkpIHtcbiAgICAgICAgICAgIGlmIChqb2Iuc3RhcnRlZCAmJiBqb2IuYWZ0ZXJTY3JpcHRzRXhpdENvZGUgIT09IDApIHtcbiAgICAgICAgICAgICAgICBhZnRlclNjcmlwdHMud2FybmVkLnB1c2goam9iKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGZvciAoY29uc3Qgam9iIG9mIGpvYnMudmFsdWVzKCkpIHtcbiAgICAgICAgICAgIGlmICgham9iLnN0YXJ0ZWQpIHtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGpvYi5wcmVTY3JpcHRzRXhpdENvZGUgPT09IDApIHtcbiAgICAgICAgICAgICAgICBwcmVTY3JpcHRzLnN1Y2Nlc3NmdWwucHVzaChqb2IpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChqb2IuYWxsb3dGYWlsdXJlKSB7XG4gICAgICAgICAgICAgICAgcHJlU2NyaXB0cy53YXJuZWQucHVzaChqb2IpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBwcmVTY3JpcHRzLmZhaWxlZC5wdXNoKGpvYik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocHJlU2NyaXB0cy5zdWNjZXNzZnVsLmxlbmd0aCAhPT0gMCkge1xuICAgICAgICAgICAgcHJlU2NyaXB0cy5zdWNjZXNzZnVsLnNvcnQoKGEsIGIpID0+IHN0YWdlcy5pbmRleE9mKGEuc3RhZ2UpIC0gc3RhZ2VzLmluZGV4T2YoYi5zdGFnZSkpO1xuICAgICAgICAgICAgcHJlU2NyaXB0cy5zdWNjZXNzZnVsLmZvckVhY2goKHtjb3ZlcmFnZVBlcmNlbnQsIG5hbWUsIHByZXR0eUR1cmF0aW9ufSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IG5hbWVQYWQgPSBuYW1lLnBhZEVuZChqb2JOYW1lUGFkKTtcbiAgICAgICAgICAgICAgICB3cml0ZVN0cmVhbXMuc3Rkb3V0KGNoYWxrYHtibGFjay5iZ0dyZWVuQnJpZ2h0ICBQQVNTIH0ke3JlbmRlckR1cmF0aW9uKHByZXR0eUR1cmF0aW9uKX0ge2JsdWVCcmlnaHQgJHtuYW1lUGFkfX1gKTtcbiAgICAgICAgICAgICAgICBpZiAoY292ZXJhZ2VQZXJjZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIHdyaXRlU3RyZWFtcy5zdGRvdXQoY2hhbGtgICR7Y292ZXJhZ2VQZXJjZW50fSUge2dyZXkgY292ZXJhZ2V9YCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHdyaXRlU3RyZWFtcy5zdGRvdXQoXCJcXG5cIik7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChwcmVTY3JpcHRzLndhcm5lZC5sZW5ndGggIT09IDApIHtcbiAgICAgICAgICAgIHByZVNjcmlwdHMud2FybmVkLnNvcnQoKGEsIGIpID0+IHN0YWdlcy5pbmRleE9mKGEuc3RhZ2UpIC0gc3RhZ2VzLmluZGV4T2YoYi5zdGFnZSkpO1xuICAgICAgICAgICAgZm9yIChjb25zdCB7bmFtZSwgcHJldHR5RHVyYXRpb259IG9mIHByZVNjcmlwdHMud2FybmVkKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgbmFtZVBhZCA9IG5hbWUucGFkRW5kKGpvYk5hbWVQYWQpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHNhZmVOYW1lID0gVXRpbHMuc2FmZURvY2tlclN0cmluZyhuYW1lKTtcbiAgICAgICAgICAgICAgICB3cml0ZVN0cmVhbXMuc3Rkb3V0KGNoYWxrYHtibGFjay5iZ1llbGxvd0JyaWdodCAgV0FSTiB9JHtyZW5kZXJEdXJhdGlvbihwcmV0dHlEdXJhdGlvbil9IHtibHVlQnJpZ2h0ICR7bmFtZVBhZH19ICBwcmVfc2NyaXB0XFxuYCk7XG4gICAgICAgICAgICAgICAgY29uc3Qgb3V0cHV0TG9nID0gYXdhaXQgZnMucmVhZEZpbGUoYCR7Y3dkfS8ke3N0YXRlRGlyfS9vdXRwdXQvJHtzYWZlTmFtZX0ubG9nYCwgXCJ1dGY4XCIpO1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgbGluZSBvZiBvdXRwdXRMb2cuc3BsaXQoL1xccj9cXG4vKS5maWx0ZXIoaiA9PiAhai5pbmNsdWRlcyhcIlszMm0kIFwiKSkuZmlsdGVyKGogPT4gaiAhPT0gXCJcIikuc2xpY2UoLTMpKSB7XG4gICAgICAgICAgICAgICAgICAgIHdyaXRlU3RyZWFtcy5zdGRvdXQoY2hhbGtgICB7eWVsbG93ID59ICR7bGluZX1cXG5gKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoYWZ0ZXJTY3JpcHRzLndhcm5lZC5sZW5ndGggIT09IDApIHtcbiAgICAgICAgICAgIGFmdGVyU2NyaXB0cy53YXJuZWQuc29ydCgoYSwgYikgPT4gc3RhZ2VzLmluZGV4T2YoYS5zdGFnZSkgLSBzdGFnZXMuaW5kZXhPZihiLnN0YWdlKSk7XG4gICAgICAgICAgICBhZnRlclNjcmlwdHMud2FybmVkLmZvckVhY2goKHtuYW1lLCBwcmV0dHlEdXJhdGlvbn0pID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBuYW1lUGFkID0gbmFtZS5wYWRFbmQoam9iTmFtZVBhZCk7XG4gICAgICAgICAgICAgICAgd3JpdGVTdHJlYW1zLnN0ZG91dChjaGFsa2B7YmxhY2suYmdZZWxsb3dCcmlnaHQgIFdBUk4gfSR7cmVuZGVyRHVyYXRpb24ocHJldHR5RHVyYXRpb24pfSB7Ymx1ZUJyaWdodCAke25hbWVQYWR9fSAgYWZ0ZXJfc2NyaXB0XFxuYCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChwcmVTY3JpcHRzLmZhaWxlZC5sZW5ndGggIT09IDApIHtcbiAgICAgICAgICAgIHByZVNjcmlwdHMuZmFpbGVkLnNvcnQoKGEsIGIpID0+IHN0YWdlcy5pbmRleE9mKGEuc3RhZ2UpIC0gc3RhZ2VzLmluZGV4T2YoYi5zdGFnZSkpO1xuICAgICAgICAgICAgZm9yIChjb25zdCB7bmFtZSwgcHJldHR5RHVyYXRpb259IG9mIHByZVNjcmlwdHMuZmFpbGVkKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgbmFtZVBhZCA9IG5hbWUucGFkRW5kKGpvYk5hbWVQYWQpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHNhZmVOYW1lID0gVXRpbHMuc2FmZURvY2tlclN0cmluZyhuYW1lKTtcbiAgICAgICAgICAgICAgICB3cml0ZVN0cmVhbXMuc3Rkb3V0KGNoYWxrYHtibGFjay5iZ1JlZCAgRkFJTCB9JHtyZW5kZXJEdXJhdGlvbihwcmV0dHlEdXJhdGlvbil9IHtibHVlQnJpZ2h0ICR7bmFtZVBhZH19XFxuYCk7XG4gICAgICAgICAgICAgICAgY29uc3Qgb3V0cHV0TG9nID0gYXdhaXQgZnMucmVhZEZpbGUoYCR7Y3dkfS8ke3N0YXRlRGlyfS9vdXRwdXQvJHtzYWZlTmFtZX0ubG9nYCwgXCJ1dGY4XCIpO1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgbGluZSBvZiBvdXRwdXRMb2cuc3BsaXQoL1xccj9cXG4vKS5maWx0ZXIoaiA9PiAhai5pbmNsdWRlcyhcIlszMm0kIFwiKSkuZmlsdGVyKGogPT4gaiAhPT0gXCJcIikuc2xpY2UoLTMpKSB7XG4gICAgICAgICAgICAgICAgICAgIHdyaXRlU3RyZWFtcy5zdGRvdXQoY2hhbGtgICB7cmVkID59ICR7bGluZX1cXG5gKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBmb3IgKGNvbnN0IGpvYiBvZiBwcmVTY3JpcHRzLnN1Y2Nlc3NmdWwpIHtcbiAgICAgICAgICAgIGNvbnN0IGUgPSBqb2IuZW52aXJvbm1lbnQ7XG4gICAgICAgICAgICBpZiAoZSA9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBuYW1lID0gZS5uYW1lO1xuICAgICAgICAgICAgY29uc3QgdXJsID0gZS51cmw7XG4gICAgICAgICAgICB3cml0ZVN0cmVhbXMuc3Rkb3V0KGNoYWxrYHtibHVlQnJpZ2h0ICR7am9iLm5hbWV9fSBlbnZpcm9ubWVudDogXFx7IG5hbWU6IHtib2xkICR7bmFtZX19YCk7XG4gICAgICAgICAgICBpZiAodXJsICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICB3cml0ZVN0cmVhbXMuc3Rkb3V0KGNoYWxrYCwgdXJsOiB7Ym9sZCAke3VybH19YCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB3cml0ZVN0cmVhbXMuc3Rkb3V0KFwiIH1cXG5cIik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzdGF0aWMgcnVuTGlzdCAocGFyc2VyOiBQYXJzZXIsIHdyaXRlU3RyZWFtczogV3JpdGVTdHJlYW1zLCBsaXN0QWxsOiBib29sZWFuKSB7XG4gICAgICAgIGNvbnN0IHN0YWdlcyA9IHBhcnNlci5zdGFnZXM7XG4gICAgICAgIGxldCBqb2JzID0gWy4uLnBhcnNlci5qb2JzLnZhbHVlcygpXTtcbiAgICAgICAgam9icy5zb3J0KChhLCBiKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gc3RhZ2VzLmluZGV4T2YoYS5zdGFnZSkgLSBzdGFnZXMuaW5kZXhPZihiLnN0YWdlKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgbGV0IHdoZW5QYWRFbmQgPSA0O1xuICAgICAgICBqb2JzLmZvckVhY2goaiA9PiB3aGVuUGFkRW5kID0gTWF0aC5tYXgoai53aGVuLmxlbmd0aCwgd2hlblBhZEVuZCkpO1xuXG4gICAgICAgIGxldCBzdGFnZVBhZEVuZCA9IDU7XG4gICAgICAgIHN0YWdlcy5mb3JFYWNoKHMgPT4gc3RhZ2VQYWRFbmQgPSBNYXRoLm1heChzLmxlbmd0aCwgc3RhZ2VQYWRFbmQpKTtcblxuICAgICAgICBsZXQgZGVzY3JpcHRpb25QYWRFbmQgPSAxMTtcbiAgICAgICAgam9icy5mb3JFYWNoKGogPT4gZGVzY3JpcHRpb25QYWRFbmQgPSBNYXRoLm1heChqLmRlc2NyaXB0aW9uLmxlbmd0aCwgZGVzY3JpcHRpb25QYWRFbmQpKTtcblxuICAgICAgICBjb25zdCBqb2JOYW1lUGFkID0gcGFyc2VyLmpvYk5hbWVQYWQ7XG5cbiAgICAgICAgaWYgKCFsaXN0QWxsKSB7XG4gICAgICAgICAgICBqb2JzID0gam9icy5maWx0ZXIoaiA9PiBqLndoZW4gIT09IFwibmV2ZXJcIik7XG4gICAgICAgIH1cblxuICAgICAgICB3cml0ZVN0cmVhbXMuc3Rkb3V0KGNoYWxrYHtncmV5ICR7XCJuYW1lXCIucGFkRW5kKGpvYk5hbWVQYWQpfSAgJHtcImRlc2NyaXB0aW9uXCIucGFkRW5kKGRlc2NyaXB0aW9uUGFkRW5kKX19ICBgKTtcbiAgICAgICAgd3JpdGVTdHJlYW1zLnN0ZG91dChjaGFsa2B7Z3JleSAke1wic3RhZ2VcIi5wYWRFbmQoc3RhZ2VQYWRFbmQpfSAgJHtcIndoZW5cIi5wYWRFbmQod2hlblBhZEVuZCl9fSAgYCk7XG4gICAgICAgIHdyaXRlU3RyZWFtcy5zdGRvdXQoY2hhbGtge2dyZXkgYWxsb3dfZmFpbHVyZSAgbmVlZHN9XFxuYCk7XG5cbiAgICAgICAgY29uc3QgcmVuZGVyTGluZSA9IChqb2I6IEpvYikgPT4ge1xuICAgICAgICAgICAgY29uc3QgbmVlZHMgPSBqb2IubmVlZHM/LmZpbHRlcihuID0+ICFuLnByb2plY3QgJiYgIW4ucGlwZWxpbmUpLm1hcChuID0+IG4uam9iKTtcbiAgICAgICAgICAgIGNvbnN0IGFsbG93RmFpbHVyZSA9IGpvYi5hbGxvd0ZhaWx1cmUgPyBcInRydWUgXCIgOiBcImZhbHNlXCI7XG4gICAgICAgICAgICBsZXQgam9iTGluZSA9IGNoYWxrYHtibHVlQnJpZ2h0ICR7am9iLm5hbWUucGFkRW5kKGpvYk5hbWVQYWQpfX0gICR7am9iLmRlc2NyaXB0aW9uLnBhZEVuZChkZXNjcmlwdGlvblBhZEVuZCl9ICBgO1xuICAgICAgICAgICAgam9iTGluZSArPSBjaGFsa2B7eWVsbG93ICR7am9iLnN0YWdlLnBhZEVuZChzdGFnZVBhZEVuZCl9fSAgJHtqb2Iud2hlbi5wYWRFbmQod2hlblBhZEVuZCl9ICAke2FsbG93RmFpbHVyZS5wYWRFbmQoMTEpfWA7XG4gICAgICAgICAgICBpZiAobmVlZHMpIHtcbiAgICAgICAgICAgICAgICBqb2JMaW5lICs9IGNoYWxrYCAgICBbe2JsdWVCcmlnaHQgJHtuZWVkc319XWA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB3cml0ZVN0cmVhbXMuc3Rkb3V0KGAke2pvYkxpbmV9XFxuYCk7XG4gICAgICAgIH07XG5cbiAgICAgICAgam9icy5mb3JFYWNoKChqb2IpID0+IHJlbmRlckxpbmUoam9iKSk7XG4gICAgfVxuXG4gICAgc3RhdGljIHJ1bkpzb24gKHBhcnNlcjogUGFyc2VyLCB3cml0ZVN0cmVhbXM6IFdyaXRlU3RyZWFtcykge1xuICAgICAgICBjb25zdCBqb2JzID0gWy4uLnBhcnNlci5qb2JzLnZhbHVlcygpXTtcbiAgICAgICAgY29uc3QganNvbjogYW55W10gPSBbXTtcblxuICAgICAgICBqb2JzLmZvckVhY2goKGpvYikgPT4ge1xuICAgICAgICAgICAganNvbi5wdXNoKHtcbiAgICAgICAgICAgICAgICBuYW1lOiBqb2IubmFtZSxcbiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogam9iLmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgIHN0YWdlOiBqb2Iuc3RhZ2UsXG4gICAgICAgICAgICAgICAgd2hlbjogam9iLndoZW4sXG4gICAgICAgICAgICAgICAgYWxsb3dfZmFpbHVyZTogam9iLmFsbG93RmFpbHVyZSxcbiAgICAgICAgICAgICAgICBuZWVkczogam9iLm5lZWRzPy5maWx0ZXIobiA9PiAhbi5wcm9qZWN0ICYmICFuLnBpcGVsaW5lKSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcblxuICAgICAgICB3cml0ZVN0cmVhbXMuc3Rkb3V0KGAke0pTT04uc3RyaW5naWZ5KGpzb24sIG51bGwsIDIpfVxcbmApO1xuICAgIH1cblxuICAgIHN0YXRpYyBydW5Dc3YgKHBhcnNlcjogUGFyc2VyLCB3cml0ZVN0cmVhbXM6IFdyaXRlU3RyZWFtcywgYWxsOiBib29sZWFuKSB7XG4gICAgICAgIGNvbnN0IHN0YWdlcyA9IHBhcnNlci5zdGFnZXM7XG4gICAgICAgIGxldCBqb2JzID0gWy4uLnBhcnNlci5qb2JzLnZhbHVlcygpXTtcbiAgICAgICAgam9icy5zb3J0KChhLCBiKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gc3RhZ2VzLmluZGV4T2YoYS5zdGFnZSkgLSBzdGFnZXMuaW5kZXhPZihiLnN0YWdlKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKCFhbGwpIHtcbiAgICAgICAgICAgIGpvYnMgPSBqb2JzLmZpbHRlcihqID0+IGoud2hlbiAhPT0gXCJuZXZlclwiKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHdyaXRlU3RyZWFtcy5zdGRvdXQoXCJuYW1lO2Rlc2NyaXB0aW9uO3N0YWdlO3doZW47YWxsb3dGYWlsdXJlO25lZWRzXFxuXCIpO1xuICAgICAgICBqb2JzLmZvckVhY2goKGpvYikgPT4ge1xuICAgICAgICAgICAgY29uc3QgbmVlZHMgPSBqb2IubmVlZHM/LmZpbHRlcihuID0+ICFuLnByb2plY3QgJiYgIW4ucGlwZWxpbmUpLm1hcChuID0+IG4uam9iKS5qb2luKFwiLFwiKSA/PyBbXTtcbiAgICAgICAgICAgIHdyaXRlU3RyZWFtcy5zdGRvdXQoYCR7am9iLm5hbWV9O1wiJHtqb2IuZGVzY3JpcHRpb259XCI7JHtqb2Iuc3RhZ2V9OyR7am9iLndoZW59OyR7am9iLmFsbG93RmFpbHVyZX07WyR7bmVlZHN9XVxcbmApO1xuICAgICAgICB9KTtcbiAgICB9XG5cbn1cbiJdfQ==
@@ -136,6 +136,7 @@ function servicesComplex(data) {
136
136
  entrypoint: data.entrypoint,
137
137
  command: data.command,
138
138
  alias: data.alias,
139
+ variables: data.variables,
139
140
  };
140
141
  }
141
142
  exports.servicesComplex = servicesComplex;
@@ -251,4 +252,4 @@ function flattenLists(gitlabData) {
251
252
  });
252
253
  }
253
254
  exports.flattenLists = flattenLists;
254
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1leHBhbmRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImRhdGEtZXhwYW5kZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxrREFBMEI7QUFDMUIsOERBQXFDO0FBQ3JDLGlEQUE4QztBQUM5QywrQkFBMEI7QUFDMUIsdURBQTBDO0FBRTFDLE1BQU0sZUFBZSxHQUFHLEVBQUUsQ0FBQztBQUMzQixNQUFNLGNBQWMsR0FBRyxDQUFDLFVBQWUsRUFBRSxPQUFlLEVBQUUsT0FBWSxFQUFFLE9BQWMsRUFBRSxLQUFhLEVBQUUsRUFBRTtJQUNyRyxJQUFBLGdCQUFNLEVBQUMsS0FBSyxHQUFHLGVBQWUsRUFBRSxJQUFBLGVBQUssRUFBQSxlQUFlLE9BQU8sZ0RBQWdELENBQUMsQ0FBQztJQUM3RyxLQUFLLEVBQUUsQ0FBQztJQUNSLEtBQUssTUFBTSxVQUFVLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxJQUFJLEVBQUUsQ0FBQyxFQUFFO1FBQzlDLE1BQU0sVUFBVSxHQUFHLFVBQVUsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUMxQyxJQUFBLGdCQUFNLEVBQUMsVUFBVSxJQUFJLElBQUksRUFBRSxJQUFBLGVBQUssRUFBQSxlQUFlLFVBQVUseUNBQXlDLE9BQU8sV0FBVyxDQUFDLENBQUM7UUFDdEgsY0FBYyxDQUFDLFVBQVUsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQztRQUNuRSxPQUFPLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0tBQzVCO0lBQ0QsT0FBTyxPQUFPLENBQUM7QUFDbkIsQ0FBQyxDQUFDO0FBRUYsU0FBZ0IsVUFBVSxDQUFFLFVBQWU7SUFDdkMsS0FBSyxNQUFNLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQU0sVUFBVSxDQUFDLEVBQUU7UUFDOUQsSUFBSSxTQUFH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LEtBQUssQ0FBRSxPQUFlLEVBQUUsVUFBZTtJQUNuRCxNQUFNLE9BQU8sR0FBRyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDcEMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLO1FBQUUsT0FBTztJQUUzQixTQUFTLENBQUMsVUFBVSxFQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNyQyxPQUFPLENBQUMsS0FBSyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3RDLEtBQUssTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFNLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRTtRQUNyRCxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQztLQUN0QztBQUNMLENBQUM7QUFURCxzQkFTQztBQUVELFNBQWdCLEtBQUssQ0FBRSxPQUFlLEVBQUUsVUFBZTtJQUNuRCxNQUFNLE9BQU8sR0FBRyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDcEMsTUFBTSxLQUFLLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQztJQUM1QixJQUFJLENBQUMsS0FBSztRQUFFLE9BQU87SUFFbkIsT0FBTyxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDdkQsU0FBUyxDQUFDLFVBQVUsRUFBRSxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDckMsT0FBTyxDQUFDLEtBQUssR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN0QyxLQUFLLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBTSxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUU7UUFD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Q0FBQyxDQUFDLENBQUM7SUFDaEMsQ0FBQyxDQUFDLENBQUM7QUFDUCxDQUFDO0FBTEQsb0NBS0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgY2hhbGsgZnJvbSBcImNoYWxrXCI7XG5pbXBvcnQgZGVlcEV4dGVuZCBmcm9tIFwiZGVlcC1leHRlbmRcIjtcbmltcG9ydCBhc3NlcnQsIHtBc3NlcnRpb25FcnJvcn0gZnJvbSBcImFzc2VydFwiO1xuaW1wb3J0IHtKb2J9IGZyb20gXCIuL2pvYlwiO1xuaW1wb3J0IHt0cmF2ZXJzZX0gZnJvbSBcIm9iamVjdC10cmF2ZXJzYWxcIjtcblxuY29uc3QgZXh0ZW5kc01heERlcHRoID0gMTE7XG5jb25zdCBleHRlbmRzUmVjdXJzZSA9IChnaXRsYWJEYXRhOiBhbnksIGpvYk5hbWU6IHN0cmluZywgam9iRGF0YTogYW55LCBwYXJlbnRzOiBhbnlbXSwgZGVwdGg6IG51bWJlcikgPT4ge1xuICAgIGFzc2VydChkZXB0aCA8IGV4dGVuZHNNYXhEZXB0aCwgY2hhbGtge2JsdWVCcmlnaHQgJHtqb2JOYW1lfX06IGNpcmN1bGFyIGRlcGVuZGVuY3kgZGV0ZWN0ZWQgaW4gXFxgZXh0ZW5kc1xcYGApO1xuICAgIGRlcHRoKys7XG4gICAgZm9yIChjb25zdCBwYXJlbnROYW1lIG9mIChqb2JEYXRhLmV4dGVuZHMgfHwgW10pKSB7XG4gICAgICAgIGNvbnN0IHBhcmVudERhdGEgPSBnaXRsYWJEYXRhW3BhcmVudE5hbWVdO1xuICAgICAgICBhc3NlcnQocGFyZW50RGF0YSAhPSBudWxsLCBjaGFsa2B7Ymx1ZUJyaWdodCAke3BhcmVudE5hbWV9fSBpcyB1bnNwZWNpZmllZCwgdXNlZCBieSB7Ymx1ZUJyaWdodCAke2pvYk5hbWV9fSBleHRlbmRzYCk7XG4gICAgICAgIGV4dGVuZHNSZWN1cnNlKGdpdGxhYkRhdGEsIHBhcmVudE5hbWUsIHBhcmVudERhdGEsIHBhcmVudHMsIGRlcHRoKTtcbiAgICAgICAgcGFyZW50cy5wdXNoKHBhcmVudERhdGEpO1xuICAgIH1cbiAgICByZXR1cm4gcGFyZW50cztcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBqb2JFeHRlbmRzIChnaXRsYWJEYXRhOiBhbnkpIHtcbiAgICBmb3IgKGNvbnN0IFtqb2JOYW1lLCBqb2JEYXRhXSBvZiBPYmplY3QuZW50cmllczxhbnk+KGdpdGxhYkRhdGEpKSB7XG4gICAgICAgIGlmIChKb2IuaWxsZWdhbEpvYk5hbWVzLmhhcyhqb2JOYW1lKSkgY29udGludWU7XG4gICAgICAgIGlmIChPYmplY3QuZ2V0UHJvdG90eXBlT2Yoam9iRGF0YSkgIT09IE9iamVjdC5wcm90b3R5cGUpIGNvbnRpbnVlO1xuICAgICAgICBqb2JEYXRhLmV4dGVuZHMgPSB0eXBlb2Ygam9iRGF0YS5leHRlbmRzID09PSBcInN0cmluZ1wiID8gW2pvYkRhdGEuZXh0ZW5kc10gOiBqb2JEYXRhLmV4dGVuZHMgPz8gW107XG4gICAgICAgIGNvbnN0IHBhcmVudERhdGFzID0gZXh0ZW5kc1JlY3Vyc2UoZ2l0bGFiRGF0YSwgam9iTmFtZSwgam9iRGF0YSwgW10sIDApO1xuICAgICAgICBnaXRsYWJEYXRhW2pvYk5hbWVdID0gZGVlcEV4dGVuZCh7fSwgLi4ucGFyZW50RGF0YXMsIGpvYkRhdGEpO1xuICAgIH1cblxuICAgIGZvciAoY29uc3QgW2pvYk5hbWUsIGpvYkRhdGFdIG9mIE9iamVjdC5lbnRyaWVzPGFueT4oZ2l0bGFiRGF0YSkpIHtcbiAgICAgICAgaWYgKEpvYi5pbGxlZ2FsSm9iTmFtZXMuaGFzKGpvYk5hbWUpKSBjb250aW51ZTtcbiAgICAgICAgaWYgKE9iamVjdC5nZXRQcm90b3R5cGVPZihqb2JEYXRhKSAhPT0gT2JqZWN0LnByb3RvdHlwZSkgY29udGludWU7XG4gICAgICAgIGRlbGV0ZSBqb2JEYXRhLmV4dGVuZHM7XG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVmZXJlbmNlIChnaXRsYWJEYXRhOiBhbnksIHJlY3Vyc2VEYXRhOiBhbnkpIHtcbiAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllczxhbnk+KHJlY3Vyc2VEYXRhIHx8IHt9KSkge1xuICAgICAgICBpZiAodmFsdWU/LnJlZmVyZW5jZURhdGEpIHtcbiAgICAgICAgICAgIHJlY3Vyc2VEYXRhW2tleV0gPSBnZXRTdWJEYXRhQnlSZWZlcmVuY2UoZ2l0bGFiRGF0YSwgdmFsdWUucmVmZXJlbmNlRGF0YSk7XG4gICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSBcIm9iamVjdFwiKSB7XG4gICAgICAgICAgICByZWZlcmVuY2UoZ2l0bGFiRGF0YSwgdmFsdWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGhhc0NpcmN1bGFyQ2hhaW4ocmVjdXJzZURhdGEpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgQXNzZXJ0aW9uRXJyb3Ioe21lc3NhZ2U6IGAhcmVmZXJlbmNlIGNpcmN1bGFyIGNoYWluIGRldGVjdGVkIFske3ZhbHVlLnJlZmVyZW5jZURhdGF9XWB9KTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuY29uc3QgZ2V0U3ViRGF0YUJ5UmVmZXJlbmNlID0gKGdpdGxhYkRhdGE6IGFueSwgcmVmZXJlbmNlRGF0YTogc3RyaW5nW10pID0+IHtcbiAgICBsZXQgZ2l0bGFiU3ViRGF0YSA9IGdpdGxhYkRhdGE7XG4gICAgcmVmZXJlbmNlRGF0YS5mb3JFYWNoKChyZWZlcmVuY2VQb2ludGVyKSA9PiB7XG4gICAgICAgIGFzc2VydChnaXRsYWJTdWJEYXRhW3JlZmVyZW5jZVBvaW50ZXJdICE9IG51bGwsIGAhcmVmZXJlbmNlIFske3JlZmVyZW5jZURhdGEuam9pbihcIiwgXCIpfV0gaXMgdW5kZWZpbmVkYCk7XG4gICAgICAgIGdpdGxhYlN1YkRhdGEgPSBnaXRsYWJTdWJEYXRhW3JlZmVyZW5jZVBvaW50ZXJdO1xuICAgIH0pO1xuICAgIHJldHVybiBnaXRsYWJTdWJEYXRhO1xufTtcblxuZnVuY3Rpb24gaGFzQ2lyY3VsYXJDaGFpbiAoZGF0YTogYW55KSB7XG4gICAgdHJ5IHtcbiAgICAgICAgSlNPTi5zdHJpbmdpZnkoZGF0YSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBpZiAoZSBpbnN0YW5jZW9mIFR5cGVFcnJvciAmJiBlLm1lc3NhZ2Uuc3RhcnRzV2l0aChcIkNvbnZlcnRpbmcgY2lyY3VsYXIgc3RydWN0dXJlIHRvIEpTT05cIikpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbXBsZXhPYmplY3RzIChnaXRsYWJEYXRhOiBhbnkpIHtcbiAgICBmb3IgKGNvbnN0IFtqb2JOYW1lLCBqb2JEYXRhXSBvZiBPYmplY3QuZW50cmllczxhbnk+KGdpdGxhYkRhdGEpKSB7XG4gICAgICAgIGlmIChKb2IuaWxsZWdhbEpvYk5hbWVzLmhhcyhqb2JOYW1lKSkgY29udGludWU7XG4gICAgICAgIGlmICh0eXBlb2Ygam9iRGF0YSA9PT0gXCJzdHJpbmdcIikgY29udGludWU7XG4gICAgICAgIG5lZWRzKGpvYk5hbWUsIGdpdGxhYkRhdGEpO1xuICAgICAgICBjYWNoZShqb2JOYW1lLCBnaXRsYWJEYXRhKTtcbiAgICAgICAgc2VydmljZXMoam9iTmFtZSwgZ2l0bGFiRGF0YSk7XG4gICAgICAgIGltYWdlKGpvYk5hbWUsIGdpdGxhYkRhdGEpO1xuICAgICAgICBpZiAoam9iRGF0YS5zY3JpcHQpIGpvYkRhdGEuc2NyaXB0ID0gdHlwZW9mIGpvYkRhdGEuc2NyaXB0ID09PSBcInN0cmluZ1wiID8gW2pvYkRhdGEuc2NyaXB0XSA6IGpvYkRhdGEuc2NyaXB0O1xuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG5lZWRzQ29tcGxleCAoZGF0YTogYW55KSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgam9iOiBkYXRhLmpvYiA/PyBkYXRhLFxuICAgICAgICBhcnRpZmFjdHM6IGRhdGEuYXJ0aWZhY3RzID8/IHRydWUsXG4gICAgICAgIG9wdGlvbmFsOiBkYXRhLm9wdGlvbmFsID8/IGZhbHNlLFxuICAgICAgICBwaXBlbGluZTogZGF0YS5waXBlbGluZSA/PyBudWxsLFxuICAgICAgICBwcm9qZWN0OiBkYXRhLnByb2plY3QgPz8gbnVsbCxcbiAgICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY2FjaGVDb21wbGV4IChkYXRhOiBhbnkpIHtcbiAgICByZXR1cm4ge1xuICAgICAgICBrZXk6IGRhdGEua2V5LFxuICAgICAgICBwYXRoczogZGF0YS5wYXRocyxcbiAgICAgICAgcG9saWN5OiBkYXRhLnBvbGljeSA/PyBcInB1bGwtcHVzaFwiLFxuICAgICAgICB3aGVuOiBkYXRhLndoZW4gPz8gXCJvbl9zdWNjZXNzXCIsXG4gICAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNlcnZpY2VzQ29tcGxleCAoZGF0YTogYW55KSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgbmFtZTogdHlwZW9mIGRhdGEgPT09IFwic3RyaW5nXCIgPyBkYXRhIDogZGF0YS5uYW1lLFxuICAgICAgICBlbnRyeXBvaW50OiBkYXRhLmVudHJ5cG9pbnQsXG4gICAgICAgIGNvbW1hbmQ6IGRhdGEuY29tbWFuZCxcbiAgICAgICAgYWxpYXM6IGRhdGEuYWxpYXMsXG4gICAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGltYWdlQ29tcGxleCAoZGF0YTogYW55KSB7XG4gICAgaWYgKGRhdGEgPT0gbnVsbCkgcmV0dXJuIGRhdGE7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgbmFtZTogdHlwZW9mIGRhdGEgPT09IFwic3RyaW5nXCIgPyBkYXRhIDogZGF0YS5uYW1lLFxuICAgICAgICBlbnRyeXBvaW50OiBkYXRhLmVudHJ5cG9pbnQsXG4gICAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdsb2JhbFZhcmlhYmxlcyAoZ2l0bGFiRGF0YTogYW55KSB7XG4gICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXM8YW55PihnaXRsYWJEYXRhLnZhcmlhYmxlcyA/PyB7fSkpIHtcbiAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PSBcIm9iamVjdFwiICYmICFBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgICAgICAgZ2l0bGFiRGF0YS52YXJpYWJsZXNba2V5XSA9IHZhbHVlW1widmFsdWVcIl07XG4gICAgICAgIH1cbiAgICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBuZWVkcyAoam9iTmFtZTogc3RyaW5nLCBnaXRsYWJEYXRhOiBhbnkpIHtcbiAgICBjb25zdCBqb2JEYXRhID0gZ2l0bGFiRGF0YVtqb2JOYW1lXTtcbiAgICBpZiAoIWpvYkRhdGEubmVlZHMpIHJldHVybjtcblxuICAgIHJlZmVyZW5jZShnaXRsYWJEYXRhLCBqb2JEYXRhLm5lZWRzKTtcbiAgICBqb2JEYXRhLm5lZWRzID0gam9iRGF0YS5uZWVkcy5mbGF0KDUpO1xuICAgIGZvciAoY29uc3QgW2ksIG5dIG9mIE9iamVjdC5lbnRyaWVzPGFueT4oam9iRGF0YS5uZWVkcykpIHtcbiAgICAgICAgam9iRGF0YS5uZWVkc1tpXSA9IG5lZWRzQ29tcGxleChuKTtcbiAgICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjYWNoZSAoam9iTmFtZTogc3RyaW5nLCBnaXRsYWJEYXRhOiBhbnkpIHtcbiAgICBjb25zdCBqb2JEYXRhID0gZ2l0bGFiRGF0YVtqb2JOYW1lXTtcbiAgICBjb25zdCBjYWNoZSA9IGpvYkRhdGEuY2FjaGU7XG4gICAgaWYgKCFjYWNoZSkgcmV0dXJuO1xuXG4gICAgam9iRGF0YS5jYWNoZSA9IEFycmF5LmlzQXJyYXkoY2FjaGUpID8gY2FjaGUgOiBbY2FjaGVdO1xuICAgIHJlZmVyZW5jZShnaXRsYWJEYXRhLCBqb2JEYXRhLmNhY2hlKTtcbiAgICBqb2JEYXRhLmNhY2hlID0gam9iRGF0YS5jYWNoZS5mbGF0KDUpO1xuICAgIGZvciAoY29uc3QgW2ksIGNdIG9mIE9iamVjdC5lbnRyaWVzPGFueT4oam9iRGF0YS5jYWNoZSkpIHtcbiAgICAgICAgam9iRGF0YS5jYWNoZVtpXSA9IGNhY2hlQ29tcGxleChjKTtcbiAgICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXJ2aWNlcyAoam9iTmFtZTogc3RyaW5nLCBnaXRsYWJEYXRhOiBhbnkpIHtcbiAgICBjb25zdCBqb2JEYXRhID0gZ2l0bGFiRGF0YVtqb2JOYW1lXTtcbiAgICBjb25zdCBzZXJ2aWNlcyA9IGpvYkRhdGEuc2VydmljZXM7XG4gICAgaWYgKCFzZXJ2aWNlcykgcmV0dXJuO1xuXG4gICAgcmVmZXJlbmNlKGdpdGxhYkRhdGEsIGpvYkRhdGEuc2VydmljZXMpO1xuICAgIGpvYkRhdGEuc2VydmljZXMgPSBqb2JEYXRhLnNlcnZpY2VzLmZsYXQoNSk7XG4gICAgam9iRGF0YS5zZXJ2aWNlcyA9IHNlcnZpY2VzO1xuXG4gICAgZm9yIChjb25zdCBbaSwgc10gb2YgT2JqZWN0LmVudHJpZXM8YW55Pihqb2JEYXRhLnNlcnZpY2VzKSkge1xuICAgICAgICBqb2JEYXRhLnNlcnZpY2VzW2ldID0gc2VydmljZXNDb21wbGV4KHMpO1xuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGltYWdlIChqb2JOYW1lOiBzdHJpbmcsIGdpdGxhYkRhdGE6IGFueSkge1xuICAgIGNvbnN0IGpvYkRhdGEgPSBnaXRsYWJEYXRhW2pvYk5hbWVdO1xuICAgIGNvbnN0IGltYWdlID0gam9iRGF0YS5pbWFnZTtcbiAgICBpZiAoIWltYWdlKSByZXR1cm47XG5cbiAgICByZWZlcmVuY2UoZ2l0bGFiRGF0YSwgam9iRGF0YS5pbWFnZSk7XG4gICAgam9iRGF0YS5pbWFnZSA9IGltYWdlQ29tcGxleChqb2JEYXRhLmltYWdlKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlZmF1bHRzIChnaXRsYWJEYXRhOiBhbnkpIHtcbiAgICBjb25zdCBjYWNoZURhdGEgPSBnaXRsYWJEYXRhLmRlZmF1bHQ/LmNhY2hlID8/IGdpdGxhYkRhdGEuY2FjaGU7XG4gICAgbGV0IGNhY2hlID0gbnVsbDtcbiAgICBpZiAoY2FjaGVEYXRhKSB7XG4gICAgICAgIGNhY2hlID0gW107XG4gICAgICAgIGZvciAoY29uc3QgYyBvZiBBcnJheS5pc0FycmF5KGNhY2hlRGF0YSkgPyBjYWNoZURhdGEgOiBbY2FjaGVEYXRhXSkge1xuICAgICAgICAgICAgY2FjaGUucHVzaChjYWNoZUNvbXBsZXgoYykpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgY29uc3Qgc2VydmljZURhdGEgPSBnaXRsYWJEYXRhLmRlZmF1bHQ/LnNlcnZpY2VzID8/IGdpdGxhYkRhdGEuc2VydmljZXM7XG4gICAgbGV0IHNlcnZpY2VzID0gbnVsbDtcbiAgICBpZiAoc2VydmljZURhdGEpIHtcbiAgICAgICAgc2VydmljZXMgPSBbXTtcbiAgICAgICAgZm9yIChjb25zdCBzIG9mIHNlcnZpY2VEYXRhKSB7XG4gICAgICAgICAgICBzZXJ2aWNlcy5wdXNoKHNlcnZpY2VzQ29tcGxleChzKSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBpbWFnZSA9IGltYWdlQ29tcGxleChnaXRsYWJEYXRhLmRlZmF1bHQ/LmltYWdlID8/IGdpdGxhYkRhdGEuaW1hZ2UpO1xuICAgIGNvbnN0IGFydGlmYWN0cyA9IGdpdGxhYkRhdGEuZGVmYXVsdD8uYXJ0aWZhY3RzID8/IGdpdGxhYkRhdGEuYXJ0aWZhY3RzO1xuICAgIGNvbnN0IGJlZm9yZVNjcmlwdCA9IGdpdGxhYkRhdGEuZGVmYXVsdD8uYmVmb3JlX3NjcmlwdCA/PyBnaXRsYWJEYXRhLmJlZm9yZV9zY3JpcHQ7XG4gICAgY29uc3QgYWZ0ZXJTY3JpcHQgPSBnaXRsYWJEYXRhLmRlZmF1bHQ/LmFmdGVyX3NjcmlwdCA/PyBnaXRsYWJEYXRhLmFmdGVyX3NjcmlwdDtcblxuICAgIGZvciAoY29uc3QgW2pvYk5hbWUsIGpvYkRhdGFdIG9mIE9iamVjdC5lbnRyaWVzPGFueT4oZ2l0bGFiRGF0YSkpIHtcbiAgICAgICAgaWYgKEpvYi5pbGxlZ2FsSm9iTmFtZXMuaGFzKGpvYk5hbWUpKSBjb250aW51ZTtcbiAgICAgICAgaWYgKHR5cGVvZiBqb2JEYXRhID09PSBcInN0cmluZ1wiKSBjb250aW51ZTtcbiAgICAgICAgaWYgKCFqb2JEYXRhLmFydGlmYWN0cyAmJiBhcnRpZmFjdHMpIGpvYkRhdGEuYXJ0aWZhY3RzID0gYXJ0aWZhY3RzO1xuICAgICAgICBpZiAoIWpvYkRhdGEuY2FjaGUgJiYgY2FjaGUpIGpvYkRhdGEuY2FjaGUgPSBjYWNoZTtcbiAgICAgICAgaWYgKCFqb2JEYXRhLnNlcnZpY2VzICYmIHNlcnZpY2VzKSBqb2JEYXRhLnNlcnZpY2VzID0gc2VydmljZXM7XG4gICAgICAgIGlmICgham9iRGF0YS5pbWFnZSAmJiBpbWFnZSkgam9iRGF0YS5pbWFnZSA9IGltYWdlO1xuICAgICAgICBpZiAoIWpvYkRhdGEuYWZ0ZXJfc2NyaXB0ICYmIGFmdGVyU2NyaXB0KSBqb2JEYXRhLmFmdGVyX3NjcmlwdCA9IGFmdGVyU2NyaXB0O1xuICAgICAgICBpZiAoIWpvYkRhdGEuYmVmb3JlX3NjcmlwdCAmJiBiZWZvcmVTY3JpcHQpIGpvYkRhdGEuYmVmb3JlX3NjcmlwdCA9IGJlZm9yZVNjcmlwdDtcbiAgICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmbGF0dGVuTGlzdHMgKGdpdGxhYkRhdGE6IGFueSkge1xuICAgIHRyYXZlcnNlKGdpdGxhYkRhdGEsICh7cGFyZW50LCBrZXksIHZhbHVlfSkgPT4ge1xuICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkodmFsdWUpIHx8IHBhcmVudCA9PSBudWxsIHx8IHR5cGVvZiBrZXkgIT0gXCJzdHJpbmdcIikgcmV0dXJuO1xuICAgICAgICBwYXJlbnRba2V5XSA9IHZhbHVlLmZsYXQoNSk7XG4gICAgfSk7XG59XG4iXX0=
255
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1leHBhbmRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImRhdGEtZXhwYW5kZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxrREFBMEI7QUFDMUIsOERBQXFDO0FBQ3JDLGlEQUE4QztBQUM5QywrQkFBMEI7QUFDMUIsdURBQTBDO0FBRTFDLE1BQU0sZUFBZSxHQUFHLEVBQUUsQ0FBQztBQUMzQixNQUFNLGNBQWMsR0FBRyxDQUFDLFVBQWUsRUFBRSxPQUFlLEVBQUUsT0FBWSxFQUFFLE9BQWMsRUFBRSxLQUFhLEVBQUUsRUFBRTtJQUNyRyxJQUFBLGdCQUFNLEVBQUMsS0FBSyxHQUFHLGVBQWUsRUFBRSxJQUFBLGVBQUssRUFBQSxlQUFlLE9BQU8sZ0RBQWdELENBQUMsQ0FBQztJQUM3RyxLQUFLLEVBQUUsQ0FBQztJQUNSLEtBQUssTUFBTSxVQUFVLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxJQUFJLEVBQUUsQ0FBQyxFQUFFO1FBQzlDLE1BQU0sVUFBVSxHQUFHLFVBQVUsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUMxQyxJQUFBLGdCQUFNLEVBQUMsVUFBVSxJQUFJLElBQUksRUFBRSxJQUFBLGVBQUssRUFBQSxlQUFlLFVBQVUseUNBQXlDLE9BQU8sV0FBVyxDQUFDLENBQUM7UUFDdEgsY0FBYyxDQUFDLFVBQVUsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQztRQUNuRSxPQUFPLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0tBQzVCO0lBQ0QsT0FBTyxPQUFPLENBQUM7QUFDbkIsQ0FBQyxDQUFDO0FBRUYsU0FBZ0IsVUFBVSxDQUFFLFVBQWU7SUFDdkMsS0FBSyxNQUFNLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQU0sVUFBVSxDQUFDLEVBQUU7UUFDOUQsSUFBSSxTQUFH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LENBQUMsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2hDLENBQUMsQ0FBQyxDQUFDO0FBQ1AsQ0FBQztBQUxELG9DQUtDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGNoYWxrIGZyb20gXCJjaGFsa1wiO1xuaW1wb3J0IGRlZXBFeHRlbmQgZnJvbSBcImRlZXAtZXh0ZW5kXCI7XG5pbXBvcnQgYXNzZXJ0LCB7QXNzZXJ0aW9uRXJyb3J9IGZyb20gXCJhc3NlcnRcIjtcbmltcG9ydCB7Sm9ifSBmcm9tIFwiLi9qb2JcIjtcbmltcG9ydCB7dHJhdmVyc2V9IGZyb20gXCJvYmplY3QtdHJhdmVyc2FsXCI7XG5cbmNvbnN0IGV4dGVuZHNNYXhEZXB0aCA9IDExO1xuY29uc3QgZXh0ZW5kc1JlY3Vyc2UgPSAoZ2l0bGFiRGF0YTogYW55LCBqb2JOYW1lOiBzdHJpbmcsIGpvYkRhdGE6IGFueSwgcGFyZW50czogYW55W10sIGRlcHRoOiBudW1iZXIpID0+IHtcbiAgICBhc3NlcnQoZGVwdGggPCBleHRlbmRzTWF4RGVwdGgsIGNoYWxrYHtibHVlQnJpZ2h0ICR7am9iTmFtZX19OiBjaXJjdWxhciBkZXBlbmRlbmN5IGRldGVjdGVkIGluIFxcYGV4dGVuZHNcXGBgKTtcbiAgICBkZXB0aCsrO1xuICAgIGZvciAoY29uc3QgcGFyZW50TmFtZSBvZiAoam9iRGF0YS5leHRlbmRzIHx8IFtdKSkge1xuICAgICAgICBjb25zdCBwYXJlbnREYXRhID0gZ2l0bGFiRGF0YVtwYXJlbnROYW1lXTtcbiAgICAgICAgYXNzZXJ0KHBhcmVudERhdGEgIT0gbnVsbCwgY2hhbGtge2JsdWVCcmlnaHQgJHtwYXJlbnROYW1lfX0gaXMgdW5zcGVjaWZpZWQsIHVzZWQgYnkge2JsdWVCcmlnaHQgJHtqb2JOYW1lfX0gZXh0ZW5kc2ApO1xuICAgICAgICBleHRlbmRzUmVjdXJzZShnaXRsYWJEYXRhLCBwYXJlbnROYW1lLCBwYXJlbnREYXRhLCBwYXJlbnRzLCBkZXB0aCk7XG4gICAgICAgIHBhcmVudHMucHVzaChwYXJlbnREYXRhKTtcbiAgICB9XG4gICAgcmV0dXJuIHBhcmVudHM7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gam9iRXh0ZW5kcyAoZ2l0bGFiRGF0YTogYW55KSB7XG4gICAgZm9yIChjb25zdCBbam9iTmFtZSwgam9iRGF0YV0gb2YgT2JqZWN0LmVudHJpZXM8YW55PihnaXRsYWJEYXRhKSkge1xuICAgICAgICBpZiAoSm9iLmlsbGVnYWxKb2JOYW1lcy5oYXMoam9iTmFtZSkpIGNvbnRpbnVlO1xuICAgICAgICBpZiAoT2JqZWN0LmdldFByb3RvdHlwZU9mKGpvYkRhdGEpICE9PSBPYmplY3QucHJvdG90eXBlKSBjb250aW51ZTtcbiAgICAgICAgam9iRGF0YS5leHRlbmRzID0gdHlwZW9mIGpvYkRhdGEuZXh0ZW5kcyA9PT0gXCJzdHJpbmdcIiA/IFtqb2JEYXRhLmV4dGVuZHNdIDogam9iRGF0YS5leHRlbmRzID8/IFtdO1xuICAgICAgICBjb25zdCBwYXJlbnREYXRhcyA9IGV4dGVuZHNSZWN1cnNlKGdpdGxhYkRhdGEsIGpvYk5hbWUsIGpvYkRhdGEsIFtdLCAwKTtcbiAgICAgICAgZ2l0bGFiRGF0YVtqb2JOYW1lXSA9IGRlZXBFeHRlbmQoe30sIC4uLnBhcmVudERhdGFzLCBqb2JEYXRhKTtcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IFtqb2JOYW1lLCBqb2JEYXRhXSBvZiBPYmplY3QuZW50cmllczxhbnk+KGdpdGxhYkRhdGEpKSB7XG4gICAgICAgIGlmIChKb2IuaWxsZWdhbEpvYk5hbWVzLmhhcyhqb2JOYW1lKSkgY29udGludWU7XG4gICAgICAgIGlmIChPYmplY3QuZ2V0UHJvdG90eXBlT2Yoam9iRGF0YSkgIT09IE9iamVjdC5wcm90b3R5cGUpIGNvbnRpbnVlO1xuICAgICAgICBkZWxldGUgam9iRGF0YS5leHRlbmRzO1xuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlZmVyZW5jZSAoZ2l0bGFiRGF0YTogYW55LCByZWN1cnNlRGF0YTogYW55KSB7XG4gICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXM8YW55PihyZWN1cnNlRGF0YSB8fCB7fSkpIHtcbiAgICAgICAgaWYgKHZhbHVlPy5yZWZlcmVuY2VEYXRhKSB7XG4gICAgICAgICAgICByZWN1cnNlRGF0YVtrZXldID0gZ2V0U3ViRGF0YUJ5UmVmZXJlbmNlKGdpdGxhYkRhdGEsIHZhbHVlLnJlZmVyZW5jZURhdGEpO1xuICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJvYmplY3RcIikge1xuICAgICAgICAgICAgcmVmZXJlbmNlKGdpdGxhYkRhdGEsIHZhbHVlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChoYXNDaXJjdWxhckNoYWluKHJlY3Vyc2VEYXRhKSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEFzc2VydGlvbkVycm9yKHttZXNzYWdlOiBgIXJlZmVyZW5jZSBjaXJjdWxhciBjaGFpbiBkZXRlY3RlZCBbJHt2YWx1ZS5yZWZlcmVuY2VEYXRhfV1gfSk7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbmNvbnN0IGdldFN1YkRhdGFCeVJlZmVyZW5jZSA9IChnaXRsYWJEYXRhOiBhbnksIHJlZmVyZW5jZURhdGE6IHN0cmluZ1tdKSA9PiB7XG4gICAgbGV0IGdpdGxhYlN1YkRhdGEgPSBnaXRsYWJEYXRhO1xuICAgIHJlZmVyZW5jZURhdGEuZm9yRWFjaCgocmVmZXJlbmNlUG9pbnRlcikgPT4ge1xuICAgICAgICBhc3NlcnQoZ2l0bGFiU3ViRGF0YVtyZWZlcmVuY2VQb2ludGVyXSAhPSBudWxsLCBgIXJlZmVyZW5jZSBbJHtyZWZlcmVuY2VEYXRhLmpvaW4oXCIsIFwiKX1dIGlzIHVuZGVmaW5lZGApO1xuICAgICAgICBnaXRsYWJTdWJEYXRhID0gZ2l0bGFiU3ViRGF0YVtyZWZlcmVuY2VQb2ludGVyXTtcbiAgICB9KTtcbiAgICByZXR1cm4gZ2l0bGFiU3ViRGF0YTtcbn07XG5cbmZ1bmN0aW9uIGhhc0NpcmN1bGFyQ2hhaW4gKGRhdGE6IGFueSkge1xuICAgIHRyeSB7XG4gICAgICAgIEpTT04uc3RyaW5naWZ5KGRhdGEpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgaWYgKGUgaW5zdGFuY2VvZiBUeXBlRXJyb3IgJiYgZS5tZXNzYWdlLnN0YXJ0c1dpdGgoXCJDb252ZXJ0aW5nIGNpcmN1bGFyIHN0cnVjdHVyZSB0byBKU09OXCIpKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb21wbGV4T2JqZWN0cyAoZ2l0bGFiRGF0YTogYW55KSB7XG4gICAgZm9yIChjb25zdCBbam9iTmFtZSwgam9iRGF0YV0gb2YgT2JqZWN0LmVudHJpZXM8YW55PihnaXRsYWJEYXRhKSkge1xuICAgICAgICBpZiAoSm9iLmlsbGVnYWxKb2JOYW1lcy5oYXMoam9iTmFtZSkpIGNvbnRpbnVlO1xuICAgICAgICBpZiAodHlwZW9mIGpvYkRhdGEgPT09IFwic3RyaW5nXCIpIGNvbnRpbnVlO1xuICAgICAgICBuZWVkcyhqb2JOYW1lLCBnaXRsYWJEYXRhKTtcbiAgICAgICAgY2FjaGUoam9iTmFtZSwgZ2l0bGFiRGF0YSk7XG4gICAgICAgIHNlcnZpY2VzKGpvYk5hbWUsIGdpdGxhYkRhdGEpO1xuICAgICAgICBpbWFnZShqb2JOYW1lLCBnaXRsYWJEYXRhKTtcbiAgICAgICAgaWYgKGpvYkRhdGEuc2NyaXB0KSBqb2JEYXRhLnNjcmlwdCA9IHR5cGVvZiBqb2JEYXRhLnNjcmlwdCA9PT0gXCJzdHJpbmdcIiA/IFtqb2JEYXRhLnNjcmlwdF0gOiBqb2JEYXRhLnNjcmlwdDtcbiAgICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBuZWVkc0NvbXBsZXggKGRhdGE6IGFueSkge1xuICAgIHJldHVybiB7XG4gICAgICAgIGpvYjogZGF0YS5qb2IgPz8gZGF0YSxcbiAgICAgICAgYXJ0aWZhY3RzOiBkYXRhLmFydGlmYWN0cyA/PyB0cnVlLFxuICAgICAgICBvcHRpb25hbDogZGF0YS5vcHRpb25hbCA/PyBmYWxzZSxcbiAgICAgICAgcGlwZWxpbmU6IGRhdGEucGlwZWxpbmUgPz8gbnVsbCxcbiAgICAgICAgcHJvamVjdDogZGF0YS5wcm9qZWN0ID8/IG51bGwsXG4gICAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNhY2hlQ29tcGxleCAoZGF0YTogYW55KSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICAga2V5OiBkYXRhLmtleSxcbiAgICAgICAgcGF0aHM6IGRhdGEucGF0aHMsXG4gICAgICAgIHBvbGljeTogZGF0YS5wb2xpY3kgPz8gXCJwdWxsLXB1c2hcIixcbiAgICAgICAgd2hlbjogZGF0YS53aGVuID8/IFwib25fc3VjY2Vzc1wiLFxuICAgIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXJ2aWNlc0NvbXBsZXggKGRhdGE6IGFueSkge1xuICAgIHJldHVybiB7XG4gICAgICAgIG5hbWU6IHR5cGVvZiBkYXRhID09PSBcInN0cmluZ1wiID8gZGF0YSA6IGRhdGEubmFtZSxcbiAgICAgICAgZW50cnlwb2ludDogZGF0YS5lbnRyeXBvaW50LFxuICAgICAgICBjb21tYW5kOiBkYXRhLmNvbW1hbmQsXG4gICAgICAgIGFsaWFzOiBkYXRhLmFsaWFzLFxuICAgICAgICB2YXJpYWJsZXM6IGRhdGEudmFyaWFibGVzLFxuICAgIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbWFnZUNvbXBsZXggKGRhdGE6IGFueSkge1xuICAgIGlmIChkYXRhID09IG51bGwpIHJldHVybiBkYXRhO1xuICAgIHJldHVybiB7XG4gICAgICAgIG5hbWU6IHR5cGVvZiBkYXRhID09PSBcInN0cmluZ1wiID8gZGF0YSA6IGRhdGEubmFtZSxcbiAgICAgICAgZW50cnlwb2ludDogZGF0YS5lbnRyeXBvaW50LFxuICAgIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnbG9iYWxWYXJpYWJsZXMgKGdpdGxhYkRhdGE6IGFueSkge1xuICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzPGFueT4oZ2l0bGFiRGF0YS52YXJpYWJsZXMgPz8ge30pKSB7XG4gICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT0gXCJvYmplY3RcIiAmJiAhQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgICAgIGdpdGxhYkRhdGEudmFyaWFibGVzW2tleV0gPSB2YWx1ZVtcInZhbHVlXCJdO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gbmVlZHMgKGpvYk5hbWU6IHN0cmluZywgZ2l0bGFiRGF0YTogYW55KSB7XG4gICAgY29uc3Qgam9iRGF0YSA9IGdpdGxhYkRhdGFbam9iTmFtZV07XG4gICAgaWYgKCFqb2JEYXRhLm5lZWRzKSByZXR1cm47XG5cbiAgICByZWZlcmVuY2UoZ2l0bGFiRGF0YSwgam9iRGF0YS5uZWVkcyk7XG4gICAgam9iRGF0YS5uZWVkcyA9IGpvYkRhdGEubmVlZHMuZmxhdCg1KTtcbiAgICBmb3IgKGNvbnN0IFtpLCBuXSBvZiBPYmplY3QuZW50cmllczxhbnk+KGpvYkRhdGEubmVlZHMpKSB7XG4gICAgICAgIGpvYkRhdGEubmVlZHNbaV0gPSBuZWVkc0NvbXBsZXgobik7XG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY2FjaGUgKGpvYk5hbWU6IHN0cmluZywgZ2l0bGFiRGF0YTogYW55KSB7XG4gICAgY29uc3Qgam9iRGF0YSA9IGdpdGxhYkRhdGFbam9iTmFtZV07XG4gICAgY29uc3QgY2FjaGUgPSBqb2JEYXRhLmNhY2hlO1xuICAgIGlmICghY2FjaGUpIHJldHVybjtcblxuICAgIGpvYkRhdGEuY2FjaGUgPSBBcnJheS5pc0FycmF5KGNhY2hlKSA/IGNhY2hlIDogW2NhY2hlXTtcbiAgICByZWZlcmVuY2UoZ2l0bGFiRGF0YSwgam9iRGF0YS5jYWNoZSk7XG4gICAgam9iRGF0YS5jYWNoZSA9IGpvYkRhdGEuY2FjaGUuZmxhdCg1KTtcbiAgICBmb3IgKGNvbnN0IFtpLCBjXSBvZiBPYmplY3QuZW50cmllczxhbnk+KGpvYkRhdGEuY2FjaGUpKSB7XG4gICAgICAgIGpvYkRhdGEuY2FjaGVbaV0gPSBjYWNoZUNvbXBsZXgoYyk7XG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gc2VydmljZXMgKGpvYk5hbWU6IHN0cmluZywgZ2l0bGFiRGF0YTogYW55KSB7XG4gICAgY29uc3Qgam9iRGF0YSA9IGdpdGxhYkRhdGFbam9iTmFtZV07XG4gICAgY29uc3Qgc2VydmljZXMgPSBqb2JEYXRhLnNlcnZpY2VzO1xuICAgIGlmICghc2VydmljZXMpIHJldHVybjtcblxuICAgIHJlZmVyZW5jZShnaXRsYWJEYXRhLCBqb2JEYXRhLnNlcnZpY2VzKTtcbiAgICBqb2JEYXRhLnNlcnZpY2VzID0gam9iRGF0YS5zZXJ2aWNlcy5mbGF0KDUpO1xuICAgIGpvYkRhdGEuc2VydmljZXMgPSBzZXJ2aWNlcztcblxuICAgIGZvciAoY29uc3QgW2ksIHNdIG9mIE9iamVjdC5lbnRyaWVzPGFueT4oam9iRGF0YS5zZXJ2aWNlcykpIHtcbiAgICAgICAgam9iRGF0YS5zZXJ2aWNlc1tpXSA9IHNlcnZpY2VzQ29tcGxleChzKTtcbiAgICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbWFnZSAoam9iTmFtZTogc3RyaW5nLCBnaXRsYWJEYXRhOiBhbnkpIHtcbiAgICBjb25zdCBqb2JEYXRhID0gZ2l0bGFiRGF0YVtqb2JOYW1lXTtcbiAgICBjb25zdCBpbWFnZSA9IGpvYkRhdGEuaW1hZ2U7XG4gICAgaWYgKCFpbWFnZSkgcmV0dXJuO1xuXG4gICAgcmVmZXJlbmNlKGdpdGxhYkRhdGEsIGpvYkRhdGEuaW1hZ2UpO1xuICAgIGpvYkRhdGEuaW1hZ2UgPSBpbWFnZUNvbXBsZXgoam9iRGF0YS5pbWFnZSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkZWZhdWx0cyAoZ2l0bGFiRGF0YTogYW55KSB7XG4gICAgY29uc3QgY2FjaGVEYXRhID0gZ2l0bGFiRGF0YS5kZWZhdWx0Py5jYWNoZSA/PyBnaXRsYWJEYXRhLmNhY2hlO1xuICAgIGxldCBjYWNoZSA9IG51bGw7XG4gICAgaWYgKGNhY2hlRGF0YSkge1xuICAgICAgICBjYWNoZSA9IFtdO1xuICAgICAgICBmb3IgKGNvbnN0IGMgb2YgQXJyYXkuaXNBcnJheShjYWNoZURhdGEpID8gY2FjaGVEYXRhIDogW2NhY2hlRGF0YV0pIHtcbiAgICAgICAgICAgIGNhY2hlLnB1c2goY2FjaGVDb21wbGV4KGMpKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IHNlcnZpY2VEYXRhID0gZ2l0bGFiRGF0YS5kZWZhdWx0Py5zZXJ2aWNlcyA/PyBnaXRsYWJEYXRhLnNlcnZpY2VzO1xuICAgIGxldCBzZXJ2aWNlcyA9IG51bGw7XG4gICAgaWYgKHNlcnZpY2VEYXRhKSB7XG4gICAgICAgIHNlcnZpY2VzID0gW107XG4gICAgICAgIGZvciAoY29uc3QgcyBvZiBzZXJ2aWNlRGF0YSkge1xuICAgICAgICAgICAgc2VydmljZXMucHVzaChzZXJ2aWNlc0NvbXBsZXgocykpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgaW1hZ2UgPSBpbWFnZUNvbXBsZXgoZ2l0bGFiRGF0YS5kZWZhdWx0Py5pbWFnZSA/PyBnaXRsYWJEYXRhLmltYWdlKTtcbiAgICBjb25zdCBhcnRpZmFjdHMgPSBnaXRsYWJEYXRhLmRlZmF1bHQ/LmFydGlmYWN0cyA/PyBnaXRsYWJEYXRhLmFydGlmYWN0cztcbiAgICBjb25zdCBiZWZvcmVTY3JpcHQgPSBnaXRsYWJEYXRhLmRlZmF1bHQ/LmJlZm9yZV9zY3JpcHQgPz8gZ2l0bGFiRGF0YS5iZWZvcmVfc2NyaXB0O1xuICAgIGNvbnN0IGFmdGVyU2NyaXB0ID0gZ2l0bGFiRGF0YS5kZWZhdWx0Py5hZnRlcl9zY3JpcHQgPz8gZ2l0bGFiRGF0YS5hZnRlcl9zY3JpcHQ7XG5cbiAgICBmb3IgKGNvbnN0IFtqb2JOYW1lLCBqb2JEYXRhXSBvZiBPYmplY3QuZW50cmllczxhbnk+KGdpdGxhYkRhdGEpKSB7XG4gICAgICAgIGlmIChKb2IuaWxsZWdhbEpvYk5hbWVzLmhhcyhqb2JOYW1lKSkgY29udGludWU7XG4gICAgICAgIGlmICh0eXBlb2Ygam9iRGF0YSA9PT0gXCJzdHJpbmdcIikgY29udGludWU7XG4gICAgICAgIGlmICgham9iRGF0YS5hcnRpZmFjdHMgJiYgYXJ0aWZhY3RzKSBqb2JEYXRhLmFydGlmYWN0cyA9IGFydGlmYWN0cztcbiAgICAgICAgaWYgKCFqb2JEYXRhLmNhY2hlICYmIGNhY2hlKSBqb2JEYXRhLmNhY2hlID0gY2FjaGU7XG4gICAgICAgIGlmICgham9iRGF0YS5zZXJ2aWNlcyAmJiBzZXJ2aWNlcykgam9iRGF0YS5zZXJ2aWNlcyA9IHNlcnZpY2VzO1xuICAgICAgICBpZiAoIWpvYkRhdGEuaW1hZ2UgJiYgaW1hZ2UpIGpvYkRhdGEuaW1hZ2UgPSBpbWFnZTtcbiAgICAgICAgaWYgKCFqb2JEYXRhLmFmdGVyX3NjcmlwdCAmJiBhZnRlclNjcmlwdCkgam9iRGF0YS5hZnRlcl9zY3JpcHQgPSBhZnRlclNjcmlwdDtcbiAgICAgICAgaWYgKCFqb2JEYXRhLmJlZm9yZV9zY3JpcHQgJiYgYmVmb3JlU2NyaXB0KSBqb2JEYXRhLmJlZm9yZV9zY3JpcHQgPSBiZWZvcmVTY3JpcHQ7XG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZmxhdHRlbkxpc3RzIChnaXRsYWJEYXRhOiBhbnkpIHtcbiAgICB0cmF2ZXJzZShnaXRsYWJEYXRhLCAoe3BhcmVudCwga2V5LCB2YWx1ZX0pID0+IHtcbiAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KHZhbHVlKSB8fCBwYXJlbnQgPT0gbnVsbCB8fCB0eXBlb2Yga2V5ICE9IFwic3RyaW5nXCIpIHJldHVybjtcbiAgICAgICAgcGFyZW50W2tleV0gPSB2YWx1ZS5mbGF0KDUpO1xuICAgIH0pO1xufVxuIl19
package/src/executor.js CHANGED
@@ -38,7 +38,7 @@ class Executor {
38
38
  for (const s of startCandidates) {
39
39
  promises.push(s.start());
40
40
  }
41
- await Promise.allSettled(promises);
41
+ await Promise.all(promises);
42
42
  } while (startCandidates.length > 0);
43
43
  }
44
44
  static getStartCandidates(jobs, stages, potentialStarters, manuals) {
@@ -130,4 +130,4 @@ class Executor {
130
130
  }
131
131
  }
132
132
  exports.Executor = Executor;
133
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhlY3V0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJleGVjdXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLGtEQUEwQjtBQUUxQixpREFBOEM7QUFHOUMsTUFBYSxRQUFRO0lBRWpCLE1BQU0sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFFLElBQVUsRUFBRSxJQUF3QixFQUFFLE1BQXlCLEVBQUUsaUJBQXdCO1FBQzNHLElBQUksZUFBZSxHQUFHLEVBQUUsQ0FBQztRQUV6QixHQUFHO1lBQ0MsTUFBTSxRQUFRLEdBQUcsRUFBRSxDQUFDO1lBQ3BCLGVBQWUsR0FBRyxRQUFRLENBQUMsa0JBQWtCLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRSxpQkFBaUIsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDNUYsS0FBSyxNQUFNLENBQUMsSUFBSSxlQUFlLEVBQUU7Z0JBQzdCLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7YUFDNUI7WUFDRCxNQUFNLE9BQU8sQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUM7U0FDdEMsUUFBUSxlQUFlLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtJQUN6QyxDQUFDO0lBRUQsTUFBTSxDQUFDLGtCQUFrQixDQUFFLElBQXdCLEVBQUUsTUFBeUIsRUFBRSxpQkFBaUMsRUFBRSxPQUFpQjtRQUNoSSxNQUFNLGVBQWUsR0FBRyxFQUFFLENBQUM7UUFFM0IsS0FBSyxNQUFNLEdBQUcsSUFBSSxDQUFDLEdBQUcsSUFBSSxHQUFHLENBQU0saUJBQWlCLENBQUMsQ0FBQyxFQUFFO1lBQ3BELElBQUksR0FBRyxDQUFDLE9BQU87Z0JBQUUsU0FBUztZQUUxQixNQUFNLGFBQWEsR0FBRyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsT0FBTyxDQUFDLENB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e0pvYn0gZnJvbSBcIi4vam9iXCI7XG5pbXBvcnQgYXNzZXJ0LCB7QXNzZXJ0aW9uRXJyb3J9IGZyb20gXCJhc3NlcnRcIjtcbmltcG9ydCB7QXJndn0gZnJvbSBcIi4vYXJndlwiO1xuXG5leHBvcnQgY2xhc3MgRXhlY3V0b3Ige1xuXG4gICAgc3RhdGljIGFzeW5jIHJ1bkxvb3AgKGFyZ3Y6IEFyZ3YsIGpvYnM6IFJlYWRvbmx5QXJyYXk8Sm9iPiwgc3RhZ2VzOiByZWFkb25seSBzdHJpbmdbXSwgcG90ZW50aWFsU3RhcnRlcnM6IEpvYltdKSB7XG4gICAgICAgIGxldCBzdGFydENhbmRpZGF0ZXMgPSBbXTtcblxuICAgICAgICBkbyB7XG4gICAgICAgICAgICBjb25zdCBwcm9taXNlcyA9IFtdO1xuICAgICAgICAgICAgc3RhcnRDYW5kaWRhdGVzID0gRXhlY3V0b3IuZ2V0U3RhcnRDYW5kaWRhdGVzKGpvYnMsIHN0YWdlcywgcG90ZW50aWFsU3RhcnRlcnMsIGFyZ3YubWFudWFsKTtcbiAgICAgICAgICAgIGZvciAoY29uc3QgcyBvZiBzdGFydENhbmRpZGF0ZXMpIHtcbiAgICAgICAgICAgICAgICBwcm9taXNlcy5wdXNoKHMuc3RhcnQoKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBhd2FpdCBQcm9taXNlLmFsbFNldHRsZWQocHJvbWlzZXMpO1xuICAgICAgICB9IHdoaWxlIChzdGFydENhbmRpZGF0ZXMubGVuZ3RoID4gMCk7XG4gICAgfVxuXG4gICAgc3RhdGljIGdldFN0YXJ0Q2FuZGlkYXRlcyAoam9iczogUmVhZG9ubHlBcnJheTxKb2I+LCBzdGFnZXM6IHJlYWRvbmx5IHN0cmluZ1tdLCBwb3RlbnRpYWxTdGFydGVyczogcmVhZG9ubHkgSm9iW10sIG1hbnVhbHM6IHN0cmluZ1tdKSB7XG4gICAgICAgIGNvbnN0IHN0YXJ0Q2FuZGlkYXRlcyA9IFtdO1xuXG4gICAgICAgIGZvciAoY29uc3Qgam9iIG9mIFsuLi5uZXcgU2V0PEpvYj4ocG90ZW50aWFsU3RhcnRlcnMpXSkge1xuICAgICAgICAgICAgaWYgKGpvYi5zdGFydGVkKSBjb250aW51ZTtcblxuICAgICAgICAgICAgY29uc3Qgam9ic1RvV2FpdEZvciA9IEV4ZWN1dG9yLmdldFBhc3RUb1dhaXRGb3Ioam9icywgc3RhZ2VzLCBqb2IsIG1hbnVhbHMpO1xuICAgICAgICAgICAgaWYgKEV4ZWN1dG9yLmlzTm90RmluaXNoZWQoam9ic1RvV2FpdEZvcikpIHtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChqb2Iud2hlbiA9PT0gXCJvbl9zdWNjZXNzXCIgJiYgRXhlY3V0b3IuaXNQYXN0RmFpbGVkKGpvYnNUb1dhaXRGb3IpKSB7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoam9iLndoZW4gPT09IFwibWFudWFsXCIgJiYgRXhlY3V0b3IuaXNQYXN0RmFpbGVkKGpvYnNUb1dhaXRGb3IpKSB7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoam9iLndoZW4gPT09IFwib25fZmFpbHVyZVwiICYmICFFeGVjdXRvci5pc1Bhc3RGYWlsZWQoam9ic1RvV2FpdEZvcikpIHtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgc3RhcnRDYW5kaWRhdGVzLnB1c2goam9iKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc3RhcnRDYW5kaWRhdGVzO1xuICAgIH1cblxuICAgIHN0YXRpYyBpc1Bhc3RGYWlsZWQgKGpvYnNUb1dhaXRGb3I6IFJlYWRvbmx5QXJyYXk8Sm9iPikge1xuICAgICAgICBjb25zdCBmYWlsSm9icyA9IGpvYnNUb1dhaXRGb3IuZmlsdGVyKGogPT4ge1xuICAgICAgICAgICAgaWYgKGouYWxsb3dGYWlsdXJlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIChqLnByZVNjcmlwdHNFeGl0Q29kZSA/IGoucHJlU2NyaXB0c0V4aXRDb2RlIDogMCkgPiAwO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIGZhaWxKb2JzLmxlbmd0aCA+IDA7XG4gICAgfVxuXG4gICAgc3RhdGljIGlzTm90RmluaXNoZWQgKGpvYnNUb1dhaXRGb3I6IFJlYWRvbmx5QXJyYXk8Sm9iPikge1xuICAgICAgICBjb25zdCBub3RGaW5pc2hlZEpvYnMgPSBqb2JzVG9XYWl0Rm9yLmZpbHRlcihqID0+ICFqLmZpbmlzaGVkKTtcbiAgICAgICAgcmV0dXJuIG5vdEZpbmlzaGVkSm9icy5sZW5ndGggPiAwO1xuICAgIH1cblxuICAgIHN0YXRpYyBnZXRGYWlsZWQgKGpvYnM6IFJlYWRvbmx5QXJyYXk8Sm9iPikge1xuICAgICAgICByZXR1cm4gam9icy5maWx0ZXIoaiA9PiBqLmZpbmlzaGVkICYmICFqLmFsbG93RmFpbHVyZSAmJiAoai5wcmVTY3JpcHRzRXhpdENvZGUgPz8gMCkgPiAwKTtcbiAgICB9XG5cbiAgICBzdGF0aWMgZ2V0UGFzdFRvV2FpdEZvciAoam9iczogUmVhZG9ubHlBcnJheTxKb2I+LCBzdGFnZXM6IHJlYWRvbmx5IHN0cmluZ1tdLCBqb2I6IEpvYiwgbWFudWFsczogc3RyaW5nW10pIHtcbiAgICAgICAgY29uc3Qgam9ic1RvV2FpdEZvclNldCA9IG5ldyBTZXQ8Sm9iPigpO1xuICAgICAgICBsZXQgd2FpdEZvckxvb3BBcnJheTogSm9iW10gPSBbam9iXTtcblxuICAgICAgICB3aGlsZSAod2FpdEZvckxvb3BBcnJheS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBjb25zdCBsb29wSm9iID0gd2FpdEZvckxvb3BBcnJheS5wb3AoKTtcbiAgICAgICAgICAgIGFzc2VydChsb29wSm9iICE9IG51bGwsIFwiSm9iIG5vdCBmb3VuZCBpbiBnZXRQYXN0VG9XYWl0Rm9yLCBzaG91bGQgYmUgaW1wb3NzaWJsZSFcIik7XG4gICAgICAgICAgICBpZiAobG9vcEpvYi5uZWVkcykge1xuICAgICAgICAgICAgICAgIGNvbnN0IG5lZWRlZFRvV2FpdEZvciA9IHRoaXMuZ2V0TmVlZGVkVG9XYWl0Rm9yKGpvYnMsIG1hbnVhbHMsIGxvb3BKb2IpO1xuICAgICAgICAgICAgICAgIHdhaXRGb3JMb29wQXJyYXkucHVzaCguLi5uZWVkZWRUb1dhaXRGb3IpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zdCBwcmV2aW91c1RvV2FpdEZvciA9IHRoaXMuZ2V0UHJldmlvdXNUb1dhaXRGb3Ioam9icywgc3RhZ2VzLCBsb29wSm9iKTtcbiAgICAgICAgICAgICAgICB3YWl0Rm9yTG9vcEFycmF5ID0gd2FpdEZvckxvb3BBcnJheS5jb25jYXQocHJldmlvdXNUb1dhaXRGb3IpO1xuICAgICAgICAgICAgICAgIHdhaXRGb3JMb29wQXJyYXkgPSB3YWl0Rm9yTG9vcEFycmF5LmZpbHRlcihqID0+IGoud2hlbiAhPT0gXCJuZXZlclwiKTtcbiAgICAgICAgICAgICAgICB3YWl0Rm9yTG9vcEFycmF5ID0gd2FpdEZvckxvb3BBcnJheS5maWx0ZXIoaiA9PiBqLndoZW4gIT09IFwibWFudWFsXCIgfHwgbWFudWFscy5pbmNsdWRlcyhqLm5hbWUpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHdhaXRGb3JMb29wQXJyYXkuZm9yRWFjaChqID0+IGpvYnNUb1dhaXRGb3JTZXQuYWRkKGopKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gWy4uLmpvYnNUb1dhaXRGb3JTZXRdO1xuICAgIH1cblxuICAgIHN0YXRpYyBnZXROZWVkZWRUb1dhaXRGb3IgKGpvYnM6IFJlYWRvbmx5QXJyYXk8Sm9iPiwgbWFudWFsczogc3RyaW5nW10sIGpvYjogSm9iKSB7XG4gICAgICAgIGNvbnN0IHRvV2FpdEZvciA9IFtdO1xuICAgICAgICBhc3NlcnQoam9iLm5lZWRzICE9IG51bGwsIGNoYWxrYCR7am9iLm5hbWV9Lm5lZWRzIGNhbm5vdCBiZSBudWxsIGluIGdldE5lZWRlZFRvV2FpdEZvcmApO1xuICAgICAgICBmb3IgKGNvbnN0IG5lZWQgb2Ygam9iLm5lZWRzKSB7XG4gICAgICAgICAgICBjb25zdCBiYXNlSm9icyA9IGpvYnMuZmlsdGVyKGogPT4gai5iYXNlTmFtZSA9PT0gbmVlZC5qb2IpO1xuICAgICAgICAgICAgZm9yIChjb25zdCBqIG9mIGJhc2VKb2JzKSB7XG4gICAgICAgICAgICAgICAgaWYgKGoud2hlbiA9PT0gXCJuZXZlclwiICYmICFuZWVkLm9wdGlvbmFsKSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBBc3NlcnRpb25FcnJvcih7bWVzc2FnZTogY2hhbGtge2JsdWVCcmlnaHQgJHtqLm5hbWV9fSBpcyB3aGVuOm5ldmVyLCBidXQgaXRzIG5lZWRlZCBieSB7Ymx1ZUJyaWdodCAke2pvYi5uYW1lfX1gfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChqLndoZW4gPT09IFwibmV2ZXJcIiAmJiBuZWVkLm9wdGlvbmFsKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoai53aGVuID09PSBcIm1hbnVhbFwiICYmICFtYW51YWxzLmluY2x1ZGVzKGoubmFtZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEFzc2VydGlvbkVycm9yKHttZXNzYWdlOiBjaGFsa2B7Ymx1ZUJyaWdodCAke2oubmFtZX19IGlzIHdoZW46bWFudWFsLCBpdHMgbmVlZGVkIGJ5IHtibHVlQnJpZ2h0ICR7am9iLm5hbWV9fSwgYW5kIG5vdCBzcGVjaWZpZWQgaW4gLS1tYW51YWxgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRvV2FpdEZvci5wdXNoKGopO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0b1dhaXRGb3I7XG4gICAgfVxuXG4gICAgc3RhdGljIGdldFByZXZpb3VzVG9XYWl0Rm9yIChqb2JzOiBSZWFkb25seUFycmF5PEpvYj4sIHN0YWdlczogcmVhZG9ubHkgc3RyaW5nW10sIGpvYjogSm9iKSB7XG4gICAgICAgIGNvbnN0IHByZXZpb3VzVG9XYWl0Rm9yOiBKb2JbXSA9IFtdO1xuICAgICAgICBjb25zdCBzdGFnZUluZGV4ID0gc3RhZ2VzLmluZGV4T2Yoam9iLnN0YWdlKTtcbiAgICAgICAgY29uc3QgcGFzdFN0YWdlcyA9IHN0YWdlcy5zbGljZSgwLCBzdGFnZUluZGV4KTtcbiAgICAgICAgcGFzdFN0YWdlcy5mb3JFYWNoKChwYXN0U3RhZ2UpID0+IHtcbiAgICAgICAgICAgIHByZXZpb3VzVG9XYWl0Rm9yLnB1c2goLi4uWy4uLmpvYnMudmFsdWVzKCldLmZpbHRlcihqID0+IGouc3RhZ2UgPT09IHBhc3RTdGFnZSkpO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHByZXZpb3VzVG9XYWl0Rm9yO1xuICAgIH1cbn1cbiJdfQ==
133
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhlY3V0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJleGVjdXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLGtEQUEwQjtBQUUxQixpREFBOEM7QUFHOUMsTUFBYSxRQUFRO0lBRWpCLE1BQU0sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFFLElBQVUsRUFBRSxJQUF3QixFQUFFLE1BQXlCLEVBQUUsaUJBQXdCO1FBQzNHLElBQUksZUFBZSxHQUFHLEVBQUUsQ0FBQztRQUV6QixHQUFHO1lBQ0MsTUFBTSxRQUFRLEdBQUcsRUFBRSxDQUFDO1lBQ3BCLGVBQWUsR0FBRyxRQUFRLENBQUMsa0JBQWtCLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRSxpQkFBaUIsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDNUYsS0FBSyxNQUFNLENBQUMsSUFBSSxlQUFlLEVBQUU7Z0JBQzdCLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7YUFDNUI7WUFDRCxNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7U0FDL0IsUUFBUSxlQUFlLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtJQUN6QyxDQUFDO0lBRUQsTUFBTSxDQUFDLGtCQUFrQixDQUFFLElBQXdCLEVBQUUsTUFBeUIsRUFBRSxpQkFBaUMsRUFBRSxPQUFpQjtRQUNoSSxNQUFNLGVBQWUsR0FBRyxFQUFFLENBQUM7UUFFM0IsS0FBSyxNQUFNLEdBQUcsSUFBSSxDQUFDLEdBQUcsSUFBSSxHQUFHLENBQU0saUJBQWlCLENBQUMsQ0FBQyxFQUFFO1lBQ3BELElBQUksR0FBRyxDQUFDLE9BQU87Z0JBQUUsU0FBUztZQUUxQixNQUFNLGFBQWEsR0FBRyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsT0FBTyxDQUFDLENB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e0pvYn0gZnJvbSBcIi4vam9iXCI7XG5pbXBvcnQgYXNzZXJ0LCB7QXNzZXJ0aW9uRXJyb3J9IGZyb20gXCJhc3NlcnRcIjtcbmltcG9ydCB7QXJndn0gZnJvbSBcIi4vYXJndlwiO1xuXG5leHBvcnQgY2xhc3MgRXhlY3V0b3Ige1xuXG4gICAgc3RhdGljIGFzeW5jIHJ1bkxvb3AgKGFyZ3Y6IEFyZ3YsIGpvYnM6IFJlYWRvbmx5QXJyYXk8Sm9iPiwgc3RhZ2VzOiByZWFkb25seSBzdHJpbmdbXSwgcG90ZW50aWFsU3RhcnRlcnM6IEpvYltdKSB7XG4gICAgICAgIGxldCBzdGFydENhbmRpZGF0ZXMgPSBbXTtcblxuICAgICAgICBkbyB7XG4gICAgICAgICAgICBjb25zdCBwcm9taXNlcyA9IFtdO1xuICAgICAgICAgICAgc3RhcnRDYW5kaWRhdGVzID0gRXhlY3V0b3IuZ2V0U3RhcnRDYW5kaWRhdGVzKGpvYnMsIHN0YWdlcywgcG90ZW50aWFsU3RhcnRlcnMsIGFyZ3YubWFudWFsKTtcbiAgICAgICAgICAgIGZvciAoY29uc3QgcyBvZiBzdGFydENhbmRpZGF0ZXMpIHtcbiAgICAgICAgICAgICAgICBwcm9taXNlcy5wdXNoKHMuc3RhcnQoKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBhd2FpdCBQcm9taXNlLmFsbChwcm9taXNlcyk7XG4gICAgICAgIH0gd2hpbGUgKHN0YXJ0Q2FuZGlkYXRlcy5sZW5ndGggPiAwKTtcbiAgICB9XG5cbiAgICBzdGF0aWMgZ2V0U3RhcnRDYW5kaWRhdGVzIChqb2JzOiBSZWFkb25seUFycmF5PEpvYj4sIHN0YWdlczogcmVhZG9ubHkgc3RyaW5nW10sIHBvdGVudGlhbFN0YXJ0ZXJzOiByZWFkb25seSBKb2JbXSwgbWFudWFsczogc3RyaW5nW10pIHtcbiAgICAgICAgY29uc3Qgc3RhcnRDYW5kaWRhdGVzID0gW107XG5cbiAgICAgICAgZm9yIChjb25zdCBqb2Igb2YgWy4uLm5ldyBTZXQ8Sm9iPihwb3RlbnRpYWxTdGFydGVycyldKSB7XG4gICAgICAgICAgICBpZiAoam9iLnN0YXJ0ZWQpIGNvbnRpbnVlO1xuXG4gICAgICAgICAgICBjb25zdCBqb2JzVG9XYWl0Rm9yID0gRXhlY3V0b3IuZ2V0UGFzdFRvV2FpdEZvcihqb2JzLCBzdGFnZXMsIGpvYiwgbWFudWFscyk7XG4gICAgICAgICAgICBpZiAoRXhlY3V0b3IuaXNOb3RGaW5pc2hlZChqb2JzVG9XYWl0Rm9yKSkge1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGpvYi53aGVuID09PSBcIm9uX3N1Y2Nlc3NcIiAmJiBFeGVjdXRvci5pc1Bhc3RGYWlsZWQoam9ic1RvV2FpdEZvcikpIHtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChqb2Iud2hlbiA9PT0gXCJtYW51YWxcIiAmJiBFeGVjdXRvci5pc1Bhc3RGYWlsZWQoam9ic1RvV2FpdEZvcikpIHtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChqb2Iud2hlbiA9PT0gXCJvbl9mYWlsdXJlXCIgJiYgIUV4ZWN1dG9yLmlzUGFzdEZhaWxlZChqb2JzVG9XYWl0Rm9yKSkge1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBzdGFydENhbmRpZGF0ZXMucHVzaChqb2IpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzdGFydENhbmRpZGF0ZXM7XG4gICAgfVxuXG4gICAgc3RhdGljIGlzUGFzdEZhaWxlZCAoam9ic1RvV2FpdEZvcjogUmVhZG9ubHlBcnJheTxKb2I+KSB7XG4gICAgICAgIGNvbnN0IGZhaWxKb2JzID0gam9ic1RvV2FpdEZvci5maWx0ZXIoaiA9PiB7XG4gICAgICAgICAgICBpZiAoai5hbGxvd0ZhaWx1cmUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gKGoucHJlU2NyaXB0c0V4aXRDb2RlID8gai5wcmVTY3JpcHRzRXhpdENvZGUgOiAwKSA+IDA7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gZmFpbEpvYnMubGVuZ3RoID4gMDtcbiAgICB9XG5cbiAgICBzdGF0aWMgaXNOb3RGaW5pc2hlZCAoam9ic1RvV2FpdEZvcjogUmVhZG9ubHlBcnJheTxKb2I+KSB7XG4gICAgICAgIGNvbnN0IG5vdEZpbmlzaGVkSm9icyA9IGpvYnNUb1dhaXRGb3IuZmlsdGVyKGogPT4gIWouZmluaXNoZWQpO1xuICAgICAgICByZXR1cm4gbm90RmluaXNoZWRKb2JzLmxlbmd0aCA+IDA7XG4gICAgfVxuXG4gICAgc3RhdGljIGdldEZhaWxlZCAoam9iczogUmVhZG9ubHlBcnJheTxKb2I+KSB7XG4gICAgICAgIHJldHVybiBqb2JzLmZpbHRlcihqID0+IGouZmluaXNoZWQgJiYgIWouYWxsb3dGYWlsdXJlICYmIChqLnByZVNjcmlwdHNFeGl0Q29kZSA/PyAwKSA+IDApO1xuICAgIH1cblxuICAgIHN0YXRpYyBnZXRQYXN0VG9XYWl0Rm9yIChqb2JzOiBSZWFkb25seUFycmF5PEpvYj4sIHN0YWdlczogcmVhZG9ubHkgc3RyaW5nW10sIGpvYjogSm9iLCBtYW51YWxzOiBzdHJpbmdbXSkge1xuICAgICAgICBjb25zdCBqb2JzVG9XYWl0Rm9yU2V0ID0gbmV3IFNldDxKb2I+KCk7XG4gICAgICAgIGxldCB3YWl0Rm9yTG9vcEFycmF5OiBKb2JbXSA9IFtqb2JdO1xuXG4gICAgICAgIHdoaWxlICh3YWl0Rm9yTG9vcEFycmF5Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGNvbnN0IGxvb3BKb2IgPSB3YWl0Rm9yTG9vcEFycmF5LnBvcCgpO1xuICAgICAgICAgICAgYXNzZXJ0KGxvb3BKb2IgIT0gbnVsbCwgXCJKb2Igbm90IGZvdW5kIGluIGdldFBhc3RUb1dhaXRGb3IsIHNob3VsZCBiZSBpbXBvc3NpYmxlIVwiKTtcbiAgICAgICAgICAgIGlmIChsb29wSm9iLm5lZWRzKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgbmVlZGVkVG9XYWl0Rm9yID0gdGhpcy5nZXROZWVkZWRUb1dhaXRGb3Ioam9icywgbWFudWFscywgbG9vcEpvYik7XG4gICAgICAgICAgICAgICAgd2FpdEZvckxvb3BBcnJheS5wdXNoKC4uLm5lZWRlZFRvV2FpdEZvcik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvbnN0IHByZXZpb3VzVG9XYWl0Rm9yID0gdGhpcy5nZXRQcmV2aW91c1RvV2FpdEZvcihqb2JzLCBzdGFnZXMsIGxvb3BKb2IpO1xuICAgICAgICAgICAgICAgIHdhaXRGb3JMb29wQXJyYXkgPSB3YWl0Rm9yTG9vcEFycmF5LmNvbmNhdChwcmV2aW91c1RvV2FpdEZvcik7XG4gICAgICAgICAgICAgICAgd2FpdEZvckxvb3BBcnJheSA9IHdhaXRGb3JMb29wQXJyYXkuZmlsdGVyKGogPT4gai53aGVuICE9PSBcIm5ldmVyXCIpO1xuICAgICAgICAgICAgICAgIHdhaXRGb3JMb29wQXJyYXkgPSB3YWl0Rm9yTG9vcEFycmF5LmZpbHRlcihqID0+IGoud2hlbiAhPT0gXCJtYW51YWxcIiB8fCBtYW51YWxzLmluY2x1ZGVzKGoubmFtZSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgd2FpdEZvckxvb3BBcnJheS5mb3JFYWNoKGogPT4gam9ic1RvV2FpdEZvclNldC5hZGQoaikpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBbLi4uam9ic1RvV2FpdEZvclNldF07XG4gICAgfVxuXG4gICAgc3RhdGljIGdldE5lZWRlZFRvV2FpdEZvciAoam9iczogUmVhZG9ubHlBcnJheTxKb2I+LCBtYW51YWxzOiBzdHJpbmdbXSwgam9iOiBKb2IpIHtcbiAgICAgICAgY29uc3QgdG9XYWl0Rm9yID0gW107XG4gICAgICAgIGFzc2VydChqb2IubmVlZHMgIT0gbnVsbCwgY2hhbGtgJHtqb2IubmFtZX0ubmVlZHMgY2Fubm90IGJlIG51bGwgaW4gZ2V0TmVlZGVkVG9XYWl0Rm9yYCk7XG4gICAgICAgIGZvciAoY29uc3QgbmVlZCBvZiBqb2IubmVlZHMpIHtcbiAgICAgICAgICAgIGNvbnN0IGJhc2VKb2JzID0gam9icy5maWx0ZXIoaiA9PiBqLmJhc2VOYW1lID09PSBuZWVkLmpvYik7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGogb2YgYmFzZUpvYnMpIHtcbiAgICAgICAgICAgICAgICBpZiAoai53aGVuID09PSBcIm5ldmVyXCIgJiYgIW5lZWQub3B0aW9uYWwpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEFzc2VydGlvbkVycm9yKHttZXNzYWdlOiBjaGFsa2B7Ymx1ZUJyaWdodCAke2oubmFtZX19IGlzIHdoZW46bmV2ZXIsIGJ1dCBpdHMgbmVlZGVkIGJ5IHtibHVlQnJpZ2h0ICR7am9iLm5hbWV9fWB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGoud2hlbiA9PT0gXCJuZXZlclwiICYmIG5lZWQub3B0aW9uYWwpIHtcbiAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChqLndoZW4gPT09IFwibWFudWFsXCIgJiYgIW1hbnVhbHMuaW5jbHVkZXMoai5uYW1lKSkge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgQXNzZXJ0aW9uRXJyb3Ioe21lc3NhZ2U6IGNoYWxrYHtibHVlQnJpZ2h0ICR7ai5uYW1lfX0gaXMgd2hlbjptYW51YWwsIGl0cyBuZWVkZWQgYnkge2JsdWVCcmlnaHQgJHtqb2IubmFtZX19LCBhbmQgbm90IHNwZWNpZmllZCBpbiAtLW1hbnVhbGB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdG9XYWl0Rm9yLnB1c2goaik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRvV2FpdEZvcjtcbiAgICB9XG5cbiAgICBzdGF0aWMgZ2V0UHJldmlvdXNUb1dhaXRGb3IgKGpvYnM6IFJlYWRvbmx5QXJyYXk8Sm9iPiwgc3RhZ2VzOiByZWFkb25seSBzdHJpbmdbXSwgam9iOiBKb2IpIHtcbiAgICAgICAgY29uc3QgcHJldmlvdXNUb1dhaXRGb3I6IEpvYltdID0gW107XG4gICAgICAgIGNvbnN0IHN0YWdlSW5kZXggPSBzdGFnZXMuaW5kZXhPZihqb2Iuc3RhZ2UpO1xuICAgICAgICBjb25zdCBwYXN0U3RhZ2VzID0gc3RhZ2VzLnNsaWNlKDAsIHN0YWdlSW5kZXgpO1xuICAgICAgICBwYXN0U3RhZ2VzLmZvckVhY2goKHBhc3RTdGFnZSkgPT4ge1xuICAgICAgICAgICAgcHJldmlvdXNUb1dhaXRGb3IucHVzaCguLi5bLi4uam9icy52YWx1ZXMoKV0uZmlsdGVyKGogPT4gai5zdGFnZSA9PT0gcGFzdFN0YWdlKSk7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gcHJldmlvdXNUb1dhaXRGb3I7XG4gICAgfVxufVxuIl19
package/src/handler.js CHANGED
@@ -79,6 +79,9 @@ async function handler(args, writeStreams) {
79
79
  process.exit(1);
80
80
  }
81
81
  });
82
+ process.on("exit", (_, code) => {
83
+ cleanupResources(parser).finally(process.exit(code));
84
+ });
82
85
  process.on("SIGINT", (_, code) => {
83
86
  cleanupResources(parser).finally(process.exit(code));
84
87
  });
@@ -161,4 +164,4 @@ async function handler(args, writeStreams) {
161
164
  return parser.jobs;
162
165
  }
163
166
  exports.handler = handler;
164
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGFuZGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImhhbmRsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSw4Q0FBZ0M7QUFDaEMsa0RBQTBCO0FBQzFCLDZDQUErQjtBQUMvQiw2Q0FBK0I7QUFDL0IsMkNBQXNDO0FBQ3RDLHFDQUFnQztBQUNoQywrQ0FBaUM7QUFDakMsa0VBQXlDO0FBRXpDLCtCQUEwQjtBQUMxQixtQ0FBOEI7QUFDOUIsaUNBQTRCO0FBQzVCLGlEQUE4QztBQUU5QyxNQUFNLGlCQUFpQixHQUFHLENBQUMsR0FBVyxFQUFFLFFBQWdCLEVBQUUsRUFBRTtJQUN4RCxNQUFNLGlCQUFpQixHQUFHLEdBQUcsR0FBRyxJQUFJLFFBQVEsYUFBYSxDQUFDO0lBQzFELE1BQU0sZ0JBQWdCLEdBQUcsa0JBQWtCLENBQUM7SUFDNUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsaUJBQWlCLENBQUMsRUFBRTtRQUNuQyxFQUFFLENBQUMsY0FBYyxDQUFDLGlCQUFpQixFQUFFLGdCQUFnQixDQUFDLENBQUM7S0FDMUQ7QUFDTCxDQUFDLENBQUM7QUFFRixNQUFNLGdCQUFnQixHQUFHLEtBQUssRUFBRSxNQUFxQixFQUFFLEVBQUU7SUFDckQsSUFBSSxDQUFDLE1BQU0sRUFBRTtRQUNULE9BQU87S0FDVjtJQUNELE1BQU0sUUFBUSxHQUFHLEVBQUUsQ0FBQztJQUNwQixLQUFLLE1BQU0sR0FBRyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEVBQUU7UUFDcEMsUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDO0tBQ3pDO0lBQ0QsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQ2hDLENBQUMsQ0FBQztBQUVLLEtBQUssVUFBVSxPQUFPLENBQUUsSUFBUyxFQUFFLFlBQTBCO0lB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QkFBaUIsQ0FBQyxHQUFHLEVBQUUsUUFBUSxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBQ3hELE1BQU0scUJBQVMsQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRSxZQUFZLENBQUMsQ0FBQztRQUN4RCxZQUFZLENBQUMsTUFBTSxDQUFDLElBQUEsZUFBSyxFQUFBLHFDQUFxQyxJQUFBLHVCQUFZLEVBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztLQUMxRztJQUNELFlBQVksQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUVyQixNQUFNLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQy9CLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQztBQUN2QixDQUFDO0FBckdELDBCQXFHQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHlhbWwgZnJvbSBcImpzLXlhbWxcIjtcbmltcG9ydCBjaGFsayBmcm9tIFwiY2hhbGtcIjtcbmltcG9ydCAqIGFzIGZzIGZyb20gXCJmcy1leHRyYVwiO1xuaW1wb3J0ICogYXMgeWFyZ3MgZnJvbSBcInlhcmdzXCI7XG5pbXBvcnQge0NvbW1hbmRlcn0gZnJvbSBcIi4vY29tbWFuZGVyXCI7XG5pbXBvcnQge1BhcnNlcn0gZnJvbSBcIi4vcGFyc2VyXCI7XG5pbXBvcnQgKiBhcyBzdGF0ZSBmcm9tIFwiLi9zdGF0ZVwiO1xuaW1wb3J0IHByZXR0eUhydGltZSBmcm9tIFwicHJldHR5LWhydGltZVwiO1xuaW1wb3J0IHtXcml0ZVN0cmVhbXN9IGZyb20gXCIuL3dyaXRlLXN0cmVhbXNcIjtcbmltcG9ydCB7Sm9ifSBmcm9tIFwiLi9qb2JcIjtcbmltcG9ydCB7VXRpbHN9IGZyb20gXCIuL3V0aWxzXCI7XG5pbXBvcnQge0FyZ3Z9IGZyb20gXCIuL2FyZ3ZcIjtcbmltcG9ydCBhc3NlcnQsIHtBc3NlcnRpb25FcnJvcn0gZnJvbSBcImFzc2VydFwiO1xuXG5jb25zdCBnZW5lcmF0ZUdpdElnbm9yZSA9IChjd2Q6IHN0cmluZywgc3RhdGVEaXI6IHN0cmluZykgPT4ge1xuICAgIGNvbnN0IGdpdElnbm9yZUZpbGVQYXRoID0gYCR7Y3dkfS8ke3N0YXRlRGlyfS8uZ2l0aWdub3JlYDtcbiAgICBjb25zdCBnaXRJZ25vcmVDb250ZW50ID0gXCIqXFxuIS5naXRpZ25vcmVcXG5cIjtcbiAgICBpZiAoIWZzLmV4aXN0c1N5bmMoZ2l0SWdub3JlRmlsZVBhdGgpKSB7XG4gICAgICAgIGZzLm91dHB1dEZpbGVTeW5jKGdpdElnbm9yZUZpbGVQYXRoLCBnaXRJZ25vcmVDb250ZW50KTtcbiAgICB9XG59O1xuXG5jb25zdCBjbGVhbnVwUmVzb3VyY2VzID0gYXN5bmMgKHBhcnNlcjogUGFyc2VyIHwgbnVsbCkgPT4ge1xuICAgIGlmICghcGFyc2VyKSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgcHJvbWlzZXMgPSBbXTtcbiAgICBmb3IgKGNvbnN0IGpvYiBvZiBwYXJzZXIuam9icy52YWx1ZXMoKSkge1xuICAgICAgICBwcm9taXNlcy5wdXNoKGpvYi5jbGVhbnVwUmVzb3VyY2VzKCkpO1xuICAgIH1cbiAgICBhd2FpdCBQcm9taXNlLmFsbChwcm9taXNlcyk7XG59O1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gaGFuZGxlciAoYXJnczogYW55LCB3cml0ZVN0cmVhbXM6IFdyaXRlU3RyZWFtcyk6IFByb21pc2U8UmVhZG9ubHlBcnJheTxKb2I+PiB7XG4gICAgY29uc3QgYXJndiA9IG5ldyBBcmd2KGFyZ3MpO1xuICAgIGNvbnN0IGN3ZCA9IGFyZ3YuY3dkO1xuICAgIGNvbnN0IHN0YXRlRGlyID0gYXJndi5zdGF0ZURpcjtcbiAgICBjb25zdCBmaWxlID0gYXJndi5maWxlO1xuICAgIGxldCBwYXJzZXI6IFBhcnNlciB8IG51bGwgPSBudWxsO1xuXG4gICAgcHJvY2Vzcy5vbihcInVuaGFuZGxlZFJlamVjdGlvblwiLCAoZSkgPT4ge1xuICAgICAgICBpZiAoZSBpbnN0YW5jZW9mIEFzc2VydGlvbkVycm9yKSB7XG4gICAgICAgICAgICBwcm9jZXNzLnN0ZGVyci53cml0ZShjaGFsa2B7cmVkICR7ZS5tZXNzYWdlLnRyaW0oKX19XFxuYCk7XG4gICAgICAgIH0gZWxzZSBpZiAoZSBpbnN0YW5jZW9mIEVycm9yKSB7XG4gICAgICAgICAgICBwcm9jZXNzLnN0ZGVyci53cml0ZShjaGFsa2B7cmVkICR7ZS5zdGFjaz8udHJpbSgpID8/IGUubWVzc2FnZS50cmltKCl9fVxcbmApO1xuICAgICAgICB9IGVsc2UgaWYgKGUpIHtcbiAgICAgICAgICAgIHByb2Nlc3Muc3RkZXJyLndyaXRlKGNoYWxrYHtyZWQgJHtlLnRvU3RyaW5nKCkudHJpbSgpfX1cXG5gKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocGFyc2VyKSB7XG4gICAgICAgICAgICBjbGVhbnVwUmVzb3VyY2VzKHBhcnNlcikuZmluYWxseShwcm9jZXNzLmV4aXQoMSkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcHJvY2Vzcy5leGl0KDEpO1xuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICBwcm9jZXNzLm9uKFwiU0lHSU5UXCIsIChfOiBzdHJpbmcsIGNvZGU6IG51bWJlcikgPT4ge1xuICAgICAgICBjbGVhbnVwUmVzb3VyY2VzKHBhcnNlcikuZmluYWxseShwcm9jZXNzLmV4aXQoY29kZSkpO1xuICAgIH0pO1xuXG4gICAgaWYgKGFyZ3YuY29tcGxldGlvbikge1xuICAgICAgICB5YXJncy5zaG93Q29tcGxldGlvblNjcmlwdCgpO1xuICAgICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgYXNzZXJ0KGZzLmV4aXN0c1N5bmMoYCR7Y3dkfS8ke2ZpbGV9YCksIGAke2N3ZH0vJHtmaWxlfSBjb3VsZCBub3QgYmUgZm91bmRgKTtcblxuICAgIGlmIChhcmd2LmZldGNoSW5jbHVkZXMpIHtcbiAgICAgICAgcGFyc2VyID0gYXdhaXQgUGFyc2VyLmNyZWF0ZShhcmd2LCB3cml0ZVN0cmVhbXMsIDApO1xuICAgICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgaWYgKGFyZ3YucHJldmlldykge1xuICAgICAgICBjb25zdCBwaXBlbGluZUlpZCA9IGF3YWl0IHN0YXRlLmdldFBpcGVsaW5lSWlkKGN3ZCwgc3RhdGVEaXIpO1xuICAgICAgICBwYXJzZXIgPSBhd2FpdCBQYXJzZXIuY3JlYXRlKGFyZ3YsIHdyaXRlU3RyZWFtcywgcGlwZWxpbmVJaWQpO1xuICAgICAgICBjb25zdCBnaXRsYWJEYXRhID0gcGFyc2VyLmdpdGxhYkRhdGE7XG4gICAgICAgIGZvciAoY29uc3Qgam9iTmFtZSBvZiBPYmplY3Qua2V5cyhnaXRsYWJEYXRhKSkge1xuICAgICAgICAgICAgaWYgKGpvYk5hbWUgPT09IFwic3RhZ2VzXCIpIHtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChKb2IuaWxsZWdhbEpvYk5hbWVzLmhhcyhqb2JOYW1lKSB8fCBqb2JOYW1lLnN0YXJ0c1dpdGgoXCIuXCIpKSB7XG4gICAgICAgICAgICAgICAgZGVsZXRlIGdpdGxhYkRhdGFbam9iTmFtZV07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgd3JpdGVTdHJlYW1zLnN0ZG91dChgLS0tXFxuJHt5YW1sLmR1bXAoZ2l0bGFiRGF0YSwge2xpbmVXaWR0aDogMTYwfSl9YCk7XG4gICAgfSBlbHNlIGlmIChhcmd2Lmxpc3QgfHwgYXJndi5saXN0QWxsKSB7XG4gICAgICAgIGNvbnN0IHBpcGVsaW5lSWlkID0gYXdhaXQgc3RhdGUuZ2V0UGlwZWxpbmVJaWQoY3dkLCBzdGF0ZURpcik7XG4gICAgICAgIHBhcnNlciA9IGF3YWl0IFBhcnNlci5jcmVhdGUoYXJndiwgd3JpdGVTdHJlYW1zLCBwaXBlbGluZUlpZCk7XG4gICAgICAgIENvbW1hbmRlci5ydW5MaXN0KHBhcnNlciwgd3JpdGVTdHJlYW1zLCBhcmd2Lmxpc3RBbGwpO1xuICAgIH0gZWxzZSBpZiAoYXJndi5saXN0SnNvbikge1xuICAgICAgICBjb25zdCBwaXBlbGluZUlpZCA9IGF3YWl0IHN0YXRlLmdldFBpcGVsaW5lSWlkKGN3ZCwgc3RhdGVEaXIpO1xuICAgICAgICBwYXJzZXIgPSBhd2FpdCBQYXJzZXIuY3JlYXRlKGFyZ3YsIHdyaXRlU3RyZWFtcywgcGlwZWxpbmVJaWQpO1xuICAgICAgICBDb21tYW5kZXIucnVuSnNvbihwYXJzZXIsIHdyaXRlU3RyZWFtcyk7XG4gICAgfSBlbHNlIGlmIChhcmd2Lmxpc3RDc3YgfHwgYXJndi5saXN0Q3N2QWxsKSB7XG4gICAgICAgIGNvbnN0IHBpcGVsaW5lSWlkID0gYXdhaXQgc3RhdGUuZ2V0UGlwZWxpbmVJaWQoY3dkLCBzdGF0ZURpcik7XG4gICAgICAgIHBhcnNlciA9IGF3YWl0IFBhcnNlci5jcmVhdGUoYXJndiwgd3JpdGVTdHJlYW1zLCBwaXBlbGluZUlpZCk7XG4gICAgICAgIENvbW1hbmRlci5ydW5Dc3YocGFyc2VyLCB3cml0ZVN0cmVhbXMsIGFyZ3YubGlzdENzdkFsbCk7XG4gICAgfSBlbHNlIGlmIChhcmd2LmpvYi5sZW5ndGggPiAwKSB7XG4gICAgICAgIGFzc2VydChhcmd2LnN0YWdlID09IG51bGwsIFwiWW91IGNhbm5vdCB1c2UgLS1zdGFnZSB3aGVuIHN0YXJ0aW5nIGluZGl2aWR1YWwgam9ic1wiKTtcbiAgICAgICAgZ2VuZXJhdGVHaXRJZ25vcmUoY3dkLCBzdGF0ZURpcik7XG4gICAgICAgIGNvbnN0IHRpbWUgPSBwcm9jZXNzLmhydGltZSgpO1xuICAgICAgICBpZiAoYXJndi5uZWVkcyB8fCBhcmd2Lm9ubHlOZWVkcykge1xuICAgICAgICAgICAgYXdhaXQgZnMucmVtb3ZlKGAke2N3ZH0vJHtzdGF0ZURpcn0vYXJ0aWZhY3RzYCk7XG4gICAgICAgICAgICBhd2FpdCBzdGF0ZS5pbmNyZW1lbnRQaXBlbGluZUlpZChjd2QsIHN0YXRlRGlyKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBwaXBlbGluZUlpZCA9IGF3YWl0IHN0YXRlLmdldFBpcGVsaW5lSWlkKGN3ZCwgc3RhdGVEaXIpO1xuICAgICAgICBwYXJzZXIgPSBhd2FpdCBQYXJzZXIuY3JlYXRlKGFyZ3YsIHdyaXRlU3RyZWFtcywgcGlwZWxpbmVJaWQpO1xuICAgICAgICBhd2FpdCBVdGlscy5yc3luY1RyYWNrZWRGaWxlcyhjd2QsIHN0YXRlRGlyLCBcIi5kb2NrZXJcIik7XG4gICAgICAgIGF3YWl0IENvbW1hbmRlci5ydW5Kb2JzKGFyZ3YsIHBhcnNlciwgd3JpdGVTdHJlYW1zKTtcbiAgICAgICAgaWYgKGFyZ3YubmVlZHMgfHwgYXJndi5vbmx5TmVlZHMpIHtcbiAgICAgICAgICAgIHdyaXRlU3RyZWFtcy5zdGRlcnIoY2hhbGtge2dyZXkgcGlwZWxpbmUgZmluaXNoZWR9IGluIHtncmV5ICR7cHJldHR5SHJ0aW1lKHByb2Nlc3MuaHJ0aW1lKHRpbWUpKX19XFxuYCk7XG4gICAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGFyZ3Yuc3RhZ2UpIHtcbiAgICAgICAgZ2VuZXJhdGVHaXRJZ25vcmUoY3dkLCBzdGF0ZURpcik7XG4gICAgICAgIGNvbnN0IHRpbWUgPSBwcm9jZXNzLmhydGltZSgpO1xuICAgICAgICBjb25zdCBwaXBlbGluZUlpZCA9IGF3YWl0IHN0YXRlLmdldFBpcGVsaW5lSWlkKGN3ZCwgc3RhdGVEaXIpO1xuICAgICAgICBwYXJzZXIgPSBhd2FpdCBQYXJzZXIuY3JlYXRlKGFyZ3YsIHdyaXRlU3RyZWFtcywgcGlwZWxpbmVJaWQpO1xuICAgICAgICBhd2FpdCBVdGlscy5yc3luY1RyYWNrZWRGaWxlcyhjd2QsIHN0YXRlRGlyLCBcIi5kb2NrZXJcIik7XG4gICAgICAgIGF3YWl0IENvbW1hbmRlci5ydW5Kb2JzSW5TdGFnZShhcmd2LCBwYXJzZXIsIHdyaXRlU3RyZWFtcyk7XG4gICAgICAgIHdyaXRlU3RyZWFtcy5zdGRlcnIoY2hhbGtge2dyZXkgcGlwZWxpbmUgZmluaXNoZWR9IGluIHtncmV5ICR7cHJldHR5SHJ0aW1lKHByb2Nlc3MuaHJ0aW1lKHRpbWUpKX19XFxuYCk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgZ2VuZXJhdGVHaXRJZ25vcmUoY3dkLCBzdGF0ZURpcik7XG4gICAgICAgIGNvbnN0IHRpbWUgPSBwcm9jZXNzLmhydGltZSgpO1xuICAgICAgICBhd2FpdCBmcy5yZW1vdmUoYCR7Y3dkfS8ke3N0YXRlRGlyfS9hcnRpZmFjdHNgKTtcbiAgICAgICAgYXdhaXQgc3RhdGUuaW5jcmVtZW50UGlwZWxpbmVJaWQoY3dkLCBzdGF0ZURpcik7XG4gICAgICAgIGNvbnN0IHBpcGVsaW5lSWlkID0gYXdhaXQgc3RhdGUuZ2V0UGlwZWxpbmVJaWQoY3dkLCBzdGF0ZURpcik7XG4gICAgICAgIHBhcnNlciA9IGF3YWl0IFBhcnNlci5jcmVhdGUoYXJndiwgd3JpdGVTdHJlYW1zLCBwaXBlbGluZUlpZCk7XG4gICAgICAgIGF3YWl0IFV0aWxzLnJzeW5jVHJhY2tlZEZpbGVzKGN3ZCwgc3RhdGVEaXIsIFwiLmRvY2tlclwiKTtcbiAgICAgICAgYXdhaXQgQ29tbWFuZGVyLnJ1blBpcGVsaW5lKGFyZ3YsIHBhcnNlciwgd3JpdGVTdHJlYW1zKTtcbiAgICAgICAgd3JpdGVTdHJlYW1zLnN0ZGVycihjaGFsa2B7Z3JleSBwaXBlbGluZSBmaW5pc2hlZH0gaW4ge2dyZXkgJHtwcmV0dHlIcnRpbWUocHJvY2Vzcy5ocnRpbWUodGltZSkpfX1cXG5gKTtcbiAgICB9XG4gICAgd3JpdGVTdHJlYW1zLmZsdXNoKCk7XG5cbiAgICBhd2FpdCBjbGVhbnVwUmVzb3VyY2VzKHBhcnNlcik7XG4gICAgcmV0dXJuIHBhcnNlci5qb2JzO1xufVxuXG4iXX0=
167
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGFuZGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImhhbmRsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSw4Q0FBZ0M7QUFDaEMsa0RBQTBCO0FBQzFCLDZDQUErQjtBQUMvQiw2Q0FBK0I7QUFDL0IsMkNBQXNDO0FBQ3RDLHFDQUFnQztBQUNoQywrQ0FBaUM7QUFDakMsa0VBQXlDO0FBRXpDLCtCQUEwQjtBQUMxQixtQ0FBOEI7QUFDOUIsaUNBQTRCO0FBQzVCLGlEQUE4QztBQUU5QyxNQUFNLGlCQUFpQixHQUFHLENBQUMsR0FBVyxFQUFFLFFBQWdCLEVBQUUsRUFBRTtJQUN4RCxNQUFNLGlCQUFpQixHQUFHLEdBQUcsR0FBRyxJQUFJLFFBQVEsYUFBYSxDQUFDO0lBQzFELE1BQU0sZ0JBQWdCLEdBQUcsa0JBQWtCLENBQUM7SUFDNUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsaUJBQWlCLENBQUMsRUFBRTtRQUNuQyxFQUFFLENBQUMsY0FBYyxDQUFDLGlCQUFpQixFQUFFLGdCQUFnQixDQUFDLENBQUM7S0FDMUQ7QUFDTCxDQUFDLENBQUM7QUFFRixNQUFNLGdCQUFnQixHQUFHLEtBQUssRUFBRSxNQUFxQixFQUFFLEVBQUU7SUFDckQsSUFBSSxDQUFDLE1BQU0sRUFBRTtRQUNULE9BQU87S0FDVjtJQUNELE1BQU0sUUFBUSxHQUFHLEVBQUUsQ0FBQztJQUNwQixLQUFLLE1BQU0sR0FBRyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEVBQUU7UUFDcEMsUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDO0tBQ3pDO0lBQ0QsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQ2hDLENBQUMsQ0FBQztBQUVLLEtBQUssVUFBVSxPQUFPLENBQUUsSUFBUyxFQUFFLFlBQTBCO0lB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UUFDaEQsTUFBTSxXQUFXLEdBQUcsTUFBTSxLQUFLLENBQUMsY0FBYyxDQUFDLEdBQUcsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUM5RCxNQUFNLEdBQUcsTUFBTSxlQUFNLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxZQUFZLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFDOUQsTUFBTSxhQUFLLENBQUMsaUJBQWlCLENBQUMsR0FBRyxFQUFFLFFBQVEsRUFBRSxTQUFTLENBQUMsQ0FBQztRQUN4RCxNQUFNLHFCQUFTLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxNQUFNLEVBQUUsWUFBWSxDQUFDLENBQUM7UUFDeEQsWUFBWSxDQUFDLE1BQU0sQ0FBQyxJQUFBLGVBQUssRUFBQSxxQ0FBcUMsSUFBQSx1QkFBWSxFQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7S0FDMUc7SUFDRCxZQUFZLENBQUMsS0FBSyxFQUFFLENBQUM7SUFFckIsTUFBTSxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMvQixPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUM7QUFDdkIsQ0FBQztBQXpHRCwwQkF5R0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyB5YW1sIGZyb20gXCJqcy15YW1sXCI7XG5pbXBvcnQgY2hhbGsgZnJvbSBcImNoYWxrXCI7XG5pbXBvcnQgKiBhcyBmcyBmcm9tIFwiZnMtZXh0cmFcIjtcbmltcG9ydCAqIGFzIHlhcmdzIGZyb20gXCJ5YXJnc1wiO1xuaW1wb3J0IHtDb21tYW5kZXJ9IGZyb20gXCIuL2NvbW1hbmRlclwiO1xuaW1wb3J0IHtQYXJzZXJ9IGZyb20gXCIuL3BhcnNlclwiO1xuaW1wb3J0ICogYXMgc3RhdGUgZnJvbSBcIi4vc3RhdGVcIjtcbmltcG9ydCBwcmV0dHlIcnRpbWUgZnJvbSBcInByZXR0eS1ocnRpbWVcIjtcbmltcG9ydCB7V3JpdGVTdHJlYW1zfSBmcm9tIFwiLi93cml0ZS1zdHJlYW1zXCI7XG5pbXBvcnQge0pvYn0gZnJvbSBcIi4vam9iXCI7XG5pbXBvcnQge1V0aWxzfSBmcm9tIFwiLi91dGlsc1wiO1xuaW1wb3J0IHtBcmd2fSBmcm9tIFwiLi9hcmd2XCI7XG5pbXBvcnQgYXNzZXJ0LCB7QXNzZXJ0aW9uRXJyb3J9IGZyb20gXCJhc3NlcnRcIjtcblxuY29uc3QgZ2VuZXJhdGVHaXRJZ25vcmUgPSAoY3dkOiBzdHJpbmcsIHN0YXRlRGlyOiBzdHJpbmcpID0+IHtcbiAgICBjb25zdCBnaXRJZ25vcmVGaWxlUGF0aCA9IGAke2N3ZH0vJHtzdGF0ZURpcn0vLmdpdGlnbm9yZWA7XG4gICAgY29uc3QgZ2l0SWdub3JlQ29udGVudCA9IFwiKlxcbiEuZ2l0aWdub3JlXFxuXCI7XG4gICAgaWYgKCFmcy5leGlzdHNTeW5jKGdpdElnbm9yZUZpbGVQYXRoKSkge1xuICAgICAgICBmcy5vdXRwdXRGaWxlU3luYyhnaXRJZ25vcmVGaWxlUGF0aCwgZ2l0SWdub3JlQ29udGVudCk7XG4gICAgfVxufTtcblxuY29uc3QgY2xlYW51cFJlc291cmNlcyA9IGFzeW5jIChwYXJzZXI6IFBhcnNlciB8IG51bGwpID0+IHtcbiAgICBpZiAoIXBhcnNlcikge1xuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IHByb21pc2VzID0gW107XG4gICAgZm9yIChjb25zdCBqb2Igb2YgcGFyc2VyLmpvYnMudmFsdWVzKCkpIHtcbiAgICAgICAgcHJvbWlzZXMucHVzaChqb2IuY2xlYW51cFJlc291cmNlcygpKTtcbiAgICB9XG4gICAgYXdhaXQgUHJvbWlzZS5hbGwocHJvbWlzZXMpO1xufTtcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGhhbmRsZXIgKGFyZ3M6IGFueSwgd3JpdGVTdHJlYW1zOiBXcml0ZVN0cmVhbXMpOiBQcm9taXNlPFJlYWRvbmx5QXJyYXk8Sm9iPj4ge1xuICAgIGNvbnN0IGFyZ3YgPSBuZXcgQXJndihhcmdzKTtcbiAgICBjb25zdCBjd2QgPSBhcmd2LmN3ZDtcbiAgICBjb25zdCBzdGF0ZURpciA9IGFyZ3Yuc3RhdGVEaXI7XG4gICAgY29uc3QgZmlsZSA9IGFyZ3YuZmlsZTtcbiAgICBsZXQgcGFyc2VyOiBQYXJzZXIgfCBudWxsID0gbnVsbDtcblxuICAgIHByb2Nlc3Mub24oXCJ1bmhhbmRsZWRSZWplY3Rpb25cIiwgKGUpID0+IHtcbiAgICAgICAgaWYgKGUgaW5zdGFuY2VvZiBBc3NlcnRpb25FcnJvcikge1xuICAgICAgICAgICAgcHJvY2Vzcy5zdGRlcnIud3JpdGUoY2hhbGtge3JlZCAke2UubWVzc2FnZS50cmltKCl9fVxcbmApO1xuICAgICAgICB9IGVsc2UgaWYgKGUgaW5zdGFuY2VvZiBFcnJvcikge1xuICAgICAgICAgICAgcHJvY2Vzcy5zdGRlcnIud3JpdGUoY2hhbGtge3JlZCAke2Uuc3RhY2s/LnRyaW0oKSA/PyBlLm1lc3NhZ2UudHJpbSgpfX1cXG5gKTtcbiAgICAgICAgfSBlbHNlIGlmIChlKSB7XG4gICAgICAgICAgICBwcm9jZXNzLnN0ZGVyci53cml0ZShjaGFsa2B7cmVkICR7ZS50b1N0cmluZygpLnRyaW0oKX19XFxuYCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHBhcnNlcikge1xuICAgICAgICAgICAgY2xlYW51cFJlc291cmNlcyhwYXJzZXIpLmZpbmFsbHkocHJvY2Vzcy5leGl0KDEpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHByb2Nlc3MuZXhpdCgxKTtcbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgcHJvY2Vzcy5vbihcImV4aXRcIiwgKF86IHN0cmluZywgY29kZTogbnVtYmVyKSA9PiB7XG4gICAgICAgIGNsZWFudXBSZXNvdXJjZXMocGFyc2VyKS5maW5hbGx5KHByb2Nlc3MuZXhpdChjb2RlKSk7XG4gICAgfSk7XG5cbiAgICBwcm9jZXNzLm9uKFwiU0lHSU5UXCIsIChfOiBzdHJpbmcsIGNvZGU6IG51bWJlcikgPT4ge1xuICAgICAgICBjbGVhbnVwUmVzb3VyY2VzKHBhcnNlcikuZmluYWxseShwcm9jZXNzLmV4aXQoY29kZSkpO1xuICAgIH0pO1xuXG4gICAgaWYgKGFyZ3YuY29tcGxldGlvbikge1xuICAgICAgICB5YXJncy5zaG93Q29tcGxldGlvblNjcmlwdCgpO1xuICAgICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgYXNzZXJ0KGZzLmV4aXN0c1N5bmMoYCR7Y3dkfS8ke2ZpbGV9YCksIGAke2N3ZH0vJHtmaWxlfSBjb3VsZCBub3QgYmUgZm91bmRgKTtcblxuICAgIGlmIChhcmd2LmZldGNoSW5jbHVkZXMpIHtcbiAgICAgICAgcGFyc2VyID0gYXdhaXQgUGFyc2VyLmNyZWF0ZShhcmd2LCB3cml0ZVN0cmVhbXMsIDApO1xuICAgICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgaWYgKGFyZ3YucHJldmlldykge1xuICAgICAgICBjb25zdCBwaXBlbGluZUlpZCA9IGF3YWl0IHN0YXRlLmdldFBpcGVsaW5lSWlkKGN3ZCwgc3RhdGVEaXIpO1xuICAgICAgICBwYXJzZXIgPSBhd2FpdCBQYXJzZXIuY3JlYXRlKGFyZ3YsIHdyaXRlU3RyZWFtcywgcGlwZWxpbmVJaWQpO1xuICAgICAgICBjb25zdCBnaXRsYWJEYXRhID0gcGFyc2VyLmdpdGxhYkRhdGE7XG4gICAgICAgIGZvciAoY29uc3Qgam9iTmFtZSBvZiBPYmplY3Qua2V5cyhnaXRsYWJEYXRhKSkge1xuICAgICAgICAgICAgaWYgKGpvYk5hbWUgPT09IFwic3RhZ2VzXCIpIHtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChKb2IuaWxsZWdhbEpvYk5hbWVzLmhhcyhqb2JOYW1lKSB8fCBqb2JOYW1lLnN0YXJ0c1dpdGgoXCIuXCIpKSB7XG4gICAgICAgICAgICAgICAgZGVsZXRlIGdpdGxhYkRhdGFbam9iTmFtZV07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgd3JpdGVTdHJlYW1zLnN0ZG91dChgLS0tXFxuJHt5YW1sLmR1bXAoZ2l0bGFiRGF0YSwge2xpbmVXaWR0aDogMTYwfSl9YCk7XG4gICAgfSBlbHNlIGlmIChhcmd2Lmxpc3QgfHwgYXJndi5saXN0QWxsKSB7XG4gICAgICAgIGNvbnN0IHBpcGVsaW5lSWlkID0gYXdhaXQgc3RhdGUuZ2V0UGlwZWxpbmVJaWQoY3dkLCBzdGF0ZURpcik7XG4gICAgICAgIHBhcnNlciA9IGF3YWl0IFBhcnNlci5jcmVhdGUoYXJndiwgd3JpdGVTdHJlYW1zLCBwaXBlbGluZUlpZCk7XG4gICAgICAgIENvbW1hbmRlci5ydW5MaXN0KHBhcnNlciwgd3JpdGVTdHJlYW1zLCBhcmd2Lmxpc3RBbGwpO1xuICAgIH0gZWxzZSBpZiAoYXJndi5saXN0SnNvbikge1xuICAgICAgICBjb25zdCBwaXBlbGluZUlpZCA9IGF3YWl0IHN0YXRlLmdldFBpcGVsaW5lSWlkKGN3ZCwgc3RhdGVEaXIpO1xuICAgICAgICBwYXJzZXIgPSBhd2FpdCBQYXJzZXIuY3JlYXRlKGFyZ3YsIHdyaXRlU3RyZWFtcywgcGlwZWxpbmVJaWQpO1xuICAgICAgICBDb21tYW5kZXIucnVuSnNvbihwYXJzZXIsIHdyaXRlU3RyZWFtcyk7XG4gICAgfSBlbHNlIGlmIChhcmd2Lmxpc3RDc3YgfHwgYXJndi5saXN0Q3N2QWxsKSB7XG4gICAgICAgIGNvbnN0IHBpcGVsaW5lSWlkID0gYXdhaXQgc3RhdGUuZ2V0UGlwZWxpbmVJaWQoY3dkLCBzdGF0ZURpcik7XG4gICAgICAgIHBhcnNlciA9IGF3YWl0IFBhcnNlci5jcmVhdGUoYXJndiwgd3JpdGVTdHJlYW1zLCBwaXBlbGluZUlpZCk7XG4gICAgICAgIENvbW1hbmRlci5ydW5Dc3YocGFyc2VyLCB3cml0ZVN0cmVhbXMsIGFyZ3YubGlzdENzdkFsbCk7XG4gICAgfSBlbHNlIGlmIChhcmd2LmpvYi5sZW5ndGggPiAwKSB7XG4gICAgICAgIGFzc2VydChhcmd2LnN0YWdlID09IG51bGwsIFwiWW91IGNhbm5vdCB1c2UgLS1zdGFnZSB3aGVuIHN0YXJ0aW5nIGluZGl2aWR1YWwgam9ic1wiKTtcbiAgICAgICAgZ2VuZXJhdGVHaXRJZ25vcmUoY3dkLCBzdGF0ZURpcik7XG4gICAgICAgIGNvbnN0IHRpbWUgPSBwcm9jZXNzLmhydGltZSgpO1xuICAgICAgICBpZiAoYXJndi5uZWVkcyB8fCBhcmd2Lm9ubHlOZWVkcykge1xuICAgICAgICAgICAgYXdhaXQgZnMucmVtb3ZlKGAke2N3ZH0vJHtzdGF0ZURpcn0vYXJ0aWZhY3RzYCk7XG4gICAgICAgICAgICBhd2FpdCBzdGF0ZS5pbmNyZW1lbnRQaXBlbGluZUlpZChjd2QsIHN0YXRlRGlyKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBwaXBlbGluZUlpZCA9IGF3YWl0IHN0YXRlLmdldFBpcGVsaW5lSWlkKGN3ZCwgc3RhdGVEaXIpO1xuICAgICAgICBwYXJzZXIgPSBhd2FpdCBQYXJzZXIuY3JlYXRlKGFyZ3YsIHdyaXRlU3RyZWFtcywgcGlwZWxpbmVJaWQpO1xuICAgICAgICBhd2FpdCBVdGlscy5yc3luY1RyYWNrZWRGaWxlcyhjd2QsIHN0YXRlRGlyLCBcIi5kb2NrZXJcIik7XG4gICAgICAgIGF3YWl0IENvbW1hbmRlci5ydW5Kb2JzKGFyZ3YsIHBhcnNlciwgd3JpdGVTdHJlYW1zKTtcbiAgICAgICAgaWYgKGFyZ3YubmVlZHMgfHwgYXJndi5vbmx5TmVlZHMpIHtcbiAgICAgICAgICAgIHdyaXRlU3RyZWFtcy5zdGRlcnIoY2hhbGtge2dyZXkgcGlwZWxpbmUgZmluaXNoZWR9IGluIHtncmV5ICR7cHJldHR5SHJ0aW1lKHByb2Nlc3MuaHJ0aW1lKHRpbWUpKX19XFxuYCk7XG4gICAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGFyZ3Yuc3RhZ2UpIHtcbiAgICAgICAgZ2VuZXJhdGVHaXRJZ25vcmUoY3dkLCBzdGF0ZURpcik7XG4gICAgICAgIGNvbnN0IHRpbWUgPSBwcm9jZXNzLmhydGltZSgpO1xuICAgICAgICBjb25zdCBwaXBlbGluZUlpZCA9IGF3YWl0IHN0YXRlLmdldFBpcGVsaW5lSWlkKGN3ZCwgc3RhdGVEaXIpO1xuICAgICAgICBwYXJzZXIgPSBhd2FpdCBQYXJzZXIuY3JlYXRlKGFyZ3YsIHdyaXRlU3RyZWFtcywgcGlwZWxpbmVJaWQpO1xuICAgICAgICBhd2FpdCBVdGlscy5yc3luY1RyYWNrZWRGaWxlcyhjd2QsIHN0YXRlRGlyLCBcIi5kb2NrZXJcIik7XG4gICAgICAgIGF3YWl0IENvbW1hbmRlci5ydW5Kb2JzSW5TdGFnZShhcmd2LCBwYXJzZXIsIHdyaXRlU3RyZWFtcyk7XG4gICAgICAgIHdyaXRlU3RyZWFtcy5zdGRlcnIoY2hhbGtge2dyZXkgcGlwZWxpbmUgZmluaXNoZWR9IGluIHtncmV5ICR7cHJldHR5SHJ0aW1lKHByb2Nlc3MuaHJ0aW1lKHRpbWUpKX19XFxuYCk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgZ2VuZXJhdGVHaXRJZ25vcmUoY3dkLCBzdGF0ZURpcik7XG4gICAgICAgIGNvbnN0IHRpbWUgPSBwcm9jZXNzLmhydGltZSgpO1xuICAgICAgICBhd2FpdCBmcy5yZW1vdmUoYCR7Y3dkfS8ke3N0YXRlRGlyfS9hcnRpZmFjdHNgKTtcbiAgICAgICAgYXdhaXQgc3RhdGUuaW5jcmVtZW50UGlwZWxpbmVJaWQoY3dkLCBzdGF0ZURpcik7XG4gICAgICAgIGNvbnN0IHBpcGVsaW5lSWlkID0gYXdhaXQgc3RhdGUuZ2V0UGlwZWxpbmVJaWQoY3dkLCBzdGF0ZURpcik7XG4gICAgICAgIHBhcnNlciA9IGF3YWl0IFBhcnNlci5jcmVhdGUoYXJndiwgd3JpdGVTdHJlYW1zLCBwaXBlbGluZUlpZCk7XG4gICAgICAgIGF3YWl0IFV0aWxzLnJzeW5jVHJhY2tlZEZpbGVzKGN3ZCwgc3RhdGVEaXIsIFwiLmRvY2tlclwiKTtcbiAgICAgICAgYXdhaXQgQ29tbWFuZGVyLnJ1blBpcGVsaW5lKGFyZ3YsIHBhcnNlciwgd3JpdGVTdHJlYW1zKTtcbiAgICAgICAgd3JpdGVTdHJlYW1zLnN0ZGVycihjaGFsa2B7Z3JleSBwaXBlbGluZSBmaW5pc2hlZH0gaW4ge2dyZXkgJHtwcmV0dHlIcnRpbWUocHJvY2Vzcy5ocnRpbWUodGltZSkpfX1cXG5gKTtcbiAgICB9XG4gICAgd3JpdGVTdHJlYW1zLmZsdXNoKCk7XG5cbiAgICBhd2FpdCBjbGVhbnVwUmVzb3VyY2VzKHBhcnNlcik7XG4gICAgcmV0dXJuIHBhcnNlci5qb2JzO1xufVxuXG4iXX0=