@angular-devkit/core 15.2.0-rc.0 → 16.0.0-next.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.
@@ -13,21 +13,15 @@ const utils_1 = require("../../json/utils");
13
13
  const definitions_1 = require("../definitions");
14
14
  const metadata_1 = require("./metadata");
15
15
  const utilities_1 = require("./utilities");
16
- const ANGULAR_WORKSPACE_EXTENSIONS = Object.freeze([
17
- 'cli',
18
- 'defaultProject',
19
- 'newProjectRoot',
20
- 'schematics',
21
- ]);
16
+ const ANGULAR_WORKSPACE_EXTENSIONS = Object.freeze(['cli', 'newProjectRoot', 'schematics']);
22
17
  const ANGULAR_PROJECT_EXTENSIONS = Object.freeze(['cli', 'schematics', 'projectType', 'i18n']);
23
18
  async function readJsonWorkspace(path, host, options = {}) {
24
- var _a, _b;
25
19
  const raw = await host.readFile(path);
26
20
  if (raw === undefined) {
27
21
  throw new Error('Unable to read workspace file.');
28
22
  }
29
23
  const ast = (0, jsonc_parser_1.parseTree)(raw, undefined, { allowTrailingComma: true, disallowComments: false });
30
- if ((ast === null || ast === void 0 ? void 0 : ast.type) !== 'object' || !ast.children) {
24
+ if (ast?.type !== 'object' || !ast.children) {
31
25
  throw new Error('Invalid workspace file - expected JSON object.');
32
26
  }
33
27
  // Version check
@@ -45,11 +39,11 @@ async function readJsonWorkspace(path, host, options = {}) {
45
39
  trackChanges: true,
46
40
  unprefixedWorkspaceExtensions: new Set([
47
41
  ...ANGULAR_WORKSPACE_EXTENSIONS,
48
- ...((_a = options.allowedWorkspaceExtensions) !== null && _a !== void 0 ? _a : []),
42
+ ...(options.allowedWorkspaceExtensions ?? []),
49
43
  ]),
50
44
  unprefixedProjectExtensions: new Set([
51
45
  ...ANGULAR_PROJECT_EXTENSIONS,
52
- ...((_b = options.allowedProjectExtensions) !== null && _b !== void 0 ? _b : []),
46
+ ...(options.allowedProjectExtensions ?? []),
53
47
  ]),
54
48
  error(message, _node) {
55
49
  // TODO: Diagnostic reporting support
@@ -108,12 +102,13 @@ function parseWorkspace(workspaceNode, context) {
108
102
  projects: projectCollection,
109
103
  // If not tracking changes the `extensions` variable will contain the parsed
110
104
  // values. Otherwise the extensions are tracked via a virtual AST object.
111
- extensions: extensions !== null && extensions !== void 0 ? extensions : (0, utilities_1.createVirtualAstObject)(workspaceNodeValue, {
112
- exclude: ['$schema', 'version', 'projects'],
113
- listener(path, value) {
114
- jsonMetadata.addChange(path, value);
115
- },
116
- }),
105
+ extensions: extensions ??
106
+ (0, utilities_1.createVirtualAstObject)(workspaceNodeValue, {
107
+ exclude: ['$schema', 'version', 'projects'],
108
+ listener(path, value) {
109
+ jsonMetadata.addChange(path, value);
110
+ },
111
+ }),
117
112
  };
118
113
  }
119
114
  function parseProjectsObject(projectsNode, context) {
@@ -191,22 +186,24 @@ function parseProject(projectName, projectNode, context) {
191
186
  targets: new definitions_1.TargetDefinitionCollection(targets, collectionListener),
192
187
  // If not tracking changes the `extensions` variable will contain the parsed
193
188
  // values. Otherwise the extensions are tracked via a virtual AST object.
194
- extensions: extensions !== null && extensions !== void 0 ? extensions : (0, utilities_1.createVirtualAstObject)(projectNodeValue, {
195
- exclude: ['architect', 'prefix', 'root', 'sourceRoot', 'targets'],
196
- listener(path, value) {
197
- jsonMetadata.addChange(['projects', projectName, ...path], value);
198
- },
199
- }),
189
+ extensions: extensions ??
190
+ (0, utilities_1.createVirtualAstObject)(projectNodeValue, {
191
+ exclude: ['architect', 'prefix', 'root', 'sourceRoot', 'targets'],
192
+ listener(path, value) {
193
+ jsonMetadata.addChange(['projects', projectName, ...path], value);
194
+ },
195
+ }),
200
196
  };
201
197
  const baseKeys = new Set(Object.keys(base));
202
- const project = properties !== null && properties !== void 0 ? properties : (0, utilities_1.createVirtualAstObject)(projectNodeValue, {
203
- include: ['prefix', 'root', 'sourceRoot', ...baseKeys],
204
- listener(path, value) {
205
- if (!baseKeys.has(path[0])) {
206
- jsonMetadata.addChange(['projects', projectName, ...path], value);
207
- }
208
- },
209
- });
198
+ const project = properties ??
199
+ (0, utilities_1.createVirtualAstObject)(projectNodeValue, {
200
+ include: ['prefix', 'root', 'sourceRoot', ...baseKeys],
201
+ listener(path, value) {
202
+ if (!baseKeys.has(path[0])) {
203
+ jsonMetadata.addChange(['projects', projectName, ...path], value);
204
+ }
205
+ },
206
+ });
210
207
  return Object.assign(project, base);
211
208
  }
212
209
  function parseTargetsObject(projectName, targetsNode, context) {
@@ -231,4 +228,4 @@ function parseTargetsObject(projectName, targetsNode, context) {
231
228
  }
232
229
  return targets;
233
230
  }
234
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVhZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvYW5ndWxhcl9kZXZraXQvY29yZS9zcmMvd29ya3NwYWNlL2pzb24vcmVhZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7O0dBTUc7OztBQUVILCtDQUFpRjtBQUNqRiw0Q0FBMkQ7QUFDM0QsZ0RBT3dCO0FBRXhCLHlDQUF3RTtBQUN4RSwyQ0FBcUQ7QUFFckQsTUFBTSw0QkFBNEIsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDO0lBQ2pELEtBQUs7SUFDTCxnQkFBZ0I7SUFDaEIsZ0JBQWdCO0lBQ2hCLFlBQVk7Q0FDYixDQUFDLENBQUM7QUFDSCxNQUFNLDBCQUEwQixHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFLLEVBQUUsWUFBWSxFQUFFLGFBQWEsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDO0FBaUJ4RixLQUFLLFVBQVUsaUJBQWlCLENBQ3JDLElBQVksRUFDWixJQUFtQixFQUNuQixVQUFnQyxFQUFFOztJQUVsQyxNQUFNLEdBQUcsR0FBRyxNQUFNLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdEMsSUFBSSxHQUFHLEtBQUssU0FBUyxFQUFFO1FBQ3JCLE1BQU0sSUFBSSxLQUFLLENBQUMsZ0NBQWdDLENBQUMsQ0FBQztLQUNuRDtJQUVELE1BQU0sR0FBRyxHQUFHLElBQUEsd0JBQVMsRUFBQyxHQUFHLEVBQUUsU0FBUyxFQUFFLEVBQUUsa0JBQWtCLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDN0YsSUFBSSxDQUFBLEdBQUcsYUFBSCxHQUFHLHVCQUFILEdBQUcsQ0FBRSxJQUFJLE1BQUssUUFBUSxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRTtRQUMzQyxNQUFNLElBQUksS0FBSyxDQUFDLGdEQUFnRCxD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LElBQUksQ0FBQyxHQUFHLElBQUEsa0NBQXNCLEVBQW1CLEtBQUssRUFBRTtnQkFDOUQsT0FBTyxFQUFFLENBQUMsU0FBUyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRSxzQkFBc0IsQ0FBQztnQkFDekUsUUFBUSxDQUFDLElBQUksRUFBRSxLQUFLO29CQUNsQixZQUFZLENBQUMsU0FBUyxDQUFDLENBQUMsVUFBVSxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7Z0JBQ3JGLENBQUM7YUFDRixDQUFDLENBQUM7U0FDSjthQUFNO1lBQ0wsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLEtBQW9DLENBQUM7U0FDdEQ7S0FDRjtJQUVELE9BQU8sT0FBTyxDQUFDO0FBQ2pCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0IHsgTm9kZSwgZmluZE5vZGVBdExvY2F0aW9uLCBnZXROb2RlVmFsdWUsIHBhcnNlVHJlZSB9IGZyb20gJ2pzb25jLXBhcnNlcic7XG5pbXBvcnQgeyBKc29uVmFsdWUsIGlzSnNvbk9iamVjdCB9IGZyb20gJy4uLy4uL2pzb24vdXRpbHMnO1xuaW1wb3J0IHtcbiAgRGVmaW5pdGlvbkNvbGxlY3Rpb25MaXN0ZW5lcixcbiAgUHJvamVjdERlZmluaXRpb24sXG4gIFByb2plY3REZWZpbml0aW9uQ29sbGVjdGlvbixcbiAgVGFyZ2V0RGVmaW5pdGlvbixcbiAgVGFyZ2V0RGVmaW5pdGlvbkNvbGxlY3Rpb24sXG4gIFdvcmtzcGFjZURlZmluaXRpb24sXG59IGZyb20gJy4uL2RlZmluaXRpb25zJztcbmltcG9ydCB7IFdvcmtzcGFjZUhvc3QgfSBmcm9tICcuLi9ob3N0JztcbmltcG9ydCB7IEpzb25Xb3Jrc3BhY2VNZXRhZGF0YSwgSnNvbldvcmtzcGFjZVN5bWJvbCB9IGZyb20gJy4vbWV0YWRhdGEnO1xuaW1wb3J0IHsgY3JlYXRlVmlydHVhbEFzdE9iamVjdCB9IGZyb20gJy4vdXRpbGl0aWVzJztcblxuY29uc3QgQU5HVUxBUl9XT1JLU1BBQ0VfRVhURU5TSU9OUyA9IE9iamVjdC5mcmVlemUoW1xuICAnY2xpJyxcbiAgJ2RlZmF1bHRQcm9qZWN0JyxcbiAgJ25ld1Byb2plY3RSb290JyxcbiAgJ3NjaGVtYXRpY3MnLFxuXSk7XG5jb25zdCBBTkdVTEFSX1BST0pFQ1RfRVhURU5TSU9OUyA9IE9iamVjdC5mcmVlemUoWydjbGknLCAnc2NoZW1hdGljcycsICdwcm9qZWN0VHlwZScsICdpMThuJ10pO1xuXG5pbnRlcmZhY2UgUGFyc2VyQ29udGV4dCB7XG4gIHJlYWRvbmx5IGhvc3Q6IFdvcmtzcGFjZUhvc3Q7XG4gIHJlYWRvbmx5IG1ldGFkYXRhOiBKc29uV29ya3NwYWNlTWV0YWRhdGE7XG4gIHJlYWRvbmx5IHRyYWNrQ2hhbmdlczogYm9vbGVhbjtcbiAgcmVhZG9ubHkgdW5wcmVmaXhlZFdvcmtzcGFjZUV4dGVuc2lvbnM6IFJlYWRvbmx5U2V0PHN0cmluZz47XG4gIHJlYWRvbmx5IHVucHJlZml4ZWRQcm9qZWN0RXh0ZW5zaW9uczogUmVhZG9ubHlTZXQ8c3RyaW5nPjtcbiAgZXJyb3IobWVzc2FnZTogc3RyaW5nLCBub2RlOiBKc29uVmFsdWUpOiB2b2lkO1xuICB3YXJuKG1lc3NhZ2U6IHN0cmluZywgbm9kZTogSnNvblZhbHVlKTogdm9pZDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBKc29uV29ya3NwYWNlT3B0aW9ucyB7XG4gIGFsbG93ZWRQcm9qZWN0RXh0ZW5zaW9ucz86IHN0cmluZ1tdO1xuICBhbGxvd2VkV29ya3NwYWNlRXh0ZW5zaW9ucz86IHN0cmluZ1tdO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVhZEpzb25Xb3Jrc3BhY2UoXG4gIHBhdGg6IHN0cmluZyxcbiAgaG9zdDogV29ya3NwYWNlSG9zdCxcbiAgb3B0aW9uczogSnNvbldvcmtzcGFjZU9wdGlvbnMgPSB7fSxcbik6IFByb21pc2U8V29ya3NwYWNlRGVmaW5pdGlvbj4ge1xuICBjb25zdCByYXcgPSBhd2FpdCBob3N0LnJlYWRGaWxlKHBhdGgpO1xuICBpZiAocmF3ID09PSB1bmRlZmluZWQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1VuYWJsZSB0byByZWFkIHdvcmtzcGFjZSBmaWxlLicpO1xuICB9XG5cbiAgY29uc3QgYXN0ID0gcGFyc2VUcmVlKHJhdywgdW5kZWZpbmVkLCB7IGFsbG93VHJhaWxpbmdDb21tYTogdHJ1ZSwgZGlzYWxsb3dDb21tZW50czogZmFsc2UgfSk7XG4gIGlmIChhc3Q/LnR5cGUgIT09ICdvYmplY3QnIHx8ICFhc3QuY2hpbGRyZW4pIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgd29ya3NwYWNlIGZpbGUgLSBleHBlY3RlZCBKU09OIG9iamVjdC4nKTtcbiAgfVxuXG4gIC8vIFZlcnNpb24gY2hlY2tcbiAgY29uc3QgdmVyc2lvbk5vZGUgPSBmaW5kTm9kZUF0TG9jYXRpb24oYXN0LCBbJ3ZlcnNpb24nXSk7XG4gIGlmICghdmVyc2lvbk5vZGUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1Vua25vd24gZm9ybWF0IC0gdmVyc2lvbiBzcGVjaWZpZXIgbm90IGZvdW5kLicpO1xuICB9XG4gIGNvbnN0IHZlcnNpb24gPSB2ZXJzaW9uTm9kZS52YWx1ZTtcbiAgaWYgKHZlcnNpb24gIT09IDEpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgZm9ybWF0IHZlcnNpb24gZGV0ZWN0ZWQgLSBFeHBlY3RlZDpbIDEgXSBGb3VuZDogWyAke3ZlcnNpb259IF1gKTtcbiAgfVxuXG4gIGNvbnN0IGNvbnRleHQ6IFBhcnNlckNvbnRleHQgPSB7XG4gICAgaG9zdCxcbiAgICBtZXRhZGF0YTogbmV3IEpzb25Xb3Jrc3BhY2VNZXRhZGF0YShwYXRoLCBhc3QsIHJhdyksXG4gICAgdHJhY2tDaGFuZ2VzOiB0cnVlLFxuICAgIHVucHJlZml4ZWRXb3Jrc3BhY2VFeHRlbnNpb25zOiBuZXcgU2V0KFtcbiAgICAgIC4uLkFOR1VMQVJfV09SS1NQQUNFX0VYVEVOU0lPTlMsXG4gICAgICAuLi4ob3B0aW9ucy5hbGxvd2VkV29ya3NwYWNlRXh0ZW5zaW9ucyA/PyBbXSksXG4gICAgXSksXG4gICAgdW5wcmVmaXhlZFByb2plY3RFeHRlbnNpb25zOiBuZXcgU2V0KFtcbiAgICAgIC4uLkFOR1VMQVJfUFJPSkVDVF9FWFRFTlNJT05TLFxuICAgICAgLi4uKG9wdGlvbnMuYWxsb3dlZFByb2plY3RFeHRlbnNpb25zID8/IFtdKSxcbiAgICBdKSxcbiAgICBlcnJvcihtZXNzYWdlLCBfbm9kZSkge1xuICAgICAgLy8gVE9ETzogRGlhZ25vc3RpYyByZXBvcnRpbmcgc3VwcG9ydFxuICAgICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UpO1xuICAgIH0sXG4gICAgd2FybihtZXNzYWdlLCBfbm9kZSkge1xuICAgICAgLy8gVE9ETzogRGlhZ25vc3RpYyByZXBvcnRpbmcgc3VwcG9ydFxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgICAgIGNvbnNvbGUud2FybihtZXNzYWdlKTtcbiAgICB9LFxuICB9O1xuXG4gIGNvbnN0IHdvcmtzcGFjZSA9IHBhcnNlV29ya3NwYWNlKGFzdCwgY29udGV4dCk7XG5cbiAgcmV0dXJuIHdvcmtzcGFjZTtcbn1cblxuZnVuY3Rpb24gcGFyc2VXb3Jrc3BhY2Uod29ya3NwYWNlTm9kZTogTm9kZSwgY29udGV4dDogUGFyc2VyQ29udGV4dCk6IFdvcmtzcGFjZURlZmluaXRpb24ge1xuICBjb25zdCBqc29uTWV0YWRhdGEgPSBjb250ZXh0Lm1ldGFkYXRhO1xuICBsZXQgcHJvamVjdHM7XG4gIGxldCBleHRlbnNpb25zOiBSZWNvcmQ8c3RyaW5nLCBKc29uVmFsdWU+IHwgdW5kZWZpbmVkO1xuICBpZiAoIWNvbnRleHQudHJhY2tDaGFuZ2VzKSB7XG4gICAgZXh0ZW5zaW9ucyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gIH1cblxuICAvLyBUT0RPOiBgZ2V0Tm9kZVZhbHVlYCAtIGxvb2tzIHBvdGVudGlhbGx5IGV4cGVuc2l2ZSBzaW5jZSBpdCB3YWxrcyB0aGUgd2hvbGUgdHJlZSBhbmQgaW5zdGFudGlhdGVzIHRoZSBmdWxsIG9iamVjdCBzdHJ1Y3R1cmUgZWFjaCB0aW1lLlxuICAvLyBNaWdodCBiZSBzb21ldGhpbmcgdG8gbG9vayBhdCBtb3ZpbmcgZm9yd2FyZCB0byBvcHRpbWl6ZS5cbiAgY29uc3Qgd29ya3NwYWNlTm9kZVZhbHVlID0gZ2V0Tm9kZVZhbHVlKHdvcmtzcGFjZU5vZGUpO1xuICBmb3IgKGNvbnN0IFtuYW1lLCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXM8SnNvblZhbHVlPih3b3Jrc3BhY2VOb2RlVmFsdWUpKSB7XG4gICAgaWYgKG5hbWUgPT09ICckc2NoZW1hJyB8fCBuYW1lID09PSAndmVyc2lvbicpIHtcbiAgICAgIC8vIHNraXBcbiAgICB9IGVsc2UgaWYgKG5hbWUgPT09ICdwcm9qZWN0cycpIHtcbiAgICAgIGNvbnN0IG5vZGVzID0gZmluZE5vZGVBdExvY2F0aW9uKHdvcmtzcGFjZU5vZGUsIFsncHJvamVjdHMnXSk7XG4gICAgICBpZiAoIWlzSnNvbk9iamVjdCh2YWx1ZSkgfHwgIW5vZGVzKSB7XG4gICAgICAgIGNvbnRleHQuZXJyb3IoJ0ludmFsaWQgXCJwcm9qZWN0c1wiIGZpZWxkIGZvdW5kOyBleHBlY3RlZCBhbiBvYmplY3QuJywgdmFsdWUpO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgcHJvamVjdHMgPSBwYXJzZVByb2plY3RzT2JqZWN0KG5vZGVzLCBjb250ZXh0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKCFjb250ZXh0LnVucHJlZml4ZWRXb3Jrc3BhY2VFeHRlbnNpb25zLmhhcyhuYW1lKSAmJiAhL15bYS16XXsxLDN9LS4qLy50ZXN0KG5hbWUpKSB7XG4gICAgICAgIGNvbnRleHQud2FybihgV29ya3NwYWNlIGV4dGVuc2lvbiB3aXRoIGludmFsaWQgbmFtZSAoJHtuYW1lfSkgZm91bmQuYCwgbmFtZSk7XG4gICAgICB9XG4gICAgICBpZiAoZXh0ZW5zaW9ucykge1xuICAgICAgICBleHRlbnNpb25zW25hbWVdID0gdmFsdWU7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgbGV0IGNvbGxlY3Rpb25MaXN0ZW5lcjogRGVmaW5pdGlvbkNvbGxlY3Rpb25MaXN0ZW5lcjxQcm9qZWN0RGVmaW5pdGlvbj4gfCB1bmRlZmluZWQ7XG4gIGlmIChjb250ZXh0LnRyYWNrQ2hhbmdlcykge1xuICAgIGNvbGxlY3Rpb25MaXN0ZW5lciA9IChuYW1lLCBuZXdWYWx1ZSkgPT4ge1xuICAgICAganNvbk1ldGFkYXRhLmFkZENoYW5nZShbJ3Byb2plY3RzJywgbmFtZV0sIG5ld1ZhbHVlLCAncHJvamVjdCcpO1xuICAgIH07XG4gIH1cblxuICBjb25zdCBwcm9qZWN0Q29sbGVjdGlvbiA9IG5ldyBQcm9qZWN0RGVmaW5pdGlvbkNvbGxlY3Rpb24ocHJvamVjdHMsIGNvbGxlY3Rpb25MaXN0ZW5lcik7XG5cbiAgcmV0dXJuIHtcbiAgICBbSnNvbldvcmtzcGFjZVN5bWJvbF06IGpzb25NZXRhZGF0YSxcbiAgICBwcm9qZWN0czogcHJvamVjdENvbGxlY3Rpb24sXG4gICAgLy8gSWYgbm90IHRyYWNraW5nIGNoYW5nZXMgdGhlIGBleHRlbnNpb25zYCB2YXJpYWJsZSB3aWxsIGNvbnRhaW4gdGhlIHBhcnNlZFxuICAgIC8vIHZhbHVlcy4gIE90aGVyd2lzZSB0aGUgZXh0ZW5zaW9ucyBhcmUgdHJhY2tlZCB2aWEgYSB2aXJ0dWFsIEFTVCBvYmplY3QuXG4gICAgZXh0ZW5zaW9uczpcbiAgICAgIGV4dGVuc2lvbnMgPz9cbiAgICAgIGNyZWF0ZVZpcnR1YWxBc3RPYmplY3Qod29ya3NwYWNlTm9kZVZhbHVlLCB7XG4gICAgICAgIGV4Y2x1ZGU6IFsnJHNjaGVtYScsICd2ZXJzaW9uJywgJ3Byb2plY3RzJ10sXG4gICAgICAgIGxpc3RlbmVyKHBhdGgsIHZhbHVlKSB7XG4gICAgICAgICAganNvbk1ldGFkYXRhLmFkZENoYW5nZShwYXRoLCB2YWx1ZSk7XG4gICAgICAgIH0sXG4gICAgICB9KSxcbiAgfSBhcyBXb3Jrc3BhY2VEZWZpbml0aW9uO1xufVxuXG5mdW5jdGlvbiBwYXJzZVByb2plY3RzT2JqZWN0KFxuICBwcm9qZWN0c05vZGU6IE5vZGUsXG4gIGNvbnRleHQ6IFBhcnNlckNvbnRleHQsXG4pOiBSZWNvcmQ8c3RyaW5nLCBQcm9qZWN0RGVmaW5pdGlvbj4ge1xuICBjb25zdCBwcm9qZWN0czogUmVjb3JkPHN0cmluZywgUHJvamVjdERlZmluaXRpb24+ID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcblxuICBmb3IgKGNvbnN0IFtuYW1lLCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXM8SnNvblZhbHVlPihnZXROb2RlVmFsdWUocHJvamVjdHNOb2RlKSkpIHtcbiAgICBjb25zdCBub2RlcyA9IGZpbmROb2RlQXRMb2NhdGlvbihwcm9qZWN0c05vZGUsIFtuYW1lXSk7XG4gICAgaWYgKCFpc0pzb25PYmplY3QodmFsdWUpIHx8ICFub2Rlcykge1xuICAgICAgY29udGV4dC53YXJuKCdTa2lwcGluZyBpbnZhbGlkIHByb2plY3QgdmFsdWU7IGV4cGVjdGVkIGFuIG9iamVjdC4nLCB2YWx1ZSk7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBwcm9qZWN0c1tuYW1lXSA9IHBhcnNlUHJvamVjdChuYW1lLCBub2RlcywgY29udGV4dCk7XG4gIH1cblxuICByZXR1cm4gcHJvamVjdHM7XG59XG5cbmZ1bmN0aW9uIHBhcnNlUHJvamVjdChcbiAgcHJvamVjdE5hbWU6IHN0cmluZyxcbiAgcHJvamVjdE5vZGU6IE5vZGUsXG4gIGNvbnRleHQ6IFBhcnNlckNvbnRleHQsXG4pOiBQcm9qZWN0RGVmaW5pdGlvbiB7XG4gIGNvbnN0IGpzb25NZXRhZGF0YSA9IGNvbnRleHQubWV0YWRhdGE7XG4gIGxldCB0YXJnZXRzO1xuICBsZXQgaGFzVGFyZ2V0cyA9IGZhbHNlO1xuICBsZXQgZXh0ZW5zaW9uczogUmVjb3JkPHN0cmluZywgSnNvblZhbHVlPiB8IHVuZGVmaW5lZDtcbiAgbGV0IHByb3BlcnRpZXM6IFJlY29yZDwncm9vdCcgfCAnc291cmNlUm9vdCcgfCAncHJlZml4Jywgc3RyaW5nPiB8IHVuZGVmaW5lZDtcbiAgaWYgKCFjb250ZXh0LnRyYWNrQ2hhbmdlcykge1xuICAgIC8vIElmIG5vdCB0cmFja2luZyBjaGFuZ2VzLCB0aGUgcGFyc2VyIHdpbGwgc3RvcmUgdGhlIHZhbHVlcyBkaXJlY3RseSBpbiBzdGFuZGFyZCBvYmplY3RzXG4gICAgZXh0ZW5zaW9ucyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gICAgcHJvcGVydGllcyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gIH1cblxuICBjb25zdCBwcm9qZWN0Tm9kZVZhbHVlID0gZ2V0Tm9kZVZhbHVlKHByb2plY3ROb2RlKTtcbiAgaWYgKCEoJ3Jvb3QnIGluIHByb2plY3ROb2RlVmFsdWUpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBQcm9qZWN0IFwiJHtwcm9qZWN0TmFtZX1cIiBpcyBtaXNzaW5nIGEgcmVxdWlyZWQgcHJvcGVydHkgXCJyb290XCIuYCk7XG4gIH1cblxuICBmb3IgKGNvbnN0IFtuYW1lLCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXM8SnNvblZhbHVlPihwcm9qZWN0Tm9kZVZhbHVlKSkge1xuICAgIHN3aXRjaCAobmFtZSkge1xuICAgICAgY2FzZSAndGFyZ2V0cyc6XG4gICAgICBjYXNlICdhcmNoaXRlY3QnOlxuICAgICAgICBjb25zdCBub2RlcyA9IGZpbmROb2RlQXRMb2NhdGlvbihwcm9qZWN0Tm9kZSwgW25hbWVdKTtcbiAgICAgICAgaWYgKCFpc0pzb25PYmplY3QodmFsdWUpIHx8ICFub2Rlcykge1xuICAgICAgICAgIGNvbnRleHQuZXJyb3IoYEludmFsaWQgXCIke25hbWV9XCIgZmllbGQgZm91bmQ7IGV4cGVjdGVkIGFuIG9iamVjdC5gLCB2YWx1ZSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgaGFzVGFyZ2V0cyA9IHRydWU7XG4gICAgICAgIHRhcmdldHMgPSBwYXJzZVRhcmdldHNPYmplY3QocHJvamVjdE5hbWUsIG5vZGVzLCBjb250ZXh0KTtcbiAgICAgICAganNvbk1ldGFkYXRhLmhhc0xlZ2FjeVRhcmdldHNOYW1lID0gbmFtZSA9PT0gJ2FyY2hpdGVjdCc7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAncHJlZml4JzpcbiAgICAgIGNhc2UgJ3Jvb3QnOlxuICAgICAgY2FzZSAnc291cmNlUm9vdCc6XG4gICAgICAgIGlmICh0eXBlb2YgdmFsdWUgIT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgY29udGV4dC53YXJuKGBQcm9qZWN0IHByb3BlcnR5IFwiJHtuYW1lfVwiIHNob3VsZCBiZSBhIHN0cmluZy5gLCB2YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHByb3BlcnRpZXMpIHtcbiAgICAgICAgICBwcm9wZXJ0aWVzW25hbWVdID0gdmFsdWUgYXMgc3RyaW5nO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgaWYgKCFjb250ZXh0LnVucHJlZml4ZWRQcm9qZWN0RXh0ZW5zaW9ucy5oYXMobmFtZSkgJiYgIS9eW2Etel17MSwzfS0uKi8udGVzdChuYW1lKSkge1xuICAgICAgICAgIGNvbnRleHQud2FybihcbiAgICAgICAgICAgIGBQcm9qZWN0ICcke3Byb2plY3ROYW1lfScgY29udGFpbnMgZXh0ZW5zaW9uIHdpdGggaW52YWxpZCBuYW1lICgke25hbWV9KS5gLFxuICAgICAgICAgICAgbmFtZSxcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIGlmIChleHRlbnNpb25zKSB7XG4gICAgICAgICAgZXh0ZW5zaW9uc1tuYW1lXSA9IHZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIGxldCBjb2xsZWN0aW9uTGlzdGVuZXI6IERlZmluaXRpb25Db2xsZWN0aW9uTGlzdGVuZXI8VGFyZ2V0RGVmaW5pdGlvbj4gfCB1bmRlZmluZWQ7XG4gIGlmIChjb250ZXh0LnRyYWNrQ2hhbmdlcykge1xuICAgIGNvbGxlY3Rpb25MaXN0ZW5lciA9IChuYW1lLCBuZXdWYWx1ZSwgY29sbGVjdGlvbikgPT4ge1xuICAgICAgaWYgKGhhc1RhcmdldHMpIHtcbiAgICAgICAganNvbk1ldGFkYXRhLmFkZENoYW5nZShbJ3Byb2plY3RzJywgcHJvamVjdE5hbWUsICd0YXJnZXRzJywgbmFtZV0sIG5ld1ZhbHVlLCAndGFyZ2V0Jyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBqc29uTWV0YWRhdGEuYWRkQ2hhbmdlKFxuICAgICAgICAgIFsncHJvamVjdHMnLCBwcm9qZWN0TmFtZSwgJ3RhcmdldHMnXSxcbiAgICAgICAgICBjb2xsZWN0aW9uLFxuICAgICAgICAgICd0YXJnZXRjb2xsZWN0aW9uJyxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9O1xuICB9XG5cbiAgY29uc3QgYmFzZSA9IHtcbiAgICB0YXJnZXRzOiBuZXcgVGFyZ2V0RGVmaW5pdGlvbkNvbGxlY3Rpb24odGFyZ2V0cywgY29sbGVjdGlvbkxpc3RlbmVyKSxcbiAgICAvLyBJZiBub3QgdHJhY2tpbmcgY2hhbmdlcyB0aGUgYGV4dGVuc2lvbnNgIHZhcmlhYmxlIHdpbGwgY29udGFpbiB0aGUgcGFyc2VkXG4gICAgLy8gdmFsdWVzLiAgT3RoZXJ3aXNlIHRoZSBleHRlbnNpb25zIGFyZSB0cmFja2VkIHZpYSBhIHZpcnR1YWwgQVNUIG9iamVjdC5cbiAgICBleHRlbnNpb25zOlxuICAgICAgZXh0ZW5zaW9ucyA/P1xuICAgICAgY3JlYXRlVmlydHVhbEFzdE9iamVjdChwcm9qZWN0Tm9kZVZhbHVlLCB7XG4gICAgICAgIGV4Y2x1ZGU6IFsnYXJjaGl0ZWN0JywgJ3ByZWZpeCcsICdyb290JywgJ3NvdXJjZVJvb3QnLCAndGFyZ2V0cyddLFxuICAgICAgICBsaXN0ZW5lcihwYXRoLCB2YWx1ZSkge1xuICAgICAgICAgIGpzb25NZXRhZGF0YS5hZGRDaGFuZ2UoWydwcm9qZWN0cycsIHByb2plY3ROYW1lLCAuLi5wYXRoXSwgdmFsdWUpO1xuICAgICAgICB9LFxuICAgICAgfSksXG4gIH07XG5cbiAgY29uc3QgYmFzZUtleXMgPSBuZXcgU2V0KE9iamVjdC5rZXlzKGJhc2UpKTtcbiAgY29uc3QgcHJvamVjdCA9XG4gICAgcHJvcGVydGllcyA/P1xuICAgIGNyZWF0ZVZpcnR1YWxBc3RPYmplY3Q8UHJvamVjdERlZmluaXRpb24+KHByb2plY3ROb2RlVmFsdWUsIHtcbiAgICAgIGluY2x1ZGU6IFsncHJlZml4JywgJ3Jvb3QnLCAnc291cmNlUm9vdCcsIC4uLmJhc2VLZXlzXSxcbiAgICAgIGxpc3RlbmVyKHBhdGgsIHZhbHVlKSB7XG4gICAgICAgIGlmICghYmFzZUtleXMuaGFzKHBhdGhbMF0pKSB7XG4gICAgICAgICAganNvbk1ldGFkYXRhLmFkZENoYW5nZShbJ3Byb2plY3RzJywgcHJvamVjdE5hbWUsIC4uLnBhdGhdLCB2YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgcmV0dXJuIE9iamVjdC5hc3NpZ24ocHJvamVjdCwgYmFzZSkgYXMgUHJvamVjdERlZmluaXRpb247XG59XG5cbmZ1bmN0aW9uIHBhcnNlVGFyZ2V0c09iamVjdChcbiAgcHJvamVjdE5hbWU6IHN0cmluZyxcbiAgdGFyZ2V0c05vZGU6IE5vZGUsXG4gIGNvbnRleHQ6IFBhcnNlckNvbnRleHQsXG4pOiBSZWNvcmQ8c3RyaW5nLCBUYXJnZXREZWZpbml0aW9uPiB7XG4gIGNvbnN0IGpzb25NZXRhZGF0YSA9IGNvbnRleHQubWV0YWRhdGE7XG4gIGNvbnN0IHRhcmdldHM6IFJlY29yZDxzdHJpbmcsIFRhcmdldERlZmluaXRpb24+ID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcblxuICBmb3IgKGNvbnN0IFtuYW1lLCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXM8SnNvblZhbHVlPihnZXROb2RlVmFsdWUodGFyZ2V0c05vZGUpKSkge1xuICAgIGlmICghaXNKc29uT2JqZWN0KHZhbHVlKSkge1xuICAgICAgY29udGV4dC53YXJuKCdTa2lwcGluZyBpbnZhbGlkIHRhcmdldCB2YWx1ZTsgZXhwZWN0ZWQgYW4gb2JqZWN0LicsIHZhbHVlKTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGlmIChjb250ZXh0LnRyYWNrQ2hhbmdlcykge1xuICAgICAgdGFyZ2V0c1tuYW1lXSA9IGNyZWF0ZVZpcnR1YWxBc3RPYmplY3Q8VGFyZ2V0RGVmaW5pdGlvbj4odmFsdWUsIHtcbiAgICAgICAgaW5jbHVkZTogWydidWlsZGVyJywgJ29wdGlvbnMnLCAnY29uZmlndXJhdGlvbnMnLCAnZGVmYXVsdENvbmZpZ3VyYXRpb24nXSxcbiAgICAgICAgbGlzdGVuZXIocGF0aCwgdmFsdWUpIHtcbiAgICAgICAgICBqc29uTWV0YWRhdGEuYWRkQ2hhbmdlKFsncHJvamVjdHMnLCBwcm9qZWN0TmFtZSwgJ3RhcmdldHMnLCBuYW1lLCAuLi5wYXRoXSwgdmFsdWUpO1xuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRhcmdldHNbbmFtZV0gPSB2YWx1ZSBhcyB1bmtub3duIGFzIFRhcmdldERlZmluaXRpb247XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRhcmdldHM7XG59XG4iXX0=
231
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVhZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvYW5ndWxhcl9kZXZraXQvY29yZS9zcmMvd29ya3NwYWNlL2pzb24vcmVhZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7O0dBTUc7OztBQUVILCtDQUFpRjtBQUNqRiw0Q0FBMkQ7QUFDM0QsZ0RBT3dCO0FBRXhCLHlDQUF3RTtBQUN4RSwyQ0FBcUQ7QUFFckQsTUFBTSw0QkFBNEIsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxFQUFFLGdCQUFnQixFQUFFLFlBQVksQ0FBQyxDQUFDLENBQUM7QUFDNUYsTUFBTSwwQkFBMEIsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxFQUFFLFlBQVksRUFBRSxhQUFhLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQztBQWlCeEYsS0FBSyxVQUFVLGlCQUFpQixDQUNyQyxJQUFZLEVBQ1osSUFBbUIsRUFDbkIsVUFBZ0MsRUFBRTtJQUVsQyxNQUFNLEdBQUcsR0FBRyxNQUFNLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdEMsSUFBSSxHQUFHLEtBQUssU0FBUyxFQUFFO1FBQ3JCLE1BQU0sSUFBSSxLQUFLLENBQUMsZ0NBQWdDLENBQUMsQ0FBQztLQUNuRDtJQUVELE1BQU0sR0FBRyxHQUFHLElBQUEsd0JBQVMsRUFBQyxHQUFHLEVBQUUsU0FBUyxFQUFFLEVBQUUsa0JBQWtCLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDN0YsSUFBSSxHQUFHLEVBQUUsSUFBSSxLQUFLLFFBQVEsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUU7UUFDM0MsTUFBTSxJQUFJLEtBQUssQ0FBQyxnREFBZ0QsQ0FBQyxDQUFDO0tBQ25FO0lBRUQsZ0JBQWdCO0lBQ2hCLE1BQU0sV0FB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Q0FBQztnQkFDekUsUUFBUSxDQUFDLElBQUksRUFBRSxLQUFLO29CQUNsQixZQUFZLENBQUMsU0FBUyxDQUFDLENBQUMsVUFBVSxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7Z0JBQ3JGLENBQUM7YUFDRixDQUFDLENBQUM7U0FDSjthQUFNO1lBQ0wsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLEtBQW9DLENBQUM7U0FDdEQ7S0FDRjtJQUVELE9BQU8sT0FBTyxDQUFDO0FBQ2pCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0IHsgTm9kZSwgZmluZE5vZGVBdExvY2F0aW9uLCBnZXROb2RlVmFsdWUsIHBhcnNlVHJlZSB9IGZyb20gJ2pzb25jLXBhcnNlcic7XG5pbXBvcnQgeyBKc29uVmFsdWUsIGlzSnNvbk9iamVjdCB9IGZyb20gJy4uLy4uL2pzb24vdXRpbHMnO1xuaW1wb3J0IHtcbiAgRGVmaW5pdGlvbkNvbGxlY3Rpb25MaXN0ZW5lcixcbiAgUHJvamVjdERlZmluaXRpb24sXG4gIFByb2plY3REZWZpbml0aW9uQ29sbGVjdGlvbixcbiAgVGFyZ2V0RGVmaW5pdGlvbixcbiAgVGFyZ2V0RGVmaW5pdGlvbkNvbGxlY3Rpb24sXG4gIFdvcmtzcGFjZURlZmluaXRpb24sXG59IGZyb20gJy4uL2RlZmluaXRpb25zJztcbmltcG9ydCB7IFdvcmtzcGFjZUhvc3QgfSBmcm9tICcuLi9ob3N0JztcbmltcG9ydCB7IEpzb25Xb3Jrc3BhY2VNZXRhZGF0YSwgSnNvbldvcmtzcGFjZVN5bWJvbCB9IGZyb20gJy4vbWV0YWRhdGEnO1xuaW1wb3J0IHsgY3JlYXRlVmlydHVhbEFzdE9iamVjdCB9IGZyb20gJy4vdXRpbGl0aWVzJztcblxuY29uc3QgQU5HVUxBUl9XT1JLU1BBQ0VfRVhURU5TSU9OUyA9IE9iamVjdC5mcmVlemUoWydjbGknLCAnbmV3UHJvamVjdFJvb3QnLCAnc2NoZW1hdGljcyddKTtcbmNvbnN0IEFOR1VMQVJfUFJPSkVDVF9FWFRFTlNJT05TID0gT2JqZWN0LmZyZWV6ZShbJ2NsaScsICdzY2hlbWF0aWNzJywgJ3Byb2plY3RUeXBlJywgJ2kxOG4nXSk7XG5cbmludGVyZmFjZSBQYXJzZXJDb250ZXh0IHtcbiAgcmVhZG9ubHkgaG9zdDogV29ya3NwYWNlSG9zdDtcbiAgcmVhZG9ubHkgbWV0YWRhdGE6IEpzb25Xb3Jrc3BhY2VNZXRhZGF0YTtcbiAgcmVhZG9ubHkgdHJhY2tDaGFuZ2VzOiBib29sZWFuO1xuICByZWFkb25seSB1bnByZWZpeGVkV29ya3NwYWNlRXh0ZW5zaW9uczogUmVhZG9ubHlTZXQ8c3RyaW5nPjtcbiAgcmVhZG9ubHkgdW5wcmVmaXhlZFByb2plY3RFeHRlbnNpb25zOiBSZWFkb25seVNldDxzdHJpbmc+O1xuICBlcnJvcihtZXNzYWdlOiBzdHJpbmcsIG5vZGU6IEpzb25WYWx1ZSk6IHZvaWQ7XG4gIHdhcm4obWVzc2FnZTogc3RyaW5nLCBub2RlOiBKc29uVmFsdWUpOiB2b2lkO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEpzb25Xb3Jrc3BhY2VPcHRpb25zIHtcbiAgYWxsb3dlZFByb2plY3RFeHRlbnNpb25zPzogc3RyaW5nW107XG4gIGFsbG93ZWRXb3Jrc3BhY2VFeHRlbnNpb25zPzogc3RyaW5nW107XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZWFkSnNvbldvcmtzcGFjZShcbiAgcGF0aDogc3RyaW5nLFxuICBob3N0OiBXb3Jrc3BhY2VIb3N0LFxuICBvcHRpb25zOiBKc29uV29ya3NwYWNlT3B0aW9ucyA9IHt9LFxuKTogUHJvbWlzZTxXb3Jrc3BhY2VEZWZpbml0aW9uPiB7XG4gIGNvbnN0IHJhdyA9IGF3YWl0IGhvc3QucmVhZEZpbGUocGF0aCk7XG4gIGlmIChyYXcgPT09IHVuZGVmaW5lZCkge1xuICAgIHRocm93IG5ldyBFcnJvcignVW5hYmxlIHRvIHJlYWQgd29ya3NwYWNlIGZpbGUuJyk7XG4gIH1cblxuICBjb25zdCBhc3QgPSBwYXJzZVRyZWUocmF3LCB1bmRlZmluZWQsIHsgYWxsb3dUcmFpbGluZ0NvbW1hOiB0cnVlLCBkaXNhbGxvd0NvbW1lbnRzOiBmYWxzZSB9KTtcbiAgaWYgKGFzdD8udHlwZSAhPT0gJ29iamVjdCcgfHwgIWFzdC5jaGlsZHJlbikge1xuICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCB3b3Jrc3BhY2UgZmlsZSAtIGV4cGVjdGVkIEpTT04gb2JqZWN0LicpO1xuICB9XG5cbiAgLy8gVmVyc2lvbiBjaGVja1xuICBjb25zdCB2ZXJzaW9uTm9kZSA9IGZpbmROb2RlQXRMb2NhdGlvbihhc3QsIFsndmVyc2lvbiddKTtcbiAgaWYgKCF2ZXJzaW9uTm9kZSkge1xuICAgIHRocm93IG5ldyBFcnJvcignVW5rbm93biBmb3JtYXQgLSB2ZXJzaW9uIHNwZWNpZmllciBub3QgZm91bmQuJyk7XG4gIH1cbiAgY29uc3QgdmVyc2lvbiA9IHZlcnNpb25Ob2RlLnZhbHVlO1xuICBpZiAodmVyc2lvbiAhPT0gMSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBmb3JtYXQgdmVyc2lvbiBkZXRlY3RlZCAtIEV4cGVjdGVkOlsgMSBdIEZvdW5kOiBbICR7dmVyc2lvbn0gXWApO1xuICB9XG5cbiAgY29uc3QgY29udGV4dDogUGFyc2VyQ29udGV4dCA9IHtcbiAgICBob3N0LFxuICAgIG1ldGFkYXRhOiBuZXcgSnNvbldvcmtzcGFjZU1ldGFkYXRhKHBhdGgsIGFzdCwgcmF3KSxcbiAgICB0cmFja0NoYW5nZXM6IHRydWUsXG4gICAgdW5wcmVmaXhlZFdvcmtzcGFjZUV4dGVuc2lvbnM6IG5ldyBTZXQoW1xuICAgICAgLi4uQU5HVUxBUl9XT1JLU1BBQ0VfRVhURU5TSU9OUyxcbiAgICAgIC4uLihvcHRpb25zLmFsbG93ZWRXb3Jrc3BhY2VFeHRlbnNpb25zID8/IFtdKSxcbiAgICBdKSxcbiAgICB1bnByZWZpeGVkUHJvamVjdEV4dGVuc2lvbnM6IG5ldyBTZXQoW1xuICAgICAgLi4uQU5HVUxBUl9QUk9KRUNUX0VYVEVOU0lPTlMsXG4gICAgICAuLi4ob3B0aW9ucy5hbGxvd2VkUHJvamVjdEV4dGVuc2lvbnMgPz8gW10pLFxuICAgIF0pLFxuICAgIGVycm9yKG1lc3NhZ2UsIF9ub2RlKSB7XG4gICAgICAvLyBUT0RPOiBEaWFnbm9zdGljIHJlcG9ydGluZyBzdXBwb3J0XG4gICAgICB0aHJvdyBuZXcgRXJyb3IobWVzc2FnZSk7XG4gICAgfSxcbiAgICB3YXJuKG1lc3NhZ2UsIF9ub2RlKSB7XG4gICAgICAvLyBUT0RPOiBEaWFnbm9zdGljIHJlcG9ydGluZyBzdXBwb3J0XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuICAgICAgY29uc29sZS53YXJuKG1lc3NhZ2UpO1xuICAgIH0sXG4gIH07XG5cbiAgY29uc3Qgd29ya3NwYWNlID0gcGFyc2VXb3Jrc3BhY2UoYXN0LCBjb250ZXh0KTtcblxuICByZXR1cm4gd29ya3NwYWNlO1xufVxuXG5mdW5jdGlvbiBwYXJzZVdvcmtzcGFjZSh3b3Jrc3BhY2VOb2RlOiBOb2RlLCBjb250ZXh0OiBQYXJzZXJDb250ZXh0KTogV29ya3NwYWNlRGVmaW5pdGlvbiB7XG4gIGNvbnN0IGpzb25NZXRhZGF0YSA9IGNvbnRleHQubWV0YWRhdGE7XG4gIGxldCBwcm9qZWN0cztcbiAgbGV0IGV4dGVuc2lvbnM6IFJlY29yZDxzdHJpbmcsIEpzb25WYWx1ZT4gfCB1bmRlZmluZWQ7XG4gIGlmICghY29udGV4dC50cmFja0NoYW5nZXMpIHtcbiAgICBleHRlbnNpb25zID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgfVxuXG4gIC8vIFRPRE86IGBnZXROb2RlVmFsdWVgIC0gbG9va3MgcG90ZW50aWFsbHkgZXhwZW5zaXZlIHNpbmNlIGl0IHdhbGtzIHRoZSB3aG9sZSB0cmVlIGFuZCBpbnN0YW50aWF0ZXMgdGhlIGZ1bGwgb2JqZWN0IHN0cnVjdHVyZSBlYWNoIHRpbWUuXG4gIC8vIE1pZ2h0IGJlIHNvbWV0aGluZyB0byBsb29rIGF0IG1vdmluZyBmb3J3YXJkIHRvIG9wdGltaXplLlxuICBjb25zdCB3b3Jrc3BhY2VOb2RlVmFsdWUgPSBnZXROb2RlVmFsdWUod29ya3NwYWNlTm9kZSk7XG4gIGZvciAoY29uc3QgW25hbWUsIHZhbHVlXSBvZiBPYmplY3QuZW50cmllczxKc29uVmFsdWU+KHdvcmtzcGFjZU5vZGVWYWx1ZSkpIHtcbiAgICBpZiAobmFtZSA9PT0gJyRzY2hlbWEnIHx8IG5hbWUgPT09ICd2ZXJzaW9uJykge1xuICAgICAgLy8gc2tpcFxuICAgIH0gZWxzZSBpZiAobmFtZSA9PT0gJ3Byb2plY3RzJykge1xuICAgICAgY29uc3Qgbm9kZXMgPSBmaW5kTm9kZUF0TG9jYXRpb24od29ya3NwYWNlTm9kZSwgWydwcm9qZWN0cyddKTtcbiAgICAgIGlmICghaXNKc29uT2JqZWN0KHZhbHVlKSB8fCAhbm9kZXMpIHtcbiAgICAgICAgY29udGV4dC5lcnJvcignSW52YWxpZCBcInByb2plY3RzXCIgZmllbGQgZm91bmQ7IGV4cGVjdGVkIGFuIG9iamVjdC4nLCB2YWx1ZSk7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBwcm9qZWN0cyA9IHBhcnNlUHJvamVjdHNPYmplY3Qobm9kZXMsIGNvbnRleHQpO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoIWNvbnRleHQudW5wcmVmaXhlZFdvcmtzcGFjZUV4dGVuc2lvbnMuaGFzKG5hbWUpICYmICEvXlthLXpdezEsM30tLiovLnRlc3QobmFtZSkpIHtcbiAgICAgICAgY29udGV4dC53YXJuKGBXb3Jrc3BhY2UgZXh0ZW5zaW9uIHdpdGggaW52YWxpZCBuYW1lICgke25hbWV9KSBmb3VuZC5gLCBuYW1lKTtcbiAgICAgIH1cbiAgICAgIGlmIChleHRlbnNpb25zKSB7XG4gICAgICAgIGV4dGVuc2lvbnNbbmFtZV0gPSB2YWx1ZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBsZXQgY29sbGVjdGlvbkxpc3RlbmVyOiBEZWZpbml0aW9uQ29sbGVjdGlvbkxpc3RlbmVyPFByb2plY3REZWZpbml0aW9uPiB8IHVuZGVmaW5lZDtcbiAgaWYgKGNvbnRleHQudHJhY2tDaGFuZ2VzKSB7XG4gICAgY29sbGVjdGlvbkxpc3RlbmVyID0gKG5hbWUsIG5ld1ZhbHVlKSA9PiB7XG4gICAgICBqc29uTWV0YWRhdGEuYWRkQ2hhbmdlKFsncHJvamVjdHMnLCBuYW1lXSwgbmV3VmFsdWUsICdwcm9qZWN0Jyk7XG4gICAgfTtcbiAgfVxuXG4gIGNvbnN0IHByb2plY3RDb2xsZWN0aW9uID0gbmV3IFByb2plY3REZWZpbml0aW9uQ29sbGVjdGlvbihwcm9qZWN0cywgY29sbGVjdGlvbkxpc3RlbmVyKTtcblxuICByZXR1cm4ge1xuICAgIFtKc29uV29ya3NwYWNlU3ltYm9sXToganNvbk1ldGFkYXRhLFxuICAgIHByb2plY3RzOiBwcm9qZWN0Q29sbGVjdGlvbixcbiAgICAvLyBJZiBub3QgdHJhY2tpbmcgY2hhbmdlcyB0aGUgYGV4dGVuc2lvbnNgIHZhcmlhYmxlIHdpbGwgY29udGFpbiB0aGUgcGFyc2VkXG4gICAgLy8gdmFsdWVzLiAgT3RoZXJ3aXNlIHRoZSBleHRlbnNpb25zIGFyZSB0cmFja2VkIHZpYSBhIHZpcnR1YWwgQVNUIG9iamVjdC5cbiAgICBleHRlbnNpb25zOlxuICAgICAgZXh0ZW5zaW9ucyA/P1xuICAgICAgY3JlYXRlVmlydHVhbEFzdE9iamVjdCh3b3Jrc3BhY2VOb2RlVmFsdWUsIHtcbiAgICAgICAgZXhjbHVkZTogWyckc2NoZW1hJywgJ3ZlcnNpb24nLCAncHJvamVjdHMnXSxcbiAgICAgICAgbGlzdGVuZXIocGF0aCwgdmFsdWUpIHtcbiAgICAgICAgICBqc29uTWV0YWRhdGEuYWRkQ2hhbmdlKHBhdGgsIHZhbHVlKTtcbiAgICAgICAgfSxcbiAgICAgIH0pLFxuICB9IGFzIFdvcmtzcGFjZURlZmluaXRpb247XG59XG5cbmZ1bmN0aW9uIHBhcnNlUHJvamVjdHNPYmplY3QoXG4gIHByb2plY3RzTm9kZTogTm9kZSxcbiAgY29udGV4dDogUGFyc2VyQ29udGV4dCxcbik6IFJlY29yZDxzdHJpbmcsIFByb2plY3REZWZpbml0aW9uPiB7XG4gIGNvbnN0IHByb2plY3RzOiBSZWNvcmQ8c3RyaW5nLCBQcm9qZWN0RGVmaW5pdGlvbj4gPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuXG4gIGZvciAoY29uc3QgW25hbWUsIHZhbHVlXSBvZiBPYmplY3QuZW50cmllczxKc29uVmFsdWU+KGdldE5vZGVWYWx1ZShwcm9qZWN0c05vZGUpKSkge1xuICAgIGNvbnN0IG5vZGVzID0gZmluZE5vZGVBdExvY2F0aW9uKHByb2plY3RzTm9kZSwgW25hbWVdKTtcbiAgICBpZiAoIWlzSnNvbk9iamVjdCh2YWx1ZSkgfHwgIW5vZGVzKSB7XG4gICAgICBjb250ZXh0Lndhcm4oJ1NraXBwaW5nIGludmFsaWQgcHJvamVjdCB2YWx1ZTsgZXhwZWN0ZWQgYW4gb2JqZWN0LicsIHZhbHVlKTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIHByb2plY3RzW25hbWVdID0gcGFyc2VQcm9qZWN0KG5hbWUsIG5vZGVzLCBjb250ZXh0KTtcbiAgfVxuXG4gIHJldHVybiBwcm9qZWN0cztcbn1cblxuZnVuY3Rpb24gcGFyc2VQcm9qZWN0KFxuICBwcm9qZWN0TmFtZTogc3RyaW5nLFxuICBwcm9qZWN0Tm9kZTogTm9kZSxcbiAgY29udGV4dDogUGFyc2VyQ29udGV4dCxcbik6IFByb2plY3REZWZpbml0aW9uIHtcbiAgY29uc3QganNvbk1ldGFkYXRhID0gY29udGV4dC5tZXRhZGF0YTtcbiAgbGV0IHRhcmdldHM7XG4gIGxldCBoYXNUYXJnZXRzID0gZmFsc2U7XG4gIGxldCBleHRlbnNpb25zOiBSZWNvcmQ8c3RyaW5nLCBKc29uVmFsdWU+IHwgdW5kZWZpbmVkO1xuICBsZXQgcHJvcGVydGllczogUmVjb3JkPCdyb290JyB8ICdzb3VyY2VSb290JyB8ICdwcmVmaXgnLCBzdHJpbmc+IHwgdW5kZWZpbmVkO1xuICBpZiAoIWNvbnRleHQudHJhY2tDaGFuZ2VzKSB7XG4gICAgLy8gSWYgbm90IHRyYWNraW5nIGNoYW5nZXMsIHRoZSBwYXJzZXIgd2lsbCBzdG9yZSB0aGUgdmFsdWVzIGRpcmVjdGx5IGluIHN0YW5kYXJkIG9iamVjdHNcbiAgICBleHRlbnNpb25zID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgICBwcm9wZXJ0aWVzID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgfVxuXG4gIGNvbnN0IHByb2plY3ROb2RlVmFsdWUgPSBnZXROb2RlVmFsdWUocHJvamVjdE5vZGUpO1xuICBpZiAoISgncm9vdCcgaW4gcHJvamVjdE5vZGVWYWx1ZSkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYFByb2plY3QgXCIke3Byb2plY3ROYW1lfVwiIGlzIG1pc3NpbmcgYSByZXF1aXJlZCBwcm9wZXJ0eSBcInJvb3RcIi5gKTtcbiAgfVxuXG4gIGZvciAoY29uc3QgW25hbWUsIHZhbHVlXSBvZiBPYmplY3QuZW50cmllczxKc29uVmFsdWU+KHByb2plY3ROb2RlVmFsdWUpKSB7XG4gICAgc3dpdGNoIChuYW1lKSB7XG4gICAgICBjYXNlICd0YXJnZXRzJzpcbiAgICAgIGNhc2UgJ2FyY2hpdGVjdCc6XG4gICAgICAgIGNvbnN0IG5vZGVzID0gZmluZE5vZGVBdExvY2F0aW9uKHByb2plY3ROb2RlLCBbbmFtZV0pO1xuICAgICAgICBpZiAoIWlzSnNvbk9iamVjdCh2YWx1ZSkgfHwgIW5vZGVzKSB7XG4gICAgICAgICAgY29udGV4dC5lcnJvcihgSW52YWxpZCBcIiR7bmFtZX1cIiBmaWVsZCBmb3VuZDsgZXhwZWN0ZWQgYW4gb2JqZWN0LmAsIHZhbHVlKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBoYXNUYXJnZXRzID0gdHJ1ZTtcbiAgICAgICAgdGFyZ2V0cyA9IHBhcnNlVGFyZ2V0c09iamVjdChwcm9qZWN0TmFtZSwgbm9kZXMsIGNvbnRleHQpO1xuICAgICAgICBqc29uTWV0YWRhdGEuaGFzTGVnYWN5VGFyZ2V0c05hbWUgPSBuYW1lID09PSAnYXJjaGl0ZWN0JztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdwcmVmaXgnOlxuICAgICAgY2FzZSAncm9vdCc6XG4gICAgICBjYXNlICdzb3VyY2VSb290JzpcbiAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ3N0cmluZycpIHtcbiAgICAgICAgICBjb250ZXh0Lndhcm4oYFByb2plY3QgcHJvcGVydHkgXCIke25hbWV9XCIgc2hvdWxkIGJlIGEgc3RyaW5nLmAsIHZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocHJvcGVydGllcykge1xuICAgICAgICAgIHByb3BlcnRpZXNbbmFtZV0gPSB2YWx1ZSBhcyBzdHJpbmc7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBpZiAoIWNvbnRleHQudW5wcmVmaXhlZFByb2plY3RFeHRlbnNpb25zLmhhcyhuYW1lKSAmJiAhL15bYS16XXsxLDN9LS4qLy50ZXN0KG5hbWUpKSB7XG4gICAgICAgICAgY29udGV4dC53YXJuKFxuICAgICAgICAgICAgYFByb2plY3QgJyR7cHJvamVjdE5hbWV9JyBjb250YWlucyBleHRlbnNpb24gd2l0aCBpbnZhbGlkIG5hbWUgKCR7bmFtZX0pLmAsXG4gICAgICAgICAgICBuYW1lLFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGV4dGVuc2lvbnMpIHtcbiAgICAgICAgICBleHRlbnNpb25zW25hbWVdID0gdmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgbGV0IGNvbGxlY3Rpb25MaXN0ZW5lcjogRGVmaW5pdGlvbkNvbGxlY3Rpb25MaXN0ZW5lcjxUYXJnZXREZWZpbml0aW9uPiB8IHVuZGVmaW5lZDtcbiAgaWYgKGNvbnRleHQudHJhY2tDaGFuZ2VzKSB7XG4gICAgY29sbGVjdGlvbkxpc3RlbmVyID0gKG5hbWUsIG5ld1ZhbHVlLCBjb2xsZWN0aW9uKSA9PiB7XG4gICAgICBpZiAoaGFzVGFyZ2V0cykge1xuICAgICAgICBqc29uTWV0YWRhdGEuYWRkQ2hhbmdlKFsncHJvamVjdHMnLCBwcm9qZWN0TmFtZSwgJ3RhcmdldHMnLCBuYW1lXSwgbmV3VmFsdWUsICd0YXJnZXQnKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGpzb25NZXRhZGF0YS5hZGRDaGFuZ2UoXG4gICAgICAgICAgWydwcm9qZWN0cycsIHByb2plY3ROYW1lLCAndGFyZ2V0cyddLFxuICAgICAgICAgIGNvbGxlY3Rpb24sXG4gICAgICAgICAgJ3RhcmdldGNvbGxlY3Rpb24nLFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH07XG4gIH1cblxuICBjb25zdCBiYXNlID0ge1xuICAgIHRhcmdldHM6IG5ldyBUYXJnZXREZWZpbml0aW9uQ29sbGVjdGlvbih0YXJnZXRzLCBjb2xsZWN0aW9uTGlzdGVuZXIpLFxuICAgIC8vIElmIG5vdCB0cmFja2luZyBjaGFuZ2VzIHRoZSBgZXh0ZW5zaW9uc2AgdmFyaWFibGUgd2lsbCBjb250YWluIHRoZSBwYXJzZWRcbiAgICAvLyB2YWx1ZXMuICBPdGhlcndpc2UgdGhlIGV4dGVuc2lvbnMgYXJlIHRyYWNrZWQgdmlhIGEgdmlydHVhbCBBU1Qgb2JqZWN0LlxuICAgIGV4dGVuc2lvbnM6XG4gICAgICBleHRlbnNpb25zID8/XG4gICAgICBjcmVhdGVWaXJ0dWFsQXN0T2JqZWN0KHByb2plY3ROb2RlVmFsdWUsIHtcbiAgICAgICAgZXhjbHVkZTogWydhcmNoaXRlY3QnLCAncHJlZml4JywgJ3Jvb3QnLCAnc291cmNlUm9vdCcsICd0YXJnZXRzJ10sXG4gICAgICAgIGxpc3RlbmVyKHBhdGgsIHZhbHVlKSB7XG4gICAgICAgICAganNvbk1ldGFkYXRhLmFkZENoYW5nZShbJ3Byb2plY3RzJywgcHJvamVjdE5hbWUsIC4uLnBhdGhdLCB2YWx1ZSk7XG4gICAgICAgIH0sXG4gICAgICB9KSxcbiAgfTtcblxuICBjb25zdCBiYXNlS2V5cyA9IG5ldyBTZXQoT2JqZWN0LmtleXMoYmFzZSkpO1xuICBjb25zdCBwcm9qZWN0ID1cbiAgICBwcm9wZXJ0aWVzID8/XG4gICAgY3JlYXRlVmlydHVhbEFzdE9iamVjdDxQcm9qZWN0RGVmaW5pdGlvbj4ocHJvamVjdE5vZGVWYWx1ZSwge1xuICAgICAgaW5jbHVkZTogWydwcmVmaXgnLCAncm9vdCcsICdzb3VyY2VSb290JywgLi4uYmFzZUtleXNdLFxuICAgICAgbGlzdGVuZXIocGF0aCwgdmFsdWUpIHtcbiAgICAgICAgaWYgKCFiYXNlS2V5cy5oYXMocGF0aFswXSkpIHtcbiAgICAgICAgICBqc29uTWV0YWRhdGEuYWRkQ2hhbmdlKFsncHJvamVjdHMnLCBwcm9qZWN0TmFtZSwgLi4ucGF0aF0sIHZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICB9KTtcblxuICByZXR1cm4gT2JqZWN0LmFzc2lnbihwcm9qZWN0LCBiYXNlKSBhcyBQcm9qZWN0RGVmaW5pdGlvbjtcbn1cblxuZnVuY3Rpb24gcGFyc2VUYXJnZXRzT2JqZWN0KFxuICBwcm9qZWN0TmFtZTogc3RyaW5nLFxuICB0YXJnZXRzTm9kZTogTm9kZSxcbiAgY29udGV4dDogUGFyc2VyQ29udGV4dCxcbik6IFJlY29yZDxzdHJpbmcsIFRhcmdldERlZmluaXRpb24+IHtcbiAgY29uc3QganNvbk1ldGFkYXRhID0gY29udGV4dC5tZXRhZGF0YTtcbiAgY29uc3QgdGFyZ2V0czogUmVjb3JkPHN0cmluZywgVGFyZ2V0RGVmaW5pdGlvbj4gPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuXG4gIGZvciAoY29uc3QgW25hbWUsIHZhbHVlXSBvZiBPYmplY3QuZW50cmllczxKc29uVmFsdWU+KGdldE5vZGVWYWx1ZSh0YXJnZXRzTm9kZSkpKSB7XG4gICAgaWYgKCFpc0pzb25PYmplY3QodmFsdWUpKSB7XG4gICAgICBjb250ZXh0Lndhcm4oJ1NraXBwaW5nIGludmFsaWQgdGFyZ2V0IHZhbHVlOyBleHBlY3RlZCBhbiBvYmplY3QuJywgdmFsdWUpO1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgaWYgKGNvbnRleHQudHJhY2tDaGFuZ2VzKSB7XG4gICAgICB0YXJnZXRzW25hbWVdID0gY3JlYXRlVmlydHVhbEFzdE9iamVjdDxUYXJnZXREZWZpbml0aW9uPih2YWx1ZSwge1xuICAgICAgICBpbmNsdWRlOiBbJ2J1aWxkZXInLCAnb3B0aW9ucycsICdjb25maWd1cmF0aW9ucycsICdkZWZhdWx0Q29uZmlndXJhdGlvbiddLFxuICAgICAgICBsaXN0ZW5lcihwYXRoLCB2YWx1ZSkge1xuICAgICAgICAgIGpzb25NZXRhZGF0YS5hZGRDaGFuZ2UoWydwcm9qZWN0cycsIHByb2plY3ROYW1lLCAndGFyZ2V0cycsIG5hbWUsIC4uLnBhdGhdLCB2YWx1ZSk7XG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGFyZ2V0c1tuYW1lXSA9IHZhbHVlIGFzIHVua25vd24gYXMgVGFyZ2V0RGVmaW5pdGlvbjtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdGFyZ2V0cztcbn1cbiJdfQ==
@@ -10,7 +10,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
10
10
  exports.createVirtualAstObject = void 0;
11
11
  const json_1 = require("../../json");
12
12
  function createVirtualAstObject(root, options = {}) {
13
- var _a;
14
13
  const reporter = (path, target, oldValue, newValue) => {
15
14
  if (!options.listener) {
16
15
  return;
@@ -28,7 +27,7 @@ function createVirtualAstObject(root, options = {}) {
28
27
  options.listener(path, newValue);
29
28
  }
30
29
  };
31
- return create(Array.isArray(root) ? [...root] : { ...root }, [], reporter, new Set(options.exclude), ((_a = options.include) === null || _a === void 0 ? void 0 : _a.length) ? new Set(options.include) : undefined);
30
+ return create(Array.isArray(root) ? [...root] : { ...root }, [], reporter, new Set(options.exclude), options.include?.length ? new Set(options.include) : undefined);
32
31
  }
33
32
  exports.createVirtualAstObject = createVirtualAstObject;
34
33
  function create(obj, path, reporter, excluded = new Set(), included) {
@@ -61,13 +60,12 @@ function create(obj, path, reporter, excluded = new Set(), included) {
61
60
  }
62
61
  },
63
62
  set(target, p, value) {
64
- var _a, _b;
65
63
  if (excluded.has(p) || (included && !included.has(p))) {
66
64
  return false;
67
65
  }
68
66
  if (value === undefined) {
69
67
  // setting to undefined is equivalent to a delete.
70
- return (_b = (_a = this.deleteProperty) === null || _a === void 0 ? void 0 : _a.call(this, target, p)) !== null && _b !== void 0 ? _b : false;
68
+ return this.deleteProperty?.(target, p) ?? false;
71
69
  }
72
70
  if (typeof p === 'symbol') {
73
71
  return Reflect.set(target, p, value);
@@ -113,4 +111,4 @@ function getCurrentValue(target, property) {
113
111
  }
114
112
  return undefined;
115
113
  }
116
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbGl0aWVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvYW5ndWxhcl9kZXZraXQvY29yZS9zcmMvd29ya3NwYWNlL2pzb24vdXRpbGl0aWVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7O0dBTUc7OztBQUVILHFDQUE0RTtBQWU1RSxTQUFnQixzQkFBc0IsQ0FDcEMsSUFBNEIsRUFDNUIsVUFJSSxFQUFFOztJQUVOLE1BQU0sUUFBUSxHQUFtQixDQUFDLElBQUksRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxFQUFFO1FBQ3BFLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFO1lBQ3JCLE9BQU87U0FDUjtRQUVELElBQUksUUFBUSxLQUFLLFFBQVEsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxLQUFLLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLEVBQUU7WUFDbEYsYUFBYTtZQUNiLE9BQU87U0FDUjtRQUVELElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUN6Qix3RUFBd0U7WUFDeEUscURBQXFEO1lBQ3JELE9BQU8sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQztTQUM3QzthQUFNO1lBQ0wsT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDLENBQUM7U0FDbEM7SUFDSCxDQUFDLENBQUM7SUFFRixPQUFPLE1BQU0sQ0FDWCxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxJQUFJLEVBQUUsRUFDN0MsRUFBRSxFQUNGLFFBQVEsRUFDUixJQUFJLEdB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Q0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLFFBQVEsSUFBSSxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQzFELENBQUM7UUFDSixDQUFDO0tBQ0YsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQUVELFNBQVMsZUFBZSxDQUFDLE1BQWMsRUFBRSxRQUFnQjtJQUN2RCxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUU7UUFDaEQsT0FBTyxNQUFNLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQztLQUMxQjtJQUVELElBQUksTUFBTSxJQUFJLFFBQVEsSUFBSSxNQUFNLEVBQUU7UUFDaEMsT0FBUSxNQUFxQixDQUFDLFFBQVEsQ0FBQyxDQUFDO0tBQ3pDO0lBRUQsT0FBTyxTQUFTLENBQUM7QUFDbkIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQgeyBKc29uQXJyYXksIEpzb25PYmplY3QsIEpzb25WYWx1ZSwgaXNKc29uT2JqZWN0IH0gZnJvbSAnLi4vLi4vanNvbic7XG5cbmV4cG9ydCB0eXBlIENoYW5nZUxpc3RlbmVyID0gKHBhdGg6IHN0cmluZ1tdLCBuZXdWYWx1ZTogSnNvblZhbHVlIHwgdW5kZWZpbmVkKSA9PiB2b2lkO1xuXG50eXBlIENoYW5nZVJlcG9ydGVyID0gKFxuICBwYXRoOiBzdHJpbmdbXSxcbiAgdGFyZ2V0OiBKc29uT2JqZWN0IHwgSnNvbkFycmF5LFxuICBvbGRWYWx1ZTogSnNvblZhbHVlIHwgdW5kZWZpbmVkLFxuICBuZXdWYWx1ZTogSnNvblZhbHVlIHwgdW5kZWZpbmVkLFxuKSA9PiB2b2lkO1xuXG4vLyBsaWIuZXM1IFByb3BlcnR5S2V5IGlzIHN0cmluZyB8IG51bWJlciB8IHN5bWJvbCB3aGljaCBkb2Vzbid0IG92ZXJsYXAgUHJveHlIYW5kbGVyIFByb3BlcnR5S2V5IHdoaWNoIGlzIHN0cmluZyB8IHN5bWJvbC5cbi8vIFNlZSBodHRwczovL2dpdGh1Yi5jb20vbWljcm9zb2Z0L1R5cGVTY3JpcHQvaXNzdWVzLzQyODk0XG50eXBlIFByb3h5UHJvcGVydHlLZXkgPSBzdHJpbmcgfCBzeW1ib2w7XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVWaXJ0dWFsQXN0T2JqZWN0PFQgZXh0ZW5kcyBvYmplY3QgPSBKc29uT2JqZWN0PihcbiAgcm9vdDogSnNvbk9iamVjdCB8IEpzb25BcnJheSxcbiAgb3B0aW9uczoge1xuICAgIGV4Y2x1ZGU/OiBzdHJpbmdbXTtcbiAgICBpbmNsdWRlPzogc3RyaW5nW107XG4gICAgbGlzdGVuZXI/OiBDaGFuZ2VMaXN0ZW5lcjtcbiAgfSA9IHt9LFxuKTogVCB7XG4gIGNvbnN0IHJlcG9ydGVyOiBDaGFuZ2VSZXBvcnRlciA9IChwYXRoLCB0YXJnZXQsIG9sZFZhbHVlLCBuZXdWYWx1ZSkgPT4ge1xuICAgIGlmICghb3B0aW9ucy5saXN0ZW5lcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChvbGRWYWx1ZSA9PT0gbmV3VmFsdWUgfHwgSlNPTi5zdHJpbmdpZnkob2xkVmFsdWUpID09PSBKU09OLnN0cmluZ2lmeShuZXdWYWx1ZSkpIHtcbiAgICAgIC8vIHNhbWUgdmFsdWVcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoQXJyYXkuaXNBcnJheSh0YXJnZXQpKSB7XG4gICAgICAvLyBGb3IgYXJyYXlzIHdlIHJlbW92ZSB0aGUgaW5kZXggYW5kIHVwZGF0ZSB0aGUgZW50aXJlIHZhbHVlIGFzIGtlZXBpbmdcbiAgICAgIC8vIHRyYWNrIG9mIGNoYW5nZXMgYnkgaW5kaWNlcyBjYW4gYmUgcmF0aGVyIGNvbXBsZXguXG4gICAgICBvcHRpb25zLmxpc3RlbmVyKHBhdGguc2xpY2UoMCwgLTEpLCB0YXJnZXQpO1xuICAgIH0gZWxzZSB7XG4gICAgICBvcHRpb25zLmxpc3RlbmVyKHBhdGgsIG5ld1ZhbHVlKTtcbiAgICB9XG4gIH07XG5cbiAgcmV0dXJuIGNyZWF0ZShcbiAgICBBcnJheS5pc0FycmF5KHJvb3QpID8gWy4uLnJvb3RdIDogeyAuLi5yb290IH0sXG4gICAgW10sXG4gICAgcmVwb3J0ZXIsXG4gICAgbmV3IFNldChvcHRpb25zLmV4Y2x1ZGUpLFxuICAgIG9wdGlvbnMuaW5jbHVkZT8ubGVuZ3RoID8gbmV3IFNldChvcHRpb25zLmluY2x1ZGUpIDogdW5kZWZpbmVkLFxuICApIGFzIFQ7XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZShcbiAgb2JqOiBKc29uT2JqZWN0IHwgSnNvbkFycmF5LFxuICBwYXRoOiBzdHJpbmdbXSxcbiAgcmVwb3J0ZXI6IENoYW5nZVJlcG9ydGVyLFxuICBleGNsdWRlZCA9IG5ldyBTZXQ8UHJveHlQcm9wZXJ0eUtleT4oKSxcbiAgaW5jbHVkZWQ/OiBTZXQ8UHJveHlQcm9wZXJ0eUtleT4sXG4pIHtcbiAgcmV0dXJuIG5ldyBQcm94eShvYmosIHtcbiAgICBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodGFyZ2V0OiB7fSwgcDogUHJveHlQcm9wZXJ0eUtleSk6IFByb3BlcnR5RGVzY3JpcHRvciB8IHVuZGVmaW5lZCB7XG4gICAgICBpZiAoZXhjbHVkZWQuaGFzKHApIHx8IChpbmNsdWRlZCAmJiAhaW5jbHVkZWQuaGFzKHApKSkge1xuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gUmVmbGVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodGFyZ2V0LCBwKTtcbiAgICB9LFxuICAgIGhhcyh0YXJnZXQ6IHt9LCBwOiBQcm94eVByb3BlcnR5S2V5KTogYm9vbGVhbiB7XG4gICAgICBpZiAodHlwZW9mIHAgPT09ICdzeW1ib2wnIHx8IGV4Y2x1ZGVkLmhhcyhwKSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBSZWZsZWN0Lmhhcyh0YXJnZXQsIHApO1xuICAgIH0sXG4gICAgZ2V0KHRhcmdldDoge30sIHA6IFByb3h5UHJvcGVydHlLZXkpOiB1bmtub3duIHtcbiAgICAgIGlmIChleGNsdWRlZC5oYXMocCkgfHwgKGluY2x1ZGVkICYmICFpbmNsdWRlZC5oYXMocCkpKSB7XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHZhbHVlID0gUmVmbGVjdC5nZXQodGFyZ2V0LCBwKTtcbiAgICAgIGlmICh0eXBlb2YgcCA9PT0gJ3N5bWJvbCcpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgfVxuXG4gICAgICBpZiAoKGlzSnNvbk9iamVjdCh2YWx1ZSkgJiYgISh2YWx1ZSBpbnN0YW5jZW9mIE1hcCkpIHx8IEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiBjcmVhdGUodmFsdWUsIFsuLi5wYXRoLCBwXSwgcmVwb3J0ZXIpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgfVxuICAgIH0sXG4gICAgc2V0KHRhcmdldDoge30sIHA6IFByb3h5UHJvcGVydHlLZXksIHZhbHVlOiB1bmtub3duKTogYm9vbGVhbiB7XG4gICAgICBpZiAoZXhjbHVkZWQuaGFzKHApIHx8IChpbmNsdWRlZCAmJiAhaW5jbHVkZWQuaGFzKHApKSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG5cbiAgICAgIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIC8vIHNldHRpbmcgdG8gdW5kZWZpbmVkIGlzIGVxdWl2YWxlbnQgdG8gYSBkZWxldGUuXG4gICAgICAgIHJldHVybiB0aGlzLmRlbGV0ZVByb3BlcnR5Py4odGFyZ2V0LCBwKSA/PyBmYWxzZTtcbiAgICAgIH1cblxuICAgICAgaWYgKHR5cGVvZiBwID09PSAnc3ltYm9sJykge1xuICAgICAgICByZXR1cm4gUmVmbGVjdC5zZXQodGFyZ2V0LCBwLCB2YWx1ZSk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGV4aXN0aW5nVmFsdWUgPSBnZXRDdXJyZW50VmFsdWUodGFyZ2V0LCBwKTtcbiAgICAgIGlmIChSZWZsZWN0LnNldCh0YXJnZXQsIHAsIHZhbHVlKSkge1xuICAgICAgICByZXBvcnRlcihbLi4ucGF0aCwgcF0sIHRhcmdldCwgZXhpc3RpbmdWYWx1ZSwgdmFsdWUgYXMgSnNvblZhbHVlKTtcblxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH0sXG4gICAgZGVsZXRlUHJvcGVydHkodGFyZ2V0OiB7fSwgcDogUHJveHlQcm9wZXJ0eUtleSk6IGJvb2xlYW4ge1xuICAgICAgaWYgKGV4Y2x1ZGVkLmhhcyhwKSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG5cbiAgICAgIGlmICh0eXBlb2YgcCA9PT0gJ3N5bWJvbCcpIHtcbiAgICAgICAgcmV0dXJuIFJlZmxlY3QuZGVsZXRlUHJvcGVydHkodGFyZ2V0LCBwKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgZXhpc3RpbmdWYWx1ZSA9IGdldEN1cnJlbnRWYWx1ZSh0YXJnZXQsIHApO1xuICAgICAgaWYgKFJlZmxlY3QuZGVsZXRlUHJvcGVydHkodGFyZ2V0LCBwKSkge1xuICAgICAgICByZXBvcnRlcihbLi4ucGF0aCwgcF0sIHRhcmdldCwgZXhpc3RpbmdWYWx1ZSwgdW5kZWZpbmVkKTtcblxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSxcbiAgICBkZWZpbmVQcm9wZXJ0eSh0YXJnZXQ6IHt9LCBwOiBQcm94eVByb3BlcnR5S2V5LCBhdHRyaWJ1dGVzOiBQcm9wZXJ0eURlc2NyaXB0b3IpOiBib29sZWFuIHtcbiAgICAgIGlmICh0eXBlb2YgcCA9PT0gJ3N5bWJvbCcpIHtcbiAgICAgICAgcmV0dXJuIFJlZmxlY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBwLCBhdHRyaWJ1dGVzKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH0sXG4gICAgb3duS2V5cyh0YXJnZXQ6IHt9KTogUHJveHlQcm9wZXJ0eUtleVtdIHtcbiAgICAgIHJldHVybiBSZWZsZWN0Lm93bktleXModGFyZ2V0KS5maWx0ZXIoXG4gICAgICAgIChwKSA9PiAhZXhjbHVkZWQuaGFzKHApICYmICghaW5jbHVkZWQgfHwgaW5jbHVkZWQuaGFzKHApKSxcbiAgICAgICk7XG4gICAgfSxcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIGdldEN1cnJlbnRWYWx1ZSh0YXJnZXQ6IG9iamVjdCwgcHJvcGVydHk6IHN0cmluZyk6IEpzb25WYWx1ZSB8IHVuZGVmaW5lZCB7XG4gIGlmIChBcnJheS5pc0FycmF5KHRhcmdldCkgJiYgaXNGaW5pdGUoK3Byb3BlcnR5KSkge1xuICAgIHJldHVybiB0YXJnZXRbK3Byb3BlcnR5XTtcbiAgfVxuXG4gIGlmICh0YXJnZXQgJiYgcHJvcGVydHkgaW4gdGFyZ2V0KSB7XG4gICAgcmV0dXJuICh0YXJnZXQgYXMgSnNvbk9iamVjdClbcHJvcGVydHldO1xuICB9XG5cbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn1cbiJdfQ==
114
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbGl0aWVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvYW5ndWxhcl9kZXZraXQvY29yZS9zcmMvd29ya3NwYWNlL2pzb24vdXRpbGl0aWVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7O0dBTUc7OztBQUVILHFDQUE0RTtBQWU1RSxTQUFnQixzQkFBc0IsQ0FDcEMsSUFBNEIsRUFDNUIsVUFJSSxFQUFFO0lBRU4sTUFBTSxRQUFRLEdBQW1CLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLEVBQUU7UUFDcEUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUU7WUFDckIsT0FBTztTQUNSO1FBRUQsSUFBSSxRQUFRLEtBQUssUUFBUSxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLEtBQUssSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsRUFBRTtZQUNsRixhQUFhO1lBQ2IsT0FBTztTQUNSO1FBRUQsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQ3pCLHdFQUF3RTtZQUN4RSxxREFBcUQ7WUFDckQsT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1NBQzdDO2FBQU07WUFDTCxPQUFPLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxRQUFRLENBQUMsQ0FBQztTQUNsQztJQUNILENBQUMsQ0FBQztJQUVGLE9BQU8sTUFBTSxDQUNYLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLElBQUksRUFBRSxFQUM3QyxFQUFFLEVBQ0YsUUFBUSxFQUNSLElBQUksR0FB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Q0FBQyxJQUFJLENBQUMsQ0FBQyxRQUFRLElBQUksUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUMxRCxDQUFDO1FBQ0osQ0FBQztLQUNGLENBQUMsQ0FBQztBQUNMLENBQUM7QUFFRCxTQUFTLGVBQWUsQ0FBQyxNQUFjLEVBQUUsUUFBZ0I7SUFDdkQsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUFFO1FBQ2hELE9BQU8sTUFBTSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUM7S0FDMUI7SUFFRCxJQUFJLE1BQU0sSUFBSSxRQUFRLElBQUksTUFBTSxFQUFFO1FBQ2hDLE9BQVEsTUFBcUIsQ0FBQyxRQUFRLENBQUMsQ0FBQztLQUN6QztJQUVELE9BQU8sU0FBUyxDQUFDO0FBQ25CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0IHsgSnNvbkFycmF5LCBKc29uT2JqZWN0LCBKc29uVmFsdWUsIGlzSnNvbk9iamVjdCB9IGZyb20gJy4uLy4uL2pzb24nO1xuXG5leHBvcnQgdHlwZSBDaGFuZ2VMaXN0ZW5lciA9IChwYXRoOiBzdHJpbmdbXSwgbmV3VmFsdWU6IEpzb25WYWx1ZSB8IHVuZGVmaW5lZCkgPT4gdm9pZDtcblxudHlwZSBDaGFuZ2VSZXBvcnRlciA9IChcbiAgcGF0aDogc3RyaW5nW10sXG4gIHRhcmdldDogSnNvbk9iamVjdCB8IEpzb25BcnJheSxcbiAgb2xkVmFsdWU6IEpzb25WYWx1ZSB8IHVuZGVmaW5lZCxcbiAgbmV3VmFsdWU6IEpzb25WYWx1ZSB8IHVuZGVmaW5lZCxcbikgPT4gdm9pZDtcblxuLy8gbGliLmVzNSBQcm9wZXJ0eUtleSBpcyBzdHJpbmcgfCBudW1iZXIgfCBzeW1ib2wgd2hpY2ggZG9lc24ndCBvdmVybGFwIFByb3h5SGFuZGxlciBQcm9wZXJ0eUtleSB3aGljaCBpcyBzdHJpbmcgfCBzeW1ib2wuXG4vLyBTZWUgaHR0cHM6Ly9naXRodWIuY29tL21pY3Jvc29mdC9UeXBlU2NyaXB0L2lzc3Vlcy80Mjg5NFxudHlwZSBQcm94eVByb3BlcnR5S2V5ID0gc3RyaW5nIHwgc3ltYm9sO1xuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlVmlydHVhbEFzdE9iamVjdDxUIGV4dGVuZHMgb2JqZWN0ID0gSnNvbk9iamVjdD4oXG4gIHJvb3Q6IEpzb25PYmplY3QgfCBKc29uQXJyYXksXG4gIG9wdGlvbnM6IHtcbiAgICBleGNsdWRlPzogc3RyaW5nW107XG4gICAgaW5jbHVkZT86IHN0cmluZ1tdO1xuICAgIGxpc3RlbmVyPzogQ2hhbmdlTGlzdGVuZXI7XG4gIH0gPSB7fSxcbik6IFQge1xuICBjb25zdCByZXBvcnRlcjogQ2hhbmdlUmVwb3J0ZXIgPSAocGF0aCwgdGFyZ2V0LCBvbGRWYWx1ZSwgbmV3VmFsdWUpID0+IHtcbiAgICBpZiAoIW9wdGlvbnMubGlzdGVuZXIpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAob2xkVmFsdWUgPT09IG5ld1ZhbHVlIHx8IEpTT04uc3RyaW5naWZ5KG9sZFZhbHVlKSA9PT0gSlNPTi5zdHJpbmdpZnkobmV3VmFsdWUpKSB7XG4gICAgICAvLyBzYW1lIHZhbHVlXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKEFycmF5LmlzQXJyYXkodGFyZ2V0KSkge1xuICAgICAgLy8gRm9yIGFycmF5cyB3ZSByZW1vdmUgdGhlIGluZGV4IGFuZCB1cGRhdGUgdGhlIGVudGlyZSB2YWx1ZSBhcyBrZWVwaW5nXG4gICAgICAvLyB0cmFjayBvZiBjaGFuZ2VzIGJ5IGluZGljZXMgY2FuIGJlIHJhdGhlciBjb21wbGV4LlxuICAgICAgb3B0aW9ucy5saXN0ZW5lcihwYXRoLnNsaWNlKDAsIC0xKSwgdGFyZ2V0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgb3B0aW9ucy5saXN0ZW5lcihwYXRoLCBuZXdWYWx1ZSk7XG4gICAgfVxuICB9O1xuXG4gIHJldHVybiBjcmVhdGUoXG4gICAgQXJyYXkuaXNBcnJheShyb290KSA/IFsuLi5yb290XSA6IHsgLi4ucm9vdCB9LFxuICAgIFtdLFxuICAgIHJlcG9ydGVyLFxuICAgIG5ldyBTZXQob3B0aW9ucy5leGNsdWRlKSxcbiAgICBvcHRpb25zLmluY2x1ZGU/Lmxlbmd0aCA/IG5ldyBTZXQob3B0aW9ucy5pbmNsdWRlKSA6IHVuZGVmaW5lZCxcbiAgKSBhcyBUO1xufVxuXG5mdW5jdGlvbiBjcmVhdGUoXG4gIG9iajogSnNvbk9iamVjdCB8IEpzb25BcnJheSxcbiAgcGF0aDogc3RyaW5nW10sXG4gIHJlcG9ydGVyOiBDaGFuZ2VSZXBvcnRlcixcbiAgZXhjbHVkZWQgPSBuZXcgU2V0PFByb3h5UHJvcGVydHlLZXk+KCksXG4gIGluY2x1ZGVkPzogU2V0PFByb3h5UHJvcGVydHlLZXk+LFxuKSB7XG4gIHJldHVybiBuZXcgUHJveHkob2JqLCB7XG4gICAgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRhcmdldDoge30sIHA6IFByb3h5UHJvcGVydHlLZXkpOiBQcm9wZXJ0eURlc2NyaXB0b3IgfCB1bmRlZmluZWQge1xuICAgICAgaWYgKGV4Y2x1ZGVkLmhhcyhwKSB8fCAoaW5jbHVkZWQgJiYgIWluY2x1ZGVkLmhhcyhwKSkpIHtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIFJlZmxlY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRhcmdldCwgcCk7XG4gICAgfSxcbiAgICBoYXModGFyZ2V0OiB7fSwgcDogUHJveHlQcm9wZXJ0eUtleSk6IGJvb2xlYW4ge1xuICAgICAgaWYgKHR5cGVvZiBwID09PSAnc3ltYm9sJyB8fCBleGNsdWRlZC5oYXMocCkpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gUmVmbGVjdC5oYXModGFyZ2V0LCBwKTtcbiAgICB9LFxuICAgIGdldCh0YXJnZXQ6IHt9LCBwOiBQcm94eVByb3BlcnR5S2V5KTogdW5rbm93biB7XG4gICAgICBpZiAoZXhjbHVkZWQuaGFzKHApIHx8IChpbmNsdWRlZCAmJiAhaW5jbHVkZWQuaGFzKHApKSkge1xuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgfVxuXG4gICAgICBjb25zdCB2YWx1ZSA9IFJlZmxlY3QuZ2V0KHRhcmdldCwgcCk7XG4gICAgICBpZiAodHlwZW9mIHAgPT09ICdzeW1ib2wnKSB7XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKChpc0pzb25PYmplY3QodmFsdWUpICYmICEodmFsdWUgaW5zdGFuY2VvZiBNYXApKSB8fCBBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgICByZXR1cm4gY3JlYXRlKHZhbHVlLCBbLi4ucGF0aCwgcF0sIHJlcG9ydGVyKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgIH1cbiAgICB9LFxuICAgIHNldCh0YXJnZXQ6IHt9LCBwOiBQcm94eVByb3BlcnR5S2V5LCB2YWx1ZTogdW5rbm93bik6IGJvb2xlYW4ge1xuICAgICAgaWYgKGV4Y2x1ZGVkLmhhcyhwKSB8fCAoaW5jbHVkZWQgJiYgIWluY2x1ZGVkLmhhcyhwKSkpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuXG4gICAgICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAvLyBzZXR0aW5nIHRvIHVuZGVmaW5lZCBpcyBlcXVpdmFsZW50IHRvIGEgZGVsZXRlLlxuICAgICAgICByZXR1cm4gdGhpcy5kZWxldGVQcm9wZXJ0eT8uKHRhcmdldCwgcCkgPz8gZmFsc2U7XG4gICAgICB9XG5cbiAgICAgIGlmICh0eXBlb2YgcCA9PT0gJ3N5bWJvbCcpIHtcbiAgICAgICAgcmV0dXJuIFJlZmxlY3Quc2V0KHRhcmdldCwgcCwgdmFsdWUpO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBleGlzdGluZ1ZhbHVlID0gZ2V0Q3VycmVudFZhbHVlKHRhcmdldCwgcCk7XG4gICAgICBpZiAoUmVmbGVjdC5zZXQodGFyZ2V0LCBwLCB2YWx1ZSkpIHtcbiAgICAgICAgcmVwb3J0ZXIoWy4uLnBhdGgsIHBdLCB0YXJnZXQsIGV4aXN0aW5nVmFsdWUsIHZhbHVlIGFzIEpzb25WYWx1ZSk7XG5cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9LFxuICAgIGRlbGV0ZVByb3BlcnR5KHRhcmdldDoge30sIHA6IFByb3h5UHJvcGVydHlLZXkpOiBib29sZWFuIHtcbiAgICAgIGlmIChleGNsdWRlZC5oYXMocCkpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuXG4gICAgICBpZiAodHlwZW9mIHAgPT09ICdzeW1ib2wnKSB7XG4gICAgICAgIHJldHVybiBSZWZsZWN0LmRlbGV0ZVByb3BlcnR5KHRhcmdldCwgcCk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGV4aXN0aW5nVmFsdWUgPSBnZXRDdXJyZW50VmFsdWUodGFyZ2V0LCBwKTtcbiAgICAgIGlmIChSZWZsZWN0LmRlbGV0ZVByb3BlcnR5KHRhcmdldCwgcCkpIHtcbiAgICAgICAgcmVwb3J0ZXIoWy4uLnBhdGgsIHBdLCB0YXJnZXQsIGV4aXN0aW5nVmFsdWUsIHVuZGVmaW5lZCk7XG5cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0sXG4gICAgZGVmaW5lUHJvcGVydHkodGFyZ2V0OiB7fSwgcDogUHJveHlQcm9wZXJ0eUtleSwgYXR0cmlidXRlczogUHJvcGVydHlEZXNjcmlwdG9yKTogYm9vbGVhbiB7XG4gICAgICBpZiAodHlwZW9mIHAgPT09ICdzeW1ib2wnKSB7XG4gICAgICAgIHJldHVybiBSZWZsZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgcCwgYXR0cmlidXRlcyk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9LFxuICAgIG93bktleXModGFyZ2V0OiB7fSk6IFByb3h5UHJvcGVydHlLZXlbXSB7XG4gICAgICByZXR1cm4gUmVmbGVjdC5vd25LZXlzKHRhcmdldCkuZmlsdGVyKFxuICAgICAgICAocCkgPT4gIWV4Y2x1ZGVkLmhhcyhwKSAmJiAoIWluY2x1ZGVkIHx8IGluY2x1ZGVkLmhhcyhwKSksXG4gICAgICApO1xuICAgIH0sXG4gIH0pO1xufVxuXG5mdW5jdGlvbiBnZXRDdXJyZW50VmFsdWUodGFyZ2V0OiBvYmplY3QsIHByb3BlcnR5OiBzdHJpbmcpOiBKc29uVmFsdWUgfCB1bmRlZmluZWQge1xuICBpZiAoQXJyYXkuaXNBcnJheSh0YXJnZXQpICYmIGlzRmluaXRlKCtwcm9wZXJ0eSkpIHtcbiAgICByZXR1cm4gdGFyZ2V0Wytwcm9wZXJ0eV07XG4gIH1cblxuICBpZiAodGFyZ2V0ICYmIHByb3BlcnR5IGluIHRhcmdldCkge1xuICAgIHJldHVybiAodGFyZ2V0IGFzIEpzb25PYmplY3QpW3Byb3BlcnR5XTtcbiAgfVxuXG4gIHJldHVybiB1bmRlZmluZWQ7XG59XG4iXX0=
@@ -18,7 +18,7 @@ async function writeJsonWorkspace(workspace, host, path, options = {}) {
18
18
  }
19
19
  // update existing JSON workspace
20
20
  const data = updateJsonWorkspace(metadata);
21
- return host.writeFile(path !== null && path !== void 0 ? path : metadata.filePath, data);
21
+ return host.writeFile(path ?? metadata.filePath, data);
22
22
  }
23
23
  else {
24
24
  // serialize directly
@@ -128,4 +128,4 @@ function updateJsonWorkspace(metadata) {
128
128
  }
129
129
  return content;
130
130
  }
131
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid3JpdGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvYW5ndWxhcl9kZXZraXQvY29yZS9zcmMvd29ya3NwYWNlL2pzb24vd3JpdGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7O0dBTUc7OztBQUVILCtDQUFrRDtBQUlsRCx5Q0FLb0I7QUFFYixLQUFLLFVBQVUsa0JBQWtCLENBQ3RDLFNBQThCLEVBQzlCLElBQW1CLEVBQ25CLElBQWEsRUFDYixVQUVJLEVBQUU7SUFFTixNQUFNLFFBQVEsR0FBSSxTQUFxQyxDQUFDLDhCQUFtQixDQUFDLENBQUM7SUFFN0UsSUFBSSxRQUFRLEVBQUU7UUFDWixJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsRUFBRTtZQUN4QixPQUFPO1NBQ1I7UUFDRCxpQ0FBaUM7UUFDakMsTUFBTSxJQUFJLEdBQUcsbUJBQW1CLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFM0MsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksYUFBSixJQUFJLGNBQUosSUFBSSxHQUFJLFFBQVEsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUM7S0FDeEQ7U0FBTTtRQUNMLHFCQUFxQjtRQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFO1lBQ1QsTUFBTSxJQUFJLEtBQUssQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO1NBQzVDO1FBRUQsTUFBTSxHQUFHLEdBQUcsb0JBQW9CLENBQUMsU0FBUyxFQUFFLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUM1RCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFFMUMsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztLQUNuQztBQUNILENBQUM7QUE3QkQsZ0RBNkJDO0FBRUQsU0FBUyxvQkFB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QUFFLEdBQUcsUUFBUSxDQUFDO0lBQ2hDLE1BQU0sRUFBRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsR0FBRyxRQUFRLENBQUM7SUFFbkQsS0FBSyxNQUFNLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsSUFBSSxPQUFPLENBQUMsTUFBTSxFQUFFLEVBQUU7UUFDeEQsdURBQXVEO1FBQ3ZELElBQUksb0JBQW9CLElBQUksUUFBUSxDQUFDLENBQUMsQ0FBQyxLQUFLLFNBQVMsRUFBRTtZQUNyRCxRQUFRLENBQUMsQ0FBQyxDQUFDLEdBQUcsV0FBVyxDQUFDO1NBQzNCO1FBRUQsbURBQW1EO1FBQ25ELHlIQUF5SDtRQUN6SCw2R0FBNkc7UUFDN0csTUFBTSxLQUFLLEdBQUcsSUFBQSxxQkFBTSxFQUFDLE9BQU8sRUFBRSxRQUFRLEVBQUUsY0FBYyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsRUFBRTtZQUNuRSxpQkFBaUIsRUFBRTtnQkFDakIsWUFBWSxFQUFFLElBQUk7Z0JBQ2xCLE9BQU8sRUFBRSxDQUFDO2FBQ1g7U0FDRixDQUFDLENBQUM7UUFFSCxPQUFPLEdBQUcsSUFBQSx5QkFBVSxFQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQztLQUN0QztJQUVELE9BQU8sT0FBTyxDQUFDO0FBQ2pCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0IHsgYXBwbHlFZGl0cywgbW9kaWZ5IH0gZnJvbSAnanNvbmMtcGFyc2VyJztcbmltcG9ydCB7IEpzb25PYmplY3QsIEpzb25WYWx1ZSB9IGZyb20gJy4uLy4uL2pzb24nO1xuaW1wb3J0IHsgUHJvamVjdERlZmluaXRpb24sIFRhcmdldERlZmluaXRpb24sIFdvcmtzcGFjZURlZmluaXRpb24gfSBmcm9tICcuLi9kZWZpbml0aW9ucyc7XG5pbXBvcnQgeyBXb3Jrc3BhY2VIb3N0IH0gZnJvbSAnLi4vaG9zdCc7XG5pbXBvcnQge1xuICBKc29uQ2hhbmdlLFxuICBKc29uV29ya3NwYWNlRGVmaW5pdGlvbixcbiAgSnNvbldvcmtzcGFjZU1ldGFkYXRhLFxuICBKc29uV29ya3NwYWNlU3ltYm9sLFxufSBmcm9tICcuL21ldGFkYXRhJztcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHdyaXRlSnNvbldvcmtzcGFjZShcbiAgd29ya3NwYWNlOiBXb3Jrc3BhY2VEZWZpbml0aW9uLFxuICBob3N0OiBXb3Jrc3BhY2VIb3N0LFxuICBwYXRoPzogc3RyaW5nLFxuICBvcHRpb25zOiB7XG4gICAgc2NoZW1hPzogc3RyaW5nO1xuICB9ID0ge30sXG4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgbWV0YWRhdGEgPSAod29ya3NwYWNlIGFzIEpzb25Xb3Jrc3BhY2VEZWZpbml0aW9uKVtKc29uV29ya3NwYWNlU3ltYm9sXTtcblxuICBpZiAobWV0YWRhdGEpIHtcbiAgICBpZiAoIW1ldGFkYXRhLmhhc0NoYW5nZXMpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgLy8gdXBkYXRlIGV4aXN0aW5nIEpTT04gd29ya3NwYWNlXG4gICAgY29uc3QgZGF0YSA9IHVwZGF0ZUpzb25Xb3Jrc3BhY2UobWV0YWRhdGEpO1xuXG4gICAgcmV0dXJuIGhvc3Qud3JpdGVGaWxlKHBhdGggPz8gbWV0YWRhdGEuZmlsZVBhdGgsIGRhdGEpO1xuICB9IGVsc2Uge1xuICAgIC8vIHNlcmlhbGl6ZSBkaXJlY3RseVxuICAgIGlmICghcGF0aCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdwYXRoIG9wdGlvbiBpcyByZXF1aXJlZCcpO1xuICAgIH1cblxuICAgIGNvbnN0IG9iaiA9IGNvbnZlcnRKc29uV29ya3NwYWNlKHdvcmtzcGFjZSwgb3B0aW9ucy5zY2hlbWEpO1xuICAgIGNvbnN0IGRhdGEgPSBKU09OLnN0cmluZ2lmeShvYmosIG51bGwsIDIpO1xuXG4gICAgcmV0dXJuIGhvc3Qud3JpdGVGaWxlKHBhdGgsIGRhdGEpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGNvbnZlcnRKc29uV29ya3NwYWNlKHdvcmtzcGFjZTogV29ya3NwYWNlRGVmaW5pdGlvbiwgc2NoZW1hPzogc3RyaW5nKTogSnNvbk9iamVjdCB7XG4gIGNvbnN0IG9iaiA9IHtcbiAgICAkc2NoZW1hOiBzY2hlbWEgfHwgJy4vbm9kZV9tb2R1bGVzL0Bhbmd1bGFyL2NsaS9saWIvY29uZmlnL3NjaGVtYS5qc29uJyxcbiAgICB2ZXJzaW9uOiAxLFxuICAgIC4uLndvcmtzcGFjZS5leHRlbnNpb25zLFxuICAgIC4uLihpc0VtcHR5KHdvcmtzcGFjZS5wcm9qZWN0cylcbiAgICAgID8ge31cbiAgICAgIDogeyBwcm9qZWN0czogY29udmVydEpzb25Qcm9qZWN0Q29sbGVjdGlvbih3b3Jrc3BhY2UucHJvamVjdHMpIH0pLFxuICB9O1xuXG4gIHJldHVybiBvYmo7XG59XG5cbmZ1bmN0aW9uIGNvbnZlcnRKc29uUHJvamVjdENvbGxlY3Rpb24oXG4gIGNvbGxlY3Rpb246IEl0ZXJhYmxlPFtzdHJpbmcsIFByb2plY3REZWZpbml0aW9uXT4sXG4pOiBKc29uT2JqZWN0IHtcbiAgY29uc3QgcHJvamVjdHMgPSBPYmplY3QuY3JlYXRlKG51bGwpIGFzIEpzb25PYmplY3Q7XG5cbiAgZm9yIChjb25zdCBbcHJvamVjdE5hbWUsIHByb2plY3RdIG9mIGNvbGxlY3Rpb24pIHtcbiAgICBwcm9qZWN0c1twcm9qZWN0TmFtZV0gPSBjb252ZXJ0SnNvblByb2plY3QocHJvamVjdCk7XG4gIH1cblxuICByZXR1cm4gcHJvamVjdHM7XG59XG5cbmZ1bmN0aW9uIGNvbnZlcnRKc29uUHJvamVjdChwcm9qZWN0OiBQcm9qZWN0RGVmaW5pdGlvbik6IEpzb25PYmplY3Qge1xuICBsZXQgdGFyZ2V0czogSnNvbk9iamVjdCB8IHVuZGVmaW5lZDtcbiAgaWYgKHByb2plY3QudGFyZ2V0cy5zaXplID4gMCkge1xuICAgIHRhcmdldHMgPSBPYmplY3QuY3JlYXRlKG51bGwpIGFzIEpzb25PYmplY3Q7XG4gICAgZm9yIChjb25zdCBbdGFyZ2V0TmFtZSwgdGFyZ2V0XSBvZiBwcm9qZWN0LnRhcmdldHMpIHtcbiAgICAgIHRhcmdldHNbdGFyZ2V0TmFtZV0gPSBjb252ZXJ0SnNvblRhcmdldCh0YXJnZXQpO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0IG9iaiA9IHtcbiAgICAuLi5wcm9qZWN0LmV4dGVuc2lvbnMsXG4gICAgcm9vdDogcHJvamVjdC5yb290LFxuICAgIC4uLihwcm9qZWN0LnNvdXJjZVJvb3QgPT09IHVuZGVmaW5lZCA/IHt9IDogeyBzb3VyY2VSb290OiBwcm9qZWN0LnNvdXJjZVJvb3QgfSksXG4gICAgLi4uKHByb2plY3QucHJlZml4ID09PSB1bmRlZmluZWQgPyB7fSA6IHsgcHJlZml4OiBwcm9qZWN0LnByZWZpeCB9KSxcbiAgICAuLi4odGFyZ2V0cyA9PT0gdW5kZWZpbmVkID8ge30gOiB7IGFyY2hpdGVjdDogdGFyZ2V0cyB9KSxcbiAgfTtcblxuICByZXR1cm4gb2JqO1xufVxuXG5mdW5jdGlvbiBpc0VtcHR5KG9iajogb2JqZWN0IHwgdW5kZWZpbmVkKTogYm9vbGVhbiB7XG4gIHJldHVybiBvYmogPT09IHVuZGVmaW5lZCB8fCBPYmplY3Qua2V5cyhvYmopLmxlbmd0aCA9PT0gMDtcbn1cblxuZnVuY3Rpb24gY29udmVydEpzb25UYXJnZXQodGFyZ2V0OiBUYXJnZXREZWZpbml0aW9uKTogSnNvbk9iamVjdCB7XG4gIHJldHVybiB7XG4gICAgYnVpbGRlcjogdGFyZ2V0LmJ1aWxkZXIsXG4gICAgLi4uKGlzRW1wdHkodGFyZ2V0Lm9wdGlvbnMpID8ge30gOiB7IG9wdGlvbnM6IHRhcmdldC5vcHRpb25zIGFzIEpzb25PYmplY3QgfSksXG4gICAgLi4uKGlzRW1wdHkodGFyZ2V0LmNvbmZpZ3VyYXRpb25zKVxuICAgICAgPyB7fVxuICAgICAgOiB7IGNvbmZpZ3VyYXRpb25zOiB0YXJnZXQuY29uZmlndXJhdGlvbnMgYXMgSnNvbk9iamVjdCB9KSxcbiAgICAuLi4odGFyZ2V0LmRlZmF1bHRDb25maWd1cmF0aW9uID09PSB1bmRlZmluZWRcbiAgICAgID8ge31cbiAgICAgIDogeyBkZWZhdWx0Q29uZmlndXJhdGlvbjogdGFyZ2V0LmRlZmF1bHRDb25maWd1cmF0aW9uIH0pLFxuICB9O1xufVxuXG5mdW5jdGlvbiBjb252ZXJ0SnNvblRhcmdldENvbGxlY3Rpb24oY29sbGVjdGlvbjogSXRlcmFibGU8W3N0cmluZywgVGFyZ2V0RGVmaW5pdGlvbl0+KTogSnNvbk9iamVjdCB7XG4gIGNvbnN0IHRhcmdldHMgPSBPYmplY3QuY3JlYXRlKG51bGwpIGFzIEpzb25PYmplY3Q7XG5cbiAgZm9yIChjb25zdCBbcHJvamVjdE5hbWUsIHRhcmdldF0gb2YgY29sbGVjdGlvbikge1xuICAgIHRhcmdldHNbcHJvamVjdE5hbWVdID0gY29udmVydEpzb25UYXJnZXQodGFyZ2V0KTtcbiAgfVxuXG4gIHJldHVybiB0YXJnZXRzO1xufVxuXG5mdW5jdGlvbiBub3JtYWxpemVWYWx1ZShcbiAgdmFsdWU6IEpzb25DaGFuZ2VbJ3ZhbHVlJ10gfCB1bmRlZmluZWQsXG4gIHR5cGU6IEpzb25DaGFuZ2VbJ3R5cGUnXSxcbik6IEpzb25WYWx1ZSB8IHVuZGVmaW5lZCB7XG4gIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIHN3aXRjaCAodHlwZSkge1xuICAgIGNhc2UgJ3Byb2plY3QnOlxuICAgICAgcmV0dXJuIGNvbnZlcnRKc29uUHJvamVjdCh2YWx1ZSBhcyBQcm9qZWN0RGVmaW5pdGlvbik7XG4gICAgY2FzZSAncHJvamVjdGNvbGxlY3Rpb24nOlxuICAgICAgY29uc3QgcHJvamVjdHMgPSBjb252ZXJ0SnNvblByb2plY3RDb2xsZWN0aW9uKHZhbHVlIGFzIEl0ZXJhYmxlPFtzdHJpbmcsIFByb2plY3REZWZpbml0aW9uXT4pO1xuXG4gICAgICByZXR1cm4gaXNFbXB0eShwcm9qZWN0cykgPyB1bmRlZmluZWQgOiBwcm9qZWN0cztcbiAgICBjYXNlICd0YXJnZXQnOlxuICAgICAgcmV0dXJuIGNvbnZlcnRKc29uVGFyZ2V0KHZhbHVlIGFzIFRhcmdldERlZmluaXRpb24pO1xuICAgIGNhc2UgJ3RhcmdldGNvbGxlY3Rpb24nOlxuICAgICAgY29uc3QgdGFyZ2V0cyA9IGNvbnZlcnRKc29uVGFyZ2V0Q29sbGVjdGlvbih2YWx1ZSBhcyBJdGVyYWJsZTxbc3RyaW5nLCBUYXJnZXREZWZpbml0aW9uXT4pO1xuXG4gICAgICByZXR1cm4gaXNFbXB0eSh0YXJnZXRzKSA/IHVuZGVmaW5lZCA6IHRhcmdldHM7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiB2YWx1ZSBhcyBKc29uVmFsdWU7XG4gIH1cbn1cblxuZnVuY3Rpb24gdXBkYXRlSnNvbldvcmtzcGFjZShtZXRhZGF0YTogSnNvbldvcmtzcGFjZU1ldGFkYXRhKTogc3RyaW5nIHtcbiAgbGV0IHsgcmF3OiBjb250ZW50IH0gPSBtZXRhZGF0YTtcbiAgY29uc3QgeyBjaGFuZ2VzLCBoYXNMZWdhY3lUYXJnZXRzTmFtZSB9ID0gbWV0YWRhdGE7XG5cbiAgZm9yIChjb25zdCB7IGpzb25QYXRoLCB2YWx1ZSwgdHlwZSB9IG9mIGNoYW5nZXMudmFsdWVzKCkpIHtcbiAgICAvLyBEZXRlcm1pbmUgd2hpY2gga2V5IHRvIHVzZSBpZiAoYXJjaGl0ZWN0IG9yIHRhcmdldHMpXG4gICAgaWYgKGhhc0xlZ2FjeVRhcmdldHNOYW1lICYmIGpzb25QYXRoWzJdID09PSAndGFyZ2V0cycpIHtcbiAgICAgIGpzb25QYXRoWzJdID0gJ2FyY2hpdGVjdCc7XG4gICAgfVxuXG4gICAgLy8gVE9ETzogYG1vZGlmeWAgcmUtcGFyc2VzIHRoZSBjb250ZW50IGV2ZXJ5IHRpbWUuXG4gICAgLy8gU2VlOiBodHRwczovL2dpdGh1Yi5jb20vbWljcm9zb2Z0L25vZGUtanNvbmMtcGFyc2VyL2Jsb2IvMzVkOTRjZDcxYmQ0OGY5Nzg0NDUzYjI0MzkyNjJjOTM4ZTIxZDQ5Yi9zcmMvaW1wbC9lZGl0LnRzI0wxOFxuICAgIC8vIElkZWFsbHkgdGhpcyBzaG91bGQgYWNjZXB0IGEgc3RyaW5nIG9yIGFuIEFTVCB0byBhdm9pZCB0aGUgcG90ZW50aWFsbHkgZXhwZW5zaXZlIHJlcGVhdCBwYXJzaW5nIG9wZXJhdGlvbi5cbiAgICBjb25zdCBlZGl0cyA9IG1vZGlmeShjb250ZW50LCBqc29uUGF0aCwgbm9ybWFsaXplVmFsdWUodmFsdWUsIHR5cGUpLCB7XG4gICAgICBmb3JtYXR0aW5nT3B0aW9uczoge1xuICAgICAgICBpbnNlcnRTcGFjZXM6IHRydWUsXG4gICAgICAgIHRhYlNpemU6IDIsXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgY29udGVudCA9IGFwcGx5RWRpdHMoY29udGVudCwgZWRpdHMpO1xuICB9XG5cbiAgcmV0dXJuIGNvbnRlbnQ7XG59XG4iXX0=
131
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid3JpdGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvYW5ndWxhcl9kZXZraXQvY29yZS9zcmMvd29ya3NwYWNlL2pzb24vd3JpdGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7O0dBTUc7OztBQUVILCtDQUFrRDtBQUlsRCx5Q0FLb0I7QUFFYixLQUFLLFVBQVUsa0JBQWtCLENBQ3RDLFNBQThCLEVBQzlCLElBQW1CLEVBQ25CLElBQWEsRUFDYixVQUVJLEVBQUU7SUFFTixNQUFNLFFBQVEsR0FBSSxTQUFxQyxDQUFDLDhCQUFtQixDQUFDLENBQUM7SUFFN0UsSUFBSSxRQUFRLEVBQUU7UUFDWixJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsRUFBRTtZQUN4QixPQUFPO1NBQ1I7UUFDRCxpQ0FBaUM7UUFDakMsTUFBTSxJQUFJLEdBQUcsbUJBQW1CLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFM0MsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksSUFBSSxRQUFRLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFDO0tBQ3hEO1NBQU07UUFDTCxxQkFBcUI7UUFDckIsSUFBSSxDQUFDLElBQUksRUFBRTtZQUNULE1BQU0sSUFBSSxLQUFLLENBQUMseUJBQXlCLENBQUMsQ0FBQztTQUM1QztRQUVELE1BQU0sR0FBRyxHQUFHLG9CQUFvQixDQUFDLFNBQVMsRUFBRSxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDNUQsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBRTFDLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7S0FDbkM7QUFDSCxDQUFDO0FBN0JELGdEQTZCQztBQUVELFNBQVMsb0JBQW9CLENBQUMsU0FBOEIsRUFBRSxN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QUNoQyxNQUFNLEVBQUUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLEdBQUcsUUFBUSxDQUFDO0lBRW5ELEtBQUssTUFBTSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLElBQUksT0FBTyxDQUFDLE1BQU0sRUFBRSxFQUFFO1FBQ3hELHVEQUF1RDtRQUN2RCxJQUFJLG9CQUFvQixJQUFJLFFBQVEsQ0FBQyxDQUFDLENBQUMsS0FBSyxTQUFTLEVBQUU7WUFDckQsUUFBUSxDQUFDLENBQUMsQ0FBQyxHQUFHLFdBQVcsQ0FBQztTQUMzQjtRQUVELG1EQUFtRDtRQUNuRCx5SEFBeUg7UUFDekgsNkdBQTZHO1FBQzdHLE1BQU0sS0FBSyxHQUFHLElBQUEscUJBQU0sRUFBQyxPQUFPLEVBQUUsUUFBUSxFQUFFLGNBQWMsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLEVBQUU7WUFDbkUsaUJBQWlCLEVBQUU7Z0JBQ2pCLFlBQVksRUFBRSxJQUFJO2dCQUNsQixPQUFPLEVBQUUsQ0FBQzthQUNYO1NBQ0YsQ0FBQyxDQUFDO1FBRUgsT0FBTyxHQUFHLElBQUEseUJBQVUsRUFBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUM7S0FDdEM7SUFFRCxPQUFPLE9BQU8sQ0FBQztBQUNqQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCB7IGFwcGx5RWRpdHMsIG1vZGlmeSB9IGZyb20gJ2pzb25jLXBhcnNlcic7XG5pbXBvcnQgeyBKc29uT2JqZWN0LCBKc29uVmFsdWUgfSBmcm9tICcuLi8uLi9qc29uJztcbmltcG9ydCB7IFByb2plY3REZWZpbml0aW9uLCBUYXJnZXREZWZpbml0aW9uLCBXb3Jrc3BhY2VEZWZpbml0aW9uIH0gZnJvbSAnLi4vZGVmaW5pdGlvbnMnO1xuaW1wb3J0IHsgV29ya3NwYWNlSG9zdCB9IGZyb20gJy4uL2hvc3QnO1xuaW1wb3J0IHtcbiAgSnNvbkNoYW5nZSxcbiAgSnNvbldvcmtzcGFjZURlZmluaXRpb24sXG4gIEpzb25Xb3Jrc3BhY2VNZXRhZGF0YSxcbiAgSnNvbldvcmtzcGFjZVN5bWJvbCxcbn0gZnJvbSAnLi9tZXRhZGF0YSc7XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB3cml0ZUpzb25Xb3Jrc3BhY2UoXG4gIHdvcmtzcGFjZTogV29ya3NwYWNlRGVmaW5pdGlvbixcbiAgaG9zdDogV29ya3NwYWNlSG9zdCxcbiAgcGF0aD86IHN0cmluZyxcbiAgb3B0aW9uczoge1xuICAgIHNjaGVtYT86IHN0cmluZztcbiAgfSA9IHt9LFxuKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IG1ldGFkYXRhID0gKHdvcmtzcGFjZSBhcyBKc29uV29ya3NwYWNlRGVmaW5pdGlvbilbSnNvbldvcmtzcGFjZVN5bWJvbF07XG5cbiAgaWYgKG1ldGFkYXRhKSB7XG4gICAgaWYgKCFtZXRhZGF0YS5oYXNDaGFuZ2VzKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIC8vIHVwZGF0ZSBleGlzdGluZyBKU09OIHdvcmtzcGFjZVxuICAgIGNvbnN0IGRhdGEgPSB1cGRhdGVKc29uV29ya3NwYWNlKG1ldGFkYXRhKTtcblxuICAgIHJldHVybiBob3N0LndyaXRlRmlsZShwYXRoID8/IG1ldGFkYXRhLmZpbGVQYXRoLCBkYXRhKTtcbiAgfSBlbHNlIHtcbiAgICAvLyBzZXJpYWxpemUgZGlyZWN0bHlcbiAgICBpZiAoIXBhdGgpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcigncGF0aCBvcHRpb24gaXMgcmVxdWlyZWQnKTtcbiAgICB9XG5cbiAgICBjb25zdCBvYmogPSBjb252ZXJ0SnNvbldvcmtzcGFjZSh3b3Jrc3BhY2UsIG9wdGlvbnMuc2NoZW1hKTtcbiAgICBjb25zdCBkYXRhID0gSlNPTi5zdHJpbmdpZnkob2JqLCBudWxsLCAyKTtcblxuICAgIHJldHVybiBob3N0LndyaXRlRmlsZShwYXRoLCBkYXRhKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBjb252ZXJ0SnNvbldvcmtzcGFjZSh3b3Jrc3BhY2U6IFdvcmtzcGFjZURlZmluaXRpb24sIHNjaGVtYT86IHN0cmluZyk6IEpzb25PYmplY3Qge1xuICBjb25zdCBvYmogPSB7XG4gICAgJHNjaGVtYTogc2NoZW1hIHx8ICcuL25vZGVfbW9kdWxlcy9AYW5ndWxhci9jbGkvbGliL2NvbmZpZy9zY2hlbWEuanNvbicsXG4gICAgdmVyc2lvbjogMSxcbiAgICAuLi53b3Jrc3BhY2UuZXh0ZW5zaW9ucyxcbiAgICAuLi4oaXNFbXB0eSh3b3Jrc3BhY2UucHJvamVjdHMpXG4gICAgICA/IHt9XG4gICAgICA6IHsgcHJvamVjdHM6IGNvbnZlcnRKc29uUHJvamVjdENvbGxlY3Rpb24od29ya3NwYWNlLnByb2plY3RzKSB9KSxcbiAgfTtcblxuICByZXR1cm4gb2JqO1xufVxuXG5mdW5jdGlvbiBjb252ZXJ0SnNvblByb2plY3RDb2xsZWN0aW9uKFxuICBjb2xsZWN0aW9uOiBJdGVyYWJsZTxbc3RyaW5nLCBQcm9qZWN0RGVmaW5pdGlvbl0+LFxuKTogSnNvbk9iamVjdCB7XG4gIGNvbnN0IHByb2plY3RzID0gT2JqZWN0LmNyZWF0ZShudWxsKSBhcyBKc29uT2JqZWN0O1xuXG4gIGZvciAoY29uc3QgW3Byb2plY3ROYW1lLCBwcm9qZWN0XSBvZiBjb2xsZWN0aW9uKSB7XG4gICAgcHJvamVjdHNbcHJvamVjdE5hbWVdID0gY29udmVydEpzb25Qcm9qZWN0KHByb2plY3QpO1xuICB9XG5cbiAgcmV0dXJuIHByb2plY3RzO1xufVxuXG5mdW5jdGlvbiBjb252ZXJ0SnNvblByb2plY3QocHJvamVjdDogUHJvamVjdERlZmluaXRpb24pOiBKc29uT2JqZWN0IHtcbiAgbGV0IHRhcmdldHM6IEpzb25PYmplY3QgfCB1bmRlZmluZWQ7XG4gIGlmIChwcm9qZWN0LnRhcmdldHMuc2l6ZSA+IDApIHtcbiAgICB0YXJnZXRzID0gT2JqZWN0LmNyZWF0ZShudWxsKSBhcyBKc29uT2JqZWN0O1xuICAgIGZvciAoY29uc3QgW3RhcmdldE5hbWUsIHRhcmdldF0gb2YgcHJvamVjdC50YXJnZXRzKSB7XG4gICAgICB0YXJnZXRzW3RhcmdldE5hbWVdID0gY29udmVydEpzb25UYXJnZXQodGFyZ2V0KTtcbiAgICB9XG4gIH1cblxuICBjb25zdCBvYmogPSB7XG4gICAgLi4ucHJvamVjdC5leHRlbnNpb25zLFxuICAgIHJvb3Q6IHByb2plY3Qucm9vdCxcbiAgICAuLi4ocHJvamVjdC5zb3VyY2VSb290ID09PSB1bmRlZmluZWQgPyB7fSA6IHsgc291cmNlUm9vdDogcHJvamVjdC5zb3VyY2VSb290IH0pLFxuICAgIC4uLihwcm9qZWN0LnByZWZpeCA9PT0gdW5kZWZpbmVkID8ge30gOiB7IHByZWZpeDogcHJvamVjdC5wcmVmaXggfSksXG4gICAgLi4uKHRhcmdldHMgPT09IHVuZGVmaW5lZCA/IHt9IDogeyBhcmNoaXRlY3Q6IHRhcmdldHMgfSksXG4gIH07XG5cbiAgcmV0dXJuIG9iajtcbn1cblxuZnVuY3Rpb24gaXNFbXB0eShvYmo6IG9iamVjdCB8IHVuZGVmaW5lZCk6IGJvb2xlYW4ge1xuICByZXR1cm4gb2JqID09PSB1bmRlZmluZWQgfHwgT2JqZWN0LmtleXMob2JqKS5sZW5ndGggPT09IDA7XG59XG5cbmZ1bmN0aW9uIGNvbnZlcnRKc29uVGFyZ2V0KHRhcmdldDogVGFyZ2V0RGVmaW5pdGlvbik6IEpzb25PYmplY3Qge1xuICByZXR1cm4ge1xuICAgIGJ1aWxkZXI6IHRhcmdldC5idWlsZGVyLFxuICAgIC4uLihpc0VtcHR5KHRhcmdldC5vcHRpb25zKSA/IHt9IDogeyBvcHRpb25zOiB0YXJnZXQub3B0aW9ucyBhcyBKc29uT2JqZWN0IH0pLFxuICAgIC4uLihpc0VtcHR5KHRhcmdldC5jb25maWd1cmF0aW9ucylcbiAgICAgID8ge31cbiAgICAgIDogeyBjb25maWd1cmF0aW9uczogdGFyZ2V0LmNvbmZpZ3VyYXRpb25zIGFzIEpzb25PYmplY3QgfSksXG4gICAgLi4uKHRhcmdldC5kZWZhdWx0Q29uZmlndXJhdGlvbiA9PT0gdW5kZWZpbmVkXG4gICAgICA/IHt9XG4gICAgICA6IHsgZGVmYXVsdENvbmZpZ3VyYXRpb246IHRhcmdldC5kZWZhdWx0Q29uZmlndXJhdGlvbiB9KSxcbiAgfTtcbn1cblxuZnVuY3Rpb24gY29udmVydEpzb25UYXJnZXRDb2xsZWN0aW9uKGNvbGxlY3Rpb246IEl0ZXJhYmxlPFtzdHJpbmcsIFRhcmdldERlZmluaXRpb25dPik6IEpzb25PYmplY3Qge1xuICBjb25zdCB0YXJnZXRzID0gT2JqZWN0LmNyZWF0ZShudWxsKSBhcyBKc29uT2JqZWN0O1xuXG4gIGZvciAoY29uc3QgW3Byb2plY3ROYW1lLCB0YXJnZXRdIG9mIGNvbGxlY3Rpb24pIHtcbiAgICB0YXJnZXRzW3Byb2plY3ROYW1lXSA9IGNvbnZlcnRKc29uVGFyZ2V0KHRhcmdldCk7XG4gIH1cblxuICByZXR1cm4gdGFyZ2V0cztcbn1cblxuZnVuY3Rpb24gbm9ybWFsaXplVmFsdWUoXG4gIHZhbHVlOiBKc29uQ2hhbmdlWyd2YWx1ZSddIHwgdW5kZWZpbmVkLFxuICB0eXBlOiBKc29uQ2hhbmdlWyd0eXBlJ10sXG4pOiBKc29uVmFsdWUgfCB1bmRlZmluZWQge1xuICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICBzd2l0Y2ggKHR5cGUpIHtcbiAgICBjYXNlICdwcm9qZWN0JzpcbiAgICAgIHJldHVybiBjb252ZXJ0SnNvblByb2plY3QodmFsdWUgYXMgUHJvamVjdERlZmluaXRpb24pO1xuICAgIGNhc2UgJ3Byb2plY3Rjb2xsZWN0aW9uJzpcbiAgICAgIGNvbnN0IHByb2plY3RzID0gY29udmVydEpzb25Qcm9qZWN0Q29sbGVjdGlvbih2YWx1ZSBhcyBJdGVyYWJsZTxbc3RyaW5nLCBQcm9qZWN0RGVmaW5pdGlvbl0+KTtcblxuICAgICAgcmV0dXJuIGlzRW1wdHkocHJvamVjdHMpID8gdW5kZWZpbmVkIDogcHJvamVjdHM7XG4gICAgY2FzZSAndGFyZ2V0JzpcbiAgICAgIHJldHVybiBjb252ZXJ0SnNvblRhcmdldCh2YWx1ZSBhcyBUYXJnZXREZWZpbml0aW9uKTtcbiAgICBjYXNlICd0YXJnZXRjb2xsZWN0aW9uJzpcbiAgICAgIGNvbnN0IHRhcmdldHMgPSBjb252ZXJ0SnNvblRhcmdldENvbGxlY3Rpb24odmFsdWUgYXMgSXRlcmFibGU8W3N0cmluZywgVGFyZ2V0RGVmaW5pdGlvbl0+KTtcblxuICAgICAgcmV0dXJuIGlzRW1wdHkodGFyZ2V0cykgPyB1bmRlZmluZWQgOiB0YXJnZXRzO1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gdmFsdWUgYXMgSnNvblZhbHVlO1xuICB9XG59XG5cbmZ1bmN0aW9uIHVwZGF0ZUpzb25Xb3Jrc3BhY2UobWV0YWRhdGE6IEpzb25Xb3Jrc3BhY2VNZXRhZGF0YSk6IHN0cmluZyB7XG4gIGxldCB7IHJhdzogY29udGVudCB9ID0gbWV0YWRhdGE7XG4gIGNvbnN0IHsgY2hhbmdlcywgaGFzTGVnYWN5VGFyZ2V0c05hbWUgfSA9IG1ldGFkYXRhO1xuXG4gIGZvciAoY29uc3QgeyBqc29uUGF0aCwgdmFsdWUsIHR5cGUgfSBvZiBjaGFuZ2VzLnZhbHVlcygpKSB7XG4gICAgLy8gRGV0ZXJtaW5lIHdoaWNoIGtleSB0byB1c2UgaWYgKGFyY2hpdGVjdCBvciB0YXJnZXRzKVxuICAgIGlmIChoYXNMZWdhY3lUYXJnZXRzTmFtZSAmJiBqc29uUGF0aFsyXSA9PT0gJ3RhcmdldHMnKSB7XG4gICAgICBqc29uUGF0aFsyXSA9ICdhcmNoaXRlY3QnO1xuICAgIH1cblxuICAgIC8vIFRPRE86IGBtb2RpZnlgIHJlLXBhcnNlcyB0aGUgY29udGVudCBldmVyeSB0aW1lLlxuICAgIC8vIFNlZTogaHR0cHM6Ly9naXRodWIuY29tL21pY3Jvc29mdC9ub2RlLWpzb25jLXBhcnNlci9ibG9iLzM1ZDk0Y2Q3MWJkNDhmOTc4NDQ1M2IyNDM5MjYyYzkzOGUyMWQ0OWIvc3JjL2ltcGwvZWRpdC50cyNMMThcbiAgICAvLyBJZGVhbGx5IHRoaXMgc2hvdWxkIGFjY2VwdCBhIHN0cmluZyBvciBhbiBBU1QgdG8gYXZvaWQgdGhlIHBvdGVudGlhbGx5IGV4cGVuc2l2ZSByZXBlYXQgcGFyc2luZyBvcGVyYXRpb24uXG4gICAgY29uc3QgZWRpdHMgPSBtb2RpZnkoY29udGVudCwganNvblBhdGgsIG5vcm1hbGl6ZVZhbHVlKHZhbHVlLCB0eXBlKSwge1xuICAgICAgZm9ybWF0dGluZ09wdGlvbnM6IHtcbiAgICAgICAgaW5zZXJ0U3BhY2VzOiB0cnVlLFxuICAgICAgICB0YWJTaXplOiAyLFxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIGNvbnRlbnQgPSBhcHBseUVkaXRzKGNvbnRlbnQsIGVkaXRzKTtcbiAgfVxuXG4gIHJldHVybiBjb250ZW50O1xufVxuIl19