@kontur.candy/tools 2.176.1 → 2.177.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/CHANGELOG.md CHANGED
@@ -1,3 +1,14 @@
1
+ <a name="2.177.0"></a>
2
+ # [2.177.0](https://git.skbkontur.ru/ke/candy-utils/compare/release/tools/v2.176.2...release/tools/v2.177.0) (2024-03-11)
3
+
4
+ <a name="2.176.2"></a>
5
+ ## [2.176.2](https://git.skbkontur.ru/ke/candy-utils/compare/release/tools/v2.176.1...release/tools/v2.176.2) (2024-03-11)
6
+
7
+
8
+ ### Bug Fixes
9
+
10
+ * **Tools:** Исправлена скорость сборки форм #2 ([180bc79](https://git.skbkontur.ru/ke/candy-utils/commit/180bc79))
11
+
1
12
  <a name="2.176.1"></a>
2
13
  ## [2.176.1](https://git.skbkontur.ru/ke/candy-utils/compare/release/tools/v2.176.0...release/tools/v2.176.1) (2024-03-11)
3
14
 
@@ -41,21 +41,21 @@ function getGeneratorVersion(generatorSource) {
41
41
  async function runBuildForms(context, options, farmDirectory, resourcesDirectory, engineDirectory, candyModulesDirectory, hlFarmDirectoryPath) {
42
42
  const buildOptions = options;
43
43
  const pickListsChain = _Observe.Observe.files(_path.default.join(farmDirectory, "picklists"), "*.json").do(x => _FSTask.FSTask.copyRecursively(context.logger.withPrefix("PICKLISTS"), x, _path.default.join(resourcesDirectory, "picklists")));
44
- await _FormGlobsUtils.FormGlobs.ensureEachGlobResolvesIntoExistingForm(buildOptions.formGlobs, farmDirectory);
45
- const formGlobs = await _FormGlobsUtils.FormGlobs.resolveSpecifiers(buildOptions.formGlobs, farmDirectory);
44
+ await _FormGlobsUtils.FormGlobs.ensureEachGlobResolvesIntoExistingForm(options.formGlobs, farmDirectory);
45
+ const formInfos = await _FormGlobsUtils.FormGlobs.resolveGfvGlobs(options.formGlobs, farmDirectory);
46
46
  const staticResourcesForProductionChain = _Observe.Observe.files(_path.default.join(__dirname, "..", "..", "StaticFilesForProductionResourcesDir"), "*.js", "*.js.map").do(x => _FSTask.FSTask.copyRecursively((0, _StaticLogger.getLogger)().withPrefix("STATICS"), x, _path.default.join(resourcesDirectory, "public", "scripts")));
47
47
 
48
48
  /** Конвертеры описи для форм, которые пока не реализованы на кенди, сама механика описи перенесена в формы в кенди апи, поэтому они должны быть в candy.resources
49
49
  * Реализуется только при общем билде форм: candy build *
50
50
  * */
51
51
  let resourcesExternalConvertersChain = _Observe.Observe.empty();
52
- if (formGlobs[0] === "*") {
52
+ if (options.formGlobs[0] === "*") {
53
53
  resourcesExternalConvertersChain = _Observe.Observe.files(_path.default.join(farmDirectory, "externalConverters"), "*.xslt").do(x => _FSTask.FSTask.copyRecursively((0, _StaticLogger.getLogger)().withPrefix("EXTERNAL-CONVERTERS"), x, _path.default.join(resourcesDirectory, "converters")));
54
54
  }
55
55
  const copiedEngines = new Set();
56
56
  const repositoryRoot = _path.default.join(farmDirectory, "..");
57
57
  const buildCache = new _CacheAssetsPlugin.BuildCache(farmDirectory, options.buildCacheMode);
58
- const buildFormsChain = _Observe.Observe.formDirectories(repositoryRoot, formGlobs).splitToParallelChains(x => x, x => x, async formRelativePath => {
58
+ const buildFormsChain = _Observe.Observe.fixedFormDirectories(formInfos.map(x => _path.default.relative(repositoryRoot, x.formPath))).splitToParallelChains(x => x, x => x, async formRelativePath => {
59
59
  const gfv = (0, _FormPathUtils.extractGfvFromFormPath)(formRelativePath);
60
60
  const formDirPath = _path.default.join(repositoryRoot, formRelativePath);
61
61
  if (!(await (0, _fsExtra.pathExists)(_path.default.join(formDirPath, _WellKnownDirectories.WellKnownDirectories.FormJsonFileName)))) {
@@ -202,9 +202,6 @@ async function runBuildForms(context, options, farmDirectory, resourcesDirectory
202
202
  if (stopObserve3 != undefined) {
203
203
  await stopObserve3();
204
204
  }
205
- if (stopObserve4 != undefined) {
206
- await stopObserve4();
207
- }
208
205
  if (stopObserve5 != undefined) {
209
206
  await stopObserve5();
210
207
  }
@@ -234,4 +231,4 @@ async function cleanTargetDirectory(resourcesDirectory, logger) {
234
231
  await (0, _fsExtra.emptyDir)(resourcesDirectory);
235
232
  logger.log("Resource directory clean");
236
233
  }
237
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcGF0aCIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX2NoYWxrIiwiX2ZzRXh0cmEiLCJfbm9kZU5vdGlmaWVyIiwiX0FjcXVpcmVGb3JtRW5naW5lIiwiX0VuZ2luZVNvdXJjZSIsIl9Db21waWxlRm9ybSIsIl9HZW5lcmF0ZUZvcm0iLCJfTnVsbEZvcm1HZW5lcmF0b3IiLCJfV3JpdGVGTGFuZ05vcm1hbGl6YXRpb25GaWxlcyIsIl9GU1Rhc2siLCJfQWNxdWlyZUZvcm1HZW5lcmF0b3IiLCJfUHVibGlzaGVkVmVyc2lvblV0aWxzIiwiX1Jlc29sdmVGb3JtSW5mbyIsIl9Xcml0ZUZvcm1NZXRhIiwiX0Zvcm1HbG9ic1V0aWxzIiwiX1N0YXRpY0xvZ2dlciIsIl9PYnNlcnZlIiwiX1NpbmdsZVZhbHVlUHJvZHVjZXIiLCJfVGltaW5nVXRpbHMiLCJfQ2FjaGVBc3NldHNQbHVnaW4iLCJfVHlwaW5nVXRpbHMiLCJfV3JpdGVBdHRhY2htZW50UGF0aEZpbGVzIiwiX2dldFJuZ1NjaGVtYUZpbGVuYW1lIiwiX0Zvcm1QYXRoVXRpbHMiLCJfV2VsbEtub3duRGlyZWN0b3JpZXMiLCJnZXRHZW5lcmF0b3JWZXJzaW9uIiwiZ2VuZXJhdG9yU291cmNlIiwidHlwZSIsInZlcnNpb24iLCJFcnJvciIsInJ1bkJ1aWxkRm9ybXMiLCJjb250ZXh0Iiwib3B0aW9ucyIsImZhcm1EaXJlY3RvcnkiLCJyZXNvdXJjZXNEaXJlY3RvcnkiLCJlbmdpbmVEaXJlY3RvcnkiLCJjYW5keU1vZHVsZXNEaXJlY3RvcnkiLCJobEZhcm1EaXJlY3RvcnlQYXRoIiwiYnVpbGRPcHRpb25zIiwicGlja0xpc3RzQ2hhaW4iLCJPYnNlcnZlIiwiZmlsZXMiLCJwYXRoIiwiam9pbiIsImRvIiwieCIsIkZTVGFzayIsImNvcHlSZWN1cnNpdmVseSIsImxvZ2dlciIsIndpdGhQcmVmaXgiLCJGb3JtR2xvYnMiLCJlbnN1cmVFYWNoR2xvYlJlc29sdmVzSW50b0V4aXN0aW5nRm9ybSIsImZvcm1HbG9icyIsInJlc29sdmVTcGVjaWZpZXJzIiwic3RhdGljUmVzb3VyY2VzRm9yUHJvZHVjdGlvbkNoYWluIiwiX19kaXJuYW1lIiwiZ2V0TG9nZ2VyIiwicmVzb3VyY2VzRXh0ZXJuYWxDb252ZXJ0ZXJzQ2hhaW4iLCJlbXB0eSIsImNvcGllZEVuZ2luZXMiLCJTZXQiLCJyZXBvc2l0b3J5Um9vdCIsImJ1aWxkQ2FjaGUiLCJCdWlsZENhY2hlIiwiYnVpbGRDYWNoZU1vZGUiLCJidWlsZEZvcm1zQ2hhaW4iLCJmb3JtRGlyZWN0b3JpZXMiLCJzcGxpdFRvUGFyYWxsZWxDaGFpbnMiLCJmb3JtUmVsYXRpdmVQYXRoIiwiZ2Z2IiwiZXh0cmFjdEdmdkZyb21Gb3JtUGF0aCIsImZvcm1EaXJQYXRoIiwicGF0aEV4aXN0cyIsIldlbGxLbm93bkRpcmVjdG9yaWVzIiwiRm9ybUpzb25GaWxlTmFtZSIsIndhcm5pbmciLCJ2YWx1ZSIsImZvcm1TY2hlbWFzRGlyUGF0aCIsInJuZ1NjaGVtYU1hc2siLCJnZXRSbmdTY2hlbWFGaWxlbmFtZSIsImZpbGUiLCJ0cmFuc2Zvcm0iLCJmb3JtSnNvbkZpbGUiLCJyZXNvbHZlRm9ybUluZm8iLCJ1cGdyYWRlRm9ybUpzb24iLCJ1c2VMYXN0U3RhYmxlVmVyc2lvbiIsInVzZVByZXJlbGVhc2VWZXJzaW9uIiwiZmkiLCJtb2RlIiwiRm9ybUJ1aWxkTW9kZSIsIk5vcm1hbEJ1aWxkIiwiZ2VuZXJhdG9yVmVyc2lvbiIsInVuZGVmaW5lZCIsImVuZ2luZVZlcnNpb24iLCJyZXNvbHZlR2VuZXJhdG9yVmVyc2lvbiIsImVuZ2luZVNvdXJjZSIsInJlc29sdmVFbmdpbmVWZXJzaW9uIiwiYXR0YWNoIiwiU2luZ2xlVmFsdWVQcm9kdWNlciIsIk51bGxGb3JtR2VuZXJhdG9yIiwiZ2VuZXJhdG9yRmFjdG9yeSIsInVzZVZlcnNpb25Gcm9tQ2FjaGUiLCJ5IiwiZ2VuZXJhdG9yIiwiZ2V0R2VuZXJhdG9yU291cmNlS2V5IiwiZW5naW5lRmFjdG9yeSIsImhhcyIsImdldEVuZ2luZVNvdXJjZUtleSIsImFkZCIsImZvcm1Tb3VyY2VzUGF0aCIsImRlcGVuZGVuY2llc0hhc2giLCJzdXBwb3J0c0RlcGVuZGVuY2llc0V4dHJhY3Rpb24iLCJnZXRBbGxEZXBlbmRlbmNpZXNIYXNoIiwiYnVpbGRDYWNoZUV4aXN0IiwiZXhpc3RzIiwiX2ZpJGRlcGVuZGVuY2llc0hhc2giLCJsb2ciLCJnZW5lcmF0ZUZvcm0iLCJza2lwQ29kZVJlZm9ybWF0dGluZyIsInNraXBHZW5lcmF0ZWRDb2RlUmVmb3JtYXR0aW5nIiwicmVzb3VyY2VzSGFzaCIsIl9maSRkZXBlbmRlbmNpZXNIYXNoMiIsIl9maSRkZXBlbmRlbmNpZXNIYXNoMyIsImV4dHJhY3QiLCJidWlsZENhY2hlT3B0aW9ucyIsImRlcHNIYXNoIiwiY29tcGlsZUZvcm0iLCJmb3JtTmFtZSIsInRoZW1lcyIsInJlamVjdCIsIndyaXRlRm9ybU1ldGEiLCJ3cml0ZUZMYW5nTm9ybWFsaXphdGlvbkZpbGVzIiwid3JpdGVBdHRhY2htZW50UGF0aEZpbGVzIiwiQ29weUxlZ2FjeVByZWJ1aWx0UmVzb3VyY2VzIiwibW9kaWZpZXIiLCJjb250ZW50IiwicmVwbGFjZSIsIm1vZGlmeUZpbGVzQ29udGVudCIsIndhdGNoIiwibm90aWZpZXIiLCJub3RpZnkiLCJ0aXRsZSIsIm1lc3NhZ2UiLCJjbGVhbiIsImNsZWFuVGFyZ2V0RGlyZWN0b3J5Iiwic3RvcE9ic2VydmUxIiwib2JzZXJ2ZSIsInN0b3BPYnNlcnZlMiIsInN0b3BPYnNlcnZlMyIsInN0b3BPYnNlcnZlNSIsIndhaXRGb3JFeGl0Iiwic3RvcE9ic2VydmU0Iiwic3RhcnREYXRlIiwiRGF0ZSIsIm5vdyIsImN1cnJlbnRWYWx1ZSIsImNvbnNvbGUiLCJjaGFsayIsImdyZWVuQnJpZ2h0IiwidG90YWxUaW1lIiwicHJpbnRUaW1lIiwiZW1wdHlEaXIiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvQ0xJQ29tbWFuZHMvQnVpbGRGb3Jtcy9SdW5CdWlsZEZvcm1zLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBwYXRoIGZyb20gXCJwYXRoXCI7XG5cbmltcG9ydCBjaGFsayBmcm9tIFwiY2hhbGtcIjtcbmltcG9ydCB7IGVtcHR5RGlyLCBwYXRoRXhpc3RzIH0gZnJvbSBcImZzLWV4dHJhXCI7XG5pbXBvcnQgbm90aWZpZXIgZnJvbSBcIm5vZGUtbm90aWZpZXJcIjtcblxuaW1wb3J0IHsgZW5naW5lRmFjdG9yeSB9IGZyb20gXCIuLi8uLi9CdWlsZFRhc2tzL0VuZ2luZS9BY3F1aXJlRm9ybUVuZ2luZVwiO1xuaW1wb3J0IHsgZ2V0RW5naW5lU291cmNlS2V5IH0gZnJvbSBcIi4uLy4uL0J1aWxkVGFza3MvRW5naW5lL0VuZ2luZVNvdXJjZVwiO1xuaW1wb3J0IHsgY29tcGlsZUZvcm0gfSBmcm9tIFwiLi4vLi4vQnVpbGRUYXNrcy9Gb3JtL0NvbXBpbGVGb3JtXCI7XG5pbXBvcnQgeyBnZW5lcmF0ZUZvcm0gfSBmcm9tIFwiLi4vLi4vQnVpbGRUYXNrcy9Gb3JtL0dlbmVyYXRlRm9ybVwiO1xuaW1wb3J0IHsgTnVsbEZvcm1HZW5lcmF0b3IgfSBmcm9tIFwiLi4vLi4vQnVpbGRUYXNrcy9Gb3JtL051bGxGb3JtR2VuZXJhdG9yXCI7XG5pbXBvcnQgeyB3cml0ZUZMYW5nTm9ybWFsaXphdGlvbkZpbGVzIH0gZnJvbSBcIi4uLy4uL0J1aWxkVGFza3MvRm9ybS9Xcml0ZUZMYW5nTm9ybWFsaXphdGlvbkZpbGVzXCI7XG5pbXBvcnQgeyBGU1Rhc2sgfSBmcm9tIFwiLi4vLi4vQnVpbGRUYXNrcy9GU1Rhc2tcIjtcbmltcG9ydCB7XG4gICAgZ2VuZXJhdG9yRmFjdG9yeSxcbiAgICBHZW5lcmF0b3JTb3VyY2UsXG4gICAgZ2V0R2VuZXJhdG9yU291cmNlS2V5LFxufSBmcm9tIFwiLi4vLi4vQnVpbGRUYXNrcy9HZW5lcmF0b3IvQWNxdWlyZUZvcm1HZW5lcmF0b3JcIjtcbmltcG9ydCB7IHJlc29sdmVFbmdpbmVWZXJzaW9uLCByZXNvbHZlR2VuZXJhdG9yVmVyc2lvbiB9IGZyb20gXCIuLi8uLi9CdWlsZFRhc2tzL1B1Ymxpc2hlZFZlcnNpb25VdGlsc1wiO1xuaW1wb3J0IHsgRm9ybUJ1aWxkTW9kZSwgcmVzb2x2ZUZvcm1JbmZvIH0gZnJvbSBcIi4uLy4uL0J1aWxkVGFza3MvUmVzb2x2ZUZvcm1JbmZvXCI7XG5pbXBvcnQgeyB3cml0ZUZvcm1NZXRhIH0gZnJvbSBcIi4uLy4uL0J1aWxkVGFza3MvV3JpdGVGb3JtTWV0YVwiO1xuaW1wb3J0IHsgQ29uc29sZUFwcGxpY2F0aW9uQ29udGV4dCB9IGZyb20gXCIuLi8uLi9Db21tb25zL0NvbnNvbGVBcHBsaWNhdGlvbi9Db25zb2xlQXBwbGljYXRpb25Db250ZXh0XCI7XG5pbXBvcnQgeyBGb3JtR2xvYnMgfSBmcm9tIFwiLi4vLi4vQ29tbW9ucy9Gb3JtR2xvYnNVdGlsc1wiO1xuaW1wb3J0IHsgSUxvZ2dlciB9IGZyb20gXCIuLi8uLi9Db21tb25zL0xvZ2dpbmcvSUxvZ2dlclwiO1xuaW1wb3J0IHsgZ2V0TG9nZ2VyIH0gZnJvbSBcIi4uLy4uL0NvbW1vbnMvTG9nZ2luZy9TdGF0aWNMb2dnZXJcIjtcbmltcG9ydCB7IE9ic2VydmUgfSBmcm9tIFwiLi4vLi4vQ29tbW9ucy9UYXNrc0NvcmUvT2JzZXJ2ZVwiO1xuaW1wb3J0IHsgU2luZ2xlVmFsdWVQcm9kdWNlciB9IGZyb20gXCIuLi8uLi9Db21tb25zL1Rhc2tzQ29yZS9TaW5nbGVWYWx1ZVByb2R1Y2VyXCI7XG5pbXBvcnQgeyBwcmludFRpbWUgfSBmcm9tIFwiLi4vLi4vQ29tbW9ucy9UaW1pbmdVdGlsc1wiO1xuaW1wb3J0IHsgQnVpbGRDYWNoZSB9IGZyb20gXCIuLi8uLi9Gb3JtV2VicGFja0NvbmZpZ3VyYXRpb24vQ2FjaGVBc3NldHNQbHVnaW5cIjtcbmltcG9ydCB7IHJlamVjdCB9IGZyb20gXCIuLi8uLi8uLi8uLi9Db21tb24vVHlwaW5nVXRpbHNcIjtcbmltcG9ydCB7IHdyaXRlQXR0YWNobWVudFBhdGhGaWxlcyB9IGZyb20gXCIuLi8uLi9CdWlsZFRhc2tzL0Zvcm0vV3JpdGVBdHRhY2htZW50UGF0aEZpbGVzXCI7XG5pbXBvcnQgeyBDaGFpbmFibGVWYWx1ZVByb2R1Y2VyIH0gZnJvbSBcIi4uLy4uL0NvbW1vbnMvVGFza3NDb3JlL0NoYWluYWJsZVZhbHVlUHJvZHVjZXJcIjtcbmltcG9ydCB7IEVtcHR5UHJvZHVjZXIgfSBmcm9tIFwiLi4vLi4vQ29tbW9ucy9UYXNrc0NvcmUvRW1wdHlQcm9kdWNlclwiO1xuaW1wb3J0IHsgZ2V0Um5nU2NoZW1hRmlsZW5hbWUgfSBmcm9tIFwiLi4vLi4vLi4vLi4vQ29tbW9uL2dldFJuZ1NjaGVtYUZpbGVuYW1lXCI7XG5pbXBvcnQgeyBleHRyYWN0R2Z2RnJvbUZvcm1QYXRoIH0gZnJvbSBcIi4uLy4uLy4uLy4uL0NvbW1vbi9Gb3JtUGF0aFV0aWxzXCI7XG5pbXBvcnQgeyBXZWxsS25vd25EaXJlY3RvcmllcyB9IGZyb20gXCIuLi8uLi8uLi8uLi9Db21tb24vV2VsbEtub3duRGlyZWN0b3JpZXNcIjtcblxuaW1wb3J0IHsgQnVpbGRGb3Jtc09wdGlvbnMgfSBmcm9tIFwiLi9CdWlsZEZvcm1zT3B0aW9uc1wiO1xuXG5mdW5jdGlvbiBnZXRHZW5lcmF0b3JWZXJzaW9uKGdlbmVyYXRvclNvdXJjZTogR2VuZXJhdG9yU291cmNlKTogc3RyaW5nIHtcbiAgICBpZiAoZ2VuZXJhdG9yU291cmNlLnR5cGUgPT09IFwiUHVibGlzaGVkR2VuZXJhdG9yXCIpIHtcbiAgICAgICAgcmV0dXJuIGdlbmVyYXRvclNvdXJjZS52ZXJzaW9uO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIkludmFsaWRQcm9ncmFtU3RhdGVcIik7XG4gICAgfVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcnVuQnVpbGRGb3JtcyhcbiAgICBjb250ZXh0OiBDb25zb2xlQXBwbGljYXRpb25Db250ZXh0LFxuICAgIG9wdGlvbnM6IEJ1aWxkRm9ybXNPcHRpb25zLFxuICAgIGZhcm1EaXJlY3Rvcnk6IHN0cmluZyxcbiAgICByZXNvdXJjZXNEaXJlY3Rvcnk6IHN0cmluZyxcbiAgICBlbmdpbmVEaXJlY3Rvcnk6IHN0cmluZyxcbiAgICBjYW5keU1vZHVsZXNEaXJlY3Rvcnk6IHN0cmluZyxcbiAgICBobEZhcm1EaXJlY3RvcnlQYXRoOiBzdHJpbmdcbik6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGJ1aWxkT3B0aW9ucyA9IG9wdGlvbnM7XG5cbiAgICBjb25zdCBwaWNrTGlzdHNDaGFpbiA9IE9ic2VydmUuZmlsZXMocGF0aC5qb2luKGZhcm1EaXJlY3RvcnksIFwicGlja2xpc3RzXCIpLCBcIiouanNvblwiKS5kbyh4ID0+XG4gICAgICAgIEZTVGFzay5jb3B5UmVjdXJzaXZlbHkoY29udGV4dC5sb2dnZXIud2l0aFByZWZpeChcIlBJQ0tMSVNUU1wiKSwgeCwgcGF0aC5qb2luKHJlc291cmNlc0RpcmVjdG9yeSwgXCJwaWNrbGlzdHNcIikpXG4gICAgKTtcblxuXG4gICAgYXdhaXQgRm9ybUdsb2JzLmVuc3VyZUVhY2hHbG9iUmVzb2x2ZXNJbnRvRXhpc3RpbmdGb3JtKGJ1aWxkT3B0aW9ucy5mb3JtR2xvYnMsIGZhcm1EaXJlY3RvcnkpO1xuICAgIGNvbnN0IGZvcm1HbG9icyA9IGF3YWl0IEZvcm1HbG9icy5yZXNvbHZlU3BlY2lmaWVycyhidWlsZE9wdGlvbnMuZm9ybUdsb2JzLCBmYXJtRGlyZWN0b3J5KTtcblxuICAgIGNvbnN0IHN0YXRpY1Jlc291cmNlc0ZvclByb2R1Y3Rpb25DaGFpbiA9IE9ic2VydmUuZmlsZXMoXG4gICAgICAgIHBhdGguam9pbihfX2Rpcm5hbWUsIFwiLi5cIiwgXCIuLlwiLCBcIlN0YXRpY0ZpbGVzRm9yUHJvZHVjdGlvblJlc291cmNlc0RpclwiKSxcbiAgICAgICAgXCIqLmpzXCIsXG4gICAgICAgIFwiKi5qcy5tYXBcIlxuICAgICkuZG8oeCA9PlxuICAgICAgICBGU1Rhc2suY29weVJlY3Vyc2l2ZWx5KGdldExvZ2dlcigpLndpdGhQcmVmaXgoXCJTVEFUSUNTXCIpLCB4LCBwYXRoLmpvaW4ocmVzb3VyY2VzRGlyZWN0b3J5LCBcInB1YmxpY1wiLCBcInNjcmlwdHNcIikpXG4gICAgKTtcblxuICAgIC8qKiDQmtC+0L3QstC10YDRgtC10YDRiyDQvtC/0LjRgdC4INC00LvRjyDRhNC+0YDQvCwg0LrQvtGC0L7RgNGL0LUg0L/QvtC60LAg0L3QtSDRgNC10LDQu9C40LfQvtCy0LDQvdGLINC90LAg0LrQtdC90LTQuCwg0YHQsNC80LAg0LzQtdGF0LDQvdC40LrQsCDQvtC/0LjRgdC4INC/0LXRgNC10L3QtdGB0LXQvdCwINCyINGE0L7RgNC80Ysg0LIg0LrQtdC90LTQuCDQsNC/0LgsINC/0L7RjdGC0L7QvNGDINC+0L3QuCDQtNC+0LvQttC90Ysg0LHRi9GC0Ywg0LIgY2FuZHkucmVzb3VyY2VzXG4gICAgICogINCg0LXQsNC70LjQt9GD0LXRgtGB0Y8g0YLQvtC70YzQutC+INC/0YDQuCDQvtCx0YnQtdC8INCx0LjQu9C00LUg0YTQvtGA0Lw6IGNhbmR5IGJ1aWxkICpcbiAgICAgKiAqL1xuICAgIGxldCByZXNvdXJjZXNFeHRlcm5hbENvbnZlcnRlcnNDaGFpbjogQ2hhaW5hYmxlVmFsdWVQcm9kdWNlcjxzdHJpbmc+IHwgRW1wdHlQcm9kdWNlciA9IE9ic2VydmUuZW1wdHkoKTtcbiAgICBpZiAoZm9ybUdsb2JzWzBdID09PSBcIipcIikge1xuICAgICAgICByZXNvdXJjZXNFeHRlcm5hbENvbnZlcnRlcnNDaGFpbiA9IE9ic2VydmUuZmlsZXMocGF0aC5qb2luKGZhcm1EaXJlY3RvcnksIFwiZXh0ZXJuYWxDb252ZXJ0ZXJzXCIpLCBcIioueHNsdFwiKS5kbyhcbiAgICAgICAgICAgIHggPT5cbiAgICAgICAgICAgICAgICBGU1Rhc2suY29weVJlY3Vyc2l2ZWx5KFxuICAgICAgICAgICAgICAgICAgICBnZXRMb2dnZXIoKS53aXRoUHJlZml4KFwiRVhURVJOQUwtQ09OVkVSVEVSU1wiKSxcbiAgICAgICAgICAgICAgICAgICAgeCxcbiAgICAgICAgICAgICAgICAgICAgcGF0aC5qb2luKHJlc291cmNlc0RpcmVjdG9yeSwgXCJjb252ZXJ0ZXJzXCIpXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGNvbnN0IGNvcGllZEVuZ2luZXMgPSBuZXcgU2V0PHN0cmluZz4oKTtcblxuICAgIGNvbnN0IHJlcG9zaXRvcnlSb290ID0gcGF0aC5qb2luKGZhcm1EaXJlY3RvcnksIFwiLi5cIik7XG4gICAgY29uc3QgYnVpbGRDYWNoZSA9IG5ldyBCdWlsZENhY2hlKGZhcm1EaXJlY3RvcnksIG9wdGlvbnMuYnVpbGRDYWNoZU1vZGUpO1xuICAgIGNvbnN0IGJ1aWxkRm9ybXNDaGFpbiA9IE9ic2VydmUuZm9ybURpcmVjdG9yaWVzKHJlcG9zaXRvcnlSb290LCBmb3JtR2xvYnMpLnNwbGl0VG9QYXJhbGxlbENoYWlucyhcbiAgICAgICAgeCA9PiB4LFxuICAgICAgICB4ID0+IHgsXG4gICAgICAgIGFzeW5jIGZvcm1SZWxhdGl2ZVBhdGggPT4ge1xuICAgICAgICAgICAgY29uc3QgZ2Z2ID0gZXh0cmFjdEdmdkZyb21Gb3JtUGF0aChmb3JtUmVsYXRpdmVQYXRoKTtcbiAgICAgICAgICAgIGNvbnN0IGZvcm1EaXJQYXRoID0gcGF0aC5qb2luKHJlcG9zaXRvcnlSb290LCBmb3JtUmVsYXRpdmVQYXRoKTtcblxuICAgICAgICAgICAgaWYgKCEoYXdhaXQgcGF0aEV4aXN0cyhwYXRoLmpvaW4oZm9ybURpclBhdGgsIFdlbGxLbm93bkRpcmVjdG9yaWVzLkZvcm1Kc29uRmlsZU5hbWUpKSkpIHtcbiAgICAgICAgICAgICAgICBjb250ZXh0LmxvZ2dlci53YXJuaW5nKFxuICAgICAgICAgICAgICAgICAgICBgRm9ybSAke2dmdn0gZG9lcyBub3QgaGF2ZSBmb3JtLmpzb24gZmlsZS4gVG8gaW5jbHVkZSB0aGlzIGZvcm0gdG8gYnVpbGQgcHJvY2VzcyByZXN0YXJ0IGJ1aWxkYFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIE9ic2VydmUudmFsdWUoe30pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgZm9ybVNjaGVtYXNEaXJQYXRoID0gcGF0aC5qb2luKGZvcm1EaXJQYXRoLCBcInNjaGVtYXNcIik7XG4gICAgICAgICAgICBjb25zdCBybmdTY2hlbWFNYXNrID0gYCoke2dldFJuZ1NjaGVtYUZpbGVuYW1lKGZvcm1TY2hlbWFzRGlyUGF0aCwgZ2Z2KX1gO1xuXG4gICAgICAgICAgICByZXR1cm4gT2JzZXJ2ZS5maWxlKHBhdGguam9pbihmb3JtRGlyUGF0aCwgV2VsbEtub3duRGlyZWN0b3JpZXMuRm9ybUpzb25GaWxlTmFtZSkpXG4gICAgICAgICAgICAgICAgLnRyYW5zZm9ybShmb3JtSnNvbkZpbGUgPT5cbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZUZvcm1JbmZvKFxuICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUpzb25GaWxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgZm9ybURpclBhdGgsXG4gICAgICAgICAgICAgICAgICAgICAgICBlbmdpbmVEaXJlY3RvcnksXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmxvZ2dlci53aXRoUHJlZml4KGBGT1JNOiR7Z2Z2fWApLFxuICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy51cGdyYWRlRm9ybUpzb24sXG4gICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zLnVzZUxhc3RTdGFibGVWZXJzaW9uLFxuICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy51c2VQcmVyZWxlYXNlVmVyc2lvblxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC50cmFuc2Zvcm0oYXN5bmMgZmkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoZmkubW9kZSA9PT0gRm9ybUJ1aWxkTW9kZS5Ob3JtYWxCdWlsZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZpLmdlbmVyYXRvclZlcnNpb24gPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiZ2VuZXJhdG9yVmVyc2lvbiBpcyBub3QgZGVmaW5lZFwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmaS5lbmdpbmVWZXJzaW9uID09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcImVuZ2luZVZlcnNpb24gaXMgbm90IGRlZmluZWRcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLmZpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvclNvdXJjZTogYXdhaXQgcmVzb2x2ZUdlbmVyYXRvclZlcnNpb24oXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpLmdlbmVyYXRvclZlcnNpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQubG9nZ2VyLndpdGhQcmVmaXgoZ2Z2KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5naW5lU291cmNlOiBhd2FpdCByZXNvbHZlRW5naW5lVmVyc2lvbihmaS5lbmdpbmVWZXJzaW9uLCBjb250ZXh0LmxvZ2dlci53aXRoUHJlZml4KGdmdikpLFxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uZmksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yU291cmNlOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5naW5lU291cmNlOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAuYXR0YWNoKFxuICAgICAgICAgICAgICAgICAgICBhc3luYyBmaSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmkuZ2VuZXJhdG9yU291cmNlID09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgU2luZ2xlVmFsdWVQcm9kdWNlcihuZXcgTnVsbEZvcm1HZW5lcmF0b3IoKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBnZW5lcmF0b3JGYWN0b3J5KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaS5nZW5lcmF0b3JTb3VyY2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbmR5TW9kdWxlc0RpcmVjdG9yeSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy51c2VWZXJzaW9uRnJvbUNhY2hlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgYXN5bmMgKGZpLCB5KSA9PiAoeyAuLi5maSwgZ2VuZXJhdG9yOiB5IH0pLFxuICAgICAgICAgICAgICAgICAgICBhc3luYyBmaSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgZmkuZ2VuZXJhdG9yU291cmNlICE9IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gZ2V0R2VuZXJhdG9yU291cmNlS2V5KGZpLmdlbmVyYXRvclNvdXJjZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IFwiTnVsbEZvcm1HZW5lcmF0b3JcIlxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAuYXR0YWNoKFxuICAgICAgICAgICAgICAgICAgICBhc3luYyBmaSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmkuZW5naW5lU291cmNlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFNpbmdsZVZhbHVlUHJvZHVjZXIoXCJOdWxsRW5naW5lXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVuZ2luZUZhY3RvcnkoZmkuZW5naW5lU291cmNlLCBjYW5keU1vZHVsZXNEaXJlY3RvcnksIG9wdGlvbnMudXNlVmVyc2lvbkZyb21DYWNoZSkuZG8oXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXN5bmMgeCA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghY29waWVkRW5naW5lcy5oYXMoZ2V0RW5naW5lU291cmNlS2V5KGZpLmVuZ2luZVNvdXJjZSkpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhd2FpdCBGU1Rhc2suY29weVJlY3Vyc2l2ZWx5KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldExvZ2dlcigpLndpdGhQcmVmaXgoXCJFTkdJTkVcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoLmpvaW4ocmVzb3VyY2VzRGlyZWN0b3J5LCBcInB1YmxpY1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvcGllZEVuZ2luZXMuYWRkKGdldEVuZ2luZVNvdXJjZUtleShmaS5lbmdpbmVTb3VyY2UpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIGFzeW5jIGZpID0+IGZpLFxuICAgICAgICAgICAgICAgICAgICBhc3luYyBmaSA9PiAoZmkuZW5naW5lU291cmNlICE9IHVuZGVmaW5lZCA/IGdldEVuZ2luZVNvdXJjZUtleShmaS5lbmdpbmVTb3VyY2UpIDogXCJOdWxsRW5naW5lXCIpXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC5hdHRhY2goYXN5bmMgZmkgPT5cbiAgICAgICAgICAgICAgICAgICAgT2JzZXJ2ZS5maWxlcyhcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpLmZvcm1Tb3VyY2VzUGF0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiLi4vLi4vY29udHJvbHMvKiovKlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgXCIuLi8uLi94c2x0VGVtcGxhdGVzLyoqLypcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiLi4vLi4vanNIZWxwZXJzLyoqLypcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIFwic2NoZW1hcy8qKi8qXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBcInN1Z2FyLyoqLypcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiY29udHJvbHMvKiovKlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJhdXRvY2FsYy8qKi8qXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBcImhlbHBlcnMvKiovKlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJ2YWxpZGF0aW9ucy8qKi8qXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBcImxvY2FsaXphdGlvbi8qKi8qXCJcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAudHJhbnNmb3JtKGFzeW5jIGZpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGRlcGVuZGVuY2llc0hhc2g6IHVuZGVmaW5lZCB8IHN0cmluZztcbiAgICAgICAgICAgICAgICAgICAgaWYgKGZpLm1vZGUgIT09IEZvcm1CdWlsZE1vZGUuTm9ybWFsQnVpbGQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uZmksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVwZW5kZW5jaWVzSGFzaDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAoYXdhaXQgZmkuZ2VuZXJhdG9yLnN1cHBvcnRzRGVwZW5kZW5jaWVzRXh0cmFjdGlvbigpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBkZXBlbmRlbmNpZXNIYXNoID0gYXdhaXQgZmkuZ2VuZXJhdG9yLmdldEFsbERlcGVuZGVuY2llc0hhc2goXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybURpclBhdGgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFybURpcmVjdG9yeSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBobEZhcm1EaXJlY3RvcnlQYXRoXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5maSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlcGVuZGVuY2llc0hhc2g6IGRlcGVuZGVuY2llc0hhc2gsXG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAudHJhbnNmb3JtKGFzeW5jIGZpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGJ1aWxkQ2FjaGVFeGlzdDogYm9vbGVhbiA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICBpZiAoZmkuZGVwZW5kZW5jaWVzSGFzaCAhPSB1bmRlZmluZWQgJiYgZmkuZ2VuZXJhdG9yU291cmNlICE9IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgYnVpbGRDYWNoZUV4aXN0ID0gYXdhaXQgYnVpbGRDYWNoZS5leGlzdHMoZmkuZ2VuZXJhdG9yU291cmNlLCBnZnYsIGZpLmRlcGVuZGVuY2llc0hhc2gpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5maSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkQ2FjaGVFeGlzdDogYnVpbGRDYWNoZUV4aXN0LFxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLmRvKGFzeW5jIGZpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGZpLmdlbmVyYXRvclNvdXJjZSA9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKGZpLmJ1aWxkQ2FjaGVFeGlzdCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC5sb2dnZXIud2l0aFByZWZpeChgR0VORVJBVEU6JHtnZnZ9YCkubG9nKFwiU2tpcHBlZCBkdWUgYnVpbGQgY2FjaGUgZXhpdHNcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGdlbmVyYXRlRm9ybShcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpLmZvcm1Tb3VyY2VzUGF0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZhcm1EaXJlY3RvcnksXG4gICAgICAgICAgICAgICAgICAgICAgICBobEZhcm1EaXJlY3RvcnlQYXRoLFxuICAgICAgICAgICAgICAgICAgICAgICAgZmkuZ2VuZXJhdG9yLFxuICAgICAgICAgICAgICAgICAgICAgICAgdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNraXBDb2RlUmVmb3JtYXR0aW5nOiBvcHRpb25zLnNraXBHZW5lcmF0ZWRDb2RlUmVmb3JtYXR0aW5nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc291cmNlc0hhc2g6IGZpLmRlcGVuZGVuY2llc0hhc2ggPz8gXCJVbmRlZmluZWRSZXNvdXJjZXNIYXNoXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAuYXR0YWNoKGFzeW5jIGZpID0+IE9ic2VydmUuZmlsZXMocGF0aC5qb2luKGZvcm1EaXJQYXRoLCBcImZvcm1cIiksIFwiKiovKlwiKSlcbiAgICAgICAgICAgICAgICAuZG8oYXN5bmMgZmkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoZmkuZ2VuZXJhdG9yU291cmNlID09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChmaS5kZXBlbmRlbmNpZXNIYXNoICE9IHVuZGVmaW5lZCAmJiBmaS5idWlsZENhY2hlRXhpc3QpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQubG9nZ2VyLndpdGhQcmVmaXgoYENPTVBJTEU6JHtnZnZ9YCkubG9nKFwiU2tpcHBlZCBkdWUgYnVpbGQgY2FjaGUgZXhpc3RzXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYXdhaXQgYnVpbGRDYWNoZS5leHRyYWN0KGZpLmdlbmVyYXRvclNvdXJjZSwgZ2Z2LCBmaS5kZXBlbmRlbmNpZXNIYXNoLCByZXNvdXJjZXNEaXJlY3RvcnkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGJ1aWxkQ2FjaGVPcHRpb25zID1cbiAgICAgICAgICAgICAgICAgICAgICAgIGZpLmRlcGVuZGVuY2llc0hhc2ggIT0gdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVwc0hhc2g6IGZpLmRlcGVuZGVuY2llc0hhc2gsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yVmVyc2lvbjogZ2V0R2VuZXJhdG9yVmVyc2lvbihmaS5nZW5lcmF0b3JTb3VyY2UpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdmdjogZ2Z2LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGU6IG9wdGlvbnMuYnVpbGRDYWNoZU1vZGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFybURpcmVjdG9yeTogZmFybURpcmVjdG9yeSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZDtcblxuICAgICAgICAgICAgICAgICAgICBhd2FpdCBjb21waWxlRm9ybShcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpLmZvcm1OYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgZmkudGhlbWVzLFxuICAgICAgICAgICAgICAgICAgICAgICAgZmFybURpcmVjdG9yeSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1EaXJQYXRoLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzb3VyY2VzRGlyZWN0b3J5LFxuICAgICAgICAgICAgICAgICAgICAgICAgZmkuZGVwZW5kZW5jaWVzSGFzaCA/P1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlamVjdChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaGlzIHZlcnNpb24gb2YgZ2VuZXJhdG9yIGlzIG5vdCBzdXBwb3J0ZWQgZHVlIHRvIGRlcGVuZGVuY2llcyBleHRyYWN0aW9uIGlzIG5vdCBzdXBwb3J0ZWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkQ2FjaGVPcHRpb25zXG4gICAgICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgd3JpdGVGb3JtTWV0YShcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc291cmNlc0RpcmVjdG9yeSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGdmdixcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpLmVuZ2luZVNvdXJjZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpLmRlcGVuZGVuY2llc0hhc2ggPz9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWplY3QoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGhpcyB2ZXJzaW9uIG9mIGdlbmVyYXRvciBpcyBub3Qgc3VwcG9ydGVkIGR1ZSB0byBkZXBlbmRlbmNpZXMgZXh0cmFjdGlvbiBpcyBub3Qgc3VwcG9ydGVkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgZmkudGhlbWVzLFxuICAgICAgICAgICAgICAgICAgICAgICAgYnVpbGRDYWNoZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkQ2FjaGVPcHRpb25zXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAuZG8oYXN5bmMgZmkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoZmkuZ2VuZXJhdG9yU291cmNlID09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGJ1aWxkQ2FjaGVPcHRpb25zID1cbiAgICAgICAgICAgICAgICAgICAgICAgIGZpLmRlcGVuZGVuY2llc0hhc2ggIT0gdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVwc0hhc2g6IGZpLmRlcGVuZGVuY2llc0hhc2gsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yVmVyc2lvbjogZ2V0R2VuZXJhdG9yVmVyc2lvbihmaS5nZW5lcmF0b3JTb3VyY2UpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdmdjogZ2Z2LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGU6IG9wdGlvbnMuYnVpbGRDYWNoZU1vZGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFybURpcmVjdG9yeTogZmFybURpcmVjdG9yeSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgd3JpdGVGTGFuZ05vcm1hbGl6YXRpb25GaWxlcyhcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpLmZvcm1OYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgZmFybURpcmVjdG9yeSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1EaXJQYXRoLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzb3VyY2VzRGlyZWN0b3J5LFxuICAgICAgICAgICAgICAgICAgICAgICAgdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgYnVpbGRDYWNoZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkQ2FjaGVPcHRpb25zLFxuICAgICAgICAgICAgICAgICAgICAgICAgZmkuYnVpbGRDYWNoZUV4aXN0XG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IHdyaXRlQXR0YWNobWVudFBhdGhGaWxlcyhcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpLmZvcm1OYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgZmFybURpcmVjdG9yeSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1EaXJQYXRoLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzb3VyY2VzRGlyZWN0b3J5LFxuICAgICAgICAgICAgICAgICAgICAgICAgdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgYnVpbGRDYWNoZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkQ2FjaGVPcHRpb25zXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAuYXR0YWNoKGFzeW5jIGZpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGZpLm1vZGUgPT09IEZvcm1CdWlsZE1vZGUuQ29weUxlZ2FjeVByZWJ1aWx0UmVzb3VyY2VzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gT2JzZXJ2ZS5maWxlcyhwYXRoLmpvaW4oZmkuZm9ybVNvdXJjZXNQYXRoLCBcImxlZ2FjeS1wcmVidWlsdFwiKSwgXCIqXCIpLmRvKHggPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBGU1Rhc2suY29weVJlY3Vyc2l2ZWx5KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRMb2dnZXIoKS53aXRoUHJlZml4KFwiTEVHQUNZLVBSRUJVSUxUXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoLmpvaW4ocmVzb3VyY2VzRGlyZWN0b3J5KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFNpbmdsZVZhbHVlUHJvZHVjZXIoXCJcIik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5hdHRhY2goYXN5bmMgZmkgPT5cbiAgICAgICAgICAgICAgICAgICAgT2JzZXJ2ZS5maWxlcyhwYXRoLmpvaW4oZmkuZm9ybVNvdXJjZXNQYXRoLCBcInNjaGVtYXNcIiksIHJuZ1NjaGVtYU1hc2spLmRvKHggPT5cbiAgICAgICAgICAgICAgICAgICAgICAgIEZTVGFzay5jb3B5UmVjdXJzaXZlbHkoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0TG9nZ2VyKCkud2l0aFByZWZpeChcIlNDSEVNQVNcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoLmpvaW4ocmVzb3VyY2VzRGlyZWN0b3J5LCBcInNjaGVtYXNcIilcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAuYXR0YWNoKGFzeW5jIGZpID0+XG4gICAgICAgICAgICAgICAgICAgIE9ic2VydmUuZmlsZXMocGF0aC5qb2luKGZpLmZvcm1Tb3VyY2VzUGF0aCwgXCJjb252ZXJ0ZXJzXCIpLCBcIipcIikuZG8oeCA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgRlNUYXNrLmNvcHlSZWN1cnNpdmVseShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRMb2dnZXIoKS53aXRoUHJlZml4KFwiQ09OVkVSVEVSU1wiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGguam9pbihyZXNvdXJjZXNEaXJlY3RvcnksIFwiY29udmVydGVyc1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC5hdHRhY2goYXN5bmMgZmkgPT5cbiAgICAgICAgICAgICAgICAgICAgT2JzZXJ2ZS5maWxlcyhwYXRoLmpvaW4oZmkuZm9ybVNvdXJjZXNQYXRoLCBcIm1lcmdlcnNcIiksIFwiKlwiKS5kbyh4ID0+XG4gICAgICAgICAgICAgICAgICAgICAgICBGU1Rhc2suY29weVJlY3Vyc2l2ZWx5KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldExvZ2dlcigpLndpdGhQcmVmaXgoXCJNRVJHRVJTXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aC5qb2luKHJlc291cmNlc0RpcmVjdG9yeSwgXCJtZXJnZXJzXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLmF0dGFjaChhc3luYyBmaSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG1vZGlmaWVyID0gKGNvbnRlbnQ6IHN0cmluZyk6IHN0cmluZyA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudC5yZXBsYWNlKC88eDppbmNsdWRlIGhyZWY9XCJbLi9dKy9nLCAnPHg6aW5jbHVkZSBocmVmPVwiJyk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBPYnNlcnZlLmZpbGVzKHBhdGguam9pbihmaS5mb3JtU291cmNlc1BhdGgsIFwiY29udmVydGVyc1wiKSwgXCIqXCIpLmRvKHggPT5cbiAgICAgICAgICAgICAgICAgICAgICAgIEZTVGFzay5tb2RpZnlGaWxlc0NvbnRlbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0TG9nZ2VyKCkud2l0aFByZWZpeChcIkZJWC1YU0xULUlOQ0xVREVcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoLmpvaW4ocmVzb3VyY2VzRGlyZWN0b3J5LCBcImNvbnZlcnRlcnNcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIqKi8qLnhzbHRcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RpZmllclxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLmF0dGFjaChhc3luYyBmaSA9PlxuICAgICAgICAgICAgICAgICAgICBPYnNlcnZlLmZpbGVzKHBhdGguam9pbihmaS5mb3JtU291cmNlc1BhdGgsIFwiLi5cIiwgXCIuLlwiLCBcInhzbHRUZW1wbGF0ZXNcIiksIFwiKlwiKS5kbyh4ID0+XG4gICAgICAgICAgICAgICAgICAgICAgICBGU1Rhc2suY29weVJlY3Vyc2l2ZWx5KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldExvZ2dlcigpLndpdGhQcmVmaXgoXCJYU0xULVRFTVBMQVRFU1wiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGguam9pbihyZXNvdXJjZXNEaXJlY3RvcnksIFwiY29udmVydGVyc1wiLCBcInhzbHRUZW1wbGF0ZXNcIilcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAuYXR0YWNoKGFzeW5jIGZpID0+XG4gICAgICAgICAgICAgICAgICAgIE9ic2VydmUuZmlsZXMocGF0aC5qb2luKGZpLmZvcm1Tb3VyY2VzUGF0aCwgXCJub3JtYWxpemVcIiksIFwiKi54bWxcIikuZG8oeCA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgRlNUYXNrLmNvcHlSZWN1cnNpdmVseShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRMb2dnZXIoKS53aXRoUHJlZml4KFwiTk9STUFMSVpFXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aC5qb2luKHJlc291cmNlc0RpcmVjdG9yeSwgXCJub3JtYWxpemVcIilcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAuYXR0YWNoKGFzeW5jIGZpID0+XG4gICAgICAgICAgICAgICAgICAgIE9ic2VydmUuZmlsZXMocGF0aC5qb2luKGZpLmZvcm1Tb3VyY2VzUGF0aCwgXCJwYXRjaFwiKSwgXCIqLnhzbHRcIikuZG8oeCA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgRlNUYXNrLmNvcHlSZWN1cnNpdmVseShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRMb2dnZXIoKS53aXRoUHJlZml4KFwiUEFUQ0hcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoLmpvaW4ocmVzb3VyY2VzRGlyZWN0b3J5LCBcInBhdGNoXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLmF0dGFjaChhc3luYyBmaSA9PlxuICAgICAgICAgICAgICAgICAgICBPYnNlcnZlLmZpbGVzKHBhdGguam9pbihmaS5mb3JtU291cmNlc1BhdGgsIFwibWFwXCIpLCBcIioueG1sXCIpLmRvKHggPT5cbiAgICAgICAgICAgICAgICAgICAgICAgIEZTVGFzay5jb3B5UmVjdXJzaXZlbHkoZ2V0TG9nZ2VyKCkud2l0aFByZWZpeChcIk1BUFwiKSwgeCwgcGF0aC5qb2luKHJlc291cmNlc0RpcmVjdG9yeSwgXCJtYXBcIikpXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLmF0dGFjaChhc3luYyBmaSA9PlxuICAgICAgICAgICAgICAgICAgICBPYnNlcnZlLmZpbGVzKHBhdGguam9pbihmaS5mb3JtU291cmNlc1BhdGgsIFwidW5tYXBcIiksIFwiKi54bWxcIikuZG8oeCA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgRlNUYXNrLmNvcHlSZWN1cnNpdmVseShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRMb2dnZXIoKS53aXRoUHJlZml4KFwiVU5NQVBcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoLmpvaW4ocmVzb3VyY2VzRGlyZWN0b3J5LCBcInVubWFwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLmRvKGFzeW5jIGZpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGJ1aWxkT3B0aW9ucy53YXRjaCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgbm90aWZpZXIubm90aWZ5KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogYCR7ZmkuZm9ybU5hbWV9OiDRgdCx0L7RgNC60LAg0LfQsNCy0LXRgNGI0LXQvdCwYCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiBgRW5naW5lOiAke1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaS5lbmdpbmVTb3VyY2UgPT0gdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IFwiW05vRW5naW5lXVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGZpLmVuZ2luZVNvdXJjZS50eXBlID09PSBcIkxvY2FsRW5naW5lU291cmNlc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IFwibG9jYWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBmaS5lbmdpbmVTb3VyY2UudmVyc2lvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1gLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICk7XG5cbiAgICBpZiAoYnVpbGRPcHRpb25zLndhdGNoKSB7XG4gICAgICAgIGlmIChvcHRpb25zLmNsZWFuKSB7XG4gICAgICAgICAgICBhd2FpdCBjbGVhblRhcmdldERpcmVjdG9yeShyZXNvdXJjZXNEaXJlY3RvcnksIGNvbnRleHQubG9nZ2VyKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBzdG9wT2JzZXJ2ZTEgPSBhd2FpdCBwaWNrTGlzdHNDaGFpbi5vYnNlcnZlKCk7XG4gICAgICAgIGNvbnN0IHN0b3BPYnNlcnZlMiA9IGF3YWl0IGJ1aWxkRm9ybXNDaGFpbi5vYnNlcnZlKCk7XG4gICAgICAgIGNvbnN0IHN0b3BPYnNlcnZlMyA9IGF3YWl0IHN0YXRpY1Jlc291cmNlc0ZvclByb2R1Y3Rpb25DaGFpbi5vYnNlcnZlKCk7XG4gICAgICAgIGNvbnN0IHN0b3BPYnNlcnZlNSA9IGF3YWl0IHJlc291cmNlc0V4dGVybmFsQ29udmVydGVyc0NoYWluLm9ic2VydmUoKTtcbiAgICAgICAgYXdhaXQgY29udGV4dC53YWl0Rm9yRXhpdCgpO1xuICAgICAgICBpZiAoc3RvcE9ic2VydmUzICE9IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgYXdhaXQgc3RvcE9ic2VydmUzKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHN0b3BPYnNlcnZlNCAhPSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGF3YWl0IHN0b3BPYnNlcnZlNCgpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzdG9wT2JzZXJ2ZTUgIT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBhd2FpdCBzdG9wT2JzZXJ2ZTUoKTtcbiAgICAgICAgfVxuICAgICAgICBhd2FpdCBzdG9wT2JzZXJ2ZTIoKTtcbiAgICAgICAgYXdhaXQgc3RvcE9ic2VydmUxKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3Qgc3RhcnREYXRlID0gRGF0ZS5ub3coKTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGlmIChvcHRpb25zLmNsZWFuKSB7XG4gICAgICAgICAgICAgICAgYXdhaXQgY2xlYW5UYXJnZXREaXJlY3RvcnkocmVzb3VyY2VzRGlyZWN0b3J5LCBjb250ZXh0LmxvZ2dlcik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBhd2FpdCBwaWNrTGlzdHNDaGFpbi5jdXJyZW50VmFsdWU7XG4gICAgICAgICAgICBhd2FpdCBzdGF0aWNSZXNvdXJjZXNGb3JQcm9kdWN0aW9uQ2hhaW4uY3VycmVudFZhbHVlO1xuICAgICAgICAgICAgYXdhaXQgcmVzb3VyY2VzRXh0ZXJuYWxDb252ZXJ0ZXJzQ2hhaW4uY3VycmVudFZhbHVlO1xuICAgICAgICAgICAgYXdhaXQgYnVpbGRGb3Jtc0NoYWluLmN1cnJlbnRWYWx1ZTtcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhjaGFsay5ncmVlbkJyaWdodChcIkJ1aWxkIHN1Y2Nlc3NcIikpO1xuICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgICAgY29uc3QgdG90YWxUaW1lID0gRGF0ZS5ub3coKSAtIHN0YXJ0RGF0ZTtcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhgVG90YWwgdGltZTogJHtwcmludFRpbWUodG90YWxUaW1lKX1gKTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuYXN5bmMgZnVuY3Rpb24gY2xlYW5UYXJnZXREaXJlY3RvcnkocmVzb3VyY2VzRGlyZWN0b3J5OiBzdHJpbmcsIGxvZ2dlcjogSUxvZ2dlcik6IFByb21pc2U8dm9pZD4ge1xuICAgIGxvZ2dlci5sb2coXCJDbGVhbmluZyByZXNvdXJjZSBkaXJlY3RvcnkuIFwiICsgcmVzb3VyY2VzRGlyZWN0b3J5KTtcbiAgICBhd2FpdCBlbXB0eURpcihyZXNvdXJjZXNEaXJlY3RvcnkpO1xuICAgIGxvZ2dlci5sb2coXCJSZXNvdXJjZSBkaXJlY3RvcnkgY2xlYW5cIik7XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQSxJQUFBQSxLQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFFQSxJQUFBQyxNQUFBLEdB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
234
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcGF0aCIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX2NoYWxrIiwiX2ZzRXh0cmEiLCJfbm9kZU5vdGlmaWVyIiwiX0FjcXVpcmVGb3JtRW5naW5lIiwiX0VuZ2luZVNvdXJjZSIsIl9Db21waWxlRm9ybSIsIl9HZW5lcmF0ZUZvcm0iLCJfTnVsbEZvcm1HZW5lcmF0b3IiLCJfV3JpdGVGTGFuZ05vcm1hbGl6YXRpb25GaWxlcyIsIl9GU1Rhc2siLCJfQWNxdWlyZUZvcm1HZW5lcmF0b3IiLCJfUHVibGlzaGVkVmVyc2lvblV0aWxzIiwiX1Jlc29sdmVGb3JtSW5mbyIsIl9Xcml0ZUZvcm1NZXRhIiwiX0Zvcm1HbG9ic1V0aWxzIiwiX1N0YXRpY0xvZ2dlciIsIl9PYnNlcnZlIiwiX1NpbmdsZVZhbHVlUHJvZHVjZXIiLCJfVGltaW5nVXRpbHMiLCJfQ2FjaGVBc3NldHNQbHVnaW4iLCJfVHlwaW5nVXRpbHMiLCJfV3JpdGVBdHRhY2htZW50UGF0aEZpbGVzIiwiX2dldFJuZ1NjaGVtYUZpbGVuYW1lIiwiX0Zvcm1QYXRoVXRpbHMiLCJfV2VsbEtub3duRGlyZWN0b3JpZXMiLCJnZXRHZW5lcmF0b3JWZXJzaW9uIiwiZ2VuZXJhdG9yU291cmNlIiwidHlwZSIsInZlcnNpb24iLCJFcnJvciIsInJ1bkJ1aWxkRm9ybXMiLCJjb250ZXh0Iiwib3B0aW9ucyIsImZhcm1EaXJlY3RvcnkiLCJyZXNvdXJjZXNEaXJlY3RvcnkiLCJlbmdpbmVEaXJlY3RvcnkiLCJjYW5keU1vZHVsZXNEaXJlY3RvcnkiLCJobEZhcm1EaXJlY3RvcnlQYXRoIiwiYnVpbGRPcHRpb25zIiwicGlja0xpc3RzQ2hhaW4iLCJPYnNlcnZlIiwiZmlsZXMiLCJwYXRoIiwiam9pbiIsImRvIiwieCIsIkZTVGFzayIsImNvcHlSZWN1cnNpdmVseSIsImxvZ2dlciIsIndpdGhQcmVmaXgiLCJGb3JtR2xvYnMiLCJlbnN1cmVFYWNoR2xvYlJlc29sdmVzSW50b0V4aXN0aW5nRm9ybSIsImZvcm1HbG9icyIsImZvcm1JbmZvcyIsInJlc29sdmVHZnZHbG9icyIsInN0YXRpY1Jlc291cmNlc0ZvclByb2R1Y3Rpb25DaGFpbiIsIl9fZGlybmFtZSIsImdldExvZ2dlciIsInJlc291cmNlc0V4dGVybmFsQ29udmVydGVyc0NoYWluIiwiZW1wdHkiLCJjb3BpZWRFbmdpbmVzIiwiU2V0IiwicmVwb3NpdG9yeVJvb3QiLCJidWlsZENhY2hlIiwiQnVpbGRDYWNoZSIsImJ1aWxkQ2FjaGVNb2RlIiwiYnVpbGRGb3Jtc0NoYWluIiwiZml4ZWRGb3JtRGlyZWN0b3JpZXMiLCJtYXAiLCJyZWxhdGl2ZSIsImZvcm1QYXRoIiwic3BsaXRUb1BhcmFsbGVsQ2hhaW5zIiwiZm9ybVJlbGF0aXZlUGF0aCIsImdmdiIsImV4dHJhY3RHZnZGcm9tRm9ybVBhdGgiLCJmb3JtRGlyUGF0aCIsInBhdGhFeGlzdHMiLCJXZWxsS25vd25EaXJlY3RvcmllcyIsIkZvcm1Kc29uRmlsZU5hbWUiLCJ3YXJuaW5nIiwidmFsdWUiLCJmb3JtU2NoZW1hc0RpclBhdGgiLCJybmdTY2hlbWFNYXNrIiwiZ2V0Um5nU2NoZW1hRmlsZW5hbWUiLCJmaWxlIiwidHJhbnNmb3JtIiwiZm9ybUpzb25GaWxlIiwicmVzb2x2ZUZvcm1JbmZvIiwidXBncmFkZUZvcm1Kc29uIiwidXNlTGFzdFN0YWJsZVZlcnNpb24iLCJ1c2VQcmVyZWxlYXNlVmVyc2lvbiIsImZpIiwibW9kZSIsIkZvcm1CdWlsZE1vZGUiLCJOb3JtYWxCdWlsZCIsImdlbmVyYXRvclZlcnNpb24iLCJ1bmRlZmluZWQiLCJlbmdpbmVWZXJzaW9uIiwicmVzb2x2ZUdlbmVyYXRvclZlcnNpb24iLCJlbmdpbmVTb3VyY2UiLCJyZXNvbHZlRW5naW5lVmVyc2lvbiIsImF0dGFjaCIsIlNpbmdsZVZhbHVlUHJvZHVjZXIiLCJOdWxsRm9ybUdlbmVyYXRvciIsImdlbmVyYXRvckZhY3RvcnkiLCJ1c2VWZXJzaW9uRnJvbUNhY2hlIiwieSIsImdlbmVyYXRvciIsImdldEdlbmVyYXRvclNvdXJjZUtleSIsImVuZ2luZUZhY3RvcnkiLCJoYXMiLCJnZXRFbmdpbmVTb3VyY2VLZXkiLCJhZGQiLCJmb3JtU291cmNlc1BhdGgiLCJkZXBlbmRlbmNpZXNIYXNoIiwic3VwcG9ydHNEZXBlbmRlbmNpZXNFeHRyYWN0aW9uIiwiZ2V0QWxsRGVwZW5kZW5jaWVzSGFzaCIsImJ1aWxkQ2FjaGVFeGlzdCIsImV4aXN0cyIsIl9maSRkZXBlbmRlbmNpZXNIYXNoIiwibG9nIiwiZ2VuZXJhdGVGb3JtIiwic2tpcENvZGVSZWZvcm1hdHRpbmciLCJza2lwR2VuZXJhdGVkQ29kZVJlZm9ybWF0dGluZyIsInJlc291cmNlc0hhc2giLCJfZmkkZGVwZW5kZW5jaWVzSGFzaDIiLCJfZmkkZGVwZW5kZW5jaWVzSGFzaDMiLCJleHRyYWN0IiwiYnVpbGRDYWNoZU9wdGlvbnMiLCJkZXBzSGFzaCIsImNvbXBpbGVGb3JtIiwiZm9ybU5hbWUiLCJ0aGVtZXMiLCJyZWplY3QiLCJ3cml0ZUZvcm1NZXRhIiwid3JpdGVGTGFuZ05vcm1hbGl6YXRpb25GaWxlcyIsIndyaXRlQXR0YWNobWVudFBhdGhGaWxlcyIsIkNvcHlMZWdhY3lQcmVidWlsdFJlc291cmNlcyIsIm1vZGlmaWVyIiwiY29udGVudCIsInJlcGxhY2UiLCJtb2RpZnlGaWxlc0NvbnRlbnQiLCJ3YXRjaCIsIm5vdGlmaWVyIiwibm90aWZ5IiwidGl0bGUiLCJtZXNzYWdlIiwiY2xlYW4iLCJjbGVhblRhcmdldERpcmVjdG9yeSIsInN0b3BPYnNlcnZlMSIsIm9ic2VydmUiLCJzdG9wT2JzZXJ2ZTIiLCJzdG9wT2JzZXJ2ZTMiLCJzdG9wT2JzZXJ2ZTUiLCJ3YWl0Rm9yRXhpdCIsInN0YXJ0RGF0ZSIsIkRhdGUiLCJub3ciLCJjdXJyZW50VmFsdWUiLCJjb25zb2xlIiwiY2hhbGsiLCJncmVlbkJyaWdodCIsInRvdGFsVGltZSIsInByaW50VGltZSIsImVtcHR5RGlyIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL0NMSUNvbW1hbmRzL0J1aWxkRm9ybXMvUnVuQnVpbGRGb3Jtcy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgcGF0aCBmcm9tIFwicGF0aFwiO1xuXG5pbXBvcnQgY2hhbGsgZnJvbSBcImNoYWxrXCI7XG5pbXBvcnQgeyBlbXB0eURpciwgcGF0aEV4aXN0cyB9IGZyb20gXCJmcy1leHRyYVwiO1xuaW1wb3J0IG5vdGlmaWVyIGZyb20gXCJub2RlLW5vdGlmaWVyXCI7XG5cbmltcG9ydCB7IGVuZ2luZUZhY3RvcnkgfSBmcm9tIFwiLi4vLi4vQnVpbGRUYXNrcy9FbmdpbmUvQWNxdWlyZUZvcm1FbmdpbmVcIjtcbmltcG9ydCB7IGdldEVuZ2luZVNvdXJjZUtleSB9IGZyb20gXCIuLi8uLi9CdWlsZFRhc2tzL0VuZ2luZS9FbmdpbmVTb3VyY2VcIjtcbmltcG9ydCB7IGNvbXBpbGVGb3JtIH0gZnJvbSBcIi4uLy4uL0J1aWxkVGFza3MvRm9ybS9Db21waWxlRm9ybVwiO1xuaW1wb3J0IHsgZ2VuZXJhdGVGb3JtIH0gZnJvbSBcIi4uLy4uL0J1aWxkVGFza3MvRm9ybS9HZW5lcmF0ZUZvcm1cIjtcbmltcG9ydCB7IE51bGxGb3JtR2VuZXJhdG9yIH0gZnJvbSBcIi4uLy4uL0J1aWxkVGFza3MvRm9ybS9OdWxsRm9ybUdlbmVyYXRvclwiO1xuaW1wb3J0IHsgd3JpdGVGTGFuZ05vcm1hbGl6YXRpb25GaWxlcyB9IGZyb20gXCIuLi8uLi9CdWlsZFRhc2tzL0Zvcm0vV3JpdGVGTGFuZ05vcm1hbGl6YXRpb25GaWxlc1wiO1xuaW1wb3J0IHsgRlNUYXNrIH0gZnJvbSBcIi4uLy4uL0J1aWxkVGFza3MvRlNUYXNrXCI7XG5pbXBvcnQge1xuICAgIGdlbmVyYXRvckZhY3RvcnksXG4gICAgR2VuZXJhdG9yU291cmNlLFxuICAgIGdldEdlbmVyYXRvclNvdXJjZUtleSxcbn0gZnJvbSBcIi4uLy4uL0J1aWxkVGFza3MvR2VuZXJhdG9yL0FjcXVpcmVGb3JtR2VuZXJhdG9yXCI7XG5pbXBvcnQgeyByZXNvbHZlRW5naW5lVmVyc2lvbiwgcmVzb2x2ZUdlbmVyYXRvclZlcnNpb24gfSBmcm9tIFwiLi4vLi4vQnVpbGRUYXNrcy9QdWJsaXNoZWRWZXJzaW9uVXRpbHNcIjtcbmltcG9ydCB7IEZvcm1CdWlsZE1vZGUsIHJlc29sdmVGb3JtSW5mbyB9IGZyb20gXCIuLi8uLi9CdWlsZFRhc2tzL1Jlc29sdmVGb3JtSW5mb1wiO1xuaW1wb3J0IHsgd3JpdGVGb3JtTWV0YSB9IGZyb20gXCIuLi8uLi9CdWlsZFRhc2tzL1dyaXRlRm9ybU1ldGFcIjtcbmltcG9ydCB7IENvbnNvbGVBcHBsaWNhdGlvbkNvbnRleHQgfSBmcm9tIFwiLi4vLi4vQ29tbW9ucy9Db25zb2xlQXBwbGljYXRpb24vQ29uc29sZUFwcGxpY2F0aW9uQ29udGV4dFwiO1xuaW1wb3J0IHsgRm9ybUdsb2JzIH0gZnJvbSBcIi4uLy4uL0NvbW1vbnMvRm9ybUdsb2JzVXRpbHNcIjtcbmltcG9ydCB7IElMb2dnZXIgfSBmcm9tIFwiLi4vLi4vQ29tbW9ucy9Mb2dnaW5nL0lMb2dnZXJcIjtcbmltcG9ydCB7IGdldExvZ2dlciB9IGZyb20gXCIuLi8uLi9Db21tb25zL0xvZ2dpbmcvU3RhdGljTG9nZ2VyXCI7XG5pbXBvcnQgeyBPYnNlcnZlIH0gZnJvbSBcIi4uLy4uL0NvbW1vbnMvVGFza3NDb3JlL09ic2VydmVcIjtcbmltcG9ydCB7IFNpbmdsZVZhbHVlUHJvZHVjZXIgfSBmcm9tIFwiLi4vLi4vQ29tbW9ucy9UYXNrc0NvcmUvU2luZ2xlVmFsdWVQcm9kdWNlclwiO1xuaW1wb3J0IHsgcHJpbnRUaW1lIH0gZnJvbSBcIi4uLy4uL0NvbW1vbnMvVGltaW5nVXRpbHNcIjtcbmltcG9ydCB7IEJ1aWxkQ2FjaGUgfSBmcm9tIFwiLi4vLi4vRm9ybVdlYnBhY2tDb25maWd1cmF0aW9uL0NhY2hlQXNzZXRzUGx1Z2luXCI7XG5pbXBvcnQgeyByZWplY3QgfSBmcm9tIFwiLi4vLi4vLi4vLi4vQ29tbW9uL1R5cGluZ1V0aWxzXCI7XG5pbXBvcnQgeyB3cml0ZUF0dGFjaG1lbnRQYXRoRmlsZXMgfSBmcm9tIFwiLi4vLi4vQnVpbGRUYXNrcy9Gb3JtL1dyaXRlQXR0YWNobWVudFBhdGhGaWxlc1wiO1xuaW1wb3J0IHsgQ2hhaW5hYmxlVmFsdWVQcm9kdWNlciB9IGZyb20gXCIuLi8uLi9Db21tb25zL1Rhc2tzQ29yZS9DaGFpbmFibGVWYWx1ZVByb2R1Y2VyXCI7XG5pbXBvcnQgeyBFbXB0eVByb2R1Y2VyIH0gZnJvbSBcIi4uLy4uL0NvbW1vbnMvVGFza3NDb3JlL0VtcHR5UHJvZHVjZXJcIjtcbmltcG9ydCB7IGdldFJuZ1NjaGVtYUZpbGVuYW1lIH0gZnJvbSBcIi4uLy4uLy4uLy4uL0NvbW1vbi9nZXRSbmdTY2hlbWFGaWxlbmFtZVwiO1xuaW1wb3J0IHsgZXh0cmFjdEdmdkZyb21Gb3JtUGF0aCB9IGZyb20gXCIuLi8uLi8uLi8uLi9Db21tb24vRm9ybVBhdGhVdGlsc1wiO1xuaW1wb3J0IHsgV2VsbEtub3duRGlyZWN0b3JpZXMgfSBmcm9tIFwiLi4vLi4vLi4vLi4vQ29tbW9uL1dlbGxLbm93bkRpcmVjdG9yaWVzXCI7XG5cbmltcG9ydCB7IEJ1aWxkRm9ybXNPcHRpb25zIH0gZnJvbSBcIi4vQnVpbGRGb3Jtc09wdGlvbnNcIjtcblxuZnVuY3Rpb24gZ2V0R2VuZXJhdG9yVmVyc2lvbihnZW5lcmF0b3JTb3VyY2U6IEdlbmVyYXRvclNvdXJjZSk6IHN0cmluZyB7XG4gICAgaWYgKGdlbmVyYXRvclNvdXJjZS50eXBlID09PSBcIlB1Ymxpc2hlZEdlbmVyYXRvclwiKSB7XG4gICAgICAgIHJldHVybiBnZW5lcmF0b3JTb3VyY2UudmVyc2lvbjtcbiAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkUHJvZ3JhbVN0YXRlXCIpO1xuICAgIH1cbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJ1bkJ1aWxkRm9ybXMoXG4gICAgY29udGV4dDogQ29uc29sZUFwcGxpY2F0aW9uQ29udGV4dCxcbiAgICBvcHRpb25zOiBCdWlsZEZvcm1zT3B0aW9ucyxcbiAgICBmYXJtRGlyZWN0b3J5OiBzdHJpbmcsXG4gICAgcmVzb3VyY2VzRGlyZWN0b3J5OiBzdHJpbmcsXG4gICAgZW5naW5lRGlyZWN0b3J5OiBzdHJpbmcsXG4gICAgY2FuZHlNb2R1bGVzRGlyZWN0b3J5OiBzdHJpbmcsXG4gICAgaGxGYXJtRGlyZWN0b3J5UGF0aDogc3RyaW5nXG4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBidWlsZE9wdGlvbnMgPSBvcHRpb25zO1xuXG4gICAgY29uc3QgcGlja0xpc3RzQ2hhaW4gPSBPYnNlcnZlLmZpbGVzKHBhdGguam9pbihmYXJtRGlyZWN0b3J5LCBcInBpY2tsaXN0c1wiKSwgXCIqLmpzb25cIikuZG8oeCA9PlxuICAgICAgICBGU1Rhc2suY29weVJlY3Vyc2l2ZWx5KGNvbnRleHQubG9nZ2VyLndpdGhQcmVmaXgoXCJQSUNLTElTVFNcIiksIHgsIHBhdGguam9pbihyZXNvdXJjZXNEaXJlY3RvcnksIFwicGlja2xpc3RzXCIpKVxuICAgICk7XG5cbiAgICBhd2FpdCBGb3JtR2xvYnMuZW5zdXJlRWFjaEdsb2JSZXNvbHZlc0ludG9FeGlzdGluZ0Zvcm0ob3B0aW9ucy5mb3JtR2xvYnMsIGZhcm1EaXJlY3RvcnkpO1xuICAgIGNvbnN0IGZvcm1JbmZvcyA9IGF3YWl0IEZvcm1HbG9icy5yZXNvbHZlR2Z2R2xvYnMob3B0aW9ucy5mb3JtR2xvYnMsIGZhcm1EaXJlY3RvcnkpO1xuXG4gICAgY29uc3Qgc3RhdGljUmVzb3VyY2VzRm9yUHJvZHVjdGlvbkNoYWluID0gT2JzZXJ2ZS5maWxlcyhcbiAgICAgICAgcGF0aC5qb2luKF9fZGlybmFtZSwgXCIuLlwiLCBcIi4uXCIsIFwiU3RhdGljRmlsZXNGb3JQcm9kdWN0aW9uUmVzb3VyY2VzRGlyXCIpLFxuICAgICAgICBcIiouanNcIixcbiAgICAgICAgXCIqLmpzLm1hcFwiXG4gICAgKS5kbyh4ID0+XG4gICAgICAgIEZTVGFzay5jb3B5UmVjdXJzaXZlbHkoZ2V0TG9nZ2VyKCkud2l0aFByZWZpeChcIlNUQVRJQ1NcIiksIHgsIHBhdGguam9pbihyZXNvdXJjZXNEaXJlY3RvcnksIFwicHVibGljXCIsIFwic2NyaXB0c1wiKSlcbiAgICApO1xuXG4gICAgLyoqINCa0L7QvdCy0LXRgNGC0LXRgNGLINC+0L/QuNGB0Lgg0LTQu9GPINGE0L7RgNC8LCDQutC+0YLQvtGA0YvQtSDQv9C+0LrQsCDQvdC1INGA0LXQsNC70LjQt9C+0LLQsNC90Ysg0L3QsCDQutC10L3QtNC4LCDRgdCw0LzQsCDQvNC10YXQsNC90LjQutCwINC+0L/QuNGB0Lgg0L/QtdGA0LXQvdC10YHQtdC90LAg0LIg0YTQvtGA0LzRiyDQsiDQutC10L3QtNC4INCw0L/QuCwg0L/QvtGN0YLQvtC80YMg0L7QvdC4INC00L7Qu9C20L3RiyDQsdGL0YLRjCDQsiBjYW5keS5yZXNvdXJjZXNcbiAgICAgKiAg0KDQtdCw0LvQuNC30YPQtdGC0YHRjyDRgtC+0LvRjNC60L4g0L/RgNC4INC+0LHRidC10Lwg0LHQuNC70LTQtSDRhNC+0YDQvDogY2FuZHkgYnVpbGQgKlxuICAgICAqICovXG4gICAgbGV0IHJlc291cmNlc0V4dGVybmFsQ29udmVydGVyc0NoYWluOiBDaGFpbmFibGVWYWx1ZVByb2R1Y2VyPHN0cmluZz4gfCBFbXB0eVByb2R1Y2VyID0gT2JzZXJ2ZS5lbXB0eSgpO1xuICAgIGlmIChvcHRpb25zLmZvcm1HbG9ic1swXSA9PT0gXCIqXCIpIHtcbiAgICAgICAgcmVzb3VyY2VzRXh0ZXJuYWxDb252ZXJ0ZXJzQ2hhaW4gPSBPYnNlcnZlLmZpbGVzKHBhdGguam9pbihmYXJtRGlyZWN0b3J5LCBcImV4dGVybmFsQ29udmVydGVyc1wiKSwgXCIqLnhzbHRcIikuZG8oXG4gICAgICAgICAgICB4ID0+XG4gICAgICAgICAgICAgICAgRlNUYXNrLmNvcHlSZWN1cnNpdmVseShcbiAgICAgICAgICAgICAgICAgICAgZ2V0TG9nZ2VyKCkud2l0aFByZWZpeChcIkVYVEVSTkFMLUNPTlZFUlRFUlNcIiksXG4gICAgICAgICAgICAgICAgICAgIHgsXG4gICAgICAgICAgICAgICAgICAgIHBhdGguam9pbihyZXNvdXJjZXNEaXJlY3RvcnksIFwiY29udmVydGVyc1wiKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBjb25zdCBjb3BpZWRFbmdpbmVzID0gbmV3IFNldDxzdHJpbmc+KCk7XG5cbiAgICBjb25zdCByZXBvc2l0b3J5Um9vdCA9IHBhdGguam9pbihmYXJtRGlyZWN0b3J5LCBcIi4uXCIpO1xuICAgIGNvbnN0IGJ1aWxkQ2FjaGUgPSBuZXcgQnVpbGRDYWNoZShmYXJtRGlyZWN0b3J5LCBvcHRpb25zLmJ1aWxkQ2FjaGVNb2RlKTtcbiAgICBjb25zdCBidWlsZEZvcm1zQ2hhaW4gPSBPYnNlcnZlLmZpeGVkRm9ybURpcmVjdG9yaWVzKFxuICAgICAgICBmb3JtSW5mb3MubWFwKHggPT4gcGF0aC5yZWxhdGl2ZShyZXBvc2l0b3J5Um9vdCwgeC5mb3JtUGF0aCkpXG4gICAgKS5zcGxpdFRvUGFyYWxsZWxDaGFpbnMoXG4gICAgICAgIHggPT4geCxcbiAgICAgICAgeCA9PiB4LFxuICAgICAgICBhc3luYyBmb3JtUmVsYXRpdmVQYXRoID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGdmdiA9IGV4dHJhY3RHZnZGcm9tRm9ybVBhdGgoZm9ybVJlbGF0aXZlUGF0aCk7XG4gICAgICAgICAgICBjb25zdCBmb3JtRGlyUGF0aCA9IHBhdGguam9pbihyZXBvc2l0b3J5Um9vdCwgZm9ybVJlbGF0aXZlUGF0aCk7XG5cbiAgICAgICAgICAgIGlmICghKGF3YWl0IHBhdGhFeGlzdHMocGF0aC5qb2luKGZvcm1EaXJQYXRoLCBXZWxsS25vd25EaXJlY3Rvcmllcy5Gb3JtSnNvbkZpbGVOYW1lKSkpKSB7XG4gICAgICAgICAgICAgICAgY29udGV4dC5sb2dnZXIud2FybmluZyhcbiAgICAgICAgICAgICAgICAgICAgYEZvcm0gJHtnZnZ9IGRvZXMgbm90IGhhdmUgZm9ybS5qc29uIGZpbGUuIFRvIGluY2x1ZGUgdGhpcyBmb3JtIHRvIGJ1aWxkIHByb2Nlc3MgcmVzdGFydCBidWlsZGBcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIHJldHVybiBPYnNlcnZlLnZhbHVlKHt9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IGZvcm1TY2hlbWFzRGlyUGF0aCA9IHBhdGguam9pbihmb3JtRGlyUGF0aCwgXCJzY2hlbWFzXCIpO1xuICAgICAgICAgICAgY29uc3Qgcm5nU2NoZW1hTWFzayA9IGAqJHtnZXRSbmdTY2hlbWFGaWxlbmFtZShmb3JtU2NoZW1hc0RpclBhdGgsIGdmdil9YDtcblxuICAgICAgICAgICAgcmV0dXJuIE9ic2VydmUuZmlsZShwYXRoLmpvaW4oZm9ybURpclBhdGgsIFdlbGxLbm93bkRpcmVjdG9yaWVzLkZvcm1Kc29uRmlsZU5hbWUpKVxuICAgICAgICAgICAgICAgIC50cmFuc2Zvcm0oZm9ybUpzb25GaWxlID0+XG4gICAgICAgICAgICAgICAgICAgIHJlc29sdmVGb3JtSW5mbyhcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Kc29uRmlsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1EaXJQYXRoLFxuICAgICAgICAgICAgICAgICAgICAgICAgZW5naW5lRGlyZWN0b3J5LFxuICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC5sb2dnZXIud2l0aFByZWZpeChgRk9STToke2dmdn1gKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnMudXBncmFkZUZvcm1Kc29uLFxuICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy51c2VMYXN0U3RhYmxlVmVyc2lvbixcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnMudXNlUHJlcmVsZWFzZVZlcnNpb25cbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAudHJhbnNmb3JtKGFzeW5jIGZpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGZpLm1vZGUgPT09IEZvcm1CdWlsZE1vZGUuTm9ybWFsQnVpbGQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmaS5nZW5lcmF0b3JWZXJzaW9uID09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcImdlbmVyYXRvclZlcnNpb24gaXMgbm90IGRlZmluZWRcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmkuZW5naW5lVmVyc2lvbiA9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJlbmdpbmVWZXJzaW9uIGlzIG5vdCBkZWZpbmVkXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5maSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3JTb3VyY2U6IGF3YWl0IHJlc29sdmVHZW5lcmF0b3JWZXJzaW9uKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaS5nZW5lcmF0b3JWZXJzaW9uLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmxvZ2dlci53aXRoUHJlZml4KGdmdilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZ2luZVNvdXJjZTogYXdhaXQgcmVzb2x2ZUVuZ2luZVZlcnNpb24oZmkuZW5naW5lVmVyc2lvbiwgY29udGV4dC5sb2dnZXIud2l0aFByZWZpeChnZnYpKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLmZpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvclNvdXJjZTogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZ2luZVNvdXJjZTogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLmF0dGFjaChcbiAgICAgICAgICAgICAgICAgICAgYXN5bmMgZmkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZpLmdlbmVyYXRvclNvdXJjZSA9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFNpbmdsZVZhbHVlUHJvZHVjZXIobmV3IE51bGxGb3JtR2VuZXJhdG9yKCkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ2VuZXJhdG9yRmFjdG9yeShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmkuZ2VuZXJhdG9yU291cmNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW5keU1vZHVsZXNEaXJlY3RvcnksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnMudXNlVmVyc2lvbkZyb21DYWNoZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIGFzeW5jIChmaSwgeSkgPT4gKHsgLi4uZmksIGdlbmVyYXRvcjogeSB9KSxcbiAgICAgICAgICAgICAgICAgICAgYXN5bmMgZmkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgIGZpLmdlbmVyYXRvclNvdXJjZSAhPSB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IGdldEdlbmVyYXRvclNvdXJjZUtleShmaS5nZW5lcmF0b3JTb3VyY2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBcIk51bGxGb3JtR2VuZXJhdG9yXCJcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLmF0dGFjaChcbiAgICAgICAgICAgICAgICAgICAgYXN5bmMgZmkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZpLmVuZ2luZVNvdXJjZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBTaW5nbGVWYWx1ZVByb2R1Y2VyKFwiTnVsbEVuZ2luZVwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlbmdpbmVGYWN0b3J5KGZpLmVuZ2luZVNvdXJjZSwgY2FuZHlNb2R1bGVzRGlyZWN0b3J5LCBvcHRpb25zLnVzZVZlcnNpb25Gcm9tQ2FjaGUpLmRvKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzeW5jIHggPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWNvcGllZEVuZ2luZXMuaGFzKGdldEVuZ2luZVNvdXJjZUtleShmaS5lbmdpbmVTb3VyY2UpKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXdhaXQgRlNUYXNrLmNvcHlSZWN1cnNpdmVseShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRMb2dnZXIoKS53aXRoUHJlZml4KFwiRU5HSU5FXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aC5qb2luKHJlc291cmNlc0RpcmVjdG9yeSwgXCJwdWJsaWNcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3BpZWRFbmdpbmVzLmFkZChnZXRFbmdpbmVTb3VyY2VLZXkoZmkuZW5naW5lU291cmNlKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBhc3luYyBmaSA9PiBmaSxcbiAgICAgICAgICAgICAgICAgICAgYXN5bmMgZmkgPT4gKGZpLmVuZ2luZVNvdXJjZSAhPSB1bmRlZmluZWQgPyBnZXRFbmdpbmVTb3VyY2VLZXkoZmkuZW5naW5lU291cmNlKSA6IFwiTnVsbEVuZ2luZVwiKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAuYXR0YWNoKGFzeW5jIGZpID0+XG4gICAgICAgICAgICAgICAgICAgIE9ic2VydmUuZmlsZXMoXG4gICAgICAgICAgICAgICAgICAgICAgICBmaS5mb3JtU291cmNlc1BhdGgsXG4gICAgICAgICAgICAgICAgICAgICAgICBcIi4uLy4uL2NvbnRyb2xzLyoqLypcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiLi4vLi4veHNsdFRlbXBsYXRlcy8qKi8qXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBcIi4uLy4uL2pzSGVscGVycy8qKi8qXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBcInNjaGVtYXMvKiovKlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJzdWdhci8qKi8qXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBcImNvbnRyb2xzLyoqLypcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiYXV0b2NhbGMvKiovKlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJoZWxwZXJzLyoqLypcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIFwidmFsaWRhdGlvbnMvKiovKlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJsb2NhbGl6YXRpb24vKiovKlwiXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLnRyYW5zZm9ybShhc3luYyBmaSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBkZXBlbmRlbmNpZXNIYXNoOiB1bmRlZmluZWQgfCBzdHJpbmc7XG4gICAgICAgICAgICAgICAgICAgIGlmIChmaS5tb2RlICE9PSBGb3JtQnVpbGRNb2RlLk5vcm1hbEJ1aWxkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLmZpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlcGVuZGVuY2llc0hhc2g6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKGF3YWl0IGZpLmdlbmVyYXRvci5zdXBwb3J0c0RlcGVuZGVuY2llc0V4dHJhY3Rpb24oKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZGVwZW5kZW5jaWVzSGFzaCA9IGF3YWl0IGZpLmdlbmVyYXRvci5nZXRBbGxEZXBlbmRlbmNpZXNIYXNoKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1EaXJQYXRoLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhcm1EaXJlY3RvcnksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGxGYXJtRGlyZWN0b3J5UGF0aFxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgLi4uZmksXG4gICAgICAgICAgICAgICAgICAgICAgICBkZXBlbmRlbmNpZXNIYXNoOiBkZXBlbmRlbmNpZXNIYXNoLFxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLnRyYW5zZm9ybShhc3luYyBmaSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBidWlsZENhY2hlRXhpc3Q6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGZpLmRlcGVuZGVuY2llc0hhc2ggIT0gdW5kZWZpbmVkICYmIGZpLmdlbmVyYXRvclNvdXJjZSAhPSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkQ2FjaGVFeGlzdCA9IGF3YWl0IGJ1aWxkQ2FjaGUuZXhpc3RzKGZpLmdlbmVyYXRvclNvdXJjZSwgZ2Z2LCBmaS5kZXBlbmRlbmNpZXNIYXNoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgLi4uZmksXG4gICAgICAgICAgICAgICAgICAgICAgICBidWlsZENhY2hlRXhpc3Q6IGJ1aWxkQ2FjaGVFeGlzdCxcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5kbyhhc3luYyBmaSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChmaS5nZW5lcmF0b3JTb3VyY2UgPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChmaS5idWlsZENhY2hlRXhpc3QpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQubG9nZ2VyLndpdGhQcmVmaXgoYEdFTkVSQVRFOiR7Z2Z2fWApLmxvZyhcIlNraXBwZWQgZHVlIGJ1aWxkIGNhY2hlIGV4aXRzXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBnZW5lcmF0ZUZvcm0oXG4gICAgICAgICAgICAgICAgICAgICAgICBmaS5mb3JtU291cmNlc1BhdGgsXG4gICAgICAgICAgICAgICAgICAgICAgICBmYXJtRGlyZWN0b3J5LFxuICAgICAgICAgICAgICAgICAgICAgICAgaGxGYXJtRGlyZWN0b3J5UGF0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpLmdlbmVyYXRvcixcbiAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBza2lwQ29kZVJlZm9ybWF0dGluZzogb3B0aW9ucy5za2lwR2VuZXJhdGVkQ29kZVJlZm9ybWF0dGluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvdXJjZXNIYXNoOiBmaS5kZXBlbmRlbmNpZXNIYXNoID8/IFwiVW5kZWZpbmVkUmVzb3VyY2VzSGFzaFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLmF0dGFjaChhc3luYyBmaSA9PiBPYnNlcnZlLmZpbGVzKHBhdGguam9pbihmb3JtRGlyUGF0aCwgXCJmb3JtXCIpLCBcIioqLypcIikpXG4gICAgICAgICAgICAgICAgLmRvKGFzeW5jIGZpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGZpLmdlbmVyYXRvclNvdXJjZSA9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAoZmkuZGVwZW5kZW5jaWVzSGFzaCAhPSB1bmRlZmluZWQgJiYgZmkuYnVpbGRDYWNoZUV4aXN0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmxvZ2dlci53aXRoUHJlZml4KGBDT01QSUxFOiR7Z2Z2fWApLmxvZyhcIlNraXBwZWQgZHVlIGJ1aWxkIGNhY2hlIGV4aXN0c1wiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGF3YWl0IGJ1aWxkQ2FjaGUuZXh0cmFjdChmaS5nZW5lcmF0b3JTb3VyY2UsIGdmdiwgZmkuZGVwZW5kZW5jaWVzSGFzaCwgcmVzb3VyY2VzRGlyZWN0b3J5KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBjb25zdCBidWlsZENhY2hlT3B0aW9ucyA9XG4gICAgICAgICAgICAgICAgICAgICAgICBmaS5kZXBlbmRlbmNpZXNIYXNoICE9IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlcHNIYXNoOiBmaS5kZXBlbmRlbmNpZXNIYXNoLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvclZlcnNpb246IGdldEdlbmVyYXRvclZlcnNpb24oZmkuZ2VuZXJhdG9yU291cmNlKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZnY6IGdmdixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RlOiBvcHRpb25zLmJ1aWxkQ2FjaGVNb2RlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhcm1EaXJlY3Rvcnk6IGZhcm1EaXJlY3RvcnksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB1bmRlZmluZWQ7XG5cbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgY29tcGlsZUZvcm0oXG4gICAgICAgICAgICAgICAgICAgICAgICBmaS5mb3JtTmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpLnRoZW1lcyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZhcm1EaXJlY3RvcnksXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3JtRGlyUGF0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc291cmNlc0RpcmVjdG9yeSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpLmRlcGVuZGVuY2llc0hhc2ggPz9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWplY3QoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGhpcyB2ZXJzaW9uIG9mIGdlbmVyYXRvciBpcyBub3Qgc3VwcG9ydGVkIGR1ZSB0byBkZXBlbmRlbmNpZXMgZXh0cmFjdGlvbiBpcyBub3Qgc3VwcG9ydGVkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICBidWlsZENhY2hlT3B0aW9uc1xuICAgICAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IHdyaXRlRm9ybU1ldGEoXG4gICAgICAgICAgICAgICAgICAgICAgICByZXNvdXJjZXNEaXJlY3RvcnksXG4gICAgICAgICAgICAgICAgICAgICAgICBnZnYsXG4gICAgICAgICAgICAgICAgICAgICAgICBmaS5lbmdpbmVTb3VyY2UsXG4gICAgICAgICAgICAgICAgICAgICAgICBmaS5kZXBlbmRlbmNpZXNIYXNoID8/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVqZWN0KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRoaXMgdmVyc2lvbiBvZiBnZW5lcmF0b3IgaXMgbm90IHN1cHBvcnRlZCBkdWUgdG8gZGVwZW5kZW5jaWVzIGV4dHJhY3Rpb24gaXMgbm90IHN1cHBvcnRlZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpLnRoZW1lcyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkQ2FjaGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBidWlsZENhY2hlT3B0aW9uc1xuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLmRvKGFzeW5jIGZpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGZpLmdlbmVyYXRvclNvdXJjZSA9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBjb25zdCBidWlsZENhY2hlT3B0aW9ucyA9XG4gICAgICAgICAgICAgICAgICAgICAgICBmaS5kZXBlbmRlbmNpZXNIYXNoICE9IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlcHNIYXNoOiBmaS5kZXBlbmRlbmNpZXNIYXNoLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvclZlcnNpb246IGdldEdlbmVyYXRvclZlcnNpb24oZmkuZ2VuZXJhdG9yU291cmNlKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZnY6IGdmdixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RlOiBvcHRpb25zLmJ1aWxkQ2FjaGVNb2RlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhcm1EaXJlY3Rvcnk6IGZhcm1EaXJlY3RvcnksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IHdyaXRlRkxhbmdOb3JtYWxpemF0aW9uRmlsZXMoXG4gICAgICAgICAgICAgICAgICAgICAgICBmaS5mb3JtTmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZhcm1EaXJlY3RvcnksXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3JtRGlyUGF0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc291cmNlc0RpcmVjdG9yeSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkQ2FjaGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBidWlsZENhY2hlT3B0aW9ucyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpLmJ1aWxkQ2FjaGVFeGlzdFxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICBhd2FpdCB3cml0ZUF0dGFjaG1lbnRQYXRoRmlsZXMoXG4gICAgICAgICAgICAgICAgICAgICAgICBmaS5mb3JtTmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZhcm1EaXJlY3RvcnksXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3JtRGlyUGF0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc291cmNlc0RpcmVjdG9yeSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkQ2FjaGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBidWlsZENhY2hlT3B0aW9uc1xuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLmF0dGFjaChhc3luYyBmaSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChmaS5tb2RlID09PSBGb3JtQnVpbGRNb2RlLkNvcHlMZWdhY3lQcmVidWlsdFJlc291cmNlcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE9ic2VydmUuZmlsZXMocGF0aC5qb2luKGZpLmZvcm1Tb3VyY2VzUGF0aCwgXCJsZWdhY3ktcHJlYnVpbHRcIiksIFwiKlwiKS5kbyh4ID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRlNUYXNrLmNvcHlSZWN1cnNpdmVseShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0TG9nZ2VyKCkud2l0aFByZWZpeChcIkxFR0FDWS1QUkVCVUlMVFwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aC5qb2luKHJlc291cmNlc0RpcmVjdG9yeSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBTaW5nbGVWYWx1ZVByb2R1Y2VyKFwiXCIpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAuYXR0YWNoKGFzeW5jIGZpID0+XG4gICAgICAgICAgICAgICAgICAgIE9ic2VydmUuZmlsZXMocGF0aC5qb2luKGZpLmZvcm1Tb3VyY2VzUGF0aCwgXCJzY2hlbWFzXCIpLCBybmdTY2hlbWFNYXNrKS5kbyh4ID0+XG4gICAgICAgICAgICAgICAgICAgICAgICBGU1Rhc2suY29weVJlY3Vyc2l2ZWx5KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldExvZ2dlcigpLndpdGhQcmVmaXgoXCJTQ0hFTUFTXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aC5qb2luKHJlc291cmNlc0RpcmVjdG9yeSwgXCJzY2hlbWFzXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLmF0dGFjaChhc3luYyBmaSA9PlxuICAgICAgICAgICAgICAgICAgICBPYnNlcnZlLmZpbGVzKHBhdGguam9pbihmaS5mb3JtU291cmNlc1BhdGgsIFwiY29udmVydGVyc1wiKSwgXCIqXCIpLmRvKHggPT5cbiAgICAgICAgICAgICAgICAgICAgICAgIEZTVGFzay5jb3B5UmVjdXJzaXZlbHkoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0TG9nZ2VyKCkud2l0aFByZWZpeChcIkNPTlZFUlRFUlNcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoLmpvaW4ocmVzb3VyY2VzRGlyZWN0b3J5LCBcImNvbnZlcnRlcnNcIilcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAuYXR0YWNoKGFzeW5jIGZpID0+XG4gICAgICAgICAgICAgICAgICAgIE9ic2VydmUuZmlsZXMocGF0aC5qb2luKGZpLmZvcm1Tb3VyY2VzUGF0aCwgXCJtZXJnZXJzXCIpLCBcIipcIikuZG8oeCA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgRlNUYXNrLmNvcHlSZWN1cnNpdmVseShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRMb2dnZXIoKS53aXRoUHJlZml4KFwiTUVSR0VSU1wiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGguam9pbihyZXNvdXJjZXNEaXJlY3RvcnksIFwibWVyZ2Vyc1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC5hdHRhY2goYXN5bmMgZmkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBtb2RpZmllciA9IChjb250ZW50OiBzdHJpbmcpOiBzdHJpbmcgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQucmVwbGFjZSgvPHg6aW5jbHVkZSBocmVmPVwiWy4vXSsvZywgJzx4OmluY2x1ZGUgaHJlZj1cIicpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gT2JzZXJ2ZS5maWxlcyhwYXRoLmpvaW4oZmkuZm9ybVNvdXJjZXNQYXRoLCBcImNvbnZlcnRlcnNcIiksIFwiKlwiKS5kbyh4ID0+XG4gICAgICAgICAgICAgICAgICAgICAgICBGU1Rhc2subW9kaWZ5RmlsZXNDb250ZW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldExvZ2dlcigpLndpdGhQcmVmaXgoXCJGSVgtWFNMVC1JTkNMVURFXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aC5qb2luKHJlc291cmNlc0RpcmVjdG9yeSwgXCJjb252ZXJ0ZXJzXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiKiovKi54c2x0XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kaWZpZXJcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5hdHRhY2goYXN5bmMgZmkgPT5cbiAgICAgICAgICAgICAgICAgICAgT2JzZXJ2ZS5maWxlcyhwYXRoLmpvaW4oZmkuZm9ybVNvdXJjZXNQYXRoLCBcIi4uXCIsIFwiLi5cIiwgXCJ4c2x0VGVtcGxhdGVzXCIpLCBcIipcIikuZG8oeCA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgRlNUYXNrLmNvcHlSZWN1cnNpdmVseShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRMb2dnZXIoKS53aXRoUHJlZml4KFwiWFNMVC1URU1QTEFURVNcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoLmpvaW4ocmVzb3VyY2VzRGlyZWN0b3J5LCBcImNvbnZlcnRlcnNcIiwgXCJ4c2x0VGVtcGxhdGVzXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLmF0dGFjaChhc3luYyBmaSA9PlxuICAgICAgICAgICAgICAgICAgICBPYnNlcnZlLmZpbGVzKHBhdGguam9pbihmaS5mb3JtU291cmNlc1BhdGgsIFwibm9ybWFsaXplXCIpLCBcIioueG1sXCIpLmRvKHggPT5cbiAgICAgICAgICAgICAgICAgICAgICAgIEZTVGFzay5jb3B5UmVjdXJzaXZlbHkoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0TG9nZ2VyKCkud2l0aFByZWZpeChcIk5PUk1BTElaRVwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGguam9pbihyZXNvdXJjZXNEaXJlY3RvcnksIFwibm9ybWFsaXplXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLmF0dGFjaChhc3luYyBmaSA9PlxuICAgICAgICAgICAgICAgICAgICBPYnNlcnZlLmZpbGVzKHBhdGguam9pbihmaS5mb3JtU291cmNlc1BhdGgsIFwicGF0Y2hcIiksIFwiKi54c2x0XCIpLmRvKHggPT5cbiAgICAgICAgICAgICAgICAgICAgICAgIEZTVGFzay5jb3B5UmVjdXJzaXZlbHkoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0TG9nZ2VyKCkud2l0aFByZWZpeChcIlBBVENIXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aC5qb2luKHJlc291cmNlc0RpcmVjdG9yeSwgXCJwYXRjaFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC5hdHRhY2goYXN5bmMgZmkgPT5cbiAgICAgICAgICAgICAgICAgICAgT2JzZXJ2ZS5maWxlcyhwYXRoLmpvaW4oZmkuZm9ybVNvdXJjZXNQYXRoLCBcIm1hcFwiKSwgXCIqLnhtbFwiKS5kbyh4ID0+XG4gICAgICAgICAgICAgICAgICAgICAgICBGU1Rhc2suY29weVJlY3Vyc2l2ZWx5KGdldExvZ2dlcigpLndpdGhQcmVmaXgoXCJNQVBcIiksIHgsIHBhdGguam9pbihyZXNvdXJjZXNEaXJlY3RvcnksIFwibWFwXCIpKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC5hdHRhY2goYXN5bmMgZmkgPT5cbiAgICAgICAgICAgICAgICAgICAgT2JzZXJ2ZS5maWxlcyhwYXRoLmpvaW4oZmkuZm9ybVNvdXJjZXNQYXRoLCBcInVubWFwXCIpLCBcIioueG1sXCIpLmRvKHggPT5cbiAgICAgICAgICAgICAgICAgICAgICAgIEZTVGFzay5jb3B5UmVjdXJzaXZlbHkoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0TG9nZ2VyKCkud2l0aFByZWZpeChcIlVOTUFQXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aC5qb2luKHJlc291cmNlc0RpcmVjdG9yeSwgXCJ1bm1hcFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC5kbyhhc3luYyBmaSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChidWlsZE9wdGlvbnMud2F0Y2gpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5vdGlmaWVyLm5vdGlmeSh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGAke2ZpLmZvcm1OYW1lfTog0YHQsdC+0YDQutCwINC30LDQstC10YDRiNC10L3QsGAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogYEVuZ2luZTogJHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmkuZW5naW5lU291cmNlID09IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBcIltOb0VuZ2luZV1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBmaS5lbmdpbmVTb3VyY2UudHlwZSA9PT0gXCJMb2NhbEVuZ2luZVNvdXJjZXNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBcImxvY2FsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogZmkuZW5naW5lU291cmNlLnZlcnNpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9YCxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICApO1xuXG4gICAgaWYgKGJ1aWxkT3B0aW9ucy53YXRjaCkge1xuICAgICAgICBpZiAob3B0aW9ucy5jbGVhbikge1xuICAgICAgICAgICAgYXdhaXQgY2xlYW5UYXJnZXREaXJlY3RvcnkocmVzb3VyY2VzRGlyZWN0b3J5LCBjb250ZXh0LmxvZ2dlcik7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgc3RvcE9ic2VydmUxID0gYXdhaXQgcGlja0xpc3RzQ2hhaW4ub2JzZXJ2ZSgpO1xuICAgICAgICBjb25zdCBzdG9wT2JzZXJ2ZTIgPSBhd2FpdCBidWlsZEZvcm1zQ2hhaW4ub2JzZXJ2ZSgpO1xuICAgICAgICBjb25zdCBzdG9wT2JzZXJ2ZTMgPSBhd2FpdCBzdGF0aWNSZXNvdXJjZXNGb3JQcm9kdWN0aW9uQ2hhaW4ub2JzZXJ2ZSgpO1xuICAgICAgICBjb25zdCBzdG9wT2JzZXJ2ZTUgPSBhd2FpdCByZXNvdXJjZXNFeHRlcm5hbENvbnZlcnRlcnNDaGFpbi5vYnNlcnZlKCk7XG4gICAgICAgIGF3YWl0IGNvbnRleHQud2FpdEZvckV4aXQoKTtcbiAgICAgICAgaWYgKHN0b3BPYnNlcnZlMyAhPSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGF3YWl0IHN0b3BPYnNlcnZlMygpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzdG9wT2JzZXJ2ZTUgIT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBhd2FpdCBzdG9wT2JzZXJ2ZTUoKTtcbiAgICAgICAgfVxuICAgICAgICBhd2FpdCBzdG9wT2JzZXJ2ZTIoKTtcbiAgICAgICAgYXdhaXQgc3RvcE9ic2VydmUxKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3Qgc3RhcnREYXRlID0gRGF0ZS5ub3coKTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGlmIChvcHRpb25zLmNsZWFuKSB7XG4gICAgICAgICAgICAgICAgYXdhaXQgY2xlYW5UYXJnZXREaXJlY3RvcnkocmVzb3VyY2VzRGlyZWN0b3J5LCBjb250ZXh0LmxvZ2dlcik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBhd2FpdCBwaWNrTGlzdHNDaGFpbi5jdXJyZW50VmFsdWU7XG4gICAgICAgICAgICBhd2FpdCBzdGF0aWNSZXNvdXJjZXNGb3JQcm9kdWN0aW9uQ2hhaW4uY3VycmVudFZhbHVlO1xuICAgICAgICAgICAgYXdhaXQgcmVzb3VyY2VzRXh0ZXJuYWxDb252ZXJ0ZXJzQ2hhaW4uY3VycmVudFZhbHVlO1xuICAgICAgICAgICAgYXdhaXQgYnVpbGRGb3Jtc0NoYWluLmN1cnJlbnRWYWx1ZTtcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhjaGFsay5ncmVlbkJyaWdodChcIkJ1aWxkIHN1Y2Nlc3NcIikpO1xuICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgICAgY29uc3QgdG90YWxUaW1lID0gRGF0ZS5ub3coKSAtIHN0YXJ0RGF0ZTtcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhgVG90YWwgdGltZTogJHtwcmludFRpbWUodG90YWxUaW1lKX1gKTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuYXN5bmMgZnVuY3Rpb24gY2xlYW5UYXJnZXREaXJlY3RvcnkocmVzb3VyY2VzRGlyZWN0b3J5OiBzdHJpbmcsIGxvZ2dlcjogSUxvZ2dlcik6IFByb21pc2U8dm9pZD4ge1xuICAgIGxvZ2dlci5sb2coXCJDbGVhbmluZyByZXNvdXJjZSBkaXJlY3RvcnkuIFwiICsgcmVzb3VyY2VzRGlyZWN0b3J5KTtcbiAgICBhd2FpdCBlbXB0eURpcihyZXNvdXJjZXNEaXJlY3RvcnkpO1xuICAgIGxvZ2dlci5sb2coXCJSZXNvdXJjZSBkaXJlY3RvcnkgY2xlYW5cIik7XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQSxJQUFBQSxLQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFFQSxJQUFBQyxNQUFBLEdBQUFGLHNCQUFB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
@@ -36,16 +36,16 @@ async function runDevBuild(context, options, engineDirectory, resourcesDirectory
36
36
  const pickListsChain = _Observe.Observe.files(_path.default.join(farmDirectory, "picklists"), "*.json").do(x => _FSTask.FSTask.copyRecursively(context.logger.withPrefix("PICKLISTS"), x, _path.default.join(resourcesDirectory, "picklists")));
37
37
  const repositoryRoot = _path.default.join(farmDirectory, "..");
38
38
  await _FormGlobsUtils.FormGlobs.ensureEachGlobResolvesIntoExistingForm(options.formGlobs, farmDirectory);
39
- const formGlobs = await _FormGlobsUtils.FormGlobs.resolveSpecifiers(options.formGlobs, farmDirectory);
39
+ const formGlobs = await _FormGlobsUtils.FormGlobs.resolveGfvGlobs(options.formGlobs, farmDirectory);
40
40
 
41
41
  /** Конвертеры описи для форм, которые пока не реализованы на кенди, сама механика описи перенесена в формы в кенди апи, поэтому они должны быть в candy.resources
42
42
  * Реализуется только при общем билде форм: candy build *
43
43
  * */
44
44
  let resourcesExternalConvertersChain = _Observe.Observe.empty();
45
- if (formGlobs[0] === "*") {
45
+ if (options.formGlobs[0] === "*") {
46
46
  resourcesExternalConvertersChain = _Observe.Observe.files(_path.default.join(farmDirectory, "externalConverters"), "*.xslt").do(x => _FSTask.FSTask.copyRecursively((0, _StaticLogger.getLogger)().withPrefix("EXTERNAL-CONVERTERS"), x, _path.default.join(resourcesDirectory, "converters")));
47
47
  }
48
- const buildFormsChain = _Observe.Observe.formDirectories(repositoryRoot, formGlobs).splitToParallelChains(x => x, x => x, async formRelativePath => {
48
+ const buildFormsChain = _Observe.Observe.fixedFormDirectories(formGlobs.map(x => x.formPath)).splitToParallelChains(x => x, x => x, async formRelativePath => {
49
49
  const gfv = (0, _FormPathUtils.extractGfvFromFormPath)(formRelativePath);
50
50
  const formDirPath = _path.default.join(repositoryRoot, formRelativePath);
51
51
  const formSchemasDirPath = _path.default.join(formDirPath, "schemas");
@@ -103,4 +103,4 @@ async function runDevBuild(context, options, engineDirectory, resourcesDirectory
103
103
  console.log(`${_chalk.default.greenBright("Build success")} Total time: ${(0, _TimingUtils.printTime)(totalTime)}`);
104
104
  }
105
105
  }
106
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcGF0aCIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX2NoYWxrIiwiX0J1aWxkQ2xpZW50SnNUYXNrIiwiX0J1aWxkTG9jYWxFbmdpbmVUYXNrIiwiX0VuZ2luZVN0cnVjdHVyZVV0aWxzIiwiX0NvbXBpbGVGb3JtIiwiX0dlbmVyYXRlRm9ybSIsIl9Xcml0ZUZMYW5nTm9ybWFsaXphdGlvbkZpbGVzIiwiX0ZTVGFzayIsIl9BY3F1aXJlRm9ybUdlbmVyYXRvciIsIl9QdWJsaXNoZWRWZXJzaW9uVXRpbHMiLCJfUmVzb2x2ZUZvcm1JbmZvIiwiX1dyaXRlRm9ybU1ldGEiLCJfRm9ybUdsb2JzVXRpbHMiLCJfU3RhdGljTG9nZ2VyIiwiX09ic2VydmUiLCJfVGltaW5nVXRpbHMiLCJfV3JpdGVBdHRhY2htZW50UGF0aEZpbGVzIiwiX2dldFJuZ1NjaGVtYUZpbGVuYW1lIiwiX0Zvcm1QYXRoVXRpbHMiLCJfV2VsbEtub3duRGlyZWN0b3JpZXMiLCJydW5EZXZCdWlsZCIsImNvbnRleHQiLCJvcHRpb25zIiwiZW5naW5lRGlyZWN0b3J5IiwicmVzb3VyY2VzRGlyZWN0b3J5IiwiZmFybURpcmVjdG9yeSIsImNhbmR5TW9kdWxlc0RpcmVjdG9yeSIsImhsRmFybURpcmVjdG9yeVBhdGgiLCJkZXZCdWlsZE9wdGlvbnMiLCJlbmdpbmVXZWJwYWNrQ29uZmlnVGFzayIsImNyZWF0ZUVuZ2luZVdlYnBhY2tDb25maWdUYXNrIiwiYnVpbGRFbmdpbmVDaGFpbiIsImNoYWluV2l0aCIsInAiLCJCdWlsZExvY2FsRW5naW5lVGFzayIsImJ1aWxkRGVidWdPbmx5IiwiY2xpZW50V2VicGFja0NvbmZpZ1Rhc2siLCJjcmVhdGVDbGllbnRXZWJwYWNrQ29uZmlnVGFzayIsImJ1aWxkQ2xpZW50SnNDaGFpbiIsIkJ1aWxkQ2xpZW50SnNUYXNrIiwic3RhdGljUmVzb3VyY2VzQ2hhaW4iLCJPYnNlcnZlIiwiZmlsZXMiLCJwYXRoIiwiam9pbiIsIl9fZGlybmFtZSIsImRvIiwieCIsIkZTVGFzayIsImNvcHlSZWN1cnNpdmVseSIsImdldExvZ2dlciIsIndpdGhQcmVmaXgiLCJwaWNrTGlzdHNDaGFpbiIsImxvZ2dlciIsInJlcG9zaXRvcnlSb290IiwiRm9ybUdsb2JzIiwiZW5zdXJlRWFjaEdsb2JSZXNvbHZlc0ludG9FeGlzdGluZ0Zvcm0iLCJmb3JtR2xvYnMiLCJyZXNvbHZlU3BlY2lmaWVycyIsInJlc291cmNlc0V4dGVybmFsQ29udmVydGVyc0NoYWluIiwiZW1wdHkiLCJidWlsZEZvcm1zQ2hhaW4iLCJmb3JtRGlyZWN0b3JpZXMiLCJzcGxpdFRvUGFyYWxsZWxDaGFpbnMiLCJmb3JtUmVsYXRpdmVQYXRoIiwiZ2Z2IiwiZXh0cmFjdEdmdkZyb21Gb3JtUGF0aCIsImZvcm1EaXJQYXRoIiwiZm9ybVNjaGVtYXNEaXJQYXRoIiwicm5nU2NoZW1hTWFzayIsImdldFJuZ1NjaGVtYUZpbGVuYW1lIiwiZmlsZSIsIldlbGxLbm93bkRpcmVjdG9yaWVzIiwiRm9ybUpzb25GaWxlTmFtZSIsInRyYW5zZm9ybSIsImZvcm1Kc29uRmlsZSIsInJlc29sdmVGb3JtSW5mbyIsImdlbmVyYXRvclNvdXJjZSIsInJlc29sdmVMb2NhbEdlbmVyYXRvclNvdXJjZSIsImVuZ2luZVNvdXJjZSIsInJlc29sdmVMb2NhbEVuZ2luZVNvdXJjZSIsImF0dGFjaCIsImZpIiwiZ2VuZXJhdG9yRmFjdG9yeSIsInVuZGVmaW5lZCIsInkiLCJnZW5lcmF0b3IiLCJnZXRHZW5lcmF0b3JTb3VyY2VLZXkiLCJmb3JtU291cmNlc1BhdGgiLCJkZXBlbmRlbmNpZXNIYXNoIiwiZ2V0QWxsRGVwZW5kZW5jaWVzSGFzaCIsInNraXBHZW5lcmF0aW9uIiwiZ2VuZXJhdGVGb3JtIiwic2tpcENvZGVSZWZvcm1hdHRpbmciLCJza2lwR2VuZXJhdGVkQ29kZVJlZm9ybWF0dGluZyIsInJlc291cmNlc0hhc2giLCJjb21waWxlRm9ybSIsImZvcm1OYW1lIiwidGhlbWVzIiwid3JpdGVGTGFuZ05vcm1hbGl6YXRpb25GaWxlcyIsIndyaXRlQXR0YWNobWVudFBhdGhGaWxlcyIsIndyaXRlRm9ybU1ldGEiLCJ3YXRjaCIsInN0b3BPYnNlcnZlMSIsIm9ic2VydmUiLCJzdG9wT2JzZXJ2ZTIiLCJzdG9wT2JzZXJ2ZTMiLCJzdG9wT2JzZXJ2ZTQiLCJzdG9wT2JzZXJ2ZTUiLCJzdG9wT2JzZXJ2ZTYiLCJ3YWl0Rm9yRXhpdCIsInN0YXJ0RGF0ZSIsIkRhdGUiLCJub3ciLCJQcm9taXNlIiwiYWxsIiwiY3VycmVudFZhbHVlIiwiZSIsImNvbnRpbnVlT25FcnJvciIsImVycm9yIiwidG90YWxUaW1lIiwiY29uc29sZSIsImxvZyIsImNoYWxrIiwiZ3JlZW5CcmlnaHQiLCJwcmludFRpbWUiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvQ0xJQ29tbWFuZHMvRGV2QnVpbGQvUnVuRGV2QnVpbGQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHBhdGggZnJvbSBcInBhdGhcIjtcblxuaW1wb3J0IGNoYWxrIGZyb20gXCJjaGFsa1wiO1xuXG5pbXBvcnQgeyBCdWlsZENsaWVudEpzVGFzayB9IGZyb20gXCIuLi8uLi9CdWlsZFRhc2tzL0NsaWVudEpTL0J1aWxkQ2xpZW50SnNUYXNrXCI7XG5pbXBvcnQgeyBCdWlsZExvY2FsRW5naW5lVGFzayB9IGZyb20gXCIuLi8uLi9CdWlsZFRhc2tzL0VuZ2luZS9CdWlsZExvY2FsRW5naW5lVGFza1wiO1xuaW1wb3J0IHsgY3JlYXRlQ2xpZW50V2VicGFja0NvbmZpZ1Rhc2ssIGNyZWF0ZUVuZ2luZVdlYnBhY2tDb25maWdUYXNrIH0gZnJvbSBcIi4uLy4uL0J1aWxkVGFza3MvRW5naW5lU3RydWN0dXJlVXRpbHNcIjtcbmltcG9ydCB7IGNvbXBpbGVGb3JtIH0gZnJvbSBcIi4uLy4uL0J1aWxkVGFza3MvRm9ybS9Db21waWxlRm9ybVwiO1xuaW1wb3J0IHsgZ2VuZXJhdGVGb3JtIH0gZnJvbSBcIi4uLy4uL0J1aWxkVGFza3MvRm9ybS9HZW5lcmF0ZUZvcm1cIjtcbmltcG9ydCB7IHdyaXRlRkxhbmdOb3JtYWxpemF0aW9uRmlsZXMgfSBmcm9tIFwiLi4vLi4vQnVpbGRUYXNrcy9Gb3JtL1dyaXRlRkxhbmdOb3JtYWxpemF0aW9uRmlsZXNcIjtcbmltcG9ydCB7IEZTVGFzayB9IGZyb20gXCIuLi8uLi9CdWlsZFRhc2tzL0ZTVGFza1wiO1xuaW1wb3J0IHsgZ2VuZXJhdG9yRmFjdG9yeSwgZ2V0R2VuZXJhdG9yU291cmNlS2V5IH0gZnJvbSBcIi4uLy4uL0J1aWxkVGFza3MvR2VuZXJhdG9yL0FjcXVpcmVGb3JtR2VuZXJhdG9yXCI7XG5pbXBvcnQgeyByZXNvbHZlTG9jYWxFbmdpbmVTb3VyY2UsIHJlc29sdmVMb2NhbEdlbmVyYXRvclNvdXJjZSB9IGZyb20gXCIuLi8uLi9CdWlsZFRhc2tzL1B1Ymxpc2hlZFZlcnNpb25VdGlsc1wiO1xuaW1wb3J0IHsgcmVzb2x2ZUZvcm1JbmZvIH0gZnJvbSBcIi4uLy4uL0J1aWxkVGFza3MvUmVzb2x2ZUZvcm1JbmZvXCI7XG5pbXBvcnQgeyB3cml0ZUZvcm1NZXRhIH0gZnJvbSBcIi4uLy4uL0J1aWxkVGFza3MvV3JpdGVGb3JtTWV0YVwiO1xuaW1wb3J0IHsgQ29uc29sZUFwcGxpY2F0aW9uQ29udGV4dCB9IGZyb20gXCIuLi8uLi9Db21tb25zL0NvbnNvbGVBcHBsaWNhdGlvbi9Db25zb2xlQXBwbGljYXRpb25Db250ZXh0XCI7XG5pbXBvcnQgeyBGb3JtR2xvYnMgfSBmcm9tIFwiLi4vLi4vQ29tbW9ucy9Gb3JtR2xvYnNVdGlsc1wiO1xuaW1wb3J0IHsgZ2V0TG9nZ2VyIH0gZnJvbSBcIi4uLy4uL0NvbW1vbnMvTG9nZ2luZy9TdGF0aWNMb2dnZXJcIjtcbmltcG9ydCB7IE9ic2VydmUgfSBmcm9tIFwiLi4vLi4vQ29tbW9ucy9UYXNrc0NvcmUvT2JzZXJ2ZVwiO1xuaW1wb3J0IHsgcHJpbnRUaW1lIH0gZnJvbSBcIi4uLy4uL0NvbW1vbnMvVGltaW5nVXRpbHNcIjtcbmltcG9ydCB7IHdyaXRlQXR0YWNobWVudFBhdGhGaWxlcyB9IGZyb20gXCIuLi8uLi9CdWlsZFRhc2tzL0Zvcm0vV3JpdGVBdHRhY2htZW50UGF0aEZpbGVzXCI7XG5pbXBvcnQgeyBDaGFpbmFibGVWYWx1ZVByb2R1Y2VyIH0gZnJvbSBcIi4uLy4uL0NvbW1vbnMvVGFza3NDb3JlL0NoYWluYWJsZVZhbHVlUHJvZHVjZXJcIjtcbmltcG9ydCB7IEVtcHR5UHJvZHVjZXIgfSBmcm9tIFwiLi4vLi4vQ29tbW9ucy9UYXNrc0NvcmUvRW1wdHlQcm9kdWNlclwiO1xuaW1wb3J0IHsgZ2V0Um5nU2NoZW1hRmlsZW5hbWUgfSBmcm9tIFwiLi4vLi4vLi4vLi4vQ29tbW9uL2dldFJuZ1NjaGVtYUZpbGVuYW1lXCI7XG5pbXBvcnQgeyBleHRyYWN0R2Z2RnJvbUZvcm1QYXRoIH0gZnJvbSBcIi4uLy4uLy4uLy4uL0NvbW1vbi9Gb3JtUGF0aFV0aWxzXCI7XG5pbXBvcnQgeyBXZWxsS25vd25EaXJlY3RvcmllcyB9IGZyb20gXCIuLi8uLi8uLi8uLi9Db21tb24vV2VsbEtub3duRGlyZWN0b3JpZXNcIjtcblxuaW1wb3J0IHsgRGV2ZWxvcG1lbnRCdWlsZE9wdGlvbnMgfSBmcm9tIFwiLi9EZXZCdWlsZE9wdGlvbnNcIjtcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJ1bkRldkJ1aWxkKFxuICAgIGNvbnRleHQ6IENvbnNvbGVBcHBsaWNhdGlvbkNvbnRleHQsXG4gICAgb3B0aW9uczogRGV2ZWxvcG1lbnRCdWlsZE9wdGlvbnMsXG4gICAgZW5naW5lRGlyZWN0b3J5OiBzdHJpbmcsXG4gICAgcmVzb3VyY2VzRGlyZWN0b3J5OiBzdHJpbmcsXG4gICAgZmFybURpcmVjdG9yeTogc3RyaW5nLFxuICAgIGNhbmR5TW9kdWxlc0RpcmVjdG9yeTogc3RyaW5nLFxuICAgIGhsRmFybURpcmVjdG9yeVBhdGg6IHN0cmluZ1xuKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgZGV2QnVpbGRPcHRpb25zID0gb3B0aW9ucztcblxuICAgIGNvbnN0IGVuZ2luZVdlYnBhY2tDb25maWdUYXNrID0gYXdhaXQgY3JlYXRlRW5naW5lV2VicGFja0NvbmZpZ1Rhc2soZW5naW5lRGlyZWN0b3J5KTtcbiAgICBjb25zdCBidWlsZEVuZ2luZUNoYWluID0gZW5naW5lV2VicGFja0NvbmZpZ1Rhc2suY2hhaW5XaXRoKFxuICAgICAgICBwID0+IG5ldyBCdWlsZExvY2FsRW5naW5lVGFzayhwLCByZXNvdXJjZXNEaXJlY3RvcnksIG9wdGlvbnMuYnVpbGREZWJ1Z09ubHkpXG4gICAgKTtcblxuICAgIGNvbnN0IGNsaWVudFdlYnBhY2tDb25maWdUYXNrID0gYXdhaXQgY3JlYXRlQ2xpZW50V2VicGFja0NvbmZpZ1Rhc2soZW5naW5lRGlyZWN0b3J5KTtcbiAgICBjb25zdCBidWlsZENsaWVudEpzQ2hhaW4gPSBjbGllbnRXZWJwYWNrQ29uZmlnVGFzay5jaGFpbldpdGgocCA9PiBuZXcgQnVpbGRDbGllbnRKc1Rhc2socCwgcmVzb3VyY2VzRGlyZWN0b3J5KSk7XG5cbiAgICBjb25zdCBzdGF0aWNSZXNvdXJjZXNDaGFpbiA9IE9ic2VydmUuZmlsZXMoXG4gICAgICAgIHBhdGguam9pbihfX2Rpcm5hbWUsIFwiLi5cIiwgXCIuLlwiLCBcIlN0YXRpY0ZpbGVzRm9yUmVzb3VyY2VzRGlyXCIpLFxuICAgICAgICBcIiouanNcIlxuICAgICkuZG8oeCA9PlxuICAgICAgICBGU1Rhc2suY29weVJlY3Vyc2l2ZWx5KGdldExvZ2dlcigpLndpdGhQcmVmaXgoXCJTVEFUSUNTXCIpLCB4LCBwYXRoLmpvaW4ocmVzb3VyY2VzRGlyZWN0b3J5LCBcInB1YmxpY1wiLCBcInNjcmlwdHNcIikpXG4gICAgKTtcblxuICAgIGNvbnN0IHBpY2tMaXN0c0NoYWluID0gT2JzZXJ2ZS5maWxlcyhwYXRoLmpvaW4oZmFybURpcmVjdG9yeSwgXCJwaWNrbGlzdHNcIiksIFwiKi5qc29uXCIpLmRvKHggPT5cbiAgICAgICAgRlNUYXNrLmNvcHlSZWN1cnNpdmVseShjb250ZXh0LmxvZ2dlci53aXRoUHJlZml4KFwiUElDS0xJU1RTXCIpLCB4LCBwYXRoLmpvaW4ocmVzb3VyY2VzRGlyZWN0b3J5LCBcInBpY2tsaXN0c1wiKSlcbiAgICApO1xuXG4gICAgY29uc3QgcmVwb3NpdG9yeVJvb3QgPSBwYXRoLmpvaW4oZmFybURpcmVjdG9yeSwgXCIuLlwiKTtcbiAgICBhd2FpdCBGb3JtR2xvYnMuZW5zdXJlRWFjaEdsb2JSZXNvbHZlc0ludG9FeGlzdGluZ0Zvcm0ob3B0aW9ucy5mb3JtR2xvYnMsIGZhcm1EaXJlY3RvcnkpO1xuICAgIGNvbnN0IGZvcm1HbG9icyA9IGF3YWl0IEZvcm1HbG9icy5yZXNvbHZlU3BlY2lmaWVycyhvcHRpb25zLmZvcm1HbG9icywgZmFybURpcmVjdG9yeSk7XG5cbiAgICAvKiog0JrQvtC90LLQtdGA0YLQtdGA0Ysg0L7Qv9C40YHQuCDQtNC70Y8g0YTQvtGA0LwsINC60L7RgtC+0YDRi9C1INC/0L7QutCwINC90LUg0YDQtdCw0LvQuNC30L7QstCw0L3RiyDQvdCwINC60LXQvdC00LgsINGB0LDQvNCwINC80LXRhdCw0L3QuNC60LAg0L7Qv9C40YHQuCDQv9C10YDQtdC90LXRgdC10L3QsCDQsiDRhNC+0YDQvNGLINCyINC60LXQvdC00Lgg0LDQv9C4LCDQv9C+0Y3RgtC+0LzRgyDQvtC90Lgg0LTQvtC70LbQvdGLINCx0YvRgtGMINCyIGNhbmR5LnJlc291cmNlc1xuICAgICAqICDQoNC10LDQu9C40LfRg9C10YLRgdGPINGC0L7Qu9GM0LrQviDQv9GA0Lgg0L7QsdGJ0LXQvCDQsdC40LvQtNC1INGE0L7RgNC8OiBjYW5keSBidWlsZCAqXG4gICAgICogKi9cbiAgICBsZXQgcmVzb3VyY2VzRXh0ZXJuYWxDb252ZXJ0ZXJzQ2hhaW46IENoYWluYWJsZVZhbHVlUHJvZHVjZXI8c3RyaW5nPiB8IEVtcHR5UHJvZHVjZXIgPSBPYnNlcnZlLmVtcHR5KCk7XG4gICAgaWYgKGZvcm1HbG9ic1swXSA9PT0gXCIqXCIpIHtcbiAgICAgICAgcmVzb3VyY2VzRXh0ZXJuYWxDb252ZXJ0ZXJzQ2hhaW4gPSBPYnNlcnZlLmZpbGVzKHBhdGguam9pbihmYXJtRGlyZWN0b3J5LCBcImV4dGVybmFsQ29udmVydGVyc1wiKSwgXCIqLnhzbHRcIikuZG8oXG4gICAgICAgICAgICB4ID0+XG4gICAgICAgICAgICAgICAgRlNUYXNrLmNvcHlSZWN1cnNpdmVseShcbiAgICAgICAgICAgICAgICAgICAgZ2V0TG9nZ2VyKCkud2l0aFByZWZpeChcIkVYVEVSTkFMLUNPTlZFUlRFUlNcIiksXG4gICAgICAgICAgICAgICAgICAgIHgsXG4gICAgICAgICAgICAgICAgICAgIHBhdGguam9pbihyZXNvdXJjZXNEaXJlY3RvcnksIFwiY29udmVydGVyc1wiKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBjb25zdCBidWlsZEZvcm1zQ2hhaW4gPSBPYnNlcnZlLmZvcm1EaXJlY3RvcmllcyhyZXBvc2l0b3J5Um9vdCwgZm9ybUdsb2JzKS5zcGxpdFRvUGFyYWxsZWxDaGFpbnMoXG4gICAgICAgIHggPT4geCxcbiAgICAgICAgeCA9PiB4LFxuICAgICAgICBhc3luYyBmb3JtUmVsYXRpdmVQYXRoID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGdmdiA9IGV4dHJhY3RHZnZGcm9tRm9ybVBhdGgoZm9ybVJlbGF0aXZlUGF0aCk7XG4gICAgICAgICAgICBjb25zdCBmb3JtRGlyUGF0aCA9IHBhdGguam9pbihyZXBvc2l0b3J5Um9vdCwgZm9ybVJlbGF0aXZlUGF0aCk7XG4gICAgICAgICAgICBjb25zdCBmb3JtU2NoZW1hc0RpclBhdGggPSBwYXRoLmpvaW4oZm9ybURpclBhdGgsIFwic2NoZW1hc1wiKTtcbiAgICAgICAgICAgIGNvbnN0IHJuZ1NjaGVtYU1hc2sgPSBgKiR7Z2V0Um5nU2NoZW1hRmlsZW5hbWUoZm9ybVNjaGVtYXNEaXJQYXRoLCBnZnYpfWA7XG5cbiAgICAgICAgICAgIHJldHVybiBPYnNlcnZlLmZpbGUocGF0aC5qb2luKGZvcm1EaXJQYXRoLCBXZWxsS25vd25EaXJlY3Rvcmllcy5Gb3JtSnNvbkZpbGVOYW1lKSlcbiAgICAgICAgICAgICAgICAudHJhbnNmb3JtKGZvcm1Kc29uRmlsZSA9PiByZXNvbHZlRm9ybUluZm8oZm9ybUpzb25GaWxlLCBmb3JtRGlyUGF0aCwgZW5naW5lRGlyZWN0b3J5KSlcbiAgICAgICAgICAgICAgICAudHJhbnNmb3JtKGFzeW5jIHggPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgLi4ueCxcbiAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yU291cmNlOiByZXNvbHZlTG9jYWxHZW5lcmF0b3JTb3VyY2UoZW5naW5lRGlyZWN0b3J5KSxcbiAgICAgICAgICAgICAgICAgICAgZW5naW5lU291cmNlOiByZXNvbHZlTG9jYWxFbmdpbmVTb3VyY2UoZW5naW5lRGlyZWN0b3J5KSxcbiAgICAgICAgICAgICAgICB9KSlcbiAgICAgICAgICAgICAgICAuYXR0YWNoKFxuICAgICAgICAgICAgICAgICAgICBhc3luYyBmaSA9PiBnZW5lcmF0b3JGYWN0b3J5KGZpLmdlbmVyYXRvclNvdXJjZSwgY2FuZHlNb2R1bGVzRGlyZWN0b3J5LCBmYWxzZSwgdW5kZWZpbmVkKSxcbiAgICAgICAgICAgICAgICAgICAgYXN5bmMgKGZpLCB5KSA9PiAoeyAuLi5maSwgZ2VuZXJhdG9yOiB5IH0pLFxuICAgICAgICAgICAgICAgICAgICBhc3luYyBmaSA9PiBnZXRHZW5lcmF0b3JTb3VyY2VLZXkoZmkuZ2VuZXJhdG9yU291cmNlKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAuYXR0YWNoKGFzeW5jIGZpID0+XG4gICAgICAgICAgICAgICAgICAgIE9ic2VydmUuZmlsZXMoXG4gICAgICAgICAgICAgICAgICAgICAgICBmaS5mb3JtU291cmNlc1BhdGgsXG4gICAgICAgICAgICAgICAgICAgICAgICBcIi4uLy4uL2NvbnRyb2xzLyoqLypcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIFwic2NoZW1hcy8qKi8qXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBcInN1Z2FyLyoqLypcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiY29udHJvbHMvKiovKlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJhdXRvY2FsYy8qKi8qXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBcImhlbHBlcnMvKiovKlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJ2YWxpZGF0aW9ucy8qKi8qXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBcImxvY2FsaXphdGlvbi8qKi8qXCJcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAudHJhbnNmb3JtKGFzeW5jIGZpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgIC4uLmZpLFxuICAgICAgICAgICAgICAgICAgICBkZXBlbmRlbmNpZXNIYXNoOiBhd2FpdCBmaS5nZW5lcmF0b3IuZ2V0QWxsRGVwZW5kZW5jaWVzSGFzaChcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1EaXJQYXRoLFxuICAgICAgICAgICAgICAgICAgICAgICAgZmFybURpcmVjdG9yeSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhsRmFybURpcmVjdG9yeVBhdGhcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICB9KSlcbiAgICAgICAgICAgICAgICAuZG8oYXN5bmMgZmkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAob3B0aW9ucy5za2lwR2VuZXJhdGlvbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ2VuZXJhdGVGb3JtKFxuICAgICAgICAgICAgICAgICAgICAgICAgZmkuZm9ybVNvdXJjZXNQYXRoLFxuICAgICAgICAgICAgICAgICAgICAgICAgZmFybURpcmVjdG9yeSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhsRmFybURpcmVjdG9yeVBhdGgsXG4gICAgICAgICAgICAgICAgICAgICAgICBmaS5nZW5lcmF0b3IsXG4gICAgICAgICAgICAgICAgICAgICAgICB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2tpcENvZGVSZWZvcm1hdHRpbmc6IG9wdGlvbnMuc2tpcEdlbmVyYXRlZENvZGVSZWZvcm1hdHRpbmcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb3VyY2VzSGFzaDogZmkuZGVwZW5kZW5jaWVzSGFzaCxcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5hdHRhY2goYXN5bmMgZmkgPT4gT2JzZXJ2ZS5maWxlcyhwYXRoLmpvaW4oZm9ybURpclBhdGgsIFwiZm9ybVwiKSwgXCIqKi8qXCIpKVxuICAgICAgICAgICAgICAgIC5kbyhmaSA9PlxuICAgICAgICAgICAgICAgICAgICBjb21waWxlRm9ybShcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpLmZvcm1OYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgZmkudGhlbWVzLFxuICAgICAgICAgICAgICAgICAgICAgICAgZmFybURpcmVjdG9yeSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1EaXJQYXRoLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzb3VyY2VzRGlyZWN0b3J5LFxuICAgICAgICAgICAgICAgICAgICAgICAgZmkuZGVwZW5kZW5jaWVzSGFzaCxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnMuYnVpbGREZWJ1Z09ubHlcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAuZG8oZmkgPT4gd3JpdGVGTGFuZ05vcm1hbGl6YXRpb25GaWxlcyhmaS5mb3JtTmFtZSwgZmFybURpcmVjdG9yeSwgZm9ybURpclBhdGgsIHJlc291cmNlc0RpcmVjdG9yeSkpXG4gICAgICAgICAgICAgICAgLmRvKGZpID0+IHdyaXRlQXR0YWNobWVudFBhdGhGaWxlcyhmaS5mb3JtTmFtZSwgZmFybURpcmVjdG9yeSwgZm9ybURpclBhdGgsIHJlc291cmNlc0RpcmVjdG9yeSkpXG4gICAgICAgICAgICAgICAgLmRvKGZpID0+IHdyaXRlRm9ybU1ldGEocmVzb3VyY2VzRGlyZWN0b3J5LCBnZnYsIGZpLmVuZ2luZVNvdXJjZSwgZmkuZGVwZW5kZW5jaWVzSGFzaCwgZmkudGhlbWVzKSlcbiAgICAgICAgICAgICAgICAuYXR0YWNoKGFzeW5jIGZpID0+XG4gICAgICAgICAgICAgICAgICAgIE9ic2VydmUuZmlsZXMocGF0aC5qb2luKGZpLmZvcm1Tb3VyY2VzUGF0aCwgXCJzY2hlbWFzXCIpLCBybmdTY2hlbWFNYXNrKS5kbyh4ID0+XG4gICAgICAgICAgICAgICAgICAgICAgICBGU1Rhc2suY29weVJlY3Vyc2l2ZWx5KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldExvZ2dlcigpLndpdGhQcmVmaXgoXCJTQ0hFTUFTXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aC5qb2luKHJlc291cmNlc0RpcmVjdG9yeSwgXCJzY2hlbWFzXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLmF0dGFjaChhc3luYyBmaSA9PlxuICAgICAgICAgICAgICAgICAgICBPYnNlcnZlLmZpbGVzKHBhdGguam9pbihmaS5mb3JtU291cmNlc1BhdGgsIFwiY29udmVydGVyc1wiKSwgXCIqXCIpLmRvKHggPT5cbiAgICAgICAgICAgICAgICAgICAgICAgIEZTVGFzay5jb3B5UmVjdXJzaXZlbHkoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0TG9nZ2VyKCkud2l0aFByZWZpeChcIkNPTlZFUlRFUlNcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoLmpvaW4ocmVzb3VyY2VzRGlyZWN0b3J5LCBcImNvbnZlcnRlcnNcIilcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAuYXR0YWNoKGFzeW5jIGZpID0+XG4gICAgICAgICAgICAgICAgICAgIE9ic2VydmUuZmlsZXMocGF0aC5qb2luKGZpLmZvcm1Tb3VyY2VzUGF0aCwgXCJtZXJnZXJzXCIpLCBcIipcIikuZG8oeCA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgRlNUYXNrLmNvcHlSZWN1cnNpdmVseShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRMb2dnZXIoKS53aXRoUHJlZml4KFwiTUVSR0VSU1wiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGguam9pbihyZXNvdXJjZXNEaXJlY3RvcnksIFwibWVyZ2Vyc1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC5hdHRhY2goYXN5bmMgZmkgPT5cbiAgICAgICAgICAgICAgICAgICAgT2JzZXJ2ZS5maWxlcyhwYXRoLmpvaW4oZmkuZm9ybVNvdXJjZXNQYXRoLCBcIm5vcm1hbGl6ZVwiKSwgXCIqLnhtbFwiKS5kbyh4ID0+XG4gICAgICAgICAgICAgICAgICAgICAgICBGU1Rhc2suY29weVJlY3Vyc2l2ZWx5KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldExvZ2dlcigpLndpdGhQcmVmaXgoXCJOT1JNQUxJWkVcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoLmpvaW4ocmVzb3VyY2VzRGlyZWN0b3J5LCBcIm5vcm1hbGl6ZVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC5hdHRhY2goYXN5bmMgZmkgPT5cbiAgICAgICAgICAgICAgICAgICAgT2JzZXJ2ZS5maWxlcyhwYXRoLmpvaW4oZmkuZm9ybVNvdXJjZXNQYXRoLCBcInBhdGNoXCIpLCBcIioueHNsdFwiKS5kbyh4ID0+XG4gICAgICAgICAgICAgICAgICAgICAgICBGU1Rhc2suY29weVJlY3Vyc2l2ZWx5KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldExvZ2dlcigpLndpdGhQcmVmaXgoXCJQQVRDSFwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGguam9pbihyZXNvdXJjZXNEaXJlY3RvcnksIFwicGF0Y2hcIilcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAuYXR0YWNoKGFzeW5jIGZpID0+XG4gICAgICAgICAgICAgICAgICAgIE9ic2VydmUuZmlsZXMocGF0aC5qb2luKGZpLmZvcm1Tb3VyY2VzUGF0aCwgXCJtYXBcIiksIFwiKi54bWxcIikuZG8oeCA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgRlNUYXNrLmNvcHlSZWN1cnNpdmVseShnZXRMb2dnZXIoKS53aXRoUHJlZml4KFwiTUFQXCIpLCB4LCBwYXRoLmpvaW4ocmVzb3VyY2VzRGlyZWN0b3J5LCBcIm1hcFwiKSlcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAuYXR0YWNoKGFzeW5jIGZpID0+XG4gICAgICAgICAgICAgICAgICAgIE9ic2VydmUuZmlsZXMocGF0aC5qb2luKGZpLmZvcm1Tb3VyY2VzUGF0aCwgXCJ1bm1hcFwiKSwgXCIqLnhtbFwiKS5kbyh4ID0+XG4gICAgICAgICAgICAgICAgICAgICAgICBGU1Rhc2suY29weVJlY3Vyc2l2ZWx5KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldExvZ2dlcigpLndpdGhQcmVmaXgoXCJVTk1BUFwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGguam9pbihyZXNvdXJjZXNEaXJlY3RvcnksIFwidW5tYXBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICApO1xuXG4gICAgaWYgKGRldkJ1aWxkT3B0aW9ucy53YXRjaCkge1xuICAgICAgICBjb25zdCBzdG9wT2JzZXJ2ZTEgPSBhd2FpdCBidWlsZEVuZ2luZUNoYWluLm9ic2VydmUoKTtcbiAgICAgICAgY29uc3Qgc3RvcE9ic2VydmUyID0gYXdhaXQgYnVpbGRDbGllbnRKc0NoYWluLm9ic2VydmUoKTtcbiAgICAgICAgY29uc3Qgc3RvcE9ic2VydmUzID0gYXdhaXQgc3RhdGljUmVzb3VyY2VzQ2hhaW4ub2JzZXJ2ZSgpO1xuICAgICAgICBjb25zdCBzdG9wT2JzZXJ2ZTQgPSBhd2FpdCBidWlsZEZvcm1zQ2hhaW4ub2JzZXJ2ZSgpO1xuICAgICAgICBjb25zdCBzdG9wT2JzZXJ2ZTUgPSBhd2FpdCBwaWNrTGlzdHNDaGFpbi5vYnNlcnZlKCk7XG4gICAgICAgIGNvbnN0IHN0b3BPYnNlcnZlNiA9IGF3YWl0IHJlc291cmNlc0V4dGVybmFsQ29udmVydGVyc0NoYWluLm9ic2VydmUoKTtcblxuICAgICAgICBhd2FpdCBjb250ZXh0LndhaXRGb3JFeGl0KCk7XG5cbiAgICAgICAgYXdhaXQgc3RvcE9ic2VydmUxKCk7XG4gICAgICAgIGF3YWl0IHN0b3BPYnNlcnZlMigpO1xuICAgICAgICBhd2FpdCBzdG9wT2JzZXJ2ZTMoKTtcbiAgICAgICAgYXdhaXQgc3RvcE9ic2VydmU0KCk7XG4gICAgICAgIGF3YWl0IHN0b3BPYnNlcnZlNSgpO1xuICAgICAgICBhd2FpdCBzdG9wT2JzZXJ2ZTYoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBzdGFydERhdGUgPSBEYXRlLm5vdygpO1xuICAgICAgICBhd2FpdCBQcm9taXNlLmFsbChbXG4gICAgICAgICAgICBidWlsZEVuZ2luZUNoYWluLmN1cnJlbnRWYWx1ZSxcbiAgICAgICAgICAgIGJ1aWxkQ2xpZW50SnNDaGFpbi5jdXJyZW50VmFsdWUsXG4gICAgICAgICAgICBzdGF0aWNSZXNvdXJjZXNDaGFpbi5jdXJyZW50VmFsdWUsXG4gICAgICAgICAgICByZXNvdXJjZXNFeHRlcm5hbENvbnZlcnRlcnNDaGFpbi5jdXJyZW50VmFsdWUsXG4gICAgICAgICAgICAoYXN5bmMgKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IHBpY2tMaXN0c0NoYWluLmN1cnJlbnRWYWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgYnVpbGRGb3Jtc0NoYWluLmN1cnJlbnRWYWx1ZTtcbiAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChvcHRpb25zLmNvbnRpbnVlT25FcnJvcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC5sb2dnZXIuZXJyb3IoZSk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSkoKSxcbiAgICAgICAgXSk7XG4gICAgICAgIGNvbnN0IHRvdGFsVGltZSA9IERhdGUubm93KCkgLSBzdGFydERhdGU7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gICAgICAgIGNvbnNvbGUubG9nKGAke2NoYWxrLmdyZWVuQnJpZ2h0KFwiQnVpbGQgc3VjY2Vzc1wiKX0gVG90YWwgdGltZTogJHtwcmludFRpbWUodG90YWxUaW1lKX1gKTtcbiAgICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQSxJQUFBQSxLQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFFQSxJQUFBQyxNQUFBLEdBQUFGLHNCQUFBLENBQUFDLE9BQUE7QUFFQSxJQUFBRSxrQkFBQSxHQUFBRixPQUFBO0FBQ0EsSUFBQUcscUJBQUEsR0FBQUgsT0FBQTtBQUNBLElBQUFJLHFCQUFBLEdBQUFKLE9BQUE7QUFDQSxJQUFBSyxZQUFBLEdBQUFMLE9BQUE7QUFDQSxJQUFBTSxhQUFBLEdBQUFOLE9BQUE7QUFDQSxJQUFBTyw2QkFBQSxHQUFBUCxPQUFBO0FBQ0EsSUFBQVEsT0FBQSxHQUFBUixPQUFBO0FBQ0EsSUFBQVMscUJBQUEsR0FBQVQsT0FBQTtBQUNBLElBQUFVLHNCQUFBLEdBQUFWLE9BQUE7QUFDQSxJQUFBVyxnQkFBQSxHQUFBWCxPQUFBO0FBQ0EsSUFBQVksY0FBQSxHQUFBWixPQUFBO0FBRUEsSUFBQWEsZUFBQSxHQUFBYixPQUFBO0FBQ0EsSUFBQWMsYUFBQSxHQUFBZCxPQUFBO0FBQ0EsSUFBQWUsUUFBQSxHQUFBZixPQUFBO0FBQ0EsSUFBQWdCLFlBQUEsR0FBQWhCLE9BQUE7QUFDQSxJQUFBaUIseUJBQUEsR0FBQWpCLE9BQUE7QUFHQSxJQUFBa0IscUJBQUEsR0FBQWxCLE9BQUE7QUFDQSxJQUFBbUIsY0FBQSxHQUFBbkIsT0FBQTtBQUNBLElBQUFvQixxQkFB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
106
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcGF0aCIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX2NoYWxrIiwiX0J1aWxkQ2xpZW50SnNUYXNrIiwiX0J1aWxkTG9jYWxFbmdpbmVUYXNrIiwiX0VuZ2luZVN0cnVjdHVyZVV0aWxzIiwiX0NvbXBpbGVGb3JtIiwiX0dlbmVyYXRlRm9ybSIsIl9Xcml0ZUZMYW5nTm9ybWFsaXphdGlvbkZpbGVzIiwiX0ZTVGFzayIsIl9BY3F1aXJlRm9ybUdlbmVyYXRvciIsIl9QdWJsaXNoZWRWZXJzaW9uVXRpbHMiLCJfUmVzb2x2ZUZvcm1JbmZvIiwiX1dyaXRlRm9ybU1ldGEiLCJfRm9ybUdsb2JzVXRpbHMiLCJfU3RhdGljTG9nZ2VyIiwiX09ic2VydmUiLCJfVGltaW5nVXRpbHMiLCJfV3JpdGVBdHRhY2htZW50UGF0aEZpbGVzIiwiX2dldFJuZ1NjaGVtYUZpbGVuYW1lIiwiX0Zvcm1QYXRoVXRpbHMiLCJfV2VsbEtub3duRGlyZWN0b3JpZXMiLCJydW5EZXZCdWlsZCIsImNvbnRleHQiLCJvcHRpb25zIiwiZW5naW5lRGlyZWN0b3J5IiwicmVzb3VyY2VzRGlyZWN0b3J5IiwiZmFybURpcmVjdG9yeSIsImNhbmR5TW9kdWxlc0RpcmVjdG9yeSIsImhsRmFybURpcmVjdG9yeVBhdGgiLCJkZXZCdWlsZE9wdGlvbnMiLCJlbmdpbmVXZWJwYWNrQ29uZmlnVGFzayIsImNyZWF0ZUVuZ2luZVdlYnBhY2tDb25maWdUYXNrIiwiYnVpbGRFbmdpbmVDaGFpbiIsImNoYWluV2l0aCIsInAiLCJCdWlsZExvY2FsRW5naW5lVGFzayIsImJ1aWxkRGVidWdPbmx5IiwiY2xpZW50V2VicGFja0NvbmZpZ1Rhc2siLCJjcmVhdGVDbGllbnRXZWJwYWNrQ29uZmlnVGFzayIsImJ1aWxkQ2xpZW50SnNDaGFpbiIsIkJ1aWxkQ2xpZW50SnNUYXNrIiwic3RhdGljUmVzb3VyY2VzQ2hhaW4iLCJPYnNlcnZlIiwiZmlsZXMiLCJwYXRoIiwiam9pbiIsIl9fZGlybmFtZSIsImRvIiwieCIsIkZTVGFzayIsImNvcHlSZWN1cnNpdmVseSIsImdldExvZ2dlciIsIndpdGhQcmVmaXgiLCJwaWNrTGlzdHNDaGFpbiIsImxvZ2dlciIsInJlcG9zaXRvcnlSb290IiwiRm9ybUdsb2JzIiwiZW5zdXJlRWFjaEdsb2JSZXNvbHZlc0ludG9FeGlzdGluZ0Zvcm0iLCJmb3JtR2xvYnMiLCJyZXNvbHZlR2Z2R2xvYnMiLCJyZXNvdXJjZXNFeHRlcm5hbENvbnZlcnRlcnNDaGFpbiIsImVtcHR5IiwiYnVpbGRGb3Jtc0NoYWluIiwiZml4ZWRGb3JtRGlyZWN0b3JpZXMiLCJtYXAiLCJmb3JtUGF0aCIsInNwbGl0VG9QYXJhbGxlbENoYWlucyIsImZvcm1SZWxhdGl2ZVBhdGgiLCJnZnYiLCJleHRyYWN0R2Z2RnJvbUZvcm1QYXRoIiwiZm9ybURpclBhdGgiLCJmb3JtU2NoZW1hc0RpclBhdGgiLCJybmdTY2hlbWFNYXNrIiwiZ2V0Um5nU2NoZW1hRmlsZW5hbWUiLCJmaWxlIiwiV2VsbEtub3duRGlyZWN0b3JpZXMiLCJGb3JtSnNvbkZpbGVOYW1lIiwidHJhbnNmb3JtIiwiZm9ybUpzb25GaWxlIiwicmVzb2x2ZUZvcm1JbmZvIiwiZ2VuZXJhdG9yU291cmNlIiwicmVzb2x2ZUxvY2FsR2VuZXJhdG9yU291cmNlIiwiZW5naW5lU291cmNlIiwicmVzb2x2ZUxvY2FsRW5naW5lU291cmNlIiwiYXR0YWNoIiwiZmkiLCJnZW5lcmF0b3JGYWN0b3J5IiwidW5kZWZpbmVkIiwieSIsImdlbmVyYXRvciIsImdldEdlbmVyYXRvclNvdXJjZUtleSIsImZvcm1Tb3VyY2VzUGF0aCIsImRlcGVuZGVuY2llc0hhc2giLCJnZXRBbGxEZXBlbmRlbmNpZXNIYXNoIiwic2tpcEdlbmVyYXRpb24iLCJnZW5lcmF0ZUZvcm0iLCJza2lwQ29kZVJlZm9ybWF0dGluZyIsInNraXBHZW5lcmF0ZWRDb2RlUmVmb3JtYXR0aW5nIiwicmVzb3VyY2VzSGFzaCIsImNvbXBpbGVGb3JtIiwiZm9ybU5hbWUiLCJ0aGVtZXMiLCJ3cml0ZUZMYW5nTm9ybWFsaXphdGlvbkZpbGVzIiwid3JpdGVBdHRhY2htZW50UGF0aEZpbGVzIiwid3JpdGVGb3JtTWV0YSIsIndhdGNoIiwic3RvcE9ic2VydmUxIiwib2JzZXJ2ZSIsInN0b3BPYnNlcnZlMiIsInN0b3BPYnNlcnZlMyIsInN0b3BPYnNlcnZlNCIsInN0b3BPYnNlcnZlNSIsInN0b3BPYnNlcnZlNiIsIndhaXRGb3JFeGl0Iiwic3RhcnREYXRlIiwiRGF0ZSIsIm5vdyIsIlByb21pc2UiLCJhbGwiLCJjdXJyZW50VmFsdWUiLCJlIiwiY29udGludWVPbkVycm9yIiwiZXJyb3IiLCJ0b3RhbFRpbWUiLCJjb25zb2xlIiwibG9nIiwiY2hhbGsiLCJncmVlbkJyaWdodCIsInByaW50VGltZSJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9DTElDb21tYW5kcy9EZXZCdWlsZC9SdW5EZXZCdWlsZC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgcGF0aCBmcm9tIFwicGF0aFwiO1xuXG5pbXBvcnQgY2hhbGsgZnJvbSBcImNoYWxrXCI7XG5cbmltcG9ydCB7IEJ1aWxkQ2xpZW50SnNUYXNrIH0gZnJvbSBcIi4uLy4uL0J1aWxkVGFza3MvQ2xpZW50SlMvQnVpbGRDbGllbnRKc1Rhc2tcIjtcbmltcG9ydCB7IEJ1aWxkTG9jYWxFbmdpbmVUYXNrIH0gZnJvbSBcIi4uLy4uL0J1aWxkVGFza3MvRW5naW5lL0J1aWxkTG9jYWxFbmdpbmVUYXNrXCI7XG5pbXBvcnQgeyBjcmVhdGVDbGllbnRXZWJwYWNrQ29uZmlnVGFzaywgY3JlYXRlRW5naW5lV2VicGFja0NvbmZpZ1Rhc2sgfSBmcm9tIFwiLi4vLi4vQnVpbGRUYXNrcy9FbmdpbmVTdHJ1Y3R1cmVVdGlsc1wiO1xuaW1wb3J0IHsgY29tcGlsZUZvcm0gfSBmcm9tIFwiLi4vLi4vQnVpbGRUYXNrcy9Gb3JtL0NvbXBpbGVGb3JtXCI7XG5pbXBvcnQgeyBnZW5lcmF0ZUZvcm0gfSBmcm9tIFwiLi4vLi4vQnVpbGRUYXNrcy9Gb3JtL0dlbmVyYXRlRm9ybVwiO1xuaW1wb3J0IHsgd3JpdGVGTGFuZ05vcm1hbGl6YXRpb25GaWxlcyB9IGZyb20gXCIuLi8uLi9CdWlsZFRhc2tzL0Zvcm0vV3JpdGVGTGFuZ05vcm1hbGl6YXRpb25GaWxlc1wiO1xuaW1wb3J0IHsgRlNUYXNrIH0gZnJvbSBcIi4uLy4uL0J1aWxkVGFza3MvRlNUYXNrXCI7XG5pbXBvcnQgeyBnZW5lcmF0b3JGYWN0b3J5LCBnZXRHZW5lcmF0b3JTb3VyY2VLZXkgfSBmcm9tIFwiLi4vLi4vQnVpbGRUYXNrcy9HZW5lcmF0b3IvQWNxdWlyZUZvcm1HZW5lcmF0b3JcIjtcbmltcG9ydCB7IHJlc29sdmVMb2NhbEVuZ2luZVNvdXJjZSwgcmVzb2x2ZUxvY2FsR2VuZXJhdG9yU291cmNlIH0gZnJvbSBcIi4uLy4uL0J1aWxkVGFza3MvUHVibGlzaGVkVmVyc2lvblV0aWxzXCI7XG5pbXBvcnQgeyByZXNvbHZlRm9ybUluZm8gfSBmcm9tIFwiLi4vLi4vQnVpbGRUYXNrcy9SZXNvbHZlRm9ybUluZm9cIjtcbmltcG9ydCB7IHdyaXRlRm9ybU1ldGEgfSBmcm9tIFwiLi4vLi4vQnVpbGRUYXNrcy9Xcml0ZUZvcm1NZXRhXCI7XG5pbXBvcnQgeyBDb25zb2xlQXBwbGljYXRpb25Db250ZXh0IH0gZnJvbSBcIi4uLy4uL0NvbW1vbnMvQ29uc29sZUFwcGxpY2F0aW9uL0NvbnNvbGVBcHBsaWNhdGlvbkNvbnRleHRcIjtcbmltcG9ydCB7IEZvcm1HbG9icyB9IGZyb20gXCIuLi8uLi9Db21tb25zL0Zvcm1HbG9ic1V0aWxzXCI7XG5pbXBvcnQgeyBnZXRMb2dnZXIgfSBmcm9tIFwiLi4vLi4vQ29tbW9ucy9Mb2dnaW5nL1N0YXRpY0xvZ2dlclwiO1xuaW1wb3J0IHsgT2JzZXJ2ZSB9IGZyb20gXCIuLi8uLi9Db21tb25zL1Rhc2tzQ29yZS9PYnNlcnZlXCI7XG5pbXBvcnQgeyBwcmludFRpbWUgfSBmcm9tIFwiLi4vLi4vQ29tbW9ucy9UaW1pbmdVdGlsc1wiO1xuaW1wb3J0IHsgd3JpdGVBdHRhY2htZW50UGF0aEZpbGVzIH0gZnJvbSBcIi4uLy4uL0J1aWxkVGFza3MvRm9ybS9Xcml0ZUF0dGFjaG1lbnRQYXRoRmlsZXNcIjtcbmltcG9ydCB7IENoYWluYWJsZVZhbHVlUHJvZHVjZXIgfSBmcm9tIFwiLi4vLi4vQ29tbW9ucy9UYXNrc0NvcmUvQ2hhaW5hYmxlVmFsdWVQcm9kdWNlclwiO1xuaW1wb3J0IHsgRW1wdHlQcm9kdWNlciB9IGZyb20gXCIuLi8uLi9Db21tb25zL1Rhc2tzQ29yZS9FbXB0eVByb2R1Y2VyXCI7XG5pbXBvcnQgeyBnZXRSbmdTY2hlbWFGaWxlbmFtZSB9IGZyb20gXCIuLi8uLi8uLi8uLi9Db21tb24vZ2V0Um5nU2NoZW1hRmlsZW5hbWVcIjtcbmltcG9ydCB7IGV4dHJhY3RHZnZGcm9tRm9ybVBhdGggfSBmcm9tIFwiLi4vLi4vLi4vLi4vQ29tbW9uL0Zvcm1QYXRoVXRpbHNcIjtcbmltcG9ydCB7IFdlbGxLbm93bkRpcmVjdG9yaWVzIH0gZnJvbSBcIi4uLy4uLy4uLy4uL0NvbW1vbi9XZWxsS25vd25EaXJlY3Rvcmllc1wiO1xuXG5pbXBvcnQgeyBEZXZlbG9wbWVudEJ1aWxkT3B0aW9ucyB9IGZyb20gXCIuL0RldkJ1aWxkT3B0aW9uc1wiO1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcnVuRGV2QnVpbGQoXG4gICAgY29udGV4dDogQ29uc29sZUFwcGxpY2F0aW9uQ29udGV4dCxcbiAgICBvcHRpb25zOiBEZXZlbG9wbWVudEJ1aWxkT3B0aW9ucyxcbiAgICBlbmdpbmVEaXJlY3Rvcnk6IHN0cmluZyxcbiAgICByZXNvdXJjZXNEaXJlY3Rvcnk6IHN0cmluZyxcbiAgICBmYXJtRGlyZWN0b3J5OiBzdHJpbmcsXG4gICAgY2FuZHlNb2R1bGVzRGlyZWN0b3J5OiBzdHJpbmcsXG4gICAgaGxGYXJtRGlyZWN0b3J5UGF0aDogc3RyaW5nXG4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBkZXZCdWlsZE9wdGlvbnMgPSBvcHRpb25zO1xuXG4gICAgY29uc3QgZW5naW5lV2VicGFja0NvbmZpZ1Rhc2sgPSBhd2FpdCBjcmVhdGVFbmdpbmVXZWJwYWNrQ29uZmlnVGFzayhlbmdpbmVEaXJlY3RvcnkpO1xuICAgIGNvbnN0IGJ1aWxkRW5naW5lQ2hhaW4gPSBlbmdpbmVXZWJwYWNrQ29uZmlnVGFzay5jaGFpbldpdGgoXG4gICAgICAgIHAgPT4gbmV3IEJ1aWxkTG9jYWxFbmdpbmVUYXNrKHAsIHJlc291cmNlc0RpcmVjdG9yeSwgb3B0aW9ucy5idWlsZERlYnVnT25seSlcbiAgICApO1xuXG4gICAgY29uc3QgY2xpZW50V2VicGFja0NvbmZpZ1Rhc2sgPSBhd2FpdCBjcmVhdGVDbGllbnRXZWJwYWNrQ29uZmlnVGFzayhlbmdpbmVEaXJlY3RvcnkpO1xuICAgIGNvbnN0IGJ1aWxkQ2xpZW50SnNDaGFpbiA9IGNsaWVudFdlYnBhY2tDb25maWdUYXNrLmNoYWluV2l0aChwID0+IG5ldyBCdWlsZENsaWVudEpzVGFzayhwLCByZXNvdXJjZXNEaXJlY3RvcnkpKTtcblxuICAgIGNvbnN0IHN0YXRpY1Jlc291cmNlc0NoYWluID0gT2JzZXJ2ZS5maWxlcyhcbiAgICAgICAgcGF0aC5qb2luKF9fZGlybmFtZSwgXCIuLlwiLCBcIi4uXCIsIFwiU3RhdGljRmlsZXNGb3JSZXNvdXJjZXNEaXJcIiksXG4gICAgICAgIFwiKi5qc1wiXG4gICAgKS5kbyh4ID0+XG4gICAgICAgIEZTVGFzay5jb3B5UmVjdXJzaXZlbHkoZ2V0TG9nZ2VyKCkud2l0aFByZWZpeChcIlNUQVRJQ1NcIiksIHgsIHBhdGguam9pbihyZXNvdXJjZXNEaXJlY3RvcnksIFwicHVibGljXCIsIFwic2NyaXB0c1wiKSlcbiAgICApO1xuXG4gICAgY29uc3QgcGlja0xpc3RzQ2hhaW4gPSBPYnNlcnZlLmZpbGVzKHBhdGguam9pbihmYXJtRGlyZWN0b3J5LCBcInBpY2tsaXN0c1wiKSwgXCIqLmpzb25cIikuZG8oeCA9PlxuICAgICAgICBGU1Rhc2suY29weVJlY3Vyc2l2ZWx5KGNvbnRleHQubG9nZ2VyLndpdGhQcmVmaXgoXCJQSUNLTElTVFNcIiksIHgsIHBhdGguam9pbihyZXNvdXJjZXNEaXJlY3RvcnksIFwicGlja2xpc3RzXCIpKVxuICAgICk7XG5cbiAgICBjb25zdCByZXBvc2l0b3J5Um9vdCA9IHBhdGguam9pbihmYXJtRGlyZWN0b3J5LCBcIi4uXCIpO1xuICAgIGF3YWl0IEZvcm1HbG9icy5lbnN1cmVFYWNoR2xvYlJlc29sdmVzSW50b0V4aXN0aW5nRm9ybShvcHRpb25zLmZvcm1HbG9icywgZmFybURpcmVjdG9yeSk7XG4gICAgY29uc3QgZm9ybUdsb2JzID0gYXdhaXQgRm9ybUdsb2JzLnJlc29sdmVHZnZHbG9icyhvcHRpb25zLmZvcm1HbG9icywgZmFybURpcmVjdG9yeSk7XG5cbiAgICAvKiog0JrQvtC90LLQtdGA0YLQtdGA0Ysg0L7Qv9C40YHQuCDQtNC70Y8g0YTQvtGA0LwsINC60L7RgtC+0YDRi9C1INC/0L7QutCwINC90LUg0YDQtdCw0LvQuNC30L7QstCw0L3RiyDQvdCwINC60LXQvdC00LgsINGB0LDQvNCwINC80LXRhdCw0L3QuNC60LAg0L7Qv9C40YHQuCDQv9C10YDQtdC90LXRgdC10L3QsCDQsiDRhNC+0YDQvNGLINCyINC60LXQvdC00Lgg0LDQv9C4LCDQv9C+0Y3RgtC+0LzRgyDQvtC90Lgg0LTQvtC70LbQvdGLINCx0YvRgtGMINCyIGNhbmR5LnJlc291cmNlc1xuICAgICAqICDQoNC10LDQu9C40LfRg9C10YLRgdGPINGC0L7Qu9GM0LrQviDQv9GA0Lgg0L7QsdGJ0LXQvCDQsdC40LvQtNC1INGE0L7RgNC8OiBjYW5keSBidWlsZCAqXG4gICAgICogKi9cbiAgICBsZXQgcmVzb3VyY2VzRXh0ZXJuYWxDb252ZXJ0ZXJzQ2hhaW46IENoYWluYWJsZVZhbHVlUHJvZHVjZXI8c3RyaW5nPiB8IEVtcHR5UHJvZHVjZXIgPSBPYnNlcnZlLmVtcHR5KCk7XG4gICAgaWYgKG9wdGlvbnMuZm9ybUdsb2JzWzBdID09PSBcIipcIikge1xuICAgICAgICByZXNvdXJjZXNFeHRlcm5hbENvbnZlcnRlcnNDaGFpbiA9IE9ic2VydmUuZmlsZXMocGF0aC5qb2luKGZhcm1EaXJlY3RvcnksIFwiZXh0ZXJuYWxDb252ZXJ0ZXJzXCIpLCBcIioueHNsdFwiKS5kbyhcbiAgICAgICAgICAgIHggPT5cbiAgICAgICAgICAgICAgICBGU1Rhc2suY29weVJlY3Vyc2l2ZWx5KFxuICAgICAgICAgICAgICAgICAgICBnZXRMb2dnZXIoKS53aXRoUHJlZml4KFwiRVhURVJOQUwtQ09OVkVSVEVSU1wiKSxcbiAgICAgICAgICAgICAgICAgICAgeCxcbiAgICAgICAgICAgICAgICAgICAgcGF0aC5qb2luKHJlc291cmNlc0RpcmVjdG9yeSwgXCJjb252ZXJ0ZXJzXCIpXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGNvbnN0IGJ1aWxkRm9ybXNDaGFpbiA9IE9ic2VydmUuZml4ZWRGb3JtRGlyZWN0b3JpZXMoZm9ybUdsb2JzLm1hcCh4ID0+IHguZm9ybVBhdGgpKS5zcGxpdFRvUGFyYWxsZWxDaGFpbnMoXG4gICAgICAgIHggPT4geCxcbiAgICAgICAgeCA9PiB4LFxuICAgICAgICBhc3luYyBmb3JtUmVsYXRpdmVQYXRoID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGdmdiA9IGV4dHJhY3RHZnZGcm9tRm9ybVBhdGgoZm9ybVJlbGF0aXZlUGF0aCk7XG4gICAgICAgICAgICBjb25zdCBmb3JtRGlyUGF0aCA9IHBhdGguam9pbihyZXBvc2l0b3J5Um9vdCwgZm9ybVJlbGF0aXZlUGF0aCk7XG4gICAgICAgICAgICBjb25zdCBmb3JtU2NoZW1hc0RpclBhdGggPSBwYXRoLmpvaW4oZm9ybURpclBhdGgsIFwic2NoZW1hc1wiKTtcbiAgICAgICAgICAgIGNvbnN0IHJuZ1NjaGVtYU1hc2sgPSBgKiR7Z2V0Um5nU2NoZW1hRmlsZW5hbWUoZm9ybVNjaGVtYXNEaXJQYXRoLCBnZnYpfWA7XG5cbiAgICAgICAgICAgIHJldHVybiBPYnNlcnZlLmZpbGUocGF0aC5qb2luKGZvcm1EaXJQYXRoLCBXZWxsS25vd25EaXJlY3Rvcmllcy5Gb3JtSnNvbkZpbGVOYW1lKSlcbiAgICAgICAgICAgICAgICAudHJhbnNmb3JtKGZvcm1Kc29uRmlsZSA9PiByZXNvbHZlRm9ybUluZm8oZm9ybUpzb25GaWxlLCBmb3JtRGlyUGF0aCwgZW5naW5lRGlyZWN0b3J5KSlcbiAgICAgICAgICAgICAgICAudHJhbnNmb3JtKGFzeW5jIHggPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgLi4ueCxcbiAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yU291cmNlOiByZXNvbHZlTG9jYWxHZW5lcmF0b3JTb3VyY2UoZW5naW5lRGlyZWN0b3J5KSxcbiAgICAgICAgICAgICAgICAgICAgZW5naW5lU291cmNlOiByZXNvbHZlTG9jYWxFbmdpbmVTb3VyY2UoZW5naW5lRGlyZWN0b3J5KSxcbiAgICAgICAgICAgICAgICB9KSlcbiAgICAgICAgICAgICAgICAuYXR0YWNoKFxuICAgICAgICAgICAgICAgICAgICBhc3luYyBmaSA9PiBnZW5lcmF0b3JGYWN0b3J5KGZpLmdlbmVyYXRvclNvdXJjZSwgY2FuZHlNb2R1bGVzRGlyZWN0b3J5LCBmYWxzZSwgdW5kZWZpbmVkKSxcbiAgICAgICAgICAgICAgICAgICAgYXN5bmMgKGZpLCB5KSA9PiAoeyAuLi5maSwgZ2VuZXJhdG9yOiB5IH0pLFxuICAgICAgICAgICAgICAgICAgICBhc3luYyBmaSA9PiBnZXRHZW5lcmF0b3JTb3VyY2VLZXkoZmkuZ2VuZXJhdG9yU291cmNlKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAuYXR0YWNoKGFzeW5jIGZpID0+XG4gICAgICAgICAgICAgICAgICAgIE9ic2VydmUuZmlsZXMoXG4gICAgICAgICAgICAgICAgICAgICAgICBmaS5mb3JtU291cmNlc1BhdGgsXG4gICAgICAgICAgICAgICAgICAgICAgICBcIi4uLy4uL2NvbnRyb2xzLyoqLypcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIFwic2NoZW1hcy8qKi8qXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBcInN1Z2FyLyoqLypcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiY29udHJvbHMvKiovKlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJhdXRvY2FsYy8qKi8qXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBcImhlbHBlcnMvKiovKlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJ2YWxpZGF0aW9ucy8qKi8qXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBcImxvY2FsaXphdGlvbi8qKi8qXCJcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAudHJhbnNmb3JtKGFzeW5jIGZpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgIC4uLmZpLFxuICAgICAgICAgICAgICAgICAgICBkZXBlbmRlbmNpZXNIYXNoOiBhd2FpdCBmaS5nZW5lcmF0b3IuZ2V0QWxsRGVwZW5kZW5jaWVzSGFzaChcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1EaXJQYXRoLFxuICAgICAgICAgICAgICAgICAgICAgICAgZmFybURpcmVjdG9yeSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhsRmFybURpcmVjdG9yeVBhdGhcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICB9KSlcbiAgICAgICAgICAgICAgICAuZG8oYXN5bmMgZmkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAob3B0aW9ucy5za2lwR2VuZXJhdGlvbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ2VuZXJhdGVGb3JtKFxuICAgICAgICAgICAgICAgICAgICAgICAgZmkuZm9ybVNvdXJjZXNQYXRoLFxuICAgICAgICAgICAgICAgICAgICAgICAgZmFybURpcmVjdG9yeSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhsRmFybURpcmVjdG9yeVBhdGgsXG4gICAgICAgICAgICAgICAgICAgICAgICBmaS5nZW5lcmF0b3IsXG4gICAgICAgICAgICAgICAgICAgICAgICB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2tpcENvZGVSZWZvcm1hdHRpbmc6IG9wdGlvbnMuc2tpcEdlbmVyYXRlZENvZGVSZWZvcm1hdHRpbmcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb3VyY2VzSGFzaDogZmkuZGVwZW5kZW5jaWVzSGFzaCxcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5hdHRhY2goYXN5bmMgZmkgPT4gT2JzZXJ2ZS5maWxlcyhwYXRoLmpvaW4oZm9ybURpclBhdGgsIFwiZm9ybVwiKSwgXCIqKi8qXCIpKVxuICAgICAgICAgICAgICAgIC5kbyhmaSA9PlxuICAgICAgICAgICAgICAgICAgICBjb21waWxlRm9ybShcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpLmZvcm1OYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgZmkudGhlbWVzLFxuICAgICAgICAgICAgICAgICAgICAgICAgZmFybURpcmVjdG9yeSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1EaXJQYXRoLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzb3VyY2VzRGlyZWN0b3J5LFxuICAgICAgICAgICAgICAgICAgICAgICAgZmkuZGVwZW5kZW5jaWVzSGFzaCxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnMuYnVpbGREZWJ1Z09ubHlcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAuZG8oZmkgPT4gd3JpdGVGTGFuZ05vcm1hbGl6YXRpb25GaWxlcyhmaS5mb3JtTmFtZSwgZmFybURpcmVjdG9yeSwgZm9ybURpclBhdGgsIHJlc291cmNlc0RpcmVjdG9yeSkpXG4gICAgICAgICAgICAgICAgLmRvKGZpID0+IHdyaXRlQXR0YWNobWVudFBhdGhGaWxlcyhmaS5mb3JtTmFtZSwgZmFybURpcmVjdG9yeSwgZm9ybURpclBhdGgsIHJlc291cmNlc0RpcmVjdG9yeSkpXG4gICAgICAgICAgICAgICAgLmRvKGZpID0+IHdyaXRlRm9ybU1ldGEocmVzb3VyY2VzRGlyZWN0b3J5LCBnZnYsIGZpLmVuZ2luZVNvdXJjZSwgZmkuZGVwZW5kZW5jaWVzSGFzaCwgZmkudGhlbWVzKSlcbiAgICAgICAgICAgICAgICAuYXR0YWNoKGFzeW5jIGZpID0+XG4gICAgICAgICAgICAgICAgICAgIE9ic2VydmUuZmlsZXMocGF0aC5qb2luKGZpLmZvcm1Tb3VyY2VzUGF0aCwgXCJzY2hlbWFzXCIpLCBybmdTY2hlbWFNYXNrKS5kbyh4ID0+XG4gICAgICAgICAgICAgICAgICAgICAgICBGU1Rhc2suY29weVJlY3Vyc2l2ZWx5KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldExvZ2dlcigpLndpdGhQcmVmaXgoXCJTQ0hFTUFTXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aC5qb2luKHJlc291cmNlc0RpcmVjdG9yeSwgXCJzY2hlbWFzXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLmF0dGFjaChhc3luYyBmaSA9PlxuICAgICAgICAgICAgICAgICAgICBPYnNlcnZlLmZpbGVzKHBhdGguam9pbihmaS5mb3JtU291cmNlc1BhdGgsIFwiY29udmVydGVyc1wiKSwgXCIqXCIpLmRvKHggPT5cbiAgICAgICAgICAgICAgICAgICAgICAgIEZTVGFzay5jb3B5UmVjdXJzaXZlbHkoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0TG9nZ2VyKCkud2l0aFByZWZpeChcIkNPTlZFUlRFUlNcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoLmpvaW4ocmVzb3VyY2VzRGlyZWN0b3J5LCBcImNvbnZlcnRlcnNcIilcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAuYXR0YWNoKGFzeW5jIGZpID0+XG4gICAgICAgICAgICAgICAgICAgIE9ic2VydmUuZmlsZXMocGF0aC5qb2luKGZpLmZvcm1Tb3VyY2VzUGF0aCwgXCJtZXJnZXJzXCIpLCBcIipcIikuZG8oeCA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgRlNUYXNrLmNvcHlSZWN1cnNpdmVseShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRMb2dnZXIoKS53aXRoUHJlZml4KFwiTUVSR0VSU1wiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGguam9pbihyZXNvdXJjZXNEaXJlY3RvcnksIFwibWVyZ2Vyc1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC5hdHRhY2goYXN5bmMgZmkgPT5cbiAgICAgICAgICAgICAgICAgICAgT2JzZXJ2ZS5maWxlcyhwYXRoLmpvaW4oZmkuZm9ybVNvdXJjZXNQYXRoLCBcIm5vcm1hbGl6ZVwiKSwgXCIqLnhtbFwiKS5kbyh4ID0+XG4gICAgICAgICAgICAgICAgICAgICAgICBGU1Rhc2suY29weVJlY3Vyc2l2ZWx5KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldExvZ2dlcigpLndpdGhQcmVmaXgoXCJOT1JNQUxJWkVcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoLmpvaW4ocmVzb3VyY2VzRGlyZWN0b3J5LCBcIm5vcm1hbGl6ZVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC5hdHRhY2goYXN5bmMgZmkgPT5cbiAgICAgICAgICAgICAgICAgICAgT2JzZXJ2ZS5maWxlcyhwYXRoLmpvaW4oZmkuZm9ybVNvdXJjZXNQYXRoLCBcInBhdGNoXCIpLCBcIioueHNsdFwiKS5kbyh4ID0+XG4gICAgICAgICAgICAgICAgICAgICAgICBGU1Rhc2suY29weVJlY3Vyc2l2ZWx5KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldExvZ2dlcigpLndpdGhQcmVmaXgoXCJQQVRDSFwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGguam9pbihyZXNvdXJjZXNEaXJlY3RvcnksIFwicGF0Y2hcIilcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAuYXR0YWNoKGFzeW5jIGZpID0+XG4gICAgICAgICAgICAgICAgICAgIE9ic2VydmUuZmlsZXMocGF0aC5qb2luKGZpLmZvcm1Tb3VyY2VzUGF0aCwgXCJtYXBcIiksIFwiKi54bWxcIikuZG8oeCA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgRlNUYXNrLmNvcHlSZWN1cnNpdmVseShnZXRMb2dnZXIoKS53aXRoUHJlZml4KFwiTUFQXCIpLCB4LCBwYXRoLmpvaW4ocmVzb3VyY2VzRGlyZWN0b3J5LCBcIm1hcFwiKSlcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAuYXR0YWNoKGFzeW5jIGZpID0+XG4gICAgICAgICAgICAgICAgICAgIE9ic2VydmUuZmlsZXMocGF0aC5qb2luKGZpLmZvcm1Tb3VyY2VzUGF0aCwgXCJ1bm1hcFwiKSwgXCIqLnhtbFwiKS5kbyh4ID0+XG4gICAgICAgICAgICAgICAgICAgICAgICBGU1Rhc2suY29weVJlY3Vyc2l2ZWx5KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldExvZ2dlcigpLndpdGhQcmVmaXgoXCJVTk1BUFwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGguam9pbihyZXNvdXJjZXNEaXJlY3RvcnksIFwidW5tYXBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICApO1xuXG4gICAgaWYgKGRldkJ1aWxkT3B0aW9ucy53YXRjaCkge1xuICAgICAgICBjb25zdCBzdG9wT2JzZXJ2ZTEgPSBhd2FpdCBidWlsZEVuZ2luZUNoYWluLm9ic2VydmUoKTtcbiAgICAgICAgY29uc3Qgc3RvcE9ic2VydmUyID0gYXdhaXQgYnVpbGRDbGllbnRKc0NoYWluLm9ic2VydmUoKTtcbiAgICAgICAgY29uc3Qgc3RvcE9ic2VydmUzID0gYXdhaXQgc3RhdGljUmVzb3VyY2VzQ2hhaW4ub2JzZXJ2ZSgpO1xuICAgICAgICBjb25zdCBzdG9wT2JzZXJ2ZTQgPSBhd2FpdCBidWlsZEZvcm1zQ2hhaW4ub2JzZXJ2ZSgpO1xuICAgICAgICBjb25zdCBzdG9wT2JzZXJ2ZTUgPSBhd2FpdCBwaWNrTGlzdHNDaGFpbi5vYnNlcnZlKCk7XG4gICAgICAgIGNvbnN0IHN0b3BPYnNlcnZlNiA9IGF3YWl0IHJlc291cmNlc0V4dGVybmFsQ29udmVydGVyc0NoYWluLm9ic2VydmUoKTtcblxuICAgICAgICBhd2FpdCBjb250ZXh0LndhaXRGb3JFeGl0KCk7XG5cbiAgICAgICAgYXdhaXQgc3RvcE9ic2VydmUxKCk7XG4gICAgICAgIGF3YWl0IHN0b3BPYnNlcnZlMigpO1xuICAgICAgICBhd2FpdCBzdG9wT2JzZXJ2ZTMoKTtcbiAgICAgICAgYXdhaXQgc3RvcE9ic2VydmU0KCk7XG4gICAgICAgIGF3YWl0IHN0b3BPYnNlcnZlNSgpO1xuICAgICAgICBhd2FpdCBzdG9wT2JzZXJ2ZTYoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBzdGFydERhdGUgPSBEYXRlLm5vdygpO1xuICAgICAgICBhd2FpdCBQcm9taXNlLmFsbChbXG4gICAgICAgICAgICBidWlsZEVuZ2luZUNoYWluLmN1cnJlbnRWYWx1ZSxcbiAgICAgICAgICAgIGJ1aWxkQ2xpZW50SnNDaGFpbi5jdXJyZW50VmFsdWUsXG4gICAgICAgICAgICBzdGF0aWNSZXNvdXJjZXNDaGFpbi5jdXJyZW50VmFsdWUsXG4gICAgICAgICAgICByZXNvdXJjZXNFeHRlcm5hbENvbnZlcnRlcnNDaGFpbi5jdXJyZW50VmFsdWUsXG4gICAgICAgICAgICAoYXN5bmMgKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IHBpY2tMaXN0c0NoYWluLmN1cnJlbnRWYWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgYnVpbGRGb3Jtc0NoYWluLmN1cnJlbnRWYWx1ZTtcbiAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChvcHRpb25zLmNvbnRpbnVlT25FcnJvcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC5sb2dnZXIuZXJyb3IoZSk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSkoKSxcbiAgICAgICAgXSk7XG4gICAgICAgIGNvbnN0IHRvdGFsVGltZSA9IERhdGUubm93KCkgLSBzdGFydERhdGU7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gICAgICAgIGNvbnNvbGUubG9nKGAke2NoYWxrLmdyZWVuQnJpZ2h0KFwiQnVpbGQgc3VjY2Vzc1wiKX0gVG90YWwgdGltZTogJHtwcmludFRpbWUodG90YWxUaW1lKX1gKTtcbiAgICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQSxJQUFBQSxLQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFFQSxJQUFBQyxNQUFBLEdBQUFGLHNCQUFBLENBQUFDLE9BQUE7QUFFQSxJQUFBRSxrQkFBQSxHQUFBRixPQUFBO0FBQ0EsSUFBQUcscUJBQUEsR0FBQUgsT0FBQTtBQUNBLElBQUFJLHFCQUFBLEdBQUFKLE9BQUE7QUFDQSxJQUFBSyxZQUFBLEdBQUFMLE9BQUE7QUFDQSxJQUFBTSxhQUFBLEdBQUFOLE9BQUE7QUFDQSxJQUFBTyw2QkFBQSxHQUFBUCxPQUFBO0FBQ0EsSUFBQVEsT0FBQSxHQUFBUixPQUFBO0FBQ0EsSUFBQVMscUJBQUEsR0FBQVQsT0FBQTtBQUNBLElBQUFVLHNCQUFBLEdBQUFWLE9BQUE7QUFDQSxJQUFBVyxnQkFBQSxHQUFBWCxPQUFBO0FBQ0EsSUFBQVksY0FBQSxHQUFBWixPQUFBO0FBRUEsSUFBQWEsZUFBQSxHQUFBYixPQUFBO0FBQ0EsSUFBQWMsYUFBQSxHQUFBZCxPQUFBO0FBQ0EsSUFBQWUsUUFBQSxHQUFBZixPQUFBO0FBQ0EsSUFBQWdCLFlBQUEsR0FBQWhCLE9BQUE7QUFDQSxJQUFBaUIseUJBQUEsR0FBQWpCLE9BQUE7QUFHQSxJQUFBa0IscUJBQUEsR0FBQWxCLE9BQUE7QUFDQSxJQUFB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
@@ -108,7 +108,7 @@ class FormGlobs {
108
108
  const gfvRegexp = new RegExp("^" + formGlob.replace(":with-ui-tests", "").replace(":with-ci-build", "").replace(/\*/gi, "\\d*").replace(/\?/gi, "\\d") + "$");
109
109
  if (gfvRegexp.test(gfv)) {
110
110
  if (formGlob.includes(":with-ui-tests")) {
111
- if (!(await (0, _fsExtra.pathExists)(_path.default.join(formPath, "tests")))) {
111
+ if (!(await (0, _fsExtra.pathExists)(_path.default.join(formPath, "test")))) {
112
112
  return false;
113
113
  }
114
114
  }
@@ -134,4 +134,4 @@ class FormGlobs {
134
134
  }
135
135
  }
136
136
  exports.FormGlobs = FormGlobs;
137
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcGF0aCIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX2ZzRXh0cmEiLCJfUmVzb2x2ZUZvcm1JbmZvIiwiX0Zvcm1QYXRoVXRpbHMiLCJfV2VsbEtub3duRGlyZWN0b3JpZXMiLCJfRnNVdGlscyIsIl9TdGF0aWNMb2dnZXIiLCJGb3JtR2xvYnMiLCJlbnVtZXJhdGVGb3Jtc0luUmVwb3NpdG9yeSIsInJlcG9zaXRvcnlSb290cyIsInJlc3VsdCIsInJlcG9zaXRvcnlSb290IiwiZm9ybUpzb25QYXRoIiwiZ2xvYkFzeW5jIiwiV2VsbEtub3duRGlyZWN0b3JpZXMiLCJGb3JtSnNvbkZpbGVOYW1lIiwiY3dkIiwiZm9ybVBhdGgiLCJwYXRoIiwiZGlybmFtZSIsImdmdiIsImV4dHJhY3RHZnZGcm9tRm9ybVBhdGgiLCJwdXNoIiwiam9pbiIsImZvcm1SZWxhdGl2ZVBhdGgiLCJUZXN0RmFybURpciIsIkNhbmR5U3ViZGlyZWN0b3J5TmFtZSIsImVuc3VyZUVhY2hHbG9iUmVzb2x2ZXNJbnRvRXhpc3RpbmdGb3JtIiwiZm9ybUdsb2JzIiwiZmFybURpcmVjdG9yeSIsImZvcm1HbG9iIiwicmVzb2x2ZWRHZnZzIiwicmVzb2x2ZUdmdkdsb2JzIiwibGVuZ3RoIiwiRXJyb3IiLCJNYXAiLCJub3JtYWxpemUiLCJpc0Zvcm1NYXRjaFRvR2xvYiIsInNldCIsImVudHJpZXMiLCJtYXAiLCJyZXNvbHZlU3BlY2lmaWVycyIsImZvcm1HbG9ic1dpdGhTcGVjaWZpZXJzIiwicmVzdWx0cyIsIlByb21pc2UiLCJhbGwiLCJ4IiwicmVzb2x2ZU9ubHlGb3JtR2xvYlNwZWNpZmllcnMiLCJmbGF0IiwiZ2Z2UmVnZXhwIiwiUmVnRXhwIiwicmVwbGFjZSIsInRlc3QiLCJpbmNsdWRlcyIsInBhdGhFeGlzdHMiLCJmb3JtQ29uZmlnIiwicmVhZEZvcm1Db25maWciLCJOdWxsTG9nZ2VyIiwiYnVpbGQiLCJlbmRzV2l0aCIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvQ29tbW9ucy9Gb3JtR2xvYnNVdGlscy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgcGF0aCBmcm9tIFwicGF0aFwiO1xuXG5pbXBvcnQgeyBwYXRoRXhpc3RzIH0gZnJvbSBcImZzLWV4dHJhXCI7XG5pbXBvcnQgXyBmcm9tIFwibG9kYXNoXCI7XG5cbmltcG9ydCB7IHJlYWRGb3JtQ29uZmlnIH0gZnJvbSBcIi4uL0J1aWxkVGFza3MvUmVzb2x2ZUZvcm1JbmZvXCI7XG5pbXBvcnQgeyBleHRyYWN0R2Z2RnJvbUZvcm1QYXRoIH0gZnJvbSBcIi4uLy4uLy4uL0NvbW1vbi9Gb3JtUGF0aFV0aWxzXCI7XG5pbXBvcnQgeyBXZWxsS25vd25EaXJlY3RvcmllcyB9IGZyb20gXCIuLi8uLi8uLi9Db21tb24vV2VsbEtub3duRGlyZWN0b3JpZXNcIjtcblxuaW1wb3J0IHsgZ2xvYkFzeW5jIH0gZnJvbSBcIi4vRnNVdGlsc1wiO1xuaW1wb3J0IHsgTnVsbExvZ2dlciB9IGZyb20gXCIuL0xvZ2dpbmcvU3RhdGljTG9nZ2VyXCI7XG5pbXBvcnQgeyBGb3JtTG9jYXRpb25JbmZvIH0gZnJvbSBcIi4vRm9ybUxvY2F0aW9uSW5mb1wiO1xuXG5leHBvcnQgY2xhc3MgRm9ybUdsb2JzIHtcbiAgICBwdWJsaWMgc3RhdGljIGFzeW5jIGVudW1lcmF0ZUZvcm1zSW5SZXBvc2l0b3J5KFxuICAgICAgICAuLi5yZXBvc2l0b3J5Um9vdHM6IHN0cmluZ1tdXG4gICAgKTogUHJvbWlzZTxBcnJheTx7IGdmdjogc3RyaW5nOyBmb3JtUGF0aDogc3RyaW5nOyBmb3JtUmVsYXRpdmVQYXRoOiBzdHJpbmcgfT4+IHtcbiAgICAgICAgY29uc3QgcmVzdWx0OiBBcnJheTx7IGdmdjogc3RyaW5nOyBmb3JtUGF0aDogc3RyaW5nOyBmb3JtUmVsYXRpdmVQYXRoOiBzdHJpbmcgfT4gPSBbXTtcblxuICAgICAgICBmb3IgKGNvbnN0IHJlcG9zaXRvcnlSb290IG9mIHJlcG9zaXRvcnlSb290cykge1xuICAgICAgICAgICAgZm9yIChjb25zdCBmb3JtSnNvblBhdGggb2YgYXdhaXQgZ2xvYkFzeW5jKGBjYW5keS5mYXJtL2Zvcm1zLyovJHtXZWxsS25vd25EaXJlY3Rvcmllcy5Gb3JtSnNvbkZpbGVOYW1lfWAsIHtcbiAgICAgICAgICAgICAgICBjd2Q6IHJlcG9zaXRvcnlSb290LFxuICAgICAgICAgICAgfSkpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBmb3JtUGF0aCA9IHBhdGguZGlybmFtZShmb3JtSnNvblBhdGgpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGdmdiA9IGV4dHJhY3RHZnZGcm9tRm9ybVBhdGgoZm9ybVBhdGgpO1xuICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgZ2Z2OiBnZnYsXG4gICAgICAgICAgICAgICAgICAgIGZvcm1QYXRoOiBwYXRoLmpvaW4ocmVwb3NpdG9yeVJvb3QsIGZvcm1QYXRoKSxcbiAgICAgICAgICAgICAgICAgICAgZm9ybVJlbGF0aXZlUGF0aDogZm9ybVBhdGgsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGZvcm1Kc29uUGF0aCBvZiBhd2FpdCBnbG9iQXN5bmMoXG4gICAgICAgICAgICAgICAgYCR7V2VsbEtub3duRGlyZWN0b3JpZXMuVGVzdEZhcm1EaXJ9L2Zvcm1zLyovJHtXZWxsS25vd25EaXJlY3Rvcmllcy5Gb3JtSnNvbkZpbGVOYW1lfWAsXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBjd2Q6IHJlcG9zaXRvcnlSb290LFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICkpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBmb3JtUGF0aCA9IHBhdGguZGlybmFtZShmb3JtSnNvblBhdGgpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGdmdiA9IGV4dHJhY3RHZnZGcm9tRm9ybVBhdGgoZm9ybVBhdGgpO1xuICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgZ2Z2OiBnZnYsXG4gICAgICAgICAgICAgICAgICAgIGZvcm1QYXRoOiBwYXRoLmpvaW4ocmVwb3NpdG9yeVJvb3QsIGZvcm1QYXRoKSxcbiAgICAgICAgICAgICAgICAgICAgZm9ybVJlbGF0aXZlUGF0aDogZm9ybVBhdGgsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGZvcm1Kc29uUGF0aCBvZiBhd2FpdCBnbG9iQXN5bmMoXG4gICAgICAgICAgICAgICAgYGNhbmR5LnJwbi5mYXJtL2Zvcm1zLyovJHtXZWxsS25vd25EaXJlY3Rvcmllcy5Gb3JtSnNvbkZpbGVOYW1lfWAsXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBjd2Q6IHJlcG9zaXRvcnlSb290LFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICkpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBmb3JtUGF0aCA9IHBhdGguZGlybmFtZShmb3JtSnNvblBhdGgpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGdmdiA9IGV4dHJhY3RHZnZGcm9tRm9ybVBhdGgoZm9ybVBhdGgpO1xuICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgZ2Z2OiBnZnYsXG4gICAgICAgICAgICAgICAgICAgIGZvcm1QYXRoOiBwYXRoLmpvaW4ocmVwb3NpdG9yeVJvb3QsIGZvcm1QYXRoKSxcbiAgICAgICAgICAgICAgICAgICAgZm9ybVJlbGF0aXZlUGF0aDogZm9ybVBhdGgsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGZvcm1Kc29uUGF0aCBvZiBhd2FpdCBnbG9iQXN5bmMoXG4gICAgICAgICAgICAgICAgYGNhbmR5LmRpYWRvYy5mYXJtL2Zvcm1zLyovJHtXZWxsS25vd25EaXJlY3Rvcmllcy5Gb3JtSnNvbkZpbGVOYW1lfWAsXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBjd2Q6IHJlcG9zaXRvcnlSb290LFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICkpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBmb3JtUGF0aCA9IHBhdGguZGlybmFtZShmb3JtSnNvblBhdGgpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGdmdiA9IGV4dHJhY3RHZnZGcm9tRm9ybVBhdGgoZm9ybVBhdGgpO1xuICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgZ2Z2OiBnZnYsXG4gICAgICAgICAgICAgICAgICAgIGZvcm1QYXRoOiBwYXRoLmpvaW4ocmVwb3NpdG9yeVJvb3QsIGZvcm1QYXRoKSxcbiAgICAgICAgICAgICAgICAgICAgZm9ybVJlbGF0aXZlUGF0aDogZm9ybVBhdGgsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGZvcm1Kc29uUGF0aCBvZiBhd2FpdCBnbG9iQXN5bmMoXG4gICAgICAgICAgICAgICAgYCoqLyR7V2VsbEtub3duRGlyZWN0b3JpZXMuQ2FuZHlTdWJkaXJlY3RvcnlOYW1lfS8ke1dlbGxLbm93bkRpcmVjdG9yaWVzLkZvcm1Kc29uRmlsZU5hbWV9YCxcbiAgICAgICAgICAgICAgICB7IGN3ZDogcGF0aC5qb2luKHJlcG9zaXRvcnlSb290LCBcImZvcm1zXCIpIH1cbiAgICAgICAgICAgICkpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBmb3JtUGF0aCA9IHBhdGguZGlybmFtZShmb3JtSnNvblBhdGgpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGdmdiA9IGV4dHJhY3RHZnZGcm9tRm9ybVBhdGgoZm9ybVBhdGgpO1xuICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgZ2Z2OiBnZnYsXG4gICAgICAgICAgICAgICAgICAgIGZvcm1QYXRoOiBwYXRoLmpvaW4ocmVwb3NpdG9yeVJvb3QsIFwiZm9ybXNcIiwgZm9ybVBhdGgpLFxuICAgICAgICAgICAgICAgICAgICBmb3JtUmVsYXRpdmVQYXRoOiBmb3JtUGF0aCxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgYXN5bmMgZW5zdXJlRWFjaEdsb2JSZXNvbHZlc0ludG9FeGlzdGluZ0Zvcm0oXG4gICAgICAgIGZvcm1HbG9iczogc3RyaW5nW10sXG4gICAgICAgIGZhcm1EaXJlY3Rvcnk6IHN0cmluZ1xuICAgICk6IFByb21pc2U8c3RyaW5nW10+IHtcbiAgICAgICAgZm9yIChjb25zdCBmb3JtR2xvYiBvZiBmb3JtR2xvYnMpIHtcbiAgICAgICAgICAgIGNvbnN0IHJlc29sdmVkR2Z2cyA9IGF3YWl0IHRoaXMucmVzb2x2ZUdmdkdsb2JzKFtmb3JtR2xvYl0sIGZhcm1EaXJlY3RvcnkpO1xuICAgICAgICAgICAgaWYgKHJlc29sdmVkR2Z2cy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYNCk0L7RgNC8INGB0L7QvtGC0LLQtdGC0YHRgtCy0YPRjtGJ0LjRhSAke2Zvcm1HbG9ifSDQvdC1INC90LDQudC00LXQvdC+LmApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmb3JtR2xvYnM7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBhc3luYyByZXNvbHZlR2Z2R2xvYnMoZm9ybUdsb2JzOiBzdHJpbmdbXSwgZmFybURpcmVjdG9yeTogc3RyaW5nKTogUHJvbWlzZTxGb3JtTG9jYXRpb25JbmZvW10+IHtcbiAgICAgICAgY29uc3QgcmVzdWx0OiBNYXA8c3RyaW5nLCBzdHJpbmc+ID0gbmV3IE1hcCgpO1xuXG4gICAgICAgIGZvciAoY29uc3QgeyBnZnYsIGZvcm1QYXRoIH0gb2YgYXdhaXQgRm9ybUdsb2JzLmVudW1lcmF0ZUZvcm1zSW5SZXBvc2l0b3J5KFxuICAgICAgICAgICAgcGF0aC5ub3JtYWxpemUocGF0aC5qb2luKGZhcm1EaXJlY3RvcnksIFwiLi5cIikpXG4gICAgICAgICkpIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgZm9ybUdsb2Igb2YgZm9ybUdsb2JzKSB7XG4gICAgICAgICAgICAgICAgaWYgKGF3YWl0IEZvcm1HbG9icy5pc0Zvcm1NYXRjaFRvR2xvYihmb3JtR2xvYiwgZ2Z2LCBmb3JtUGF0aCkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnNldChnZnYsIGZvcm1QYXRoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gWy4uLnJlc3VsdC5lbnRyaWVzKCldLm1hcCgoW2dmdiwgZm9ybVBhdGhdKSA9PiAoeyBnZnY6IGdmdiwgZm9ybVBhdGg6IGZvcm1QYXRoIH0pKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGFzeW5jIHJlc29sdmVTcGVjaWZpZXJzKGZvcm1HbG9ic1dpdGhTcGVjaWZpZXJzOiBzdHJpbmdbXSwgZmFybURpcmVjdG9yeTogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmdbXT4ge1xuICAgICAgICBjb25zdCByZXN1bHRzID0gYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICAgICAgICBmb3JtR2xvYnNXaXRoU3BlY2lmaWVycy5tYXAoeCA9PiB0aGlzLnJlc29sdmVPbmx5Rm9ybUdsb2JTcGVjaWZpZXJzKHgsIGZhcm1EaXJlY3RvcnkpKVxuICAgICAgICApO1xuICAgICAgICByZXR1cm4gcmVzdWx0cy5mbGF0KCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzdGF0aWMgYXN5bmMgaXNGb3JtTWF0Y2hUb0dsb2IoZm9ybUdsb2I6IHN0cmluZywgZ2Z2OiBzdHJpbmcsIGZvcm1QYXRoOiBzdHJpbmcpIHtcbiAgICAgICAgY29uc3QgZ2Z2UmVnZXhwID0gbmV3IFJlZ0V4cChcbiAgICAgICAgICAgIFwiXlwiICtcbiAgICAgICAgICAgICAgICBmb3JtR2xvYlxuICAgICAgICAgICAgICAgICAgICAucmVwbGFjZShcIjp3aXRoLXVpLXRlc3RzXCIsIFwiXCIpXG4gICAgICAgICAgICAgICAgICAgIC5yZXBsYWNlKFwiOndpdGgtY2ktYnVpbGRcIiwgXCJcIilcbiAgICAgICAgICAgICAgICAgICAgLnJlcGxhY2UoL1xcKi9naSwgXCJcXFxcZCpcIilcbiAgICAgICAgICAgICAgICAgICAgLnJlcGxhY2UoL1xcPy9naSwgXCJcXFxcZFwiKSArXG4gICAgICAgICAgICAgICAgXCIkXCJcbiAgICAgICAgKTtcbiAgICAgICAgaWYgKGdmdlJlZ2V4cC50ZXN0KGdmdikpIHtcbiAgICAgICAgICAgIGlmIChmb3JtR2xvYi5pbmNsdWRlcyhcIjp3aXRoLXVpLXRlc3RzXCIpKSB7XG4gICAgICAgICAgICAgICAgaWYgKCEoYXdhaXQgcGF0aEV4aXN0cyhwYXRoLmpvaW4oZm9ybVBhdGgsIFwidGVzdHNcIikpKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGZvcm1HbG9iLmluY2x1ZGVzKFwiOndpdGgtY2ktYnVpbGRcIikpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBmb3JtSnNvblBhdGggPSBwYXRoLmpvaW4oZm9ybVBhdGgsIFdlbGxLbm93bkRpcmVjdG9yaWVzLkZvcm1Kc29uRmlsZU5hbWUpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGZvcm1Db25maWcgPSBhd2FpdCByZWFkRm9ybUNvbmZpZyhmb3JtSnNvblBhdGgsIG5ldyBOdWxsTG9nZ2VyKCkpO1xuICAgICAgICAgICAgICAgIGlmIChmb3JtQ29uZmlnLmJ1aWxkICE9PSBcImNpXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHN0YXRpYyBhc3luYyByZXNvbHZlT25seUZvcm1HbG9iU3BlY2lmaWVycyhmb3JtR2xvYjogc3RyaW5nLCBmYXJtRGlyZWN0b3J5OiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZ1tdPiB7XG4gICAgICAgIGlmIChmb3JtR2xvYi5lbmRzV2l0aChcIjp3aXRoLXVpLXRlc3RzXCIpKSB7XG4gICAgICAgICAgICByZXR1cm4gKGF3YWl0IHRoaXMucmVzb2x2ZUdmdkdsb2JzKFtmb3JtR2xvYl0sIGZhcm1EaXJlY3RvcnkpKS5tYXAoeCA9PiB4Lmdmdik7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGZvcm1HbG9iLmVuZHNXaXRoKFwiOndpdGgtY2ktYnVpbGRcIikpIHtcbiAgICAgICAgICAgIHJldHVybiAoYXdhaXQgdGhpcy5yZXNvbHZlR2Z2R2xvYnMoW2Zvcm1HbG9iXSwgZmFybURpcmVjdG9yeSkpLm1hcCh4ID0+IHguZ2Z2KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gW2Zvcm1HbG9iXTtcbiAgICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQSxJQUFBQSxLQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFFQSxJQUFBQyxRQUFBLEdBQUFELE9BQUE7QUFHQSxJQUFBRSxnQkFBQSxHQUFBRixPQUFBO0FBQ0EsSUFBQUcsY0FBQSxHQUFBSCxPQUFBO0FBQ0EsSUFBQUkscUJBQUEsR0FBQUosT0FBQTtBQUVBLElBQUFLLFFBQUEsR0FBQUwsT0FBQTtBQUNBLElBQUFNLGFBQUEsR0FBQU4sT0FBQTtBQUdPLE1BQU1PLFNBQVMsQ0FBQztFQUNuQixhQUFvQkMsMEJBQTBCQSxDQUMxQyxHQUFHQyxlQUF5QixFQUMrQztJQUMz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
137
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcGF0aCIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX2ZzRXh0cmEiLCJfUmVzb2x2ZUZvcm1JbmZvIiwiX0Zvcm1QYXRoVXRpbHMiLCJfV2VsbEtub3duRGlyZWN0b3JpZXMiLCJfRnNVdGlscyIsIl9TdGF0aWNMb2dnZXIiLCJGb3JtR2xvYnMiLCJlbnVtZXJhdGVGb3Jtc0luUmVwb3NpdG9yeSIsInJlcG9zaXRvcnlSb290cyIsInJlc3VsdCIsInJlcG9zaXRvcnlSb290IiwiZm9ybUpzb25QYXRoIiwiZ2xvYkFzeW5jIiwiV2VsbEtub3duRGlyZWN0b3JpZXMiLCJGb3JtSnNvbkZpbGVOYW1lIiwiY3dkIiwiZm9ybVBhdGgiLCJwYXRoIiwiZGlybmFtZSIsImdmdiIsImV4dHJhY3RHZnZGcm9tRm9ybVBhdGgiLCJwdXNoIiwiam9pbiIsImZvcm1SZWxhdGl2ZVBhdGgiLCJUZXN0RmFybURpciIsIkNhbmR5U3ViZGlyZWN0b3J5TmFtZSIsImVuc3VyZUVhY2hHbG9iUmVzb2x2ZXNJbnRvRXhpc3RpbmdGb3JtIiwiZm9ybUdsb2JzIiwiZmFybURpcmVjdG9yeSIsImZvcm1HbG9iIiwicmVzb2x2ZWRHZnZzIiwicmVzb2x2ZUdmdkdsb2JzIiwibGVuZ3RoIiwiRXJyb3IiLCJNYXAiLCJub3JtYWxpemUiLCJpc0Zvcm1NYXRjaFRvR2xvYiIsInNldCIsImVudHJpZXMiLCJtYXAiLCJyZXNvbHZlU3BlY2lmaWVycyIsImZvcm1HbG9ic1dpdGhTcGVjaWZpZXJzIiwicmVzdWx0cyIsIlByb21pc2UiLCJhbGwiLCJ4IiwicmVzb2x2ZU9ubHlGb3JtR2xvYlNwZWNpZmllcnMiLCJmbGF0IiwiZ2Z2UmVnZXhwIiwiUmVnRXhwIiwicmVwbGFjZSIsInRlc3QiLCJpbmNsdWRlcyIsInBhdGhFeGlzdHMiLCJmb3JtQ29uZmlnIiwicmVhZEZvcm1Db25maWciLCJOdWxsTG9nZ2VyIiwiYnVpbGQiLCJlbmRzV2l0aCIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvQ29tbW9ucy9Gb3JtR2xvYnNVdGlscy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgcGF0aCBmcm9tIFwicGF0aFwiO1xuXG5pbXBvcnQgeyBwYXRoRXhpc3RzIH0gZnJvbSBcImZzLWV4dHJhXCI7XG5pbXBvcnQgXyBmcm9tIFwibG9kYXNoXCI7XG5cbmltcG9ydCB7IHJlYWRGb3JtQ29uZmlnIH0gZnJvbSBcIi4uL0J1aWxkVGFza3MvUmVzb2x2ZUZvcm1JbmZvXCI7XG5pbXBvcnQgeyBleHRyYWN0R2Z2RnJvbUZvcm1QYXRoIH0gZnJvbSBcIi4uLy4uLy4uL0NvbW1vbi9Gb3JtUGF0aFV0aWxzXCI7XG5pbXBvcnQgeyBXZWxsS25vd25EaXJlY3RvcmllcyB9IGZyb20gXCIuLi8uLi8uLi9Db21tb24vV2VsbEtub3duRGlyZWN0b3JpZXNcIjtcblxuaW1wb3J0IHsgZ2xvYkFzeW5jIH0gZnJvbSBcIi4vRnNVdGlsc1wiO1xuaW1wb3J0IHsgTnVsbExvZ2dlciB9IGZyb20gXCIuL0xvZ2dpbmcvU3RhdGljTG9nZ2VyXCI7XG5pbXBvcnQgeyBGb3JtTG9jYXRpb25JbmZvIH0gZnJvbSBcIi4vRm9ybUxvY2F0aW9uSW5mb1wiO1xuXG5leHBvcnQgY2xhc3MgRm9ybUdsb2JzIHtcbiAgICBwdWJsaWMgc3RhdGljIGFzeW5jIGVudW1lcmF0ZUZvcm1zSW5SZXBvc2l0b3J5KFxuICAgICAgICAuLi5yZXBvc2l0b3J5Um9vdHM6IHN0cmluZ1tdXG4gICAgKTogUHJvbWlzZTxBcnJheTx7IGdmdjogc3RyaW5nOyBmb3JtUGF0aDogc3RyaW5nOyBmb3JtUmVsYXRpdmVQYXRoOiBzdHJpbmcgfT4+IHtcbiAgICAgICAgY29uc3QgcmVzdWx0OiBBcnJheTx7IGdmdjogc3RyaW5nOyBmb3JtUGF0aDogc3RyaW5nOyBmb3JtUmVsYXRpdmVQYXRoOiBzdHJpbmcgfT4gPSBbXTtcblxuICAgICAgICBmb3IgKGNvbnN0IHJlcG9zaXRvcnlSb290IG9mIHJlcG9zaXRvcnlSb290cykge1xuICAgICAgICAgICAgZm9yIChjb25zdCBmb3JtSnNvblBhdGggb2YgYXdhaXQgZ2xvYkFzeW5jKGBjYW5keS5mYXJtL2Zvcm1zLyovJHtXZWxsS25vd25EaXJlY3Rvcmllcy5Gb3JtSnNvbkZpbGVOYW1lfWAsIHtcbiAgICAgICAgICAgICAgICBjd2Q6IHJlcG9zaXRvcnlSb290LFxuICAgICAgICAgICAgfSkpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBmb3JtUGF0aCA9IHBhdGguZGlybmFtZShmb3JtSnNvblBhdGgpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGdmdiA9IGV4dHJhY3RHZnZGcm9tRm9ybVBhdGgoZm9ybVBhdGgpO1xuICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgZ2Z2OiBnZnYsXG4gICAgICAgICAgICAgICAgICAgIGZvcm1QYXRoOiBwYXRoLmpvaW4ocmVwb3NpdG9yeVJvb3QsIGZvcm1QYXRoKSxcbiAgICAgICAgICAgICAgICAgICAgZm9ybVJlbGF0aXZlUGF0aDogZm9ybVBhdGgsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGZvcm1Kc29uUGF0aCBvZiBhd2FpdCBnbG9iQXN5bmMoXG4gICAgICAgICAgICAgICAgYCR7V2VsbEtub3duRGlyZWN0b3JpZXMuVGVzdEZhcm1EaXJ9L2Zvcm1zLyovJHtXZWxsS25vd25EaXJlY3Rvcmllcy5Gb3JtSnNvbkZpbGVOYW1lfWAsXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBjd2Q6IHJlcG9zaXRvcnlSb290LFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICkpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBmb3JtUGF0aCA9IHBhdGguZGlybmFtZShmb3JtSnNvblBhdGgpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGdmdiA9IGV4dHJhY3RHZnZGcm9tRm9ybVBhdGgoZm9ybVBhdGgpO1xuICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgZ2Z2OiBnZnYsXG4gICAgICAgICAgICAgICAgICAgIGZvcm1QYXRoOiBwYXRoLmpvaW4ocmVwb3NpdG9yeVJvb3QsIGZvcm1QYXRoKSxcbiAgICAgICAgICAgICAgICAgICAgZm9ybVJlbGF0aXZlUGF0aDogZm9ybVBhdGgsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGZvcm1Kc29uUGF0aCBvZiBhd2FpdCBnbG9iQXN5bmMoXG4gICAgICAgICAgICAgICAgYGNhbmR5LnJwbi5mYXJtL2Zvcm1zLyovJHtXZWxsS25vd25EaXJlY3Rvcmllcy5Gb3JtSnNvbkZpbGVOYW1lfWAsXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBjd2Q6IHJlcG9zaXRvcnlSb290LFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICkpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBmb3JtUGF0aCA9IHBhdGguZGlybmFtZShmb3JtSnNvblBhdGgpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGdmdiA9IGV4dHJhY3RHZnZGcm9tRm9ybVBhdGgoZm9ybVBhdGgpO1xuICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgZ2Z2OiBnZnYsXG4gICAgICAgICAgICAgICAgICAgIGZvcm1QYXRoOiBwYXRoLmpvaW4ocmVwb3NpdG9yeVJvb3QsIGZvcm1QYXRoKSxcbiAgICAgICAgICAgICAgICAgICAgZm9ybVJlbGF0aXZlUGF0aDogZm9ybVBhdGgsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGZvcm1Kc29uUGF0aCBvZiBhd2FpdCBnbG9iQXN5bmMoXG4gICAgICAgICAgICAgICAgYGNhbmR5LmRpYWRvYy5mYXJtL2Zvcm1zLyovJHtXZWxsS25vd25EaXJlY3Rvcmllcy5Gb3JtSnNvbkZpbGVOYW1lfWAsXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBjd2Q6IHJlcG9zaXRvcnlSb290LFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICkpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBmb3JtUGF0aCA9IHBhdGguZGlybmFtZShmb3JtSnNvblBhdGgpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGdmdiA9IGV4dHJhY3RHZnZGcm9tRm9ybVBhdGgoZm9ybVBhdGgpO1xuICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgZ2Z2OiBnZnYsXG4gICAgICAgICAgICAgICAgICAgIGZvcm1QYXRoOiBwYXRoLmpvaW4ocmVwb3NpdG9yeVJvb3QsIGZvcm1QYXRoKSxcbiAgICAgICAgICAgICAgICAgICAgZm9ybVJlbGF0aXZlUGF0aDogZm9ybVBhdGgsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGZvcm1Kc29uUGF0aCBvZiBhd2FpdCBnbG9iQXN5bmMoXG4gICAgICAgICAgICAgICAgYCoqLyR7V2VsbEtub3duRGlyZWN0b3JpZXMuQ2FuZHlTdWJkaXJlY3RvcnlOYW1lfS8ke1dlbGxLbm93bkRpcmVjdG9yaWVzLkZvcm1Kc29uRmlsZU5hbWV9YCxcbiAgICAgICAgICAgICAgICB7IGN3ZDogcGF0aC5qb2luKHJlcG9zaXRvcnlSb290LCBcImZvcm1zXCIpIH1cbiAgICAgICAgICAgICkpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBmb3JtUGF0aCA9IHBhdGguZGlybmFtZShmb3JtSnNvblBhdGgpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGdmdiA9IGV4dHJhY3RHZnZGcm9tRm9ybVBhdGgoZm9ybVBhdGgpO1xuICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgZ2Z2OiBnZnYsXG4gICAgICAgICAgICAgICAgICAgIGZvcm1QYXRoOiBwYXRoLmpvaW4ocmVwb3NpdG9yeVJvb3QsIFwiZm9ybXNcIiwgZm9ybVBhdGgpLFxuICAgICAgICAgICAgICAgICAgICBmb3JtUmVsYXRpdmVQYXRoOiBmb3JtUGF0aCxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgYXN5bmMgZW5zdXJlRWFjaEdsb2JSZXNvbHZlc0ludG9FeGlzdGluZ0Zvcm0oXG4gICAgICAgIGZvcm1HbG9iczogc3RyaW5nW10sXG4gICAgICAgIGZhcm1EaXJlY3Rvcnk6IHN0cmluZ1xuICAgICk6IFByb21pc2U8c3RyaW5nW10+IHtcbiAgICAgICAgZm9yIChjb25zdCBmb3JtR2xvYiBvZiBmb3JtR2xvYnMpIHtcbiAgICAgICAgICAgIGNvbnN0IHJlc29sdmVkR2Z2cyA9IGF3YWl0IHRoaXMucmVzb2x2ZUdmdkdsb2JzKFtmb3JtR2xvYl0sIGZhcm1EaXJlY3RvcnkpO1xuICAgICAgICAgICAgaWYgKHJlc29sdmVkR2Z2cy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYNCk0L7RgNC8INGB0L7QvtGC0LLQtdGC0YHRgtCy0YPRjtGJ0LjRhSAke2Zvcm1HbG9ifSDQvdC1INC90LDQudC00LXQvdC+LmApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmb3JtR2xvYnM7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBhc3luYyByZXNvbHZlR2Z2R2xvYnMoZm9ybUdsb2JzOiBzdHJpbmdbXSwgZmFybURpcmVjdG9yeTogc3RyaW5nKTogUHJvbWlzZTxGb3JtTG9jYXRpb25JbmZvW10+IHtcbiAgICAgICAgY29uc3QgcmVzdWx0OiBNYXA8c3RyaW5nLCBzdHJpbmc+ID0gbmV3IE1hcCgpO1xuXG4gICAgICAgIGZvciAoY29uc3QgeyBnZnYsIGZvcm1QYXRoIH0gb2YgYXdhaXQgRm9ybUdsb2JzLmVudW1lcmF0ZUZvcm1zSW5SZXBvc2l0b3J5KFxuICAgICAgICAgICAgcGF0aC5ub3JtYWxpemUocGF0aC5qb2luKGZhcm1EaXJlY3RvcnksIFwiLi5cIikpXG4gICAgICAgICkpIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgZm9ybUdsb2Igb2YgZm9ybUdsb2JzKSB7XG4gICAgICAgICAgICAgICAgaWYgKGF3YWl0IEZvcm1HbG9icy5pc0Zvcm1NYXRjaFRvR2xvYihmb3JtR2xvYiwgZ2Z2LCBmb3JtUGF0aCkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnNldChnZnYsIGZvcm1QYXRoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gWy4uLnJlc3VsdC5lbnRyaWVzKCldLm1hcCgoW2dmdiwgZm9ybVBhdGhdKSA9PiAoeyBnZnY6IGdmdiwgZm9ybVBhdGg6IGZvcm1QYXRoIH0pKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGFzeW5jIHJlc29sdmVTcGVjaWZpZXJzKGZvcm1HbG9ic1dpdGhTcGVjaWZpZXJzOiBzdHJpbmdbXSwgZmFybURpcmVjdG9yeTogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmdbXT4ge1xuICAgICAgICBjb25zdCByZXN1bHRzID0gYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICAgICAgICBmb3JtR2xvYnNXaXRoU3BlY2lmaWVycy5tYXAoeCA9PiB0aGlzLnJlc29sdmVPbmx5Rm9ybUdsb2JTcGVjaWZpZXJzKHgsIGZhcm1EaXJlY3RvcnkpKVxuICAgICAgICApO1xuICAgICAgICByZXR1cm4gcmVzdWx0cy5mbGF0KCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzdGF0aWMgYXN5bmMgaXNGb3JtTWF0Y2hUb0dsb2IoZm9ybUdsb2I6IHN0cmluZywgZ2Z2OiBzdHJpbmcsIGZvcm1QYXRoOiBzdHJpbmcpIHtcbiAgICAgICAgY29uc3QgZ2Z2UmVnZXhwID0gbmV3IFJlZ0V4cChcbiAgICAgICAgICAgIFwiXlwiICtcbiAgICAgICAgICAgICAgICBmb3JtR2xvYlxuICAgICAgICAgICAgICAgICAgICAucmVwbGFjZShcIjp3aXRoLXVpLXRlc3RzXCIsIFwiXCIpXG4gICAgICAgICAgICAgICAgICAgIC5yZXBsYWNlKFwiOndpdGgtY2ktYnVpbGRcIiwgXCJcIilcbiAgICAgICAgICAgICAgICAgICAgLnJlcGxhY2UoL1xcKi9naSwgXCJcXFxcZCpcIilcbiAgICAgICAgICAgICAgICAgICAgLnJlcGxhY2UoL1xcPy9naSwgXCJcXFxcZFwiKSArXG4gICAgICAgICAgICAgICAgXCIkXCJcbiAgICAgICAgKTtcbiAgICAgICAgaWYgKGdmdlJlZ2V4cC50ZXN0KGdmdikpIHtcbiAgICAgICAgICAgIGlmIChmb3JtR2xvYi5pbmNsdWRlcyhcIjp3aXRoLXVpLXRlc3RzXCIpKSB7XG4gICAgICAgICAgICAgICAgaWYgKCEoYXdhaXQgcGF0aEV4aXN0cyhwYXRoLmpvaW4oZm9ybVBhdGgsIFwidGVzdFwiKSkpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoZm9ybUdsb2IuaW5jbHVkZXMoXCI6d2l0aC1jaS1idWlsZFwiKSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGZvcm1Kc29uUGF0aCA9IHBhdGguam9pbihmb3JtUGF0aCwgV2VsbEtub3duRGlyZWN0b3JpZXMuRm9ybUpzb25GaWxlTmFtZSk7XG4gICAgICAgICAgICAgICAgY29uc3QgZm9ybUNvbmZpZyA9IGF3YWl0IHJlYWRGb3JtQ29uZmlnKGZvcm1Kc29uUGF0aCwgbmV3IE51bGxMb2dnZXIoKSk7XG4gICAgICAgICAgICAgICAgaWYgKGZvcm1Db25maWcuYnVpbGQgIT09IFwiY2lcIikge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHByaXZhdGUgc3RhdGljIGFzeW5jIHJlc29sdmVPbmx5Rm9ybUdsb2JTcGVjaWZpZXJzKGZvcm1HbG9iOiBzdHJpbmcsIGZhcm1EaXJlY3Rvcnk6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nW10+IHtcbiAgICAgICAgaWYgKGZvcm1HbG9iLmVuZHNXaXRoKFwiOndpdGgtdWktdGVzdHNcIikpIHtcbiAgICAgICAgICAgIHJldHVybiAoYXdhaXQgdGhpcy5yZXNvbHZlR2Z2R2xvYnMoW2Zvcm1HbG9iXSwgZmFybURpcmVjdG9yeSkpLm1hcCh4ID0+IHguZ2Z2KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZm9ybUdsb2IuZW5kc1dpdGgoXCI6d2l0aC1jaS1idWlsZFwiKSkge1xuICAgICAgICAgICAgcmV0dXJuIChhd2FpdCB0aGlzLnJlc29sdmVHZnZHbG9icyhbZm9ybUdsb2JdLCBmYXJtRGlyZWN0b3J5KSkubWFwKHggPT4geC5nZnYpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBbZm9ybUdsb2JdO1xuICAgIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBLElBQUFBLEtBQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUVBLElBQUFDLFFBQUEsR0FBQUQsT0FBQTtBQUdBLElBQUFFLGdCQUFBLEdBQUFGLE9BQUE7QUFDQSxJQUFBRyxjQUFBLEdBQUFILE9BQUE7QUFDQSxJQUFBSSxxQkFBQSxHQUFBSixPQUFBO0FBRUEsSUFBQUssUUFBQSxHQUFBTCxPQUFBO0FBQ0EsSUFBQU0sYUFBQSxHQUFBTixPQUFBO0FBR08sTUFBTU8sU0FBUyxDQUFDO0VBQ25CLGFBQW9CQywwQkFBMEJBLENBQzFDLEdBQUdDLGVBQXlCLEVBQytDO0lBQzNF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
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.FixedDirectoryEntriesProducer = void 0;
7
+ var _ChainableValueProducer = require("./ChainableValueProducer");
8
+ class FixedDirectoryEntriesProducer extends _ChainableValueProducer.ObservableValueProducerBase {
9
+ constructor(directories) {
10
+ super();
11
+ this.directories = void 0;
12
+ this.directories = directories;
13
+ }
14
+ async beginListening() {}
15
+ async stopListening() {}
16
+ async getCurrentValue() {
17
+ return this.directories;
18
+ }
19
+ }
20
+ exports.FixedDirectoryEntriesProducer = FixedDirectoryEntriesProducer;
21
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfQ2hhaW5hYmxlVmFsdWVQcm9kdWNlciIsInJlcXVpcmUiLCJGaXhlZERpcmVjdG9yeUVudHJpZXNQcm9kdWNlciIsIk9ic2VydmFibGVWYWx1ZVByb2R1Y2VyQmFzZSIsImNvbnN0cnVjdG9yIiwiZGlyZWN0b3JpZXMiLCJiZWdpbkxpc3RlbmluZyIsInN0b3BMaXN0ZW5pbmciLCJnZXRDdXJyZW50VmFsdWUiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL0NvbW1vbnMvVGFza3NDb3JlL0ZpeGVkRGlyZWN0b3J5RW50cmllc1Byb2R1Y2VyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9ic2VydmFibGVWYWx1ZVByb2R1Y2VyQmFzZSB9IGZyb20gXCIuL0NoYWluYWJsZVZhbHVlUHJvZHVjZXJcIjtcblxuZXhwb3J0IGNsYXNzIEZpeGVkRGlyZWN0b3J5RW50cmllc1Byb2R1Y2VyIGV4dGVuZHMgT2JzZXJ2YWJsZVZhbHVlUHJvZHVjZXJCYXNlPHN0cmluZ1tdPiB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBkaXJlY3Rvcmllczogc3RyaW5nW107XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IoZGlyZWN0b3JpZXM6IHN0cmluZ1tdKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMuZGlyZWN0b3JpZXMgPSBkaXJlY3RvcmllcztcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgYXN5bmMgYmVnaW5MaXN0ZW5pbmcoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGFzeW5jIHN0b3BMaXN0ZW5pbmcoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGFzeW5jIGdldEN1cnJlbnRWYWx1ZSgpOiBQcm9taXNlPHN0cmluZ1tdPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmRpcmVjdG9yaWVzO1xuICAgIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsSUFBQUEsdUJBQUEsR0FBQUMsT0FBQTtBQUVPLE1BQU1DLDZCQUE2QixTQUFTQyxtREFBMkIsQ0FBVztFQUc5RUMsV0FBV0EsQ0FBQ0MsV0FBcUIsRUFBRTtJQUN0QyxLQUFLLENBQUMsQ0FBQztJQUFDLEtBSEtBLFdBQVc7SUFJeEIsSUFBSSxDQUFDQSxXQUFXLEdBQUdBLFdBQVc7RUFDbEM7RUFFQSxNQUFnQkMsY0FBY0EsQ0FBQSxFQUFrQixDQUNoRDtFQUVBLE1BQWdCQyxhQUFhQSxDQUFBLEVBQWtCLENBQy9DO0VBRUEsTUFBZ0JDLGVBQWVBLENBQUEsRUFBc0I7SUFDakQsT0FBTyxJQUFJLENBQUNILFdBQVc7RUFDM0I7QUFDSjtBQUFDSSxPQUFBLENBQUFQLDZCQUFBLEdBQUFBLDZCQUFBIn0=
@@ -10,6 +10,7 @@ var _EmptyProducer = require("./EmptyProducer");
10
10
  var _FileSystemEntriesProducer = require("./FileSystemEntriesProducer");
11
11
  var _FileValueProducer = require("./FileValueProducer");
12
12
  var _SingleValueProducer = require("./SingleValueProducer");
13
+ var _FixedDirectoryEntriesProducer = require("./FixedDirectoryEntriesProducer");
13
14
  class Observe {
14
15
  static empty() {
15
16
  return new _EmptyProducer.EmptyProducer();
@@ -20,6 +21,9 @@ class Observe {
20
21
  static formDirectories(repositoryRoot, gfvMasks) {
21
22
  return new _DirectoryEntriesProducer.DirectoryEntriesProducer(repositoryRoot, [...gfvMasks.map(x => `forms/**/${x}/${_WellKnownDirectories.WellKnownDirectories.CandySubdirectoryName}`), ...gfvMasks.map(x => `${_WellKnownDirectories.WellKnownDirectories.TestFarmDir}/forms/${x}`), ...gfvMasks.map(x => `candy.farm/forms/${x}`), ...gfvMasks.map(x => `candy.rpn.farm/forms/${x}`), ...gfvMasks.map(x => `candy.diadoc.farm/forms/${x}`)]).skipUpdatesUntilNextCompleted();
22
23
  }
24
+ static fixedFormDirectories(directories) {
25
+ return new _FixedDirectoryEntriesProducer.FixedDirectoryEntriesProducer(directories).skipUpdatesUntilNextCompleted();
26
+ }
23
27
  static files(pathToDir, ...masks) {
24
28
  return new _FileSystemEntriesProducer.FileSystemEntriesProducer(pathToDir, masks).skipUpdatesUntilNextCompleted();
25
29
  }
@@ -28,4 +32,4 @@ class Observe {
28
32
  }
29
33
  }
30
34
  exports.Observe = Observe;
31
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfV2VsbEtub3duRGlyZWN0b3JpZXMiLCJyZXF1aXJlIiwiX0RpcmVjdG9yeUVudHJpZXNQcm9kdWNlciIsIl9FbXB0eVByb2R1Y2VyIiwiX0ZpbGVTeXN0ZW1FbnRyaWVzUHJvZHVjZXIiLCJfRmlsZVZhbHVlUHJvZHVjZXIiLCJfU2luZ2xlVmFsdWVQcm9kdWNlciIsIk9ic2VydmUiLCJlbXB0eSIsIkVtcHR5UHJvZHVjZXIiLCJ2YWx1ZSIsIngiLCJTaW5nbGVWYWx1ZVByb2R1Y2VyIiwiZm9ybURpcmVjdG9yaWVzIiwicmVwb3NpdG9yeVJvb3QiLCJnZnZNYXNrcyIsIkRpcmVjdG9yeUVudHJpZXNQcm9kdWNlciIsIm1hcCIsIldlbGxLbm93bkRpcmVjdG9yaWVzIiwiQ2FuZHlTdWJkaXJlY3RvcnlOYW1lIiwiVGVzdEZhcm1EaXIiLCJza2lwVXBkYXRlc1VudGlsTmV4dENvbXBsZXRlZCIsImZpbGVzIiwicGF0aFRvRGlyIiwibWFza3MiLCJGaWxlU3lzdGVtRW50cmllc1Byb2R1Y2VyIiwiZmlsZSIsInBhdGhUb0ZpbGUiLCJGaWxlVmFsdWVQcm9kdWNlciIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvQ29tbW9ucy9UYXNrc0NvcmUvT2JzZXJ2ZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBXZWxsS25vd25EaXJlY3RvcmllcyB9IGZyb20gXCIuLi8uLi8uLi8uLi9Db21tb24vV2VsbEtub3duRGlyZWN0b3JpZXNcIjtcblxuaW1wb3J0IHsgQ2hhaW5hYmxlVmFsdWVQcm9kdWNlciB9IGZyb20gXCIuL0NoYWluYWJsZVZhbHVlUHJvZHVjZXJcIjtcbmltcG9ydCB7IERpcmVjdG9yeUVudHJpZXNQcm9kdWNlciB9IGZyb20gXCIuL0RpcmVjdG9yeUVudHJpZXNQcm9kdWNlclwiO1xuaW1wb3J0IHsgRW1wdHlQcm9kdWNlciB9IGZyb20gXCIuL0VtcHR5UHJvZHVjZXJcIjtcbmltcG9ydCB7IEZpbGVTeXN0ZW1FbnRyaWVzUHJvZHVjZXIgfSBmcm9tIFwiLi9GaWxlU3lzdGVtRW50cmllc1Byb2R1Y2VyXCI7XG5pbXBvcnQgeyBGaWxlVmFsdWVQcm9kdWNlciB9IGZyb20gXCIuL0ZpbGVWYWx1ZVByb2R1Y2VyXCI7XG5pbXBvcnQgeyBTaW5nbGVWYWx1ZVByb2R1Y2VyIH0gZnJvbSBcIi4vU2luZ2xlVmFsdWVQcm9kdWNlclwiO1xuXG5leHBvcnQgY2xhc3MgT2JzZXJ2ZSB7XG4gICAgcHVibGljIHN0YXRpYyBlbXB0eSgpOiBFbXB0eVByb2R1Y2VyIHtcbiAgICAgICAgcmV0dXJuIG5ldyBFbXB0eVByb2R1Y2VyKCk7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyB2YWx1ZTxUPih4OiBUKTogU2luZ2xlVmFsdWVQcm9kdWNlcjxUPiB7XG4gICAgICAgIHJldHVybiBuZXcgU2luZ2xlVmFsdWVQcm9kdWNlcjxUPih4KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGZvcm1EaXJlY3RvcmllcyhyZXBvc2l0b3J5Um9vdDogc3RyaW5nLCBnZnZNYXNrczogc3RyaW5nW10pOiBDaGFpbmFibGVWYWx1ZVByb2R1Y2VyPHN0cmluZ1tdPiB7XG4gICAgICAgIHJldHVybiBuZXcgRGlyZWN0b3J5RW50cmllc1Byb2R1Y2VyKHJlcG9zaXRvcnlSb290LCBbXG4gICAgICAgICAgICAuLi5nZnZNYXNrcy5tYXAoeCA9PiBgZm9ybXMvKiovJHt4fS8ke1dlbGxLbm93bkRpcmVjdG9yaWVzLkNhbmR5U3ViZGlyZWN0b3J5TmFtZX1gKSxcbiAgICAgICAgICAgIC4uLmdmdk1hc2tzLm1hcCh4ID0+IGAke1dlbGxLbm93bkRpcmVjdG9yaWVzLlRlc3RGYXJtRGlyfS9mb3Jtcy8ke3h9YCksXG4gICAgICAgICAgICAuLi5nZnZNYXNrcy5tYXAoeCA9PiBgY2FuZHkuZmFybS9mb3Jtcy8ke3h9YCksXG4gICAgICAgICAgICAuLi5nZnZNYXNrcy5tYXAoeCA9PiBgY2FuZHkucnBuLmZhcm0vZm9ybXMvJHt4fWApLFxuICAgICAgICAgICAgLi4uZ2Z2TWFza3MubWFwKHggPT4gYGNhbmR5LmRpYWRvYy5mYXJtL2Zvcm1zLyR7eH1gKSxcbiAgICAgICAgXSkuc2tpcFVwZGF0ZXNVbnRpbE5leHRDb21wbGV0ZWQoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGZpbGVzKHBhdGhUb0Rpcjogc3RyaW5nLCAuLi5tYXNrczogc3RyaW5nW10pOiBDaGFpbmFibGVWYWx1ZVByb2R1Y2VyPHN0cmluZz4ge1xuICAgICAgICByZXR1cm4gbmV3IEZpbGVTeXN0ZW1FbnRyaWVzUHJvZHVjZXIocGF0aFRvRGlyLCBtYXNrcykuc2tpcFVwZGF0ZXNVbnRpbE5leHRDb21wbGV0ZWQoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGZpbGUocGF0aFRvRmlsZTogc3RyaW5nKTogQ2hhaW5hYmxlVmFsdWVQcm9kdWNlcjxzdHJpbmc+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBGaWxlVmFsdWVQcm9kdWNlcihwYXRoVG9GaWxlKS5za2lwVXBkYXRlc1VudGlsTmV4dENvbXBsZXRlZCgpO1xuICAgIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsSUFBQUEscUJBQUEsR0FBQUMsT0FBQTtBQUdBLElBQUFDLHlCQUFBLEdBQUFELE9BQUE7QUFDQSxJQUFBRSxjQUFBLEdBQUFGLE9BQUE7QUFDQSxJQUFBRywwQkFBQSxHQUFBSCxPQUFBO0FBQ0EsSUFBQUksa0JBQUEsR0FBQUosT0FBQTtBQUNBLElBQUFLLG9CQUFBLEdBQUFMLE9BQUE7QUFFTyxNQUFNTSxPQUFPLENBQUM7RUFDakIsT0FBY0MsS0FBS0EsQ0FBQSxFQUFrQjtJQUNqQyxPQUFPLElBQUlDLDRCQUFhLENBQUMsQ0FBQztFQUM5QjtFQUVBLE9BQWNDLEtBQUtBLENBQUlDLENBQUksRUFBMEI7SUFDakQsT0FBTyxJQUFJQyx3Q0FBbUIsQ0FBSUQsQ0FBQyxDQUFDO0VBQ3hDO0VBRUEsT0FBY0UsZUFBZUEsQ0FBQ0MsY0FBc0IsRUFBRUMsUUFBa0IsRUFBb0M7SUFDeEcsT0FBTyxJQUFJQyxrREFBd0IsQ0FBQ0YsY0FBYyxFQUFFLENBQ2hELEdBQUdDLFFBQVEsQ0FBQ0UsR0FBRyxDQUFDTixDQUFDLElBQUssWUFBV0EsQ0FBRSxJQUFHTywwQ0FBb0IsQ0FBQ0MscUJBQXNCLEVBQUMsQ0FBQyxFQUNuRixHQUFHSixRQUFRLENBQUNFLEdBQUcsQ0FBQ04sQ0FBQyxJQUFLLEdBQUVPLDBDQUFvQixDQUFDRSxXQUFZLFVBQVNULENBQUUsRUFBQyxDQUFDLEVBQ3RFLEdBQUdJLFFBQVEsQ0FBQ0UsR0FBRyxDQUFDTixDQUFDLElBQUssb0JBQW1CQSxDQUFFLEVBQUMsQ0FBQyxFQUM3QyxHQUFHSSxRQUFRLENBQUNFLEdBQUcsQ0FBQ04sQ0FBQyxJQUFLLHdCQUF1QkEsQ0FBRSxFQUFDLENBQUMsRUFDakQsR0FBR0ksUUFBUSxDQUFDRSxHQUFHLENBQUNOLENBQUMsSUFBSywyQkFBMEJBLENBQUUsRUFBQyxDQUFDLENBQ3ZELENBQUMsQ0FBQ1UsNkJBQTZCLENBQUMsQ0FBQztFQUN0QztFQUVBLE9BQWNDLEtBQUtBLENBQUNDLFNBQWlCLEVBQUUsR0FBR0MsS0FBZSxFQUFrQztJQUN2RixPQUFPLElBQUlDLG9EQUF5QixDQUFDRixTQUFTLEVBQUVDLEtBQUssQ0FBQyxDQUFDSCw2QkFBNkIsQ0FBQyxDQUFDO0VBQzFGO0VBRUEsT0FBY0ssSUFBSUEsQ0FBQ0MsVUFBa0IsRUFBa0M7SUFDbkUsT0FBTyxJQUFJQyxvQ0FBaUIsQ0FBQ0QsVUFBVSxDQUFDLENBQUNOLDZCQUE2QixDQUFDLENBQUM7RUFDNUU7QUFDSjtBQUFDUSxPQUFBLENBQUF0QixPQUFBLEdBQUFBLE9BQUEifQ==
35
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfV2VsbEtub3duRGlyZWN0b3JpZXMiLCJyZXF1aXJlIiwiX0RpcmVjdG9yeUVudHJpZXNQcm9kdWNlciIsIl9FbXB0eVByb2R1Y2VyIiwiX0ZpbGVTeXN0ZW1FbnRyaWVzUHJvZHVjZXIiLCJfRmlsZVZhbHVlUHJvZHVjZXIiLCJfU2luZ2xlVmFsdWVQcm9kdWNlciIsIl9GaXhlZERpcmVjdG9yeUVudHJpZXNQcm9kdWNlciIsIk9ic2VydmUiLCJlbXB0eSIsIkVtcHR5UHJvZHVjZXIiLCJ2YWx1ZSIsIngiLCJTaW5nbGVWYWx1ZVByb2R1Y2VyIiwiZm9ybURpcmVjdG9yaWVzIiwicmVwb3NpdG9yeVJvb3QiLCJnZnZNYXNrcyIsIkRpcmVjdG9yeUVudHJpZXNQcm9kdWNlciIsIm1hcCIsIldlbGxLbm93bkRpcmVjdG9yaWVzIiwiQ2FuZHlTdWJkaXJlY3RvcnlOYW1lIiwiVGVzdEZhcm1EaXIiLCJza2lwVXBkYXRlc1VudGlsTmV4dENvbXBsZXRlZCIsImZpeGVkRm9ybURpcmVjdG9yaWVzIiwiZGlyZWN0b3JpZXMiLCJGaXhlZERpcmVjdG9yeUVudHJpZXNQcm9kdWNlciIsImZpbGVzIiwicGF0aFRvRGlyIiwibWFza3MiLCJGaWxlU3lzdGVtRW50cmllc1Byb2R1Y2VyIiwiZmlsZSIsInBhdGhUb0ZpbGUiLCJGaWxlVmFsdWVQcm9kdWNlciIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvQ29tbW9ucy9UYXNrc0NvcmUvT2JzZXJ2ZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBXZWxsS25vd25EaXJlY3RvcmllcyB9IGZyb20gXCIuLi8uLi8uLi8uLi9Db21tb24vV2VsbEtub3duRGlyZWN0b3JpZXNcIjtcblxuaW1wb3J0IHsgQ2hhaW5hYmxlVmFsdWVQcm9kdWNlciB9IGZyb20gXCIuL0NoYWluYWJsZVZhbHVlUHJvZHVjZXJcIjtcbmltcG9ydCB7IERpcmVjdG9yeUVudHJpZXNQcm9kdWNlciB9IGZyb20gXCIuL0RpcmVjdG9yeUVudHJpZXNQcm9kdWNlclwiO1xuaW1wb3J0IHsgRW1wdHlQcm9kdWNlciB9IGZyb20gXCIuL0VtcHR5UHJvZHVjZXJcIjtcbmltcG9ydCB7IEZpbGVTeXN0ZW1FbnRyaWVzUHJvZHVjZXIgfSBmcm9tIFwiLi9GaWxlU3lzdGVtRW50cmllc1Byb2R1Y2VyXCI7XG5pbXBvcnQgeyBGaWxlVmFsdWVQcm9kdWNlciB9IGZyb20gXCIuL0ZpbGVWYWx1ZVByb2R1Y2VyXCI7XG5pbXBvcnQgeyBTaW5nbGVWYWx1ZVByb2R1Y2VyIH0gZnJvbSBcIi4vU2luZ2xlVmFsdWVQcm9kdWNlclwiO1xuaW1wb3J0IHsgRml4ZWREaXJlY3RvcnlFbnRyaWVzUHJvZHVjZXIgfSBmcm9tIFwiLi9GaXhlZERpcmVjdG9yeUVudHJpZXNQcm9kdWNlclwiO1xuXG5leHBvcnQgY2xhc3MgT2JzZXJ2ZSB7XG4gICAgcHVibGljIHN0YXRpYyBlbXB0eSgpOiBFbXB0eVByb2R1Y2VyIHtcbiAgICAgICAgcmV0dXJuIG5ldyBFbXB0eVByb2R1Y2VyKCk7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyB2YWx1ZTxUPih4OiBUKTogU2luZ2xlVmFsdWVQcm9kdWNlcjxUPiB7XG4gICAgICAgIHJldHVybiBuZXcgU2luZ2xlVmFsdWVQcm9kdWNlcjxUPih4KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGZvcm1EaXJlY3RvcmllcyhyZXBvc2l0b3J5Um9vdDogc3RyaW5nLCBnZnZNYXNrczogc3RyaW5nW10pOiBDaGFpbmFibGVWYWx1ZVByb2R1Y2VyPHN0cmluZ1tdPiB7XG4gICAgICAgIHJldHVybiBuZXcgRGlyZWN0b3J5RW50cmllc1Byb2R1Y2VyKHJlcG9zaXRvcnlSb290LCBbXG4gICAgICAgICAgICAuLi5nZnZNYXNrcy5tYXAoeCA9PiBgZm9ybXMvKiovJHt4fS8ke1dlbGxLbm93bkRpcmVjdG9yaWVzLkNhbmR5U3ViZGlyZWN0b3J5TmFtZX1gKSxcbiAgICAgICAgICAgIC4uLmdmdk1hc2tzLm1hcCh4ID0+IGAke1dlbGxLbm93bkRpcmVjdG9yaWVzLlRlc3RGYXJtRGlyfS9mb3Jtcy8ke3h9YCksXG4gICAgICAgICAgICAuLi5nZnZNYXNrcy5tYXAoeCA9PiBgY2FuZHkuZmFybS9mb3Jtcy8ke3h9YCksXG4gICAgICAgICAgICAuLi5nZnZNYXNrcy5tYXAoeCA9PiBgY2FuZHkucnBuLmZhcm0vZm9ybXMvJHt4fWApLFxuICAgICAgICAgICAgLi4uZ2Z2TWFza3MubWFwKHggPT4gYGNhbmR5LmRpYWRvYy5mYXJtL2Zvcm1zLyR7eH1gKSxcbiAgICAgICAgXSkuc2tpcFVwZGF0ZXNVbnRpbE5leHRDb21wbGV0ZWQoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGZpeGVkRm9ybURpcmVjdG9yaWVzKGRpcmVjdG9yaWVzOiBzdHJpbmdbXSk6IENoYWluYWJsZVZhbHVlUHJvZHVjZXI8c3RyaW5nW10+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBGaXhlZERpcmVjdG9yeUVudHJpZXNQcm9kdWNlcihkaXJlY3Rvcmllcykuc2tpcFVwZGF0ZXNVbnRpbE5leHRDb21wbGV0ZWQoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGZpbGVzKHBhdGhUb0Rpcjogc3RyaW5nLCAuLi5tYXNrczogc3RyaW5nW10pOiBDaGFpbmFibGVWYWx1ZVByb2R1Y2VyPHN0cmluZz4ge1xuICAgICAgICByZXR1cm4gbmV3IEZpbGVTeXN0ZW1FbnRyaWVzUHJvZHVjZXIocGF0aFRvRGlyLCBtYXNrcykuc2tpcFVwZGF0ZXNVbnRpbE5leHRDb21wbGV0ZWQoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGZpbGUocGF0aFRvRmlsZTogc3RyaW5nKTogQ2hhaW5hYmxlVmFsdWVQcm9kdWNlcjxzdHJpbmc+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBGaWxlVmFsdWVQcm9kdWNlcihwYXRoVG9GaWxlKS5za2lwVXBkYXRlc1VudGlsTmV4dENvbXBsZXRlZCgpO1xuICAgIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsSUFBQUEscUJBQUEsR0FBQUMsT0FBQTtBQUdBLElBQUFDLHlCQUFBLEdBQUFELE9BQUE7QUFDQSxJQUFBRSxjQUFBLEdBQUFGLE9BQUE7QUFDQSxJQUFBRywwQkFBQSxHQUFBSCxPQUFBO0FBQ0EsSUFBQUksa0JBQUEsR0FBQUosT0FBQTtBQUNBLElBQUFLLG9CQUFBLEdBQUFMLE9BQUE7QUFDQSxJQUFBTSw4QkFBQSxHQUFBTixPQUFBO0FBRU8sTUFBTU8sT0FBTyxDQUFDO0VBQ2pCLE9BQWNDLEtBQUtBLENBQUEsRUFBa0I7SUFDakMsT0FBTyxJQUFJQyw0QkFBYSxDQUFDLENBQUM7RUFDOUI7RUFFQSxPQUFjQyxLQUFLQSxDQUFJQyxDQUFJLEVBQTBCO0lBQ2pELE9BQU8sSUFBSUMsd0NBQW1CLENBQUlELENBQUMsQ0FBQztFQUN4QztFQUVBLE9BQWNFLGVBQWVBLENBQUNDLGNBQXNCLEVBQUVDLFFBQWtCLEVBQW9DO0lBQ3hHLE9BQU8sSUFBSUMsa0RBQXdCLENBQUNGLGNBQWMsRUFBRSxDQUNoRCxHQUFHQyxRQUFRLENBQUNFLEdBQUcsQ0FBQ04sQ0FBQyxJQUFLLFlBQVdBLENBQUUsSUFBR08sMENBQW9CLENBQUNDLHFCQUFzQixFQUFDLENBQUMsRUFDbkYsR0FBR0osUUFBUSxDQUFDRSxHQUFHLENBQUNOLENBQUMsSUFBSyxHQUFFTywwQ0FBb0IsQ0FBQ0UsV0FBWSxVQUFTVCxDQUFFLEVBQUMsQ0FBQyxFQUN0RSxHQUFHSSxRQUFRLENBQUNFLEdBQUcsQ0FBQ04sQ0FBQyxJQUFLLG9CQUFtQkEsQ0FBRSxFQUFDLENBQUMsRUFDN0MsR0FBR0ksUUFBUSxDQUFDRSxHQUFHLENBQUNOLENBQUMsSUFBSyx3QkFBdUJBLENBQUUsRUFBQyxDQUFDLEVBQ2pELEdBQUdJLFFBQVEsQ0FBQ0UsR0FBRyxDQUFDTixDQUFDLElBQUssMkJBQTBCQSxDQUFFLEVBQUMsQ0FBQyxDQUN2RCxDQUFDLENBQUNVLDZCQUE2QixDQUFDLENBQUM7RUFDdEM7RUFFQSxPQUFjQyxvQkFBb0JBLENBQUNDLFdBQXFCLEVBQW9DO0lBQ3hGLE9BQU8sSUFBSUMsNERBQTZCLENBQUNELFdBQVcsQ0FBQyxDQUFDRiw2QkFBNkIsQ0FBQyxDQUFDO0VBQ3pGO0VBRUEsT0FBY0ksS0FBS0EsQ0FBQ0MsU0FBaUIsRUFBRSxHQUFHQyxLQUFlLEVBQWtDO0lBQ3ZGLE9BQU8sSUFBSUMsb0RBQXlCLENBQUNGLFNBQVMsRUFBRUMsS0FBSyxDQUFDLENBQUNOLDZCQUE2QixDQUFDLENBQUM7RUFDMUY7RUFFQSxPQUFjUSxJQUFJQSxDQUFDQyxVQUFrQixFQUFrQztJQUNuRSxPQUFPLElBQUlDLG9DQUFpQixDQUFDRCxVQUFVLENBQUMsQ0FBQ1QsNkJBQTZCLENBQUMsQ0FBQztFQUM1RTtBQUNKO0FBQUNXLE9BQUEsQ0FBQXpCLE9BQUEsR0FBQUEsT0FBQSJ9
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kontur.candy/tools",
3
- "version": "2.176.1",
3
+ "version": "2.177.0",
4
4
  "description": "",
5
5
  "files": [
6
6
  "candy.js",